Browse Source

Update nextcloud server and notifications to 26.0.0

pull/218/head
jld3103 2 years ago
parent
commit
f9ddb3dda1
No known key found for this signature in database
GPG Key ID: 9062417B9E8EB7B3
  1. 2
      external/nextcloud-notifications
  2. 2
      external/nextcloud-server
  3. 4
      packages/neon/lib/src/blocs/user_status.dart
  4. 71
      packages/nextcloud/lib/src/nextcloud.openapi.dart
  5. 37
      packages/nextcloud/lib/src/nextcloud.openapi.g.dart
  6. 35
      packages/nextcloud/lib/src/nextcloud.openapi.json
  7. 2
      packages/nextcloud/lib/src/version_supported.dart
  8. 8
      packages/nextcloud/test/core.dart
  9. 2
      packages/nextcloud/test/notes.dart
  10. 18
      packages/nextcloud/test/user_status.dart
  11. 4
      packages/nextcloud/test/webdav.dart
  12. 2
      specs/core.json
  13. 2
      specs/notifications.json
  14. 10
      specs/provisioning_api.json
  15. 2
      specs/templates/appinfo_core.xml
  16. 236
      specs/templates/core.json
  17. 2
      specs/templates/notifications.json
  18. 2
      specs/templates/provisioning_api.json
  19. 2
      specs/templates/user_status.json
  20. 27
      specs/user_status.json
  21. 2
      tool/Dockerfile.dev

2
external/nextcloud-notifications vendored

@ -1 +1 @@
Subproject commit 6205c303497c8245415ade86be5122a7e33b01d6 Subproject commit a380eabe8b369a7103d1f529c82d6b44dce4f6a6

2
external/nextcloud-server vendored

@ -1 +1 @@
Subproject commit 0c86714144f50a66e845e9ef80d4cd7e6918a4f5 Subproject commit 62cfd3b4c9ff4d8cdbbe6dcc8b63a1085bb94e3d

4
packages/neon/lib/src/blocs/user_status.dart

