* Do not allow ignoring start nodes for system data types
* Update OpenApi.json
* Update src/Umbraco.Cms.Api.Management/Mapping/DataType/DataTypeViewModelMapDefinition.cs
Co-authored-by: Sven Geusens <geusens@gmail.com>
* Regenerate OpenApi.json
---------
Co-authored-by: Sven Geusens <geusens@gmail.com>
* Replace all IsContainer mentions with new ListView property
* Map the list view when creating and updating
* Implement list view migration
* Refactor listview to collection
* Do not assign listview if IsContainer is false
* Fix up HasContainerInPath query
* Update OpenApi.json
* fix up according to review
* Refactor duplicate code to use extension method instead
* Dont make new guid, check for null
* Make extension internal
* Fix up after merge
* Use ReferenceById static method instead of extension
* Only use datetimeoffset in API
* Updated publish endpoint to take schedule information
* Fixed test builds
* OpenApi updates
* Update OpenApi schema
* Fixed issues with publishing.
* Added validation before publishing. Had to move a lot of classes to core.
* added missing files
* Added validation info to error
* Typo
* Clean up and adding missing result
* Updating to AvailableCultures instead of PublishedCultures
* Handle time needs to be in the future
* validate only cultures that needs to be published
* Fix typos
* Filter out cultures that we are not trying to publish from the validation errors
* Don't filter out only the available cultures, to accommodate non-created variants
* Only allow publish of existing cultures
* Fixed issues found in test
* fixed build
---------
Co-authored-by: Elitsa <elm@umbraco.dk>
* Member response model must not have a name (its name is in the variants collection)
* update import map
---------
Co-authored-by: Mads Rasmussen <madsr@hey.com>
Co-authored-by: Jacob Overgaard <752371+iOvergaard@users.noreply.github.com>
* Fix authz status
* Adding another silo for list views
* Adding base classes and handling collection operation statuses
* Change signature to reuse functionality. Fix references
* Adding collection response models
* Adding content and media type collection response models
* Adding mapping
* Adding mapping for document and media types
* Adding list view page model
* Initial implementation
* Moving implementation to service base
* Adding content and media service interfaces for handling list views
* Registering and implementation
* Update controllers to use new services
* Renaming param
* Refactor to pass content type instead of content type key
* Handle the case where only data type is provided
* Add missing operation status
* Update OpenApi.json
* Added comment for a temp workaround
* Removing orderCulture from media interface as it is not yet supported
* Adding a base class for content type collection reference model
* Adding common collection controller base and moving the ContentCollectionOperationStatusResult to there
* Cleaning up controllers after implementing the base class
* Cleaning up concrete controller bases
* OpenApi.json updates
* Changing GetPagedChildren to return a paged model
* Fix ordering
* Adding ,
* Fix wording
* Append operation status to unsuccessful API responses
* A little bit of clean-up
* Update default orderBy value
* Update the default value of orderBy
* Adding missing owner and updater system fields
* Updating OpenApi.json with owner and updater props
* Create base and rename owner to creator
* Update OpenApi.json
* Reordering of properties
* "Owner" will be "creator"
* Fix comment
---------
Co-authored-by: kjac <kja@umbraco.dk>
* 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>
* Members and member types in the Management API
* Add validation endpoints for members
* Include validation result in service response + add unit tests
* Regenerate OpenApi.json
* Regenerate OpenApi.json after merge
* Don't throw an exception when trying to set valid variation levels for member types
* Added missing ProducesResponseType
* Remove TODO, as that works
* Allow creation of member with explicit key
* Do not feature "parent" for member creation + add missing response type
* Do not feature a "Folder" in create member type (folders are not supported)
* Added missing build methods
* Fixed issue with mapping
---------
Co-authored-by: Bjarke Berg <mail@bergmania.dk>
* Property level validation for content - initial implementation
* Always succeed create/update regardless of property level validation errors
* Move old complex editor validation classes to Web.BackOffice so they will be deleted
* Include operation status and property validation errors in ProblemDetails
* Refactor property validation to its own service(s)
* Make the problem details builder a little more generic towards extensions
* Validation for item and branch publish
* Moved malplaced test
* Get rid of a TODO
* Integration tests for content validation service
* Simplify validation service
* Add missing response types to create and update for document and media
* Remove test that no longer applies
* Use "errors" for model validation errors (property validation errors)
* Split create/update and validation into their own endpoints
* Fix forward merge
* Correct wrong assumption for missing properties
* Remove localization from validation error messages - decreases dependencies, adds a lot of obsolete constructors
* Reuse existing validation service + support custom error messages
* Fix merge errors
* Review comments
* Rename InstallVResponseModel to InstallRequestModel
* Align SettingsInstallController
* Rename split DatabaseInstallResponseModel in two
* Change UserInstallResponseModel to UserInstallViewModel
* Use PresentationModel instead of ViewModel
* Use operation status pattern when validating database
* Prepare for install to return a message
* Begin updating steps
* Make StepBase sharable between upgrade and install
* Update steps
* Use error message from install steps in install controller
* Use error message from upgrade steps in upgrade controller
* Use 500 for install/upgrade failed
It's entirely likely that it has nothing to do with the request
* Updated OpenApi.Json
---------
Co-authored-by: Bjarke Berg <mail@bergmania.dk>
* 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
* Added 2FA management endpoints
* Ensure not found do not lead to forbidden results
* Do not inherit the requirement to have access to users, from the current user base class
* Updated OpenApi.json
* Handle 2FA in login scenario (only backend)
* Added the endpoint to use for client to post 2FA code
* Fixed tests and allow injecting the authentication type settings
* fix test build
* Fallback to use Constants.Security.BackOfficeAuthenticationType
* remove unused variable
* Review fixes
* Build fix
* Update src/Umbraco.Cms.Api.Management/Controllers/User/Current/DisableTwoFactorProviderCurrentUserController.cs
Co-authored-by: Sven Geusens <geusens@gmail.com>
* Handle case where 2fa provider is already setup
---------
Co-authored-by: Sven Geusens <geusens@gmail.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>
* Adding response/request models
* Adding mapping
* Adding factory
* Adding controllers
* Moved to correct (generic domain) namespace
* Renamed to reflect the correct domain + renamed IsAllowed to IsCompatible
* Renaming + TODO
* Removed presentation logic + TODO
* Fixed controller
* Attempt for generic implementation
* Enable composition of media types + refactor content/media type editing tests to prove it (and a little renaming of a mis-named property)
* Remove unused classes
* Introducing GetAvailableCompositionsAsync to EditingServices
* Implement GetAvailableCompositionsAsync
* Base share implementation
* Tests
* Tests
* Renaming
* Clean up controller
* Clean up test
* Remove redundant check
* Create and use generic models
* Add shared implementation
* Fix and rename doc type mapper
* Fix document Type factory
* Add missing response type
* Create a base request model
* Make key nullable when new item
* Media type response models
* Default isElement to false and remove isElement param from media type related things
* Create mappings for media type compositions
* Inject generic base service to reuse implementation amongst concrete services
* Add new composition endpoints for media type
* Use specific type
* Add a reference comment to other test suite
* Add more test cases
---------
Co-authored-by: kjac <kja@umbraco.dk>
* Added management API for dynamic root and query steps.
* Open API
* Split models, use required and rename a little
* Rename query steps
* Make request culture and segment optional
* Introduce explicit back-office variation context
* Simplify query endpoint path
* Correct field naming
* Updated OpenApi.json
---------
Co-authored-by: kjac <kja@umbraco.dk>
* 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>
* Implement user configuration endpoint
* Add password configuration factory
* refactor users to use new password configuration model
* Implement current user configuration endpoint
* Add auth policy
* Refacor current user to use PasswordConfigurationReponseModel
* Implement configuration security controller
* Rename property to less confusing name
* Add version to ConfigurationSecurityController.cs
* Review changes
---------
Co-authored-by: kjac <kja@umbraco.dk>
* Implement temporary file configuration endpoint
* Update MaxfileSize to be a string.
* Make max file size a nullable integer
---------
Co-authored-by: Elitsa <elm@umbraco.dk>
* Rename information endpoint to troubleshooting
* Rename information endpoint to troubleshooting
* Add new information endpoint
* Fix bad merge
* Add InformationServerController.cs back
* Update serverTime offset to non hard-coded value.
* Add dictionary to swagger models
* Update OpenApi.json file
* Rename map definition
* Add ServerConfigurationBaseModel
* Implement ServerConfigurationBaseModel.cs
* Updated OpenApi
* Updated endpoint to return correct type in openapi
* Use explicit class for server information
* Remove version endpoint, as that is contained in server information.
---------
Co-authored-by: Bjarke Berg <mail@bergmania.dk>
* make CoreScopeProvider available for derived classes
* Create publish controller
* Add publish functionality
* Remove unneeded using
* Implement publish for multiple cultures
* support multiple cultures in controler
* Dont validate properties
* Refactor to use PublishingOperationStatus
* refactor to use proper publish async methods
* Refactor publish logic into own service
* Commit some demo code
* Add notes about what errors can happen when publishing
* Rework ContentPublishingService and introduce explicit Publish and PublishBranch methods in ContentService
* Fix merge
* Allow the publishing strategy to do its job
* Improved check for unsaved changes
* Make the old content controller work (as best possible)
* Remove SaveAndPublish (SaveAndPublishBranch) from all tests
* Proper guards for invalid cultures when publishing
* Fix edge cases for property validation and content unpublishing + add unpublishing to ContentPublishingService
* Clear out a few TODOs - we'll accept the behavior for now
* Unpublish controller
* Fix merge
* Fix branch publish notifications
* Added extra test for publishing unpublished cultures and added FIXME comments for when we fix the state of published cultures in content
---------
Co-authored-by: Nikolaj Geisle <70372949+Zeegaan@users.noreply.github.com>
Co-authored-by: Zeegaan <nge@umbraco.dk>
* Change document delete into move-to-recycle-bin
* Make it possible to supply an explicit ID when creating content and media
* Change media delete into move-to-recycle-bin
* Merge "allowed child content types" controllers into one + fixed a bug that allowed all types if none were defined
* Update OpenAPI JSON to reflect merged endpoints
* Added attribute filter to ensure a request is taking a minimum time to response
* Added functionality to management api to send forgot password emails and verify these + do the actual reset using the token
* Renamed UserKey to UserId and updated OpenApi.json
* Update src/Umbraco.Core/Services/IUserService.cs
Co-authored-by: Elitsa Marinovska <21998037+elit0451@users.noreply.github.com>
* Cleanup
* Renaming param
* Fixing send user username instead of email + wrong EmailTypes
* Fixed issue with forgot password functionality after reusing other functionality
* Rename prop
* Adding docs and renaming param
* Handle password validation return types
* More cleanup
---------
Co-authored-by: Elitsa <elm@umbraco.dk>
Co-authored-by: Elitsa Marinovska <21998037+elit0451@users.noreply.github.com>
* Add content and media sorting to the Management API
* Rename "id" to "key" throughout the ContentEditingService
* Update Open API json file
* Use "key" instead of "id" in ContentEditingServiceBase
* Use "key" instead of "id" in IMediaEditingService and MediaEditingService
* Turn delegates into abstracts + fix bug that allowed deleting items outside of the recycle bin
* Use PUT instead of POST
* Update src/Umbraco.Core/Services/MediaEditingService.cs
Co-authored-by: Nikolaj Geisle <70372949+Zeegaan@users.noreply.github.com>
* Update src/Umbraco.Core/Services/MediaEditingService.cs
Co-authored-by: Bjarke Berg <mail@bergmania.dk>
* Update Open API JSON
---------
Co-authored-by: Nikolaj Geisle <70372949+Zeegaan@users.noreply.github.com>
Co-authored-by: Bjarke Berg <mail@bergmania.dk>
* CRUD for content and media type folders + refactor data type folder CRUD controllers and services to match
* Correct response types + update OpenAPI JSON
* Review changes
* Review changes
* Update OpenAPI JSON after merge
* Add GetAsync method
* Fix up delete document type controller
* Add scope to delete async
* Add some scaffolding
* Add create model
* Start working on validation
* Move validation to its own service
* Use GetAllAsync instead of GetAsync
* Add initial composition support
Still need to figure out some kinks
* Validate compositions when creating
* Add initial folder support
* Initial handling of generic properties
* Add operation status responses
* Move create operation into service
* Add first test
* Fix issued shown by test
* Ensure a specific key can be specified when creating
* Rename container id to container key
Let's try and be consistent
* Create basic composition test
* Ensure new property groups are created with the correct key
* Add test showing property type issue
* Fix property types not using the expected key.
* Validate against model fetched from content type service
Just to make sure nothing explodes on the round trip
* Make helper for creating create models
* Add helper for creating container
* Make helper methods simpler to use
* Add test for compositions using compositions
* Add more composition tests
* Fix bug allowing element types to be composed by non element types
* Remove validators
This can just be a part of the editing service
* Minor cleanup
* Ensure that multiple levels of inheritance is possible
* Ensure doctype cannot be used as both composition and inheritance on the same doctype
* Ensure no duplicate aliases from composition and that compositions exists
* Minor cleanup
* Address todos
* Add SaveAsync method
* Renamed some models
* Rename from DocumentType to ContentType
* Clarify ParentKey as being container only + untangle things a tiny bit
* Clean out another TODO (less duplicate code) + more tests
* Refactor for reuse across different content types + add media type editing service + unit tests
* Refactor in preparation for update handling
* More tests + fixed bugs found while testing
* Simplify things a bit
* Content type update + a lot of unit tests + some refactor + fix bugs found while testing
* Begin building presentation factories for mapping view models to editing models
* Use async save
* Mapping factories and some clean-up
* Rename Key to Id (ParentKey to ParentId)
* Fix slight typo
* Use editing service in document type controllers and introduce media type controllers
* Validate containers and align container aliases with the current backoffice
* Remove ParentId from response
* Fix scope handling in DeleteAsync
* Refactor ContentTypeSort
* A little renaming for clarity + safeguard against changes to inheritance
* Persist allowed content types
* Fix bad merge + update controller response annotations
* Update OpenAPI JSON
* Update src/Umbraco.Cms.Api.Management/Controllers/DocumentType/DocumentTypeControllerBase.cs
Co-authored-by: Mole <nikolajlauridsen@protonmail.ch>
* Fix review comments
* Update usage of MapCreateAsync to ValidateAndMapForCreationAsync
---------
Co-authored-by: Nikolaj <nikolajlauridsen@protonmail.ch>
* Implement GetEntryByContentKey
* Implement PublicAccessResponseModel
* Implement IPublicAccessPresentationFactory
* Rename MemberGroupItemReponseModel to MemberGroupItemResponseModel
* Refactor PublicAccessResponseModel to use Ids instead of entire content items
* Return attempt instead of PresentationModel
* Add missing statuses to PublicAccessOperationStatusResult
* Implement PublicAccessDocumentController.cs
* Refacotr PublicAccessResponseModel to use a base model
* Add CreatePublicAccessEntry method
* Refactor AccessRequestModel to use names not ids :(
* Rename ErrorPageNotFound to ErrorNodeNotFound
* Implement new SaveAsync method
* Introduce more OperationResults
* Implement PublicAccessEntrySlim
* Implement SaveAsync
* Remove CreatePublicAccessEntry from presentation factory
* Rename to CreateAsync
* Implement UpdateAsync
* Rename to async
* Implement CreatePublicAccessEntry
* Implement update endpoint
* remove PublicAccessEntrySlim mapping
* implement CreatePublicAccessEntrySlim method
* Refactor UpdateAsync
* Remove ContentId from request model as it should be in the request
* Use new service layer
* Amend method name in update controller
* Refactor create public access entry to use async method and return entity
* Refactor to use saveAsync method instead of synchronously
* Use presentation factory instead of mapping
* Implement deleteAsync endpoint
* Add produces response type
* Refactor mapping to not use UmbracoMapper, as that causes errors
* Update OpenApi.json
* Refactor out variables to intermediate object
* Validate that groups and names are not specified at the same time
* Make presentation factory not async
* Minor cleanup
---------
Co-authored-by: Zeegaan <nge@umbraco.dk>
Co-authored-by: Nikolaj <nikolajlauridsen@protonmail.ch>
* Added functionality to verify user invite tokens and create the initial password
* Add response types
* Fail ValidateCredentialsAsync when user is not approved
* Enable user as part of initial password creating using validation token
* Adds documentation to badrequest and changed nocontent to ok, to align with other APIs
* Fixed tests and added a new one
---------
Co-authored-by: nikolajlauridsen <nikolajlauridsen@protonmail.ch>