46 changed files with 4278 additions and 22 deletions
@ -0,0 +1 @@ |
|||||||
|
Subproject commit 62c670f2cf9674b95e2f7b94f7bf0cd3887f3418 |
@ -0,0 +1,16 @@ |
|||||||
|
# openapi.model.AdminNotification |
||||||
|
|
||||||
|
## Load the model package |
||||||
|
```dart |
||||||
|
import 'package:openapi/api.dart'; |
||||||
|
``` |
||||||
|
|
||||||
|
## Properties |
||||||
|
Name | Type | Description | Notes |
||||||
|
------------ | ------------- | ------------- | ------------- |
||||||
|
**shortMessage** | **String** | | [optional] |
||||||
|
**longMessage** | **String** | | [optional] |
||||||
|
|
||||||
|
[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) |
||||||
|
|
||||||
|
|
@ -0,0 +1,318 @@ |
|||||||
|
# openapi.api.DefaultApi |
||||||
|
|
||||||
|
## Load the API package |
||||||
|
```dart |
||||||
|
import 'package:openapi/api.dart'; |
||||||
|
``` |
||||||
|
|
||||||
|
All URIs are relative to *https://localhost:8080/ocs/v1.php/apps/notifications* |
||||||
|
|
||||||
|
Method | HTTP request | Description |
||||||
|
------------- | ------------- | ------------- |
||||||
|
[**deleteAllNotifications**](DefaultApi.md#deleteallnotifications) | **DELETE** /api/v2/notifications | |
||||||
|
[**deleteNotification**](DefaultApi.md#deletenotification) | **DELETE** /api/v2/notifications/{id} | |
||||||
|
[**getNotification**](DefaultApi.md#getnotification) | **GET** /api/v2/notifications/{id} | |
||||||
|
[**listNotifications**](DefaultApi.md#listnotifications) | **GET** /api/v2/notifications | |
||||||
|
[**registerDevice**](DefaultApi.md#registerdevice) | **POST** /api/v2/push | |
||||||
|
[**removeDevice**](DefaultApi.md#removedevice) | **DELETE** /api/v2/push | |
||||||
|
[**sendAdminNotification**](DefaultApi.md#sendadminnotification) | **POST** /api/v2/admin_notifications/{userId} | |
||||||
|
|
||||||
|
|
||||||
|
# **deleteAllNotifications** |
||||||
|
> String deleteAllNotifications() |
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
### Example |
||||||
|
```dart |
||||||
|
import 'package:openapi/api.dart'; |
||||||
|
// TODO Configure HTTP basic authorization: basic_auth |
||||||
|
//defaultApiClient.getAuthentication<HttpBasicAuth>('basic_auth').username = 'YOUR_USERNAME' |
||||||
|
//defaultApiClient.getAuthentication<HttpBasicAuth>('basic_auth').password = 'YOUR_PASSWORD'; |
||||||
|
|
||||||
|
final api_instance = DefaultApi(); |
||||||
|
|
||||||
|
try { |
||||||
|
final result = api_instance.deleteAllNotifications(); |
||||||
|
print(result); |
||||||
|
} catch (e) { |
||||||
|
print('Exception when calling DefaultApi->deleteAllNotifications: $e\n'); |
||||||
|
} |
||||||
|
``` |
||||||
|
|
||||||
|
### Parameters |
||||||
|
This endpoint does not need any parameter. |
||||||
|
|
||||||
|
### Return type |
||||||
|
|
||||||
|
**String** |
||||||
|
|
||||||
|
### Authorization |
||||||
|
|
||||||
|
[basic_auth](../README.md#basic_auth) |
||||||
|
|
||||||
|
### HTTP request headers |
||||||
|
|
||||||
|
- **Content-Type**: Not defined |
||||||
|
- **Accept**: application/json |
||||||
|
|
||||||
|
[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md) |
||||||
|
|
||||||
|
# **deleteNotification** |
||||||
|
> EmptyResponse deleteNotification(id) |
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
### Example |
||||||
|
```dart |
||||||
|
import 'package:openapi/api.dart'; |
||||||
|
// TODO Configure HTTP basic authorization: basic_auth |
||||||
|
//defaultApiClient.getAuthentication<HttpBasicAuth>('basic_auth').username = 'YOUR_USERNAME' |
||||||
|
//defaultApiClient.getAuthentication<HttpBasicAuth>('basic_auth').password = 'YOUR_PASSWORD'; |
||||||
|
|
||||||
|
final api_instance = DefaultApi(); |
||||||
|
final id = 56; // int | |
||||||
|
|
||||||
|
try { |
||||||
|
final result = api_instance.deleteNotification(id); |
||||||
|
print(result); |
||||||
|
} catch (e) { |
||||||
|
print('Exception when calling DefaultApi->deleteNotification: $e\n'); |
||||||
|
} |
||||||
|
``` |
||||||
|
|
||||||
|
### Parameters |
||||||
|
|
||||||
|
Name | Type | Description | Notes |
||||||
|
------------- | ------------- | ------------- | ------------- |
||||||
|
**id** | **int**| | |
||||||
|
|
||||||
|
### Return type |
||||||
|
|
||||||
|
[**EmptyResponse**](EmptyResponse.md) |
||||||
|
|
||||||
|
### Authorization |
||||||
|
|
||||||
|
[basic_auth](../README.md#basic_auth) |
||||||
|
|
||||||
|
### HTTP request headers |
||||||
|
|
||||||
|
- **Content-Type**: Not defined |
||||||
|
- **Accept**: application/json |
||||||
|
|
||||||
|
[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md) |
||||||
|
|
||||||
|
# **getNotification** |
||||||
|
> GetNotificationResponse getNotification(id) |
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
### Example |
||||||
|
```dart |
||||||
|
import 'package:openapi/api.dart'; |
||||||
|
// TODO Configure HTTP basic authorization: basic_auth |
||||||
|
//defaultApiClient.getAuthentication<HttpBasicAuth>('basic_auth').username = 'YOUR_USERNAME' |
||||||
|
//defaultApiClient.getAuthentication<HttpBasicAuth>('basic_auth').password = 'YOUR_PASSWORD'; |
||||||
|
|
||||||
|
final api_instance = DefaultApi(); |
||||||
|
final id = 56; // int | |
||||||
|
|
||||||
|
try { |
||||||
|
final result = api_instance.getNotification(id); |
||||||
|
print(result); |
||||||
|
} catch (e) { |
||||||
|
print('Exception when calling DefaultApi->getNotification: $e\n'); |
||||||
|
} |
||||||
|
``` |
||||||
|
|
||||||
|
### Parameters |
||||||
|
|
||||||
|
Name | Type | Description | Notes |
||||||
|
------------- | ------------- | ------------- | ------------- |
||||||
|
**id** | **int**| | |
||||||
|
|
||||||
|
### Return type |
||||||
|
|
||||||
|
[**GetNotificationResponse**](GetNotificationResponse.md) |
||||||
|
|
||||||
|
### Authorization |
||||||
|
|
||||||
|
[basic_auth](../README.md#basic_auth) |
||||||
|
|
||||||
|
### HTTP request headers |
||||||
|
|
||||||
|
- **Content-Type**: Not defined |
||||||
|
- **Accept**: application/json |
||||||
|
|
||||||
|
[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md) |
||||||
|
|
||||||
|
# **listNotifications** |
||||||
|
> String listNotifications() |
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
### Example |
||||||
|
```dart |
||||||
|
import 'package:openapi/api.dart'; |
||||||
|
// TODO Configure HTTP basic authorization: basic_auth |
||||||
|
//defaultApiClient.getAuthentication<HttpBasicAuth>('basic_auth').username = 'YOUR_USERNAME' |
||||||
|
//defaultApiClient.getAuthentication<HttpBasicAuth>('basic_auth').password = 'YOUR_PASSWORD'; |
||||||
|
|
||||||
|
final api_instance = DefaultApi(); |
||||||
|
|
||||||
|
try { |
||||||
|
final result = api_instance.listNotifications(); |
||||||
|
print(result); |
||||||
|
} catch (e) { |
||||||
|
print('Exception when calling DefaultApi->listNotifications: $e\n'); |
||||||
|
} |
||||||
|
``` |
||||||
|
|
||||||
|
### Parameters |
||||||
|
This endpoint does not need any parameter. |
||||||
|
|
||||||
|
### Return type |
||||||
|
|
||||||
|
**String** |
||||||
|
|
||||||
|
### Authorization |
||||||
|
|
||||||
|
[basic_auth](../README.md#basic_auth) |
||||||
|
|
||||||
|
### HTTP request headers |
||||||
|
|
||||||
|
- **Content-Type**: Not defined |
||||||
|
- **Accept**: application/json |
||||||
|
|
||||||
|
[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md) |
||||||
|
|
||||||
|
# **registerDevice** |
||||||
|
> PushServerRegistrationResponse registerDevice(pushServerDevice) |
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
### Example |
||||||
|
```dart |
||||||
|
import 'package:openapi/api.dart'; |
||||||
|
// TODO Configure HTTP basic authorization: basic_auth |
||||||
|
//defaultApiClient.getAuthentication<HttpBasicAuth>('basic_auth').username = 'YOUR_USERNAME' |
||||||
|
//defaultApiClient.getAuthentication<HttpBasicAuth>('basic_auth').password = 'YOUR_PASSWORD'; |
||||||
|
|
||||||
|
final api_instance = DefaultApi(); |
||||||
|
final pushServerDevice = PushServerDevice(); // PushServerDevice | |
||||||
|
|
||||||
|
try { |
||||||
|
final result = api_instance.registerDevice(pushServerDevice); |
||||||
|
print(result); |
||||||
|
} catch (e) { |
||||||
|
print('Exception when calling DefaultApi->registerDevice: $e\n'); |
||||||
|
} |
||||||
|
``` |
||||||
|
|
||||||
|
### Parameters |
||||||
|
|
||||||
|
Name | Type | Description | Notes |
||||||
|
------------- | ------------- | ------------- | ------------- |
||||||
|
**pushServerDevice** | [**PushServerDevice**](PushServerDevice.md)| | |
||||||
|
|
||||||
|
### Return type |
||||||
|
|
||||||
|
[**PushServerRegistrationResponse**](PushServerRegistrationResponse.md) |
||||||
|
|
||||||
|
### Authorization |
||||||
|
|
||||||
|
[basic_auth](../README.md#basic_auth) |
||||||
|
|
||||||
|
### HTTP request headers |
||||||
|
|
||||||
|
- **Content-Type**: application/json |
||||||
|
- **Accept**: application/json |
||||||
|
|
||||||
|
[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md) |
||||||
|
|
||||||
|
# **removeDevice** |
||||||
|
> String removeDevice() |
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
### Example |
||||||
|
```dart |
||||||
|
import 'package:openapi/api.dart'; |
||||||
|
// TODO Configure HTTP basic authorization: basic_auth |
||||||
|
//defaultApiClient.getAuthentication<HttpBasicAuth>('basic_auth').username = 'YOUR_USERNAME' |
||||||
|
//defaultApiClient.getAuthentication<HttpBasicAuth>('basic_auth').password = 'YOUR_PASSWORD'; |
||||||
|
|
||||||
|
final api_instance = DefaultApi(); |
||||||
|
|
||||||
|
try { |
||||||
|
final result = api_instance.removeDevice(); |
||||||
|
print(result); |
||||||
|
} catch (e) { |
||||||
|
print('Exception when calling DefaultApi->removeDevice: $e\n'); |
||||||
|
} |
||||||
|
``` |
||||||
|
|
||||||
|
### Parameters |
||||||
|
This endpoint does not need any parameter. |
||||||
|
|
||||||
|
### Return type |
||||||
|
|
||||||
|
**String** |
||||||
|
|
||||||
|
### Authorization |
||||||
|
|
||||||
|
[basic_auth](../README.md#basic_auth) |
||||||
|
|
||||||
|
### HTTP request headers |
||||||
|
|
||||||
|
- **Content-Type**: Not defined |
||||||
|
- **Accept**: application/json |
||||||
|
|
||||||
|
[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md) |
||||||
|
|
||||||
|
# **sendAdminNotification** |
||||||
|
> EmptyResponse sendAdminNotification(userId, adminNotification) |
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
### Example |
||||||
|
```dart |
||||||
|
import 'package:openapi/api.dart'; |
||||||
|
// TODO Configure HTTP basic authorization: basic_auth |
||||||
|
//defaultApiClient.getAuthentication<HttpBasicAuth>('basic_auth').username = 'YOUR_USERNAME' |
||||||
|
//defaultApiClient.getAuthentication<HttpBasicAuth>('basic_auth').password = 'YOUR_PASSWORD'; |
||||||
|
|
||||||
|
final api_instance = DefaultApi(); |
||||||
|
final userId = userId_example; // String | |
||||||
|
final adminNotification = AdminNotification(); // AdminNotification | |
||||||
|
|
||||||
|
try { |
||||||
|
final result = api_instance.sendAdminNotification(userId, adminNotification); |
||||||
|
print(result); |
||||||
|
} catch (e) { |
||||||
|
print('Exception when calling DefaultApi->sendAdminNotification: $e\n'); |
||||||
|
} |
||||||
|
``` |
||||||
|
|
||||||
|
### Parameters |
||||||
|
|
||||||
|
Name | Type | Description | Notes |
||||||
|
------------- | ------------- | ------------- | ------------- |
||||||
|
**userId** | **String**| | |
||||||
|
**adminNotification** | [**AdminNotification**](AdminNotification.md)| | |
||||||
|
|
||||||
|
### Return type |
||||||
|
|
||||||
|
[**EmptyResponse**](EmptyResponse.md) |
||||||
|
|
||||||
|
### Authorization |
||||||
|
|
||||||
|
[basic_auth](../README.md#basic_auth) |
||||||
|
|
||||||
|
### HTTP request headers |
||||||
|
|
||||||
|
- **Content-Type**: application/json |
||||||
|
- **Accept**: application/json |
||||||
|
|
||||||
|
[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md) |
||||||
|
|
@ -0,0 +1,15 @@ |
|||||||
|
# openapi.model.EmptyResponse |
||||||
|
|
||||||
|
## Load the model package |
||||||
|
```dart |
||||||
|
import 'package:openapi/api.dart'; |
||||||
|
``` |
||||||
|
|
||||||
|
## Properties |
||||||
|
Name | Type | Description | Notes |
||||||
|
------------ | ------------- | ------------- | ------------- |
||||||
|
**ocs** | [**EmptyResponseOcs**](EmptyResponseOcs.md) | | [optional] |
||||||
|
|
||||||
|
[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) |
||||||
|
|
||||||
|
|
@ -0,0 +1,16 @@ |
|||||||
|
# openapi.model.EmptyResponseOcs |
||||||
|
|
||||||
|
## Load the model package |
||||||
|
```dart |
||||||
|
import 'package:openapi/api.dart'; |
||||||
|
``` |
||||||
|
|
||||||
|
## Properties |
||||||
|
Name | Type | Description | Notes |
||||||
|
------------ | ------------- | ------------- | ------------- |
||||||
|
**meta** | [**Object**](.md) | Stub | [optional] |
||||||
|
**data** | **List<String>** | | [optional] [default to const []] |
||||||
|
|
||||||
|
[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) |
||||||
|
|
||||||
|
|
@ -0,0 +1,15 @@ |
|||||||
|
# openapi.model.GetNotificationResponse |
||||||
|
|
||||||
|
## Load the model package |
||||||
|
```dart |
||||||
|
import 'package:openapi/api.dart'; |
||||||
|
``` |
||||||
|
|
||||||
|
## Properties |
||||||
|
Name | Type | Description | Notes |
||||||
|
------------ | ------------- | ------------- | ------------- |
||||||
|
**ocs** | [**GetNotificationResponseOcs**](GetNotificationResponseOcs.md) | | [optional] |
||||||
|
|
||||||
|
[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) |
||||||
|
|
||||||
|
|
@ -0,0 +1,16 @@ |
|||||||
|
# openapi.model.GetNotificationResponseOcs |
||||||
|
|
||||||
|
## Load the model package |
||||||
|
```dart |
||||||
|
import 'package:openapi/api.dart'; |
||||||
|
``` |
||||||
|
|
||||||
|
## Properties |
||||||
|
Name | Type | Description | Notes |
||||||
|
------------ | ------------- | ------------- | ------------- |
||||||
|
**meta** | [**Object**](.md) | Stub | [optional] |
||||||
|
**data** | [**Notification**](Notification.md) | | [optional] |
||||||
|
|
||||||
|
[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) |
||||||
|
|
||||||
|
|
@ -0,0 +1,15 @@ |
|||||||
|
# openapi.model.ListNotificationsResponse |
||||||
|
|
||||||
|
## Load the model package |
||||||
|
```dart |
||||||
|
import 'package:openapi/api.dart'; |
||||||
|
``` |
||||||
|
|
||||||
|
## Properties |
||||||
|
Name | Type | Description | Notes |
||||||
|
------------ | ------------- | ------------- | ------------- |
||||||
|
**ocs** | [**ListNotificationsResponseOcs**](ListNotificationsResponseOcs.md) | | [optional] |
||||||
|
|
||||||
|
[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) |
||||||
|
|
||||||
|
|
@ -0,0 +1,16 @@ |
|||||||
|
# openapi.model.ListNotificationsResponseOcs |
||||||
|
|
||||||
|
## Load the model package |
||||||
|
```dart |
||||||
|
import 'package:openapi/api.dart'; |
||||||
|
``` |
||||||
|
|
||||||
|
## Properties |
||||||
|
Name | Type | Description | Notes |
||||||
|
------------ | ------------- | ------------- | ------------- |
||||||
|
**meta** | [**Object**](.md) | Stub | [optional] |
||||||
|
**data** | [**List<Notification>**](Notification.md) | | [optional] [default to const []] |
||||||
|
|
||||||
|
[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) |
||||||
|
|
||||||
|
|
@ -0,0 +1,29 @@ |
|||||||
|
# openapi.model.Notification |
||||||
|
|
||||||
|
## Load the model package |
||||||
|
```dart |
||||||
|
import 'package:openapi/api.dart'; |
||||||
|
``` |
||||||
|
|
||||||
|
## Properties |
||||||
|
Name | Type | Description | Notes |
||||||
|
------------ | ------------- | ------------- | ------------- |
||||||
|
**notificationId** | **int** | | [optional] |
||||||
|
**app** | **String** | | [optional] |
||||||
|
**user** | **String** | | [optional] |
||||||
|
**datetime** | **String** | | [optional] |
||||||
|
**objectType** | **String** | | [optional] |
||||||
|
**objectId** | **String** | | [optional] |
||||||
|
**subject** | **String** | | [optional] |
||||||
|
**message** | **String** | | [optional] |
||||||
|
**link** | **String** | | [optional] |
||||||
|
**subjectRich** | **String** | | [optional] |
||||||
|
**subjectRichParameters** | **List<String>** | | [optional] [default to const []] |
||||||
|
**messageRich** | **String** | | [optional] |
||||||
|
**messageRichParameters** | **List<String>** | | [optional] [default to const []] |
||||||
|
**icon** | **String** | | [optional] |
||||||
|
**actions** | **List<String>** | | [optional] [default to const []] |
||||||
|
|
||||||
|
[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) |
||||||
|
|
||||||
|
|
@ -0,0 +1,19 @@ |
|||||||
|
# openapi.model.PushNotificationDecryptedSubject |
||||||
|
|
||||||
|
## Load the model package |
||||||
|
```dart |
||||||
|
import 'package:openapi/api.dart'; |
||||||
|
``` |
||||||
|
|
||||||
|
## Properties |
||||||
|
Name | Type | Description | Notes |
||||||
|
------------ | ------------- | ------------- | ------------- |
||||||
|
**nid** | **int** | | [optional] |
||||||
|
**app** | **String** | | [optional] |
||||||
|
**subject** | **String** | | [optional] |
||||||
|
**type** | **String** | | [optional] |
||||||
|
**id** | **String** | | [optional] |
||||||
|
|
||||||
|
[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) |
||||||
|
|
||||||
|
|
@ -0,0 +1,17 @@ |
|||||||
|
# openapi.model.PushServerDevice |
||||||
|
|
||||||
|
## Load the model package |
||||||
|
```dart |
||||||
|
import 'package:openapi/api.dart'; |
||||||
|
``` |
||||||
|
|
||||||
|
## Properties |
||||||
|
Name | Type | Description | Notes |
||||||
|
------------ | ------------- | ------------- | ------------- |
||||||
|
**pushTokenHash** | **String** | | [optional] |
||||||
|
**devicePublicKey** | **String** | | [optional] |
||||||
|
**proxyServer** | **String** | | [optional] |
||||||
|
|
||||||
|
[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) |
||||||
|
|
||||||
|
|
@ -0,0 +1,15 @@ |
|||||||
|
# openapi.model.PushServerRegistrationResponse |
||||||
|
|
||||||
|
## Load the model package |
||||||
|
```dart |
||||||
|
import 'package:openapi/api.dart'; |
||||||
|
``` |
||||||
|
|
||||||
|
## Properties |
||||||
|
Name | Type | Description | Notes |
||||||
|
------------ | ------------- | ------------- | ------------- |
||||||
|
**ocs** | [**PushServerRegistrationResponseOcs**](PushServerRegistrationResponseOcs.md) | | [optional] |
||||||
|
|
||||||
|
[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) |
||||||
|
|
||||||
|
|
@ -0,0 +1,16 @@ |
|||||||
|
# openapi.model.PushServerRegistrationResponseOcs |
||||||
|
|
||||||
|
## Load the model package |
||||||
|
```dart |
||||||
|
import 'package:openapi/api.dart'; |
||||||
|
``` |
||||||
|
|
||||||
|
## Properties |
||||||
|
Name | Type | Description | Notes |
||||||
|
------------ | ------------- | ------------- | ------------- |
||||||
|
**meta** | [**Object**](.md) | Stub | [optional] |
||||||
|
**data** | [**PushServerSubscription**](PushServerSubscription.md) | | [optional] |
||||||
|
|
||||||
|
[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) |
||||||
|
|
||||||
|
|
@ -0,0 +1,17 @@ |
|||||||
|
# openapi.model.PushServerSubscription |
||||||
|
|
||||||
|
## Load the model package |
||||||
|
```dart |
||||||
|
import 'package:openapi/api.dart'; |
||||||
|
``` |
||||||
|
|
||||||
|
## Properties |
||||||
|
Name | Type | Description | Notes |
||||||
|
------------ | ------------- | ------------- | ------------- |
||||||
|
**publicKey** | **String** | | [optional] |
||||||
|
**deviceIdentifier** | **String** | | [optional] |
||||||
|
**signature** | **String** | | [optional] |
||||||
|
|
||||||
|
[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) |
||||||
|
|
||||||
|
|
@ -0,0 +1,39 @@ |
|||||||
|
// |
||||||
|
// AUTO-GENERATED FILE, DO NOT MODIFY! |
||||||
|
// |
||||||
|
// @dart=2.12 |
||||||
|
|
||||||
|
// ignore_for_file: unused_element, unused_import |
||||||
|
// ignore_for_file: always_put_required_named_parameters_first |
||||||
|
// ignore_for_file: constant_identifier_names |
||||||
|
// ignore_for_file: lines_longer_than_80_chars |
||||||
|
|
||||||
|
library openapi.api; |
||||||
|
|
||||||
|
import 'package:nextcloud/src/clients/common/api.dart'; |
||||||
|
|
||||||
|
import 'dart:async'; |
||||||
|
import 'dart:convert'; |
||||||
|
import 'dart:io'; |
||||||
|
|
||||||
|
import 'package:http/http.dart'; |
||||||
|
import 'package:intl/intl.dart'; |
||||||
|
import 'package:meta/meta.dart'; |
||||||
|
|
||||||
|
part 'api_client.dart'; |
||||||
|
|
||||||
|
part 'api/default_api.dart'; |
||||||
|
|
||||||
|
part 'model/admin_notification.dart'; |
||||||
|
part 'model/empty_response.dart'; |
||||||
|
part 'model/empty_response_ocs.dart'; |
||||||
|
part 'model/get_notification_response.dart'; |
||||||
|
part 'model/get_notification_response_ocs.dart'; |
||||||
|
part 'model/list_notifications_response.dart'; |
||||||
|
part 'model/list_notifications_response_ocs.dart'; |
||||||
|
part 'model/notification.dart'; |
||||||
|
part 'model/push_notification_decrypted_subject.dart'; |
||||||
|
part 'model/push_server_device.dart'; |
||||||
|
part 'model/push_server_registration_response.dart'; |
||||||
|
part 'model/push_server_registration_response_ocs.dart'; |
||||||
|
part 'model/push_server_subscription.dart'; |
@ -0,0 +1,364 @@ |
|||||||
|
// |
||||||
|
// AUTO-GENERATED FILE, DO NOT MODIFY! |
||||||
|
// |
||||||
|
// @dart=2.12 |
||||||
|
|
||||||
|
// ignore_for_file: unused_element, unused_import |
||||||
|
// ignore_for_file: always_put_required_named_parameters_first |
||||||
|
// ignore_for_file: constant_identifier_names |
||||||
|
// ignore_for_file: lines_longer_than_80_chars |
||||||
|
|
||||||
|
part of openapi.api; |
||||||
|
|
||||||
|
class DefaultApi extends ApiInstance<ApiClient> { |
||||||
|
DefaultApi(ApiClient apiClient) : super(apiClient); |
||||||
|
|
||||||
|
/// Performs an HTTP 'DELETE /api/v2/notifications' operation and returns the [Response]. |
||||||
|
Future<Response> deleteAllNotificationsWithHttpInfo() async { |
||||||
|
// ignore: prefer_const_declarations |
||||||
|
final path = r'/api/v2/notifications'; |
||||||
|
|
||||||
|
// ignore: prefer_final_locals |
||||||
|
Object? postBody; |
||||||
|
|
||||||
|
final queryParams = <QueryParam>[]; |
||||||
|
final headerParams = <String, String>{}; |
||||||
|
final formParams = <String, String>{}; |
||||||
|
|
||||||
|
const contentTypes = <String>[]; |
||||||
|
|
||||||
|
return apiClient.invokeAPI( |
||||||
|
path, |
||||||
|
'DELETE', |
||||||
|
queryParams, |
||||||
|
postBody, |
||||||
|
headerParams, |
||||||
|
formParams, |
||||||
|
contentTypes.isEmpty ? null : contentTypes.first, |
||||||
|
); |
||||||
|
} |
||||||
|
|
||||||
|
Future<String?> deleteAllNotifications() async { |
||||||
|
final response = await deleteAllNotificationsWithHttpInfo(); |
||||||
|
if (response.statusCode >= HttpStatus.badRequest) { |
||||||
|
throw ApiException(response.statusCode, await decodeBodyBytes(response)); |
||||||
|
} |
||||||
|
// When a remote server returns no body with a status of 204, we shall not decode it. |
||||||
|
// At the time of writing this, `dart:convert` will throw an "Unexpected end of input" |
||||||
|
// FormatException when trying to decode an empty string. |
||||||
|
if (response.body.isNotEmpty && response.statusCode != HttpStatus.noContent) { |
||||||
|
return await apiClient.deserializeAsync( |
||||||
|
await decodeBodyBytes(response), |
||||||
|
'String', |
||||||
|
) as String; |
||||||
|
} |
||||||
|
return null; |
||||||
|
} |
||||||
|
|
||||||
|
/// Performs an HTTP 'DELETE /api/v2/notifications/{id}' operation and returns the [Response]. |
||||||
|
/// Parameters: |
||||||
|
/// |
||||||
|
/// * [int] id (required): |
||||||
|
Future<Response> deleteNotificationWithHttpInfo( |
||||||
|
int id, |
||||||
|
) async { |
||||||
|
// ignore: prefer_const_declarations |
||||||
|
final path = r'/api/v2/notifications/{id}'.replaceAll('{id}', id.toString()); |
||||||
|
|
||||||
|
// ignore: prefer_final_locals |
||||||
|
Object? postBody; |
||||||
|
|
||||||
|
final queryParams = <QueryParam>[]; |
||||||
|
final headerParams = <String, String>{}; |
||||||
|
final formParams = <String, String>{}; |
||||||
|
|
||||||
|
const contentTypes = <String>[]; |
||||||
|
|
||||||
|
return apiClient.invokeAPI( |
||||||
|
path, |
||||||
|
'DELETE', |
||||||
|
queryParams, |
||||||
|
postBody, |
||||||
|
headerParams, |
||||||
|
formParams, |
||||||
|
contentTypes.isEmpty ? null : contentTypes.first, |
||||||
|
); |
||||||
|
} |
||||||
|
|
||||||
|
/// Parameters: |
||||||
|
/// |
||||||
|
/// * [int] id (required): |
||||||
|
Future<EmptyResponse?> deleteNotification( |
||||||
|
int id, |
||||||
|
) async { |
||||||
|
final response = await deleteNotificationWithHttpInfo( |
||||||
|
id, |
||||||
|
); |
||||||
|
if (response.statusCode >= HttpStatus.badRequest) { |
||||||
|
throw ApiException(response.statusCode, await decodeBodyBytes(response)); |
||||||
|
} |
||||||
|
// When a remote server returns no body with a status of 204, we shall not decode it. |
||||||
|
// At the time of writing this, `dart:convert` will throw an "Unexpected end of input" |
||||||
|
// FormatException when trying to decode an empty string. |
||||||
|
if (response.body.isNotEmpty && response.statusCode != HttpStatus.noContent) { |
||||||
|
return await apiClient.deserializeAsync( |
||||||
|
await decodeBodyBytes(response), |
||||||
|
'EmptyResponse', |
||||||
|
) as EmptyResponse; |
||||||
|
} |
||||||
|
return null; |
||||||
|
} |
||||||
|
|
||||||
|
/// Performs an HTTP 'GET /api/v2/notifications/{id}' operation and returns the [Response]. |
||||||
|
/// Parameters: |
||||||
|
/// |
||||||
|
/// * [int] id (required): |
||||||
|
Future<Response> getNotificationWithHttpInfo( |
||||||
|
int id, |
||||||
|
) async { |
||||||
|
// ignore: prefer_const_declarations |
||||||
|
final path = r'/api/v2/notifications/{id}'.replaceAll('{id}', id.toString()); |
||||||
|
|
||||||
|
// ignore: prefer_final_locals |
||||||
|
Object? postBody; |
||||||
|
|
||||||
|
final queryParams = <QueryParam>[]; |
||||||
|
final headerParams = <String, String>{}; |
||||||
|
final formParams = <String, String>{}; |
||||||
|
|
||||||
|
const contentTypes = <String>[]; |
||||||
|
|
||||||
|
return apiClient.invokeAPI( |
||||||
|
path, |
||||||
|
'GET', |
||||||
|
queryParams, |
||||||
|
postBody, |
||||||
|
headerParams, |
||||||
|
formParams, |
||||||
|
contentTypes.isEmpty ? null : contentTypes.first, |
||||||
|
); |
||||||
|
} |
||||||
|
|
||||||
|
/// Parameters: |
||||||
|
/// |
||||||
|
/// * [int] id (required): |
||||||
|
Future<GetNotificationResponse?> getNotification( |
||||||
|
int id, |
||||||
|
) async { |
||||||
|
final response = await getNotificationWithHttpInfo( |
||||||
|
id, |
||||||
|
); |
||||||
|
if (response.statusCode >= HttpStatus.badRequest) { |
||||||
|
throw ApiException(response.statusCode, await decodeBodyBytes(response)); |
||||||
|
} |
||||||
|
// When a remote server returns no body with a status of 204, we shall not decode it. |
||||||
|
// At the time of writing this, `dart:convert` will throw an "Unexpected end of input" |
||||||
|
// FormatException when trying to decode an empty string. |
||||||
|
if (response.body.isNotEmpty && response.statusCode != HttpStatus.noContent) { |
||||||
|
return await apiClient.deserializeAsync( |
||||||
|
await decodeBodyBytes(response), |
||||||
|
'GetNotificationResponse', |
||||||
|
) as GetNotificationResponse; |
||||||
|
} |
||||||
|
return null; |
||||||
|
} |
||||||
|
|
||||||
|
/// Performs an HTTP 'GET /api/v2/notifications' operation and returns the [Response]. |
||||||
|
Future<Response> listNotificationsWithHttpInfo() async { |
||||||
|
// ignore: prefer_const_declarations |
||||||
|
final path = r'/api/v2/notifications'; |
||||||
|
|
||||||
|
// ignore: prefer_final_locals |
||||||
|
Object? postBody; |
||||||
|
|
||||||
|
final queryParams = <QueryParam>[]; |
||||||
|
final headerParams = <String, String>{}; |
||||||
|
final formParams = <String, String>{}; |
||||||
|
|
||||||
|
const contentTypes = <String>[]; |
||||||
|
|
||||||
|
return apiClient.invokeAPI( |
||||||
|
path, |
||||||
|
'GET', |
||||||
|
queryParams, |
||||||
|
postBody, |
||||||
|
headerParams, |
||||||
|
formParams, |
||||||
|
contentTypes.isEmpty ? null : contentTypes.first, |
||||||
|
); |
||||||
|
} |
||||||
|
|
||||||
|
Future<String?> listNotifications() async { |
||||||
|
final response = await listNotificationsWithHttpInfo(); |
||||||
|
if (response.statusCode >= HttpStatus.badRequest) { |
||||||
|
throw ApiException(response.statusCode, await decodeBodyBytes(response)); |
||||||
|
} |
||||||
|
// When a remote server returns no body with a status of 204, we shall not decode it. |
||||||
|
// At the time of writing this, `dart:convert` will throw an "Unexpected end of input" |
||||||
|
// FormatException when trying to decode an empty string. |
||||||
|
if (response.body.isNotEmpty && response.statusCode != HttpStatus.noContent) { |
||||||
|
return await apiClient.deserializeAsync( |
||||||
|
await decodeBodyBytes(response), |
||||||
|
'String', |
||||||
|
) as String; |
||||||
|
} |
||||||
|
return null; |
||||||
|
} |
||||||
|
|
||||||
|
/// Performs an HTTP 'POST /api/v2/push' operation and returns the [Response]. |
||||||
|
/// Parameters: |
||||||
|
/// |
||||||
|
/// * [PushServerDevice] pushServerDevice (required): |
||||||
|
Future<Response> registerDeviceWithHttpInfo( |
||||||
|
PushServerDevice pushServerDevice, |
||||||
|
) async { |
||||||
|
// ignore: prefer_const_declarations |
||||||
|
final path = r'/api/v2/push'; |
||||||
|
|
||||||
|
// ignore: prefer_final_locals |
||||||
|
Object? postBody = pushServerDevice; |
||||||
|
|
||||||
|
final queryParams = <QueryParam>[]; |
||||||
|
final headerParams = <String, String>{}; |
||||||
|
final formParams = <String, String>{}; |
||||||
|
|
||||||
|
const contentTypes = <String>['application/json']; |
||||||
|
|
||||||
|
return apiClient.invokeAPI( |
||||||
|
path, |
||||||
|
'POST', |
||||||
|
queryParams, |
||||||
|
postBody, |
||||||
|
headerParams, |
||||||
|
formParams, |
||||||
|
contentTypes.isEmpty ? null : contentTypes.first, |
||||||
|
); |
||||||
|
} |
||||||
|
|
||||||
|
/// Parameters: |
||||||
|
/// |
||||||
|
/// * [PushServerDevice] pushServerDevice (required): |
||||||
|
Future<PushServerRegistrationResponse?> registerDevice( |
||||||
|
PushServerDevice pushServerDevice, |
||||||
|
) async { |
||||||
|
final response = await registerDeviceWithHttpInfo( |
||||||
|
pushServerDevice, |
||||||
|
); |
||||||
|
if (response.statusCode >= HttpStatus.badRequest) { |
||||||
|
throw ApiException(response.statusCode, await decodeBodyBytes(response)); |
||||||
|
} |
||||||
|
// When a remote server returns no body with a status of 204, we shall not decode it. |
||||||
|
// At the time of writing this, `dart:convert` will throw an "Unexpected end of input" |
||||||
|
// FormatException when trying to decode an empty string. |
||||||
|
if (response.body.isNotEmpty && response.statusCode != HttpStatus.noContent) { |
||||||
|
return await apiClient.deserializeAsync( |
||||||
|
await decodeBodyBytes(response), |
||||||
|
'PushServerRegistrationResponse', |
||||||
|
) as PushServerRegistrationResponse; |
||||||
|
} |
||||||
|
return null; |
||||||
|
} |
||||||
|
|
||||||
|
/// Performs an HTTP 'DELETE /api/v2/push' operation and returns the [Response]. |
||||||
|
Future<Response> removeDeviceWithHttpInfo() async { |
||||||
|
// ignore: prefer_const_declarations |
||||||
|
final path = r'/api/v2/push'; |
||||||
|
|
||||||
|
// ignore: prefer_final_locals |
||||||
|
Object? postBody; |
||||||
|
|
||||||
|
final queryParams = <QueryParam>[]; |
||||||
|
final headerParams = <String, String>{}; |
||||||
|
final formParams = <String, String>{}; |
||||||
|
|
||||||
|
const contentTypes = <String>[]; |
||||||
|
|
||||||
|
return apiClient.invokeAPI( |
||||||
|
path, |
||||||
|
'DELETE', |
||||||
|
queryParams, |
||||||
|
postBody, |
||||||
|
headerParams, |
||||||
|
formParams, |
||||||
|
contentTypes.isEmpty ? null : contentTypes.first, |
||||||
|
); |
||||||
|
} |
||||||
|
|
||||||
|
Future<String?> removeDevice() async { |
||||||
|
final response = await removeDeviceWithHttpInfo(); |
||||||
|
if (response.statusCode >= HttpStatus.badRequest) { |
||||||
|
throw ApiException(response.statusCode, await decodeBodyBytes(response)); |
||||||
|
} |
||||||
|
// When a remote server returns no body with a status of 204, we shall not decode it. |
||||||
|
// At the time of writing this, `dart:convert` will throw an "Unexpected end of input" |
||||||
|
// FormatException when trying to decode an empty string. |
||||||
|
if (response.body.isNotEmpty && response.statusCode != HttpStatus.noContent) { |
||||||
|
return await apiClient.deserializeAsync( |
||||||
|
await decodeBodyBytes(response), |
||||||
|
'String', |
||||||
|
) as String; |
||||||
|
} |
||||||
|
return null; |
||||||
|
} |
||||||
|
|
||||||
|
/// Performs an HTTP 'POST /api/v2/admin_notifications/{userId}' operation and returns the [Response]. |
||||||
|
/// Parameters: |
||||||
|
/// |
||||||
|
/// * [String] userId (required): |
||||||
|
/// |
||||||
|
/// * [AdminNotification] adminNotification (required): |
||||||
|
Future<Response> sendAdminNotificationWithHttpInfo( |
||||||
|
String userId, |
||||||
|
AdminNotification adminNotification, |
||||||
|
) async { |
||||||
|
// ignore: prefer_const_declarations |
||||||
|
final path = r'/api/v2/admin_notifications/{userId}'.replaceAll('{userId}', userId); |
||||||
|
|
||||||
|
// ignore: prefer_final_locals |
||||||
|
Object? postBody = adminNotification; |
||||||
|
|
||||||
|
final queryParams = <QueryParam>[]; |
||||||
|
final headerParams = <String, String>{}; |
||||||
|
final formParams = <String, String>{}; |
||||||
|
|
||||||
|
const contentTypes = <String>['application/json']; |
||||||
|
|
||||||
|
return apiClient.invokeAPI( |
||||||
|
path, |
||||||
|
'POST', |
||||||
|
queryParams, |
||||||
|
postBody, |
||||||
|
headerParams, |
||||||
|
formParams, |
||||||
|
contentTypes.isEmpty ? null : contentTypes.first, |
||||||
|
); |
||||||
|
} |
||||||
|
|
||||||
|
/// Parameters: |
||||||
|
/// |
||||||
|
/// * [String] userId (required): |
||||||
|
/// |
||||||
|
/// * [AdminNotification] adminNotification (required): |
||||||
|
Future<EmptyResponse?> sendAdminNotification( |
||||||
|
String userId, |
||||||
|
AdminNotification adminNotification, |
||||||
|
) async { |
||||||
|
final response = await sendAdminNotificationWithHttpInfo( |
||||||
|
userId, |
||||||
|
adminNotification, |
||||||
|
); |
||||||
|
if (response.statusCode >= HttpStatus.badRequest) { |
||||||
|
throw ApiException(response.statusCode, await decodeBodyBytes(response)); |
||||||
|
} |
||||||
|
// When a remote server returns no body with a status of 204, we shall not decode it. |
||||||
|
// At the time of writing this, `dart:convert` will throw an "Unexpected end of input" |
||||||
|
// FormatException when trying to decode an empty string. |
||||||
|
if (response.body.isNotEmpty && response.statusCode != HttpStatus.noContent) { |
||||||
|
return await apiClient.deserializeAsync( |
||||||
|
await decodeBodyBytes(response), |
||||||
|
'EmptyResponse', |
||||||
|
) as EmptyResponse; |
||||||
|
} |
||||||
|
return null; |
||||||
|
} |
||||||
|
} |
@ -0,0 +1,329 @@ |
|||||||
|
// |
||||||
|
// AUTO-GENERATED FILE, DO NOT MODIFY! |
||||||
|
// |
||||||
|
// @dart=2.12 |
||||||
|
|
||||||
|
// ignore_for_file: unused_element, unused_import |
||||||
|
// ignore_for_file: always_put_required_named_parameters_first |
||||||
|
// ignore_for_file: constant_identifier_names |
||||||
|
// ignore_for_file: lines_longer_than_80_chars |
||||||
|
|
||||||
|
part of openapi.api; |
||||||
|
|
||||||
|
class ApiClient extends BaseApiClient { |
||||||
|
ApiClient({this.basePath = 'https://localhost:8080/ocs/v1.php/apps/notifications', this.authentication}); |
||||||
|
|
||||||
|
final String basePath; |
||||||
|
|
||||||
|
var _client = Client(); |
||||||
|
|
||||||
|
/// Returns the current HTTP [Client] instance to use in this class. |
||||||
|
/// |
||||||
|
/// The return value is guaranteed to never be null. |
||||||
|
Client get client => _client; |
||||||
|
|
||||||
|
/// Requests to use a new HTTP [Client] in this class. |
||||||
|
set client(Client newClient) { |
||||||
|
_client = newClient; |
||||||
|
} |
||||||
|
|
||||||
|
final _defaultHeaderMap = <String, String>{}; |
||||||
|
final Authentication? authentication; |
||||||
|
|
||||||
|
void addDefaultHeader(String key, String value) { |
||||||
|
_defaultHeaderMap[key] = value; |
||||||
|
} |
||||||
|
|
||||||
|
Map<String, String> get defaultHeaderMap => _defaultHeaderMap; |
||||||
|
|
||||||
|
// We don't use a Map<String, String> for queryParams. |
||||||
|
// If collectionFormat is 'multi', a key might appear multiple times. |
||||||
|
Future<Response> invokeAPI( |
||||||
|
String path, |
||||||
|
String method, |
||||||
|
List<QueryParam> queryParams, |
||||||
|
Object? body, |
||||||
|
Map<String, String> headerParams, |
||||||
|
Map<String, String> formParams, |
||||||
|
String? contentType, |
||||||
|
) async { |
||||||
|
_updateParamsForAuth(queryParams, headerParams); |
||||||
|
|
||||||
|
headerParams.addAll(_defaultHeaderMap); |
||||||
|
if (contentType != null) { |
||||||
|
headerParams['Content-Type'] = contentType; |
||||||
|
} |
||||||
|
|
||||||
|
final urlEncodedQueryParams = queryParams.map((param) => '$param'); |
||||||
|
final queryString = urlEncodedQueryParams.isNotEmpty ? '?${urlEncodedQueryParams.join('&')}' : ''; |
||||||
|
final uri = Uri.parse('$basePath$path$queryString'); |
||||||
|
|
||||||
|
try { |
||||||
|
// Special case for uploading a single file which isn't a 'multipart/form-data'. |
||||||
|
if (body is MultipartFile && |
||||||
|
(contentType == null || !contentType.toLowerCase().startsWith('multipart/form-data'))) { |
||||||
|
final request = StreamedRequest(method, uri); |
||||||
|
request.headers.addAll(headerParams); |
||||||
|
request.contentLength = body.length; |
||||||
|
body.finalize().listen( |
||||||
|
request.sink.add, |
||||||
|
onDone: request.sink.close, |
||||||
|
// ignore: avoid_types_on_closure_parameters |
||||||
|
onError: (Object error, StackTrace trace) => request.sink.close(), |
||||||
|
cancelOnError: true, |
||||||
|
); |
||||||
|
final response = await _client.send(request); |
||||||
|
return Response.fromStream(response); |
||||||
|
} |
||||||
|
|
||||||
|
if (body is MultipartRequest) { |
||||||
|
final request = MultipartRequest(method, uri); |
||||||
|
request.fields.addAll(body.fields); |
||||||
|
request.files.addAll(body.files); |
||||||
|
request.headers.addAll(body.headers); |
||||||
|
request.headers.addAll(headerParams); |
||||||
|
final response = await _client.send(request); |
||||||
|
return Response.fromStream(response); |
||||||
|
} |
||||||
|
|
||||||
|
final msgBody = contentType == 'application/x-www-form-urlencoded' ? formParams : await serializeAsync(body); |
||||||
|
final nullableHeaderParams = headerParams.isEmpty ? null : headerParams; |
||||||
|
|
||||||
|
switch (method) { |
||||||
|
case 'POST': |
||||||
|
return await _client.post( |
||||||
|
uri, |
||||||
|
headers: nullableHeaderParams, |
||||||
|
body: msgBody, |
||||||
|
); |
||||||
|
case 'PUT': |
||||||
|
return await _client.put( |
||||||
|
uri, |
||||||
|
headers: nullableHeaderParams, |
||||||
|
body: msgBody, |
||||||
|
); |
||||||
|
case 'DELETE': |
||||||
|
return await _client.delete( |
||||||
|
uri, |
||||||
|
headers: nullableHeaderParams, |
||||||
|
body: msgBody, |
||||||
|
); |
||||||
|
case 'PATCH': |
||||||
|
return await _client.patch( |
||||||
|
uri, |
||||||
|
headers: nullableHeaderParams, |
||||||
|
body: msgBody, |
||||||
|
); |
||||||
|
case 'HEAD': |
||||||
|
return await _client.head( |
||||||
|
uri, |
||||||
|
headers: nullableHeaderParams, |
||||||
|
); |
||||||
|
case 'GET': |
||||||
|
return await _client.get( |
||||||
|
uri, |
||||||
|
headers: nullableHeaderParams, |
||||||
|
); |
||||||
|
} |
||||||
|
} on SocketException catch (error, trace) { |
||||||
|
throw ApiException.withInner( |
||||||
|
HttpStatus.badRequest, |
||||||
|
'Socket operation failed: $method $path', |
||||||
|
error, |
||||||
|
trace, |
||||||
|
); |
||||||
|
} on TlsException catch (error, trace) { |
||||||
|
throw ApiException.withInner( |
||||||
|
HttpStatus.badRequest, |
||||||
|
'TLS/SSL communication failed: $method $path', |
||||||
|
error, |
||||||
|
trace, |
||||||
|
); |
||||||
|
} on IOException catch (error, trace) { |
||||||
|
throw ApiException.withInner( |
||||||
|
HttpStatus.badRequest, |
||||||
|
'I/O operation failed: $method $path', |
||||||
|
error, |
||||||
|
trace, |
||||||
|
); |
||||||
|
} on ClientException catch (error, trace) { |
||||||
|
throw ApiException.withInner( |
||||||
|
HttpStatus.badRequest, |
||||||
|
'HTTP connection failed: $method $path', |
||||||
|
error, |
||||||
|
trace, |
||||||
|
); |
||||||
|
} on Exception catch (error, trace) { |
||||||
|
throw ApiException.withInner( |
||||||
|
HttpStatus.badRequest, |
||||||
|
'Exception occurred: $method $path', |
||||||
|
error, |
||||||
|
trace, |
||||||
|
); |
||||||
|
} |
||||||
|
|
||||||
|
throw ApiException( |
||||||
|
HttpStatus.badRequest, |
||||||
|
'Invalid HTTP operation: $method $path', |
||||||
|
); |
||||||
|
} |
||||||
|
|
||||||
|
Future<dynamic> deserializeAsync( |
||||||
|
String json, |
||||||
|
String targetType, { |
||||||
|
bool growable = false, |
||||||
|
}) async => |
||||||
|
// ignore: deprecated_member_use_from_same_package |
||||||
|
deserialize(json, targetType, growable: growable); |
||||||
|
|
||||||
|
@Deprecated('Scheduled for removal in OpenAPI Generator 6.x. Use deserializeAsync() instead.') |
||||||
|
dynamic deserialize( |
||||||
|
String json, |
||||||
|
String targetType, { |
||||||
|
bool growable = false, |
||||||
|
}) { |
||||||
|
// Remove all spaces. Necessary for regular expressions as well. |
||||||
|
targetType = targetType.replaceAll(' ', ''); // ignore: parameter_assignments |
||||||
|
|
||||||
|
// If the expected target type is String, nothing to do... |
||||||
|
return targetType == 'String' ? json : _deserialize(jsonDecode(json), targetType, growable: growable); |
||||||
|
} |
||||||
|
|
||||||
|
// ignore: deprecated_member_use_from_same_package |
||||||
|
Future<String> serializeAsync(Object? value) async => serialize(value); |
||||||
|
|
||||||
|
@Deprecated('Scheduled for removal in OpenAPI Generator 6.x. Use serializeAsync() instead.') |
||||||
|
String serialize(Object? value) => value == null ? '' : json.encode(value); |
||||||
|
|
||||||
|
/// Update query and header parameters based on authentication settings. |
||||||
|
void _updateParamsForAuth( |
||||||
|
List<QueryParam> queryParams, |
||||||
|
Map<String, String> headerParams, |
||||||
|
) { |
||||||
|
if (authentication != null) { |
||||||
|
authentication!.applyToParams(queryParams, headerParams); |
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
static dynamic _deserialize(dynamic value, String targetType, {bool growable = false}) { |
||||||
|
try { |
||||||
|
switch (targetType) { |
||||||
|
case 'String': |
||||||
|
return value is String ? value : value.toString(); |
||||||
|
case 'int': |
||||||
|
return value is int ? value : int.parse('$value'); |
||||||
|
case 'double': |
||||||
|
return value is double ? value : double.parse('$value'); |
||||||
|
case 'bool': |
||||||
|
if (value is bool) { |
||||||
|
return value; |
||||||
|
} |
||||||
|
final valueString = '$value'.toLowerCase(); |
||||||
|
return valueString == 'true' || valueString == '1'; |
||||||
|
case 'AdminNotification': |
||||||
|
return AdminNotification.fromJson(value); |
||||||
|
case 'EmptyResponse': |
||||||
|
return EmptyResponse.fromJson(value); |
||||||
|
case 'EmptyResponseOcs': |
||||||
|
return EmptyResponseOcs.fromJson(value); |
||||||
|
case 'GetNotificationResponse': |
||||||
|
return GetNotificationResponse.fromJson(value); |
||||||
|
case 'GetNotificationResponseOcs': |
||||||
|
return GetNotificationResponseOcs.fromJson(value); |
||||||
|
case 'ListNotificationsResponse': |
||||||
|
return ListNotificationsResponse.fromJson(value); |
||||||
|
case 'ListNotificationsResponseOcs': |
||||||
|
return ListNotificationsResponseOcs.fromJson(value); |
||||||
|
case 'Notification': |
||||||
|
return Notification.fromJson(value); |
||||||
|
case 'PushNotificationDecryptedSubject': |
||||||
|
return PushNotificationDecryptedSubject.fromJson(value); |
||||||
|
case 'PushServerDevice': |
||||||
|
return PushServerDevice.fromJson(value); |
||||||
|
case 'PushServerRegistrationResponse': |
||||||
|
return PushServerRegistrationResponse.fromJson(value); |
||||||
|
case 'PushServerRegistrationResponseOcs': |
||||||
|
return PushServerRegistrationResponseOcs.fromJson(value); |
||||||
|
case 'PushServerSubscription': |
||||||
|
return PushServerSubscription.fromJson(value); |
||||||
|
default: |
||||||
|
dynamic match; |
||||||
|
if (value is List && (match = apiRegList.firstMatch(targetType)?.group(1)) != null) { |
||||||
|
return value |
||||||
|
.map<dynamic>((dynamic v) => _deserialize( |
||||||
|
v, |
||||||
|
match, |
||||||
|
growable: growable, |
||||||
|
)) |
||||||
|
.toList(growable: growable); |
||||||
|
} |
||||||
|
if (value is Set && (match = apiRegSet.firstMatch(targetType)?.group(1)) != null) { |
||||||
|
return value |
||||||
|
.map<dynamic>((dynamic v) => _deserialize( |
||||||
|
v, |
||||||
|
match, |
||||||
|
growable: growable, |
||||||
|
)) |
||||||
|
.toSet(); |
||||||
|
} |
||||||
|
if (value is Map && (match = apiRegMap.firstMatch(targetType)?.group(1)) != null) { |
||||||
|
return Map<String, dynamic>.fromIterables( |
||||||
|
value.keys.cast<String>(), |
||||||
|
value.values.map<dynamic>((dynamic v) => _deserialize( |
||||||
|
v, |
||||||
|
match, |
||||||
|
growable: growable, |
||||||
|
)), |
||||||
|
); |
||||||
|
} |
||||||
|
} |
||||||
|
} on Exception catch (error, trace) { |
||||||
|
throw ApiException.withInner( |
||||||
|
HttpStatus.internalServerError, |
||||||
|
'Exception during deserialization.', |
||||||
|
error, |
||||||
|
trace, |
||||||
|
); |
||||||
|
} |
||||||
|
throw ApiException( |
||||||
|
HttpStatus.internalServerError, |
||||||
|
'Could not find a suitable class for deserialization', |
||||||
|
); |
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
/// Primarily intended for use in an isolate. |
||||||
|
class DeserializationMessage { |
||||||
|
const DeserializationMessage({ |
||||||
|
required this.json, |
||||||
|
required this.targetType, |
||||||
|
this.growable = false, |
||||||
|
}); |
||||||
|
|
||||||
|
/// The JSON value to deserialize. |
||||||
|
final String json; |
||||||
|
|
||||||
|
/// Target type to deserialize to. |
||||||
|
final String targetType; |
||||||
|
|
||||||
|
/// Whether to make deserialized lists or maps growable. |
||||||
|
final bool growable; |
||||||
|
} |
||||||
|
|
||||||
|
/// Primarily intended for use in an isolate. |
||||||
|
Future<dynamic> deserializeAsync(DeserializationMessage message) async { |
||||||
|
// Remove all spaces. Necessary for regular expressions as well. |
||||||
|
final targetType = message.targetType.replaceAll(' ', ''); |
||||||
|
|
||||||
|
// If the expected target type is String, nothing to do... |
||||||
|
return targetType == 'String' |
||||||
|
? message.json |
||||||
|
: ApiClient._deserialize( |
||||||
|
jsonDecode(message.json), |
||||||
|
targetType, |
||||||
|
growable: message.growable, |
||||||
|
); |
||||||
|
} |
||||||
|
|
||||||
|
/// Primarily intended for use in an isolate. |
||||||
|
Future<String> serializeAsync(Object? value) async => value == null ? '' : json.encode(value); |
@ -0,0 +1,139 @@ |
|||||||
|
// |
||||||
|
// AUTO-GENERATED FILE, DO NOT MODIFY! |
||||||
|
// |
||||||
|
// @dart=2.12 |
||||||
|
|
||||||
|
// ignore_for_file: unused_element, unused_import |
||||||
|
// ignore_for_file: always_put_required_named_parameters_first |
||||||
|
// ignore_for_file: constant_identifier_names |
||||||
|
// ignore_for_file: lines_longer_than_80_chars |
||||||
|
|
||||||
|
part of openapi.api; |
||||||
|
|
||||||
|
class AdminNotification { |
||||||
|
/// Returns a new [AdminNotification] instance. |
||||||
|
AdminNotification({ |
||||||
|
this.shortMessage, |
||||||
|
this.longMessage, |
||||||
|
}); |
||||||
|
|
||||||
|
/// |
||||||
|
/// Please note: This property should have been non-nullable! Since the specification file |
||||||
|
/// does not include a default value (using the "default:" property), however, the generated |
||||||
|
/// source code must fall back to having a nullable type. |
||||||
|
/// Consider adding a "default:" property in the specification file to hide this note. |
||||||
|
/// |
||||||
|
String? shortMessage; |
||||||
|
|
||||||
|
/// |
||||||
|
/// Please note: This property should have been non-nullable! Since the specification file |
||||||
|
/// does not include a default value (using the "default:" property), however, the generated |
||||||
|
/// source code must fall back to having a nullable type. |
||||||
|
/// Consider adding a "default:" property in the specification file to hide this note. |
||||||
|
/// |
||||||
|
String? longMessage; |
||||||
|
|
||||||
|
@override |
||||||
|
bool operator ==(Object other) => |
||||||
|
identical(this, other) || |
||||||
|
other is AdminNotification && other.shortMessage == shortMessage && other.longMessage == longMessage; |
||||||
|
|
||||||
|
@override |
||||||
|
int get hashCode => |
||||||
|
// ignore: unnecessary_parenthesis |
||||||
|
(shortMessage == null ? 0 : shortMessage!.hashCode) + (longMessage == null ? 0 : longMessage!.hashCode); |
||||||
|
|
||||||
|
@override |
||||||
|
String toString() => 'AdminNotification[shortMessage=$shortMessage, longMessage=$longMessage]'; |
||||||
|
|
||||||
|
Map<String, dynamic> toJson() { |
||||||
|
final _json = <String, dynamic>{}; |
||||||
|
if (shortMessage != null) { |
||||||
|
_json[r'shortMessage'] = shortMessage; |
||||||
|
} |
||||||
|
if (longMessage != null) { |
||||||
|
_json[r'longMessage'] = longMessage; |
||||||
|
} |
||||||
|
return _json; |
||||||
|
} |
||||||
|
|
||||||
|
/// Returns a new [AdminNotification] instance and imports its values from |
||||||
|
/// [value] if it's a [Map], null otherwise. |
||||||
|
// ignore: prefer_constructors_over_static_methods |
||||||
|
static AdminNotification? fromJson(dynamic value) { |
||||||
|
if (value is Map) { |
||||||
|
final json = value.cast<String, dynamic>(); |
||||||
|
|
||||||
|
// Ensure that the map contains the required keys. |
||||||
|
// Note 1: the values aren't checked for validity beyond being non-null. |
||||||
|
// Note 2: this code is stripped in release mode! |
||||||
|
assert(() { |
||||||
|
requiredKeys.forEach((key) { |
||||||
|
assert(json.containsKey(key), 'Required key "AdminNotification[$key]" is missing from JSON.'); |
||||||
|
assert(json[key] != null, 'Required key "AdminNotification[$key]" has a null value in JSON.'); |
||||||
|
}); |
||||||
|
return true; |
||||||
|
}()); |
||||||
|
|
||||||
|
return AdminNotification( |
||||||
|
shortMessage: mapValueOfType<String>(json, r'shortMessage'), |
||||||
|
longMessage: mapValueOfType<String>(json, r'longMessage'), |
||||||
|
); |
||||||
|
} |
||||||
|
return null; |
||||||
|
} |
||||||
|
|
||||||
|
static List<AdminNotification>? listFromJson( |
||||||
|
dynamic json, { |
||||||
|
bool growable = false, |
||||||
|
}) { |
||||||
|
final result = <AdminNotification>[]; |
||||||
|
if (json is List && json.isNotEmpty) { |
||||||
|
for (final row in json) { |
||||||
|
final value = AdminNotification.fromJson(row); |
||||||
|
if (value != null) { |
||||||
|
result.add(value); |
||||||
|
} |
||||||
|
} |
||||||
|
} |
||||||
|
return result.toList(growable: growable); |
||||||
|
} |
||||||
|
|
||||||
|
static Map<String, AdminNotification> mapFromJson(dynamic json) { |
||||||
|
final map = <String, AdminNotification>{}; |
||||||
|
if (json is Map && json.isNotEmpty) { |
||||||
|
json = json.cast<String, dynamic>(); // ignore: parameter_assignments |
||||||
|
for (final entry in json.entries) { |
||||||
|
final value = AdminNotification.fromJson(entry.value); |
||||||
|
if (value != null) { |
||||||
|
map[entry.key] = value; |
||||||
|
} |
||||||
|
} |
||||||
|
} |
||||||
|
return map; |
||||||
|
} |
||||||
|
|
||||||
|
// maps a json object with a list of AdminNotification-objects as value to a dart map |
||||||
|
static Map<String, List<AdminNotification>> mapListFromJson( |
||||||
|
dynamic json, { |
||||||
|
bool growable = false, |
||||||
|
}) { |
||||||
|
final map = <String, List<AdminNotification>>{}; |
||||||
|
if (json is Map && json.isNotEmpty) { |
||||||
|
json = json.cast<String, dynamic>(); // ignore: parameter_assignments |
||||||
|
for (final entry in json.entries) { |
||||||
|
final value = AdminNotification.listFromJson( |
||||||
|
entry.value, |
||||||
|
growable: growable, |
||||||
|
); |
||||||
|
if (value != null) { |
||||||
|
map[entry.key] = value; |
||||||
|
} |
||||||
|
} |
||||||
|
} |
||||||
|
return map; |
||||||
|
} |
||||||
|
|
||||||
|
/// The list of required keys that must be present in a JSON. |
||||||
|
static const requiredKeys = <String>{}; |
||||||
|
} |
@ -0,0 +1,124 @@ |
|||||||
|
// |
||||||
|
// AUTO-GENERATED FILE, DO NOT MODIFY! |
||||||
|
// |
||||||
|
// @dart=2.12 |
||||||
|
|
||||||
|
// ignore_for_file: unused_element, unused_import |
||||||
|
// ignore_for_file: always_put_required_named_parameters_first |
||||||
|
// ignore_for_file: constant_identifier_names |
||||||
|
// ignore_for_file: lines_longer_than_80_chars |
||||||
|
|
||||||
|
part of openapi.api; |
||||||
|
|
||||||
|
class EmptyResponse { |
||||||
|
/// Returns a new [EmptyResponse] instance. |
||||||
|
EmptyResponse({ |
||||||
|
this.ocs, |
||||||
|
}); |
||||||
|
|
||||||
|
/// |
||||||
|
/// Please note: This property should have been non-nullable! Since the specification file |
||||||
|
/// does not include a default value (using the "default:" property), however, the generated |
||||||
|
/// source code must fall back to having a nullable type. |
||||||
|
/// Consider adding a "default:" property in the specification file to hide this note. |
||||||
|
/// |
||||||
|
EmptyResponseOcs? ocs; |
||||||
|
|
||||||
|
@override |
||||||
|
bool operator ==(Object other) => identical(this, other) || other is EmptyResponse && other.ocs == ocs; |
||||||
|
|
||||||
|
@override |
||||||
|
int get hashCode => |
||||||
|
// ignore: unnecessary_parenthesis |
||||||
|
(ocs == null ? 0 : ocs!.hashCode); |
||||||
|
|
||||||
|
@override |
||||||
|
String toString() => 'EmptyResponse[ocs=$ocs]'; |
||||||
|
|
||||||
|
Map<String, dynamic> toJson() { |
||||||
|
final _json = <String, dynamic>{}; |
||||||
|
if (ocs != null) { |
||||||
|
_json[r'ocs'] = ocs; |
||||||
|
} |
||||||
|
return _json; |
||||||
|
} |
||||||
|
|
||||||
|
/// Returns a new [EmptyResponse] instance and imports its values from |
||||||
|
/// [value] if it's a [Map], null otherwise. |
||||||
|
// ignore: prefer_constructors_over_static_methods |
||||||
|
static EmptyResponse? fromJson(dynamic value) { |
||||||
|
if (value is Map) { |
||||||
|
final json = value.cast<String, dynamic>(); |
||||||
|
|
||||||
|
// Ensure that the map contains the required keys. |
||||||
|
// Note 1: the values aren't checked for validity beyond being non-null. |
||||||
|
// Note 2: this code is stripped in release mode! |
||||||
|
assert(() { |
||||||
|
requiredKeys.forEach((key) { |
||||||
|
assert(json.containsKey(key), 'Required key "EmptyResponse[$key]" is missing from JSON.'); |
||||||
|
assert(json[key] != null, 'Required key "EmptyResponse[$key]" has a null value in JSON.'); |
||||||
|
}); |
||||||
|
return true; |
||||||
|
}()); |
||||||
|
|
||||||
|
return EmptyResponse( |
||||||
|
ocs: EmptyResponseOcs.fromJson(json[r'ocs']), |
||||||
|
); |
||||||
|
} |
||||||
|
return null; |
||||||
|
} |
||||||
|
|
||||||
|
static List<EmptyResponse>? listFromJson( |
||||||
|
dynamic json, { |
||||||
|
bool growable = false, |
||||||
|
}) { |
||||||
|
final result = <EmptyResponse>[]; |
||||||
|
if (json is List && json.isNotEmpty) { |
||||||
|
for (final row in json) { |
||||||
|
final value = EmptyResponse.fromJson(row); |
||||||
|
if (value != null) { |
||||||
|
result.add(value); |
||||||
|
} |
||||||
|
} |
||||||
|
} |
||||||
|
return result.toList(growable: growable); |
||||||
|
} |
||||||
|
|
||||||
|
static Map<String, EmptyResponse> mapFromJson(dynamic json) { |
||||||
|
final map = <String, EmptyResponse>{}; |
||||||
|
if (json is Map && json.isNotEmpty) { |
||||||
|
json = json.cast<String, dynamic>(); // ignore: parameter_assignments |
||||||
|
for (final entry in json.entries) { |
||||||
|
final value = EmptyResponse.fromJson(entry.value); |
||||||
|
if (value != null) { |
||||||
|
map[entry.key] = value; |
||||||
|
} |
||||||
|
} |
||||||
|
} |
||||||
|
return map; |
||||||
|
} |
||||||
|
|
||||||
|
// maps a json object with a list of EmptyResponse-objects as value to a dart map |
||||||
|
static Map<String, List<EmptyResponse>> mapListFromJson( |
||||||
|
dynamic json, { |
||||||
|
bool growable = false, |
||||||
|
}) { |
||||||
|
final map = <String, List<EmptyResponse>>{}; |
||||||
|
if (json is Map && json.isNotEmpty) { |
||||||
|
json = json.cast<String, dynamic>(); // ignore: parameter_assignments |
||||||
|
for (final entry in json.entries) { |
||||||
|
final value = EmptyResponse.listFromJson( |
||||||
|
entry.value, |
||||||
|
growable: growable, |
||||||
|
); |
||||||
|
if (value != null) { |
||||||
|
map[entry.key] = value; |
||||||
|
} |
||||||
|
} |
||||||
|
} |
||||||
|
return map; |
||||||
|
} |
||||||
|
|
||||||
|
/// The list of required keys that must be present in a JSON. |
||||||
|
static const requiredKeys = <String>{}; |
||||||
|
} |
@ -0,0 +1,125 @@ |
|||||||
|
// |
||||||
|
// AUTO-GENERATED FILE, DO NOT MODIFY! |
||||||
|
// |
||||||
|
// @dart=2.12 |
||||||
|
|
||||||
|
// ignore_for_file: unused_element, unused_import |
||||||
|
// ignore_for_file: always_put_required_named_parameters_first |
||||||
|
// ignore_for_file: constant_identifier_names |
||||||
|
// ignore_for_file: lines_longer_than_80_chars |
||||||
|
|
||||||
|
part of openapi.api; |
||||||
|
|
||||||
|
class EmptyResponseOcs { |
||||||
|
/// Returns a new [EmptyResponseOcs] instance. |
||||||
|
EmptyResponseOcs({ |
||||||
|
this.meta, |
||||||
|
this.data = const [], |
||||||
|
}); |
||||||
|
|
||||||
|
/// Stub |
||||||
|
Object? meta; |
||||||
|
|
||||||
|
List<String> data; |
||||||
|
|
||||||
|
@override |
||||||
|
bool operator ==(Object other) => |
||||||
|
identical(this, other) || other is EmptyResponseOcs && other.meta == meta && other.data == data; |
||||||
|
|
||||||
|
@override |
||||||
|
int get hashCode => |
||||||
|
// ignore: unnecessary_parenthesis |
||||||
|
(meta == null ? 0 : meta!.hashCode) + (data.hashCode); |
||||||
|
|
||||||
|
@override |
||||||
|
String toString() => 'EmptyResponseOcs[meta=$meta, data=$data]'; |
||||||
|
|
||||||
|
Map<String, dynamic> toJson() { |
||||||
|
final _json = <String, dynamic>{}; |
||||||
|
if (meta != null) { |
||||||
|
_json[r'meta'] = meta; |
||||||
|
} |
||||||
|
_json[r'data'] = data; |
||||||
|
return _json; |
||||||
|
} |
||||||
|
|
||||||
|
/// Returns a new [EmptyResponseOcs] instance and imports its values from |
||||||
|
/// [value] if it's a [Map], null otherwise. |
||||||
|
// ignore: prefer_constructors_over_static_methods |
||||||
|
static EmptyResponseOcs? fromJson(dynamic value) { |
||||||
|
if (value is Map) { |
||||||
|
final json = value.cast<String, dynamic>(); |
||||||
|
|
||||||
|
// Ensure that the map contains the required keys. |
||||||
|
// Note 1: the values aren't checked for validity beyond being non-null. |
||||||
|
// Note 2: this code is stripped in release mode! |
||||||
|
assert(() { |
||||||
|
requiredKeys.forEach((key) { |
||||||
|
assert(json.containsKey(key), 'Required key "EmptyResponseOcs[$key]" is missing from JSON.'); |
||||||
|
assert(json[key] != null, 'Required key "EmptyResponseOcs[$key]" has a null value in JSON.'); |
||||||
|
}); |
||||||
|
return true; |
||||||
|
}()); |
||||||
|
|
||||||
|
return EmptyResponseOcs( |
||||||
|
meta: mapValueOfType<Object>(json, r'meta'), |
||||||
|
data: json[r'data'] is List ? (json[r'data'] as List).cast<String>() : const [], |
||||||
|
); |
||||||
|
} |
||||||
|
return null; |
||||||
|
} |
||||||
|
|
||||||
|
static List<EmptyResponseOcs>? listFromJson( |
||||||
|
dynamic json, { |
||||||
|
bool growable = false, |
||||||
|
}) { |
||||||
|
final result = <EmptyResponseOcs>[]; |
||||||
|
if (json is List && json.isNotEmpty) { |
||||||
|
for (final row in json) { |
||||||
|
final value = EmptyResponseOcs.fromJson(row); |
||||||
|
if (value != null) { |
||||||
|
result.add(value); |
||||||
|
} |
||||||
|
} |
||||||
|
} |
||||||
|
return result.toList(growable: growable); |
||||||
|
} |
||||||
|
|
||||||
|
static Map<String, EmptyResponseOcs> mapFromJson(dynamic json) { |
||||||
|
final map = <String, EmptyResponseOcs>{}; |
||||||
|
if (json is Map && json.isNotEmpty) { |
||||||
|
json = json.cast<String, dynamic>(); // ignore: parameter_assignments |
||||||
|
for (final entry in json.entries) { |
||||||
|
final value = EmptyResponseOcs.fromJson(entry.value); |
||||||
|
if (value != null) { |
||||||
|
map[entry.key] = value; |
||||||
|
} |
||||||
|
} |
||||||
|
} |
||||||
|
return map; |
||||||
|
} |
||||||
|
|
||||||
|
// maps a json object with a list of EmptyResponseOcs-objects as value to a dart map |
||||||
|
static Map<String, List<EmptyResponseOcs>> mapListFromJson( |
||||||
|
dynamic json, { |
||||||
|
bool growable = false, |
||||||
|
}) { |
||||||
|
final map = <String, List<EmptyResponseOcs>>{}; |
||||||
|
if (json is Map && json.isNotEmpty) { |
||||||
|
json = json.cast<String, dynamic>(); // ignore: parameter_assignments |
||||||
|
for (final entry in json.entries) { |
||||||
|
final value = EmptyResponseOcs.listFromJson( |
||||||
|
entry.value, |
||||||
|
growable: growable, |
||||||
|
); |
||||||
|
if (value != null) { |
||||||
|
map[entry.key] = value; |
||||||
|
} |
||||||
|
} |
||||||
|
} |
||||||
|
return map; |
||||||
|
} |
||||||
|
|
||||||
|
/// The list of required keys that must be present in a JSON. |
||||||
|
static const requiredKeys = <String>{}; |
||||||
|
} |
@ -0,0 +1,124 @@ |
|||||||
|
// |
||||||
|
// AUTO-GENERATED FILE, DO NOT MODIFY! |
||||||
|
// |
||||||
|
// @dart=2.12 |
||||||
|
|
||||||
|
// ignore_for_file: unused_element, unused_import |
||||||
|
// ignore_for_file: always_put_required_named_parameters_first |
||||||
|
// ignore_for_file: constant_identifier_names |
||||||
|
// ignore_for_file: lines_longer_than_80_chars |
||||||
|
|
||||||
|
part of openapi.api; |
||||||
|
|
||||||
|
class GetNotificationResponse { |
||||||
|
/// Returns a new [GetNotificationResponse] instance. |
||||||
|
GetNotificationResponse({ |
||||||
|
this.ocs, |
||||||
|
}); |
||||||
|
|
||||||
|
/// |
||||||
|
/// Please note: This property should have been non-nullable! Since the specification file |
||||||
|
/// does not include a default value (using the "default:" property), however, the generated |
||||||
|
/// source code must fall back to having a nullable type. |
||||||
|
/// Consider adding a "default:" property in the specification file to hide this note. |
||||||
|
/// |
||||||
|
GetNotificationResponseOcs? ocs; |
||||||
|
|
||||||
|
@override |
||||||
|
bool operator ==(Object other) => identical(this, other) || other is GetNotificationResponse && other.ocs == ocs; |
||||||
|
|
||||||
|
@override |
||||||
|
int get hashCode => |
||||||
|
// ignore: unnecessary_parenthesis |
||||||
|
(ocs == null ? 0 : ocs!.hashCode); |
||||||
|
|
||||||
|
@override |
||||||
|
String toString() => 'GetNotificationResponse[ocs=$ocs]'; |
||||||
|
|
||||||
|
Map<String, dynamic> toJson() { |
||||||
|
final _json = <String, dynamic>{}; |
||||||
|
if (ocs != null) { |
||||||
|
_json[r'ocs'] = ocs; |
||||||
|
} |
||||||
|
return _json; |
||||||
|
} |
||||||
|
|
||||||
|
/// Returns a new [GetNotificationResponse] instance and imports its values from |
||||||
|
/// [value] if it's a [Map], null otherwise. |
||||||
|
// ignore: prefer_constructors_over_static_methods |
||||||
|
static GetNotificationResponse? fromJson(dynamic value) { |
||||||
|
if (value is Map) { |
||||||
|
final json = value.cast<String, dynamic>(); |
||||||
|
|
||||||
|
// Ensure that the map contains the required keys. |
||||||
|
// Note 1: the values aren't checked for validity beyond being non-null. |
||||||
|
// Note 2: this code is stripped in release mode! |
||||||
|
assert(() { |
||||||
|
requiredKeys.forEach((key) { |
||||||
|
assert(json.containsKey(key), 'Required key "GetNotificationResponse[$key]" is missing from JSON.'); |
||||||
|
assert(json[key] != null, 'Required key "GetNotificationResponse[$key]" has a null value in JSON.'); |
||||||
|
}); |
||||||
|
return true; |
||||||
|
}()); |
||||||
|
|
||||||
|
return GetNotificationResponse( |
||||||
|
ocs: GetNotificationResponseOcs.fromJson(json[r'ocs']), |
||||||
|
); |
||||||
|
} |
||||||
|
return null; |
||||||
|
} |
||||||
|
|
||||||
|
static List<GetNotificationResponse>? listFromJson( |
||||||
|
dynamic json, { |
||||||
|
bool growable = false, |
||||||
|
}) { |
||||||
|
final result = <GetNotificationResponse>[]; |
||||||
|
if (json is List && json.isNotEmpty) { |
||||||
|
for (final row in json) { |
||||||
|
final value = GetNotificationResponse.fromJson(row); |
||||||
|
if (value != null) { |
||||||
|
result.add(value); |
||||||
|
} |
||||||
|
} |
||||||
|
} |
||||||
|
return result.toList(growable: growable); |
||||||
|
} |
||||||
|
|
||||||
|
static Map<String, GetNotificationResponse> mapFromJson(dynamic json) { |
||||||
|
final map = <String, GetNotificationResponse>{}; |
||||||
|
if (json is Map && json.isNotEmpty) { |
||||||
|
json = json.cast<String, dynamic>(); // ignore: parameter_assignments |
||||||
|
for (final entry in json.entries) { |
||||||
|
final value = GetNotificationResponse.fromJson(entry.value); |
||||||
|
if (value != null) { |
||||||
|
map[entry.key] = value; |
||||||
|
} |
||||||
|
} |
||||||
|
} |
||||||
|
return map; |
||||||
|
} |
||||||
|
|
||||||
|
// maps a json object with a list of GetNotificationResponse-objects as value to a dart map |
||||||
|
static Map<String, List<GetNotificationResponse>> mapListFromJson( |
||||||
|
dynamic json, { |
||||||
|
bool growable = false, |
||||||
|
}) { |
||||||
|
final map = <String, List<GetNotificationResponse>>{}; |
||||||
|
if (json is Map && json.isNotEmpty) { |
||||||
|
json = json.cast<String, dynamic>(); // ignore: parameter_assignments |
||||||
|
for (final entry in json.entries) { |
||||||
|
final value = GetNotificationResponse.listFromJson( |
||||||
|
entry.value, |
||||||
|
growable: growable, |
||||||
|
); |
||||||
|
if (value != null) { |
||||||
|
map[entry.key] = value; |
||||||
|
} |
||||||
|
} |
||||||
|
} |
||||||
|
return map; |
||||||
|
} |
||||||
|
|
||||||
|
/// The list of required keys that must be present in a JSON. |
||||||
|
static const requiredKeys = <String>{}; |
||||||
|
} |
@ -0,0 +1,133 @@ |
|||||||
|
// |
||||||
|
// AUTO-GENERATED FILE, DO NOT MODIFY! |
||||||
|
// |
||||||
|
// @dart=2.12 |
||||||
|
|
||||||
|
// ignore_for_file: unused_element, unused_import |
||||||
|
// ignore_for_file: always_put_required_named_parameters_first |
||||||
|
// ignore_for_file: constant_identifier_names |
||||||
|
// ignore_for_file: lines_longer_than_80_chars |
||||||
|
|
||||||
|
part of openapi.api; |
||||||
|
|
||||||
|
class GetNotificationResponseOcs { |
||||||
|
/// Returns a new [GetNotificationResponseOcs] instance. |
||||||
|
GetNotificationResponseOcs({ |
||||||
|
this.meta, |
||||||
|
this.data, |
||||||
|
}); |
||||||
|
|
||||||
|
/// Stub |
||||||
|
Object? meta; |
||||||
|
|
||||||
|
/// |
||||||
|
/// Please note: This property should have been non-nullable! Since the specification file |
||||||
|
/// does not include a default value (using the "default:" property), however, the generated |
||||||
|
/// source code must fall back to having a nullable type. |
||||||
|
/// Consider adding a "default:" property in the specification file to hide this note. |
||||||
|
/// |
||||||
|
Notification? data; |
||||||
|
|
||||||
|
@override |
||||||
|
bool operator ==(Object other) => |
||||||
|
identical(this, other) || other is GetNotificationResponseOcs && other.meta == meta && other.data == data; |
||||||
|
|
||||||
|
@override |
||||||
|
int get hashCode => |
||||||
|
// ignore: unnecessary_parenthesis |
||||||
|
(meta == null ? 0 : meta!.hashCode) + (data == null ? 0 : data!.hashCode); |
||||||
|
|
||||||
|
@override |
||||||
|
String toString() => 'GetNotificationResponseOcs[meta=$meta, data=$data]'; |
||||||
|
|
||||||
|
Map<String, dynamic> toJson() { |
||||||
|
final _json = <String, dynamic>{}; |
||||||
|
if (meta != null) { |
||||||
|
_json[r'meta'] = meta; |
||||||
|
} |
||||||
|
if (data != null) { |
||||||
|
_json[r'data'] = data; |
||||||
|
} |
||||||
|
return _json; |
||||||
|
} |
||||||
|
|
||||||
|
/// Returns a new [GetNotificationResponseOcs] instance and imports its values from |
||||||
|
/// [value] if it's a [Map], null otherwise. |
||||||
|
// ignore: prefer_constructors_over_static_methods |
||||||
|
static GetNotificationResponseOcs? fromJson(dynamic value) { |
||||||
|
if (value is Map) { |
||||||
|
final json = value.cast<String, dynamic>(); |
||||||
|
|
||||||
|
// Ensure that the map contains the required keys. |
||||||
|
// Note 1: the values aren't checked for validity beyond being non-null. |
||||||
|
// Note 2: this code is stripped in release mode! |
||||||
|
assert(() { |
||||||
|
requiredKeys.forEach((key) { |
||||||
|
assert(json.containsKey(key), 'Required key "GetNotificationResponseOcs[$key]" is missing from JSON.'); |
||||||
|
assert(json[key] != null, 'Required key "GetNotificationResponseOcs[$key]" has a null value in JSON.'); |
||||||
|
}); |
||||||
|
return true; |
||||||
|
}()); |
||||||
|
|
||||||
|
return GetNotificationResponseOcs( |
||||||
|
meta: mapValueOfType<Object>(json, r'meta'), |
||||||
|
data: Notification.fromJson(json[r'data']), |
||||||
|
); |
||||||
|
} |
||||||
|
return null; |
||||||
|
} |
||||||
|
|
||||||
|
static List<GetNotificationResponseOcs>? listFromJson( |
||||||
|
dynamic json, { |
||||||
|
bool growable = false, |
||||||
|
}) { |
||||||
|
final result = <GetNotificationResponseOcs>[]; |
||||||
|
if (json is List && json.isNotEmpty) { |
||||||
|
for (final row in json) { |
||||||
|
final value = GetNotificationResponseOcs.fromJson(row); |
||||||
|
if (value != null) { |
||||||
|
result.add(value); |
||||||
|
} |
||||||
|
} |
||||||
|
} |
||||||
|
return result.toList(growable: growable); |
||||||
|
} |
||||||
|
|
||||||
|
static Map<String, GetNotificationResponseOcs> mapFromJson(dynamic json) { |
||||||
|
final map = <String, GetNotificationResponseOcs>{}; |
||||||
|
if (json is Map && json.isNotEmpty) { |
||||||
|
json = json.cast<String, dynamic>(); // ignore: parameter_assignments |
||||||
|
for (final entry in json.entries) { |
||||||
|
final value = GetNotificationResponseOcs.fromJson(entry.value); |
||||||
|
if (value != null) { |
||||||
|
map[entry.key] = value; |
||||||
|
} |
||||||
|
} |
||||||
|
} |
||||||
|
return map; |
||||||
|
} |
||||||
|
|
||||||
|
// maps a json object with a list of GetNotificationResponseOcs-objects as value to a dart map |
||||||
|
static Map<String, List<GetNotificationResponseOcs>> mapListFromJson( |
||||||
|
dynamic json, { |
||||||
|
bool growable = false, |
||||||
|
}) { |
||||||
|
final map = <String, List<GetNotificationResponseOcs>>{}; |
||||||
|
if (json is Map && json.isNotEmpty) { |
||||||
|
json = json.cast<String, dynamic>(); // ignore: parameter_assignments |
||||||
|
for (final entry in json.entries) { |
||||||
|
final value = GetNotificationResponseOcs.listFromJson( |
||||||
|
entry.value, |
||||||
|
growable: growable, |
||||||
|
); |
||||||
|
if (value != null) { |
||||||
|
map[entry.key] = value; |
||||||
|
} |
||||||
|
} |
||||||
|
} |
||||||
|
return map; |
||||||
|
} |
||||||
|
|
||||||
|
/// The list of required keys that must be present in a JSON. |
||||||
|
static const requiredKeys = <String>{}; |
||||||
|
} |
@ -0,0 +1,124 @@ |
|||||||
|
// |
||||||
|
// AUTO-GENERATED FILE, DO NOT MODIFY! |
||||||
|
// |
||||||
|
// @dart=2.12 |
||||||
|
|
||||||
|
// ignore_for_file: unused_element, unused_import |
||||||
|
// ignore_for_file: always_put_required_named_parameters_first |
||||||
|
// ignore_for_file: constant_identifier_names |
||||||
|
// ignore_for_file: lines_longer_than_80_chars |
||||||
|
|
||||||
|
part of openapi.api; |
||||||
|
|
||||||
|
class ListNotificationsResponse { |
||||||
|
/// Returns a new [ListNotificationsResponse] instance. |
||||||
|
ListNotificationsResponse({ |
||||||
|
this.ocs, |
||||||
|
}); |
||||||
|
|
||||||
|
/// |
||||||
|
/// Please note: This property should have been non-nullable! Since the specification file |
||||||
|
/// does not include a default value (using the "default:" property), however, the generated |
||||||
|
/// source code must fall back to having a nullable type. |
||||||
|
/// Consider adding a "default:" property in the specification file to hide this note. |
||||||
|
/// |
||||||
|
ListNotificationsResponseOcs? ocs; |
||||||
|
|
||||||
|
@override |
||||||
|
bool operator ==(Object other) => identical(this, other) || other is ListNotificationsResponse && other.ocs == ocs; |
||||||
|
|
||||||
|
@override |
||||||
|
int get hashCode => |
||||||
|
// ignore: unnecessary_parenthesis |
||||||
|
(ocs == null ? 0 : ocs!.hashCode); |
||||||
|
|
||||||
|
@override |
||||||
|
String toString() => 'ListNotificationsResponse[ocs=$ocs]'; |
||||||
|
|
||||||
|
Map<String, dynamic> toJson() { |
||||||
|
final _json = <String, dynamic>{}; |
||||||
|
if (ocs != null) { |
||||||
|
_json[r'ocs'] = ocs; |
||||||
|
} |
||||||
|
return _json; |
||||||
|
} |
||||||
|
|
||||||
|
/// Returns a new [ListNotificationsResponse] instance and imports its values from |
||||||
|
/// [value] if it's a [Map], null otherwise. |
||||||
|
// ignore: prefer_constructors_over_static_methods |
||||||
|
static ListNotificationsResponse? fromJson(dynamic value) { |
||||||
|
if (value is Map) { |
||||||
|
final json = value.cast<String, dynamic>(); |
||||||
|
|
||||||
|
// Ensure that the map contains the required keys. |
||||||
|
// Note 1: the values aren't checked for validity beyond being non-null. |
||||||
|
// Note 2: this code is stripped in release mode! |
||||||
|
assert(() { |
||||||
|
requiredKeys.forEach((key) { |
||||||
|
assert(json.containsKey(key), 'Required key "ListNotificationsResponse[$key]" is missing from JSON.'); |
||||||
|
assert(json[key] != null, 'Required key "ListNotificationsResponse[$key]" has a null value in JSON.'); |
||||||
|
}); |
||||||
|
return true; |
||||||
|
}()); |
||||||
|
|
||||||
|
return ListNotificationsResponse( |
||||||
|
ocs: ListNotificationsResponseOcs.fromJson(json[r'ocs']), |
||||||
|
); |
||||||
|
} |
||||||
|
return null; |
||||||
|
} |
||||||
|
|
||||||
|
static List<ListNotificationsResponse>? listFromJson( |
||||||
|
dynamic json, { |
||||||
|
bool growable = false, |
||||||
|
}) { |
||||||
|
final result = <ListNotificationsResponse>[]; |
||||||
|
if (json is List && json.isNotEmpty) { |
||||||
|
for (final row in json) { |
||||||
|
final value = ListNotificationsResponse.fromJson(row); |
||||||
|
if (value != null) { |
||||||
|
result.add(value); |
||||||
|
} |
||||||
|
} |
||||||
|
} |
||||||
|
return result.toList(growable: growable); |
||||||
|
} |
||||||
|
|
||||||
|
static Map<String, ListNotificationsResponse> mapFromJson(dynamic json) { |
||||||
|
final map = <String, ListNotificationsResponse>{}; |
||||||
|
if (json is Map && json.isNotEmpty) { |
||||||
|
json = json.cast<String, dynamic>(); // ignore: parameter_assignments |
||||||
|
for (final entry in json.entries) { |
||||||
|
final value = ListNotificationsResponse.fromJson(entry.value); |
||||||
|
if (value != null) { |
||||||
|
map[entry.key] = value; |
||||||
|
} |
||||||
|
} |
||||||
|
} |
||||||
|
return map; |
||||||
|
} |
||||||
|
|
||||||
|
// maps a json object with a list of ListNotificationsResponse-objects as value to a dart map |
||||||
|
static Map<String, List<ListNotificationsResponse>> mapListFromJson( |
||||||
|
dynamic json, { |
||||||
|
bool growable = false, |
||||||
|
}) { |
||||||
|
final map = <String, List<ListNotificationsResponse>>{}; |
||||||
|
if (json is Map && json.isNotEmpty) { |
||||||
|
json = json.cast<String, dynamic>(); // ignore: parameter_assignments |
||||||
|
for (final entry in json.entries) { |
||||||
|
final value = ListNotificationsResponse.listFromJson( |
||||||
|
entry.value, |
||||||
|
growable: growable, |
||||||
|
); |
||||||
|
if (value != null) { |
||||||
|
map[entry.key] = value; |
||||||
|
} |
||||||
|
} |
||||||
|
} |
||||||
|
return map; |
||||||
|
} |
||||||
|
|
||||||
|
/// The list of required keys that must be present in a JSON. |
||||||
|
static const requiredKeys = <String>{}; |
||||||
|
} |
@ -0,0 +1,125 @@ |
|||||||
|
// |
||||||
|
// AUTO-GENERATED FILE, DO NOT MODIFY! |
||||||
|
// |
||||||
|
// @dart=2.12 |
||||||
|
|
||||||
|
// ignore_for_file: unused_element, unused_import |
||||||
|
// ignore_for_file: always_put_required_named_parameters_first |
||||||
|
// ignore_for_file: constant_identifier_names |
||||||
|
// ignore_for_file: lines_longer_than_80_chars |
||||||
|
|
||||||
|
part of openapi.api; |
||||||
|
|
||||||
|
class ListNotificationsResponseOcs { |
||||||
|
/// Returns a new [ListNotificationsResponseOcs] instance. |
||||||
|
ListNotificationsResponseOcs({ |
||||||
|
this.meta, |
||||||
|
this.data = const [], |
||||||
|
}); |
||||||
|
|
||||||
|
/// Stub |
||||||
|
Object? meta; |
||||||
|
|
||||||
|
List<Notification> data; |
||||||
|
|
||||||
|
@override |
||||||
|
bool operator ==(Object other) => |
||||||
|
identical(this, other) || other is ListNotificationsResponseOcs && other.meta == meta && other.data == data; |
||||||
|
|
||||||
|
@override |
||||||
|
int get hashCode => |
||||||
|
// ignore: unnecessary_parenthesis |
||||||
|
(meta == null ? 0 : meta!.hashCode) + (data.hashCode); |
||||||
|
|
||||||
|
@override |
||||||
|
String toString() => 'ListNotificationsResponseOcs[meta=$meta, data=$data]'; |
||||||
|
|
||||||
|
Map<String, dynamic> toJson() { |
||||||
|
final _json = <String, dynamic>{}; |
||||||
|
if (meta != null) { |
||||||
|
_json[r'meta'] = meta; |
||||||
|
} |
||||||
|
_json[r'data'] = data; |
||||||
|
return _json; |
||||||
|
} |
||||||
|
|
||||||
|
/// Returns a new [ListNotificationsResponseOcs] instance and imports its values from |
||||||
|
/// [value] if it's a [Map], null otherwise. |
||||||
|
// ignore: prefer_constructors_over_static_methods |
||||||
|
static ListNotificationsResponseOcs? fromJson(dynamic value) { |
||||||
|
if (value is Map) { |
||||||
|
final json = value.cast<String, dynamic>(); |
||||||
|
|
||||||
|
// Ensure that the map contains the required keys. |
||||||
|
// Note 1: the values aren't checked for validity beyond being non-null. |
||||||
|
// Note 2: this code is stripped in release mode! |
||||||
|
assert(() { |
||||||
|
requiredKeys.forEach((key) { |
||||||
|
assert(json.containsKey(key), 'Required key "ListNotificationsResponseOcs[$key]" is missing from JSON.'); |
||||||
|
assert(json[key] != null, 'Required key "ListNotificationsResponseOcs[$key]" has a null value in JSON.'); |
||||||
|
}); |
||||||
|
return true; |
||||||
|
}()); |
||||||
|
|
||||||
|
return ListNotificationsResponseOcs( |
||||||
|
meta: mapValueOfType<Object>(json, r'meta'), |
||||||
|
data: Notification.listFromJson(json[r'data']) ?? const [], |
||||||
|
); |
||||||
|
} |
||||||
|
return null; |
||||||
|
} |
||||||
|
|
||||||
|
static List<ListNotificationsResponseOcs>? listFromJson( |
||||||
|
dynamic json, { |
||||||
|
bool growable = false, |
||||||
|
}) { |
||||||
|
final result = <ListNotificationsResponseOcs>[]; |
||||||
|
if (json is List && json.isNotEmpty) { |
||||||
|
for (final row in json) { |
||||||
|
final value = ListNotificationsResponseOcs.fromJson(row); |
||||||
|
if (value != null) { |
||||||
|
result.add(value); |
||||||
|
} |
||||||
|
} |
||||||
|
} |
||||||
|
return result.toList(growable: growable); |
||||||
|
} |
||||||
|
|
||||||
|
static Map<String, ListNotificationsResponseOcs> mapFromJson(dynamic json) { |
||||||
|
final map = <String, ListNotificationsResponseOcs>{}; |
||||||
|
if (json is Map && json.isNotEmpty) { |
||||||
|
json = json.cast<String, dynamic>(); // ignore: parameter_assignments |
||||||
|
for (final entry in json.entries) { |
||||||
|
final value = ListNotificationsResponseOcs.fromJson(entry.value); |
||||||
|
if (value != null) { |
||||||
|
map[entry.key] = value; |
||||||
|
} |
||||||
|
} |
||||||
|
} |
||||||
|
return map; |
||||||
|
} |
||||||
|
|
||||||
|
// maps a json object with a list of ListNotificationsResponseOcs-objects as value to a dart map |
||||||
|
static Map<String, List<ListNotificationsResponseOcs>> mapListFromJson( |
||||||
|
dynamic json, { |
||||||
|
bool growable = false, |
||||||
|
}) { |
||||||
|
final map = <String, List<ListNotificationsResponseOcs>>{}; |
||||||
|
if (json is Map && json.isNotEmpty) { |
||||||
|
json = json.cast<String, dynamic>(); // ignore: parameter_assignments |
||||||
|
for (final entry in json.entries) { |
||||||
|
final value = ListNotificationsResponseOcs.listFromJson( |
||||||
|
entry.value, |
||||||
|
growable: growable, |
||||||
|
); |
||||||
|
if (value != null) { |
||||||
|
map[entry.key] = value; |
||||||
|
} |
||||||
|
} |
||||||
|
} |
||||||
|
return map; |
||||||
|
} |
||||||
|
|
||||||
|
/// The list of required keys that must be present in a JSON. |
||||||
|
static const requiredKeys = <String>{}; |
||||||
|
} |
@ -0,0 +1,316 @@ |
|||||||
|
// |
||||||
|
// AUTO-GENERATED FILE, DO NOT MODIFY! |
||||||
|
// |
||||||
|
// @dart=2.12 |
||||||
|
|
||||||
|
// ignore_for_file: unused_element, unused_import |
||||||
|
// ignore_for_file: always_put_required_named_parameters_first |
||||||
|
// ignore_for_file: constant_identifier_names |
||||||
|
// ignore_for_file: lines_longer_than_80_chars |
||||||
|
|
||||||
|
part of openapi.api; |
||||||
|
|
||||||
|
class Notification { |
||||||
|
/// Returns a new [Notification] instance. |
||||||
|
Notification({ |
||||||
|
this.notificationId, |
||||||
|
this.app, |
||||||
|
this.user, |
||||||
|
this.datetime, |
||||||
|
this.objectType, |
||||||
|
this.objectId, |
||||||
|
this.subject, |
||||||
|
this.message, |
||||||
|
this.link, |
||||||
|
this.subjectRich, |
||||||
|
this.subjectRichParameters = const [], |
||||||
|
this.messageRich, |
||||||
|
this.messageRichParameters = const [], |
||||||
|
this.icon, |
||||||
|
this.actions = const [], |
||||||
|
}); |
||||||
|
|
||||||
|
/// |
||||||
|
/// Please note: This property should have been non-nullable! Since the specification file |
||||||
|
/// does not include a default value (using the "default:" property), however, the generated |
||||||
|
/// source code must fall back to having a nullable type. |
||||||
|
/// Consider adding a "default:" property in the specification file to hide this note. |
||||||
|
/// |
||||||
|
int? notificationId; |
||||||
|
|
||||||
|
/// |
||||||
|
/// Please note: This property should have been non-nullable! Since the specification file |
||||||
|
/// does not include a default value (using the "default:" property), however, the generated |
||||||
|
/// source code must fall back to having a nullable type. |
||||||
|
/// Consider adding a "default:" property in the specification file to hide this note. |
||||||
|
/// |
||||||
|
String? app; |
||||||
|
|
||||||
|
/// |
||||||
|
/// Please note: This property should have been non-nullable! Since the specification file |
||||||
|
/// does not include a default value (using the "default:" property), however, the generated |
||||||
|
/// source code must fall back to having a nullable type. |
||||||
|
/// Consider adding a "default:" property in the specification file to hide this note. |
||||||
|
/// |
||||||
|
String? user; |
||||||
|
|
||||||
|
/// |
||||||
|
/// Please note: This property should have been non-nullable! Since the specification file |
||||||
|
/// does not include a default value (using the "default:" property), however, the generated |
||||||
|
/// source code must fall back to having a nullable type. |
||||||
|
/// Consider adding a "default:" property in the specification file to hide this note. |
||||||
|
/// |
||||||
|
String? datetime; |
||||||
|
|
||||||
|
/// |
||||||
|
/// Please note: This property should have been non-nullable! Since the specification file |
||||||
|
/// does not include a default value (using the "default:" property), however, the generated |
||||||
|
/// source code must fall back to having a nullable type. |
||||||
|
/// Consider adding a "default:" property in the specification file to hide this note. |
||||||
|
/// |
||||||
|
String? objectType; |
||||||
|
|
||||||
|
/// |
||||||
|
/// Please note: This property should have been non-nullable! Since the specification file |
||||||
|
/// does not include a default value (using the "default:" property), however, the generated |
||||||
|
/// source code must fall back to having a nullable type. |
||||||
|
/// Consider adding a "default:" property in the specification file to hide this note. |
||||||
|
/// |
||||||
|
String? objectId; |
||||||
|
|
||||||
|
/// |
||||||
|
/// Please note: This property should have been non-nullable! Since the specification file |
||||||
|
/// does not include a default value (using the "default:" property), however, the generated |
||||||
|
/// source code must fall back to having a nullable type. |
||||||
|
/// Consider adding a "default:" property in the specification file to hide this note. |
||||||
|
/// |
||||||
|
String? subject; |
||||||
|
|
||||||
|
/// |
||||||
|
/// Please note: This property should have been non-nullable! Since the specification file |
||||||
|
/// does not include a default value (using the "default:" property), however, the generated |
||||||
|
/// source code must fall back to having a nullable type. |
||||||
|
/// Consider adding a "default:" property in the specification file to hide this note. |
||||||
|
/// |
||||||
|
String? message; |
||||||
|
|
||||||
|
/// |
||||||
|
/// Please note: This property should have been non-nullable! Since the specification file |
||||||
|
/// does not include a default value (using the "default:" property), however, the generated |
||||||
|
/// source code must fall back to having a nullable type. |
||||||
|
/// Consider adding a "default:" property in the specification file to hide this note. |
||||||
|
/// |
||||||
|
String? link; |
||||||
|
|
||||||
|
/// |
||||||
|
/// Please note: This property should have been non-nullable! Since the specification file |
||||||
|
/// does not include a default value (using the "default:" property), however, the generated |
||||||
|
/// source code must fall back to having a nullable type. |
||||||
|
/// Consider adding a "default:" property in the specification file to hide this note. |
||||||
|
/// |
||||||
|
String? subjectRich; |
||||||
|
|
||||||
|
List<String> subjectRichParameters; |
||||||
|
|
||||||
|
/// |
||||||
|
/// Please note: This property should have been non-nullable! Since the specification file |
||||||
|
/// does not include a default value (using the "default:" property), however, the generated |
||||||
|
/// source code must fall back to having a nullable type. |
||||||
|
/// Consider adding a "default:" property in the specification file to hide this note. |
||||||
|
/// |
||||||
|
String? messageRich; |
||||||
|
|
||||||
|
List<String> messageRichParameters; |
||||||
|
|
||||||
|
/// |
||||||
|
/// Please note: This property should have been non-nullable! Since the specification file |
||||||
|
/// does not include a default value (using the "default:" property), however, the generated |
||||||
|
/// source code must fall back to having a nullable type. |
||||||
|
/// Consider adding a "default:" property in the specification file to hide this note. |
||||||
|
/// |
||||||
|
String? icon; |
||||||
|
|
||||||
|
List<String> actions; |
||||||
|
|
||||||
|
@override |
||||||
|
bool operator ==(Object other) => |
||||||
|
identical(this, other) || |
||||||
|
other is Notification && |
||||||
|
other.notificationId == notificationId && |
||||||
|
other.app == app && |
||||||
|
other.user == user && |
||||||
|
other.datetime == datetime && |
||||||
|
other.objectType == objectType && |
||||||
|
other.objectId == objectId && |
||||||
|
other.subject == subject && |
||||||
|
other.message == message && |
||||||
|
other.link == link && |
||||||
|
other.subjectRich == subjectRich && |
||||||
|
other.subjectRichParameters == subjectRichParameters && |
||||||
|
other.messageRich == messageRich && |
||||||
|
other.messageRichParameters == messageRichParameters && |
||||||
|
other.icon == icon && |
||||||
|
other.actions == actions; |
||||||
|
|
||||||
|
@override |
||||||
|
int get hashCode => |
||||||
|
// ignore: unnecessary_parenthesis |
||||||
|
(notificationId == null ? 0 : notificationId!.hashCode) + |
||||||
|
(app == null ? 0 : app!.hashCode) + |
||||||
|
(user == null ? 0 : user!.hashCode) + |
||||||
|
(datetime == null ? 0 : datetime!.hashCode) + |
||||||
|
(objectType == null ? 0 : objectType!.hashCode) + |
||||||
|
(objectId == null ? 0 : objectId!.hashCode) + |
||||||
|
(subject == null ? 0 : subject!.hashCode) + |
||||||
|
(message == null ? 0 : message!.hashCode) + |
||||||
|
(link == null ? 0 : link!.hashCode) + |
||||||
|
(subjectRich == null ? 0 : subjectRich!.hashCode) + |
||||||
|
(subjectRichParameters.hashCode) + |
||||||
|
(messageRich == null ? 0 : messageRich!.hashCode) + |
||||||
|
(messageRichParameters.hashCode) + |
||||||
|
(icon == null ? 0 : icon!.hashCode) + |
||||||
|
(actions.hashCode); |
||||||
|
|
||||||
|
@override |
||||||
|
String toString() => |
||||||
|
'Notification[notificationId=$notificationId, app=$app, user=$user, datetime=$datetime, objectType=$objectType, objectId=$objectId, subject=$subject, message=$message, link=$link, subjectRich=$subjectRich, subjectRichParameters=$subjectRichParameters, messageRich=$messageRich, messageRichParameters=$messageRichParameters, icon=$icon, actions=$actions]'; |
||||||
|
|
||||||
|
Map<String, dynamic> toJson() { |
||||||
|
final _json = <String, dynamic>{}; |
||||||
|
if (notificationId != null) { |
||||||
|
_json[r'notification_id'] = notificationId; |
||||||
|
} |
||||||
|
if (app != null) { |
||||||
|
_json[r'app'] = app; |
||||||
|
} |
||||||
|
if (user != null) { |
||||||
|
_json[r'user'] = user; |
||||||
|
} |
||||||
|
if (datetime != null) { |
||||||
|
_json[r'datetime'] = datetime; |
||||||
|
} |
||||||
|
if (objectType != null) { |
||||||
|
_json[r'object_type'] = objectType; |
||||||
|
} |
||||||
|
if (objectId != null) { |
||||||
|
_json[r'object_id'] = objectId; |
||||||
|
} |
||||||
|
if (subject != null) { |
||||||
|
_json[r'subject'] = subject; |
||||||
|
} |
||||||
|
if (message != null) { |
||||||
|
_json[r'message'] = message; |
||||||
|
} |
||||||
|
if (link != null) { |
||||||
|
_json[r'link'] = link; |
||||||
|
} |
||||||
|
if (subjectRich != null) { |
||||||
|
_json[r'subjectRich'] = subjectRich; |
||||||
|
} |
||||||
|
_json[r'subjectRichParameters'] = subjectRichParameters; |
||||||
|
if (messageRich != null) { |
||||||
|
_json[r'messageRich'] = messageRich; |
||||||
|
} |
||||||
|
_json[r'messageRichParameters'] = messageRichParameters; |
||||||
|
if (icon != null) { |
||||||
|
_json[r'icon'] = icon; |
||||||
|
} |
||||||
|
_json[r'actions'] = actions; |
||||||
|
return _json; |
||||||
|
} |
||||||
|
|
||||||
|
/// Returns a new [Notification] instance and imports its values from |
||||||
|
/// [value] if it's a [Map], null otherwise. |
||||||
|
// ignore: prefer_constructors_over_static_methods |
||||||
|
static Notification? fromJson(dynamic value) { |
||||||
|
if (value is Map) { |
||||||
|
final json = value.cast<String, dynamic>(); |
||||||
|
|
||||||
|
// Ensure that the map contains the required keys. |
||||||
|
// Note 1: the values aren't checked for validity beyond being non-null. |
||||||
|
// Note 2: this code is stripped in release mode! |
||||||
|
assert(() { |
||||||
|
requiredKeys.forEach((key) { |
||||||
|
assert(json.containsKey(key), 'Required key "Notification[$key]" is missing from JSON.'); |
||||||
|
assert(json[key] != null, 'Required key "Notification[$key]" has a null value in JSON.'); |
||||||
|
}); |
||||||
|
return true; |
||||||
|
}()); |
||||||
|
|
||||||
|
return Notification( |
||||||
|
notificationId: mapValueOfType<int>(json, r'notification_id'), |
||||||
|
app: mapValueOfType<String>(json, r'app'), |
||||||
|
user: mapValueOfType<String>(json, r'user'), |
||||||
|
datetime: mapValueOfType<String>(json, r'datetime'), |
||||||
|
objectType: mapValueOfType<String>(json, r'object_type'), |
||||||
|
objectId: mapValueOfType<String>(json, r'object_id'), |
||||||
|
subject: mapValueOfType<String>(json, r'subject'), |
||||||
|
message: mapValueOfType<String>(json, r'message'), |
||||||
|
link: mapValueOfType<String>(json, r'link'), |
||||||
|
subjectRich: mapValueOfType<String>(json, r'subjectRich'), |
||||||
|
subjectRichParameters: |
||||||
|
json[r'subjectRichParameters'] is List ? (json[r'subjectRichParameters'] as List).cast<String>() : const [], |
||||||
|
messageRich: mapValueOfType<String>(json, r'messageRich'), |
||||||
|
messageRichParameters: |
||||||
|
json[r'messageRichParameters'] is List ? (json[r'messageRichParameters'] as List).cast<String>() : const [], |
||||||
|
icon: mapValueOfType<String>(json, r'icon'), |
||||||
|
actions: json[r'actions'] is List ? (json[r'actions'] as List).cast<String>() : const [], |
||||||
|
); |
||||||
|
} |
||||||
|
return null; |
||||||
|
} |
||||||
|
|
||||||
|
static List<Notification>? listFromJson( |
||||||
|
dynamic json, { |
||||||
|
bool growable = false, |
||||||
|
}) { |
||||||
|
final result = <Notification>[]; |
||||||
|
if (json is List && json.isNotEmpty) { |
||||||
|
for (final row in json) { |
||||||
|
final value = Notification.fromJson(row); |
||||||
|
if (value != null) { |
||||||
|
result.add(value); |
||||||
|
} |
||||||
|
} |
||||||
|
} |
||||||
|
return result.toList(growable: growable); |
||||||
|
} |
||||||
|
|
||||||
|
static Map<String, Notification> mapFromJson(dynamic json) { |
||||||
|
final map = <String, Notification>{}; |
||||||
|
if (json is Map && json.isNotEmpty) { |
||||||
|
json = json.cast<String, dynamic>(); // ignore: parameter_assignments |
||||||
|
for (final entry in json.entries) { |
||||||
|
final value = Notification.fromJson(entry.value); |
||||||
|
if (value != null) { |
||||||
|
map[entry.key] = value; |
||||||
|
} |
||||||
|
} |
||||||
|
} |
||||||
|
return map; |
||||||
|
} |
||||||
|
|
||||||
|
// maps a json object with a list of Notification-objects as value to a dart map |
||||||
|
static Map<String, List<Notification>> mapListFromJson( |
||||||
|
dynamic json, { |
||||||
|
bool growable = false, |
||||||
|
}) { |
||||||
|
final map = <String, List<Notification>>{}; |
||||||
|
if (json is Map && json.isNotEmpty) { |
||||||
|
json = json.cast<String, dynamic>(); // ignore: parameter_assignments |
||||||
|
for (final entry in json.entries) { |
||||||
|
final value = Notification.listFromJson( |
||||||
|
entry.value, |
||||||
|
growable: growable, |
||||||
|
); |
||||||
|
if (value != null) { |
||||||
|
map[entry.key] = value; |
||||||
|
} |
||||||
|
} |
||||||
|
} |
||||||
|
return map; |
||||||
|
} |
||||||
|
|
||||||
|
/// The list of required keys that must be present in a JSON. |
||||||
|
static const requiredKeys = <String>{}; |
||||||
|
} |
@ -0,0 +1,187 @@ |
|||||||
|
// |
||||||
|
// AUTO-GENERATED FILE, DO NOT MODIFY! |
||||||
|
// |
||||||
|
// @dart=2.12 |
||||||
|
|
||||||
|
// ignore_for_file: unused_element, unused_import |
||||||
|
// ignore_for_file: always_put_required_named_parameters_first |
||||||
|
// ignore_for_file: constant_identifier_names |
||||||
|
// ignore_for_file: lines_longer_than_80_chars |
||||||
|
|
||||||
|
part of openapi.api; |
||||||
|
|
||||||
|
class PushNotificationDecryptedSubject { |
||||||
|
/// Returns a new [PushNotificationDecryptedSubject] instance. |
||||||
|
PushNotificationDecryptedSubject({ |
||||||
|
this.nid, |
||||||
|
this.app, |
||||||
|
this.subject, |
||||||
|
this.type, |
||||||
|
this.id, |
||||||
|
}); |
||||||
|
|
||||||
|
/// |
||||||
|
/// Please note: This property should have been non-nullable! Since the specification file |
||||||
|
/// does not include a default value (using the "default:" property), however, the generated |
||||||
|
/// source code must fall back to having a nullable type. |
||||||
|
/// Consider adding a "default:" property in the specification file to hide this note. |
||||||
|
/// |
||||||
|
int? nid; |
||||||
|
|
||||||
|
/// |
||||||
|
/// Please note: This property should have been non-nullable! Since the specification file |
||||||
|
/// does not include a default value (using the "default:" property), however, the generated |
||||||
|
/// source code must fall back to having a nullable type. |
||||||
|
/// Consider adding a "default:" property in the specification file to hide this note. |
||||||
|
/// |
||||||
|
String? app; |
||||||
|
|
||||||
|
/// |
||||||
|
/// Please note: This property should have been non-nullable! Since the specification file |
||||||
|
/// does not include a default value (using the "default:" property), however, the generated |
||||||
|
/// source code must fall back to having a nullable type. |
||||||
|
/// Consider adding a "default:" property in the specification file to hide this note. |
||||||
|
/// |
||||||
|
String? subject; |
||||||
|
|
||||||
|
/// |
||||||
|
/// Please note: This property should have been non-nullable! Since the specification file |
||||||
|
/// does not include a default value (using the "default:" property), however, the generated |
||||||
|
/// source code must fall back to having a nullable type. |
||||||
|
/// Consider adding a "default:" property in the specification file to hide this note. |
||||||
|
/// |
||||||
|
String? type; |
||||||
|
|
||||||
|
/// |
||||||
|
/// Please note: This property should have been non-nullable! Since the specification file |
||||||
|
/// does not include a default value (using the "default:" property), however, the generated |
||||||
|
/// source code must fall back to having a nullable type. |
||||||
|
/// Consider adding a "default:" property in the specification file to hide this note. |
||||||
|
/// |
||||||
|
String? id; |
||||||
|
|
||||||
|
@override |
||||||
|
bool operator ==(Object other) => |
||||||
|
identical(this, other) || |
||||||
|
other is PushNotificationDecryptedSubject && |
||||||
|
other.nid == nid && |
||||||
|
other.app == app && |
||||||
|
other.subject == subject && |
||||||
|
other.type == type && |
||||||
|
other.id == id; |
||||||
|
|
||||||
|
@override |
||||||
|
int get hashCode => |
||||||
|
// ignore: unnecessary_parenthesis |
||||||
|
(nid == null ? 0 : nid!.hashCode) + |
||||||
|
(app == null ? 0 : app!.hashCode) + |
||||||
|
(subject == null ? 0 : subject!.hashCode) + |
||||||
|
(type == null ? 0 : type!.hashCode) + |
||||||
|
(id == null ? 0 : id!.hashCode); |
||||||
|
|
||||||
|
@override |
||||||
|
String toString() => 'PushNotificationDecryptedSubject[nid=$nid, app=$app, subject=$subject, type=$type, id=$id]'; |
||||||
|
|
||||||
|
Map<String, dynamic> toJson() { |
||||||
|
final _json = <String, dynamic>{}; |
||||||
|
if (nid != null) { |
||||||
|
_json[r'nid'] = nid; |
||||||
|
} |
||||||
|
if (app != null) { |
||||||
|
_json[r'app'] = app; |
||||||
|
} |
||||||
|
if (subject != null) { |
||||||
|
_json[r'subject'] = subject; |
||||||
|
} |
||||||
|
if (type != null) { |
||||||
|
_json[r'type'] = type; |
||||||
|
} |
||||||
|
if (id != null) { |
||||||
|
_json[r'id'] = id; |
||||||
|
} |
||||||
|
return _json; |
||||||
|
} |
||||||
|
|
||||||
|
/// Returns a new [PushNotificationDecryptedSubject] instance and imports its values from |
||||||
|
/// [value] if it's a [Map], null otherwise. |
||||||
|
// ignore: prefer_constructors_over_static_methods |
||||||
|
static PushNotificationDecryptedSubject? fromJson(dynamic value) { |
||||||
|
if (value is Map) { |
||||||
|
final json = value.cast<String, dynamic>(); |
||||||
|
|
||||||
|
// Ensure that the map contains the required keys. |
||||||
|
// Note 1: the values aren't checked for validity beyond being non-null. |
||||||
|
// Note 2: this code is stripped in release mode! |
||||||
|
assert(() { |
||||||
|
requiredKeys.forEach((key) { |
||||||
|
assert(json.containsKey(key), 'Required key "PushNotificationDecryptedSubject[$key]" is missing from JSON.'); |
||||||
|
assert(json[key] != null, 'Required key "PushNotificationDecryptedSubject[$key]" has a null value in JSON.'); |
||||||
|
}); |
||||||
|
return true; |
||||||
|
}()); |
||||||
|
|
||||||
|
return PushNotificationDecryptedSubject( |
||||||
|
nid: mapValueOfType<int>(json, r'nid'), |
||||||
|
app: mapValueOfType<String>(json, r'app'), |
||||||
|
subject: mapValueOfType<String>(json, r'subject'), |
||||||
|
type: mapValueOfType<String>(json, r'type'), |
||||||
|
id: mapValueOfType<String>(json, r'id'), |
||||||
|
); |
||||||
|
} |
||||||
|
return null; |
||||||
|
} |
||||||
|
|
||||||
|
static List<PushNotificationDecryptedSubject>? listFromJson( |
||||||
|
dynamic json, { |
||||||
|
bool growable = false, |
||||||
|
}) { |
||||||
|
final result = <PushNotificationDecryptedSubject>[]; |
||||||
|
if (json is List && json.isNotEmpty) { |
||||||
|
for (final row in json) { |
||||||
|
final value = PushNotificationDecryptedSubject.fromJson(row); |
||||||
|
if (value != null) { |
||||||
|
result.add(value); |
||||||
|
} |
||||||
|
} |
||||||
|
} |
||||||
|
return result.toList(growable: growable); |
||||||
|
} |
||||||
|
|
||||||
|
static Map<String, PushNotificationDecryptedSubject> mapFromJson(dynamic json) { |
||||||
|
final map = <String, PushNotificationDecryptedSubject>{}; |
||||||
|
if (json is Map && json.isNotEmpty) { |
||||||
|
json = json.cast<String, dynamic>(); // ignore: parameter_assignments |
||||||
|
for (final entry in json.entries) { |
||||||
|
final value = PushNotificationDecryptedSubject.fromJson(entry.value); |
||||||
|
if (value != null) { |
||||||
|
map[entry.key] = value; |
||||||
|
} |
||||||
|
} |
||||||
|
} |
||||||
|
return map; |
||||||
|
} |
||||||
|
|
||||||
|
// maps a json object with a list of PushNotificationDecryptedSubject-objects as value to a dart map |
||||||
|
static Map<String, List<PushNotificationDecryptedSubject>> mapListFromJson( |
||||||
|
dynamic json, { |
||||||
|
bool growable = false, |
||||||
|
}) { |
||||||
|
final map = <String, List<PushNotificationDecryptedSubject>>{}; |
||||||
|
if (json is Map && json.isNotEmpty) { |
||||||
|
json = json.cast<String, dynamic>(); // ignore: parameter_assignments |
||||||
|
for (final entry in json.entries) { |
||||||
|
final value = PushNotificationDecryptedSubject.listFromJson( |
||||||
|
entry.value, |
||||||
|
growable: growable, |
||||||
|
); |
||||||
|
if (value != null) { |
||||||
|
map[entry.key] = value; |
||||||
|
} |
||||||
|
} |
||||||
|
} |
||||||
|
return map; |
||||||
|
} |
||||||
|
|
||||||
|
/// The list of required keys that must be present in a JSON. |
||||||
|
static const requiredKeys = <String>{}; |
||||||
|
} |
@ -0,0 +1,158 @@ |
|||||||
|
// |
||||||
|
// AUTO-GENERATED FILE, DO NOT MODIFY! |
||||||
|
// |
||||||
|
// @dart=2.12 |
||||||
|
|
||||||
|
// ignore_for_file: unused_element, unused_import |
||||||
|
// ignore_for_file: always_put_required_named_parameters_first |
||||||
|
// ignore_for_file: constant_identifier_names |
||||||
|
// ignore_for_file: lines_longer_than_80_chars |
||||||
|
|
||||||
|
part of openapi.api; |
||||||
|
|
||||||
|
class PushServerDevice { |
||||||
|
/// Returns a new [PushServerDevice] instance. |
||||||
|
PushServerDevice({ |
||||||
|
this.pushTokenHash, |
||||||
|
this.devicePublicKey, |
||||||
|
this.proxyServer, |
||||||
|
}); |
||||||
|
|
||||||
|
/// |
||||||
|
/// Please note: This property should have been non-nullable! Since the specification file |
||||||
|
/// does not include a default value (using the "default:" property), however, the generated |
||||||
|
/// source code must fall back to having a nullable type. |
||||||
|
/// Consider adding a "default:" property in the specification file to hide this note. |
||||||
|
/// |
||||||
|
String? pushTokenHash; |
||||||
|
|
||||||
|
/// |
||||||
|
/// Please note: This property should have been non-nullable! Since the specification file |
||||||
|
/// does not include a default value (using the "default:" property), however, the generated |
||||||
|
/// source code must fall back to having a nullable type. |
||||||
|
/// Consider adding a "default:" property in the specification file to hide this note. |
||||||
|
/// |
||||||
|
String? devicePublicKey; |
||||||
|
|
||||||
|
/// |
||||||
|
/// Please note: This property should have been non-nullable! Since the specification file |
||||||
|
/// does not include a default value (using the "default:" property), however, the generated |
||||||
|
/// source code must fall back to having a nullable type. |
||||||
|
/// Consider adding a "default:" property in the specification file to hide this note. |
||||||
|
/// |
||||||
|
String? proxyServer; |
||||||
|
|
||||||
|
@override |
||||||
|
bool operator ==(Object other) => |
||||||
|
identical(this, other) || |
||||||
|
other is PushServerDevice && |
||||||
|
other.pushTokenHash == pushTokenHash && |
||||||
|
other.devicePublicKey == devicePublicKey && |
||||||
|
other.proxyServer == proxyServer; |
||||||
|
|
||||||
|
@override |
||||||
|
int get hashCode => |
||||||
|
// ignore: unnecessary_parenthesis |
||||||
|
(pushTokenHash == null ? 0 : pushTokenHash!.hashCode) + |
||||||
|
(devicePublicKey == null ? 0 : devicePublicKey!.hashCode) + |
||||||
|
(proxyServer == null ? 0 : proxyServer!.hashCode); |
||||||
|
|
||||||
|
@override |
||||||
|
String toString() => |
||||||
|
'PushServerDevice[pushTokenHash=$pushTokenHash, devicePublicKey=$devicePublicKey, proxyServer=$proxyServer]'; |
||||||
|
|
||||||
|
Map<String, dynamic> toJson() { |
||||||
|
final _json = <String, dynamic>{}; |
||||||
|
if (pushTokenHash != null) { |
||||||
|
_json[r'pushTokenHash'] = pushTokenHash; |
||||||
|
} |
||||||
|
if (devicePublicKey != null) { |
||||||
|
_json[r'devicePublicKey'] = devicePublicKey; |
||||||
|
} |
||||||
|
if (proxyServer != null) { |
||||||
|
_json[r'proxyServer'] = proxyServer; |
||||||
|
} |
||||||
|
return _json; |
||||||
|
} |
||||||
|
|
||||||
|
/// Returns a new [PushServerDevice] instance and imports its values from |
||||||
|
/// [value] if it's a [Map], null otherwise. |
||||||
|
// ignore: prefer_constructors_over_static_methods |
||||||
|
static PushServerDevice? fromJson(dynamic value) { |
||||||
|
if (value is Map) { |
||||||
|
final json = value.cast<String, dynamic>(); |
||||||
|
|
||||||
|
// Ensure that the map contains the required keys. |
||||||
|
// Note 1: the values aren't checked for validity beyond being non-null. |
||||||
|
// Note 2: this code is stripped in release mode! |
||||||
|
assert(() { |
||||||
|
requiredKeys.forEach((key) { |
||||||
|
assert(json.containsKey(key), 'Required key "PushServerDevice[$key]" is missing from JSON.'); |
||||||
|
assert(json[key] != null, 'Required key "PushServerDevice[$key]" has a null value in JSON.'); |
||||||
|
}); |
||||||
|
return true; |
||||||
|
}()); |
||||||
|
|
||||||
|
return PushServerDevice( |
||||||
|
pushTokenHash: mapValueOfType<String>(json, r'pushTokenHash'), |
||||||
|
devicePublicKey: mapValueOfType<String>(json, r'devicePublicKey'), |
||||||
|
proxyServer: mapValueOfType<String>(json, r'proxyServer'), |
||||||
|
); |
||||||
|
} |
||||||
|
return null; |
||||||
|
} |
||||||
|
|
||||||
|
static List<PushServerDevice>? listFromJson( |
||||||
|
dynamic json, { |
||||||
|
bool growable = false, |
||||||
|
}) { |
||||||
|
final result = <PushServerDevice>[]; |
||||||
|
if (json is List && json.isNotEmpty) { |
||||||
|
for (final row in json) { |
||||||
|
final value = PushServerDevice.fromJson(row); |
||||||
|
if (value != null) { |
||||||
|
result.add(value); |
||||||
|
} |
||||||
|
} |
||||||
|
} |
||||||
|
return result.toList(growable: growable); |
||||||
|
} |
||||||
|
|
||||||
|
static Map<String, PushServerDevice> mapFromJson(dynamic json) { |
||||||
|
final map = <String, PushServerDevice>{}; |
||||||
|
if (json is Map && json.isNotEmpty) { |
||||||
|
json = json.cast<String, dynamic>(); // ignore: parameter_assignments |
||||||
|
for (final entry in json.entries) { |
||||||
|
final value = PushServerDevice.fromJson(entry.value); |
||||||
|
if (value != null) { |
||||||
|
map[entry.key] = value; |
||||||
|
} |
||||||
|
} |
||||||
|
} |
||||||
|
return map; |
||||||
|
} |
||||||
|
|
||||||
|
// maps a json object with a list of PushServerDevice-objects as value to a dart map |
||||||
|
static Map<String, List<PushServerDevice>> mapListFromJson( |
||||||
|
dynamic json, { |
||||||
|
bool growable = false, |
||||||
|
}) { |
||||||
|
final map = <String, List<PushServerDevice>>{}; |
||||||
|
if (json is Map && json.isNotEmpty) { |
||||||
|
json = json.cast<String, dynamic>(); // ignore: parameter_assignments |
||||||
|
for (final entry in json.entries) { |
||||||
|
final value = PushServerDevice.listFromJson( |
||||||
|
entry.value, |
||||||
|
growable: growable, |
||||||
|
); |
||||||
|
if (value != null) { |
||||||
|
map[entry.key] = value; |
||||||
|
} |
||||||
|
} |
||||||
|
} |
||||||
|
return map; |
||||||
|
} |
||||||
|
|
||||||
|
/// The list of required keys that must be present in a JSON. |
||||||
|
static const requiredKeys = <String>{}; |
||||||
|
} |
@ -0,0 +1,125 @@ |
|||||||
|
// |
||||||
|
// AUTO-GENERATED FILE, DO NOT MODIFY! |
||||||
|
// |
||||||
|
// @dart=2.12 |
||||||
|
|
||||||
|
// ignore_for_file: unused_element, unused_import |
||||||
|
// ignore_for_file: always_put_required_named_parameters_first |
||||||
|
// ignore_for_file: constant_identifier_names |
||||||
|
// ignore_for_file: lines_longer_than_80_chars |
||||||
|
|
||||||
|
part of openapi.api; |
||||||
|
|
||||||
|
class PushServerRegistrationResponse { |
||||||
|
/// Returns a new [PushServerRegistrationResponse] instance. |
||||||
|
PushServerRegistrationResponse({ |
||||||
|
this.ocs, |
||||||
|
}); |
||||||
|
|
||||||
|
/// |
||||||
|
/// Please note: This property should have been non-nullable! Since the specification file |
||||||
|
/// does not include a default value (using the "default:" property), however, the generated |
||||||
|
/// source code must fall back to having a nullable type. |
||||||
|
/// Consider adding a "default:" property in the specification file to hide this note. |
||||||
|
/// |
||||||
|
PushServerRegistrationResponseOcs? ocs; |
||||||
|
|
||||||
|
@override |
||||||
|
bool operator ==(Object other) => |
||||||
|
identical(this, other) || other is PushServerRegistrationResponse && other.ocs == ocs; |
||||||
|
|
||||||
|
@override |
||||||
|
int get hashCode => |
||||||
|
// ignore: unnecessary_parenthesis |
||||||
|
(ocs == null ? 0 : ocs!.hashCode); |
||||||
|
|
||||||
|
@override |
||||||
|
String toString() => 'PushServerRegistrationResponse[ocs=$ocs]'; |
||||||
|
|
||||||
|
Map<String, dynamic> toJson() { |
||||||
|
final _json = <String, dynamic>{}; |
||||||
|
if (ocs != null) { |
||||||
|
_json[r'ocs'] = ocs; |
||||||
|
} |
||||||
|
return _json; |
||||||
|
} |
||||||
|
|
||||||
|
/// Returns a new [PushServerRegistrationResponse] instance and imports its values from |
||||||
|
/// [value] if it's a [Map], null otherwise. |
||||||
|
// ignore: prefer_constructors_over_static_methods |
||||||
|
static PushServerRegistrationResponse? fromJson(dynamic value) { |
||||||
|
if (value is Map) { |
||||||
|
final json = value.cast<String, dynamic>(); |
||||||
|
|
||||||
|
// Ensure that the map contains the required keys. |
||||||
|
// Note 1: the values aren't checked for validity beyond being non-null. |
||||||
|
// Note 2: this code is stripped in release mode! |
||||||
|
assert(() { |
||||||
|
requiredKeys.forEach((key) { |
||||||
|
assert(json.containsKey(key), 'Required key "PushServerRegistrationResponse[$key]" is missing from JSON.'); |
||||||
|
assert(json[key] != null, 'Required key "PushServerRegistrationResponse[$key]" has a null value in JSON.'); |
||||||
|
}); |
||||||
|
return true; |
||||||
|
}()); |
||||||
|
|
||||||
|
return PushServerRegistrationResponse( |
||||||
|
ocs: PushServerRegistrationResponseOcs.fromJson(json[r'ocs']), |
||||||
|
); |
||||||
|
} |
||||||
|
return null; |
||||||
|
} |
||||||
|
|
||||||
|
static List<PushServerRegistrationResponse>? listFromJson( |
||||||
|
dynamic json, { |
||||||
|
bool growable = false, |
||||||
|
}) { |
||||||
|
final result = <PushServerRegistrationResponse>[]; |
||||||
|
if (json is List && json.isNotEmpty) { |
||||||
|
for (final row in json) { |
||||||
|
final value = PushServerRegistrationResponse.fromJson(row); |
||||||
|
if (value != null) { |
||||||
|
result.add(value); |
||||||
|
} |
||||||
|
} |
||||||
|
} |
||||||
|
return result.toList(growable: growable); |
||||||
|
} |
||||||
|
|
||||||
|
static Map<String, PushServerRegistrationResponse> mapFromJson(dynamic json) { |
||||||
|
final map = <String, PushServerRegistrationResponse>{}; |
||||||
|
if (json is Map && json.isNotEmpty) { |
||||||
|
json = json.cast<String, dynamic>(); // ignore: parameter_assignments |
||||||
|
for (final entry in json.entries) { |
||||||
|
final value = PushServerRegistrationResponse.fromJson(entry.value); |
||||||
|
if (value != null) { |
||||||
|
map[entry.key] = value; |
||||||
|
} |
||||||
|
} |
||||||
|
} |
||||||
|
return map; |
||||||
|
} |
||||||
|
|
||||||
|
// maps a json object with a list of PushServerRegistrationResponse-objects as value to a dart map |
||||||
|
static Map<String, List<PushServerRegistrationResponse>> mapListFromJson( |
||||||
|
dynamic json, { |
||||||
|
bool growable = false, |
||||||
|
}) { |
||||||
|
final map = <String, List<PushServerRegistrationResponse>>{}; |
||||||
|
if (json is Map && json.isNotEmpty) { |
||||||
|
json = json.cast<String, dynamic>(); // ignore: parameter_assignments |
||||||
|
for (final entry in json.entries) { |
||||||
|
final value = PushServerRegistrationResponse.listFromJson( |
||||||
|
entry.value, |
||||||
|
growable: growable, |
||||||
|
); |
||||||
|
if (value != null) { |
||||||
|
map[entry.key] = value; |
||||||
|
} |
||||||
|
} |
||||||
|
} |
||||||
|
return map; |
||||||
|
} |
||||||
|
|
||||||
|
/// The list of required keys that must be present in a JSON. |
||||||
|
static const requiredKeys = <String>{}; |
||||||
|
} |
@ -0,0 +1,133 @@ |
|||||||
|
// |
||||||
|
// AUTO-GENERATED FILE, DO NOT MODIFY! |
||||||
|
// |
||||||
|
// @dart=2.12 |
||||||
|
|
||||||
|
// ignore_for_file: unused_element, unused_import |
||||||
|
// ignore_for_file: always_put_required_named_parameters_first |
||||||
|
// ignore_for_file: constant_identifier_names |
||||||
|
// ignore_for_file: lines_longer_than_80_chars |
||||||
|
|
||||||
|
part of openapi.api; |
||||||
|
|
||||||
|
class PushServerRegistrationResponseOcs { |
||||||
|
/// Returns a new [PushServerRegistrationResponseOcs] instance. |
||||||
|
PushServerRegistrationResponseOcs({ |
||||||
|
this.meta, |
||||||
|
this.data, |
||||||
|
}); |
||||||
|
|
||||||
|
/// Stub |
||||||
|
Object? meta; |
||||||
|
|
||||||
|
/// |
||||||
|
/// Please note: This property should have been non-nullable! Since the specification file |
||||||
|
/// does not include a default value (using the "default:" property), however, the generated |
||||||
|
/// source code must fall back to having a nullable type. |
||||||
|
/// Consider adding a "default:" property in the specification file to hide this note. |
||||||
|
/// |
||||||
|
PushServerSubscription? data; |
||||||
|
|
||||||
|
@override |
||||||
|
bool operator ==(Object other) => |
||||||
|
identical(this, other) || other is PushServerRegistrationResponseOcs && other.meta == meta && other.data == data; |
||||||
|
|
||||||
|
@override |
||||||
|
int get hashCode => |
||||||
|
// ignore: unnecessary_parenthesis |
||||||
|
(meta == null ? 0 : meta!.hashCode) + (data == null ? 0 : data!.hashCode); |
||||||
|
|
||||||
|
@override |
||||||
|
String toString() => 'PushServerRegistrationResponseOcs[meta=$meta, data=$data]'; |
||||||
|
|
||||||
|
Map<String, dynamic> toJson() { |
||||||
|
final _json = <String, dynamic>{}; |
||||||
|
if (meta != null) { |
||||||
|
_json[r'meta'] = meta; |
||||||
|
} |
||||||
|
if (data != null) { |
||||||
|
_json[r'data'] = data; |
||||||
|
} |
||||||
|
return _json; |
||||||
|
} |
||||||
|
|
||||||
|
/// Returns a new [PushServerRegistrationResponseOcs] instance and imports its values from |
||||||
|
/// [value] if it's a [Map], null otherwise. |
||||||
|
// ignore: prefer_constructors_over_static_methods |
||||||
|
static PushServerRegistrationResponseOcs? fromJson(dynamic value) { |
||||||
|
if (value is Map) { |
||||||
|
final json = value.cast<String, dynamic>(); |
||||||
|
|
||||||
|
// Ensure that the map contains the required keys. |
||||||
|
// Note 1: the values aren't checked for validity beyond being non-null. |
||||||
|
// Note 2: this code is stripped in release mode! |
||||||
|
assert(() { |
||||||
|
requiredKeys.forEach((key) { |
||||||
|
assert(json.containsKey(key), 'Required key "PushServerRegistrationResponseOcs[$key]" is missing from JSON.'); |
||||||
|
assert(json[key] != null, 'Required key "PushServerRegistrationResponseOcs[$key]" has a null value in JSON.'); |
||||||
|
}); |
||||||
|
return true; |
||||||
|
}()); |
||||||
|
|
||||||
|
return PushServerRegistrationResponseOcs( |
||||||
|
meta: mapValueOfType<Object>(json, r'meta'), |
||||||
|
data: PushServerSubscription.fromJson(json[r'data']), |
||||||
|
); |
||||||
|
} |
||||||
|
return null; |
||||||
|
} |
||||||
|
|
||||||
|
static List<PushServerRegistrationResponseOcs>? listFromJson( |
||||||
|
dynamic json, { |
||||||
|
bool growable = false, |
||||||
|
}) { |
||||||
|
final result = <PushServerRegistrationResponseOcs>[]; |
||||||
|
if (json is List && json.isNotEmpty) { |
||||||
|
for (final row in json) { |
||||||
|
final value = PushServerRegistrationResponseOcs.fromJson(row); |
||||||
|
if (value != null) { |
||||||
|
result.add(value); |
||||||
|
} |
||||||
|
} |
||||||
|
} |
||||||
|
return result.toList(growable: growable); |
||||||
|
} |
||||||
|
|
||||||
|
static Map<String, PushServerRegistrationResponseOcs> mapFromJson(dynamic json) { |
||||||
|
final map = <String, PushServerRegistrationResponseOcs>{}; |
||||||
|
if (json is Map && json.isNotEmpty) { |
||||||
|
json = json.cast<String, dynamic>(); // ignore: parameter_assignments |
||||||
|
for (final entry in json.entries) { |
||||||
|
final value = PushServerRegistrationResponseOcs.fromJson(entry.value); |
||||||
|
if (value != null) { |
||||||
|
map[entry.key] = value; |
||||||
|
} |
||||||
|
} |
||||||
|
} |
||||||
|
return map; |
||||||
|
} |
||||||
|
|
||||||
|
// maps a json object with a list of PushServerRegistrationResponseOcs-objects as value to a dart map |
||||||
|
static Map<String, List<PushServerRegistrationResponseOcs>> mapListFromJson( |
||||||
|
dynamic json, { |
||||||
|
bool growable = false, |
||||||
|
}) { |
||||||
|
final map = <String, List<PushServerRegistrationResponseOcs>>{}; |
||||||
|
if (json is Map && json.isNotEmpty) { |
||||||
|
json = json.cast<String, dynamic>(); // ignore: parameter_assignments |
||||||
|
for (final entry in json.entries) { |
||||||
|
final value = PushServerRegistrationResponseOcs.listFromJson( |
||||||
|
entry.value, |
||||||
|
growable: growable, |
||||||
|
); |
||||||
|
if (value != null) { |
||||||
|
map[entry.key] = value; |
||||||
|
} |
||||||
|
} |
||||||
|
} |
||||||
|
return map; |
||||||
|
} |
||||||
|
|
||||||
|
/// The list of required keys that must be present in a JSON. |
||||||
|
static const requiredKeys = <String>{}; |
||||||
|
} |
@ -0,0 +1,158 @@ |
|||||||
|
// |
||||||
|
// AUTO-GENERATED FILE, DO NOT MODIFY! |
||||||
|
// |
||||||
|
// @dart=2.12 |
||||||
|
|
||||||
|
// ignore_for_file: unused_element, unused_import |
||||||
|
// ignore_for_file: always_put_required_named_parameters_first |
||||||
|
// ignore_for_file: constant_identifier_names |
||||||
|
// ignore_for_file: lines_longer_than_80_chars |
||||||
|
|
||||||
|
part of openapi.api; |
||||||
|
|
||||||
|
class PushServerSubscription { |
||||||
|
/// Returns a new [PushServerSubscription] instance. |
||||||
|
PushServerSubscription({ |
||||||
|
this.publicKey, |
||||||
|
this.deviceIdentifier, |
||||||
|
this.signature, |
||||||
|
}); |
||||||
|
|
||||||
|
/// |
||||||
|
/// Please note: This property should have been non-nullable! Since the specification file |
||||||
|
/// does not include a default value (using the "default:" property), however, the generated |
||||||
|
/// source code must fall back to having a nullable type. |
||||||
|
/// Consider adding a "default:" property in the specification file to hide this note. |
||||||
|
/// |
||||||
|
String? publicKey; |
||||||
|
|
||||||
|
/// |
||||||
|
/// Please note: This property should have been non-nullable! Since the specification file |
||||||
|
/// does not include a default value (using the "default:" property), however, the generated |
||||||
|
/// source code must fall back to having a nullable type. |
||||||
|
/// Consider adding a "default:" property in the specification file to hide this note. |
||||||
|
/// |
||||||
|
String? deviceIdentifier; |
||||||
|
|
||||||
|
/// |
||||||
|
/// Please note: This property should have been non-nullable! Since the specification file |
||||||
|
/// does not include a default value (using the "default:" property), however, the generated |
||||||
|
/// source code must fall back to having a nullable type. |
||||||
|
/// Consider adding a "default:" property in the specification file to hide this note. |
||||||
|
/// |
||||||
|
String? signature; |
||||||
|
|
||||||
|
@override |
||||||
|
bool operator ==(Object other) => |
||||||
|
identical(this, other) || |
||||||
|
other is PushServerSubscription && |
||||||
|
other.publicKey == publicKey && |
||||||
|
other.deviceIdentifier == deviceIdentifier && |
||||||
|
other.signature == signature; |
||||||
|
|
||||||
|
@override |
||||||
|
int get hashCode => |
||||||
|
// ignore: unnecessary_parenthesis |
||||||
|
(publicKey == null ? 0 : publicKey!.hashCode) + |
||||||
|
(deviceIdentifier == null ? 0 : deviceIdentifier!.hashCode) + |
||||||
|
(signature == null ? 0 : signature!.hashCode); |
||||||
|
|
||||||
|
@override |
||||||
|
String toString() => |
||||||
|
'PushServerSubscription[publicKey=$publicKey, deviceIdentifier=$deviceIdentifier, signature=$signature]'; |
||||||
|
|
||||||
|
Map<String, dynamic> toJson() { |
||||||
|
final _json = <String, dynamic>{}; |
||||||
|
if (publicKey != null) { |
||||||
|
_json[r'publicKey'] = publicKey; |
||||||
|
} |
||||||
|
if (deviceIdentifier != null) { |
||||||
|
_json[r'deviceIdentifier'] = deviceIdentifier; |
||||||
|
} |
||||||
|
if (signature != null) { |
||||||
|
_json[r'signature'] = signature; |
||||||
|
} |
||||||
|
return _json; |
||||||
|
} |
||||||
|
|
||||||
|
/// Returns a new [PushServerSubscription] instance and imports its values from |
||||||
|
/// [value] if it's a [Map], null otherwise. |
||||||
|
// ignore: prefer_constructors_over_static_methods |
||||||
|
static PushServerSubscription? fromJson(dynamic value) { |
||||||
|
if (value is Map) { |
||||||
|
final json = value.cast<String, dynamic>(); |
||||||
|
|
||||||
|
// Ensure that the map contains the required keys. |
||||||
|
// Note 1: the values aren't checked for validity beyond being non-null. |
||||||
|
// Note 2: this code is stripped in release mode! |
||||||
|
assert(() { |
||||||
|
requiredKeys.forEach((key) { |
||||||
|
assert(json.containsKey(key), 'Required key "PushServerSubscription[$key]" is missing from JSON.'); |
||||||
|
assert(json[key] != null, 'Required key "PushServerSubscription[$key]" has a null value in JSON.'); |
||||||
|
}); |
||||||
|
return true; |
||||||
|
}()); |
||||||
|
|
||||||
|
return PushServerSubscription( |
||||||
|
publicKey: mapValueOfType<String>(json, r'publicKey'), |
||||||
|
deviceIdentifier: mapValueOfType<String>(json, r'deviceIdentifier'), |
||||||
|
signature: mapValueOfType<String>(json, r'signature'), |
||||||
|
); |
||||||
|
} |
||||||
|
return null; |
||||||
|
} |
||||||
|
|
||||||
|
static List<PushServerSubscription>? listFromJson( |
||||||
|
dynamic json, { |
||||||
|
bool growable = false, |
||||||
|
}) { |
||||||
|
final result = <PushServerSubscription>[]; |
||||||
|
if (json is List && json.isNotEmpty) { |
||||||
|
for (final row in json) { |
||||||
|
final value = PushServerSubscription.fromJson(row); |
||||||
|
if (value != null) { |
||||||
|
result.add(value); |
||||||
|
} |
||||||
|
} |
||||||
|
} |
||||||
|
return result.toList(growable: growable); |
||||||
|
} |
||||||
|
|
||||||
|
static Map<String, PushServerSubscription> mapFromJson(dynamic json) { |
||||||
|
final map = <String, PushServerSubscription>{}; |
||||||
|
if (json is Map && json.isNotEmpty) { |
||||||
|
json = json.cast<String, dynamic>(); // ignore: parameter_assignments |
||||||
|
for (final entry in json.entries) { |
||||||
|
final value = PushServerSubscription.fromJson(entry.value); |
||||||
|
if (value != null) { |
||||||
|
map[entry.key] = value; |
||||||
|
} |
||||||
|
} |
||||||
|
} |
||||||
|
return map; |
||||||
|
} |
||||||
|
|
||||||
|
// maps a json object with a list of PushServerSubscription-objects as value to a dart map |
||||||
|
static Map<String, List<PushServerSubscription>> mapListFromJson( |
||||||
|
dynamic json, { |
||||||
|
bool growable = false, |
||||||
|
}) { |
||||||
|
final map = <String, List<PushServerSubscription>>{}; |
||||||
|
if (json is Map && json.isNotEmpty) { |
||||||
|
json = json.cast<String, dynamic>(); // ignore: parameter_assignments |
||||||
|
for (final entry in json.entries) { |
||||||
|
final value = PushServerSubscription.listFromJson( |
||||||
|
entry.value, |
||||||
|
growable: growable, |
||||||
|
); |
||||||
|
if (value != null) { |
||||||
|
map[entry.key] = value; |
||||||
|
} |
||||||
|
} |
||||||
|
} |
||||||
|
return map; |
||||||
|
} |
||||||
|
|
||||||
|
/// The list of required keys that must be present in a JSON. |
||||||
|
static const requiredKeys = <String>{}; |
||||||
|
} |
@ -0,0 +1,98 @@ |
|||||||
|
import 'dart:convert'; |
||||||
|
import 'dart:io'; |
||||||
|
|
||||||
|
import 'package:crypto/crypto.dart'; |
||||||
|
import 'package:crypton/crypton.dart'; |
||||||
|
import 'package:nextcloud/src/clients/common/api.dart'; |
||||||
|
import 'package:nextcloud/src/clients/generated/notifications/api.dart'; |
||||||
|
import 'package:nextcloud/src/http_client_response_extension.dart'; |
||||||
|
|
||||||
|
// ignore: public_member_api_docs |
||||||
|
class NextcloudNotificationsClient extends DefaultApi { |
||||||
|
// ignore: public_member_api_docs |
||||||
|
NextcloudNotificationsClient( |
||||||
|
final String baseURL, |
||||||
|
final Authentication authentication, |
||||||
|
final ApiClient Function(ApiClient) addCommonSettings, |
||||||
|
) : super( |
||||||
|
addCommonSettings( |
||||||
|
ApiClient( |
||||||
|
basePath: '$baseURL/ocs/v1.php/apps/notifications', |
||||||
|
authentication: authentication, |
||||||
|
), |
||||||
|
), |
||||||
|
); |
||||||
|
|
||||||
|
@override |
||||||
|
@Deprecated('Use registerDeviceAtServer instead') |
||||||
|
Future<PushServerRegistrationResponse?> registerDevice(PushServerDevice pushServerDevice) => |
||||||
|
throw Exception('Use registerDeviceAtServer instead'); |
||||||
|
|
||||||
|
/// Registers a device at the Nextcloud server |
||||||
|
Future<PushServerRegistrationResponse?> registerDeviceAtServer( |
||||||
|
final String pushToken, |
||||||
|
final RSAPublicKey devicePublicKey, |
||||||
|
final String proxyServer, |
||||||
|
) { |
||||||
|
_validateProxyServerURL(proxyServer); |
||||||
|
return super.registerDevice( |
||||||
|
PushServerDevice( |
||||||
|
pushTokenHash: generatePushTokenHash(pushToken), |
||||||
|
devicePublicKey: devicePublicKey.toFormattedPEM(), |
||||||
|
proxyServer: proxyServer, |
||||||
|
), |
||||||
|
); |
||||||
|
} |
||||||
|
|
||||||
|
/// Registers a device at the push proxy server |
||||||
|
Future registerDeviceAtPushProxy( |
||||||
|
final String pushToken, |
||||||
|
final PushServerSubscription subscription, |
||||||
|
final String proxyServer, |
||||||
|
) async { |
||||||
|
_validateProxyServerURL(proxyServer); |
||||||
|
final request = await HttpClient().postUrl(Uri.parse('${proxyServer}devices')) |
||||||
|
..followRedirects = false |
||||||
|
..persistentConnection = true; |
||||||
|
|
||||||
|
request.headers.add(HttpHeaders.contentTypeHeader, 'application/x-www-form-urlencoded'); |
||||||
|
|
||||||
|
request.add( |
||||||
|
utf8.encode( |
||||||
|
Uri( |
||||||
|
queryParameters: { |
||||||
|
'pushToken': pushToken, |
||||||
|
'deviceIdentifier': subscription.deviceIdentifier!, |
||||||
|
'deviceIdentifierSignature': subscription.signature!, |
||||||
|
'userPublicKey': subscription.publicKey!, |
||||||
|
}, |
||||||
|
).query, |
||||||
|
), |
||||||
|
); |
||||||
|
|
||||||
|
final response = await request.close(); |
||||||
|
|
||||||
|
if (response.statusCode != 200) { |
||||||
|
throw ApiException( |
||||||
|
response.statusCode, |
||||||
|
await response.body, |
||||||
|
); |
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
/// Generates the push token hash which is just sha512 |
||||||
|
String generatePushTokenHash(final String pushToken) => sha512.convert(utf8.encode(pushToken)).toString(); |
||||||
|
|
||||||
|
/// Decrypts the subject of a push notification |
||||||
|
PushNotificationDecryptedSubject decryptPushNotificationSubject( |
||||||
|
final RSAPrivateKey privateKey, |
||||||
|
final String subject, |
||||||
|
) => |
||||||
|
PushNotificationDecryptedSubject.fromJson(json.decode(privateKey.decrypt(subject)) as Map<String, dynamic>)!; |
||||||
|
|
||||||
|
void _validateProxyServerURL(final String proxyServer) { |
||||||
|
if (!proxyServer.endsWith('/')) { |
||||||
|
throw Exception('proxyServer URL has to end with a /'); |
||||||
|
} |
||||||
|
} |
||||||
|
} |
@ -0,0 +1,12 @@ |
|||||||
|
// ignore_for_file: public_member_api_docs |
||||||
|
|
||||||
|
import 'dart:convert'; |
||||||
|
import 'dart:io'; |
||||||
|
import 'dart:typed_data'; |
||||||
|
|
||||||
|
extension HttpClientResponseBody on HttpClientResponse { |
||||||
|
Future<Uint8List> get bodyBytes async => |
||||||
|
Uint8List.fromList((await toList()).reduce((final value, final element) => [...value, ...element])); |
||||||
|
|
||||||
|
Future<String> get body async => utf8.decode(await bodyBytes); |
||||||
|
} |
@ -0,0 +1,220 @@ |
|||||||
|
import 'dart:async'; |
||||||
|
|
||||||
|
import 'package:nextcloud/nextcloud.dart'; |
||||||
|
import 'package:nextcloud_push_proxy/nextcloud_push_proxy.dart'; |
||||||
|
import 'package:test/test.dart'; |
||||||
|
|
||||||
|
import 'helper.dart'; |
||||||
|
|
||||||
|
Future main() async { |
||||||
|
final dockerImageName = await TestHelper.prepareDockerImage(); |
||||||
|
|
||||||
|
group('notifications', () { |
||||||
|
late TestNextcloudClient client; |
||||||
|
setUp(() async { |
||||||
|
client = await TestHelper.getPreparedClient( |
||||||
|
dockerImageName, |
||||||
|
username: 'admin', |
||||||
|
); |
||||||
|
}); |
||||||
|
tearDown(() => client.destroy()); |
||||||
|
|
||||||
|
Future sendTestNotification() async { |
||||||
|
await validateResponse<EmptyResponse, void>( |
||||||
|
client.notifications, |
||||||
|
client.notifications.sendAdminNotificationWithHttpInfo( |
||||||
|
'admin', |
||||||
|
AdminNotification( |
||||||
|
shortMessage: '123', |
||||||
|
longMessage: '456', |
||||||
|
), |
||||||
|
), |
||||||
|
); |
||||||
|
} |
||||||
|
|
||||||
|
test('Send admin notification', () async { |
||||||
|
await sendTestNotification(); |
||||||
|
}); |
||||||
|
|
||||||
|
test('List notifications', () async { |
||||||
|
await sendTestNotification(); |
||||||
|
|
||||||
|
final startTime = DateTime.now().toUtc(); |
||||||
|
final response = (await validateResponse<ListNotificationsResponse, void>( |
||||||
|
client.notifications, |
||||||
|
client.notifications.listNotificationsWithHttpInfo(), |
||||||
|
))!; |
||||||
|
expect(response.ocs!.data, hasLength(1)); |
||||||
|
expect(response.ocs!.data[0].notificationId, 1); |
||||||
|
expect(response.ocs!.data[0].app, 'admin_notifications'); |
||||||
|
expect(response.ocs!.data[0].user, 'admin'); |
||||||
|
expectDateInReasonableTimeRange(DateTime.parse(response.ocs!.data[0].datetime!), startTime); |
||||||
|
expect(response.ocs!.data[0].objectType, 'admin_notifications'); |
||||||
|
expect(response.ocs!.data[0].objectId, isNotNull); |
||||||
|
expect(response.ocs!.data[0].subject, '123'); |
||||||
|
expect(response.ocs!.data[0].message, '456'); |
||||||
|
expect(response.ocs!.data[0].link, ''); |
||||||
|
expect(response.ocs!.data[0].subjectRich, ''); |
||||||
|
expect(response.ocs!.data[0].subjectRichParameters, hasLength(0)); |
||||||
|
expect(response.ocs!.data[0].messageRich, ''); |
||||||
|
expect(response.ocs!.data[0].messageRichParameters, hasLength(0)); |
||||||
|
expect(response.ocs!.data[0].icon, isNotEmpty); |
||||||
|
expect(response.ocs!.data[0].actions, hasLength(0)); |
||||||
|
}); |
||||||
|
|
||||||
|
test('Get notification', () async { |
||||||
|
await sendTestNotification(); |
||||||
|
|
||||||
|
final startTime = DateTime.now().toUtc(); |
||||||
|
final response = (await validateResponse<GetNotificationResponse, void>( |
||||||
|
client.notifications, |
||||||
|
client.notifications.getNotificationWithHttpInfo(1), |
||||||
|
))!; |
||||||
|
expect(response.ocs!.data!.notificationId, 1); |
||||||
|
expect(response.ocs!.data!.app, 'admin_notifications'); |
||||||
|
expect(response.ocs!.data!.user, 'admin'); |
||||||
|
expectDateInReasonableTimeRange(DateTime.parse(response.ocs!.data!.datetime!), startTime); |
||||||
|
expect(response.ocs!.data!.objectType, 'admin_notifications'); |
||||||
|
expect(response.ocs!.data!.objectId, isNotNull); |
||||||
|
expect(response.ocs!.data!.subject, '123'); |
||||||
|
expect(response.ocs!.data!.message, '456'); |
||||||
|
expect(response.ocs!.data!.link, ''); |
||||||
|
expect(response.ocs!.data!.subjectRich, ''); |
||||||
|
expect(response.ocs!.data!.subjectRichParameters, hasLength(0)); |
||||||
|
expect(response.ocs!.data!.messageRich, ''); |
||||||
|
expect(response.ocs!.data!.messageRichParameters, hasLength(0)); |
||||||
|
expect(response.ocs!.data!.icon, isNotEmpty); |
||||||
|
expect(response.ocs!.data!.actions, hasLength(0)); |
||||||
|
}); |
||||||
|
|
||||||
|
test('Delete notification', () async { |
||||||
|
await sendTestNotification(); |
||||||
|
await validateResponse<EmptyResponse, void>( |
||||||
|
client.notifications, |
||||||
|
client.notifications.deleteNotificationWithHttpInfo(1), |
||||||
|
); |
||||||
|
|
||||||
|
final response = (await validateResponse<ListNotificationsResponse, void>( |
||||||
|
client.notifications, |
||||||
|
client.notifications.listNotificationsWithHttpInfo(), |
||||||
|
))!; |
||||||
|
expect(response.ocs!.data, hasLength(0)); |
||||||
|
}); |
||||||
|
|
||||||
|
test('Delete all notifications', () async { |
||||||
|
await sendTestNotification(); |
||||||
|
await sendTestNotification(); |
||||||
|
await validateResponse<EmptyResponse, void>( |
||||||
|
client.notifications, |
||||||
|
client.notifications.deleteAllNotificationsWithHttpInfo(), |
||||||
|
); |
||||||
|
|
||||||
|
final response = (await validateResponse<ListNotificationsResponse, void>( |
||||||
|
client.notifications, |
||||||
|
client.notifications.listNotificationsWithHttpInfo(), |
||||||
|
))!; |
||||||
|
expect(response.ocs!.data, hasLength(0)); |
||||||
|
}); |
||||||
|
}); |
||||||
|
|
||||||
|
group('push notifications', () { |
||||||
|
late TestNextcloudClient client; |
||||||
|
setUp(() async { |
||||||
|
client = await TestHelper.getPreparedClient( |
||||||
|
dockerImageName, |
||||||
|
username: 'admin', |
||||||
|
// We need to use app passwords in order to register push devices |
||||||
|
useAppPassword: true, |
||||||
|
); |
||||||
|
}); |
||||||
|
tearDown(() => client.destroy()); |
||||||
|
|
||||||
|
// The key size has to be 2048, other sizes are not accepted by Nextcloud (at the moment at least) |
||||||
|
// ignore: avoid_redundant_argument_values |
||||||
|
RSAKeypair generateKeypair() => RSAKeypair.fromRandom(keySize: 2048); |
||||||
|
|
||||||
|
test('Register device and receive notification', () async { |
||||||
|
const pushToken = '789'; |
||||||
|
final port = randomPort(); |
||||||
|
final keypair = generateKeypair(); |
||||||
|
|
||||||
|
final pushProxy = NextcloudPushProxy(); |
||||||
|
|
||||||
|
final subscription = (await client.notifications.registerDeviceAtServer( |
||||||
|
pushToken, |
||||||
|
keypair.publicKey, |
||||||
|
'http://host.docker.internal:$port/', |
||||||
|
))! |
||||||
|
.ocs! |
||||||
|
.data!; |
||||||
|
expect(subscription.publicKey, hasLength(451)); |
||||||
|
RSAPublicKey.fromPEM(subscription.publicKey!); |
||||||
|
expect(subscription.deviceIdentifier, isNotEmpty); |
||||||
|
expect(subscription.signature, isNotEmpty); |
||||||
|
|
||||||
|
final deviceCompleter = Completer(); |
||||||
|
final notificationCompleter = Completer(); |
||||||
|
|
||||||
|
await pushProxy.create( |
||||||
|
logging: false, |
||||||
|
port: port, |
||||||
|
); |
||||||
|
pushProxy.onNewDevice.listen((final device) async { |
||||||
|
expect(device.pushToken, pushToken); |
||||||
|
expect(device.deviceIdentifier, isNotEmpty); |
||||||
|
expect(device.deviceIdentifierSignature, isNotEmpty); |
||||||
|
expect(device.userPublicKey, isNotEmpty); |
||||||
|
|
||||||
|
deviceCompleter.complete(); |
||||||
|
}); |
||||||
|
pushProxy.onNewNotification.listen((final notification) async { |
||||||
|
expect(notification.deviceIdentifier, subscription.deviceIdentifier); |
||||||
|
expect(notification.pushTokenHash, client.notifications.generatePushTokenHash(pushToken)); |
||||||
|
expect(notification.subject, isNotEmpty); |
||||||
|
expect(notification.signature, isNotEmpty); |
||||||
|
expect(notification.priority, 'normal'); |
||||||
|
expect(notification.type, 'alert'); |
||||||
|
|
||||||
|
final decryptedSubject = |
||||||
|
client.notifications.decryptPushNotificationSubject(keypair.privateKey, notification.subject); |
||||||
|
expect(decryptedSubject.nid, isNotNull); |
||||||
|
expect(decryptedSubject.app, 'admin_notifications'); |
||||||
|
expect(decryptedSubject.subject, '123'); |
||||||
|
expect(decryptedSubject.type, 'admin_notifications'); |
||||||
|
expect(decryptedSubject.id, isNotEmpty); |
||||||
|
|
||||||
|
notificationCompleter.complete(); |
||||||
|
}); |
||||||
|
|
||||||
|
await client.notifications.registerDeviceAtPushProxy( |
||||||
|
pushToken, |
||||||
|
subscription, |
||||||
|
'http://localhost:$port/', |
||||||
|
); |
||||||
|
await client.notifications.sendAdminNotification( |
||||||
|
'admin', |
||||||
|
AdminNotification( |
||||||
|
shortMessage: '123', |
||||||
|
longMessage: '456', |
||||||
|
), |
||||||
|
); |
||||||
|
|
||||||
|
await deviceCompleter.future; |
||||||
|
await notificationCompleter.future; |
||||||
|
await pushProxy.close(); |
||||||
|
}); |
||||||
|
|
||||||
|
test('Remove push device', () async { |
||||||
|
await client.notifications.registerDeviceAtServer( |
||||||
|
'789', |
||||||
|
generateKeypair().publicKey, |
||||||
|
'https://example.com/', |
||||||
|
); |
||||||
|
|
||||||
|
await validateResponse<EmptyResponse, void>( |
||||||
|
client.notifications, |
||||||
|
client.notifications.removeDeviceWithHttpInfo(), |
||||||
|
); |
||||||
|
}); |
||||||
|
}); |
||||||
|
} |
@ -0,0 +1,389 @@ |
|||||||
|
{ |
||||||
|
"openapi": "3.0.3", |
||||||
|
"info": { |
||||||
|
"title": "Notifications", |
||||||
|
"version": "2.12.0", |
||||||
|
"description": "This app provides a backend and frontend for the notification API available in Nextcloud.", |
||||||
|
"license": { |
||||||
|
"name": "agpl" |
||||||
|
} |
||||||
|
}, |
||||||
|
"servers": [ |
||||||
|
{ |
||||||
|
"url": "https://{hostname}:{port}/ocs/v1.php/apps/notifications", |
||||||
|
"variables": { |
||||||
|
"hostname": { |
||||||
|
"default": "localhost" |
||||||
|
}, |
||||||
|
"port": { |
||||||
|
"default": "8080" |
||||||
|
} |
||||||
|
} |
||||||
|
} |
||||||
|
], |
||||||
|
"security": [ |
||||||
|
{ |
||||||
|
"basic_auth": [] |
||||||
|
} |
||||||
|
], |
||||||
|
"components": { |
||||||
|
"securitySchemes": { |
||||||
|
"basic_auth": { |
||||||
|
"type": "http", |
||||||
|
"scheme": "basic" |
||||||
|
} |
||||||
|
}, |
||||||
|
"schemas": { |
||||||
|
"OCSMeta": { |
||||||
|
"deprecated": true, |
||||||
|
"description": "Stub" |
||||||
|
}, |
||||||
|
"AdminNotification": { |
||||||
|
"type": "object", |
||||||
|
"properties": { |
||||||
|
"shortMessage": { |
||||||
|
"type": "string" |
||||||
|
}, |
||||||
|
"longMessage": { |
||||||
|
"type": "string" |
||||||
|
} |
||||||
|
} |
||||||
|
}, |
||||||
|
"EmptyResponse": { |
||||||
|
"type": "object", |
||||||
|
"properties": { |
||||||
|
"ocs": { |
||||||
|
"type": "object", |
||||||
|
"properties": { |
||||||
|
"meta": { |
||||||
|
"$ref": "#/components/schemas/OCSMeta" |
||||||
|
}, |
||||||
|
"data": { |
||||||
|
"type": "array", |
||||||
|
"items": { |
||||||
|
"type": "string" |
||||||
|
} |
||||||
|
} |
||||||
|
} |
||||||
|
} |
||||||
|
} |
||||||
|
}, |
||||||
|
"Notification": { |
||||||
|
"type": "object", |
||||||
|
"properties": { |
||||||
|
"notification_id": { |
||||||
|
"type": "integer" |
||||||
|
}, |
||||||
|
"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" |
||||||
|
}, |
||||||
|
"subjectRich": { |
||||||
|
"type": "string" |
||||||
|
}, |
||||||
|
"subjectRichParameters": { |
||||||
|
"type": "array", |
||||||
|
"items": { |
||||||
|
"description": "TODO", |
||||||
|
"type": "string" |
||||||
|
} |
||||||
|
}, |
||||||
|
"messageRich": { |
||||||
|
"type": "string" |
||||||
|
}, |
||||||
|
"messageRichParameters": { |
||||||
|
"type": "array", |
||||||
|
"items": { |
||||||
|
"description": "TODO", |
||||||
|
"type": "string" |
||||||
|
} |
||||||
|
}, |
||||||
|
"icon": { |
||||||
|
"type": "string" |
||||||
|
}, |
||||||
|
"actions": { |
||||||
|
"type": "array", |
||||||
|
"items": { |
||||||
|
"description": "TODO", |
||||||
|
"type": "string" |
||||||
|
} |
||||||
|
} |
||||||
|
} |
||||||
|
}, |
||||||
|
"ListNotificationsResponse": { |
||||||
|
"type": "object", |
||||||
|
"properties": { |
||||||
|
"ocs": { |
||||||
|
"type": "object", |
||||||
|
"properties": { |
||||||
|
"meta": { |
||||||
|
"$ref": "#/components/schemas/OCSMeta" |
||||||
|
}, |
||||||
|
"data": { |
||||||
|
"type": "array", |
||||||
|
"items": { |
||||||
|
"$ref": "#/components/schemas/Notification" |
||||||
|
} |
||||||
|
} |
||||||
|
} |
||||||
|
} |
||||||
|
} |
||||||
|
}, |
||||||
|
"GetNotificationResponse": { |
||||||
|
"type": "object", |
||||||
|
"properties": { |
||||||
|
"ocs": { |
||||||
|
"type": "object", |
||||||
|
"properties": { |
||||||
|
"meta": { |
||||||
|
"$ref": "#/components/schemas/OCSMeta" |
||||||
|
}, |
||||||
|
"data": { |
||||||
|
"$ref": "#/components/schemas/Notification" |
||||||
|
} |
||||||
|
} |
||||||
|
} |
||||||
|
} |
||||||
|
}, |
||||||
|
"PushServerDevice": { |
||||||
|
"type": "object", |
||||||
|
"properties": { |
||||||
|
"pushTokenHash": { |
||||||
|
"type": "string" |
||||||
|
}, |
||||||
|
"devicePublicKey": { |
||||||
|
"type": "string" |
||||||
|
}, |
||||||
|
"proxyServer": { |
||||||
|
"type": "string" |
||||||
|
} |
||||||
|
} |
||||||
|
}, |
||||||
|
"PushServerSubscription": { |
||||||
|
"type": "object", |
||||||
|
"properties": { |
||||||
|
"publicKey": { |
||||||
|
"type": "string" |
||||||
|
}, |
||||||
|
"deviceIdentifier": { |
||||||
|
"type": "string" |
||||||
|
}, |
||||||
|
"signature": { |
||||||
|
"type": "string" |
||||||
|
} |
||||||
|
} |
||||||
|
}, |
||||||
|
"PushServerRegistrationResponse": { |
||||||
|
"type": "object", |
||||||
|
"properties": { |
||||||
|
"ocs": { |
||||||
|
"type": "object", |
||||||
|
"properties": { |
||||||
|
"meta": { |
||||||
|
"$ref": "#/components/schemas/OCSMeta" |
||||||
|
}, |
||||||
|
"data": { |
||||||
|
"$ref": "#/components/schemas/PushServerSubscription" |
||||||
|
} |
||||||
|
} |
||||||
|
} |
||||||
|
} |
||||||
|
}, |
||||||
|
"PushNotificationDecryptedSubject": { |
||||||
|
"type": "object", |
||||||
|
"properties": { |
||||||
|
"nid": { |
||||||
|
"type": "integer" |
||||||
|
}, |
||||||
|
"app": { |
||||||
|
"type": "string" |
||||||
|
}, |
||||||
|
"subject": { |
||||||
|
"type": "string" |
||||||
|
}, |
||||||
|
"type": { |
||||||
|
"type": "string" |
||||||
|
}, |
||||||
|
"id": { |
||||||
|
"type": "string" |
||||||
|
} |
||||||
|
} |
||||||
|
} |
||||||
|
} |
||||||
|
}, |
||||||
|
"paths": { |
||||||
|
"/api/v2/notifications": { |
||||||
|
"get": { |
||||||
|
"operationId": "list-notifications", |
||||||
|
"responses": { |
||||||
|
"200": { |
||||||
|
"description": "", |
||||||
|
"content": { |
||||||
|
"application/json": { |
||||||
|
"schema": { |
||||||
|
"type": "string" |
||||||
|
} |
||||||
|
} |
||||||
|
} |
||||||
|
} |
||||||
|
} |
||||||
|
}, |
||||||
|
"delete": { |
||||||
|
"operationId": "delete-all-notifications", |
||||||
|
"responses": { |
||||||
|
"200": { |
||||||
|
"description": "", |
||||||
|
"content": { |
||||||
|
"application/json": { |
||||||
|
"schema": { |
||||||
|
"type": "string" |
||||||
|
} |
||||||
|
} |
||||||
|
} |
||||||
|
} |
||||||
|
} |
||||||
|
} |
||||||
|
}, |
||||||
|
"/api/v2/notifications/{id}": { |
||||||
|
"parameters": [ |
||||||
|
{ |
||||||
|
"name": "id", |
||||||
|
"in": "path", |
||||||
|
"required": true, |
||||||
|
"schema": { |
||||||
|
"type": "integer" |
||||||
|
} |
||||||
|
} |
||||||
|
], |
||||||
|
"get": { |
||||||
|
"operationId": "get-notification", |
||||||
|
"responses": { |
||||||
|
"200": { |
||||||
|
"description": "", |
||||||
|
"content": { |
||||||
|
"application/json": { |
||||||
|
"schema": { |
||||||
|
"$ref": "#/components/schemas/GetNotificationResponse" |
||||||
|
} |
||||||
|
} |
||||||
|
} |
||||||
|
} |
||||||
|
} |
||||||
|
}, |
||||||
|
"delete": { |
||||||
|
"operationId": "delete-notification", |
||||||
|
"responses": { |
||||||
|
"200": { |
||||||
|
"description": "", |
||||||
|
"content": { |
||||||
|
"application/json": { |
||||||
|
"schema": { |
||||||
|
"$ref": "#/components/schemas/EmptyResponse" |
||||||
|
} |
||||||
|
} |
||||||
|
} |
||||||
|
} |
||||||
|
} |
||||||
|
} |
||||||
|
}, |
||||||
|
"/api/v2/push": { |
||||||
|
"post": { |
||||||
|
"operationId": "register-device", |
||||||
|
"requestBody": { |
||||||
|
"required": true, |
||||||
|
"content": { |
||||||
|
"application/json": { |
||||||
|
"schema": { |
||||||
|
"$ref": "#/components/schemas/PushServerDevice" |
||||||
|
} |
||||||
|
} |
||||||
|
} |
||||||
|
}, |
||||||
|
"responses": { |
||||||
|
"200": { |
||||||
|
"description": "", |
||||||
|
"content": { |
||||||
|
"application/json": { |
||||||
|
"schema": { |
||||||
|
"$ref": "#/components/schemas/PushServerRegistrationResponse" |
||||||
|
} |
||||||
|
} |
||||||
|
} |
||||||
|
} |
||||||
|
} |
||||||
|
}, |
||||||
|
"delete": { |
||||||
|
"operationId": "remove-device", |
||||||
|
"responses": { |
||||||
|
"200": { |
||||||
|
"description": "", |
||||||
|
"content": { |
||||||
|
"application/json": { |
||||||
|
"schema": { |
||||||
|
"type": "string" |
||||||
|
} |
||||||
|
} |
||||||
|
} |
||||||
|
} |
||||||
|
} |
||||||
|
} |
||||||
|
}, |
||||||
|
"/api/v2/admin_notifications/{userId}": { |
||||||
|
"parameters": [ |
||||||
|
{ |
||||||
|
"name": "userId", |
||||||
|
"in": "path", |
||||||
|
"required": true, |
||||||
|
"schema": { |
||||||
|
"type": "string" |
||||||
|
} |
||||||
|
} |
||||||
|
], |
||||||
|
"post": { |
||||||
|
"operationId": "send-admin-notification", |
||||||
|
"requestBody": { |
||||||
|
"required": true, |
||||||
|
"content": { |
||||||
|
"application/json": { |
||||||
|
"schema": { |
||||||
|
"$ref": "#/components/schemas/AdminNotification" |
||||||
|
} |
||||||
|
} |
||||||
|
} |
||||||
|
}, |
||||||
|
"responses": { |
||||||
|
"200": { |
||||||
|
"description": "", |
||||||
|
"content": { |
||||||
|
"application/json": { |
||||||
|
"schema": { |
||||||
|
"$ref": "#/components/schemas/EmptyResponse" |
||||||
|
} |
||||||
|
} |
||||||
|
} |
||||||
|
} |
||||||
|
} |
||||||
|
} |
||||||
|
} |
||||||
|
} |
||||||
|
} |
@ -0,0 +1,235 @@ |
|||||||
|
{ |
||||||
|
"openapi": "3.0.3", |
||||||
|
"info": { |
||||||
|
"title": "Notifications", |
||||||
|
"version": "2.12.0", |
||||||
|
"description": "This app provides a backend and frontend for the notification API available in Nextcloud.", |
||||||
|
"license": { |
||||||
|
"name": "agpl" |
||||||
|
} |
||||||
|
}, |
||||||
|
"servers": [ |
||||||
|
{ |
||||||
|
"url": "https://{hostname}:{port}/ocs/v1.php/apps/notifications", |
||||||
|
"variables": { |
||||||
|
"hostname": { |
||||||
|
"default": "localhost" |
||||||
|
}, |
||||||
|
"port": { |
||||||
|
"default": "8080" |
||||||
|
} |
||||||
|
} |
||||||
|
} |
||||||
|
], |
||||||
|
"security": [ |
||||||
|
{ |
||||||
|
"basic_auth": [] |
||||||
|
} |
||||||
|
], |
||||||
|
"components": { |
||||||
|
"securitySchemes": { |
||||||
|
"basic_auth": { |
||||||
|
"type": "http", |
||||||
|
"scheme": "basic" |
||||||
|
} |
||||||
|
} |
||||||
|
}, |
||||||
|
"paths": { |
||||||
|
"/api/{apiVersion}/notifications": { |
||||||
|
"parameters": [ |
||||||
|
{ |
||||||
|
"name": "apiVersion", |
||||||
|
"in": "path", |
||||||
|
"required": true, |
||||||
|
"schema": { |
||||||
|
"type": "string" |
||||||
|
} |
||||||
|
} |
||||||
|
], |
||||||
|
"get": { |
||||||
|
"operationId": "endpoint-listnotifications-TODO", |
||||||
|
"responses": { |
||||||
|
"200": { |
||||||
|
"description": "", |
||||||
|
"content": { |
||||||
|
"application/json": { |
||||||
|
"schema": { |
||||||
|
"type": "string" |
||||||
|
} |
||||||
|
} |
||||||
|
} |
||||||
|
} |
||||||
|
} |
||||||
|
}, |
||||||
|
"delete": { |
||||||
|
"operationId": "endpoint-deleteallnotifications-TODO", |
||||||
|
"responses": { |
||||||
|
"200": { |
||||||
|
"description": "", |
||||||
|
"content": { |
||||||
|
"application/json": { |
||||||
|
"schema": { |
||||||
|
"type": "string" |
||||||
|
} |
||||||
|
} |
||||||
|
} |
||||||
|
} |
||||||
|
} |
||||||
|
} |
||||||
|
}, |
||||||
|
"/api/{apiVersion}/notifications/{id}": { |
||||||
|
"parameters": [ |
||||||
|
{ |
||||||
|
"name": "apiVersion", |
||||||
|
"in": "path", |
||||||
|
"required": true, |
||||||
|
"schema": { |
||||||
|
"type": "string" |
||||||
|
} |
||||||
|
}, |
||||||
|
{ |
||||||
|
"name": "id", |
||||||
|
"in": "path", |
||||||
|
"required": true, |
||||||
|
"schema": { |
||||||
|
"type": "integer" |
||||||
|
} |
||||||
|
} |
||||||
|
], |
||||||
|
"get": { |
||||||
|
"operationId": "endpoint-getnotification-TODO", |
||||||
|
"responses": { |
||||||
|
"200": { |
||||||
|
"description": "", |
||||||
|
"content": { |
||||||
|
"application/json": { |
||||||
|
"schema": { |
||||||
|
"type": "string" |
||||||
|
} |
||||||
|
} |
||||||
|
} |
||||||
|
} |
||||||
|
} |
||||||
|
}, |
||||||
|
"delete": { |
||||||
|
"operationId": "endpoint-deletenotification-TODO", |
||||||
|
"responses": { |
||||||
|
"200": { |
||||||
|
"description": "", |
||||||
|
"content": { |
||||||
|
"application/json": { |
||||||
|
"schema": { |
||||||
|
"type": "string" |
||||||
|
} |
||||||
|
} |
||||||
|
} |
||||||
|
} |
||||||
|
} |
||||||
|
} |
||||||
|
}, |
||||||
|
"/api/{apiVersion}/push": { |
||||||
|
"parameters": [ |
||||||
|
{ |
||||||
|
"name": "apiVersion", |
||||||
|
"in": "path", |
||||||
|
"required": true, |
||||||
|
"schema": { |
||||||
|
"type": "TODO" |
||||||
|
} |
||||||
|
} |
||||||
|
], |
||||||
|
"post": { |
||||||
|
"operationId": "push-registerdevice-TODO", |
||||||
|
"responses": { |
||||||
|
"200": { |
||||||
|
"description": "", |
||||||
|
"content": { |
||||||
|
"application/json": { |
||||||
|
"schema": { |
||||||
|
"type": "string" |
||||||
|
} |
||||||
|
} |
||||||
|
} |
||||||
|
} |
||||||
|
} |
||||||
|
}, |
||||||
|
"delete": { |
||||||
|
"operationId": "push-removedevice-TODO", |
||||||
|
"responses": { |
||||||
|
"200": { |
||||||
|
"description": "", |
||||||
|
"content": { |
||||||
|
"application/json": { |
||||||
|
"schema": { |
||||||
|
"type": "string" |
||||||
|
} |
||||||
|
} |
||||||
|
} |
||||||
|
} |
||||||
|
} |
||||||
|
} |
||||||
|
}, |
||||||
|
"/api/{apiVersion}/admin_notifications/{userId}": { |
||||||
|
"parameters": [ |
||||||
|
{ |
||||||
|
"name": "apiVersion", |
||||||
|
"in": "path", |
||||||
|
"required": true, |
||||||
|
"schema": { |
||||||
|
"type": "TODO" |
||||||
|
} |
||||||
|
}, |
||||||
|
{ |
||||||
|
"name": "userId", |
||||||
|
"in": "path", |
||||||
|
"required": true, |
||||||
|
"schema": { |
||||||
|
"type": "string" |
||||||
|
} |
||||||
|
} |
||||||
|
], |
||||||
|
"post": { |
||||||
|
"operationId": "api-generatenotification-TODO", |
||||||
|
"responses": { |
||||||
|
"200": { |
||||||
|
"description": "", |
||||||
|
"content": { |
||||||
|
"application/json": { |
||||||
|
"schema": { |
||||||
|
"type": "string" |
||||||
|
} |
||||||
|
} |
||||||
|
} |
||||||
|
} |
||||||
|
} |
||||||
|
} |
||||||
|
}, |
||||||
|
"/api/{apiVersion}/settings": { |
||||||
|
"parameters": [ |
||||||
|
{ |
||||||
|
"name": "apiVersion", |
||||||
|
"in": "path", |
||||||
|
"required": true, |
||||||
|
"schema": { |
||||||
|
"type": "TODO" |
||||||
|
} |
||||||
|
} |
||||||
|
], |
||||||
|
"post": { |
||||||
|
"operationId": "settings-personal-TODO", |
||||||
|
"responses": { |
||||||
|
"200": { |
||||||
|
"description": "", |
||||||
|
"content": { |
||||||
|
"application/json": { |
||||||
|
"schema": { |
||||||
|
"type": "string" |
||||||
|
} |
||||||
|
} |
||||||
|
} |
||||||
|
} |
||||||
|
} |
||||||
|
} |
||||||
|
} |
||||||
|
} |
||||||
|
} |
Loading…
Reference in new issue