* Remove explicit parent context in API outputs
* Add ancestor endpoints for document and data type (experimental for now)
* Add ancestor endpoints for doctypes, media, mediatypes, partial views, scripts, static files, stylesheets and templates
* Add unit tests for ancestor ID parsing
* Add ancestor endpoint for dictionary items
* Update OpenApi.json
* Fix merge and regenerate OpenApi.json
* Regenerate OpenApi.json
* Rename "folder" to "parent" for consistency
* Fix merge
* Fix merge
* Include "self" in ancestor endpoints
* Handle ancestors for root items correctly
* Remove "type" from recycle bin items
* Tests against fixed values instead of calculated ones.
---------
Co-authored-by: Sven Geusens <sge@umbraco.dk>
* Applying [ApiController] to ManagementApiControllerBase and the rest derive it from it
* Removing [ApiController] from deriving controllers
* Removing [ApiVersion("1.0")] from controller base
* Cleanup
* [ApiController] from deriving DeliveryApiControllerBase controller
* Removed the "New" from all policy names now that the legacy backoffice is gone.
* more policy renaming
* more policy renaming
* Uncommenting tests
* Cleanup
* Removing unused policy names
* Renaming AdminUserEditsRequireAdmin to a more meaningful UserPermissionByResource
* Completing TODO and some alphabetical rearranging
---------
Co-authored-by: Elitsa <elm@umbraco.dk>
* Refactored the Authorizers to be reuseable from core by now knowing about principal but only the IUser. Also moved them to core
* Fix multiple enumeration
* Fix more multiple enumerations
---------
Co-authored-by: Nikolaj <nikolajlauridsen@protonmail.ch>
* Re-modelling API models (take two)
* Do not use "content" - use "document" and "media" instead.
* Move "item" endpoints to their own silo
* Use "Id", not "Key"
* Regenerate OpenApi.json
* Rename user start node IDs from "content" to "document"
* Regererate OpenApi.json after forward merge
* update importmap
---------
Co-authored-by: Mads Rasmussen <madsr@hey.com>
* First take at new models for improved mapping between client and server
* Add variants to Media
* Re-introduced lost names
* Start breaking apart "Id" reference properties in request models as well
* Refactor to fix OpenAPI spec
* Discard TODO (not relevant)
* Split recycle bin response models
* Delete unused marker interface
* Use reference properties for content and media type handling
* Rework document and media types to be explicit in relations (do not expose "content type", it is an implementation detail)
* Mapping for document and media type copy + move
* Ensure correct response model for Media
* Regenerate OpenAPI JSON after forward merge
* Fix forward merge issues
* Fix forward merge + regenerate OpenApi.json
* Added unit tests for content state helper
* Move "allowed document types" endpoint to document type silo, refactored services and added "allowed media types"
* Regenerate OpenApi.json after forward merge
* Do not include content state for media items
* Review fix
* Implemented culture based authorization for content
* Implemented culture auth for create/update of documents
* Applied culture authorization to dictionary create/update
* Added an integration test to test an assumption about the ContentTypeEditingService.CreateAsync method
* Fix processing when result is already false;
* Apply suggestions from code review
Co-authored-by: Nikolaj Geisle <70372949+Zeegaan@users.noreply.github.com>
* Refactor method to async + clarify and consilidate comments regarding dictionary locks
---------
Co-authored-by: Sven Geusens <sge@umbraco.dk>
Co-authored-by: Nikolaj Geisle <70372949+Zeegaan@users.noreply.github.com>
* First stab at a massive remake of file system based endpoints
* Do not prefix system paths with directory separator char
* Ensure correct and consistent response types
* Fix partial view snippets endpoints
* Clean up IO (path) operations
* Update OpenAPI JSON to match new endpoints
* Return 201 when renaming file system resources
* Add "IsFolder" to file system item endpoints
* Replace "parentPath" with a "parent" object for file system creation endpoints
* Update OpenAPI JSON
* Rewrite snippets
* Regenerate OpenAPI JSON after forward merge
* Remove stylesheet overview endpoint
* Regenerate OpenAPI JSON after forward merge
* add server-file-system module to importmap
* Expose generated resource identifier in 201 responses
---------
Co-authored-by: Mads Rasmussen <madsr@hey.com>
* Create new request models
* Create new structural operation status
* Handling of new structural operation status
* New CopyAsync and MoveAsync
* New endpoints
* Update schema
* Adding NotFound status
* Adding BadRequest response type
* Moving getbyid check to service
* Fix signature and implement get by id check in service
* Update OpenApi schema
* Use PUT instead of POST in "move" controllers
* Use PUT instead of POST in some more "move" controllers
---------
Co-authored-by: kjac <kja@umbraco.dk>
* Allow Tree endpoints that query entities to return count without entity data
* Apply count by take 0 in FileSystem Endpoints
* Apply count by take 0 in Dictionary Endpoints
* Apply count by take 0 in RootRelationType Endpoints
* Revert PaginationService takeZero flag as it only guards against things that already blow up
* Mark PagedResult as Obsolete as we want to step away from classic pagination system to skip/take
* Pushed management api RelationType pagination and async preperation down to the service layer
* Scope fix and allocation optimizations
* Pushed management api dictionary pagination and down to the service layer
Also did some nice allocation optimizations
* PR feedback + related strange count behaviour
* Moved count by pagesize logic from EntryController to service
* A tiny bit of formatting and comments
* Fix bad count filter logic
* Added integration tests for creating datatypes in a folder
* Added tests for count testing on TreeControllers
- ChildrenDataType
- RootDataType
- ChildrenDictionary
- RootDictionary
- ChildrenDocument
- RootDocument
- RootBluePrint
- RootDocumentType
- ChildrenDocumentType
* Revert "Added tests for count testing on TreeControllers", should be on services
This reverts commit ee2501fe620a584bba13ecd4fdce8142133fd82b.
This reverts commit 808d5b276fad267a645e474ead3278d4bb79d0c4.
---------
Co-authored-by: Sven Geusens <sge@umbraco.dk>
Co-authored-by: kjac <kja@umbraco.dk>
Co-authored-by: Andreas Zerbst <andr317c@live.dk>
* Updated API version package and moved attribute to each controller as it cannot be inherited.
* Ignore "$type" on types implementing interfaces in the delivery api
* Changed some keys to ids and fixed so users can provide Ids when creating
* updated OpenApi.json
* Fixed issue with datatypes when wrong propertyEditorAlias was used and allow creating with key
* Updated OpenApi.json
* Handle duplicate names correct
* Fix for parent not found
* Handle if parent is not a container
* Update CompatibilitySuppressions
---------
Co-authored-by: Nikolaj <nikolajlauridsen@protonmail.ch>
* Add default super user key to migrations
* Start refactoring all interfaces signatures with ids
* Refactor datatype service to use userKey pattern instead
* Refactor ContentEditingService to use userkeys
* Refactor services to userKey
* Refactor more services to use userkey instead of id
* Refactor RelationService to use userKeys
* Refactor template service to use keys instead of ids
* Refactor fileservice to use keys instead of ids
* Refactor LocalizationService to use keys instead of ids
* Refactor PackagingService to use keys instead of ids
* Refactor TemplateController to use current user keys
* Refactor DataTypeContainerService.cs
* Refactor DataTypeService to use keys instead of ids
* Fix up tests
* Fix up media editing service to use userkey instead of ID
* Update service ctor to avoid ambigious ctors
* refactor DataTypeService
* Refactor DataTypeService to not have a default value for parentKey
* Apply suggestions from code review
Co-authored-by: Elitsa Marinovska <21998037+elit0451@users.noreply.github.com>
* Update comment
* Add suppression file
* Add backoffice CompatibilitySuppressions
---------
Co-authored-by: Zeegaan <nge@umbraco.dk>
Co-authored-by: Elitsa Marinovska <21998037+elit0451@users.noreply.github.com>
* Added temporary file uploads including a repository implementation using local temp folder.
* missing files
* Fixed copy paste error
* Updated OpenApi.json
* Updated OpenApi.json
* Added file extension check
* Clean up. Removed old TemporaryFileService and UploadFileService and updated dictionary items to use this new items
* Clean up
* Get rid of stream directly on TemporaryFileModel, and use delegate to open stream instead.
* Review changes
* Moved models to their own files
* Reverted launch settings
* Update open API JSON file
---------
Co-authored-by: kjac <kja@umbraco.dk>
* Adding migration to update the default GUID value of created packages
* Updating the GUID if it is the default value when a package is saved
* Adding PackageDefinitionViewModel for representing a package
* Adding a mapping for package representation
* Adding PackageControllerBase, GetAllCreated and GetEmpty endpoints
* Adding GetCreatedByKey endpoint
* Adding GetByKey implementation for created packages
* Include MapAll comment
* Adding Download package endpoint
* Saving created package endpoint
* Adding a factory to create a PackageDefinition from view model
* Cleanup
* Fix error message
* Check for duplicate package name
* Remove commented out DuplicateNameException
* Moving created packages to /created folder/base
* Implement delete endpoint
* Update OpenApi.json
* Fix package route
* Fix OpenApi.json
* Add Ok() around the result
* Create PackageBuilderExtensions
* Adding suppression changes
* Cleanup
* Use ProblemDetailsBuilder
* Extract collecting installed packages from package migration plans into its own method
* Use GetInstalledPackagesFromMigrationPlans to return all migration statuses
* Add Status to DictionaryControllerBase ProblemDetails
* Implement RunMigrationPackageController
* Adding more information to the log message
* Update OpenApi.json
* Change param name
* Fix OpenApi.json
* Fix response type for Log viewer endpoint
* Remove EmptyPackageController
* Rename to RunPendingPackageMigrations
* Introduce new PackageOperationStatus
* Making methods async and introducing new Create, Update and Delete methods
* Fix async calls
* Fix Mapper - multiple enumeration and cleanup
* Creating special action models
* Fixing the factory with new models changes
* Service implementation changes
* Removing SaveCreatedPackageController as the functionality is split between Create and UpdateCreatedPackageController
* Utilize the new DeleteCreatedPackageAsync
* Refactor DownloadCreatedPackageController as some responsibility is moved to the service
* Refactor PackagingService to use auditService
* Refactor PackagingService to use skip/take
* Refactor services to return pagedmodel
* Refactor controller to use new return value
* update OpenApi.json
---------
Co-authored-by: Zeegaan <nge@umbraco.dk>
* Introduce root key constant
* Do not enforce ProblemDetails on every non-success response from the API + remove invalid NotFoundResult response types from various endpoints
* Update OpenAPI JSON contract to reflect the new NotFound results
* Sanitize dictionary overview and export actions
* Amend dictionary services with async and attempt pattern + isolate temporary file handling in its own service.
* Update OpenAPI schema to match new dictionary bulk actions
* Implement move API for dictionary items.
* Add unit tests for dictionary item move
* Fix merge
* Update OpenAPI json after merge
* Rework language service and API
* Revert unintended commit of Directory.Build.props
* Create OS conditional test for invalid ISO codes
* Reintroduce and obsolete old Delete method on ILocalizationService + make new Delete method delete by ISO code + add obsoletion attrs to service implementation
* Review comments + utilize new Delete method
* Do not allow model reuse when creating a new language
* Fix bad merge
* Split localization service into dedicated services for language and dictionary item handling
* Replaced ILocalizationService usage in management API (as much as can be done for now)
* Ensure we can create dictionary items with explicit keys (but no duplicates)
* Fix culture controller so it works properly with pagination
* Update OpenAPI JSON
* Actually update the language being updated...
* Unit test for invalid ISO now no longer needs to differ between OS :)
* A little bit of code health improvements
* A litte less code duplication
* Remove duplicate validation
* Rework dictionary CRUD operations
* Update OpenAPI json
* Move responsibility to localization service, introduce new attempt pattern for create and update operations, update unit tests accordingly
* Fix merge
* Rollback assumption that we can map entities from scratch (entity relations got in the way)
* Update OpenAPI JSON
* Add breakage supressions
* Add compat suppressions for integration test project
* Make dictionary item deletion follow same pattern as create and update
* Review comments + update delete to use new pattern
* Update breakage suppressions to match the new Delete method
* Created a common library for the APIs and moved stuff that is required for the new content API. Also moved the versioned backoffice API route handling to the management API where it belongs.
* Remove test auth attribute from Media