diff --git a/controllers/GenericEntityApiController.php b/controllers/GenericEntityApiController.php index cc0de871..c23d5091 100644 --- a/controllers/GenericEntityApiController.php +++ b/controllers/GenericEntityApiController.php @@ -50,7 +50,7 @@ class GenericEntityApiController extends BaseApiController { User::checkPermission($request, User::PERMISSION_MASTER_DATA_EDIT); - if ($this->IsValidExposedEntity($args['entity']) && !$this->IsEntityWithNoEdit($args['entity'])) + if ($this->IsValidExposedEntity($args['entity']) && !$this->IsEntityWithNoDelete($args['entity'])) { if ($this->IsEntityWithEditRequiresAdmin($args['entity'])) { @@ -219,6 +219,11 @@ class GenericEntityApiController extends BaseApiController return in_array($entity, $this->getOpenApiSpec()->components->internalSchemas->ExposedEntityNoEdit->enum); } + private function IsEntityWithNoDelete($entity) + { + return in_array($entity, $this->getOpenApiSpec()->components->internalSchemas->ExposedEntityNoDelete->enum); + } + private function IsValidExposedEntity($entity) { return in_array($entity, $this->getOpenApiSpec()->components->internalSchemas->ExposedEntity->enum); diff --git a/controllers/OpenApiController.php b/controllers/OpenApiController.php index 5dd21c93..63716ce5 100644 --- a/controllers/OpenApiController.php +++ b/controllers/OpenApiController.php @@ -45,6 +45,15 @@ class OpenApiController extends BaseApiController } } + $spec->components->internalSchemas->ExposedEntity_NotIncludingNotDeletable = clone $spec->components->internalSchemas->StringEnumTemplate; + foreach ($spec->components->internalSchemas->ExposedEntity->enum as $value) + { + if (!in_array($value, $spec->components->internalSchemas->ExposedEntityNoDelete->enum)) + { + array_push($spec->components->internalSchemas->ExposedEntity_NotIncludingNotDeletable->enum, $value); + } + } + $spec->components->internalSchemas->ExposedEntity_NotIncludingNotListable = clone $spec->components->internalSchemas->StringEnumTemplate; foreach ($spec->components->internalSchemas->ExposedEntity->enum as $value) { diff --git a/grocy.openapi.json b/grocy.openapi.json index f818dc0d..2e231ede 100644 --- a/grocy.openapi.json +++ b/grocy.openapi.json @@ -528,7 +528,7 @@ "required": true, "description": "A valid entity name", "schema": { - "$ref": "#/components/internalSchemas/ExposedEntity_NotIncludingNotEditable" + "$ref": "#/components/internalSchemas/ExposedEntity_NotIncludingNotDeletable" } }, { @@ -3938,7 +3938,8 @@ "meal_plan", "stock_log", "stock", - "stock_current_locations" + "stock_current_locations", + "api_keys" ] }, "ExposedEntityNoListing": { @@ -3956,6 +3957,14 @@ "stock_current_locations" ] }, + "ExposedEntityNoDelete": { + "type": "string", + "enum": [ + "stock_log", + "stock", + "stock_current_locations" + ] + }, "ExposedEntityEditRequiresAdmin": { "type": "string", "enum": [