@ -38,10 +38,10 @@ class UserStatusBloc extends InteractiveBloc implements UserStatusBlocEvents, Us
final isAway = final isAway =
_platform.canUseWindowManager && (!(await windowManager.isFocused()) || !(await windowManager.isVisible())); _platform.canUseWindowManager && (!(await windowManager.isFocused()) || !(await windowManager.isVisible()));
try { try {
final status = await _account.client.userStatus.heartbeat( final response = await _account.client.userStatus.heartbeat(
status: isAway ? NextcloudUserStatusType.away : NextcloudUserStatusType.online, status: isAway ? NextcloudUserStatusType.away : NextcloudUserStatusType.online,
); );
userStatus.add(Result.success(status)); userStatus.add(Result.success(response.ocs.data));
} catch (e) { } catch (e) {
if (e is NextcloudApiException && e.statusCode == 204) { if (e is NextcloudApiException && e.statusCode == 204) {
return; return;

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

@ -1684,7 +1684,7 @@ class NextcloudUserStatusClient {
throw NextcloudApiException.fromResponse(response); // coverage:ignore-line throw NextcloudApiException.fromResponse(response); // coverage:ignore-line
} }
Future<NextcloudUserStatusStatus> heartbeat({required NextcloudUserStatusType status}) async { Future<NextcloudUserStatusHeartbeat> heartbeat({required NextcloudUserStatusType status}) async {
var path = '/ocs/v2.php/apps/user_status/api/v1/heartbeat'; var path = '/ocs/v2.php/apps/user_status/api/v1/heartbeat';
final queryParameters = <String, dynamic>{}; final queryParameters = <String, dynamic>{};
final headers = <String, String>{ final headers = <String, String>{
@ -1699,7 +1699,7 @@ class NextcloudUserStatusClient {
body, body,
); );
if (response.statusCode == 200) { if (response.statusCode == 200) {
return NextcloudUserStatusStatus.fromJson( return NextcloudUserStatusHeartbeat.fromJson(
json.decode(utf8.decode(response.body) as String) as Map<String, dynamic>); json.decode(utf8.decode(response.body) as String) as Map<String, dynamic>);
} }
throw NextcloudApiException.fromResponse(response); // coverage:ignore-line throw NextcloudApiException.fromResponse(response); // coverage:ignore-line
@ -4708,6 +4708,8 @@ class NextcloudProvisioningApiUserDetails {
required this.biographyScope, required this.biographyScope,
required this.profileEnabled, required this.profileEnabled,
required this.profileEnabledScope, required this.profileEnabledScope,
required this.fediverse,
required this.fediverseScope,
required this.groups, required this.groups,
required this.language, required this.language,
required this.locale, required this.locale,
@ -4794,6 +4796,10 @@ class NextcloudProvisioningApiUserDetails {
@JsonKey(name: 'profile_enabledScope') @JsonKey(name: 'profile_enabledScope')
final String profileEnabledScope; final String profileEnabledScope;
final String fediverse;
final String fediverseScope;
final List<String> groups; final List<String> groups;
final String language; final String language;
@ -5852,6 +5858,56 @@ class NextcloudUserStatusPredefinedStatuses {
data == null ? null : json.encode(data.toJson()); data == null ? null : json.encode(data.toJson());
} }
@JsonSerializable()
class NextcloudUserStatusHeartbeat_Ocs {
NextcloudUserStatusHeartbeat_Ocs({
required this.meta,
required this.data,
});
// coverage:ignore-start
factory NextcloudUserStatusHeartbeat_Ocs.fromJson(Map<String, dynamic> json) =>
_$NextcloudUserStatusHeartbeat_OcsFromJson(json);
// coverage:ignore-end
// coverage:ignore-start
factory NextcloudUserStatusHeartbeat_Ocs.fromJsonString(String data) =>
NextcloudUserStatusHeartbeat_Ocs.fromJson(json.decode(data) as Map<String, dynamic>);
// coverage:ignore-end
final NextcloudOCSMeta meta;
final NextcloudUserStatusStatus data;
// coverage:ignore-start
Map<String, dynamic> toJson() => _$NextcloudUserStatusHeartbeat_OcsToJson(this);
// coverage:ignore-end
static String? toJsonString(NextcloudUserStatusHeartbeat_Ocs? data) =>
data == null ? null : json.encode(data.toJson());
}
@JsonSerializable()
class NextcloudUserStatusHeartbeat {
NextcloudUserStatusHeartbeat({required this.ocs});
// coverage:ignore-start
factory NextcloudUserStatusHeartbeat.fromJson(Map<String, dynamic> json) =>
_$NextcloudUserStatusHeartbeatFromJson(json);
// coverage:ignore-end
// coverage:ignore-start
factory NextcloudUserStatusHeartbeat.fromJsonString(String data) =>
NextcloudUserStatusHeartbeat.fromJson(json.decode(data) as Map<String, dynamic>);
// coverage:ignore-end
final NextcloudUserStatusHeartbeat_Ocs ocs;
// coverage:ignore-start
Map<String, dynamic> toJson() => _$NextcloudUserStatusHeartbeatToJson(this);
// coverage:ignore-end
static String? toJsonString(NextcloudUserStatusHeartbeat? data) => data == null ? null : json.encode(data.toJson());
}
@JsonSerializable() @JsonSerializable()
class NextcloudNotificationsNotificationDecryptedSubject { class NextcloudNotificationsNotificationDecryptedSubject {
NextcloudNotificationsNotificationDecryptedSubject({ NextcloudNotificationsNotificationDecryptedSubject({
@ -6496,6 +6552,13 @@ final _deserializers = <Type, dynamic Function(dynamic)>{
NextcloudUserStatusPredefinedStatus.fromJson(data as Map<String, dynamic>), NextcloudUserStatusPredefinedStatus.fromJson(data as Map<String, dynamic>),
List<NextcloudUserStatusPredefinedStatus>: (final data) => List<NextcloudUserStatusPredefinedStatus>: (final data) =>
(data as List).map((final e) => NextcloudUserStatusPredefinedStatus.fromJson(e as Map<String, dynamic>)).toList(), (data as List).map((final e) => NextcloudUserStatusPredefinedStatus.fromJson(e as Map<String, dynamic>)).toList(),
NextcloudUserStatusHeartbeat: (final data) => NextcloudUserStatusHeartbeat.fromJson(data as Map<String, dynamic>),
List<NextcloudUserStatusHeartbeat>: (final data) =>
(data as List).map((final e) => NextcloudUserStatusHeartbeat.fromJson(e as Map<String, dynamic>)).toList(),
NextcloudUserStatusHeartbeat_Ocs: (final data) =>
NextcloudUserStatusHeartbeat_Ocs.fromJson(data as Map<String, dynamic>),
List<NextcloudUserStatusHeartbeat_Ocs>: (final data) =>
(data as List).map((final e) => NextcloudUserStatusHeartbeat_Ocs.fromJson(e as Map<String, dynamic>)).toList(),
NextcloudNotificationsNotificationDecryptedSubject: (final data) => NextcloudNotificationsNotificationDecryptedSubject: (final data) =>
NextcloudNotificationsNotificationDecryptedSubject.fromJson(data as Map<String, dynamic>), NextcloudNotificationsNotificationDecryptedSubject.fromJson(data as Map<String, dynamic>),
List<NextcloudNotificationsNotificationDecryptedSubject>: (final data) => (data as List) List<NextcloudNotificationsNotificationDecryptedSubject>: (final data) => (data as List)
@ -6794,6 +6857,10 @@ final _serializers = <Type, dynamic Function(dynamic)>{
List<NextcloudUserStatusPredefinedStatuses_Ocs>: (final data) => data.map((final e) => e.toJson()).toList(), List<NextcloudUserStatusPredefinedStatuses_Ocs>: (final data) => data.map((final e) => e.toJson()).toList(),
NextcloudUserStatusPredefinedStatus: (final data) => data.toJson(), NextcloudUserStatusPredefinedStatus: (final data) => data.toJson(),
List<NextcloudUserStatusPredefinedStatus>: (final data) => data.map((final e) => e.toJson()).toList(), List<NextcloudUserStatusPredefinedStatus>: (final data) => data.map((final e) => e.toJson()).toList(),
NextcloudUserStatusHeartbeat: (final data) => data.toJson(),
List<NextcloudUserStatusHeartbeat>: (final data) => data.map((final e) => e.toJson()).toList(),
NextcloudUserStatusHeartbeat_Ocs: (final data) => data.toJson(),
List<NextcloudUserStatusHeartbeat_Ocs>: (final data) => data.map((final e) => e.toJson()).toList(),
NextcloudNotificationsNotificationDecryptedSubject: (final data) => data.toJson(), NextcloudNotificationsNotificationDecryptedSubject: (final data) => data.toJson(),
List<NextcloudNotificationsNotificationDecryptedSubject>: (final data) => data.map((final e) => e.toJson()).toList(), List<NextcloudNotificationsNotificationDecryptedSubject>: (final data) => data.map((final e) => e.toJson()).toList(),
}; };

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

@ -1826,6 +1826,8 @@ NextcloudProvisioningApiUserDetails _$NextcloudProvisioningApiUserDetailsFromJso
'biographyScope', 'biographyScope',
'profile_enabled', 'profile_enabled',
'profile_enabledScope', 'profile_enabledScope',
'fediverse',
'fediverseScope',
'groups', 'groups',
'language', 'language',
'locale', 'locale',
@ -1867,6 +1869,8 @@ NextcloudProvisioningApiUserDetails _$NextcloudProvisioningApiUserDetailsFromJso
biographyScope: json['biographyScope'] as String, biographyScope: json['biographyScope'] as String,
profileEnabled: json['profile_enabled'] as String, profileEnabled: json['profile_enabled'] as String,
profileEnabledScope: json['profile_enabledScope'] as String, profileEnabledScope: json['profile_enabledScope'] as String,
fediverse: json['fediverse'] as String,
fediverseScope: json['fediverseScope'] as String,
groups: (json['groups'] as List<dynamic>).map((e) => e as String).toList(), groups: (json['groups'] as List<dynamic>).map((e) => e as String).toList(),
language: json['language'] as String, language: json['language'] as String,
locale: json['locale'] as String, locale: json['locale'] as String,
@ -1911,6 +1915,8 @@ Map<String, dynamic> _$NextcloudProvisioningApiUserDetailsToJson(NextcloudProvis
'biographyScope': instance.biographyScope, 'biographyScope': instance.biographyScope,
'profile_enabled': instance.profileEnabled, 'profile_enabled': instance.profileEnabled,
'profile_enabledScope': instance.profileEnabledScope, 'profile_enabledScope': instance.profileEnabledScope,
'fediverse': instance.fediverse,
'fediverseScope': instance.fediverseScope,
'groups': instance.groups, 'groups': instance.groups,
'language': instance.language, 'language': instance.language,
'locale': instance.locale, 'locale': instance.locale,
@ -2423,6 +2429,37 @@ Map<String, dynamic> _$NextcloudUserStatusPredefinedStatusesToJson(NextcloudUser
'ocs': instance.ocs.toJson(), 'ocs': instance.ocs.toJson(),
}; };
NextcloudUserStatusHeartbeat_Ocs _$NextcloudUserStatusHeartbeat_OcsFromJson(Map<String, dynamic> json) {
$checkKeys(
json,
allowedKeys: const ['meta', 'data'],
);
return NextcloudUserStatusHeartbeat_Ocs(
meta: NextcloudOCSMeta.fromJson(json['meta'] as Map<String, dynamic>),
data: NextcloudUserStatusStatus.fromJson(json['data'] as Map<String, dynamic>),
);
}
Map<String, dynamic> _$NextcloudUserStatusHeartbeat_OcsToJson(NextcloudUserStatusHeartbeat_Ocs instance) =>
<String, dynamic>{
'meta': instance.meta.toJson(),
'data': instance.data.toJson(),
};
NextcloudUserStatusHeartbeat _$NextcloudUserStatusHeartbeatFromJson(Map<String, dynamic> json) {
$checkKeys(
json,
allowedKeys: const ['ocs'],
);
return NextcloudUserStatusHeartbeat(
ocs: NextcloudUserStatusHeartbeat_Ocs.fromJson(json['ocs'] as Map<String, dynamic>),
);
}
Map<String, dynamic> _$NextcloudUserStatusHeartbeatToJson(NextcloudUserStatusHeartbeat instance) => <String, dynamic>{
'ocs': instance.ocs.toJson(),
};
NextcloudNotificationsNotificationDecryptedSubject _$NextcloudNotificationsNotificationDecryptedSubjectFromJson( NextcloudNotificationsNotificationDecryptedSubject _$NextcloudNotificationsNotificationDecryptedSubjectFromJson(
Map<String, dynamic> json) { Map<String, dynamic> json) {
$checkKeys( $checkKeys(

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

@ -2,7 +2,7 @@
"openapi": "3.1.0", "openapi": "3.1.0",
"info": { "info": {
"title": "Nextcloud", "title": "Nextcloud",
"version": "25.0.4", "version": "26.0.0",
"description": "All supported Nextcloud APIs in one", "description": "All supported Nextcloud APIs in one",
"license": { "license": {
"name": "agpl", "name": "agpl",
@ -1532,6 +1532,8 @@
"biographyScope", "biographyScope",
"profile_enabled", "profile_enabled",
"profile_enabledScope", "profile_enabledScope",
"fediverse",
"fediverseScope",
"groups", "groups",
"language", "language",
"locale", "locale",
@ -1667,6 +1669,12 @@
"profile_enabledScope": { "profile_enabledScope": {
"type": "string" "type": "string"
}, },
"fediverse": {
"type": "string"
},
"fediverseScope": {
"type": "string"
},
"groups": { "groups": {
"type": "array", "type": "array",
"items": { "items": {
@ -1956,6 +1964,29 @@
"$ref": "#/components/schemas/UserStatusType" "$ref": "#/components/schemas/UserStatusType"
} }
} }
},
"UserStatusHeartbeat": {
"type": "object",
"required": [
"ocs"
],
"properties": {
"ocs": {
"type": "object",
"required": [
"meta",
"data"
],
"properties": {
"meta": {
"$ref": "#/components/schemas/OCSMeta"
},
"data": {
"$ref": "#/components/schemas/UserStatusStatus"
}
}
}
}
} }
}, },
"securitySchemes": { "securitySchemes": {
@ -4076,7 +4107,7 @@
"content": { "content": {
"application/json": { "application/json": {
"schema": { "schema": {
"$ref": "#/components/schemas/UserStatusStatus" "$ref": "#/components/schemas/UserStatusHeartbeat"
} }
} }
} }

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

@ -4,7 +4,7 @@ part of '../nextcloud.dart';
extension CoreVersionSupported on NextcloudCoreClient { extension CoreVersionSupported on NextcloudCoreClient {
/// 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 NextcloudCoreServerCapabilities_Ocs_Data? capabilities]) async => Future<bool> isSupported([final NextcloudCoreServerCapabilities_Ocs_Data? capabilities]) async =>
(capabilities ?? (await getCapabilities()).ocs.data).version.major == 25; (capabilities ?? (await getCapabilities()).ocs.data).version.major == 26;
} }
// ignore: public_member_api_docs // ignore: public_member_api_docs

8
packages/nextcloud/test/core.dart

@ -27,8 +27,8 @@ Future run(final DockerImage image) async {
expect(status.installed, true); expect(status.installed, true);
expect(status.maintenance, false); expect(status.maintenance, false);
expect(status.needsDbUpgrade, false); expect(status.needsDbUpgrade, false);
expect(status.version, startsWith('25.0.4')); expect(status.version, startsWith('26.0.0'));
expect(status.versionstring, '25.0.4'); expect(status.versionstring, '26.0.0');
expect(status.edition, ''); expect(status.edition, '');
expect(status.productname, 'Nextcloud'); expect(status.productname, 'Nextcloud');
expect(status.extendedSupport, false); expect(status.extendedSupport, false);
@ -36,8 +36,8 @@ Future run(final DockerImage image) async {
test('Get capabilities', () async { test('Get capabilities', () async {
final capabilities = await client.core.getCapabilities(); final capabilities = await client.core.getCapabilities();
expect(capabilities.ocs.data.version.major.toString(), '25'); expect(capabilities.ocs.data.version.major.toString(), '26');
expect(capabilities.ocs.data.version.string, '25.0.4'); expect(capabilities.ocs.data.version.string, '26.0.0');
expect(capabilities.ocs.data.capabilities.theming!.name, 'Nextcloud'); expect(capabilities.ocs.data.capabilities.theming!.name, 'Nextcloud');
expect(capabilities.ocs.data.capabilities.theming!.url, 'https://nextcloud.com'); expect(capabilities.ocs.data.capabilities.theming!.url, 'https://nextcloud.com');
expect(capabilities.ocs.data.capabilities.theming!.slogan, 'a safe home for all your data'); expect(capabilities.ocs.data.capabilities.theming!.slogan, 'a safe home for all your data');

2
packages/nextcloud/test/notes.dart

@ -116,7 +116,7 @@ Future run(final DockerImage image) async {
final response = await client.notes.getSettings(); final response = await client.notes.getSettings();
expect(response.notesPath, 'Notes'); expect(response.notesPath, 'Notes');
expect(response.fileSuffix, '.md'); expect(response.fileSuffix, '.md');
expect(response.noteMode, NextcloudNotesSettings_NoteMode.edit); expect(response.noteMode, NextcloudNotesSettings_NoteMode.rich);
}); });
test('Update settings', () async { test('Update settings', () async {

18
packages/nextcloud/test/user_status.dart

@ -165,15 +165,15 @@ Future run(final DockerImage image) async {
test('Heartbeat', () async { test('Heartbeat', () async {
final response = await client.userStatus.heartbeat(status: NextcloudUserStatusType.online); final response = await client.userStatus.heartbeat(status: NextcloudUserStatusType.online);
expect(response.userId, 'user1'); expect(response.ocs.data.userId, 'user1');
expect(response.message, null); expect(response.ocs.data.message, null);
expect(response.messageId, null); expect(response.ocs.data.messageId, null);
expect(response.messageIsPredefined, false); expect(response.ocs.data.messageIsPredefined, false);
expect(response.icon, null); expect(response.ocs.data.icon, null);
expect(response.clearAt.userStatusClearAt, null); expect(response.ocs.data.clearAt.userStatusClearAt, null);
expect(response.clearAt.$int, null); expect(response.ocs.data.clearAt.$int, null);
expect(response.status, NextcloudUserStatusType.online); expect(response.ocs.data.status, NextcloudUserStatusType.online);
expect(response.statusIsUserDefined, false); expect(response.ocs.data.statusIsUserDefined, false);
}); });
}); });
} }

4
packages/nextcloud/test/webdav.dart

@ -45,7 +45,7 @@ Future run(final DockerImage image) async {
WebDavProps.ocSize.name, WebDavProps.ocSize.name,
}, },
); );
expect(files, hasLength(7)); expect(files, hasLength(8));
final file = files.singleWhere((final f) => f.name == 'Nextcloud.png'); final file = files.singleWhere((final f) => f.name == 'Nextcloud.png');
expect(file.hasPreview, isTrue); expect(file.hasPreview, isTrue);
expect(file.mimeType, 'image/png'); expect(file.mimeType, 'image/png');
@ -83,7 +83,7 @@ Future run(final DockerImage image) async {
WebDavProps.ocSize.name, WebDavProps.ocSize.name,
}, },
); );
expect(files, hasLength(9)); expect(files, hasLength(10));
final pngFile = files.singleWhere((final f) => f.name == 'test.png'); final pngFile = files.singleWhere((final f) => f.name == 'test.png');
final txtFile = files.singleWhere((final f) => f.name == 'test.txt'); final txtFile = files.singleWhere((final f) => f.name == 'test.txt');
expect(pngFile.size, pngBytes.lengthInBytes); expect(pngFile.size, pngBytes.lengthInBytes);

2
specs/core.json

@ -2,7 +2,7 @@
"openapi": "3.1.0", "openapi": "3.1.0",
"info": { "info": {
"title": "Core", "title": "Core",
"version": "25.0.4", "version": "26.0.0",
"description": "Core functionality of Nextcloud", "description": "Core functionality of Nextcloud",
"license": { "license": {
"name": "agpl", "name": "agpl",

2
specs/notifications.json

@ -2,7 +2,7 @@
"openapi": "3.1.0", "openapi": "3.1.0",
"info": { "info": {
"title": "Notifications", "title": "Notifications",
"version": "2.13.1", "version": "2.14.0",
"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",

10
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.15.0", "version": "1.16.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",
@ -131,6 +131,8 @@
"biographyScope", "biographyScope",
"profile_enabled", "profile_enabled",
"profile_enabledScope", "profile_enabledScope",
"fediverse",
"fediverseScope",
"groups", "groups",
"language", "language",
"locale", "locale",
@ -266,6 +268,12 @@
"profile_enabledScope": { "profile_enabledScope": {
"type": "string" "type": "string"
}, },
"fediverse": {
"type": "string"
},
"fediverseScope": {
"type": "string"
},
"groups": { "groups": {
"type": "array", "type": "array",
"items": { "items": {

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>25.0.4</version> <version>26.0.0</version>
<licence>agpl</licence> <licence>agpl</licence>
</info> </info>

236
specs/templates/core.json

@ -2,7 +2,7 @@
"openapi": "3.1.0", "openapi": "3.1.0",
"info": { "info": {
"title": "Core", "title": "Core",
"version": "25.0.4", "version": "26.0.0",
"description": "Core functionality of Nextcloud", "description": "Core functionality of Nextcloud",
"license": { "license": {
"name": "agpl", "name": "agpl",
@ -521,19 +521,29 @@
], ],
"parameters": [ "parameters": [
{ {
"name": "user", "name": "loginChain",
"in": "query", "in": "query",
"required": true, "required": true,
"schema": { "schema": {
"type": "string" "type": "TODO"
}
},
{
"name": "user",
"in": "query",
"required": false,
"schema": {
"type": "string",
"default": ""
} }
}, },
{ {
"name": "password", "name": "password",
"in": "query", "in": "query",
"required": true, "required": false,
"schema": { "schema": {
"type": "string" "type": "string",
"default": ""
} }
}, },
{ {
@ -920,7 +930,7 @@
{ {
"name": "stateToken", "name": "stateToken",
"in": "query", "in": "query",
"required": true, "required": false,
"schema": { "schema": {
"type": "string" "type": "string"
} }
@ -948,7 +958,7 @@
{ {
"name": "stateToken", "name": "stateToken",
"in": "query", "in": "query",
"required": true, "required": false,
"schema": { "schema": {
"type": "string" "type": "string"
} }
@ -998,7 +1008,7 @@
{ {
"name": "stateToken", "name": "stateToken",
"in": "query", "in": "query",
"required": true, "required": false,
"schema": { "schema": {
"type": "string" "type": "string"
} }
@ -1775,6 +1785,46 @@
} }
} }
}, },
"/core/error/404": {
"get": {
"operationId": "error-error404-TODO",
"tags": [
"core"
],
"responses": {
"200": {
"description": "",
"content": {
"application/json": {
"schema": {
"type": "string"
}
}
}
}
}
}
},
"/core/error/403": {
"get": {
"operationId": "error-error403-TODO",
"tags": [
"core"
],
"responses": {
"200": {
"description": "",
"content": {
"application/json": {
"schema": {
"type": "string"
}
}
}
}
}
}
},
"/core/.well-known/{service}": { "/core/.well-known/{service}": {
"parameters": [ "parameters": [
{ {
@ -1805,6 +1855,26 @@
} }
} }
}, },
"/core/unsupported": {
"get": {
"operationId": "unsupportedbrowser-index-TODO",
"tags": [
"core"
],
"responses": {
"200": {
"description": "",
"content": {
"application/json": {
"schema": {
"type": "string"
}
}
}
}
}
}
},
"/ocs/v2.php/core/capabilities": { "/ocs/v2.php/core/capabilities": {
"get": { "get": {
"operationId": "ocs-getcapabilities-TODO", "operationId": "ocs-getcapabilities-TODO",
@ -2548,10 +2618,42 @@
} }
} }
}, },
"/ocs/v2.php/core/{targetUserId}": { "/ocs/v2.php/core/providers": {
"get": {
"operationId": "unifiedsearch-getproviders-TODO",
"tags": [
"core"
],
"parameters": [
{
"name": "from",
"in": "query",
"description": "the url the user is currently at",
"required": false,
"schema": {
"type": "string",
"default": ""
}
}
],
"responses": {
"200": {
"description": "",
"content": {
"application/json": {
"schema": {
"type": "string"
}
}
}
}
}
}
},
"/ocs/v2.php/core/provider/{providerId}": {
"parameters": [ "parameters": [
{ {
"name": "targetUserId", "name": "providerId",
"in": "path", "in": "path",
"required": true, "required": true,
"schema": { "schema": {
@ -2560,25 +2662,17 @@
} }
], ],
"put": { "put": {
"operationId": "profileapi-setvisibility-TODO", "operationId": "referenceapi-touchprovider-TODO",
"tags": [ "tags": [
"core" "core"
], ],
"parameters": [ "parameters": [
{ {
"name": "paramId", "name": "timestamp",
"in": "query",
"required": true,
"schema": {
"type": "string"
}
},
{
"name": "visibility",
"in": "query", "in": "query",
"required": true, "required": false,
"schema": { "schema": {
"type": "string" "type": "integer"
} }
} }
], ],
@ -2596,21 +2690,37 @@
} }
} }
}, },
"/ocs/v2.php/core/providers": { "/ocs/v2.php/core/{targetUserId}": {
"get": { "parameters": [
"operationId": "unifiedsearch-getproviders-TODO", {
"name": "targetUserId",
"in": "path",
"required": true,
"schema": {
"type": "string"
}
}
],
"put": {
"operationId": "profileapi-setvisibility-TODO",
"tags": [ "tags": [
"core" "core"
], ],
"parameters": [ "parameters": [
{ {
"name": "from", "name": "paramId",
"in": "query", "in": "query",
"description": "the url the user is currently at", "required": true,
"required": false,
"schema": { "schema": {
"type": "string", "type": "string"
"default": "" }
},
{
"name": "visibility",
"in": "query",
"required": true,
"schema": {
"type": "string"
} }
} }
], ],
@ -2701,6 +2811,72 @@
} }
} }
} }
},
"/ocs/v2.php/core/languages": {
"get": {
"operationId": "translationapi-languages-TODO",
"tags": [
"core"
],
"responses": {
"200": {
"description": "",
"content": {
"application/json": {
"schema": {
"type": "string"
}
}
}
}
}
}
},
"/ocs/v2.php/core/translate": {
"post": {
"operationId": "translationapi-translate-TODO",
"tags": [
"core"
],
"parameters": [
{
"name": "text",
"in": "query",
"required": true,
"schema": {
"type": "string"
}
},
{
"name": "fromLanguage",
"in": "query",
"required": false,
"schema": {
"type": "string"
}
},
{
"name": "toLanguage",
"in": "query",
"required": true,
"schema": {
"type": "string"
}
}
],
"responses": {
"200": {
"description": "",
"content": {
"application/json": {
"schema": {
"type": "string"
}
}
}
}
}
}
} }
} }
} }

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.13.1", "version": "2.14.0",
"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/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.15.0", "version": "1.16.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/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.5.0", "version": "1.6.0",
"description": "User status", "description": "User status",
"license": { "license": {
"name": "agpl", "name": "agpl",

27
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.5.0", "version": "1.6.0",
"description": "User status", "description": "User status",
"license": { "license": {
"name": "agpl", "name": "agpl",
@ -331,6 +331,29 @@
"$ref": "#/components/schemas/Type" "$ref": "#/components/schemas/Type"
} }
} }
},
"Heartbeat": {
"type": "object",
"required": [
"ocs"
],
"properties": {
"ocs": {
"type": "object",
"required": [
"meta",
"data"
],
"properties": {
"meta": {
"$ref": "#/components/schemas/OCSMeta"
},
"data": {
"$ref": "#/components/schemas/Status"
}
}
}
}
} }
}, },
"securitySchemes": { "securitySchemes": {
@ -580,7 +603,7 @@
"content": { "content": {
"application/json": { "application/json": {
"schema": { "schema": {
"$ref": "#/components/schemas/Status" "$ref": "#/components/schemas/Heartbeat"
} }
} }
} }

2
tool/Dockerfile.dev

@ -1,4 +1,4 @@
FROM nextcloud:25.0.4 FROM nextcloud:26.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

Loading…
Cancel
Save