Migrate omsorgapp to browser SPA, add Docker/CI build setup
Docker-Images bauen und veröffentlichen / build (, omsorgCore/Dockerfile, omsorgcore) (push) Successful in 3s
Docker-Images bauen und veröffentlichen / build (, omsorgWeb/Dockerfile, omsorgweb) (push) Failing after 4s
Docker-Images bauen und veröffentlichen / build (VITE_OMSORG_CORE_URL=${{ vars.OMSORG_CORE_PUBLIC_URL }}, omsorgapp/Dockerfile, omsorgapp) (push) Successful in 3s

- omsorgapp: drop Electron, run as a plain Vite/React browser app; refresh
  token moves to an HttpOnly cookie (omsorgCore), CORS added for the new
  browser origin, document download/preview switched to Blob-based browser
  APIs.
- Add Dockerfiles for omsorgCore, omsorgapp, and omsorgWeb, a docker-compose.yml
  wiring Postgres/MySQL/all three apps together, and a Gitea Actions workflow
  that builds and pushes images to the repo's container registry on push to
  main and on version tags.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
This commit is contained in:
Felix Kemmler
2026-08-10 17:42:45 +02:00
co-authored by Claude Sonnet 5
parent e9e96a57dc
commit 598dfcd38a
461 changed files with 59753 additions and 2859 deletions
@@ -0,0 +1,372 @@
# OmsorgCoreClient\AbsencesApi
All URIs are relative to http://localhost, except if the operation defines another base path.
| Method | HTTP request | Description |
| ------------- | ------------- | ------------- |
| [**apiAbsencesGet()**](AbsencesApi.md#apiAbsencesGet) | **GET** /api/absences | |
| [**apiAbsencesIdDecisionPost()**](AbsencesApi.md#apiAbsencesIdDecisionPost) | **POST** /api/absences/{id}/decision | |
| [**apiAbsencesIdDelete()**](AbsencesApi.md#apiAbsencesIdDelete) | **DELETE** /api/absences/{id} | |
| [**apiAbsencesIdGet()**](AbsencesApi.md#apiAbsencesIdGet) | **GET** /api/absences/{id} | |
| [**apiAbsencesIdPut()**](AbsencesApi.md#apiAbsencesIdPut) | **PUT** /api/absences/{id} | |
| [**apiAbsencesPost()**](AbsencesApi.md#apiAbsencesPost) | **POST** /api/absences | |
## `apiAbsencesGet()`
```php
apiAbsencesGet($status, $type, $employee_id, $page, $page_size): \OmsorgCoreClient\Model\AbsenceResponsePagedResponse
```
### Example
```php
<?php
require_once(__DIR__ . '/vendor/autoload.php');
// Configure Bearer (JWT) authorization: Bearer
$config = OmsorgCoreClient\Configuration::getDefaultConfiguration()->setAccessToken('YOUR_ACCESS_TOKEN');
$apiInstance = new OmsorgCoreClient\Api\AbsencesApi(
// If you want use custom http client, pass your client which implements `GuzzleHttp\ClientInterface`.
// This is optional, `GuzzleHttp\Client` will be used as default.
new GuzzleHttp\Client(),
$config
);
$status = 'status_example'; // string
$type = 'type_example'; // string
$employee_id = 'employee_id_example'; // string
$page = 1; // int
$page_size = 20; // int
try {
$result = $apiInstance->apiAbsencesGet($status, $type, $employee_id, $page, $page_size);
print_r($result);
} catch (Exception $e) {
echo 'Exception when calling AbsencesApi->apiAbsencesGet: ', $e->getMessage(), PHP_EOL;
}
```
### Parameters
| Name | Type | Description | Notes |
| ------------- | ------------- | ------------- | ------------- |
| **status** | **string**| | [optional] |
| **type** | **string**| | [optional] |
| **employee_id** | **string**| | [optional] |
| **page** | **int**| | [optional] [default to 1] |
| **page_size** | **int**| | [optional] [default to 20] |
### Return type
[**\OmsorgCoreClient\Model\AbsenceResponsePagedResponse**](../Model/AbsenceResponsePagedResponse.md)
### Authorization
[Bearer](../../README.md#Bearer)
### HTTP request headers
- **Content-Type**: Not defined
- **Accept**: `text/plain`, `application/json`, `text/json`
[[Back to top]](#) [[Back to API list]](../../README.md#endpoints)
[[Back to Model list]](../../README.md#models)
[[Back to README]](../../README.md)
## `apiAbsencesIdDecisionPost()`
```php
apiAbsencesIdDecisionPost($id, $absence_decision_request): \OmsorgCoreClient\Model\AbsenceResponse
```
### Example
```php
<?php
require_once(__DIR__ . '/vendor/autoload.php');
// Configure Bearer (JWT) authorization: Bearer
$config = OmsorgCoreClient\Configuration::getDefaultConfiguration()->setAccessToken('YOUR_ACCESS_TOKEN');
$apiInstance = new OmsorgCoreClient\Api\AbsencesApi(
// If you want use custom http client, pass your client which implements `GuzzleHttp\ClientInterface`.
// This is optional, `GuzzleHttp\Client` will be used as default.
new GuzzleHttp\Client(),
$config
);
$id = 'id_example'; // string
$absence_decision_request = new \OmsorgCoreClient\Model\AbsenceDecisionRequest(); // \OmsorgCoreClient\Model\AbsenceDecisionRequest
try {
$result = $apiInstance->apiAbsencesIdDecisionPost($id, $absence_decision_request);
print_r($result);
} catch (Exception $e) {
echo 'Exception when calling AbsencesApi->apiAbsencesIdDecisionPost: ', $e->getMessage(), PHP_EOL;
}
```
### Parameters
| Name | Type | Description | Notes |
| ------------- | ------------- | ------------- | ------------- |
| **id** | **string**| | |
| **absence_decision_request** | [**\OmsorgCoreClient\Model\AbsenceDecisionRequest**](../Model/AbsenceDecisionRequest.md)| | [optional] |
### Return type
[**\OmsorgCoreClient\Model\AbsenceResponse**](../Model/AbsenceResponse.md)
### Authorization
[Bearer](../../README.md#Bearer)
### HTTP request headers
- **Content-Type**: `application/json`, `text/json`, `application/*+json`
- **Accept**: `text/plain`, `application/json`, `text/json`
[[Back to top]](#) [[Back to API list]](../../README.md#endpoints)
[[Back to Model list]](../../README.md#models)
[[Back to README]](../../README.md)
## `apiAbsencesIdDelete()`
```php
apiAbsencesIdDelete($id)
```
### Example
```php
<?php
require_once(__DIR__ . '/vendor/autoload.php');
// Configure Bearer (JWT) authorization: Bearer
$config = OmsorgCoreClient\Configuration::getDefaultConfiguration()->setAccessToken('YOUR_ACCESS_TOKEN');
$apiInstance = new OmsorgCoreClient\Api\AbsencesApi(
// If you want use custom http client, pass your client which implements `GuzzleHttp\ClientInterface`.
// This is optional, `GuzzleHttp\Client` will be used as default.
new GuzzleHttp\Client(),
$config
);
$id = 'id_example'; // string
try {
$apiInstance->apiAbsencesIdDelete($id);
} catch (Exception $e) {
echo 'Exception when calling AbsencesApi->apiAbsencesIdDelete: ', $e->getMessage(), PHP_EOL;
}
```
### Parameters
| Name | Type | Description | Notes |
| ------------- | ------------- | ------------- | ------------- |
| **id** | **string**| | |
### Return type
void (empty response body)
### Authorization
[Bearer](../../README.md#Bearer)
### HTTP request headers
- **Content-Type**: Not defined
- **Accept**: Not defined
[[Back to top]](#) [[Back to API list]](../../README.md#endpoints)
[[Back to Model list]](../../README.md#models)
[[Back to README]](../../README.md)
## `apiAbsencesIdGet()`
```php
apiAbsencesIdGet($id): \OmsorgCoreClient\Model\AbsenceResponse
```
### Example
```php
<?php
require_once(__DIR__ . '/vendor/autoload.php');
// Configure Bearer (JWT) authorization: Bearer
$config = OmsorgCoreClient\Configuration::getDefaultConfiguration()->setAccessToken('YOUR_ACCESS_TOKEN');
$apiInstance = new OmsorgCoreClient\Api\AbsencesApi(
// If you want use custom http client, pass your client which implements `GuzzleHttp\ClientInterface`.
// This is optional, `GuzzleHttp\Client` will be used as default.
new GuzzleHttp\Client(),
$config
);
$id = 'id_example'; // string
try {
$result = $apiInstance->apiAbsencesIdGet($id);
print_r($result);
} catch (Exception $e) {
echo 'Exception when calling AbsencesApi->apiAbsencesIdGet: ', $e->getMessage(), PHP_EOL;
}
```
### Parameters
| Name | Type | Description | Notes |
| ------------- | ------------- | ------------- | ------------- |
| **id** | **string**| | |
### Return type
[**\OmsorgCoreClient\Model\AbsenceResponse**](../Model/AbsenceResponse.md)
### Authorization
[Bearer](../../README.md#Bearer)
### HTTP request headers
- **Content-Type**: Not defined
- **Accept**: `text/plain`, `application/json`, `text/json`
[[Back to top]](#) [[Back to API list]](../../README.md#endpoints)
[[Back to Model list]](../../README.md#models)
[[Back to README]](../../README.md)
## `apiAbsencesIdPut()`
```php
apiAbsencesIdPut($id, $update_absence_request): \OmsorgCoreClient\Model\AbsenceResponse
```
### Example
```php
<?php
require_once(__DIR__ . '/vendor/autoload.php');
// Configure Bearer (JWT) authorization: Bearer
$config = OmsorgCoreClient\Configuration::getDefaultConfiguration()->setAccessToken('YOUR_ACCESS_TOKEN');
$apiInstance = new OmsorgCoreClient\Api\AbsencesApi(
// If you want use custom http client, pass your client which implements `GuzzleHttp\ClientInterface`.
// This is optional, `GuzzleHttp\Client` will be used as default.
new GuzzleHttp\Client(),
$config
);
$id = 'id_example'; // string
$update_absence_request = new \OmsorgCoreClient\Model\UpdateAbsenceRequest(); // \OmsorgCoreClient\Model\UpdateAbsenceRequest
try {
$result = $apiInstance->apiAbsencesIdPut($id, $update_absence_request);
print_r($result);
} catch (Exception $e) {
echo 'Exception when calling AbsencesApi->apiAbsencesIdPut: ', $e->getMessage(), PHP_EOL;
}
```
### Parameters
| Name | Type | Description | Notes |
| ------------- | ------------- | ------------- | ------------- |
| **id** | **string**| | |
| **update_absence_request** | [**\OmsorgCoreClient\Model\UpdateAbsenceRequest**](../Model/UpdateAbsenceRequest.md)| | [optional] |
### Return type
[**\OmsorgCoreClient\Model\AbsenceResponse**](../Model/AbsenceResponse.md)
### Authorization
[Bearer](../../README.md#Bearer)
### HTTP request headers
- **Content-Type**: `application/json`, `text/json`, `application/*+json`
- **Accept**: `text/plain`, `application/json`, `text/json`
[[Back to top]](#) [[Back to API list]](../../README.md#endpoints)
[[Back to Model list]](../../README.md#models)
[[Back to README]](../../README.md)
## `apiAbsencesPost()`
```php
apiAbsencesPost($create_absence_request): \OmsorgCoreClient\Model\AbsenceResponse
```
### Example
```php
<?php
require_once(__DIR__ . '/vendor/autoload.php');
// Configure Bearer (JWT) authorization: Bearer
$config = OmsorgCoreClient\Configuration::getDefaultConfiguration()->setAccessToken('YOUR_ACCESS_TOKEN');
$apiInstance = new OmsorgCoreClient\Api\AbsencesApi(
// If you want use custom http client, pass your client which implements `GuzzleHttp\ClientInterface`.
// This is optional, `GuzzleHttp\Client` will be used as default.
new GuzzleHttp\Client(),
$config
);
$create_absence_request = new \OmsorgCoreClient\Model\CreateAbsenceRequest(); // \OmsorgCoreClient\Model\CreateAbsenceRequest
try {
$result = $apiInstance->apiAbsencesPost($create_absence_request);
print_r($result);
} catch (Exception $e) {
echo 'Exception when calling AbsencesApi->apiAbsencesPost: ', $e->getMessage(), PHP_EOL;
}
```
### Parameters
| Name | Type | Description | Notes |
| ------------- | ------------- | ------------- | ------------- |
| **create_absence_request** | [**\OmsorgCoreClient\Model\CreateAbsenceRequest**](../Model/CreateAbsenceRequest.md)| | [optional] |
### Return type
[**\OmsorgCoreClient\Model\AbsenceResponse**](../Model/AbsenceResponse.md)
### Authorization
[Bearer](../../README.md#Bearer)
### HTTP request headers
- **Content-Type**: `application/json`, `text/json`, `application/*+json`
- **Accept**: `text/plain`, `application/json`, `text/json`
[[Back to top]](#) [[Back to API list]](../../README.md#endpoints)
[[Back to Model list]](../../README.md#models)
[[Back to README]](../../README.md)