build(OpenApi): adapt to updated openapi generator

Signed-off-by: Arthur Schiwon <blizzz@arthur-schiwon.de>
This commit is contained in:
Arthur Schiwon
2025-07-16 21:29:21 +02:00
parent 79c15dff51
commit 31a9e3a92b
8 changed files with 625 additions and 109 deletions

View File

@ -36,7 +36,7 @@ class Capabilities implements ICapability {
/**
*
* @return array{tables: array{enabled: bool, version: string, apiVersions: string[], features: string[], isCirclesEnabled: bool, column_types: string[]}}
* @return array{tables: array{enabled: bool, version: string, apiVersions: list<string>, features: list<string>, isCirclesEnabled: bool, column_types: list<string>}}
*
* @inheritDoc
*/

View File

@ -33,6 +33,7 @@ use OCP\AppFramework\Http;
use OCP\AppFramework\Http\Attribute\CORS;
use OCP\AppFramework\Http\Attribute\NoAdminRequired;
use OCP\AppFramework\Http\Attribute\NoCSRFRequired;
use OCP\AppFramework\Http\Attribute\OpenAPI;
use OCP\AppFramework\Http\DataResponse;
use OCP\IL10N;
use OCP\IRequest;
@ -99,13 +100,14 @@ class Api1Controller extends ApiController {
/**
* Returns all Tables
*
* @return DataResponse<Http::STATUS_OK, TablesTable[], array{}>|DataResponse<Http::STATUS_INTERNAL_SERVER_ERROR, array{message: string}, array{}>
* @return DataResponse<Http::STATUS_OK, list<TablesTable>, array{}>|DataResponse<Http::STATUS_INTERNAL_SERVER_ERROR, array{message: string}, array{}>
*
* 200: Tables returned
*/
#[NoAdminRequired]
#[NoCSRFRequired]
#[CORS]
#[OpenAPI(scope: OpenAPI::SCOPE_DEFAULT)]
public function index(): DataResponse {
try {
return new DataResponse($this->tableService->formatTables($this->tableService->findAll($this->userId)));
@ -130,6 +132,7 @@ class Api1Controller extends ApiController {
#[NoAdminRequired]
#[NoCSRFRequired]
#[CORS]
#[OpenAPI(scope: OpenAPI::SCOPE_DEFAULT)]
public function createTable(string $title, ?string $emoji, string $template = 'custom'): DataResponse {
try {
return new DataResponse($this->tableService->create($title, $template, $emoji)->jsonSerialize());
@ -154,6 +157,7 @@ class Api1Controller extends ApiController {
#[NoCSRFRequired]
#[CORS]
#[RequirePermission(permission: Application::PERMISSION_READ, type: Application::NODE_TYPE_TABLE, idParam: 'tableId')]
#[OpenAPI(scope: OpenAPI::SCOPE_DEFAULT)]
public function showScheme(int $tableId): DataResponse {
try {
$scheme = $this->tableService->getScheme($tableId, $this->userId);
@ -187,6 +191,7 @@ class Api1Controller extends ApiController {
#[NoCSRFRequired]
#[CORS]
#[RequirePermission(permission: Application::PERMISSION_READ, type: Application::NODE_TYPE_TABLE, idParam: 'tableId')]
#[OpenAPI(scope: OpenAPI::SCOPE_DEFAULT)]
public function getTable(int $tableId): DataResponse {
try {
return new DataResponse($this->tableService->find($tableId)->jsonSerialize());
@ -222,6 +227,7 @@ class Api1Controller extends ApiController {
#[NoCSRFRequired]
#[CORS]
#[RequirePermission(permission: Application::PERMISSION_MANAGE, type: Application::NODE_TYPE_TABLE, idParam: 'tableId')]
#[OpenAPI(scope: OpenAPI::SCOPE_DEFAULT)]
public function updateTable(int $tableId, ?string $title = null, ?string $emoji = null, ?bool $archived = false): DataResponse {
try {
return new DataResponse($this->tableService->update($tableId, $title, $emoji, null, $archived, $this->userId)->jsonSerialize());
@ -254,6 +260,7 @@ class Api1Controller extends ApiController {
#[NoCSRFRequired]
#[CORS]
#[RequirePermission(permission: Application::PERMISSION_MANAGE, type: Application::NODE_TYPE_TABLE, idParam: 'tableId')]
#[OpenAPI(scope: OpenAPI::SCOPE_DEFAULT)]
public function deleteTable(int $tableId): DataResponse {
try {
return new DataResponse($this->tableService->delete($tableId)->jsonSerialize());
@ -278,7 +285,7 @@ class Api1Controller extends ApiController {
* Get all views for a table
*
* @param int $tableId Table ID
* @return DataResponse<Http::STATUS_OK, TablesView[], array{}>|DataResponse<Http::STATUS_FORBIDDEN|Http::STATUS_INTERNAL_SERVER_ERROR|Http::STATUS_NOT_FOUND, array{message: string}, array{}>
* @return DataResponse<Http::STATUS_OK, list<TablesView>, array{}>|DataResponse<Http::STATUS_FORBIDDEN|Http::STATUS_INTERNAL_SERVER_ERROR|Http::STATUS_NOT_FOUND, array{message: string}, array{}>
*
* 200: Views returned
* 403: No permissions
@ -288,6 +295,7 @@ class Api1Controller extends ApiController {
#[NoCSRFRequired]
#[CORS]
#[RequirePermission(permission: Application::PERMISSION_READ, type: Application::NODE_TYPE_TABLE, idParam: 'tableId')]
#[OpenAPI(scope: OpenAPI::SCOPE_DEFAULT)]
public function indexViews(int $tableId): DataResponse {
try {
return new DataResponse($this->viewService->formatViews($this->viewService->findAll($this->tableService->find($tableId))));
@ -323,6 +331,7 @@ class Api1Controller extends ApiController {
#[NoCSRFRequired]
#[CORS]
#[RequirePermission(permission: Application::PERMISSION_MANAGE, type: Application::NODE_TYPE_TABLE, idParam: 'tableId')]
#[OpenAPI(scope: OpenAPI::SCOPE_DEFAULT)]
public function createView(int $tableId, string $title, ?string $emoji): DataResponse {
try {
return new DataResponse($this->viewService->create($title, $emoji, $this->tableService->find($tableId))->jsonSerialize());
@ -351,6 +360,7 @@ class Api1Controller extends ApiController {
#[NoCSRFRequired]
#[CORS]
#[RequirePermission(permission: Application::PERMISSION_READ, type: Application::NODE_TYPE_VIEW, idParam: 'viewId')]
#[OpenAPI(scope: OpenAPI::SCOPE_DEFAULT)]
public function getView(int $viewId): DataResponse {
try {
return new DataResponse($this->viewService->find($viewId)->jsonSerialize());
@ -373,8 +383,8 @@ class Api1Controller extends ApiController {
* Update a view via key-value sets
*
* @param int $viewId View ID
* @param array{key: 'title'|'emoji'|'description', value: string}|array{key: 'columns', value: int[]}|array{key: 'sort', value: array{columnId: int, mode: 'ASC'|'DESC'}}|array{key: 'filter', value: array{columnId: int, operator: 'begins-with'|'ends-with'|'contains'|'is-equal'|'is-greater-than'|'is-greater-than-or-equal'|'is-lower-than'|'is-lower-than-or-equal'|'is-empty', value: string|int|float}} $data key-value pairs
* @return DataResponse<Http::STATUS_OK, TablesView, array{}>|DataResponse<Http::STATUS_FORBIDDEN|Http::STATUS_BAD_REQUEST|Http::STATUS_INTERNAL_SERVER_ERROR, array{message: string}, array{}>
* @param array{key: 'title'|'emoji'|'description', value: string}|array{key: 'columns', value: list<int>}|array{key: 'sort', value: array{columnId: int, mode: 'ASC'|'DESC'}}|array{key: 'filter', value: array{columnId: int, operator: 'begins-with'|'ends-with'|'contains'|'is-equal'|'is-greater-than'|'is-greater-than-or-equal'|'is-lower-than'|'is-lower-than-or-equal'|'is-empty', value: string|int|float}} $data key-value pairs
* @return DataResponse<Http::STATUS_OK, TablesView, array{}>|DataResponse<Http::STATUS_FORBIDDEN|Http::STATUS_NOT_FOUND|Http::STATUS_BAD_REQUEST|Http::STATUS_INTERNAL_SERVER_ERROR, array{message: string}, array{}>
*
* 200: View updated
* 400: Invalid data
@ -385,6 +395,7 @@ class Api1Controller extends ApiController {
#[NoCSRFRequired]
#[CORS]
#[RequirePermission(permission: Application::PERMISSION_MANAGE, type: Application::NODE_TYPE_VIEW, idParam: 'viewId')]
#[OpenAPI(scope: OpenAPI::SCOPE_DEFAULT)]
public function updateView(int $viewId, array $data): DataResponse {
try {
return new DataResponse($this->viewService->update($viewId, $data)->jsonSerialize());
@ -417,6 +428,7 @@ class Api1Controller extends ApiController {
#[NoCSRFRequired]
#[CORS]
#[RequirePermission(permission: Application::PERMISSION_MANAGE, type: Application::NODE_TYPE_VIEW, idParam: 'viewId')]
#[OpenAPI(scope: OpenAPI::SCOPE_DEFAULT)]
public function deleteView(int $viewId): DataResponse {
try {
return new DataResponse($this->viewService->delete($viewId)->jsonSerialize());
@ -450,6 +462,7 @@ class Api1Controller extends ApiController {
#[NoAdminRequired]
#[NoCSRFRequired]
#[CORS]
#[OpenAPI(scope: OpenAPI::SCOPE_DEFAULT)]
public function getShare(int $shareId): DataResponse {
try {
return new DataResponse($this->shareService->find($shareId)->jsonSerialize());
@ -473,13 +486,14 @@ class Api1Controller extends ApiController {
* Will be empty if view does not exist
*
* @param int $viewId View ID
* @return DataResponse<Http::STATUS_OK, TablesShare[], array{}>|DataResponse<Http::STATUS_INTERNAL_SERVER_ERROR, array{message: string}, array{}>
* @return DataResponse<Http::STATUS_OK, list<TablesShare>, array{}>|DataResponse<Http::STATUS_INTERNAL_SERVER_ERROR, array{message: string}, array{}>
*
* 200: Shares returned
*/
#[NoAdminRequired]
#[NoCSRFRequired]
#[CORS]
#[OpenAPI(scope: OpenAPI::SCOPE_DEFAULT)]
public function indexViewShares(int $viewId): DataResponse {
try {
return new DataResponse($this->shareService->formatShares($this->shareService->findAll('view', $viewId)));
@ -495,13 +509,14 @@ class Api1Controller extends ApiController {
* Will be empty if table does not exist
*
* @param int $tableId Table ID
* @return DataResponse<Http::STATUS_OK, TablesShare[], array{}>|DataResponse<Http::STATUS_INTERNAL_SERVER_ERROR, array{message: string}, array{}>
* @return DataResponse<Http::STATUS_OK, list<TablesShare>, array{}>|DataResponse<Http::STATUS_INTERNAL_SERVER_ERROR, array{message: string}, array{}>
*
* 200: Shares returned
*/
#[NoAdminRequired]
#[NoCSRFRequired]
#[CORS]
#[OpenAPI(scope: OpenAPI::SCOPE_DEFAULT)]
public function indexTableShares(int $tableId): DataResponse {
try {
return new DataResponse($this->shareService->formatShares($this->shareService->findAll('table', $tableId)));
@ -536,6 +551,7 @@ class Api1Controller extends ApiController {
#[NoCSRFRequired]
#[CORS]
#[RequirePermission(permission: Application::PERMISSION_MANAGE)]
#[OpenAPI(scope: OpenAPI::SCOPE_DEFAULT)]
public function createShare(
int $nodeId,
string $nodeType,
@ -590,6 +606,7 @@ class Api1Controller extends ApiController {
#[NoAdminRequired]
#[NoCSRFRequired]
#[CORS]
#[OpenAPI(scope: OpenAPI::SCOPE_DEFAULT)]
public function deleteShare(int $shareId): DataResponse {
try {
return new DataResponse($this->shareService->delete($shareId)->jsonSerialize());
@ -623,6 +640,7 @@ class Api1Controller extends ApiController {
#[NoAdminRequired]
#[NoCSRFRequired]
#[CORS]
#[OpenAPI(scope: OpenAPI::SCOPE_DEFAULT)]
public function updateSharePermissions(int $shareId, string $permissionType, bool $permissionValue): DataResponse {
try {
return new DataResponse($this->shareService->updatePermission($shareId, $permissionType, $permissionValue)->jsonSerialize());
@ -660,6 +678,7 @@ class Api1Controller extends ApiController {
#[NoAdminRequired]
#[NoCSRFRequired]
#[CORS]
#[OpenAPI(scope: OpenAPI::SCOPE_DEFAULT)]
public function updateShareDisplayMode(int $shareId, int $displayMode, string $target = 'default'): DataResponse {
if ($target === 'default') {
$userId = '';
@ -697,7 +716,7 @@ class Api1Controller extends ApiController {
*
* @param int $tableId Table ID
* @param int|null $viewId View ID
* @return DataResponse<Http::STATUS_OK, TablesColumn[], array{}>|DataResponse<Http::STATUS_FORBIDDEN|Http::STATUS_INTERNAL_SERVER_ERROR|Http::STATUS_NOT_FOUND, array{message: string}, array{}>
* @return DataResponse<Http::STATUS_OK, list<TablesColumn>, array{}>|DataResponse<Http::STATUS_FORBIDDEN|Http::STATUS_INTERNAL_SERVER_ERROR|Http::STATUS_NOT_FOUND, array{message: string}, array{}>
*
* 200: View deleted
* 403: No permissions
@ -706,6 +725,7 @@ class Api1Controller extends ApiController {
#[NoAdminRequired]
#[NoCSRFRequired]
#[CORS]
#[OpenAPI(scope: OpenAPI::SCOPE_DEFAULT)]
public function indexTableColumns(int $tableId, ?int $viewId): DataResponse {
try {
try {
@ -743,7 +763,7 @@ class Api1Controller extends ApiController {
* Return an empty array if no columns were found
*
* @param int $viewId View ID
* @return DataResponse<Http::STATUS_OK, TablesColumn[], array{}>|DataResponse<Http::STATUS_FORBIDDEN|Http::STATUS_INTERNAL_SERVER_ERROR|Http::STATUS_NOT_FOUND, array{message: string}, array{}>
* @return DataResponse<Http::STATUS_OK, list<TablesColumn>, array{}>|DataResponse<Http::STATUS_FORBIDDEN|Http::STATUS_INTERNAL_SERVER_ERROR|Http::STATUS_NOT_FOUND, array{message: string}, array{}>
*
* 200: View deleted
* 403: No permissions
@ -753,6 +773,7 @@ class Api1Controller extends ApiController {
#[NoCSRFRequired]
#[CORS]
#[RequirePermission(permission: Application::PERMISSION_READ, type: Application::NODE_TYPE_VIEW, idParam: 'viewId')]
#[OpenAPI(scope: OpenAPI::SCOPE_DEFAULT)]
public function indexViewColumns(int $viewId): DataResponse {
try {
return new DataResponse($this->columnService->formatColumns($this->columnService->findAllByView($viewId)));
@ -791,7 +812,7 @@ class Api1Controller extends ApiController {
* @param string|null $textAllowedPattern Allowed pattern (regex) for text columns (not yet implemented)
* @param int|null $textMaxLength Max length, if column is a text
* @param string|null $selectionOptions Options for a selection (json array{id: int, label: string})
* @param string|null $selectionDefault Default option IDs for a selection (json int[])
* @param string|null $selectionDefault Default option IDs for a selection (json list<int>)
* @param string|null $datetimeDefault Default value, if column is datetime
* @param string|null $usergroupDefault Default value, if column is usergroup (json array{id: string, type: int})
* @param bool|null $usergroupMultipleItems Can select multiple users or/and groups, if column is usergroup
@ -799,7 +820,7 @@ class Api1Controller extends ApiController {
* @param bool|null $usergroupSelectGroups Can select groups, if column type is usergroup
* @param bool|null $usergroupSelectTeams Can select teams, if column type is usergroup
* @param bool|null $usergroupShowUserStatus Whether to show the user's status, if column type is usergroup
* @param int[]|null $selectedViewIds View IDs where this column should be added to be presented
* @param list<int>|null $selectedViewIds View IDs where this column should be added to be presented
*
* @return DataResponse<Http::STATUS_OK, TablesColumn, array{}>|DataResponse<Http::STATUS_FORBIDDEN|Http::STATUS_INTERNAL_SERVER_ERROR|Http::STATUS_NOT_FOUND, array{message: string}, array{}>
*
@ -810,6 +831,7 @@ class Api1Controller extends ApiController {
#[NoAdminRequired]
#[NoCSRFRequired]
#[CORS]
#[OpenAPI(scope: OpenAPI::SCOPE_DEFAULT)]
public function createColumn(
?int $tableId,
?int $viewId,
@ -908,7 +930,7 @@ class Api1Controller extends ApiController {
* @param string|null $textAllowedPattern Allowed pattern (regex) for text columns (not yet implemented)
* @param int|null $textMaxLength Max length, if column is a text
* @param string|null $selectionOptions Options for a selection (json array{id: int, label: string})
* @param string|null $selectionDefault Default option IDs for a selection (json int[])
* @param string|null $selectionDefault Default option IDs for a selection (json list<int>)
* @param string|null $datetimeDefault Default value, if column is datetime
* @param string|null $usergroupDefault Default value, if column is usergroup
* @param bool|null $usergroupMultipleItems Can select multiple users or/and groups, if column is usergroup
@ -924,6 +946,7 @@ class Api1Controller extends ApiController {
#[NoAdminRequired]
#[NoCSRFRequired]
#[CORS]
#[OpenAPI(scope: OpenAPI::SCOPE_DEFAULT)]
public function updateColumn(
int $columnId,
?string $title,
@ -1005,6 +1028,7 @@ class Api1Controller extends ApiController {
#[NoAdminRequired]
#[NoCSRFRequired]
#[CORS]
#[OpenAPI(scope: OpenAPI::SCOPE_DEFAULT)]
public function getColumn(int $columnId): DataResponse {
try {
return new DataResponse($this->columnService->find($columnId)->jsonSerialize());
@ -1036,6 +1060,7 @@ class Api1Controller extends ApiController {
#[NoAdminRequired]
#[NoCSRFRequired]
#[CORS]
#[OpenAPI(scope: OpenAPI::SCOPE_DEFAULT)]
public function deleteColumn(int $columnId): DataResponse {
try {
return new DataResponse($this->columnService->delete($columnId)->jsonSerialize());
@ -1060,7 +1085,7 @@ class Api1Controller extends ApiController {
* @param int $tableId Table ID
* @param int|null $limit Limit
* @param int|null $offset Offset
* @return DataResponse<Http::STATUS_OK, string[], array{}>|DataResponse<Http::STATUS_FORBIDDEN|Http::STATUS_INTERNAL_SERVER_ERROR|Http::STATUS_NOT_FOUND, array{message: string}, array{}>
* @return DataResponse<Http::STATUS_OK, list<string>, array{}>|DataResponse<Http::STATUS_FORBIDDEN|Http::STATUS_INTERNAL_SERVER_ERROR|Http::STATUS_NOT_FOUND, array{message: string}, array{}>
*
* 200: Row values returned
* 403: No permissions
@ -1070,6 +1095,7 @@ class Api1Controller extends ApiController {
#[NoCSRFRequired]
#[CORS]
#[RequirePermission(permission: Application::PERMISSION_READ, type: Application::NODE_TYPE_TABLE, idParam: 'tableId')]
#[OpenAPI(scope: OpenAPI::SCOPE_DEFAULT)]
public function indexTableRowsSimple(int $tableId, ?int $limit, ?int $offset): DataResponse {
try {
return new DataResponse($this->v1Api->getData($tableId, $limit, $offset, $this->userId));
@ -1090,7 +1116,7 @@ class Api1Controller extends ApiController {
* @param int $tableId Table ID
* @param int|null $limit Limit
* @param int|null $offset Offset
* @return DataResponse<Http::STATUS_OK, TablesRow[], array{}>|DataResponse<Http::STATUS_FORBIDDEN|Http::STATUS_INTERNAL_SERVER_ERROR|Http::STATUS_NOT_FOUND, array{message: string}, array{}>
* @return DataResponse<Http::STATUS_OK, list<TablesRow>, array{}>|DataResponse<Http::STATUS_FORBIDDEN|Http::STATUS_INTERNAL_SERVER_ERROR|Http::STATUS_NOT_FOUND, array{message: string}, array{}>
*
* 200: Rows returned
* 403: No permissions
@ -1100,6 +1126,7 @@ class Api1Controller extends ApiController {
#[NoCSRFRequired]
#[CORS]
#[RequirePermission(permission: Application::PERMISSION_READ, type: Application::NODE_TYPE_TABLE, idParam: 'tableId')]
#[OpenAPI(scope: OpenAPI::SCOPE_DEFAULT)]
public function indexTableRows(int $tableId, ?int $limit, ?int $offset): DataResponse {
try {
return new DataResponse($this->rowService->formatRows($this->rowService->findAllByTable($tableId, $this->userId, $limit, $offset)));
@ -1120,7 +1147,7 @@ class Api1Controller extends ApiController {
* @param int $viewId View ID
* @param int|null $limit Limit
* @param int|null $offset Offset
* @return DataResponse<Http::STATUS_OK, TablesRow[], array{}>|DataResponse<Http::STATUS_FORBIDDEN|Http::STATUS_INTERNAL_SERVER_ERROR|Http::STATUS_NOT_FOUND, array{message: string}, array{}>
* @return DataResponse<Http::STATUS_OK, list<TablesRow>, array{}>|DataResponse<Http::STATUS_FORBIDDEN|Http::STATUS_INTERNAL_SERVER_ERROR|Http::STATUS_NOT_FOUND, array{message: string}, array{}>
*
* 200: Rows returned
* 403: No permissions
@ -1130,6 +1157,7 @@ class Api1Controller extends ApiController {
#[NoCSRFRequired]
#[CORS]
#[RequirePermission(permission: Application::PERMISSION_READ, type: Application::NODE_TYPE_VIEW, idParam: 'viewId')]
#[OpenAPI(scope: OpenAPI::SCOPE_DEFAULT)]
public function indexViewRows(int $viewId, ?int $limit, ?int $offset): DataResponse {
try {
return new DataResponse($this->rowService->formatRows($this->rowService->findAllByView($viewId, $this->userId, $limit, $offset)));
@ -1158,6 +1186,7 @@ class Api1Controller extends ApiController {
#[NoCSRFRequired]
#[CORS]
#[RequirePermission(permission: Application::PERMISSION_CREATE, type: Application::NODE_TYPE_VIEW, idParam: 'viewId')]
#[OpenAPI(scope: OpenAPI::SCOPE_DEFAULT)]
public function createRowInView(int $viewId, $data): DataResponse {
if (is_string($data)) {
$data = json_decode($data, true);
@ -1194,7 +1223,7 @@ class Api1Controller extends ApiController {
*
* @param int $tableId Table ID
* @param string|array<string, mixed> $data Data as key - value store
* @return DataResponse<Http::STATUS_OK, TablesRow, array{}>|DataResponse<Http::STATUS_FORBIDDEN|Http::STATUS_INTERNAL_SERVER_ERROR, array{message: string}, array{}>
* @return DataResponse<Http::STATUS_OK, TablesRow, array{}>|DataResponse<Http::STATUS_FORBIDDEN|Http::STATUS_NOT_FOUND|Http::STATUS_INTERNAL_SERVER_ERROR, array{message: string}, array{}>
*
* 200: Row returned
* 403: No permissions
@ -1204,6 +1233,7 @@ class Api1Controller extends ApiController {
#[NoCSRFRequired]
#[CORS]
#[RequirePermission(permission: Application::PERMISSION_CREATE, type: Application::NODE_TYPE_TABLE, idParam: 'tableId')]
#[OpenAPI(scope: OpenAPI::SCOPE_DEFAULT)]
public function createRowInTable(int $tableId, $data): DataResponse {
if (is_string($data)) {
$data = json_decode($data, true);
@ -1248,6 +1278,7 @@ class Api1Controller extends ApiController {
#[NoAdminRequired]
#[NoCSRFRequired]
#[CORS]
#[OpenAPI(scope: OpenAPI::SCOPE_DEFAULT)]
public function getRow(int $rowId): DataResponse {
try {
return new DataResponse($this->rowService->find($rowId)->jsonSerialize());
@ -1282,6 +1313,7 @@ class Api1Controller extends ApiController {
#[NoAdminRequired]
#[NoCSRFRequired]
#[CORS]
#[OpenAPI(scope: OpenAPI::SCOPE_DEFAULT)]
public function updateRow(int $rowId, ?int $viewId, $data): DataResponse {
if (is_string($data)) {
$data = json_decode($data, true);
@ -1322,6 +1354,7 @@ class Api1Controller extends ApiController {
#[NoAdminRequired]
#[NoCSRFRequired]
#[CORS]
#[OpenAPI(scope: OpenAPI::SCOPE_DEFAULT)]
public function deleteRow(int $rowId): DataResponse {
try {
return new DataResponse($this->rowService->delete($rowId, null, $this->userId)->jsonSerialize());
@ -1354,6 +1387,7 @@ class Api1Controller extends ApiController {
#[NoAdminRequired]
#[NoCSRFRequired]
#[CORS]
#[OpenAPI(scope: OpenAPI::SCOPE_DEFAULT)]
public function deleteRowByView(int $rowId, int $viewId): DataResponse {
try {
return new DataResponse($this->rowService->delete($rowId, $viewId, $this->userId)->jsonSerialize());
@ -1388,6 +1422,7 @@ class Api1Controller extends ApiController {
#[NoCSRFRequired]
#[CORS]
#[RequirePermission(permission: Application::PERMISSION_CREATE, type: Application::NODE_TYPE_TABLE, idParam: 'tableId')]
#[OpenAPI(scope: OpenAPI::SCOPE_DEFAULT)]
public function importInTable(int $tableId, string $path, bool $createMissingColumns = true): DataResponse {
try {
// minimal permission is checked, creating columns requires MANAGE permissions - currently tested on service layer
@ -1423,6 +1458,7 @@ class Api1Controller extends ApiController {
#[NoCSRFRequired]
#[CORS]
#[RequirePermission(permission: Application::PERMISSION_CREATE, type: Application::NODE_TYPE_VIEW, idParam: 'viewId')]
#[OpenAPI(scope: OpenAPI::SCOPE_DEFAULT)]
public function importInView(int $viewId, string $path, bool $createMissingColumns = true): DataResponse {
try {
// minimal permission is checked, creating columns requires MANAGE permissions - currently tested on service layer
@ -1465,6 +1501,7 @@ class Api1Controller extends ApiController {
#[NoCSRFRequired]
#[CORS]
#[RequirePermission(permission: Application::PERMISSION_MANAGE, type: Application::NODE_TYPE_TABLE, idParam: 'tableId')]
#[OpenAPI(scope: OpenAPI::SCOPE_DEFAULT)]
public function createTableShare(int $tableId, string $receiver, string $receiverType, bool $permissionRead, bool $permissionCreate, bool $permissionUpdate, bool $permissionDelete, bool $permissionManage): DataResponse {
try {
return new DataResponse(
@ -1515,7 +1552,7 @@ class Api1Controller extends ApiController {
* @param string|null $textAllowedPattern Allowed pattern (regex) for text columns (not yet implemented)
* @param int|null $textMaxLength Max length, if column is a text
* @param string|null $selectionOptions Options for a selection (json array{id: int, label: string})
* @param string|null $selectionDefault Default option IDs for a selection (json int[])
* @param string|null $selectionDefault Default option IDs for a selection (json list<int>)
* @param string|null $datetimeDefault Default value, if column is datetime
* @param string|null $usergroupDefault Default value, if column is usergroup
* @param bool|null $usergroupMultipleItems Can select multiple users or/and groups, if column is usergroup
@ -1523,7 +1560,7 @@ class Api1Controller extends ApiController {
* @param bool|null $usergroupSelectGroups Can select groups, if column type is usergroup
* @param bool|null $usergroupSelectTeams Can select teams, if column type is usergroup
* @param bool|null $usergroupShowUserStatus Whether to show the user's status, if column type is usergroup
* @param int[]|null $selectedViewIds View IDs where this column should be added to be presented
* @param list<int>|null $selectedViewIds View IDs where this column should be added to be presented
*
* @return DataResponse<Http::STATUS_OK, TablesColumn, array{}>|DataResponse<Http::STATUS_FORBIDDEN|Http::STATUS_INTERNAL_SERVER_ERROR|Http::STATUS_NOT_FOUND, array{message: string}, array{}>
*
@ -1535,6 +1572,7 @@ class Api1Controller extends ApiController {
#[NoCSRFRequired]
#[CORS]
#[RequirePermission(permission: Application::PERMISSION_MANAGE, type: Application::NODE_TYPE_TABLE, idParam: 'tableId')]
#[OpenAPI(scope: OpenAPI::SCOPE_DEFAULT)]
public function createTableColumn(
int $tableId,
string $title,

View File

@ -44,7 +44,7 @@ class ApiColumnsController extends AOCSController {
*
* @param int $nodeId Node ID
* @param 'table'|'view' $nodeType Node type
* @return DataResponse<Http::STATUS_OK, TablesColumn[], array{}>|DataResponse<Http::STATUS_FORBIDDEN|Http::STATUS_INTERNAL_SERVER_ERROR|Http::STATUS_NOT_FOUND, array{message: string}, array{}>
* @return DataResponse<Http::STATUS_OK, list<TablesColumn>, array{}>|DataResponse<Http::STATUS_FORBIDDEN|Http::STATUS_INTERNAL_SERVER_ERROR|Http::STATUS_NOT_FOUND, array{message: string}, array{}>
*
* 200: View deleted
* 403: No permissions
@ -111,7 +111,7 @@ class ApiColumnsController extends AOCSController {
* @param float|null $numberMax Max
* @param 'progress'|'stars'|null $subtype Subtype for the new column
* @param string|null $description Description
* @param int[]|null $selectedViewIds View IDs where this columns should be added
* @param list<int>|null $selectedViewIds View IDs where this columns should be added
* @return DataResponse<Http::STATUS_OK, TablesColumn, array{}>|DataResponse<Http::STATUS_FORBIDDEN|Http::STATUS_INTERNAL_SERVER_ERROR|Http::STATUS_NOT_FOUND, array{message: string}, array{}>
*
* 200: Column created
@ -160,7 +160,7 @@ class ApiColumnsController extends AOCSController {
* @param int|null $textMaxLength Max raw text length
* @param 'progress'|'stars'|null $subtype Subtype for the new column
* @param string|null $description Description
* @param int[]|null $selectedViewIds View IDs where this columns should be added
* @param list<int>|null $selectedViewIds View IDs where this columns should be added
* @param boolean $mandatory Is mandatory
* @param 'table'|'view' $baseNodeType Context type of the column creation
* @return DataResponse<Http::STATUS_OK, TablesColumn, array{}>|DataResponse<Http::STATUS_FORBIDDEN|Http::STATUS_INTERNAL_SERVER_ERROR|Http::STATUS_NOT_FOUND, array{message: string}, array{}>
@ -204,10 +204,10 @@ class ApiColumnsController extends AOCSController {
* @param int $baseNodeId Context of the column creation
* @param string $title Title
* @param string $selectionOptions Json array{id: int, label: string} with options that can be selected, eg [{"id": 1, "label": "first"},{"id": 2, "label": "second"}]
* @param string|null $selectionDefault Json int|int[] for default selected option(s), eg 5 or ["1", "8"]
* @param string|null $selectionDefault Json int|list<int> for default selected option(s), eg 5 or ["1", "8"]
* @param 'progress'|'stars'|null $subtype Subtype for the new column
* @param string|null $description Description
* @param int[]|null $selectedViewIds View IDs where this columns should be added
* @param list<int>|null $selectedViewIds View IDs where this columns should be added
* @param boolean $mandatory Is mandatory
* @param 'table'|'view' $baseNodeType Context type of the column creation
* @return DataResponse<Http::STATUS_OK, TablesColumn, array{}>|DataResponse<Http::STATUS_FORBIDDEN|Http::STATUS_INTERNAL_SERVER_ERROR|Http::STATUS_NOT_FOUND, array{message: string}, array{}>
@ -252,7 +252,7 @@ class ApiColumnsController extends AOCSController {
* @param 'today'|'now'|null $datetimeDefault For a subtype 'date' you can set 'today'. For a main type or subtype 'time' you can set to 'now'.
* @param 'progress'|'stars'|null $subtype Subtype for the new column
* @param string|null $description Description
* @param int[]|null $selectedViewIds View IDs where this columns should be added
* @param list<int>|null $selectedViewIds View IDs where this columns should be added
* @param boolean $mandatory Is mandatory
* @param 'table'|'view' $baseNodeType Context type of the column creation
* @return DataResponse<Http::STATUS_OK, TablesColumn, array{}>|DataResponse<Http::STATUS_FORBIDDEN|Http::STATUS_INTERNAL_SERVER_ERROR|Http::STATUS_NOT_FOUND, array{message: string}, array{}>
@ -298,7 +298,7 @@ class ApiColumnsController extends AOCSController {
* @param boolean $usergroupSelectTeams Whether you can select teams
* @param boolean $showUserStatus Whether to show the user's status
* @param string|null $description Description
* @param int[]|null $selectedViewIds View IDs where this columns should be added
* @param list<int>|null $selectedViewIds View IDs where this columns should be added
* @param boolean $mandatory Is mandatory
* @param 'table'|'view' $baseNodeType Context type of the column creation
* @return DataResponse<Http::STATUS_OK, TablesColumn, array{}>|DataResponse<Http::STATUS_FORBIDDEN|Http::STATUS_INTERNAL_SERVER_ERROR|Http::STATUS_NOT_FOUND, array{message: string}, array{}>

View File

@ -60,7 +60,7 @@ class ApiTablesController extends AOCSController {
/**
* [api v2] Returns all Tables
*
* @return DataResponse<Http::STATUS_OK, TablesTable[], array{}>|DataResponse<Http::STATUS_INTERNAL_SERVER_ERROR, array{message: string}, array{}>
* @return DataResponse<Http::STATUS_OK, list<TablesTable>, array{}>|DataResponse<Http::STATUS_INTERNAL_SERVER_ERROR, array{message: string}, array{}>
*
* 200: Tables returned
*/
@ -127,8 +127,8 @@ class ApiTablesController extends AOCSController {
* @param string $title title of new table
* @param string $emoji emoji
* @param string $description description
* @param array<TablesColumn > $columns columns
* @param array<TablesView> $views views
* @param list<TablesColumn> $columns columns
* @param list<TablesView> $views views
* @return DataResponse<Http::STATUS_OK, TablesTable, array{}>|DataResponse<Http::STATUS_INTERNAL_SERVER_ERROR, array{message: string}, array{}>
*
* 200: Tables returned

View File

@ -49,7 +49,7 @@ class ContextController extends AOCSController {
*
* Return an empty array if no contexts were found
*
* @return DataResponse<Http::STATUS_OK, TablesContext[], array{}>|DataResponse<Http::STATUS_INTERNAL_SERVER_ERROR, array{message: string}, array{}>
* @return DataResponse<Http::STATUS_OK, list<TablesContext>, array{}>|DataResponse<Http::STATUS_INTERNAL_SERVER_ERROR, array{message: string}, array{}>
*
* 200: reporting in available contexts
*/
@ -188,7 +188,7 @@ class ContextController extends AOCSController {
* [api v2] Delete an existing context and return it
*
* @param int $contextId ID of the context
* @return DataResponse<Http::STATUS_OK, TablesContext, array{}>|DataResponse<Http::STATUS_INTERNAL_SERVER_ERROR|Http::STATUS_NOT_FOUND, array{message: string}, array{}>
* @return DataResponse<Http::STATUS_OK, TablesContext, array{}>|DataResponse<Http::STATUS_INTERNAL_SERVER_ERROR|Http::STATUS_NOT_FOUND|Http::STATUS_FORBIDDEN, array{message: string}, array{}>
*
* 200: returning the full context information
* 403: No permissions
@ -214,7 +214,7 @@ class ContextController extends AOCSController {
* @param string $newOwnerId ID of the new owner
* @param int $newOwnerType any Application::OWNER_TYPE_* constant
*
* @return DataResponse<Http::STATUS_OK, TablesContext, array{}>|DataResponse<Http::STATUS_INTERNAL_SERVER_ERROR|Http::STATUS_NOT_FOUND|Http::STATUS_BAD_REQUEST, array{message: string}, array{}>
* @return DataResponse<Http::STATUS_OK, TablesContext, array{}>|DataResponse<Http::STATUS_INTERNAL_SERVER_ERROR|Http::STATUS_FORBIDDEN|Http::STATUS_NOT_FOUND|Http::STATUS_BAD_REQUEST, array{message: string}, array{}>
*
* 200: Ownership transferred
* 400: Invalid request
@ -246,7 +246,7 @@ class ContextController extends AOCSController {
* @param int $pageId ID of the page
* @param array{id: int, order: int} $content content items with it and order values
*
* @return DataResponse<Http::STATUS_OK, TablesContext, array{}>|DataResponse<Http::STATUS_INTERNAL_SERVER_ERROR|Http::STATUS_NOT_FOUND|Http::STATUS_BAD_REQUEST, array{message: string}, array{}>
* @return DataResponse<Http::STATUS_OK, TablesContext, array{}>|DataResponse<Http::STATUS_INTERNAL_SERVER_ERROR|Http::STATUS_NOT_FOUND|Http::STATUS_FORBIDDEN|Http::STATUS_BAD_REQUEST, array{message: string}, array{}>
*
* @CanManageContext
*

View File

@ -25,7 +25,7 @@ namespace OCA\Tables;
* lastEditBy: string,
* lastEditAt: string,
* description: string|null,
* columns: int[],
* columns: list<int>,
* columnSettings:list<array{columnId: int, order: int}>,
* sort: list<array{columnId: int, mode: 'ASC'|'DESC'}>,
* filter: list<list<array{columnId: int, operator: 'begins-with'|'ends-with'|'contains'|'is-equal'|'is-greater-than'|'is-greater-than-or-equal'|'is-lower-than'|'is-lower-than-or-equal'|'is-empty', value: string|int|float}>>,
@ -64,13 +64,13 @@ namespace OCA\Tables;
* },
* hasShares: bool,
* rowsCount: int,
* views: TablesView[],
* views: list<TablesView>,
* columnsCount: int,
* }
*
* @psalm-type TablesIndex = array{
* tables: TablesTable[],
* views: TablesView[],
* tables: list<TablesTable>,
* views: list<TablesView>,
* }
*
* @psalm-type TablesRow = array{
@ -157,8 +157,6 @@ namespace OCA\Tables;
* displayMode: int,
* userId: string,
* }
*
* @psalm-type TablesColumn
*/
class ResponseDefinitions {
}

View File

@ -779,6 +779,7 @@
"get": {
"operationId": "api1-index",
"summary": "Returns all Tables",
"description": "This endpoint allows CORS requests",
"tags": [
"api1"
],
@ -824,6 +825,7 @@
"post": {
"operationId": "api1-create-table",
"summary": "Create a new table and return it",
"description": "This endpoint allows CORS requests",
"tags": [
"api1"
],
@ -897,6 +899,7 @@
"put": {
"operationId": "api1-update-table",
"summary": "Update tables properties",
"description": "This endpoint allows CORS requests",
"tags": [
"api1"
],
@ -915,11 +918,13 @@
"title": {
"type": "string",
"nullable": true,
"default": null,
"description": "New table title"
},
"emoji": {
"type": "string",
"nullable": true,
"default": null,
"description": "New table emoji"
},
"archived": {
@ -1014,6 +1019,7 @@
"get": {
"operationId": "api1-get-table",
"summary": "Get a table object",
"description": "This endpoint allows CORS requests",
"tags": [
"api1"
],
@ -1104,6 +1110,7 @@
"delete": {
"operationId": "api1-delete-table",
"summary": "Delete a table",
"description": "This endpoint allows CORS requests",
"tags": [
"api1"
],
@ -1196,6 +1203,7 @@
"get": {
"operationId": "api1-show-scheme",
"summary": "returns table scheme",
"description": "This endpoint allows CORS requests",
"tags": [
"api1"
],
@ -1295,6 +1303,7 @@
"get": {
"operationId": "api1-index-views",
"summary": "Get all views for a table",
"description": "This endpoint allows CORS requests",
"tags": [
"api1"
],
@ -1388,6 +1397,7 @@
"post": {
"operationId": "api1-create-view",
"summary": "Create a new view for a table",
"description": "This endpoint allows CORS requests",
"tags": [
"api1"
],
@ -1504,6 +1514,7 @@
"get": {
"operationId": "api1-get-view",
"summary": "Get a view object",
"description": "This endpoint allows CORS requests",
"tags": [
"api1"
],
@ -1594,6 +1605,7 @@
"put": {
"operationId": "api1-update-view",
"summary": "Update a view via key-value sets",
"description": "This endpoint allows CORS requests",
"tags": [
"api1"
],
@ -1798,6 +1810,24 @@
}
}
},
"404": {
"description": "Not found",
"content": {
"application/json": {
"schema": {
"type": "object",
"required": [
"message"
],
"properties": {
"message": {
"type": "string"
}
}
}
}
}
},
"400": {
"description": "Invalid data",
"content": {
@ -1839,6 +1869,7 @@
"delete": {
"operationId": "api1-delete-view",
"summary": "Delete a view",
"description": "This endpoint allows CORS requests",
"tags": [
"api1"
],
@ -1931,6 +1962,7 @@
"get": {
"operationId": "api1-get-share",
"summary": "Get a share object",
"description": "This endpoint allows CORS requests",
"tags": [
"api1"
],
@ -2021,6 +2053,7 @@
"delete": {
"operationId": "api1-delete-share",
"summary": "Delete a share",
"description": "This endpoint allows CORS requests",
"tags": [
"api1"
],
@ -2111,6 +2144,7 @@
"put": {
"operationId": "api1-update-share-permissions",
"summary": "Update a share permission",
"description": "This endpoint allows CORS requests",
"tags": [
"api1"
],
@ -2227,6 +2261,7 @@
"get": {
"operationId": "api1-index-view-shares",
"summary": "Get all shares for a view Will be empty if view does not exist",
"description": "This endpoint allows CORS requests",
"tags": [
"api1"
],
@ -2286,6 +2321,7 @@
"get": {
"operationId": "api1-index-table-shares",
"summary": "Get all shares for a table Will be empty if table does not exist",
"description": "This endpoint allows CORS requests",
"tags": [
"api1"
],
@ -2343,6 +2379,7 @@
"post": {
"operationId": "api1-create-table-share",
"summary": "Create a share for a table",
"description": "This endpoint allows CORS requests",
"tags": [
"api1"
],
@ -2488,6 +2525,7 @@
"post": {
"operationId": "api1-create-share",
"summary": "Create a new share",
"description": "This endpoint allows CORS requests",
"tags": [
"api1"
],
@ -2645,6 +2683,7 @@
"put": {
"operationId": "api1-update-share-display-mode",
"summary": "Updates the display mode of a context share",
"description": "This endpoint allows CORS requests",
"tags": [
"api1"
],
@ -2786,6 +2825,7 @@
"get": {
"operationId": "api1-index-table-columns",
"summary": "Get all columns for a table or a underlying view Return an empty array if no columns were found",
"description": "This endpoint allows CORS requests",
"tags": [
"api1"
],
@ -2889,6 +2929,7 @@
"post": {
"operationId": "api1-create-table-column",
"summary": "Create a new column for a table",
"description": "This endpoint allows CORS requests",
"tags": [
"api1"
],
@ -2998,7 +3039,7 @@
"type": "string",
"nullable": true,
"default": "",
"description": "Default option IDs for a selection (json int[])"
"description": "Default option IDs for a selection (json list<int>)"
},
"datetimeDefault": {
"type": "string",
@ -3015,26 +3056,31 @@
"usergroupMultipleItems": {
"type": "boolean",
"nullable": true,
"default": null,
"description": "Can select multiple users or/and groups, if column is usergroup"
},
"usergroupSelectUsers": {
"type": "boolean",
"nullable": true,
"default": null,
"description": "Can select users, if column type is usergroup"
},
"usergroupSelectGroups": {
"type": "boolean",
"nullable": true,
"default": null,
"description": "Can select groups, if column type is usergroup"
},
"usergroupSelectTeams": {
"type": "boolean",
"nullable": true,
"default": null,
"description": "Can select teams, if column type is usergroup"
},
"usergroupShowUserStatus": {
"type": "boolean",
"nullable": true,
"default": null,
"description": "Whether to show the user's status, if column type is usergroup"
},
"selectedViewIds": {
@ -3136,6 +3182,7 @@
"get": {
"operationId": "api1-index-view-columns",
"summary": "Get all columns for a view Return an empty array if no columns were found",
"description": "This endpoint allows CORS requests",
"tags": [
"api1"
],
@ -3231,6 +3278,7 @@
"post": {
"operationId": "api1-create-column",
"summary": "Create a column",
"description": "This endpoint allows CORS requests",
"tags": [
"api1"
],
@ -3352,7 +3400,7 @@
"type": "string",
"nullable": true,
"default": "",
"description": "Default option IDs for a selection (json int[])"
"description": "Default option IDs for a selection (json list<int>)"
},
"datetimeDefault": {
"type": "string",
@ -3369,26 +3417,31 @@
"usergroupMultipleItems": {
"type": "boolean",
"nullable": true,
"default": null,
"description": "Can select multiple users or/and groups, if column is usergroup"
},
"usergroupSelectUsers": {
"type": "boolean",
"nullable": true,
"default": null,
"description": "Can select users, if column type is usergroup"
},
"usergroupSelectGroups": {
"type": "boolean",
"nullable": true,
"default": null,
"description": "Can select groups, if column type is usergroup"
},
"usergroupSelectTeams": {
"type": "boolean",
"nullable": true,
"default": null,
"description": "Can select teams, if column type is usergroup"
},
"usergroupShowUserStatus": {
"type": "boolean",
"nullable": true,
"default": null,
"description": "Whether to show the user's status, if column type is usergroup"
},
"selectedViewIds": {
@ -3478,6 +3531,7 @@
"put": {
"operationId": "api1-update-column",
"summary": "Update a column",
"description": "This endpoint allows CORS requests",
"tags": [
"api1"
],
@ -3573,7 +3627,7 @@
"selectionDefault": {
"type": "string",
"nullable": true,
"description": "Default option IDs for a selection (json int[])"
"description": "Default option IDs for a selection (json list<int>)"
},
"datetimeDefault": {
"type": "string",
@ -3661,6 +3715,7 @@
"get": {
"operationId": "api1-get-column",
"summary": "Returns a column object",
"description": "This endpoint allows CORS requests",
"tags": [
"api1"
],
@ -3751,6 +3806,7 @@
"delete": {
"operationId": "api1-delete-column",
"summary": "Delete a column",
"description": "This endpoint allows CORS requests",
"tags": [
"api1"
],
@ -3843,6 +3899,7 @@
"get": {
"operationId": "api1-index-table-rows-simple",
"summary": "List all rows values for a table, first row are the column titles",
"description": "This endpoint allows CORS requests",
"tags": [
"api1"
],
@ -3958,6 +4015,7 @@
"get": {
"operationId": "api1-index-table-rows",
"summary": "List all rows for a table",
"description": "This endpoint allows CORS requests",
"tags": [
"api1"
],
@ -4071,6 +4129,7 @@
"post": {
"operationId": "api1-create-row-in-table",
"summary": "Create a row within a table",
"description": "This endpoint allows CORS requests",
"tags": [
"api1"
],
@ -4149,6 +4208,24 @@
}
}
},
"404": {
"description": "Not found",
"content": {
"application/json": {
"schema": {
"type": "object",
"required": [
"message"
],
"properties": {
"message": {
"type": "string"
}
}
}
}
}
},
"500": {
"description": "",
"content": {
@ -4174,6 +4251,7 @@
"get": {
"operationId": "api1-index-view-rows",
"summary": "List all rows for a view",
"description": "This endpoint allows CORS requests",
"tags": [
"api1"
],
@ -4287,6 +4365,7 @@
"post": {
"operationId": "api1-create-row-in-view",
"summary": "Create a row within a view",
"description": "This endpoint allows CORS requests",
"tags": [
"api1"
],
@ -4390,6 +4469,7 @@
"get": {
"operationId": "api1-get-row",
"summary": "Get a row",
"description": "This endpoint allows CORS requests",
"tags": [
"api1"
],
@ -4480,6 +4560,7 @@
"put": {
"operationId": "api1-update-row",
"summary": "Update a row",
"description": "This endpoint allows CORS requests",
"tags": [
"api1"
],
@ -4605,6 +4686,7 @@
"delete": {
"operationId": "api1-delete-row",
"summary": "Delete a row",
"description": "This endpoint allows CORS requests",
"tags": [
"api1"
],
@ -4697,6 +4779,7 @@
"delete": {
"operationId": "api1-delete-row-by-view",
"summary": "Delete a row within a view",
"description": "This endpoint allows CORS requests",
"tags": [
"api1"
],
@ -4799,6 +4882,7 @@
"post": {
"operationId": "api1-import-in-table",
"summary": "Import from file in to a table",
"description": "This endpoint allows CORS requests",
"tags": [
"api1"
],
@ -4915,6 +4999,7 @@
"post": {
"operationId": "api1-import-in-view",
"summary": "Import from file in to a table",
"description": "This endpoint allows CORS requests",
"tags": [
"api1"
],
@ -5568,19 +5653,23 @@
"title": {
"type": "string",
"nullable": true,
"default": null,
"description": "New table title"
},
"emoji": {
"type": "string",
"nullable": true,
"default": null,
"description": "New table emoji"
},
"description": {
"type": "string",
"default": null,
"description": "the tables description"
},
"archived": {
"type": "boolean",
"default": null,
"description": "whether the table is archived"
}
}
@ -6935,6 +7024,7 @@
"subtype": {
"type": "string",
"nullable": true,
"default": null,
"enum": [
"progress",
"stars"
@ -6944,6 +7034,7 @@
"description": {
"type": "string",
"nullable": true,
"default": null,
"description": "Description"
},
"selectedViewIds": {
@ -7195,6 +7286,7 @@
"subtype": {
"type": "string",
"nullable": true,
"default": null,
"enum": [
"progress",
"stars"
@ -7204,6 +7296,7 @@
"description": {
"type": "string",
"nullable": true,
"default": null,
"description": "Description"
},
"selectedViewIds": {
@ -7444,11 +7537,12 @@
"selectionDefault": {
"type": "string",
"nullable": true,
"description": "Json int|int[] for default selected option(s), eg 5 or [\"1\", \"8\"]"
"description": "Json int|list<int> for default selected option(s), eg 5 or [\"1\", \"8\"]"
},
"subtype": {
"type": "string",
"nullable": true,
"default": null,
"enum": [
"progress",
"stars"
@ -7458,6 +7552,7 @@
"description": {
"type": "string",
"nullable": true,
"default": null,
"description": "Description"
},
"selectedViewIds": {
@ -7702,6 +7797,7 @@
"subtype": {
"type": "string",
"nullable": true,
"default": null,
"enum": [
"progress",
"stars"
@ -7711,6 +7807,7 @@
"description": {
"type": "string",
"nullable": true,
"default": null,
"description": "Description"
},
"selectedViewIds": {
@ -7949,27 +8046,33 @@
},
"usergroupMultipleItems": {
"type": "boolean",
"default": null,
"description": "Whether you can select multiple users or/and groups"
},
"usergroupSelectUsers": {
"type": "boolean",
"default": null,
"description": "Whether you can select users"
},
"usergroupSelectGroups": {
"type": "boolean",
"default": null,
"description": "Whether you can select groups"
},
"usergroupSelectTeams": {
"type": "boolean",
"default": null,
"description": "Whether you can select teams"
},
"showUserStatus": {
"type": "boolean",
"default": null,
"description": "Whether to show the user's status"
},
"description": {
"type": "string",
"nullable": true,
"default": null,
"description": "Description"
},
"selectedViewIds": {
@ -9412,6 +9515,44 @@
}
}
}
},
"403": {
"description": "No permissions",
"content": {
"application/json": {
"schema": {
"type": "object",
"required": [
"ocs"
],
"properties": {
"ocs": {
"type": "object",
"required": [
"meta",
"data"
],
"properties": {
"meta": {
"$ref": "#/components/schemas/OCSMeta"
},
"data": {
"type": "object",
"required": [
"message"
],
"properties": {
"message": {
"type": "string"
}
}
}
}
}
}
}
}
}
}
}
}
@ -9550,6 +9691,44 @@
}
}
},
"403": {
"description": "No permissions",
"content": {
"application/json": {
"schema": {
"type": "object",
"required": [
"ocs"
],
"properties": {
"ocs": {
"type": "object",
"required": [
"meta",
"data"
],
"properties": {
"meta": {
"$ref": "#/components/schemas/OCSMeta"
},
"data": {
"type": "object",
"required": [
"message"
],
"properties": {
"message": {
"type": "string"
}
}
}
}
}
}
}
}
}
},
"404": {
"description": "Not found",
"content": {
@ -9816,6 +9995,44 @@
}
}
},
"403": {
"description": "No permissions",
"content": {
"application/json": {
"schema": {
"type": "object",
"required": [
"ocs"
],
"properties": {
"ocs": {
"type": "object",
"required": [
"meta",
"data"
],
"properties": {
"meta": {
"$ref": "#/components/schemas/OCSMeta"
},
"data": {
"type": "object",
"required": [
"message"
],
"properties": {
"message": {
"type": "string"
}
}
}
}
}
}
}
}
}
},
"400": {
"description": "Invalid request",
"content": {

View File

@ -11,10 +11,16 @@ export type paths = {
readonly path?: never;
readonly cookie?: never;
};
/** Returns all Tables */
/**
* Returns all Tables
* @description This endpoint allows CORS requests
*/
readonly get: operations["api1-index"];
readonly put?: never;
/** Create a new table and return it */
/**
* Create a new table and return it
* @description This endpoint allows CORS requests
*/
readonly post: operations["api1-create-table"];
readonly delete?: never;
readonly options?: never;
@ -29,12 +35,21 @@ export type paths = {
readonly path?: never;
readonly cookie?: never;
};
/** Get a table object */
/**
* Get a table object
* @description This endpoint allows CORS requests
*/
readonly get: operations["api1-get-table"];
/** Update tables properties */
/**
* Update tables properties
* @description This endpoint allows CORS requests
*/
readonly put: operations["api1-update-table"];
readonly post?: never;
/** Delete a table */
/**
* Delete a table
* @description This endpoint allows CORS requests
*/
readonly delete: operations["api1-delete-table"];
readonly options?: never;
readonly head?: never;
@ -48,7 +63,10 @@ export type paths = {
readonly path?: never;
readonly cookie?: never;
};
/** returns table scheme */
/**
* returns table scheme
* @description This endpoint allows CORS requests
*/
readonly get: operations["api1-show-scheme"];
readonly put?: never;
readonly post?: never;
@ -65,10 +83,16 @@ export type paths = {
readonly path?: never;
readonly cookie?: never;
};
/** Get all views for a table */
/**
* Get all views for a table
* @description This endpoint allows CORS requests
*/
readonly get: operations["api1-index-views"];
readonly put?: never;
/** Create a new view for a table */
/**
* Create a new view for a table
* @description This endpoint allows CORS requests
*/
readonly post: operations["api1-create-view"];
readonly delete?: never;
readonly options?: never;
@ -83,12 +107,21 @@ export type paths = {
readonly path?: never;
readonly cookie?: never;
};
/** Get a view object */
/**
* Get a view object
* @description This endpoint allows CORS requests
*/
readonly get: operations["api1-get-view"];
/** Update a view via key-value sets */
/**
* Update a view via key-value sets
* @description This endpoint allows CORS requests
*/
readonly put: operations["api1-update-view"];
readonly post?: never;
/** Delete a view */
/**
* Delete a view
* @description This endpoint allows CORS requests
*/
readonly delete: operations["api1-delete-view"];
readonly options?: never;
readonly head?: never;
@ -102,12 +135,21 @@ export type paths = {
readonly path?: never;
readonly cookie?: never;
};
/** Get a share object */
/**
* Get a share object
* @description This endpoint allows CORS requests
*/
readonly get: operations["api1-get-share"];
/** Update a share permission */
/**
* Update a share permission
* @description This endpoint allows CORS requests
*/
readonly put: operations["api1-update-share-permissions"];
readonly post?: never;
/** Delete a share */
/**
* Delete a share
* @description This endpoint allows CORS requests
*/
readonly delete: operations["api1-delete-share"];
readonly options?: never;
readonly head?: never;
@ -121,7 +163,10 @@ export type paths = {
readonly path?: never;
readonly cookie?: never;
};
/** Get all shares for a view Will be empty if view does not exist */
/**
* Get all shares for a view Will be empty if view does not exist
* @description This endpoint allows CORS requests
*/
readonly get: operations["api1-index-view-shares"];
readonly put?: never;
readonly post?: never;
@ -138,10 +183,16 @@ export type paths = {
readonly path?: never;
readonly cookie?: never;
};
/** Get all shares for a table Will be empty if table does not exist */
/**
* Get all shares for a table Will be empty if table does not exist
* @description This endpoint allows CORS requests
*/
readonly get: operations["api1-index-table-shares"];
readonly put?: never;
/** Create a share for a table */
/**
* Create a share for a table
* @description This endpoint allows CORS requests
*/
readonly post: operations["api1-create-table-share"];
readonly delete?: never;
readonly options?: never;
@ -158,7 +209,10 @@ export type paths = {
};
readonly get?: never;
readonly put?: never;
/** Create a new share */
/**
* Create a new share
* @description This endpoint allows CORS requests
*/
readonly post: operations["api1-create-share"];
readonly delete?: never;
readonly options?: never;
@ -174,7 +228,10 @@ export type paths = {
readonly cookie?: never;
};
readonly get?: never;
/** Updates the display mode of a context share */
/**
* Updates the display mode of a context share
* @description This endpoint allows CORS requests
*/
readonly put: operations["api1-update-share-display-mode"];
readonly post?: never;
readonly delete?: never;
@ -190,10 +247,16 @@ export type paths = {
readonly path?: never;
readonly cookie?: never;
};
/** Get all columns for a table or a underlying view Return an empty array if no columns were found */
/**
* Get all columns for a table or a underlying view Return an empty array if no columns were found
* @description This endpoint allows CORS requests
*/
readonly get: operations["api1-index-table-columns"];
readonly put?: never;
/** Create a new column for a table */
/**
* Create a new column for a table
* @description This endpoint allows CORS requests
*/
readonly post: operations["api1-create-table-column"];
readonly delete?: never;
readonly options?: never;
@ -208,7 +271,10 @@ export type paths = {
readonly path?: never;
readonly cookie?: never;
};
/** Get all columns for a view Return an empty array if no columns were found */
/**
* Get all columns for a view Return an empty array if no columns were found
* @description This endpoint allows CORS requests
*/
readonly get: operations["api1-index-view-columns"];
readonly put?: never;
readonly post?: never;
@ -227,7 +293,10 @@ export type paths = {
};
readonly get?: never;
readonly put?: never;
/** Create a column */
/**
* Create a column
* @description This endpoint allows CORS requests
*/
readonly post: operations["api1-create-column"];
readonly delete?: never;
readonly options?: never;
@ -242,12 +311,21 @@ export type paths = {
readonly path?: never;
readonly cookie?: never;
};
/** Returns a column object */
/**
* Returns a column object
* @description This endpoint allows CORS requests
*/
readonly get: operations["api1-get-column"];
/** Update a column */
/**
* Update a column
* @description This endpoint allows CORS requests
*/
readonly put: operations["api1-update-column"];
readonly post?: never;
/** Delete a column */
/**
* Delete a column
* @description This endpoint allows CORS requests
*/
readonly delete: operations["api1-delete-column"];
readonly options?: never;
readonly head?: never;
@ -261,7 +339,10 @@ export type paths = {
readonly path?: never;
readonly cookie?: never;
};
/** List all rows values for a table, first row are the column titles */
/**
* List all rows values for a table, first row are the column titles
* @description This endpoint allows CORS requests
*/
readonly get: operations["api1-index-table-rows-simple"];
readonly put?: never;
readonly post?: never;
@ -278,10 +359,16 @@ export type paths = {
readonly path?: never;
readonly cookie?: never;
};
/** List all rows for a table */
/**
* List all rows for a table
* @description This endpoint allows CORS requests
*/
readonly get: operations["api1-index-table-rows"];
readonly put?: never;
/** Create a row within a table */
/**
* Create a row within a table
* @description This endpoint allows CORS requests
*/
readonly post: operations["api1-create-row-in-table"];
readonly delete?: never;
readonly options?: never;
@ -296,10 +383,16 @@ export type paths = {
readonly path?: never;
readonly cookie?: never;
};
/** List all rows for a view */
/**
* List all rows for a view
* @description This endpoint allows CORS requests
*/
readonly get: operations["api1-index-view-rows"];
readonly put?: never;
/** Create a row within a view */
/**
* Create a row within a view
* @description This endpoint allows CORS requests
*/
readonly post: operations["api1-create-row-in-view"];
readonly delete?: never;
readonly options?: never;
@ -314,12 +407,21 @@ export type paths = {
readonly path?: never;
readonly cookie?: never;
};
/** Get a row */
/**
* Get a row
* @description This endpoint allows CORS requests
*/
readonly get: operations["api1-get-row"];
/** Update a row */
/**
* Update a row
* @description This endpoint allows CORS requests
*/
readonly put: operations["api1-update-row"];
readonly post?: never;
/** Delete a row */
/**
* Delete a row
* @description This endpoint allows CORS requests
*/
readonly delete: operations["api1-delete-row"];
readonly options?: never;
readonly head?: never;
@ -336,7 +438,10 @@ export type paths = {
readonly get?: never;
readonly put?: never;
readonly post?: never;
/** Delete a row within a view */
/**
* Delete a row within a view
* @description This endpoint allows CORS requests
*/
readonly delete: operations["api1-delete-row-by-view"];
readonly options?: never;
readonly head?: never;
@ -352,7 +457,10 @@ export type paths = {
};
readonly get?: never;
readonly put?: never;
/** Import from file in to a table */
/**
* Import from file in to a table
* @description This endpoint allows CORS requests
*/
readonly post: operations["api1-import-in-table"];
readonly delete?: never;
readonly options?: never;
@ -369,7 +477,10 @@ export type paths = {
};
readonly get?: never;
readonly put?: never;
/** Import from file in to a table */
/**
* Import from file in to a table
* @description This endpoint allows CORS requests
*/
readonly post: operations["api1-import-in-view"];
readonly delete?: never;
readonly options?: never;
@ -1088,9 +1199,15 @@ export interface operations {
readonly requestBody?: {
readonly content: {
readonly "application/json": {
/** @description New table title */
/**
* @description New table title
* @default null
*/
readonly title?: string | null;
/** @description New table emoji */
/**
* @description New table emoji
* @default null
*/
readonly emoji?: string | null;
/**
* @description Whether the table is archived
@ -1506,6 +1623,17 @@ export interface operations {
};
};
};
/** @description Not found */
readonly 404: {
headers: {
readonly [name: string]: unknown;
};
content: {
readonly "application/json": {
readonly message: string;
};
};
};
readonly 500: {
headers: {
readonly [name: string]: unknown;
@ -2200,7 +2328,7 @@ export interface operations {
*/
readonly selectionOptions?: string | null;
/**
* @description Default option IDs for a selection (json int[])
* @description Default option IDs for a selection (json list<int>)
* @default
*/
readonly selectionDefault?: string | null;
@ -2214,15 +2342,30 @@ export interface operations {
* @default
*/
readonly usergroupDefault?: string | null;
/** @description Can select multiple users or/and groups, if column is usergroup */
/**
* @description Can select multiple users or/and groups, if column is usergroup
* @default null
*/
readonly usergroupMultipleItems?: boolean | null;
/** @description Can select users, if column type is usergroup */
/**
* @description Can select users, if column type is usergroup
* @default null
*/
readonly usergroupSelectUsers?: boolean | null;
/** @description Can select groups, if column type is usergroup */
/**
* @description Can select groups, if column type is usergroup
* @default null
*/
readonly usergroupSelectGroups?: boolean | null;
/** @description Can select teams, if column type is usergroup */
/**
* @description Can select teams, if column type is usergroup
* @default null
*/
readonly usergroupSelectTeams?: boolean | null;
/** @description Whether to show the user's status, if column type is usergroup */
/**
* @description Whether to show the user's status, if column type is usergroup
* @default null
*/
readonly usergroupShowUserStatus?: boolean | null;
/**
* @description View IDs where this column should be added to be presented
@ -2403,7 +2546,7 @@ export interface operations {
*/
readonly selectionOptions?: string | null;
/**
* @description Default option IDs for a selection (json int[])
* @description Default option IDs for a selection (json list<int>)
* @default
*/
readonly selectionDefault?: string | null;
@ -2417,15 +2560,30 @@ export interface operations {
* @default
*/
readonly usergroupDefault?: string | null;
/** @description Can select multiple users or/and groups, if column is usergroup */
/**
* @description Can select multiple users or/and groups, if column is usergroup
* @default null
*/
readonly usergroupMultipleItems?: boolean | null;
/** @description Can select users, if column type is usergroup */
/**
* @description Can select users, if column type is usergroup
* @default null
*/
readonly usergroupSelectUsers?: boolean | null;
/** @description Can select groups, if column type is usergroup */
/**
* @description Can select groups, if column type is usergroup
* @default null
*/
readonly usergroupSelectGroups?: boolean | null;
/** @description Can select teams, if column type is usergroup */
/**
* @description Can select teams, if column type is usergroup
* @default null
*/
readonly usergroupSelectTeams?: boolean | null;
/** @description Whether to show the user's status, if column type is usergroup */
/**
* @description Whether to show the user's status, if column type is usergroup
* @default null
*/
readonly usergroupShowUserStatus?: boolean | null;
/**
* @description View IDs where this column should be added to be presented
@ -2590,7 +2748,7 @@ export interface operations {
readonly textMaxLength?: number | null;
/** @description Options for a selection (json array{id: int, label: string}) */
readonly selectionOptions?: string | null;
/** @description Default option IDs for a selection (json int[]) */
/** @description Default option IDs for a selection (json list<int>) */
readonly selectionDefault?: string | null;
/** @description Default value, if column is datetime */
readonly datetimeDefault?: string | null;
@ -2847,6 +3005,17 @@ export interface operations {
};
};
};
/** @description Not found */
readonly 404: {
headers: {
readonly [name: string]: unknown;
};
content: {
readonly "application/json": {
readonly message: string;
};
};
};
readonly 500: {
headers: {
readonly [name: string]: unknown;
@ -3581,13 +3750,25 @@ export interface operations {
readonly requestBody?: {
readonly content: {
readonly "application/json": {
/** @description New table title */
/**
* @description New table title
* @default null
*/
readonly title?: string | null;
/** @description New table emoji */
/**
* @description New table emoji
* @default null
*/
readonly emoji?: string | null;
/** @description the tables description */
/**
* @description the tables description
* @default null
*/
readonly description?: string;
/** @description whether the table is archived */
/**
* @description whether the table is archived
* @default null
*/
readonly archived?: boolean;
};
};
@ -4159,10 +4340,14 @@ export interface operations {
readonly numberMax?: number | null;
/**
* @description Subtype for the new column
* @default null
* @enum {string|null}
*/
readonly subtype?: "progress" | "stars" | null;
/** @description Description */
/**
* @description Description
* @default null
*/
readonly description?: string | null;
/**
* @description View IDs where this columns should be added
@ -4279,10 +4464,14 @@ export interface operations {
readonly textMaxLength?: number | null;
/**
* @description Subtype for the new column
* @default null
* @enum {string|null}
*/
readonly subtype?: "progress" | "stars" | null;
/** @description Description */
/**
* @description Description
* @default null
*/
readonly description?: string | null;
/**
* @description View IDs where this columns should be added
@ -4390,14 +4579,18 @@ export interface operations {
readonly title: string;
/** @description Json array{id: int, label: string} with options that can be selected, eg [{"id": 1, "label": "first"},{"id": 2, "label": "second"}] */
readonly selectionOptions: string;
/** @description Json int|int[] for default selected option(s), eg 5 or ["1", "8"] */
/** @description Json int|list<int> for default selected option(s), eg 5 or ["1", "8"] */
readonly selectionDefault?: string | null;
/**
* @description Subtype for the new column
* @default null
* @enum {string|null}
*/
readonly subtype?: "progress" | "stars" | null;
/** @description Description */
/**
* @description Description
* @default null
*/
readonly description?: string | null;
/**
* @description View IDs where this columns should be added
@ -4510,10 +4703,14 @@ export interface operations {
readonly datetimeDefault?: "today" | "now" | null;
/**
* @description Subtype for the new column
* @default null
* @enum {string|null}
*/
readonly subtype?: "progress" | "stars" | null;
/** @description Description */
/**
* @description Description
* @default null
*/
readonly description?: string | null;
/**
* @description View IDs where this columns should be added
@ -4621,17 +4818,35 @@ export interface operations {
readonly title: string;
/** @description Json array{id: string, type: int}, eg [{"id": "admin", "type": 0}, {"id": "user1", "type": 0}] */
readonly usergroupDefault?: string | null;
/** @description Whether you can select multiple users or/and groups */
/**
* @description Whether you can select multiple users or/and groups
* @default null
*/
readonly usergroupMultipleItems?: boolean;
/** @description Whether you can select users */
/**
* @description Whether you can select users
* @default null
*/
readonly usergroupSelectUsers?: boolean;
/** @description Whether you can select groups */
/**
* @description Whether you can select groups
* @default null
*/
readonly usergroupSelectGroups?: boolean;
/** @description Whether you can select teams */
/**
* @description Whether you can select teams
* @default null
*/
readonly usergroupSelectTeams?: boolean;
/** @description Whether to show the user's status */
/**
* @description Whether to show the user's status
* @default null
*/
readonly showUserStatus?: boolean;
/** @description Description */
/**
* @description Description
* @default null
*/
readonly description?: string | null;
/**
* @description View IDs where this columns should be added
@ -5212,6 +5427,22 @@ export interface operations {
};
};
};
/** @description No permissions */
readonly 403: {
headers: {
readonly [name: string]: unknown;
};
content: {
readonly "application/json": {
readonly ocs: {
readonly meta: components["schemas"]["OCSMeta"];
readonly data: {
readonly message: string;
};
};
};
};
};
/** @description Not found */
readonly 404: {
headers: {
@ -5303,6 +5534,22 @@ export interface operations {
};
};
};
/** @description No permissions */
readonly 403: {
headers: {
readonly [name: string]: unknown;
};
content: {
readonly "application/json": {
readonly ocs: {
readonly meta: components["schemas"]["OCSMeta"];
readonly data: {
readonly message: string;
};
};
};
};
};
/** @description Not found */
readonly 404: {
headers: {
@ -5395,6 +5642,22 @@ export interface operations {
};
};
};
/** @description No permissions */
readonly 403: {
headers: {
readonly [name: string]: unknown;
};
content: {
readonly "application/json": {
readonly ocs: {
readonly meta: components["schemas"]["OCSMeta"];
readonly data: {
readonly message: string;
};
};
};
};
};
/** @description Not found */
readonly 404: {
headers: {