diff --git a/src/Umbraco.Web.UI.Client/.eslintrc.json b/src/Umbraco.Web.UI.Client/.eslintrc.json index c4bb8ffab0..acde9551ae 100644 --- a/src/Umbraco.Web.UI.Client/.eslintrc.json +++ b/src/Umbraco.Web.UI.Client/.eslintrc.json @@ -1,5 +1,5 @@ { - "ignorePatterns": ["vite.*.ts"], + "ignorePatterns": ["vite.*.ts", "src/external/**/*.ts"], "root": true, "plugins": ["import", "eslint-plugin-local-rules"], "parserOptions": { diff --git a/src/Umbraco.Web.UI.Client/.github/CONTRIBUTING.md b/src/Umbraco.Web.UI.Client/.github/CONTRIBUTING.md index ec8849123a..3d02d924c6 100644 --- a/src/Umbraco.Web.UI.Client/.github/CONTRIBUTING.md +++ b/src/Umbraco.Web.UI.Client/.github/CONTRIBUTING.md @@ -66,16 +66,16 @@ The simplest approach is to copy over the HTML from the old backoffice into a ne **Controller** -The old AngularJS controllers will have to be converted into modern TypeScript and will have to use our new services and stores. We try to abstract as much away as possible, and mostly you will have to make API calls and let the rest of the system handle things like error handling and so on. In the case of this dashboard, we only have a few GET and POST requests. Looking at the new Management API, we find the PublishedCacheResource, which is the new API controller to serve data to the dashboard. +The old AngularJS controllers will have to be converted into modern TypeScript and will have to use our new services and stores. We try to abstract as much away as possible, and mostly you will have to make API calls and let the rest of the system handle things like error handling and so on. In the case of this dashboard, we only have a few GET and POST requests. Looking at the new Management API, we find the PublishedCacheService, which is the new API controller to serve data to the dashboard. -To make the first button work, which simply just requests a new status from the server, we must make a call to `PublishedCacheResource.getPublishedCacheStatus()`. An additional thing here is to wrap that in a friendly function called `tryExecuteAndNotify`, which is something we make available to developers to automatically handle the responses coming from the server and additionally use the Notifications to notify of any errors: +To make the first button work, which simply just requests a new status from the server, we must make a call to `PublishedCacheService.getPublishedCacheStatus()`. An additional thing here is to wrap that in a friendly function called `tryExecuteAndNotify`, which is something we make available to developers to automatically handle the responses coming from the server and additionally use the Notifications to notify of any errors: ```typescript import { tryExecuteAndNotify } from '@umbraco-cms/backoffice/resources'; -import { PublishedCacheResource } from '@umbraco-cms/backoffice/external/backend-api'; +import { PublishedCacheService } from '@umbraco-cms/backoffice/external/backend-api'; private _getStatus() { - const { data: status } = await tryExecuteAndNotify(this, PublishedCacheResource.getPublishedCacheStatus()); + const { data: status } = await tryExecuteAndNotify(this, PublishedCacheService.getPublishedCacheStatus()); if (status) { // we now have the status diff --git a/src/Umbraco.Web.UI.Client/LICENSE b/src/Umbraco.Web.UI.Client/LICENSE index aaba059d33..2819c99ca7 100644 --- a/src/Umbraco.Web.UI.Client/LICENSE +++ b/src/Umbraco.Web.UI.Client/LICENSE @@ -27,10 +27,18 @@ Third-party licenses --- Lucide License -ISC License +ISC License Copyright (c) for portions of Lucide are held by Cole Bemis 2013-2022 as part of Feather (MIT). All other copyright (c) for Lucide are held by Lucide Contributors 2022. Permission to use, copy, modify, and/or distribute this software for any purpose with or without fee is hereby granted, provided that the above copyright notice and this permission notice appear in all copies. THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + +--- + +Simple Icons +CC0 1.0 Universal license + +The person who associated a work with this deed has dedicated the work to the public domain by waiving all of his or her rights to the work worldwide under copyright law, including all related and neighboring rights, to the extent allowed by law. +You can copy, modify, distribute and perform the work, even for commercial purposes, all without asking permission. diff --git a/src/Umbraco.Web.UI.Client/apps/auth/e2e/login.spec.ts b/src/Umbraco.Web.UI.Client/apps/auth/e2e/login.spec.ts deleted file mode 100644 index d34e280a56..0000000000 --- a/src/Umbraco.Web.UI.Client/apps/auth/e2e/login.spec.ts +++ /dev/null @@ -1,19 +0,0 @@ -import { expect, test } from '@playwright/test'; - -test('login', async ({ page }) => { - await page.goto('/'); - - // Fill input[name="email"] - await page.locator('input[name="email"]').fill('test@umbraco.com'); - - // Fill input[name="password"] - await page.locator('input[name="password"]').fill('test123456'); - - // Wait for console.log to be called - page.on('console', (message) => { - expect(message.text()).toBe('login'); - }); - - // Click [aria-label="Login"] - await page.locator('[aria-label="Login"]').click(); -}); diff --git a/src/Umbraco.Web.UI.Client/apps/auth/index.html b/src/Umbraco.Web.UI.Client/apps/auth/index.html deleted file mode 100644 index 75922ccae2..0000000000 --- a/src/Umbraco.Web.UI.Client/apps/auth/index.html +++ /dev/null @@ -1,15 +0,0 @@ - - - - - - - Umbraco Auth - - - - - - - - diff --git a/src/Umbraco.Web.UI.Client/apps/auth/package.json b/src/Umbraco.Web.UI.Client/apps/auth/package.json deleted file mode 100644 index addf6d7ebf..0000000000 --- a/src/Umbraco.Web.UI.Client/apps/auth/package.json +++ /dev/null @@ -1,20 +0,0 @@ -{ - "name": "@umbraco-cms/login", - "version": "0.0.0", - "license": "MIT", - "author": { - "name": "Umbraco HQ", - "email": "backoffice@umbraco.com" - }, - "type": "module", - "module": "dist/main.js", - "files": [ - "dist" - ], - "scripts": { - "dev": "vite", - "build": "tsc && vite build", - "build:watch": "vite build --watch", - "preview": "vite preview" - } -} diff --git a/src/Umbraco.Web.UI.Client/apps/auth/playwright.config.ts b/src/Umbraco.Web.UI.Client/apps/auth/playwright.config.ts deleted file mode 100644 index f7bf259530..0000000000 --- a/src/Umbraco.Web.UI.Client/apps/auth/playwright.config.ts +++ /dev/null @@ -1,108 +0,0 @@ -import type { PlaywrightTestConfig } from '@playwright/test'; -import { devices } from '@playwright/test'; - -/** - * Read environment variables from file. - * https://github.com/motdotla/dotenv - */ -// require('dotenv').config(); - -/** - * See https://playwright.dev/docs/test-configuration. - */ -const config: PlaywrightTestConfig = { - testDir: './e2e', - /* Maximum time one test can run for. */ - timeout: 30 * 1000, - expect: { - /** - * Maximum time expect() should wait for the condition to be met. - * For example in `await expect(locator).toHaveText();` - */ - timeout: 5000, - }, - /* Run tests in files in parallel */ - fullyParallel: true, - /* Fail the build on CI if you accidentally left test.only in the source code. */ - forbidOnly: !!process.env.CI, - /* Retry on CI only */ - retries: process.env.CI ? 2 : 0, - /* Opt out of parallel tests on CI. */ - workers: process.env.CI ? 1 : undefined, - /* Reporter to use. See https://playwright.dev/docs/test-reporters */ - reporter: 'html', - /* Shared settings for all the projects below. See https://playwright.dev/docs/api/class-testoptions. */ - use: { - /* Maximum time each action such as `click()` can take. Defaults to 0 (no limit). */ - actionTimeout: 0, - /* Base URL to use in actions like `await page.goto('/')`. */ - // baseURL: 'http://localhost:3000', - - /* Collect trace when retrying the failed test. See https://playwright.dev/docs/trace-viewer */ - trace: 'on-first-retry', - }, - - /* Configure projects for major browsers */ - projects: [ - { - name: 'chromium', - use: { - ...devices['Desktop Chrome'], - }, - }, - - { - name: 'firefox', - use: { - ...devices['Desktop Firefox'], - }, - }, - - { - name: 'webkit', - use: { - ...devices['Desktop Safari'], - }, - }, - - /* Test against mobile viewports. */ - // { - // name: 'Mobile Chrome', - // use: { - // ...devices['Pixel 5'], - // }, - // }, - // { - // name: 'Mobile Safari', - // use: { - // ...devices['iPhone 12'], - // }, - // }, - - /* Test against branded browsers. */ - // { - // name: 'Microsoft Edge', - // use: { - // channel: 'msedge', - // }, - // }, - // { - // name: 'Google Chrome', - // use: { - // channel: 'chrome', - // }, - // }, - ], - - /* Folder for test artifacts such as screenshots, videos, traces, etc. */ - // outputDir: 'test-results/', - - /* Run your local dev server before starting the tests */ - webServer: { - command: 'npm run dev', - port: 5173, - reuseExistingServer: !process.env.CI, - }, -}; - -export default config; diff --git a/src/Umbraco.Web.UI.Client/apps/auth/public/favicon.svg b/src/Umbraco.Web.UI.Client/apps/auth/public/favicon.svg deleted file mode 100644 index 19acb4bc1e..0000000000 --- a/src/Umbraco.Web.UI.Client/apps/auth/public/favicon.svg +++ /dev/null @@ -1,17 +0,0 @@ - - - - - - diff --git a/src/Umbraco.Web.UI.Client/apps/auth/public/login.jpeg b/src/Umbraco.Web.UI.Client/apps/auth/public/login.jpeg deleted file mode 100644 index 412cd17865..0000000000 Binary files a/src/Umbraco.Web.UI.Client/apps/auth/public/login.jpeg and /dev/null differ diff --git a/src/Umbraco.Web.UI.Client/apps/auth/public/umbraco_logo_white.svg b/src/Umbraco.Web.UI.Client/apps/auth/public/umbraco_logo_white.svg deleted file mode 100644 index 3de8e82ed3..0000000000 --- a/src/Umbraco.Web.UI.Client/apps/auth/public/umbraco_logo_white.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/src/Umbraco.Web.UI.Client/apps/auth/public/umbraco_logomark_white.svg b/src/Umbraco.Web.UI.Client/apps/auth/public/umbraco_logomark_white.svg deleted file mode 100644 index 9372e25d3e..0000000000 --- a/src/Umbraco.Web.UI.Client/apps/auth/public/umbraco_logomark_white.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/src/Umbraco.Web.UI.Client/apps/auth/src/auth-layout.element.ts b/src/Umbraco.Web.UI.Client/apps/auth/src/auth-layout.element.ts deleted file mode 100644 index 163ece1736..0000000000 --- a/src/Umbraco.Web.UI.Client/apps/auth/src/auth-layout.element.ts +++ /dev/null @@ -1,72 +0,0 @@ -import { css, CSSResultGroup, html, LitElement } from 'lit'; -import { customElement } from 'lit/decorators.js'; - -@customElement('umb-auth-layout') -export class UmbAuthLayoutElement extends LitElement { - render() { - return html` -
- - - -
- - - -
- `; - } - - static styles: CSSResultGroup = [ - css` - #background { - position: fixed; - overflow: hidden; - background-position: 50%; - background-repeat: no-repeat; - background-size: cover; - background-image: url('login.jpeg'); - width: 100vw; - height: 100vh; - } - - #logo { - position: fixed; - top: var(--uui-size-space-5); - left: var(--uui-size-space-5); - height: 30px; - } - - #logo img { - height: 100%; - } - - #container { - position: relative; - display: flex; - align-items: center; - justify-content: center; - width: 100vw; - height: 100vh; - } - - #box { - width: 500px; - padding: var(--uui-size-space-6) var(--uui-size-space-5) var(--uui-size-space-5) var(--uui-size-space-5); - } - - #email, - #password { - width: 100%; - } - `, - ]; -} - -declare global { - interface HTMLElementTagNameMap { - 'umb-auth-layout': UmbAuthLayoutElement; - } -} diff --git a/src/Umbraco.Web.UI.Client/apps/auth/src/auth-legacy.context.ts b/src/Umbraco.Web.UI.Client/apps/auth/src/auth-legacy.context.ts deleted file mode 100644 index 42b0679aab..0000000000 --- a/src/Umbraco.Web.UI.Client/apps/auth/src/auth-legacy.context.ts +++ /dev/null @@ -1,10 +0,0 @@ -import { LoginRequestModel, IUmbAuthContext, LoginResponse } from './types.js'; - -export class UmbAuthLegacyContext implements IUmbAuthContext { - readonly #AUTH_URL = '/umbraco/backoffice/umbracoapi/authentication/postlogin'; - readonly supportsPersistLogin = true; - - login(data: LoginRequestModel): Promise { - throw new Error('Method not implemented.'); - } -} diff --git a/src/Umbraco.Web.UI.Client/apps/auth/src/auth.context.ts b/src/Umbraco.Web.UI.Client/apps/auth/src/auth.context.ts deleted file mode 100644 index c38afcb618..0000000000 --- a/src/Umbraco.Web.UI.Client/apps/auth/src/auth.context.ts +++ /dev/null @@ -1,13 +0,0 @@ -import { UmbAuthRepository } from './auth.repository.js'; -import { LoginRequestModel, IUmbAuthContext } from './types.js'; - -export class UmbAuthContext implements IUmbAuthContext { - readonly #AUTH_URL = '/umbraco/management/api/v1/security/back-office'; - readonly supportsPersistLogin = false; - - #authRepository = new UmbAuthRepository(this.#AUTH_URL); - - public async login(data: LoginRequestModel) { - return this.#authRepository.login(data); - } -} diff --git a/src/Umbraco.Web.UI.Client/apps/auth/src/auth.repository.ts b/src/Umbraco.Web.UI.Client/apps/auth/src/auth.repository.ts deleted file mode 100644 index f615a915c1..0000000000 --- a/src/Umbraco.Web.UI.Client/apps/auth/src/auth.repository.ts +++ /dev/null @@ -1,44 +0,0 @@ -import { LoginRequestModel } from './types.js'; - -export class UmbAuthRepository { - #authURL = ''; - - constructor(authUrl: string) { - this.#authURL = authUrl; - } - - public async login(data: LoginRequestModel) { - const request = new Request(this.#authURL + '/login', { - method: 'POST', - body: JSON.stringify({ - username: data.username, - password: data.password, - }), - headers: { - 'Content-Type': 'application/json', - }, - }); - const response = await fetch(request); - - //TODO: What kind of data does the old backoffice expect? - //NOTE: this conditionally adds error and data to the response object - return { - status: response.status, - ...(!response.ok && { error: this.#getErrorText(response) }), - ...(response.ok && { data: 'WHAT DATA SHOULD BE RETURNED?' }), - }; - } - - #getErrorText(response: Response) { - switch (response.status) { - case 401: - return 'Oops! It seems like your login credentials are invalid or expired. Please double-check your username and password and try again.'; - - case 500: - return "We're sorry, but the server encountered an unexpected error. Please refresh the page or try again later.."; - - default: - return response.statusText; - } - } -} diff --git a/src/Umbraco.Web.UI.Client/apps/auth/src/external-login-providers/external-login-provider-test.element.ts b/src/Umbraco.Web.UI.Client/apps/auth/src/external-login-providers/external-login-provider-test.element.ts deleted file mode 100644 index 7dda2a047e..0000000000 --- a/src/Umbraco.Web.UI.Client/apps/auth/src/external-login-providers/external-login-provider-test.element.ts +++ /dev/null @@ -1,40 +0,0 @@ -import { css, html, LitElement } from 'lit'; -import { UUITextStyles } from '@umbraco-cms/backoffice/external/uui'; -import { customElement } from 'lit/decorators.js'; - -@customElement('umb-external-login-provider-test') -export class UmbExternalLoginProviderTestElement extends LitElement { - render() { - return html` - Custom External Login Provider -

This is an example of a custom external login provider using the external login provider extension point

- - `; - } - - static styles = [ - UUITextStyles, - css` - :host { - display: flex; - flex-direction: column; - gap: var(--uui-size-space-4); - padding: var(--uui-size-space-5); - border: 1px solid var(--uui-color-border); - background: var(--uui-color-surface-alt); - border-radius: var(--uui-border-radius); - } - p { - margin: 0; - } - `, - ]; -} - -export default UmbExternalLoginProviderTestElement; - -declare global { - interface HTMLElementTagNameMap { - 'umb-external-login-provider-test': UmbExternalLoginProviderTestElement; - } -} diff --git a/src/Umbraco.Web.UI.Client/apps/auth/src/external-login-providers/external-login-provider-test2.element.ts b/src/Umbraco.Web.UI.Client/apps/auth/src/external-login-providers/external-login-provider-test2.element.ts deleted file mode 100644 index 652293ad27..0000000000 --- a/src/Umbraco.Web.UI.Client/apps/auth/src/external-login-providers/external-login-provider-test2.element.ts +++ /dev/null @@ -1,53 +0,0 @@ -import { css, html, LitElement } from 'lit'; -import { UUITextStyles } from '@umbraco-ui/uui-css'; -import { customElement } from 'lit/decorators.js'; - -@customElement('umb-external-login-provider-test2') -export class UmbExternalLoginProviderTest2Element extends LitElement { - render() { - return html` - Another Custom External Login Provider -

This is an example of another custom external login provider

- - Email - - - - `; - } - - static styles = [ - UUITextStyles, - css` - :host { - display: flex; - flex-direction: column; - gap: var(--uui-size-space-4); - padding: var(--uui-size-space-5); - border: 1px solid var(--uui-color-border); - background: var(--uui-color-surface-alt); - border-radius: var(--uui-border-radius); - } - p { - margin: 0; - } - uui-input { - width: 100%; - } - `, - ]; -} - -export default UmbExternalLoginProviderTest2Element; - -declare global { - interface HTMLElementTagNameMap { - 'umb-external-login-provider-test2': UmbExternalLoginProviderTest2Element; - } -} diff --git a/src/Umbraco.Web.UI.Client/apps/auth/src/external-login-providers/manifests.ts b/src/Umbraco.Web.UI.Client/apps/auth/src/external-login-providers/manifests.ts deleted file mode 100644 index 534b6a9cc2..0000000000 --- a/src/Umbraco.Web.UI.Client/apps/auth/src/external-login-providers/manifests.ts +++ /dev/null @@ -1,29 +0,0 @@ -// TODO: could these be renamed as login providers? -import type { ManifestExternalLoginProvider } from '@umbraco-cms/backoffice/extension-registry'; - -export const manifests: Array = [ - { - type: 'externalLoginProvider', - alias: 'Umb.ExternalLoginProvider.Test', - name: 'Test External Login Provider', - elementName: 'umb-external-login-provider-test', - element: () => import('./external-login-provider-test.element.js'), - weight: 2, - meta: { - label: 'Test External Login Provider', - pathname: 'test/test/test', - }, - }, - { - type: 'externalLoginProvider', - alias: 'Umb.ExternalLoginProvider.Test2', - name: 'Test External Login Provider 2', - elementName: 'umb-external-login-provider-test2', - element: () => import('./external-login-provider-test2.element.js'), - weight: 1, - meta: { - label: 'Test External Login Provider 2', - pathname: 'test/test/test', - }, - }, -]; diff --git a/src/Umbraco.Web.UI.Client/apps/auth/src/index.ts b/src/Umbraco.Web.UI.Client/apps/auth/src/index.ts deleted file mode 100644 index 43ef4da338..0000000000 --- a/src/Umbraco.Web.UI.Client/apps/auth/src/index.ts +++ /dev/null @@ -1,7 +0,0 @@ -import 'element-internals-polyfill'; - -import '@umbraco-ui/uui-css/dist/uui-css.css'; -import '../../../src/css/umb-css.css'; -import '@umbraco-ui/uui'; - -import './login.element.js'; diff --git a/src/Umbraco.Web.UI.Client/apps/auth/src/login.element.ts b/src/Umbraco.Web.UI.Client/apps/auth/src/login.element.ts deleted file mode 100644 index d55dd07276..0000000000 --- a/src/Umbraco.Web.UI.Client/apps/auth/src/login.element.ts +++ /dev/null @@ -1,148 +0,0 @@ -import { UUITextStyles } from '@umbraco-ui/uui-css'; -import { css, CSSResultGroup, html, LitElement, nothing } from 'lit'; -import { customElement, property, state } from 'lit/decorators.js'; - -import type { UUIButtonState } from '@umbraco-ui/uui'; -import type { IUmbAuthContext } from './types.js'; -import { UmbAuthLegacyContext } from './auth-legacy.context.js'; -import { UmbAuthContext } from './auth.context.js'; - -import './auth-layout.element.js'; - -@customElement('umb-login') -export default class UmbLoginElement extends LitElement { - #authContext: IUmbAuthContext; - - @property({ type: String, attribute: 'return-url' }) - returnUrl = ''; - - @property({ type: Boolean }) - isLegacy = false; - - @state() - private _loginState: UUIButtonState = undefined; - - @state() - private _loginError = ''; - - constructor() { - super(); - if (this.isLegacy) { - this.#authContext = new UmbAuthLegacyContext(); - } else { - this.#authContext = new UmbAuthContext(); - } - } - - #handleSubmit = async (e: SubmitEvent) => { - e.preventDefault(); - - const form = e.target as HTMLFormElement; - if (!form) return; - - if (!form.checkValidity()) return; - - const formData = new FormData(form); - - const username = formData.get('email') as string; - const password = formData.get('password') as string; - const persist = formData.has('persist'); - - this._loginState = 'waiting'; - - const response = await this.#authContext.login({ username, password, persist }); - - this._loginError = response.error || ''; - this._loginState = response.error ? 'failed' : 'success'; - - if (response.error) return; - - location.href = this.returnUrl; - }; - - get #greeting() { - return [ - 'Happy super Sunday', - 'Happy marvelous Monday', - 'Happy tubular Tuesday', - 'Happy wonderful Wednesday', - 'Happy thunderous Thursday', - 'Happy funky Friday', - 'Happy Saturday', - ][new Date().getDay()]; - } - - render() { - return html` - -
-

${this.#greeting}

- -
- - Email - - - - - Password - - - - ${this.#authContext.supportsPersistLogin - ? html` - Remember me - ` - : nothing} - - ${this.#renderErrorMessage()} - - -
-
-
-
- `; - } - - #renderErrorMessage() { - if (!this._loginError || this._loginState !== 'failed') return nothing; - - return html`

${this._loginError}

`; - } - - static styles: CSSResultGroup = [ - UUITextStyles, - css` - #email, - #password { - width: 100%; - } - .text-danger { - color: var(--uui-color-danger-standalone); - } - `, - ]; -} - -declare global { - interface HTMLElementTagNameMap { - 'umb-login': UmbLoginElement; - } -} diff --git a/src/Umbraco.Web.UI.Client/apps/auth/src/login.test.ts b/src/Umbraco.Web.UI.Client/apps/auth/src/login.test.ts deleted file mode 100644 index 3bdfaccdd0..0000000000 --- a/src/Umbraco.Web.UI.Client/apps/auth/src/login.test.ts +++ /dev/null @@ -1,21 +0,0 @@ -import { expect, fixture, html } from '@open-wc/testing'; -import { type UmbTestRunnerWindow, defaultA11yConfig } from '@umbraco-cms/internal/test-utils'; -import UmbLoginElement from './login.element.js'; - -describe('UmbLogin', () => { - let element: UmbLoginElement; - - beforeEach(async () => { - element = await fixture(html``); - }); - - it('is defined with its own instance', () => { - expect(element).to.be.instanceOf(UmbLoginElement); - }); - - if ((window as UmbTestRunnerWindow).__UMBRACO_TEST_RUN_A11Y_TEST) { - it('passes the a11y audit', async () => { - await expect(element).to.be.accessible(defaultA11yConfig); - }); - } -}); diff --git a/src/Umbraco.Web.UI.Client/apps/auth/src/types.ts b/src/Umbraco.Web.UI.Client/apps/auth/src/types.ts deleted file mode 100644 index 114c515c5d..0000000000 --- a/src/Umbraco.Web.UI.Client/apps/auth/src/types.ts +++ /dev/null @@ -1,16 +0,0 @@ -export type LoginRequestModel = { - username: string; - password: string; - persist: boolean; -}; - -export interface IUmbAuthContext { - login(data: LoginRequestModel): Promise; - supportsPersistLogin: boolean; -} - -export type LoginResponse = { - data?: string; - error?: string; - status: number; -}; diff --git a/src/Umbraco.Web.UI.Client/apps/auth/src/vite-env.d.ts b/src/Umbraco.Web.UI.Client/apps/auth/src/vite-env.d.ts deleted file mode 100644 index b0fda2b4ce..0000000000 --- a/src/Umbraco.Web.UI.Client/apps/auth/src/vite-env.d.ts +++ /dev/null @@ -1,6 +0,0 @@ -/// - -/* -interface ImportMetaEnv { -} -*/ diff --git a/src/Umbraco.Web.UI.Client/apps/auth/tsconfig.json b/src/Umbraco.Web.UI.Client/apps/auth/tsconfig.json deleted file mode 100644 index 3f90319d83..0000000000 --- a/src/Umbraco.Web.UI.Client/apps/auth/tsconfig.json +++ /dev/null @@ -1,12 +0,0 @@ -{ - "extends": "../../tsconfig.json", - "compilerOptions": { - "declaration": false - }, - "include": ["src/**/*.ts"], - "references": [ - { - "path": "./tsconfig.node.json" - } - ] -} diff --git a/src/Umbraco.Web.UI.Client/apps/auth/tsconfig.node.json b/src/Umbraco.Web.UI.Client/apps/auth/tsconfig.node.json deleted file mode 100644 index b8b8971494..0000000000 --- a/src/Umbraco.Web.UI.Client/apps/auth/tsconfig.node.json +++ /dev/null @@ -1,9 +0,0 @@ -{ - "compilerOptions": { - "composite": true, - "module": "esnext", - "moduleResolution": "node", - "allowSyntheticDefaultImports": true - }, - "include": ["vite.config.ts"] -} diff --git a/src/Umbraco.Web.UI.Client/apps/auth/vite.config.ts b/src/Umbraco.Web.UI.Client/apps/auth/vite.config.ts deleted file mode 100644 index 74cb265ca6..0000000000 --- a/src/Umbraco.Web.UI.Client/apps/auth/vite.config.ts +++ /dev/null @@ -1,32 +0,0 @@ -import { defineConfig } from 'vite'; -import viteTSConfigPaths from 'vite-tsconfig-paths'; - -// https://vitejs.dev/config/ -export default defineConfig({ - build: { - lib: { - entry: 'src/index.ts', - formats: ['es'], - fileName: 'main', - }, - target: 'esnext', - sourcemap: true, - rollupOptions: { - external: [/^@umbraco-cms\/backoffice\//], - output: { - manualChunks: { - uui: ['@umbraco-ui/uui'], - }, - }, - }, - outDir: '../../../Umbraco.Cms.StaticAssets/wwwroot/umbraco/auth', - emptyOutDir: true, - }, - server: { - fs: { - // Allow serving files from the global node_modules folder - allow: ['.', '../../node_modules'], - }, - }, - plugins: [viteTSConfigPaths()], -}); diff --git a/src/Umbraco.Web.UI.Client/devops/eslint/rules/no-direct-api-import.cjs b/src/Umbraco.Web.UI.Client/devops/eslint/rules/no-direct-api-import.cjs index efb6e7c4b0..b051ad64fa 100644 --- a/src/Umbraco.Web.UI.Client/devops/eslint/rules/no-direct-api-import.cjs +++ b/src/Umbraco.Web.UI.Client/devops/eslint/rules/no-direct-api-import.cjs @@ -11,12 +11,12 @@ module.exports = { }, create: function (context) { return { - // If methods called on *Resource classes are not already wrapped with `await tryExecuteAndNotify()`, then we should suggest to wrap them. + // If methods called on *Service classes are not already wrapped with `await tryExecuteAndNotify()`, then we should suggest to wrap them. CallExpression: function (node) { if ( node.callee.type === 'MemberExpression' && node.callee.object.type === 'Identifier' && - node.callee.object.name.endsWith('Resource') && + node.callee.object.name.endsWith('Service') && node.callee.property.type === 'Identifier' && node.callee.property.name !== 'constructor' ) { diff --git a/src/Umbraco.Web.UI.Client/devops/icons/index.js b/src/Umbraco.Web.UI.Client/devops/icons/index.js index 29e84f3a96..909ee19094 100644 --- a/src/Umbraco.Web.UI.Client/devops/icons/index.js +++ b/src/Umbraco.Web.UI.Client/devops/icons/index.js @@ -6,12 +6,13 @@ const path = pathModule.default; const getDirName = path.dirname; const glob = globModule.default; -const moduleDirectory = 'src/shared/icon-registry'; +const moduleDirectory = 'src/packages/core/icon-registry'; const iconsOutputDirectory = `${moduleDirectory}/icons`; const umbracoSvgDirectory = `${moduleDirectory}/svgs`; const iconMapJson = `${moduleDirectory}/icon-dictionary.json`; const lucideSvgDirectory = 'node_modules/lucide-static/icons'; +const simpleIconsSvgDirectory = 'node_modules/simple-icons/icons'; const run = async () => { var icons = await collectDictionaryIcons(); @@ -30,7 +31,7 @@ const collectDictionaryIcons = async () => { // Lucide: fileJSON.lucide.forEach((iconDef) => { - if(iconDef.file && iconDef.name) { + if (iconDef.file && iconDef.name) { const path = lucideSvgDirectory + "/" + iconDef.file; try { @@ -50,15 +51,46 @@ const collectDictionaryIcons = async () => { }; icons.push(icon); - } catch(e) { - console.log(`Could not load file: '${path}'`); + } catch (e) { + console.log(`[Lucide] Could not load file: '${path}'`); + } + } + }); + + // SimpleIcons: + fileJSON.simpleIcons.forEach((iconDef) => { + if (iconDef.file && iconDef.name) { + const path = simpleIconsSvgDirectory + "/" + iconDef.file; + + try { + const rawData = readFileSync(path); + let svg = rawData.toString() + const iconFileName = iconDef.name; + + // SimpleIcons need to use fill="currentColor" + const pattern = /fill=/g; + if (!pattern.test(svg)) { + svg = svg.replace(/ { - if(iconDef.file && iconDef.name) { + if (iconDef.file && iconDef.name) { const path = umbracoSvgDirectory + "/" + iconDef.file; try { @@ -75,8 +107,8 @@ const collectDictionaryIcons = async () => { }; icons.push(icon); - } catch(e) { - console.log(`Could not load file: '${path}'`); + } catch (e) { + console.log(`[Umbraco] Could not load file: '${path}'`); } } }); @@ -104,7 +136,7 @@ const collectDiskIcons = async (icons) => { const iconName = iconFileName; // Only append not already defined icons: - if(!icons.find(x => x.name === iconName)) { + if (!icons.find(x => x.name === iconName)) { const icon = { name: iconName, diff --git a/src/Umbraco.Web.UI.Client/package-lock.json b/src/Umbraco.Web.UI.Client/package-lock.json index b6ef567796..e0a47af8c8 100644 --- a/src/Umbraco.Web.UI.Client/package-lock.json +++ b/src/Umbraco.Web.UI.Client/package-lock.json @@ -9,11 +9,13 @@ "version": "14.0.0-beta003", "license": "MIT", "dependencies": { - "@openid/appauth": "^1.3.1", + "@types/diff": "^5.0.9", "@types/dompurify": "^3.0.5", "@types/uuid": "^9.0.8", "@umbraco-ui/uui": "1.7.2", "@umbraco-ui/uui-css": "1.7.2", + "base64-js": "^1.5.1", + "diff": "^5.2.0", "dompurify": "^3.0.9", "element-internals-polyfill": "^1.3.10", "lit": "^3.1.2", @@ -26,6 +28,7 @@ }, "devDependencies": { "@babel/core": "^7.24.3", + "@hey-api/openapi-ts": "^0.37.3", "@mdx-js/react": "^3.0.0", "@open-wc/testing": "^4.0.0", "@playwright/test": "^1.41.1", @@ -44,10 +47,10 @@ "@types/mocha": "^10.0.1", "@typescript-eslint/eslint-plugin": "^6.14.0", "@typescript-eslint/parser": "^7.1.0", - "@web/dev-server-esbuild": "^1.0.1", + "@web/dev-server-esbuild": "^1.0.2", "@web/dev-server-import-maps": "^0.2.0", "@web/dev-server-rollup": "^0.6.1", - "@web/test-runner": "^0.18.0", + "@web/test-runner": "^0.18.1", "@web/test-runner-playwright": "^0.11.0", "babel-loader": "^9.1.3", "eslint": "^8.56.0", @@ -60,18 +63,18 @@ "eslint-plugin-storybook": "^0.6.15", "eslint-plugin-wc": "^2.0.4", "glob": "^10.3.10", - "lucide-static": "^0.290.0", + "lucide-static": "^0.367.0", "msw": "^1.3.2", - "openapi-typescript-codegen": "0.25.0", "playwright-msw": "^3.0.1", "prettier": "3.2.5", "react": "^18.2.0", "react-dom": "^18.2.0", "remark-gfm": "^3.0.1", - "rollup": "^4.12.0", - "rollup-plugin-esbuild": "^6.1.0", - "rollup-plugin-import-css": "^3.4.0", + "rollup": "^4.14.1", + "rollup-plugin-esbuild": "^6.1.1", + "rollup-plugin-import-css": "^3.5.0", "rollup-plugin-web-worker-loader": "^1.6.1", + "simple-icons": "^11.11.0", "storybook": "^7.6.17", "tiny-glob": "^0.2.9", "tsc-alias": "^1.8.8", @@ -132,36 +135,6 @@ "node": ">=6.0.0" } }, - "node_modules/@apidevtools/json-schema-ref-parser": { - "version": "9.0.9", - "resolved": "https://registry.npmjs.org/@apidevtools/json-schema-ref-parser/-/json-schema-ref-parser-9.0.9.tgz", - "integrity": "sha512-GBD2Le9w2+lVFoc4vswGI/TjkNIZSVp7+9xPf+X3uidBfWnAeUWmquteSyt0+VCrhNMWj/FTABISQrD3Z/YA+w==", - "dev": true, - "dependencies": { - "@jsdevtools/ono": "^7.1.3", - "@types/json-schema": "^7.0.6", - "call-me-maybe": "^1.0.1", - "js-yaml": "^4.1.0" - } - }, - "node_modules/@apidevtools/json-schema-ref-parser/node_modules/argparse": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", - "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", - "dev": true - }, - "node_modules/@apidevtools/json-schema-ref-parser/node_modules/js-yaml": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", - "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", - "dev": true, - "dependencies": { - "argparse": "^2.0.1" - }, - "bin": { - "js-yaml": "bin/js-yaml.js" - } - }, "node_modules/@aw-web-design/x-default-browser": { "version": "1.4.126", "resolved": "https://registry.npmjs.org/@aw-web-design/x-default-browser/-/x-default-browser-1.4.126.tgz", @@ -2666,6 +2639,84 @@ "integrity": "sha512-9TANp6GPoMtYzQdt54kfAyMmz1+osLlXdg2ENroU7zzrtflTLrrC/lgrIfaSe+Wu0b89GKccT7vxXA0MoAIO+Q==", "dev": true }, + "node_modules/@hey-api/openapi-ts": { + "version": "0.37.3", + "resolved": "https://registry.npmjs.org/@hey-api/openapi-ts/-/openapi-ts-0.37.3.tgz", + "integrity": "sha512-bqadMe9YpzwO9nkpCK+XEwbom9V/WNcUSOYKp8lBJbe/Rve/eSnTjANmll65SU/uoc/5kgrnkD0Eh4hcPqSYrA==", + "dev": true, + "dependencies": { + "@apidevtools/json-schema-ref-parser": "11.5.4", + "c12": "1.10.0", + "camelcase": "8.0.0", + "commander": "12.0.0", + "handlebars": "4.7.8" + }, + "bin": { + "openapi-ts": "bin/index.js" + }, + "engines": { + "node": "^18.0.0 || >=20.0.0" + }, + "peerDependencies": { + "typescript": "^5.x" + } + }, + "node_modules/@hey-api/openapi-ts/node_modules/@apidevtools/json-schema-ref-parser": { + "version": "11.5.4", + "resolved": "https://registry.npmjs.org/@apidevtools/json-schema-ref-parser/-/json-schema-ref-parser-11.5.4.tgz", + "integrity": "sha512-o2fsypTGU0WxRxbax8zQoHiIB4dyrkwYfcm8TxZ+bx9pCzcWZbQtiMqpgBvWA/nJ2TrGjK5adCLfTH8wUeU/Wg==", + "dev": true, + "dependencies": { + "@jsdevtools/ono": "^7.1.3", + "@types/json-schema": "^7.0.15", + "js-yaml": "^4.1.0" + }, + "engines": { + "node": ">= 16" + }, + "funding": { + "url": "https://github.com/sponsors/philsturgeon" + } + }, + "node_modules/@hey-api/openapi-ts/node_modules/argparse": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", + "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", + "dev": true + }, + "node_modules/@hey-api/openapi-ts/node_modules/camelcase": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-8.0.0.tgz", + "integrity": "sha512-8WB3Jcas3swSvjIeA2yvCJ+Miyz5l1ZmB6HFb9R1317dt9LCQoswg/BGrmAmkWVEszSrrg4RwmO46qIm2OEnSA==", + "dev": true, + "engines": { + "node": ">=16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@hey-api/openapi-ts/node_modules/commander": { + "version": "12.0.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-12.0.0.tgz", + "integrity": "sha512-MwVNWlYjDTtOjX5PiD7o5pK0UrFU/OYgcJfjjK4RaHZETNtjJqrZa9Y9ds88+A+f+d5lv+561eZ+yCKoS3gbAA==", + "dev": true, + "engines": { + "node": ">=18" + } + }, + "node_modules/@hey-api/openapi-ts/node_modules/js-yaml": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", + "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", + "dev": true, + "dependencies": { + "argparse": "^2.0.1" + }, + "bin": { + "js-yaml": "bin/js-yaml.js" + } + }, "node_modules/@humanwhocodes/config-array": { "version": "0.11.14", "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.11.14.tgz", @@ -3342,19 +3393,6 @@ "lit-html": "^2.0.0 || ^3.0.0" } }, - "node_modules/@openid/appauth": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/@openid/appauth/-/appauth-1.3.1.tgz", - "integrity": "sha512-e54kpi219wES2ijPzeHe1kMnT8VKH8YeTd1GAn9BzVBmutz3tBgcG1y8a4pziNr4vNjFnuD4W446Ua7ELnNDiA==", - "dependencies": { - "@types/base64-js": "^1.3.0", - "@types/jquery": "^3.5.5", - "base64-js": "^1.5.1", - "follow-redirects": "^1.13.3", - "form-data": "^4.0.0", - "opener": "^1.5.2" - } - }, "node_modules/@pkgjs/parseargs": { "version": "0.11.0", "resolved": "https://registry.npmjs.org/@pkgjs/parseargs/-/parseargs-0.11.0.tgz", @@ -3381,52 +3419,60 @@ } }, "node_modules/@puppeteer/browsers": { - "version": "1.4.6", - "resolved": "https://registry.npmjs.org/@puppeteer/browsers/-/browsers-1.4.6.tgz", - "integrity": "sha512-x4BEjr2SjOPowNeiguzjozQbsc6h437ovD/wu+JpaenxVLm3jkgzHY2xOslMTp50HoTvQreMjiexiGQw1sqZlQ==", + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/@puppeteer/browsers/-/browsers-2.2.1.tgz", + "integrity": "sha512-QSXujx4d4ogDamQA8ckkkRieFzDgZEuZuGiey9G7CuDcbnX4iINKWxTPC5Br2AEzY9ICAvcndqgAUFMMKnS/Tw==", "dev": true, "dependencies": { "debug": "4.3.4", "extract-zip": "2.0.1", "progress": "2.0.3", - "proxy-agent": "6.3.0", - "tar-fs": "3.0.4", + "proxy-agent": "6.4.0", + "semver": "7.6.0", + "tar-fs": "3.0.5", "unbzip2-stream": "1.4.3", - "yargs": "17.7.1" + "yargs": "17.7.2" }, "bin": { "browsers": "lib/cjs/main-cli.js" }, "engines": { - "node": ">=16.3.0" - }, - "peerDependencies": { - "typescript": ">= 4.7.4" - }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } + "node": ">=18" } }, - "node_modules/@puppeteer/browsers/node_modules/yargs": { - "version": "17.7.1", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.7.1.tgz", - "integrity": "sha512-cwiTb08Xuv5fqF4AovYacTFNxk62th7LKJ6BL9IGUpTJrWoU7/7WdQGTP2SjKf1dUNBGzDd28p/Yfs/GI6JrLw==", + "node_modules/@puppeteer/browsers/node_modules/lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", "dev": true, "dependencies": { - "cliui": "^8.0.1", - "escalade": "^3.1.1", - "get-caller-file": "^2.0.5", - "require-directory": "^2.1.1", - "string-width": "^4.2.3", - "y18n": "^5.0.5", - "yargs-parser": "^21.1.1" + "yallist": "^4.0.0" }, "engines": { - "node": ">=12" + "node": ">=10" } }, + "node_modules/@puppeteer/browsers/node_modules/semver": { + "version": "7.6.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.0.tgz", + "integrity": "sha512-EnwXhrlwXMk9gKu5/flx5sv/an57AkRplG3hTK68W7FRDN+k+OWBj65M7719OkA82XLBxrcX0KSHj+X5COhOVg==", + "dev": true, + "dependencies": { + "lru-cache": "^6.0.0" + }, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/@puppeteer/browsers/node_modules/yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "dev": true + }, "node_modules/@radix-ui/number": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/@radix-ui/number/-/number-1.0.1.tgz", @@ -4235,9 +4281,9 @@ } }, "node_modules/@rollup/rollup-android-arm-eabi": { - "version": "4.12.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.12.0.tgz", - "integrity": "sha512-+ac02NL/2TCKRrJu2wffk1kZ+RyqxVUlbjSagNgPm94frxtr+XDL12E5Ll1enWskLrtrZ2r8L3wED1orIibV/w==", + "version": "4.14.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.14.1.tgz", + "integrity": "sha512-fH8/o8nSUek8ceQnT7K4EQbSiV7jgkHq81m9lWZFIXjJ7lJzpWXbQFpT/Zh6OZYnpFykvzC3fbEvEAFZu03dPA==", "cpu": [ "arm" ], @@ -4248,9 +4294,9 @@ ] }, "node_modules/@rollup/rollup-android-arm64": { - "version": "4.12.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.12.0.tgz", - "integrity": "sha512-OBqcX2BMe6nvjQ0Nyp7cC90cnumt8PXmO7Dp3gfAju/6YwG0Tj74z1vKrfRz7qAv23nBcYM8BCbhrsWqO7PzQQ==", + "version": "4.14.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.14.1.tgz", + "integrity": "sha512-Y/9OHLjzkunF+KGEoJr3heiD5X9OLa8sbT1lm0NYeKyaM3oMhhQFvPB0bNZYJwlq93j8Z6wSxh9+cyKQaxS7PQ==", "cpu": [ "arm64" ], @@ -4261,9 +4307,9 @@ ] }, "node_modules/@rollup/rollup-darwin-arm64": { - "version": "4.12.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.12.0.tgz", - "integrity": "sha512-X64tZd8dRE/QTrBIEs63kaOBG0b5GVEd3ccoLtyf6IdXtHdh8h+I56C2yC3PtC9Ucnv0CpNFJLqKFVgCYe0lOQ==", + "version": "4.14.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.14.1.tgz", + "integrity": "sha512-+kecg3FY84WadgcuSVm6llrABOdQAEbNdnpi5X3UwWiFVhZIZvKgGrF7kmLguvxHNQy+UuRV66cLVl3S+Rkt+Q==", "cpu": [ "arm64" ], @@ -4274,9 +4320,9 @@ ] }, "node_modules/@rollup/rollup-darwin-x64": { - "version": "4.12.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.12.0.tgz", - "integrity": "sha512-cc71KUZoVbUJmGP2cOuiZ9HSOP14AzBAThn3OU+9LcA1+IUqswJyR1cAJj3Mg55HbjZP6OLAIscbQsQLrpgTOg==", + "version": "4.14.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.14.1.tgz", + "integrity": "sha512-2pYRzEjVqq2TB/UNv47BV/8vQiXkFGVmPFwJb+1E0IFFZbIX8/jo1olxqqMbo6xCXf8kabANhp5bzCij2tFLUA==", "cpu": [ "x64" ], @@ -4287,9 +4333,9 @@ ] }, "node_modules/@rollup/rollup-linux-arm-gnueabihf": { - "version": "4.12.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.12.0.tgz", - "integrity": "sha512-a6w/Y3hyyO6GlpKL2xJ4IOh/7d+APaqLYdMf86xnczU3nurFTaVN9s9jOXQg97BE4nYm/7Ga51rjec5nfRdrvA==", + "version": "4.14.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.14.1.tgz", + "integrity": "sha512-mS6wQ6Do6/wmrF9aTFVpIJ3/IDXhg1EZcQFYHZLHqw6AzMBjTHWnCG35HxSqUNphh0EHqSM6wRTT8HsL1C0x5g==", "cpu": [ "arm" ], @@ -4300,9 +4346,9 @@ ] }, "node_modules/@rollup/rollup-linux-arm64-gnu": { - "version": "4.12.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.12.0.tgz", - "integrity": "sha512-0fZBq27b+D7Ar5CQMofVN8sggOVhEtzFUwOwPppQt0k+VR+7UHMZZY4y+64WJ06XOhBTKXtQB/Sv0NwQMXyNAA==", + "version": "4.14.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.14.1.tgz", + "integrity": "sha512-p9rGKYkHdFMzhckOTFubfxgyIO1vw//7IIjBBRVzyZebWlzRLeNhqxuSaZ7kCEKVkm/kuC9fVRW9HkC/zNRG2w==", "cpu": [ "arm64" ], @@ -4313,9 +4359,9 @@ ] }, "node_modules/@rollup/rollup-linux-arm64-musl": { - "version": "4.12.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.12.0.tgz", - "integrity": "sha512-eTvzUS3hhhlgeAv6bfigekzWZjaEX9xP9HhxB0Dvrdbkk5w/b+1Sxct2ZuDxNJKzsRStSq1EaEkVSEe7A7ipgQ==", + "version": "4.14.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.14.1.tgz", + "integrity": "sha512-nDY6Yz5xS/Y4M2i9JLQd3Rofh5OR8Bn8qe3Mv/qCVpHFlwtZSBYSPaU4mrGazWkXrdQ98GB//H0BirGR/SKFSw==", "cpu": [ "arm64" ], @@ -4325,10 +4371,23 @@ "linux" ] }, + "node_modules/@rollup/rollup-linux-powerpc64le-gnu": { + "version": "4.14.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-powerpc64le-gnu/-/rollup-linux-powerpc64le-gnu-4.14.1.tgz", + "integrity": "sha512-im7HE4VBL+aDswvcmfx88Mp1soqL9OBsdDBU8NqDEYtkri0qV0THhQsvZtZeNNlLeCUQ16PZyv7cqutjDF35qw==", + "cpu": [ + "ppc64le" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ] + }, "node_modules/@rollup/rollup-linux-riscv64-gnu": { - "version": "4.12.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.12.0.tgz", - "integrity": "sha512-ix+qAB9qmrCRiaO71VFfY8rkiAZJL8zQRXveS27HS+pKdjwUfEhqo2+YF2oI+H/22Xsiski+qqwIBxVewLK7sw==", + "version": "4.14.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.14.1.tgz", + "integrity": "sha512-RWdiHuAxWmzPJgaHJdpvUUlDz8sdQz4P2uv367T2JocdDa98iRw2UjIJ4QxSyt077mXZT2X6pKfT2iYtVEvOFw==", "cpu": [ "riscv64" ], @@ -4338,10 +4397,23 @@ "linux" ] }, + "node_modules/@rollup/rollup-linux-s390x-gnu": { + "version": "4.14.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.14.1.tgz", + "integrity": "sha512-VMgaGQ5zRX6ZqV/fas65/sUGc9cPmsntq2FiGmayW9KMNfWVG/j0BAqImvU4KTeOOgYSf1F+k6at1UfNONuNjA==", + "cpu": [ + "s390x" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ] + }, "node_modules/@rollup/rollup-linux-x64-gnu": { - "version": "4.12.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.12.0.tgz", - "integrity": "sha512-TenQhZVOtw/3qKOPa7d+QgkeM6xY0LtwzR8OplmyL5LrgTWIXpTQg2Q2ycBf8jm+SFW2Wt/DTn1gf7nFp3ssVA==", + "version": "4.14.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.14.1.tgz", + "integrity": "sha512-9Q7DGjZN+hTdJomaQ3Iub4m6VPu1r94bmK2z3UeWP3dGUecRC54tmVu9vKHTm1bOt3ASoYtEz6JSRLFzrysKlA==", "cpu": [ "x64" ], @@ -4352,9 +4424,9 @@ ] }, "node_modules/@rollup/rollup-linux-x64-musl": { - "version": "4.12.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.12.0.tgz", - "integrity": "sha512-LfFdRhNnW0zdMvdCb5FNuWlls2WbbSridJvxOvYWgSBOYZtgBfW9UGNJG//rwMqTX1xQE9BAodvMH9tAusKDUw==", + "version": "4.14.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.14.1.tgz", + "integrity": "sha512-JNEG/Ti55413SsreTguSx0LOVKX902OfXIKVg+TCXO6Gjans/k9O6ww9q3oLGjNDaTLxM+IHFMeXy/0RXL5R/g==", "cpu": [ "x64" ], @@ -4365,9 +4437,9 @@ ] }, "node_modules/@rollup/rollup-win32-arm64-msvc": { - "version": "4.12.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.12.0.tgz", - "integrity": "sha512-JPDxovheWNp6d7AHCgsUlkuCKvtu3RB55iNEkaQcf0ttsDU/JZF+iQnYcQJSk/7PtT4mjjVG8N1kpwnI9SLYaw==", + "version": "4.14.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.14.1.tgz", + "integrity": "sha512-ryS22I9y0mumlLNwDFYZRDFLwWh3aKaC72CWjFcFvxK0U6v/mOkM5Up1bTbCRAhv3kEIwW2ajROegCIQViUCeA==", "cpu": [ "arm64" ], @@ -4378,9 +4450,9 @@ ] }, "node_modules/@rollup/rollup-win32-ia32-msvc": { - "version": "4.12.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.12.0.tgz", - "integrity": "sha512-fjtuvMWRGJn1oZacG8IPnzIV6GF2/XG+h71FKn76OYFqySXInJtseAqdprVTDTyqPxQOG9Exak5/E9Z3+EJ8ZA==", + "version": "4.14.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.14.1.tgz", + "integrity": "sha512-TdloItiGk+T0mTxKx7Hp279xy30LspMso+GzQvV2maYePMAWdmrzqSNZhUpPj3CGw12aGj57I026PgLCTu8CGg==", "cpu": [ "ia32" ], @@ -4391,9 +4463,9 @@ ] }, "node_modules/@rollup/rollup-win32-x64-msvc": { - "version": "4.12.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.12.0.tgz", - "integrity": "sha512-ZYmr5mS2wd4Dew/JjT0Fqi2NPB/ZhZ2VvPp7SmvPZb4Y1CG/LRcS6tcRo2cYU7zLK5A7cdbhWnnWmUjoI4qapg==", + "version": "4.14.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.14.1.tgz", + "integrity": "sha512-wQGI+LY/Py20zdUPq+XCem7JcPOyzIJBm3dli+56DJsQOHbnXZFEwgmnC6el1TPAfC8lBT3m+z69RmLykNUbew==", "cpu": [ "x64" ], @@ -5904,11 +5976,6 @@ "@babel/types": "^7.20.7" } }, - "node_modules/@types/base64-js": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/@types/base64-js/-/base64-js-1.3.2.tgz", - "integrity": "sha512-Q2Xn2/vQHRGLRXhQ5+BSLwhHkR3JVflxVKywH0Q6fVoAiUE8fFYL2pE5/l2ZiOiBDfA8qUqRnSxln4G/NFz1Sg==" - }, "node_modules/@types/body-parser": { "version": "1.19.5", "resolved": "https://registry.npmjs.org/@types/body-parser/-/body-parser-1.19.5.tgz", @@ -6019,6 +6086,11 @@ "integrity": "sha512-Rf3/lB9WkDfIL9eEKaSYKc+1L/rNVYBjThk22JTqQw0YozXarX8YljFAz+HCoC6h4B4KwCMsBPZHaFezwT4BNA==", "dev": true }, + "node_modules/@types/diff": { + "version": "5.0.9", + "resolved": "https://registry.npmjs.org/@types/diff/-/diff-5.0.9.tgz", + "integrity": "sha512-RWVEhh/zGXpAVF/ZChwNnv7r4rvqzJ7lYNSmZSVTxjV0PBLf6Qu7RNg+SUtkpzxmiNkjCx0Xn2tPp7FIkshJwQ==" + }, "node_modules/@types/doctrine": { "version": "0.0.3", "resolved": "https://registry.npmjs.org/@types/doctrine/-/doctrine-0.0.3.tgz", @@ -6126,14 +6198,6 @@ "@types/istanbul-lib-report": "*" } }, - "node_modules/@types/jquery": { - "version": "3.5.29", - "resolved": "https://registry.npmjs.org/@types/jquery/-/jquery-3.5.29.tgz", - "integrity": "sha512-oXQQC9X9MOPRrMhPHHOsXqeQDnWeCDT3PelUIg/Oy8FAbzSZtFHRjc7IpbfFVmpLtJ+UOoywpRsuO5Jxjybyeg==", - "dependencies": { - "@types/sizzle": "*" - } - }, "node_modules/@types/js-levenshtein": { "version": "1.1.3", "resolved": "https://registry.npmjs.org/@types/js-levenshtein/-/js-levenshtein-1.1.3.tgz", @@ -6367,11 +6431,6 @@ "integrity": "sha512-mQkU2jY8jJEF7YHjHvsQO8+3ughTL1mcnn96igfhONmR+fUPSKIkefQYpSe8bsly2Ep7oQbn/6VG5/9/0qcArQ==", "dev": true }, - "node_modules/@types/sizzle": { - "version": "2.3.8", - "resolved": "https://registry.npmjs.org/@types/sizzle/-/sizzle-2.3.8.tgz", - "integrity": "sha512-0vWLNK2D5MT9dg0iOo8GlKguPAU02QjmZitPEsXRuJXU/OGIOt9vT9Fc26wtYuavLxtO45v9PGleoL9Z0k1LHg==" - }, "node_modules/@types/trusted-types": { "version": "2.0.7", "resolved": "https://registry.npmjs.org/@types/trusted-types/-/trusted-types-2.0.7.tgz", @@ -8212,15 +8271,15 @@ } }, "node_modules/@web/test-runner": { - "version": "0.18.0", - "resolved": "https://registry.npmjs.org/@web/test-runner/-/test-runner-0.18.0.tgz", - "integrity": "sha512-aAlQrdSqwCie1mxuSK5kM0RYDJZL4Q0Hd5LeXn1on3OtHLtgztL4dZzzNSuAWablR2/Vuve3ChwDDxmYSTqXRg==", + "version": "0.18.1", + "resolved": "https://registry.npmjs.org/@web/test-runner/-/test-runner-0.18.1.tgz", + "integrity": "sha512-jB/9vrpGVtcLY6/7sPpKpSheQ3wWY9P5aQcz2SK2gMHTq3gNpa51NAyec0Al7EFpHvJ1wKYTGRLB2gPyEoJeDg==", "dev": true, "dependencies": { "@web/browser-logs": "^0.4.0", "@web/config-loader": "^0.3.0", "@web/dev-server": "^0.4.0", - "@web/test-runner-chrome": "^0.15.0", + "@web/test-runner-chrome": "^0.16.0", "@web/test-runner-commands": "^0.9.0", "@web/test-runner-core": "^0.13.0", "@web/test-runner-mocha": "^0.9.0", @@ -8243,16 +8302,16 @@ } }, "node_modules/@web/test-runner-chrome": { - "version": "0.15.0", - "resolved": "https://registry.npmjs.org/@web/test-runner-chrome/-/test-runner-chrome-0.15.0.tgz", - "integrity": "sha512-ZqkTJGQ57FDz3lWw+9CKfHuTV64S9GzBy5+0siSQulEVPfGiTzpksx9DohtA3BCLXdbEq4OHg40/XIQJomlc9w==", + "version": "0.16.0", + "resolved": "https://registry.npmjs.org/@web/test-runner-chrome/-/test-runner-chrome-0.16.0.tgz", + "integrity": "sha512-Edc6Y49aVB6k18S5IOj9OCX3rEf8F3jptIu0p95+imqxmcutFEh1GNmlAk2bQGnXS0U6uVY7Xbf61fiaXUQqhg==", "dev": true, "dependencies": { "@web/test-runner-core": "^0.13.0", "@web/test-runner-coverage-v8": "^0.8.0", "async-mutex": "0.4.0", "chrome-launcher": "^0.15.0", - "puppeteer-core": "^20.0.0" + "puppeteer-core": "^22.0.0" }, "engines": { "node": ">=18.0.0" @@ -8487,9 +8546,9 @@ } }, "node_modules/agent-base": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-7.1.0.tgz", - "integrity": "sha512-o/zjMZRhJxny7OyEF+Op8X+efiELC7k7yOjMzgfzVqOzXqkBkWI79YoTdOtsuWd5BWhAGAuOY/Xa6xpiaWXiNg==", + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-7.1.1.tgz", + "integrity": "sha512-H0TSyFNDMomMNJQBn8wFV5YC/2eJ+VXECwOadZJT554xP6cODZHPX3H9QMQECxvrgiSOP1pHjy1sMWQVYJOUOA==", "dev": true, "dependencies": { "debug": "^4.3.4" @@ -8915,7 +8974,8 @@ "node_modules/asynckit": { "version": "0.4.0", "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", - "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==" + "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==", + "dev": true }, "node_modules/available-typed-arrays": { "version": "1.0.6", @@ -8945,9 +9005,9 @@ "dev": true }, "node_modules/b4a": { - "version": "1.6.4", - "resolved": "https://registry.npmjs.org/b4a/-/b4a-1.6.4.tgz", - "integrity": "sha512-fpWrvyVHEKyeEvbKZTVOeZF3VSKKWtJxFIxX/jaVPf+cLbGUSitjb49pHLqPV2BUNNZ0LcoeEGfE/YCpyDYHIw==", + "version": "1.6.6", + "resolved": "https://registry.npmjs.org/b4a/-/b4a-1.6.6.tgz", + "integrity": "sha512-5Tk1HLk6b6ctmjIkAcU/Ujv/1WqiDl0F0JdRCR80VsOcUlHcu7pWeWRlOqQLHfDEsVx9YH/aif5AG4ehoCtTmg==", "dev": true }, "node_modules/babel-core": { @@ -9160,6 +9220,42 @@ "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", "dev": true }, + "node_modules/bare-events": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/bare-events/-/bare-events-2.2.2.tgz", + "integrity": "sha512-h7z00dWdG0PYOQEvChhOSWvOfkIKsdZGkWr083FgN/HyoQuebSew/cgirYqh9SCuy/hRvxc5Vy6Fw8xAmYHLkQ==", + "dev": true, + "optional": true + }, + "node_modules/bare-fs": { + "version": "2.2.3", + "resolved": "https://registry.npmjs.org/bare-fs/-/bare-fs-2.2.3.tgz", + "integrity": "sha512-amG72llr9pstfXOBOHve1WjiuKKAMnebcmMbPWDZ7BCevAoJLpugjuAPRsDINEyjT0a6tbaVx3DctkXIRbLuJw==", + "dev": true, + "optional": true, + "dependencies": { + "bare-events": "^2.0.0", + "bare-path": "^2.0.0", + "streamx": "^2.13.0" + } + }, + "node_modules/bare-os": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/bare-os/-/bare-os-2.2.1.tgz", + "integrity": "sha512-OwPyHgBBMkhC29Hl3O4/YfxW9n7mdTr2+SsO29XBWKKJsbgj3mnorDB80r5TiCQgQstgE5ga1qNYrpes6NvX2w==", + "dev": true, + "optional": true + }, + "node_modules/bare-path": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/bare-path/-/bare-path-2.1.1.tgz", + "integrity": "sha512-OHM+iwRDRMDBsSW7kl3dO62JyHdBKO3B25FB9vNQBPcGHMo4+eA8Yj41Lfbk3pS/seDY+siNge0LdRTulAau/A==", + "dev": true, + "optional": true, + "dependencies": { + "bare-os": "^2.1.0" + } + }, "node_modules/base64-js": { "version": "1.5.1", "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", @@ -9180,9 +9276,9 @@ ] }, "node_modules/basic-ftp": { - "version": "5.0.4", - "resolved": "https://registry.npmjs.org/basic-ftp/-/basic-ftp-5.0.4.tgz", - "integrity": "sha512-8PzkB0arJFV4jJWSGOYR+OEic6aeKMu/osRhBULN6RY0ykby6LKhbmuQ5ublvaas5BOwboah5D87nrHyuh8PPA==", + "version": "5.0.5", + "resolved": "https://registry.npmjs.org/basic-ftp/-/basic-ftp-5.0.5.tgz", + "integrity": "sha512-4Bcg1P8xhUuqcii/S0Z9wiHIrQVPMermM1any+MX5GeGD7faD3/msQUDGLol9wOcz4/jbg/WJnGqoJF6LiBdtg==", "dev": true, "engines": { "node": ">=10.0.0" @@ -9441,6 +9537,26 @@ "node": ">= 0.8" } }, + "node_modules/c12": { + "version": "1.10.0", + "resolved": "https://registry.npmjs.org/c12/-/c12-1.10.0.tgz", + "integrity": "sha512-0SsG7UDhoRWcuSvKWHaXmu5uNjDCDN3nkQLRL4Q42IlFy+ze58FcCoI3uPwINXinkz7ZinbhEgyzYFw9u9ZV8g==", + "dev": true, + "dependencies": { + "chokidar": "^3.6.0", + "confbox": "^0.1.3", + "defu": "^6.1.4", + "dotenv": "^16.4.5", + "giget": "^1.2.1", + "jiti": "^1.21.0", + "mlly": "^1.6.1", + "ohash": "^1.1.3", + "pathe": "^1.1.2", + "perfect-debounce": "^1.0.0", + "pkg-types": "^1.0.3", + "rc9": "^2.1.1" + } + }, "node_modules/cache-content-type": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/cache-content-type/-/cache-content-type-1.0.1.tgz", @@ -9473,12 +9589,6 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/call-me-maybe": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/call-me-maybe/-/call-me-maybe-1.0.2.tgz", - "integrity": "sha512-HpX65o1Hnr9HH25ojC1YGs7HCQLq0GCOibSaWER0eNpgJ/Z1MZv2mTc7+xh6WOPxbRVcmgbv4hGU+uSQ/2xFZQ==", - "dev": true - }, "node_modules/callsites": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", @@ -9637,16 +9747,10 @@ "dev": true }, "node_modules/chokidar": { - "version": "3.5.3", - "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.3.tgz", - "integrity": "sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==", + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.6.0.tgz", + "integrity": "sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==", "dev": true, - "funding": [ - { - "type": "individual", - "url": "https://paulmillr.com/funding/" - } - ], "dependencies": { "anymatch": "~3.1.2", "braces": "~3.0.2", @@ -9659,6 +9763,9 @@ "engines": { "node": ">= 8.10.0" }, + "funding": { + "url": "https://paulmillr.com/funding/" + }, "optionalDependencies": { "fsevents": "~2.3.2" } @@ -9703,12 +9810,14 @@ } }, "node_modules/chromium-bidi": { - "version": "0.4.16", - "resolved": "https://registry.npmjs.org/chromium-bidi/-/chromium-bidi-0.4.16.tgz", - "integrity": "sha512-7ZbXdWERxRxSwo3txsBjjmc/NLxqb1Bk30mRb0BMS4YIaiV6zvKZqL/UAH+DdqcDYayDWk2n/y8klkBDODrPvA==", + "version": "0.5.16", + "resolved": "https://registry.npmjs.org/chromium-bidi/-/chromium-bidi-0.5.16.tgz", + "integrity": "sha512-IT5lnR44h/qZQ4GaCHvBxYIl4cQL2i9UvFyYeRyVdcpY04hx5H720HQfe/7Oz7ndxaYVLQFGpCO71J4X2Ye/Gw==", "dev": true, "dependencies": { - "mitt": "3.0.0" + "mitt": "3.0.1", + "urlpattern-polyfill": "10.0.0", + "zod": "3.22.4" }, "peerDependencies": { "devtools-protocol": "*" @@ -9913,6 +10022,7 @@ "version": "1.0.8", "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", + "dev": true, "dependencies": { "delayed-stream": "~1.0.0" }, @@ -9968,15 +10078,6 @@ "node": ">=12.17" } }, - "node_modules/commander": { - "version": "11.1.0", - "resolved": "https://registry.npmjs.org/commander/-/commander-11.1.0.tgz", - "integrity": "sha512-yPVavfyCcRhmorC7rWlkHn15b4wDVgVmBA7kV4QVBsF7kv/9TKJAbAXVTxvTnwP8HHKjRCJDClKbciiYS7p0DQ==", - "dev": true, - "engines": { - "node": ">=16" - } - }, "node_modules/common-path-prefix": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/common-path-prefix/-/common-path-prefix-3.0.0.tgz", @@ -10085,6 +10186,12 @@ "safe-buffer": "~5.1.0" } }, + "node_modules/confbox": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/confbox/-/confbox-0.1.3.tgz", + "integrity": "sha512-eH3ZxAihl1PhKfpr4VfEN6/vUd87fmgb6JkldHgg/YR6aEBhW63qUDgzP2Y6WM0UumdsYp5H3kibalXAdHfbgg==", + "dev": true + }, "node_modules/consola": { "version": "3.2.3", "resolved": "https://registry.npmjs.org/consola/-/consola-3.2.3.tgz", @@ -10194,15 +10301,6 @@ "integrity": "sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ==", "dev": true }, - "node_modules/cross-fetch": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/cross-fetch/-/cross-fetch-4.0.0.tgz", - "integrity": "sha512-e4a5N8lVvuLgAWgnCrLr2PP0YyDOTHa9H/Rj54dirp61qXnNq46m82bRhNqIA5VccJtWBvPTFRV3TtvHUKPB1g==", - "dev": true, - "dependencies": { - "node-fetch": "^2.6.12" - } - }, "node_modules/cross-spawn": { "version": "7.0.3", "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", @@ -10233,9 +10331,9 @@ "dev": true }, "node_modules/data-uri-to-buffer": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/data-uri-to-buffer/-/data-uri-to-buffer-6.0.1.tgz", - "integrity": "sha512-MZd3VlchQkp8rdend6vrx7MmVDJzSNTBvghvKjirLkD+WTChA3KUf0jkE68Q4UyctNqI11zZO9/x2Yx+ub5Cvg==", + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/data-uri-to-buffer/-/data-uri-to-buffer-6.0.2.tgz", + "integrity": "sha512-7hvf7/GW8e86rW0ptuwS3OcBGDjIi6SZva7hCyWC0yYry2cOPmLIjXAUHI6DK2HsnwJd9ifmt57i8eV2n4YNpw==", "dev": true, "engines": { "node": ">= 14" @@ -10422,6 +10520,7 @@ "version": "1.0.0", "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==", + "dev": true, "engines": { "node": ">=0.4.0" } @@ -10459,6 +10558,12 @@ "node": ">=6" } }, + "node_modules/destr": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/destr/-/destr-2.0.3.tgz", + "integrity": "sha512-2N3BOUU4gYMpTP24s5rF5iP7BDr7uNTCs4ozw3kf/eKfvWSIu93GEBi5m427YoyJoeOzQ5smuu4nNAPGb8idSQ==", + "dev": true + }, "node_modules/destroy": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.2.0.tgz", @@ -10511,16 +10616,15 @@ } }, "node_modules/devtools-protocol": { - "version": "0.0.1147663", - "resolved": "https://registry.npmjs.org/devtools-protocol/-/devtools-protocol-0.0.1147663.tgz", - "integrity": "sha512-hyWmRrexdhbZ1tcJUGpO95ivbRhWXz++F4Ko+n21AY5PNln2ovoJw+8ZMNDTtip+CNFQfrtLVh/w4009dXO/eQ==", + "version": "0.0.1262051", + "resolved": "https://registry.npmjs.org/devtools-protocol/-/devtools-protocol-0.0.1262051.tgz", + "integrity": "sha512-YJe4CT5SA8on3Spa+UDtNhEqtuV6Epwz3OZ4HQVLhlRccpZ9/PAYk0/cy/oKxFKRrZPBUPyxympQci4yWNWZ9g==", "dev": true }, "node_modules/diff": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/diff/-/diff-5.1.0.tgz", - "integrity": "sha512-D+mk+qE8VC/PAUrlAU34N+VfXev0ghe5ywmpqrawphmVZc1bEfn56uo9qpyGp1p4xpzOHkSW4ztBd6L7Xx4ACw==", - "dev": true, + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/diff/-/diff-5.2.0.tgz", + "integrity": "sha512-uIFDxqpRZGZ6ThOk84hEfqWoHx2devRFvpTZcTHur85vImfaxUbTW9Ryh4CpCuDnToOP1CEtXKIgytHBPVff5A==", "engines": { "node": ">=0.3.1" } @@ -12235,25 +12339,6 @@ "node": ">=0.4.0" } }, - "node_modules/follow-redirects": { - "version": "1.15.6", - "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.6.tgz", - "integrity": "sha512-wWN62YITEaOpSK584EZXJafH1AGpO8RVgElfkuXbTOrPX4fIfOyEpW/CsiNd8JdYrAoOvafRTOEnvsO++qCqFA==", - "funding": [ - { - "type": "individual", - "url": "https://github.com/sponsors/RubenVerborgh" - } - ], - "engines": { - "node": ">=4.0" - }, - "peerDependenciesMeta": { - "debug": { - "optional": true - } - } - }, "node_modules/for-each": { "version": "0.3.3", "resolved": "https://registry.npmjs.org/for-each/-/for-each-0.3.3.tgz", @@ -12295,6 +12380,7 @@ "version": "4.0.0", "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.0.tgz", "integrity": "sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==", + "dev": true, "dependencies": { "asynckit": "^0.4.0", "combined-stream": "^1.0.8", @@ -12545,52 +12631,20 @@ } }, "node_modules/get-uri": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/get-uri/-/get-uri-6.0.2.tgz", - "integrity": "sha512-5KLucCJobh8vBY1K07EFV4+cPZH3mrV9YeAruUseCQKHB58SGjjT2l9/eA9LD082IiuMjSlFJEcdJ27TXvbZNw==", + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/get-uri/-/get-uri-6.0.3.tgz", + "integrity": "sha512-BzUrJBS9EcUb4cFol8r4W3v1cPsSyajLSthNkz5BxbpDcHN5tIrM10E2eNvfnvBn3DaT3DUgx0OpsBKkaOpanw==", "dev": true, "dependencies": { "basic-ftp": "^5.0.2", - "data-uri-to-buffer": "^6.0.0", + "data-uri-to-buffer": "^6.0.2", "debug": "^4.3.4", - "fs-extra": "^8.1.0" + "fs-extra": "^11.2.0" }, "engines": { "node": ">= 14" } }, - "node_modules/get-uri/node_modules/fs-extra": { - "version": "8.1.0", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-8.1.0.tgz", - "integrity": "sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g==", - "dev": true, - "dependencies": { - "graceful-fs": "^4.2.0", - "jsonfile": "^4.0.0", - "universalify": "^0.1.0" - }, - "engines": { - "node": ">=6 <7 || >=8" - } - }, - "node_modules/get-uri/node_modules/jsonfile": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz", - "integrity": "sha512-m6F1R3z8jjlf2imQHS2Qez5sjKWQzbuuhuJ/FKYFRZvPE3PuHcSMVZzfsLhGVOkfd20obL5SWEBew5ShlquNxg==", - "dev": true, - "optionalDependencies": { - "graceful-fs": "^4.1.6" - } - }, - "node_modules/get-uri/node_modules/universalify": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz", - "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==", - "dev": true, - "engines": { - "node": ">= 4.0.0" - } - }, "node_modules/giget": { "version": "1.2.1", "resolved": "https://registry.npmjs.org/giget/-/giget-1.2.1.tgz", @@ -12955,9 +13009,9 @@ } }, "node_modules/http-proxy-agent": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-7.0.0.tgz", - "integrity": "sha512-+ZT+iBxVUQ1asugqnD6oWoRiS25AkjNfG085dKJGtGxkdwLQrMKU5wJr2bOOFAXzKcTuqq+7fZlTMgG3SRfIYQ==", + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-7.0.2.tgz", + "integrity": "sha512-T1gkAiYYDWYx3V5Bmyu7HcfcvL7mUrTWiM6yOfa3PIphViJ/gFPbvidQ+veqSOHci/PxBcDabeUNCzpOODJZig==", "dev": true, "dependencies": { "agent-base": "^7.1.0", @@ -12968,9 +13022,9 @@ } }, "node_modules/https-proxy-agent": { - "version": "7.0.2", - "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-7.0.2.tgz", - "integrity": "sha512-NmLNjm6ucYwtcUmL7JQC1ZQ57LmHP4lT15FQ8D61nak1rO6DH+fz5qNK2Ap5UN4ZapYICE3/0KodcLYSPsPbaA==", + "version": "7.0.4", + "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-7.0.4.tgz", + "integrity": "sha512-wlwpilI7YdjSkWaQ/7omYBMTliDcmCN8OLihO6I9B86g06lMyAoqgoDpV0XqoaPOKj+0DIdAvnsWfyAAhmimcg==", "dev": true, "dependencies": { "agent-base": "^7.0.2", @@ -13205,6 +13259,25 @@ "integrity": "sha512-lJUL9imLTNi1ZfXT+DU6rBBdbiKGBuay9B6xGSPVjUeQwaH1RIGqef8RZkUtHioLmSNpPR5M4HVKJGm1j8FWVQ==", "dev": true }, + "node_modules/ip-address": { + "version": "9.0.5", + "resolved": "https://registry.npmjs.org/ip-address/-/ip-address-9.0.5.tgz", + "integrity": "sha512-zHtQzGojZXTwZTHQqra+ETKd4Sn3vgi7uBmlPoXVWZqYvuKmtI0l/VZTjqGmJY9x88GGOaZ9+G9ES8hC4T4X8g==", + "dev": true, + "dependencies": { + "jsbn": "1.1.0", + "sprintf-js": "^1.1.3" + }, + "engines": { + "node": ">= 12" + } + }, + "node_modules/ip-address/node_modules/sprintf-js": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.1.3.tgz", + "integrity": "sha512-Oo+0REFV59/rz3gfJNKQiBlwfHaSESl1pcGyABQsnnIfWOFt6JNj5gCog2U6MLZ//IGYD+nA8nI+mTShREReaA==", + "dev": true + }, "node_modules/ipaddr.js": { "version": "1.9.1", "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.1.tgz", @@ -14119,6 +14192,15 @@ "url": "https://github.com/chalk/supports-color?sponsor=1" } }, + "node_modules/jiti": { + "version": "1.21.0", + "resolved": "https://registry.npmjs.org/jiti/-/jiti-1.21.0.tgz", + "integrity": "sha512-gFqAIbuKyyso/3G2qhiO2OM6shY6EPP/R0+mkDbyspxKazh8BXDC5FiFsUjlczgdNz/vfra0da2y+aHrusLG/Q==", + "dev": true, + "bin": { + "jiti": "bin/jiti.js" + } + }, "node_modules/js-levenshtein": { "version": "1.1.6", "resolved": "https://registry.npmjs.org/js-levenshtein/-/js-levenshtein-1.1.6.tgz", @@ -14153,6 +14235,12 @@ "js-yaml": "bin/js-yaml.js" } }, + "node_modules/jsbn": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-1.1.0.tgz", + "integrity": "sha512-4bYVV3aAMtDTTu4+xsDYa6sy9GyJ69/amsu9sYF2zqjiEoZA5xJi3BrfX3uY+/IekIu7MwdObdbDWpoZdBv3/A==", + "dev": true + }, "node_modules/jscodeshift": { "version": "0.15.2", "resolved": "https://registry.npmjs.org/jscodeshift/-/jscodeshift-0.15.2.tgz", @@ -14279,19 +14367,6 @@ "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==", "dev": true }, - "node_modules/json-schema-ref-parser": { - "version": "9.0.9", - "resolved": "https://registry.npmjs.org/json-schema-ref-parser/-/json-schema-ref-parser-9.0.9.tgz", - "integrity": "sha512-qcP2lmGy+JUoQJ4DOQeLaZDqH9qSkeGCK3suKWxJXS82dg728Mn3j97azDMaOUmJAN4uCq91LdPx4K7E8F1a7Q==", - "deprecated": "Please switch to @apidevtools/json-schema-ref-parser", - "dev": true, - "dependencies": { - "@apidevtools/json-schema-ref-parser": "9.0.9" - }, - "engines": { - "node": ">=10" - } - }, "node_modules/json-schema-traverse": { "version": "0.4.1", "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", @@ -14815,9 +14890,9 @@ } }, "node_modules/lucide-static": { - "version": "0.290.0", - "resolved": "https://registry.npmjs.org/lucide-static/-/lucide-static-0.290.0.tgz", - "integrity": "sha512-g2JVS1v2xVypOyMRrWH5lFhJwAftBvAn732Ig4VqS60+4MtL1F+bsbI8wVG3MM6RFhL12gT1hs5vEZufr6XbKA==", + "version": "0.367.0", + "resolved": "https://registry.npmjs.org/lucide-static/-/lucide-static-0.367.0.tgz", + "integrity": "sha512-68o8sSfBE6+4RKtMkwqTqZIrYzORlLgnT1s0nBspUWeD96SLpAcb/tbralI/YvvO7yxFe6Qd0hH3iboa2cKKXg==", "dev": true }, "node_modules/lunr": { @@ -15774,6 +15849,7 @@ "version": "1.52.0", "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", + "dev": true, "engines": { "node": ">= 0.6" } @@ -15782,6 +15858,7 @@ "version": "2.1.35", "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", + "dev": true, "dependencies": { "mime-db": "1.52.0" }, @@ -15863,9 +15940,9 @@ "dev": true }, "node_modules/mitt": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/mitt/-/mitt-3.0.0.tgz", - "integrity": "sha512-7dX2/10ITVyqh4aOSVI9gdape+t9l2/8QxHrFmUXu4EEUpdlxl6RudZUPZoc+zuY2hk1j7XxVroIVIan/pD/SQ==", + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/mitt/-/mitt-3.0.1.tgz", + "integrity": "sha512-vKivATfr97l2/QBCYAkXYDbrIWPM2IIKEl7YPhjCvKlG3kE2gm+uBo6nEXK3M5/Ffh/FLpKExzOQ3JJoJGFKBw==", "dev": true }, "node_modules/mkdirp": { @@ -15886,6 +15963,18 @@ "integrity": "sha512-gKLcREMhtuZRwRAfqP3RFW+TK4JqApVBtOIftVgjuABpAtpxhPGaDcfvbhNvD0B8iD1oUr/txX35NjcaY6Ns/A==", "dev": true }, + "node_modules/mlly": { + "version": "1.6.1", + "resolved": "https://registry.npmjs.org/mlly/-/mlly-1.6.1.tgz", + "integrity": "sha512-vLgaHvaeunuOXHSmEbZ9izxPx3USsk8KCQ8iC+aTlp5sKRSoZvwhHh5L9VbKSaVC6sJDqbyohIS76E2VmHIPAA==", + "dev": true, + "dependencies": { + "acorn": "^8.11.3", + "pathe": "^1.1.2", + "pkg-types": "^1.0.3", + "ufo": "^1.3.2" + } + }, "node_modules/monaco-editor": { "version": "0.46.0", "resolved": "https://registry.npmjs.org/monaco-editor/-/monaco-editor-0.46.0.tgz", @@ -16553,30 +16642,6 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/openapi-typescript-codegen": { - "version": "0.25.0", - "resolved": "https://registry.npmjs.org/openapi-typescript-codegen/-/openapi-typescript-codegen-0.25.0.tgz", - "integrity": "sha512-nN/TnIcGbP58qYgwEEy5FrAAjePcYgfMaCe3tsmYyTgI3v4RR9v8os14L+LEWDvV50+CmqiyTzRkKKtJeb6Ybg==", - "dev": true, - "dependencies": { - "camelcase": "^6.3.0", - "commander": "^11.0.0", - "fs-extra": "^11.1.1", - "handlebars": "^4.7.7", - "json-schema-ref-parser": "^9.0.9" - }, - "bin": { - "openapi": "bin/index.js" - } - }, - "node_modules/opener": { - "version": "1.5.2", - "resolved": "https://registry.npmjs.org/opener/-/opener-1.5.2.tgz", - "integrity": "sha512-ur5UIdyw5Y7yEj9wLzhqXiy6GZ3Mwx0yGI+5sMn2r0N0v3cKJvUmFH5yPP+WXh9e0xfyzyJX95D8l088DNFj7A==", - "bin": { - "opener": "bin/opener-bin.js" - } - }, "node_modules/optionator": { "version": "0.9.3", "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.3.tgz", @@ -16758,25 +16823,18 @@ } }, "node_modules/pac-resolver": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/pac-resolver/-/pac-resolver-7.0.0.tgz", - "integrity": "sha512-Fd9lT9vJbHYRACT8OhCbZBbxr6KRSawSovFpy8nDGshaK99S/EBhVIHp9+crhxrsZOuvLpgL1n23iyPg6Rl2hg==", + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/pac-resolver/-/pac-resolver-7.0.1.tgz", + "integrity": "sha512-5NPgf87AT2STgwa2ntRMr45jTKrYBGkVU36yT0ig/n/GMAa3oPqhZfIQ2kMEimReg0+t9kZViDVZ83qfVUlckg==", "dev": true, "dependencies": { "degenerator": "^5.0.0", - "ip": "^1.1.8", "netmask": "^2.0.2" }, "engines": { "node": ">= 14" } }, - "node_modules/pac-resolver/node_modules/ip": { - "version": "1.1.9", - "resolved": "https://registry.npmjs.org/ip/-/ip-1.1.9.tgz", - "integrity": "sha512-cyRxvOEpNHNtchU3Ln9KC/auJgup87llfQpQ+t5ghoC/UhL16SWzbueiCsdTnWmqAWl7LadfuwhlqmtOaqMHdQ==", - "dev": true - }, "node_modules/pako": { "version": "0.2.9", "resolved": "https://registry.npmjs.org/pako/-/pako-0.2.9.tgz", @@ -16939,6 +16997,12 @@ "integrity": "sha512-F3asv42UuXchdzt+xXqfW1OGlVBe+mxa2mqI0pg5yAHZPvFmY3Y6drSf/GQ1A86WgWEN9Kzh/WrgKa6iGcHXLg==", "dev": true }, + "node_modules/perfect-debounce": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/perfect-debounce/-/perfect-debounce-1.0.0.tgz", + "integrity": "sha512-xCy9V055GLEqoFaHoC1SoLIaLmWctgCUaBaWxDZ7/Zx4CTyX7cJQLJOok/orfjZAh9kEYpjJa4d0KcJmCbctZA==", + "dev": true + }, "node_modules/picocolors": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz", @@ -16987,6 +17051,17 @@ "node": ">=10" } }, + "node_modules/pkg-types": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/pkg-types/-/pkg-types-1.0.3.tgz", + "integrity": "sha512-nN7pYi0AQqJnoLPC9eHFQ8AcyaixBUOwvqc5TDnIKCMEE6I0y8P7OKA7fPexsXGCGxQDl/cmrLAp26LhcwxZ4A==", + "dev": true, + "dependencies": { + "jsonc-parser": "^3.2.0", + "mlly": "^1.2.0", + "pathe": "^1.1.0" + } + }, "node_modules/playwright": { "version": "1.41.2", "resolved": "https://registry.npmjs.org/playwright/-/playwright-1.41.2.tgz", @@ -17243,19 +17318,19 @@ } }, "node_modules/proxy-agent": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/proxy-agent/-/proxy-agent-6.3.0.tgz", - "integrity": "sha512-0LdR757eTj/JfuU7TL2YCuAZnxWXu3tkJbg4Oq3geW/qFNT/32T0sp2HnZ9O0lMR4q3vwAt0+xCA8SR0WAD0og==", + "version": "6.4.0", + "resolved": "https://registry.npmjs.org/proxy-agent/-/proxy-agent-6.4.0.tgz", + "integrity": "sha512-u0piLU+nCOHMgGjRbimiXmA9kM/L9EHh3zL81xCdp7m+Y2pHIsnmbdDoEDoAz5geaonNR6q6+yOPQs6n4T6sBQ==", "dev": true, "dependencies": { "agent-base": "^7.0.2", "debug": "^4.3.4", - "http-proxy-agent": "^7.0.0", - "https-proxy-agent": "^7.0.0", + "http-proxy-agent": "^7.0.1", + "https-proxy-agent": "^7.0.3", "lru-cache": "^7.14.1", - "pac-proxy-agent": "^7.0.0", + "pac-proxy-agent": "^7.0.1", "proxy-from-env": "^1.1.0", - "socks-proxy-agent": "^8.0.1" + "socks-proxy-agent": "^8.0.2" }, "engines": { "node": ">= 14" @@ -17317,49 +17392,19 @@ } }, "node_modules/puppeteer-core": { - "version": "20.9.0", - "resolved": "https://registry.npmjs.org/puppeteer-core/-/puppeteer-core-20.9.0.tgz", - "integrity": "sha512-H9fYZQzMTRrkboEfPmf7m3CLDN6JvbxXA3qTtS+dFt27tR+CsFHzPsT6pzp6lYL6bJbAPaR0HaPO6uSi+F94Pg==", + "version": "22.6.3", + "resolved": "https://registry.npmjs.org/puppeteer-core/-/puppeteer-core-22.6.3.tgz", + "integrity": "sha512-YrTAak5zCTWVTnVaCK1b7FD1qFCCT9bSvQhLzamnIsJ57/tfuXiT8ZvPJR2SBfahyFTYFCcaZAd/Npow3lmDGA==", "dev": true, "dependencies": { - "@puppeteer/browsers": "1.4.6", - "chromium-bidi": "0.4.16", - "cross-fetch": "4.0.0", + "@puppeteer/browsers": "2.2.1", + "chromium-bidi": "0.5.16", "debug": "4.3.4", - "devtools-protocol": "0.0.1147663", - "ws": "8.13.0" + "devtools-protocol": "0.0.1262051", + "ws": "8.16.0" }, "engines": { - "node": ">=16.3.0" - }, - "peerDependencies": { - "typescript": ">= 4.7.4" - }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } - } - }, - "node_modules/puppeteer-core/node_modules/ws": { - "version": "8.13.0", - "resolved": "https://registry.npmjs.org/ws/-/ws-8.13.0.tgz", - "integrity": "sha512-x9vcZYTrFPC7aSIbj7sRCYo7L/Xb8Iy+pW0ng0wt2vCJv7M9HOMy0UoN3rr+IFC7hb7vXoqS+P9ktyLLLhO+LA==", - "dev": true, - "engines": { - "node": ">=10.0.0" - }, - "peerDependencies": { - "bufferutil": "^4.0.1", - "utf-8-validate": ">=5.0.2" - }, - "peerDependenciesMeta": { - "bufferutil": { - "optional": true - }, - "utf-8-validate": { - "optional": true - } + "node": ">=18" } }, "node_modules/qs": { @@ -17455,6 +17500,16 @@ "node": ">= 0.8" } }, + "node_modules/rc9": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/rc9/-/rc9-2.1.2.tgz", + "integrity": "sha512-btXCnMmRIBINM2LDZoEmOogIZU7Qe7zn4BpomSKZ/ykbLObuBdvG+mFq11DL6fjH1DRwHhrlgtYWG96bJiC7Cg==", + "dev": true, + "dependencies": { + "defu": "^6.1.4", + "destr": "^2.0.3" + } + }, "node_modules/react": { "version": "18.2.0", "resolved": "https://registry.npmjs.org/react/-/react-18.2.0.tgz", @@ -18072,9 +18127,9 @@ } }, "node_modules/rollup": { - "version": "4.12.0", - "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.12.0.tgz", - "integrity": "sha512-wz66wn4t1OHIJw3+XU7mJJQV/2NAfw5OAk6G6Hoo3zcvz/XOfQ52Vgi+AN4Uxoxi0KBBwk2g8zPrTDA4btSB/Q==", + "version": "4.14.1", + "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.14.1.tgz", + "integrity": "sha512-4LnHSdd3QK2pa1J6dFbfm1HN0D7vSK/ZuZTsdyUAlA6Rr1yTouUTL13HaDOGJVgby461AhrNGBS7sCGXXtT+SA==", "dev": true, "dependencies": { "@types/estree": "1.0.5" @@ -18087,19 +18142,21 @@ "npm": ">=8.0.0" }, "optionalDependencies": { - "@rollup/rollup-android-arm-eabi": "4.12.0", - "@rollup/rollup-android-arm64": "4.12.0", - "@rollup/rollup-darwin-arm64": "4.12.0", - "@rollup/rollup-darwin-x64": "4.12.0", - "@rollup/rollup-linux-arm-gnueabihf": "4.12.0", - "@rollup/rollup-linux-arm64-gnu": "4.12.0", - "@rollup/rollup-linux-arm64-musl": "4.12.0", - "@rollup/rollup-linux-riscv64-gnu": "4.12.0", - "@rollup/rollup-linux-x64-gnu": "4.12.0", - "@rollup/rollup-linux-x64-musl": "4.12.0", - "@rollup/rollup-win32-arm64-msvc": "4.12.0", - "@rollup/rollup-win32-ia32-msvc": "4.12.0", - "@rollup/rollup-win32-x64-msvc": "4.12.0", + "@rollup/rollup-android-arm-eabi": "4.14.1", + "@rollup/rollup-android-arm64": "4.14.1", + "@rollup/rollup-darwin-arm64": "4.14.1", + "@rollup/rollup-darwin-x64": "4.14.1", + "@rollup/rollup-linux-arm-gnueabihf": "4.14.1", + "@rollup/rollup-linux-arm64-gnu": "4.14.1", + "@rollup/rollup-linux-arm64-musl": "4.14.1", + "@rollup/rollup-linux-powerpc64le-gnu": "4.14.1", + "@rollup/rollup-linux-riscv64-gnu": "4.14.1", + "@rollup/rollup-linux-s390x-gnu": "4.14.1", + "@rollup/rollup-linux-x64-gnu": "4.14.1", + "@rollup/rollup-linux-x64-musl": "4.14.1", + "@rollup/rollup-win32-arm64-msvc": "4.14.1", + "@rollup/rollup-win32-ia32-msvc": "4.14.1", + "@rollup/rollup-win32-x64-msvc": "4.14.1", "fsevents": "~2.3.2" } }, @@ -18129,9 +18186,9 @@ "dev": true }, "node_modules/rollup-plugin-import-css": { - "version": "3.4.0", - "resolved": "https://registry.npmjs.org/rollup-plugin-import-css/-/rollup-plugin-import-css-3.4.0.tgz", - "integrity": "sha512-997dJi7M7yYFn7tZer/UVt72mh4GH/hHBv48j3V4jsGSg+1DdYUXn+QB9SMMCNKF99pSv6QXmIOLTyeuijIsgg==", + "version": "3.5.0", + "resolved": "https://registry.npmjs.org/rollup-plugin-import-css/-/rollup-plugin-import-css-3.5.0.tgz", + "integrity": "sha512-JOVow6n00qt2C/NnsqPmIjFOfxIAudwWqC5SaC84CodMGiMFaP1gPAdgnJ8g8hcG+P85TCYp2kI98grYCEt5pg==", "dev": true, "dependencies": { "@rollup/pluginutils": "^5.0.4" @@ -18487,6 +18544,19 @@ "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==", "dev": true }, + "node_modules/simple-icons": { + "version": "11.11.0", + "resolved": "https://registry.npmjs.org/simple-icons/-/simple-icons-11.11.0.tgz", + "integrity": "sha512-jF4FvxqJ5LGRgScMy6IWHYBuKG7SImwzsTDKHhmAB2RQVKEqvGWI8qmAHWYPKEGM8/oRA/VvKTVIbWdg7YPRsg==", + "dev": true, + "engines": { + "node": ">=0.12.18" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/simple-icons" + } + }, "node_modules/sisteransi": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/sisteransi/-/sisteransi-1.0.5.tgz", @@ -18545,26 +18615,26 @@ } }, "node_modules/socks": { - "version": "2.7.1", - "resolved": "https://registry.npmjs.org/socks/-/socks-2.7.1.tgz", - "integrity": "sha512-7maUZy1N7uo6+WVEX6psASxtNlKaNVMlGQKkG/63nEDdLOWNbiUMoLK7X4uYoLhQstau72mLgfEWcXcwsaHbYQ==", + "version": "2.8.1", + "resolved": "https://registry.npmjs.org/socks/-/socks-2.8.1.tgz", + "integrity": "sha512-B6w7tkwNid7ToxjZ08rQMT8M9BJAf8DKx8Ft4NivzH0zBUfd6jldGcisJn/RLgxcX3FPNDdNQCUEMMT79b+oCQ==", "dev": true, "dependencies": { - "ip": "^2.0.0", + "ip-address": "^9.0.5", "smart-buffer": "^4.2.0" }, "engines": { - "node": ">= 10.13.0", + "node": ">= 10.0.0", "npm": ">= 3.0.0" } }, "node_modules/socks-proxy-agent": { - "version": "8.0.2", - "resolved": "https://registry.npmjs.org/socks-proxy-agent/-/socks-proxy-agent-8.0.2.tgz", - "integrity": "sha512-8zuqoLv1aP/66PHF5TqwJ7Czm3Yv32urJQHrVyhD7mmA6d61Zv8cIXQYPTWwmg6qlupnPvs/QKDmfa4P/qct2g==", + "version": "8.0.3", + "resolved": "https://registry.npmjs.org/socks-proxy-agent/-/socks-proxy-agent-8.0.3.tgz", + "integrity": "sha512-VNegTZKhuGq5vSD6XNKlbqWhyt/40CgoEw8XxD6dhnm8Jq9IEa3nIa4HwnM8XOqU0CdB0BwWVXusqiFXfHB3+A==", "dev": true, "dependencies": { - "agent-base": "^7.0.2", + "agent-base": "^7.1.1", "debug": "^4.3.4", "socks": "^2.7.1" }, @@ -18705,13 +18775,16 @@ "dev": true }, "node_modules/streamx": { - "version": "2.15.7", - "resolved": "https://registry.npmjs.org/streamx/-/streamx-2.15.7.tgz", - "integrity": "sha512-NPEKS5+yjyo597eafGbKW5ujh7Sm6lDLHZQd/lRSz6S0VarpADBJItqfB4PnwpS+472oob1GX5cCY9vzfJpHUA==", + "version": "2.16.1", + "resolved": "https://registry.npmjs.org/streamx/-/streamx-2.16.1.tgz", + "integrity": "sha512-m9QYj6WygWyWa3H1YY69amr4nVgy61xfjys7xO7kviL5rfIEc2naf+ewFiOA+aEJD7y0JO3h2GoiUv4TDwEGzQ==", "dev": true, "dependencies": { "fast-fifo": "^1.1.0", "queue-tick": "^1.0.1" + }, + "optionalDependencies": { + "bare-events": "^2.2.0" } }, "node_modules/strict-event-emitter": { @@ -18986,14 +19059,17 @@ } }, "node_modules/tar-fs": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/tar-fs/-/tar-fs-3.0.4.tgz", - "integrity": "sha512-5AFQU8b9qLfZCX9zp2duONhPmZv0hGYiBPJsyUdqMjzq/mqVpy/rEUSeHk1+YitmxugaptgBh5oDGU3VsAJq4w==", + "version": "3.0.5", + "resolved": "https://registry.npmjs.org/tar-fs/-/tar-fs-3.0.5.tgz", + "integrity": "sha512-JOgGAmZyMgbqpLwct7ZV8VzkEB6pxXFBVErLtb+XCOqzc6w1xiWKI9GVd6bwk68EX7eJ4DWmfXVmq8K2ziZTGg==", "dev": true, "dependencies": { - "mkdirp-classic": "^0.5.2", "pump": "^3.0.0", "tar-stream": "^3.1.5" + }, + "optionalDependencies": { + "bare-fs": "^2.1.1", + "bare-path": "^2.1.0" } }, "node_modules/tar-stream": { @@ -20066,6 +20142,12 @@ "punycode": "^2.1.0" } }, + "node_modules/urlpattern-polyfill": { + "version": "10.0.0", + "resolved": "https://registry.npmjs.org/urlpattern-polyfill/-/urlpattern-polyfill-10.0.0.tgz", + "integrity": "sha512-H/A06tKD7sS1O1X2SshBVeA5FLycRpjqiBeqGKmBwBDBy28EnRjORxTNe269KSSr5un5qyWi1iL61wLxpd+ZOg==", + "dev": true + }, "node_modules/use-callback-ref": { "version": "1.3.1", "resolved": "https://registry.npmjs.org/use-callback-ref/-/use-callback-ref-1.3.1.tgz", @@ -21119,6 +21201,15 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/zod": { + "version": "3.22.4", + "resolved": "https://registry.npmjs.org/zod/-/zod-3.22.4.tgz", + "integrity": "sha512-iC+8Io04lddc+mVqQ9AZ7OQ2MrUKGN+oIQyq1vemgt46jwCwLfhq7/pwnBnNXXXZb8VTVLKwp9EDkx+ryxIWmg==", + "dev": true, + "funding": { + "url": "https://github.com/sponsors/colinhacks" + } + }, "node_modules/zwitch": { "version": "2.0.4", "resolved": "https://registry.npmjs.org/zwitch/-/zwitch-2.0.4.tgz", diff --git a/src/Umbraco.Web.UI.Client/package.json b/src/Umbraco.Web.UI.Client/package.json index 942b806671..d0820f86c7 100644 --- a/src/Umbraco.Web.UI.Client/package.json +++ b/src/Umbraco.Web.UI.Client/package.json @@ -63,6 +63,7 @@ "./property-action": "./dist-cms/packages/core/property-action/index.js", "./property-editor": "./dist-cms/packages/core/property-editor/index.js", "./property": "./dist-cms/packages/core/property/index.js", + "./recycle-bin": "./dist-cms/packages/core/recycle-bin/index.js", "./relation-type": "./dist-cms/packages/relations/relation-types/index.js", "./relations": "./dist-cms/packages/relations/relations/index.js", "./repository": "./dist-cms/packages/core/repository/index.js", @@ -90,6 +91,8 @@ "./webhook": "./dist-cms/packages/webhook/index.js", "./workspace": "./dist-cms/packages/core/workspace/index.js", "./external/backend-api": "./dist-cms/external/backend-api/index.js", + "./external/base64-js": "./dist-cms/external/base64-js/index.js", + "./external/diff": "./dist-cms/external/diff/index.js", "./external/dompurify": "./dist-cms/external/dompurify/index.js", "./external/lit": "./dist-cms/external/lit/index.js", "./external/marked": "./dist-cms/external/marked/index.js", @@ -119,7 +122,6 @@ "url": "https://umbraco.com" }, "scripts": { - "auth:test:e2e": "npx playwright test --config apps/auth/", "backoffice:test:e2e": "npx playwright test", "build-storybook": "npm run wc-analyze && storybook build", "build:for:cms": "npm run build && node ./devops/build/copy-to-cms.js", @@ -135,9 +137,9 @@ "example": "node ./devops/example-runner/index.js", "format:fix": "npm run format -- --write", "format": "prettier 'src/**/*.ts' -- check", - "generate:server-api-local": "openapi --input ../Umbraco.Cms.Api.Management/OpenApi.json --output src/external/backend-api/src --postfixServices Resource --useOptions", - "generate:server-api-dev": "openapi --input http://localhost:11000/umbraco/swagger/management/swagger.json --output src/external/backend-api/src --postfixServices Resource --useOptions", - "generate:server-api": "openapi --input https://raw.githubusercontent.com/umbraco/Umbraco-CMS/v14/dev/src/Umbraco.Cms.Api.Management/OpenApi.json --output src/external/backend-api/src --postfixServices Resource --useOptions", + "generate:server-api-local": "openapi-ts --input ../Umbraco.Cms.Api.Management/OpenApi.json --output src/external/backend-api/src --debug true --enums typescript --lint true --schemas false", + "generate:server-api-dev": "openapi-ts --input http://localhost:11000/umbraco/swagger/management/swagger.json --output src/external/backend-api/src --debug true --enums typescript --lint true --schemas false", + "generate:server-api": "openapi-ts --input https://raw.githubusercontent.com/umbraco/Umbraco-CMS/v14/dev/src/Umbraco.Cms.Api.Management/OpenApi.json --output src/external/backend-api/src --debug true --enums typescript --lint true --schemas false", "generate:icons": "node ./devops/icons/index.js", "generate:jsonschema:dist": "typescript-json-schema --required --include \"./src/packages/core/extension-registry/umbraco-package.ts\" --out dist-cms/umbraco-package-schema.json tsconfig.json UmbracoPackage", "generate:jsonschema": "typescript-json-schema --required --include \"./src/packages/core/extension-registry/*.ts\"", @@ -148,7 +150,7 @@ "preview": "vite preview --open", "storybook:build": "npm run wc-analyze && storybook build", "storybook": "npm run wc-analyze && storybook dev -p 6006", - "test:e2e": "npm run auth:test:e2e && npm run backoffice:test:e2e", + "test:e2e": "npm run backoffice:test:e2e", "test:dev": "web-test-runner --config ./web-test-runner.dev.config.mjs", "test:dev-watch": "web-test-runner --watch --config ./web-test-runner.dev.config.mjs", "test:watch": "web-test-runner --watch", @@ -165,11 +167,13 @@ "npm": ">=10.1 < 11" }, "dependencies": { - "@openid/appauth": "^1.3.1", + "@types/diff": "^5.0.9", "@types/dompurify": "^3.0.5", "@types/uuid": "^9.0.8", "@umbraco-ui/uui": "1.7.2", "@umbraco-ui/uui-css": "1.7.2", + "base64-js": "^1.5.1", + "diff": "^5.2.0", "dompurify": "^3.0.9", "element-internals-polyfill": "^1.3.10", "lit": "^3.1.2", @@ -182,6 +186,7 @@ }, "devDependencies": { "@babel/core": "^7.24.3", + "@hey-api/openapi-ts": "^0.37.3", "@mdx-js/react": "^3.0.0", "@open-wc/testing": "^4.0.0", "@playwright/test": "^1.41.1", @@ -200,10 +205,10 @@ "@types/mocha": "^10.0.1", "@typescript-eslint/eslint-plugin": "^6.14.0", "@typescript-eslint/parser": "^7.1.0", - "@web/dev-server-esbuild": "^1.0.1", + "@web/dev-server-esbuild": "^1.0.2", "@web/dev-server-import-maps": "^0.2.0", "@web/dev-server-rollup": "^0.6.1", - "@web/test-runner": "^0.18.0", + "@web/test-runner": "^0.18.1", "@web/test-runner-playwright": "^0.11.0", "babel-loader": "^9.1.3", "eslint": "^8.56.0", @@ -216,18 +221,18 @@ "eslint-plugin-storybook": "^0.6.15", "eslint-plugin-wc": "^2.0.4", "glob": "^10.3.10", - "lucide-static": "^0.290.0", + "lucide-static": "^0.367.0", "msw": "^1.3.2", - "openapi-typescript-codegen": "0.25.0", "playwright-msw": "^3.0.1", "prettier": "3.2.5", "react": "^18.2.0", "react-dom": "^18.2.0", "remark-gfm": "^3.0.1", - "rollup": "^4.12.0", - "rollup-plugin-esbuild": "^6.1.0", - "rollup-plugin-import-css": "^3.4.0", + "rollup": "^4.14.1", + "rollup-plugin-esbuild": "^6.1.1", + "rollup-plugin-import-css": "^3.5.0", "rollup-plugin-web-worker-loader": "^1.6.1", + "simple-icons": "^11.11.0", "storybook": "^7.6.17", "tiny-glob": "^0.2.9", "tsc-alias": "^1.8.8", diff --git a/src/Umbraco.Web.UI.Client/public/umbraco_logo_white.svg b/src/Umbraco.Web.UI.Client/public/umbraco_logo_white.svg deleted file mode 100644 index 3de8e82ed3..0000000000 --- a/src/Umbraco.Web.UI.Client/public/umbraco_logo_white.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/src/Umbraco.Web.UI.Client/src/apps/app/app-auth.controller.ts b/src/Umbraco.Web.UI.Client/src/apps/app/app-auth.controller.ts new file mode 100644 index 0000000000..baaceaf0a0 --- /dev/null +++ b/src/Umbraco.Web.UI.Client/src/apps/app/app-auth.controller.ts @@ -0,0 +1,173 @@ +import { + UMB_AUTH_CONTEXT, + UMB_MODAL_APP_AUTH, + UMB_STORAGE_REDIRECT_URL, + type UmbUserLoginState, +} from '@umbraco-cms/backoffice/auth'; +import { UmbControllerBase } from '@umbraco-cms/backoffice/class-api'; +import type { UmbControllerHost } from '@umbraco-cms/backoffice/controller-api'; +import { filter, firstValueFrom, skip } from '@umbraco-cms/backoffice/external/rxjs'; +import { umbExtensionsRegistry } from '@umbraco-cms/backoffice/extension-registry'; +import { UMB_MODAL_MANAGER_CONTEXT } from '@umbraco-cms/backoffice/modal'; +import type { ManifestAuthProvider } from '@umbraco-cms/backoffice/extension-registry'; + +export class UmbAppAuthController extends UmbControllerBase { + #authContext?: typeof UMB_AUTH_CONTEXT.TYPE; + #firstTimeLoggingIn = true; + + constructor(host: UmbControllerHost) { + super(host); + + this.consumeContext(UMB_AUTH_CONTEXT, (context) => { + this.#authContext = context; + + // Observe the user's authorization state and start the authorization flow if the user is not authorized + this.observe( + context.isAuthorized.pipe( + // Skip the first since it is always false + skip(1), + // Only continue if the value is false + filter((x) => !x), + ), + () => { + this.#firstTimeLoggingIn = false; + this.makeAuthorizationRequest('timedOut'); + }, + '_authState', + ); + }); + } + + /** + * Checks if the user is authorized. + * If not, the authorization flow is started. + */ + async isAuthorized(): Promise { + if (!this.#authContext) { + throw new Error('[Fatal] Auth context is not available'); + } + + const isAuthorized = this.#authContext.getIsAuthorized(); + + if (isAuthorized) { + return true; + } + + // Make a request to the auth server to start the auth flow + return this.makeAuthorizationRequest(); + } + + /** + * Starts the authorization flow. + * It will check which providers are available and either redirect directly to the provider or show a provider selection screen. + */ + async makeAuthorizationRequest(userLoginState: UmbUserLoginState = 'loggingIn'): Promise { + if (!this.#authContext) { + throw new Error('[Fatal] Auth context is not available'); + } + + // Save location.href so we can redirect to it after login + if (location.href !== this.#authContext.getPostLogoutRedirectUrl()) { + window.sessionStorage.setItem(UMB_STORAGE_REDIRECT_URL, location.href); + } + + // Figure out which providers are available + const availableProviders = await firstValueFrom(this.#authContext.getAuthProviders()); + + // If the user is timed out, we can show the login modal directly + if (userLoginState === 'timedOut') { + const selected = await this.#showLoginModal(userLoginState, availableProviders); + + if (!selected) { + return false; + } + + return this.#updateState(); + } + + if (availableProviders.length === 0) { + throw new Error('[Fatal] No auth providers available'); + } + + if (availableProviders.length === 1) { + // One provider available (most likely the Umbraco provider), so initiate the authorization request to the default provider + this.#authContext.makeAuthorizationRequest(availableProviders[0].forProviderName); + return this.#updateState(); + } + + // Check if any provider is redirecting directly to the provider + const redirectProvider = + userLoginState === 'loggingIn' + ? availableProviders.find((provider) => provider.meta?.behavior?.autoRedirect) + : undefined; + + if (redirectProvider) { + // Redirect directly to the provider + this.#authContext.makeAuthorizationRequest(redirectProvider.forProviderName); + return this.#updateState(); + } + + // Show the provider selection screen + const selected = await this.#showLoginModal(userLoginState, availableProviders); + + if (!selected) { + return false; + } + + return this.#updateState(); + } + + async #showLoginModal( + userLoginState: UmbUserLoginState, + availableProviders: Array, + ): Promise { + if (!this.#authContext) { + throw new Error('[Fatal] Auth context is not available'); + } + + // Check if any provider denies local login + const denyLocalLogin = availableProviders.some((provider) => provider.meta?.behavior?.denyLocalLogin); + if (denyLocalLogin) { + // Unregister the Umbraco provider + umbExtensionsRegistry.unregister('Umb.AuthProviders.Umbraco'); + } + + // Show the provider selection screen + const modalManager = await this.getContext(UMB_MODAL_MANAGER_CONTEXT); + modalManager.remove('umbAuthModal'); + const selected = await modalManager + .open(this._host, UMB_MODAL_APP_AUTH, { + data: { + userLoginState, + }, + modal: { + key: 'umbAuthModal', + backdropBackground: this.#firstTimeLoggingIn + ? 'var(--umb-auth-backdrop, url("/umbraco/backoffice/assets/umbraco_logo_white.svg") 20px 20px / 200px no-repeat, radial-gradient(circle, rgba(2,0,36,1) 0%, rgba(40,58,151,.9) 50%, rgba(0,212,255,1) 100%))' + : 'var(--umb-auth-backdrop-timedout, rgba(0,0,0,0.75))', + }, + }) + .onSubmit() + .catch(() => undefined); + + if (!selected?.providerName) { + return false; + } + + this.#authContext.makeAuthorizationRequest(selected.providerName, selected.loginHint); + + return true; + } + + #updateState() { + if (!this.#authContext) { + throw new Error('[Fatal] Auth context is not available'); + } + + // Reinitialize the auth flow (load the state from local storage) + this.#authContext.setInitialState(); + + // The authorization flow is finished, so let the caller know if the user is authorized + return this.#authContext.getIsAuthorized(); + } +} diff --git a/src/Umbraco.Web.UI.Client/src/apps/app/app.element.ts b/src/Umbraco.Web.UI.Client/src/apps/app/app.element.ts index d104ccab6c..de8c4ee346 100644 --- a/src/Umbraco.Web.UI.Client/src/apps/app/app.element.ts +++ b/src/Umbraco.Web.UI.Client/src/apps/app/app.element.ts @@ -1,8 +1,10 @@ +import { onInit } from '../../packages/core/entry-point.js'; import type { UmbAppErrorElement } from './app-error.element.js'; import { UmbAppContext } from './app.context.js'; import { UmbServerConnection } from './server-connection.js'; +import { UmbAppAuthController } from './app-auth.controller.js'; import type { UMB_AUTH_CONTEXT } from '@umbraco-cms/backoffice/auth'; -import { UMB_STORAGE_REDIRECT_URL, UmbAuthContext } from '@umbraco-cms/backoffice/auth'; +import { UmbAuthContext } from '@umbraco-cms/backoffice/auth'; import { css, html, customElement, property } from '@umbraco-cms/backoffice/external/lit'; import { UUIIconRegistryEssential } from '@umbraco-cms/backoffice/external/uui'; import { UmbIconRegistry } from '@umbraco-cms/backoffice/icon'; @@ -11,6 +13,8 @@ import type { Guard, UmbRoute } from '@umbraco-cms/backoffice/router'; import { pathWithoutBasePath } from '@umbraco-cms/backoffice/router'; import { OpenAPI, RuntimeLevelModel } from '@umbraco-cms/backoffice/external/backend-api'; import { UmbContextDebugController } from '@umbraco-cms/backoffice/debug'; +import { UmbServerExtensionRegistrator } from '@umbraco-cms/backoffice/extension-api'; +import { umbExtensionsRegistry } from '@umbraco-cms/backoffice/extension-registry'; @customElement('umb-app') export class UmbAppElement extends UmbLitElement { @@ -21,7 +25,12 @@ export class UmbAppElement extends UmbLitElement { * @remarks This is the base URL of the Umbraco server, not the base URL of the backoffice. */ @property({ type: String }) - serverUrl = window.location.origin; + set serverUrl(url: string) { + OpenAPI.BASE = url; + } + get serverUrl() { + return OpenAPI.BASE; + } /** * The base path of the backoffice. @@ -29,7 +38,6 @@ export class UmbAppElement extends UmbLitElement { * @attr */ @property({ type: String }) - // TODO: get from base element or maybe move to UmbAuthContext.#getRedirectUrl since it is only used there backofficePath = '/umbraco'; /** @@ -48,6 +56,13 @@ export class UmbAppElement extends UmbLitElement { component: () => import('../upgrader/upgrader.element.js'), guards: [this.#isAuthorizedGuard()], }, + { + path: 'logout', + resolve: () => { + this.#authContext?.clearTokenStorage(); + this.#authController.makeAuthorizationRequest('loggedOut'); + }, + }, { path: '**', component: () => import('../backoffice/backoffice.element.js'), @@ -56,17 +71,18 @@ export class UmbAppElement extends UmbLitElement { ]; #authContext?: typeof UMB_AUTH_CONTEXT.TYPE; - #umbIconRegistry = new UmbIconRegistry(); - #uuiIconRegistry = new UUIIconRegistryEssential(); #serverConnection?: UmbServerConnection; + #authController = new UmbAppAuthController(this); constructor() { super(); - new UmbContextDebugController(this); + OpenAPI.BASE = window.location.origin; - this.#umbIconRegistry.attach(this); - this.#uuiIconRegistry.attach(this); + new UmbIconRegistry().attach(this); + new UUIIconRegistryEssential().attach(this); + + new UmbContextDebugController(this); } connectedCallback(): void { @@ -75,19 +91,17 @@ export class UmbAppElement extends UmbLitElement { } async #setup() { - if (this.serverUrl === undefined) throw new Error('No serverUrl provided'); - - /* All requests to the server requires the base URL to be set. - We make sure it happens before we get the server status. - TODO: find the right place to set this - */ - OpenAPI.BASE = this.serverUrl; - this.#serverConnection = await new UmbServerConnection(this.serverUrl).connect(); this.#authContext = new UmbAuthContext(this, this.serverUrl, this.backofficePath, this.bypassAuth); new UmbAppContext(this, { backofficePath: this.backofficePath, serverUrl: this.serverUrl }); + // Register Core extensions (this is specifically done here because we need these extensions to be registered before the application is initialized) + onInit(this, umbExtensionsRegistry); + + // Register public extensions + await new UmbServerExtensionRegistrator(this, umbExtensionsRegistry).registerPublicExtensions(); + // Try to initialise the auth flow and get the runtime status try { // If the runtime level is "install" we should clear any cached tokens @@ -136,7 +150,6 @@ export class UmbAppElement extends UmbLitElement { // Instruct all requests to use the auth flow to get and use the access_token for all subsequent requests OpenAPI.TOKEN = () => this.#authContext!.getLatestToken(); OpenAPI.WITH_CREDENTIALS = true; - OpenAPI.CREDENTIALS = 'include'; } #redirect() { @@ -184,24 +197,7 @@ export class UmbAppElement extends UmbLitElement { } #isAuthorizedGuard(): Guard { - return () => { - if (!this.#authContext) { - throw new Error('[Fatal] AuthContext requested before it was initialized'); - } - - if (this.#authContext.getIsAuthorized()) { - return true; - } - - // Save location.href so we can redirect to it after login - window.sessionStorage.setItem(UMB_STORAGE_REDIRECT_URL, location.href); - - // Make a request to the auth server to start the auth flow - this.#authContext.makeAuthorizationRequest(); - - // Return false to prevent the route from being rendered - return false; - }; + return () => this.#authController.isAuthorized() ?? false; } #errorPage(errorMsg: string, error?: unknown) { diff --git a/src/Umbraco.Web.UI.Client/src/apps/app/server-connection.ts b/src/Umbraco.Web.UI.Client/src/apps/app/server-connection.ts index d0e53c6559..d4e24cb350 100644 --- a/src/Umbraco.Web.UI.Client/src/apps/app/server-connection.ts +++ b/src/Umbraco.Web.UI.Client/src/apps/app/server-connection.ts @@ -1,4 +1,4 @@ -import { RuntimeLevelModel, ServerResource } from '@umbraco-cms/backoffice/external/backend-api'; +import { RuntimeLevelModel, ServerService } from '@umbraco-cms/backoffice/external/backend-api'; import { UmbBooleanState } from '@umbraco-cms/backoffice/observable-api'; import { tryExecute } from '@umbraco-cms/backoffice/resources'; @@ -51,7 +51,7 @@ export class UmbServerConnection { } async #setStatus() { - const { data, error } = await tryExecute(ServerResource.getServerStatus()); + const { data, error } = await tryExecute(ServerService.getServerStatus()); if (error) { throw error; } diff --git a/src/Umbraco.Web.UI.Client/src/apps/backoffice/backoffice.element.ts b/src/Umbraco.Web.UI.Client/src/apps/backoffice/backoffice.element.ts index 4d77370af7..672117fa16 100644 --- a/src/Umbraco.Web.UI.Client/src/apps/backoffice/backoffice.element.ts +++ b/src/Umbraco.Web.UI.Client/src/apps/backoffice/backoffice.element.ts @@ -14,7 +14,6 @@ import './components/index.js'; const CORE_PACKAGES = [ import('../../packages/audit-log/umbraco-package.js'), import('../../packages/block/umbraco-package.js'), - import('../../packages/core/umbraco-package.js'), import('../../packages/data-type/umbraco-package.js'), import('../../packages/dictionary/umbraco-package.js'), import('../../packages/documents/umbraco-package.js'), @@ -45,7 +44,6 @@ export class UmbBackofficeElement extends UmbLitElement { /** * Backoffice extension registry. * This enables to register and unregister extensions via DevTools, or just via querying this element via the DOM. - * @type {UmbExtensionsRegistry} */ public extensionRegistry = umbExtensionsRegistry; @@ -53,9 +51,11 @@ export class UmbBackofficeElement extends UmbLitElement { super(); new UmbBackofficeContext(this); + new UmbBundleExtensionInitializer(this, umbExtensionsRegistry); new UmbEntryPointExtensionInitializer(this, umbExtensionsRegistry); - new UmbServerExtensionRegistrator(this, umbExtensionsRegistry).registerAllExtensions(); + + new UmbServerExtensionRegistrator(this, umbExtensionsRegistry).registerPrivateExtensions(); // So far local packages are this simple to registerer, so no need for a manager to do that: CORE_PACKAGES.forEach(async (packageImport) => { diff --git a/src/Umbraco.Web.UI.Client/src/apps/backoffice/components/backoffice-header-sections.element.ts b/src/Umbraco.Web.UI.Client/src/apps/backoffice/components/backoffice-header-sections.element.ts index 12a8fac134..5dd782a1a0 100644 --- a/src/Umbraco.Web.UI.Client/src/apps/backoffice/components/backoffice-header-sections.element.ts +++ b/src/Umbraco.Web.UI.Client/src/apps/backoffice/components/backoffice-header-sections.element.ts @@ -1,7 +1,7 @@ import { UMB_BACKOFFICE_CONTEXT } from '../backoffice.context.js'; import type { UmbBackofficeContext } from '../backoffice.context.js'; import type { CSSResultGroup } from '@umbraco-cms/backoffice/external/lit'; -import { css, html, customElement, state, repeat } from '@umbraco-cms/backoffice/external/lit'; +import { css, html, customElement, state, repeat, ifDefined } from '@umbraco-cms/backoffice/external/lit'; import type { ManifestSection } from '@umbraco-cms/backoffice/extension-registry'; import { UmbLitElement } from '@umbraco-cms/backoffice/lit-element'; import type { UmbExtensionManifestInitializer } from '@umbraco-cms/backoffice/extension-api'; @@ -62,7 +62,11 @@ export class UmbBackofficeHeaderSectionsElement extends UmbLitElement { + label="${ifDefined( + section.manifest?.meta.label + ? this.localize.string(section.manifest?.meta.label) + : section.manifest?.name, + )}"> `, )} diff --git a/src/Umbraco.Web.UI.Client/src/apps/installer/database/installer-database.element.ts b/src/Umbraco.Web.UI.Client/src/apps/installer/database/installer-database.element.ts index 2830778239..5747fb78c7 100644 --- a/src/Umbraco.Web.UI.Client/src/apps/installer/database/installer-database.element.ts +++ b/src/Umbraco.Web.UI.Client/src/apps/installer/database/installer-database.element.ts @@ -9,7 +9,7 @@ import type { DatabaseSettingsPresentationModel, ProblemDetails, } from '@umbraco-cms/backoffice/external/backend-api'; -import { ApiError, InstallResource } from '@umbraco-cms/backoffice/external/backend-api'; +import { ApiError, InstallService } from '@umbraco-cms/backoffice/external/backend-api'; import { UmbLitElement } from '@umbraco-cms/backoffice/lit-element'; import { tryExecute } from '@umbraco-cms/backoffice/resources'; @@ -165,12 +165,12 @@ export class UmbInstallerDatabaseElement extends UmbLitElement { }; const { error } = await tryExecute( - InstallResource.postInstallValidateDatabase({ requestBody: databaseDetails }), + InstallService.postInstallValidateDatabase({ requestBody: databaseDetails }), ); if (error) { this._validationErrorMessage = `The server could not validate the database connection. Details: ${ - error instanceof ApiError ? error.body.detail : error.message + error instanceof ApiError ? (error.body as any).detail : error.message }`; this._installButton.state = 'failed'; return; @@ -195,10 +195,10 @@ export class UmbInstallerDatabaseElement extends UmbLitElement { this._installerContext.nextStep(); - const { error } = await tryExecute( - InstallResource.postInstallSetup({ requestBody: this._installerContext.getData() }), + const { error: _error } = await tryExecute( + InstallService.postInstallSetup({ requestBody: this._installerContext.getData() }), ); - + const error = _error as ProblemDetails | undefined; if (error) { this._handleRejected(error); } else { diff --git a/src/Umbraco.Web.UI.Client/src/apps/installer/error/installer-error.element.ts b/src/Umbraco.Web.UI.Client/src/apps/installer/error/installer-error.element.ts index 9b754b8ffe..10b2b96aa5 100644 --- a/src/Umbraco.Web.UI.Client/src/apps/installer/error/installer-error.element.ts +++ b/src/Umbraco.Web.UI.Client/src/apps/installer/error/installer-error.element.ts @@ -39,7 +39,7 @@ export class UmbInstallerErrorElement extends UmbLitElement { private _renderError(error: ProblemDetails) { return html`

Description: ${error.title}

- ${error.errors ? this._renderErrors(error.errors) : nothing} + ${error.errors ? this._renderErrors(error.errors as any) : nothing}

Details:

${error.detail ?? 'Unknown error'}

diff --git a/src/Umbraco.Web.UI.Client/src/apps/installer/installer.context.ts b/src/Umbraco.Web.UI.Client/src/apps/installer/installer.context.ts index aa8d67d497..37c76e05b0 100644 --- a/src/Umbraco.Web.UI.Client/src/apps/installer/installer.context.ts +++ b/src/Umbraco.Web.UI.Client/src/apps/installer/installer.context.ts @@ -4,7 +4,7 @@ import type { ProblemDetails, InstallRequestModel, } from '@umbraco-cms/backoffice/external/backend-api'; -import { InstallResource, TelemetryLevelModel } from '@umbraco-cms/backoffice/external/backend-api'; +import { InstallService, TelemetryLevelModel } from '@umbraco-cms/backoffice/external/backend-api'; import { tryExecute } from '@umbraco-cms/backoffice/resources'; import { UmbContextToken } from '@umbraco-cms/backoffice/context-api'; import { UmbObjectState, UmbNumberState } from '@umbraco-cms/backoffice/observable-api'; @@ -119,7 +119,8 @@ export class UmbInstallerContext { * @memberof UmbInstallerContext */ private async _loadInstallerSettings() { - const { data, error } = await tryExecute(InstallResource.getInstallSettings()); + const { data, error: _error } = await tryExecute(InstallService.getInstallSettings()); + const error: any = _error; if (data) { this._settings.setValue(data); } else if (error) { diff --git a/src/Umbraco.Web.UI.Client/src/apps/upgrader/upgrader.element.ts b/src/Umbraco.Web.UI.Client/src/apps/upgrader/upgrader.element.ts index 3b1c1b35c0..26a68ea5e6 100644 --- a/src/Umbraco.Web.UI.Client/src/apps/upgrader/upgrader.element.ts +++ b/src/Umbraco.Web.UI.Client/src/apps/upgrader/upgrader.element.ts @@ -1,6 +1,6 @@ import { html, customElement, state } from '@umbraco-cms/backoffice/external/lit'; import type { UpgradeSettingsResponseModel } from '@umbraco-cms/backoffice/external/backend-api'; -import { UpgradeResource, ApiError } from '@umbraco-cms/backoffice/external/backend-api'; +import { UpgradeService, ApiError } from '@umbraco-cms/backoffice/external/backend-api'; import { tryExecute } from '@umbraco-cms/backoffice/resources'; import { UmbLitElement } from '@umbraco-cms/backoffice/lit-element'; @@ -43,12 +43,12 @@ export class UmbUpgraderElement extends UmbLitElement { private async _setup() { this.fetching = true; - const { data, error } = await tryExecute(UpgradeResource.getUpgradeSettings()); + const { data, error } = await tryExecute(UpgradeService.getUpgradeSettings()); if (data) { this.upgradeSettings = data; } else if (error) { - this.errorMessage = error instanceof ApiError ? error.body.detail : error.message; + this.errorMessage = error instanceof ApiError ? (error.body as any).detail : error.message; } this.fetching = false; @@ -59,11 +59,11 @@ export class UmbUpgraderElement extends UmbLitElement { this.errorMessage = ''; this.upgrading = true; - const { error } = await tryExecute(UpgradeResource.postUpgradeAuthorize()); + const { error } = await tryExecute(UpgradeService.postUpgradeAuthorize()); if (error) { this.errorMessage = - error instanceof ApiError ? error.body.detail : error.message ?? 'Unknown error, please try again'; + error instanceof ApiError ? (error.body as any).detail : error.message ?? 'Unknown error, please try again'; } else { history.pushState(null, '', 'section/content'); } diff --git a/src/Umbraco.Web.UI.Client/src/assets/installer.jpg b/src/Umbraco.Web.UI.Client/src/assets/installer.jpg deleted file mode 100644 index f0f5de8695..0000000000 Binary files a/src/Umbraco.Web.UI.Client/src/assets/installer.jpg and /dev/null differ diff --git a/src/Umbraco.Web.UI.Client/src/assets/lang/da-dk.ts b/src/Umbraco.Web.UI.Client/src/assets/lang/da-dk.ts index 0d96709dcf..15ae7c0767 100644 --- a/src/Umbraco.Web.UI.Client/src/assets/lang/da-dk.ts +++ b/src/Umbraco.Web.UI.Client/src/assets/lang/da-dk.ts @@ -834,6 +834,7 @@ export default { submit: 'Indsend', type: 'Type', typeToSearch: 'Skriv for at søge...', + unknownUser: 'Ukendt bruger', under: 'under', up: 'Op', update: 'Opdatér', @@ -1013,6 +1014,18 @@ export default { lockoutWillOccur: 'Du har været inaktiv, og du vil blive logget ud om', renewSession: 'Forny for at gemme dine ændringer', }, + login: { + greeting0: 'Velkommen', + greeting1: 'Velkommen', + greeting2: 'Velkommen', + greeting3: 'Velkommen', + greeting4: 'Velkommen', + greeting5: 'Velkommen', + greeting6: 'Velkommen', + instruction: 'Log ind på Umbraco', + signInWith: 'Log ind med {0}', + timeout: 'Du er blevet logget ud på grund af inaktivitet, vil du logge ind igen?', + }, main: { dashboard: 'Skrivebord', sections: 'Sektioner', diff --git a/src/Umbraco.Web.UI.Client/src/assets/lang/en-us.ts b/src/Umbraco.Web.UI.Client/src/assets/lang/en-us.ts index 40987bee26..86c8f304e9 100644 --- a/src/Umbraco.Web.UI.Client/src/assets/lang/en-us.ts +++ b/src/Umbraco.Web.UI.Client/src/assets/lang/en-us.ts @@ -5,61 +5,66 @@ export default { assigndomain: 'Culture and Hostnames', auditTrail: 'Audit Trail', browse: 'Browse Node', - changeDocType: 'Change Document Type', changeDataType: 'Change Data Type', - copy: 'Copy', + changeDocType: 'Change Document Type', + chooseWhereToCopy: 'Choose where to copy', + chooseWhereToImport: 'Choose where to import', + chooseWhereToMove: 'Choose where to move', + copy: 'Copy to', create: 'Create', - export: 'Export', - createPackage: 'Create Package', + createblueprint: 'Create Document Blueprint', createGroup: 'Create group', + createPackage: 'Create Package', delete: 'Delete', + deployCompare: 'Compare', + deployPartialRestore: 'Partial restore', + deployQueueForTransfer: 'Queue for transfer', + deployRestore: 'Workspace restore', + deployTransferNow: 'Transfer now', + deployTreeRestore: 'Tree restore', disable: 'Disable', editContent: 'Edit content', editSettings: 'Edit settings', emptyrecyclebin: 'Empty recycle bin', enable: 'Enable', + export: 'Export', exportDocumentType: 'Export Document Type', + folderCreate: 'Create folder', + folderDelete: 'Delete folder', + folderRename: 'Rename folder', + import: 'Import', importdocumenttype: 'Import Document Type', importPackage: 'Import Package', + infiniteEditorChooseWhereToCopy: 'Choose where to copy the selected item(s)', + infiniteEditorChooseWhereToMove: 'Choose where to move the selected item(s)', liveEdit: 'Edit in Canvas', logout: 'Exit', - move: 'Move', + move: 'Move to', notify: 'Notifications', protect: 'Restrict Public Access', publish: 'Publish', - unpublish: 'Unpublish', refreshNode: 'Reload', - republish: 'Republish entire site', remove: 'Remove', rename: 'Rename', + republish: 'Republish entire site', + resendInvite: 'Resend Invitation', restore: 'Restore', - chooseWhereToCopy: 'Choose where to copy', - chooseWhereToMove: 'Choose where to move', - chooseWhereToImport: 'Choose where to import', - toInTheTreeStructureBelow: 'to in the tree structure below', - infiniteEditorChooseWhereToCopy: 'Choose where to copy the selected item(s)', - infiniteEditorChooseWhereToMove: 'Choose where to move the selected item(s)', - wasMovedTo: 'was moved to', - wasCopiedTo: 'was copied to', - wasDeleted: 'was deleted', rights: 'Permissions', rollback: 'Rollback', sendtopublish: 'Send To Publish', sendToTranslate: 'Send To Translation', setGroup: 'Set group', - sort: 'Sort', - translate: 'Translate', - update: 'Update', setPermissions: 'Set permissions', + sort: 'Sort children of', + toInTheTreeStructureBelow: 'to in the tree structure below', + translate: 'Translate', + trash: 'Trash', unlock: 'Unlock', - createblueprint: 'Create Document Blueprint', - resendInvite: 'Resend Invitation', - deployQueueForTransfer: 'Queue for transfer', - deployRestore: 'Workspace restore', - deployTreeRestore: 'Tree restore', - deployPartialRestore: 'Partial restore', - deployTransferNow: 'Transfer now', - deployCompare: 'Compare', + unpublish: 'Unpublish', + update: 'Update', + wasCopiedTo: 'was copied to', + wasDeleted: 'was deleted', + wasMovedTo: 'was moved to', }, actionCategories: { content: 'Content', @@ -745,6 +750,7 @@ export default { deleted: 'Deleted', deleting: 'Deleting...', design: 'Design', + details: 'Details', dictionary: 'Dictionary', dimensions: 'Dimensions', discard: 'Discard', @@ -842,6 +848,7 @@ export default { type: 'Type', typeName: 'Type Name', typeToSearch: 'Type to search...', + unknownUser: 'Unknown user', under: 'under', up: 'Up', update: 'Update', @@ -1010,6 +1017,18 @@ export default { lockoutWillOccur: "You've been idle and logout will automatically occur in", renewSession: 'Renew now to save your work', }, + login: { + greeting0: 'Welcome', + greeting1: 'Welcome', + greeting2: 'Welcome', + greeting3: 'Welcome', + greeting4: 'Welcome', + greeting5: 'Welcome', + greeting6: 'Welcome', + instruction: 'Sign in to Umbraco', + signInWith: 'Sign in with {0}', + timeout: 'Your session has timed out. Please sign in again below.', + }, main: { dashboard: 'Dashboard', sections: 'Sections', @@ -1800,6 +1819,7 @@ export default { createDate: 'User created', changePassword: 'Change your password', changePhoto: 'Change photo', + configureMfa: 'Configure MFA', emailRequired: 'Required - enter an email address for this user', newPassword: 'New password', newPasswordFormatLengthTip: 'Minimum %0% character(s) to go!', @@ -2480,13 +2500,13 @@ export default { contentTemplatesDashboard: { whatHeadline: 'What are Content Blueprints?', whatDescription: - 'Content Blueprinta are pre-defined content that can be selected when creating a new\n content node.\n ', + 'Content Blueprints are pre-defined content that can be selected when creating a new content node.', createHeadline: 'How do I create a Content Blueprint?', createDescription: - '\n

There are two ways to create a Content Blueprint:

\n
    \n
  • Right-click a content node and select "Create Content Blueprint" to create a new Content Blueprint.
  • \n
  • Right-click the Content Blueprints tree in the Settings section and select the Document Type you want to create a Content Blueprint for.
  • \n
\n

Once given a name, editors can start using the Content Blueprint as a foundation for their new page.

\n ', + '

There are two ways to create a Content Blueprint:

  • Right-click a content node and select "Create Content Blueprint" to create a new Content Blueprint.
  • Right-click the Content Blueprints tree in the Settings section and select the Document Type you want to create a Content Blueprint for.

Once given a name, editors can start using the Content Blueprint as a foundation for their new page.

', manageHeadline: 'How do I manage Content Blueprints?', manageDescription: - 'You can edit and delete Content Blueprints from the "Content Blueprints" tree in the\n Settings section. Expand the Document Type which the Content Blueprint is based on and click it to edit or delete\n it.\n ', + 'You can edit and delete Content Blueprints from the "Content Blueprints" tree in the Settings section. Expand the Document Type which the Content Blueprint is based on and click it to edit or delete it.', }, preview: { endLabel: 'End', diff --git a/src/Umbraco.Web.UI.Client/src/assets/umbraco_background.jpg b/src/Umbraco.Web.UI.Client/src/assets/umbraco_background.jpg deleted file mode 100644 index 412cd17865..0000000000 Binary files a/src/Umbraco.Web.UI.Client/src/assets/umbraco_background.jpg and /dev/null differ diff --git a/src/Umbraco.Web.UI.Client/src/assets/umbraco_logo_blue.svg b/src/Umbraco.Web.UI.Client/src/assets/umbraco_logo_blue.svg new file mode 100644 index 0000000000..578bf592f6 --- /dev/null +++ b/src/Umbraco.Web.UI.Client/src/assets/umbraco_logo_blue.svg @@ -0,0 +1,51 @@ + + + + + + + + + + + + + + + + + + + diff --git a/src/Umbraco.Web.UI.Client/src/assets/umbraco_logo_white.svg b/src/Umbraco.Web.UI.Client/src/assets/umbraco_logo_white.svg index 3de8e82ed3..01f7260cd3 100644 --- a/src/Umbraco.Web.UI.Client/src/assets/umbraco_logo_white.svg +++ b/src/Umbraco.Web.UI.Client/src/assets/umbraco_logo_white.svg @@ -1 +1,51 @@ - \ No newline at end of file + + + + + + + + + + + + + + + + + + + diff --git a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/core/ApiError.ts b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/core/ApiError.ts index d6b8fcc3ad..36675d288a 100644 --- a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/core/ApiError.ts +++ b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/core/ApiError.ts @@ -1,25 +1,21 @@ -/* generated using openapi-typescript-codegen -- do no edit */ -/* istanbul ignore file */ -/* tslint:disable */ -/* eslint-disable */ import type { ApiRequestOptions } from './ApiRequestOptions'; import type { ApiResult } from './ApiResult'; export class ApiError extends Error { - public readonly url: string; - public readonly status: number; - public readonly statusText: string; - public readonly body: any; - public readonly request: ApiRequestOptions; + public readonly url: string; + public readonly status: number; + public readonly statusText: string; + public readonly body: unknown; + public readonly request: ApiRequestOptions; - constructor(request: ApiRequestOptions, response: ApiResult, message: string) { - super(message); + constructor(request: ApiRequestOptions, response: ApiResult, message: string) { + super(message); - this.name = 'ApiError'; - this.url = response.url; - this.status = response.status; - this.statusText = response.statusText; - this.body = response.body; - this.request = request; - } -} + this.name = 'ApiError'; + this.url = response.url; + this.status = response.status; + this.statusText = response.statusText; + this.body = response.body; + this.request = request; + } +} \ No newline at end of file diff --git a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/core/ApiRequestOptions.ts b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/core/ApiRequestOptions.ts index c19adcc94d..8f8d4d159e 100644 --- a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/core/ApiRequestOptions.ts +++ b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/core/ApiRequestOptions.ts @@ -1,17 +1,13 @@ -/* generated using openapi-typescript-codegen -- do no edit */ -/* istanbul ignore file */ -/* tslint:disable */ -/* eslint-disable */ export type ApiRequestOptions = { - readonly method: 'GET' | 'PUT' | 'POST' | 'DELETE' | 'OPTIONS' | 'HEAD' | 'PATCH'; - readonly url: string; - readonly path?: Record; - readonly cookies?: Record; - readonly headers?: Record; - readonly query?: Record; - readonly formData?: Record; - readonly body?: any; - readonly mediaType?: string; - readonly responseHeader?: string; - readonly errors?: Record; -}; + readonly method: 'GET' | 'PUT' | 'POST' | 'DELETE' | 'OPTIONS' | 'HEAD' | 'PATCH'; + readonly url: string; + readonly path?: Record; + readonly cookies?: Record; + readonly headers?: Record; + readonly query?: Record; + readonly formData?: Record; + readonly body?: any; + readonly mediaType?: string; + readonly responseHeader?: string; + readonly errors?: Record; +}; \ No newline at end of file diff --git a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/core/ApiResult.ts b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/core/ApiResult.ts index ad8fef2bc3..4c58e39138 100644 --- a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/core/ApiResult.ts +++ b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/core/ApiResult.ts @@ -1,11 +1,7 @@ -/* generated using openapi-typescript-codegen -- do no edit */ -/* istanbul ignore file */ -/* tslint:disable */ -/* eslint-disable */ -export type ApiResult = { - readonly url: string; - readonly ok: boolean; - readonly status: number; - readonly statusText: string; - readonly body: any; -}; +export type ApiResult = { + readonly body: TData; + readonly ok: boolean; + readonly status: number; + readonly statusText: string; + readonly url: string; +}; \ No newline at end of file diff --git a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/core/CancelablePromise.ts b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/core/CancelablePromise.ts index 55fef85172..ccc082e8f2 100644 --- a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/core/CancelablePromise.ts +++ b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/core/CancelablePromise.ts @@ -1,131 +1,126 @@ -/* generated using openapi-typescript-codegen -- do no edit */ -/* istanbul ignore file */ -/* tslint:disable */ -/* eslint-disable */ export class CancelError extends Error { + constructor(message: string) { + super(message); + this.name = 'CancelError'; + } - constructor(message: string) { - super(message); - this.name = 'CancelError'; - } - - public get isCancelled(): boolean { - return true; - } + public get isCancelled(): boolean { + return true; + } } export interface OnCancel { - readonly isResolved: boolean; - readonly isRejected: boolean; - readonly isCancelled: boolean; + readonly isResolved: boolean; + readonly isRejected: boolean; + readonly isCancelled: boolean; - (cancelHandler: () => void): void; + (cancelHandler: () => void): void; } export class CancelablePromise implements Promise { - #isResolved: boolean; - #isRejected: boolean; - #isCancelled: boolean; - readonly #cancelHandlers: (() => void)[]; - readonly #promise: Promise; - #resolve?: (value: T | PromiseLike) => void; - #reject?: (reason?: any) => void; + private _isResolved: boolean; + private _isRejected: boolean; + private _isCancelled: boolean; + readonly cancelHandlers: (() => void)[]; + readonly promise: Promise; + private _resolve?: (value: T | PromiseLike) => void; + private _reject?: (reason?: unknown) => void; - constructor( - executor: ( - resolve: (value: T | PromiseLike) => void, - reject: (reason?: any) => void, - onCancel: OnCancel - ) => void - ) { - this.#isResolved = false; - this.#isRejected = false; - this.#isCancelled = false; - this.#cancelHandlers = []; - this.#promise = new Promise((resolve, reject) => { - this.#resolve = resolve; - this.#reject = reject; + constructor( + executor: ( + resolve: (value: T | PromiseLike) => void, + reject: (reason?: unknown) => void, + onCancel: OnCancel + ) => void + ) { + this._isResolved = false; + this._isRejected = false; + this._isCancelled = false; + this.cancelHandlers = []; + this.promise = new Promise((resolve, reject) => { + this._resolve = resolve; + this._reject = reject; - const onResolve = (value: T | PromiseLike): void => { - if (this.#isResolved || this.#isRejected || this.#isCancelled) { - return; - } - this.#isResolved = true; - this.#resolve?.(value); - }; + const onResolve = (value: T | PromiseLike): void => { + if (this._isResolved || this._isRejected || this._isCancelled) { + return; + } + this._isResolved = true; + if (this._resolve) this._resolve(value); + }; - const onReject = (reason?: any): void => { - if (this.#isResolved || this.#isRejected || this.#isCancelled) { - return; - } - this.#isRejected = true; - this.#reject?.(reason); - }; + const onReject = (reason?: unknown): void => { + if (this._isResolved || this._isRejected || this._isCancelled) { + return; + } + this._isRejected = true; + if (this._reject) this._reject(reason); + }; - const onCancel = (cancelHandler: () => void): void => { - if (this.#isResolved || this.#isRejected || this.#isCancelled) { - return; - } - this.#cancelHandlers.push(cancelHandler); - }; + const onCancel = (cancelHandler: () => void): void => { + if (this._isResolved || this._isRejected || this._isCancelled) { + return; + } + this.cancelHandlers.push(cancelHandler); + }; - Object.defineProperty(onCancel, 'isResolved', { - get: (): boolean => this.#isResolved, - }); + Object.defineProperty(onCancel, 'isResolved', { + get: (): boolean => this._isResolved, + }); - Object.defineProperty(onCancel, 'isRejected', { - get: (): boolean => this.#isRejected, - }); + Object.defineProperty(onCancel, 'isRejected', { + get: (): boolean => this._isRejected, + }); - Object.defineProperty(onCancel, 'isCancelled', { - get: (): boolean => this.#isCancelled, - }); + Object.defineProperty(onCancel, 'isCancelled', { + get: (): boolean => this._isCancelled, + }); - return executor(onResolve, onReject, onCancel as OnCancel); - }); - } + return executor(onResolve, onReject, onCancel as OnCancel); + }); + } - get [Symbol.toStringTag]() { - return "Cancellable Promise"; - } + get [Symbol.toStringTag]() { + return "Cancellable Promise"; + } - public then( - onFulfilled?: ((value: T) => TResult1 | PromiseLike) | null, - onRejected?: ((reason: any) => TResult2 | PromiseLike) | null - ): Promise { - return this.#promise.then(onFulfilled, onRejected); - } + public then( + onFulfilled?: ((value: T) => TResult1 | PromiseLike) | null, + onRejected?: ((reason: unknown) => TResult2 | PromiseLike) | null + ): Promise { + return this.promise.then(onFulfilled, onRejected); + } - public catch( - onRejected?: ((reason: any) => TResult | PromiseLike) | null - ): Promise { - return this.#promise.catch(onRejected); - } + public catch( + onRejected?: ((reason: unknown) => TResult | PromiseLike) | null + ): Promise { + return this.promise.catch(onRejected); + } - public finally(onFinally?: (() => void) | null): Promise { - return this.#promise.finally(onFinally); - } + public finally(onFinally?: (() => void) | null): Promise { + return this.promise.finally(onFinally); + } - public cancel(): void { - if (this.#isResolved || this.#isRejected || this.#isCancelled) { - return; - } - this.#isCancelled = true; - if (this.#cancelHandlers.length) { - try { - for (const cancelHandler of this.#cancelHandlers) { - cancelHandler(); - } - } catch (error) { - console.warn('Cancellation threw an error', error); - return; - } - } - this.#cancelHandlers.length = 0; - this.#reject?.(new CancelError('Request aborted')); - } + public cancel(): void { + if (this._isResolved || this._isRejected || this._isCancelled) { + return; + } + this._isCancelled = true; + if (this.cancelHandlers.length) { + try { + for (const cancelHandler of this.cancelHandlers) { + cancelHandler(); + } + } catch (error) { + console.warn('Cancellation threw an error', error); + return; + } + } + this.cancelHandlers.length = 0; + if (this._reject) this._reject(new CancelError('Request aborted')); + } - public get isCancelled(): boolean { - return this.#isCancelled; - } -} + public get isCancelled(): boolean { + return this._isCancelled; + } +} \ No newline at end of file diff --git a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/core/OpenAPI.ts b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/core/OpenAPI.ts index 3066e98b2b..9b20844214 100644 --- a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/core/OpenAPI.ts +++ b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/core/OpenAPI.ts @@ -1,32 +1,55 @@ -/* generated using openapi-typescript-codegen -- do no edit */ -/* istanbul ignore file */ -/* tslint:disable */ -/* eslint-disable */ import type { ApiRequestOptions } from './ApiRequestOptions'; -type Resolver = (options: ApiRequestOptions) => Promise; type Headers = Record; +type Middleware = (value: T) => T | Promise; +type Resolver = (options: ApiRequestOptions) => Promise; + +export class Interceptors { + _fns: Middleware[]; + + constructor() { + this._fns = []; + } + + eject(fn: Middleware) { + const index = this._fns.indexOf(fn); + if (index !== -1) { + this._fns = [ + ...this._fns.slice(0, index), + ...this._fns.slice(index + 1), + ]; + } + } + + use(fn: Middleware) { + this._fns = [...this._fns, fn]; + } +} export type OpenAPIConfig = { - BASE: string; - VERSION: string; - WITH_CREDENTIALS: boolean; - CREDENTIALS: 'include' | 'omit' | 'same-origin'; - TOKEN?: string | Resolver | undefined; - USERNAME?: string | Resolver | undefined; - PASSWORD?: string | Resolver | undefined; - HEADERS?: Headers | Resolver | undefined; - ENCODE_PATH?: ((path: string) => string) | undefined; + BASE: string; + CREDENTIALS: 'include' | 'omit' | 'same-origin'; + ENCODE_PATH?: ((path: string) => string) | undefined; + HEADERS?: Headers | Resolver | undefined; + PASSWORD?: string | Resolver | undefined; + TOKEN?: string | Resolver | undefined; + USERNAME?: string | Resolver | undefined; + VERSION: string; + WITH_CREDENTIALS: boolean; + interceptors: {request: Interceptors; + response: Interceptors;}; }; export const OpenAPI: OpenAPIConfig = { - BASE: '', - VERSION: 'Latest', - WITH_CREDENTIALS: false, - CREDENTIALS: 'include', - TOKEN: undefined, - USERNAME: undefined, - PASSWORD: undefined, - HEADERS: undefined, - ENCODE_PATH: undefined, -}; + BASE: '', + CREDENTIALS: 'include', + ENCODE_PATH: undefined, + HEADERS: undefined, + PASSWORD: undefined, + TOKEN: undefined, + USERNAME: undefined, + VERSION: 'Latest', + WITH_CREDENTIALS: false, + interceptors: {request: new Interceptors(),response: new Interceptors(), + }, +}; \ No newline at end of file diff --git a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/core/request.ts b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/core/request.ts index b018a07cae..3f2e8c9ccb 100644 --- a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/core/request.ts +++ b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/core/request.ts @@ -1,7 +1,3 @@ -/* generated using openapi-typescript-codegen -- do no edit */ -/* istanbul ignore file */ -/* tslint:disable */ -/* eslint-disable */ import { ApiError } from './ApiError'; import type { ApiRequestOptions } from './ApiRequestOptions'; import type { ApiResult } from './ApiResult'; @@ -9,276 +5,294 @@ import { CancelablePromise } from './CancelablePromise'; import type { OnCancel } from './CancelablePromise'; import type { OpenAPIConfig } from './OpenAPI'; -export const isDefined = (value: T | null | undefined): value is Exclude => { - return value !== undefined && value !== null; +export const isString = (value: unknown): value is string => { + return typeof value === 'string'; }; -export const isString = (value: any): value is string => { - return typeof value === 'string'; -}; - -export const isStringWithValue = (value: any): value is string => { - return isString(value) && value !== ''; +export const isStringWithValue = (value: unknown): value is string => { + return isString(value) && value !== ''; }; export const isBlob = (value: any): value is Blob => { - return ( - typeof value === 'object' && - typeof value.type === 'string' && - typeof value.stream === 'function' && - typeof value.arrayBuffer === 'function' && - typeof value.constructor === 'function' && - typeof value.constructor.name === 'string' && - /^(Blob|File)$/.test(value.constructor.name) && - /^(Blob|File)$/.test(value[Symbol.toStringTag]) - ); + return value instanceof Blob; }; -export const isFormData = (value: any): value is FormData => { - return value instanceof FormData; +export const isFormData = (value: unknown): value is FormData => { + return value instanceof FormData; }; export const base64 = (str: string): string => { - try { - return btoa(str); - } catch (err) { - // @ts-ignore - return Buffer.from(str).toString('base64'); - } + try { + return btoa(str); + } catch (err) { + // @ts-ignore + return Buffer.from(str).toString('base64'); + } }; -export const getQueryString = (params: Record): string => { - const qs: string[] = []; +export const getQueryString = (params: Record): string => { + const qs: string[] = []; - const append = (key: string, value: any) => { - qs.push(`${encodeURIComponent(key)}=${encodeURIComponent(String(value))}`); - }; + const append = (key: string, value: unknown) => { + qs.push(`${encodeURIComponent(key)}=${encodeURIComponent(String(value))}`); + }; - const process = (key: string, value: any) => { - if (isDefined(value)) { - if (Array.isArray(value)) { - value.forEach(v => { - process(key, v); - }); - } else if (typeof value === 'object') { - Object.entries(value).forEach(([k, v]) => { - process(`${key}[${k}]`, v); - }); - } else { - append(key, value); - } - } - }; + const encodePair = (key: string, value: unknown) => { + if (value === undefined || value === null) { + return; + } - Object.entries(params).forEach(([key, value]) => { - process(key, value); - }); + if (Array.isArray(value)) { + value.forEach(v => encodePair(key, v)); + } else if (typeof value === 'object') { + Object.entries(value).forEach(([k, v]) => encodePair(`${key}[${k}]`, v)); + } else { + append(key, value); + } + }; - if (qs.length > 0) { - return `?${qs.join('&')}`; - } + Object.entries(params).forEach(([key, value]) => encodePair(key, value)); - return ''; + return qs.length ? `?${qs.join('&')}` : ''; }; const getUrl = (config: OpenAPIConfig, options: ApiRequestOptions): string => { - const encoder = config.ENCODE_PATH || encodeURI; + const encoder = config.ENCODE_PATH || encodeURI; - const path = options.url - .replace('{api-version}', config.VERSION) - .replace(/{(.*?)}/g, (substring: string, group: string) => { - if (options.path?.hasOwnProperty(group)) { - return encoder(String(options.path[group])); - } - return substring; - }); + const path = options.url + .replace('{api-version}', config.VERSION) + .replace(/{(.*?)}/g, (substring: string, group: string) => { + if (options.path?.hasOwnProperty(group)) { + return encoder(String(options.path[group])); + } + return substring; + }); - const url = `${config.BASE}${path}`; - if (options.query) { - return `${url}${getQueryString(options.query)}`; - } - return url; + const url = config.BASE + path; + return options.query ? url + getQueryString(options.query) : url; }; export const getFormData = (options: ApiRequestOptions): FormData | undefined => { - if (options.formData) { - const formData = new FormData(); + if (options.formData) { + const formData = new FormData(); - const process = (key: string, value: any) => { - if (isString(value) || isBlob(value)) { - formData.append(key, value); - } else { - formData.append(key, JSON.stringify(value)); - } - }; + const process = (key: string, value: unknown) => { + if (isString(value) || isBlob(value)) { + formData.append(key, value); + } else { + formData.append(key, JSON.stringify(value)); + } + }; - Object.entries(options.formData) - .filter(([_, value]) => isDefined(value)) - .forEach(([key, value]) => { - if (Array.isArray(value)) { - value.forEach(v => process(key, v)); - } else { - process(key, value); - } - }); + Object.entries(options.formData) + .filter(([, value]) => value !== undefined && value !== null) + .forEach(([key, value]) => { + if (Array.isArray(value)) { + value.forEach(v => process(key, v)); + } else { + process(key, value); + } + }); - return formData; - } - return undefined; + return formData; + } + return undefined; }; type Resolver = (options: ApiRequestOptions) => Promise; export const resolve = async (options: ApiRequestOptions, resolver?: T | Resolver): Promise => { - if (typeof resolver === 'function') { - return (resolver as Resolver)(options); - } - return resolver; + if (typeof resolver === 'function') { + return (resolver as Resolver)(options); + } + return resolver; }; export const getHeaders = async (config: OpenAPIConfig, options: ApiRequestOptions): Promise => { - const token = await resolve(options, config.TOKEN); - const username = await resolve(options, config.USERNAME); - const password = await resolve(options, config.PASSWORD); - const additionalHeaders = await resolve(options, config.HEADERS); + const [token, username, password, additionalHeaders] = await Promise.all([ + resolve(options, config.TOKEN), + resolve(options, config.USERNAME), + resolve(options, config.PASSWORD), + resolve(options, config.HEADERS), + ]); - const headers = Object.entries({ - Accept: 'application/json', - ...additionalHeaders, - ...options.headers, - }) - .filter(([_, value]) => isDefined(value)) - .reduce((headers, [key, value]) => ({ - ...headers, - [key]: String(value), - }), {} as Record); + const headers = Object.entries({ + Accept: 'application/json', + ...additionalHeaders, + ...options.headers, + }) + .filter(([, value]) => value !== undefined && value !== null) + .reduce((headers, [key, value]) => ({ + ...headers, + [key]: String(value), + }), {} as Record); - if (isStringWithValue(token)) { - headers['Authorization'] = `Bearer ${token}`; - } + if (isStringWithValue(token)) { + headers['Authorization'] = `Bearer ${token}`; + } - if (isStringWithValue(username) && isStringWithValue(password)) { - const credentials = base64(`${username}:${password}`); - headers['Authorization'] = `Basic ${credentials}`; - } + if (isStringWithValue(username) && isStringWithValue(password)) { + const credentials = base64(`${username}:${password}`); + headers['Authorization'] = `Basic ${credentials}`; + } - if (options.body) { - if (options.mediaType) { - headers['Content-Type'] = options.mediaType; - } else if (isBlob(options.body)) { - headers['Content-Type'] = options.body.type || 'application/octet-stream'; - } else if (isString(options.body)) { - headers['Content-Type'] = 'text/plain'; - } else if (!isFormData(options.body)) { - headers['Content-Type'] = 'application/json'; - } - } + if (options.body !== undefined) { + if (options.mediaType) { + headers['Content-Type'] = options.mediaType; + } else if (isBlob(options.body)) { + headers['Content-Type'] = options.body.type || 'application/octet-stream'; + } else if (isString(options.body)) { + headers['Content-Type'] = 'text/plain'; + } else if (!isFormData(options.body)) { + headers['Content-Type'] = 'application/json'; + } + } - return new Headers(headers); + return new Headers(headers); }; -export const getRequestBody = (options: ApiRequestOptions): any => { - if (options.body !== undefined) { - if (options.mediaType?.includes('/json')) { - return JSON.stringify(options.body) - } else if (isString(options.body) || isBlob(options.body) || isFormData(options.body)) { - return options.body; - } else { - return JSON.stringify(options.body); - } - } - return undefined; +export const getRequestBody = (options: ApiRequestOptions): unknown => { + if (options.body !== undefined) { + if (options.mediaType?.includes('application/json') || options.mediaType?.includes('+json')) { + return JSON.stringify(options.body) + } else if (isString(options.body) || isBlob(options.body) || isFormData(options.body)) { + return options.body; + } else { + return JSON.stringify(options.body); + } + } + return undefined; }; export const sendRequest = async ( - config: OpenAPIConfig, - options: ApiRequestOptions, - url: string, - body: any, - formData: FormData | undefined, - headers: Headers, - onCancel: OnCancel + config: OpenAPIConfig, + options: ApiRequestOptions, + url: string, + body: any, + formData: FormData | undefined, + headers: Headers, + onCancel: OnCancel ): Promise => { - const controller = new AbortController(); + const controller = new AbortController(); - const request: RequestInit = { - headers, - body: body ?? formData, - method: options.method, - signal: controller.signal, - }; + let request: RequestInit = { + headers, + body: body ?? formData, + method: options.method, + signal: controller.signal, + }; - if (config.WITH_CREDENTIALS) { - request.credentials = config.CREDENTIALS; - } + if (config.WITH_CREDENTIALS) { + request.credentials = config.CREDENTIALS; + } - onCancel(() => controller.abort()); + for (const fn of config.interceptors.request._fns) { + request = await fn(request) + } - return await fetch(url, request); + onCancel(() => controller.abort()); + + return await fetch(url, request); }; export const getResponseHeader = (response: Response, responseHeader?: string): string | undefined => { - if (responseHeader) { - const content = response.headers.get(responseHeader); - if (isString(content)) { - return content; - } - } - return undefined; + if (responseHeader) { + const content = response.headers.get(responseHeader); + if (isString(content)) { + return content; + } + } + return undefined; }; -export const getResponseBody = async (response: Response): Promise => { - if (response.status !== 204) { - try { - const contentType = response.headers.get('Content-Type'); - if (contentType) { - const jsonTypes = ['application/json', 'application/problem+json'] - const isJSON = jsonTypes.some(type => contentType.toLowerCase().startsWith(type)); - if (isJSON) { - return await response.json(); - } else { - return await response.text(); - } - } - } catch (error) { - console.error(error); - } - } - return undefined; +export const getResponseBody = async (response: Response): Promise => { + if (response.status !== 204) { + try { + const contentType = response.headers.get('Content-Type'); + if (contentType) { + const binaryTypes = ['application/octet-stream', 'application/pdf', 'application/zip', 'audio/', 'image/', 'video/']; + if (contentType.includes('application/json') || contentType.includes('+json')) { + return await response.json(); + } else if (binaryTypes.some(type => contentType.includes(type))) { + return await response.blob(); + } else if (contentType.includes('multipart/form-data')) { + return await response.formData(); + } else if (contentType.includes('text/')) { + return await response.text(); + } + } + } catch (error) { + console.error(error); + } + } + return undefined; }; export const catchErrorCodes = (options: ApiRequestOptions, result: ApiResult): void => { - const errors: Record = { - 400: 'Bad Request', - 401: 'Unauthorized', - 403: 'Forbidden', - 404: 'Not Found', - 500: 'Internal Server Error', - 502: 'Bad Gateway', - 503: 'Service Unavailable', - ...options.errors, - } + const errors: Record = { + 400: 'Bad Request', + 401: 'Unauthorized', + 402: 'Payment Required', + 403: 'Forbidden', + 404: 'Not Found', + 405: 'Method Not Allowed', + 406: 'Not Acceptable', + 407: 'Proxy Authentication Required', + 408: 'Request Timeout', + 409: 'Conflict', + 410: 'Gone', + 411: 'Length Required', + 412: 'Precondition Failed', + 413: 'Payload Too Large', + 414: 'URI Too Long', + 415: 'Unsupported Media Type', + 416: 'Range Not Satisfiable', + 417: 'Expectation Failed', + 418: 'Im a teapot', + 421: 'Misdirected Request', + 422: 'Unprocessable Content', + 423: 'Locked', + 424: 'Failed Dependency', + 425: 'Too Early', + 426: 'Upgrade Required', + 428: 'Precondition Required', + 429: 'Too Many Requests', + 431: 'Request Header Fields Too Large', + 451: 'Unavailable For Legal Reasons', + 500: 'Internal Server Error', + 501: 'Not Implemented', + 502: 'Bad Gateway', + 503: 'Service Unavailable', + 504: 'Gateway Timeout', + 505: 'HTTP Version Not Supported', + 506: 'Variant Also Negotiates', + 507: 'Insufficient Storage', + 508: 'Loop Detected', + 510: 'Not Extended', + 511: 'Network Authentication Required', + ...options.errors, + } - const error = errors[result.status]; - if (error) { - throw new ApiError(options, result, error); - } + const error = errors[result.status]; + if (error) { + throw new ApiError(options, result, error); + } - if (!result.ok) { - const errorStatus = result.status ?? 'unknown'; - const errorStatusText = result.statusText ?? 'unknown'; - const errorBody = (() => { - try { - return JSON.stringify(result.body, null, 2); - } catch (e) { - return undefined; - } - })(); + if (!result.ok) { + const errorStatus = result.status ?? 'unknown'; + const errorStatusText = result.statusText ?? 'unknown'; + const errorBody = (() => { + try { + return JSON.stringify(result.body, null, 2); + } catch (e) { + return undefined; + } + })(); - throw new ApiError(options, result, - `Generic Error: status: ${errorStatus}; status text: ${errorStatusText}; body: ${errorBody}` - ); - } + throw new ApiError(options, result, + `Generic Error: status: ${errorStatus}; status text: ${errorStatusText}; body: ${errorBody}` + ); + } }; /** @@ -289,32 +303,37 @@ export const catchErrorCodes = (options: ApiRequestOptions, result: ApiResult): * @throws ApiError */ export const request = (config: OpenAPIConfig, options: ApiRequestOptions): CancelablePromise => { - return new CancelablePromise(async (resolve, reject, onCancel) => { - try { - const url = getUrl(config, options); - const formData = getFormData(options); - const body = getRequestBody(options); - const headers = await getHeaders(config, options); + return new CancelablePromise(async (resolve, reject, onCancel) => { + try { + const url = getUrl(config, options); + const formData = getFormData(options); + const body = getRequestBody(options); + const headers = await getHeaders(config, options); - if (!onCancel.isCancelled) { - const response = await sendRequest(config, options, url, body, formData, headers, onCancel); - const responseBody = await getResponseBody(response); - const responseHeader = getResponseHeader(response, options.responseHeader); + if (!onCancel.isCancelled) { + let response = await sendRequest(config, options, url, body, formData, headers, onCancel); - const result: ApiResult = { - url, - ok: response.ok, - status: response.status, - statusText: response.statusText, - body: responseHeader ?? responseBody, - }; + for (const fn of config.interceptors.response._fns) { + response = await fn(response) + } - catchErrorCodes(options, result); + const responseBody = await getResponseBody(response); + const responseHeader = getResponseHeader(response, options.responseHeader); - resolve(result.body); - } - } catch (error) { - reject(error); - } - }); -}; + const result: ApiResult = { + url, + ok: response.ok, + status: response.status, + statusText: response.statusText, + body: responseHeader ?? responseBody, + }; + + catchErrorCodes(options, result); + + resolve(result.body); + } + } catch (error) { + reject(error); + } + }); +}; \ No newline at end of file diff --git a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/index.ts b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/index.ts index 17014a5ab2..ee4431c51e 100644 --- a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/index.ts +++ b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/index.ts @@ -1,444 +1,6 @@ -/* generated using openapi-typescript-codegen -- do no edit */ -/* istanbul ignore file */ -/* tslint:disable */ -/* eslint-disable */ + export { ApiError } from './core/ApiError'; export { CancelablePromise, CancelError } from './core/CancelablePromise'; -export { OpenAPI } from './core/OpenAPI'; -export type { OpenAPIConfig } from './core/OpenAPI'; - -export type { AllowedDocumentTypeModel } from './models/AllowedDocumentTypeModel'; -export type { AllowedMediaTypeModel } from './models/AllowedMediaTypeModel'; -export type { AuditLogEntityModel } from './models/AuditLogEntityModel'; -export type { AuditLogResponseModel } from './models/AuditLogResponseModel'; -export type { AuditLogWithUsernameResponseModel } from './models/AuditLogWithUsernameResponseModel'; -export { AuditTypeModel } from './models/AuditTypeModel'; -export type { AvailableDocumentTypeCompositionResponseModel } from './models/AvailableDocumentTypeCompositionResponseModel'; -export type { AvailableMediaTypeCompositionResponseModel } from './models/AvailableMediaTypeCompositionResponseModel'; -export type { AvailableMemberTypeCompositionResponseModel } from './models/AvailableMemberTypeCompositionResponseModel'; -export type { ChangePasswordCurrentUserRequestModel } from './models/ChangePasswordCurrentUserRequestModel'; -export type { ChangePasswordUserRequestModel } from './models/ChangePasswordUserRequestModel'; -export { CompositionTypeModel } from './models/CompositionTypeModel'; -export type { ConsentLevelPresentationModel } from './models/ConsentLevelPresentationModel'; -export type { CopyDataTypeRequestModel } from './models/CopyDataTypeRequestModel'; -export type { CopyDocumentRequestModel } from './models/CopyDocumentRequestModel'; -export type { CopyDocumentTypeRequestModel } from './models/CopyDocumentTypeRequestModel'; -export type { CopyMediaTypeRequestModel } from './models/CopyMediaTypeRequestModel'; -export type { CreateDataTypeRequestModel } from './models/CreateDataTypeRequestModel'; -export type { CreateDictionaryItemRequestModel } from './models/CreateDictionaryItemRequestModel'; -export type { CreateDocumentBlueprintFromDocumentRequestModel } from './models/CreateDocumentBlueprintFromDocumentRequestModel'; -export type { CreateDocumentBlueprintRequestModel } from './models/CreateDocumentBlueprintRequestModel'; -export type { CreateDocumentRequestModel } from './models/CreateDocumentRequestModel'; -export type { CreateDocumentTypePropertyTypeContainerRequestModel } from './models/CreateDocumentTypePropertyTypeContainerRequestModel'; -export type { CreateDocumentTypePropertyTypeRequestModel } from './models/CreateDocumentTypePropertyTypeRequestModel'; -export type { CreateDocumentTypeRequestModel } from './models/CreateDocumentTypeRequestModel'; -export type { CreateFolderRequestModel } from './models/CreateFolderRequestModel'; -export type { CreateInitialPasswordUserRequestModel } from './models/CreateInitialPasswordUserRequestModel'; -export type { CreateLanguageRequestModel } from './models/CreateLanguageRequestModel'; -export type { CreateMediaRequestModel } from './models/CreateMediaRequestModel'; -export type { CreateMediaTypePropertyTypeContainerRequestModel } from './models/CreateMediaTypePropertyTypeContainerRequestModel'; -export type { CreateMediaTypePropertyTypeRequestModel } from './models/CreateMediaTypePropertyTypeRequestModel'; -export type { CreateMediaTypeRequestModel } from './models/CreateMediaTypeRequestModel'; -export type { CreateMemberGroupRequestModel } from './models/CreateMemberGroupRequestModel'; -export type { CreateMemberRequestModel } from './models/CreateMemberRequestModel'; -export type { CreateMemberTypePropertyTypeContainerRequestModel } from './models/CreateMemberTypePropertyTypeContainerRequestModel'; -export type { CreateMemberTypePropertyTypeRequestModel } from './models/CreateMemberTypePropertyTypeRequestModel'; -export type { CreateMemberTypeRequestModel } from './models/CreateMemberTypeRequestModel'; -export type { CreatePackageRequestModel } from './models/CreatePackageRequestModel'; -export type { CreatePartialViewFolderRequestModel } from './models/CreatePartialViewFolderRequestModel'; -export type { CreatePartialViewRequestModel } from './models/CreatePartialViewRequestModel'; -export type { CreateScriptFolderRequestModel } from './models/CreateScriptFolderRequestModel'; -export type { CreateScriptRequestModel } from './models/CreateScriptRequestModel'; -export type { CreateStylesheetFolderRequestModel } from './models/CreateStylesheetFolderRequestModel'; -export type { CreateStylesheetRequestModel } from './models/CreateStylesheetRequestModel'; -export type { CreateTemplateRequestModel } from './models/CreateTemplateRequestModel'; -export type { CreateUserGroupRequestModel } from './models/CreateUserGroupRequestModel'; -export type { CreateUserRequestModel } from './models/CreateUserRequestModel'; -export type { CreateWebhookRequestModel } from './models/CreateWebhookRequestModel'; -export type { CultureAndScheduleRequestModel } from './models/CultureAndScheduleRequestModel'; -export type { CultureReponseModel } from './models/CultureReponseModel'; -export type { CurrentUserResponseModel } from './models/CurrentUserResponseModel'; -export type { CurrenUserConfigurationResponseModel } from './models/CurrenUserConfigurationResponseModel'; -export type { DatabaseInstallRequestModel } from './models/DatabaseInstallRequestModel'; -export type { DatabaseSettingsPresentationModel } from './models/DatabaseSettingsPresentationModel'; -export { DataTypeChangeModeModel } from './models/DataTypeChangeModeModel'; -export type { DatatypeConfigurationResponseModel } from './models/DatatypeConfigurationResponseModel'; -export type { DataTypeItemResponseModel } from './models/DataTypeItemResponseModel'; -export type { DataTypePropertyPresentationModel } from './models/DataTypePropertyPresentationModel'; -export type { DataTypePropertyReferenceModel } from './models/DataTypePropertyReferenceModel'; -export type { DataTypeReferenceResponseModel } from './models/DataTypeReferenceResponseModel'; -export type { DataTypeResponseModel } from './models/DataTypeResponseModel'; -export type { DataTypeTreeItemResponseModel } from './models/DataTypeTreeItemResponseModel'; -export type { DefaultReferenceResponseModel } from './models/DefaultReferenceResponseModel'; -export type { DeleteUserGroupsRequestModel } from './models/DeleteUserGroupsRequestModel'; -export type { DeleteUsersRequestModel } from './models/DeleteUsersRequestModel'; -export type { DictionaryItemItemResponseModel } from './models/DictionaryItemItemResponseModel'; -export type { DictionaryItemResponseModel } from './models/DictionaryItemResponseModel'; -export type { DictionaryItemTranslationModel } from './models/DictionaryItemTranslationModel'; -export type { DictionaryOverviewResponseModel } from './models/DictionaryOverviewResponseModel'; -export { DirectionModel } from './models/DirectionModel'; -export type { DisableUserRequestModel } from './models/DisableUserRequestModel'; -export type { DocumentBlueprintItemResponseModel } from './models/DocumentBlueprintItemResponseModel'; -export type { DocumentBlueprintResponseModel } from './models/DocumentBlueprintResponseModel'; -export type { DocumentBlueprintTreeItemResponseModel } from './models/DocumentBlueprintTreeItemResponseModel'; -export type { DocumentCollectionResponseModel } from './models/DocumentCollectionResponseModel'; -export type { DocumentConfigurationResponseModel } from './models/DocumentConfigurationResponseModel'; -export type { DocumentItemResponseModel } from './models/DocumentItemResponseModel'; -export type { DocumentNotificationResponseModel } from './models/DocumentNotificationResponseModel'; -export type { DocumentPermissionPresentationModel } from './models/DocumentPermissionPresentationModel'; -export type { DocumentRecycleBinItemResponseModel } from './models/DocumentRecycleBinItemResponseModel'; -export type { DocumentReferenceResponseModel } from './models/DocumentReferenceResponseModel'; -export type { DocumentResponseModel } from './models/DocumentResponseModel'; -export type { DocumentTreeItemResponseModel } from './models/DocumentTreeItemResponseModel'; -export type { DocumentTypeCleanupModel } from './models/DocumentTypeCleanupModel'; -export type { DocumentTypeCollectionReferenceResponseModel } from './models/DocumentTypeCollectionReferenceResponseModel'; -export type { DocumentTypeCompositionModel } from './models/DocumentTypeCompositionModel'; -export type { DocumentTypeCompositionRequestModel } from './models/DocumentTypeCompositionRequestModel'; -export type { DocumentTypeCompositionResponseModel } from './models/DocumentTypeCompositionResponseModel'; -export type { DocumentTypeConfigurationResponseModel } from './models/DocumentTypeConfigurationResponseModel'; -export type { DocumentTypeItemResponseModel } from './models/DocumentTypeItemResponseModel'; -export type { DocumentTypePropertyTypeContainerResponseModel } from './models/DocumentTypePropertyTypeContainerResponseModel'; -export type { DocumentTypePropertyTypeResponseModel } from './models/DocumentTypePropertyTypeResponseModel'; -export type { DocumentTypeReferenceResponseModel } from './models/DocumentTypeReferenceResponseModel'; -export type { DocumentTypeResponseModel } from './models/DocumentTypeResponseModel'; -export type { DocumentTypeSortModel } from './models/DocumentTypeSortModel'; -export type { DocumentTypeTreeItemResponseModel } from './models/DocumentTypeTreeItemResponseModel'; -export type { DocumentUrlInfoModel } from './models/DocumentUrlInfoModel'; -export type { DocumentValueModel } from './models/DocumentValueModel'; -export type { DocumentVariantItemResponseModel } from './models/DocumentVariantItemResponseModel'; -export type { DocumentVariantRequestModel } from './models/DocumentVariantRequestModel'; -export type { DocumentVariantResponseModel } from './models/DocumentVariantResponseModel'; -export { DocumentVariantStateModel } from './models/DocumentVariantStateModel'; -export type { DocumentVersionItemResponseModel } from './models/DocumentVersionItemResponseModel'; -export type { DocumentVersionResponseModel } from './models/DocumentVersionResponseModel'; -export type { DomainPresentationModel } from './models/DomainPresentationModel'; -export type { DomainsResponseModel } from './models/DomainsResponseModel'; -export type { DynamicRootContextRequestModel } from './models/DynamicRootContextRequestModel'; -export type { DynamicRootQueryOriginRequestModel } from './models/DynamicRootQueryOriginRequestModel'; -export type { DynamicRootQueryRequestModel } from './models/DynamicRootQueryRequestModel'; -export type { DynamicRootQueryStepRequestModel } from './models/DynamicRootQueryStepRequestModel'; -export type { DynamicRootRequestModel } from './models/DynamicRootRequestModel'; -export type { DynamicRootResponseModel } from './models/DynamicRootResponseModel'; -export type { EnableTwoFactorRequestModel } from './models/EnableTwoFactorRequestModel'; -export type { EnableUserRequestModel } from './models/EnableUserRequestModel'; -export { EventMessageTypeModel } from './models/EventMessageTypeModel'; -export type { FieldPresentationModel } from './models/FieldPresentationModel'; -export type { FileSystemFolderModel } from './models/FileSystemFolderModel'; -export type { FileSystemTreeItemPresentationModel } from './models/FileSystemTreeItemPresentationModel'; -export type { FolderResponseModel } from './models/FolderResponseModel'; -export type { HealthCheckActionRequestModel } from './models/HealthCheckActionRequestModel'; -export type { HealthCheckGroupPresentationModel } from './models/HealthCheckGroupPresentationModel'; -export type { HealthCheckGroupResponseModel } from './models/HealthCheckGroupResponseModel'; -export type { HealthCheckGroupWithResultResponseModel } from './models/HealthCheckGroupWithResultResponseModel'; -export type { HealthCheckModel } from './models/HealthCheckModel'; -export type { HealthCheckResultResponseModel } from './models/HealthCheckResultResponseModel'; -export type { HealthCheckWithResultPresentationModel } from './models/HealthCheckWithResultPresentationModel'; -export { HealthStatusModel } from './models/HealthStatusModel'; -export type { HelpPageResponseModel } from './models/HelpPageResponseModel'; -export type { ImportDictionaryRequestModel } from './models/ImportDictionaryRequestModel'; -export type { IndexResponseModel } from './models/IndexResponseModel'; -export type { InstallRequestModel } from './models/InstallRequestModel'; -export type { InstallSettingsResponseModel } from './models/InstallSettingsResponseModel'; -export type { InviteUserRequestModel } from './models/InviteUserRequestModel'; -export type { ItemReferenceByIdResponseModel } from './models/ItemReferenceByIdResponseModel'; -export type { ItemSortingRequestModel } from './models/ItemSortingRequestModel'; -export type { LanguageItemResponseModel } from './models/LanguageItemResponseModel'; -export type { LanguageResponseModel } from './models/LanguageResponseModel'; -export type { LinkedLoginModel } from './models/LinkedLoginModel'; -export type { LinkedLoginsRequestModel } from './models/LinkedLoginsRequestModel'; -export type { LoggerResponseModel } from './models/LoggerResponseModel'; -export type { LogLevelCountsReponseModel } from './models/LogLevelCountsReponseModel'; -export { LogLevelModel } from './models/LogLevelModel'; -export type { LogMessagePropertyPresentationModel } from './models/LogMessagePropertyPresentationModel'; -export type { LogMessageResponseModel } from './models/LogMessageResponseModel'; -export type { LogTemplateResponseModel } from './models/LogTemplateResponseModel'; -export type { MediaCollectionResponseModel } from './models/MediaCollectionResponseModel'; -export type { MediaConfigurationResponseModel } from './models/MediaConfigurationResponseModel'; -export type { MediaItemResponseModel } from './models/MediaItemResponseModel'; -export type { MediaRecycleBinItemResponseModel } from './models/MediaRecycleBinItemResponseModel'; -export type { MediaReferenceResponseModel } from './models/MediaReferenceResponseModel'; -export type { MediaResponseModel } from './models/MediaResponseModel'; -export type { MediaTreeItemResponseModel } from './models/MediaTreeItemResponseModel'; -export type { MediaTypeCollectionReferenceResponseModel } from './models/MediaTypeCollectionReferenceResponseModel'; -export type { MediaTypeCompositionModel } from './models/MediaTypeCompositionModel'; -export type { MediaTypeCompositionRequestModel } from './models/MediaTypeCompositionRequestModel'; -export type { MediaTypeCompositionResponseModel } from './models/MediaTypeCompositionResponseModel'; -export type { MediaTypeItemResponseModel } from './models/MediaTypeItemResponseModel'; -export type { MediaTypePropertyTypeContainerResponseModel } from './models/MediaTypePropertyTypeContainerResponseModel'; -export type { MediaTypePropertyTypeResponseModel } from './models/MediaTypePropertyTypeResponseModel'; -export type { MediaTypeReferenceResponseModel } from './models/MediaTypeReferenceResponseModel'; -export type { MediaTypeResponseModel } from './models/MediaTypeResponseModel'; -export type { MediaTypeSortModel } from './models/MediaTypeSortModel'; -export type { MediaTypeTreeItemResponseModel } from './models/MediaTypeTreeItemResponseModel'; -export type { MediaUrlInfoModel } from './models/MediaUrlInfoModel'; -export type { MediaValueModel } from './models/MediaValueModel'; -export type { MediaVariantRequestModel } from './models/MediaVariantRequestModel'; -export type { MediaVariantResponseModel } from './models/MediaVariantResponseModel'; -export type { MemberConfigurationResponseModel } from './models/MemberConfigurationResponseModel'; -export type { MemberGroupItemResponseModel } from './models/MemberGroupItemResponseModel'; -export type { MemberGroupResponseModel } from './models/MemberGroupResponseModel'; -export type { MemberItemResponseModel } from './models/MemberItemResponseModel'; -export type { MemberResponseModel } from './models/MemberResponseModel'; -export type { MemberTypeCompositionModel } from './models/MemberTypeCompositionModel'; -export type { MemberTypeCompositionRequestModel } from './models/MemberTypeCompositionRequestModel'; -export type { MemberTypeCompositionResponseModel } from './models/MemberTypeCompositionResponseModel'; -export type { MemberTypeItemResponseModel } from './models/MemberTypeItemResponseModel'; -export type { MemberTypePropertyTypeContainerResponseModel } from './models/MemberTypePropertyTypeContainerResponseModel'; -export type { MemberTypePropertyTypeResponseModel } from './models/MemberTypePropertyTypeResponseModel'; -export type { MemberTypePropertyTypeVisibilityModel } from './models/MemberTypePropertyTypeVisibilityModel'; -export type { MemberTypeReferenceResponseModel } from './models/MemberTypeReferenceResponseModel'; -export type { MemberTypeResponseModel } from './models/MemberTypeResponseModel'; -export type { MemberValueModel } from './models/MemberValueModel'; -export type { MemberVariantRequestModel } from './models/MemberVariantRequestModel'; -export type { MemberVariantResponseModel } from './models/MemberVariantResponseModel'; -export type { ModelsBuilderResponseModel } from './models/ModelsBuilderResponseModel'; -export { ModelsModeModel } from './models/ModelsModeModel'; -export type { MoveDataTypeRequestModel } from './models/MoveDataTypeRequestModel'; -export type { MoveDictionaryRequestModel } from './models/MoveDictionaryRequestModel'; -export type { MoveDocumentBlueprintRequestModel } from './models/MoveDocumentBlueprintRequestModel'; -export type { MoveDocumentRequestModel } from './models/MoveDocumentRequestModel'; -export type { MoveDocumentTypeRequestModel } from './models/MoveDocumentTypeRequestModel'; -export type { MoveMediaRequestModel } from './models/MoveMediaRequestModel'; -export type { MoveMediaTypeRequestModel } from './models/MoveMediaTypeRequestModel'; -export type { NamedEntityTreeItemResponseModel } from './models/NamedEntityTreeItemResponseModel'; -export type { NoopSetupTwoFactorModel } from './models/NoopSetupTwoFactorModel'; -export type { NotificationHeaderModel } from './models/NotificationHeaderModel'; -export type { ObjectTypeResponseModel } from './models/ObjectTypeResponseModel'; -export { OperatorModel } from './models/OperatorModel'; -export type { OutOfDateStatusResponseModel } from './models/OutOfDateStatusResponseModel'; -export { OutOfDateTypeModel } from './models/OutOfDateTypeModel'; -export type { PackageConfigurationResponseModel } from './models/PackageConfigurationResponseModel'; -export type { PackageDefinitionResponseModel } from './models/PackageDefinitionResponseModel'; -export type { PackageManifestResponseModel } from './models/PackageManifestResponseModel'; -export type { PackageMigrationStatusResponseModel } from './models/PackageMigrationStatusResponseModel'; -export type { PagedAllowedDocumentTypeModel } from './models/PagedAllowedDocumentTypeModel'; -export type { PagedAllowedMediaTypeModel } from './models/PagedAllowedMediaTypeModel'; -export type { PagedAuditLogResponseModel } from './models/PagedAuditLogResponseModel'; -export type { PagedAuditLogWithUsernameResponseModel } from './models/PagedAuditLogWithUsernameResponseModel'; -export type { PagedCultureReponseModel } from './models/PagedCultureReponseModel'; -export type { PagedDataTypeItemResponseModel } from './models/PagedDataTypeItemResponseModel'; -export type { PagedDataTypeTreeItemResponseModel } from './models/PagedDataTypeTreeItemResponseModel'; -export type { PagedDictionaryOverviewResponseModel } from './models/PagedDictionaryOverviewResponseModel'; -export type { PagedDocumentBlueprintTreeItemResponseModel } from './models/PagedDocumentBlueprintTreeItemResponseModel'; -export type { PagedDocumentCollectionResponseModel } from './models/PagedDocumentCollectionResponseModel'; -export type { PagedDocumentRecycleBinItemResponseModel } from './models/PagedDocumentRecycleBinItemResponseModel'; -export type { PagedDocumentTreeItemResponseModel } from './models/PagedDocumentTreeItemResponseModel'; -export type { PagedDocumentTypeTreeItemResponseModel } from './models/PagedDocumentTypeTreeItemResponseModel'; -export type { PagedDocumentVersionItemResponseModel } from './models/PagedDocumentVersionItemResponseModel'; -export type { PagedFileSystemTreeItemPresentationModel } from './models/PagedFileSystemTreeItemPresentationModel'; -export type { PagedHealthCheckGroupResponseModel } from './models/PagedHealthCheckGroupResponseModel'; -export type { PagedHelpPageResponseModel } from './models/PagedHelpPageResponseModel'; -export type { PagedIndexResponseModel } from './models/PagedIndexResponseModel'; -export type { PagedIReferenceResponseModel } from './models/PagedIReferenceResponseModel'; -export type { PagedLanguageResponseModel } from './models/PagedLanguageResponseModel'; -export type { PagedLoggerResponseModel } from './models/PagedLoggerResponseModel'; -export type { PagedLogMessageResponseModel } from './models/PagedLogMessageResponseModel'; -export type { PagedLogTemplateResponseModel } from './models/PagedLogTemplateResponseModel'; -export type { PagedMediaCollectionResponseModel } from './models/PagedMediaCollectionResponseModel'; -export type { PagedMediaRecycleBinItemResponseModel } from './models/PagedMediaRecycleBinItemResponseModel'; -export type { PagedMediaTreeItemResponseModel } from './models/PagedMediaTreeItemResponseModel'; -export type { PagedMediaTypeTreeItemResponseModel } from './models/PagedMediaTypeTreeItemResponseModel'; -export type { PagedMemberGroupResponseModel } from './models/PagedMemberGroupResponseModel'; -export type { PagedMemberResponseModel } from './models/PagedMemberResponseModel'; -export type { PagedModelDataTypeItemResponseModel } from './models/PagedModelDataTypeItemResponseModel'; -export type { PagedModelDocumentItemResponseModel } from './models/PagedModelDocumentItemResponseModel'; -export type { PagedModelDocumentTypeItemResponseModel } from './models/PagedModelDocumentTypeItemResponseModel'; -export type { PagedModelMediaItemResponseModel } from './models/PagedModelMediaItemResponseModel'; -export type { PagedModelMediaTypeItemResponseModel } from './models/PagedModelMediaTypeItemResponseModel'; -export type { PagedModelMemberItemResponseModel } from './models/PagedModelMemberItemResponseModel'; -export type { PagedModelMemberTypeItemResponseModel } from './models/PagedModelMemberTypeItemResponseModel'; -export type { PagedModelTemplateItemResponseModel } from './models/PagedModelTemplateItemResponseModel'; -export type { PagedNamedEntityTreeItemResponseModel } from './models/PagedNamedEntityTreeItemResponseModel'; -export type { PagedObjectTypeResponseModel } from './models/PagedObjectTypeResponseModel'; -export type { PagedPackageDefinitionResponseModel } from './models/PagedPackageDefinitionResponseModel'; -export type { PagedPackageMigrationStatusResponseModel } from './models/PagedPackageMigrationStatusResponseModel'; -export type { PagedPartialViewSnippetItemResponseModel } from './models/PagedPartialViewSnippetItemResponseModel'; -export type { PagedProblemDetailsModel } from './models/PagedProblemDetailsModel'; -export type { PagedRedirectUrlResponseModel } from './models/PagedRedirectUrlResponseModel'; -export type { PagedReferenceByIdModel } from './models/PagedReferenceByIdModel'; -export type { PagedRelationResponseModel } from './models/PagedRelationResponseModel'; -export type { PagedRelationTypeResponseModel } from './models/PagedRelationTypeResponseModel'; -export type { PagedSavedLogSearchResponseModel } from './models/PagedSavedLogSearchResponseModel'; -export type { PagedSearcherResponseModel } from './models/PagedSearcherResponseModel'; -export type { PagedSearchResultResponseModel } from './models/PagedSearchResultResponseModel'; -export type { PagedTagResponseModel } from './models/PagedTagResponseModel'; -export type { PagedTelemetryResponseModel } from './models/PagedTelemetryResponseModel'; -export type { PagedUserGroupResponseModel } from './models/PagedUserGroupResponseModel'; -export type { PagedUserResponseModel } from './models/PagedUserResponseModel'; -export type { PagedWebhookResponseModel } from './models/PagedWebhookResponseModel'; -export type { PartialViewFolderResponseModel } from './models/PartialViewFolderResponseModel'; -export type { PartialViewItemResponseModel } from './models/PartialViewItemResponseModel'; -export type { PartialViewResponseModel } from './models/PartialViewResponseModel'; -export type { PartialViewSnippetItemResponseModel } from './models/PartialViewSnippetItemResponseModel'; -export type { PartialViewSnippetResponseModel } from './models/PartialViewSnippetResponseModel'; -export type { PasswordConfigurationResponseModel } from './models/PasswordConfigurationResponseModel'; -export type { ProblemDetails } from './models/ProblemDetails'; -export type { ProblemDetailsBuilderModel } from './models/ProblemDetailsBuilderModel'; -export type { ProfilingStatusRequestModel } from './models/ProfilingStatusRequestModel'; -export type { ProfilingStatusResponseModel } from './models/ProfilingStatusResponseModel'; -export type { PropertyTypeAppearanceModel } from './models/PropertyTypeAppearanceModel'; -export type { PropertyTypeValidationModel } from './models/PropertyTypeValidationModel'; -export type { PublicAccessRequestModel } from './models/PublicAccessRequestModel'; -export type { PublishDocumentRequestModel } from './models/PublishDocumentRequestModel'; -export type { PublishDocumentWithDescendantsRequestModel } from './models/PublishDocumentWithDescendantsRequestModel'; -export { RedirectStatusModel } from './models/RedirectStatusModel'; -export type { RedirectUrlResponseModel } from './models/RedirectUrlResponseModel'; -export type { RedirectUrlStatusResponseModel } from './models/RedirectUrlStatusResponseModel'; -export type { ReferenceByIdModel } from './models/ReferenceByIdModel'; -export type { RelationReferenceModel } from './models/RelationReferenceModel'; -export type { RelationResponseModel } from './models/RelationResponseModel'; -export type { RelationTypeItemResponseModel } from './models/RelationTypeItemResponseModel'; -export type { RelationTypeResponseModel } from './models/RelationTypeResponseModel'; -export type { RenamePartialViewRequestModel } from './models/RenamePartialViewRequestModel'; -export type { RenameScriptRequestModel } from './models/RenameScriptRequestModel'; -export type { RenameStylesheetRequestModel } from './models/RenameStylesheetRequestModel'; -export type { ResendInviteUserRequestModel } from './models/ResendInviteUserRequestModel'; -export type { ResetPasswordRequestModel } from './models/ResetPasswordRequestModel'; -export type { ResetPasswordTokenRequestModel } from './models/ResetPasswordTokenRequestModel'; -export type { ResetPasswordUserResponseModel } from './models/ResetPasswordUserResponseModel'; -export { RuntimeLevelModel } from './models/RuntimeLevelModel'; -export { RuntimeModeModel } from './models/RuntimeModeModel'; -export type { SavedLogSearchRequestModel } from './models/SavedLogSearchRequestModel'; -export type { SavedLogSearchResponseModel } from './models/SavedLogSearchResponseModel'; -export type { ScheduleRequestModel } from './models/ScheduleRequestModel'; -export type { ScriptFolderResponseModel } from './models/ScriptFolderResponseModel'; -export type { ScriptItemResponseModel } from './models/ScriptItemResponseModel'; -export type { ScriptResponseModel } from './models/ScriptResponseModel'; -export type { SearcherResponseModel } from './models/SearcherResponseModel'; -export type { SearchResultResponseModel } from './models/SearchResultResponseModel'; -export type { SecurityConfigurationResponseModel } from './models/SecurityConfigurationResponseModel'; -export type { ServerConfigurationItemResponseModel } from './models/ServerConfigurationItemResponseModel'; -export type { ServerConfigurationResponseModel } from './models/ServerConfigurationResponseModel'; -export type { ServerInformationResponseModel } from './models/ServerInformationResponseModel'; -export type { ServerStatusResponseModel } from './models/ServerStatusResponseModel'; -export type { ServerTroubleshootingResponseModel } from './models/ServerTroubleshootingResponseModel'; -export type { SetAvatarRequestModel } from './models/SetAvatarRequestModel'; -export type { SetTourStatusRequestModel } from './models/SetTourStatusRequestModel'; -export type { SortingRequestModel } from './models/SortingRequestModel'; -export type { StaticFileItemResponseModel } from './models/StaticFileItemResponseModel'; -export { StatusResultTypeModel } from './models/StatusResultTypeModel'; -export type { StylesheetFolderResponseModel } from './models/StylesheetFolderResponseModel'; -export type { StylesheetItemResponseModel } from './models/StylesheetItemResponseModel'; -export type { StylesheetResponseModel } from './models/StylesheetResponseModel'; -export type { TagResponseModel } from './models/TagResponseModel'; -export { TelemetryLevelModel } from './models/TelemetryLevelModel'; -export type { TelemetryRequestModel } from './models/TelemetryRequestModel'; -export type { TelemetryResponseModel } from './models/TelemetryResponseModel'; -export type { TemplateConfigurationResponseModel } from './models/TemplateConfigurationResponseModel'; -export type { TemplateItemResponseModel } from './models/TemplateItemResponseModel'; -export type { TemplateQueryExecuteFilterPresentationModel } from './models/TemplateQueryExecuteFilterPresentationModel'; -export type { TemplateQueryExecuteModel } from './models/TemplateQueryExecuteModel'; -export type { TemplateQueryExecuteSortModel } from './models/TemplateQueryExecuteSortModel'; -export type { TemplateQueryOperatorModel } from './models/TemplateQueryOperatorModel'; -export type { TemplateQueryPropertyPresentationModel } from './models/TemplateQueryPropertyPresentationModel'; -export { TemplateQueryPropertyTypeModel } from './models/TemplateQueryPropertyTypeModel'; -export type { TemplateQueryResultItemPresentationModel } from './models/TemplateQueryResultItemPresentationModel'; -export type { TemplateQueryResultResponseModel } from './models/TemplateQueryResultResponseModel'; -export type { TemplateQuerySettingsResponseModel } from './models/TemplateQuerySettingsResponseModel'; -export type { TemplateResponseModel } from './models/TemplateResponseModel'; -export type { TemporaryFileConfigurationResponseModel } from './models/TemporaryFileConfigurationResponseModel'; -export type { TemporaryFileResponseModel } from './models/TemporaryFileResponseModel'; -export type { TourStatusModel } from './models/TourStatusModel'; -export type { TrackedReferenceDocumentTypeModel } from './models/TrackedReferenceDocumentTypeModel'; -export type { TrackedReferenceMediaTypeModel } from './models/TrackedReferenceMediaTypeModel'; -export type { UnknownTypePermissionPresentationModel } from './models/UnknownTypePermissionPresentationModel'; -export type { UnlockUsersRequestModel } from './models/UnlockUsersRequestModel'; -export type { UnpublishDocumentRequestModel } from './models/UnpublishDocumentRequestModel'; -export type { UpdateDataTypeRequestModel } from './models/UpdateDataTypeRequestModel'; -export type { UpdateDictionaryItemRequestModel } from './models/UpdateDictionaryItemRequestModel'; -export type { UpdateDocumentBlueprintRequestModel } from './models/UpdateDocumentBlueprintRequestModel'; -export type { UpdateDocumentNotificationsRequestModel } from './models/UpdateDocumentNotificationsRequestModel'; -export type { UpdateDocumentRequestModel } from './models/UpdateDocumentRequestModel'; -export type { UpdateDocumentTypePropertyTypeContainerRequestModel } from './models/UpdateDocumentTypePropertyTypeContainerRequestModel'; -export type { UpdateDocumentTypePropertyTypeRequestModel } from './models/UpdateDocumentTypePropertyTypeRequestModel'; -export type { UpdateDocumentTypeRequestModel } from './models/UpdateDocumentTypeRequestModel'; -export type { UpdateDomainsRequestModel } from './models/UpdateDomainsRequestModel'; -export type { UpdateFolderResponseModel } from './models/UpdateFolderResponseModel'; -export type { UpdateLanguageRequestModel } from './models/UpdateLanguageRequestModel'; -export type { UpdateMediaRequestModel } from './models/UpdateMediaRequestModel'; -export type { UpdateMediaTypePropertyTypeContainerRequestModel } from './models/UpdateMediaTypePropertyTypeContainerRequestModel'; -export type { UpdateMediaTypePropertyTypeRequestModel } from './models/UpdateMediaTypePropertyTypeRequestModel'; -export type { UpdateMediaTypeRequestModel } from './models/UpdateMediaTypeRequestModel'; -export type { UpdateMemberGroupRequestModel } from './models/UpdateMemberGroupRequestModel'; -export type { UpdateMemberRequestModel } from './models/UpdateMemberRequestModel'; -export type { UpdateMemberTypePropertyTypeContainerRequestModel } from './models/UpdateMemberTypePropertyTypeContainerRequestModel'; -export type { UpdateMemberTypePropertyTypeRequestModel } from './models/UpdateMemberTypePropertyTypeRequestModel'; -export type { UpdateMemberTypeRequestModel } from './models/UpdateMemberTypeRequestModel'; -export type { UpdatePackageRequestModel } from './models/UpdatePackageRequestModel'; -export type { UpdatePartialViewRequestModel } from './models/UpdatePartialViewRequestModel'; -export type { UpdateScriptRequestModel } from './models/UpdateScriptRequestModel'; -export type { UpdateStylesheetRequestModel } from './models/UpdateStylesheetRequestModel'; -export type { UpdateTemplateRequestModel } from './models/UpdateTemplateRequestModel'; -export type { UpdateUserGroupRequestModel } from './models/UpdateUserGroupRequestModel'; -export type { UpdateUserGroupsOnUserRequestModel } from './models/UpdateUserGroupsOnUserRequestModel'; -export type { UpdateUserRequestModel } from './models/UpdateUserRequestModel'; -export type { UpdateWebhookRequestModel } from './models/UpdateWebhookRequestModel'; -export type { UpgradeSettingsResponseModel } from './models/UpgradeSettingsResponseModel'; -export type { UserConfigurationResponseModel } from './models/UserConfigurationResponseModel'; -export type { UserGroupItemResponseModel } from './models/UserGroupItemResponseModel'; -export type { UserGroupResponseModel } from './models/UserGroupResponseModel'; -export type { UserInstallRequestModel } from './models/UserInstallRequestModel'; -export type { UserItemResponseModel } from './models/UserItemResponseModel'; -export { UserOrderModel } from './models/UserOrderModel'; -export type { UserPermissionModel } from './models/UserPermissionModel'; -export type { UserPermissionsResponseModel } from './models/UserPermissionsResponseModel'; -export type { UserResponseModel } from './models/UserResponseModel'; -export type { UserSettingsPresentationModel } from './models/UserSettingsPresentationModel'; -export { UserStateModel } from './models/UserStateModel'; -export type { UserTourStatusesResponseModel } from './models/UserTourStatusesResponseModel'; -export type { UserTwoFactorProviderModel } from './models/UserTwoFactorProviderModel'; -export type { VariantItemResponseModel } from './models/VariantItemResponseModel'; -export type { VerifyInviteUserRequestModel } from './models/VerifyInviteUserRequestModel'; -export type { VerifyInviteUserResponseModel } from './models/VerifyInviteUserResponseModel'; -export type { VerifyResetPasswordResponseModel } from './models/VerifyResetPasswordResponseModel'; -export type { VerifyResetPasswordTokenRequestModel } from './models/VerifyResetPasswordTokenRequestModel'; -export type { WebhookEventResponseModel } from './models/WebhookEventResponseModel'; -export type { WebhookItemResponseModel } from './models/WebhookItemResponseModel'; -export type { WebhookResponseModel } from './models/WebhookResponseModel'; - -export { AuditLogResource } from './services/AuditLogResource'; -export { CultureResource } from './services/CultureResource'; -export { DataTypeResource } from './services/DataTypeResource'; -export { DictionaryResource } from './services/DictionaryResource'; -export { DocumentResource } from './services/DocumentResource'; -export { DocumentBlueprintResource } from './services/DocumentBlueprintResource'; -export { DocumentTypeResource } from './services/DocumentTypeResource'; -export { DocumentVersionResource } from './services/DocumentVersionResource'; -export { DynamicRootResource } from './services/DynamicRootResource'; -export { HealthCheckResource } from './services/HealthCheckResource'; -export { HelpResource } from './services/HelpResource'; -export { IndexerResource } from './services/IndexerResource'; -export { InstallResource } from './services/InstallResource'; -export { LanguageResource } from './services/LanguageResource'; -export { LogViewerResource } from './services/LogViewerResource'; -export { MediaResource } from './services/MediaResource'; -export { MediaTypeResource } from './services/MediaTypeResource'; -export { MemberResource } from './services/MemberResource'; -export { MemberGroupResource } from './services/MemberGroupResource'; -export { MemberTypeResource } from './services/MemberTypeResource'; -export { ModelsBuilderResource } from './services/ModelsBuilderResource'; -export { ObjectTypesResource } from './services/ObjectTypesResource'; -export { PackageResource } from './services/PackageResource'; -export { PartialViewResource } from './services/PartialViewResource'; -export { PreviewResource } from './services/PreviewResource'; -export { ProfilingResource } from './services/ProfilingResource'; -export { PropertyTypeResource } from './services/PropertyTypeResource'; -export { PublishedCacheResource } from './services/PublishedCacheResource'; -export { RedirectManagementResource } from './services/RedirectManagementResource'; -export { RelationResource } from './services/RelationResource'; -export { RelationTypeResource } from './services/RelationTypeResource'; -export { ScriptResource } from './services/ScriptResource'; -export { SearcherResource } from './services/SearcherResource'; -export { SecurityResource } from './services/SecurityResource'; -export { ServerResource } from './services/ServerResource'; -export { StaticFileResource } from './services/StaticFileResource'; -export { StylesheetResource } from './services/StylesheetResource'; -export { TagResource } from './services/TagResource'; -export { TelemetryResource } from './services/TelemetryResource'; -export { TemplateResource } from './services/TemplateResource'; -export { TemporaryFileResource } from './services/TemporaryFileResource'; -export { TourResource } from './services/TourResource'; -export { UpgradeResource } from './services/UpgradeResource'; -export { UserResource } from './services/UserResource'; -export { UserGroupResource } from './services/UserGroupResource'; -export { WebhookResource } from './services/WebhookResource'; +export { OpenAPI, type OpenAPIConfig } from './core/OpenAPI'; +export * from './models'; +export * from './services'; \ No newline at end of file diff --git a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models.ts b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models.ts new file mode 100644 index 0000000000..bb59103d75 --- /dev/null +++ b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models.ts @@ -0,0 +1,5153 @@ + + +export type AllowedDocumentTypeModel = { + id: string +name: string +description?: string | null +icon?: string | null + }; + +export type AllowedMediaTypeModel = { + id: string +name: string +description?: string | null +icon?: string | null + }; + +export type AuditLogEntityModel = { + id?: string | null +type?: string | null + }; + +export type AuditLogResponseModel = { + user: ReferenceByIdModel +entity?: AuditLogEntityModel | null +timestamp: string +logType: AuditTypeModel +comment?: string | null +parameters?: string | null + }; + +export type AuditLogWithUsernameResponseModel = { + user: ReferenceByIdModel +entity?: AuditLogEntityModel | null +timestamp: string +logType: AuditTypeModel +comment?: string | null +parameters?: string | null +userName?: string | null +userAvatars: Array + }; + +export enum AuditTypeModel { + NEW = 'New', + SAVE = 'Save', + SAVE_VARIANT = 'SaveVariant', + OPEN = 'Open', + DELETE = 'Delete', + PUBLISH = 'Publish', + PUBLISH_VARIANT = 'PublishVariant', + SEND_TO_PUBLISH = 'SendToPublish', + SEND_TO_PUBLISH_VARIANT = 'SendToPublishVariant', + UNPUBLISH = 'Unpublish', + UNPUBLISH_VARIANT = 'UnpublishVariant', + MOVE = 'Move', + COPY = 'Copy', + ASSIGN_DOMAIN = 'AssignDomain', + PUBLIC_ACCESS = 'PublicAccess', + SORT = 'Sort', + NOTIFY = 'Notify', + SYSTEM = 'System', + ROLL_BACK = 'RollBack', + PACKAGER_INSTALL = 'PackagerInstall', + PACKAGER_UNINSTALL = 'PackagerUninstall', + CUSTOM = 'Custom', + CONTENT_VERSION_PREVENT_CLEANUP = 'ContentVersionPreventCleanup', + CONTENT_VERSION_ENABLE_CLEANUP = 'ContentVersionEnableCleanup' +} + +export type AvailableDocumentTypeCompositionResponseModel = { + id: string +name: string +icon: string +folderPath: Array +isCompatible: boolean + }; + +export type AvailableMediaTypeCompositionResponseModel = { + id: string +name: string +icon: string +folderPath: Array +isCompatible: boolean + }; + +export type AvailableMemberTypeCompositionResponseModel = { + id: string +name: string +icon: string +folderPath: Array +isCompatible: boolean + }; + +export type ChangePasswordCurrentUserRequestModel = { + newPassword: string +oldPassword?: string | null + }; + +export type ChangePasswordUserRequestModel = { + newPassword: string + }; + +export enum CompositionTypeModel { + COMPOSITION = 'Composition', + INHERITANCE = 'Inheritance' +} + +export type ConsentLevelPresentationModel = { + level: TelemetryLevelModel +description: string + }; + +export type CopyDataTypeRequestModel = { + target?: ReferenceByIdModel | null + }; + +export type CopyDocumentRequestModel = { + target?: ReferenceByIdModel | null +relateToOriginal: boolean +includeDescendants: boolean + }; + +export type CopyDocumentTypeRequestModel = { + target?: ReferenceByIdModel | null + }; + +export type CopyMediaTypeRequestModel = { + target?: ReferenceByIdModel | null + }; + +export type CreateDataTypeRequestModel = { + name: string +editorAlias: string +editorUiAlias?: string | null +values: Array +id?: string | null +parent?: ReferenceByIdModel | null + }; + +export type CreateDictionaryItemRequestModel = { + name: string +translations: Array +id?: string | null +parent?: ReferenceByIdModel | null + }; + +export type CreateDocumentBlueprintFromDocumentRequestModel = { + document: ReferenceByIdModel +id?: string | null +name: string +parent?: ReferenceByIdModel | null + }; + +export type CreateDocumentBlueprintRequestModel = { + values: Array +variants: Array +id?: string | null +parent?: ReferenceByIdModel | null +documentType: ReferenceByIdModel + }; + +export type CreateDocumentRequestModel = { + values: Array +variants: Array +id?: string | null +parent?: ReferenceByIdModel | null +documentType: ReferenceByIdModel +template?: ReferenceByIdModel | null + }; + +export type CreateDocumentTypePropertyTypeContainerRequestModel = { + id: string +parent?: ReferenceByIdModel | null +name?: string | null +type: string +sortOrder: number + }; + +export type CreateDocumentTypePropertyTypeRequestModel = { + id: string +container?: ReferenceByIdModel | null +sortOrder: number +alias: string +name: string +description?: string | null +dataType: ReferenceByIdModel +variesByCulture: boolean +variesBySegment: boolean +validation: PropertyTypeValidationModel +appearance: PropertyTypeAppearanceModel + }; + +export type CreateDocumentTypeRequestModel = { + alias: string +name: string +description?: string | null +icon: string +allowedAsRoot: boolean +variesByCulture: boolean +variesBySegment: boolean +collection?: ReferenceByIdModel | null +isElement: boolean +properties: Array +containers: Array +id?: string | null +parent?: ReferenceByIdModel | null +allowedTemplates: Array +defaultTemplate?: ReferenceByIdModel | null +cleanup: DocumentTypeCleanupModel +allowedDocumentTypes: Array +compositions: Array + }; + +export type CreateFolderRequestModel = { + name: string +id?: string | null +parent?: ReferenceByIdModel | null + }; + +export type CreateInitialPasswordUserRequestModel = { + user: ReferenceByIdModel +token: string +password: string + }; + +export type CreateLanguageRequestModel = { + name: string +isDefault: boolean +isMandatory: boolean +fallbackIsoCode?: string | null +isoCode: string + }; + +export type CreateMediaRequestModel = { + values: Array +variants: Array +id?: string | null +parent?: ReferenceByIdModel | null +mediaType: ReferenceByIdModel + }; + +export type CreateMediaTypePropertyTypeContainerRequestModel = { + id: string +parent?: ReferenceByIdModel | null +name?: string | null +type: string +sortOrder: number + }; + +export type CreateMediaTypePropertyTypeRequestModel = { + id: string +container?: ReferenceByIdModel | null +sortOrder: number +alias: string +name: string +description?: string | null +dataType: ReferenceByIdModel +variesByCulture: boolean +variesBySegment: boolean +validation: PropertyTypeValidationModel +appearance: PropertyTypeAppearanceModel + }; + +export type CreateMediaTypeRequestModel = { + alias: string +name: string +description?: string | null +icon: string +allowedAsRoot: boolean +variesByCulture: boolean +variesBySegment: boolean +isElement: boolean +properties: Array +containers: Array +id?: string | null +parent?: ReferenceByIdModel | null +allowedMediaTypes: Array +compositions: Array +collection?: ReferenceByIdModel | null + }; + +export type CreateMemberGroupRequestModel = { + name: string +id?: string | null + }; + +export type CreateMemberRequestModel = { + values: Array +variants: Array +id?: string | null +email: string +username: string +password: string +memberType: ReferenceByIdModel +groups?: Array | null +isApproved: boolean + }; + +export type CreateMemberTypePropertyTypeContainerRequestModel = { + id: string +parent?: ReferenceByIdModel | null +name?: string | null +type: string +sortOrder: number + }; + +export type CreateMemberTypePropertyTypeRequestModel = { + id: string +container?: ReferenceByIdModel | null +sortOrder: number +alias: string +name: string +description?: string | null +dataType: ReferenceByIdModel +variesByCulture: boolean +variesBySegment: boolean +validation: PropertyTypeValidationModel +appearance: PropertyTypeAppearanceModel +isSensitive: boolean +visibility: MemberTypePropertyTypeVisibilityModel + }; + +export type CreateMemberTypeRequestModel = { + alias: string +name: string +description?: string | null +icon: string +allowedAsRoot: boolean +variesByCulture: boolean +variesBySegment: boolean +collection?: ReferenceByIdModel | null +isElement: boolean +properties: Array +containers: Array +id?: string | null +compositions: Array + }; + +export type CreatePackageRequestModel = { + name: string +contentNodeId?: string | null +contentLoadChildNodes: boolean +mediaIds: Array +mediaLoadChildNodes: boolean +documentTypes: Array +mediaTypes: Array +dataTypes: Array +templates: Array +partialViews: Array +stylesheets: Array +scripts: Array +languages: Array +dictionaryItems: Array + }; + +export type CreatePartialViewFolderRequestModel = { + name: string +parent?: FileSystemFolderModel | null + }; + +export type CreatePartialViewRequestModel = { + name: string +parent?: FileSystemFolderModel | null +content: string + }; + +export type CreateScriptFolderRequestModel = { + name: string +parent?: FileSystemFolderModel | null + }; + +export type CreateScriptRequestModel = { + name: string +parent?: FileSystemFolderModel | null +content: string + }; + +export type CreateStylesheetFolderRequestModel = { + name: string +parent?: FileSystemFolderModel | null + }; + +export type CreateStylesheetRequestModel = { + name: string +parent?: FileSystemFolderModel | null +content: string + }; + +export type CreateTemplateRequestModel = { + name: string +alias: string +content?: string | null +id?: string | null + }; + +export type CreateUserDataRequestModel = { + group: string +identifier: string +value: string +key?: string | null + }; + +export type CreateUserGroupRequestModel = { + name: string +icon?: string | null +sections: Array +languages: Array +hasAccessToAllLanguages: boolean +documentStartNode?: ReferenceByIdModel | null +documentRootAccess: boolean +mediaStartNode?: ReferenceByIdModel | null +mediaRootAccess: boolean +fallbackPermissions: Array +permissions: Array + }; + +export type CreateUserRequestModel = { + email: string +userName: string +name: string +userGroupIds: Array +id?: string | null + }; + +export type CreateWebhookRequestModel = { + enabled: boolean +url: string +contentTypeKeys: Array +headers: Record +id?: string | null +events: Array + }; + +export type CultureAndScheduleRequestModel = { + culture?: string | null +schedule?: ScheduleRequestModel | null + }; + +export type CultureReponseModel = { + name: string +englishName: string + }; + +export type CurrenUserConfigurationResponseModel = { + keepUserLoggedIn: boolean +usernameIsEmail: boolean +passwordConfiguration: PasswordConfigurationResponseModel + }; + +export type CurrentUserResponseModel = { + id: string +email: string +userName: string +name: string +languageIsoCode?: string | null +documentStartNodeIds: Array +mediaStartNodeIds: Array +avatarUrls: Array +languages: Array +hasAccessToAllLanguages: boolean +hasAccessToSensitiveData: boolean +fallbackPermissions: Array +permissions: Array +allowedSections: Array +isAdmin: boolean + }; + +export enum DataTypeChangeModeModel { + TRUE = 'True', + FALSE = 'False', + FALSE_WITH_HELP_TEXT = 'FalseWithHelpText' +} + +export type DataTypeItemResponseModel = { + id: string +name: string +editorUiAlias?: string | null +isDeletable: boolean + }; + +export type DataTypePropertyPresentationModel = { + alias: string +value?: unknown + }; + +export type DataTypePropertyReferenceModel = { + name: string +alias: string + }; + +export type DataTypeReferenceResponseModel = { + id: string +type: string +properties: Array + }; + +export type DataTypeResponseModel = { + name: string +editorAlias: string +editorUiAlias?: string | null +values: Array +id: string +isDeletable: boolean +canIgnoreStartNodes: boolean + }; + +export type DataTypeTreeItemResponseModel = { + hasChildren: boolean +id: string +parent?: ReferenceByIdModel | null +name: string +isFolder: boolean +editorUiAlias?: string | null +isDeletable: boolean + }; + +export type DatabaseInstallRequestModel = { + id: string +providerName: string +server?: string | null +name?: string | null +username?: string | null +password?: string | null +useIntegratedAuthentication: boolean +connectionString?: string | null +trustServerCertificate: boolean + }; + +export type DatabaseSettingsPresentationModel = { + id: string +sortOrder: number +displayName: string +defaultDatabaseName: string +providerName: string +isConfigured: boolean +requiresServer: boolean +serverPlaceholder: string +requiresCredentials: boolean +supportsIntegratedAuthentication: boolean +requiresConnectionTest: boolean + }; + +export type DatatypeConfigurationResponseModel = { + canBeChanged: DataTypeChangeModeModel +documentListViewId: string +mediaListViewId: string +memberListViewId: string + }; + +export type DefaultReferenceResponseModel = { + id: string +name?: string | null +type?: string | null +icon?: string | null + }; + +export type DeleteUserGroupsRequestModel = { + userGroupIds: Array + }; + +export type DeleteUsersRequestModel = { + userIds: Array + }; + +export type DictionaryItemItemResponseModel = { + id: string +name: string + }; + +export type DictionaryItemResponseModel = { + name: string +translations: Array +id: string + }; + +export type DictionaryItemTranslationModel = { + isoCode: string +translation: string + }; + +export type DictionaryOverviewResponseModel = { + name?: string | null +id: string +parent?: ReferenceByIdModel | null +translatedIsoCodes: Array + }; + +export enum DirectionModel { + ASCENDING = 'Ascending', + DESCENDING = 'Descending' +} + +export type DisableUserRequestModel = { + userIds: Array + }; + +export type DocumentBlueprintItemResponseModel = { + id: string +name: string +documentType: DocumentTypeReferenceResponseModel + }; + +export type DocumentBlueprintResponseModel = { + values: Array +variants: Array +id: string +documentType: DocumentTypeReferenceResponseModel + }; + +export type DocumentBlueprintTreeItemResponseModel = { + hasChildren: boolean +id: string +parent?: ReferenceByIdModel | null +name: string +isFolder: boolean +documentType?: DocumentTypeReferenceResponseModel | null + }; + +export type DocumentCollectionResponseModel = { + values: Array +variants: Array +id: string +creator?: string | null +sortOrder: number +documentType: DocumentTypeCollectionReferenceResponseModel +updater?: string | null + }; + +export type DocumentConfigurationResponseModel = { + sanitizeTinyMce: boolean +disableDeleteWhenReferenced: boolean +disableUnpublishWhenReferenced: boolean +allowEditInvariantFromNonDefault: boolean +allowNonExistingSegmentsCreation: boolean +reservedFieldNames: Array + }; + +export type DocumentItemResponseModel = { + id: string +isTrashed: boolean +isProtected: boolean +documentType: DocumentTypeReferenceResponseModel +variants: Array + }; + +export type DocumentNotificationResponseModel = { + actionId: string +subscribed: boolean + }; + +export type DocumentPermissionPresentationModel = { + $type: string +document: ReferenceByIdModel +verbs: Array + }; + +export type DocumentRecycleBinItemResponseModel = { + id: string +hasChildren: boolean +parent?: ItemReferenceByIdResponseModel | null +documentType: DocumentTypeReferenceResponseModel +variants: Array + }; + +export type DocumentReferenceResponseModel = { + id: string +name?: string | null +published?: boolean | null +documentType: TrackedReferenceDocumentTypeModel + }; + +export type DocumentResponseModel = { + values: Array +variants: Array +id: string +documentType: DocumentTypeReferenceResponseModel +urls: Array +template?: ReferenceByIdModel | null +isTrashed: boolean + }; + +export type DocumentTreeItemResponseModel = { + hasChildren: boolean +parent?: ReferenceByIdModel | null +noAccess: boolean +isTrashed: boolean +id: string +isProtected: boolean +documentType: DocumentTypeReferenceResponseModel +variants: Array + }; + +export type DocumentTypeCleanupModel = { + preventCleanup: boolean +keepAllVersionsNewerThanDays?: number | null +keepLatestVersionPerDayForDays?: number | null + }; + +export type DocumentTypeCollectionReferenceResponseModel = { + id: string +alias: string +icon: string + }; + +export type DocumentTypeCompositionModel = { + documentType: ReferenceByIdModel +compositionType: CompositionTypeModel + }; + +export type DocumentTypeCompositionRequestModel = { + id?: string | null +currentPropertyAliases: Array +currentCompositeIds: Array +isElement: boolean + }; + +export type DocumentTypeCompositionResponseModel = { + id: string +name: string +icon: string + }; + +export type DocumentTypeConfigurationResponseModel = { + dataTypesCanBeChanged: DataTypeChangeModeModel +disableTemplates: boolean +useSegments: boolean + }; + +export type DocumentTypeItemResponseModel = { + id: string +name: string +isElement: boolean +icon?: string | null + }; + +export type DocumentTypePropertyTypeContainerResponseModel = { + id: string +parent?: ReferenceByIdModel | null +name?: string | null +type: string +sortOrder: number + }; + +export type DocumentTypePropertyTypeResponseModel = { + id: string +container?: ReferenceByIdModel | null +sortOrder: number +alias: string +name: string +description?: string | null +dataType: ReferenceByIdModel +variesByCulture: boolean +variesBySegment: boolean +validation: PropertyTypeValidationModel +appearance: PropertyTypeAppearanceModel + }; + +export type DocumentTypeReferenceResponseModel = { + id: string +icon: string +collection?: ReferenceByIdModel | null + }; + +export type DocumentTypeResponseModel = { + alias: string +name: string +description?: string | null +icon: string +allowedAsRoot: boolean +variesByCulture: boolean +variesBySegment: boolean +collection?: ReferenceByIdModel | null +isElement: boolean +properties: Array +containers: Array +id: string +allowedTemplates: Array +defaultTemplate?: ReferenceByIdModel | null +cleanup: DocumentTypeCleanupModel +allowedDocumentTypes: Array +compositions: Array + }; + +export type DocumentTypeSortModel = { + documentType: ReferenceByIdModel +sortOrder: number + }; + +export type DocumentTypeTreeItemResponseModel = { + hasChildren: boolean +id: string +parent?: ReferenceByIdModel | null +name: string +isFolder: boolean +isElement: boolean +icon: string + }; + +export type DocumentUrlInfoModel = { + culture?: string | null +url: string + }; + +export type DocumentValueModel = { + culture?: string | null +segment?: string | null +alias: string +value?: unknown + }; + +export type DocumentVariantItemResponseModel = { + name: string +culture?: string | null +state: DocumentVariantStateModel + }; + +export type DocumentVariantRequestModel = { + culture?: string | null +segment?: string | null +name: string + }; + +export type DocumentVariantResponseModel = { + culture?: string | null +segment?: string | null +name: string +createDate: string +updateDate: string +state: DocumentVariantStateModel +publishDate?: string | null + }; + +export enum DocumentVariantStateModel { + NOT_CREATED = 'NotCreated', + DRAFT = 'Draft', + PUBLISHED = 'Published', + PUBLISHED_PENDING_CHANGES = 'PublishedPendingChanges' +} + +export type DocumentVersionItemResponseModel = { + id: string +document: ReferenceByIdModel +documentType: ReferenceByIdModel +user: ReferenceByIdModel +versionDate: string +isCurrentPublishedVersion: boolean +isCurrentDraftVersion: boolean +preventCleanup: boolean + }; + +export type DocumentVersionResponseModel = { + values: Array +variants: Array +id: string +documentType: DocumentTypeReferenceResponseModel +document?: ReferenceByIdModel | null + }; + +export type DomainPresentationModel = { + domainName: string +isoCode: string + }; + +export type DomainsResponseModel = { + defaultIsoCode?: string | null +domains: Array + }; + +export type DynamicRootContextRequestModel = { + id?: string | null +parent: ReferenceByIdModel +culture?: string | null +segment?: string | null + }; + +export type DynamicRootQueryOriginRequestModel = { + alias: string +id?: string | null + }; + +export type DynamicRootQueryRequestModel = { + origin: DynamicRootQueryOriginRequestModel +steps: Array + }; + +export type DynamicRootQueryStepRequestModel = { + alias: string +documentTypeIds: Array + }; + +export type DynamicRootRequestModel = { + context: DynamicRootContextRequestModel +query: DynamicRootQueryRequestModel + }; + +export type DynamicRootResponseModel = { + roots: Array + }; + +export type EnableTwoFactorRequestModel = { + code: string +secret: string + }; + +export type EnableUserRequestModel = { + userIds: Array + }; + +export enum EventMessageTypeModel { + DEFAULT = 'Default', + INFO = 'Info', + ERROR = 'Error', + SUCCESS = 'Success', + WARNING = 'Warning' +} + +export type FieldPresentationModel = { + name: string +values: Array + }; + +export type FileSystemFolderModel = { + path: string + }; + +export type FileSystemTreeItemPresentationModel = { + hasChildren: boolean +name: string +path: string +parent?: FileSystemFolderModel | null +isFolder: boolean + }; + +export type FolderResponseModel = { + name: string +id: string + }; + +export type HealthCheckActionRequestModel = { + healthCheck: ReferenceByIdModel +alias?: string | null +name?: string | null +description?: string | null +valueRequired: boolean +providedValue?: string | null +providedValueValidation?: string | null +providedValueValidationRegex?: string | null + }; + +export type HealthCheckGroupPresentationModel = { + name: string +checks: Array + }; + +export type HealthCheckGroupResponseModel = { + name: string + }; + +export type HealthCheckGroupWithResultResponseModel = { + checks: Array + }; + +export type HealthCheckModel = { + id: string +name: string +description?: string | null + }; + +export type HealthCheckResultResponseModel = { + message: string +resultType: StatusResultTypeModel +actions?: Array | null +readMoreLink?: string | null + }; + +export type HealthCheckWithResultPresentationModel = { + id: string +results?: Array | null + }; + +export enum HealthStatusModel { + HEALTHY = 'Healthy', + UNHEALTHY = 'Unhealthy', + REBUILDING = 'Rebuilding' +} + +export type HelpPageResponseModel = { + name?: string | null +description?: string | null +url?: string | null +type?: string | null + }; + +export type ImportDictionaryRequestModel = { + temporaryFile: ReferenceByIdModel +parent?: ReferenceByIdModel | null + }; + +export type IndexResponseModel = { + name: string +healthStatus: HealthStatusModel +canRebuild: boolean +searcherName: string +documentCount: number +fieldCount: number +providerProperties?: Record | null + }; + +export type InstallRequestModel = { + user: UserInstallRequestModel +database: DatabaseInstallRequestModel +telemetryLevel: TelemetryLevelModel + }; + +export type InstallSettingsResponseModel = { + user: UserSettingsPresentationModel +databases: Array + }; + +export type InviteUserRequestModel = { + email: string +userName: string +name: string +userGroupIds: Array +id?: string | null +message?: string | null + }; + +export type ItemReferenceByIdResponseModel = { + id: string + }; + +export type ItemSortingRequestModel = { + id: string +sortOrder: number + }; + +export type LanguageItemResponseModel = { + name: string +isoCode: string + }; + +export type LanguageResponseModel = { + name: string +isDefault: boolean +isMandatory: boolean +fallbackIsoCode?: string | null +isoCode: string + }; + +export type LinkedLoginModel = { + providerName: string +providerKey: string + }; + +export type LinkedLoginsRequestModel = { + linkedLogins: Array + }; + +export type LogLevelCountsReponseModel = { + information: number +debug: number +warning: number +error: number +fatal: number + }; + +export enum LogLevelModel { + VERBOSE = 'Verbose', + DEBUG = 'Debug', + INFORMATION = 'Information', + WARNING = 'Warning', + ERROR = 'Error', + FATAL = 'Fatal' +} + +export type LogMessagePropertyPresentationModel = { + name: string +value?: string | null + }; + +export type LogMessageResponseModel = { + timestamp: string +level: LogLevelModel +messageTemplate?: string | null +renderedMessage?: string | null +properties: Array +exception?: string | null + }; + +export type LogTemplateResponseModel = { + messageTemplate?: string | null +count: number + }; + +export type LoggerResponseModel = { + name: string +level: LogLevelModel + }; + +export type ManifestResponseModel = { + name: string +version?: string | null +extensions: Array + }; + +export type MediaCollectionResponseModel = { + values: Array +variants: Array +id: string +creator?: string | null +sortOrder: number +mediaType: MediaTypeCollectionReferenceResponseModel + }; + +export type MediaConfigurationResponseModel = { + disableDeleteWhenReferenced: boolean +disableUnpublishWhenReferenced: boolean +sanitizeTinyMce: boolean +reservedFieldNames: Array + }; + +export type MediaItemResponseModel = { + id: string +isTrashed: boolean +mediaType: MediaTypeReferenceResponseModel +variants: Array + }; + +export type MediaRecycleBinItemResponseModel = { + id: string +hasChildren: boolean +parent?: ItemReferenceByIdResponseModel | null +mediaType: MediaTypeReferenceResponseModel +variants: Array + }; + +export type MediaReferenceResponseModel = { + id: string +name?: string | null +mediaType: TrackedReferenceMediaTypeModel + }; + +export type MediaResponseModel = { + values: Array +variants: Array +id: string +urls: Array +isTrashed: boolean +mediaType: MediaTypeReferenceResponseModel + }; + +export type MediaTreeItemResponseModel = { + hasChildren: boolean +parent?: ReferenceByIdModel | null +noAccess: boolean +isTrashed: boolean +id: string +mediaType: MediaTypeReferenceResponseModel +variants: Array + }; + +export type MediaTypeCollectionReferenceResponseModel = { + id: string +alias: string +icon: string + }; + +export type MediaTypeCompositionModel = { + mediaType: ReferenceByIdModel +compositionType: CompositionTypeModel + }; + +export type MediaTypeCompositionRequestModel = { + id?: string | null +currentPropertyAliases: Array +currentCompositeIds: Array + }; + +export type MediaTypeCompositionResponseModel = { + id: string +name: string +icon: string + }; + +export type MediaTypeItemResponseModel = { + id: string +name: string +icon?: string | null + }; + +export type MediaTypePropertyTypeContainerResponseModel = { + id: string +parent?: ReferenceByIdModel | null +name?: string | null +type: string +sortOrder: number + }; + +export type MediaTypePropertyTypeResponseModel = { + id: string +container?: ReferenceByIdModel | null +sortOrder: number +alias: string +name: string +description?: string | null +dataType: ReferenceByIdModel +variesByCulture: boolean +variesBySegment: boolean +validation: PropertyTypeValidationModel +appearance: PropertyTypeAppearanceModel + }; + +export type MediaTypeReferenceResponseModel = { + id: string +icon: string +collection?: ReferenceByIdModel | null + }; + +export type MediaTypeResponseModel = { + alias: string +name: string +description?: string | null +icon: string +allowedAsRoot: boolean +variesByCulture: boolean +variesBySegment: boolean +collection?: ReferenceByIdModel | null +isElement: boolean +properties: Array +containers: Array +id: string +allowedMediaTypes: Array +compositions: Array + }; + +export type MediaTypeSortModel = { + mediaType: ReferenceByIdModel +sortOrder: number + }; + +export type MediaTypeTreeItemResponseModel = { + hasChildren: boolean +id: string +parent?: ReferenceByIdModel | null +name: string +isFolder: boolean +icon: string + }; + +export type MediaUrlInfoModel = { + culture?: string | null +url: string + }; + +export type MediaValueModel = { + culture?: string | null +segment?: string | null +alias: string +value?: unknown + }; + +export type MediaVariantRequestModel = { + culture?: string | null +segment?: string | null +name: string + }; + +export type MediaVariantResponseModel = { + culture?: string | null +segment?: string | null +name: string +createDate: string +updateDate: string + }; + +export type MemberConfigurationResponseModel = { + reservedFieldNames: Array + }; + +export type MemberGroupItemResponseModel = { + id: string +name: string + }; + +export type MemberGroupResponseModel = { + name: string +id: string + }; + +export type MemberItemResponseModel = { + id: string +memberType: MemberTypeReferenceResponseModel +variants: Array + }; + +export type MemberResponseModel = { + values: Array +variants: Array +id: string +email: string +username: string +memberType: MemberTypeReferenceResponseModel +isApproved: boolean +isLockedOut: boolean +isTwoFactorEnabled: boolean +failedPasswordAttempts: number +lastLoginDate?: string | null +lastLockoutDate?: string | null +lastPasswordChangeDate?: string | null +groups: Array + }; + +export type MemberTypeCompositionModel = { + memberType: ReferenceByIdModel +compositionType: CompositionTypeModel + }; + +export type MemberTypeCompositionRequestModel = { + id?: string | null +currentPropertyAliases: Array +currentCompositeIds: Array + }; + +export type MemberTypeCompositionResponseModel = { + id: string +name: string +icon: string + }; + +export type MemberTypeItemResponseModel = { + id: string +name: string +icon?: string | null + }; + +export type MemberTypePropertyTypeContainerResponseModel = { + id: string +parent?: ReferenceByIdModel | null +name?: string | null +type: string +sortOrder: number + }; + +export type MemberTypePropertyTypeResponseModel = { + id: string +container?: ReferenceByIdModel | null +sortOrder: number +alias: string +name: string +description?: string | null +dataType: ReferenceByIdModel +variesByCulture: boolean +variesBySegment: boolean +validation: PropertyTypeValidationModel +appearance: PropertyTypeAppearanceModel +isSensitive: boolean +visibility: MemberTypePropertyTypeVisibilityModel + }; + +export type MemberTypePropertyTypeVisibilityModel = { + memberCanView: boolean +memberCanEdit: boolean + }; + +export type MemberTypeReferenceResponseModel = { + id: string +icon: string +collection?: ReferenceByIdModel | null + }; + +export type MemberTypeResponseModel = { + alias: string +name: string +description?: string | null +icon: string +allowedAsRoot: boolean +variesByCulture: boolean +variesBySegment: boolean +collection?: ReferenceByIdModel | null +isElement: boolean +properties: Array +containers: Array +id: string +compositions: Array + }; + +export type MemberValueModel = { + culture?: string | null +segment?: string | null +alias: string +value?: unknown + }; + +export type MemberVariantRequestModel = { + culture?: string | null +segment?: string | null +name: string + }; + +export type MemberVariantResponseModel = { + culture?: string | null +segment?: string | null +name: string +createDate: string +updateDate: string + }; + +export type ModelsBuilderResponseModel = { + mode: ModelsModeModel +canGenerate: boolean +outOfDateModels: boolean +lastError?: string | null +version?: string | null +modelsNamespace?: string | null +trackingOutOfDateModels: boolean + }; + +export enum ModelsModeModel { + NOTHING = 'Nothing', + IN_MEMORY_AUTO = 'InMemoryAuto', + SOURCE_CODE_MANUAL = 'SourceCodeManual', + SOURCE_CODE_AUTO = 'SourceCodeAuto' +} + +export type MoveDataTypeRequestModel = { + target?: ReferenceByIdModel | null + }; + +export type MoveDictionaryRequestModel = { + target?: ReferenceByIdModel | null + }; + +export type MoveDocumentBlueprintRequestModel = { + target?: ReferenceByIdModel | null + }; + +export type MoveDocumentRequestModel = { + target?: ReferenceByIdModel | null + }; + +export type MoveDocumentTypeRequestModel = { + target?: ReferenceByIdModel | null + }; + +export type MoveMediaRequestModel = { + target?: ReferenceByIdModel | null + }; + +export type MoveMediaTypeRequestModel = { + target?: ReferenceByIdModel | null + }; + +export type NamedEntityTreeItemResponseModel = { + hasChildren: boolean +id: string +parent?: ReferenceByIdModel | null +name: string + }; + +export type NoopSetupTwoFactorModel = Record; + +export type NotificationHeaderModel = { + message: string +category: string +type: EventMessageTypeModel + }; + +export type ObjectTypeResponseModel = { + name?: string | null +id: string + }; + +export enum OperatorModel { + EQUALS = 'Equals', + NOT_EQUALS = 'NotEquals', + CONTAINS = 'Contains', + NOT_CONTAINS = 'NotContains', + LESS_THAN = 'LessThan', + LESS_THAN_EQUAL_TO = 'LessThanEqualTo', + GREATER_THAN = 'GreaterThan', + GREATER_THAN_EQUAL_TO = 'GreaterThanEqualTo' +} + +export type OutOfDateStatusResponseModel = { + status: OutOfDateTypeModel + }; + +export enum OutOfDateTypeModel { + OUT_OF_DATE = 'OutOfDate', + CURRENT = 'Current', + UNKNOWN = 'Unknown' +} + +export type PackageConfigurationResponseModel = { + marketplaceUrl: string + }; + +export type PackageDefinitionResponseModel = { + name: string +contentNodeId?: string | null +contentLoadChildNodes: boolean +mediaIds: Array +mediaLoadChildNodes: boolean +documentTypes: Array +mediaTypes: Array +dataTypes: Array +templates: Array +partialViews: Array +stylesheets: Array +scripts: Array +languages: Array +dictionaryItems: Array +id: string +packagePath: string + }; + +export type PackageMigrationStatusResponseModel = { + packageName: string +hasPendingMigrations: boolean + }; + +export type PagedAllowedDocumentTypeModel = { + total: number +items: Array + }; + +export type PagedAllowedMediaTypeModel = { + total: number +items: Array + }; + +export type PagedAuditLogResponseModel = { + total: number +items: Array + }; + +export type PagedAuditLogWithUsernameResponseModel = { + total: number +items: Array + }; + +export type PagedCultureReponseModel = { + total: number +items: Array + }; + +export type PagedDataTypeItemResponseModel = { + total: number +items: Array + }; + +export type PagedDataTypeTreeItemResponseModel = { + total: number +items: Array + }; + +export type PagedDictionaryOverviewResponseModel = { + total: number +items: Array + }; + +export type PagedDocumentBlueprintTreeItemResponseModel = { + total: number +items: Array + }; + +export type PagedDocumentCollectionResponseModel = { + total: number +items: Array + }; + +export type PagedDocumentRecycleBinItemResponseModel = { + total: number +items: Array + }; + +export type PagedDocumentTreeItemResponseModel = { + total: number +items: Array + }; + +export type PagedDocumentTypeTreeItemResponseModel = { + total: number +items: Array + }; + +export type PagedDocumentVersionItemResponseModel = { + total: number +items: Array + }; + +export type PagedFileSystemTreeItemPresentationModel = { + total: number +items: Array + }; + +export type PagedHealthCheckGroupResponseModel = { + total: number +items: Array + }; + +export type PagedHelpPageResponseModel = { + total: number +items: Array + }; + +export type PagedIReferenceResponseModel = { + total: number +items: Array + }; + +export type PagedIndexResponseModel = { + total: number +items: Array + }; + +export type PagedLanguageResponseModel = { + total: number +items: Array + }; + +export type PagedLogMessageResponseModel = { + total: number +items: Array + }; + +export type PagedLogTemplateResponseModel = { + total: number +items: Array + }; + +export type PagedLoggerResponseModel = { + total: number +items: Array + }; + +export type PagedMediaCollectionResponseModel = { + total: number +items: Array + }; + +export type PagedMediaRecycleBinItemResponseModel = { + total: number +items: Array + }; + +export type PagedMediaTreeItemResponseModel = { + total: number +items: Array + }; + +export type PagedMediaTypeTreeItemResponseModel = { + total: number +items: Array + }; + +export type PagedMemberGroupResponseModel = { + total: number +items: Array + }; + +export type PagedMemberResponseModel = { + total: number +items: Array + }; + +export type PagedModelDataTypeItemResponseModel = { + items: Array +total: number + }; + +export type PagedModelDocumentItemResponseModel = { + items: Array +total: number + }; + +export type PagedModelDocumentTypeItemResponseModel = { + items: Array +total: number + }; + +export type PagedModelMediaItemResponseModel = { + items: Array +total: number + }; + +export type PagedModelMediaTypeItemResponseModel = { + items: Array +total: number + }; + +export type PagedModelMemberItemResponseModel = { + items: Array +total: number + }; + +export type PagedModelMemberTypeItemResponseModel = { + items: Array +total: number + }; + +export type PagedModelTemplateItemResponseModel = { + items: Array +total: number + }; + +export type PagedNamedEntityTreeItemResponseModel = { + total: number +items: Array + }; + +export type PagedObjectTypeResponseModel = { + total: number +items: Array + }; + +export type PagedPackageDefinitionResponseModel = { + total: number +items: Array + }; + +export type PagedPackageMigrationStatusResponseModel = { + total: number +items: Array + }; + +export type PagedPartialViewSnippetItemResponseModel = { + total: number +items: Array + }; + +export type PagedProblemDetailsModel = { + total: number +items: Array + }; + +export type PagedRedirectUrlResponseModel = { + total: number +items: Array + }; + +export type PagedReferenceByIdModel = { + total: number +items: Array + }; + +export type PagedRelationResponseModel = { + total: number +items: Array + }; + +export type PagedRelationTypeResponseModel = { + total: number +items: Array + }; + +export type PagedSavedLogSearchResponseModel = { + total: number +items: Array + }; + +export type PagedSearchResultResponseModel = { + total: number +items: Array + }; + +export type PagedSearcherResponseModel = { + total: number +items: Array + }; + +export type PagedTagResponseModel = { + total: number +items: Array + }; + +export type PagedTelemetryResponseModel = { + total: number +items: Array + }; + +export type PagedUserDataResponseModel = { + total: number +items: Array + }; + +export type PagedUserGroupResponseModel = { + total: number +items: Array + }; + +export type PagedUserResponseModel = { + total: number +items: Array + }; + +export type PagedWebhookResponseModel = { + total: number +items: Array + }; + +export type PartialViewFolderResponseModel = { + path: string +name: string +parent?: FileSystemFolderModel | null + }; + +export type PartialViewItemResponseModel = { + path: string +name: string +parent?: FileSystemFolderModel | null +isFolder: boolean + }; + +export type PartialViewResponseModel = { + path: string +name: string +parent?: FileSystemFolderModel | null +content: string + }; + +export type PartialViewSnippetItemResponseModel = { + id: string +name: string + }; + +export type PartialViewSnippetResponseModel = { + id: string +name: string +content: string + }; + +export type PasswordConfigurationResponseModel = { + minimumPasswordLength: number +requireNonLetterOrDigit: boolean +requireDigit: boolean +requireLowercase: boolean +requireUppercase: boolean + }; + +export type ProblemDetails = { + type?: string | null +title?: string | null +status?: number | null +detail?: string | null +instance?: string | null +[key: string]: unknown | undefined + }; + +export type ProblemDetailsBuilderModel = Record; + +export type ProfilingStatusRequestModel = { + enabled: boolean + }; + +export type ProfilingStatusResponseModel = { + enabled: boolean + }; + +export type PropertyTypeAppearanceModel = { + labelOnTop: boolean + }; + +export type PropertyTypeValidationModel = { + mandatory: boolean +mandatoryMessage?: string | null +regEx?: string | null +regExMessage?: string | null + }; + +export type PublicAccessRequestModel = { + loginDocument: ReferenceByIdModel +errorDocument: ReferenceByIdModel +memberUserNames: Array +memberGroupNames: Array + }; + +export type PublishDocumentRequestModel = { + publishSchedules: Array + }; + +export type PublishDocumentWithDescendantsRequestModel = { + includeUnpublishedDescendants: boolean +cultures: Array + }; + +export enum RedirectStatusModel { + ENABLED = 'Enabled', + DISABLED = 'Disabled' +} + +export type RedirectUrlResponseModel = { + id: string +originalUrl: string +destinationUrl: string +created: string +document: ReferenceByIdModel +culture?: string | null + }; + +export type RedirectUrlStatusResponseModel = { + status: RedirectStatusModel +userIsAdmin: boolean + }; + +export type ReferenceByIdModel = { + id: string + }; + +export type RelationReferenceModel = { + id: string +name?: string | null + }; + +export type RelationResponseModel = { + id: string +relationType: ReferenceByIdModel +parent: RelationReferenceModel +child: RelationReferenceModel +createDate: string +comment?: string | null + }; + +export type RelationTypeItemResponseModel = { + id: string +name: string +isDeletable: boolean + }; + +export type RelationTypeResponseModel = { + name: string +isBidirectional: boolean +isDependency: boolean +id: string +alias?: string | null +parentObject?: ObjectTypeResponseModel | null +childObject?: ObjectTypeResponseModel | null + }; + +export type RenamePartialViewRequestModel = { + name: string + }; + +export type RenameScriptRequestModel = { + name: string + }; + +export type RenameStylesheetRequestModel = { + name: string + }; + +export type ResendInviteUserRequestModel = { + user: ReferenceByIdModel +message?: string | null + }; + +export type ResetPasswordRequestModel = { + email: string + }; + +export type ResetPasswordTokenRequestModel = { + user: ReferenceByIdModel +resetCode: string +password: string + }; + +export type ResetPasswordUserResponseModel = { + resetPassword?: string | null + }; + +export enum RuntimeLevelModel { + UNKNOWN = 'Unknown', + BOOT = 'Boot', + INSTALL = 'Install', + UPGRADE = 'Upgrade', + RUN = 'Run', + BOOT_FAILED = 'BootFailed' +} + +export enum RuntimeModeModel { + BACKOFFICE_DEVELOPMENT = 'BackofficeDevelopment', + DEVELOPMENT = 'Development', + PRODUCTION = 'Production' +} + +export type SavedLogSearchRequestModel = { + name: string +query: string + }; + +export type SavedLogSearchResponseModel = { + name: string +query: string + }; + +export type ScheduleRequestModel = { + publishTime?: string | null +unpublishTime?: string | null + }; + +export type ScriptFolderResponseModel = { + path: string +name: string +parent?: FileSystemFolderModel | null + }; + +export type ScriptItemResponseModel = { + path: string +name: string +parent?: FileSystemFolderModel | null +isFolder: boolean + }; + +export type ScriptResponseModel = { + path: string +name: string +parent?: FileSystemFolderModel | null +content: string + }; + +export type SearchResultResponseModel = { + id: string +score: number +readonly fieldCount: number +fields: Array + }; + +export type SearcherResponseModel = { + name: string + }; + +export type SecurityConfigurationResponseModel = { + passwordConfiguration: PasswordConfigurationResponseModel + }; + +export type ServerConfigurationItemResponseModel = { + name: string +data: string + }; + +export type ServerConfigurationResponseModel = { + allowPasswordReset: boolean + }; + +export type ServerInformationResponseModel = { + version: string +assemblyVersion: string +baseUtcOffset: string +runtimeMode: RuntimeModeModel + }; + +export type ServerStatusResponseModel = { + serverStatus: RuntimeLevelModel + }; + +export type ServerTroubleshootingResponseModel = { + items: Array + }; + +export type SetAvatarRequestModel = { + file: ReferenceByIdModel + }; + +export type SortingRequestModel = { + parent?: ReferenceByIdModel | null +sorting: Array + }; + +export type StaticFileItemResponseModel = { + path: string +name: string +parent?: FileSystemFolderModel | null +isFolder: boolean + }; + +export enum StatusResultTypeModel { + SUCCESS = 'Success', + WARNING = 'Warning', + ERROR = 'Error', + INFO = 'Info' +} + +export type StylesheetFolderResponseModel = { + path: string +name: string +parent?: FileSystemFolderModel | null + }; + +export type StylesheetItemResponseModel = { + path: string +name: string +parent?: FileSystemFolderModel | null +isFolder: boolean + }; + +export type StylesheetResponseModel = { + path: string +name: string +parent?: FileSystemFolderModel | null +content: string + }; + +export type TagResponseModel = { + id: string +text?: string | null +group?: string | null +nodeCount: number + }; + +export enum TelemetryLevelModel { + MINIMAL = 'Minimal', + BASIC = 'Basic', + DETAILED = 'Detailed' +} + +export type TelemetryRequestModel = { + telemetryLevel: TelemetryLevelModel + }; + +export type TelemetryResponseModel = { + telemetryLevel: TelemetryLevelModel + }; + +export type TemplateConfigurationResponseModel = { + disabled: boolean + }; + +export type TemplateItemResponseModel = { + id: string +name: string +alias: string + }; + +export type TemplateQueryExecuteFilterPresentationModel = { + propertyAlias: string +constraintValue: string +operator: OperatorModel + }; + +export type TemplateQueryExecuteModel = { + rootDocument?: ReferenceByIdModel | null +documentTypeAlias?: string | null +filters?: Array | null +sort?: TemplateQueryExecuteSortModel | null +take: number + }; + +export type TemplateQueryExecuteSortModel = { + propertyAlias: string +direction?: string | null + }; + +export type TemplateQueryOperatorModel = { + operator: OperatorModel +applicableTypes: Array + }; + +export type TemplateQueryPropertyPresentationModel = { + alias: string +type: TemplateQueryPropertyTypeModel + }; + +export enum TemplateQueryPropertyTypeModel { + STRING = 'String', + DATE_TIME = 'DateTime', + INTEGER = 'Integer' +} + +export type TemplateQueryResultItemPresentationModel = { + icon: string +name: string + }; + +export type TemplateQueryResultResponseModel = { + queryExpression: string +sampleResults: Array +resultCount: number +executionTime: number + }; + +export type TemplateQuerySettingsResponseModel = { + documentTypeAliases: Array +properties: Array +operators: Array + }; + +export type TemplateResponseModel = { + name: string +alias: string +content?: string | null +id: string +masterTemplate?: ReferenceByIdModel | null + }; + +export type TemporaryFileConfigurationResponseModel = { + imageFileTypes: Array +disallowedUploadedFilesExtensions: Array +allowedUploadedFileExtensions: Array +maxFileSize?: number | null + }; + +export type TemporaryFileResponseModel = { + id: string +availableUntil?: string | null +fileName: string + }; + +export type TrackedReferenceDocumentTypeModel = { + icon?: string | null +alias?: string | null +name?: string | null + }; + +export type TrackedReferenceMediaTypeModel = { + icon?: string | null +alias?: string | null +name?: string | null + }; + +export type UnknownTypePermissionPresentationModel = { + $type: string +verbs: Array +context: string + }; + +export type UnlockUsersRequestModel = { + userIds: Array + }; + +export type UnpublishDocumentRequestModel = { + cultures?: Array | null + }; + +export type UpdateDataTypeRequestModel = { + name: string +editorAlias: string +editorUiAlias?: string | null +values: Array + }; + +export type UpdateDictionaryItemRequestModel = { + name: string +translations: Array + }; + +export type UpdateDocumentBlueprintRequestModel = { + values: Array +variants: Array + }; + +export type UpdateDocumentNotificationsRequestModel = { + subscribedActionIds: Array + }; + +export type UpdateDocumentRequestModel = { + values: Array +variants: Array +template?: ReferenceByIdModel | null + }; + +export type UpdateDocumentTypePropertyTypeContainerRequestModel = { + id: string +parent?: ReferenceByIdModel | null +name?: string | null +type: string +sortOrder: number + }; + +export type UpdateDocumentTypePropertyTypeRequestModel = { + id: string +container?: ReferenceByIdModel | null +sortOrder: number +alias: string +name: string +description?: string | null +dataType: ReferenceByIdModel +variesByCulture: boolean +variesBySegment: boolean +validation: PropertyTypeValidationModel +appearance: PropertyTypeAppearanceModel + }; + +export type UpdateDocumentTypeRequestModel = { + alias: string +name: string +description?: string | null +icon: string +allowedAsRoot: boolean +variesByCulture: boolean +variesBySegment: boolean +collection?: ReferenceByIdModel | null +isElement: boolean +properties: Array +containers: Array +allowedTemplates: Array +defaultTemplate?: ReferenceByIdModel | null +cleanup: DocumentTypeCleanupModel +allowedDocumentTypes: Array +compositions: Array + }; + +export type UpdateDomainsRequestModel = { + defaultIsoCode?: string | null +domains: Array + }; + +export type UpdateFolderResponseModel = { + name: string + }; + +export type UpdateLanguageRequestModel = { + name: string +isDefault: boolean +isMandatory: boolean +fallbackIsoCode?: string | null + }; + +export type UpdateMediaRequestModel = { + values: Array +variants: Array + }; + +export type UpdateMediaTypePropertyTypeContainerRequestModel = { + id: string +parent?: ReferenceByIdModel | null +name?: string | null +type: string +sortOrder: number + }; + +export type UpdateMediaTypePropertyTypeRequestModel = { + id: string +container?: ReferenceByIdModel | null +sortOrder: number +alias: string +name: string +description?: string | null +dataType: ReferenceByIdModel +variesByCulture: boolean +variesBySegment: boolean +validation: PropertyTypeValidationModel +appearance: PropertyTypeAppearanceModel + }; + +export type UpdateMediaTypeRequestModel = { + alias: string +name: string +description?: string | null +icon: string +allowedAsRoot: boolean +variesByCulture: boolean +variesBySegment: boolean +collection?: ReferenceByIdModel | null +isElement: boolean +properties: Array +containers: Array +allowedMediaTypes: Array +compositions: Array + }; + +export type UpdateMemberGroupRequestModel = { + name: string + }; + +export type UpdateMemberRequestModel = { + values: Array +variants: Array +email: string +username: string +oldPassword?: string | null +newPassword?: string | null +groups?: Array | null +isApproved: boolean +isLockedOut: boolean +isTwoFactorEnabled: boolean + }; + +export type UpdateMemberTypePropertyTypeContainerRequestModel = { + id: string +parent?: ReferenceByIdModel | null +name?: string | null +type: string +sortOrder: number + }; + +export type UpdateMemberTypePropertyTypeRequestModel = { + id: string +container?: ReferenceByIdModel | null +sortOrder: number +alias: string +name: string +description?: string | null +dataType: ReferenceByIdModel +variesByCulture: boolean +variesBySegment: boolean +validation: PropertyTypeValidationModel +appearance: PropertyTypeAppearanceModel +isSensitive: boolean +visibility: MemberTypePropertyTypeVisibilityModel + }; + +export type UpdateMemberTypeRequestModel = { + alias: string +name: string +description?: string | null +icon: string +allowedAsRoot: boolean +variesByCulture: boolean +variesBySegment: boolean +collection?: ReferenceByIdModel | null +isElement: boolean +properties: Array +containers: Array +compositions: Array + }; + +export type UpdatePackageRequestModel = { + name: string +contentNodeId?: string | null +contentLoadChildNodes: boolean +mediaIds: Array +mediaLoadChildNodes: boolean +documentTypes: Array +mediaTypes: Array +dataTypes: Array +templates: Array +partialViews: Array +stylesheets: Array +scripts: Array +languages: Array +dictionaryItems: Array +packagePath: string + }; + +export type UpdatePartialViewRequestModel = { + content: string + }; + +export type UpdateScriptRequestModel = { + content: string + }; + +export type UpdateStylesheetRequestModel = { + content: string + }; + +export type UpdateTemplateRequestModel = { + name: string +alias: string +content?: string | null + }; + +export type UpdateUserDataRequestModel = { + group: string +identifier: string +value: string +key: string + }; + +export type UpdateUserGroupRequestModel = { + name: string +icon?: string | null +sections: Array +languages: Array +hasAccessToAllLanguages: boolean +documentStartNode?: ReferenceByIdModel | null +documentRootAccess: boolean +mediaStartNode?: ReferenceByIdModel | null +mediaRootAccess: boolean +fallbackPermissions: Array +permissions: Array + }; + +export type UpdateUserGroupsOnUserRequestModel = { + userIds: Array +userGroupIds: Array + }; + +export type UpdateUserRequestModel = { + email: string +userName: string +name: string +userGroupIds: Array +languageIsoCode: string +documentStartNodeIds: Array +mediaStartNodeIds: Array + }; + +export type UpdateWebhookRequestModel = { + enabled: boolean +url: string +contentTypeKeys: Array +headers: Record +events: Array + }; + +export type UpgradeSettingsResponseModel = { + currentState: string +newState: string +newVersion: string +oldVersion: string +readonly reportUrl: string + }; + +export type UserConfigurationResponseModel = { + canInviteUsers: boolean +passwordConfiguration: PasswordConfigurationResponseModel + }; + +export type UserDataModel = { + group: string +identifier: string +value: string + }; + +export enum UserDataOperationStatusModel { + SUCCESS = 'Success', + NOT_FOUND = 'NotFound', + USER_NOT_FOUND = 'UserNotFound', + ALREADY_EXISTS = 'AlreadyExists' +} + +export type UserDataResponseModel = { + group: string +identifier: string +value: string +key: string + }; + +export type UserGroupItemResponseModel = { + id: string +name: string +icon?: string | null + }; + +export type UserGroupResponseModel = { + name: string +icon?: string | null +sections: Array +languages: Array +hasAccessToAllLanguages: boolean +documentStartNode?: ReferenceByIdModel | null +documentRootAccess: boolean +mediaStartNode?: ReferenceByIdModel | null +mediaRootAccess: boolean +fallbackPermissions: Array +permissions: Array +id: string +isSystemGroup: boolean + }; + +export type UserInstallRequestModel = { + name: string +email: string +password: string +readonly subscribeToNewsletter: boolean + }; + +export type UserItemResponseModel = { + id: string +name: string + }; + +export enum UserOrderModel { + USER_NAME = 'UserName', + LANGUAGE = 'Language', + NAME = 'Name', + EMAIL = 'Email', + ID = 'Id', + CREATE_DATE = 'CreateDate', + UPDATE_DATE = 'UpdateDate', + IS_APPROVED = 'IsApproved', + IS_LOCKED_OUT = 'IsLockedOut', + LAST_LOGIN_DATE = 'LastLoginDate' +} + +export type UserPermissionModel = { + nodeKey: string +permissions: Array + }; + +export type UserPermissionsResponseModel = { + permissions: Array + }; + +export type UserResponseModel = { + email: string +userName: string +name: string +userGroupIds: Array +id: string +languageIsoCode?: string | null +documentStartNodeIds: Array +mediaStartNodeIds: Array +avatarUrls: Array +state: UserStateModel +failedLoginAttempts: number +createDate: string +updateDate: string +lastLoginDate?: string | null +lastLockoutDate?: string | null +lastPasswordChangeDate?: string | null +isAdmin: boolean + }; + +export type UserSettingsPresentationModel = { + minCharLength: number +minNonAlphaNumericLength: number +consentLevels: Array + }; + +export enum UserStateModel { + ACTIVE = 'Active', + DISABLED = 'Disabled', + LOCKED_OUT = 'LockedOut', + INVITED = 'Invited', + INACTIVE = 'Inactive', + ALL = 'All' +} + +export type UserTwoFactorProviderModel = { + providerName: string +isEnabledOnUser: boolean + }; + +export type VariantItemResponseModel = { + name: string +culture?: string | null + }; + +export type VerifyInviteUserRequestModel = { + user: ReferenceByIdModel +token: string + }; + +export type VerifyInviteUserResponseModel = { + passwordConfiguration: PasswordConfigurationResponseModel + }; + +export type VerifyResetPasswordResponseModel = { + passwordConfiguration: PasswordConfigurationResponseModel + }; + +export type VerifyResetPasswordTokenRequestModel = { + user: ReferenceByIdModel +resetCode: string + }; + +export type WebhookEventResponseModel = { + eventName: string +eventType: string +alias: string + }; + +export type WebhookItemResponseModel = { + enabled: boolean +name: string +events: string +url: string +types: string + }; + +export type WebhookResponseModel = { + enabled: boolean +url: string +contentTypeKeys: Array +headers: Record +id: string +events: Array + }; + +export type AuditLogData = { + + payloads: { + GetAuditLog: { + orderDirection?: DirectionModel +sinceDate?: string +skip?: number +take?: number + + }; +GetAuditLogById: { + id: string +orderDirection?: DirectionModel +sinceDate?: string +skip?: number +take?: number + + }; +GetAuditLogTypeByLogType: { + logType: AuditTypeModel +sinceDate?: string +skip?: number +take?: number + + }; + } + + + responses: { + GetAuditLog: PagedAuditLogWithUsernameResponseModel + ,GetAuditLogById: PagedAuditLogResponseModel + ,GetAuditLogTypeByLogType: PagedAuditLogResponseModel + + } + + } + +export type CultureData = { + + payloads: { + GetCulture: { + skip?: number +take?: number + + }; + } + + + responses: { + GetCulture: PagedCultureReponseModel + + } + + } + +export type DataTypeData = { + + payloads: { + PostDataType: { + requestBody?: CreateDataTypeRequestModel + + }; +GetDataTypeById: { + id: string + + }; +DeleteDataTypeById: { + id: string + + }; +PutDataTypeById: { + id: string +requestBody?: UpdateDataTypeRequestModel + + }; +PostDataTypeByIdCopy: { + id: string +requestBody?: CopyDataTypeRequestModel + + }; +GetDataTypeByIdIsUsed: { + id: string + + }; +PutDataTypeByIdMove: { + id: string +requestBody?: MoveDataTypeRequestModel + + }; +GetDataTypeByIdReferences: { + id: string + + }; +PostDataTypeFolder: { + requestBody?: CreateFolderRequestModel + + }; +GetDataTypeFolderById: { + id: string + + }; +DeleteDataTypeFolderById: { + id: string + + }; +PutDataTypeFolderById: { + id: string +requestBody?: UpdateFolderResponseModel + + }; +GetFilterDataType: { + editorAlias?: string +editorUiAlias?: string +name?: string +skip?: number +take?: number + + }; +GetItemDataType: { + id?: Array + + }; +GetItemDataTypeSearch: { + query?: string +skip?: number +take?: number + + }; +GetTreeDataTypeAncestors: { + descendantId?: string + + }; +GetTreeDataTypeChildren: { + foldersOnly?: boolean +parentId?: string +skip?: number +take?: number + + }; +GetTreeDataTypeRoot: { + foldersOnly?: boolean +skip?: number +take?: number + + }; + } + + + responses: { + PostDataType: string + ,GetDataTypeById: DataTypeResponseModel + ,DeleteDataTypeById: string + ,PutDataTypeById: string + ,PostDataTypeByIdCopy: string + ,GetDataTypeByIdIsUsed: boolean + ,PutDataTypeByIdMove: string + ,GetDataTypeByIdReferences: Array + ,GetDataTypeConfiguration: DatatypeConfigurationResponseModel + ,PostDataTypeFolder: string + ,GetDataTypeFolderById: FolderResponseModel + ,DeleteDataTypeFolderById: string + ,PutDataTypeFolderById: string + ,GetFilterDataType: PagedDataTypeItemResponseModel + ,GetItemDataType: Array + ,GetItemDataTypeSearch: PagedModelDataTypeItemResponseModel + ,GetTreeDataTypeAncestors: Array + ,GetTreeDataTypeChildren: PagedDataTypeTreeItemResponseModel + ,GetTreeDataTypeRoot: PagedDataTypeTreeItemResponseModel + + } + + } + +export type DictionaryData = { + + payloads: { + GetDictionary: { + filter?: string +skip?: number +take?: number + + }; +PostDictionary: { + requestBody?: CreateDictionaryItemRequestModel + + }; +GetDictionaryById: { + id: string + + }; +DeleteDictionaryById: { + id: string + + }; +PutDictionaryById: { + id: string +requestBody?: UpdateDictionaryItemRequestModel + + }; +GetDictionaryByIdExport: { + id: string +includeChildren?: boolean + + }; +PutDictionaryByIdMove: { + id: string +requestBody?: MoveDictionaryRequestModel + + }; +PostDictionaryImport: { + requestBody?: ImportDictionaryRequestModel + + }; +GetItemDictionary: { + id?: Array + + }; +GetTreeDictionaryAncestors: { + descendantId?: string + + }; +GetTreeDictionaryChildren: { + parentId?: string +skip?: number +take?: number + + }; +GetTreeDictionaryRoot: { + skip?: number +take?: number + + }; + } + + + responses: { + GetDictionary: PagedDictionaryOverviewResponseModel + ,PostDictionary: string + ,GetDictionaryById: DictionaryItemResponseModel + ,DeleteDictionaryById: string + ,PutDictionaryById: string + ,GetDictionaryByIdExport: Blob | File + ,PutDictionaryByIdMove: string + ,PostDictionaryImport: string + ,GetItemDictionary: Array + ,GetTreeDictionaryAncestors: Array + ,GetTreeDictionaryChildren: PagedNamedEntityTreeItemResponseModel + ,GetTreeDictionaryRoot: PagedNamedEntityTreeItemResponseModel + + } + + } + +export type DocumentBlueprintData = { + + payloads: { + PostDocumentBlueprint: { + requestBody?: CreateDocumentBlueprintRequestModel + + }; +GetDocumentBlueprintById: { + id: string + + }; +DeleteDocumentBlueprintById: { + id: string + + }; +PutDocumentBlueprintById: { + id: string +requestBody?: UpdateDocumentBlueprintRequestModel + + }; +PutDocumentBlueprintByIdMove: { + id: string +requestBody?: MoveDocumentBlueprintRequestModel + + }; +PostDocumentBlueprintFolder: { + requestBody?: CreateFolderRequestModel + + }; +GetDocumentBlueprintFolderById: { + id: string + + }; +DeleteDocumentBlueprintFolderById: { + id: string + + }; +PutDocumentBlueprintFolderById: { + id: string +requestBody?: UpdateFolderResponseModel + + }; +PostDocumentBlueprintFromDocument: { + requestBody?: CreateDocumentBlueprintFromDocumentRequestModel + + }; +GetItemDocumentBlueprint: { + id?: Array + + }; +GetTreeDocumentBlueprintChildren: { + foldersOnly?: boolean +parentId?: string +skip?: number +take?: number + + }; +GetTreeDocumentBlueprintRoot: { + foldersOnly?: boolean +skip?: number +take?: number + + }; + } + + + responses: { + PostDocumentBlueprint: string + ,GetDocumentBlueprintById: DocumentBlueprintResponseModel + ,DeleteDocumentBlueprintById: string + ,PutDocumentBlueprintById: string + ,PutDocumentBlueprintByIdMove: string + ,PostDocumentBlueprintFolder: string + ,GetDocumentBlueprintFolderById: FolderResponseModel + ,DeleteDocumentBlueprintFolderById: string + ,PutDocumentBlueprintFolderById: string + ,PostDocumentBlueprintFromDocument: string + ,GetItemDocumentBlueprint: Array + ,GetTreeDocumentBlueprintChildren: PagedDocumentBlueprintTreeItemResponseModel + ,GetTreeDocumentBlueprintRoot: PagedDocumentBlueprintTreeItemResponseModel + + } + + } + +export type DocumentTypeData = { + + payloads: { + PostDocumentType: { + requestBody?: CreateDocumentTypeRequestModel + + }; +GetDocumentTypeById: { + id: string + + }; +DeleteDocumentTypeById: { + id: string + + }; +PutDocumentTypeById: { + id: string +requestBody?: UpdateDocumentTypeRequestModel + + }; +GetDocumentTypeByIdAllowedChildren: { + id: string +skip?: number +take?: number + + }; +GetDocumentTypeByIdCompositionReferences: { + id: string + + }; +PostDocumentTypeByIdCopy: { + id: string +requestBody?: CopyDocumentTypeRequestModel + + }; +PutDocumentTypeByIdMove: { + id: string +requestBody?: MoveDocumentTypeRequestModel + + }; +GetDocumentTypeAllowedAtRoot: { + skip?: number +take?: number + + }; +PostDocumentTypeAvailableCompositions: { + requestBody?: DocumentTypeCompositionRequestModel + + }; +PostDocumentTypeFolder: { + requestBody?: CreateFolderRequestModel + + }; +GetDocumentTypeFolderById: { + id: string + + }; +DeleteDocumentTypeFolderById: { + id: string + + }; +PutDocumentTypeFolderById: { + id: string +requestBody?: UpdateFolderResponseModel + + }; +GetItemDocumentType: { + id?: Array + + }; +GetItemDocumentTypeSearch: { + query?: string +skip?: number +take?: number + + }; +GetTreeDocumentTypeAncestors: { + descendantId?: string + + }; +GetTreeDocumentTypeChildren: { + foldersOnly?: boolean +parentId?: string +skip?: number +take?: number + + }; +GetTreeDocumentTypeRoot: { + foldersOnly?: boolean +skip?: number +take?: number + + }; + } + + + responses: { + PostDocumentType: string + ,GetDocumentTypeById: DocumentTypeResponseModel + ,DeleteDocumentTypeById: string + ,PutDocumentTypeById: string + ,GetDocumentTypeByIdAllowedChildren: PagedAllowedDocumentTypeModel + ,GetDocumentTypeByIdCompositionReferences: Array + ,PostDocumentTypeByIdCopy: string + ,PutDocumentTypeByIdMove: string + ,GetDocumentTypeAllowedAtRoot: PagedAllowedDocumentTypeModel + ,PostDocumentTypeAvailableCompositions: Array + ,GetDocumentTypeConfiguration: DocumentTypeConfigurationResponseModel + ,PostDocumentTypeFolder: string + ,GetDocumentTypeFolderById: FolderResponseModel + ,DeleteDocumentTypeFolderById: string + ,PutDocumentTypeFolderById: string + ,GetItemDocumentType: Array + ,GetItemDocumentTypeSearch: PagedModelDocumentTypeItemResponseModel + ,GetTreeDocumentTypeAncestors: Array + ,GetTreeDocumentTypeChildren: PagedDocumentTypeTreeItemResponseModel + ,GetTreeDocumentTypeRoot: PagedDocumentTypeTreeItemResponseModel + + } + + } + +export type DocumentVersionData = { + + payloads: { + GetDocumentVersion: { + culture?: string +documentId: string +skip?: number +take?: number + + }; +GetDocumentVersionById: { + id: string + + }; +PutDocumentVersionByIdPreventCleanup: { + id: string +preventCleanup?: boolean + + }; +PostDocumentVersionByIdRollback: { + culture?: string +id: string + + }; + } + + + responses: { + GetDocumentVersion: PagedDocumentVersionItemResponseModel + ,GetDocumentVersionById: DocumentVersionResponseModel + ,PutDocumentVersionByIdPreventCleanup: string + ,PostDocumentVersionByIdRollback: string + + } + + } + +export type DocumentData = { + + payloads: { + GetCollectionDocumentById: { + dataTypeId?: string +filter?: string +id: string +orderBy?: string +orderCulture?: string +orderDirection?: DirectionModel +skip?: number +take?: number + + }; +PostDocument: { + requestBody?: CreateDocumentRequestModel + + }; +GetDocumentById: { + id: string + + }; +DeleteDocumentById: { + id: string + + }; +PutDocumentById: { + id: string +requestBody?: UpdateDocumentRequestModel + + }; +PostDocumentByIdCopy: { + id: string +requestBody?: CopyDocumentRequestModel + + }; +GetDocumentByIdDomains: { + id: string + + }; +PutDocumentByIdDomains: { + id: string +requestBody?: UpdateDomainsRequestModel + + }; +PutDocumentByIdMove: { + id: string +requestBody?: MoveDocumentRequestModel + + }; +PutDocumentByIdMoveToRecycleBin: { + id: string + + }; +GetDocumentByIdNotifications: { + id: string + + }; +PutDocumentByIdNotifications: { + id: string +requestBody?: UpdateDocumentNotificationsRequestModel + + }; +PostDocumentByIdPublicAccess: { + id: string +requestBody?: PublicAccessRequestModel + + }; +DeleteDocumentByIdPublicAccess: { + id: string + + }; +GetDocumentByIdPublicAccess: { + id: string + + }; +PutDocumentByIdPublicAccess: { + id: string +requestBody?: PublicAccessRequestModel + + }; +PutDocumentByIdPublish: { + id: string +requestBody?: PublishDocumentRequestModel + + }; +PutDocumentByIdPublishWithDescendants: { + id: string +requestBody?: PublishDocumentWithDescendantsRequestModel + + }; +GetDocumentByIdReferencedBy: { + id: string +skip?: number +take?: number + + }; +GetDocumentByIdReferencedDescendants: { + id: string +skip?: number +take?: number + + }; +PutDocumentByIdUnpublish: { + id: string +requestBody?: UnpublishDocumentRequestModel + + }; +PutDocumentByIdValidate: { + id: string +requestBody?: UpdateDocumentRequestModel + + }; +GetDocumentAreReferenced: { + id?: Array +skip?: number +take?: number + + }; +PutDocumentSort: { + requestBody?: SortingRequestModel + + }; +PostDocumentValidate: { + requestBody?: CreateDocumentRequestModel + + }; +GetItemDocument: { + id?: Array + + }; +GetItemDocumentSearch: { + query?: string +skip?: number +take?: number + + }; +DeleteRecycleBinDocumentById: { + id: string + + }; +GetRecycleBinDocumentByIdOriginalParent: { + id: string + + }; +PutRecycleBinDocumentByIdRestore: { + id: string +requestBody?: MoveMediaRequestModel + + }; +GetRecycleBinDocumentChildren: { + parentId?: string +skip?: number +take?: number + + }; +GetRecycleBinDocumentRoot: { + skip?: number +take?: number + + }; +GetTreeDocumentAncestors: { + descendantId?: string + + }; +GetTreeDocumentChildren: { + dataTypeId?: string +parentId?: string +skip?: number +take?: number + + }; +GetTreeDocumentRoot: { + dataTypeId?: string +skip?: number +take?: number + + }; + } + + + responses: { + GetCollectionDocumentById: PagedDocumentCollectionResponseModel + ,PostDocument: string + ,GetDocumentById: DocumentResponseModel + ,DeleteDocumentById: string + ,PutDocumentById: string + ,PostDocumentByIdCopy: string + ,GetDocumentByIdDomains: DomainsResponseModel + ,PutDocumentByIdDomains: string + ,PutDocumentByIdMove: string + ,PutDocumentByIdMoveToRecycleBin: string + ,GetDocumentByIdNotifications: Array + ,PutDocumentByIdNotifications: string + ,PostDocumentByIdPublicAccess: string + ,DeleteDocumentByIdPublicAccess: string + ,GetDocumentByIdPublicAccess: void + ,PutDocumentByIdPublicAccess: string + ,PutDocumentByIdPublish: string + ,PutDocumentByIdPublishWithDescendants: string + ,GetDocumentByIdReferencedBy: PagedIReferenceResponseModel + ,GetDocumentByIdReferencedDescendants: PagedReferenceByIdModel + ,PutDocumentByIdUnpublish: string + ,PutDocumentByIdValidate: string + ,GetDocumentAreReferenced: PagedReferenceByIdModel + ,GetDocumentConfiguration: DocumentConfigurationResponseModel + ,PutDocumentSort: string + ,PostDocumentValidate: string + ,GetItemDocument: Array + ,GetItemDocumentSearch: PagedModelDocumentItemResponseModel + ,DeleteRecycleBinDocument: string + ,DeleteRecycleBinDocumentById: string + ,GetRecycleBinDocumentByIdOriginalParent: ReferenceByIdModel + ,PutRecycleBinDocumentByIdRestore: string + ,GetRecycleBinDocumentChildren: PagedDocumentRecycleBinItemResponseModel + ,GetRecycleBinDocumentRoot: PagedDocumentRecycleBinItemResponseModel + ,GetTreeDocumentAncestors: Array + ,GetTreeDocumentChildren: PagedDocumentTreeItemResponseModel + ,GetTreeDocumentRoot: PagedDocumentTreeItemResponseModel + + } + + } + +export type DynamicRootData = { + + payloads: { + PostDynamicRootQuery: { + requestBody?: DynamicRootRequestModel + + }; + } + + + responses: { + PostDynamicRootQuery: DynamicRootResponseModel + ,GetDynamicRootSteps: Array + + } + + } + +export type HealthCheckData = { + + payloads: { + GetHealthCheckGroup: { + skip?: number +take?: number + + }; +GetHealthCheckGroupByName: { + name: string + + }; +PostHealthCheckGroupByNameCheck: { + name: string + + }; +PostHealthCheckExecuteAction: { + requestBody?: HealthCheckActionRequestModel + + }; + } + + + responses: { + GetHealthCheckGroup: PagedHealthCheckGroupResponseModel + ,GetHealthCheckGroupByName: HealthCheckGroupPresentationModel + ,PostHealthCheckGroupByNameCheck: HealthCheckGroupWithResultResponseModel + ,PostHealthCheckExecuteAction: HealthCheckResultResponseModel + + } + + } + +export type HelpData = { + + payloads: { + GetHelp: { + baseUrl?: string +section?: string +skip?: number +take?: number +tree?: string + + }; + } + + + responses: { + GetHelp: PagedHelpPageResponseModel + + } + + } + +export type IndexerData = { + + payloads: { + GetIndexer: { + skip?: number +take?: number + + }; +GetIndexerByIndexName: { + indexName: string + + }; +PostIndexerByIndexNameRebuild: { + indexName: string + + }; + } + + + responses: { + GetIndexer: PagedIndexResponseModel + ,GetIndexerByIndexName: IndexResponseModel + ,PostIndexerByIndexNameRebuild: string + + } + + } + +export type InstallData = { + + payloads: { + PostInstallSetup: { + requestBody?: InstallRequestModel + + }; +PostInstallValidateDatabase: { + requestBody?: DatabaseInstallRequestModel + + }; + } + + + responses: { + GetInstallSettings: InstallSettingsResponseModel + ,PostInstallSetup: string + ,PostInstallValidateDatabase: string + + } + + } + +export type LanguageData = { + + payloads: { + GetItemLanguage: { + isoCode?: Array + + }; +GetLanguage: { + skip?: number +take?: number + + }; +PostLanguage: { + requestBody?: CreateLanguageRequestModel + + }; +GetLanguageByIsoCode: { + isoCode: string + + }; +DeleteLanguageByIsoCode: { + isoCode: string + + }; +PutLanguageByIsoCode: { + isoCode: string +requestBody?: UpdateLanguageRequestModel + + }; + } + + + responses: { + GetItemLanguage: Array + ,GetLanguage: PagedLanguageResponseModel + ,PostLanguage: string + ,GetLanguageByIsoCode: LanguageResponseModel + ,DeleteLanguageByIsoCode: string + ,PutLanguageByIsoCode: string + + } + + } + +export type LogViewerData = { + + payloads: { + GetLogViewerLevel: { + skip?: number +take?: number + + }; +GetLogViewerLevelCount: { + endDate?: string +startDate?: string + + }; +GetLogViewerLog: { + endDate?: string +filterExpression?: string +logLevel?: Array +orderDirection?: DirectionModel +skip?: number +startDate?: string +take?: number + + }; +GetLogViewerMessageTemplate: { + endDate?: string +skip?: number +startDate?: string +take?: number + + }; +GetLogViewerSavedSearch: { + skip?: number +take?: number + + }; +PostLogViewerSavedSearch: { + requestBody?: SavedLogSearchRequestModel + + }; +GetLogViewerSavedSearchByName: { + name: string + + }; +DeleteLogViewerSavedSearchByName: { + name: string + + }; +GetLogViewerValidateLogsSize: { + endDate?: string +startDate?: string + + }; + } + + + responses: { + GetLogViewerLevel: PagedLoggerResponseModel + ,GetLogViewerLevelCount: LogLevelCountsReponseModel + ,GetLogViewerLog: PagedLogMessageResponseModel + ,GetLogViewerMessageTemplate: PagedLogTemplateResponseModel + ,GetLogViewerSavedSearch: PagedSavedLogSearchResponseModel + ,PostLogViewerSavedSearch: string + ,GetLogViewerSavedSearchByName: SavedLogSearchResponseModel + ,DeleteLogViewerSavedSearchByName: string + ,GetLogViewerValidateLogsSize: any + + } + + } + +export type ManifestData = { + + + responses: { + GetManifestManifest: Array + ,GetManifestManifestPrivate: Array + ,GetManifestManifestPublic: Array + + } + + } + +export type MediaTypeData = { + + payloads: { + GetItemMediaType: { + id?: Array + + }; +GetItemMediaTypeSearch: { + query?: string +skip?: number +take?: number + + }; +PostMediaType: { + requestBody?: CreateMediaTypeRequestModel + + }; +GetMediaTypeById: { + id: string + + }; +DeleteMediaTypeById: { + id: string + + }; +PutMediaTypeById: { + id: string +requestBody?: UpdateMediaTypeRequestModel + + }; +GetMediaTypeByIdAllowedChildren: { + id: string +skip?: number +take?: number + + }; +GetMediaTypeByIdCompositionReferences: { + id: string + + }; +PostMediaTypeByIdCopy: { + id: string +requestBody?: CopyMediaTypeRequestModel + + }; +PutMediaTypeByIdMove: { + id: string +requestBody?: MoveMediaTypeRequestModel + + }; +GetMediaTypeAllowedAtRoot: { + skip?: number +take?: number + + }; +PostMediaTypeAvailableCompositions: { + requestBody?: MediaTypeCompositionRequestModel + + }; +PostMediaTypeFolder: { + requestBody?: CreateFolderRequestModel + + }; +GetMediaTypeFolderById: { + id: string + + }; +DeleteMediaTypeFolderById: { + id: string + + }; +PutMediaTypeFolderById: { + id: string +requestBody?: UpdateFolderResponseModel + + }; +GetTreeMediaTypeAncestors: { + descendantId?: string + + }; +GetTreeMediaTypeChildren: { + foldersOnly?: boolean +parentId?: string +skip?: number +take?: number + + }; +GetTreeMediaTypeRoot: { + foldersOnly?: boolean +skip?: number +take?: number + + }; + } + + + responses: { + GetItemMediaType: Array + ,GetItemMediaTypeSearch: PagedModelMediaTypeItemResponseModel + ,PostMediaType: string + ,GetMediaTypeById: MediaTypeResponseModel + ,DeleteMediaTypeById: string + ,PutMediaTypeById: string + ,GetMediaTypeByIdAllowedChildren: PagedAllowedMediaTypeModel + ,GetMediaTypeByIdCompositionReferences: Array + ,PostMediaTypeByIdCopy: string + ,PutMediaTypeByIdMove: string + ,GetMediaTypeAllowedAtRoot: PagedAllowedMediaTypeModel + ,PostMediaTypeAvailableCompositions: Array + ,PostMediaTypeFolder: string + ,GetMediaTypeFolderById: FolderResponseModel + ,DeleteMediaTypeFolderById: string + ,PutMediaTypeFolderById: string + ,GetTreeMediaTypeAncestors: Array + ,GetTreeMediaTypeChildren: PagedMediaTypeTreeItemResponseModel + ,GetTreeMediaTypeRoot: PagedMediaTypeTreeItemResponseModel + + } + + } + +export type MediaData = { + + payloads: { + GetCollectionMedia: { + dataTypeId?: string +filter?: string +id?: string +orderBy?: string +orderDirection?: DirectionModel +skip?: number +take?: number + + }; +GetItemMedia: { + id?: Array + + }; +GetItemMediaSearch: { + query?: string +skip?: number +take?: number + + }; +PostMedia: { + requestBody?: CreateMediaRequestModel + + }; +GetMediaById: { + id: string + + }; +DeleteMediaById: { + id: string + + }; +PutMediaById: { + id: string +requestBody?: UpdateMediaRequestModel + + }; +PutMediaByIdMove: { + id: string +requestBody?: MoveMediaRequestModel + + }; +PutMediaByIdMoveToRecycleBin: { + id: string + + }; +GetMediaByIdReferencedBy: { + id: string +skip?: number +take?: number + + }; +GetMediaByIdReferencedDescendants: { + id: string +skip?: number +take?: number + + }; +PutMediaByIdValidate: { + id: string +requestBody?: UpdateMediaRequestModel + + }; +GetMediaAreReferenced: { + id?: Array +skip?: number +take?: number + + }; +PutMediaSort: { + requestBody?: SortingRequestModel + + }; +PostMediaValidate: { + requestBody?: CreateMediaRequestModel + + }; +DeleteRecycleBinMediaById: { + id: string + + }; +GetRecycleBinMediaByIdOriginalParent: { + id: string + + }; +PutRecycleBinMediaByIdRestore: { + id: string +requestBody?: MoveMediaRequestModel + + }; +GetRecycleBinMediaChildren: { + parentId?: string +skip?: number +take?: number + + }; +GetRecycleBinMediaRoot: { + skip?: number +take?: number + + }; +GetTreeMediaAncestors: { + descendantId?: string + + }; +GetTreeMediaChildren: { + dataTypeId?: string +parentId?: string +skip?: number +take?: number + + }; +GetTreeMediaRoot: { + dataTypeId?: string +skip?: number +take?: number + + }; + } + + + responses: { + GetCollectionMedia: PagedMediaCollectionResponseModel + ,GetItemMedia: Array + ,GetItemMediaSearch: PagedModelMediaItemResponseModel + ,PostMedia: string + ,GetMediaById: MediaResponseModel + ,DeleteMediaById: string + ,PutMediaById: string + ,PutMediaByIdMove: string + ,PutMediaByIdMoveToRecycleBin: string + ,GetMediaByIdReferencedBy: PagedIReferenceResponseModel + ,GetMediaByIdReferencedDescendants: PagedReferenceByIdModel + ,PutMediaByIdValidate: string + ,GetMediaAreReferenced: PagedReferenceByIdModel + ,GetMediaConfiguration: MediaConfigurationResponseModel + ,PutMediaSort: string + ,PostMediaValidate: string + ,DeleteRecycleBinMedia: string + ,DeleteRecycleBinMediaById: string + ,GetRecycleBinMediaByIdOriginalParent: ReferenceByIdModel + ,PutRecycleBinMediaByIdRestore: string + ,GetRecycleBinMediaChildren: PagedMediaRecycleBinItemResponseModel + ,GetRecycleBinMediaRoot: PagedMediaRecycleBinItemResponseModel + ,GetTreeMediaAncestors: Array + ,GetTreeMediaChildren: PagedMediaTreeItemResponseModel + ,GetTreeMediaRoot: PagedMediaTreeItemResponseModel + + } + + } + +export type MemberGroupData = { + + payloads: { + GetItemMemberGroup: { + id?: Array + + }; +GetMemberGroup: { + skip?: number +take?: number + + }; +PostMemberGroup: { + requestBody?: CreateMemberGroupRequestModel + + }; +GetMemberGroupById: { + id: string + + }; +DeleteMemberGroupById: { + id: string + + }; +PutMemberGroupById: { + id: string +requestBody?: UpdateMemberGroupRequestModel + + }; +GetTreeMemberGroupRoot: { + skip?: number +take?: number + + }; + } + + + responses: { + GetItemMemberGroup: Array + ,GetMemberGroup: PagedMemberGroupResponseModel + ,PostMemberGroup: MemberGroupResponseModel + ,GetMemberGroupById: MemberGroupResponseModel + ,DeleteMemberGroupById: string + ,PutMemberGroupById: MemberGroupResponseModel + ,GetTreeMemberGroupRoot: PagedNamedEntityTreeItemResponseModel + + } + + } + +export type MemberTypeData = { + + payloads: { + GetItemMemberType: { + id?: Array + + }; +GetItemMemberTypeSearch: { + query?: string +skip?: number +take?: number + + }; +PostMemberType: { + requestBody?: CreateMemberTypeRequestModel + + }; +GetMemberTypeById: { + id: string + + }; +DeleteMemberTypeById: { + id: string + + }; +PutMemberTypeById: { + id: string +requestBody?: UpdateMemberTypeRequestModel + + }; +GetMemberTypeByIdCompositionReferences: { + id: string + + }; +PostMemberTypeByIdCopy: { + id: string + + }; +PostMemberTypeAvailableCompositions: { + requestBody?: MemberTypeCompositionRequestModel + + }; +GetTreeMemberTypeRoot: { + skip?: number +take?: number + + }; + } + + + responses: { + GetItemMemberType: Array + ,GetItemMemberTypeSearch: PagedModelMemberTypeItemResponseModel + ,PostMemberType: string + ,GetMemberTypeById: MemberTypeResponseModel + ,DeleteMemberTypeById: string + ,PutMemberTypeById: string + ,GetMemberTypeByIdCompositionReferences: Array + ,PostMemberTypeByIdCopy: string + ,PostMemberTypeAvailableCompositions: Array + ,GetTreeMemberTypeRoot: PagedNamedEntityTreeItemResponseModel + + } + + } + +export type MemberData = { + + payloads: { + GetFilterMember: { + filter?: string +isApproved?: boolean +isLockedOut?: boolean +memberGroupName?: string +memberTypeId?: string +orderBy?: string +orderDirection?: DirectionModel +skip?: number +take?: number + + }; +GetItemMember: { + id?: Array + + }; +GetItemMemberSearch: { + query?: string +skip?: number +take?: number + + }; +PostMember: { + requestBody?: CreateMemberRequestModel + + }; +GetMemberById: { + id: string + + }; +DeleteMemberById: { + id: string + + }; +PutMemberById: { + id: string +requestBody?: UpdateMemberRequestModel + + }; +PutMemberByIdValidate: { + id: string +requestBody?: UpdateMemberRequestModel + + }; +PostMemberValidate: { + requestBody?: CreateMemberRequestModel + + }; + } + + + responses: { + GetFilterMember: PagedMemberResponseModel + ,GetItemMember: Array + ,GetItemMemberSearch: PagedModelMemberItemResponseModel + ,PostMember: string + ,GetMemberById: MemberResponseModel + ,DeleteMemberById: string + ,PutMemberById: string + ,PutMemberByIdValidate: string + ,GetMemberConfiguration: MemberConfigurationResponseModel + ,PostMemberValidate: string + + } + + } + +export type ModelsBuilderData = { + + + responses: { + PostModelsBuilderBuild: string + ,GetModelsBuilderDashboard: ModelsBuilderResponseModel + ,GetModelsBuilderStatus: OutOfDateStatusResponseModel + + } + + } + +export type ObjectTypesData = { + + payloads: { + GetObjectTypes: { + skip?: number +take?: number + + }; + } + + + responses: { + GetObjectTypes: PagedObjectTypeResponseModel + + } + + } + +export type PackageData = { + + payloads: { + PostPackageByNameRunMigration: { + name: string + + }; +GetPackageCreated: { + skip?: number +take?: number + + }; +PostPackageCreated: { + requestBody?: CreatePackageRequestModel + + }; +GetPackageCreatedById: { + id: string + + }; +DeletePackageCreatedById: { + id: string + + }; +PutPackageCreatedById: { + id: string +requestBody?: UpdatePackageRequestModel + + }; +GetPackageCreatedByIdDownload: { + id: string + + }; +GetPackageMigrationStatus: { + skip?: number +take?: number + + }; + } + + + responses: { + PostPackageByNameRunMigration: string + ,GetPackageConfiguration: PackageConfigurationResponseModel + ,GetPackageCreated: PagedPackageDefinitionResponseModel + ,PostPackageCreated: string + ,GetPackageCreatedById: PackageDefinitionResponseModel + ,DeletePackageCreatedById: string + ,PutPackageCreatedById: string + ,GetPackageCreatedByIdDownload: Blob | File + ,GetPackageMigrationStatus: PagedPackageMigrationStatusResponseModel + + } + + } + +export type PartialViewData = { + + payloads: { + GetItemPartialView: { + path?: Array + + }; +PostPartialView: { + requestBody?: CreatePartialViewRequestModel + + }; +GetPartialViewByPath: { + path: string + + }; +DeletePartialViewByPath: { + path: string + + }; +PutPartialViewByPath: { + path: string +requestBody?: UpdatePartialViewRequestModel + + }; +PutPartialViewByPathRename: { + path: string +requestBody?: RenamePartialViewRequestModel + + }; +PostPartialViewFolder: { + requestBody?: CreatePartialViewFolderRequestModel + + }; +GetPartialViewFolderByPath: { + path: string + + }; +DeletePartialViewFolderByPath: { + path: string + + }; +GetPartialViewSnippet: { + skip?: number +take?: number + + }; +GetPartialViewSnippetById: { + id: string + + }; +GetTreePartialViewAncestors: { + descendantPath?: string + + }; +GetTreePartialViewChildren: { + parentPath?: string +skip?: number +take?: number + + }; +GetTreePartialViewRoot: { + skip?: number +take?: number + + }; + } + + + responses: { + GetItemPartialView: Array + ,PostPartialView: string + ,GetPartialViewByPath: PartialViewResponseModel + ,DeletePartialViewByPath: string + ,PutPartialViewByPath: string + ,PutPartialViewByPathRename: string + ,PostPartialViewFolder: string + ,GetPartialViewFolderByPath: PartialViewFolderResponseModel + ,DeletePartialViewFolderByPath: string + ,GetPartialViewSnippet: PagedPartialViewSnippetItemResponseModel + ,GetPartialViewSnippetById: PartialViewSnippetResponseModel + ,GetTreePartialViewAncestors: Array + ,GetTreePartialViewChildren: PagedFileSystemTreeItemPresentationModel + ,GetTreePartialViewRoot: PagedFileSystemTreeItemPresentationModel + + } + + } + +export type PreviewData = { + + + responses: { + DeletePreview: string + ,PostPreview: string + + } + + } + +export type ProfilingData = { + + payloads: { + PutProfilingStatus: { + requestBody?: ProfilingStatusRequestModel + + }; + } + + + responses: { + GetProfilingStatus: ProfilingStatusResponseModel + ,PutProfilingStatus: string + + } + + } + +export type PropertyTypeData = { + + payloads: { + GetPropertyTypeIsUsed: { + contentTypeId?: string +propertyAlias?: string + + }; + } + + + responses: { + GetPropertyTypeIsUsed: boolean + + } + + } + +export type PublishedCacheData = { + + + responses: { + PostPublishedCacheCollect: string + ,PostPublishedCacheRebuild: string + ,PostPublishedCacheReload: string + ,GetPublishedCacheStatus: string + + } + + } + +export type RedirectManagementData = { + + payloads: { + GetRedirectManagement: { + filter?: string +skip?: number +take?: number + + }; +GetRedirectManagementById: { + id: string +skip?: number +take?: number + + }; +DeleteRedirectManagementById: { + id: string + + }; +PostRedirectManagementStatus: { + status?: RedirectStatusModel + + }; + } + + + responses: { + GetRedirectManagement: PagedRedirectUrlResponseModel + ,GetRedirectManagementById: PagedRedirectUrlResponseModel + ,DeleteRedirectManagementById: string + ,GetRedirectManagementStatus: RedirectUrlStatusResponseModel + ,PostRedirectManagementStatus: string + + } + + } + +export type RelationTypeData = { + + payloads: { + GetItemRelationType: { + id?: Array + + }; +GetRelationType: { + skip?: number +take?: number + + }; +GetRelationTypeById: { + id: string + + }; + } + + + responses: { + GetItemRelationType: Array + ,GetRelationType: PagedRelationTypeResponseModel + ,GetRelationTypeById: RelationTypeResponseModel + + } + + } + +export type RelationData = { + + payloads: { + GetRelationTypeById: { + id: string +skip?: number +take?: number + + }; + } + + + responses: { + GetRelationTypeById: PagedRelationResponseModel + + } + + } + +export type ScriptData = { + + payloads: { + GetItemScript: { + path?: Array + + }; +PostScript: { + requestBody?: CreateScriptRequestModel + + }; +GetScriptByPath: { + path: string + + }; +DeleteScriptByPath: { + path: string + + }; +PutScriptByPath: { + path: string +requestBody?: UpdateScriptRequestModel + + }; +PutScriptByPathRename: { + path: string +requestBody?: RenameScriptRequestModel + + }; +PostScriptFolder: { + requestBody?: CreateScriptFolderRequestModel + + }; +GetScriptFolderByPath: { + path: string + + }; +DeleteScriptFolderByPath: { + path: string + + }; +GetTreeScriptAncestors: { + descendantPath?: string + + }; +GetTreeScriptChildren: { + parentPath?: string +skip?: number +take?: number + + }; +GetTreeScriptRoot: { + skip?: number +take?: number + + }; + } + + + responses: { + GetItemScript: Array + ,PostScript: string + ,GetScriptByPath: ScriptResponseModel + ,DeleteScriptByPath: string + ,PutScriptByPath: string + ,PutScriptByPathRename: string + ,PostScriptFolder: string + ,GetScriptFolderByPath: ScriptFolderResponseModel + ,DeleteScriptFolderByPath: string + ,GetTreeScriptAncestors: Array + ,GetTreeScriptChildren: PagedFileSystemTreeItemPresentationModel + ,GetTreeScriptRoot: PagedFileSystemTreeItemPresentationModel + + } + + } + +export type SearcherData = { + + payloads: { + GetSearcher: { + skip?: number +take?: number + + }; +GetSearcherBySearcherNameQuery: { + searcherName: string +skip?: number +take?: number +term?: string + + }; + } + + + responses: { + GetSearcher: PagedSearcherResponseModel + ,GetSearcherBySearcherNameQuery: PagedSearchResultResponseModel + + } + + } + +export type SecurityData = { + + payloads: { + PostSecurityForgotPassword: { + requestBody?: ResetPasswordRequestModel + + }; +PostSecurityForgotPasswordReset: { + requestBody?: ResetPasswordTokenRequestModel + + }; +PostSecurityForgotPasswordVerify: { + requestBody?: VerifyResetPasswordTokenRequestModel + + }; + } + + + responses: { + GetSecurityConfiguration: SecurityConfigurationResponseModel + ,PostSecurityForgotPassword: string + ,PostSecurityForgotPasswordReset: string + ,PostSecurityForgotPasswordVerify: VerifyResetPasswordResponseModel + + } + + } + +export type ServerData = { + + + responses: { + GetServerConfiguration: ServerConfigurationResponseModel + ,GetServerInformation: ServerInformationResponseModel + ,GetServerStatus: ServerStatusResponseModel + ,GetServerTroubleshooting: ServerTroubleshootingResponseModel + + } + + } + +export type StaticFileData = { + + payloads: { + GetItemStaticFile: { + path?: Array + + }; +GetTreeStaticFileAncestors: { + descendantPath?: string + + }; +GetTreeStaticFileChildren: { + parentPath?: string +skip?: number +take?: number + + }; +GetTreeStaticFileRoot: { + skip?: number +take?: number + + }; + } + + + responses: { + GetItemStaticFile: Array + ,GetTreeStaticFileAncestors: Array + ,GetTreeStaticFileChildren: PagedFileSystemTreeItemPresentationModel + ,GetTreeStaticFileRoot: PagedFileSystemTreeItemPresentationModel + + } + + } + +export type StylesheetData = { + + payloads: { + GetItemStylesheet: { + path?: Array + + }; +PostStylesheet: { + requestBody?: CreateStylesheetRequestModel + + }; +GetStylesheetByPath: { + path: string + + }; +DeleteStylesheetByPath: { + path: string + + }; +PutStylesheetByPath: { + path: string +requestBody?: UpdateStylesheetRequestModel + + }; +PutStylesheetByPathRename: { + path: string +requestBody?: RenameStylesheetRequestModel + + }; +PostStylesheetFolder: { + requestBody?: CreateStylesheetFolderRequestModel + + }; +GetStylesheetFolderByPath: { + path: string + + }; +DeleteStylesheetFolderByPath: { + path: string + + }; +GetTreeStylesheetAncestors: { + descendantPath?: string + + }; +GetTreeStylesheetChildren: { + parentPath?: string +skip?: number +take?: number + + }; +GetTreeStylesheetRoot: { + skip?: number +take?: number + + }; + } + + + responses: { + GetItemStylesheet: Array + ,PostStylesheet: string + ,GetStylesheetByPath: StylesheetResponseModel + ,DeleteStylesheetByPath: string + ,PutStylesheetByPath: string + ,PutStylesheetByPathRename: string + ,PostStylesheetFolder: string + ,GetStylesheetFolderByPath: StylesheetFolderResponseModel + ,DeleteStylesheetFolderByPath: string + ,GetTreeStylesheetAncestors: Array + ,GetTreeStylesheetChildren: PagedFileSystemTreeItemPresentationModel + ,GetTreeStylesheetRoot: PagedFileSystemTreeItemPresentationModel + + } + + } + +export type TagData = { + + payloads: { + GetTag: { + culture?: string +query?: string +skip?: number +tagGroup?: string +take?: number + + }; + } + + + responses: { + GetTag: PagedTagResponseModel + + } + + } + +export type TelemetryData = { + + payloads: { + GetTelemetry: { + skip?: number +take?: number + + }; +PostTelemetryLevel: { + requestBody?: TelemetryRequestModel + + }; + } + + + responses: { + GetTelemetry: PagedTelemetryResponseModel + ,GetTelemetryLevel: TelemetryResponseModel + ,PostTelemetryLevel: string + + } + + } + +export type TemplateData = { + + payloads: { + GetItemTemplate: { + id?: Array + + }; +GetItemTemplateSearch: { + query?: string +skip?: number +take?: number + + }; +PostTemplate: { + requestBody?: CreateTemplateRequestModel + + }; +GetTemplateById: { + id: string + + }; +DeleteTemplateById: { + id: string + + }; +PutTemplateById: { + id: string +requestBody?: UpdateTemplateRequestModel + + }; +PostTemplateQueryExecute: { + requestBody?: TemplateQueryExecuteModel + + }; +GetTreeTemplateAncestors: { + descendantId?: string + + }; +GetTreeTemplateChildren: { + parentId?: string +skip?: number +take?: number + + }; +GetTreeTemplateRoot: { + skip?: number +take?: number + + }; + } + + + responses: { + GetItemTemplate: Array + ,GetItemTemplateSearch: PagedModelTemplateItemResponseModel + ,PostTemplate: string + ,GetTemplateById: TemplateResponseModel + ,DeleteTemplateById: string + ,PutTemplateById: string + ,GetTemplateConfiguration: TemplateConfigurationResponseModel + ,PostTemplateQueryExecute: TemplateQueryResultResponseModel + ,GetTemplateQuerySettings: TemplateQuerySettingsResponseModel + ,GetTreeTemplateAncestors: Array + ,GetTreeTemplateChildren: PagedNamedEntityTreeItemResponseModel + ,GetTreeTemplateRoot: PagedNamedEntityTreeItemResponseModel + + } + + } + +export type TemporaryFileData = { + + payloads: { + PostTemporaryFile: { + formData?: { + Id?: string +File?: Blob | File + } + + }; +GetTemporaryFileById: { + id: string + + }; +DeleteTemporaryFileById: { + id: string + + }; + } + + + responses: { + PostTemporaryFile: string + ,GetTemporaryFileById: TemporaryFileResponseModel + ,DeleteTemporaryFileById: string + ,GetTemporaryFileConfiguration: TemporaryFileConfigurationResponseModel + + } + + } + +export type UpgradeData = { + + + responses: { + PostUpgradeAuthorize: string + ,GetUpgradeSettings: UpgradeSettingsResponseModel + + } + + } + +export type UserDataData = { + + payloads: { + PostUserData: { + requestBody?: CreateUserDataRequestModel + + }; +PutUserData: { + requestBody?: UpdateUserDataRequestModel + + }; +GetUserData: { + groups?: Array +identifiers?: Array +skip?: number +take?: number + + }; +GetUserDataById: { + id: string + + }; + } + + + responses: { + PostUserData: string + ,PutUserData: string + ,GetUserData: PagedUserDataResponseModel + ,GetUserDataById: UserDataModel + + } + + } + +export type UserGroupData = { + + payloads: { + GetItemUserGroup: { + id?: Array + + }; +DeleteUserGroup: { + requestBody?: DeleteUserGroupsRequestModel + + }; +PostUserGroup: { + requestBody?: CreateUserGroupRequestModel + + }; +GetUserGroup: { + skip?: number +take?: number + + }; +GetUserGroupById: { + id: string + + }; +DeleteUserGroupById: { + id: string + + }; +PutUserGroupById: { + id: string +requestBody?: UpdateUserGroupRequestModel + + }; +DeleteUserGroupByIdUsers: { + id: string +requestBody?: Array + + }; +PostUserGroupByIdUsers: { + id: string +requestBody?: Array + + }; + } + + + responses: { + GetItemUserGroup: Array + ,DeleteUserGroup: string + ,PostUserGroup: string + ,GetUserGroup: PagedUserGroupResponseModel + ,GetUserGroupById: UserGroupResponseModel + ,DeleteUserGroupById: string + ,PutUserGroupById: string + ,DeleteUserGroupByIdUsers: string + ,PostUserGroupByIdUsers: string + + } + + } + +export type UserData = { + + payloads: { + GetFilterUser: { + filter?: string +orderBy?: UserOrderModel +orderDirection?: DirectionModel +skip?: number +take?: number +userGroupIds?: Array +userStates?: Array + + }; +GetItemUser: { + id?: Array + + }; +PostUser: { + requestBody?: CreateUserRequestModel + + }; +DeleteUser: { + requestBody?: DeleteUsersRequestModel + + }; +GetUser: { + skip?: number +take?: number + + }; +GetUserById: { + id: string + + }; +DeleteUserById: { + id: string + + }; +PutUserById: { + id: string +requestBody?: UpdateUserRequestModel + + }; +GetUserById2Fa: { + id: string + + }; +DeleteUserById2FaByProviderName: { + id: string +providerName: string + + }; +PostUserByIdChangePassword: { + id: string +requestBody?: ChangePasswordUserRequestModel + + }; +PostUserByIdResetPassword: { + id: string + + }; +DeleteUserAvatarById: { + id: string + + }; +PostUserAvatarById: { + id: string +requestBody?: SetAvatarRequestModel + + }; +DeleteUserCurrent2FaByProviderName: { + code?: string +providerName: string + + }; +PostUserCurrent2FaByProviderName: { + providerName: string +requestBody?: EnableTwoFactorRequestModel + + }; +GetUserCurrent2FaByProviderName: { + providerName: string + + }; +PostUserCurrentAvatar: { + requestBody?: SetAvatarRequestModel + + }; +PostUserCurrentChangePassword: { + requestBody?: ChangePasswordCurrentUserRequestModel + + }; +GetUserCurrentPermissions: { + id?: Array + + }; +GetUserCurrentPermissionsDocument: { + id?: Array + + }; +GetUserCurrentPermissionsMedia: { + id?: Array + + }; +PostUserDisable: { + requestBody?: DisableUserRequestModel + + }; +PostUserEnable: { + requestBody?: EnableUserRequestModel + + }; +PostUserInvite: { + requestBody?: InviteUserRequestModel + + }; +PostUserInviteCreatePassword: { + requestBody?: CreateInitialPasswordUserRequestModel + + }; +PostUserInviteResend: { + requestBody?: ResendInviteUserRequestModel + + }; +PostUserInviteVerify: { + requestBody?: VerifyInviteUserRequestModel + + }; +PostUserSetUserGroups: { + requestBody?: UpdateUserGroupsOnUserRequestModel + + }; +PostUserUnlock: { + requestBody?: UnlockUsersRequestModel + + }; + } + + + responses: { + GetFilterUser: PagedUserResponseModel + ,GetItemUser: Array + ,PostUser: string + ,DeleteUser: string + ,GetUser: PagedUserResponseModel + ,GetUserById: UserResponseModel + ,DeleteUserById: string + ,PutUserById: string + ,GetUserById2Fa: Array + ,DeleteUserById2FaByProviderName: string + ,PostUserByIdChangePassword: string + ,PostUserByIdResetPassword: ResetPasswordUserResponseModel + ,DeleteUserAvatarById: string + ,PostUserAvatarById: string + ,GetUserConfiguration: UserConfigurationResponseModel + ,GetUserCurrent: CurrentUserResponseModel + ,GetUserCurrent2Fa: Array + ,DeleteUserCurrent2FaByProviderName: string + ,PostUserCurrent2FaByProviderName: NoopSetupTwoFactorModel + ,GetUserCurrent2FaByProviderName: NoopSetupTwoFactorModel + ,PostUserCurrentAvatar: string + ,PostUserCurrentChangePassword: string + ,GetUserCurrentConfiguration: CurrenUserConfigurationResponseModel + ,GetUserCurrentLogins: LinkedLoginsRequestModel + ,GetUserCurrentPermissions: UserPermissionsResponseModel + ,GetUserCurrentPermissionsDocument: Array + ,GetUserCurrentPermissionsMedia: UserPermissionsResponseModel + ,PostUserDisable: string + ,PostUserEnable: string + ,PostUserInvite: string + ,PostUserInviteCreatePassword: string + ,PostUserInviteResend: string + ,PostUserInviteVerify: VerifyInviteUserResponseModel + ,PostUserSetUserGroups: string + ,PostUserUnlock: string + + } + + } + +export type WebhookData = { + + payloads: { + GetWebhook: { + skip?: number +take?: number + + }; +PostWebhook: { + requestBody?: CreateWebhookRequestModel + + }; +GetWebhookById: { + id: string + + }; +PutWebhookById: { + id: string +requestBody?: UpdateWebhookRequestModel + + }; +DeleteWebhookById: { + id: string + + }; +GetWebhookItem: { + ids?: Array + + }; + } + + + responses: { + GetWebhook: PagedWebhookResponseModel + ,PostWebhook: string + ,GetWebhookById: WebhookResponseModel + ,PutWebhookById: string + ,DeleteWebhookById: string + ,GetWebhookItem: Array + + } + + } \ No newline at end of file diff --git a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/AllowedDocumentTypeModel.ts b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/AllowedDocumentTypeModel.ts deleted file mode 100644 index 725f59422b..0000000000 --- a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/AllowedDocumentTypeModel.ts +++ /dev/null @@ -1,12 +0,0 @@ -/* generated using openapi-typescript-codegen -- do no edit */ -/* istanbul ignore file */ -/* tslint:disable */ -/* eslint-disable */ - -export type AllowedDocumentTypeModel = { - id: string; - name: string; - description?: string | null; - icon?: string | null; -}; - diff --git a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/AllowedMediaTypeModel.ts b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/AllowedMediaTypeModel.ts deleted file mode 100644 index bd575fa328..0000000000 --- a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/AllowedMediaTypeModel.ts +++ /dev/null @@ -1,12 +0,0 @@ -/* generated using openapi-typescript-codegen -- do no edit */ -/* istanbul ignore file */ -/* tslint:disable */ -/* eslint-disable */ - -export type AllowedMediaTypeModel = { - id: string; - name: string; - description?: string | null; - icon?: string | null; -}; - diff --git a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/AuditLogEntityModel.ts b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/AuditLogEntityModel.ts deleted file mode 100644 index 87e3a30ea8..0000000000 --- a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/AuditLogEntityModel.ts +++ /dev/null @@ -1,10 +0,0 @@ -/* generated using openapi-typescript-codegen -- do no edit */ -/* istanbul ignore file */ -/* tslint:disable */ -/* eslint-disable */ - -export type AuditLogEntityModel = { - id?: string | null; - type?: string | null; -}; - diff --git a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/AuditLogResponseModel.ts b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/AuditLogResponseModel.ts deleted file mode 100644 index 69bb0cda07..0000000000 --- a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/AuditLogResponseModel.ts +++ /dev/null @@ -1,18 +0,0 @@ -/* generated using openapi-typescript-codegen -- do no edit */ -/* istanbul ignore file */ -/* tslint:disable */ -/* eslint-disable */ - -import type { AuditLogEntityModel } from './AuditLogEntityModel'; -import type { AuditTypeModel } from './AuditTypeModel'; -import type { ReferenceByIdModel } from './ReferenceByIdModel'; - -export type AuditLogResponseModel = { - user: ReferenceByIdModel; - entity?: AuditLogEntityModel | null; - timestamp: string; - logType: AuditTypeModel; - comment?: string | null; - parameters?: string | null; -}; - diff --git a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/AuditLogWithUsernameResponseModel.ts b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/AuditLogWithUsernameResponseModel.ts deleted file mode 100644 index 416fd4143b..0000000000 --- a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/AuditLogWithUsernameResponseModel.ts +++ /dev/null @@ -1,20 +0,0 @@ -/* generated using openapi-typescript-codegen -- do no edit */ -/* istanbul ignore file */ -/* tslint:disable */ -/* eslint-disable */ - -import type { AuditLogEntityModel } from './AuditLogEntityModel'; -import type { AuditTypeModel } from './AuditTypeModel'; -import type { ReferenceByIdModel } from './ReferenceByIdModel'; - -export type AuditLogWithUsernameResponseModel = { - user: ReferenceByIdModel; - entity?: AuditLogEntityModel | null; - timestamp: string; - logType: AuditTypeModel; - comment?: string | null; - parameters?: string | null; - userName?: string | null; - userAvatars: Array; -}; - diff --git a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/AuditTypeModel.ts b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/AuditTypeModel.ts deleted file mode 100644 index 32de956501..0000000000 --- a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/AuditTypeModel.ts +++ /dev/null @@ -1,31 +0,0 @@ -/* generated using openapi-typescript-codegen -- do no edit */ -/* istanbul ignore file */ -/* tslint:disable */ -/* eslint-disable */ - -export enum AuditTypeModel { - NEW = 'New', - SAVE = 'Save', - SAVE_VARIANT = 'SaveVariant', - OPEN = 'Open', - DELETE = 'Delete', - PUBLISH = 'Publish', - PUBLISH_VARIANT = 'PublishVariant', - SEND_TO_PUBLISH = 'SendToPublish', - SEND_TO_PUBLISH_VARIANT = 'SendToPublishVariant', - UNPUBLISH = 'Unpublish', - UNPUBLISH_VARIANT = 'UnpublishVariant', - MOVE = 'Move', - COPY = 'Copy', - ASSIGN_DOMAIN = 'AssignDomain', - PUBLIC_ACCESS = 'PublicAccess', - SORT = 'Sort', - NOTIFY = 'Notify', - SYSTEM = 'System', - ROLL_BACK = 'RollBack', - PACKAGER_INSTALL = 'PackagerInstall', - PACKAGER_UNINSTALL = 'PackagerUninstall', - CUSTOM = 'Custom', - CONTENT_VERSION_PREVENT_CLEANUP = 'ContentVersionPreventCleanup', - CONTENT_VERSION_ENABLE_CLEANUP = 'ContentVersionEnableCleanup', -} diff --git a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/AvailableDocumentTypeCompositionResponseModel.ts b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/AvailableDocumentTypeCompositionResponseModel.ts deleted file mode 100644 index f287c721e9..0000000000 --- a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/AvailableDocumentTypeCompositionResponseModel.ts +++ /dev/null @@ -1,13 +0,0 @@ -/* generated using openapi-typescript-codegen -- do no edit */ -/* istanbul ignore file */ -/* tslint:disable */ -/* eslint-disable */ - -export type AvailableDocumentTypeCompositionResponseModel = { - id: string; - name: string; - icon: string; - folderPath: Array; - isCompatible: boolean; -}; - diff --git a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/AvailableMediaTypeCompositionResponseModel.ts b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/AvailableMediaTypeCompositionResponseModel.ts deleted file mode 100644 index a339d81430..0000000000 --- a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/AvailableMediaTypeCompositionResponseModel.ts +++ /dev/null @@ -1,13 +0,0 @@ -/* generated using openapi-typescript-codegen -- do no edit */ -/* istanbul ignore file */ -/* tslint:disable */ -/* eslint-disable */ - -export type AvailableMediaTypeCompositionResponseModel = { - id: string; - name: string; - icon: string; - folderPath: Array; - isCompatible: boolean; -}; - diff --git a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/AvailableMemberTypeCompositionResponseModel.ts b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/AvailableMemberTypeCompositionResponseModel.ts deleted file mode 100644 index 8ef9fdf4af..0000000000 --- a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/AvailableMemberTypeCompositionResponseModel.ts +++ /dev/null @@ -1,13 +0,0 @@ -/* generated using openapi-typescript-codegen -- do no edit */ -/* istanbul ignore file */ -/* tslint:disable */ -/* eslint-disable */ - -export type AvailableMemberTypeCompositionResponseModel = { - id: string; - name: string; - icon: string; - folderPath: Array; - isCompatible: boolean; -}; - diff --git a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/ChangePasswordCurrentUserRequestModel.ts b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/ChangePasswordCurrentUserRequestModel.ts deleted file mode 100644 index dd395b8d39..0000000000 --- a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/ChangePasswordCurrentUserRequestModel.ts +++ /dev/null @@ -1,10 +0,0 @@ -/* generated using openapi-typescript-codegen -- do no edit */ -/* istanbul ignore file */ -/* tslint:disable */ -/* eslint-disable */ - -export type ChangePasswordCurrentUserRequestModel = { - newPassword: string; - oldPassword?: string | null; -}; - diff --git a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/ChangePasswordUserRequestModel.ts b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/ChangePasswordUserRequestModel.ts deleted file mode 100644 index 19eba5db1a..0000000000 --- a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/ChangePasswordUserRequestModel.ts +++ /dev/null @@ -1,9 +0,0 @@ -/* generated using openapi-typescript-codegen -- do no edit */ -/* istanbul ignore file */ -/* tslint:disable */ -/* eslint-disable */ - -export type ChangePasswordUserRequestModel = { - newPassword: string; -}; - diff --git a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/CompositionTypeModel.ts b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/CompositionTypeModel.ts deleted file mode 100644 index 63dfdae1e6..0000000000 --- a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/CompositionTypeModel.ts +++ /dev/null @@ -1,9 +0,0 @@ -/* generated using openapi-typescript-codegen -- do no edit */ -/* istanbul ignore file */ -/* tslint:disable */ -/* eslint-disable */ - -export enum CompositionTypeModel { - COMPOSITION = 'Composition', - INHERITANCE = 'Inheritance', -} diff --git a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/ConsentLevelPresentationModel.ts b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/ConsentLevelPresentationModel.ts deleted file mode 100644 index 1df32f48de..0000000000 --- a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/ConsentLevelPresentationModel.ts +++ /dev/null @@ -1,12 +0,0 @@ -/* generated using openapi-typescript-codegen -- do no edit */ -/* istanbul ignore file */ -/* tslint:disable */ -/* eslint-disable */ - -import type { TelemetryLevelModel } from './TelemetryLevelModel'; - -export type ConsentLevelPresentationModel = { - level: TelemetryLevelModel; - description: string; -}; - diff --git a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/CopyDataTypeRequestModel.ts b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/CopyDataTypeRequestModel.ts deleted file mode 100644 index 44660e907d..0000000000 --- a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/CopyDataTypeRequestModel.ts +++ /dev/null @@ -1,11 +0,0 @@ -/* generated using openapi-typescript-codegen -- do no edit */ -/* istanbul ignore file */ -/* tslint:disable */ -/* eslint-disable */ - -import type { ReferenceByIdModel } from './ReferenceByIdModel'; - -export type CopyDataTypeRequestModel = { - target?: ReferenceByIdModel | null; -}; - diff --git a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/CopyDocumentRequestModel.ts b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/CopyDocumentRequestModel.ts deleted file mode 100644 index 828849c9ac..0000000000 --- a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/CopyDocumentRequestModel.ts +++ /dev/null @@ -1,13 +0,0 @@ -/* generated using openapi-typescript-codegen -- do no edit */ -/* istanbul ignore file */ -/* tslint:disable */ -/* eslint-disable */ - -import type { ReferenceByIdModel } from './ReferenceByIdModel'; - -export type CopyDocumentRequestModel = { - target?: ReferenceByIdModel | null; - relateToOriginal: boolean; - includeDescendants: boolean; -}; - diff --git a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/CopyDocumentTypeRequestModel.ts b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/CopyDocumentTypeRequestModel.ts deleted file mode 100644 index 346920d256..0000000000 --- a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/CopyDocumentTypeRequestModel.ts +++ /dev/null @@ -1,11 +0,0 @@ -/* generated using openapi-typescript-codegen -- do no edit */ -/* istanbul ignore file */ -/* tslint:disable */ -/* eslint-disable */ - -import type { ReferenceByIdModel } from './ReferenceByIdModel'; - -export type CopyDocumentTypeRequestModel = { - target?: ReferenceByIdModel | null; -}; - diff --git a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/CopyMediaTypeRequestModel.ts b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/CopyMediaTypeRequestModel.ts deleted file mode 100644 index 943722db52..0000000000 --- a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/CopyMediaTypeRequestModel.ts +++ /dev/null @@ -1,11 +0,0 @@ -/* generated using openapi-typescript-codegen -- do no edit */ -/* istanbul ignore file */ -/* tslint:disable */ -/* eslint-disable */ - -import type { ReferenceByIdModel } from './ReferenceByIdModel'; - -export type CopyMediaTypeRequestModel = { - target?: ReferenceByIdModel | null; -}; - diff --git a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/CreateDataTypeRequestModel.ts b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/CreateDataTypeRequestModel.ts deleted file mode 100644 index 5c29779e3b..0000000000 --- a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/CreateDataTypeRequestModel.ts +++ /dev/null @@ -1,17 +0,0 @@ -/* generated using openapi-typescript-codegen -- do no edit */ -/* istanbul ignore file */ -/* tslint:disable */ -/* eslint-disable */ - -import type { DataTypePropertyPresentationModel } from './DataTypePropertyPresentationModel'; -import type { ReferenceByIdModel } from './ReferenceByIdModel'; - -export type CreateDataTypeRequestModel = { - name: string; - editorAlias: string; - editorUiAlias?: string | null; - values: Array; - id?: string | null; - parent?: ReferenceByIdModel | null; -}; - diff --git a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/CreateDictionaryItemRequestModel.ts b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/CreateDictionaryItemRequestModel.ts deleted file mode 100644 index deb3fb7478..0000000000 --- a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/CreateDictionaryItemRequestModel.ts +++ /dev/null @@ -1,15 +0,0 @@ -/* generated using openapi-typescript-codegen -- do no edit */ -/* istanbul ignore file */ -/* tslint:disable */ -/* eslint-disable */ - -import type { DictionaryItemTranslationModel } from './DictionaryItemTranslationModel'; -import type { ReferenceByIdModel } from './ReferenceByIdModel'; - -export type CreateDictionaryItemRequestModel = { - name: string; - translations: Array; - id?: string | null; - parent?: ReferenceByIdModel | null; -}; - diff --git a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/CreateDocumentBlueprintFromDocumentRequestModel.ts b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/CreateDocumentBlueprintFromDocumentRequestModel.ts deleted file mode 100644 index f5a3a63852..0000000000 --- a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/CreateDocumentBlueprintFromDocumentRequestModel.ts +++ /dev/null @@ -1,14 +0,0 @@ -/* generated using openapi-typescript-codegen -- do no edit */ -/* istanbul ignore file */ -/* tslint:disable */ -/* eslint-disable */ - -import type { ReferenceByIdModel } from './ReferenceByIdModel'; - -export type CreateDocumentBlueprintFromDocumentRequestModel = { - document: ReferenceByIdModel; - id?: string | null; - name: string; - parent?: ReferenceByIdModel | null; -}; - diff --git a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/CreateDocumentBlueprintRequestModel.ts b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/CreateDocumentBlueprintRequestModel.ts deleted file mode 100644 index cf28d637b5..0000000000 --- a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/CreateDocumentBlueprintRequestModel.ts +++ /dev/null @@ -1,17 +0,0 @@ -/* generated using openapi-typescript-codegen -- do no edit */ -/* istanbul ignore file */ -/* tslint:disable */ -/* eslint-disable */ - -import type { DocumentValueModel } from './DocumentValueModel'; -import type { DocumentVariantRequestModel } from './DocumentVariantRequestModel'; -import type { ReferenceByIdModel } from './ReferenceByIdModel'; - -export type CreateDocumentBlueprintRequestModel = { - values: Array; - variants: Array; - id?: string | null; - parent?: ReferenceByIdModel | null; - documentType: ReferenceByIdModel; -}; - diff --git a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/CreateDocumentRequestModel.ts b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/CreateDocumentRequestModel.ts deleted file mode 100644 index a21cf5989e..0000000000 --- a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/CreateDocumentRequestModel.ts +++ /dev/null @@ -1,18 +0,0 @@ -/* generated using openapi-typescript-codegen -- do no edit */ -/* istanbul ignore file */ -/* tslint:disable */ -/* eslint-disable */ - -import type { DocumentValueModel } from './DocumentValueModel'; -import type { DocumentVariantRequestModel } from './DocumentVariantRequestModel'; -import type { ReferenceByIdModel } from './ReferenceByIdModel'; - -export type CreateDocumentRequestModel = { - values: Array; - variants: Array; - id?: string | null; - parent?: ReferenceByIdModel | null; - documentType: ReferenceByIdModel; - template?: ReferenceByIdModel | null; -}; - diff --git a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/CreateDocumentTypePropertyTypeContainerRequestModel.ts b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/CreateDocumentTypePropertyTypeContainerRequestModel.ts deleted file mode 100644 index 370a87978b..0000000000 --- a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/CreateDocumentTypePropertyTypeContainerRequestModel.ts +++ /dev/null @@ -1,15 +0,0 @@ -/* generated using openapi-typescript-codegen -- do no edit */ -/* istanbul ignore file */ -/* tslint:disable */ -/* eslint-disable */ - -import type { ReferenceByIdModel } from './ReferenceByIdModel'; - -export type CreateDocumentTypePropertyTypeContainerRequestModel = { - id: string; - parent?: ReferenceByIdModel | null; - name?: string | null; - type: string; - sortOrder: number; -}; - diff --git a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/CreateDocumentTypePropertyTypeRequestModel.ts b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/CreateDocumentTypePropertyTypeRequestModel.ts deleted file mode 100644 index 902b96b771..0000000000 --- a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/CreateDocumentTypePropertyTypeRequestModel.ts +++ /dev/null @@ -1,23 +0,0 @@ -/* generated using openapi-typescript-codegen -- do no edit */ -/* istanbul ignore file */ -/* tslint:disable */ -/* eslint-disable */ - -import type { PropertyTypeAppearanceModel } from './PropertyTypeAppearanceModel'; -import type { PropertyTypeValidationModel } from './PropertyTypeValidationModel'; -import type { ReferenceByIdModel } from './ReferenceByIdModel'; - -export type CreateDocumentTypePropertyTypeRequestModel = { - id: string; - container?: ReferenceByIdModel | null; - sortOrder: number; - alias: string; - name: string; - description?: string | null; - dataType: ReferenceByIdModel; - variesByCulture: boolean; - variesBySegment: boolean; - validation: PropertyTypeValidationModel; - appearance: PropertyTypeAppearanceModel; -}; - diff --git a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/CreateDocumentTypeRequestModel.ts b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/CreateDocumentTypeRequestModel.ts deleted file mode 100644 index 11d2577dd8..0000000000 --- a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/CreateDocumentTypeRequestModel.ts +++ /dev/null @@ -1,33 +0,0 @@ -/* generated using openapi-typescript-codegen -- do no edit */ -/* istanbul ignore file */ -/* tslint:disable */ -/* eslint-disable */ - -import type { CreateDocumentTypePropertyTypeContainerRequestModel } from './CreateDocumentTypePropertyTypeContainerRequestModel'; -import type { CreateDocumentTypePropertyTypeRequestModel } from './CreateDocumentTypePropertyTypeRequestModel'; -import type { DocumentTypeCleanupModel } from './DocumentTypeCleanupModel'; -import type { DocumentTypeCompositionModel } from './DocumentTypeCompositionModel'; -import type { DocumentTypeSortModel } from './DocumentTypeSortModel'; -import type { ReferenceByIdModel } from './ReferenceByIdModel'; - -export type CreateDocumentTypeRequestModel = { - alias: string; - name: string; - description?: string | null; - icon: string; - allowedAsRoot: boolean; - variesByCulture: boolean; - variesBySegment: boolean; - collection?: ReferenceByIdModel | null; - isElement: boolean; - properties: Array; - containers: Array; - id?: string | null; - parent?: ReferenceByIdModel | null; - allowedTemplates: Array; - defaultTemplate?: ReferenceByIdModel | null; - cleanup: DocumentTypeCleanupModel; - allowedDocumentTypes: Array; - compositions: Array; -}; - diff --git a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/CreateFolderRequestModel.ts b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/CreateFolderRequestModel.ts deleted file mode 100644 index f87cdddc18..0000000000 --- a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/CreateFolderRequestModel.ts +++ /dev/null @@ -1,13 +0,0 @@ -/* generated using openapi-typescript-codegen -- do no edit */ -/* istanbul ignore file */ -/* tslint:disable */ -/* eslint-disable */ - -import type { ReferenceByIdModel } from './ReferenceByIdModel'; - -export type CreateFolderRequestModel = { - name: string; - id?: string | null; - parent?: ReferenceByIdModel | null; -}; - diff --git a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/CreateInitialPasswordUserRequestModel.ts b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/CreateInitialPasswordUserRequestModel.ts deleted file mode 100644 index e62a6c6cf4..0000000000 --- a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/CreateInitialPasswordUserRequestModel.ts +++ /dev/null @@ -1,13 +0,0 @@ -/* generated using openapi-typescript-codegen -- do no edit */ -/* istanbul ignore file */ -/* tslint:disable */ -/* eslint-disable */ - -import type { ReferenceByIdModel } from './ReferenceByIdModel'; - -export type CreateInitialPasswordUserRequestModel = { - user: ReferenceByIdModel; - token: string; - password: string; -}; - diff --git a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/CreateLanguageRequestModel.ts b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/CreateLanguageRequestModel.ts deleted file mode 100644 index d1489b85d5..0000000000 --- a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/CreateLanguageRequestModel.ts +++ /dev/null @@ -1,13 +0,0 @@ -/* generated using openapi-typescript-codegen -- do no edit */ -/* istanbul ignore file */ -/* tslint:disable */ -/* eslint-disable */ - -export type CreateLanguageRequestModel = { - name: string; - isDefault: boolean; - isMandatory: boolean; - fallbackIsoCode?: string | null; - isoCode: string; -}; - diff --git a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/CreateMediaRequestModel.ts b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/CreateMediaRequestModel.ts deleted file mode 100644 index 1dbf12c631..0000000000 --- a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/CreateMediaRequestModel.ts +++ /dev/null @@ -1,17 +0,0 @@ -/* generated using openapi-typescript-codegen -- do no edit */ -/* istanbul ignore file */ -/* tslint:disable */ -/* eslint-disable */ - -import type { MediaValueModel } from './MediaValueModel'; -import type { MediaVariantRequestModel } from './MediaVariantRequestModel'; -import type { ReferenceByIdModel } from './ReferenceByIdModel'; - -export type CreateMediaRequestModel = { - values: Array; - variants: Array; - id?: string | null; - parent?: ReferenceByIdModel | null; - mediaType: ReferenceByIdModel; -}; - diff --git a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/CreateMediaTypePropertyTypeContainerRequestModel.ts b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/CreateMediaTypePropertyTypeContainerRequestModel.ts deleted file mode 100644 index 5a8ab7d46c..0000000000 --- a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/CreateMediaTypePropertyTypeContainerRequestModel.ts +++ /dev/null @@ -1,15 +0,0 @@ -/* generated using openapi-typescript-codegen -- do no edit */ -/* istanbul ignore file */ -/* tslint:disable */ -/* eslint-disable */ - -import type { ReferenceByIdModel } from './ReferenceByIdModel'; - -export type CreateMediaTypePropertyTypeContainerRequestModel = { - id: string; - parent?: ReferenceByIdModel | null; - name?: string | null; - type: string; - sortOrder: number; -}; - diff --git a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/CreateMediaTypePropertyTypeRequestModel.ts b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/CreateMediaTypePropertyTypeRequestModel.ts deleted file mode 100644 index 17a5b45de7..0000000000 --- a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/CreateMediaTypePropertyTypeRequestModel.ts +++ /dev/null @@ -1,23 +0,0 @@ -/* generated using openapi-typescript-codegen -- do no edit */ -/* istanbul ignore file */ -/* tslint:disable */ -/* eslint-disable */ - -import type { PropertyTypeAppearanceModel } from './PropertyTypeAppearanceModel'; -import type { PropertyTypeValidationModel } from './PropertyTypeValidationModel'; -import type { ReferenceByIdModel } from './ReferenceByIdModel'; - -export type CreateMediaTypePropertyTypeRequestModel = { - id: string; - container?: ReferenceByIdModel | null; - sortOrder: number; - alias: string; - name: string; - description?: string | null; - dataType: ReferenceByIdModel; - variesByCulture: boolean; - variesBySegment: boolean; - validation: PropertyTypeValidationModel; - appearance: PropertyTypeAppearanceModel; -}; - diff --git a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/CreateMediaTypeRequestModel.ts b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/CreateMediaTypeRequestModel.ts deleted file mode 100644 index f7c41dd1bd..0000000000 --- a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/CreateMediaTypeRequestModel.ts +++ /dev/null @@ -1,29 +0,0 @@ -/* generated using openapi-typescript-codegen -- do no edit */ -/* istanbul ignore file */ -/* tslint:disable */ -/* eslint-disable */ - -import type { CreateMediaTypePropertyTypeContainerRequestModel } from './CreateMediaTypePropertyTypeContainerRequestModel'; -import type { CreateMediaTypePropertyTypeRequestModel } from './CreateMediaTypePropertyTypeRequestModel'; -import type { MediaTypeCompositionModel } from './MediaTypeCompositionModel'; -import type { MediaTypeSortModel } from './MediaTypeSortModel'; -import type { ReferenceByIdModel } from './ReferenceByIdModel'; - -export type CreateMediaTypeRequestModel = { - alias: string; - name: string; - description?: string | null; - icon: string; - allowedAsRoot: boolean; - variesByCulture: boolean; - variesBySegment: boolean; - isElement: boolean; - properties: Array; - containers: Array; - id?: string | null; - parent?: ReferenceByIdModel | null; - allowedMediaTypes: Array; - compositions: Array; - collection?: ReferenceByIdModel | null; -}; - diff --git a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/CreateMemberGroupRequestModel.ts b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/CreateMemberGroupRequestModel.ts deleted file mode 100644 index ebfbea378f..0000000000 --- a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/CreateMemberGroupRequestModel.ts +++ /dev/null @@ -1,10 +0,0 @@ -/* generated using openapi-typescript-codegen -- do no edit */ -/* istanbul ignore file */ -/* tslint:disable */ -/* eslint-disable */ - -export type CreateMemberGroupRequestModel = { - name: string; - id?: string | null; -}; - diff --git a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/CreateMemberRequestModel.ts b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/CreateMemberRequestModel.ts deleted file mode 100644 index 65add263b9..0000000000 --- a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/CreateMemberRequestModel.ts +++ /dev/null @@ -1,21 +0,0 @@ -/* generated using openapi-typescript-codegen -- do no edit */ -/* istanbul ignore file */ -/* tslint:disable */ -/* eslint-disable */ - -import type { MemberValueModel } from './MemberValueModel'; -import type { MemberVariantRequestModel } from './MemberVariantRequestModel'; -import type { ReferenceByIdModel } from './ReferenceByIdModel'; - -export type CreateMemberRequestModel = { - values: Array; - variants: Array; - id?: string | null; - email: string; - username: string; - password: string; - memberType: ReferenceByIdModel; - groups?: Array | null; - isApproved: boolean; -}; - diff --git a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/CreateMemberTypePropertyTypeContainerRequestModel.ts b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/CreateMemberTypePropertyTypeContainerRequestModel.ts deleted file mode 100644 index 1815f05075..0000000000 --- a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/CreateMemberTypePropertyTypeContainerRequestModel.ts +++ /dev/null @@ -1,15 +0,0 @@ -/* generated using openapi-typescript-codegen -- do no edit */ -/* istanbul ignore file */ -/* tslint:disable */ -/* eslint-disable */ - -import type { ReferenceByIdModel } from './ReferenceByIdModel'; - -export type CreateMemberTypePropertyTypeContainerRequestModel = { - id: string; - parent?: ReferenceByIdModel | null; - name?: string | null; - type: string; - sortOrder: number; -}; - diff --git a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/CreateMemberTypePropertyTypeRequestModel.ts b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/CreateMemberTypePropertyTypeRequestModel.ts deleted file mode 100644 index f3681e28ca..0000000000 --- a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/CreateMemberTypePropertyTypeRequestModel.ts +++ /dev/null @@ -1,26 +0,0 @@ -/* generated using openapi-typescript-codegen -- do no edit */ -/* istanbul ignore file */ -/* tslint:disable */ -/* eslint-disable */ - -import type { MemberTypePropertyTypeVisibilityModel } from './MemberTypePropertyTypeVisibilityModel'; -import type { PropertyTypeAppearanceModel } from './PropertyTypeAppearanceModel'; -import type { PropertyTypeValidationModel } from './PropertyTypeValidationModel'; -import type { ReferenceByIdModel } from './ReferenceByIdModel'; - -export type CreateMemberTypePropertyTypeRequestModel = { - id: string; - container?: ReferenceByIdModel | null; - sortOrder: number; - alias: string; - name: string; - description?: string | null; - dataType: ReferenceByIdModel; - variesByCulture: boolean; - variesBySegment: boolean; - validation: PropertyTypeValidationModel; - appearance: PropertyTypeAppearanceModel; - isSensitive: boolean; - visibility: MemberTypePropertyTypeVisibilityModel; -}; - diff --git a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/CreateMemberTypeRequestModel.ts b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/CreateMemberTypeRequestModel.ts deleted file mode 100644 index 4904e62cc0..0000000000 --- a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/CreateMemberTypeRequestModel.ts +++ /dev/null @@ -1,26 +0,0 @@ -/* generated using openapi-typescript-codegen -- do no edit */ -/* istanbul ignore file */ -/* tslint:disable */ -/* eslint-disable */ - -import type { CreateMemberTypePropertyTypeContainerRequestModel } from './CreateMemberTypePropertyTypeContainerRequestModel'; -import type { CreateMemberTypePropertyTypeRequestModel } from './CreateMemberTypePropertyTypeRequestModel'; -import type { MemberTypeCompositionModel } from './MemberTypeCompositionModel'; -import type { ReferenceByIdModel } from './ReferenceByIdModel'; - -export type CreateMemberTypeRequestModel = { - alias: string; - name: string; - description?: string | null; - icon: string; - allowedAsRoot: boolean; - variesByCulture: boolean; - variesBySegment: boolean; - collection?: ReferenceByIdModel | null; - isElement: boolean; - properties: Array; - containers: Array; - id?: string | null; - compositions: Array; -}; - diff --git a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/CreatePackageRequestModel.ts b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/CreatePackageRequestModel.ts deleted file mode 100644 index 97496f1f92..0000000000 --- a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/CreatePackageRequestModel.ts +++ /dev/null @@ -1,22 +0,0 @@ -/* generated using openapi-typescript-codegen -- do no edit */ -/* istanbul ignore file */ -/* tslint:disable */ -/* eslint-disable */ - -export type CreatePackageRequestModel = { - name: string; - contentNodeId?: string | null; - contentLoadChildNodes: boolean; - mediaIds: Array; - mediaLoadChildNodes: boolean; - documentTypes: Array; - mediaTypes: Array; - dataTypes: Array; - templates: Array; - partialViews: Array; - stylesheets: Array; - scripts: Array; - languages: Array; - dictionaryItems: Array; -}; - diff --git a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/CreatePartialViewFolderRequestModel.ts b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/CreatePartialViewFolderRequestModel.ts deleted file mode 100644 index 15282452c9..0000000000 --- a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/CreatePartialViewFolderRequestModel.ts +++ /dev/null @@ -1,12 +0,0 @@ -/* generated using openapi-typescript-codegen -- do no edit */ -/* istanbul ignore file */ -/* tslint:disable */ -/* eslint-disable */ - -import type { FileSystemFolderModel } from './FileSystemFolderModel'; - -export type CreatePartialViewFolderRequestModel = { - name: string; - parent?: FileSystemFolderModel | null; -}; - diff --git a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/CreatePartialViewRequestModel.ts b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/CreatePartialViewRequestModel.ts deleted file mode 100644 index 82139f8109..0000000000 --- a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/CreatePartialViewRequestModel.ts +++ /dev/null @@ -1,13 +0,0 @@ -/* generated using openapi-typescript-codegen -- do no edit */ -/* istanbul ignore file */ -/* tslint:disable */ -/* eslint-disable */ - -import type { FileSystemFolderModel } from './FileSystemFolderModel'; - -export type CreatePartialViewRequestModel = { - name: string; - parent?: FileSystemFolderModel | null; - content: string; -}; - diff --git a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/CreateScriptFolderRequestModel.ts b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/CreateScriptFolderRequestModel.ts deleted file mode 100644 index 54832896b3..0000000000 --- a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/CreateScriptFolderRequestModel.ts +++ /dev/null @@ -1,12 +0,0 @@ -/* generated using openapi-typescript-codegen -- do no edit */ -/* istanbul ignore file */ -/* tslint:disable */ -/* eslint-disable */ - -import type { FileSystemFolderModel } from './FileSystemFolderModel'; - -export type CreateScriptFolderRequestModel = { - name: string; - parent?: FileSystemFolderModel | null; -}; - diff --git a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/CreateScriptRequestModel.ts b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/CreateScriptRequestModel.ts deleted file mode 100644 index 5e93399521..0000000000 --- a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/CreateScriptRequestModel.ts +++ /dev/null @@ -1,13 +0,0 @@ -/* generated using openapi-typescript-codegen -- do no edit */ -/* istanbul ignore file */ -/* tslint:disable */ -/* eslint-disable */ - -import type { FileSystemFolderModel } from './FileSystemFolderModel'; - -export type CreateScriptRequestModel = { - name: string; - parent?: FileSystemFolderModel | null; - content: string; -}; - diff --git a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/CreateStylesheetFolderRequestModel.ts b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/CreateStylesheetFolderRequestModel.ts deleted file mode 100644 index e31be7b932..0000000000 --- a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/CreateStylesheetFolderRequestModel.ts +++ /dev/null @@ -1,12 +0,0 @@ -/* generated using openapi-typescript-codegen -- do no edit */ -/* istanbul ignore file */ -/* tslint:disable */ -/* eslint-disable */ - -import type { FileSystemFolderModel } from './FileSystemFolderModel'; - -export type CreateStylesheetFolderRequestModel = { - name: string; - parent?: FileSystemFolderModel | null; -}; - diff --git a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/CreateStylesheetRequestModel.ts b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/CreateStylesheetRequestModel.ts deleted file mode 100644 index 681e36ed05..0000000000 --- a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/CreateStylesheetRequestModel.ts +++ /dev/null @@ -1,13 +0,0 @@ -/* generated using openapi-typescript-codegen -- do no edit */ -/* istanbul ignore file */ -/* tslint:disable */ -/* eslint-disable */ - -import type { FileSystemFolderModel } from './FileSystemFolderModel'; - -export type CreateStylesheetRequestModel = { - name: string; - parent?: FileSystemFolderModel | null; - content: string; -}; - diff --git a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/CreateTemplateRequestModel.ts b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/CreateTemplateRequestModel.ts deleted file mode 100644 index a1997efd5e..0000000000 --- a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/CreateTemplateRequestModel.ts +++ /dev/null @@ -1,12 +0,0 @@ -/* generated using openapi-typescript-codegen -- do no edit */ -/* istanbul ignore file */ -/* tslint:disable */ -/* eslint-disable */ - -export type CreateTemplateRequestModel = { - name: string; - alias: string; - content?: string | null; - id?: string | null; -}; - diff --git a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/CreateUserGroupRequestModel.ts b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/CreateUserGroupRequestModel.ts deleted file mode 100644 index a7d78bca69..0000000000 --- a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/CreateUserGroupRequestModel.ts +++ /dev/null @@ -1,23 +0,0 @@ -/* generated using openapi-typescript-codegen -- do no edit */ -/* istanbul ignore file */ -/* tslint:disable */ -/* eslint-disable */ - -import type { DocumentPermissionPresentationModel } from './DocumentPermissionPresentationModel'; -import type { ReferenceByIdModel } from './ReferenceByIdModel'; -import type { UnknownTypePermissionPresentationModel } from './UnknownTypePermissionPresentationModel'; - -export type CreateUserGroupRequestModel = { - name: string; - icon?: string | null; - sections: Array; - languages: Array; - hasAccessToAllLanguages: boolean; - documentStartNode?: ReferenceByIdModel | null; - documentRootAccess: boolean; - mediaStartNode?: ReferenceByIdModel | null; - mediaRootAccess: boolean; - fallbackPermissions: Array; - permissions: Array<(DocumentPermissionPresentationModel | UnknownTypePermissionPresentationModel)>; -}; - diff --git a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/CreateUserRequestModel.ts b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/CreateUserRequestModel.ts deleted file mode 100644 index 08ecdf6439..0000000000 --- a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/CreateUserRequestModel.ts +++ /dev/null @@ -1,13 +0,0 @@ -/* generated using openapi-typescript-codegen -- do no edit */ -/* istanbul ignore file */ -/* tslint:disable */ -/* eslint-disable */ - -export type CreateUserRequestModel = { - email: string; - userName: string; - name: string; - userGroupIds: Array; - id?: string | null; -}; - diff --git a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/CreateWebhookRequestModel.ts b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/CreateWebhookRequestModel.ts deleted file mode 100644 index 323b7705d7..0000000000 --- a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/CreateWebhookRequestModel.ts +++ /dev/null @@ -1,14 +0,0 @@ -/* generated using openapi-typescript-codegen -- do no edit */ -/* istanbul ignore file */ -/* tslint:disable */ -/* eslint-disable */ - -export type CreateWebhookRequestModel = { - enabled: boolean; - url: string; - contentTypeKeys: Array; - headers: Record; - id?: string | null; - events: Array; -}; - diff --git a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/CultureAndScheduleRequestModel.ts b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/CultureAndScheduleRequestModel.ts deleted file mode 100644 index 8ebf39abe3..0000000000 --- a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/CultureAndScheduleRequestModel.ts +++ /dev/null @@ -1,12 +0,0 @@ -/* generated using openapi-typescript-codegen -- do no edit */ -/* istanbul ignore file */ -/* tslint:disable */ -/* eslint-disable */ - -import type { ScheduleRequestModel } from './ScheduleRequestModel'; - -export type CultureAndScheduleRequestModel = { - culture?: string | null; - schedule?: ScheduleRequestModel | null; -}; - diff --git a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/CultureReponseModel.ts b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/CultureReponseModel.ts deleted file mode 100644 index 3bb48f8923..0000000000 --- a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/CultureReponseModel.ts +++ /dev/null @@ -1,10 +0,0 @@ -/* generated using openapi-typescript-codegen -- do no edit */ -/* istanbul ignore file */ -/* tslint:disable */ -/* eslint-disable */ - -export type CultureReponseModel = { - name: string; - englishName: string; -}; - diff --git a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/CurrenUserConfigurationResponseModel.ts b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/CurrenUserConfigurationResponseModel.ts deleted file mode 100644 index 4b398efa9d..0000000000 --- a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/CurrenUserConfigurationResponseModel.ts +++ /dev/null @@ -1,13 +0,0 @@ -/* generated using openapi-typescript-codegen -- do no edit */ -/* istanbul ignore file */ -/* tslint:disable */ -/* eslint-disable */ - -import type { PasswordConfigurationResponseModel } from './PasswordConfigurationResponseModel'; - -export type CurrenUserConfigurationResponseModel = { - keepUserLoggedIn: boolean; - usernameIsEmail: boolean; - passwordConfiguration: PasswordConfigurationResponseModel; -}; - diff --git a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/CurrentUserResponseModel.ts b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/CurrentUserResponseModel.ts deleted file mode 100644 index 12fbc0ae0d..0000000000 --- a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/CurrentUserResponseModel.ts +++ /dev/null @@ -1,26 +0,0 @@ -/* generated using openapi-typescript-codegen -- do no edit */ -/* istanbul ignore file */ -/* tslint:disable */ -/* eslint-disable */ - -import type { DocumentPermissionPresentationModel } from './DocumentPermissionPresentationModel'; -import type { UnknownTypePermissionPresentationModel } from './UnknownTypePermissionPresentationModel'; - -export type CurrentUserResponseModel = { - id: string; - email: string; - userName: string; - name: string; - languageIsoCode?: string | null; - documentStartNodeIds: Array; - mediaStartNodeIds: Array; - avatarUrls: Array; - languages: Array; - hasAccessToAllLanguages: boolean; - hasAccessToSensitiveData: boolean; - fallbackPermissions: Array; - permissions: Array<(DocumentPermissionPresentationModel | UnknownTypePermissionPresentationModel)>; - allowedSections: Array; - isAdmin: boolean; -}; - diff --git a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/DataTypeChangeModeModel.ts b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/DataTypeChangeModeModel.ts deleted file mode 100644 index fe470165fb..0000000000 --- a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/DataTypeChangeModeModel.ts +++ /dev/null @@ -1,10 +0,0 @@ -/* generated using openapi-typescript-codegen -- do no edit */ -/* istanbul ignore file */ -/* tslint:disable */ -/* eslint-disable */ - -export enum DataTypeChangeModeModel { - TRUE = 'True', - FALSE = 'False', - FALSE_WITH_HELP_TEXT = 'FalseWithHelpText', -} diff --git a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/DataTypeItemResponseModel.ts b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/DataTypeItemResponseModel.ts deleted file mode 100644 index 6ce59dedaa..0000000000 --- a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/DataTypeItemResponseModel.ts +++ /dev/null @@ -1,12 +0,0 @@ -/* generated using openapi-typescript-codegen -- do no edit */ -/* istanbul ignore file */ -/* tslint:disable */ -/* eslint-disable */ - -export type DataTypeItemResponseModel = { - id: string; - name: string; - editorUiAlias?: string | null; - isDeletable: boolean; -}; - diff --git a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/DataTypePropertyPresentationModel.ts b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/DataTypePropertyPresentationModel.ts deleted file mode 100644 index 5c6f1bf9a5..0000000000 --- a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/DataTypePropertyPresentationModel.ts +++ /dev/null @@ -1,10 +0,0 @@ -/* generated using openapi-typescript-codegen -- do no edit */ -/* istanbul ignore file */ -/* tslint:disable */ -/* eslint-disable */ - -export type DataTypePropertyPresentationModel = { - alias: string; - value?: any; -}; - diff --git a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/DataTypePropertyReferenceModel.ts b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/DataTypePropertyReferenceModel.ts deleted file mode 100644 index 34599f578a..0000000000 --- a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/DataTypePropertyReferenceModel.ts +++ /dev/null @@ -1,10 +0,0 @@ -/* generated using openapi-typescript-codegen -- do no edit */ -/* istanbul ignore file */ -/* tslint:disable */ -/* eslint-disable */ - -export type DataTypePropertyReferenceModel = { - name: string; - alias: string; -}; - diff --git a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/DataTypeReferenceResponseModel.ts b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/DataTypeReferenceResponseModel.ts deleted file mode 100644 index 60b4ebf070..0000000000 --- a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/DataTypeReferenceResponseModel.ts +++ /dev/null @@ -1,13 +0,0 @@ -/* generated using openapi-typescript-codegen -- do no edit */ -/* istanbul ignore file */ -/* tslint:disable */ -/* eslint-disable */ - -import type { DataTypePropertyReferenceModel } from './DataTypePropertyReferenceModel'; - -export type DataTypeReferenceResponseModel = { - id: string; - type: string; - properties: Array; -}; - diff --git a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/DataTypeResponseModel.ts b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/DataTypeResponseModel.ts deleted file mode 100644 index 56629e41fc..0000000000 --- a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/DataTypeResponseModel.ts +++ /dev/null @@ -1,17 +0,0 @@ -/* generated using openapi-typescript-codegen -- do no edit */ -/* istanbul ignore file */ -/* tslint:disable */ -/* eslint-disable */ - -import type { DataTypePropertyPresentationModel } from './DataTypePropertyPresentationModel'; - -export type DataTypeResponseModel = { - name: string; - editorAlias: string; - editorUiAlias?: string | null; - values: Array; - id: string; - isDeletable: boolean; - canIgnoreStartNodes: boolean; -}; - diff --git a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/DataTypeTreeItemResponseModel.ts b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/DataTypeTreeItemResponseModel.ts deleted file mode 100644 index 450ae578e0..0000000000 --- a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/DataTypeTreeItemResponseModel.ts +++ /dev/null @@ -1,17 +0,0 @@ -/* generated using openapi-typescript-codegen -- do no edit */ -/* istanbul ignore file */ -/* tslint:disable */ -/* eslint-disable */ - -import type { ReferenceByIdModel } from './ReferenceByIdModel'; - -export type DataTypeTreeItemResponseModel = { - hasChildren: boolean; - id: string; - parent?: ReferenceByIdModel | null; - name: string; - isFolder: boolean; - editorUiAlias?: string | null; - isDeletable: boolean; -}; - diff --git a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/DatabaseInstallRequestModel.ts b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/DatabaseInstallRequestModel.ts deleted file mode 100644 index d48d7e5551..0000000000 --- a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/DatabaseInstallRequestModel.ts +++ /dev/null @@ -1,17 +0,0 @@ -/* generated using openapi-typescript-codegen -- do no edit */ -/* istanbul ignore file */ -/* tslint:disable */ -/* eslint-disable */ - -export type DatabaseInstallRequestModel = { - id: string; - providerName: string; - server?: string | null; - name?: string | null; - username?: string | null; - password?: string | null; - useIntegratedAuthentication: boolean; - connectionString?: string | null; - trustServerCertificate: boolean; -}; - diff --git a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/DatabaseSettingsPresentationModel.ts b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/DatabaseSettingsPresentationModel.ts deleted file mode 100644 index 219b792647..0000000000 --- a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/DatabaseSettingsPresentationModel.ts +++ /dev/null @@ -1,19 +0,0 @@ -/* generated using openapi-typescript-codegen -- do no edit */ -/* istanbul ignore file */ -/* tslint:disable */ -/* eslint-disable */ - -export type DatabaseSettingsPresentationModel = { - id: string; - sortOrder: number; - displayName: string; - defaultDatabaseName: string; - providerName: string; - isConfigured: boolean; - requiresServer: boolean; - serverPlaceholder: string; - requiresCredentials: boolean; - supportsIntegratedAuthentication: boolean; - requiresConnectionTest: boolean; -}; - diff --git a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/DatatypeConfigurationResponseModel.ts b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/DatatypeConfigurationResponseModel.ts deleted file mode 100644 index 5156cd1512..0000000000 --- a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/DatatypeConfigurationResponseModel.ts +++ /dev/null @@ -1,14 +0,0 @@ -/* generated using openapi-typescript-codegen -- do no edit */ -/* istanbul ignore file */ -/* tslint:disable */ -/* eslint-disable */ - -import type { DataTypeChangeModeModel } from './DataTypeChangeModeModel'; - -export type DatatypeConfigurationResponseModel = { - canBeChanged: DataTypeChangeModeModel; - documentListViewId: string; - mediaListViewId: string; - memberListViewId: string; -}; - diff --git a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/DefaultReferenceResponseModel.ts b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/DefaultReferenceResponseModel.ts deleted file mode 100644 index ee9ea849a5..0000000000 --- a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/DefaultReferenceResponseModel.ts +++ /dev/null @@ -1,12 +0,0 @@ -/* generated using openapi-typescript-codegen -- do no edit */ -/* istanbul ignore file */ -/* tslint:disable */ -/* eslint-disable */ - -export type DefaultReferenceResponseModel = { - id: string; - name?: string | null; - type?: string | null; - icon?: string | null; -}; - diff --git a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/DeleteUserGroupsRequestModel.ts b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/DeleteUserGroupsRequestModel.ts deleted file mode 100644 index 6942407664..0000000000 --- a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/DeleteUserGroupsRequestModel.ts +++ /dev/null @@ -1,9 +0,0 @@ -/* generated using openapi-typescript-codegen -- do no edit */ -/* istanbul ignore file */ -/* tslint:disable */ -/* eslint-disable */ - -export type DeleteUserGroupsRequestModel = { - userGroupIds: Array; -}; - diff --git a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/DeleteUsersRequestModel.ts b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/DeleteUsersRequestModel.ts deleted file mode 100644 index c6f210a95c..0000000000 --- a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/DeleteUsersRequestModel.ts +++ /dev/null @@ -1,9 +0,0 @@ -/* generated using openapi-typescript-codegen -- do no edit */ -/* istanbul ignore file */ -/* tslint:disable */ -/* eslint-disable */ - -export type DeleteUsersRequestModel = { - userIds: Array; -}; - diff --git a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/DictionaryItemItemResponseModel.ts b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/DictionaryItemItemResponseModel.ts deleted file mode 100644 index 04da3773ba..0000000000 --- a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/DictionaryItemItemResponseModel.ts +++ /dev/null @@ -1,10 +0,0 @@ -/* generated using openapi-typescript-codegen -- do no edit */ -/* istanbul ignore file */ -/* tslint:disable */ -/* eslint-disable */ - -export type DictionaryItemItemResponseModel = { - id: string; - name: string; -}; - diff --git a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/DictionaryItemResponseModel.ts b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/DictionaryItemResponseModel.ts deleted file mode 100644 index 5645077355..0000000000 --- a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/DictionaryItemResponseModel.ts +++ /dev/null @@ -1,13 +0,0 @@ -/* generated using openapi-typescript-codegen -- do no edit */ -/* istanbul ignore file */ -/* tslint:disable */ -/* eslint-disable */ - -import type { DictionaryItemTranslationModel } from './DictionaryItemTranslationModel'; - -export type DictionaryItemResponseModel = { - name: string; - translations: Array; - id: string; -}; - diff --git a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/DictionaryItemTranslationModel.ts b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/DictionaryItemTranslationModel.ts deleted file mode 100644 index 2016bf3674..0000000000 --- a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/DictionaryItemTranslationModel.ts +++ /dev/null @@ -1,10 +0,0 @@ -/* generated using openapi-typescript-codegen -- do no edit */ -/* istanbul ignore file */ -/* tslint:disable */ -/* eslint-disable */ - -export type DictionaryItemTranslationModel = { - isoCode: string; - translation: string; -}; - diff --git a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/DictionaryOverviewResponseModel.ts b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/DictionaryOverviewResponseModel.ts deleted file mode 100644 index c703cb41b3..0000000000 --- a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/DictionaryOverviewResponseModel.ts +++ /dev/null @@ -1,14 +0,0 @@ -/* generated using openapi-typescript-codegen -- do no edit */ -/* istanbul ignore file */ -/* tslint:disable */ -/* eslint-disable */ - -import type { ReferenceByIdModel } from './ReferenceByIdModel'; - -export type DictionaryOverviewResponseModel = { - name?: string | null; - id: string; - parent?: ReferenceByIdModel | null; - translatedIsoCodes: Array; -}; - diff --git a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/DirectionModel.ts b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/DirectionModel.ts deleted file mode 100644 index 7073765f71..0000000000 --- a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/DirectionModel.ts +++ /dev/null @@ -1,9 +0,0 @@ -/* generated using openapi-typescript-codegen -- do no edit */ -/* istanbul ignore file */ -/* tslint:disable */ -/* eslint-disable */ - -export enum DirectionModel { - ASCENDING = 'Ascending', - DESCENDING = 'Descending', -} diff --git a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/DisableUserRequestModel.ts b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/DisableUserRequestModel.ts deleted file mode 100644 index d761f29549..0000000000 --- a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/DisableUserRequestModel.ts +++ /dev/null @@ -1,9 +0,0 @@ -/* generated using openapi-typescript-codegen -- do no edit */ -/* istanbul ignore file */ -/* tslint:disable */ -/* eslint-disable */ - -export type DisableUserRequestModel = { - userIds: Array; -}; - diff --git a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/DocumentBlueprintItemResponseModel.ts b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/DocumentBlueprintItemResponseModel.ts deleted file mode 100644 index f7effed27c..0000000000 --- a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/DocumentBlueprintItemResponseModel.ts +++ /dev/null @@ -1,13 +0,0 @@ -/* generated using openapi-typescript-codegen -- do no edit */ -/* istanbul ignore file */ -/* tslint:disable */ -/* eslint-disable */ - -import type { DocumentTypeReferenceResponseModel } from './DocumentTypeReferenceResponseModel'; - -export type DocumentBlueprintItemResponseModel = { - id: string; - name: string; - documentType: DocumentTypeReferenceResponseModel; -}; - diff --git a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/DocumentBlueprintResponseModel.ts b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/DocumentBlueprintResponseModel.ts deleted file mode 100644 index 4f6601241b..0000000000 --- a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/DocumentBlueprintResponseModel.ts +++ /dev/null @@ -1,16 +0,0 @@ -/* generated using openapi-typescript-codegen -- do no edit */ -/* istanbul ignore file */ -/* tslint:disable */ -/* eslint-disable */ - -import type { DocumentTypeReferenceResponseModel } from './DocumentTypeReferenceResponseModel'; -import type { DocumentValueModel } from './DocumentValueModel'; -import type { DocumentVariantResponseModel } from './DocumentVariantResponseModel'; - -export type DocumentBlueprintResponseModel = { - values: Array; - variants: Array; - id: string; - documentType: DocumentTypeReferenceResponseModel; -}; - diff --git a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/DocumentBlueprintTreeItemResponseModel.ts b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/DocumentBlueprintTreeItemResponseModel.ts deleted file mode 100644 index 3df3c06dce..0000000000 --- a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/DocumentBlueprintTreeItemResponseModel.ts +++ /dev/null @@ -1,17 +0,0 @@ -/* generated using openapi-typescript-codegen -- do no edit */ -/* istanbul ignore file */ -/* tslint:disable */ -/* eslint-disable */ - -import type { DocumentTypeReferenceResponseModel } from './DocumentTypeReferenceResponseModel'; -import type { ReferenceByIdModel } from './ReferenceByIdModel'; - -export type DocumentBlueprintTreeItemResponseModel = { - hasChildren: boolean; - id: string; - parent?: ReferenceByIdModel | null; - name: string; - isFolder: boolean; - documentType?: DocumentTypeReferenceResponseModel | null; -}; - diff --git a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/DocumentCollectionResponseModel.ts b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/DocumentCollectionResponseModel.ts deleted file mode 100644 index c8636e3fd1..0000000000 --- a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/DocumentCollectionResponseModel.ts +++ /dev/null @@ -1,19 +0,0 @@ -/* generated using openapi-typescript-codegen -- do no edit */ -/* istanbul ignore file */ -/* tslint:disable */ -/* eslint-disable */ - -import type { DocumentTypeCollectionReferenceResponseModel } from './DocumentTypeCollectionReferenceResponseModel'; -import type { DocumentValueModel } from './DocumentValueModel'; -import type { DocumentVariantResponseModel } from './DocumentVariantResponseModel'; - -export type DocumentCollectionResponseModel = { - values: Array; - variants: Array; - id: string; - creator?: string | null; - sortOrder: number; - documentType: DocumentTypeCollectionReferenceResponseModel; - updater?: string | null; -}; - diff --git a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/DocumentConfigurationResponseModel.ts b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/DocumentConfigurationResponseModel.ts deleted file mode 100644 index 814b141b50..0000000000 --- a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/DocumentConfigurationResponseModel.ts +++ /dev/null @@ -1,14 +0,0 @@ -/* generated using openapi-typescript-codegen -- do no edit */ -/* istanbul ignore file */ -/* tslint:disable */ -/* eslint-disable */ - -export type DocumentConfigurationResponseModel = { - sanitizeTinyMce: boolean; - disableDeleteWhenReferenced: boolean; - disableUnpublishWhenReferenced: boolean; - allowEditInvariantFromNonDefault: boolean; - allowNonExistingSegmentsCreation: boolean; - reservedFieldNames: Array; -}; - diff --git a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/DocumentItemResponseModel.ts b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/DocumentItemResponseModel.ts deleted file mode 100644 index 4721077438..0000000000 --- a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/DocumentItemResponseModel.ts +++ /dev/null @@ -1,16 +0,0 @@ -/* generated using openapi-typescript-codegen -- do no edit */ -/* istanbul ignore file */ -/* tslint:disable */ -/* eslint-disable */ - -import type { DocumentTypeReferenceResponseModel } from './DocumentTypeReferenceResponseModel'; -import type { DocumentVariantItemResponseModel } from './DocumentVariantItemResponseModel'; - -export type DocumentItemResponseModel = { - id: string; - isTrashed: boolean; - isProtected: boolean; - documentType: DocumentTypeReferenceResponseModel; - variants: Array; -}; - diff --git a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/DocumentNotificationResponseModel.ts b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/DocumentNotificationResponseModel.ts deleted file mode 100644 index 72e7e8629d..0000000000 --- a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/DocumentNotificationResponseModel.ts +++ /dev/null @@ -1,10 +0,0 @@ -/* generated using openapi-typescript-codegen -- do no edit */ -/* istanbul ignore file */ -/* tslint:disable */ -/* eslint-disable */ - -export type DocumentNotificationResponseModel = { - actionId: string; - subscribed: boolean; -}; - diff --git a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/DocumentPermissionPresentationModel.ts b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/DocumentPermissionPresentationModel.ts deleted file mode 100644 index 420b96ec34..0000000000 --- a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/DocumentPermissionPresentationModel.ts +++ /dev/null @@ -1,13 +0,0 @@ -/* generated using openapi-typescript-codegen -- do no edit */ -/* istanbul ignore file */ -/* tslint:disable */ -/* eslint-disable */ - -import type { ReferenceByIdModel } from './ReferenceByIdModel'; - -export type DocumentPermissionPresentationModel = { - $type: string; - document: ReferenceByIdModel; - verbs: Array; -}; - diff --git a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/DocumentRecycleBinItemResponseModel.ts b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/DocumentRecycleBinItemResponseModel.ts deleted file mode 100644 index 0cbc6e3eed..0000000000 --- a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/DocumentRecycleBinItemResponseModel.ts +++ /dev/null @@ -1,17 +0,0 @@ -/* generated using openapi-typescript-codegen -- do no edit */ -/* istanbul ignore file */ -/* tslint:disable */ -/* eslint-disable */ - -import type { DocumentTypeReferenceResponseModel } from './DocumentTypeReferenceResponseModel'; -import type { DocumentVariantItemResponseModel } from './DocumentVariantItemResponseModel'; -import type { ItemReferenceByIdResponseModel } from './ItemReferenceByIdResponseModel'; - -export type DocumentRecycleBinItemResponseModel = { - id: string; - hasChildren: boolean; - parent?: ItemReferenceByIdResponseModel | null; - documentType: DocumentTypeReferenceResponseModel; - variants: Array; -}; - diff --git a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/DocumentReferenceResponseModel.ts b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/DocumentReferenceResponseModel.ts deleted file mode 100644 index 07f70a7893..0000000000 --- a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/DocumentReferenceResponseModel.ts +++ /dev/null @@ -1,14 +0,0 @@ -/* generated using openapi-typescript-codegen -- do no edit */ -/* istanbul ignore file */ -/* tslint:disable */ -/* eslint-disable */ - -import type { TrackedReferenceDocumentTypeModel } from './TrackedReferenceDocumentTypeModel'; - -export type DocumentReferenceResponseModel = { - id: string; - name?: string | null; - published?: boolean | null; - documentType: TrackedReferenceDocumentTypeModel; -}; - diff --git a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/DocumentResponseModel.ts b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/DocumentResponseModel.ts deleted file mode 100644 index e748a2fa23..0000000000 --- a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/DocumentResponseModel.ts +++ /dev/null @@ -1,21 +0,0 @@ -/* generated using openapi-typescript-codegen -- do no edit */ -/* istanbul ignore file */ -/* tslint:disable */ -/* eslint-disable */ - -import type { DocumentTypeReferenceResponseModel } from './DocumentTypeReferenceResponseModel'; -import type { DocumentUrlInfoModel } from './DocumentUrlInfoModel'; -import type { DocumentValueModel } from './DocumentValueModel'; -import type { DocumentVariantResponseModel } from './DocumentVariantResponseModel'; -import type { ReferenceByIdModel } from './ReferenceByIdModel'; - -export type DocumentResponseModel = { - values: Array; - variants: Array; - id: string; - documentType: DocumentTypeReferenceResponseModel; - urls: Array; - template?: ReferenceByIdModel | null; - isTrashed: boolean; -}; - diff --git a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/DocumentTreeItemResponseModel.ts b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/DocumentTreeItemResponseModel.ts deleted file mode 100644 index 85c85414ce..0000000000 --- a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/DocumentTreeItemResponseModel.ts +++ /dev/null @@ -1,20 +0,0 @@ -/* generated using openapi-typescript-codegen -- do no edit */ -/* istanbul ignore file */ -/* tslint:disable */ -/* eslint-disable */ - -import type { DocumentTypeReferenceResponseModel } from './DocumentTypeReferenceResponseModel'; -import type { DocumentVariantItemResponseModel } from './DocumentVariantItemResponseModel'; -import type { ReferenceByIdModel } from './ReferenceByIdModel'; - -export type DocumentTreeItemResponseModel = { - hasChildren: boolean; - parent?: ReferenceByIdModel | null; - noAccess: boolean; - isTrashed: boolean; - id: string; - isProtected: boolean; - documentType: DocumentTypeReferenceResponseModel; - variants: Array; -}; - diff --git a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/DocumentTypeCleanupModel.ts b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/DocumentTypeCleanupModel.ts deleted file mode 100644 index c6bcdef753..0000000000 --- a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/DocumentTypeCleanupModel.ts +++ /dev/null @@ -1,11 +0,0 @@ -/* generated using openapi-typescript-codegen -- do no edit */ -/* istanbul ignore file */ -/* tslint:disable */ -/* eslint-disable */ - -export type DocumentTypeCleanupModel = { - preventCleanup: boolean; - keepAllVersionsNewerThanDays?: number | null; - keepLatestVersionPerDayForDays?: number | null; -}; - diff --git a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/DocumentTypeCollectionReferenceResponseModel.ts b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/DocumentTypeCollectionReferenceResponseModel.ts deleted file mode 100644 index 8922a1b413..0000000000 --- a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/DocumentTypeCollectionReferenceResponseModel.ts +++ /dev/null @@ -1,11 +0,0 @@ -/* generated using openapi-typescript-codegen -- do no edit */ -/* istanbul ignore file */ -/* tslint:disable */ -/* eslint-disable */ - -export type DocumentTypeCollectionReferenceResponseModel = { - id: string; - alias: string; - icon: string; -}; - diff --git a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/DocumentTypeCompositionModel.ts b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/DocumentTypeCompositionModel.ts deleted file mode 100644 index 5cb10be1d0..0000000000 --- a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/DocumentTypeCompositionModel.ts +++ /dev/null @@ -1,13 +0,0 @@ -/* generated using openapi-typescript-codegen -- do no edit */ -/* istanbul ignore file */ -/* tslint:disable */ -/* eslint-disable */ - -import type { CompositionTypeModel } from './CompositionTypeModel'; -import type { ReferenceByIdModel } from './ReferenceByIdModel'; - -export type DocumentTypeCompositionModel = { - documentType: ReferenceByIdModel; - compositionType: CompositionTypeModel; -}; - diff --git a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/DocumentTypeCompositionRequestModel.ts b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/DocumentTypeCompositionRequestModel.ts deleted file mode 100644 index cfd8527f75..0000000000 --- a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/DocumentTypeCompositionRequestModel.ts +++ /dev/null @@ -1,12 +0,0 @@ -/* generated using openapi-typescript-codegen -- do no edit */ -/* istanbul ignore file */ -/* tslint:disable */ -/* eslint-disable */ - -export type DocumentTypeCompositionRequestModel = { - id?: string | null; - currentPropertyAliases: Array; - currentCompositeIds: Array; - isElement: boolean; -}; - diff --git a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/DocumentTypeCompositionResponseModel.ts b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/DocumentTypeCompositionResponseModel.ts deleted file mode 100644 index 77785325a6..0000000000 --- a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/DocumentTypeCompositionResponseModel.ts +++ /dev/null @@ -1,11 +0,0 @@ -/* generated using openapi-typescript-codegen -- do no edit */ -/* istanbul ignore file */ -/* tslint:disable */ -/* eslint-disable */ - -export type DocumentTypeCompositionResponseModel = { - id: string; - name: string; - icon: string; -}; - diff --git a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/DocumentTypeConfigurationResponseModel.ts b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/DocumentTypeConfigurationResponseModel.ts deleted file mode 100644 index a0ad32119c..0000000000 --- a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/DocumentTypeConfigurationResponseModel.ts +++ /dev/null @@ -1,13 +0,0 @@ -/* generated using openapi-typescript-codegen -- do no edit */ -/* istanbul ignore file */ -/* tslint:disable */ -/* eslint-disable */ - -import type { DataTypeChangeModeModel } from './DataTypeChangeModeModel'; - -export type DocumentTypeConfigurationResponseModel = { - dataTypesCanBeChanged: DataTypeChangeModeModel; - disableTemplates: boolean; - useSegments: boolean; -}; - diff --git a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/DocumentTypeItemResponseModel.ts b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/DocumentTypeItemResponseModel.ts deleted file mode 100644 index a0c7a5c1be..0000000000 --- a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/DocumentTypeItemResponseModel.ts +++ /dev/null @@ -1,12 +0,0 @@ -/* generated using openapi-typescript-codegen -- do no edit */ -/* istanbul ignore file */ -/* tslint:disable */ -/* eslint-disable */ - -export type DocumentTypeItemResponseModel = { - id: string; - name: string; - isElement: boolean; - icon?: string | null; -}; - diff --git a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/DocumentTypePropertyTypeContainerResponseModel.ts b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/DocumentTypePropertyTypeContainerResponseModel.ts deleted file mode 100644 index ba1da5ed90..0000000000 --- a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/DocumentTypePropertyTypeContainerResponseModel.ts +++ /dev/null @@ -1,15 +0,0 @@ -/* generated using openapi-typescript-codegen -- do no edit */ -/* istanbul ignore file */ -/* tslint:disable */ -/* eslint-disable */ - -import type { ReferenceByIdModel } from './ReferenceByIdModel'; - -export type DocumentTypePropertyTypeContainerResponseModel = { - id: string; - parent?: ReferenceByIdModel | null; - name?: string | null; - type: string; - sortOrder: number; -}; - diff --git a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/DocumentTypePropertyTypeResponseModel.ts b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/DocumentTypePropertyTypeResponseModel.ts deleted file mode 100644 index 8ab9019a74..0000000000 --- a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/DocumentTypePropertyTypeResponseModel.ts +++ /dev/null @@ -1,23 +0,0 @@ -/* generated using openapi-typescript-codegen -- do no edit */ -/* istanbul ignore file */ -/* tslint:disable */ -/* eslint-disable */ - -import type { PropertyTypeAppearanceModel } from './PropertyTypeAppearanceModel'; -import type { PropertyTypeValidationModel } from './PropertyTypeValidationModel'; -import type { ReferenceByIdModel } from './ReferenceByIdModel'; - -export type DocumentTypePropertyTypeResponseModel = { - id: string; - container?: ReferenceByIdModel | null; - sortOrder: number; - alias: string; - name: string; - description?: string | null; - dataType: ReferenceByIdModel; - variesByCulture: boolean; - variesBySegment: boolean; - validation: PropertyTypeValidationModel; - appearance: PropertyTypeAppearanceModel; -}; - diff --git a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/DocumentTypeReferenceResponseModel.ts b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/DocumentTypeReferenceResponseModel.ts deleted file mode 100644 index 6c330ee6bc..0000000000 --- a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/DocumentTypeReferenceResponseModel.ts +++ /dev/null @@ -1,13 +0,0 @@ -/* generated using openapi-typescript-codegen -- do no edit */ -/* istanbul ignore file */ -/* tslint:disable */ -/* eslint-disable */ - -import type { ReferenceByIdModel } from './ReferenceByIdModel'; - -export type DocumentTypeReferenceResponseModel = { - id: string; - icon: string; - collection?: ReferenceByIdModel | null; -}; - diff --git a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/DocumentTypeResponseModel.ts b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/DocumentTypeResponseModel.ts deleted file mode 100644 index 59794877d0..0000000000 --- a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/DocumentTypeResponseModel.ts +++ /dev/null @@ -1,32 +0,0 @@ -/* generated using openapi-typescript-codegen -- do no edit */ -/* istanbul ignore file */ -/* tslint:disable */ -/* eslint-disable */ - -import type { DocumentTypeCleanupModel } from './DocumentTypeCleanupModel'; -import type { DocumentTypeCompositionModel } from './DocumentTypeCompositionModel'; -import type { DocumentTypePropertyTypeContainerResponseModel } from './DocumentTypePropertyTypeContainerResponseModel'; -import type { DocumentTypePropertyTypeResponseModel } from './DocumentTypePropertyTypeResponseModel'; -import type { DocumentTypeSortModel } from './DocumentTypeSortModel'; -import type { ReferenceByIdModel } from './ReferenceByIdModel'; - -export type DocumentTypeResponseModel = { - alias: string; - name: string; - description?: string | null; - icon: string; - allowedAsRoot: boolean; - variesByCulture: boolean; - variesBySegment: boolean; - collection?: ReferenceByIdModel | null; - isElement: boolean; - properties: Array; - containers: Array; - id: string; - allowedTemplates: Array; - defaultTemplate?: ReferenceByIdModel | null; - cleanup: DocumentTypeCleanupModel; - allowedDocumentTypes: Array; - compositions: Array; -}; - diff --git a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/DocumentTypeSortModel.ts b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/DocumentTypeSortModel.ts deleted file mode 100644 index 82dfba4614..0000000000 --- a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/DocumentTypeSortModel.ts +++ /dev/null @@ -1,12 +0,0 @@ -/* generated using openapi-typescript-codegen -- do no edit */ -/* istanbul ignore file */ -/* tslint:disable */ -/* eslint-disable */ - -import type { ReferenceByIdModel } from './ReferenceByIdModel'; - -export type DocumentTypeSortModel = { - documentType: ReferenceByIdModel; - sortOrder: number; -}; - diff --git a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/DocumentTypeTreeItemResponseModel.ts b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/DocumentTypeTreeItemResponseModel.ts deleted file mode 100644 index 2f19862537..0000000000 --- a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/DocumentTypeTreeItemResponseModel.ts +++ /dev/null @@ -1,17 +0,0 @@ -/* generated using openapi-typescript-codegen -- do no edit */ -/* istanbul ignore file */ -/* tslint:disable */ -/* eslint-disable */ - -import type { ReferenceByIdModel } from './ReferenceByIdModel'; - -export type DocumentTypeTreeItemResponseModel = { - hasChildren: boolean; - id: string; - parent?: ReferenceByIdModel | null; - name: string; - isFolder: boolean; - isElement: boolean; - icon: string; -}; - diff --git a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/DocumentUrlInfoModel.ts b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/DocumentUrlInfoModel.ts deleted file mode 100644 index 19abf147fb..0000000000 --- a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/DocumentUrlInfoModel.ts +++ /dev/null @@ -1,10 +0,0 @@ -/* generated using openapi-typescript-codegen -- do no edit */ -/* istanbul ignore file */ -/* tslint:disable */ -/* eslint-disable */ - -export type DocumentUrlInfoModel = { - culture?: string | null; - url: string; -}; - diff --git a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/DocumentValueModel.ts b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/DocumentValueModel.ts deleted file mode 100644 index 7dbb92fb62..0000000000 --- a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/DocumentValueModel.ts +++ /dev/null @@ -1,12 +0,0 @@ -/* generated using openapi-typescript-codegen -- do no edit */ -/* istanbul ignore file */ -/* tslint:disable */ -/* eslint-disable */ - -export type DocumentValueModel = { - culture?: string | null; - segment?: string | null; - alias: string; - value?: any; -}; - diff --git a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/DocumentVariantItemResponseModel.ts b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/DocumentVariantItemResponseModel.ts deleted file mode 100644 index be8ee74fa3..0000000000 --- a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/DocumentVariantItemResponseModel.ts +++ /dev/null @@ -1,13 +0,0 @@ -/* generated using openapi-typescript-codegen -- do no edit */ -/* istanbul ignore file */ -/* tslint:disable */ -/* eslint-disable */ - -import type { DocumentVariantStateModel } from './DocumentVariantStateModel'; - -export type DocumentVariantItemResponseModel = { - name: string; - culture?: string | null; - state: DocumentVariantStateModel; -}; - diff --git a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/DocumentVariantRequestModel.ts b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/DocumentVariantRequestModel.ts deleted file mode 100644 index cfe9479479..0000000000 --- a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/DocumentVariantRequestModel.ts +++ /dev/null @@ -1,11 +0,0 @@ -/* generated using openapi-typescript-codegen -- do no edit */ -/* istanbul ignore file */ -/* tslint:disable */ -/* eslint-disable */ - -export type DocumentVariantRequestModel = { - culture?: string | null; - segment?: string | null; - name: string; -}; - diff --git a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/DocumentVariantResponseModel.ts b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/DocumentVariantResponseModel.ts deleted file mode 100644 index fed5af6be7..0000000000 --- a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/DocumentVariantResponseModel.ts +++ /dev/null @@ -1,17 +0,0 @@ -/* generated using openapi-typescript-codegen -- do no edit */ -/* istanbul ignore file */ -/* tslint:disable */ -/* eslint-disable */ - -import type { DocumentVariantStateModel } from './DocumentVariantStateModel'; - -export type DocumentVariantResponseModel = { - culture?: string | null; - segment?: string | null; - name: string; - createDate: string; - updateDate: string; - state: DocumentVariantStateModel; - publishDate?: string | null; -}; - diff --git a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/DocumentVariantStateModel.ts b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/DocumentVariantStateModel.ts deleted file mode 100644 index eb4077b844..0000000000 --- a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/DocumentVariantStateModel.ts +++ /dev/null @@ -1,11 +0,0 @@ -/* generated using openapi-typescript-codegen -- do no edit */ -/* istanbul ignore file */ -/* tslint:disable */ -/* eslint-disable */ - -export enum DocumentVariantStateModel { - NOT_CREATED = 'NotCreated', - DRAFT = 'Draft', - PUBLISHED = 'Published', - PUBLISHED_PENDING_CHANGES = 'PublishedPendingChanges', -} diff --git a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/DocumentVersionItemResponseModel.ts b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/DocumentVersionItemResponseModel.ts deleted file mode 100644 index e48dfed526..0000000000 --- a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/DocumentVersionItemResponseModel.ts +++ /dev/null @@ -1,18 +0,0 @@ -/* generated using openapi-typescript-codegen -- do no edit */ -/* istanbul ignore file */ -/* tslint:disable */ -/* eslint-disable */ - -import type { ReferenceByIdModel } from './ReferenceByIdModel'; - -export type DocumentVersionItemResponseModel = { - id: string; - document: ReferenceByIdModel; - documentType: ReferenceByIdModel; - user: ReferenceByIdModel; - versionDate: string; - isCurrentPublishedVersion: boolean; - isCurrentDraftVersion: boolean; - preventCleanup: boolean; -}; - diff --git a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/DocumentVersionResponseModel.ts b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/DocumentVersionResponseModel.ts deleted file mode 100644 index 10863233ba..0000000000 --- a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/DocumentVersionResponseModel.ts +++ /dev/null @@ -1,18 +0,0 @@ -/* generated using openapi-typescript-codegen -- do no edit */ -/* istanbul ignore file */ -/* tslint:disable */ -/* eslint-disable */ - -import type { DocumentTypeReferenceResponseModel } from './DocumentTypeReferenceResponseModel'; -import type { DocumentValueModel } from './DocumentValueModel'; -import type { DocumentVariantResponseModel } from './DocumentVariantResponseModel'; -import type { ReferenceByIdModel } from './ReferenceByIdModel'; - -export type DocumentVersionResponseModel = { - values: Array; - variants: Array; - id: string; - documentType: DocumentTypeReferenceResponseModel; - document?: ReferenceByIdModel | null; -}; - diff --git a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/DomainPresentationModel.ts b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/DomainPresentationModel.ts deleted file mode 100644 index 497ce2ae8e..0000000000 --- a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/DomainPresentationModel.ts +++ /dev/null @@ -1,10 +0,0 @@ -/* generated using openapi-typescript-codegen -- do no edit */ -/* istanbul ignore file */ -/* tslint:disable */ -/* eslint-disable */ - -export type DomainPresentationModel = { - domainName: string; - isoCode: string; -}; - diff --git a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/DomainsResponseModel.ts b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/DomainsResponseModel.ts deleted file mode 100644 index a9db3960b0..0000000000 --- a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/DomainsResponseModel.ts +++ /dev/null @@ -1,12 +0,0 @@ -/* generated using openapi-typescript-codegen -- do no edit */ -/* istanbul ignore file */ -/* tslint:disable */ -/* eslint-disable */ - -import type { DomainPresentationModel } from './DomainPresentationModel'; - -export type DomainsResponseModel = { - defaultIsoCode?: string | null; - domains: Array; -}; - diff --git a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/DynamicRootContextRequestModel.ts b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/DynamicRootContextRequestModel.ts deleted file mode 100644 index 0bef115133..0000000000 --- a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/DynamicRootContextRequestModel.ts +++ /dev/null @@ -1,14 +0,0 @@ -/* generated using openapi-typescript-codegen -- do no edit */ -/* istanbul ignore file */ -/* tslint:disable */ -/* eslint-disable */ - -import type { ReferenceByIdModel } from './ReferenceByIdModel'; - -export type DynamicRootContextRequestModel = { - id?: string | null; - parent: ReferenceByIdModel; - culture?: string | null; - segment?: string | null; -}; - diff --git a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/DynamicRootQueryOriginRequestModel.ts b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/DynamicRootQueryOriginRequestModel.ts deleted file mode 100644 index 4d882670e7..0000000000 --- a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/DynamicRootQueryOriginRequestModel.ts +++ /dev/null @@ -1,10 +0,0 @@ -/* generated using openapi-typescript-codegen -- do no edit */ -/* istanbul ignore file */ -/* tslint:disable */ -/* eslint-disable */ - -export type DynamicRootQueryOriginRequestModel = { - alias: string; - id?: string | null; -}; - diff --git a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/DynamicRootQueryRequestModel.ts b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/DynamicRootQueryRequestModel.ts deleted file mode 100644 index 429c72a4d4..0000000000 --- a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/DynamicRootQueryRequestModel.ts +++ /dev/null @@ -1,13 +0,0 @@ -/* generated using openapi-typescript-codegen -- do no edit */ -/* istanbul ignore file */ -/* tslint:disable */ -/* eslint-disable */ - -import type { DynamicRootQueryOriginRequestModel } from './DynamicRootQueryOriginRequestModel'; -import type { DynamicRootQueryStepRequestModel } from './DynamicRootQueryStepRequestModel'; - -export type DynamicRootQueryRequestModel = { - origin: DynamicRootQueryOriginRequestModel; - steps: Array; -}; - diff --git a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/DynamicRootQueryStepRequestModel.ts b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/DynamicRootQueryStepRequestModel.ts deleted file mode 100644 index fad5ca362e..0000000000 --- a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/DynamicRootQueryStepRequestModel.ts +++ /dev/null @@ -1,10 +0,0 @@ -/* generated using openapi-typescript-codegen -- do no edit */ -/* istanbul ignore file */ -/* tslint:disable */ -/* eslint-disable */ - -export type DynamicRootQueryStepRequestModel = { - alias: string; - documentTypeIds: Array; -}; - diff --git a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/DynamicRootRequestModel.ts b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/DynamicRootRequestModel.ts deleted file mode 100644 index 14d3647bc1..0000000000 --- a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/DynamicRootRequestModel.ts +++ /dev/null @@ -1,13 +0,0 @@ -/* generated using openapi-typescript-codegen -- do no edit */ -/* istanbul ignore file */ -/* tslint:disable */ -/* eslint-disable */ - -import type { DynamicRootContextRequestModel } from './DynamicRootContextRequestModel'; -import type { DynamicRootQueryRequestModel } from './DynamicRootQueryRequestModel'; - -export type DynamicRootRequestModel = { - context: DynamicRootContextRequestModel; - query: DynamicRootQueryRequestModel; -}; - diff --git a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/DynamicRootResponseModel.ts b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/DynamicRootResponseModel.ts deleted file mode 100644 index da6a956c7b..0000000000 --- a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/DynamicRootResponseModel.ts +++ /dev/null @@ -1,9 +0,0 @@ -/* generated using openapi-typescript-codegen -- do no edit */ -/* istanbul ignore file */ -/* tslint:disable */ -/* eslint-disable */ - -export type DynamicRootResponseModel = { - roots: Array; -}; - diff --git a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/EnableTwoFactorRequestModel.ts b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/EnableTwoFactorRequestModel.ts deleted file mode 100644 index 7c49e5b473..0000000000 --- a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/EnableTwoFactorRequestModel.ts +++ /dev/null @@ -1,10 +0,0 @@ -/* generated using openapi-typescript-codegen -- do no edit */ -/* istanbul ignore file */ -/* tslint:disable */ -/* eslint-disable */ - -export type EnableTwoFactorRequestModel = { - code: string; - secret: string; -}; - diff --git a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/EnableUserRequestModel.ts b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/EnableUserRequestModel.ts deleted file mode 100644 index 149c8cb3b7..0000000000 --- a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/EnableUserRequestModel.ts +++ /dev/null @@ -1,9 +0,0 @@ -/* generated using openapi-typescript-codegen -- do no edit */ -/* istanbul ignore file */ -/* tslint:disable */ -/* eslint-disable */ - -export type EnableUserRequestModel = { - userIds: Array; -}; - diff --git a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/EventMessageTypeModel.ts b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/EventMessageTypeModel.ts deleted file mode 100644 index 07e96dbc24..0000000000 --- a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/EventMessageTypeModel.ts +++ /dev/null @@ -1,12 +0,0 @@ -/* generated using openapi-typescript-codegen -- do no edit */ -/* istanbul ignore file */ -/* tslint:disable */ -/* eslint-disable */ - -export enum EventMessageTypeModel { - DEFAULT = 'Default', - INFO = 'Info', - ERROR = 'Error', - SUCCESS = 'Success', - WARNING = 'Warning', -} diff --git a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/FieldPresentationModel.ts b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/FieldPresentationModel.ts deleted file mode 100644 index 5a39dbab7c..0000000000 --- a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/FieldPresentationModel.ts +++ /dev/null @@ -1,10 +0,0 @@ -/* generated using openapi-typescript-codegen -- do no edit */ -/* istanbul ignore file */ -/* tslint:disable */ -/* eslint-disable */ - -export type FieldPresentationModel = { - name: string; - values: Array; -}; - diff --git a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/FileSystemFolderModel.ts b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/FileSystemFolderModel.ts deleted file mode 100644 index 4e3e5a8217..0000000000 --- a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/FileSystemFolderModel.ts +++ /dev/null @@ -1,9 +0,0 @@ -/* generated using openapi-typescript-codegen -- do no edit */ -/* istanbul ignore file */ -/* tslint:disable */ -/* eslint-disable */ - -export type FileSystemFolderModel = { - path: string; -}; - diff --git a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/FileSystemTreeItemPresentationModel.ts b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/FileSystemTreeItemPresentationModel.ts deleted file mode 100644 index 01486b96aa..0000000000 --- a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/FileSystemTreeItemPresentationModel.ts +++ /dev/null @@ -1,15 +0,0 @@ -/* generated using openapi-typescript-codegen -- do no edit */ -/* istanbul ignore file */ -/* tslint:disable */ -/* eslint-disable */ - -import type { FileSystemFolderModel } from './FileSystemFolderModel'; - -export type FileSystemTreeItemPresentationModel = { - hasChildren: boolean; - name: string; - path: string; - parent?: FileSystemFolderModel | null; - isFolder: boolean; -}; - diff --git a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/FolderResponseModel.ts b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/FolderResponseModel.ts deleted file mode 100644 index 01664fd2e4..0000000000 --- a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/FolderResponseModel.ts +++ /dev/null @@ -1,10 +0,0 @@ -/* generated using openapi-typescript-codegen -- do no edit */ -/* istanbul ignore file */ -/* tslint:disable */ -/* eslint-disable */ - -export type FolderResponseModel = { - name: string; - id: string; -}; - diff --git a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/HealthCheckActionRequestModel.ts b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/HealthCheckActionRequestModel.ts deleted file mode 100644 index cb170177ff..0000000000 --- a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/HealthCheckActionRequestModel.ts +++ /dev/null @@ -1,18 +0,0 @@ -/* generated using openapi-typescript-codegen -- do no edit */ -/* istanbul ignore file */ -/* tslint:disable */ -/* eslint-disable */ - -import type { ReferenceByIdModel } from './ReferenceByIdModel'; - -export type HealthCheckActionRequestModel = { - healthCheck: ReferenceByIdModel; - alias?: string | null; - name?: string | null; - description?: string | null; - valueRequired: boolean; - providedValue?: string | null; - providedValueValidation?: string | null; - providedValueValidationRegex?: string | null; -}; - diff --git a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/HealthCheckGroupPresentationModel.ts b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/HealthCheckGroupPresentationModel.ts deleted file mode 100644 index 08a8f79b0a..0000000000 --- a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/HealthCheckGroupPresentationModel.ts +++ /dev/null @@ -1,12 +0,0 @@ -/* generated using openapi-typescript-codegen -- do no edit */ -/* istanbul ignore file */ -/* tslint:disable */ -/* eslint-disable */ - -import type { HealthCheckModel } from './HealthCheckModel'; - -export type HealthCheckGroupPresentationModel = { - name: string; - checks: Array; -}; - diff --git a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/HealthCheckGroupResponseModel.ts b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/HealthCheckGroupResponseModel.ts deleted file mode 100644 index d807733fbb..0000000000 --- a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/HealthCheckGroupResponseModel.ts +++ /dev/null @@ -1,9 +0,0 @@ -/* generated using openapi-typescript-codegen -- do no edit */ -/* istanbul ignore file */ -/* tslint:disable */ -/* eslint-disable */ - -export type HealthCheckGroupResponseModel = { - name: string; -}; - diff --git a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/HealthCheckGroupWithResultResponseModel.ts b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/HealthCheckGroupWithResultResponseModel.ts deleted file mode 100644 index f2822cccbe..0000000000 --- a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/HealthCheckGroupWithResultResponseModel.ts +++ /dev/null @@ -1,11 +0,0 @@ -/* generated using openapi-typescript-codegen -- do no edit */ -/* istanbul ignore file */ -/* tslint:disable */ -/* eslint-disable */ - -import type { HealthCheckWithResultPresentationModel } from './HealthCheckWithResultPresentationModel'; - -export type HealthCheckGroupWithResultResponseModel = { - checks: Array; -}; - diff --git a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/HealthCheckModel.ts b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/HealthCheckModel.ts deleted file mode 100644 index 4ceadfbc4f..0000000000 --- a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/HealthCheckModel.ts +++ /dev/null @@ -1,11 +0,0 @@ -/* generated using openapi-typescript-codegen -- do no edit */ -/* istanbul ignore file */ -/* tslint:disable */ -/* eslint-disable */ - -export type HealthCheckModel = { - id: string; - name: string; - description?: string | null; -}; - diff --git a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/HealthCheckResultResponseModel.ts b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/HealthCheckResultResponseModel.ts deleted file mode 100644 index 036976ee4e..0000000000 --- a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/HealthCheckResultResponseModel.ts +++ /dev/null @@ -1,15 +0,0 @@ -/* generated using openapi-typescript-codegen -- do no edit */ -/* istanbul ignore file */ -/* tslint:disable */ -/* eslint-disable */ - -import type { HealthCheckActionRequestModel } from './HealthCheckActionRequestModel'; -import type { StatusResultTypeModel } from './StatusResultTypeModel'; - -export type HealthCheckResultResponseModel = { - message: string; - resultType: StatusResultTypeModel; - actions?: Array | null; - readMoreLink?: string | null; -}; - diff --git a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/HealthCheckWithResultPresentationModel.ts b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/HealthCheckWithResultPresentationModel.ts deleted file mode 100644 index 48b5e80b41..0000000000 --- a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/HealthCheckWithResultPresentationModel.ts +++ /dev/null @@ -1,12 +0,0 @@ -/* generated using openapi-typescript-codegen -- do no edit */ -/* istanbul ignore file */ -/* tslint:disable */ -/* eslint-disable */ - -import type { HealthCheckResultResponseModel } from './HealthCheckResultResponseModel'; - -export type HealthCheckWithResultPresentationModel = { - id: string; - results?: Array | null; -}; - diff --git a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/HealthStatusModel.ts b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/HealthStatusModel.ts deleted file mode 100644 index 2bbbc0ecf3..0000000000 --- a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/HealthStatusModel.ts +++ /dev/null @@ -1,10 +0,0 @@ -/* generated using openapi-typescript-codegen -- do no edit */ -/* istanbul ignore file */ -/* tslint:disable */ -/* eslint-disable */ - -export enum HealthStatusModel { - HEALTHY = 'Healthy', - UNHEALTHY = 'Unhealthy', - REBUILDING = 'Rebuilding', -} diff --git a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/HelpPageResponseModel.ts b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/HelpPageResponseModel.ts deleted file mode 100644 index d5d81e8935..0000000000 --- a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/HelpPageResponseModel.ts +++ /dev/null @@ -1,12 +0,0 @@ -/* generated using openapi-typescript-codegen -- do no edit */ -/* istanbul ignore file */ -/* tslint:disable */ -/* eslint-disable */ - -export type HelpPageResponseModel = { - name?: string | null; - description?: string | null; - url?: string | null; - type?: string | null; -}; - diff --git a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/ImportDictionaryRequestModel.ts b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/ImportDictionaryRequestModel.ts deleted file mode 100644 index 13e5557845..0000000000 --- a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/ImportDictionaryRequestModel.ts +++ /dev/null @@ -1,12 +0,0 @@ -/* generated using openapi-typescript-codegen -- do no edit */ -/* istanbul ignore file */ -/* tslint:disable */ -/* eslint-disable */ - -import type { ReferenceByIdModel } from './ReferenceByIdModel'; - -export type ImportDictionaryRequestModel = { - temporaryFile: ReferenceByIdModel; - parent?: ReferenceByIdModel | null; -}; - diff --git a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/IndexResponseModel.ts b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/IndexResponseModel.ts deleted file mode 100644 index 8c957644e5..0000000000 --- a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/IndexResponseModel.ts +++ /dev/null @@ -1,17 +0,0 @@ -/* generated using openapi-typescript-codegen -- do no edit */ -/* istanbul ignore file */ -/* tslint:disable */ -/* eslint-disable */ - -import type { HealthStatusModel } from './HealthStatusModel'; - -export type IndexResponseModel = { - name: string; - healthStatus: HealthStatusModel; - canRebuild: boolean; - searcherName: string; - documentCount: number; - fieldCount: number; - providerProperties?: Record | null; -}; - diff --git a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/InstallRequestModel.ts b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/InstallRequestModel.ts deleted file mode 100644 index 5b63007859..0000000000 --- a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/InstallRequestModel.ts +++ /dev/null @@ -1,15 +0,0 @@ -/* generated using openapi-typescript-codegen -- do no edit */ -/* istanbul ignore file */ -/* tslint:disable */ -/* eslint-disable */ - -import type { DatabaseInstallRequestModel } from './DatabaseInstallRequestModel'; -import type { TelemetryLevelModel } from './TelemetryLevelModel'; -import type { UserInstallRequestModel } from './UserInstallRequestModel'; - -export type InstallRequestModel = { - user: UserInstallRequestModel; - database: DatabaseInstallRequestModel; - telemetryLevel: TelemetryLevelModel; -}; - diff --git a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/InstallSettingsResponseModel.ts b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/InstallSettingsResponseModel.ts deleted file mode 100644 index f9bef5cad6..0000000000 --- a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/InstallSettingsResponseModel.ts +++ /dev/null @@ -1,13 +0,0 @@ -/* generated using openapi-typescript-codegen -- do no edit */ -/* istanbul ignore file */ -/* tslint:disable */ -/* eslint-disable */ - -import type { DatabaseSettingsPresentationModel } from './DatabaseSettingsPresentationModel'; -import type { UserSettingsPresentationModel } from './UserSettingsPresentationModel'; - -export type InstallSettingsResponseModel = { - user: UserSettingsPresentationModel; - databases: Array; -}; - diff --git a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/InviteUserRequestModel.ts b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/InviteUserRequestModel.ts deleted file mode 100644 index 242f7c1dd6..0000000000 --- a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/InviteUserRequestModel.ts +++ /dev/null @@ -1,14 +0,0 @@ -/* generated using openapi-typescript-codegen -- do no edit */ -/* istanbul ignore file */ -/* tslint:disable */ -/* eslint-disable */ - -export type InviteUserRequestModel = { - email: string; - userName: string; - name: string; - userGroupIds: Array; - id?: string | null; - message?: string | null; -}; - diff --git a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/ItemReferenceByIdResponseModel.ts b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/ItemReferenceByIdResponseModel.ts deleted file mode 100644 index 94a2eb42bc..0000000000 --- a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/ItemReferenceByIdResponseModel.ts +++ /dev/null @@ -1,9 +0,0 @@ -/* generated using openapi-typescript-codegen -- do no edit */ -/* istanbul ignore file */ -/* tslint:disable */ -/* eslint-disable */ - -export type ItemReferenceByIdResponseModel = { - id: string; -}; - diff --git a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/ItemSortingRequestModel.ts b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/ItemSortingRequestModel.ts deleted file mode 100644 index e5ef68e040..0000000000 --- a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/ItemSortingRequestModel.ts +++ /dev/null @@ -1,10 +0,0 @@ -/* generated using openapi-typescript-codegen -- do no edit */ -/* istanbul ignore file */ -/* tslint:disable */ -/* eslint-disable */ - -export type ItemSortingRequestModel = { - id: string; - sortOrder: number; -}; - diff --git a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/LanguageItemResponseModel.ts b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/LanguageItemResponseModel.ts deleted file mode 100644 index f503073ca4..0000000000 --- a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/LanguageItemResponseModel.ts +++ /dev/null @@ -1,10 +0,0 @@ -/* generated using openapi-typescript-codegen -- do no edit */ -/* istanbul ignore file */ -/* tslint:disable */ -/* eslint-disable */ - -export type LanguageItemResponseModel = { - name: string; - isoCode: string; -}; - diff --git a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/LanguageResponseModel.ts b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/LanguageResponseModel.ts deleted file mode 100644 index 89e2b03c92..0000000000 --- a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/LanguageResponseModel.ts +++ /dev/null @@ -1,13 +0,0 @@ -/* generated using openapi-typescript-codegen -- do no edit */ -/* istanbul ignore file */ -/* tslint:disable */ -/* eslint-disable */ - -export type LanguageResponseModel = { - name: string; - isDefault: boolean; - isMandatory: boolean; - fallbackIsoCode?: string | null; - isoCode: string; -}; - diff --git a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/LinkedLoginModel.ts b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/LinkedLoginModel.ts deleted file mode 100644 index ed7be18fd3..0000000000 --- a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/LinkedLoginModel.ts +++ /dev/null @@ -1,10 +0,0 @@ -/* generated using openapi-typescript-codegen -- do no edit */ -/* istanbul ignore file */ -/* tslint:disable */ -/* eslint-disable */ - -export type LinkedLoginModel = { - providerName: string; - providerKey: string; -}; - diff --git a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/LinkedLoginsRequestModel.ts b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/LinkedLoginsRequestModel.ts deleted file mode 100644 index 49f3947868..0000000000 --- a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/LinkedLoginsRequestModel.ts +++ /dev/null @@ -1,11 +0,0 @@ -/* generated using openapi-typescript-codegen -- do no edit */ -/* istanbul ignore file */ -/* tslint:disable */ -/* eslint-disable */ - -import type { LinkedLoginModel } from './LinkedLoginModel'; - -export type LinkedLoginsRequestModel = { - linkedLogins: Array; -}; - diff --git a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/LogLevelCountsReponseModel.ts b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/LogLevelCountsReponseModel.ts deleted file mode 100644 index d1d988ec8f..0000000000 --- a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/LogLevelCountsReponseModel.ts +++ /dev/null @@ -1,13 +0,0 @@ -/* generated using openapi-typescript-codegen -- do no edit */ -/* istanbul ignore file */ -/* tslint:disable */ -/* eslint-disable */ - -export type LogLevelCountsReponseModel = { - information: number; - debug: number; - warning: number; - error: number; - fatal: number; -}; - diff --git a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/LogLevelModel.ts b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/LogLevelModel.ts deleted file mode 100644 index 7de81d185c..0000000000 --- a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/LogLevelModel.ts +++ /dev/null @@ -1,13 +0,0 @@ -/* generated using openapi-typescript-codegen -- do no edit */ -/* istanbul ignore file */ -/* tslint:disable */ -/* eslint-disable */ - -export enum LogLevelModel { - VERBOSE = 'Verbose', - DEBUG = 'Debug', - INFORMATION = 'Information', - WARNING = 'Warning', - ERROR = 'Error', - FATAL = 'Fatal', -} diff --git a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/LogMessagePropertyPresentationModel.ts b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/LogMessagePropertyPresentationModel.ts deleted file mode 100644 index de18608397..0000000000 --- a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/LogMessagePropertyPresentationModel.ts +++ /dev/null @@ -1,10 +0,0 @@ -/* generated using openapi-typescript-codegen -- do no edit */ -/* istanbul ignore file */ -/* tslint:disable */ -/* eslint-disable */ - -export type LogMessagePropertyPresentationModel = { - name: string; - value?: string | null; -}; - diff --git a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/LogMessageResponseModel.ts b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/LogMessageResponseModel.ts deleted file mode 100644 index 9a219c4245..0000000000 --- a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/LogMessageResponseModel.ts +++ /dev/null @@ -1,17 +0,0 @@ -/* generated using openapi-typescript-codegen -- do no edit */ -/* istanbul ignore file */ -/* tslint:disable */ -/* eslint-disable */ - -import type { LogLevelModel } from './LogLevelModel'; -import type { LogMessagePropertyPresentationModel } from './LogMessagePropertyPresentationModel'; - -export type LogMessageResponseModel = { - timestamp: string; - level: LogLevelModel; - messageTemplate?: string | null; - renderedMessage?: string | null; - properties: Array; - exception?: string | null; -}; - diff --git a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/LogTemplateResponseModel.ts b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/LogTemplateResponseModel.ts deleted file mode 100644 index 90ef6d4318..0000000000 --- a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/LogTemplateResponseModel.ts +++ /dev/null @@ -1,10 +0,0 @@ -/* generated using openapi-typescript-codegen -- do no edit */ -/* istanbul ignore file */ -/* tslint:disable */ -/* eslint-disable */ - -export type LogTemplateResponseModel = { - messageTemplate?: string | null; - count: number; -}; - diff --git a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/LoggerResponseModel.ts b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/LoggerResponseModel.ts deleted file mode 100644 index 3c1f88ffd2..0000000000 --- a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/LoggerResponseModel.ts +++ /dev/null @@ -1,12 +0,0 @@ -/* generated using openapi-typescript-codegen -- do no edit */ -/* istanbul ignore file */ -/* tslint:disable */ -/* eslint-disable */ - -import type { LogLevelModel } from './LogLevelModel'; - -export type LoggerResponseModel = { - name: string; - level: LogLevelModel; -}; - diff --git a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/MediaCollectionResponseModel.ts b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/MediaCollectionResponseModel.ts deleted file mode 100644 index beae6558f5..0000000000 --- a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/MediaCollectionResponseModel.ts +++ /dev/null @@ -1,18 +0,0 @@ -/* generated using openapi-typescript-codegen -- do no edit */ -/* istanbul ignore file */ -/* tslint:disable */ -/* eslint-disable */ - -import type { MediaTypeCollectionReferenceResponseModel } from './MediaTypeCollectionReferenceResponseModel'; -import type { MediaValueModel } from './MediaValueModel'; -import type { MediaVariantResponseModel } from './MediaVariantResponseModel'; - -export type MediaCollectionResponseModel = { - values: Array; - variants: Array; - id: string; - creator?: string | null; - sortOrder: number; - mediaType: MediaTypeCollectionReferenceResponseModel; -}; - diff --git a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/MediaConfigurationResponseModel.ts b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/MediaConfigurationResponseModel.ts deleted file mode 100644 index 589e07ddc6..0000000000 --- a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/MediaConfigurationResponseModel.ts +++ /dev/null @@ -1,12 +0,0 @@ -/* generated using openapi-typescript-codegen -- do no edit */ -/* istanbul ignore file */ -/* tslint:disable */ -/* eslint-disable */ - -export type MediaConfigurationResponseModel = { - disableDeleteWhenReferenced: boolean; - disableUnpublishWhenReferenced: boolean; - sanitizeTinyMce: boolean; - reservedFieldNames: Array; -}; - diff --git a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/MediaItemResponseModel.ts b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/MediaItemResponseModel.ts deleted file mode 100644 index 71a85946b8..0000000000 --- a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/MediaItemResponseModel.ts +++ /dev/null @@ -1,15 +0,0 @@ -/* generated using openapi-typescript-codegen -- do no edit */ -/* istanbul ignore file */ -/* tslint:disable */ -/* eslint-disable */ - -import type { MediaTypeReferenceResponseModel } from './MediaTypeReferenceResponseModel'; -import type { VariantItemResponseModel } from './VariantItemResponseModel'; - -export type MediaItemResponseModel = { - id: string; - isTrashed: boolean; - mediaType: MediaTypeReferenceResponseModel; - variants: Array; -}; - diff --git a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/MediaRecycleBinItemResponseModel.ts b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/MediaRecycleBinItemResponseModel.ts deleted file mode 100644 index f2c9eea412..0000000000 --- a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/MediaRecycleBinItemResponseModel.ts +++ /dev/null @@ -1,17 +0,0 @@ -/* generated using openapi-typescript-codegen -- do no edit */ -/* istanbul ignore file */ -/* tslint:disable */ -/* eslint-disable */ - -import type { ItemReferenceByIdResponseModel } from './ItemReferenceByIdResponseModel'; -import type { MediaTypeReferenceResponseModel } from './MediaTypeReferenceResponseModel'; -import type { VariantItemResponseModel } from './VariantItemResponseModel'; - -export type MediaRecycleBinItemResponseModel = { - id: string; - hasChildren: boolean; - parent?: ItemReferenceByIdResponseModel | null; - mediaType: MediaTypeReferenceResponseModel; - variants: Array; -}; - diff --git a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/MediaReferenceResponseModel.ts b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/MediaReferenceResponseModel.ts deleted file mode 100644 index 51776bc711..0000000000 --- a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/MediaReferenceResponseModel.ts +++ /dev/null @@ -1,13 +0,0 @@ -/* generated using openapi-typescript-codegen -- do no edit */ -/* istanbul ignore file */ -/* tslint:disable */ -/* eslint-disable */ - -import type { TrackedReferenceMediaTypeModel } from './TrackedReferenceMediaTypeModel'; - -export type MediaReferenceResponseModel = { - id: string; - name?: string | null; - mediaType: TrackedReferenceMediaTypeModel; -}; - diff --git a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/MediaResponseModel.ts b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/MediaResponseModel.ts deleted file mode 100644 index ce38706af1..0000000000 --- a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/MediaResponseModel.ts +++ /dev/null @@ -1,19 +0,0 @@ -/* generated using openapi-typescript-codegen -- do no edit */ -/* istanbul ignore file */ -/* tslint:disable */ -/* eslint-disable */ - -import type { MediaTypeReferenceResponseModel } from './MediaTypeReferenceResponseModel'; -import type { MediaUrlInfoModel } from './MediaUrlInfoModel'; -import type { MediaValueModel } from './MediaValueModel'; -import type { MediaVariantResponseModel } from './MediaVariantResponseModel'; - -export type MediaResponseModel = { - values: Array; - variants: Array; - id: string; - urls: Array; - isTrashed: boolean; - mediaType: MediaTypeReferenceResponseModel; -}; - diff --git a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/MediaTreeItemResponseModel.ts b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/MediaTreeItemResponseModel.ts deleted file mode 100644 index 38f5c47d32..0000000000 --- a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/MediaTreeItemResponseModel.ts +++ /dev/null @@ -1,19 +0,0 @@ -/* generated using openapi-typescript-codegen -- do no edit */ -/* istanbul ignore file */ -/* tslint:disable */ -/* eslint-disable */ - -import type { MediaTypeReferenceResponseModel } from './MediaTypeReferenceResponseModel'; -import type { ReferenceByIdModel } from './ReferenceByIdModel'; -import type { VariantItemResponseModel } from './VariantItemResponseModel'; - -export type MediaTreeItemResponseModel = { - hasChildren: boolean; - parent?: ReferenceByIdModel | null; - noAccess: boolean; - isTrashed: boolean; - id: string; - mediaType: MediaTypeReferenceResponseModel; - variants: Array; -}; - diff --git a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/MediaTypeCollectionReferenceResponseModel.ts b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/MediaTypeCollectionReferenceResponseModel.ts deleted file mode 100644 index 18201c74bd..0000000000 --- a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/MediaTypeCollectionReferenceResponseModel.ts +++ /dev/null @@ -1,11 +0,0 @@ -/* generated using openapi-typescript-codegen -- do no edit */ -/* istanbul ignore file */ -/* tslint:disable */ -/* eslint-disable */ - -export type MediaTypeCollectionReferenceResponseModel = { - id: string; - alias: string; - icon: string; -}; - diff --git a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/MediaTypeCompositionModel.ts b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/MediaTypeCompositionModel.ts deleted file mode 100644 index 26f74e7068..0000000000 --- a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/MediaTypeCompositionModel.ts +++ /dev/null @@ -1,13 +0,0 @@ -/* generated using openapi-typescript-codegen -- do no edit */ -/* istanbul ignore file */ -/* tslint:disable */ -/* eslint-disable */ - -import type { CompositionTypeModel } from './CompositionTypeModel'; -import type { ReferenceByIdModel } from './ReferenceByIdModel'; - -export type MediaTypeCompositionModel = { - mediaType: ReferenceByIdModel; - compositionType: CompositionTypeModel; -}; - diff --git a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/MediaTypeCompositionRequestModel.ts b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/MediaTypeCompositionRequestModel.ts deleted file mode 100644 index 6926a4c8f0..0000000000 --- a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/MediaTypeCompositionRequestModel.ts +++ /dev/null @@ -1,11 +0,0 @@ -/* generated using openapi-typescript-codegen -- do no edit */ -/* istanbul ignore file */ -/* tslint:disable */ -/* eslint-disable */ - -export type MediaTypeCompositionRequestModel = { - id?: string | null; - currentPropertyAliases: Array; - currentCompositeIds: Array; -}; - diff --git a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/MediaTypeCompositionResponseModel.ts b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/MediaTypeCompositionResponseModel.ts deleted file mode 100644 index 9f575248b3..0000000000 --- a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/MediaTypeCompositionResponseModel.ts +++ /dev/null @@ -1,11 +0,0 @@ -/* generated using openapi-typescript-codegen -- do no edit */ -/* istanbul ignore file */ -/* tslint:disable */ -/* eslint-disable */ - -export type MediaTypeCompositionResponseModel = { - id: string; - name: string; - icon: string; -}; - diff --git a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/MediaTypeItemResponseModel.ts b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/MediaTypeItemResponseModel.ts deleted file mode 100644 index f06bb0c616..0000000000 --- a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/MediaTypeItemResponseModel.ts +++ /dev/null @@ -1,11 +0,0 @@ -/* generated using openapi-typescript-codegen -- do no edit */ -/* istanbul ignore file */ -/* tslint:disable */ -/* eslint-disable */ - -export type MediaTypeItemResponseModel = { - id: string; - name: string; - icon?: string | null; -}; - diff --git a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/MediaTypePropertyTypeContainerResponseModel.ts b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/MediaTypePropertyTypeContainerResponseModel.ts deleted file mode 100644 index 7010d27f93..0000000000 --- a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/MediaTypePropertyTypeContainerResponseModel.ts +++ /dev/null @@ -1,15 +0,0 @@ -/* generated using openapi-typescript-codegen -- do no edit */ -/* istanbul ignore file */ -/* tslint:disable */ -/* eslint-disable */ - -import type { ReferenceByIdModel } from './ReferenceByIdModel'; - -export type MediaTypePropertyTypeContainerResponseModel = { - id: string; - parent?: ReferenceByIdModel | null; - name?: string | null; - type: string; - sortOrder: number; -}; - diff --git a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/MediaTypePropertyTypeResponseModel.ts b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/MediaTypePropertyTypeResponseModel.ts deleted file mode 100644 index fce0ed3697..0000000000 --- a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/MediaTypePropertyTypeResponseModel.ts +++ /dev/null @@ -1,23 +0,0 @@ -/* generated using openapi-typescript-codegen -- do no edit */ -/* istanbul ignore file */ -/* tslint:disable */ -/* eslint-disable */ - -import type { PropertyTypeAppearanceModel } from './PropertyTypeAppearanceModel'; -import type { PropertyTypeValidationModel } from './PropertyTypeValidationModel'; -import type { ReferenceByIdModel } from './ReferenceByIdModel'; - -export type MediaTypePropertyTypeResponseModel = { - id: string; - container?: ReferenceByIdModel | null; - sortOrder: number; - alias: string; - name: string; - description?: string | null; - dataType: ReferenceByIdModel; - variesByCulture: boolean; - variesBySegment: boolean; - validation: PropertyTypeValidationModel; - appearance: PropertyTypeAppearanceModel; -}; - diff --git a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/MediaTypeReferenceResponseModel.ts b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/MediaTypeReferenceResponseModel.ts deleted file mode 100644 index 7c80250be0..0000000000 --- a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/MediaTypeReferenceResponseModel.ts +++ /dev/null @@ -1,13 +0,0 @@ -/* generated using openapi-typescript-codegen -- do no edit */ -/* istanbul ignore file */ -/* tslint:disable */ -/* eslint-disable */ - -import type { ReferenceByIdModel } from './ReferenceByIdModel'; - -export type MediaTypeReferenceResponseModel = { - id: string; - icon: string; - collection?: ReferenceByIdModel | null; -}; - diff --git a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/MediaTypeResponseModel.ts b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/MediaTypeResponseModel.ts deleted file mode 100644 index a555ac9333..0000000000 --- a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/MediaTypeResponseModel.ts +++ /dev/null @@ -1,28 +0,0 @@ -/* generated using openapi-typescript-codegen -- do no edit */ -/* istanbul ignore file */ -/* tslint:disable */ -/* eslint-disable */ - -import type { MediaTypeCompositionModel } from './MediaTypeCompositionModel'; -import type { MediaTypePropertyTypeContainerResponseModel } from './MediaTypePropertyTypeContainerResponseModel'; -import type { MediaTypePropertyTypeResponseModel } from './MediaTypePropertyTypeResponseModel'; -import type { MediaTypeSortModel } from './MediaTypeSortModel'; -import type { ReferenceByIdModel } from './ReferenceByIdModel'; - -export type MediaTypeResponseModel = { - alias: string; - name: string; - description?: string | null; - icon: string; - allowedAsRoot: boolean; - variesByCulture: boolean; - variesBySegment: boolean; - collection?: ReferenceByIdModel | null; - isElement: boolean; - properties: Array; - containers: Array; - id: string; - allowedMediaTypes: Array; - compositions: Array; -}; - diff --git a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/MediaTypeSortModel.ts b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/MediaTypeSortModel.ts deleted file mode 100644 index a6305256c5..0000000000 --- a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/MediaTypeSortModel.ts +++ /dev/null @@ -1,12 +0,0 @@ -/* generated using openapi-typescript-codegen -- do no edit */ -/* istanbul ignore file */ -/* tslint:disable */ -/* eslint-disable */ - -import type { ReferenceByIdModel } from './ReferenceByIdModel'; - -export type MediaTypeSortModel = { - mediaType: ReferenceByIdModel; - sortOrder: number; -}; - diff --git a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/MediaTypeTreeItemResponseModel.ts b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/MediaTypeTreeItemResponseModel.ts deleted file mode 100644 index 0b87665e8b..0000000000 --- a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/MediaTypeTreeItemResponseModel.ts +++ /dev/null @@ -1,16 +0,0 @@ -/* generated using openapi-typescript-codegen -- do no edit */ -/* istanbul ignore file */ -/* tslint:disable */ -/* eslint-disable */ - -import type { ReferenceByIdModel } from './ReferenceByIdModel'; - -export type MediaTypeTreeItemResponseModel = { - hasChildren: boolean; - id: string; - parent?: ReferenceByIdModel | null; - name: string; - isFolder: boolean; - icon: string; -}; - diff --git a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/MediaUrlInfoModel.ts b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/MediaUrlInfoModel.ts deleted file mode 100644 index 59052ac8bf..0000000000 --- a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/MediaUrlInfoModel.ts +++ /dev/null @@ -1,10 +0,0 @@ -/* generated using openapi-typescript-codegen -- do no edit */ -/* istanbul ignore file */ -/* tslint:disable */ -/* eslint-disable */ - -export type MediaUrlInfoModel = { - culture?: string | null; - url: string; -}; - diff --git a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/MediaValueModel.ts b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/MediaValueModel.ts deleted file mode 100644 index 895901a0ba..0000000000 --- a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/MediaValueModel.ts +++ /dev/null @@ -1,12 +0,0 @@ -/* generated using openapi-typescript-codegen -- do no edit */ -/* istanbul ignore file */ -/* tslint:disable */ -/* eslint-disable */ - -export type MediaValueModel = { - culture?: string | null; - segment?: string | null; - alias: string; - value?: any; -}; - diff --git a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/MediaVariantRequestModel.ts b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/MediaVariantRequestModel.ts deleted file mode 100644 index 6ca86fbd75..0000000000 --- a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/MediaVariantRequestModel.ts +++ /dev/null @@ -1,11 +0,0 @@ -/* generated using openapi-typescript-codegen -- do no edit */ -/* istanbul ignore file */ -/* tslint:disable */ -/* eslint-disable */ - -export type MediaVariantRequestModel = { - culture?: string | null; - segment?: string | null; - name: string; -}; - diff --git a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/MediaVariantResponseModel.ts b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/MediaVariantResponseModel.ts deleted file mode 100644 index fc5a78cf90..0000000000 --- a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/MediaVariantResponseModel.ts +++ /dev/null @@ -1,13 +0,0 @@ -/* generated using openapi-typescript-codegen -- do no edit */ -/* istanbul ignore file */ -/* tslint:disable */ -/* eslint-disable */ - -export type MediaVariantResponseModel = { - culture?: string | null; - segment?: string | null; - name: string; - createDate: string; - updateDate: string; -}; - diff --git a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/MemberConfigurationResponseModel.ts b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/MemberConfigurationResponseModel.ts deleted file mode 100644 index de2db5f497..0000000000 --- a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/MemberConfigurationResponseModel.ts +++ /dev/null @@ -1,9 +0,0 @@ -/* generated using openapi-typescript-codegen -- do no edit */ -/* istanbul ignore file */ -/* tslint:disable */ -/* eslint-disable */ - -export type MemberConfigurationResponseModel = { - reservedFieldNames: Array; -}; - diff --git a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/MemberGroupItemResponseModel.ts b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/MemberGroupItemResponseModel.ts deleted file mode 100644 index 73d64914d1..0000000000 --- a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/MemberGroupItemResponseModel.ts +++ /dev/null @@ -1,10 +0,0 @@ -/* generated using openapi-typescript-codegen -- do no edit */ -/* istanbul ignore file */ -/* tslint:disable */ -/* eslint-disable */ - -export type MemberGroupItemResponseModel = { - id: string; - name: string; -}; - diff --git a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/MemberGroupResponseModel.ts b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/MemberGroupResponseModel.ts deleted file mode 100644 index 6488bffe06..0000000000 --- a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/MemberGroupResponseModel.ts +++ /dev/null @@ -1,10 +0,0 @@ -/* generated using openapi-typescript-codegen -- do no edit */ -/* istanbul ignore file */ -/* tslint:disable */ -/* eslint-disable */ - -export type MemberGroupResponseModel = { - name: string; - id: string; -}; - diff --git a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/MemberItemResponseModel.ts b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/MemberItemResponseModel.ts deleted file mode 100644 index 68839f0b2e..0000000000 --- a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/MemberItemResponseModel.ts +++ /dev/null @@ -1,14 +0,0 @@ -/* generated using openapi-typescript-codegen -- do no edit */ -/* istanbul ignore file */ -/* tslint:disable */ -/* eslint-disable */ - -import type { MemberTypeReferenceResponseModel } from './MemberTypeReferenceResponseModel'; -import type { VariantItemResponseModel } from './VariantItemResponseModel'; - -export type MemberItemResponseModel = { - id: string; - memberType: MemberTypeReferenceResponseModel; - variants: Array; -}; - diff --git a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/MemberResponseModel.ts b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/MemberResponseModel.ts deleted file mode 100644 index 96f4773ecf..0000000000 --- a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/MemberResponseModel.ts +++ /dev/null @@ -1,26 +0,0 @@ -/* generated using openapi-typescript-codegen -- do no edit */ -/* istanbul ignore file */ -/* tslint:disable */ -/* eslint-disable */ - -import type { MemberTypeReferenceResponseModel } from './MemberTypeReferenceResponseModel'; -import type { MemberValueModel } from './MemberValueModel'; -import type { MemberVariantResponseModel } from './MemberVariantResponseModel'; - -export type MemberResponseModel = { - values: Array; - variants: Array; - id: string; - email: string; - username: string; - memberType: MemberTypeReferenceResponseModel; - isApproved: boolean; - isLockedOut: boolean; - isTwoFactorEnabled: boolean; - failedPasswordAttempts: number; - lastLoginDate?: string | null; - lastLockoutDate?: string | null; - lastPasswordChangeDate?: string | null; - groups: Array; -}; - diff --git a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/MemberTypeCompositionModel.ts b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/MemberTypeCompositionModel.ts deleted file mode 100644 index f6b0c3a8fa..0000000000 --- a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/MemberTypeCompositionModel.ts +++ /dev/null @@ -1,13 +0,0 @@ -/* generated using openapi-typescript-codegen -- do no edit */ -/* istanbul ignore file */ -/* tslint:disable */ -/* eslint-disable */ - -import type { CompositionTypeModel } from './CompositionTypeModel'; -import type { ReferenceByIdModel } from './ReferenceByIdModel'; - -export type MemberTypeCompositionModel = { - memberType: ReferenceByIdModel; - compositionType: CompositionTypeModel; -}; - diff --git a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/MemberTypeCompositionRequestModel.ts b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/MemberTypeCompositionRequestModel.ts deleted file mode 100644 index ec2d8e6096..0000000000 --- a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/MemberTypeCompositionRequestModel.ts +++ /dev/null @@ -1,11 +0,0 @@ -/* generated using openapi-typescript-codegen -- do no edit */ -/* istanbul ignore file */ -/* tslint:disable */ -/* eslint-disable */ - -export type MemberTypeCompositionRequestModel = { - id?: string | null; - currentPropertyAliases: Array; - currentCompositeIds: Array; -}; - diff --git a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/MemberTypeCompositionResponseModel.ts b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/MemberTypeCompositionResponseModel.ts deleted file mode 100644 index 24766e9f04..0000000000 --- a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/MemberTypeCompositionResponseModel.ts +++ /dev/null @@ -1,11 +0,0 @@ -/* generated using openapi-typescript-codegen -- do no edit */ -/* istanbul ignore file */ -/* tslint:disable */ -/* eslint-disable */ - -export type MemberTypeCompositionResponseModel = { - id: string; - name: string; - icon: string; -}; - diff --git a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/MemberTypeItemResponseModel.ts b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/MemberTypeItemResponseModel.ts deleted file mode 100644 index 6c66cb2c50..0000000000 --- a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/MemberTypeItemResponseModel.ts +++ /dev/null @@ -1,11 +0,0 @@ -/* generated using openapi-typescript-codegen -- do no edit */ -/* istanbul ignore file */ -/* tslint:disable */ -/* eslint-disable */ - -export type MemberTypeItemResponseModel = { - id: string; - name: string; - icon?: string | null; -}; - diff --git a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/MemberTypePropertyTypeContainerResponseModel.ts b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/MemberTypePropertyTypeContainerResponseModel.ts deleted file mode 100644 index f71c060336..0000000000 --- a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/MemberTypePropertyTypeContainerResponseModel.ts +++ /dev/null @@ -1,15 +0,0 @@ -/* generated using openapi-typescript-codegen -- do no edit */ -/* istanbul ignore file */ -/* tslint:disable */ -/* eslint-disable */ - -import type { ReferenceByIdModel } from './ReferenceByIdModel'; - -export type MemberTypePropertyTypeContainerResponseModel = { - id: string; - parent?: ReferenceByIdModel | null; - name?: string | null; - type: string; - sortOrder: number; -}; - diff --git a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/MemberTypePropertyTypeResponseModel.ts b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/MemberTypePropertyTypeResponseModel.ts deleted file mode 100644 index 31eaefe421..0000000000 --- a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/MemberTypePropertyTypeResponseModel.ts +++ /dev/null @@ -1,26 +0,0 @@ -/* generated using openapi-typescript-codegen -- do no edit */ -/* istanbul ignore file */ -/* tslint:disable */ -/* eslint-disable */ - -import type { MemberTypePropertyTypeVisibilityModel } from './MemberTypePropertyTypeVisibilityModel'; -import type { PropertyTypeAppearanceModel } from './PropertyTypeAppearanceModel'; -import type { PropertyTypeValidationModel } from './PropertyTypeValidationModel'; -import type { ReferenceByIdModel } from './ReferenceByIdModel'; - -export type MemberTypePropertyTypeResponseModel = { - id: string; - container?: ReferenceByIdModel | null; - sortOrder: number; - alias: string; - name: string; - description?: string | null; - dataType: ReferenceByIdModel; - variesByCulture: boolean; - variesBySegment: boolean; - validation: PropertyTypeValidationModel; - appearance: PropertyTypeAppearanceModel; - isSensitive: boolean; - visibility: MemberTypePropertyTypeVisibilityModel; -}; - diff --git a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/MemberTypePropertyTypeVisibilityModel.ts b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/MemberTypePropertyTypeVisibilityModel.ts deleted file mode 100644 index 01e1db0fff..0000000000 --- a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/MemberTypePropertyTypeVisibilityModel.ts +++ /dev/null @@ -1,10 +0,0 @@ -/* generated using openapi-typescript-codegen -- do no edit */ -/* istanbul ignore file */ -/* tslint:disable */ -/* eslint-disable */ - -export type MemberTypePropertyTypeVisibilityModel = { - memberCanView: boolean; - memberCanEdit: boolean; -}; - diff --git a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/MemberTypeReferenceResponseModel.ts b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/MemberTypeReferenceResponseModel.ts deleted file mode 100644 index c475116817..0000000000 --- a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/MemberTypeReferenceResponseModel.ts +++ /dev/null @@ -1,13 +0,0 @@ -/* generated using openapi-typescript-codegen -- do no edit */ -/* istanbul ignore file */ -/* tslint:disable */ -/* eslint-disable */ - -import type { ReferenceByIdModel } from './ReferenceByIdModel'; - -export type MemberTypeReferenceResponseModel = { - id: string; - icon: string; - collection?: ReferenceByIdModel | null; -}; - diff --git a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/MemberTypeResponseModel.ts b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/MemberTypeResponseModel.ts deleted file mode 100644 index 1be5bcb73c..0000000000 --- a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/MemberTypeResponseModel.ts +++ /dev/null @@ -1,26 +0,0 @@ -/* generated using openapi-typescript-codegen -- do no edit */ -/* istanbul ignore file */ -/* tslint:disable */ -/* eslint-disable */ - -import type { MemberTypeCompositionModel } from './MemberTypeCompositionModel'; -import type { MemberTypePropertyTypeContainerResponseModel } from './MemberTypePropertyTypeContainerResponseModel'; -import type { MemberTypePropertyTypeResponseModel } from './MemberTypePropertyTypeResponseModel'; -import type { ReferenceByIdModel } from './ReferenceByIdModel'; - -export type MemberTypeResponseModel = { - alias: string; - name: string; - description?: string | null; - icon: string; - allowedAsRoot: boolean; - variesByCulture: boolean; - variesBySegment: boolean; - collection?: ReferenceByIdModel | null; - isElement: boolean; - properties: Array; - containers: Array; - id: string; - compositions: Array; -}; - diff --git a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/MemberValueModel.ts b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/MemberValueModel.ts deleted file mode 100644 index 2aa8c7666e..0000000000 --- a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/MemberValueModel.ts +++ /dev/null @@ -1,12 +0,0 @@ -/* generated using openapi-typescript-codegen -- do no edit */ -/* istanbul ignore file */ -/* tslint:disable */ -/* eslint-disable */ - -export type MemberValueModel = { - culture?: string | null; - segment?: string | null; - alias: string; - value?: any; -}; - diff --git a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/MemberVariantRequestModel.ts b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/MemberVariantRequestModel.ts deleted file mode 100644 index 4cac4a6d2f..0000000000 --- a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/MemberVariantRequestModel.ts +++ /dev/null @@ -1,11 +0,0 @@ -/* generated using openapi-typescript-codegen -- do no edit */ -/* istanbul ignore file */ -/* tslint:disable */ -/* eslint-disable */ - -export type MemberVariantRequestModel = { - culture?: string | null; - segment?: string | null; - name: string; -}; - diff --git a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/MemberVariantResponseModel.ts b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/MemberVariantResponseModel.ts deleted file mode 100644 index 157c54ea08..0000000000 --- a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/MemberVariantResponseModel.ts +++ /dev/null @@ -1,13 +0,0 @@ -/* generated using openapi-typescript-codegen -- do no edit */ -/* istanbul ignore file */ -/* tslint:disable */ -/* eslint-disable */ - -export type MemberVariantResponseModel = { - culture?: string | null; - segment?: string | null; - name: string; - createDate: string; - updateDate: string; -}; - diff --git a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/ModelsBuilderResponseModel.ts b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/ModelsBuilderResponseModel.ts deleted file mode 100644 index d5e29920fa..0000000000 --- a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/ModelsBuilderResponseModel.ts +++ /dev/null @@ -1,17 +0,0 @@ -/* generated using openapi-typescript-codegen -- do no edit */ -/* istanbul ignore file */ -/* tslint:disable */ -/* eslint-disable */ - -import type { ModelsModeModel } from './ModelsModeModel'; - -export type ModelsBuilderResponseModel = { - mode: ModelsModeModel; - canGenerate: boolean; - outOfDateModels: boolean; - lastError?: string | null; - version?: string | null; - modelsNamespace?: string | null; - trackingOutOfDateModels: boolean; -}; - diff --git a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/ModelsModeModel.ts b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/ModelsModeModel.ts deleted file mode 100644 index 42407aa100..0000000000 --- a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/ModelsModeModel.ts +++ /dev/null @@ -1,11 +0,0 @@ -/* generated using openapi-typescript-codegen -- do no edit */ -/* istanbul ignore file */ -/* tslint:disable */ -/* eslint-disable */ - -export enum ModelsModeModel { - NOTHING = 'Nothing', - IN_MEMORY_AUTO = 'InMemoryAuto', - SOURCE_CODE_MANUAL = 'SourceCodeManual', - SOURCE_CODE_AUTO = 'SourceCodeAuto', -} diff --git a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/MoveDataTypeRequestModel.ts b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/MoveDataTypeRequestModel.ts deleted file mode 100644 index db0b40b1ff..0000000000 --- a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/MoveDataTypeRequestModel.ts +++ /dev/null @@ -1,11 +0,0 @@ -/* generated using openapi-typescript-codegen -- do no edit */ -/* istanbul ignore file */ -/* tslint:disable */ -/* eslint-disable */ - -import type { ReferenceByIdModel } from './ReferenceByIdModel'; - -export type MoveDataTypeRequestModel = { - target?: ReferenceByIdModel | null; -}; - diff --git a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/MoveDictionaryRequestModel.ts b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/MoveDictionaryRequestModel.ts deleted file mode 100644 index 806e676efc..0000000000 --- a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/MoveDictionaryRequestModel.ts +++ /dev/null @@ -1,11 +0,0 @@ -/* generated using openapi-typescript-codegen -- do no edit */ -/* istanbul ignore file */ -/* tslint:disable */ -/* eslint-disable */ - -import type { ReferenceByIdModel } from './ReferenceByIdModel'; - -export type MoveDictionaryRequestModel = { - target?: ReferenceByIdModel | null; -}; - diff --git a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/MoveDocumentBlueprintRequestModel.ts b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/MoveDocumentBlueprintRequestModel.ts deleted file mode 100644 index f1df4f337e..0000000000 --- a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/MoveDocumentBlueprintRequestModel.ts +++ /dev/null @@ -1,11 +0,0 @@ -/* generated using openapi-typescript-codegen -- do no edit */ -/* istanbul ignore file */ -/* tslint:disable */ -/* eslint-disable */ - -import type { ReferenceByIdModel } from './ReferenceByIdModel'; - -export type MoveDocumentBlueprintRequestModel = { - target?: ReferenceByIdModel | null; -}; - diff --git a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/MoveDocumentRequestModel.ts b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/MoveDocumentRequestModel.ts deleted file mode 100644 index 0dd9fe3ca0..0000000000 --- a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/MoveDocumentRequestModel.ts +++ /dev/null @@ -1,11 +0,0 @@ -/* generated using openapi-typescript-codegen -- do no edit */ -/* istanbul ignore file */ -/* tslint:disable */ -/* eslint-disable */ - -import type { ReferenceByIdModel } from './ReferenceByIdModel'; - -export type MoveDocumentRequestModel = { - target?: ReferenceByIdModel | null; -}; - diff --git a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/MoveDocumentTypeRequestModel.ts b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/MoveDocumentTypeRequestModel.ts deleted file mode 100644 index b61b053f9d..0000000000 --- a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/MoveDocumentTypeRequestModel.ts +++ /dev/null @@ -1,11 +0,0 @@ -/* generated using openapi-typescript-codegen -- do no edit */ -/* istanbul ignore file */ -/* tslint:disable */ -/* eslint-disable */ - -import type { ReferenceByIdModel } from './ReferenceByIdModel'; - -export type MoveDocumentTypeRequestModel = { - target?: ReferenceByIdModel | null; -}; - diff --git a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/MoveMediaRequestModel.ts b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/MoveMediaRequestModel.ts deleted file mode 100644 index caea949b55..0000000000 --- a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/MoveMediaRequestModel.ts +++ /dev/null @@ -1,11 +0,0 @@ -/* generated using openapi-typescript-codegen -- do no edit */ -/* istanbul ignore file */ -/* tslint:disable */ -/* eslint-disable */ - -import type { ReferenceByIdModel } from './ReferenceByIdModel'; - -export type MoveMediaRequestModel = { - target?: ReferenceByIdModel | null; -}; - diff --git a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/MoveMediaTypeRequestModel.ts b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/MoveMediaTypeRequestModel.ts deleted file mode 100644 index d3b5a7c349..0000000000 --- a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/MoveMediaTypeRequestModel.ts +++ /dev/null @@ -1,11 +0,0 @@ -/* generated using openapi-typescript-codegen -- do no edit */ -/* istanbul ignore file */ -/* tslint:disable */ -/* eslint-disable */ - -import type { ReferenceByIdModel } from './ReferenceByIdModel'; - -export type MoveMediaTypeRequestModel = { - target?: ReferenceByIdModel | null; -}; - diff --git a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/NamedEntityTreeItemResponseModel.ts b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/NamedEntityTreeItemResponseModel.ts deleted file mode 100644 index 1deec9c6ef..0000000000 --- a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/NamedEntityTreeItemResponseModel.ts +++ /dev/null @@ -1,14 +0,0 @@ -/* generated using openapi-typescript-codegen -- do no edit */ -/* istanbul ignore file */ -/* tslint:disable */ -/* eslint-disable */ - -import type { ReferenceByIdModel } from './ReferenceByIdModel'; - -export type NamedEntityTreeItemResponseModel = { - hasChildren: boolean; - id: string; - parent?: ReferenceByIdModel | null; - name: string; -}; - diff --git a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/NoopSetupTwoFactorModel.ts b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/NoopSetupTwoFactorModel.ts deleted file mode 100644 index f3b8fe2761..0000000000 --- a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/NoopSetupTwoFactorModel.ts +++ /dev/null @@ -1,6 +0,0 @@ -/* generated using openapi-typescript-codegen -- do no edit */ -/* istanbul ignore file */ -/* tslint:disable */ -/* eslint-disable */ - -export type NoopSetupTwoFactorModel = Record; diff --git a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/NotificationHeaderModel.ts b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/NotificationHeaderModel.ts deleted file mode 100644 index 5121f24de8..0000000000 --- a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/NotificationHeaderModel.ts +++ /dev/null @@ -1,13 +0,0 @@ -/* generated using openapi-typescript-codegen -- do no edit */ -/* istanbul ignore file */ -/* tslint:disable */ -/* eslint-disable */ - -import type { EventMessageTypeModel } from './EventMessageTypeModel'; - -export type NotificationHeaderModel = { - message: string; - category: string; - type: EventMessageTypeModel; -}; - diff --git a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/ObjectTypeResponseModel.ts b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/ObjectTypeResponseModel.ts deleted file mode 100644 index c40acbeaf2..0000000000 --- a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/ObjectTypeResponseModel.ts +++ /dev/null @@ -1,10 +0,0 @@ -/* generated using openapi-typescript-codegen -- do no edit */ -/* istanbul ignore file */ -/* tslint:disable */ -/* eslint-disable */ - -export type ObjectTypeResponseModel = { - name?: string | null; - id: string; -}; - diff --git a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/OperatorModel.ts b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/OperatorModel.ts deleted file mode 100644 index 4e826935ff..0000000000 --- a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/OperatorModel.ts +++ /dev/null @@ -1,15 +0,0 @@ -/* generated using openapi-typescript-codegen -- do no edit */ -/* istanbul ignore file */ -/* tslint:disable */ -/* eslint-disable */ - -export enum OperatorModel { - EQUALS = 'Equals', - NOT_EQUALS = 'NotEquals', - CONTAINS = 'Contains', - NOT_CONTAINS = 'NotContains', - LESS_THAN = 'LessThan', - LESS_THAN_EQUAL_TO = 'LessThanEqualTo', - GREATER_THAN = 'GreaterThan', - GREATER_THAN_EQUAL_TO = 'GreaterThanEqualTo', -} diff --git a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/OutOfDateStatusResponseModel.ts b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/OutOfDateStatusResponseModel.ts deleted file mode 100644 index 59c7d9adab..0000000000 --- a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/OutOfDateStatusResponseModel.ts +++ /dev/null @@ -1,11 +0,0 @@ -/* generated using openapi-typescript-codegen -- do no edit */ -/* istanbul ignore file */ -/* tslint:disable */ -/* eslint-disable */ - -import type { OutOfDateTypeModel } from './OutOfDateTypeModel'; - -export type OutOfDateStatusResponseModel = { - status: OutOfDateTypeModel; -}; - diff --git a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/OutOfDateTypeModel.ts b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/OutOfDateTypeModel.ts deleted file mode 100644 index cfe0de4908..0000000000 --- a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/OutOfDateTypeModel.ts +++ /dev/null @@ -1,10 +0,0 @@ -/* generated using openapi-typescript-codegen -- do no edit */ -/* istanbul ignore file */ -/* tslint:disable */ -/* eslint-disable */ - -export enum OutOfDateTypeModel { - OUT_OF_DATE = 'OutOfDate', - CURRENT = 'Current', - UNKNOWN = 'Unknown', -} diff --git a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/PackageConfigurationResponseModel.ts b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/PackageConfigurationResponseModel.ts deleted file mode 100644 index 73634e2f42..0000000000 --- a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/PackageConfigurationResponseModel.ts +++ /dev/null @@ -1,9 +0,0 @@ -/* generated using openapi-typescript-codegen -- do no edit */ -/* istanbul ignore file */ -/* tslint:disable */ -/* eslint-disable */ - -export type PackageConfigurationResponseModel = { - marketplaceUrl: string; -}; - diff --git a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/PackageDefinitionResponseModel.ts b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/PackageDefinitionResponseModel.ts deleted file mode 100644 index 87ae43326b..0000000000 --- a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/PackageDefinitionResponseModel.ts +++ /dev/null @@ -1,24 +0,0 @@ -/* generated using openapi-typescript-codegen -- do no edit */ -/* istanbul ignore file */ -/* tslint:disable */ -/* eslint-disable */ - -export type PackageDefinitionResponseModel = { - name: string; - contentNodeId?: string | null; - contentLoadChildNodes: boolean; - mediaIds: Array; - mediaLoadChildNodes: boolean; - documentTypes: Array; - mediaTypes: Array; - dataTypes: Array; - templates: Array; - partialViews: Array; - stylesheets: Array; - scripts: Array; - languages: Array; - dictionaryItems: Array; - id: string; - packagePath: string; -}; - diff --git a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/PackageManifestResponseModel.ts b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/PackageManifestResponseModel.ts deleted file mode 100644 index c247a475af..0000000000 --- a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/PackageManifestResponseModel.ts +++ /dev/null @@ -1,11 +0,0 @@ -/* generated using openapi-typescript-codegen -- do no edit */ -/* istanbul ignore file */ -/* tslint:disable */ -/* eslint-disable */ - -export type PackageManifestResponseModel = { - name: string; - version?: string | null; - extensions: Array; -}; - diff --git a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/PackageMigrationStatusResponseModel.ts b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/PackageMigrationStatusResponseModel.ts deleted file mode 100644 index fa38491d4b..0000000000 --- a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/PackageMigrationStatusResponseModel.ts +++ /dev/null @@ -1,10 +0,0 @@ -/* generated using openapi-typescript-codegen -- do no edit */ -/* istanbul ignore file */ -/* tslint:disable */ -/* eslint-disable */ - -export type PackageMigrationStatusResponseModel = { - packageName: string; - hasPendingMigrations: boolean; -}; - diff --git a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/PagedAllowedDocumentTypeModel.ts b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/PagedAllowedDocumentTypeModel.ts deleted file mode 100644 index f0df413068..0000000000 --- a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/PagedAllowedDocumentTypeModel.ts +++ /dev/null @@ -1,12 +0,0 @@ -/* generated using openapi-typescript-codegen -- do no edit */ -/* istanbul ignore file */ -/* tslint:disable */ -/* eslint-disable */ - -import type { AllowedDocumentTypeModel } from './AllowedDocumentTypeModel'; - -export type PagedAllowedDocumentTypeModel = { - total: number; - items: Array; -}; - diff --git a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/PagedAllowedMediaTypeModel.ts b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/PagedAllowedMediaTypeModel.ts deleted file mode 100644 index 48ca45fd60..0000000000 --- a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/PagedAllowedMediaTypeModel.ts +++ /dev/null @@ -1,12 +0,0 @@ -/* generated using openapi-typescript-codegen -- do no edit */ -/* istanbul ignore file */ -/* tslint:disable */ -/* eslint-disable */ - -import type { AllowedMediaTypeModel } from './AllowedMediaTypeModel'; - -export type PagedAllowedMediaTypeModel = { - total: number; - items: Array; -}; - diff --git a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/PagedAuditLogResponseModel.ts b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/PagedAuditLogResponseModel.ts deleted file mode 100644 index 9dcaf0c733..0000000000 --- a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/PagedAuditLogResponseModel.ts +++ /dev/null @@ -1,12 +0,0 @@ -/* generated using openapi-typescript-codegen -- do no edit */ -/* istanbul ignore file */ -/* tslint:disable */ -/* eslint-disable */ - -import type { AuditLogResponseModel } from './AuditLogResponseModel'; - -export type PagedAuditLogResponseModel = { - total: number; - items: Array; -}; - diff --git a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/PagedAuditLogWithUsernameResponseModel.ts b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/PagedAuditLogWithUsernameResponseModel.ts deleted file mode 100644 index 5ff9186405..0000000000 --- a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/PagedAuditLogWithUsernameResponseModel.ts +++ /dev/null @@ -1,12 +0,0 @@ -/* generated using openapi-typescript-codegen -- do no edit */ -/* istanbul ignore file */ -/* tslint:disable */ -/* eslint-disable */ - -import type { AuditLogWithUsernameResponseModel } from './AuditLogWithUsernameResponseModel'; - -export type PagedAuditLogWithUsernameResponseModel = { - total: number; - items: Array; -}; - diff --git a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/PagedCultureReponseModel.ts b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/PagedCultureReponseModel.ts deleted file mode 100644 index 437ec404fa..0000000000 --- a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/PagedCultureReponseModel.ts +++ /dev/null @@ -1,12 +0,0 @@ -/* generated using openapi-typescript-codegen -- do no edit */ -/* istanbul ignore file */ -/* tslint:disable */ -/* eslint-disable */ - -import type { CultureReponseModel } from './CultureReponseModel'; - -export type PagedCultureReponseModel = { - total: number; - items: Array; -}; - diff --git a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/PagedDataTypeItemResponseModel.ts b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/PagedDataTypeItemResponseModel.ts deleted file mode 100644 index 6f06b0a81c..0000000000 --- a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/PagedDataTypeItemResponseModel.ts +++ /dev/null @@ -1,12 +0,0 @@ -/* generated using openapi-typescript-codegen -- do no edit */ -/* istanbul ignore file */ -/* tslint:disable */ -/* eslint-disable */ - -import type { DataTypeItemResponseModel } from './DataTypeItemResponseModel'; - -export type PagedDataTypeItemResponseModel = { - total: number; - items: Array; -}; - diff --git a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/PagedDataTypeTreeItemResponseModel.ts b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/PagedDataTypeTreeItemResponseModel.ts deleted file mode 100644 index fd81a53b86..0000000000 --- a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/PagedDataTypeTreeItemResponseModel.ts +++ /dev/null @@ -1,12 +0,0 @@ -/* generated using openapi-typescript-codegen -- do no edit */ -/* istanbul ignore file */ -/* tslint:disable */ -/* eslint-disable */ - -import type { DataTypeTreeItemResponseModel } from './DataTypeTreeItemResponseModel'; - -export type PagedDataTypeTreeItemResponseModel = { - total: number; - items: Array; -}; - diff --git a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/PagedDictionaryOverviewResponseModel.ts b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/PagedDictionaryOverviewResponseModel.ts deleted file mode 100644 index 7ce857aa31..0000000000 --- a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/PagedDictionaryOverviewResponseModel.ts +++ /dev/null @@ -1,12 +0,0 @@ -/* generated using openapi-typescript-codegen -- do no edit */ -/* istanbul ignore file */ -/* tslint:disable */ -/* eslint-disable */ - -import type { DictionaryOverviewResponseModel } from './DictionaryOverviewResponseModel'; - -export type PagedDictionaryOverviewResponseModel = { - total: number; - items: Array; -}; - diff --git a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/PagedDocumentBlueprintTreeItemResponseModel.ts b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/PagedDocumentBlueprintTreeItemResponseModel.ts deleted file mode 100644 index 9bf8a5c863..0000000000 --- a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/PagedDocumentBlueprintTreeItemResponseModel.ts +++ /dev/null @@ -1,12 +0,0 @@ -/* generated using openapi-typescript-codegen -- do no edit */ -/* istanbul ignore file */ -/* tslint:disable */ -/* eslint-disable */ - -import type { DocumentBlueprintTreeItemResponseModel } from './DocumentBlueprintTreeItemResponseModel'; - -export type PagedDocumentBlueprintTreeItemResponseModel = { - total: number; - items: Array; -}; - diff --git a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/PagedDocumentCollectionResponseModel.ts b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/PagedDocumentCollectionResponseModel.ts deleted file mode 100644 index b3b1a29bed..0000000000 --- a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/PagedDocumentCollectionResponseModel.ts +++ /dev/null @@ -1,12 +0,0 @@ -/* generated using openapi-typescript-codegen -- do no edit */ -/* istanbul ignore file */ -/* tslint:disable */ -/* eslint-disable */ - -import type { DocumentCollectionResponseModel } from './DocumentCollectionResponseModel'; - -export type PagedDocumentCollectionResponseModel = { - total: number; - items: Array; -}; - diff --git a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/PagedDocumentRecycleBinItemResponseModel.ts b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/PagedDocumentRecycleBinItemResponseModel.ts deleted file mode 100644 index 1a6958d31f..0000000000 --- a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/PagedDocumentRecycleBinItemResponseModel.ts +++ /dev/null @@ -1,12 +0,0 @@ -/* generated using openapi-typescript-codegen -- do no edit */ -/* istanbul ignore file */ -/* tslint:disable */ -/* eslint-disable */ - -import type { DocumentRecycleBinItemResponseModel } from './DocumentRecycleBinItemResponseModel'; - -export type PagedDocumentRecycleBinItemResponseModel = { - total: number; - items: Array; -}; - diff --git a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/PagedDocumentTreeItemResponseModel.ts b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/PagedDocumentTreeItemResponseModel.ts deleted file mode 100644 index 2399cfc00c..0000000000 --- a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/PagedDocumentTreeItemResponseModel.ts +++ /dev/null @@ -1,12 +0,0 @@ -/* generated using openapi-typescript-codegen -- do no edit */ -/* istanbul ignore file */ -/* tslint:disable */ -/* eslint-disable */ - -import type { DocumentTreeItemResponseModel } from './DocumentTreeItemResponseModel'; - -export type PagedDocumentTreeItemResponseModel = { - total: number; - items: Array; -}; - diff --git a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/PagedDocumentTypeTreeItemResponseModel.ts b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/PagedDocumentTypeTreeItemResponseModel.ts deleted file mode 100644 index 4f40e9efe9..0000000000 --- a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/PagedDocumentTypeTreeItemResponseModel.ts +++ /dev/null @@ -1,12 +0,0 @@ -/* generated using openapi-typescript-codegen -- do no edit */ -/* istanbul ignore file */ -/* tslint:disable */ -/* eslint-disable */ - -import type { DocumentTypeTreeItemResponseModel } from './DocumentTypeTreeItemResponseModel'; - -export type PagedDocumentTypeTreeItemResponseModel = { - total: number; - items: Array; -}; - diff --git a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/PagedDocumentVersionItemResponseModel.ts b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/PagedDocumentVersionItemResponseModel.ts deleted file mode 100644 index d1c818ae34..0000000000 --- a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/PagedDocumentVersionItemResponseModel.ts +++ /dev/null @@ -1,12 +0,0 @@ -/* generated using openapi-typescript-codegen -- do no edit */ -/* istanbul ignore file */ -/* tslint:disable */ -/* eslint-disable */ - -import type { DocumentVersionItemResponseModel } from './DocumentVersionItemResponseModel'; - -export type PagedDocumentVersionItemResponseModel = { - total: number; - items: Array; -}; - diff --git a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/PagedFileSystemTreeItemPresentationModel.ts b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/PagedFileSystemTreeItemPresentationModel.ts deleted file mode 100644 index 443c23df29..0000000000 --- a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/PagedFileSystemTreeItemPresentationModel.ts +++ /dev/null @@ -1,12 +0,0 @@ -/* generated using openapi-typescript-codegen -- do no edit */ -/* istanbul ignore file */ -/* tslint:disable */ -/* eslint-disable */ - -import type { FileSystemTreeItemPresentationModel } from './FileSystemTreeItemPresentationModel'; - -export type PagedFileSystemTreeItemPresentationModel = { - total: number; - items: Array; -}; - diff --git a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/PagedHealthCheckGroupResponseModel.ts b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/PagedHealthCheckGroupResponseModel.ts deleted file mode 100644 index d93685d9d4..0000000000 --- a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/PagedHealthCheckGroupResponseModel.ts +++ /dev/null @@ -1,12 +0,0 @@ -/* generated using openapi-typescript-codegen -- do no edit */ -/* istanbul ignore file */ -/* tslint:disable */ -/* eslint-disable */ - -import type { HealthCheckGroupResponseModel } from './HealthCheckGroupResponseModel'; - -export type PagedHealthCheckGroupResponseModel = { - total: number; - items: Array; -}; - diff --git a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/PagedHelpPageResponseModel.ts b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/PagedHelpPageResponseModel.ts deleted file mode 100644 index 04c50d6e85..0000000000 --- a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/PagedHelpPageResponseModel.ts +++ /dev/null @@ -1,12 +0,0 @@ -/* generated using openapi-typescript-codegen -- do no edit */ -/* istanbul ignore file */ -/* tslint:disable */ -/* eslint-disable */ - -import type { HelpPageResponseModel } from './HelpPageResponseModel'; - -export type PagedHelpPageResponseModel = { - total: number; - items: Array; -}; - diff --git a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/PagedIReferenceResponseModel.ts b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/PagedIReferenceResponseModel.ts deleted file mode 100644 index 4b8ea5164f..0000000000 --- a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/PagedIReferenceResponseModel.ts +++ /dev/null @@ -1,14 +0,0 @@ -/* generated using openapi-typescript-codegen -- do no edit */ -/* istanbul ignore file */ -/* tslint:disable */ -/* eslint-disable */ - -import type { DefaultReferenceResponseModel } from './DefaultReferenceResponseModel'; -import type { DocumentReferenceResponseModel } from './DocumentReferenceResponseModel'; -import type { MediaReferenceResponseModel } from './MediaReferenceResponseModel'; - -export type PagedIReferenceResponseModel = { - total: number; - items: Array<(DefaultReferenceResponseModel | DocumentReferenceResponseModel | MediaReferenceResponseModel)>; -}; - diff --git a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/PagedIndexResponseModel.ts b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/PagedIndexResponseModel.ts deleted file mode 100644 index 7c0c4638c3..0000000000 --- a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/PagedIndexResponseModel.ts +++ /dev/null @@ -1,12 +0,0 @@ -/* generated using openapi-typescript-codegen -- do no edit */ -/* istanbul ignore file */ -/* tslint:disable */ -/* eslint-disable */ - -import type { IndexResponseModel } from './IndexResponseModel'; - -export type PagedIndexResponseModel = { - total: number; - items: Array; -}; - diff --git a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/PagedLanguageResponseModel.ts b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/PagedLanguageResponseModel.ts deleted file mode 100644 index 37fe3d3913..0000000000 --- a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/PagedLanguageResponseModel.ts +++ /dev/null @@ -1,12 +0,0 @@ -/* generated using openapi-typescript-codegen -- do no edit */ -/* istanbul ignore file */ -/* tslint:disable */ -/* eslint-disable */ - -import type { LanguageResponseModel } from './LanguageResponseModel'; - -export type PagedLanguageResponseModel = { - total: number; - items: Array; -}; - diff --git a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/PagedLogMessageResponseModel.ts b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/PagedLogMessageResponseModel.ts deleted file mode 100644 index cf4fc66449..0000000000 --- a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/PagedLogMessageResponseModel.ts +++ /dev/null @@ -1,12 +0,0 @@ -/* generated using openapi-typescript-codegen -- do no edit */ -/* istanbul ignore file */ -/* tslint:disable */ -/* eslint-disable */ - -import type { LogMessageResponseModel } from './LogMessageResponseModel'; - -export type PagedLogMessageResponseModel = { - total: number; - items: Array; -}; - diff --git a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/PagedLogTemplateResponseModel.ts b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/PagedLogTemplateResponseModel.ts deleted file mode 100644 index 291011a872..0000000000 --- a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/PagedLogTemplateResponseModel.ts +++ /dev/null @@ -1,12 +0,0 @@ -/* generated using openapi-typescript-codegen -- do no edit */ -/* istanbul ignore file */ -/* tslint:disable */ -/* eslint-disable */ - -import type { LogTemplateResponseModel } from './LogTemplateResponseModel'; - -export type PagedLogTemplateResponseModel = { - total: number; - items: Array; -}; - diff --git a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/PagedLoggerResponseModel.ts b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/PagedLoggerResponseModel.ts deleted file mode 100644 index 77083fc931..0000000000 --- a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/PagedLoggerResponseModel.ts +++ /dev/null @@ -1,12 +0,0 @@ -/* generated using openapi-typescript-codegen -- do no edit */ -/* istanbul ignore file */ -/* tslint:disable */ -/* eslint-disable */ - -import type { LoggerResponseModel } from './LoggerResponseModel'; - -export type PagedLoggerResponseModel = { - total: number; - items: Array; -}; - diff --git a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/PagedMediaCollectionResponseModel.ts b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/PagedMediaCollectionResponseModel.ts deleted file mode 100644 index 3859caa0cb..0000000000 --- a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/PagedMediaCollectionResponseModel.ts +++ /dev/null @@ -1,12 +0,0 @@ -/* generated using openapi-typescript-codegen -- do no edit */ -/* istanbul ignore file */ -/* tslint:disable */ -/* eslint-disable */ - -import type { MediaCollectionResponseModel } from './MediaCollectionResponseModel'; - -export type PagedMediaCollectionResponseModel = { - total: number; - items: Array; -}; - diff --git a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/PagedMediaRecycleBinItemResponseModel.ts b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/PagedMediaRecycleBinItemResponseModel.ts deleted file mode 100644 index 1918188011..0000000000 --- a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/PagedMediaRecycleBinItemResponseModel.ts +++ /dev/null @@ -1,12 +0,0 @@ -/* generated using openapi-typescript-codegen -- do no edit */ -/* istanbul ignore file */ -/* tslint:disable */ -/* eslint-disable */ - -import type { MediaRecycleBinItemResponseModel } from './MediaRecycleBinItemResponseModel'; - -export type PagedMediaRecycleBinItemResponseModel = { - total: number; - items: Array; -}; - diff --git a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/PagedMediaTreeItemResponseModel.ts b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/PagedMediaTreeItemResponseModel.ts deleted file mode 100644 index 864dce738f..0000000000 --- a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/PagedMediaTreeItemResponseModel.ts +++ /dev/null @@ -1,12 +0,0 @@ -/* generated using openapi-typescript-codegen -- do no edit */ -/* istanbul ignore file */ -/* tslint:disable */ -/* eslint-disable */ - -import type { MediaTreeItemResponseModel } from './MediaTreeItemResponseModel'; - -export type PagedMediaTreeItemResponseModel = { - total: number; - items: Array; -}; - diff --git a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/PagedMediaTypeTreeItemResponseModel.ts b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/PagedMediaTypeTreeItemResponseModel.ts deleted file mode 100644 index d22af1c59c..0000000000 --- a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/PagedMediaTypeTreeItemResponseModel.ts +++ /dev/null @@ -1,12 +0,0 @@ -/* generated using openapi-typescript-codegen -- do no edit */ -/* istanbul ignore file */ -/* tslint:disable */ -/* eslint-disable */ - -import type { MediaTypeTreeItemResponseModel } from './MediaTypeTreeItemResponseModel'; - -export type PagedMediaTypeTreeItemResponseModel = { - total: number; - items: Array; -}; - diff --git a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/PagedMemberGroupResponseModel.ts b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/PagedMemberGroupResponseModel.ts deleted file mode 100644 index 81fee9d58f..0000000000 --- a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/PagedMemberGroupResponseModel.ts +++ /dev/null @@ -1,12 +0,0 @@ -/* generated using openapi-typescript-codegen -- do no edit */ -/* istanbul ignore file */ -/* tslint:disable */ -/* eslint-disable */ - -import type { MemberGroupResponseModel } from './MemberGroupResponseModel'; - -export type PagedMemberGroupResponseModel = { - total: number; - items: Array; -}; - diff --git a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/PagedMemberResponseModel.ts b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/PagedMemberResponseModel.ts deleted file mode 100644 index 06cea577ab..0000000000 --- a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/PagedMemberResponseModel.ts +++ /dev/null @@ -1,12 +0,0 @@ -/* generated using openapi-typescript-codegen -- do no edit */ -/* istanbul ignore file */ -/* tslint:disable */ -/* eslint-disable */ - -import type { MemberResponseModel } from './MemberResponseModel'; - -export type PagedMemberResponseModel = { - total: number; - items: Array; -}; - diff --git a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/PagedModelDataTypeItemResponseModel.ts b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/PagedModelDataTypeItemResponseModel.ts deleted file mode 100644 index c4f9bf20f8..0000000000 --- a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/PagedModelDataTypeItemResponseModel.ts +++ /dev/null @@ -1,12 +0,0 @@ -/* generated using openapi-typescript-codegen -- do no edit */ -/* istanbul ignore file */ -/* tslint:disable */ -/* eslint-disable */ - -import type { DataTypeItemResponseModel } from './DataTypeItemResponseModel'; - -export type PagedModelDataTypeItemResponseModel = { - items: Array; - total: number; -}; - diff --git a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/PagedModelDocumentItemResponseModel.ts b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/PagedModelDocumentItemResponseModel.ts deleted file mode 100644 index 215f4fb67e..0000000000 --- a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/PagedModelDocumentItemResponseModel.ts +++ /dev/null @@ -1,12 +0,0 @@ -/* generated using openapi-typescript-codegen -- do no edit */ -/* istanbul ignore file */ -/* tslint:disable */ -/* eslint-disable */ - -import type { DocumentItemResponseModel } from './DocumentItemResponseModel'; - -export type PagedModelDocumentItemResponseModel = { - items: Array; - total: number; -}; - diff --git a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/PagedModelDocumentTypeItemResponseModel.ts b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/PagedModelDocumentTypeItemResponseModel.ts deleted file mode 100644 index 8b6218aaa8..0000000000 --- a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/PagedModelDocumentTypeItemResponseModel.ts +++ /dev/null @@ -1,12 +0,0 @@ -/* generated using openapi-typescript-codegen -- do no edit */ -/* istanbul ignore file */ -/* tslint:disable */ -/* eslint-disable */ - -import type { DocumentTypeItemResponseModel } from './DocumentTypeItemResponseModel'; - -export type PagedModelDocumentTypeItemResponseModel = { - items: Array; - total: number; -}; - diff --git a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/PagedModelMediaItemResponseModel.ts b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/PagedModelMediaItemResponseModel.ts deleted file mode 100644 index fa67f4fc9c..0000000000 --- a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/PagedModelMediaItemResponseModel.ts +++ /dev/null @@ -1,12 +0,0 @@ -/* generated using openapi-typescript-codegen -- do no edit */ -/* istanbul ignore file */ -/* tslint:disable */ -/* eslint-disable */ - -import type { MediaItemResponseModel } from './MediaItemResponseModel'; - -export type PagedModelMediaItemResponseModel = { - items: Array; - total: number; -}; - diff --git a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/PagedModelMediaTypeItemResponseModel.ts b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/PagedModelMediaTypeItemResponseModel.ts deleted file mode 100644 index 9c06d39d29..0000000000 --- a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/PagedModelMediaTypeItemResponseModel.ts +++ /dev/null @@ -1,12 +0,0 @@ -/* generated using openapi-typescript-codegen -- do no edit */ -/* istanbul ignore file */ -/* tslint:disable */ -/* eslint-disable */ - -import type { MediaTypeItemResponseModel } from './MediaTypeItemResponseModel'; - -export type PagedModelMediaTypeItemResponseModel = { - items: Array; - total: number; -}; - diff --git a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/PagedModelMemberItemResponseModel.ts b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/PagedModelMemberItemResponseModel.ts deleted file mode 100644 index 988df34705..0000000000 --- a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/PagedModelMemberItemResponseModel.ts +++ /dev/null @@ -1,12 +0,0 @@ -/* generated using openapi-typescript-codegen -- do no edit */ -/* istanbul ignore file */ -/* tslint:disable */ -/* eslint-disable */ - -import type { MemberItemResponseModel } from './MemberItemResponseModel'; - -export type PagedModelMemberItemResponseModel = { - items: Array; - total: number; -}; - diff --git a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/PagedModelMemberTypeItemResponseModel.ts b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/PagedModelMemberTypeItemResponseModel.ts deleted file mode 100644 index ef2aaf53d9..0000000000 --- a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/PagedModelMemberTypeItemResponseModel.ts +++ /dev/null @@ -1,12 +0,0 @@ -/* generated using openapi-typescript-codegen -- do no edit */ -/* istanbul ignore file */ -/* tslint:disable */ -/* eslint-disable */ - -import type { MemberTypeItemResponseModel } from './MemberTypeItemResponseModel'; - -export type PagedModelMemberTypeItemResponseModel = { - items: Array; - total: number; -}; - diff --git a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/PagedModelTemplateItemResponseModel.ts b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/PagedModelTemplateItemResponseModel.ts deleted file mode 100644 index bc06c40124..0000000000 --- a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/PagedModelTemplateItemResponseModel.ts +++ /dev/null @@ -1,12 +0,0 @@ -/* generated using openapi-typescript-codegen -- do no edit */ -/* istanbul ignore file */ -/* tslint:disable */ -/* eslint-disable */ - -import type { TemplateItemResponseModel } from './TemplateItemResponseModel'; - -export type PagedModelTemplateItemResponseModel = { - items: Array; - total: number; -}; - diff --git a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/PagedNamedEntityTreeItemResponseModel.ts b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/PagedNamedEntityTreeItemResponseModel.ts deleted file mode 100644 index 9e6dd22dec..0000000000 --- a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/PagedNamedEntityTreeItemResponseModel.ts +++ /dev/null @@ -1,12 +0,0 @@ -/* generated using openapi-typescript-codegen -- do no edit */ -/* istanbul ignore file */ -/* tslint:disable */ -/* eslint-disable */ - -import type { NamedEntityTreeItemResponseModel } from './NamedEntityTreeItemResponseModel'; - -export type PagedNamedEntityTreeItemResponseModel = { - total: number; - items: Array; -}; - diff --git a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/PagedObjectTypeResponseModel.ts b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/PagedObjectTypeResponseModel.ts deleted file mode 100644 index 77d8106b39..0000000000 --- a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/PagedObjectTypeResponseModel.ts +++ /dev/null @@ -1,12 +0,0 @@ -/* generated using openapi-typescript-codegen -- do no edit */ -/* istanbul ignore file */ -/* tslint:disable */ -/* eslint-disable */ - -import type { ObjectTypeResponseModel } from './ObjectTypeResponseModel'; - -export type PagedObjectTypeResponseModel = { - total: number; - items: Array; -}; - diff --git a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/PagedPackageDefinitionResponseModel.ts b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/PagedPackageDefinitionResponseModel.ts deleted file mode 100644 index e42eb299ee..0000000000 --- a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/PagedPackageDefinitionResponseModel.ts +++ /dev/null @@ -1,12 +0,0 @@ -/* generated using openapi-typescript-codegen -- do no edit */ -/* istanbul ignore file */ -/* tslint:disable */ -/* eslint-disable */ - -import type { PackageDefinitionResponseModel } from './PackageDefinitionResponseModel'; - -export type PagedPackageDefinitionResponseModel = { - total: number; - items: Array; -}; - diff --git a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/PagedPackageMigrationStatusResponseModel.ts b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/PagedPackageMigrationStatusResponseModel.ts deleted file mode 100644 index aa3f4f4ced..0000000000 --- a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/PagedPackageMigrationStatusResponseModel.ts +++ /dev/null @@ -1,12 +0,0 @@ -/* generated using openapi-typescript-codegen -- do no edit */ -/* istanbul ignore file */ -/* tslint:disable */ -/* eslint-disable */ - -import type { PackageMigrationStatusResponseModel } from './PackageMigrationStatusResponseModel'; - -export type PagedPackageMigrationStatusResponseModel = { - total: number; - items: Array; -}; - diff --git a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/PagedPartialViewSnippetItemResponseModel.ts b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/PagedPartialViewSnippetItemResponseModel.ts deleted file mode 100644 index 4292c1a083..0000000000 --- a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/PagedPartialViewSnippetItemResponseModel.ts +++ /dev/null @@ -1,12 +0,0 @@ -/* generated using openapi-typescript-codegen -- do no edit */ -/* istanbul ignore file */ -/* tslint:disable */ -/* eslint-disable */ - -import type { PartialViewSnippetItemResponseModel } from './PartialViewSnippetItemResponseModel'; - -export type PagedPartialViewSnippetItemResponseModel = { - total: number; - items: Array; -}; - diff --git a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/PagedProblemDetailsModel.ts b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/PagedProblemDetailsModel.ts deleted file mode 100644 index 5291741485..0000000000 --- a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/PagedProblemDetailsModel.ts +++ /dev/null @@ -1,12 +0,0 @@ -/* generated using openapi-typescript-codegen -- do no edit */ -/* istanbul ignore file */ -/* tslint:disable */ -/* eslint-disable */ - -import type { ProblemDetails } from './ProblemDetails'; - -export type PagedProblemDetailsModel = { - total: number; - items: Array; -}; - diff --git a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/PagedRedirectUrlResponseModel.ts b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/PagedRedirectUrlResponseModel.ts deleted file mode 100644 index e749134ad3..0000000000 --- a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/PagedRedirectUrlResponseModel.ts +++ /dev/null @@ -1,12 +0,0 @@ -/* generated using openapi-typescript-codegen -- do no edit */ -/* istanbul ignore file */ -/* tslint:disable */ -/* eslint-disable */ - -import type { RedirectUrlResponseModel } from './RedirectUrlResponseModel'; - -export type PagedRedirectUrlResponseModel = { - total: number; - items: Array; -}; - diff --git a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/PagedReferenceByIdModel.ts b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/PagedReferenceByIdModel.ts deleted file mode 100644 index e7e20d98c6..0000000000 --- a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/PagedReferenceByIdModel.ts +++ /dev/null @@ -1,12 +0,0 @@ -/* generated using openapi-typescript-codegen -- do no edit */ -/* istanbul ignore file */ -/* tslint:disable */ -/* eslint-disable */ - -import type { ReferenceByIdModel } from './ReferenceByIdModel'; - -export type PagedReferenceByIdModel = { - total: number; - items: Array; -}; - diff --git a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/PagedRelationResponseModel.ts b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/PagedRelationResponseModel.ts deleted file mode 100644 index 377517e398..0000000000 --- a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/PagedRelationResponseModel.ts +++ /dev/null @@ -1,12 +0,0 @@ -/* generated using openapi-typescript-codegen -- do no edit */ -/* istanbul ignore file */ -/* tslint:disable */ -/* eslint-disable */ - -import type { RelationResponseModel } from './RelationResponseModel'; - -export type PagedRelationResponseModel = { - total: number; - items: Array; -}; - diff --git a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/PagedRelationTypeResponseModel.ts b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/PagedRelationTypeResponseModel.ts deleted file mode 100644 index 951e9e3873..0000000000 --- a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/PagedRelationTypeResponseModel.ts +++ /dev/null @@ -1,12 +0,0 @@ -/* generated using openapi-typescript-codegen -- do no edit */ -/* istanbul ignore file */ -/* tslint:disable */ -/* eslint-disable */ - -import type { RelationTypeResponseModel } from './RelationTypeResponseModel'; - -export type PagedRelationTypeResponseModel = { - total: number; - items: Array; -}; - diff --git a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/PagedSavedLogSearchResponseModel.ts b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/PagedSavedLogSearchResponseModel.ts deleted file mode 100644 index 8eebf10ebc..0000000000 --- a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/PagedSavedLogSearchResponseModel.ts +++ /dev/null @@ -1,12 +0,0 @@ -/* generated using openapi-typescript-codegen -- do no edit */ -/* istanbul ignore file */ -/* tslint:disable */ -/* eslint-disable */ - -import type { SavedLogSearchResponseModel } from './SavedLogSearchResponseModel'; - -export type PagedSavedLogSearchResponseModel = { - total: number; - items: Array; -}; - diff --git a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/PagedSearchResultResponseModel.ts b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/PagedSearchResultResponseModel.ts deleted file mode 100644 index 233891717d..0000000000 --- a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/PagedSearchResultResponseModel.ts +++ /dev/null @@ -1,12 +0,0 @@ -/* generated using openapi-typescript-codegen -- do no edit */ -/* istanbul ignore file */ -/* tslint:disable */ -/* eslint-disable */ - -import type { SearchResultResponseModel } from './SearchResultResponseModel'; - -export type PagedSearchResultResponseModel = { - total: number; - items: Array; -}; - diff --git a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/PagedSearcherResponseModel.ts b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/PagedSearcherResponseModel.ts deleted file mode 100644 index c39bc2751e..0000000000 --- a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/PagedSearcherResponseModel.ts +++ /dev/null @@ -1,12 +0,0 @@ -/* generated using openapi-typescript-codegen -- do no edit */ -/* istanbul ignore file */ -/* tslint:disable */ -/* eslint-disable */ - -import type { SearcherResponseModel } from './SearcherResponseModel'; - -export type PagedSearcherResponseModel = { - total: number; - items: Array; -}; - diff --git a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/PagedTagResponseModel.ts b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/PagedTagResponseModel.ts deleted file mode 100644 index 3134a3ee4f..0000000000 --- a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/PagedTagResponseModel.ts +++ /dev/null @@ -1,12 +0,0 @@ -/* generated using openapi-typescript-codegen -- do no edit */ -/* istanbul ignore file */ -/* tslint:disable */ -/* eslint-disable */ - -import type { TagResponseModel } from './TagResponseModel'; - -export type PagedTagResponseModel = { - total: number; - items: Array; -}; - diff --git a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/PagedTelemetryResponseModel.ts b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/PagedTelemetryResponseModel.ts deleted file mode 100644 index 0bcd9b1d9a..0000000000 --- a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/PagedTelemetryResponseModel.ts +++ /dev/null @@ -1,12 +0,0 @@ -/* generated using openapi-typescript-codegen -- do no edit */ -/* istanbul ignore file */ -/* tslint:disable */ -/* eslint-disable */ - -import type { TelemetryResponseModel } from './TelemetryResponseModel'; - -export type PagedTelemetryResponseModel = { - total: number; - items: Array; -}; - diff --git a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/PagedUserGroupResponseModel.ts b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/PagedUserGroupResponseModel.ts deleted file mode 100644 index a1bf825127..0000000000 --- a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/PagedUserGroupResponseModel.ts +++ /dev/null @@ -1,12 +0,0 @@ -/* generated using openapi-typescript-codegen -- do no edit */ -/* istanbul ignore file */ -/* tslint:disable */ -/* eslint-disable */ - -import type { UserGroupResponseModel } from './UserGroupResponseModel'; - -export type PagedUserGroupResponseModel = { - total: number; - items: Array; -}; - diff --git a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/PagedUserResponseModel.ts b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/PagedUserResponseModel.ts deleted file mode 100644 index 06fbaf0d50..0000000000 --- a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/PagedUserResponseModel.ts +++ /dev/null @@ -1,12 +0,0 @@ -/* generated using openapi-typescript-codegen -- do no edit */ -/* istanbul ignore file */ -/* tslint:disable */ -/* eslint-disable */ - -import type { UserResponseModel } from './UserResponseModel'; - -export type PagedUserResponseModel = { - total: number; - items: Array; -}; - diff --git a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/PagedWebhookResponseModel.ts b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/PagedWebhookResponseModel.ts deleted file mode 100644 index 1efc883d28..0000000000 --- a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/PagedWebhookResponseModel.ts +++ /dev/null @@ -1,12 +0,0 @@ -/* generated using openapi-typescript-codegen -- do no edit */ -/* istanbul ignore file */ -/* tslint:disable */ -/* eslint-disable */ - -import type { WebhookResponseModel } from './WebhookResponseModel'; - -export type PagedWebhookResponseModel = { - total: number; - items: Array; -}; - diff --git a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/PartialViewFolderResponseModel.ts b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/PartialViewFolderResponseModel.ts deleted file mode 100644 index 58729a2f6f..0000000000 --- a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/PartialViewFolderResponseModel.ts +++ /dev/null @@ -1,13 +0,0 @@ -/* generated using openapi-typescript-codegen -- do no edit */ -/* istanbul ignore file */ -/* tslint:disable */ -/* eslint-disable */ - -import type { FileSystemFolderModel } from './FileSystemFolderModel'; - -export type PartialViewFolderResponseModel = { - path: string; - name: string; - parent?: FileSystemFolderModel | null; -}; - diff --git a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/PartialViewItemResponseModel.ts b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/PartialViewItemResponseModel.ts deleted file mode 100644 index eabd0ebafd..0000000000 --- a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/PartialViewItemResponseModel.ts +++ /dev/null @@ -1,14 +0,0 @@ -/* generated using openapi-typescript-codegen -- do no edit */ -/* istanbul ignore file */ -/* tslint:disable */ -/* eslint-disable */ - -import type { FileSystemFolderModel } from './FileSystemFolderModel'; - -export type PartialViewItemResponseModel = { - path: string; - name: string; - parent?: FileSystemFolderModel | null; - isFolder: boolean; -}; - diff --git a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/PartialViewResponseModel.ts b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/PartialViewResponseModel.ts deleted file mode 100644 index 8ad71fa4a2..0000000000 --- a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/PartialViewResponseModel.ts +++ /dev/null @@ -1,14 +0,0 @@ -/* generated using openapi-typescript-codegen -- do no edit */ -/* istanbul ignore file */ -/* tslint:disable */ -/* eslint-disable */ - -import type { FileSystemFolderModel } from './FileSystemFolderModel'; - -export type PartialViewResponseModel = { - path: string; - name: string; - parent?: FileSystemFolderModel | null; - content: string; -}; - diff --git a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/PartialViewSnippetItemResponseModel.ts b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/PartialViewSnippetItemResponseModel.ts deleted file mode 100644 index 0e4707e702..0000000000 --- a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/PartialViewSnippetItemResponseModel.ts +++ /dev/null @@ -1,10 +0,0 @@ -/* generated using openapi-typescript-codegen -- do no edit */ -/* istanbul ignore file */ -/* tslint:disable */ -/* eslint-disable */ - -export type PartialViewSnippetItemResponseModel = { - id: string; - name: string; -}; - diff --git a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/PartialViewSnippetResponseModel.ts b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/PartialViewSnippetResponseModel.ts deleted file mode 100644 index 7a9ef1d406..0000000000 --- a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/PartialViewSnippetResponseModel.ts +++ /dev/null @@ -1,11 +0,0 @@ -/* generated using openapi-typescript-codegen -- do no edit */ -/* istanbul ignore file */ -/* tslint:disable */ -/* eslint-disable */ - -export type PartialViewSnippetResponseModel = { - id: string; - name: string; - content: string; -}; - diff --git a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/PasswordConfigurationResponseModel.ts b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/PasswordConfigurationResponseModel.ts deleted file mode 100644 index 090f5de3c9..0000000000 --- a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/PasswordConfigurationResponseModel.ts +++ /dev/null @@ -1,13 +0,0 @@ -/* generated using openapi-typescript-codegen -- do no edit */ -/* istanbul ignore file */ -/* tslint:disable */ -/* eslint-disable */ - -export type PasswordConfigurationResponseModel = { - minimumPasswordLength: number; - requireNonLetterOrDigit: boolean; - requireDigit: boolean; - requireLowercase: boolean; - requireUppercase: boolean; -}; - diff --git a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/ProblemDetails.ts b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/ProblemDetails.ts deleted file mode 100644 index d120301326..0000000000 --- a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/ProblemDetails.ts +++ /dev/null @@ -1,6 +0,0 @@ -/* generated using openapi-typescript-codegen -- do no edit */ -/* istanbul ignore file */ -/* tslint:disable */ -/* eslint-disable */ - -export type ProblemDetails = Record; diff --git a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/ProblemDetailsBuilderModel.ts b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/ProblemDetailsBuilderModel.ts deleted file mode 100644 index 55d0ffc1e1..0000000000 --- a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/ProblemDetailsBuilderModel.ts +++ /dev/null @@ -1,6 +0,0 @@ -/* generated using openapi-typescript-codegen -- do no edit */ -/* istanbul ignore file */ -/* tslint:disable */ -/* eslint-disable */ - -export type ProblemDetailsBuilderModel = Record; diff --git a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/ProfilingStatusRequestModel.ts b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/ProfilingStatusRequestModel.ts deleted file mode 100644 index 5c48e0da66..0000000000 --- a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/ProfilingStatusRequestModel.ts +++ /dev/null @@ -1,9 +0,0 @@ -/* generated using openapi-typescript-codegen -- do no edit */ -/* istanbul ignore file */ -/* tslint:disable */ -/* eslint-disable */ - -export type ProfilingStatusRequestModel = { - enabled: boolean; -}; - diff --git a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/ProfilingStatusResponseModel.ts b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/ProfilingStatusResponseModel.ts deleted file mode 100644 index 8717638558..0000000000 --- a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/ProfilingStatusResponseModel.ts +++ /dev/null @@ -1,9 +0,0 @@ -/* generated using openapi-typescript-codegen -- do no edit */ -/* istanbul ignore file */ -/* tslint:disable */ -/* eslint-disable */ - -export type ProfilingStatusResponseModel = { - enabled: boolean; -}; - diff --git a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/PropertyTypeAppearanceModel.ts b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/PropertyTypeAppearanceModel.ts deleted file mode 100644 index f690a3f46c..0000000000 --- a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/PropertyTypeAppearanceModel.ts +++ /dev/null @@ -1,9 +0,0 @@ -/* generated using openapi-typescript-codegen -- do no edit */ -/* istanbul ignore file */ -/* tslint:disable */ -/* eslint-disable */ - -export type PropertyTypeAppearanceModel = { - labelOnTop: boolean; -}; - diff --git a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/PropertyTypeValidationModel.ts b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/PropertyTypeValidationModel.ts deleted file mode 100644 index fda613e272..0000000000 --- a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/PropertyTypeValidationModel.ts +++ /dev/null @@ -1,12 +0,0 @@ -/* generated using openapi-typescript-codegen -- do no edit */ -/* istanbul ignore file */ -/* tslint:disable */ -/* eslint-disable */ - -export type PropertyTypeValidationModel = { - mandatory: boolean; - mandatoryMessage?: string | null; - regEx?: string | null; - regExMessage?: string | null; -}; - diff --git a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/PublicAccessRequestModel.ts b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/PublicAccessRequestModel.ts deleted file mode 100644 index d0381e1f21..0000000000 --- a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/PublicAccessRequestModel.ts +++ /dev/null @@ -1,14 +0,0 @@ -/* generated using openapi-typescript-codegen -- do no edit */ -/* istanbul ignore file */ -/* tslint:disable */ -/* eslint-disable */ - -import type { ReferenceByIdModel } from './ReferenceByIdModel'; - -export type PublicAccessRequestModel = { - loginDocument: ReferenceByIdModel; - errorDocument: ReferenceByIdModel; - memberUserNames: Array; - memberGroupNames: Array; -}; - diff --git a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/PublishDocumentRequestModel.ts b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/PublishDocumentRequestModel.ts deleted file mode 100644 index 4c08971560..0000000000 --- a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/PublishDocumentRequestModel.ts +++ /dev/null @@ -1,11 +0,0 @@ -/* generated using openapi-typescript-codegen -- do no edit */ -/* istanbul ignore file */ -/* tslint:disable */ -/* eslint-disable */ - -import type { CultureAndScheduleRequestModel } from './CultureAndScheduleRequestModel'; - -export type PublishDocumentRequestModel = { - publishSchedules: Array; -}; - diff --git a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/PublishDocumentWithDescendantsRequestModel.ts b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/PublishDocumentWithDescendantsRequestModel.ts deleted file mode 100644 index 9796f30e5a..0000000000 --- a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/PublishDocumentWithDescendantsRequestModel.ts +++ /dev/null @@ -1,10 +0,0 @@ -/* generated using openapi-typescript-codegen -- do no edit */ -/* istanbul ignore file */ -/* tslint:disable */ -/* eslint-disable */ - -export type PublishDocumentWithDescendantsRequestModel = { - includeUnpublishedDescendants: boolean; - cultures: Array; -}; - diff --git a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/RedirectStatusModel.ts b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/RedirectStatusModel.ts deleted file mode 100644 index e304036fe7..0000000000 --- a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/RedirectStatusModel.ts +++ /dev/null @@ -1,9 +0,0 @@ -/* generated using openapi-typescript-codegen -- do no edit */ -/* istanbul ignore file */ -/* tslint:disable */ -/* eslint-disable */ - -export enum RedirectStatusModel { - ENABLED = 'Enabled', - DISABLED = 'Disabled', -} diff --git a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/RedirectUrlResponseModel.ts b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/RedirectUrlResponseModel.ts deleted file mode 100644 index 42fe5abf72..0000000000 --- a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/RedirectUrlResponseModel.ts +++ /dev/null @@ -1,16 +0,0 @@ -/* generated using openapi-typescript-codegen -- do no edit */ -/* istanbul ignore file */ -/* tslint:disable */ -/* eslint-disable */ - -import type { ReferenceByIdModel } from './ReferenceByIdModel'; - -export type RedirectUrlResponseModel = { - id: string; - originalUrl: string; - destinationUrl: string; - created: string; - document: ReferenceByIdModel; - culture?: string | null; -}; - diff --git a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/RedirectUrlStatusResponseModel.ts b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/RedirectUrlStatusResponseModel.ts deleted file mode 100644 index ee5065a2a0..0000000000 --- a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/RedirectUrlStatusResponseModel.ts +++ /dev/null @@ -1,12 +0,0 @@ -/* generated using openapi-typescript-codegen -- do no edit */ -/* istanbul ignore file */ -/* tslint:disable */ -/* eslint-disable */ - -import type { RedirectStatusModel } from './RedirectStatusModel'; - -export type RedirectUrlStatusResponseModel = { - status: RedirectStatusModel; - userIsAdmin: boolean; -}; - diff --git a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/ReferenceByIdModel.ts b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/ReferenceByIdModel.ts deleted file mode 100644 index 5085db2e12..0000000000 --- a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/ReferenceByIdModel.ts +++ /dev/null @@ -1,9 +0,0 @@ -/* generated using openapi-typescript-codegen -- do no edit */ -/* istanbul ignore file */ -/* tslint:disable */ -/* eslint-disable */ - -export type ReferenceByIdModel = { - id: string; -}; - diff --git a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/RelationReferenceModel.ts b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/RelationReferenceModel.ts deleted file mode 100644 index ab35e260eb..0000000000 --- a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/RelationReferenceModel.ts +++ /dev/null @@ -1,10 +0,0 @@ -/* generated using openapi-typescript-codegen -- do no edit */ -/* istanbul ignore file */ -/* tslint:disable */ -/* eslint-disable */ - -export type RelationReferenceModel = { - id: string; - name?: string | null; -}; - diff --git a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/RelationResponseModel.ts b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/RelationResponseModel.ts deleted file mode 100644 index 3b2eea7a75..0000000000 --- a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/RelationResponseModel.ts +++ /dev/null @@ -1,17 +0,0 @@ -/* generated using openapi-typescript-codegen -- do no edit */ -/* istanbul ignore file */ -/* tslint:disable */ -/* eslint-disable */ - -import type { ReferenceByIdModel } from './ReferenceByIdModel'; -import type { RelationReferenceModel } from './RelationReferenceModel'; - -export type RelationResponseModel = { - id: string; - relationType: ReferenceByIdModel; - parent: RelationReferenceModel; - child: RelationReferenceModel; - createDate: string; - comment?: string | null; -}; - diff --git a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/RelationTypeItemResponseModel.ts b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/RelationTypeItemResponseModel.ts deleted file mode 100644 index 0d0bbfd99e..0000000000 --- a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/RelationTypeItemResponseModel.ts +++ /dev/null @@ -1,11 +0,0 @@ -/* generated using openapi-typescript-codegen -- do no edit */ -/* istanbul ignore file */ -/* tslint:disable */ -/* eslint-disable */ - -export type RelationTypeItemResponseModel = { - id: string; - name: string; - isDeletable: boolean; -}; - diff --git a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/RelationTypeResponseModel.ts b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/RelationTypeResponseModel.ts deleted file mode 100644 index 05d5eadf9f..0000000000 --- a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/RelationTypeResponseModel.ts +++ /dev/null @@ -1,17 +0,0 @@ -/* generated using openapi-typescript-codegen -- do no edit */ -/* istanbul ignore file */ -/* tslint:disable */ -/* eslint-disable */ - -import type { ObjectTypeResponseModel } from './ObjectTypeResponseModel'; - -export type RelationTypeResponseModel = { - name: string; - isBidirectional: boolean; - isDependency: boolean; - id: string; - alias?: string | null; - parentObject?: ObjectTypeResponseModel | null; - childObject?: ObjectTypeResponseModel | null; -}; - diff --git a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/RenamePartialViewRequestModel.ts b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/RenamePartialViewRequestModel.ts deleted file mode 100644 index 7fc3f67271..0000000000 --- a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/RenamePartialViewRequestModel.ts +++ /dev/null @@ -1,9 +0,0 @@ -/* generated using openapi-typescript-codegen -- do no edit */ -/* istanbul ignore file */ -/* tslint:disable */ -/* eslint-disable */ - -export type RenamePartialViewRequestModel = { - name: string; -}; - diff --git a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/RenameScriptRequestModel.ts b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/RenameScriptRequestModel.ts deleted file mode 100644 index 0d7a9af13f..0000000000 --- a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/RenameScriptRequestModel.ts +++ /dev/null @@ -1,9 +0,0 @@ -/* generated using openapi-typescript-codegen -- do no edit */ -/* istanbul ignore file */ -/* tslint:disable */ -/* eslint-disable */ - -export type RenameScriptRequestModel = { - name: string; -}; - diff --git a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/RenameStylesheetRequestModel.ts b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/RenameStylesheetRequestModel.ts deleted file mode 100644 index 44165fb93e..0000000000 --- a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/RenameStylesheetRequestModel.ts +++ /dev/null @@ -1,9 +0,0 @@ -/* generated using openapi-typescript-codegen -- do no edit */ -/* istanbul ignore file */ -/* tslint:disable */ -/* eslint-disable */ - -export type RenameStylesheetRequestModel = { - name: string; -}; - diff --git a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/ResendInviteUserRequestModel.ts b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/ResendInviteUserRequestModel.ts deleted file mode 100644 index 4d9c0789a4..0000000000 --- a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/ResendInviteUserRequestModel.ts +++ /dev/null @@ -1,12 +0,0 @@ -/* generated using openapi-typescript-codegen -- do no edit */ -/* istanbul ignore file */ -/* tslint:disable */ -/* eslint-disable */ - -import type { ReferenceByIdModel } from './ReferenceByIdModel'; - -export type ResendInviteUserRequestModel = { - user: ReferenceByIdModel; - message?: string | null; -}; - diff --git a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/ResetPasswordRequestModel.ts b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/ResetPasswordRequestModel.ts deleted file mode 100644 index efe0818403..0000000000 --- a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/ResetPasswordRequestModel.ts +++ /dev/null @@ -1,9 +0,0 @@ -/* generated using openapi-typescript-codegen -- do no edit */ -/* istanbul ignore file */ -/* tslint:disable */ -/* eslint-disable */ - -export type ResetPasswordRequestModel = { - email: string; -}; - diff --git a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/ResetPasswordTokenRequestModel.ts b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/ResetPasswordTokenRequestModel.ts deleted file mode 100644 index e291336f61..0000000000 --- a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/ResetPasswordTokenRequestModel.ts +++ /dev/null @@ -1,13 +0,0 @@ -/* generated using openapi-typescript-codegen -- do no edit */ -/* istanbul ignore file */ -/* tslint:disable */ -/* eslint-disable */ - -import type { ReferenceByIdModel } from './ReferenceByIdModel'; - -export type ResetPasswordTokenRequestModel = { - user: ReferenceByIdModel; - resetCode: string; - password: string; -}; - diff --git a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/ResetPasswordUserResponseModel.ts b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/ResetPasswordUserResponseModel.ts deleted file mode 100644 index cb45c206e7..0000000000 --- a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/ResetPasswordUserResponseModel.ts +++ /dev/null @@ -1,9 +0,0 @@ -/* generated using openapi-typescript-codegen -- do no edit */ -/* istanbul ignore file */ -/* tslint:disable */ -/* eslint-disable */ - -export type ResetPasswordUserResponseModel = { - resetPassword?: string | null; -}; - diff --git a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/RuntimeLevelModel.ts b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/RuntimeLevelModel.ts deleted file mode 100644 index 6295198db1..0000000000 --- a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/RuntimeLevelModel.ts +++ /dev/null @@ -1,13 +0,0 @@ -/* generated using openapi-typescript-codegen -- do no edit */ -/* istanbul ignore file */ -/* tslint:disable */ -/* eslint-disable */ - -export enum RuntimeLevelModel { - UNKNOWN = 'Unknown', - BOOT = 'Boot', - INSTALL = 'Install', - UPGRADE = 'Upgrade', - RUN = 'Run', - BOOT_FAILED = 'BootFailed', -} diff --git a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/RuntimeModeModel.ts b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/RuntimeModeModel.ts deleted file mode 100644 index 0f8e601e95..0000000000 --- a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/RuntimeModeModel.ts +++ /dev/null @@ -1,10 +0,0 @@ -/* generated using openapi-typescript-codegen -- do no edit */ -/* istanbul ignore file */ -/* tslint:disable */ -/* eslint-disable */ - -export enum RuntimeModeModel { - BACKOFFICE_DEVELOPMENT = 'BackofficeDevelopment', - DEVELOPMENT = 'Development', - PRODUCTION = 'Production', -} diff --git a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/SavedLogSearchRequestModel.ts b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/SavedLogSearchRequestModel.ts deleted file mode 100644 index a9a6db7caf..0000000000 --- a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/SavedLogSearchRequestModel.ts +++ /dev/null @@ -1,10 +0,0 @@ -/* generated using openapi-typescript-codegen -- do no edit */ -/* istanbul ignore file */ -/* tslint:disable */ -/* eslint-disable */ - -export type SavedLogSearchRequestModel = { - name: string; - query: string; -}; - diff --git a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/SavedLogSearchResponseModel.ts b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/SavedLogSearchResponseModel.ts deleted file mode 100644 index 7544779e07..0000000000 --- a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/SavedLogSearchResponseModel.ts +++ /dev/null @@ -1,10 +0,0 @@ -/* generated using openapi-typescript-codegen -- do no edit */ -/* istanbul ignore file */ -/* tslint:disable */ -/* eslint-disable */ - -export type SavedLogSearchResponseModel = { - name: string; - query: string; -}; - diff --git a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/ScheduleRequestModel.ts b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/ScheduleRequestModel.ts deleted file mode 100644 index 59b83b94a6..0000000000 --- a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/ScheduleRequestModel.ts +++ /dev/null @@ -1,10 +0,0 @@ -/* generated using openapi-typescript-codegen -- do no edit */ -/* istanbul ignore file */ -/* tslint:disable */ -/* eslint-disable */ - -export type ScheduleRequestModel = { - publishTime?: string | null; - unpublishTime?: string | null; -}; - diff --git a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/ScriptFolderResponseModel.ts b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/ScriptFolderResponseModel.ts deleted file mode 100644 index 154bfb8359..0000000000 --- a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/ScriptFolderResponseModel.ts +++ /dev/null @@ -1,13 +0,0 @@ -/* generated using openapi-typescript-codegen -- do no edit */ -/* istanbul ignore file */ -/* tslint:disable */ -/* eslint-disable */ - -import type { FileSystemFolderModel } from './FileSystemFolderModel'; - -export type ScriptFolderResponseModel = { - path: string; - name: string; - parent?: FileSystemFolderModel | null; -}; - diff --git a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/ScriptItemResponseModel.ts b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/ScriptItemResponseModel.ts deleted file mode 100644 index 6d74d3170e..0000000000 --- a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/ScriptItemResponseModel.ts +++ /dev/null @@ -1,14 +0,0 @@ -/* generated using openapi-typescript-codegen -- do no edit */ -/* istanbul ignore file */ -/* tslint:disable */ -/* eslint-disable */ - -import type { FileSystemFolderModel } from './FileSystemFolderModel'; - -export type ScriptItemResponseModel = { - path: string; - name: string; - parent?: FileSystemFolderModel | null; - isFolder: boolean; -}; - diff --git a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/ScriptResponseModel.ts b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/ScriptResponseModel.ts deleted file mode 100644 index c55092587d..0000000000 --- a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/ScriptResponseModel.ts +++ /dev/null @@ -1,14 +0,0 @@ -/* generated using openapi-typescript-codegen -- do no edit */ -/* istanbul ignore file */ -/* tslint:disable */ -/* eslint-disable */ - -import type { FileSystemFolderModel } from './FileSystemFolderModel'; - -export type ScriptResponseModel = { - path: string; - name: string; - parent?: FileSystemFolderModel | null; - content: string; -}; - diff --git a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/SearchResultResponseModel.ts b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/SearchResultResponseModel.ts deleted file mode 100644 index 4e44168a7a..0000000000 --- a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/SearchResultResponseModel.ts +++ /dev/null @@ -1,14 +0,0 @@ -/* generated using openapi-typescript-codegen -- do no edit */ -/* istanbul ignore file */ -/* tslint:disable */ -/* eslint-disable */ - -import type { FieldPresentationModel } from './FieldPresentationModel'; - -export type SearchResultResponseModel = { - id: string; - score: number; - readonly fieldCount: number; - fields: Array; -}; - diff --git a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/SearcherResponseModel.ts b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/SearcherResponseModel.ts deleted file mode 100644 index 0515d91ea8..0000000000 --- a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/SearcherResponseModel.ts +++ /dev/null @@ -1,9 +0,0 @@ -/* generated using openapi-typescript-codegen -- do no edit */ -/* istanbul ignore file */ -/* tslint:disable */ -/* eslint-disable */ - -export type SearcherResponseModel = { - name: string; -}; - diff --git a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/SecurityConfigurationResponseModel.ts b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/SecurityConfigurationResponseModel.ts deleted file mode 100644 index 560327a3a7..0000000000 --- a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/SecurityConfigurationResponseModel.ts +++ /dev/null @@ -1,11 +0,0 @@ -/* generated using openapi-typescript-codegen -- do no edit */ -/* istanbul ignore file */ -/* tslint:disable */ -/* eslint-disable */ - -import type { PasswordConfigurationResponseModel } from './PasswordConfigurationResponseModel'; - -export type SecurityConfigurationResponseModel = { - passwordConfiguration: PasswordConfigurationResponseModel; -}; - diff --git a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/ServerConfigurationItemResponseModel.ts b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/ServerConfigurationItemResponseModel.ts deleted file mode 100644 index 4e97e60583..0000000000 --- a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/ServerConfigurationItemResponseModel.ts +++ /dev/null @@ -1,10 +0,0 @@ -/* generated using openapi-typescript-codegen -- do no edit */ -/* istanbul ignore file */ -/* tslint:disable */ -/* eslint-disable */ - -export type ServerConfigurationItemResponseModel = { - name: string; - data: string; -}; - diff --git a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/ServerConfigurationResponseModel.ts b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/ServerConfigurationResponseModel.ts deleted file mode 100644 index 98eb5b3d0b..0000000000 --- a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/ServerConfigurationResponseModel.ts +++ /dev/null @@ -1,9 +0,0 @@ -/* generated using openapi-typescript-codegen -- do no edit */ -/* istanbul ignore file */ -/* tslint:disable */ -/* eslint-disable */ - -export type ServerConfigurationResponseModel = { - allowPasswordReset: boolean; -}; - diff --git a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/ServerInformationResponseModel.ts b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/ServerInformationResponseModel.ts deleted file mode 100644 index 3625d63958..0000000000 --- a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/ServerInformationResponseModel.ts +++ /dev/null @@ -1,14 +0,0 @@ -/* generated using openapi-typescript-codegen -- do no edit */ -/* istanbul ignore file */ -/* tslint:disable */ -/* eslint-disable */ - -import type { RuntimeModeModel } from './RuntimeModeModel'; - -export type ServerInformationResponseModel = { - version: string; - assemblyVersion: string; - baseUtcOffset: string; - runtimeMode: RuntimeModeModel; -}; - diff --git a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/ServerStatusResponseModel.ts b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/ServerStatusResponseModel.ts deleted file mode 100644 index 2c92b763bf..0000000000 --- a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/ServerStatusResponseModel.ts +++ /dev/null @@ -1,11 +0,0 @@ -/* generated using openapi-typescript-codegen -- do no edit */ -/* istanbul ignore file */ -/* tslint:disable */ -/* eslint-disable */ - -import type { RuntimeLevelModel } from './RuntimeLevelModel'; - -export type ServerStatusResponseModel = { - serverStatus: RuntimeLevelModel; -}; - diff --git a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/ServerTroubleshootingResponseModel.ts b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/ServerTroubleshootingResponseModel.ts deleted file mode 100644 index 54a020dd94..0000000000 --- a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/ServerTroubleshootingResponseModel.ts +++ /dev/null @@ -1,11 +0,0 @@ -/* generated using openapi-typescript-codegen -- do no edit */ -/* istanbul ignore file */ -/* tslint:disable */ -/* eslint-disable */ - -import type { ServerConfigurationItemResponseModel } from './ServerConfigurationItemResponseModel'; - -export type ServerTroubleshootingResponseModel = { - items: Array; -}; - diff --git a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/SetAvatarRequestModel.ts b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/SetAvatarRequestModel.ts deleted file mode 100644 index f9e9fd22bd..0000000000 --- a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/SetAvatarRequestModel.ts +++ /dev/null @@ -1,11 +0,0 @@ -/* generated using openapi-typescript-codegen -- do no edit */ -/* istanbul ignore file */ -/* tslint:disable */ -/* eslint-disable */ - -import type { ReferenceByIdModel } from './ReferenceByIdModel'; - -export type SetAvatarRequestModel = { - file: ReferenceByIdModel; -}; - diff --git a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/SetTourStatusRequestModel.ts b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/SetTourStatusRequestModel.ts deleted file mode 100644 index b766154055..0000000000 --- a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/SetTourStatusRequestModel.ts +++ /dev/null @@ -1,11 +0,0 @@ -/* generated using openapi-typescript-codegen -- do no edit */ -/* istanbul ignore file */ -/* tslint:disable */ -/* eslint-disable */ - -export type SetTourStatusRequestModel = { - alias: string; - completed: boolean; - disabled: boolean; -}; - diff --git a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/SortingRequestModel.ts b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/SortingRequestModel.ts deleted file mode 100644 index 3a0561adca..0000000000 --- a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/SortingRequestModel.ts +++ /dev/null @@ -1,13 +0,0 @@ -/* generated using openapi-typescript-codegen -- do no edit */ -/* istanbul ignore file */ -/* tslint:disable */ -/* eslint-disable */ - -import type { ItemSortingRequestModel } from './ItemSortingRequestModel'; -import type { ReferenceByIdModel } from './ReferenceByIdModel'; - -export type SortingRequestModel = { - parent?: ReferenceByIdModel | null; - sorting: Array; -}; - diff --git a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/StaticFileItemResponseModel.ts b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/StaticFileItemResponseModel.ts deleted file mode 100644 index 1d47aa6e4f..0000000000 --- a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/StaticFileItemResponseModel.ts +++ /dev/null @@ -1,14 +0,0 @@ -/* generated using openapi-typescript-codegen -- do no edit */ -/* istanbul ignore file */ -/* tslint:disable */ -/* eslint-disable */ - -import type { FileSystemFolderModel } from './FileSystemFolderModel'; - -export type StaticFileItemResponseModel = { - path: string; - name: string; - parent?: FileSystemFolderModel | null; - isFolder: boolean; -}; - diff --git a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/StatusResultTypeModel.ts b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/StatusResultTypeModel.ts deleted file mode 100644 index a12e3ec8e4..0000000000 --- a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/StatusResultTypeModel.ts +++ /dev/null @@ -1,11 +0,0 @@ -/* generated using openapi-typescript-codegen -- do no edit */ -/* istanbul ignore file */ -/* tslint:disable */ -/* eslint-disable */ - -export enum StatusResultTypeModel { - SUCCESS = 'Success', - WARNING = 'Warning', - ERROR = 'Error', - INFO = 'Info', -} diff --git a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/StylesheetFolderResponseModel.ts b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/StylesheetFolderResponseModel.ts deleted file mode 100644 index 608989b702..0000000000 --- a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/StylesheetFolderResponseModel.ts +++ /dev/null @@ -1,13 +0,0 @@ -/* generated using openapi-typescript-codegen -- do no edit */ -/* istanbul ignore file */ -/* tslint:disable */ -/* eslint-disable */ - -import type { FileSystemFolderModel } from './FileSystemFolderModel'; - -export type StylesheetFolderResponseModel = { - path: string; - name: string; - parent?: FileSystemFolderModel | null; -}; - diff --git a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/StylesheetItemResponseModel.ts b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/StylesheetItemResponseModel.ts deleted file mode 100644 index 02d537cef6..0000000000 --- a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/StylesheetItemResponseModel.ts +++ /dev/null @@ -1,14 +0,0 @@ -/* generated using openapi-typescript-codegen -- do no edit */ -/* istanbul ignore file */ -/* tslint:disable */ -/* eslint-disable */ - -import type { FileSystemFolderModel } from './FileSystemFolderModel'; - -export type StylesheetItemResponseModel = { - path: string; - name: string; - parent?: FileSystemFolderModel | null; - isFolder: boolean; -}; - diff --git a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/StylesheetResponseModel.ts b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/StylesheetResponseModel.ts deleted file mode 100644 index 8ec024c10d..0000000000 --- a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/StylesheetResponseModel.ts +++ /dev/null @@ -1,14 +0,0 @@ -/* generated using openapi-typescript-codegen -- do no edit */ -/* istanbul ignore file */ -/* tslint:disable */ -/* eslint-disable */ - -import type { FileSystemFolderModel } from './FileSystemFolderModel'; - -export type StylesheetResponseModel = { - path: string; - name: string; - parent?: FileSystemFolderModel | null; - content: string; -}; - diff --git a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/TagResponseModel.ts b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/TagResponseModel.ts deleted file mode 100644 index 4b2b6a2bcc..0000000000 --- a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/TagResponseModel.ts +++ /dev/null @@ -1,12 +0,0 @@ -/* generated using openapi-typescript-codegen -- do no edit */ -/* istanbul ignore file */ -/* tslint:disable */ -/* eslint-disable */ - -export type TagResponseModel = { - id: string; - text?: string | null; - group?: string | null; - nodeCount: number; -}; - diff --git a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/TelemetryLevelModel.ts b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/TelemetryLevelModel.ts deleted file mode 100644 index cf03fe41a2..0000000000 --- a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/TelemetryLevelModel.ts +++ /dev/null @@ -1,10 +0,0 @@ -/* generated using openapi-typescript-codegen -- do no edit */ -/* istanbul ignore file */ -/* tslint:disable */ -/* eslint-disable */ - -export enum TelemetryLevelModel { - MINIMAL = 'Minimal', - BASIC = 'Basic', - DETAILED = 'Detailed', -} diff --git a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/TelemetryRequestModel.ts b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/TelemetryRequestModel.ts deleted file mode 100644 index 51e086f3e8..0000000000 --- a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/TelemetryRequestModel.ts +++ /dev/null @@ -1,11 +0,0 @@ -/* generated using openapi-typescript-codegen -- do no edit */ -/* istanbul ignore file */ -/* tslint:disable */ -/* eslint-disable */ - -import type { TelemetryLevelModel } from './TelemetryLevelModel'; - -export type TelemetryRequestModel = { - telemetryLevel: TelemetryLevelModel; -}; - diff --git a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/TelemetryResponseModel.ts b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/TelemetryResponseModel.ts deleted file mode 100644 index cf83a280a0..0000000000 --- a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/TelemetryResponseModel.ts +++ /dev/null @@ -1,11 +0,0 @@ -/* generated using openapi-typescript-codegen -- do no edit */ -/* istanbul ignore file */ -/* tslint:disable */ -/* eslint-disable */ - -import type { TelemetryLevelModel } from './TelemetryLevelModel'; - -export type TelemetryResponseModel = { - telemetryLevel: TelemetryLevelModel; -}; - diff --git a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/TemplateConfigurationResponseModel.ts b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/TemplateConfigurationResponseModel.ts deleted file mode 100644 index 1236e86306..0000000000 --- a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/TemplateConfigurationResponseModel.ts +++ /dev/null @@ -1,9 +0,0 @@ -/* generated using openapi-typescript-codegen -- do no edit */ -/* istanbul ignore file */ -/* tslint:disable */ -/* eslint-disable */ - -export type TemplateConfigurationResponseModel = { - disabled: boolean; -}; - diff --git a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/TemplateItemResponseModel.ts b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/TemplateItemResponseModel.ts deleted file mode 100644 index caab43c55f..0000000000 --- a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/TemplateItemResponseModel.ts +++ /dev/null @@ -1,11 +0,0 @@ -/* generated using openapi-typescript-codegen -- do no edit */ -/* istanbul ignore file */ -/* tslint:disable */ -/* eslint-disable */ - -export type TemplateItemResponseModel = { - id: string; - name: string; - alias: string; -}; - diff --git a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/TemplateQueryExecuteFilterPresentationModel.ts b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/TemplateQueryExecuteFilterPresentationModel.ts deleted file mode 100644 index fa39f4da74..0000000000 --- a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/TemplateQueryExecuteFilterPresentationModel.ts +++ /dev/null @@ -1,13 +0,0 @@ -/* generated using openapi-typescript-codegen -- do no edit */ -/* istanbul ignore file */ -/* tslint:disable */ -/* eslint-disable */ - -import type { OperatorModel } from './OperatorModel'; - -export type TemplateQueryExecuteFilterPresentationModel = { - propertyAlias: string; - constraintValue: string; - operator: OperatorModel; -}; - diff --git a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/TemplateQueryExecuteModel.ts b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/TemplateQueryExecuteModel.ts deleted file mode 100644 index 5ee9d6e4e5..0000000000 --- a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/TemplateQueryExecuteModel.ts +++ /dev/null @@ -1,17 +0,0 @@ -/* generated using openapi-typescript-codegen -- do no edit */ -/* istanbul ignore file */ -/* tslint:disable */ -/* eslint-disable */ - -import type { ReferenceByIdModel } from './ReferenceByIdModel'; -import type { TemplateQueryExecuteFilterPresentationModel } from './TemplateQueryExecuteFilterPresentationModel'; -import type { TemplateQueryExecuteSortModel } from './TemplateQueryExecuteSortModel'; - -export type TemplateQueryExecuteModel = { - rootDocument?: ReferenceByIdModel | null; - documentTypeAlias?: string | null; - filters?: Array | null; - sort?: TemplateQueryExecuteSortModel | null; - take: number; -}; - diff --git a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/TemplateQueryExecuteSortModel.ts b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/TemplateQueryExecuteSortModel.ts deleted file mode 100644 index 7632a9c9a9..0000000000 --- a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/TemplateQueryExecuteSortModel.ts +++ /dev/null @@ -1,10 +0,0 @@ -/* generated using openapi-typescript-codegen -- do no edit */ -/* istanbul ignore file */ -/* tslint:disable */ -/* eslint-disable */ - -export type TemplateQueryExecuteSortModel = { - propertyAlias: string; - direction?: string | null; -}; - diff --git a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/TemplateQueryOperatorModel.ts b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/TemplateQueryOperatorModel.ts deleted file mode 100644 index 1b5dbb4fbd..0000000000 --- a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/TemplateQueryOperatorModel.ts +++ /dev/null @@ -1,13 +0,0 @@ -/* generated using openapi-typescript-codegen -- do no edit */ -/* istanbul ignore file */ -/* tslint:disable */ -/* eslint-disable */ - -import type { OperatorModel } from './OperatorModel'; -import type { TemplateQueryPropertyTypeModel } from './TemplateQueryPropertyTypeModel'; - -export type TemplateQueryOperatorModel = { - operator: OperatorModel; - applicableTypes: Array; -}; - diff --git a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/TemplateQueryPropertyPresentationModel.ts b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/TemplateQueryPropertyPresentationModel.ts deleted file mode 100644 index 7d5c5c3d80..0000000000 --- a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/TemplateQueryPropertyPresentationModel.ts +++ /dev/null @@ -1,12 +0,0 @@ -/* generated using openapi-typescript-codegen -- do no edit */ -/* istanbul ignore file */ -/* tslint:disable */ -/* eslint-disable */ - -import type { TemplateQueryPropertyTypeModel } from './TemplateQueryPropertyTypeModel'; - -export type TemplateQueryPropertyPresentationModel = { - alias: string; - type: TemplateQueryPropertyTypeModel; -}; - diff --git a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/TemplateQueryPropertyTypeModel.ts b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/TemplateQueryPropertyTypeModel.ts deleted file mode 100644 index cb256a6ff4..0000000000 --- a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/TemplateQueryPropertyTypeModel.ts +++ /dev/null @@ -1,10 +0,0 @@ -/* generated using openapi-typescript-codegen -- do no edit */ -/* istanbul ignore file */ -/* tslint:disable */ -/* eslint-disable */ - -export enum TemplateQueryPropertyTypeModel { - STRING = 'String', - DATE_TIME = 'DateTime', - INTEGER = 'Integer', -} diff --git a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/TemplateQueryResultItemPresentationModel.ts b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/TemplateQueryResultItemPresentationModel.ts deleted file mode 100644 index 428789e6e3..0000000000 --- a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/TemplateQueryResultItemPresentationModel.ts +++ /dev/null @@ -1,10 +0,0 @@ -/* generated using openapi-typescript-codegen -- do no edit */ -/* istanbul ignore file */ -/* tslint:disable */ -/* eslint-disable */ - -export type TemplateQueryResultItemPresentationModel = { - icon: string; - name: string; -}; - diff --git a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/TemplateQueryResultResponseModel.ts b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/TemplateQueryResultResponseModel.ts deleted file mode 100644 index 6031658215..0000000000 --- a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/TemplateQueryResultResponseModel.ts +++ /dev/null @@ -1,14 +0,0 @@ -/* generated using openapi-typescript-codegen -- do no edit */ -/* istanbul ignore file */ -/* tslint:disable */ -/* eslint-disable */ - -import type { TemplateQueryResultItemPresentationModel } from './TemplateQueryResultItemPresentationModel'; - -export type TemplateQueryResultResponseModel = { - queryExpression: string; - sampleResults: Array; - resultCount: number; - executionTime: number; -}; - diff --git a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/TemplateQuerySettingsResponseModel.ts b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/TemplateQuerySettingsResponseModel.ts deleted file mode 100644 index 9bbd602dfd..0000000000 --- a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/TemplateQuerySettingsResponseModel.ts +++ /dev/null @@ -1,14 +0,0 @@ -/* generated using openapi-typescript-codegen -- do no edit */ -/* istanbul ignore file */ -/* tslint:disable */ -/* eslint-disable */ - -import type { TemplateQueryOperatorModel } from './TemplateQueryOperatorModel'; -import type { TemplateQueryPropertyPresentationModel } from './TemplateQueryPropertyPresentationModel'; - -export type TemplateQuerySettingsResponseModel = { - documentTypeAliases: Array; - properties: Array; - operators: Array; -}; - diff --git a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/TemplateResponseModel.ts b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/TemplateResponseModel.ts deleted file mode 100644 index 3f9925fa3d..0000000000 --- a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/TemplateResponseModel.ts +++ /dev/null @@ -1,15 +0,0 @@ -/* generated using openapi-typescript-codegen -- do no edit */ -/* istanbul ignore file */ -/* tslint:disable */ -/* eslint-disable */ - -import type { ReferenceByIdModel } from './ReferenceByIdModel'; - -export type TemplateResponseModel = { - name: string; - alias: string; - content?: string | null; - id: string; - masterTemplate?: ReferenceByIdModel | null; -}; - diff --git a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/TemporaryFileConfigurationResponseModel.ts b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/TemporaryFileConfigurationResponseModel.ts deleted file mode 100644 index e9c57080fd..0000000000 --- a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/TemporaryFileConfigurationResponseModel.ts +++ /dev/null @@ -1,12 +0,0 @@ -/* generated using openapi-typescript-codegen -- do no edit */ -/* istanbul ignore file */ -/* tslint:disable */ -/* eslint-disable */ - -export type TemporaryFileConfigurationResponseModel = { - imageFileTypes: Array; - disallowedUploadedFilesExtensions: Array; - allowedUploadedFileExtensions: Array; - maxFileSize?: number | null; -}; - diff --git a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/TemporaryFileResponseModel.ts b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/TemporaryFileResponseModel.ts deleted file mode 100644 index 81b830ed48..0000000000 --- a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/TemporaryFileResponseModel.ts +++ /dev/null @@ -1,11 +0,0 @@ -/* generated using openapi-typescript-codegen -- do no edit */ -/* istanbul ignore file */ -/* tslint:disable */ -/* eslint-disable */ - -export type TemporaryFileResponseModel = { - id: string; - availableUntil?: string | null; - fileName: string; -}; - diff --git a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/TourStatusModel.ts b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/TourStatusModel.ts deleted file mode 100644 index cc941f5b6e..0000000000 --- a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/TourStatusModel.ts +++ /dev/null @@ -1,11 +0,0 @@ -/* generated using openapi-typescript-codegen -- do no edit */ -/* istanbul ignore file */ -/* tslint:disable */ -/* eslint-disable */ - -export type TourStatusModel = { - alias: string; - completed: boolean; - disabled: boolean; -}; - diff --git a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/TrackedReferenceDocumentTypeModel.ts b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/TrackedReferenceDocumentTypeModel.ts deleted file mode 100644 index d6db0e12e0..0000000000 --- a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/TrackedReferenceDocumentTypeModel.ts +++ /dev/null @@ -1,11 +0,0 @@ -/* generated using openapi-typescript-codegen -- do no edit */ -/* istanbul ignore file */ -/* tslint:disable */ -/* eslint-disable */ - -export type TrackedReferenceDocumentTypeModel = { - icon?: string | null; - alias?: string | null; - name?: string | null; -}; - diff --git a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/TrackedReferenceMediaTypeModel.ts b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/TrackedReferenceMediaTypeModel.ts deleted file mode 100644 index 41c533bbf1..0000000000 --- a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/TrackedReferenceMediaTypeModel.ts +++ /dev/null @@ -1,11 +0,0 @@ -/* generated using openapi-typescript-codegen -- do no edit */ -/* istanbul ignore file */ -/* tslint:disable */ -/* eslint-disable */ - -export type TrackedReferenceMediaTypeModel = { - icon?: string | null; - alias?: string | null; - name?: string | null; -}; - diff --git a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/UnknownTypePermissionPresentationModel.ts b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/UnknownTypePermissionPresentationModel.ts deleted file mode 100644 index ca089bbf6f..0000000000 --- a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/UnknownTypePermissionPresentationModel.ts +++ /dev/null @@ -1,11 +0,0 @@ -/* generated using openapi-typescript-codegen -- do no edit */ -/* istanbul ignore file */ -/* tslint:disable */ -/* eslint-disable */ - -export type UnknownTypePermissionPresentationModel = { - $type: string; - verbs: Array; - context: string; -}; - diff --git a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/UnlockUsersRequestModel.ts b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/UnlockUsersRequestModel.ts deleted file mode 100644 index b3b7422b4d..0000000000 --- a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/UnlockUsersRequestModel.ts +++ /dev/null @@ -1,9 +0,0 @@ -/* generated using openapi-typescript-codegen -- do no edit */ -/* istanbul ignore file */ -/* tslint:disable */ -/* eslint-disable */ - -export type UnlockUsersRequestModel = { - userIds: Array; -}; - diff --git a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/UnpublishDocumentRequestModel.ts b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/UnpublishDocumentRequestModel.ts deleted file mode 100644 index 5f6a876fbf..0000000000 --- a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/UnpublishDocumentRequestModel.ts +++ /dev/null @@ -1,9 +0,0 @@ -/* generated using openapi-typescript-codegen -- do no edit */ -/* istanbul ignore file */ -/* tslint:disable */ -/* eslint-disable */ - -export type UnpublishDocumentRequestModel = { - cultures?: Array | null; -}; - diff --git a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/UpdateDataTypeRequestModel.ts b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/UpdateDataTypeRequestModel.ts deleted file mode 100644 index 43323378ff..0000000000 --- a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/UpdateDataTypeRequestModel.ts +++ /dev/null @@ -1,14 +0,0 @@ -/* generated using openapi-typescript-codegen -- do no edit */ -/* istanbul ignore file */ -/* tslint:disable */ -/* eslint-disable */ - -import type { DataTypePropertyPresentationModel } from './DataTypePropertyPresentationModel'; - -export type UpdateDataTypeRequestModel = { - name: string; - editorAlias: string; - editorUiAlias?: string | null; - values: Array; -}; - diff --git a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/UpdateDictionaryItemRequestModel.ts b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/UpdateDictionaryItemRequestModel.ts deleted file mode 100644 index 5381933ff4..0000000000 --- a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/UpdateDictionaryItemRequestModel.ts +++ /dev/null @@ -1,12 +0,0 @@ -/* generated using openapi-typescript-codegen -- do no edit */ -/* istanbul ignore file */ -/* tslint:disable */ -/* eslint-disable */ - -import type { DictionaryItemTranslationModel } from './DictionaryItemTranslationModel'; - -export type UpdateDictionaryItemRequestModel = { - name: string; - translations: Array; -}; - diff --git a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/UpdateDocumentBlueprintRequestModel.ts b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/UpdateDocumentBlueprintRequestModel.ts deleted file mode 100644 index 0eb5028bac..0000000000 --- a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/UpdateDocumentBlueprintRequestModel.ts +++ /dev/null @@ -1,13 +0,0 @@ -/* generated using openapi-typescript-codegen -- do no edit */ -/* istanbul ignore file */ -/* tslint:disable */ -/* eslint-disable */ - -import type { DocumentValueModel } from './DocumentValueModel'; -import type { DocumentVariantRequestModel } from './DocumentVariantRequestModel'; - -export type UpdateDocumentBlueprintRequestModel = { - values: Array; - variants: Array; -}; - diff --git a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/UpdateDocumentNotificationsRequestModel.ts b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/UpdateDocumentNotificationsRequestModel.ts deleted file mode 100644 index d8f77ed0ec..0000000000 --- a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/UpdateDocumentNotificationsRequestModel.ts +++ /dev/null @@ -1,9 +0,0 @@ -/* generated using openapi-typescript-codegen -- do no edit */ -/* istanbul ignore file */ -/* tslint:disable */ -/* eslint-disable */ - -export type UpdateDocumentNotificationsRequestModel = { - subscribedActionIds: Array; -}; - diff --git a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/UpdateDocumentRequestModel.ts b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/UpdateDocumentRequestModel.ts deleted file mode 100644 index 49443c7267..0000000000 --- a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/UpdateDocumentRequestModel.ts +++ /dev/null @@ -1,15 +0,0 @@ -/* generated using openapi-typescript-codegen -- do no edit */ -/* istanbul ignore file */ -/* tslint:disable */ -/* eslint-disable */ - -import type { DocumentValueModel } from './DocumentValueModel'; -import type { DocumentVariantRequestModel } from './DocumentVariantRequestModel'; -import type { ReferenceByIdModel } from './ReferenceByIdModel'; - -export type UpdateDocumentRequestModel = { - values: Array; - variants: Array; - template?: ReferenceByIdModel | null; -}; - diff --git a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/UpdateDocumentTypePropertyTypeContainerRequestModel.ts b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/UpdateDocumentTypePropertyTypeContainerRequestModel.ts deleted file mode 100644 index 31df6c2e24..0000000000 --- a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/UpdateDocumentTypePropertyTypeContainerRequestModel.ts +++ /dev/null @@ -1,15 +0,0 @@ -/* generated using openapi-typescript-codegen -- do no edit */ -/* istanbul ignore file */ -/* tslint:disable */ -/* eslint-disable */ - -import type { ReferenceByIdModel } from './ReferenceByIdModel'; - -export type UpdateDocumentTypePropertyTypeContainerRequestModel = { - id: string; - parent?: ReferenceByIdModel | null; - name?: string | null; - type: string; - sortOrder: number; -}; - diff --git a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/UpdateDocumentTypePropertyTypeRequestModel.ts b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/UpdateDocumentTypePropertyTypeRequestModel.ts deleted file mode 100644 index cb01572972..0000000000 --- a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/UpdateDocumentTypePropertyTypeRequestModel.ts +++ /dev/null @@ -1,23 +0,0 @@ -/* generated using openapi-typescript-codegen -- do no edit */ -/* istanbul ignore file */ -/* tslint:disable */ -/* eslint-disable */ - -import type { PropertyTypeAppearanceModel } from './PropertyTypeAppearanceModel'; -import type { PropertyTypeValidationModel } from './PropertyTypeValidationModel'; -import type { ReferenceByIdModel } from './ReferenceByIdModel'; - -export type UpdateDocumentTypePropertyTypeRequestModel = { - id: string; - container?: ReferenceByIdModel | null; - sortOrder: number; - alias: string; - name: string; - description?: string | null; - dataType: ReferenceByIdModel; - variesByCulture: boolean; - variesBySegment: boolean; - validation: PropertyTypeValidationModel; - appearance: PropertyTypeAppearanceModel; -}; - diff --git a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/UpdateDocumentTypeRequestModel.ts b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/UpdateDocumentTypeRequestModel.ts deleted file mode 100644 index 1f1d8977b7..0000000000 --- a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/UpdateDocumentTypeRequestModel.ts +++ /dev/null @@ -1,31 +0,0 @@ -/* generated using openapi-typescript-codegen -- do no edit */ -/* istanbul ignore file */ -/* tslint:disable */ -/* eslint-disable */ - -import type { DocumentTypeCleanupModel } from './DocumentTypeCleanupModel'; -import type { DocumentTypeCompositionModel } from './DocumentTypeCompositionModel'; -import type { DocumentTypeSortModel } from './DocumentTypeSortModel'; -import type { ReferenceByIdModel } from './ReferenceByIdModel'; -import type { UpdateDocumentTypePropertyTypeContainerRequestModel } from './UpdateDocumentTypePropertyTypeContainerRequestModel'; -import type { UpdateDocumentTypePropertyTypeRequestModel } from './UpdateDocumentTypePropertyTypeRequestModel'; - -export type UpdateDocumentTypeRequestModel = { - alias: string; - name: string; - description?: string | null; - icon: string; - allowedAsRoot: boolean; - variesByCulture: boolean; - variesBySegment: boolean; - collection?: ReferenceByIdModel | null; - isElement: boolean; - properties: Array; - containers: Array; - allowedTemplates: Array; - defaultTemplate?: ReferenceByIdModel | null; - cleanup: DocumentTypeCleanupModel; - allowedDocumentTypes: Array; - compositions: Array; -}; - diff --git a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/UpdateDomainsRequestModel.ts b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/UpdateDomainsRequestModel.ts deleted file mode 100644 index a5954d9801..0000000000 --- a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/UpdateDomainsRequestModel.ts +++ /dev/null @@ -1,12 +0,0 @@ -/* generated using openapi-typescript-codegen -- do no edit */ -/* istanbul ignore file */ -/* tslint:disable */ -/* eslint-disable */ - -import type { DomainPresentationModel } from './DomainPresentationModel'; - -export type UpdateDomainsRequestModel = { - defaultIsoCode?: string | null; - domains: Array; -}; - diff --git a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/UpdateFolderResponseModel.ts b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/UpdateFolderResponseModel.ts deleted file mode 100644 index dcac13e4fd..0000000000 --- a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/UpdateFolderResponseModel.ts +++ /dev/null @@ -1,9 +0,0 @@ -/* generated using openapi-typescript-codegen -- do no edit */ -/* istanbul ignore file */ -/* tslint:disable */ -/* eslint-disable */ - -export type UpdateFolderResponseModel = { - name: string; -}; - diff --git a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/UpdateLanguageRequestModel.ts b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/UpdateLanguageRequestModel.ts deleted file mode 100644 index 55a440a3c7..0000000000 --- a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/UpdateLanguageRequestModel.ts +++ /dev/null @@ -1,12 +0,0 @@ -/* generated using openapi-typescript-codegen -- do no edit */ -/* istanbul ignore file */ -/* tslint:disable */ -/* eslint-disable */ - -export type UpdateLanguageRequestModel = { - name: string; - isDefault: boolean; - isMandatory: boolean; - fallbackIsoCode?: string | null; -}; - diff --git a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/UpdateMediaRequestModel.ts b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/UpdateMediaRequestModel.ts deleted file mode 100644 index 0942d3f2c5..0000000000 --- a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/UpdateMediaRequestModel.ts +++ /dev/null @@ -1,13 +0,0 @@ -/* generated using openapi-typescript-codegen -- do no edit */ -/* istanbul ignore file */ -/* tslint:disable */ -/* eslint-disable */ - -import type { MediaValueModel } from './MediaValueModel'; -import type { MediaVariantRequestModel } from './MediaVariantRequestModel'; - -export type UpdateMediaRequestModel = { - values: Array; - variants: Array; -}; - diff --git a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/UpdateMediaTypePropertyTypeContainerRequestModel.ts b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/UpdateMediaTypePropertyTypeContainerRequestModel.ts deleted file mode 100644 index 79933cd4d3..0000000000 --- a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/UpdateMediaTypePropertyTypeContainerRequestModel.ts +++ /dev/null @@ -1,15 +0,0 @@ -/* generated using openapi-typescript-codegen -- do no edit */ -/* istanbul ignore file */ -/* tslint:disable */ -/* eslint-disable */ - -import type { ReferenceByIdModel } from './ReferenceByIdModel'; - -export type UpdateMediaTypePropertyTypeContainerRequestModel = { - id: string; - parent?: ReferenceByIdModel | null; - name?: string | null; - type: string; - sortOrder: number; -}; - diff --git a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/UpdateMediaTypePropertyTypeRequestModel.ts b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/UpdateMediaTypePropertyTypeRequestModel.ts deleted file mode 100644 index 43734493c3..0000000000 --- a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/UpdateMediaTypePropertyTypeRequestModel.ts +++ /dev/null @@ -1,23 +0,0 @@ -/* generated using openapi-typescript-codegen -- do no edit */ -/* istanbul ignore file */ -/* tslint:disable */ -/* eslint-disable */ - -import type { PropertyTypeAppearanceModel } from './PropertyTypeAppearanceModel'; -import type { PropertyTypeValidationModel } from './PropertyTypeValidationModel'; -import type { ReferenceByIdModel } from './ReferenceByIdModel'; - -export type UpdateMediaTypePropertyTypeRequestModel = { - id: string; - container?: ReferenceByIdModel | null; - sortOrder: number; - alias: string; - name: string; - description?: string | null; - dataType: ReferenceByIdModel; - variesByCulture: boolean; - variesBySegment: boolean; - validation: PropertyTypeValidationModel; - appearance: PropertyTypeAppearanceModel; -}; - diff --git a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/UpdateMediaTypeRequestModel.ts b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/UpdateMediaTypeRequestModel.ts deleted file mode 100644 index ae89525593..0000000000 --- a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/UpdateMediaTypeRequestModel.ts +++ /dev/null @@ -1,27 +0,0 @@ -/* generated using openapi-typescript-codegen -- do no edit */ -/* istanbul ignore file */ -/* tslint:disable */ -/* eslint-disable */ - -import type { MediaTypeCompositionModel } from './MediaTypeCompositionModel'; -import type { MediaTypeSortModel } from './MediaTypeSortModel'; -import type { ReferenceByIdModel } from './ReferenceByIdModel'; -import type { UpdateMediaTypePropertyTypeContainerRequestModel } from './UpdateMediaTypePropertyTypeContainerRequestModel'; -import type { UpdateMediaTypePropertyTypeRequestModel } from './UpdateMediaTypePropertyTypeRequestModel'; - -export type UpdateMediaTypeRequestModel = { - alias: string; - name: string; - description?: string | null; - icon: string; - allowedAsRoot: boolean; - variesByCulture: boolean; - variesBySegment: boolean; - collection?: ReferenceByIdModel | null; - isElement: boolean; - properties: Array; - containers: Array; - allowedMediaTypes: Array; - compositions: Array; -}; - diff --git a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/UpdateMemberGroupRequestModel.ts b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/UpdateMemberGroupRequestModel.ts deleted file mode 100644 index 85d416d3f6..0000000000 --- a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/UpdateMemberGroupRequestModel.ts +++ /dev/null @@ -1,9 +0,0 @@ -/* generated using openapi-typescript-codegen -- do no edit */ -/* istanbul ignore file */ -/* tslint:disable */ -/* eslint-disable */ - -export type UpdateMemberGroupRequestModel = { - name: string; -}; - diff --git a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/UpdateMemberRequestModel.ts b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/UpdateMemberRequestModel.ts deleted file mode 100644 index 02bd5edebb..0000000000 --- a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/UpdateMemberRequestModel.ts +++ /dev/null @@ -1,21 +0,0 @@ -/* generated using openapi-typescript-codegen -- do no edit */ -/* istanbul ignore file */ -/* tslint:disable */ -/* eslint-disable */ - -import type { MemberValueModel } from './MemberValueModel'; -import type { MemberVariantRequestModel } from './MemberVariantRequestModel'; - -export type UpdateMemberRequestModel = { - values: Array; - variants: Array; - email: string; - username: string; - oldPassword?: string | null; - newPassword?: string | null; - groups?: Array | null; - isApproved: boolean; - isLockedOut: boolean; - isTwoFactorEnabled: boolean; -}; - diff --git a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/UpdateMemberTypePropertyTypeContainerRequestModel.ts b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/UpdateMemberTypePropertyTypeContainerRequestModel.ts deleted file mode 100644 index 051e32c2a3..0000000000 --- a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/UpdateMemberTypePropertyTypeContainerRequestModel.ts +++ /dev/null @@ -1,15 +0,0 @@ -/* generated using openapi-typescript-codegen -- do no edit */ -/* istanbul ignore file */ -/* tslint:disable */ -/* eslint-disable */ - -import type { ReferenceByIdModel } from './ReferenceByIdModel'; - -export type UpdateMemberTypePropertyTypeContainerRequestModel = { - id: string; - parent?: ReferenceByIdModel | null; - name?: string | null; - type: string; - sortOrder: number; -}; - diff --git a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/UpdateMemberTypePropertyTypeRequestModel.ts b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/UpdateMemberTypePropertyTypeRequestModel.ts deleted file mode 100644 index 2c5d224e14..0000000000 --- a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/UpdateMemberTypePropertyTypeRequestModel.ts +++ /dev/null @@ -1,26 +0,0 @@ -/* generated using openapi-typescript-codegen -- do no edit */ -/* istanbul ignore file */ -/* tslint:disable */ -/* eslint-disable */ - -import type { MemberTypePropertyTypeVisibilityModel } from './MemberTypePropertyTypeVisibilityModel'; -import type { PropertyTypeAppearanceModel } from './PropertyTypeAppearanceModel'; -import type { PropertyTypeValidationModel } from './PropertyTypeValidationModel'; -import type { ReferenceByIdModel } from './ReferenceByIdModel'; - -export type UpdateMemberTypePropertyTypeRequestModel = { - id: string; - container?: ReferenceByIdModel | null; - sortOrder: number; - alias: string; - name: string; - description?: string | null; - dataType: ReferenceByIdModel; - variesByCulture: boolean; - variesBySegment: boolean; - validation: PropertyTypeValidationModel; - appearance: PropertyTypeAppearanceModel; - isSensitive: boolean; - visibility: MemberTypePropertyTypeVisibilityModel; -}; - diff --git a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/UpdateMemberTypeRequestModel.ts b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/UpdateMemberTypeRequestModel.ts deleted file mode 100644 index 7178cfdef1..0000000000 --- a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/UpdateMemberTypeRequestModel.ts +++ /dev/null @@ -1,25 +0,0 @@ -/* generated using openapi-typescript-codegen -- do no edit */ -/* istanbul ignore file */ -/* tslint:disable */ -/* eslint-disable */ - -import type { MemberTypeCompositionModel } from './MemberTypeCompositionModel'; -import type { ReferenceByIdModel } from './ReferenceByIdModel'; -import type { UpdateMemberTypePropertyTypeContainerRequestModel } from './UpdateMemberTypePropertyTypeContainerRequestModel'; -import type { UpdateMemberTypePropertyTypeRequestModel } from './UpdateMemberTypePropertyTypeRequestModel'; - -export type UpdateMemberTypeRequestModel = { - alias: string; - name: string; - description?: string | null; - icon: string; - allowedAsRoot: boolean; - variesByCulture: boolean; - variesBySegment: boolean; - collection?: ReferenceByIdModel | null; - isElement: boolean; - properties: Array; - containers: Array; - compositions: Array; -}; - diff --git a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/UpdatePackageRequestModel.ts b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/UpdatePackageRequestModel.ts deleted file mode 100644 index 85b28a9baf..0000000000 --- a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/UpdatePackageRequestModel.ts +++ /dev/null @@ -1,23 +0,0 @@ -/* generated using openapi-typescript-codegen -- do no edit */ -/* istanbul ignore file */ -/* tslint:disable */ -/* eslint-disable */ - -export type UpdatePackageRequestModel = { - name: string; - contentNodeId?: string | null; - contentLoadChildNodes: boolean; - mediaIds: Array; - mediaLoadChildNodes: boolean; - documentTypes: Array; - mediaTypes: Array; - dataTypes: Array; - templates: Array; - partialViews: Array; - stylesheets: Array; - scripts: Array; - languages: Array; - dictionaryItems: Array; - packagePath: string; -}; - diff --git a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/UpdatePartialViewRequestModel.ts b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/UpdatePartialViewRequestModel.ts deleted file mode 100644 index 68b2cbdd38..0000000000 --- a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/UpdatePartialViewRequestModel.ts +++ /dev/null @@ -1,9 +0,0 @@ -/* generated using openapi-typescript-codegen -- do no edit */ -/* istanbul ignore file */ -/* tslint:disable */ -/* eslint-disable */ - -export type UpdatePartialViewRequestModel = { - content: string; -}; - diff --git a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/UpdateScriptRequestModel.ts b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/UpdateScriptRequestModel.ts deleted file mode 100644 index 7fea8d250b..0000000000 --- a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/UpdateScriptRequestModel.ts +++ /dev/null @@ -1,9 +0,0 @@ -/* generated using openapi-typescript-codegen -- do no edit */ -/* istanbul ignore file */ -/* tslint:disable */ -/* eslint-disable */ - -export type UpdateScriptRequestModel = { - content: string; -}; - diff --git a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/UpdateStylesheetRequestModel.ts b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/UpdateStylesheetRequestModel.ts deleted file mode 100644 index 6e95bb058c..0000000000 --- a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/UpdateStylesheetRequestModel.ts +++ /dev/null @@ -1,9 +0,0 @@ -/* generated using openapi-typescript-codegen -- do no edit */ -/* istanbul ignore file */ -/* tslint:disable */ -/* eslint-disable */ - -export type UpdateStylesheetRequestModel = { - content: string; -}; - diff --git a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/UpdateTemplateRequestModel.ts b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/UpdateTemplateRequestModel.ts deleted file mode 100644 index 837981d8e6..0000000000 --- a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/UpdateTemplateRequestModel.ts +++ /dev/null @@ -1,11 +0,0 @@ -/* generated using openapi-typescript-codegen -- do no edit */ -/* istanbul ignore file */ -/* tslint:disable */ -/* eslint-disable */ - -export type UpdateTemplateRequestModel = { - name: string; - alias: string; - content?: string | null; -}; - diff --git a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/UpdateUserGroupRequestModel.ts b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/UpdateUserGroupRequestModel.ts deleted file mode 100644 index 7c99d56cb8..0000000000 --- a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/UpdateUserGroupRequestModel.ts +++ /dev/null @@ -1,23 +0,0 @@ -/* generated using openapi-typescript-codegen -- do no edit */ -/* istanbul ignore file */ -/* tslint:disable */ -/* eslint-disable */ - -import type { DocumentPermissionPresentationModel } from './DocumentPermissionPresentationModel'; -import type { ReferenceByIdModel } from './ReferenceByIdModel'; -import type { UnknownTypePermissionPresentationModel } from './UnknownTypePermissionPresentationModel'; - -export type UpdateUserGroupRequestModel = { - name: string; - icon?: string | null; - sections: Array; - languages: Array; - hasAccessToAllLanguages: boolean; - documentStartNode?: ReferenceByIdModel | null; - documentRootAccess: boolean; - mediaStartNode?: ReferenceByIdModel | null; - mediaRootAccess: boolean; - fallbackPermissions: Array; - permissions: Array<(DocumentPermissionPresentationModel | UnknownTypePermissionPresentationModel)>; -}; - diff --git a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/UpdateUserGroupsOnUserRequestModel.ts b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/UpdateUserGroupsOnUserRequestModel.ts deleted file mode 100644 index 181ce870fe..0000000000 --- a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/UpdateUserGroupsOnUserRequestModel.ts +++ /dev/null @@ -1,10 +0,0 @@ -/* generated using openapi-typescript-codegen -- do no edit */ -/* istanbul ignore file */ -/* tslint:disable */ -/* eslint-disable */ - -export type UpdateUserGroupsOnUserRequestModel = { - userIds: Array; - userGroupIds: Array; -}; - diff --git a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/UpdateUserRequestModel.ts b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/UpdateUserRequestModel.ts deleted file mode 100644 index acb30e4f35..0000000000 --- a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/UpdateUserRequestModel.ts +++ /dev/null @@ -1,15 +0,0 @@ -/* generated using openapi-typescript-codegen -- do no edit */ -/* istanbul ignore file */ -/* tslint:disable */ -/* eslint-disable */ - -export type UpdateUserRequestModel = { - email: string; - userName: string; - name: string; - userGroupIds: Array; - languageIsoCode: string; - documentStartNodeIds: Array; - mediaStartNodeIds: Array; -}; - diff --git a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/UpdateWebhookRequestModel.ts b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/UpdateWebhookRequestModel.ts deleted file mode 100644 index 476e64a89f..0000000000 --- a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/UpdateWebhookRequestModel.ts +++ /dev/null @@ -1,13 +0,0 @@ -/* generated using openapi-typescript-codegen -- do no edit */ -/* istanbul ignore file */ -/* tslint:disable */ -/* eslint-disable */ - -export type UpdateWebhookRequestModel = { - enabled: boolean; - url: string; - contentTypeKeys: Array; - headers: Record; - events: Array; -}; - diff --git a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/UpgradeSettingsResponseModel.ts b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/UpgradeSettingsResponseModel.ts deleted file mode 100644 index 8c003c6cc2..0000000000 --- a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/UpgradeSettingsResponseModel.ts +++ /dev/null @@ -1,13 +0,0 @@ -/* generated using openapi-typescript-codegen -- do no edit */ -/* istanbul ignore file */ -/* tslint:disable */ -/* eslint-disable */ - -export type UpgradeSettingsResponseModel = { - currentState: string; - newState: string; - newVersion: string; - oldVersion: string; - readonly reportUrl: string; -}; - diff --git a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/UserConfigurationResponseModel.ts b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/UserConfigurationResponseModel.ts deleted file mode 100644 index 03b2a5c612..0000000000 --- a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/UserConfigurationResponseModel.ts +++ /dev/null @@ -1,12 +0,0 @@ -/* generated using openapi-typescript-codegen -- do no edit */ -/* istanbul ignore file */ -/* tslint:disable */ -/* eslint-disable */ - -import type { PasswordConfigurationResponseModel } from './PasswordConfigurationResponseModel'; - -export type UserConfigurationResponseModel = { - canInviteUsers: boolean; - passwordConfiguration: PasswordConfigurationResponseModel; -}; - diff --git a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/UserGroupItemResponseModel.ts b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/UserGroupItemResponseModel.ts deleted file mode 100644 index a048595095..0000000000 --- a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/UserGroupItemResponseModel.ts +++ /dev/null @@ -1,11 +0,0 @@ -/* generated using openapi-typescript-codegen -- do no edit */ -/* istanbul ignore file */ -/* tslint:disable */ -/* eslint-disable */ - -export type UserGroupItemResponseModel = { - id: string; - name: string; - icon?: string | null; -}; - diff --git a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/UserGroupResponseModel.ts b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/UserGroupResponseModel.ts deleted file mode 100644 index fc3d8af015..0000000000 --- a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/UserGroupResponseModel.ts +++ /dev/null @@ -1,25 +0,0 @@ -/* generated using openapi-typescript-codegen -- do no edit */ -/* istanbul ignore file */ -/* tslint:disable */ -/* eslint-disable */ - -import type { DocumentPermissionPresentationModel } from './DocumentPermissionPresentationModel'; -import type { ReferenceByIdModel } from './ReferenceByIdModel'; -import type { UnknownTypePermissionPresentationModel } from './UnknownTypePermissionPresentationModel'; - -export type UserGroupResponseModel = { - name: string; - icon?: string | null; - sections: Array; - languages: Array; - hasAccessToAllLanguages: boolean; - documentStartNode?: ReferenceByIdModel | null; - documentRootAccess: boolean; - mediaStartNode?: ReferenceByIdModel | null; - mediaRootAccess: boolean; - fallbackPermissions: Array; - permissions: Array<(DocumentPermissionPresentationModel | UnknownTypePermissionPresentationModel)>; - id: string; - isSystemGroup: boolean; -}; - diff --git a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/UserInstallRequestModel.ts b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/UserInstallRequestModel.ts deleted file mode 100644 index a24cc35709..0000000000 --- a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/UserInstallRequestModel.ts +++ /dev/null @@ -1,12 +0,0 @@ -/* generated using openapi-typescript-codegen -- do no edit */ -/* istanbul ignore file */ -/* tslint:disable */ -/* eslint-disable */ - -export type UserInstallRequestModel = { - name: string; - email: string; - password: string; - readonly subscribeToNewsletter: boolean; -}; - diff --git a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/UserItemResponseModel.ts b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/UserItemResponseModel.ts deleted file mode 100644 index e5bcc26d58..0000000000 --- a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/UserItemResponseModel.ts +++ /dev/null @@ -1,10 +0,0 @@ -/* generated using openapi-typescript-codegen -- do no edit */ -/* istanbul ignore file */ -/* tslint:disable */ -/* eslint-disable */ - -export type UserItemResponseModel = { - id: string; - name: string; -}; - diff --git a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/UserOrderModel.ts b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/UserOrderModel.ts deleted file mode 100644 index 64a7bf766e..0000000000 --- a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/UserOrderModel.ts +++ /dev/null @@ -1,17 +0,0 @@ -/* generated using openapi-typescript-codegen -- do no edit */ -/* istanbul ignore file */ -/* tslint:disable */ -/* eslint-disable */ - -export enum UserOrderModel { - USER_NAME = 'UserName', - LANGUAGE = 'Language', - NAME = 'Name', - EMAIL = 'Email', - ID = 'Id', - CREATE_DATE = 'CreateDate', - UPDATE_DATE = 'UpdateDate', - IS_APPROVED = 'IsApproved', - IS_LOCKED_OUT = 'IsLockedOut', - LAST_LOGIN_DATE = 'LastLoginDate', -} diff --git a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/UserPermissionModel.ts b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/UserPermissionModel.ts deleted file mode 100644 index d154d2e05d..0000000000 --- a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/UserPermissionModel.ts +++ /dev/null @@ -1,10 +0,0 @@ -/* generated using openapi-typescript-codegen -- do no edit */ -/* istanbul ignore file */ -/* tslint:disable */ -/* eslint-disable */ - -export type UserPermissionModel = { - nodeKey: string; - permissions: Array; -}; - diff --git a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/UserPermissionsResponseModel.ts b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/UserPermissionsResponseModel.ts deleted file mode 100644 index 7dfc2edb5a..0000000000 --- a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/UserPermissionsResponseModel.ts +++ /dev/null @@ -1,11 +0,0 @@ -/* generated using openapi-typescript-codegen -- do no edit */ -/* istanbul ignore file */ -/* tslint:disable */ -/* eslint-disable */ - -import type { UserPermissionModel } from './UserPermissionModel'; - -export type UserPermissionsResponseModel = { - permissions: Array; -}; - diff --git a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/UserResponseModel.ts b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/UserResponseModel.ts deleted file mode 100644 index 4f11202c48..0000000000 --- a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/UserResponseModel.ts +++ /dev/null @@ -1,27 +0,0 @@ -/* generated using openapi-typescript-codegen -- do no edit */ -/* istanbul ignore file */ -/* tslint:disable */ -/* eslint-disable */ - -import type { UserStateModel } from './UserStateModel'; - -export type UserResponseModel = { - email: string; - userName: string; - name: string; - userGroupIds: Array; - id: string; - languageIsoCode?: string | null; - documentStartNodeIds: Array; - mediaStartNodeIds: Array; - avatarUrls: Array; - state: UserStateModel; - failedLoginAttempts: number; - createDate: string; - updateDate: string; - lastLoginDate?: string | null; - lastLockoutDate?: string | null; - lastPasswordChangeDate?: string | null; - isAdmin: boolean; -}; - diff --git a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/UserSettingsPresentationModel.ts b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/UserSettingsPresentationModel.ts deleted file mode 100644 index b1972008c4..0000000000 --- a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/UserSettingsPresentationModel.ts +++ /dev/null @@ -1,13 +0,0 @@ -/* generated using openapi-typescript-codegen -- do no edit */ -/* istanbul ignore file */ -/* tslint:disable */ -/* eslint-disable */ - -import type { ConsentLevelPresentationModel } from './ConsentLevelPresentationModel'; - -export type UserSettingsPresentationModel = { - minCharLength: number; - minNonAlphaNumericLength: number; - consentLevels: Array; -}; - diff --git a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/UserStateModel.ts b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/UserStateModel.ts deleted file mode 100644 index 16dc3dd79b..0000000000 --- a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/UserStateModel.ts +++ /dev/null @@ -1,13 +0,0 @@ -/* generated using openapi-typescript-codegen -- do no edit */ -/* istanbul ignore file */ -/* tslint:disable */ -/* eslint-disable */ - -export enum UserStateModel { - ACTIVE = 'Active', - DISABLED = 'Disabled', - LOCKED_OUT = 'LockedOut', - INVITED = 'Invited', - INACTIVE = 'Inactive', - ALL = 'All', -} diff --git a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/UserTourStatusesResponseModel.ts b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/UserTourStatusesResponseModel.ts deleted file mode 100644 index d27675704d..0000000000 --- a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/UserTourStatusesResponseModel.ts +++ /dev/null @@ -1,11 +0,0 @@ -/* generated using openapi-typescript-codegen -- do no edit */ -/* istanbul ignore file */ -/* tslint:disable */ -/* eslint-disable */ - -import type { TourStatusModel } from './TourStatusModel'; - -export type UserTourStatusesResponseModel = { - tourStatuses: Array; -}; - diff --git a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/UserTwoFactorProviderModel.ts b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/UserTwoFactorProviderModel.ts deleted file mode 100644 index be0c9fc780..0000000000 --- a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/UserTwoFactorProviderModel.ts +++ /dev/null @@ -1,10 +0,0 @@ -/* generated using openapi-typescript-codegen -- do no edit */ -/* istanbul ignore file */ -/* tslint:disable */ -/* eslint-disable */ - -export type UserTwoFactorProviderModel = { - providerName: string; - isEnabledOnUser: boolean; -}; - diff --git a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/VariantItemResponseModel.ts b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/VariantItemResponseModel.ts deleted file mode 100644 index eb139f6fb5..0000000000 --- a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/VariantItemResponseModel.ts +++ /dev/null @@ -1,10 +0,0 @@ -/* generated using openapi-typescript-codegen -- do no edit */ -/* istanbul ignore file */ -/* tslint:disable */ -/* eslint-disable */ - -export type VariantItemResponseModel = { - name: string; - culture?: string | null; -}; - diff --git a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/VerifyInviteUserRequestModel.ts b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/VerifyInviteUserRequestModel.ts deleted file mode 100644 index 99c7a000b6..0000000000 --- a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/VerifyInviteUserRequestModel.ts +++ /dev/null @@ -1,12 +0,0 @@ -/* generated using openapi-typescript-codegen -- do no edit */ -/* istanbul ignore file */ -/* tslint:disable */ -/* eslint-disable */ - -import type { ReferenceByIdModel } from './ReferenceByIdModel'; - -export type VerifyInviteUserRequestModel = { - user: ReferenceByIdModel; - token: string; -}; - diff --git a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/VerifyInviteUserResponseModel.ts b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/VerifyInviteUserResponseModel.ts deleted file mode 100644 index cc7f102b7f..0000000000 --- a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/VerifyInviteUserResponseModel.ts +++ /dev/null @@ -1,11 +0,0 @@ -/* generated using openapi-typescript-codegen -- do no edit */ -/* istanbul ignore file */ -/* tslint:disable */ -/* eslint-disable */ - -import type { PasswordConfigurationResponseModel } from './PasswordConfigurationResponseModel'; - -export type VerifyInviteUserResponseModel = { - passwordConfiguration: PasswordConfigurationResponseModel; -}; - diff --git a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/VerifyResetPasswordResponseModel.ts b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/VerifyResetPasswordResponseModel.ts deleted file mode 100644 index 1c80084a94..0000000000 --- a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/VerifyResetPasswordResponseModel.ts +++ /dev/null @@ -1,11 +0,0 @@ -/* generated using openapi-typescript-codegen -- do no edit */ -/* istanbul ignore file */ -/* tslint:disable */ -/* eslint-disable */ - -import type { PasswordConfigurationResponseModel } from './PasswordConfigurationResponseModel'; - -export type VerifyResetPasswordResponseModel = { - passwordConfiguration: PasswordConfigurationResponseModel; -}; - diff --git a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/VerifyResetPasswordTokenRequestModel.ts b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/VerifyResetPasswordTokenRequestModel.ts deleted file mode 100644 index 3796453d71..0000000000 --- a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/VerifyResetPasswordTokenRequestModel.ts +++ /dev/null @@ -1,12 +0,0 @@ -/* generated using openapi-typescript-codegen -- do no edit */ -/* istanbul ignore file */ -/* tslint:disable */ -/* eslint-disable */ - -import type { ReferenceByIdModel } from './ReferenceByIdModel'; - -export type VerifyResetPasswordTokenRequestModel = { - user: ReferenceByIdModel; - resetCode: string; -}; - diff --git a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/WebhookEventResponseModel.ts b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/WebhookEventResponseModel.ts deleted file mode 100644 index 100b23dbe0..0000000000 --- a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/WebhookEventResponseModel.ts +++ /dev/null @@ -1,11 +0,0 @@ -/* generated using openapi-typescript-codegen -- do no edit */ -/* istanbul ignore file */ -/* tslint:disable */ -/* eslint-disable */ - -export type WebhookEventResponseModel = { - eventName: string; - eventType: string; - alias: string; -}; - diff --git a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/WebhookItemResponseModel.ts b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/WebhookItemResponseModel.ts deleted file mode 100644 index 5dd1c9094b..0000000000 --- a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/WebhookItemResponseModel.ts +++ /dev/null @@ -1,13 +0,0 @@ -/* generated using openapi-typescript-codegen -- do no edit */ -/* istanbul ignore file */ -/* tslint:disable */ -/* eslint-disable */ - -export type WebhookItemResponseModel = { - enabled: boolean; - name: string; - events: string; - url: string; - types: string; -}; - diff --git a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/WebhookResponseModel.ts b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/WebhookResponseModel.ts deleted file mode 100644 index 918c92805b..0000000000 --- a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/WebhookResponseModel.ts +++ /dev/null @@ -1,16 +0,0 @@ -/* generated using openapi-typescript-codegen -- do no edit */ -/* istanbul ignore file */ -/* tslint:disable */ -/* eslint-disable */ - -import type { WebhookEventResponseModel } from './WebhookEventResponseModel'; - -export type WebhookResponseModel = { - enabled: boolean; - url: string; - contentTypeKeys: Array; - headers: Record; - id: string; - events: Array; -}; - diff --git a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/services.ts b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/services.ts new file mode 100644 index 0000000000..13a7f127f5 --- /dev/null +++ b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/services.ts @@ -0,0 +1,8623 @@ +import type { CancelablePromise } from './core/CancelablePromise'; +import { OpenAPI } from './core/OpenAPI'; +import { request as __request } from './core/request'; +import type { AuditLogData, CultureData, DataTypeData, DictionaryData, DocumentBlueprintData, DocumentTypeData, DocumentVersionData, DocumentData, DynamicRootData, HealthCheckData, HelpData, IndexerData, InstallData, LanguageData, LogViewerData, ManifestData, MediaTypeData, MediaData, MemberGroupData, MemberTypeData, MemberData, ModelsBuilderData, ObjectTypesData, PackageData, PartialViewData, PreviewData, ProfilingData, PropertyTypeData, PublishedCacheData, RedirectManagementData, RelationTypeData, RelationData, ScriptData, SearcherData, SecurityData, ServerData, StaticFileData, StylesheetData, TagData, TelemetryData, TemplateData, TemporaryFileData, UpgradeData, UserDataData, UserGroupData, UserData, WebhookData } from './models'; + +export class AuditLogService { + + /** + * @returns unknown Success + * @throws ApiError + */ + public static getAuditLog(data: AuditLogData['payloads']['GetAuditLog'] = {}): CancelablePromise { + const { + + orderDirection, +sinceDate, +skip, +take + } = data; + return __request(OpenAPI, { + method: 'GET', + url: '/umbraco/management/api/v1/audit-log', + query: { + orderDirection, sinceDate, skip, take + }, + errors: { + 401: `The resource is protected and requires an authentication token`, + }, + }); + } + + /** + * @returns unknown Success + * @throws ApiError + */ + public static getAuditLogById(data: AuditLogData['payloads']['GetAuditLogById']): CancelablePromise { + const { + + id, +orderDirection, +sinceDate, +skip, +take + } = data; + return __request(OpenAPI, { + method: 'GET', + url: '/umbraco/management/api/v1/audit-log/{id}', + path: { + id + }, + query: { + orderDirection, sinceDate, skip, take + }, + errors: { + 401: `The resource is protected and requires an authentication token`, + }, + }); + } + + /** + * @returns unknown Success + * @throws ApiError + */ + public static getAuditLogTypeByLogType(data: AuditLogData['payloads']['GetAuditLogTypeByLogType']): CancelablePromise { + const { + + logType, +sinceDate, +skip, +take + } = data; + return __request(OpenAPI, { + method: 'GET', + url: '/umbraco/management/api/v1/audit-log/type/{logType}', + path: { + logType + }, + query: { + sinceDate, skip, take + }, + errors: { + 401: `The resource is protected and requires an authentication token`, + }, + }); + } + +} + +export class CultureService { + + /** + * @returns unknown Success + * @throws ApiError + */ + public static getCulture(data: CultureData['payloads']['GetCulture'] = {}): CancelablePromise { + const { + + skip, +take + } = data; + return __request(OpenAPI, { + method: 'GET', + url: '/umbraco/management/api/v1/culture', + query: { + skip, take + }, + errors: { + 401: `The resource is protected and requires an authentication token`, + }, + }); + } + +} + +export class DataTypeService { + + /** + * @returns string Created + * @throws ApiError + */ + public static postDataType(data: DataTypeData['payloads']['PostDataType'] = {}): CancelablePromise { + const { + + requestBody + } = data; + return __request(OpenAPI, { + method: 'POST', + url: '/umbraco/management/api/v1/data-type', + body: requestBody, + mediaType: 'application/json', + responseHeader: 'Umb-Generated-Resource', + errors: { + 400: `Bad Request`, + 401: `The resource is protected and requires an authentication token`, + 404: `Not Found`, + }, + }); + } + + /** + * @returns unknown Success + * @throws ApiError + */ + public static getDataTypeById(data: DataTypeData['payloads']['GetDataTypeById']): CancelablePromise { + const { + + id + } = data; + return __request(OpenAPI, { + method: 'GET', + url: '/umbraco/management/api/v1/data-type/{id}', + path: { + id + }, + errors: { + 401: `The resource is protected and requires an authentication token`, + 404: `Not Found`, + }, + }); + } + + /** + * @returns string Success + * @throws ApiError + */ + public static deleteDataTypeById(data: DataTypeData['payloads']['DeleteDataTypeById']): CancelablePromise { + const { + + id + } = data; + return __request(OpenAPI, { + method: 'DELETE', + url: '/umbraco/management/api/v1/data-type/{id}', + path: { + id + }, + responseHeader: 'Umb-Notifications', + errors: { + 400: `Bad Request`, + 401: `The resource is protected and requires an authentication token`, + 404: `Not Found`, + }, + }); + } + + /** + * @returns string Success + * @throws ApiError + */ + public static putDataTypeById(data: DataTypeData['payloads']['PutDataTypeById']): CancelablePromise { + const { + + id, +requestBody + } = data; + return __request(OpenAPI, { + method: 'PUT', + url: '/umbraco/management/api/v1/data-type/{id}', + path: { + id + }, + body: requestBody, + mediaType: 'application/json', + responseHeader: 'Umb-Notifications', + errors: { + 400: `Bad Request`, + 401: `The resource is protected and requires an authentication token`, + 404: `Not Found`, + }, + }); + } + + /** + * @returns string Created + * @throws ApiError + */ + public static postDataTypeByIdCopy(data: DataTypeData['payloads']['PostDataTypeByIdCopy']): CancelablePromise { + const { + + id, +requestBody + } = data; + return __request(OpenAPI, { + method: 'POST', + url: '/umbraco/management/api/v1/data-type/{id}/copy', + path: { + id + }, + body: requestBody, + mediaType: 'application/json', + responseHeader: 'Umb-Generated-Resource', + errors: { + 401: `The resource is protected and requires an authentication token`, + 404: `Not Found`, + }, + }); + } + + /** + * @returns boolean Success + * @throws ApiError + */ + public static getDataTypeByIdIsUsed(data: DataTypeData['payloads']['GetDataTypeByIdIsUsed']): CancelablePromise { + const { + + id + } = data; + return __request(OpenAPI, { + method: 'GET', + url: '/umbraco/management/api/v1/data-type/{id}/is-used', + path: { + id + }, + errors: { + 401: `The resource is protected and requires an authentication token`, + 404: `Not Found`, + }, + }); + } + + /** + * @returns string Success + * @throws ApiError + */ + public static putDataTypeByIdMove(data: DataTypeData['payloads']['PutDataTypeByIdMove']): CancelablePromise { + const { + + id, +requestBody + } = data; + return __request(OpenAPI, { + method: 'PUT', + url: '/umbraco/management/api/v1/data-type/{id}/move', + path: { + id + }, + body: requestBody, + mediaType: 'application/json', + responseHeader: 'Umb-Notifications', + errors: { + 401: `The resource is protected and requires an authentication token`, + 404: `Not Found`, + }, + }); + } + + /** + * @returns unknown Success + * @throws ApiError + */ + public static getDataTypeByIdReferences(data: DataTypeData['payloads']['GetDataTypeByIdReferences']): CancelablePromise { + const { + + id + } = data; + return __request(OpenAPI, { + method: 'GET', + url: '/umbraco/management/api/v1/data-type/{id}/references', + path: { + id + }, + errors: { + 401: `The resource is protected and requires an authentication token`, + 404: `Not Found`, + }, + }); + } + + /** + * @returns unknown Success + * @throws ApiError + */ + public static getDataTypeConfiguration(): CancelablePromise { + + return __request(OpenAPI, { + method: 'GET', + url: '/umbraco/management/api/v1/data-type/configuration', + errors: { + 401: `The resource is protected and requires an authentication token`, + }, + }); + } + + /** + * @returns string Created + * @throws ApiError + */ + public static postDataTypeFolder(data: DataTypeData['payloads']['PostDataTypeFolder'] = {}): CancelablePromise { + const { + + requestBody + } = data; + return __request(OpenAPI, { + method: 'POST', + url: '/umbraco/management/api/v1/data-type/folder', + body: requestBody, + mediaType: 'application/json', + responseHeader: 'Umb-Generated-Resource', + errors: { + 400: `Bad Request`, + 401: `The resource is protected and requires an authentication token`, + 404: `Not Found`, + }, + }); + } + + /** + * @returns unknown Success + * @throws ApiError + */ + public static getDataTypeFolderById(data: DataTypeData['payloads']['GetDataTypeFolderById']): CancelablePromise { + const { + + id + } = data; + return __request(OpenAPI, { + method: 'GET', + url: '/umbraco/management/api/v1/data-type/folder/{id}', + path: { + id + }, + errors: { + 401: `The resource is protected and requires an authentication token`, + 404: `Not Found`, + }, + }); + } + + /** + * @returns string Success + * @throws ApiError + */ + public static deleteDataTypeFolderById(data: DataTypeData['payloads']['DeleteDataTypeFolderById']): CancelablePromise { + const { + + id + } = data; + return __request(OpenAPI, { + method: 'DELETE', + url: '/umbraco/management/api/v1/data-type/folder/{id}', + path: { + id + }, + responseHeader: 'Umb-Notifications', + errors: { + 400: `Bad Request`, + 401: `The resource is protected and requires an authentication token`, + 404: `Not Found`, + }, + }); + } + + /** + * @returns string Success + * @throws ApiError + */ + public static putDataTypeFolderById(data: DataTypeData['payloads']['PutDataTypeFolderById']): CancelablePromise { + const { + + id, +requestBody + } = data; + return __request(OpenAPI, { + method: 'PUT', + url: '/umbraco/management/api/v1/data-type/folder/{id}', + path: { + id + }, + body: requestBody, + mediaType: 'application/json', + responseHeader: 'Umb-Notifications', + errors: { + 400: `Bad Request`, + 401: `The resource is protected and requires an authentication token`, + 404: `Not Found`, + }, + }); + } + + /** + * @returns unknown Success + * @throws ApiError + */ + public static getFilterDataType(data: DataTypeData['payloads']['GetFilterDataType'] = {}): CancelablePromise { + const { + + skip, +take, +name, +editorUiAlias, +editorAlias + } = data; + return __request(OpenAPI, { + method: 'GET', + url: '/umbraco/management/api/v1/filter/data-type', + query: { + skip, take, name, editorUiAlias, editorAlias + }, + errors: { + 401: `The resource is protected and requires an authentication token`, + }, + }); + } + + /** + * @returns unknown Success + * @throws ApiError + */ + public static getItemDataType(data: DataTypeData['payloads']['GetItemDataType'] = {}): CancelablePromise { + const { + + id + } = data; + return __request(OpenAPI, { + method: 'GET', + url: '/umbraco/management/api/v1/item/data-type', + query: { + id + }, + errors: { + 401: `The resource is protected and requires an authentication token`, + }, + }); + } + + /** + * @returns unknown Success + * @throws ApiError + */ + public static getItemDataTypeSearch(data: DataTypeData['payloads']['GetItemDataTypeSearch'] = {}): CancelablePromise { + const { + + query, +skip, +take + } = data; + return __request(OpenAPI, { + method: 'GET', + url: '/umbraco/management/api/v1/item/data-type/search', + query: { + query, skip, take + }, + errors: { + 401: `The resource is protected and requires an authentication token`, + }, + }); + } + + /** + * @returns unknown Success + * @throws ApiError + */ + public static getTreeDataTypeAncestors(data: DataTypeData['payloads']['GetTreeDataTypeAncestors'] = {}): CancelablePromise { + const { + + descendantId + } = data; + return __request(OpenAPI, { + method: 'GET', + url: '/umbraco/management/api/v1/tree/data-type/ancestors', + query: { + descendantId + }, + errors: { + 401: `The resource is protected and requires an authentication token`, + }, + }); + } + + /** + * @returns unknown Success + * @throws ApiError + */ + public static getTreeDataTypeChildren(data: DataTypeData['payloads']['GetTreeDataTypeChildren'] = {}): CancelablePromise { + const { + + parentId, +skip, +take, +foldersOnly + } = data; + return __request(OpenAPI, { + method: 'GET', + url: '/umbraco/management/api/v1/tree/data-type/children', + query: { + parentId, skip, take, foldersOnly + }, + errors: { + 401: `The resource is protected and requires an authentication token`, + }, + }); + } + + /** + * @returns unknown Success + * @throws ApiError + */ + public static getTreeDataTypeRoot(data: DataTypeData['payloads']['GetTreeDataTypeRoot'] = {}): CancelablePromise { + const { + + skip, +take, +foldersOnly + } = data; + return __request(OpenAPI, { + method: 'GET', + url: '/umbraco/management/api/v1/tree/data-type/root', + query: { + skip, take, foldersOnly + }, + errors: { + 401: `The resource is protected and requires an authentication token`, + }, + }); + } + +} + +export class DictionaryService { + + /** + * @returns unknown Success + * @throws ApiError + */ + public static getDictionary(data: DictionaryData['payloads']['GetDictionary'] = {}): CancelablePromise { + const { + + filter, +skip, +take + } = data; + return __request(OpenAPI, { + method: 'GET', + url: '/umbraco/management/api/v1/dictionary', + query: { + filter, skip, take + }, + errors: { + 401: `The resource is protected and requires an authentication token`, + }, + }); + } + + /** + * @returns string Created + * @throws ApiError + */ + public static postDictionary(data: DictionaryData['payloads']['PostDictionary'] = {}): CancelablePromise { + const { + + requestBody + } = data; + return __request(OpenAPI, { + method: 'POST', + url: '/umbraco/management/api/v1/dictionary', + body: requestBody, + mediaType: 'application/json', + responseHeader: 'Umb-Generated-Resource', + errors: { + 400: `Bad Request`, + 401: `The resource is protected and requires an authentication token`, + 403: `The authenticated user do not have access to this resource`, + 404: `Not Found`, + 409: `Conflict`, + }, + }); + } + + /** + * @returns unknown Success + * @throws ApiError + */ + public static getDictionaryById(data: DictionaryData['payloads']['GetDictionaryById']): CancelablePromise { + const { + + id + } = data; + return __request(OpenAPI, { + method: 'GET', + url: '/umbraco/management/api/v1/dictionary/{id}', + path: { + id + }, + errors: { + 401: `The resource is protected and requires an authentication token`, + 404: `Not Found`, + }, + }); + } + + /** + * @returns string Success + * @throws ApiError + */ + public static deleteDictionaryById(data: DictionaryData['payloads']['DeleteDictionaryById']): CancelablePromise { + const { + + id + } = data; + return __request(OpenAPI, { + method: 'DELETE', + url: '/umbraco/management/api/v1/dictionary/{id}', + path: { + id + }, + responseHeader: 'Umb-Notifications', + errors: { + 400: `Bad Request`, + 401: `The resource is protected and requires an authentication token`, + 404: `Not Found`, + }, + }); + } + + /** + * @returns string Success + * @throws ApiError + */ + public static putDictionaryById(data: DictionaryData['payloads']['PutDictionaryById']): CancelablePromise { + const { + + id, +requestBody + } = data; + return __request(OpenAPI, { + method: 'PUT', + url: '/umbraco/management/api/v1/dictionary/{id}', + path: { + id + }, + body: requestBody, + mediaType: 'application/json', + responseHeader: 'Umb-Notifications', + errors: { + 400: `Bad Request`, + 401: `The resource is protected and requires an authentication token`, + 403: `The authenticated user do not have access to this resource`, + 404: `Not Found`, + }, + }); + } + + /** + * @returns unknown Success + * @throws ApiError + */ + public static getDictionaryByIdExport(data: DictionaryData['payloads']['GetDictionaryByIdExport']): CancelablePromise { + const { + + id, +includeChildren + } = data; + return __request(OpenAPI, { + method: 'GET', + url: '/umbraco/management/api/v1/dictionary/{id}/export', + path: { + id + }, + query: { + includeChildren + }, + errors: { + 401: `The resource is protected and requires an authentication token`, + 404: `Not Found`, + }, + }); + } + + /** + * @returns string Success + * @throws ApiError + */ + public static putDictionaryByIdMove(data: DictionaryData['payloads']['PutDictionaryByIdMove']): CancelablePromise { + const { + + id, +requestBody + } = data; + return __request(OpenAPI, { + method: 'PUT', + url: '/umbraco/management/api/v1/dictionary/{id}/move', + path: { + id + }, + body: requestBody, + mediaType: 'application/json', + responseHeader: 'Umb-Notifications', + errors: { + 400: `Bad Request`, + 401: `The resource is protected and requires an authentication token`, + 404: `Not Found`, + }, + }); + } + + /** + * @returns string Created + * @throws ApiError + */ + public static postDictionaryImport(data: DictionaryData['payloads']['PostDictionaryImport'] = {}): CancelablePromise { + const { + + requestBody + } = data; + return __request(OpenAPI, { + method: 'POST', + url: '/umbraco/management/api/v1/dictionary/import', + body: requestBody, + mediaType: 'application/json', + responseHeader: 'Umb-Generated-Resource', + errors: { + 400: `Bad Request`, + 401: `The resource is protected and requires an authentication token`, + 404: `Not Found`, + }, + }); + } + + /** + * @returns unknown Success + * @throws ApiError + */ + public static getItemDictionary(data: DictionaryData['payloads']['GetItemDictionary'] = {}): CancelablePromise { + const { + + id + } = data; + return __request(OpenAPI, { + method: 'GET', + url: '/umbraco/management/api/v1/item/dictionary', + query: { + id + }, + errors: { + 401: `The resource is protected and requires an authentication token`, + }, + }); + } + + /** + * @returns unknown Success + * @throws ApiError + */ + public static getTreeDictionaryAncestors(data: DictionaryData['payloads']['GetTreeDictionaryAncestors'] = {}): CancelablePromise { + const { + + descendantId + } = data; + return __request(OpenAPI, { + method: 'GET', + url: '/umbraco/management/api/v1/tree/dictionary/ancestors', + query: { + descendantId + }, + errors: { + 401: `The resource is protected and requires an authentication token`, + }, + }); + } + + /** + * @returns unknown Success + * @throws ApiError + */ + public static getTreeDictionaryChildren(data: DictionaryData['payloads']['GetTreeDictionaryChildren'] = {}): CancelablePromise { + const { + + parentId, +skip, +take + } = data; + return __request(OpenAPI, { + method: 'GET', + url: '/umbraco/management/api/v1/tree/dictionary/children', + query: { + parentId, skip, take + }, + errors: { + 401: `The resource is protected and requires an authentication token`, + }, + }); + } + + /** + * @returns unknown Success + * @throws ApiError + */ + public static getTreeDictionaryRoot(data: DictionaryData['payloads']['GetTreeDictionaryRoot'] = {}): CancelablePromise { + const { + + skip, +take + } = data; + return __request(OpenAPI, { + method: 'GET', + url: '/umbraco/management/api/v1/tree/dictionary/root', + query: { + skip, take + }, + errors: { + 401: `The resource is protected and requires an authentication token`, + }, + }); + } + +} + +export class DocumentBlueprintService { + + /** + * @returns string Created + * @throws ApiError + */ + public static postDocumentBlueprint(data: DocumentBlueprintData['payloads']['PostDocumentBlueprint'] = {}): CancelablePromise { + const { + + requestBody + } = data; + return __request(OpenAPI, { + method: 'POST', + url: '/umbraco/management/api/v1/document-blueprint', + body: requestBody, + mediaType: 'application/json', + responseHeader: 'Umb-Generated-Resource', + errors: { + 400: `Bad Request`, + 401: `The resource is protected and requires an authentication token`, + 404: `Not Found`, + }, + }); + } + + /** + * @returns unknown Success + * @throws ApiError + */ + public static getDocumentBlueprintById(data: DocumentBlueprintData['payloads']['GetDocumentBlueprintById']): CancelablePromise { + const { + + id + } = data; + return __request(OpenAPI, { + method: 'GET', + url: '/umbraco/management/api/v1/document-blueprint/{id}', + path: { + id + }, + errors: { + 401: `The resource is protected and requires an authentication token`, + 404: `Not Found`, + }, + }); + } + + /** + * @returns string Success + * @throws ApiError + */ + public static deleteDocumentBlueprintById(data: DocumentBlueprintData['payloads']['DeleteDocumentBlueprintById']): CancelablePromise { + const { + + id + } = data; + return __request(OpenAPI, { + method: 'DELETE', + url: '/umbraco/management/api/v1/document-blueprint/{id}', + path: { + id + }, + responseHeader: 'Umb-Notifications', + errors: { + 400: `Bad Request`, + 401: `The resource is protected and requires an authentication token`, + 404: `Not Found`, + }, + }); + } + + /** + * @returns string Success + * @throws ApiError + */ + public static putDocumentBlueprintById(data: DocumentBlueprintData['payloads']['PutDocumentBlueprintById']): CancelablePromise { + const { + + id, +requestBody + } = data; + return __request(OpenAPI, { + method: 'PUT', + url: '/umbraco/management/api/v1/document-blueprint/{id}', + path: { + id + }, + body: requestBody, + mediaType: 'application/json', + responseHeader: 'Umb-Notifications', + errors: { + 400: `Bad Request`, + 401: `The resource is protected and requires an authentication token`, + 404: `Not Found`, + }, + }); + } + + /** + * @returns string Success + * @throws ApiError + */ + public static putDocumentBlueprintByIdMove(data: DocumentBlueprintData['payloads']['PutDocumentBlueprintByIdMove']): CancelablePromise { + const { + + id, +requestBody + } = data; + return __request(OpenAPI, { + method: 'PUT', + url: '/umbraco/management/api/v1/document-blueprint/{id}/move', + path: { + id + }, + body: requestBody, + mediaType: 'application/json', + responseHeader: 'Umb-Notifications', + errors: { + 401: `The resource is protected and requires an authentication token`, + 404: `Not Found`, + }, + }); + } + + /** + * @returns string Created + * @throws ApiError + */ + public static postDocumentBlueprintFolder(data: DocumentBlueprintData['payloads']['PostDocumentBlueprintFolder'] = {}): CancelablePromise { + const { + + requestBody + } = data; + return __request(OpenAPI, { + method: 'POST', + url: '/umbraco/management/api/v1/document-blueprint/folder', + body: requestBody, + mediaType: 'application/json', + responseHeader: 'Umb-Generated-Resource', + errors: { + 400: `Bad Request`, + 401: `The resource is protected and requires an authentication token`, + 404: `Not Found`, + }, + }); + } + + /** + * @returns unknown Success + * @throws ApiError + */ + public static getDocumentBlueprintFolderById(data: DocumentBlueprintData['payloads']['GetDocumentBlueprintFolderById']): CancelablePromise { + const { + + id + } = data; + return __request(OpenAPI, { + method: 'GET', + url: '/umbraco/management/api/v1/document-blueprint/folder/{id}', + path: { + id + }, + errors: { + 401: `The resource is protected and requires an authentication token`, + 404: `Not Found`, + }, + }); + } + + /** + * @returns string Success + * @throws ApiError + */ + public static deleteDocumentBlueprintFolderById(data: DocumentBlueprintData['payloads']['DeleteDocumentBlueprintFolderById']): CancelablePromise { + const { + + id + } = data; + return __request(OpenAPI, { + method: 'DELETE', + url: '/umbraco/management/api/v1/document-blueprint/folder/{id}', + path: { + id + }, + responseHeader: 'Umb-Notifications', + errors: { + 400: `Bad Request`, + 401: `The resource is protected and requires an authentication token`, + 404: `Not Found`, + }, + }); + } + + /** + * @returns string Success + * @throws ApiError + */ + public static putDocumentBlueprintFolderById(data: DocumentBlueprintData['payloads']['PutDocumentBlueprintFolderById']): CancelablePromise { + const { + + id, +requestBody + } = data; + return __request(OpenAPI, { + method: 'PUT', + url: '/umbraco/management/api/v1/document-blueprint/folder/{id}', + path: { + id + }, + body: requestBody, + mediaType: 'application/json', + responseHeader: 'Umb-Notifications', + errors: { + 400: `Bad Request`, + 401: `The resource is protected and requires an authentication token`, + 404: `Not Found`, + }, + }); + } + + /** + * @returns string Created + * @throws ApiError + */ + public static postDocumentBlueprintFromDocument(data: DocumentBlueprintData['payloads']['PostDocumentBlueprintFromDocument'] = {}): CancelablePromise { + const { + + requestBody + } = data; + return __request(OpenAPI, { + method: 'POST', + url: '/umbraco/management/api/v1/document-blueprint/from-document', + body: requestBody, + mediaType: 'application/json', + responseHeader: 'Umb-Generated-Resource', + errors: { + 401: `The resource is protected and requires an authentication token`, + 403: `The authenticated user do not have access to this resource`, + 404: `Not Found`, + }, + }); + } + + /** + * @returns unknown Success + * @throws ApiError + */ + public static getItemDocumentBlueprint(data: DocumentBlueprintData['payloads']['GetItemDocumentBlueprint'] = {}): CancelablePromise { + const { + + id + } = data; + return __request(OpenAPI, { + method: 'GET', + url: '/umbraco/management/api/v1/item/document-blueprint', + query: { + id + }, + errors: { + 401: `The resource is protected and requires an authentication token`, + }, + }); + } + + /** + * @returns unknown Success + * @throws ApiError + */ + public static getTreeDocumentBlueprintChildren(data: DocumentBlueprintData['payloads']['GetTreeDocumentBlueprintChildren'] = {}): CancelablePromise { + const { + + parentId, +skip, +take, +foldersOnly + } = data; + return __request(OpenAPI, { + method: 'GET', + url: '/umbraco/management/api/v1/tree/document-blueprint/children', + query: { + parentId, skip, take, foldersOnly + }, + errors: { + 401: `The resource is protected and requires an authentication token`, + }, + }); + } + + /** + * @returns unknown Success + * @throws ApiError + */ + public static getTreeDocumentBlueprintRoot(data: DocumentBlueprintData['payloads']['GetTreeDocumentBlueprintRoot'] = {}): CancelablePromise { + const { + + skip, +take, +foldersOnly + } = data; + return __request(OpenAPI, { + method: 'GET', + url: '/umbraco/management/api/v1/tree/document-blueprint/root', + query: { + skip, take, foldersOnly + }, + errors: { + 401: `The resource is protected and requires an authentication token`, + }, + }); + } + +} + +export class DocumentTypeService { + + /** + * @returns string Created + * @throws ApiError + */ + public static postDocumentType(data: DocumentTypeData['payloads']['PostDocumentType'] = {}): CancelablePromise { + const { + + requestBody + } = data; + return __request(OpenAPI, { + method: 'POST', + url: '/umbraco/management/api/v1/document-type', + body: requestBody, + mediaType: 'application/json', + responseHeader: 'Umb-Generated-Resource', + errors: { + 400: `Bad Request`, + 401: `The resource is protected and requires an authentication token`, + 404: `Not Found`, + }, + }); + } + + /** + * @returns unknown Success + * @throws ApiError + */ + public static getDocumentTypeById(data: DocumentTypeData['payloads']['GetDocumentTypeById']): CancelablePromise { + const { + + id + } = data; + return __request(OpenAPI, { + method: 'GET', + url: '/umbraco/management/api/v1/document-type/{id}', + path: { + id + }, + errors: { + 401: `The resource is protected and requires an authentication token`, + 404: `Not Found`, + }, + }); + } + + /** + * @returns string Success + * @throws ApiError + */ + public static deleteDocumentTypeById(data: DocumentTypeData['payloads']['DeleteDocumentTypeById']): CancelablePromise { + const { + + id + } = data; + return __request(OpenAPI, { + method: 'DELETE', + url: '/umbraco/management/api/v1/document-type/{id}', + path: { + id + }, + responseHeader: 'Umb-Notifications', + errors: { + 401: `The resource is protected and requires an authentication token`, + 404: `Not Found`, + }, + }); + } + + /** + * @returns string Success + * @throws ApiError + */ + public static putDocumentTypeById(data: DocumentTypeData['payloads']['PutDocumentTypeById']): CancelablePromise { + const { + + id, +requestBody + } = data; + return __request(OpenAPI, { + method: 'PUT', + url: '/umbraco/management/api/v1/document-type/{id}', + path: { + id + }, + body: requestBody, + mediaType: 'application/json', + responseHeader: 'Umb-Notifications', + errors: { + 400: `Bad Request`, + 401: `The resource is protected and requires an authentication token`, + 404: `Not Found`, + }, + }); + } + + /** + * @returns unknown Success + * @throws ApiError + */ + public static getDocumentTypeByIdAllowedChildren(data: DocumentTypeData['payloads']['GetDocumentTypeByIdAllowedChildren']): CancelablePromise { + const { + + id, +skip, +take + } = data; + return __request(OpenAPI, { + method: 'GET', + url: '/umbraco/management/api/v1/document-type/{id}/allowed-children', + path: { + id + }, + query: { + skip, take + }, + errors: { + 401: `The resource is protected and requires an authentication token`, + 404: `Not Found`, + }, + }); + } + + /** + * @returns unknown Success + * @throws ApiError + */ + public static getDocumentTypeByIdCompositionReferences(data: DocumentTypeData['payloads']['GetDocumentTypeByIdCompositionReferences']): CancelablePromise { + const { + + id + } = data; + return __request(OpenAPI, { + method: 'GET', + url: '/umbraco/management/api/v1/document-type/{id}/composition-references', + path: { + id + }, + errors: { + 400: `Bad Request`, + 401: `The resource is protected and requires an authentication token`, + 404: `Not Found`, + }, + }); + } + + /** + * @returns string Created + * @throws ApiError + */ + public static postDocumentTypeByIdCopy(data: DocumentTypeData['payloads']['PostDocumentTypeByIdCopy']): CancelablePromise { + const { + + id, +requestBody + } = data; + return __request(OpenAPI, { + method: 'POST', + url: '/umbraco/management/api/v1/document-type/{id}/copy', + path: { + id + }, + body: requestBody, + mediaType: 'application/json', + responseHeader: 'Umb-Generated-Resource', + errors: { + 400: `Bad Request`, + 401: `The resource is protected and requires an authentication token`, + 404: `Not Found`, + }, + }); + } + + /** + * @returns string Success + * @throws ApiError + */ + public static putDocumentTypeByIdMove(data: DocumentTypeData['payloads']['PutDocumentTypeByIdMove']): CancelablePromise { + const { + + id, +requestBody + } = data; + return __request(OpenAPI, { + method: 'PUT', + url: '/umbraco/management/api/v1/document-type/{id}/move', + path: { + id + }, + body: requestBody, + mediaType: 'application/json', + responseHeader: 'Umb-Notifications', + errors: { + 400: `Bad Request`, + 401: `The resource is protected and requires an authentication token`, + 404: `Not Found`, + }, + }); + } + + /** + * @returns unknown Success + * @throws ApiError + */ + public static getDocumentTypeAllowedAtRoot(data: DocumentTypeData['payloads']['GetDocumentTypeAllowedAtRoot'] = {}): CancelablePromise { + const { + + skip, +take + } = data; + return __request(OpenAPI, { + method: 'GET', + url: '/umbraco/management/api/v1/document-type/allowed-at-root', + query: { + skip, take + }, + errors: { + 401: `The resource is protected and requires an authentication token`, + }, + }); + } + + /** + * @returns unknown Success + * @throws ApiError + */ + public static postDocumentTypeAvailableCompositions(data: DocumentTypeData['payloads']['PostDocumentTypeAvailableCompositions'] = {}): CancelablePromise { + const { + + requestBody + } = data; + return __request(OpenAPI, { + method: 'POST', + url: '/umbraco/management/api/v1/document-type/available-compositions', + body: requestBody, + mediaType: 'application/json', + errors: { + 401: `The resource is protected and requires an authentication token`, + }, + }); + } + + /** + * @returns unknown Success + * @throws ApiError + */ + public static getDocumentTypeConfiguration(): CancelablePromise { + + return __request(OpenAPI, { + method: 'GET', + url: '/umbraco/management/api/v1/document-type/configuration', + errors: { + 401: `The resource is protected and requires an authentication token`, + }, + }); + } + + /** + * @returns string Created + * @throws ApiError + */ + public static postDocumentTypeFolder(data: DocumentTypeData['payloads']['PostDocumentTypeFolder'] = {}): CancelablePromise { + const { + + requestBody + } = data; + return __request(OpenAPI, { + method: 'POST', + url: '/umbraco/management/api/v1/document-type/folder', + body: requestBody, + mediaType: 'application/json', + responseHeader: 'Umb-Generated-Resource', + errors: { + 400: `Bad Request`, + 401: `The resource is protected and requires an authentication token`, + 404: `Not Found`, + }, + }); + } + + /** + * @returns unknown Success + * @throws ApiError + */ + public static getDocumentTypeFolderById(data: DocumentTypeData['payloads']['GetDocumentTypeFolderById']): CancelablePromise { + const { + + id + } = data; + return __request(OpenAPI, { + method: 'GET', + url: '/umbraco/management/api/v1/document-type/folder/{id}', + path: { + id + }, + errors: { + 401: `The resource is protected and requires an authentication token`, + 404: `Not Found`, + }, + }); + } + + /** + * @returns string Success + * @throws ApiError + */ + public static deleteDocumentTypeFolderById(data: DocumentTypeData['payloads']['DeleteDocumentTypeFolderById']): CancelablePromise { + const { + + id + } = data; + return __request(OpenAPI, { + method: 'DELETE', + url: '/umbraco/management/api/v1/document-type/folder/{id}', + path: { + id + }, + responseHeader: 'Umb-Notifications', + errors: { + 400: `Bad Request`, + 401: `The resource is protected and requires an authentication token`, + 404: `Not Found`, + }, + }); + } + + /** + * @returns string Success + * @throws ApiError + */ + public static putDocumentTypeFolderById(data: DocumentTypeData['payloads']['PutDocumentTypeFolderById']): CancelablePromise { + const { + + id, +requestBody + } = data; + return __request(OpenAPI, { + method: 'PUT', + url: '/umbraco/management/api/v1/document-type/folder/{id}', + path: { + id + }, + body: requestBody, + mediaType: 'application/json', + responseHeader: 'Umb-Notifications', + errors: { + 400: `Bad Request`, + 401: `The resource is protected and requires an authentication token`, + 404: `Not Found`, + }, + }); + } + + /** + * @returns unknown Success + * @throws ApiError + */ + public static getItemDocumentType(data: DocumentTypeData['payloads']['GetItemDocumentType'] = {}): CancelablePromise { + const { + + id + } = data; + return __request(OpenAPI, { + method: 'GET', + url: '/umbraco/management/api/v1/item/document-type', + query: { + id + }, + errors: { + 401: `The resource is protected and requires an authentication token`, + }, + }); + } + + /** + * @returns unknown Success + * @throws ApiError + */ + public static getItemDocumentTypeSearch(data: DocumentTypeData['payloads']['GetItemDocumentTypeSearch'] = {}): CancelablePromise { + const { + + query, +skip, +take + } = data; + return __request(OpenAPI, { + method: 'GET', + url: '/umbraco/management/api/v1/item/document-type/search', + query: { + query, skip, take + }, + errors: { + 401: `The resource is protected and requires an authentication token`, + }, + }); + } + + /** + * @returns unknown Success + * @throws ApiError + */ + public static getTreeDocumentTypeAncestors(data: DocumentTypeData['payloads']['GetTreeDocumentTypeAncestors'] = {}): CancelablePromise { + const { + + descendantId + } = data; + return __request(OpenAPI, { + method: 'GET', + url: '/umbraco/management/api/v1/tree/document-type/ancestors', + query: { + descendantId + }, + errors: { + 401: `The resource is protected and requires an authentication token`, + }, + }); + } + + /** + * @returns unknown Success + * @throws ApiError + */ + public static getTreeDocumentTypeChildren(data: DocumentTypeData['payloads']['GetTreeDocumentTypeChildren'] = {}): CancelablePromise { + const { + + parentId, +skip, +take, +foldersOnly + } = data; + return __request(OpenAPI, { + method: 'GET', + url: '/umbraco/management/api/v1/tree/document-type/children', + query: { + parentId, skip, take, foldersOnly + }, + errors: { + 401: `The resource is protected and requires an authentication token`, + }, + }); + } + + /** + * @returns unknown Success + * @throws ApiError + */ + public static getTreeDocumentTypeRoot(data: DocumentTypeData['payloads']['GetTreeDocumentTypeRoot'] = {}): CancelablePromise { + const { + + skip, +take, +foldersOnly + } = data; + return __request(OpenAPI, { + method: 'GET', + url: '/umbraco/management/api/v1/tree/document-type/root', + query: { + skip, take, foldersOnly + }, + errors: { + 401: `The resource is protected and requires an authentication token`, + }, + }); + } + +} + +export class DocumentVersionService { + + /** + * @returns unknown Success + * @throws ApiError + */ + public static getDocumentVersion(data: DocumentVersionData['payloads']['GetDocumentVersion']): CancelablePromise { + const { + + documentId, +culture, +skip, +take + } = data; + return __request(OpenAPI, { + method: 'GET', + url: '/umbraco/management/api/v1/document-version', + query: { + documentId, culture, skip, take + }, + errors: { + 400: `Bad Request`, + 401: `The resource is protected and requires an authentication token`, + 404: `Not Found`, + }, + }); + } + + /** + * @returns unknown Success + * @throws ApiError + */ + public static getDocumentVersionById(data: DocumentVersionData['payloads']['GetDocumentVersionById']): CancelablePromise { + const { + + id + } = data; + return __request(OpenAPI, { + method: 'GET', + url: '/umbraco/management/api/v1/document-version/{id}', + path: { + id + }, + errors: { + 400: `Bad Request`, + 401: `The resource is protected and requires an authentication token`, + 404: `Not Found`, + }, + }); + } + + /** + * @returns string Success + * @throws ApiError + */ + public static putDocumentVersionByIdPreventCleanup(data: DocumentVersionData['payloads']['PutDocumentVersionByIdPreventCleanup']): CancelablePromise { + const { + + id, +preventCleanup + } = data; + return __request(OpenAPI, { + method: 'PUT', + url: '/umbraco/management/api/v1/document-version/{id}/prevent-cleanup', + path: { + id + }, + query: { + preventCleanup + }, + responseHeader: 'Umb-Notifications', + errors: { + 400: `Bad Request`, + 401: `The resource is protected and requires an authentication token`, + 404: `Not Found`, + }, + }); + } + + /** + * @returns string Success + * @throws ApiError + */ + public static postDocumentVersionByIdRollback(data: DocumentVersionData['payloads']['PostDocumentVersionByIdRollback']): CancelablePromise { + const { + + id, +culture + } = data; + return __request(OpenAPI, { + method: 'POST', + url: '/umbraco/management/api/v1/document-version/{id}/rollback', + path: { + id + }, + query: { + culture + }, + responseHeader: 'Umb-Notifications', + errors: { + 400: `Bad Request`, + 401: `The resource is protected and requires an authentication token`, + 404: `Not Found`, + }, + }); + } + +} + +export class DocumentService { + + /** + * @returns unknown Success + * @throws ApiError + */ + public static getCollectionDocumentById(data: DocumentData['payloads']['GetCollectionDocumentById']): CancelablePromise { + const { + + id, +dataTypeId, +orderBy, +orderCulture, +orderDirection, +filter, +skip, +take + } = data; + return __request(OpenAPI, { + method: 'GET', + url: '/umbraco/management/api/v1/collection/document/{id}', + path: { + id + }, + query: { + dataTypeId, orderBy, orderCulture, orderDirection, filter, skip, take + }, + errors: { + 400: `Bad Request`, + 401: `The resource is protected and requires an authentication token`, + 404: `Not Found`, + }, + }); + } + + /** + * @returns string Created + * @throws ApiError + */ + public static postDocument(data: DocumentData['payloads']['PostDocument'] = {}): CancelablePromise { + const { + + requestBody + } = data; + return __request(OpenAPI, { + method: 'POST', + url: '/umbraco/management/api/v1/document', + body: requestBody, + mediaType: 'application/json', + responseHeader: 'Umb-Generated-Resource', + errors: { + 400: `Bad Request`, + 401: `The resource is protected and requires an authentication token`, + 403: `The authenticated user do not have access to this resource`, + 404: `Not Found`, + }, + }); + } + + /** + * @returns unknown Success + * @throws ApiError + */ + public static getDocumentById(data: DocumentData['payloads']['GetDocumentById']): CancelablePromise { + const { + + id + } = data; + return __request(OpenAPI, { + method: 'GET', + url: '/umbraco/management/api/v1/document/{id}', + path: { + id + }, + errors: { + 401: `The resource is protected and requires an authentication token`, + 403: `The authenticated user do not have access to this resource`, + 404: `Not Found`, + }, + }); + } + + /** + * @returns string Success + * @throws ApiError + */ + public static deleteDocumentById(data: DocumentData['payloads']['DeleteDocumentById']): CancelablePromise { + const { + + id + } = data; + return __request(OpenAPI, { + method: 'DELETE', + url: '/umbraco/management/api/v1/document/{id}', + path: { + id + }, + responseHeader: 'Umb-Notifications', + errors: { + 400: `Bad Request`, + 401: `The resource is protected and requires an authentication token`, + 403: `The authenticated user do not have access to this resource`, + 404: `Not Found`, + }, + }); + } + + /** + * @returns string Success + * @throws ApiError + */ + public static putDocumentById(data: DocumentData['payloads']['PutDocumentById']): CancelablePromise { + const { + + id, +requestBody + } = data; + return __request(OpenAPI, { + method: 'PUT', + url: '/umbraco/management/api/v1/document/{id}', + path: { + id + }, + body: requestBody, + mediaType: 'application/json', + responseHeader: 'Umb-Notifications', + errors: { + 400: `Bad Request`, + 401: `The resource is protected and requires an authentication token`, + 403: `The authenticated user do not have access to this resource`, + 404: `Not Found`, + }, + }); + } + + /** + * @returns string Created + * @throws ApiError + */ + public static postDocumentByIdCopy(data: DocumentData['payloads']['PostDocumentByIdCopy']): CancelablePromise { + const { + + id, +requestBody + } = data; + return __request(OpenAPI, { + method: 'POST', + url: '/umbraco/management/api/v1/document/{id}/copy', + path: { + id + }, + body: requestBody, + mediaType: 'application/json', + responseHeader: 'Umb-Generated-Resource', + errors: { + 401: `The resource is protected and requires an authentication token`, + 403: `The authenticated user do not have access to this resource`, + 404: `Not Found`, + }, + }); + } + + /** + * @returns unknown Success + * @throws ApiError + */ + public static getDocumentByIdDomains(data: DocumentData['payloads']['GetDocumentByIdDomains']): CancelablePromise { + const { + + id + } = data; + return __request(OpenAPI, { + method: 'GET', + url: '/umbraco/management/api/v1/document/{id}/domains', + path: { + id + }, + errors: { + 401: `The resource is protected and requires an authentication token`, + 404: `Not Found`, + }, + }); + } + + /** + * @returns string Success + * @throws ApiError + */ + public static putDocumentByIdDomains(data: DocumentData['payloads']['PutDocumentByIdDomains']): CancelablePromise { + const { + + id, +requestBody + } = data; + return __request(OpenAPI, { + method: 'PUT', + url: '/umbraco/management/api/v1/document/{id}/domains', + path: { + id + }, + body: requestBody, + mediaType: 'application/json', + responseHeader: 'Umb-Notifications', + errors: { + 400: `Bad Request`, + 401: `The resource is protected and requires an authentication token`, + 404: `Not Found`, + 409: `Conflict`, + }, + }); + } + + /** + * @returns string Success + * @throws ApiError + */ + public static putDocumentByIdMove(data: DocumentData['payloads']['PutDocumentByIdMove']): CancelablePromise { + const { + + id, +requestBody + } = data; + return __request(OpenAPI, { + method: 'PUT', + url: '/umbraco/management/api/v1/document/{id}/move', + path: { + id + }, + body: requestBody, + mediaType: 'application/json', + responseHeader: 'Umb-Notifications', + errors: { + 401: `The resource is protected and requires an authentication token`, + 403: `The authenticated user do not have access to this resource`, + 404: `Not Found`, + }, + }); + } + + /** + * @returns string Success + * @throws ApiError + */ + public static putDocumentByIdMoveToRecycleBin(data: DocumentData['payloads']['PutDocumentByIdMoveToRecycleBin']): CancelablePromise { + const { + + id + } = data; + return __request(OpenAPI, { + method: 'PUT', + url: '/umbraco/management/api/v1/document/{id}/move-to-recycle-bin', + path: { + id + }, + responseHeader: 'Umb-Notifications', + errors: { + 400: `Bad Request`, + 401: `The resource is protected and requires an authentication token`, + 403: `The authenticated user do not have access to this resource`, + 404: `Not Found`, + }, + }); + } + + /** + * @returns unknown Success + * @throws ApiError + */ + public static getDocumentByIdNotifications(data: DocumentData['payloads']['GetDocumentByIdNotifications']): CancelablePromise { + const { + + id + } = data; + return __request(OpenAPI, { + method: 'GET', + url: '/umbraco/management/api/v1/document/{id}/notifications', + path: { + id + }, + errors: { + 401: `The resource is protected and requires an authentication token`, + 403: `The authenticated user do not have access to this resource`, + 404: `Not Found`, + }, + }); + } + + /** + * @returns string Success + * @throws ApiError + */ + public static putDocumentByIdNotifications(data: DocumentData['payloads']['PutDocumentByIdNotifications']): CancelablePromise { + const { + + id, +requestBody + } = data; + return __request(OpenAPI, { + method: 'PUT', + url: '/umbraco/management/api/v1/document/{id}/notifications', + path: { + id + }, + body: requestBody, + mediaType: 'application/json', + responseHeader: 'Umb-Notifications', + errors: { + 401: `The resource is protected and requires an authentication token`, + 404: `Not Found`, + }, + }); + } + + /** + * @returns string Created + * @throws ApiError + */ + public static postDocumentByIdPublicAccess(data: DocumentData['payloads']['PostDocumentByIdPublicAccess']): CancelablePromise { + const { + + id, +requestBody + } = data; + return __request(OpenAPI, { + method: 'POST', + url: '/umbraco/management/api/v1/document/{id}/public-access', + path: { + id + }, + body: requestBody, + mediaType: 'application/json', + responseHeader: 'Umb-Generated-Resource', + errors: { + 401: `The resource is protected and requires an authentication token`, + 403: `The authenticated user do not have access to this resource`, + 404: `Not Found`, + }, + }); + } + + /** + * @returns string Success + * @throws ApiError + */ + public static deleteDocumentByIdPublicAccess(data: DocumentData['payloads']['DeleteDocumentByIdPublicAccess']): CancelablePromise { + const { + + id + } = data; + return __request(OpenAPI, { + method: 'DELETE', + url: '/umbraco/management/api/v1/document/{id}/public-access', + path: { + id + }, + responseHeader: 'Umb-Notifications', + errors: { + 401: `The resource is protected and requires an authentication token`, + 403: `The authenticated user do not have access to this resource`, + 404: `Not Found`, + }, + }); + } + + /** + * @throws ApiError + */ + public static getDocumentByIdPublicAccess(data: DocumentData['payloads']['GetDocumentByIdPublicAccess']): CancelablePromise { + const { + + id + } = data; + return __request(OpenAPI, { + method: 'GET', + url: '/umbraco/management/api/v1/document/{id}/public-access', + path: { + id + }, + errors: { + 401: `The resource is protected and requires an authentication token`, + 403: `The authenticated user do not have access to this resource`, + 404: `Not Found`, + }, + }); + } + + /** + * @returns string Success + * @throws ApiError + */ + public static putDocumentByIdPublicAccess(data: DocumentData['payloads']['PutDocumentByIdPublicAccess']): CancelablePromise { + const { + + id, +requestBody + } = data; + return __request(OpenAPI, { + method: 'PUT', + url: '/umbraco/management/api/v1/document/{id}/public-access', + path: { + id + }, + body: requestBody, + mediaType: 'application/json', + responseHeader: 'Umb-Notifications', + errors: { + 401: `The resource is protected and requires an authentication token`, + 403: `The authenticated user do not have access to this resource`, + 404: `Not Found`, + }, + }); + } + + /** + * @returns string Success + * @throws ApiError + */ + public static putDocumentByIdPublish(data: DocumentData['payloads']['PutDocumentByIdPublish']): CancelablePromise { + const { + + id, +requestBody + } = data; + return __request(OpenAPI, { + method: 'PUT', + url: '/umbraco/management/api/v1/document/{id}/publish', + path: { + id + }, + body: requestBody, + mediaType: 'application/json', + responseHeader: 'Umb-Notifications', + errors: { + 400: `Bad Request`, + 401: `The resource is protected and requires an authentication token`, + 403: `The authenticated user do not have access to this resource`, + 404: `Not Found`, + }, + }); + } + + /** + * @returns string Success + * @throws ApiError + */ + public static putDocumentByIdPublishWithDescendants(data: DocumentData['payloads']['PutDocumentByIdPublishWithDescendants']): CancelablePromise { + const { + + id, +requestBody + } = data; + return __request(OpenAPI, { + method: 'PUT', + url: '/umbraco/management/api/v1/document/{id}/publish-with-descendants', + path: { + id + }, + body: requestBody, + mediaType: 'application/json', + responseHeader: 'Umb-Notifications', + errors: { + 400: `Bad Request`, + 401: `The resource is protected and requires an authentication token`, + 403: `The authenticated user do not have access to this resource`, + 404: `Not Found`, + }, + }); + } + + /** + * @returns unknown Success + * @throws ApiError + */ + public static getDocumentByIdReferencedBy(data: DocumentData['payloads']['GetDocumentByIdReferencedBy']): CancelablePromise { + const { + + id, +skip, +take + } = data; + return __request(OpenAPI, { + method: 'GET', + url: '/umbraco/management/api/v1/document/{id}/referenced-by', + path: { + id + }, + query: { + skip, take + }, + errors: { + 401: `The resource is protected and requires an authentication token`, + }, + }); + } + + /** + * @returns unknown Success + * @throws ApiError + */ + public static getDocumentByIdReferencedDescendants(data: DocumentData['payloads']['GetDocumentByIdReferencedDescendants']): CancelablePromise { + const { + + id, +skip, +take + } = data; + return __request(OpenAPI, { + method: 'GET', + url: '/umbraco/management/api/v1/document/{id}/referenced-descendants', + path: { + id + }, + query: { + skip, take + }, + errors: { + 401: `The resource is protected and requires an authentication token`, + }, + }); + } + + /** + * @returns string Success + * @throws ApiError + */ + public static putDocumentByIdUnpublish(data: DocumentData['payloads']['PutDocumentByIdUnpublish']): CancelablePromise { + const { + + id, +requestBody + } = data; + return __request(OpenAPI, { + method: 'PUT', + url: '/umbraco/management/api/v1/document/{id}/unpublish', + path: { + id + }, + body: requestBody, + mediaType: 'application/json', + responseHeader: 'Umb-Notifications', + errors: { + 400: `Bad Request`, + 401: `The resource is protected and requires an authentication token`, + 403: `The authenticated user do not have access to this resource`, + 404: `Not Found`, + }, + }); + } + + /** + * @returns string Success + * @throws ApiError + */ + public static putDocumentByIdValidate(data: DocumentData['payloads']['PutDocumentByIdValidate']): CancelablePromise { + const { + + id, +requestBody + } = data; + return __request(OpenAPI, { + method: 'PUT', + url: '/umbraco/management/api/v1/document/{id}/validate', + path: { + id + }, + body: requestBody, + mediaType: 'application/json', + responseHeader: 'Umb-Notifications', + errors: { + 400: `Bad Request`, + 401: `The resource is protected and requires an authentication token`, + 403: `The authenticated user do not have access to this resource`, + 404: `Not Found`, + }, + }); + } + + /** + * @returns unknown Success + * @throws ApiError + */ + public static getDocumentAreReferenced(data: DocumentData['payloads']['GetDocumentAreReferenced'] = {}): CancelablePromise { + const { + + id, +skip, +take + } = data; + return __request(OpenAPI, { + method: 'GET', + url: '/umbraco/management/api/v1/document/are-referenced', + query: { + id, skip, take + }, + errors: { + 401: `The resource is protected and requires an authentication token`, + }, + }); + } + + /** + * @returns unknown Success + * @throws ApiError + */ + public static getDocumentConfiguration(): CancelablePromise { + + return __request(OpenAPI, { + method: 'GET', + url: '/umbraco/management/api/v1/document/configuration', + errors: { + 401: `The resource is protected and requires an authentication token`, + }, + }); + } + + /** + * @returns string Success + * @throws ApiError + */ + public static putDocumentSort(data: DocumentData['payloads']['PutDocumentSort'] = {}): CancelablePromise { + const { + + requestBody + } = data; + return __request(OpenAPI, { + method: 'PUT', + url: '/umbraco/management/api/v1/document/sort', + body: requestBody, + mediaType: 'application/json', + responseHeader: 'Umb-Notifications', + errors: { + 400: `Bad Request`, + 401: `The resource is protected and requires an authentication token`, + 403: `The authenticated user do not have access to this resource`, + 404: `Not Found`, + }, + }); + } + + /** + * @returns string Success + * @throws ApiError + */ + public static postDocumentValidate(data: DocumentData['payloads']['PostDocumentValidate'] = {}): CancelablePromise { + const { + + requestBody + } = data; + return __request(OpenAPI, { + method: 'POST', + url: '/umbraco/management/api/v1/document/validate', + body: requestBody, + mediaType: 'application/json', + responseHeader: 'Umb-Notifications', + errors: { + 400: `Bad Request`, + 401: `The resource is protected and requires an authentication token`, + 403: `The authenticated user do not have access to this resource`, + 404: `Not Found`, + }, + }); + } + + /** + * @returns unknown Success + * @throws ApiError + */ + public static getItemDocument(data: DocumentData['payloads']['GetItemDocument'] = {}): CancelablePromise { + const { + + id + } = data; + return __request(OpenAPI, { + method: 'GET', + url: '/umbraco/management/api/v1/item/document', + query: { + id + }, + errors: { + 401: `The resource is protected and requires an authentication token`, + }, + }); + } + + /** + * @returns unknown Success + * @throws ApiError + */ + public static getItemDocumentSearch(data: DocumentData['payloads']['GetItemDocumentSearch'] = {}): CancelablePromise { + const { + + query, +skip, +take + } = data; + return __request(OpenAPI, { + method: 'GET', + url: '/umbraco/management/api/v1/item/document/search', + query: { + query, skip, take + }, + errors: { + 401: `The resource is protected and requires an authentication token`, + }, + }); + } + + /** + * @returns string Success + * @throws ApiError + */ + public static deleteRecycleBinDocument(): CancelablePromise { + + return __request(OpenAPI, { + method: 'DELETE', + url: '/umbraco/management/api/v1/recycle-bin/document', + responseHeader: 'Umb-Notifications', + errors: { + 400: `Bad Request`, + 401: `The resource is protected and requires an authentication token`, + 403: `The authenticated user do not have access to this resource`, + }, + }); + } + + /** + * @returns string Success + * @throws ApiError + */ + public static deleteRecycleBinDocumentById(data: DocumentData['payloads']['DeleteRecycleBinDocumentById']): CancelablePromise { + const { + + id + } = data; + return __request(OpenAPI, { + method: 'DELETE', + url: '/umbraco/management/api/v1/recycle-bin/document/{id}', + path: { + id + }, + responseHeader: 'Umb-Notifications', + errors: { + 400: `Bad Request`, + 401: `The resource is protected and requires an authentication token`, + 403: `The authenticated user do not have access to this resource`, + 404: `Not Found`, + }, + }); + } + + /** + * @returns unknown Success + * @throws ApiError + */ + public static getRecycleBinDocumentByIdOriginalParent(data: DocumentData['payloads']['GetRecycleBinDocumentByIdOriginalParent']): CancelablePromise { + const { + + id + } = data; + return __request(OpenAPI, { + method: 'GET', + url: '/umbraco/management/api/v1/recycle-bin/document/{id}/original-parent', + path: { + id + }, + errors: { + 400: `Bad Request`, + 401: `The resource is protected and requires an authentication token`, + 403: `The authenticated user do not have access to this resource`, + 404: `Not Found`, + }, + }); + } + + /** + * @returns string Success + * @throws ApiError + */ + public static putRecycleBinDocumentByIdRestore(data: DocumentData['payloads']['PutRecycleBinDocumentByIdRestore']): CancelablePromise { + const { + + id, +requestBody + } = data; + return __request(OpenAPI, { + method: 'PUT', + url: '/umbraco/management/api/v1/recycle-bin/document/{id}/restore', + path: { + id + }, + body: requestBody, + mediaType: 'application/json', + responseHeader: 'Umb-Notifications', + errors: { + 400: `Bad Request`, + 401: `The resource is protected and requires an authentication token`, + 403: `The authenticated user do not have access to this resource`, + 404: `Not Found`, + }, + }); + } + + /** + * @returns unknown Success + * @throws ApiError + */ + public static getRecycleBinDocumentChildren(data: DocumentData['payloads']['GetRecycleBinDocumentChildren'] = {}): CancelablePromise { + const { + + parentId, +skip, +take + } = data; + return __request(OpenAPI, { + method: 'GET', + url: '/umbraco/management/api/v1/recycle-bin/document/children', + query: { + parentId, skip, take + }, + errors: { + 401: `The resource is protected and requires an authentication token`, + }, + }); + } + + /** + * @returns unknown Success + * @throws ApiError + */ + public static getRecycleBinDocumentRoot(data: DocumentData['payloads']['GetRecycleBinDocumentRoot'] = {}): CancelablePromise { + const { + + skip, +take + } = data; + return __request(OpenAPI, { + method: 'GET', + url: '/umbraco/management/api/v1/recycle-bin/document/root', + query: { + skip, take + }, + errors: { + 401: `The resource is protected and requires an authentication token`, + }, + }); + } + + /** + * @returns unknown Success + * @throws ApiError + */ + public static getTreeDocumentAncestors(data: DocumentData['payloads']['GetTreeDocumentAncestors'] = {}): CancelablePromise { + const { + + descendantId + } = data; + return __request(OpenAPI, { + method: 'GET', + url: '/umbraco/management/api/v1/tree/document/ancestors', + query: { + descendantId + }, + errors: { + 401: `The resource is protected and requires an authentication token`, + }, + }); + } + + /** + * @returns unknown Success + * @throws ApiError + */ + public static getTreeDocumentChildren(data: DocumentData['payloads']['GetTreeDocumentChildren'] = {}): CancelablePromise { + const { + + parentId, +skip, +take, +dataTypeId + } = data; + return __request(OpenAPI, { + method: 'GET', + url: '/umbraco/management/api/v1/tree/document/children', + query: { + parentId, skip, take, dataTypeId + }, + errors: { + 401: `The resource is protected and requires an authentication token`, + }, + }); + } + + /** + * @returns unknown Success + * @throws ApiError + */ + public static getTreeDocumentRoot(data: DocumentData['payloads']['GetTreeDocumentRoot'] = {}): CancelablePromise { + const { + + skip, +take, +dataTypeId + } = data; + return __request(OpenAPI, { + method: 'GET', + url: '/umbraco/management/api/v1/tree/document/root', + query: { + skip, take, dataTypeId + }, + errors: { + 401: `The resource is protected and requires an authentication token`, + }, + }); + } + +} + +export class DynamicRootService { + + /** + * @returns unknown Success + * @throws ApiError + */ + public static postDynamicRootQuery(data: DynamicRootData['payloads']['PostDynamicRootQuery'] = {}): CancelablePromise { + const { + + requestBody + } = data; + return __request(OpenAPI, { + method: 'POST', + url: '/umbraco/management/api/v1/dynamic-root/query', + body: requestBody, + mediaType: 'application/json', + errors: { + 401: `The resource is protected and requires an authentication token`, + }, + }); + } + + /** + * @returns string Success + * @throws ApiError + */ + public static getDynamicRootSteps(): CancelablePromise { + + return __request(OpenAPI, { + method: 'GET', + url: '/umbraco/management/api/v1/dynamic-root/steps', + errors: { + 401: `The resource is protected and requires an authentication token`, + }, + }); + } + +} + +export class HealthCheckService { + + /** + * @returns unknown Success + * @throws ApiError + */ + public static getHealthCheckGroup(data: HealthCheckData['payloads']['GetHealthCheckGroup'] = {}): CancelablePromise { + const { + + skip, +take + } = data; + return __request(OpenAPI, { + method: 'GET', + url: '/umbraco/management/api/v1/health-check-group', + query: { + skip, take + }, + errors: { + 401: `The resource is protected and requires an authentication token`, + }, + }); + } + + /** + * @returns unknown Success + * @throws ApiError + */ + public static getHealthCheckGroupByName(data: HealthCheckData['payloads']['GetHealthCheckGroupByName']): CancelablePromise { + const { + + name + } = data; + return __request(OpenAPI, { + method: 'GET', + url: '/umbraco/management/api/v1/health-check-group/{name}', + path: { + name + }, + errors: { + 401: `The resource is protected and requires an authentication token`, + 404: `Not Found`, + }, + }); + } + + /** + * @returns unknown Success + * @throws ApiError + */ + public static postHealthCheckGroupByNameCheck(data: HealthCheckData['payloads']['PostHealthCheckGroupByNameCheck']): CancelablePromise { + const { + + name + } = data; + return __request(OpenAPI, { + method: 'POST', + url: '/umbraco/management/api/v1/health-check-group/{name}/check', + path: { + name + }, + errors: { + 401: `The resource is protected and requires an authentication token`, + 404: `Not Found`, + }, + }); + } + + /** + * @returns unknown Success + * @throws ApiError + */ + public static postHealthCheckExecuteAction(data: HealthCheckData['payloads']['PostHealthCheckExecuteAction'] = {}): CancelablePromise { + const { + + requestBody + } = data; + return __request(OpenAPI, { + method: 'POST', + url: '/umbraco/management/api/v1/health-check/execute-action', + body: requestBody, + mediaType: 'application/json', + errors: { + 400: `Bad Request`, + 401: `The resource is protected and requires an authentication token`, + }, + }); + } + +} + +export class HelpService { + + /** + * @returns unknown Success + * @throws ApiError + */ + public static getHelp(data: HelpData['payloads']['GetHelp'] = {}): CancelablePromise { + const { + + section, +tree, +skip, +take, +baseUrl + } = data; + return __request(OpenAPI, { + method: 'GET', + url: '/umbraco/management/api/v1/help', + query: { + section, tree, skip, take, baseUrl + }, + errors: { + 400: `Bad Request`, + 401: `The resource is protected and requires an authentication token`, + }, + }); + } + +} + +export class IndexerService { + + /** + * @returns unknown Success + * @throws ApiError + */ + public static getIndexer(data: IndexerData['payloads']['GetIndexer'] = {}): CancelablePromise { + const { + + skip, +take + } = data; + return __request(OpenAPI, { + method: 'GET', + url: '/umbraco/management/api/v1/indexer', + query: { + skip, take + }, + errors: { + 401: `The resource is protected and requires an authentication token`, + }, + }); + } + + /** + * @returns unknown Success + * @throws ApiError + */ + public static getIndexerByIndexName(data: IndexerData['payloads']['GetIndexerByIndexName']): CancelablePromise { + const { + + indexName + } = data; + return __request(OpenAPI, { + method: 'GET', + url: '/umbraco/management/api/v1/indexer/{indexName}', + path: { + indexName + }, + errors: { + 400: `Bad Request`, + 401: `The resource is protected and requires an authentication token`, + }, + }); + } + + /** + * @returns string Success + * @throws ApiError + */ + public static postIndexerByIndexNameRebuild(data: IndexerData['payloads']['PostIndexerByIndexNameRebuild']): CancelablePromise { + const { + + indexName + } = data; + return __request(OpenAPI, { + method: 'POST', + url: '/umbraco/management/api/v1/indexer/{indexName}/rebuild', + path: { + indexName + }, + responseHeader: 'Umb-Notifications', + errors: { + 400: `Bad Request`, + 401: `The resource is protected and requires an authentication token`, + 404: `Not Found`, + 409: `Conflict`, + }, + }); + } + +} + +export class InstallService { + + /** + * @returns unknown Success + * @throws ApiError + */ + public static getInstallSettings(): CancelablePromise { + + return __request(OpenAPI, { + method: 'GET', + url: '/umbraco/management/api/v1/install/settings', + errors: { + 428: `Client Error`, + }, + }); + } + + /** + * @returns string Success + * @throws ApiError + */ + public static postInstallSetup(data: InstallData['payloads']['PostInstallSetup'] = {}): CancelablePromise { + const { + + requestBody + } = data; + return __request(OpenAPI, { + method: 'POST', + url: '/umbraco/management/api/v1/install/setup', + body: requestBody, + mediaType: 'application/json', + responseHeader: 'Umb-Notifications', + errors: { + 428: `Client Error`, + }, + }); + } + + /** + * @returns string Success + * @throws ApiError + */ + public static postInstallValidateDatabase(data: InstallData['payloads']['PostInstallValidateDatabase'] = {}): CancelablePromise { + const { + + requestBody + } = data; + return __request(OpenAPI, { + method: 'POST', + url: '/umbraco/management/api/v1/install/validate-database', + body: requestBody, + mediaType: 'application/json', + responseHeader: 'Umb-Notifications', + errors: { + 400: `Bad Request`, + }, + }); + } + +} + +export class LanguageService { + + /** + * @returns unknown Success + * @throws ApiError + */ + public static getItemLanguage(data: LanguageData['payloads']['GetItemLanguage'] = {}): CancelablePromise { + const { + + isoCode + } = data; + return __request(OpenAPI, { + method: 'GET', + url: '/umbraco/management/api/v1/item/language', + query: { + isoCode + }, + errors: { + 401: `The resource is protected and requires an authentication token`, + }, + }); + } + + /** + * @returns unknown Success + * @throws ApiError + */ + public static getLanguage(data: LanguageData['payloads']['GetLanguage'] = {}): CancelablePromise { + const { + + skip, +take + } = data; + return __request(OpenAPI, { + method: 'GET', + url: '/umbraco/management/api/v1/language', + query: { + skip, take + }, + errors: { + 401: `The resource is protected and requires an authentication token`, + }, + }); + } + + /** + * @returns string Created + * @throws ApiError + */ + public static postLanguage(data: LanguageData['payloads']['PostLanguage'] = {}): CancelablePromise { + const { + + requestBody + } = data; + return __request(OpenAPI, { + method: 'POST', + url: '/umbraco/management/api/v1/language', + body: requestBody, + mediaType: 'application/json', + responseHeader: 'Umb-Generated-Resource', + errors: { + 400: `Bad Request`, + 401: `The resource is protected and requires an authentication token`, + 404: `Not Found`, + }, + }); + } + + /** + * @returns unknown Success + * @throws ApiError + */ + public static getLanguageByIsoCode(data: LanguageData['payloads']['GetLanguageByIsoCode']): CancelablePromise { + const { + + isoCode + } = data; + return __request(OpenAPI, { + method: 'GET', + url: '/umbraco/management/api/v1/language/{isoCode}', + path: { + isoCode + }, + errors: { + 401: `The resource is protected and requires an authentication token`, + 404: `Not Found`, + }, + }); + } + + /** + * @returns string Success + * @throws ApiError + */ + public static deleteLanguageByIsoCode(data: LanguageData['payloads']['DeleteLanguageByIsoCode']): CancelablePromise { + const { + + isoCode + } = data; + return __request(OpenAPI, { + method: 'DELETE', + url: '/umbraco/management/api/v1/language/{isoCode}', + path: { + isoCode + }, + responseHeader: 'Umb-Notifications', + errors: { + 400: `Bad Request`, + 401: `The resource is protected and requires an authentication token`, + 404: `Not Found`, + }, + }); + } + + /** + * @returns string Success + * @throws ApiError + */ + public static putLanguageByIsoCode(data: LanguageData['payloads']['PutLanguageByIsoCode']): CancelablePromise { + const { + + isoCode, +requestBody + } = data; + return __request(OpenAPI, { + method: 'PUT', + url: '/umbraco/management/api/v1/language/{isoCode}', + path: { + isoCode + }, + body: requestBody, + mediaType: 'application/json', + responseHeader: 'Umb-Notifications', + errors: { + 400: `Bad Request`, + 401: `The resource is protected and requires an authentication token`, + 404: `Not Found`, + }, + }); + } + +} + +export class LogViewerService { + + /** + * @returns unknown Success + * @throws ApiError + */ + public static getLogViewerLevel(data: LogViewerData['payloads']['GetLogViewerLevel'] = {}): CancelablePromise { + const { + + skip, +take + } = data; + return __request(OpenAPI, { + method: 'GET', + url: '/umbraco/management/api/v1/log-viewer/level', + query: { + skip, take + }, + errors: { + 401: `The resource is protected and requires an authentication token`, + }, + }); + } + + /** + * @returns unknown Success + * @throws ApiError + */ + public static getLogViewerLevelCount(data: LogViewerData['payloads']['GetLogViewerLevelCount'] = {}): CancelablePromise { + const { + + startDate, +endDate + } = data; + return __request(OpenAPI, { + method: 'GET', + url: '/umbraco/management/api/v1/log-viewer/level-count', + query: { + startDate, endDate + }, + errors: { + 400: `Bad Request`, + 401: `The resource is protected and requires an authentication token`, + }, + }); + } + + /** + * @returns unknown Success + * @throws ApiError + */ + public static getLogViewerLog(data: LogViewerData['payloads']['GetLogViewerLog'] = {}): CancelablePromise { + const { + + skip, +take, +orderDirection, +filterExpression, +logLevel, +startDate, +endDate + } = data; + return __request(OpenAPI, { + method: 'GET', + url: '/umbraco/management/api/v1/log-viewer/log', + query: { + skip, take, orderDirection, filterExpression, logLevel, startDate, endDate + }, + errors: { + 401: `The resource is protected and requires an authentication token`, + }, + }); + } + + /** + * @returns unknown Success + * @throws ApiError + */ + public static getLogViewerMessageTemplate(data: LogViewerData['payloads']['GetLogViewerMessageTemplate'] = {}): CancelablePromise { + const { + + skip, +take, +startDate, +endDate + } = data; + return __request(OpenAPI, { + method: 'GET', + url: '/umbraco/management/api/v1/log-viewer/message-template', + query: { + skip, take, startDate, endDate + }, + errors: { + 400: `Bad Request`, + 401: `The resource is protected and requires an authentication token`, + }, + }); + } + + /** + * @returns unknown Success + * @throws ApiError + */ + public static getLogViewerSavedSearch(data: LogViewerData['payloads']['GetLogViewerSavedSearch'] = {}): CancelablePromise { + const { + + skip, +take + } = data; + return __request(OpenAPI, { + method: 'GET', + url: '/umbraco/management/api/v1/log-viewer/saved-search', + query: { + skip, take + }, + errors: { + 401: `The resource is protected and requires an authentication token`, + }, + }); + } + + /** + * @returns string Created + * @throws ApiError + */ + public static postLogViewerSavedSearch(data: LogViewerData['payloads']['PostLogViewerSavedSearch'] = {}): CancelablePromise { + const { + + requestBody + } = data; + return __request(OpenAPI, { + method: 'POST', + url: '/umbraco/management/api/v1/log-viewer/saved-search', + body: requestBody, + mediaType: 'application/json', + responseHeader: 'Umb-Generated-Resource', + errors: { + 400: `Bad Request`, + 401: `The resource is protected and requires an authentication token`, + }, + }); + } + + /** + * @returns unknown Success + * @throws ApiError + */ + public static getLogViewerSavedSearchByName(data: LogViewerData['payloads']['GetLogViewerSavedSearchByName']): CancelablePromise { + const { + + name + } = data; + return __request(OpenAPI, { + method: 'GET', + url: '/umbraco/management/api/v1/log-viewer/saved-search/{name}', + path: { + name + }, + errors: { + 401: `The resource is protected and requires an authentication token`, + 404: `Not Found`, + }, + }); + } + + /** + * @returns string Success + * @throws ApiError + */ + public static deleteLogViewerSavedSearchByName(data: LogViewerData['payloads']['DeleteLogViewerSavedSearchByName']): CancelablePromise { + const { + + name + } = data; + return __request(OpenAPI, { + method: 'DELETE', + url: '/umbraco/management/api/v1/log-viewer/saved-search/{name}', + path: { + name + }, + responseHeader: 'Umb-Notifications', + errors: { + 401: `The resource is protected and requires an authentication token`, + 404: `Not Found`, + }, + }); + } + + /** + * @returns any Success + * @throws ApiError + */ + public static getLogViewerValidateLogsSize(data: LogViewerData['payloads']['GetLogViewerValidateLogsSize'] = {}): CancelablePromise { + const { + + startDate, +endDate + } = data; + return __request(OpenAPI, { + method: 'GET', + url: '/umbraco/management/api/v1/log-viewer/validate-logs-size', + query: { + startDate, endDate + }, + errors: { + 400: `Bad Request`, + 401: `The resource is protected and requires an authentication token`, + }, + }); + } + +} + +export class ManifestService { + + /** + * @returns unknown Success + * @throws ApiError + */ + public static getManifestManifest(): CancelablePromise { + + return __request(OpenAPI, { + method: 'GET', + url: '/umbraco/management/api/v1/manifest/manifest', + errors: { + 401: `The resource is protected and requires an authentication token`, + }, + }); + } + + /** + * @returns unknown Success + * @throws ApiError + */ + public static getManifestManifestPrivate(): CancelablePromise { + + return __request(OpenAPI, { + method: 'GET', + url: '/umbraco/management/api/v1/manifest/manifest/private', + errors: { + 401: `The resource is protected and requires an authentication token`, + }, + }); + } + + /** + * @returns unknown Success + * @throws ApiError + */ + public static getManifestManifestPublic(): CancelablePromise { + + return __request(OpenAPI, { + method: 'GET', + url: '/umbraco/management/api/v1/manifest/manifest/public', + }); + } + +} + +export class MediaTypeService { + + /** + * @returns unknown Success + * @throws ApiError + */ + public static getItemMediaType(data: MediaTypeData['payloads']['GetItemMediaType'] = {}): CancelablePromise { + const { + + id + } = data; + return __request(OpenAPI, { + method: 'GET', + url: '/umbraco/management/api/v1/item/media-type', + query: { + id + }, + errors: { + 401: `The resource is protected and requires an authentication token`, + }, + }); + } + + /** + * @returns unknown Success + * @throws ApiError + */ + public static getItemMediaTypeSearch(data: MediaTypeData['payloads']['GetItemMediaTypeSearch'] = {}): CancelablePromise { + const { + + query, +skip, +take + } = data; + return __request(OpenAPI, { + method: 'GET', + url: '/umbraco/management/api/v1/item/media-type/search', + query: { + query, skip, take + }, + errors: { + 401: `The resource is protected and requires an authentication token`, + }, + }); + } + + /** + * @returns string Created + * @throws ApiError + */ + public static postMediaType(data: MediaTypeData['payloads']['PostMediaType'] = {}): CancelablePromise { + const { + + requestBody + } = data; + return __request(OpenAPI, { + method: 'POST', + url: '/umbraco/management/api/v1/media-type', + body: requestBody, + mediaType: 'application/json', + responseHeader: 'Umb-Generated-Resource', + errors: { + 400: `Bad Request`, + 401: `The resource is protected and requires an authentication token`, + 404: `Not Found`, + }, + }); + } + + /** + * @returns unknown Success + * @throws ApiError + */ + public static getMediaTypeById(data: MediaTypeData['payloads']['GetMediaTypeById']): CancelablePromise { + const { + + id + } = data; + return __request(OpenAPI, { + method: 'GET', + url: '/umbraco/management/api/v1/media-type/{id}', + path: { + id + }, + errors: { + 401: `The resource is protected and requires an authentication token`, + 404: `Not Found`, + }, + }); + } + + /** + * @returns string Success + * @throws ApiError + */ + public static deleteMediaTypeById(data: MediaTypeData['payloads']['DeleteMediaTypeById']): CancelablePromise { + const { + + id + } = data; + return __request(OpenAPI, { + method: 'DELETE', + url: '/umbraco/management/api/v1/media-type/{id}', + path: { + id + }, + responseHeader: 'Umb-Notifications', + errors: { + 401: `The resource is protected and requires an authentication token`, + 404: `Not Found`, + }, + }); + } + + /** + * @returns string Success + * @throws ApiError + */ + public static putMediaTypeById(data: MediaTypeData['payloads']['PutMediaTypeById']): CancelablePromise { + const { + + id, +requestBody + } = data; + return __request(OpenAPI, { + method: 'PUT', + url: '/umbraco/management/api/v1/media-type/{id}', + path: { + id + }, + body: requestBody, + mediaType: 'application/json', + responseHeader: 'Umb-Notifications', + errors: { + 400: `Bad Request`, + 401: `The resource is protected and requires an authentication token`, + 404: `Not Found`, + }, + }); + } + + /** + * @returns unknown Success + * @throws ApiError + */ + public static getMediaTypeByIdAllowedChildren(data: MediaTypeData['payloads']['GetMediaTypeByIdAllowedChildren']): CancelablePromise { + const { + + id, +skip, +take + } = data; + return __request(OpenAPI, { + method: 'GET', + url: '/umbraco/management/api/v1/media-type/{id}/allowed-children', + path: { + id + }, + query: { + skip, take + }, + errors: { + 401: `The resource is protected and requires an authentication token`, + 404: `Not Found`, + }, + }); + } + + /** + * @returns unknown Success + * @throws ApiError + */ + public static getMediaTypeByIdCompositionReferences(data: MediaTypeData['payloads']['GetMediaTypeByIdCompositionReferences']): CancelablePromise { + const { + + id + } = data; + return __request(OpenAPI, { + method: 'GET', + url: '/umbraco/management/api/v1/media-type/{id}/composition-references', + path: { + id + }, + errors: { + 400: `Bad Request`, + 401: `The resource is protected and requires an authentication token`, + 404: `Not Found`, + }, + }); + } + + /** + * @returns string Created + * @throws ApiError + */ + public static postMediaTypeByIdCopy(data: MediaTypeData['payloads']['PostMediaTypeByIdCopy']): CancelablePromise { + const { + + id, +requestBody + } = data; + return __request(OpenAPI, { + method: 'POST', + url: '/umbraco/management/api/v1/media-type/{id}/copy', + path: { + id + }, + body: requestBody, + mediaType: 'application/json', + responseHeader: 'Umb-Generated-Resource', + errors: { + 400: `Bad Request`, + 401: `The resource is protected and requires an authentication token`, + 404: `Not Found`, + }, + }); + } + + /** + * @returns string Success + * @throws ApiError + */ + public static putMediaTypeByIdMove(data: MediaTypeData['payloads']['PutMediaTypeByIdMove']): CancelablePromise { + const { + + id, +requestBody + } = data; + return __request(OpenAPI, { + method: 'PUT', + url: '/umbraco/management/api/v1/media-type/{id}/move', + path: { + id + }, + body: requestBody, + mediaType: 'application/json', + responseHeader: 'Umb-Notifications', + errors: { + 400: `Bad Request`, + 401: `The resource is protected and requires an authentication token`, + 404: `Not Found`, + }, + }); + } + + /** + * @returns unknown Success + * @throws ApiError + */ + public static getMediaTypeAllowedAtRoot(data: MediaTypeData['payloads']['GetMediaTypeAllowedAtRoot'] = {}): CancelablePromise { + const { + + skip, +take + } = data; + return __request(OpenAPI, { + method: 'GET', + url: '/umbraco/management/api/v1/media-type/allowed-at-root', + query: { + skip, take + }, + errors: { + 401: `The resource is protected and requires an authentication token`, + }, + }); + } + + /** + * @returns unknown Success + * @throws ApiError + */ + public static postMediaTypeAvailableCompositions(data: MediaTypeData['payloads']['PostMediaTypeAvailableCompositions'] = {}): CancelablePromise { + const { + + requestBody + } = data; + return __request(OpenAPI, { + method: 'POST', + url: '/umbraco/management/api/v1/media-type/available-compositions', + body: requestBody, + mediaType: 'application/json', + errors: { + 401: `The resource is protected and requires an authentication token`, + }, + }); + } + + /** + * @returns string Created + * @throws ApiError + */ + public static postMediaTypeFolder(data: MediaTypeData['payloads']['PostMediaTypeFolder'] = {}): CancelablePromise { + const { + + requestBody + } = data; + return __request(OpenAPI, { + method: 'POST', + url: '/umbraco/management/api/v1/media-type/folder', + body: requestBody, + mediaType: 'application/json', + responseHeader: 'Umb-Generated-Resource', + errors: { + 400: `Bad Request`, + 401: `The resource is protected and requires an authentication token`, + 404: `Not Found`, + }, + }); + } + + /** + * @returns unknown Success + * @throws ApiError + */ + public static getMediaTypeFolderById(data: MediaTypeData['payloads']['GetMediaTypeFolderById']): CancelablePromise { + const { + + id + } = data; + return __request(OpenAPI, { + method: 'GET', + url: '/umbraco/management/api/v1/media-type/folder/{id}', + path: { + id + }, + errors: { + 401: `The resource is protected and requires an authentication token`, + 404: `Not Found`, + }, + }); + } + + /** + * @returns string Success + * @throws ApiError + */ + public static deleteMediaTypeFolderById(data: MediaTypeData['payloads']['DeleteMediaTypeFolderById']): CancelablePromise { + const { + + id + } = data; + return __request(OpenAPI, { + method: 'DELETE', + url: '/umbraco/management/api/v1/media-type/folder/{id}', + path: { + id + }, + responseHeader: 'Umb-Notifications', + errors: { + 400: `Bad Request`, + 401: `The resource is protected and requires an authentication token`, + 404: `Not Found`, + }, + }); + } + + /** + * @returns string Success + * @throws ApiError + */ + public static putMediaTypeFolderById(data: MediaTypeData['payloads']['PutMediaTypeFolderById']): CancelablePromise { + const { + + id, +requestBody + } = data; + return __request(OpenAPI, { + method: 'PUT', + url: '/umbraco/management/api/v1/media-type/folder/{id}', + path: { + id + }, + body: requestBody, + mediaType: 'application/json', + responseHeader: 'Umb-Notifications', + errors: { + 400: `Bad Request`, + 401: `The resource is protected and requires an authentication token`, + 404: `Not Found`, + }, + }); + } + + /** + * @returns unknown Success + * @throws ApiError + */ + public static getTreeMediaTypeAncestors(data: MediaTypeData['payloads']['GetTreeMediaTypeAncestors'] = {}): CancelablePromise { + const { + + descendantId + } = data; + return __request(OpenAPI, { + method: 'GET', + url: '/umbraco/management/api/v1/tree/media-type/ancestors', + query: { + descendantId + }, + errors: { + 401: `The resource is protected and requires an authentication token`, + }, + }); + } + + /** + * @returns unknown Success + * @throws ApiError + */ + public static getTreeMediaTypeChildren(data: MediaTypeData['payloads']['GetTreeMediaTypeChildren'] = {}): CancelablePromise { + const { + + parentId, +skip, +take, +foldersOnly + } = data; + return __request(OpenAPI, { + method: 'GET', + url: '/umbraco/management/api/v1/tree/media-type/children', + query: { + parentId, skip, take, foldersOnly + }, + errors: { + 401: `The resource is protected and requires an authentication token`, + }, + }); + } + + /** + * @returns unknown Success + * @throws ApiError + */ + public static getTreeMediaTypeRoot(data: MediaTypeData['payloads']['GetTreeMediaTypeRoot'] = {}): CancelablePromise { + const { + + skip, +take, +foldersOnly + } = data; + return __request(OpenAPI, { + method: 'GET', + url: '/umbraco/management/api/v1/tree/media-type/root', + query: { + skip, take, foldersOnly + }, + errors: { + 401: `The resource is protected and requires an authentication token`, + }, + }); + } + +} + +export class MediaService { + + /** + * @returns unknown Success + * @throws ApiError + */ + public static getCollectionMedia(data: MediaData['payloads']['GetCollectionMedia'] = {}): CancelablePromise { + const { + + id, +dataTypeId, +orderBy, +orderDirection, +filter, +skip, +take + } = data; + return __request(OpenAPI, { + method: 'GET', + url: '/umbraco/management/api/v1/collection/media', + query: { + id, dataTypeId, orderBy, orderDirection, filter, skip, take + }, + errors: { + 400: `Bad Request`, + 401: `The resource is protected and requires an authentication token`, + 404: `Not Found`, + }, + }); + } + + /** + * @returns unknown Success + * @throws ApiError + */ + public static getItemMedia(data: MediaData['payloads']['GetItemMedia'] = {}): CancelablePromise { + const { + + id + } = data; + return __request(OpenAPI, { + method: 'GET', + url: '/umbraco/management/api/v1/item/media', + query: { + id + }, + errors: { + 401: `The resource is protected and requires an authentication token`, + }, + }); + } + + /** + * @returns unknown Success + * @throws ApiError + */ + public static getItemMediaSearch(data: MediaData['payloads']['GetItemMediaSearch'] = {}): CancelablePromise { + const { + + query, +skip, +take + } = data; + return __request(OpenAPI, { + method: 'GET', + url: '/umbraco/management/api/v1/item/media/search', + query: { + query, skip, take + }, + errors: { + 401: `The resource is protected and requires an authentication token`, + }, + }); + } + + /** + * @returns string Created + * @throws ApiError + */ + public static postMedia(data: MediaData['payloads']['PostMedia'] = {}): CancelablePromise { + const { + + requestBody + } = data; + return __request(OpenAPI, { + method: 'POST', + url: '/umbraco/management/api/v1/media', + body: requestBody, + mediaType: 'application/json', + responseHeader: 'Umb-Generated-Resource', + errors: { + 400: `Bad Request`, + 401: `The resource is protected and requires an authentication token`, + 403: `The authenticated user do not have access to this resource`, + 404: `Not Found`, + }, + }); + } + + /** + * @returns unknown Success + * @throws ApiError + */ + public static getMediaById(data: MediaData['payloads']['GetMediaById']): CancelablePromise { + const { + + id + } = data; + return __request(OpenAPI, { + method: 'GET', + url: '/umbraco/management/api/v1/media/{id}', + path: { + id + }, + errors: { + 401: `The resource is protected and requires an authentication token`, + 403: `The authenticated user do not have access to this resource`, + 404: `Not Found`, + }, + }); + } + + /** + * @returns string Success + * @throws ApiError + */ + public static deleteMediaById(data: MediaData['payloads']['DeleteMediaById']): CancelablePromise { + const { + + id + } = data; + return __request(OpenAPI, { + method: 'DELETE', + url: '/umbraco/management/api/v1/media/{id}', + path: { + id + }, + responseHeader: 'Umb-Notifications', + errors: { + 400: `Bad Request`, + 401: `The resource is protected and requires an authentication token`, + 403: `The authenticated user do not have access to this resource`, + 404: `Not Found`, + }, + }); + } + + /** + * @returns string Success + * @throws ApiError + */ + public static putMediaById(data: MediaData['payloads']['PutMediaById']): CancelablePromise { + const { + + id, +requestBody + } = data; + return __request(OpenAPI, { + method: 'PUT', + url: '/umbraco/management/api/v1/media/{id}', + path: { + id + }, + body: requestBody, + mediaType: 'application/json', + responseHeader: 'Umb-Notifications', + errors: { + 400: `Bad Request`, + 401: `The resource is protected and requires an authentication token`, + 403: `The authenticated user do not have access to this resource`, + 404: `Not Found`, + }, + }); + } + + /** + * @returns string Success + * @throws ApiError + */ + public static putMediaByIdMove(data: MediaData['payloads']['PutMediaByIdMove']): CancelablePromise { + const { + + id, +requestBody + } = data; + return __request(OpenAPI, { + method: 'PUT', + url: '/umbraco/management/api/v1/media/{id}/move', + path: { + id + }, + body: requestBody, + mediaType: 'application/json', + responseHeader: 'Umb-Notifications', + errors: { + 401: `The resource is protected and requires an authentication token`, + 403: `The authenticated user do not have access to this resource`, + 404: `Not Found`, + }, + }); + } + + /** + * @returns string Success + * @throws ApiError + */ + public static putMediaByIdMoveToRecycleBin(data: MediaData['payloads']['PutMediaByIdMoveToRecycleBin']): CancelablePromise { + const { + + id + } = data; + return __request(OpenAPI, { + method: 'PUT', + url: '/umbraco/management/api/v1/media/{id}/move-to-recycle-bin', + path: { + id + }, + responseHeader: 'Umb-Notifications', + errors: { + 400: `Bad Request`, + 401: `The resource is protected and requires an authentication token`, + 403: `The authenticated user do not have access to this resource`, + 404: `Not Found`, + }, + }); + } + + /** + * @returns unknown Success + * @throws ApiError + */ + public static getMediaByIdReferencedBy(data: MediaData['payloads']['GetMediaByIdReferencedBy']): CancelablePromise { + const { + + id, +skip, +take + } = data; + return __request(OpenAPI, { + method: 'GET', + url: '/umbraco/management/api/v1/media/{id}/referenced-by', + path: { + id + }, + query: { + skip, take + }, + errors: { + 401: `The resource is protected and requires an authentication token`, + }, + }); + } + + /** + * @returns unknown Success + * @throws ApiError + */ + public static getMediaByIdReferencedDescendants(data: MediaData['payloads']['GetMediaByIdReferencedDescendants']): CancelablePromise { + const { + + id, +skip, +take + } = data; + return __request(OpenAPI, { + method: 'GET', + url: '/umbraco/management/api/v1/media/{id}/referenced-descendants', + path: { + id + }, + query: { + skip, take + }, + errors: { + 401: `The resource is protected and requires an authentication token`, + }, + }); + } + + /** + * @returns string Success + * @throws ApiError + */ + public static putMediaByIdValidate(data: MediaData['payloads']['PutMediaByIdValidate']): CancelablePromise { + const { + + id, +requestBody + } = data; + return __request(OpenAPI, { + method: 'PUT', + url: '/umbraco/management/api/v1/media/{id}/validate', + path: { + id + }, + body: requestBody, + mediaType: 'application/json', + responseHeader: 'Umb-Notifications', + errors: { + 400: `Bad Request`, + 401: `The resource is protected and requires an authentication token`, + 403: `The authenticated user do not have access to this resource`, + 404: `Not Found`, + }, + }); + } + + /** + * @returns unknown Success + * @throws ApiError + */ + public static getMediaAreReferenced(data: MediaData['payloads']['GetMediaAreReferenced'] = {}): CancelablePromise { + const { + + id, +skip, +take + } = data; + return __request(OpenAPI, { + method: 'GET', + url: '/umbraco/management/api/v1/media/are-referenced', + query: { + id, skip, take + }, + errors: { + 401: `The resource is protected and requires an authentication token`, + }, + }); + } + + /** + * @returns unknown Success + * @throws ApiError + */ + public static getMediaConfiguration(): CancelablePromise { + + return __request(OpenAPI, { + method: 'GET', + url: '/umbraco/management/api/v1/media/configuration', + errors: { + 401: `The resource is protected and requires an authentication token`, + }, + }); + } + + /** + * @returns string Success + * @throws ApiError + */ + public static putMediaSort(data: MediaData['payloads']['PutMediaSort'] = {}): CancelablePromise { + const { + + requestBody + } = data; + return __request(OpenAPI, { + method: 'PUT', + url: '/umbraco/management/api/v1/media/sort', + body: requestBody, + mediaType: 'application/json', + responseHeader: 'Umb-Notifications', + errors: { + 400: `Bad Request`, + 401: `The resource is protected and requires an authentication token`, + 403: `The authenticated user do not have access to this resource`, + 404: `Not Found`, + }, + }); + } + + /** + * @returns string Success + * @throws ApiError + */ + public static postMediaValidate(data: MediaData['payloads']['PostMediaValidate'] = {}): CancelablePromise { + const { + + requestBody + } = data; + return __request(OpenAPI, { + method: 'POST', + url: '/umbraco/management/api/v1/media/validate', + body: requestBody, + mediaType: 'application/json', + responseHeader: 'Umb-Notifications', + errors: { + 400: `Bad Request`, + 401: `The resource is protected and requires an authentication token`, + 403: `The authenticated user do not have access to this resource`, + 404: `Not Found`, + }, + }); + } + + /** + * @returns string Success + * @throws ApiError + */ + public static deleteRecycleBinMedia(): CancelablePromise { + + return __request(OpenAPI, { + method: 'DELETE', + url: '/umbraco/management/api/v1/recycle-bin/media', + responseHeader: 'Umb-Notifications', + errors: { + 400: `Bad Request`, + 401: `The resource is protected and requires an authentication token`, + 403: `The authenticated user do not have access to this resource`, + }, + }); + } + + /** + * @returns string Success + * @throws ApiError + */ + public static deleteRecycleBinMediaById(data: MediaData['payloads']['DeleteRecycleBinMediaById']): CancelablePromise { + const { + + id + } = data; + return __request(OpenAPI, { + method: 'DELETE', + url: '/umbraco/management/api/v1/recycle-bin/media/{id}', + path: { + id + }, + responseHeader: 'Umb-Notifications', + errors: { + 400: `Bad Request`, + 401: `The resource is protected and requires an authentication token`, + 403: `The authenticated user do not have access to this resource`, + 404: `Not Found`, + }, + }); + } + + /** + * @returns unknown Success + * @throws ApiError + */ + public static getRecycleBinMediaByIdOriginalParent(data: MediaData['payloads']['GetRecycleBinMediaByIdOriginalParent']): CancelablePromise { + const { + + id + } = data; + return __request(OpenAPI, { + method: 'GET', + url: '/umbraco/management/api/v1/recycle-bin/media/{id}/original-parent', + path: { + id + }, + errors: { + 400: `Bad Request`, + 401: `The resource is protected and requires an authentication token`, + 403: `The authenticated user do not have access to this resource`, + 404: `Not Found`, + }, + }); + } + + /** + * @returns string Success + * @throws ApiError + */ + public static putRecycleBinMediaByIdRestore(data: MediaData['payloads']['PutRecycleBinMediaByIdRestore']): CancelablePromise { + const { + + id, +requestBody + } = data; + return __request(OpenAPI, { + method: 'PUT', + url: '/umbraco/management/api/v1/recycle-bin/media/{id}/restore', + path: { + id + }, + body: requestBody, + mediaType: 'application/json', + responseHeader: 'Umb-Notifications', + errors: { + 400: `Bad Request`, + 401: `The resource is protected and requires an authentication token`, + 403: `The authenticated user do not have access to this resource`, + 404: `Not Found`, + }, + }); + } + + /** + * @returns unknown Success + * @throws ApiError + */ + public static getRecycleBinMediaChildren(data: MediaData['payloads']['GetRecycleBinMediaChildren'] = {}): CancelablePromise { + const { + + parentId, +skip, +take + } = data; + return __request(OpenAPI, { + method: 'GET', + url: '/umbraco/management/api/v1/recycle-bin/media/children', + query: { + parentId, skip, take + }, + errors: { + 401: `The resource is protected and requires an authentication token`, + }, + }); + } + + /** + * @returns unknown Success + * @throws ApiError + */ + public static getRecycleBinMediaRoot(data: MediaData['payloads']['GetRecycleBinMediaRoot'] = {}): CancelablePromise { + const { + + skip, +take + } = data; + return __request(OpenAPI, { + method: 'GET', + url: '/umbraco/management/api/v1/recycle-bin/media/root', + query: { + skip, take + }, + errors: { + 401: `The resource is protected and requires an authentication token`, + }, + }); + } + + /** + * @returns unknown Success + * @throws ApiError + */ + public static getTreeMediaAncestors(data: MediaData['payloads']['GetTreeMediaAncestors'] = {}): CancelablePromise { + const { + + descendantId + } = data; + return __request(OpenAPI, { + method: 'GET', + url: '/umbraco/management/api/v1/tree/media/ancestors', + query: { + descendantId + }, + errors: { + 401: `The resource is protected and requires an authentication token`, + }, + }); + } + + /** + * @returns unknown Success + * @throws ApiError + */ + public static getTreeMediaChildren(data: MediaData['payloads']['GetTreeMediaChildren'] = {}): CancelablePromise { + const { + + parentId, +skip, +take, +dataTypeId + } = data; + return __request(OpenAPI, { + method: 'GET', + url: '/umbraco/management/api/v1/tree/media/children', + query: { + parentId, skip, take, dataTypeId + }, + errors: { + 401: `The resource is protected and requires an authentication token`, + }, + }); + } + + /** + * @returns unknown Success + * @throws ApiError + */ + public static getTreeMediaRoot(data: MediaData['payloads']['GetTreeMediaRoot'] = {}): CancelablePromise { + const { + + skip, +take, +dataTypeId + } = data; + return __request(OpenAPI, { + method: 'GET', + url: '/umbraco/management/api/v1/tree/media/root', + query: { + skip, take, dataTypeId + }, + errors: { + 401: `The resource is protected and requires an authentication token`, + }, + }); + } + +} + +export class MemberGroupService { + + /** + * @returns unknown Success + * @throws ApiError + */ + public static getItemMemberGroup(data: MemberGroupData['payloads']['GetItemMemberGroup'] = {}): CancelablePromise { + const { + + id + } = data; + return __request(OpenAPI, { + method: 'GET', + url: '/umbraco/management/api/v1/item/member-group', + query: { + id + }, + errors: { + 401: `The resource is protected and requires an authentication token`, + }, + }); + } + + /** + * @returns unknown Success + * @throws ApiError + */ + public static getMemberGroup(data: MemberGroupData['payloads']['GetMemberGroup'] = {}): CancelablePromise { + const { + + skip, +take + } = data; + return __request(OpenAPI, { + method: 'GET', + url: '/umbraco/management/api/v1/member-group', + query: { + skip, take + }, + errors: { + 401: `The resource is protected and requires an authentication token`, + }, + }); + } + + /** + * @returns unknown Success + * @throws ApiError + */ + public static postMemberGroup(data: MemberGroupData['payloads']['PostMemberGroup'] = {}): CancelablePromise { + const { + + requestBody + } = data; + return __request(OpenAPI, { + method: 'POST', + url: '/umbraco/management/api/v1/member-group', + body: requestBody, + mediaType: 'application/json', + errors: { + 400: `Bad Request`, + 401: `The resource is protected and requires an authentication token`, + }, + }); + } + + /** + * @returns unknown Success + * @throws ApiError + */ + public static getMemberGroupById(data: MemberGroupData['payloads']['GetMemberGroupById']): CancelablePromise { + const { + + id + } = data; + return __request(OpenAPI, { + method: 'GET', + url: '/umbraco/management/api/v1/member-group/{id}', + path: { + id + }, + errors: { + 401: `The resource is protected and requires an authentication token`, + 404: `Not Found`, + }, + }); + } + + /** + * @returns string Success + * @throws ApiError + */ + public static deleteMemberGroupById(data: MemberGroupData['payloads']['DeleteMemberGroupById']): CancelablePromise { + const { + + id + } = data; + return __request(OpenAPI, { + method: 'DELETE', + url: '/umbraco/management/api/v1/member-group/{id}', + path: { + id + }, + responseHeader: 'Umb-Notifications', + errors: { + 400: `Bad Request`, + 401: `The resource is protected and requires an authentication token`, + 404: `Not Found`, + }, + }); + } + + /** + * @returns unknown Success + * @throws ApiError + */ + public static putMemberGroupById(data: MemberGroupData['payloads']['PutMemberGroupById']): CancelablePromise { + const { + + id, +requestBody + } = data; + return __request(OpenAPI, { + method: 'PUT', + url: '/umbraco/management/api/v1/member-group/{id}', + path: { + id + }, + body: requestBody, + mediaType: 'application/json', + errors: { + 400: `Bad Request`, + 401: `The resource is protected and requires an authentication token`, + 404: `Not Found`, + }, + }); + } + + /** + * @returns unknown Success + * @throws ApiError + */ + public static getTreeMemberGroupRoot(data: MemberGroupData['payloads']['GetTreeMemberGroupRoot'] = {}): CancelablePromise { + const { + + skip, +take + } = data; + return __request(OpenAPI, { + method: 'GET', + url: '/umbraco/management/api/v1/tree/member-group/root', + query: { + skip, take + }, + errors: { + 401: `The resource is protected and requires an authentication token`, + }, + }); + } + +} + +export class MemberTypeService { + + /** + * @returns unknown Success + * @throws ApiError + */ + public static getItemMemberType(data: MemberTypeData['payloads']['GetItemMemberType'] = {}): CancelablePromise { + const { + + id + } = data; + return __request(OpenAPI, { + method: 'GET', + url: '/umbraco/management/api/v1/item/member-type', + query: { + id + }, + errors: { + 401: `The resource is protected and requires an authentication token`, + }, + }); + } + + /** + * @returns unknown Success + * @throws ApiError + */ + public static getItemMemberTypeSearch(data: MemberTypeData['payloads']['GetItemMemberTypeSearch'] = {}): CancelablePromise { + const { + + query, +skip, +take + } = data; + return __request(OpenAPI, { + method: 'GET', + url: '/umbraco/management/api/v1/item/member-type/search', + query: { + query, skip, take + }, + errors: { + 401: `The resource is protected and requires an authentication token`, + }, + }); + } + + /** + * @returns string Created + * @throws ApiError + */ + public static postMemberType(data: MemberTypeData['payloads']['PostMemberType'] = {}): CancelablePromise { + const { + + requestBody + } = data; + return __request(OpenAPI, { + method: 'POST', + url: '/umbraco/management/api/v1/member-type', + body: requestBody, + mediaType: 'application/json', + responseHeader: 'Umb-Generated-Resource', + errors: { + 400: `Bad Request`, + 401: `The resource is protected and requires an authentication token`, + 404: `Not Found`, + }, + }); + } + + /** + * @returns unknown Success + * @throws ApiError + */ + public static getMemberTypeById(data: MemberTypeData['payloads']['GetMemberTypeById']): CancelablePromise { + const { + + id + } = data; + return __request(OpenAPI, { + method: 'GET', + url: '/umbraco/management/api/v1/member-type/{id}', + path: { + id + }, + errors: { + 401: `The resource is protected and requires an authentication token`, + 404: `Not Found`, + }, + }); + } + + /** + * @returns string Success + * @throws ApiError + */ + public static deleteMemberTypeById(data: MemberTypeData['payloads']['DeleteMemberTypeById']): CancelablePromise { + const { + + id + } = data; + return __request(OpenAPI, { + method: 'DELETE', + url: '/umbraco/management/api/v1/member-type/{id}', + path: { + id + }, + responseHeader: 'Umb-Notifications', + errors: { + 401: `The resource is protected and requires an authentication token`, + 404: `Not Found`, + }, + }); + } + + /** + * @returns string Success + * @throws ApiError + */ + public static putMemberTypeById(data: MemberTypeData['payloads']['PutMemberTypeById']): CancelablePromise { + const { + + id, +requestBody + } = data; + return __request(OpenAPI, { + method: 'PUT', + url: '/umbraco/management/api/v1/member-type/{id}', + path: { + id + }, + body: requestBody, + mediaType: 'application/json', + responseHeader: 'Umb-Notifications', + errors: { + 400: `Bad Request`, + 401: `The resource is protected and requires an authentication token`, + 404: `Not Found`, + }, + }); + } + + /** + * @returns unknown Success + * @throws ApiError + */ + public static getMemberTypeByIdCompositionReferences(data: MemberTypeData['payloads']['GetMemberTypeByIdCompositionReferences']): CancelablePromise { + const { + + id + } = data; + return __request(OpenAPI, { + method: 'GET', + url: '/umbraco/management/api/v1/member-type/{id}/composition-references', + path: { + id + }, + errors: { + 400: `Bad Request`, + 401: `The resource is protected and requires an authentication token`, + 404: `Not Found`, + }, + }); + } + + /** + * @returns string Created + * @throws ApiError + */ + public static postMemberTypeByIdCopy(data: MemberTypeData['payloads']['PostMemberTypeByIdCopy']): CancelablePromise { + const { + + id + } = data; + return __request(OpenAPI, { + method: 'POST', + url: '/umbraco/management/api/v1/member-type/{id}/copy', + path: { + id + }, + responseHeader: 'Umb-Generated-Resource', + errors: { + 400: `Bad Request`, + 401: `The resource is protected and requires an authentication token`, + 404: `Not Found`, + }, + }); + } + + /** + * @returns unknown Success + * @throws ApiError + */ + public static postMemberTypeAvailableCompositions(data: MemberTypeData['payloads']['PostMemberTypeAvailableCompositions'] = {}): CancelablePromise { + const { + + requestBody + } = data; + return __request(OpenAPI, { + method: 'POST', + url: '/umbraco/management/api/v1/member-type/available-compositions', + body: requestBody, + mediaType: 'application/json', + errors: { + 401: `The resource is protected and requires an authentication token`, + }, + }); + } + + /** + * @returns unknown Success + * @throws ApiError + */ + public static getTreeMemberTypeRoot(data: MemberTypeData['payloads']['GetTreeMemberTypeRoot'] = {}): CancelablePromise { + const { + + skip, +take + } = data; + return __request(OpenAPI, { + method: 'GET', + url: '/umbraco/management/api/v1/tree/member-type/root', + query: { + skip, take + }, + errors: { + 401: `The resource is protected and requires an authentication token`, + }, + }); + } + +} + +export class MemberService { + + /** + * @returns unknown Success + * @throws ApiError + */ + public static getFilterMember(data: MemberData['payloads']['GetFilterMember'] = {}): CancelablePromise { + const { + + memberTypeId, +memberGroupName, +isApproved, +isLockedOut, +orderBy, +orderDirection, +filter, +skip, +take + } = data; + return __request(OpenAPI, { + method: 'GET', + url: '/umbraco/management/api/v1/filter/member', + query: { + memberTypeId, memberGroupName, isApproved, isLockedOut, orderBy, orderDirection, filter, skip, take + }, + errors: { + 401: `The resource is protected and requires an authentication token`, + 404: `Not Found`, + }, + }); + } + + /** + * @returns unknown Success + * @throws ApiError + */ + public static getItemMember(data: MemberData['payloads']['GetItemMember'] = {}): CancelablePromise { + const { + + id + } = data; + return __request(OpenAPI, { + method: 'GET', + url: '/umbraco/management/api/v1/item/member', + query: { + id + }, + errors: { + 401: `The resource is protected and requires an authentication token`, + }, + }); + } + + /** + * @returns unknown Success + * @throws ApiError + */ + public static getItemMemberSearch(data: MemberData['payloads']['GetItemMemberSearch'] = {}): CancelablePromise { + const { + + query, +skip, +take + } = data; + return __request(OpenAPI, { + method: 'GET', + url: '/umbraco/management/api/v1/item/member/search', + query: { + query, skip, take + }, + errors: { + 401: `The resource is protected and requires an authentication token`, + }, + }); + } + + /** + * @returns string Created + * @throws ApiError + */ + public static postMember(data: MemberData['payloads']['PostMember'] = {}): CancelablePromise { + const { + + requestBody + } = data; + return __request(OpenAPI, { + method: 'POST', + url: '/umbraco/management/api/v1/member', + body: requestBody, + mediaType: 'application/json', + responseHeader: 'Umb-Generated-Resource', + errors: { + 400: `Bad Request`, + 401: `The resource is protected and requires an authentication token`, + 404: `Not Found`, + }, + }); + } + + /** + * @returns unknown Success + * @throws ApiError + */ + public static getMemberById(data: MemberData['payloads']['GetMemberById']): CancelablePromise { + const { + + id + } = data; + return __request(OpenAPI, { + method: 'GET', + url: '/umbraco/management/api/v1/member/{id}', + path: { + id + }, + errors: { + 401: `The resource is protected and requires an authentication token`, + 404: `Not Found`, + }, + }); + } + + /** + * @returns string Success + * @throws ApiError + */ + public static deleteMemberById(data: MemberData['payloads']['DeleteMemberById']): CancelablePromise { + const { + + id + } = data; + return __request(OpenAPI, { + method: 'DELETE', + url: '/umbraco/management/api/v1/member/{id}', + path: { + id + }, + responseHeader: 'Umb-Notifications', + errors: { + 400: `Bad Request`, + 401: `The resource is protected and requires an authentication token`, + 404: `Not Found`, + }, + }); + } + + /** + * @returns string Success + * @throws ApiError + */ + public static putMemberById(data: MemberData['payloads']['PutMemberById']): CancelablePromise { + const { + + id, +requestBody + } = data; + return __request(OpenAPI, { + method: 'PUT', + url: '/umbraco/management/api/v1/member/{id}', + path: { + id + }, + body: requestBody, + mediaType: 'application/json', + responseHeader: 'Umb-Notifications', + errors: { + 400: `Bad Request`, + 401: `The resource is protected and requires an authentication token`, + 404: `Not Found`, + }, + }); + } + + /** + * @returns string Success + * @throws ApiError + */ + public static putMemberByIdValidate(data: MemberData['payloads']['PutMemberByIdValidate']): CancelablePromise { + const { + + id, +requestBody + } = data; + return __request(OpenAPI, { + method: 'PUT', + url: '/umbraco/management/api/v1/member/{id}/validate', + path: { + id + }, + body: requestBody, + mediaType: 'application/json', + responseHeader: 'Umb-Notifications', + errors: { + 400: `Bad Request`, + 401: `The resource is protected and requires an authentication token`, + 404: `Not Found`, + }, + }); + } + + /** + * @returns unknown Success + * @throws ApiError + */ + public static getMemberConfiguration(): CancelablePromise { + + return __request(OpenAPI, { + method: 'GET', + url: '/umbraco/management/api/v1/member/configuration', + errors: { + 401: `The resource is protected and requires an authentication token`, + }, + }); + } + + /** + * @returns string Success + * @throws ApiError + */ + public static postMemberValidate(data: MemberData['payloads']['PostMemberValidate'] = {}): CancelablePromise { + const { + + requestBody + } = data; + return __request(OpenAPI, { + method: 'POST', + url: '/umbraco/management/api/v1/member/validate', + body: requestBody, + mediaType: 'application/json', + responseHeader: 'Umb-Notifications', + errors: { + 400: `Bad Request`, + 401: `The resource is protected and requires an authentication token`, + 404: `Not Found`, + }, + }); + } + +} + +export class ModelsBuilderService { + + /** + * @returns string Success + * @throws ApiError + */ + public static postModelsBuilderBuild(): CancelablePromise { + + return __request(OpenAPI, { + method: 'POST', + url: '/umbraco/management/api/v1/models-builder/build', + responseHeader: 'Umb-Notifications', + errors: { + 401: `The resource is protected and requires an authentication token`, + 428: `Client Error`, + }, + }); + } + + /** + * @returns unknown Success + * @throws ApiError + */ + public static getModelsBuilderDashboard(): CancelablePromise { + + return __request(OpenAPI, { + method: 'GET', + url: '/umbraco/management/api/v1/models-builder/dashboard', + errors: { + 401: `The resource is protected and requires an authentication token`, + }, + }); + } + + /** + * @returns unknown Success + * @throws ApiError + */ + public static getModelsBuilderStatus(): CancelablePromise { + + return __request(OpenAPI, { + method: 'GET', + url: '/umbraco/management/api/v1/models-builder/status', + errors: { + 401: `The resource is protected and requires an authentication token`, + }, + }); + } + +} + +export class ObjectTypesService { + + /** + * @returns unknown Success + * @throws ApiError + */ + public static getObjectTypes(data: ObjectTypesData['payloads']['GetObjectTypes'] = {}): CancelablePromise { + const { + + skip, +take + } = data; + return __request(OpenAPI, { + method: 'GET', + url: '/umbraco/management/api/v1/object-types', + query: { + skip, take + }, + errors: { + 401: `The resource is protected and requires an authentication token`, + }, + }); + } + +} + +export class PackageService { + + /** + * @returns string Success + * @throws ApiError + */ + public static postPackageByNameRunMigration(data: PackageData['payloads']['PostPackageByNameRunMigration']): CancelablePromise { + const { + + name + } = data; + return __request(OpenAPI, { + method: 'POST', + url: '/umbraco/management/api/v1/package/{name}/run-migration', + path: { + name + }, + responseHeader: 'Umb-Notifications', + errors: { + 401: `The resource is protected and requires an authentication token`, + 404: `Not Found`, + 409: `Conflict`, + }, + }); + } + + /** + * @returns unknown Success + * @throws ApiError + */ + public static getPackageConfiguration(): CancelablePromise { + + return __request(OpenAPI, { + method: 'GET', + url: '/umbraco/management/api/v1/package/configuration', + errors: { + 401: `The resource is protected and requires an authentication token`, + }, + }); + } + + /** + * @returns unknown Success + * @throws ApiError + */ + public static getPackageCreated(data: PackageData['payloads']['GetPackageCreated'] = {}): CancelablePromise { + const { + + skip, +take + } = data; + return __request(OpenAPI, { + method: 'GET', + url: '/umbraco/management/api/v1/package/created', + query: { + skip, take + }, + errors: { + 401: `The resource is protected and requires an authentication token`, + }, + }); + } + + /** + * @returns string Created + * @throws ApiError + */ + public static postPackageCreated(data: PackageData['payloads']['PostPackageCreated'] = {}): CancelablePromise { + const { + + requestBody + } = data; + return __request(OpenAPI, { + method: 'POST', + url: '/umbraco/management/api/v1/package/created', + body: requestBody, + mediaType: 'application/json', + responseHeader: 'Umb-Generated-Resource', + errors: { + 400: `Bad Request`, + 401: `The resource is protected and requires an authentication token`, + 404: `Not Found`, + }, + }); + } + + /** + * @returns unknown Success + * @throws ApiError + */ + public static getPackageCreatedById(data: PackageData['payloads']['GetPackageCreatedById']): CancelablePromise { + const { + + id + } = data; + return __request(OpenAPI, { + method: 'GET', + url: '/umbraco/management/api/v1/package/created/{id}', + path: { + id + }, + errors: { + 401: `The resource is protected and requires an authentication token`, + 404: `Not Found`, + }, + }); + } + + /** + * @returns string Success + * @throws ApiError + */ + public static deletePackageCreatedById(data: PackageData['payloads']['DeletePackageCreatedById']): CancelablePromise { + const { + + id + } = data; + return __request(OpenAPI, { + method: 'DELETE', + url: '/umbraco/management/api/v1/package/created/{id}', + path: { + id + }, + responseHeader: 'Umb-Notifications', + errors: { + 401: `The resource is protected and requires an authentication token`, + 404: `Not Found`, + }, + }); + } + + /** + * @returns string Success + * @throws ApiError + */ + public static putPackageCreatedById(data: PackageData['payloads']['PutPackageCreatedById']): CancelablePromise { + const { + + id, +requestBody + } = data; + return __request(OpenAPI, { + method: 'PUT', + url: '/umbraco/management/api/v1/package/created/{id}', + path: { + id + }, + body: requestBody, + mediaType: 'application/json', + responseHeader: 'Umb-Notifications', + errors: { + 401: `The resource is protected and requires an authentication token`, + 404: `Not Found`, + }, + }); + } + + /** + * @returns unknown Success + * @throws ApiError + */ + public static getPackageCreatedByIdDownload(data: PackageData['payloads']['GetPackageCreatedByIdDownload']): CancelablePromise { + const { + + id + } = data; + return __request(OpenAPI, { + method: 'GET', + url: '/umbraco/management/api/v1/package/created/{id}/download', + path: { + id + }, + errors: { + 401: `The resource is protected and requires an authentication token`, + 404: `Not Found`, + }, + }); + } + + /** + * @returns unknown Success + * @throws ApiError + */ + public static getPackageMigrationStatus(data: PackageData['payloads']['GetPackageMigrationStatus'] = {}): CancelablePromise { + const { + + skip, +take + } = data; + return __request(OpenAPI, { + method: 'GET', + url: '/umbraco/management/api/v1/package/migration-status', + query: { + skip, take + }, + errors: { + 401: `The resource is protected and requires an authentication token`, + }, + }); + } + +} + +export class PartialViewService { + + /** + * @returns unknown Success + * @throws ApiError + */ + public static getItemPartialView(data: PartialViewData['payloads']['GetItemPartialView'] = {}): CancelablePromise { + const { + + path + } = data; + return __request(OpenAPI, { + method: 'GET', + url: '/umbraco/management/api/v1/item/partial-view', + query: { + path + }, + errors: { + 401: `The resource is protected and requires an authentication token`, + }, + }); + } + + /** + * @returns string Created + * @throws ApiError + */ + public static postPartialView(data: PartialViewData['payloads']['PostPartialView'] = {}): CancelablePromise { + const { + + requestBody + } = data; + return __request(OpenAPI, { + method: 'POST', + url: '/umbraco/management/api/v1/partial-view', + body: requestBody, + mediaType: 'application/json', + responseHeader: 'Umb-Generated-Resource', + errors: { + 400: `Bad Request`, + 401: `The resource is protected and requires an authentication token`, + 404: `Not Found`, + }, + }); + } + + /** + * @returns unknown Success + * @throws ApiError + */ + public static getPartialViewByPath(data: PartialViewData['payloads']['GetPartialViewByPath']): CancelablePromise { + const { + + path + } = data; + return __request(OpenAPI, { + method: 'GET', + url: '/umbraco/management/api/v1/partial-view/{path}', + path: { + path + }, + errors: { + 401: `The resource is protected and requires an authentication token`, + 404: `Not Found`, + }, + }); + } + + /** + * @returns string Success + * @throws ApiError + */ + public static deletePartialViewByPath(data: PartialViewData['payloads']['DeletePartialViewByPath']): CancelablePromise { + const { + + path + } = data; + return __request(OpenAPI, { + method: 'DELETE', + url: '/umbraco/management/api/v1/partial-view/{path}', + path: { + path + }, + responseHeader: 'Umb-Notifications', + errors: { + 400: `Bad Request`, + 401: `The resource is protected and requires an authentication token`, + 404: `Not Found`, + }, + }); + } + + /** + * @returns string Success + * @throws ApiError + */ + public static putPartialViewByPath(data: PartialViewData['payloads']['PutPartialViewByPath']): CancelablePromise { + const { + + path, +requestBody + } = data; + return __request(OpenAPI, { + method: 'PUT', + url: '/umbraco/management/api/v1/partial-view/{path}', + path: { + path + }, + body: requestBody, + mediaType: 'application/json', + responseHeader: 'Umb-Notifications', + errors: { + 400: `Bad Request`, + 401: `The resource is protected and requires an authentication token`, + 404: `Not Found`, + }, + }); + } + + /** + * @returns string Created + * @throws ApiError + */ + public static putPartialViewByPathRename(data: PartialViewData['payloads']['PutPartialViewByPathRename']): CancelablePromise { + const { + + path, +requestBody + } = data; + return __request(OpenAPI, { + method: 'PUT', + url: '/umbraco/management/api/v1/partial-view/{path}/rename', + path: { + path + }, + body: requestBody, + mediaType: 'application/json', + responseHeader: 'Umb-Generated-Resource', + errors: { + 400: `Bad Request`, + 401: `The resource is protected and requires an authentication token`, + 404: `Not Found`, + }, + }); + } + + /** + * @returns string Created + * @throws ApiError + */ + public static postPartialViewFolder(data: PartialViewData['payloads']['PostPartialViewFolder'] = {}): CancelablePromise { + const { + + requestBody + } = data; + return __request(OpenAPI, { + method: 'POST', + url: '/umbraco/management/api/v1/partial-view/folder', + body: requestBody, + mediaType: 'application/json', + responseHeader: 'Umb-Generated-Resource', + errors: { + 400: `Bad Request`, + 401: `The resource is protected and requires an authentication token`, + 404: `Not Found`, + }, + }); + } + + /** + * @returns unknown Success + * @throws ApiError + */ + public static getPartialViewFolderByPath(data: PartialViewData['payloads']['GetPartialViewFolderByPath']): CancelablePromise { + const { + + path + } = data; + return __request(OpenAPI, { + method: 'GET', + url: '/umbraco/management/api/v1/partial-view/folder/{path}', + path: { + path + }, + errors: { + 401: `The resource is protected and requires an authentication token`, + 404: `Not Found`, + }, + }); + } + + /** + * @returns string Success + * @throws ApiError + */ + public static deletePartialViewFolderByPath(data: PartialViewData['payloads']['DeletePartialViewFolderByPath']): CancelablePromise { + const { + + path + } = data; + return __request(OpenAPI, { + method: 'DELETE', + url: '/umbraco/management/api/v1/partial-view/folder/{path}', + path: { + path + }, + responseHeader: 'Umb-Notifications', + errors: { + 400: `Bad Request`, + 401: `The resource is protected and requires an authentication token`, + 404: `Not Found`, + }, + }); + } + + /** + * @returns unknown Success + * @throws ApiError + */ + public static getPartialViewSnippet(data: PartialViewData['payloads']['GetPartialViewSnippet'] = {}): CancelablePromise { + const { + + skip, +take + } = data; + return __request(OpenAPI, { + method: 'GET', + url: '/umbraco/management/api/v1/partial-view/snippet', + query: { + skip, take + }, + errors: { + 401: `The resource is protected and requires an authentication token`, + }, + }); + } + + /** + * @returns unknown Success + * @throws ApiError + */ + public static getPartialViewSnippetById(data: PartialViewData['payloads']['GetPartialViewSnippetById']): CancelablePromise { + const { + + id + } = data; + return __request(OpenAPI, { + method: 'GET', + url: '/umbraco/management/api/v1/partial-view/snippet/{id}', + path: { + id + }, + errors: { + 401: `The resource is protected and requires an authentication token`, + 404: `Not Found`, + }, + }); + } + + /** + * @returns unknown Success + * @throws ApiError + */ + public static getTreePartialViewAncestors(data: PartialViewData['payloads']['GetTreePartialViewAncestors'] = {}): CancelablePromise { + const { + + descendantPath + } = data; + return __request(OpenAPI, { + method: 'GET', + url: '/umbraco/management/api/v1/tree/partial-view/ancestors', + query: { + descendantPath + }, + errors: { + 401: `The resource is protected and requires an authentication token`, + }, + }); + } + + /** + * @returns unknown Success + * @throws ApiError + */ + public static getTreePartialViewChildren(data: PartialViewData['payloads']['GetTreePartialViewChildren'] = {}): CancelablePromise { + const { + + parentPath, +skip, +take + } = data; + return __request(OpenAPI, { + method: 'GET', + url: '/umbraco/management/api/v1/tree/partial-view/children', + query: { + parentPath, skip, take + }, + errors: { + 401: `The resource is protected and requires an authentication token`, + }, + }); + } + + /** + * @returns unknown Success + * @throws ApiError + */ + public static getTreePartialViewRoot(data: PartialViewData['payloads']['GetTreePartialViewRoot'] = {}): CancelablePromise { + const { + + skip, +take + } = data; + return __request(OpenAPI, { + method: 'GET', + url: '/umbraco/management/api/v1/tree/partial-view/root', + query: { + skip, take + }, + errors: { + 401: `The resource is protected and requires an authentication token`, + }, + }); + } + +} + +export class PreviewService { + + /** + * @returns string Success + * @throws ApiError + */ + public static deletePreview(): CancelablePromise { + + return __request(OpenAPI, { + method: 'DELETE', + url: '/umbraco/management/api/v1/preview', + responseHeader: 'Umb-Notifications', + errors: { + 401: `The resource is protected and requires an authentication token`, + }, + }); + } + + /** + * @returns string Success + * @throws ApiError + */ + public static postPreview(): CancelablePromise { + + return __request(OpenAPI, { + method: 'POST', + url: '/umbraco/management/api/v1/preview', + responseHeader: 'Umb-Notifications', + errors: { + 401: `The resource is protected and requires an authentication token`, + }, + }); + } + +} + +export class ProfilingService { + + /** + * @returns unknown Success + * @throws ApiError + */ + public static getProfilingStatus(): CancelablePromise { + + return __request(OpenAPI, { + method: 'GET', + url: '/umbraco/management/api/v1/profiling/status', + errors: { + 401: `The resource is protected and requires an authentication token`, + }, + }); + } + + /** + * @returns string Success + * @throws ApiError + */ + public static putProfilingStatus(data: ProfilingData['payloads']['PutProfilingStatus'] = {}): CancelablePromise { + const { + + requestBody + } = data; + return __request(OpenAPI, { + method: 'PUT', + url: '/umbraco/management/api/v1/profiling/status', + body: requestBody, + mediaType: 'application/json', + responseHeader: 'Umb-Notifications', + errors: { + 401: `The resource is protected and requires an authentication token`, + }, + }); + } + +} + +export class PropertyTypeService { + + /** + * @returns boolean Success + * @throws ApiError + */ + public static getPropertyTypeIsUsed(data: PropertyTypeData['payloads']['GetPropertyTypeIsUsed'] = {}): CancelablePromise { + const { + + contentTypeId, +propertyAlias + } = data; + return __request(OpenAPI, { + method: 'GET', + url: '/umbraco/management/api/v1/property-type/is-used', + query: { + contentTypeId, propertyAlias + }, + errors: { + 400: `Bad Request`, + 401: `The resource is protected and requires an authentication token`, + }, + }); + } + +} + +export class PublishedCacheService { + + /** + * @returns string Success + * @throws ApiError + */ + public static postPublishedCacheCollect(): CancelablePromise { + + return __request(OpenAPI, { + method: 'POST', + url: '/umbraco/management/api/v1/published-cache/collect', + responseHeader: 'Umb-Notifications', + errors: { + 401: `The resource is protected and requires an authentication token`, + }, + }); + } + + /** + * @returns string Success + * @throws ApiError + */ + public static postPublishedCacheRebuild(): CancelablePromise { + + return __request(OpenAPI, { + method: 'POST', + url: '/umbraco/management/api/v1/published-cache/rebuild', + responseHeader: 'Umb-Notifications', + errors: { + 401: `The resource is protected and requires an authentication token`, + }, + }); + } + + /** + * @returns string Success + * @throws ApiError + */ + public static postPublishedCacheReload(): CancelablePromise { + + return __request(OpenAPI, { + method: 'POST', + url: '/umbraco/management/api/v1/published-cache/reload', + responseHeader: 'Umb-Notifications', + errors: { + 401: `The resource is protected and requires an authentication token`, + }, + }); + } + + /** + * @returns string Success + * @throws ApiError + */ + public static getPublishedCacheStatus(): CancelablePromise { + + return __request(OpenAPI, { + method: 'GET', + url: '/umbraco/management/api/v1/published-cache/status', + errors: { + 401: `The resource is protected and requires an authentication token`, + }, + }); + } + +} + +export class RedirectManagementService { + + /** + * @returns unknown Success + * @throws ApiError + */ + public static getRedirectManagement(data: RedirectManagementData['payloads']['GetRedirectManagement'] = {}): CancelablePromise { + const { + + filter, +skip, +take + } = data; + return __request(OpenAPI, { + method: 'GET', + url: '/umbraco/management/api/v1/redirect-management', + query: { + filter, skip, take + }, + errors: { + 400: `Bad Request`, + 401: `The resource is protected and requires an authentication token`, + }, + }); + } + + /** + * @returns unknown Success + * @throws ApiError + */ + public static getRedirectManagementById(data: RedirectManagementData['payloads']['GetRedirectManagementById']): CancelablePromise { + const { + + id, +skip, +take + } = data; + return __request(OpenAPI, { + method: 'GET', + url: '/umbraco/management/api/v1/redirect-management/{id}', + path: { + id + }, + query: { + skip, take + }, + errors: { + 401: `The resource is protected and requires an authentication token`, + }, + }); + } + + /** + * @returns string Success + * @throws ApiError + */ + public static deleteRedirectManagementById(data: RedirectManagementData['payloads']['DeleteRedirectManagementById']): CancelablePromise { + const { + + id + } = data; + return __request(OpenAPI, { + method: 'DELETE', + url: '/umbraco/management/api/v1/redirect-management/{id}', + path: { + id + }, + responseHeader: 'Umb-Notifications', + errors: { + 401: `The resource is protected and requires an authentication token`, + }, + }); + } + + /** + * @returns unknown Success + * @throws ApiError + */ + public static getRedirectManagementStatus(): CancelablePromise { + + return __request(OpenAPI, { + method: 'GET', + url: '/umbraco/management/api/v1/redirect-management/status', + errors: { + 401: `The resource is protected and requires an authentication token`, + }, + }); + } + + /** + * @returns string Success + * @throws ApiError + */ + public static postRedirectManagementStatus(data: RedirectManagementData['payloads']['PostRedirectManagementStatus'] = {}): CancelablePromise { + const { + + status + } = data; + return __request(OpenAPI, { + method: 'POST', + url: '/umbraco/management/api/v1/redirect-management/status', + query: { + status + }, + responseHeader: 'Umb-Notifications', + errors: { + 401: `The resource is protected and requires an authentication token`, + }, + }); + } + +} + +export class RelationTypeService { + + /** + * @returns unknown Success + * @throws ApiError + */ + public static getItemRelationType(data: RelationTypeData['payloads']['GetItemRelationType'] = {}): CancelablePromise { + const { + + id + } = data; + return __request(OpenAPI, { + method: 'GET', + url: '/umbraco/management/api/v1/item/relation-type', + query: { + id + }, + errors: { + 401: `The resource is protected and requires an authentication token`, + }, + }); + } + + /** + * @returns unknown Success + * @throws ApiError + */ + public static getRelationType(data: RelationTypeData['payloads']['GetRelationType'] = {}): CancelablePromise { + const { + + skip, +take + } = data; + return __request(OpenAPI, { + method: 'GET', + url: '/umbraco/management/api/v1/relation-type', + query: { + skip, take + }, + errors: { + 401: `The resource is protected and requires an authentication token`, + }, + }); + } + + /** + * @returns unknown Success + * @throws ApiError + */ + public static getRelationTypeById(data: RelationTypeData['payloads']['GetRelationTypeById']): CancelablePromise { + const { + + id + } = data; + return __request(OpenAPI, { + method: 'GET', + url: '/umbraco/management/api/v1/relation-type/{id}', + path: { + id + }, + errors: { + 401: `The resource is protected and requires an authentication token`, + 404: `Not Found`, + }, + }); + } + +} + +export class RelationService { + + /** + * @returns unknown Success + * @throws ApiError + */ + public static getRelationTypeById(data: RelationData['payloads']['GetRelationTypeById']): CancelablePromise { + const { + + id, +skip, +take + } = data; + return __request(OpenAPI, { + method: 'GET', + url: '/umbraco/management/api/v1/relation/type/{id}', + path: { + id + }, + query: { + skip, take + }, + errors: { + 401: `The resource is protected and requires an authentication token`, + 404: `Not Found`, + }, + }); + } + +} + +export class ScriptService { + + /** + * @returns unknown Success + * @throws ApiError + */ + public static getItemScript(data: ScriptData['payloads']['GetItemScript'] = {}): CancelablePromise { + const { + + path + } = data; + return __request(OpenAPI, { + method: 'GET', + url: '/umbraco/management/api/v1/item/script', + query: { + path + }, + errors: { + 401: `The resource is protected and requires an authentication token`, + }, + }); + } + + /** + * @returns string Created + * @throws ApiError + */ + public static postScript(data: ScriptData['payloads']['PostScript'] = {}): CancelablePromise { + const { + + requestBody + } = data; + return __request(OpenAPI, { + method: 'POST', + url: '/umbraco/management/api/v1/script', + body: requestBody, + mediaType: 'application/json', + responseHeader: 'Umb-Generated-Resource', + errors: { + 400: `Bad Request`, + 401: `The resource is protected and requires an authentication token`, + 404: `Not Found`, + }, + }); + } + + /** + * @returns unknown Success + * @throws ApiError + */ + public static getScriptByPath(data: ScriptData['payloads']['GetScriptByPath']): CancelablePromise { + const { + + path + } = data; + return __request(OpenAPI, { + method: 'GET', + url: '/umbraco/management/api/v1/script/{path}', + path: { + path + }, + errors: { + 401: `The resource is protected and requires an authentication token`, + 404: `Not Found`, + }, + }); + } + + /** + * @returns string Success + * @throws ApiError + */ + public static deleteScriptByPath(data: ScriptData['payloads']['DeleteScriptByPath']): CancelablePromise { + const { + + path + } = data; + return __request(OpenAPI, { + method: 'DELETE', + url: '/umbraco/management/api/v1/script/{path}', + path: { + path + }, + responseHeader: 'Umb-Notifications', + errors: { + 400: `Bad Request`, + 401: `The resource is protected and requires an authentication token`, + 404: `Not Found`, + }, + }); + } + + /** + * @returns string Success + * @throws ApiError + */ + public static putScriptByPath(data: ScriptData['payloads']['PutScriptByPath']): CancelablePromise { + const { + + path, +requestBody + } = data; + return __request(OpenAPI, { + method: 'PUT', + url: '/umbraco/management/api/v1/script/{path}', + path: { + path + }, + body: requestBody, + mediaType: 'application/json', + responseHeader: 'Umb-Notifications', + errors: { + 400: `Bad Request`, + 401: `The resource is protected and requires an authentication token`, + 404: `Not Found`, + }, + }); + } + + /** + * @returns string Created + * @throws ApiError + */ + public static putScriptByPathRename(data: ScriptData['payloads']['PutScriptByPathRename']): CancelablePromise { + const { + + path, +requestBody + } = data; + return __request(OpenAPI, { + method: 'PUT', + url: '/umbraco/management/api/v1/script/{path}/rename', + path: { + path + }, + body: requestBody, + mediaType: 'application/json', + responseHeader: 'Umb-Generated-Resource', + errors: { + 400: `Bad Request`, + 401: `The resource is protected and requires an authentication token`, + 404: `Not Found`, + }, + }); + } + + /** + * @returns string Created + * @throws ApiError + */ + public static postScriptFolder(data: ScriptData['payloads']['PostScriptFolder'] = {}): CancelablePromise { + const { + + requestBody + } = data; + return __request(OpenAPI, { + method: 'POST', + url: '/umbraco/management/api/v1/script/folder', + body: requestBody, + mediaType: 'application/json', + responseHeader: 'Umb-Generated-Resource', + errors: { + 400: `Bad Request`, + 401: `The resource is protected and requires an authentication token`, + 404: `Not Found`, + }, + }); + } + + /** + * @returns unknown Success + * @throws ApiError + */ + public static getScriptFolderByPath(data: ScriptData['payloads']['GetScriptFolderByPath']): CancelablePromise { + const { + + path + } = data; + return __request(OpenAPI, { + method: 'GET', + url: '/umbraco/management/api/v1/script/folder/{path}', + path: { + path + }, + errors: { + 401: `The resource is protected and requires an authentication token`, + 404: `Not Found`, + }, + }); + } + + /** + * @returns string Success + * @throws ApiError + */ + public static deleteScriptFolderByPath(data: ScriptData['payloads']['DeleteScriptFolderByPath']): CancelablePromise { + const { + + path + } = data; + return __request(OpenAPI, { + method: 'DELETE', + url: '/umbraco/management/api/v1/script/folder/{path}', + path: { + path + }, + responseHeader: 'Umb-Notifications', + errors: { + 400: `Bad Request`, + 401: `The resource is protected and requires an authentication token`, + 404: `Not Found`, + }, + }); + } + + /** + * @returns unknown Success + * @throws ApiError + */ + public static getTreeScriptAncestors(data: ScriptData['payloads']['GetTreeScriptAncestors'] = {}): CancelablePromise { + const { + + descendantPath + } = data; + return __request(OpenAPI, { + method: 'GET', + url: '/umbraco/management/api/v1/tree/script/ancestors', + query: { + descendantPath + }, + errors: { + 401: `The resource is protected and requires an authentication token`, + }, + }); + } + + /** + * @returns unknown Success + * @throws ApiError + */ + public static getTreeScriptChildren(data: ScriptData['payloads']['GetTreeScriptChildren'] = {}): CancelablePromise { + const { + + parentPath, +skip, +take + } = data; + return __request(OpenAPI, { + method: 'GET', + url: '/umbraco/management/api/v1/tree/script/children', + query: { + parentPath, skip, take + }, + errors: { + 401: `The resource is protected and requires an authentication token`, + }, + }); + } + + /** + * @returns unknown Success + * @throws ApiError + */ + public static getTreeScriptRoot(data: ScriptData['payloads']['GetTreeScriptRoot'] = {}): CancelablePromise { + const { + + skip, +take + } = data; + return __request(OpenAPI, { + method: 'GET', + url: '/umbraco/management/api/v1/tree/script/root', + query: { + skip, take + }, + errors: { + 401: `The resource is protected and requires an authentication token`, + }, + }); + } + +} + +export class SearcherService { + + /** + * @returns unknown Success + * @throws ApiError + */ + public static getSearcher(data: SearcherData['payloads']['GetSearcher'] = {}): CancelablePromise { + const { + + skip, +take + } = data; + return __request(OpenAPI, { + method: 'GET', + url: '/umbraco/management/api/v1/searcher', + query: { + skip, take + }, + errors: { + 401: `The resource is protected and requires an authentication token`, + }, + }); + } + + /** + * @returns unknown Success + * @throws ApiError + */ + public static getSearcherBySearcherNameQuery(data: SearcherData['payloads']['GetSearcherBySearcherNameQuery']): CancelablePromise { + const { + + searcherName, +term, +skip, +take + } = data; + return __request(OpenAPI, { + method: 'GET', + url: '/umbraco/management/api/v1/searcher/{searcherName}/query', + path: { + searcherName + }, + query: { + term, skip, take + }, + errors: { + 401: `The resource is protected and requires an authentication token`, + 404: `Not Found`, + }, + }); + } + +} + +export class SecurityService { + + /** + * @returns unknown Success + * @throws ApiError + */ + public static getSecurityConfiguration(): CancelablePromise { + + return __request(OpenAPI, { + method: 'GET', + url: '/umbraco/management/api/v1/security/configuration', + errors: { + 401: `The resource is protected and requires an authentication token`, + }, + }); + } + + /** + * @returns string Success + * @throws ApiError + */ + public static postSecurityForgotPassword(data: SecurityData['payloads']['PostSecurityForgotPassword'] = {}): CancelablePromise { + const { + + requestBody + } = data; + return __request(OpenAPI, { + method: 'POST', + url: '/umbraco/management/api/v1/security/forgot-password', + body: requestBody, + mediaType: 'application/json', + responseHeader: 'Umb-Notifications', + errors: { + 400: `Bad Request`, + 401: `The resource is protected and requires an authentication token`, + }, + }); + } + + /** + * @returns string No Content + * @throws ApiError + */ + public static postSecurityForgotPasswordReset(data: SecurityData['payloads']['PostSecurityForgotPasswordReset'] = {}): CancelablePromise { + const { + + requestBody + } = data; + return __request(OpenAPI, { + method: 'POST', + url: '/umbraco/management/api/v1/security/forgot-password/reset', + body: requestBody, + mediaType: 'application/json', + responseHeader: 'Umb-Notifications', + errors: { + 400: `Bad Request`, + 401: `The resource is protected and requires an authentication token`, + 404: `Not Found`, + }, + }); + } + + /** + * @returns unknown Success + * @throws ApiError + */ + public static postSecurityForgotPasswordVerify(data: SecurityData['payloads']['PostSecurityForgotPasswordVerify'] = {}): CancelablePromise { + const { + + requestBody + } = data; + return __request(OpenAPI, { + method: 'POST', + url: '/umbraco/management/api/v1/security/forgot-password/verify', + body: requestBody, + mediaType: 'application/json', + errors: { + 400: `Bad Request`, + 404: `Not Found`, + }, + }); + } + +} + +export class ServerService { + + /** + * @returns unknown Success + * @throws ApiError + */ + public static getServerConfiguration(): CancelablePromise { + + return __request(OpenAPI, { + method: 'GET', + url: '/umbraco/management/api/v1/server/configuration', + errors: { + 401: `The resource is protected and requires an authentication token`, + }, + }); + } + + /** + * @returns unknown Success + * @throws ApiError + */ + public static getServerInformation(): CancelablePromise { + + return __request(OpenAPI, { + method: 'GET', + url: '/umbraco/management/api/v1/server/information', + errors: { + 401: `The resource is protected and requires an authentication token`, + }, + }); + } + + /** + * @returns unknown Success + * @throws ApiError + */ + public static getServerStatus(): CancelablePromise { + + return __request(OpenAPI, { + method: 'GET', + url: '/umbraco/management/api/v1/server/status', + errors: { + 400: `Bad Request`, + }, + }); + } + + /** + * @returns unknown Success + * @throws ApiError + */ + public static getServerTroubleshooting(): CancelablePromise { + + return __request(OpenAPI, { + method: 'GET', + url: '/umbraco/management/api/v1/server/troubleshooting', + errors: { + 401: `The resource is protected and requires an authentication token`, + }, + }); + } + +} + +export class StaticFileService { + + /** + * @returns unknown Success + * @throws ApiError + */ + public static getItemStaticFile(data: StaticFileData['payloads']['GetItemStaticFile'] = {}): CancelablePromise { + const { + + path + } = data; + return __request(OpenAPI, { + method: 'GET', + url: '/umbraco/management/api/v1/item/static-file', + query: { + path + }, + errors: { + 401: `The resource is protected and requires an authentication token`, + }, + }); + } + + /** + * @returns unknown Success + * @throws ApiError + */ + public static getTreeStaticFileAncestors(data: StaticFileData['payloads']['GetTreeStaticFileAncestors'] = {}): CancelablePromise { + const { + + descendantPath + } = data; + return __request(OpenAPI, { + method: 'GET', + url: '/umbraco/management/api/v1/tree/static-file/ancestors', + query: { + descendantPath + }, + errors: { + 401: `The resource is protected and requires an authentication token`, + }, + }); + } + + /** + * @returns unknown Success + * @throws ApiError + */ + public static getTreeStaticFileChildren(data: StaticFileData['payloads']['GetTreeStaticFileChildren'] = {}): CancelablePromise { + const { + + parentPath, +skip, +take + } = data; + return __request(OpenAPI, { + method: 'GET', + url: '/umbraco/management/api/v1/tree/static-file/children', + query: { + parentPath, skip, take + }, + errors: { + 401: `The resource is protected and requires an authentication token`, + }, + }); + } + + /** + * @returns unknown Success + * @throws ApiError + */ + public static getTreeStaticFileRoot(data: StaticFileData['payloads']['GetTreeStaticFileRoot'] = {}): CancelablePromise { + const { + + skip, +take + } = data; + return __request(OpenAPI, { + method: 'GET', + url: '/umbraco/management/api/v1/tree/static-file/root', + query: { + skip, take + }, + errors: { + 401: `The resource is protected and requires an authentication token`, + }, + }); + } + +} + +export class StylesheetService { + + /** + * @returns unknown Success + * @throws ApiError + */ + public static getItemStylesheet(data: StylesheetData['payloads']['GetItemStylesheet'] = {}): CancelablePromise { + const { + + path + } = data; + return __request(OpenAPI, { + method: 'GET', + url: '/umbraco/management/api/v1/item/stylesheet', + query: { + path + }, + errors: { + 401: `The resource is protected and requires an authentication token`, + }, + }); + } + + /** + * @returns string Created + * @throws ApiError + */ + public static postStylesheet(data: StylesheetData['payloads']['PostStylesheet'] = {}): CancelablePromise { + const { + + requestBody + } = data; + return __request(OpenAPI, { + method: 'POST', + url: '/umbraco/management/api/v1/stylesheet', + body: requestBody, + mediaType: 'application/json', + responseHeader: 'Umb-Generated-Resource', + errors: { + 400: `Bad Request`, + 401: `The resource is protected and requires an authentication token`, + 404: `Not Found`, + }, + }); + } + + /** + * @returns unknown Success + * @throws ApiError + */ + public static getStylesheetByPath(data: StylesheetData['payloads']['GetStylesheetByPath']): CancelablePromise { + const { + + path + } = data; + return __request(OpenAPI, { + method: 'GET', + url: '/umbraco/management/api/v1/stylesheet/{path}', + path: { + path + }, + errors: { + 401: `The resource is protected and requires an authentication token`, + 404: `Not Found`, + }, + }); + } + + /** + * @returns string Success + * @throws ApiError + */ + public static deleteStylesheetByPath(data: StylesheetData['payloads']['DeleteStylesheetByPath']): CancelablePromise { + const { + + path + } = data; + return __request(OpenAPI, { + method: 'DELETE', + url: '/umbraco/management/api/v1/stylesheet/{path}', + path: { + path + }, + responseHeader: 'Umb-Notifications', + errors: { + 400: `Bad Request`, + 401: `The resource is protected and requires an authentication token`, + 404: `Not Found`, + }, + }); + } + + /** + * @returns string Success + * @throws ApiError + */ + public static putStylesheetByPath(data: StylesheetData['payloads']['PutStylesheetByPath']): CancelablePromise { + const { + + path, +requestBody + } = data; + return __request(OpenAPI, { + method: 'PUT', + url: '/umbraco/management/api/v1/stylesheet/{path}', + path: { + path + }, + body: requestBody, + mediaType: 'application/json', + responseHeader: 'Umb-Notifications', + errors: { + 400: `Bad Request`, + 401: `The resource is protected and requires an authentication token`, + 404: `Not Found`, + }, + }); + } + + /** + * @returns string Created + * @throws ApiError + */ + public static putStylesheetByPathRename(data: StylesheetData['payloads']['PutStylesheetByPathRename']): CancelablePromise { + const { + + path, +requestBody + } = data; + return __request(OpenAPI, { + method: 'PUT', + url: '/umbraco/management/api/v1/stylesheet/{path}/rename', + path: { + path + }, + body: requestBody, + mediaType: 'application/json', + responseHeader: 'Umb-Generated-Resource', + errors: { + 400: `Bad Request`, + 401: `The resource is protected and requires an authentication token`, + 404: `Not Found`, + }, + }); + } + + /** + * @returns string Created + * @throws ApiError + */ + public static postStylesheetFolder(data: StylesheetData['payloads']['PostStylesheetFolder'] = {}): CancelablePromise { + const { + + requestBody + } = data; + return __request(OpenAPI, { + method: 'POST', + url: '/umbraco/management/api/v1/stylesheet/folder', + body: requestBody, + mediaType: 'application/json', + responseHeader: 'Umb-Generated-Resource', + errors: { + 400: `Bad Request`, + 401: `The resource is protected and requires an authentication token`, + 404: `Not Found`, + }, + }); + } + + /** + * @returns unknown Success + * @throws ApiError + */ + public static getStylesheetFolderByPath(data: StylesheetData['payloads']['GetStylesheetFolderByPath']): CancelablePromise { + const { + + path + } = data; + return __request(OpenAPI, { + method: 'GET', + url: '/umbraco/management/api/v1/stylesheet/folder/{path}', + path: { + path + }, + errors: { + 401: `The resource is protected and requires an authentication token`, + 404: `Not Found`, + }, + }); + } + + /** + * @returns string Success + * @throws ApiError + */ + public static deleteStylesheetFolderByPath(data: StylesheetData['payloads']['DeleteStylesheetFolderByPath']): CancelablePromise { + const { + + path + } = data; + return __request(OpenAPI, { + method: 'DELETE', + url: '/umbraco/management/api/v1/stylesheet/folder/{path}', + path: { + path + }, + responseHeader: 'Umb-Notifications', + errors: { + 400: `Bad Request`, + 401: `The resource is protected and requires an authentication token`, + 404: `Not Found`, + }, + }); + } + + /** + * @returns unknown Success + * @throws ApiError + */ + public static getTreeStylesheetAncestors(data: StylesheetData['payloads']['GetTreeStylesheetAncestors'] = {}): CancelablePromise { + const { + + descendantPath + } = data; + return __request(OpenAPI, { + method: 'GET', + url: '/umbraco/management/api/v1/tree/stylesheet/ancestors', + query: { + descendantPath + }, + errors: { + 401: `The resource is protected and requires an authentication token`, + }, + }); + } + + /** + * @returns unknown Success + * @throws ApiError + */ + public static getTreeStylesheetChildren(data: StylesheetData['payloads']['GetTreeStylesheetChildren'] = {}): CancelablePromise { + const { + + parentPath, +skip, +take + } = data; + return __request(OpenAPI, { + method: 'GET', + url: '/umbraco/management/api/v1/tree/stylesheet/children', + query: { + parentPath, skip, take + }, + errors: { + 401: `The resource is protected and requires an authentication token`, + }, + }); + } + + /** + * @returns unknown Success + * @throws ApiError + */ + public static getTreeStylesheetRoot(data: StylesheetData['payloads']['GetTreeStylesheetRoot'] = {}): CancelablePromise { + const { + + skip, +take + } = data; + return __request(OpenAPI, { + method: 'GET', + url: '/umbraco/management/api/v1/tree/stylesheet/root', + query: { + skip, take + }, + errors: { + 401: `The resource is protected and requires an authentication token`, + }, + }); + } + +} + +export class TagService { + + /** + * @returns unknown Success + * @throws ApiError + */ + public static getTag(data: TagData['payloads']['GetTag'] = {}): CancelablePromise { + const { + + query, +tagGroup, +culture, +skip, +take + } = data; + return __request(OpenAPI, { + method: 'GET', + url: '/umbraco/management/api/v1/tag', + query: { + query, tagGroup, culture, skip, take + }, + errors: { + 401: `The resource is protected and requires an authentication token`, + }, + }); + } + +} + +export class TelemetryService { + + /** + * @returns unknown Success + * @throws ApiError + */ + public static getTelemetry(data: TelemetryData['payloads']['GetTelemetry'] = {}): CancelablePromise { + const { + + skip, +take + } = data; + return __request(OpenAPI, { + method: 'GET', + url: '/umbraco/management/api/v1/telemetry', + query: { + skip, take + }, + errors: { + 401: `The resource is protected and requires an authentication token`, + }, + }); + } + + /** + * @returns unknown Success + * @throws ApiError + */ + public static getTelemetryLevel(): CancelablePromise { + + return __request(OpenAPI, { + method: 'GET', + url: '/umbraco/management/api/v1/telemetry/level', + errors: { + 401: `The resource is protected and requires an authentication token`, + }, + }); + } + + /** + * @returns string Success + * @throws ApiError + */ + public static postTelemetryLevel(data: TelemetryData['payloads']['PostTelemetryLevel'] = {}): CancelablePromise { + const { + + requestBody + } = data; + return __request(OpenAPI, { + method: 'POST', + url: '/umbraco/management/api/v1/telemetry/level', + body: requestBody, + mediaType: 'application/json', + responseHeader: 'Umb-Notifications', + errors: { + 400: `Bad Request`, + 401: `The resource is protected and requires an authentication token`, + }, + }); + } + +} + +export class TemplateService { + + /** + * @returns unknown Success + * @throws ApiError + */ + public static getItemTemplate(data: TemplateData['payloads']['GetItemTemplate'] = {}): CancelablePromise { + const { + + id + } = data; + return __request(OpenAPI, { + method: 'GET', + url: '/umbraco/management/api/v1/item/template', + query: { + id + }, + errors: { + 401: `The resource is protected and requires an authentication token`, + }, + }); + } + + /** + * @returns unknown Success + * @throws ApiError + */ + public static getItemTemplateSearch(data: TemplateData['payloads']['GetItemTemplateSearch'] = {}): CancelablePromise { + const { + + query, +skip, +take + } = data; + return __request(OpenAPI, { + method: 'GET', + url: '/umbraco/management/api/v1/item/template/search', + query: { + query, skip, take + }, + errors: { + 401: `The resource is protected and requires an authentication token`, + }, + }); + } + + /** + * @returns string Created + * @throws ApiError + */ + public static postTemplate(data: TemplateData['payloads']['PostTemplate'] = {}): CancelablePromise { + const { + + requestBody + } = data; + return __request(OpenAPI, { + method: 'POST', + url: '/umbraco/management/api/v1/template', + body: requestBody, + mediaType: 'application/json', + responseHeader: 'Umb-Generated-Resource', + errors: { + 400: `Bad Request`, + 401: `The resource is protected and requires an authentication token`, + 404: `Not Found`, + }, + }); + } + + /** + * @returns unknown Success + * @throws ApiError + */ + public static getTemplateById(data: TemplateData['payloads']['GetTemplateById']): CancelablePromise { + const { + + id + } = data; + return __request(OpenAPI, { + method: 'GET', + url: '/umbraco/management/api/v1/template/{id}', + path: { + id + }, + errors: { + 401: `The resource is protected and requires an authentication token`, + 404: `Not Found`, + }, + }); + } + + /** + * @returns string Success + * @throws ApiError + */ + public static deleteTemplateById(data: TemplateData['payloads']['DeleteTemplateById']): CancelablePromise { + const { + + id + } = data; + return __request(OpenAPI, { + method: 'DELETE', + url: '/umbraco/management/api/v1/template/{id}', + path: { + id + }, + responseHeader: 'Umb-Notifications', + errors: { + 400: `Bad Request`, + 401: `The resource is protected and requires an authentication token`, + 404: `Not Found`, + }, + }); + } + + /** + * @returns string Success + * @throws ApiError + */ + public static putTemplateById(data: TemplateData['payloads']['PutTemplateById']): CancelablePromise { + const { + + id, +requestBody + } = data; + return __request(OpenAPI, { + method: 'PUT', + url: '/umbraco/management/api/v1/template/{id}', + path: { + id + }, + body: requestBody, + mediaType: 'application/json', + responseHeader: 'Umb-Notifications', + errors: { + 400: `Bad Request`, + 401: `The resource is protected and requires an authentication token`, + 404: `Not Found`, + }, + }); + } + + /** + * @returns unknown Success + * @throws ApiError + */ + public static getTemplateConfiguration(): CancelablePromise { + + return __request(OpenAPI, { + method: 'GET', + url: '/umbraco/management/api/v1/template/configuration', + errors: { + 401: `The resource is protected and requires an authentication token`, + }, + }); + } + + /** + * @returns unknown Success + * @throws ApiError + */ + public static postTemplateQueryExecute(data: TemplateData['payloads']['PostTemplateQueryExecute'] = {}): CancelablePromise { + const { + + requestBody + } = data; + return __request(OpenAPI, { + method: 'POST', + url: '/umbraco/management/api/v1/template/query/execute', + body: requestBody, + mediaType: 'application/json', + errors: { + 401: `The resource is protected and requires an authentication token`, + }, + }); + } + + /** + * @returns unknown Success + * @throws ApiError + */ + public static getTemplateQuerySettings(): CancelablePromise { + + return __request(OpenAPI, { + method: 'GET', + url: '/umbraco/management/api/v1/template/query/settings', + errors: { + 401: `The resource is protected and requires an authentication token`, + }, + }); + } + + /** + * @returns unknown Success + * @throws ApiError + */ + public static getTreeTemplateAncestors(data: TemplateData['payloads']['GetTreeTemplateAncestors'] = {}): CancelablePromise { + const { + + descendantId + } = data; + return __request(OpenAPI, { + method: 'GET', + url: '/umbraco/management/api/v1/tree/template/ancestors', + query: { + descendantId + }, + errors: { + 401: `The resource is protected and requires an authentication token`, + }, + }); + } + + /** + * @returns unknown Success + * @throws ApiError + */ + public static getTreeTemplateChildren(data: TemplateData['payloads']['GetTreeTemplateChildren'] = {}): CancelablePromise { + const { + + parentId, +skip, +take + } = data; + return __request(OpenAPI, { + method: 'GET', + url: '/umbraco/management/api/v1/tree/template/children', + query: { + parentId, skip, take + }, + errors: { + 401: `The resource is protected and requires an authentication token`, + }, + }); + } + + /** + * @returns unknown Success + * @throws ApiError + */ + public static getTreeTemplateRoot(data: TemplateData['payloads']['GetTreeTemplateRoot'] = {}): CancelablePromise { + const { + + skip, +take + } = data; + return __request(OpenAPI, { + method: 'GET', + url: '/umbraco/management/api/v1/tree/template/root', + query: { + skip, take + }, + errors: { + 401: `The resource is protected and requires an authentication token`, + }, + }); + } + +} + +export class TemporaryFileService { + + /** + * @returns string Created + * @throws ApiError + */ + public static postTemporaryFile(data: TemporaryFileData['payloads']['PostTemporaryFile'] = {}): CancelablePromise { + const { + + formData + } = data; + return __request(OpenAPI, { + method: 'POST', + url: '/umbraco/management/api/v1/temporary-file', + formData: formData, + mediaType: 'multipart/form-data', + responseHeader: 'Umb-Generated-Resource', + errors: { + 400: `Bad Request`, + 401: `The resource is protected and requires an authentication token`, + }, + }); + } + + /** + * @returns unknown Success + * @throws ApiError + */ + public static getTemporaryFileById(data: TemporaryFileData['payloads']['GetTemporaryFileById']): CancelablePromise { + const { + + id + } = data; + return __request(OpenAPI, { + method: 'GET', + url: '/umbraco/management/api/v1/temporary-file/{id}', + path: { + id + }, + errors: { + 400: `Bad Request`, + 401: `The resource is protected and requires an authentication token`, + 404: `Not Found`, + }, + }); + } + + /** + * @returns string Success + * @throws ApiError + */ + public static deleteTemporaryFileById(data: TemporaryFileData['payloads']['DeleteTemporaryFileById']): CancelablePromise { + const { + + id + } = data; + return __request(OpenAPI, { + method: 'DELETE', + url: '/umbraco/management/api/v1/temporary-file/{id}', + path: { + id + }, + responseHeader: 'Umb-Notifications', + errors: { + 400: `Bad Request`, + 401: `The resource is protected and requires an authentication token`, + 404: `Not Found`, + }, + }); + } + + /** + * @returns unknown Success + * @throws ApiError + */ + public static getTemporaryFileConfiguration(): CancelablePromise { + + return __request(OpenAPI, { + method: 'GET', + url: '/umbraco/management/api/v1/temporary-file/configuration', + errors: { + 401: `The resource is protected and requires an authentication token`, + }, + }); + } + +} + +export class UpgradeService { + + /** + * @returns string Success + * @throws ApiError + */ + public static postUpgradeAuthorize(): CancelablePromise { + + return __request(OpenAPI, { + method: 'POST', + url: '/umbraco/management/api/v1/upgrade/authorize', + responseHeader: 'Umb-Notifications', + errors: { + 401: `The resource is protected and requires an authentication token`, + 428: `Client Error`, + 500: `Server Error`, + }, + }); + } + + /** + * @returns unknown Success + * @throws ApiError + */ + public static getUpgradeSettings(): CancelablePromise { + + return __request(OpenAPI, { + method: 'GET', + url: '/umbraco/management/api/v1/upgrade/settings', + errors: { + 401: `The resource is protected and requires an authentication token`, + 428: `Client Error`, + }, + }); + } + +} + +export class UserDataService { + + /** + * @returns string Created + * @throws ApiError + */ + public static postUserData(data: UserDataData['payloads']['PostUserData'] = {}): CancelablePromise { + const { + + requestBody + } = data; + return __request(OpenAPI, { + method: 'POST', + url: '/umbraco/management/api/v1/user-data', + body: requestBody, + mediaType: 'application/json', + responseHeader: 'Umb-Generated-Resource', + errors: { + 400: `Bad Request`, + 401: `The resource is protected and requires an authentication token`, + 404: `Not Found`, + }, + }); + } + + /** + * @returns string Success + * @throws ApiError + */ + public static putUserData(data: UserDataData['payloads']['PutUserData'] = {}): CancelablePromise { + const { + + requestBody + } = data; + return __request(OpenAPI, { + method: 'PUT', + url: '/umbraco/management/api/v1/user-data', + body: requestBody, + mediaType: 'application/json', + responseHeader: 'Umb-Notifications', + errors: { + 400: `Bad Request`, + 401: `The resource is protected and requires an authentication token`, + 404: `Not Found`, + }, + }); + } + + /** + * @returns unknown Success + * @throws ApiError + */ + public static getUserData(data: UserDataData['payloads']['GetUserData'] = {}): CancelablePromise { + const { + + groups, +identifiers, +skip, +take + } = data; + return __request(OpenAPI, { + method: 'GET', + url: '/umbraco/management/api/v1/user-data', + query: { + groups, identifiers, skip, take + }, + errors: { + 401: `The resource is protected and requires an authentication token`, + }, + }); + } + + /** + * @returns unknown Success + * @throws ApiError + */ + public static getUserDataById(data: UserDataData['payloads']['GetUserDataById']): CancelablePromise { + const { + + id + } = data; + return __request(OpenAPI, { + method: 'GET', + url: '/umbraco/management/api/v1/user-data/{id}', + path: { + id + }, + errors: { + 401: `The resource is protected and requires an authentication token`, + 404: `Not Found`, + }, + }); + } + +} + +export class UserGroupService { + + /** + * @returns unknown Success + * @throws ApiError + */ + public static getItemUserGroup(data: UserGroupData['payloads']['GetItemUserGroup'] = {}): CancelablePromise { + const { + + id + } = data; + return __request(OpenAPI, { + method: 'GET', + url: '/umbraco/management/api/v1/item/user-group', + query: { + id + }, + errors: { + 401: `The resource is protected and requires an authentication token`, + }, + }); + } + + /** + * @returns string Success + * @throws ApiError + */ + public static deleteUserGroup(data: UserGroupData['payloads']['DeleteUserGroup'] = {}): CancelablePromise { + const { + + requestBody + } = data; + return __request(OpenAPI, { + method: 'DELETE', + url: '/umbraco/management/api/v1/user-group', + body: requestBody, + mediaType: 'application/json', + responseHeader: 'Umb-Notifications', + errors: { + 401: `The resource is protected and requires an authentication token`, + 403: `The authenticated user do not have access to this resource`, + 404: `Not Found`, + }, + }); + } + + /** + * @returns string Created + * @throws ApiError + */ + public static postUserGroup(data: UserGroupData['payloads']['PostUserGroup'] = {}): CancelablePromise { + const { + + requestBody + } = data; + return __request(OpenAPI, { + method: 'POST', + url: '/umbraco/management/api/v1/user-group', + body: requestBody, + mediaType: 'application/json', + responseHeader: 'Umb-Generated-Resource', + errors: { + 400: `Bad Request`, + 401: `The resource is protected and requires an authentication token`, + }, + }); + } + + /** + * @returns unknown Success + * @throws ApiError + */ + public static getUserGroup(data: UserGroupData['payloads']['GetUserGroup'] = {}): CancelablePromise { + const { + + skip, +take + } = data; + return __request(OpenAPI, { + method: 'GET', + url: '/umbraco/management/api/v1/user-group', + query: { + skip, take + }, + errors: { + 401: `The resource is protected and requires an authentication token`, + }, + }); + } + + /** + * @returns unknown Success + * @throws ApiError + */ + public static getUserGroupById(data: UserGroupData['payloads']['GetUserGroupById']): CancelablePromise { + const { + + id + } = data; + return __request(OpenAPI, { + method: 'GET', + url: '/umbraco/management/api/v1/user-group/{id}', + path: { + id + }, + errors: { + 401: `The resource is protected and requires an authentication token`, + 403: `The authenticated user do not have access to this resource`, + 404: `Not Found`, + }, + }); + } + + /** + * @returns string Success + * @throws ApiError + */ + public static deleteUserGroupById(data: UserGroupData['payloads']['DeleteUserGroupById']): CancelablePromise { + const { + + id + } = data; + return __request(OpenAPI, { + method: 'DELETE', + url: '/umbraco/management/api/v1/user-group/{id}', + path: { + id + }, + responseHeader: 'Umb-Notifications', + errors: { + 401: `The resource is protected and requires an authentication token`, + 403: `The authenticated user do not have access to this resource`, + 404: `Not Found`, + }, + }); + } + + /** + * @returns string Success + * @throws ApiError + */ + public static putUserGroupById(data: UserGroupData['payloads']['PutUserGroupById']): CancelablePromise { + const { + + id, +requestBody + } = data; + return __request(OpenAPI, { + method: 'PUT', + url: '/umbraco/management/api/v1/user-group/{id}', + path: { + id + }, + body: requestBody, + mediaType: 'application/json', + responseHeader: 'Umb-Notifications', + errors: { + 401: `The resource is protected and requires an authentication token`, + 404: `Not Found`, + }, + }); + } + + /** + * @returns string Success + * @throws ApiError + */ + public static deleteUserGroupByIdUsers(data: UserGroupData['payloads']['DeleteUserGroupByIdUsers']): CancelablePromise { + const { + + id, +requestBody + } = data; + return __request(OpenAPI, { + method: 'DELETE', + url: '/umbraco/management/api/v1/user-group/{id}/users', + path: { + id + }, + body: requestBody, + mediaType: 'application/json', + responseHeader: 'Umb-Notifications', + errors: { + 401: `The resource is protected and requires an authentication token`, + 403: `The authenticated user do not have access to this resource`, + 404: `Not Found`, + }, + }); + } + + /** + * @returns string Success + * @throws ApiError + */ + public static postUserGroupByIdUsers(data: UserGroupData['payloads']['PostUserGroupByIdUsers']): CancelablePromise { + const { + + id, +requestBody + } = data; + return __request(OpenAPI, { + method: 'POST', + url: '/umbraco/management/api/v1/user-group/{id}/users', + path: { + id + }, + body: requestBody, + mediaType: 'application/json', + responseHeader: 'Umb-Notifications', + errors: { + 401: `The resource is protected and requires an authentication token`, + 403: `The authenticated user do not have access to this resource`, + 404: `Not Found`, + }, + }); + } + +} + +export class UserService { + + /** + * @returns unknown Success + * @throws ApiError + */ + public static getFilterUser(data: UserData['payloads']['GetFilterUser'] = {}): CancelablePromise { + const { + + skip, +take, +orderBy, +orderDirection, +userGroupIds, +userStates, +filter + } = data; + return __request(OpenAPI, { + method: 'GET', + url: '/umbraco/management/api/v1/filter/user', + query: { + skip, take, orderBy, orderDirection, userGroupIds, userStates, filter + }, + errors: { + 400: `Bad Request`, + 401: `The resource is protected and requires an authentication token`, + 404: `Not Found`, + }, + }); + } + + /** + * @returns unknown Success + * @throws ApiError + */ + public static getItemUser(data: UserData['payloads']['GetItemUser'] = {}): CancelablePromise { + const { + + id + } = data; + return __request(OpenAPI, { + method: 'GET', + url: '/umbraco/management/api/v1/item/user', + query: { + id + }, + errors: { + 401: `The resource is protected and requires an authentication token`, + }, + }); + } + + /** + * @returns string Created + * @throws ApiError + */ + public static postUser(data: UserData['payloads']['PostUser'] = {}): CancelablePromise { + const { + + requestBody + } = data; + return __request(OpenAPI, { + method: 'POST', + url: '/umbraco/management/api/v1/user', + body: requestBody, + mediaType: 'application/json', + responseHeader: 'Umb-Generated-Resource', + errors: { + 400: `Bad Request`, + 401: `The resource is protected and requires an authentication token`, + 404: `Not Found`, + }, + }); + } + + /** + * @returns string Success + * @throws ApiError + */ + public static deleteUser(data: UserData['payloads']['DeleteUser'] = {}): CancelablePromise { + const { + + requestBody + } = data; + return __request(OpenAPI, { + method: 'DELETE', + url: '/umbraco/management/api/v1/user', + body: requestBody, + mediaType: 'application/json', + responseHeader: 'Umb-Notifications', + errors: { + 400: `Bad Request`, + 401: `The resource is protected and requires an authentication token`, + 403: `The authenticated user do not have access to this resource`, + }, + }); + } + + /** + * @returns unknown Success + * @throws ApiError + */ + public static getUser(data: UserData['payloads']['GetUser'] = {}): CancelablePromise { + const { + + skip, +take + } = data; + return __request(OpenAPI, { + method: 'GET', + url: '/umbraco/management/api/v1/user', + query: { + skip, take + }, + errors: { + 401: `The resource is protected and requires an authentication token`, + 404: `Not Found`, + }, + }); + } + + /** + * @returns unknown Success + * @throws ApiError + */ + public static getUserById(data: UserData['payloads']['GetUserById']): CancelablePromise { + const { + + id + } = data; + return __request(OpenAPI, { + method: 'GET', + url: '/umbraco/management/api/v1/user/{id}', + path: { + id + }, + errors: { + 401: `The resource is protected and requires an authentication token`, + 403: `The authenticated user do not have access to this resource`, + 404: `Not Found`, + }, + }); + } + + /** + * @returns string Success + * @throws ApiError + */ + public static deleteUserById(data: UserData['payloads']['DeleteUserById']): CancelablePromise { + const { + + id + } = data; + return __request(OpenAPI, { + method: 'DELETE', + url: '/umbraco/management/api/v1/user/{id}', + path: { + id + }, + responseHeader: 'Umb-Notifications', + errors: { + 400: `Bad Request`, + 401: `The resource is protected and requires an authentication token`, + 403: `The authenticated user do not have access to this resource`, + 404: `Not Found`, + }, + }); + } + + /** + * @returns string Success + * @throws ApiError + */ + public static putUserById(data: UserData['payloads']['PutUserById']): CancelablePromise { + const { + + id, +requestBody + } = data; + return __request(OpenAPI, { + method: 'PUT', + url: '/umbraco/management/api/v1/user/{id}', + path: { + id + }, + body: requestBody, + mediaType: 'application/json', + responseHeader: 'Umb-Notifications', + errors: { + 400: `Bad Request`, + 401: `The resource is protected and requires an authentication token`, + 403: `The authenticated user do not have access to this resource`, + 404: `Not Found`, + }, + }); + } + + /** + * @returns unknown Success + * @throws ApiError + */ + public static getUserById2Fa(data: UserData['payloads']['GetUserById2Fa']): CancelablePromise { + const { + + id + } = data; + return __request(OpenAPI, { + method: 'GET', + url: '/umbraco/management/api/v1/user/{id}/2fa', + path: { + id + }, + errors: { + 401: `The resource is protected and requires an authentication token`, + 403: `The authenticated user do not have access to this resource`, + 404: `Not Found`, + }, + }); + } + + /** + * @returns string Success + * @throws ApiError + */ + public static deleteUserById2FaByProviderName(data: UserData['payloads']['DeleteUserById2FaByProviderName']): CancelablePromise { + const { + + id, +providerName + } = data; + return __request(OpenAPI, { + method: 'DELETE', + url: '/umbraco/management/api/v1/user/{id}/2fa/{providerName}', + path: { + id, providerName + }, + responseHeader: 'Umb-Notifications', + errors: { + 400: `Bad Request`, + 401: `The resource is protected and requires an authentication token`, + 403: `The authenticated user do not have access to this resource`, + 404: `Not Found`, + }, + }); + } + + /** + * @returns string Success + * @throws ApiError + */ + public static postUserByIdChangePassword(data: UserData['payloads']['PostUserByIdChangePassword']): CancelablePromise { + const { + + id, +requestBody + } = data; + return __request(OpenAPI, { + method: 'POST', + url: '/umbraco/management/api/v1/user/{id}/change-password', + path: { + id + }, + body: requestBody, + mediaType: 'application/json', + responseHeader: 'Umb-Notifications', + errors: { + 400: `Bad Request`, + 401: `The resource is protected and requires an authentication token`, + 403: `The authenticated user do not have access to this resource`, + 404: `Not Found`, + }, + }); + } + + /** + * @returns unknown Success + * @throws ApiError + */ + public static postUserByIdResetPassword(data: UserData['payloads']['PostUserByIdResetPassword']): CancelablePromise { + const { + + id + } = data; + return __request(OpenAPI, { + method: 'POST', + url: '/umbraco/management/api/v1/user/{id}/reset-password', + path: { + id + }, + errors: { + 400: `Bad Request`, + 401: `The resource is protected and requires an authentication token`, + 403: `The authenticated user do not have access to this resource`, + 404: `Not Found`, + }, + }); + } + + /** + * @returns string Success + * @throws ApiError + */ + public static deleteUserAvatarById(data: UserData['payloads']['DeleteUserAvatarById']): CancelablePromise { + const { + + id + } = data; + return __request(OpenAPI, { + method: 'DELETE', + url: '/umbraco/management/api/v1/user/avatar/{id}', + path: { + id + }, + responseHeader: 'Umb-Notifications', + errors: { + 400: `Bad Request`, + 401: `The resource is protected and requires an authentication token`, + 403: `The authenticated user do not have access to this resource`, + 404: `Not Found`, + }, + }); + } + + /** + * @returns string Success + * @throws ApiError + */ + public static postUserAvatarById(data: UserData['payloads']['PostUserAvatarById']): CancelablePromise { + const { + + id, +requestBody + } = data; + return __request(OpenAPI, { + method: 'POST', + url: '/umbraco/management/api/v1/user/avatar/{id}', + path: { + id + }, + body: requestBody, + mediaType: 'application/json', + responseHeader: 'Umb-Notifications', + errors: { + 400: `Bad Request`, + 401: `The resource is protected and requires an authentication token`, + 403: `The authenticated user do not have access to this resource`, + 404: `Not Found`, + }, + }); + } + + /** + * @returns unknown Success + * @throws ApiError + */ + public static getUserConfiguration(): CancelablePromise { + + return __request(OpenAPI, { + method: 'GET', + url: '/umbraco/management/api/v1/user/configuration', + errors: { + 401: `The resource is protected and requires an authentication token`, + }, + }); + } + + /** + * @returns unknown Success + * @throws ApiError + */ + public static getUserCurrent(): CancelablePromise { + + return __request(OpenAPI, { + method: 'GET', + url: '/umbraco/management/api/v1/user/current', + errors: { + 401: `The resource is protected and requires an authentication token`, + 403: `The authenticated user do not have access to this resource`, + }, + }); + } + + /** + * @returns unknown Success + * @throws ApiError + */ + public static getUserCurrent2Fa(): CancelablePromise { + + return __request(OpenAPI, { + method: 'GET', + url: '/umbraco/management/api/v1/user/current/2fa', + errors: { + 401: `The resource is protected and requires an authentication token`, + }, + }); + } + + /** + * @returns string Success + * @throws ApiError + */ + public static deleteUserCurrent2FaByProviderName(data: UserData['payloads']['DeleteUserCurrent2FaByProviderName']): CancelablePromise { + const { + + providerName, +code + } = data; + return __request(OpenAPI, { + method: 'DELETE', + url: '/umbraco/management/api/v1/user/current/2fa/{providerName}', + path: { + providerName + }, + query: { + code + }, + responseHeader: 'Umb-Notifications', + errors: { + 400: `Bad Request`, + 401: `The resource is protected and requires an authentication token`, + 404: `Not Found`, + }, + }); + } + + /** + * @returns unknown Success + * @throws ApiError + */ + public static postUserCurrent2FaByProviderName(data: UserData['payloads']['PostUserCurrent2FaByProviderName']): CancelablePromise { + const { + + providerName, +requestBody + } = data; + return __request(OpenAPI, { + method: 'POST', + url: '/umbraco/management/api/v1/user/current/2fa/{providerName}', + path: { + providerName + }, + body: requestBody, + mediaType: 'application/json', + errors: { + 400: `Bad Request`, + 401: `The resource is protected and requires an authentication token`, + 404: `Not Found`, + }, + }); + } + + /** + * @returns unknown Success + * @throws ApiError + */ + public static getUserCurrent2FaByProviderName(data: UserData['payloads']['GetUserCurrent2FaByProviderName']): CancelablePromise { + const { + + providerName + } = data; + return __request(OpenAPI, { + method: 'GET', + url: '/umbraco/management/api/v1/user/current/2fa/{providerName}', + path: { + providerName + }, + errors: { + 400: `Bad Request`, + 401: `The resource is protected and requires an authentication token`, + 404: `Not Found`, + }, + }); + } + + /** + * @returns string Success + * @throws ApiError + */ + public static postUserCurrentAvatar(data: UserData['payloads']['PostUserCurrentAvatar'] = {}): CancelablePromise { + const { + + requestBody + } = data; + return __request(OpenAPI, { + method: 'POST', + url: '/umbraco/management/api/v1/user/current/avatar', + body: requestBody, + mediaType: 'application/json', + responseHeader: 'Umb-Notifications', + errors: { + 400: `Bad Request`, + 401: `The resource is protected and requires an authentication token`, + 403: `The authenticated user do not have access to this resource`, + }, + }); + } + + /** + * @returns string Success + * @throws ApiError + */ + public static postUserCurrentChangePassword(data: UserData['payloads']['PostUserCurrentChangePassword'] = {}): CancelablePromise { + const { + + requestBody + } = data; + return __request(OpenAPI, { + method: 'POST', + url: '/umbraco/management/api/v1/user/current/change-password', + body: requestBody, + mediaType: 'application/json', + responseHeader: 'Umb-Notifications', + errors: { + 400: `Bad Request`, + 401: `The resource is protected and requires an authentication token`, + }, + }); + } + + /** + * @returns unknown Success + * @throws ApiError + */ + public static getUserCurrentConfiguration(): CancelablePromise { + + return __request(OpenAPI, { + method: 'GET', + url: '/umbraco/management/api/v1/user/current/configuration', + errors: { + 401: `The resource is protected and requires an authentication token`, + }, + }); + } + + /** + * @returns unknown Success + * @throws ApiError + */ + public static getUserCurrentLogins(): CancelablePromise { + + return __request(OpenAPI, { + method: 'GET', + url: '/umbraco/management/api/v1/user/current/logins', + errors: { + 401: `The resource is protected and requires an authentication token`, + }, + }); + } + + /** + * @returns unknown Success + * @throws ApiError + */ + public static getUserCurrentPermissions(data: UserData['payloads']['GetUserCurrentPermissions'] = {}): CancelablePromise { + const { + + id + } = data; + return __request(OpenAPI, { + method: 'GET', + url: '/umbraco/management/api/v1/user/current/permissions', + query: { + id + }, + errors: { + 401: `The resource is protected and requires an authentication token`, + 404: `Not Found`, + }, + }); + } + + /** + * @returns unknown Success + * @throws ApiError + */ + public static getUserCurrentPermissionsDocument(data: UserData['payloads']['GetUserCurrentPermissionsDocument'] = {}): CancelablePromise { + const { + + id + } = data; + return __request(OpenAPI, { + method: 'GET', + url: '/umbraco/management/api/v1/user/current/permissions/document', + query: { + id + }, + errors: { + 401: `The resource is protected and requires an authentication token`, + 404: `Not Found`, + }, + }); + } + + /** + * @returns unknown Success + * @throws ApiError + */ + public static getUserCurrentPermissionsMedia(data: UserData['payloads']['GetUserCurrentPermissionsMedia'] = {}): CancelablePromise { + const { + + id + } = data; + return __request(OpenAPI, { + method: 'GET', + url: '/umbraco/management/api/v1/user/current/permissions/media', + query: { + id + }, + errors: { + 401: `The resource is protected and requires an authentication token`, + 404: `Not Found`, + }, + }); + } + + /** + * @returns string Success + * @throws ApiError + */ + public static postUserDisable(data: UserData['payloads']['PostUserDisable'] = {}): CancelablePromise { + const { + + requestBody + } = data; + return __request(OpenAPI, { + method: 'POST', + url: '/umbraco/management/api/v1/user/disable', + body: requestBody, + mediaType: 'application/json', + responseHeader: 'Umb-Notifications', + errors: { + 400: `Bad Request`, + 401: `The resource is protected and requires an authentication token`, + 403: `The authenticated user do not have access to this resource`, + 404: `Not Found`, + }, + }); + } + + /** + * @returns string Success + * @throws ApiError + */ + public static postUserEnable(data: UserData['payloads']['PostUserEnable'] = {}): CancelablePromise { + const { + + requestBody + } = data; + return __request(OpenAPI, { + method: 'POST', + url: '/umbraco/management/api/v1/user/enable', + body: requestBody, + mediaType: 'application/json', + responseHeader: 'Umb-Notifications', + errors: { + 400: `Bad Request`, + 401: `The resource is protected and requires an authentication token`, + 403: `The authenticated user do not have access to this resource`, + 404: `Not Found`, + }, + }); + } + + /** + * @returns string Created + * @throws ApiError + */ + public static postUserInvite(data: UserData['payloads']['PostUserInvite'] = {}): CancelablePromise { + const { + + requestBody + } = data; + return __request(OpenAPI, { + method: 'POST', + url: '/umbraco/management/api/v1/user/invite', + body: requestBody, + mediaType: 'application/json', + responseHeader: 'Umb-Generated-Resource', + errors: { + 400: `Bad Request`, + 401: `The resource is protected and requires an authentication token`, + 404: `Not Found`, + }, + }); + } + + /** + * @returns string Success + * @throws ApiError + */ + public static postUserInviteCreatePassword(data: UserData['payloads']['PostUserInviteCreatePassword'] = {}): CancelablePromise { + const { + + requestBody + } = data; + return __request(OpenAPI, { + method: 'POST', + url: '/umbraco/management/api/v1/user/invite/create-password', + body: requestBody, + mediaType: 'application/json', + responseHeader: 'Umb-Notifications', + errors: { + 400: `Bad Request`, + 404: `Not Found`, + }, + }); + } + + /** + * @returns string Success + * @throws ApiError + */ + public static postUserInviteResend(data: UserData['payloads']['PostUserInviteResend'] = {}): CancelablePromise { + const { + + requestBody + } = data; + return __request(OpenAPI, { + method: 'POST', + url: '/umbraco/management/api/v1/user/invite/resend', + body: requestBody, + mediaType: 'application/json', + responseHeader: 'Umb-Notifications', + errors: { + 400: `Bad Request`, + 401: `The resource is protected and requires an authentication token`, + 404: `Not Found`, + }, + }); + } + + /** + * @returns unknown Success + * @throws ApiError + */ + public static postUserInviteVerify(data: UserData['payloads']['PostUserInviteVerify'] = {}): CancelablePromise { + const { + + requestBody + } = data; + return __request(OpenAPI, { + method: 'POST', + url: '/umbraco/management/api/v1/user/invite/verify', + body: requestBody, + mediaType: 'application/json', + errors: { + 400: `Bad Request`, + 404: `Not Found`, + }, + }); + } + + /** + * @returns string Success + * @throws ApiError + */ + public static postUserSetUserGroups(data: UserData['payloads']['PostUserSetUserGroups'] = {}): CancelablePromise { + const { + + requestBody + } = data; + return __request(OpenAPI, { + method: 'POST', + url: '/umbraco/management/api/v1/user/set-user-groups', + body: requestBody, + mediaType: 'application/json', + responseHeader: 'Umb-Notifications', + errors: { + 401: `The resource is protected and requires an authentication token`, + 403: `The authenticated user do not have access to this resource`, + }, + }); + } + + /** + * @returns string Success + * @throws ApiError + */ + public static postUserUnlock(data: UserData['payloads']['PostUserUnlock'] = {}): CancelablePromise { + const { + + requestBody + } = data; + return __request(OpenAPI, { + method: 'POST', + url: '/umbraco/management/api/v1/user/unlock', + body: requestBody, + mediaType: 'application/json', + responseHeader: 'Umb-Notifications', + errors: { + 400: `Bad Request`, + 401: `The resource is protected and requires an authentication token`, + 403: `The authenticated user do not have access to this resource`, + }, + }); + } + +} + +export class WebhookService { + + /** + * @returns unknown Success + * @throws ApiError + */ + public static getWebhook(data: WebhookData['payloads']['GetWebhook'] = {}): CancelablePromise { + const { + + skip, +take + } = data; + return __request(OpenAPI, { + method: 'GET', + url: '/umbraco/management/api/v1/webhook', + query: { + skip, take + }, + errors: { + 401: `The resource is protected and requires an authentication token`, + }, + }); + } + + /** + * @returns string Created + * @throws ApiError + */ + public static postWebhook(data: WebhookData['payloads']['PostWebhook'] = {}): CancelablePromise { + const { + + requestBody + } = data; + return __request(OpenAPI, { + method: 'POST', + url: '/umbraco/management/api/v1/webhook', + body: requestBody, + mediaType: 'application/json', + responseHeader: 'Umb-Generated-Resource', + errors: { + 400: `Bad Request`, + 401: `The resource is protected and requires an authentication token`, + 404: `Not Found`, + }, + }); + } + + /** + * @returns unknown Success + * @throws ApiError + */ + public static getWebhookById(data: WebhookData['payloads']['GetWebhookById']): CancelablePromise { + const { + + id + } = data; + return __request(OpenAPI, { + method: 'GET', + url: '/umbraco/management/api/v1/webhook/{id}', + path: { + id + }, + errors: { + 401: `The resource is protected and requires an authentication token`, + 404: `Not Found`, + }, + }); + } + + /** + * @returns string Success + * @throws ApiError + */ + public static putWebhookById(data: WebhookData['payloads']['PutWebhookById']): CancelablePromise { + const { + + id, +requestBody + } = data; + return __request(OpenAPI, { + method: 'PUT', + url: '/umbraco/management/api/v1/webhook/{id}', + path: { + id + }, + body: requestBody, + mediaType: 'application/json', + responseHeader: 'Umb-Notifications', + errors: { + 400: `Bad Request`, + 401: `The resource is protected and requires an authentication token`, + 404: `Not Found`, + }, + }); + } + + /** + * @returns string Success + * @throws ApiError + */ + public static deleteWebhookById(data: WebhookData['payloads']['DeleteWebhookById']): CancelablePromise { + const { + + id + } = data; + return __request(OpenAPI, { + method: 'DELETE', + url: '/umbraco/management/api/v1/webhook/{id}', + path: { + id + }, + responseHeader: 'Umb-Notifications', + errors: { + 400: `Bad Request`, + 401: `The resource is protected and requires an authentication token`, + 404: `Not Found`, + }, + }); + } + + /** + * @returns unknown Success + * @throws ApiError + */ + public static getWebhookItem(data: WebhookData['payloads']['GetWebhookItem'] = {}): CancelablePromise { + const { + + ids + } = data; + return __request(OpenAPI, { + method: 'GET', + url: '/umbraco/management/api/v1/webhook/item', + query: { + ids + }, + errors: { + 401: `The resource is protected and requires an authentication token`, + }, + }); + } + +} \ No newline at end of file diff --git a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/services/AuditLogResource.ts b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/services/AuditLogResource.ts deleted file mode 100644 index 4b35f87f78..0000000000 --- a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/services/AuditLogResource.ts +++ /dev/null @@ -1,113 +0,0 @@ -/* generated using openapi-typescript-codegen -- do no edit */ -/* istanbul ignore file */ -/* tslint:disable */ -/* eslint-disable */ -import type { AuditTypeModel } from '../models/AuditTypeModel'; -import type { DirectionModel } from '../models/DirectionModel'; -import type { PagedAuditLogResponseModel } from '../models/PagedAuditLogResponseModel'; -import type { PagedAuditLogWithUsernameResponseModel } from '../models/PagedAuditLogWithUsernameResponseModel'; - -import type { CancelablePromise } from '../core/CancelablePromise'; -import { OpenAPI } from '../core/OpenAPI'; -import { request as __request } from '../core/request'; - -export class AuditLogResource { - - /** - * @returns any Success - * @throws ApiError - */ - public static getAuditLog({ - orderDirection, - sinceDate, - skip, - take = 100, - }: { - orderDirection?: DirectionModel, - sinceDate?: string, - skip?: number, - take?: number, - }): CancelablePromise { - return __request(OpenAPI, { - method: 'GET', - url: '/umbraco/management/api/v1/audit-log', - query: { - 'orderDirection': orderDirection, - 'sinceDate': sinceDate, - 'skip': skip, - 'take': take, - }, - errors: { - 401: `The resource is protected and requires an authentication token`, - }, - }); - } - - /** - * @returns any Success - * @throws ApiError - */ - public static getAuditLogById({ - id, - orderDirection, - sinceDate, - skip, - take = 100, - }: { - id: string, - orderDirection?: DirectionModel, - sinceDate?: string, - skip?: number, - take?: number, - }): CancelablePromise { - return __request(OpenAPI, { - method: 'GET', - url: '/umbraco/management/api/v1/audit-log/{id}', - path: { - 'id': id, - }, - query: { - 'orderDirection': orderDirection, - 'sinceDate': sinceDate, - 'skip': skip, - 'take': take, - }, - errors: { - 401: `The resource is protected and requires an authentication token`, - }, - }); - } - - /** - * @returns any Success - * @throws ApiError - */ - public static getAuditLogTypeByLogType({ - logType, - sinceDate, - skip, - take = 100, - }: { - logType: AuditTypeModel, - sinceDate?: string, - skip?: number, - take?: number, - }): CancelablePromise { - return __request(OpenAPI, { - method: 'GET', - url: '/umbraco/management/api/v1/audit-log/type/{logType}', - path: { - 'logType': logType, - }, - query: { - 'sinceDate': sinceDate, - 'skip': skip, - 'take': take, - }, - errors: { - 401: `The resource is protected and requires an authentication token`, - }, - }); - } - -} diff --git a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/services/CultureResource.ts b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/services/CultureResource.ts deleted file mode 100644 index 534bc8d823..0000000000 --- a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/services/CultureResource.ts +++ /dev/null @@ -1,37 +0,0 @@ -/* generated using openapi-typescript-codegen -- do no edit */ -/* istanbul ignore file */ -/* tslint:disable */ -/* eslint-disable */ -import type { PagedCultureReponseModel } from '../models/PagedCultureReponseModel'; - -import type { CancelablePromise } from '../core/CancelablePromise'; -import { OpenAPI } from '../core/OpenAPI'; -import { request as __request } from '../core/request'; - -export class CultureResource { - - /** - * @returns any Success - * @throws ApiError - */ - public static getCulture({ - skip, - take = 100, - }: { - skip?: number, - take?: number, - }): CancelablePromise { - return __request(OpenAPI, { - method: 'GET', - url: '/umbraco/management/api/v1/culture', - query: { - 'skip': skip, - 'take': take, - }, - errors: { - 401: `The resource is protected and requires an authentication token`, - }, - }); - } - -} diff --git a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/services/DataTypeResource.ts b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/services/DataTypeResource.ts deleted file mode 100644 index f34c3393dd..0000000000 --- a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/services/DataTypeResource.ts +++ /dev/null @@ -1,492 +0,0 @@ -/* generated using openapi-typescript-codegen -- do no edit */ -/* istanbul ignore file */ -/* tslint:disable */ -/* eslint-disable */ -import type { CopyDataTypeRequestModel } from '../models/CopyDataTypeRequestModel'; -import type { CreateDataTypeRequestModel } from '../models/CreateDataTypeRequestModel'; -import type { CreateFolderRequestModel } from '../models/CreateFolderRequestModel'; -import type { DatatypeConfigurationResponseModel } from '../models/DatatypeConfigurationResponseModel'; -import type { DataTypeItemResponseModel } from '../models/DataTypeItemResponseModel'; -import type { DataTypeReferenceResponseModel } from '../models/DataTypeReferenceResponseModel'; -import type { DataTypeResponseModel } from '../models/DataTypeResponseModel'; -import type { DataTypeTreeItemResponseModel } from '../models/DataTypeTreeItemResponseModel'; -import type { FolderResponseModel } from '../models/FolderResponseModel'; -import type { MoveDataTypeRequestModel } from '../models/MoveDataTypeRequestModel'; -import type { PagedDataTypeItemResponseModel } from '../models/PagedDataTypeItemResponseModel'; -import type { PagedDataTypeTreeItemResponseModel } from '../models/PagedDataTypeTreeItemResponseModel'; -import type { PagedModelDataTypeItemResponseModel } from '../models/PagedModelDataTypeItemResponseModel'; -import type { UpdateDataTypeRequestModel } from '../models/UpdateDataTypeRequestModel'; -import type { UpdateFolderResponseModel } from '../models/UpdateFolderResponseModel'; - -import type { CancelablePromise } from '../core/CancelablePromise'; -import { OpenAPI } from '../core/OpenAPI'; -import { request as __request } from '../core/request'; - -export class DataTypeResource { - - /** - * @returns string Created - * @throws ApiError - */ - public static postDataType({ - requestBody, - }: { - requestBody?: CreateDataTypeRequestModel, - }): CancelablePromise { - return __request(OpenAPI, { - method: 'POST', - url: '/umbraco/management/api/v1/data-type', - body: requestBody, - mediaType: 'application/json', - responseHeader: 'Umb-Generated-Resource', - errors: { - 400: `Bad Request`, - 401: `The resource is protected and requires an authentication token`, - 404: `Not Found`, - }, - }); - } - - /** - * @returns any Success - * @throws ApiError - */ - public static getDataTypeById({ - id, - }: { - id: string, - }): CancelablePromise { - return __request(OpenAPI, { - method: 'GET', - url: '/umbraco/management/api/v1/data-type/{id}', - path: { - 'id': id, - }, - errors: { - 401: `The resource is protected and requires an authentication token`, - 404: `Not Found`, - }, - }); - } - - /** - * @returns string Success - * @throws ApiError - */ - public static deleteDataTypeById({ - id, - }: { - id: string, - }): CancelablePromise { - return __request(OpenAPI, { - method: 'DELETE', - url: '/umbraco/management/api/v1/data-type/{id}', - path: { - 'id': id, - }, - responseHeader: 'Umb-Notifications', - errors: { - 400: `Bad Request`, - 401: `The resource is protected and requires an authentication token`, - 404: `Not Found`, - }, - }); - } - - /** - * @returns string Success - * @throws ApiError - */ - public static putDataTypeById({ - id, - requestBody, - }: { - id: string, - requestBody?: UpdateDataTypeRequestModel, - }): CancelablePromise { - return __request(OpenAPI, { - method: 'PUT', - url: '/umbraco/management/api/v1/data-type/{id}', - path: { - 'id': id, - }, - body: requestBody, - mediaType: 'application/json', - responseHeader: 'Umb-Notifications', - errors: { - 400: `Bad Request`, - 401: `The resource is protected and requires an authentication token`, - 404: `Not Found`, - }, - }); - } - - /** - * @returns string Created - * @throws ApiError - */ - public static postDataTypeByIdCopy({ - id, - requestBody, - }: { - id: string, - requestBody?: CopyDataTypeRequestModel, - }): CancelablePromise { - return __request(OpenAPI, { - method: 'POST', - url: '/umbraco/management/api/v1/data-type/{id}/copy', - path: { - 'id': id, - }, - body: requestBody, - mediaType: 'application/json', - responseHeader: 'Umb-Generated-Resource', - errors: { - 401: `The resource is protected and requires an authentication token`, - 404: `Not Found`, - }, - }); - } - - /** - * @returns boolean Success - * @throws ApiError - */ - public static getDataTypeByIdIsUsed({ - id, - }: { - id: string, - }): CancelablePromise { - return __request(OpenAPI, { - method: 'GET', - url: '/umbraco/management/api/v1/data-type/{id}/is-used', - path: { - 'id': id, - }, - errors: { - 401: `The resource is protected and requires an authentication token`, - 404: `Not Found`, - }, - }); - } - - /** - * @returns string Success - * @throws ApiError - */ - public static putDataTypeByIdMove({ - id, - requestBody, - }: { - id: string, - requestBody?: MoveDataTypeRequestModel, - }): CancelablePromise { - return __request(OpenAPI, { - method: 'PUT', - url: '/umbraco/management/api/v1/data-type/{id}/move', - path: { - 'id': id, - }, - body: requestBody, - mediaType: 'application/json', - responseHeader: 'Umb-Notifications', - errors: { - 401: `The resource is protected and requires an authentication token`, - 404: `Not Found`, - }, - }); - } - - /** - * @returns any Success - * @throws ApiError - */ - public static getDataTypeByIdReferences({ - id, - }: { - id: string, - }): CancelablePromise> { - return __request(OpenAPI, { - method: 'GET', - url: '/umbraco/management/api/v1/data-type/{id}/references', - path: { - 'id': id, - }, - errors: { - 401: `The resource is protected and requires an authentication token`, - 404: `Not Found`, - }, - }); - } - - /** - * @returns any Success - * @throws ApiError - */ - public static getDataTypeConfiguration(): CancelablePromise { - return __request(OpenAPI, { - method: 'GET', - url: '/umbraco/management/api/v1/data-type/configuration', - errors: { - 401: `The resource is protected and requires an authentication token`, - }, - }); - } - - /** - * @returns string Created - * @throws ApiError - */ - public static postDataTypeFolder({ - requestBody, - }: { - requestBody?: CreateFolderRequestModel, - }): CancelablePromise { - return __request(OpenAPI, { - method: 'POST', - url: '/umbraco/management/api/v1/data-type/folder', - body: requestBody, - mediaType: 'application/json', - responseHeader: 'Umb-Generated-Resource', - errors: { - 400: `Bad Request`, - 401: `The resource is protected and requires an authentication token`, - 404: `Not Found`, - }, - }); - } - - /** - * @returns any Success - * @throws ApiError - */ - public static getDataTypeFolderById({ - id, - }: { - id: string, - }): CancelablePromise { - return __request(OpenAPI, { - method: 'GET', - url: '/umbraco/management/api/v1/data-type/folder/{id}', - path: { - 'id': id, - }, - errors: { - 401: `The resource is protected and requires an authentication token`, - 404: `Not Found`, - }, - }); - } - - /** - * @returns string Success - * @throws ApiError - */ - public static deleteDataTypeFolderById({ - id, - }: { - id: string, - }): CancelablePromise { - return __request(OpenAPI, { - method: 'DELETE', - url: '/umbraco/management/api/v1/data-type/folder/{id}', - path: { - 'id': id, - }, - responseHeader: 'Umb-Notifications', - errors: { - 400: `Bad Request`, - 401: `The resource is protected and requires an authentication token`, - 404: `Not Found`, - }, - }); - } - - /** - * @returns string Success - * @throws ApiError - */ - public static putDataTypeFolderById({ - id, - requestBody, - }: { - id: string, - requestBody?: UpdateFolderResponseModel, - }): CancelablePromise { - return __request(OpenAPI, { - method: 'PUT', - url: '/umbraco/management/api/v1/data-type/folder/{id}', - path: { - 'id': id, - }, - body: requestBody, - mediaType: 'application/json', - responseHeader: 'Umb-Notifications', - errors: { - 400: `Bad Request`, - 401: `The resource is protected and requires an authentication token`, - 404: `Not Found`, - }, - }); - } - - /** - * @returns any Success - * @throws ApiError - */ - public static getFilterDataType({ - skip, - take = 100, - name = '', - editorUiAlias, - editorAlias, - }: { - skip?: number, - take?: number, - name?: string, - editorUiAlias?: string, - editorAlias?: string, - }): CancelablePromise { - return __request(OpenAPI, { - method: 'GET', - url: '/umbraco/management/api/v1/filter/data-type', - query: { - 'skip': skip, - 'take': take, - 'name': name, - 'editorUiAlias': editorUiAlias, - 'editorAlias': editorAlias, - }, - errors: { - 401: `The resource is protected and requires an authentication token`, - }, - }); - } - - /** - * @returns any Success - * @throws ApiError - */ - public static getItemDataType({ - id, - }: { - id?: Array, - }): CancelablePromise> { - return __request(OpenAPI, { - method: 'GET', - url: '/umbraco/management/api/v1/item/data-type', - query: { - 'id': id, - }, - errors: { - 401: `The resource is protected and requires an authentication token`, - }, - }); - } - - /** - * @returns any Success - * @throws ApiError - */ - public static getItemDataTypeSearch({ - query, - skip, - take = 100, - }: { - query?: string, - skip?: number, - take?: number, - }): CancelablePromise { - return __request(OpenAPI, { - method: 'GET', - url: '/umbraco/management/api/v1/item/data-type/search', - query: { - 'query': query, - 'skip': skip, - 'take': take, - }, - errors: { - 401: `The resource is protected and requires an authentication token`, - }, - }); - } - - /** - * @returns any Success - * @throws ApiError - */ - public static getTreeDataTypeAncestors({ - descendantId, - }: { - descendantId?: string, - }): CancelablePromise> { - return __request(OpenAPI, { - method: 'GET', - url: '/umbraco/management/api/v1/tree/data-type/ancestors', - query: { - 'descendantId': descendantId, - }, - errors: { - 401: `The resource is protected and requires an authentication token`, - }, - }); - } - - /** - * @returns any Success - * @throws ApiError - */ - public static getTreeDataTypeChildren({ - parentId, - skip, - take = 100, - foldersOnly = false, - }: { - parentId?: string, - skip?: number, - take?: number, - foldersOnly?: boolean, - }): CancelablePromise { - return __request(OpenAPI, { - method: 'GET', - url: '/umbraco/management/api/v1/tree/data-type/children', - query: { - 'parentId': parentId, - 'skip': skip, - 'take': take, - 'foldersOnly': foldersOnly, - }, - errors: { - 401: `The resource is protected and requires an authentication token`, - }, - }); - } - - /** - * @returns any Success - * @throws ApiError - */ - public static getTreeDataTypeRoot({ - skip, - take = 100, - foldersOnly = false, - }: { - skip?: number, - take?: number, - foldersOnly?: boolean, - }): CancelablePromise { - return __request(OpenAPI, { - method: 'GET', - url: '/umbraco/management/api/v1/tree/data-type/root', - query: { - 'skip': skip, - 'take': take, - 'foldersOnly': foldersOnly, - }, - errors: { - 401: `The resource is protected and requires an authentication token`, - }, - }); - } - -} diff --git a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/services/DictionaryResource.ts b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/services/DictionaryResource.ts deleted file mode 100644 index 265fb3e886..0000000000 --- a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/services/DictionaryResource.ts +++ /dev/null @@ -1,319 +0,0 @@ -/* generated using openapi-typescript-codegen -- do no edit */ -/* istanbul ignore file */ -/* tslint:disable */ -/* eslint-disable */ -import type { CreateDictionaryItemRequestModel } from '../models/CreateDictionaryItemRequestModel'; -import type { DictionaryItemItemResponseModel } from '../models/DictionaryItemItemResponseModel'; -import type { DictionaryItemResponseModel } from '../models/DictionaryItemResponseModel'; -import type { ImportDictionaryRequestModel } from '../models/ImportDictionaryRequestModel'; -import type { MoveDictionaryRequestModel } from '../models/MoveDictionaryRequestModel'; -import type { NamedEntityTreeItemResponseModel } from '../models/NamedEntityTreeItemResponseModel'; -import type { PagedDictionaryOverviewResponseModel } from '../models/PagedDictionaryOverviewResponseModel'; -import type { PagedNamedEntityTreeItemResponseModel } from '../models/PagedNamedEntityTreeItemResponseModel'; -import type { UpdateDictionaryItemRequestModel } from '../models/UpdateDictionaryItemRequestModel'; - -import type { CancelablePromise } from '../core/CancelablePromise'; -import { OpenAPI } from '../core/OpenAPI'; -import { request as __request } from '../core/request'; - -export class DictionaryResource { - - /** - * @returns any Success - * @throws ApiError - */ - public static getDictionary({ - filter, - skip, - take = 100, - }: { - filter?: string, - skip?: number, - take?: number, - }): CancelablePromise { - return __request(OpenAPI, { - method: 'GET', - url: '/umbraco/management/api/v1/dictionary', - query: { - 'filter': filter, - 'skip': skip, - 'take': take, - }, - errors: { - 401: `The resource is protected and requires an authentication token`, - }, - }); - } - - /** - * @returns string Created - * @throws ApiError - */ - public static postDictionary({ - requestBody, - }: { - requestBody?: CreateDictionaryItemRequestModel, - }): CancelablePromise { - return __request(OpenAPI, { - method: 'POST', - url: '/umbraco/management/api/v1/dictionary', - body: requestBody, - mediaType: 'application/json', - responseHeader: 'Umb-Generated-Resource', - errors: { - 400: `Bad Request`, - 401: `The resource is protected and requires an authentication token`, - 403: `The authenticated user do not have access to this resource`, - 404: `Not Found`, - 409: `Conflict`, - }, - }); - } - - /** - * @returns any Success - * @throws ApiError - */ - public static getDictionaryById({ - id, - }: { - id: string, - }): CancelablePromise { - return __request(OpenAPI, { - method: 'GET', - url: '/umbraco/management/api/v1/dictionary/{id}', - path: { - 'id': id, - }, - errors: { - 401: `The resource is protected and requires an authentication token`, - 404: `Not Found`, - }, - }); - } - - /** - * @returns string Success - * @throws ApiError - */ - public static deleteDictionaryById({ - id, - }: { - id: string, - }): CancelablePromise { - return __request(OpenAPI, { - method: 'DELETE', - url: '/umbraco/management/api/v1/dictionary/{id}', - path: { - 'id': id, - }, - responseHeader: 'Umb-Notifications', - errors: { - 400: `Bad Request`, - 401: `The resource is protected and requires an authentication token`, - 404: `Not Found`, - }, - }); - } - - /** - * @returns string Success - * @throws ApiError - */ - public static putDictionaryById({ - id, - requestBody, - }: { - id: string, - requestBody?: UpdateDictionaryItemRequestModel, - }): CancelablePromise { - return __request(OpenAPI, { - method: 'PUT', - url: '/umbraco/management/api/v1/dictionary/{id}', - path: { - 'id': id, - }, - body: requestBody, - mediaType: 'application/json', - responseHeader: 'Umb-Notifications', - errors: { - 400: `Bad Request`, - 401: `The resource is protected and requires an authentication token`, - 403: `The authenticated user do not have access to this resource`, - 404: `Not Found`, - }, - }); - } - - /** - * @returns any Success - * @throws ApiError - */ - public static getDictionaryByIdExport({ - id, - includeChildren = false, - }: { - id: string, - includeChildren?: boolean, - }): CancelablePromise { - return __request(OpenAPI, { - method: 'GET', - url: '/umbraco/management/api/v1/dictionary/{id}/export', - path: { - 'id': id, - }, - query: { - 'includeChildren': includeChildren, - }, - errors: { - 401: `The resource is protected and requires an authentication token`, - 404: `Not Found`, - }, - }); - } - - /** - * @returns string Success - * @throws ApiError - */ - public static putDictionaryByIdMove({ - id, - requestBody, - }: { - id: string, - requestBody?: MoveDictionaryRequestModel, - }): CancelablePromise { - return __request(OpenAPI, { - method: 'PUT', - url: '/umbraco/management/api/v1/dictionary/{id}/move', - path: { - 'id': id, - }, - body: requestBody, - mediaType: 'application/json', - responseHeader: 'Umb-Notifications', - errors: { - 400: `Bad Request`, - 401: `The resource is protected and requires an authentication token`, - 404: `Not Found`, - }, - }); - } - - /** - * @returns string Created - * @throws ApiError - */ - public static postDictionaryImport({ - requestBody, - }: { - requestBody?: ImportDictionaryRequestModel, - }): CancelablePromise { - return __request(OpenAPI, { - method: 'POST', - url: '/umbraco/management/api/v1/dictionary/import', - body: requestBody, - mediaType: 'application/json', - responseHeader: 'Umb-Generated-Resource', - errors: { - 400: `Bad Request`, - 401: `The resource is protected and requires an authentication token`, - 404: `Not Found`, - }, - }); - } - - /** - * @returns any Success - * @throws ApiError - */ - public static getItemDictionary({ - id, - }: { - id?: Array, - }): CancelablePromise> { - return __request(OpenAPI, { - method: 'GET', - url: '/umbraco/management/api/v1/item/dictionary', - query: { - 'id': id, - }, - errors: { - 401: `The resource is protected and requires an authentication token`, - }, - }); - } - - /** - * @returns any Success - * @throws ApiError - */ - public static getTreeDictionaryAncestors({ - descendantId, - }: { - descendantId?: string, - }): CancelablePromise> { - return __request(OpenAPI, { - method: 'GET', - url: '/umbraco/management/api/v1/tree/dictionary/ancestors', - query: { - 'descendantId': descendantId, - }, - errors: { - 401: `The resource is protected and requires an authentication token`, - }, - }); - } - - /** - * @returns any Success - * @throws ApiError - */ - public static getTreeDictionaryChildren({ - parentId, - skip, - take = 100, - }: { - parentId?: string, - skip?: number, - take?: number, - }): CancelablePromise { - return __request(OpenAPI, { - method: 'GET', - url: '/umbraco/management/api/v1/tree/dictionary/children', - query: { - 'parentId': parentId, - 'skip': skip, - 'take': take, - }, - errors: { - 401: `The resource is protected and requires an authentication token`, - }, - }); - } - - /** - * @returns any Success - * @throws ApiError - */ - public static getTreeDictionaryRoot({ - skip, - take = 100, - }: { - skip?: number, - take?: number, - }): CancelablePromise { - return __request(OpenAPI, { - method: 'GET', - url: '/umbraco/management/api/v1/tree/dictionary/root', - query: { - 'skip': skip, - 'take': take, - }, - errors: { - 401: `The resource is protected and requires an authentication token`, - }, - }); - } - -} diff --git a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/services/DocumentBlueprintResource.ts b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/services/DocumentBlueprintResource.ts deleted file mode 100644 index 50837fd587..0000000000 --- a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/services/DocumentBlueprintResource.ts +++ /dev/null @@ -1,344 +0,0 @@ -/* generated using openapi-typescript-codegen -- do no edit */ -/* istanbul ignore file */ -/* tslint:disable */ -/* eslint-disable */ -import type { CreateDocumentBlueprintFromDocumentRequestModel } from '../models/CreateDocumentBlueprintFromDocumentRequestModel'; -import type { CreateDocumentBlueprintRequestModel } from '../models/CreateDocumentBlueprintRequestModel'; -import type { CreateFolderRequestModel } from '../models/CreateFolderRequestModel'; -import type { DocumentBlueprintItemResponseModel } from '../models/DocumentBlueprintItemResponseModel'; -import type { DocumentBlueprintResponseModel } from '../models/DocumentBlueprintResponseModel'; -import type { FolderResponseModel } from '../models/FolderResponseModel'; -import type { MoveDocumentBlueprintRequestModel } from '../models/MoveDocumentBlueprintRequestModel'; -import type { PagedDocumentBlueprintTreeItemResponseModel } from '../models/PagedDocumentBlueprintTreeItemResponseModel'; -import type { UpdateDocumentBlueprintRequestModel } from '../models/UpdateDocumentBlueprintRequestModel'; -import type { UpdateFolderResponseModel } from '../models/UpdateFolderResponseModel'; - -import type { CancelablePromise } from '../core/CancelablePromise'; -import { OpenAPI } from '../core/OpenAPI'; -import { request as __request } from '../core/request'; - -export class DocumentBlueprintResource { - - /** - * @returns string Created - * @throws ApiError - */ - public static postDocumentBlueprint({ - requestBody, - }: { - requestBody?: CreateDocumentBlueprintRequestModel, - }): CancelablePromise { - return __request(OpenAPI, { - method: 'POST', - url: '/umbraco/management/api/v1/document-blueprint', - body: requestBody, - mediaType: 'application/json', - responseHeader: 'Umb-Generated-Resource', - errors: { - 400: `Bad Request`, - 401: `The resource is protected and requires an authentication token`, - 404: `Not Found`, - }, - }); - } - - /** - * @returns any Success - * @throws ApiError - */ - public static getDocumentBlueprintById({ - id, - }: { - id: string, - }): CancelablePromise { - return __request(OpenAPI, { - method: 'GET', - url: '/umbraco/management/api/v1/document-blueprint/{id}', - path: { - 'id': id, - }, - errors: { - 401: `The resource is protected and requires an authentication token`, - 404: `Not Found`, - }, - }); - } - - /** - * @returns string Success - * @throws ApiError - */ - public static deleteDocumentBlueprintById({ - id, - }: { - id: string, - }): CancelablePromise { - return __request(OpenAPI, { - method: 'DELETE', - url: '/umbraco/management/api/v1/document-blueprint/{id}', - path: { - 'id': id, - }, - responseHeader: 'Umb-Notifications', - errors: { - 400: `Bad Request`, - 401: `The resource is protected and requires an authentication token`, - 404: `Not Found`, - }, - }); - } - - /** - * @returns string Success - * @throws ApiError - */ - public static putDocumentBlueprintById({ - id, - requestBody, - }: { - id: string, - requestBody?: UpdateDocumentBlueprintRequestModel, - }): CancelablePromise { - return __request(OpenAPI, { - method: 'PUT', - url: '/umbraco/management/api/v1/document-blueprint/{id}', - path: { - 'id': id, - }, - body: requestBody, - mediaType: 'application/json', - responseHeader: 'Umb-Notifications', - errors: { - 400: `Bad Request`, - 401: `The resource is protected and requires an authentication token`, - 404: `Not Found`, - }, - }); - } - - /** - * @returns string Success - * @throws ApiError - */ - public static putDocumentBlueprintByIdMove({ - id, - requestBody, - }: { - id: string, - requestBody?: MoveDocumentBlueprintRequestModel, - }): CancelablePromise { - return __request(OpenAPI, { - method: 'PUT', - url: '/umbraco/management/api/v1/document-blueprint/{id}/move', - path: { - 'id': id, - }, - body: requestBody, - mediaType: 'application/json', - responseHeader: 'Umb-Notifications', - errors: { - 401: `The resource is protected and requires an authentication token`, - 404: `Not Found`, - }, - }); - } - - /** - * @returns string Created - * @throws ApiError - */ - public static postDocumentBlueprintFolder({ - requestBody, - }: { - requestBody?: CreateFolderRequestModel, - }): CancelablePromise { - return __request(OpenAPI, { - method: 'POST', - url: '/umbraco/management/api/v1/document-blueprint/folder', - body: requestBody, - mediaType: 'application/json', - responseHeader: 'Umb-Generated-Resource', - errors: { - 400: `Bad Request`, - 401: `The resource is protected and requires an authentication token`, - 404: `Not Found`, - }, - }); - } - - /** - * @returns any Success - * @throws ApiError - */ - public static getDocumentBlueprintFolderById({ - id, - }: { - id: string, - }): CancelablePromise { - return __request(OpenAPI, { - method: 'GET', - url: '/umbraco/management/api/v1/document-blueprint/folder/{id}', - path: { - 'id': id, - }, - errors: { - 401: `The resource is protected and requires an authentication token`, - 404: `Not Found`, - }, - }); - } - - /** - * @returns string Success - * @throws ApiError - */ - public static deleteDocumentBlueprintFolderById({ - id, - }: { - id: string, - }): CancelablePromise { - return __request(OpenAPI, { - method: 'DELETE', - url: '/umbraco/management/api/v1/document-blueprint/folder/{id}', - path: { - 'id': id, - }, - responseHeader: 'Umb-Notifications', - errors: { - 400: `Bad Request`, - 401: `The resource is protected and requires an authentication token`, - 404: `Not Found`, - }, - }); - } - - /** - * @returns string Success - * @throws ApiError - */ - public static putDocumentBlueprintFolderById({ - id, - requestBody, - }: { - id: string, - requestBody?: UpdateFolderResponseModel, - }): CancelablePromise { - return __request(OpenAPI, { - method: 'PUT', - url: '/umbraco/management/api/v1/document-blueprint/folder/{id}', - path: { - 'id': id, - }, - body: requestBody, - mediaType: 'application/json', - responseHeader: 'Umb-Notifications', - errors: { - 400: `Bad Request`, - 401: `The resource is protected and requires an authentication token`, - 404: `Not Found`, - }, - }); - } - - /** - * @returns string Created - * @throws ApiError - */ - public static postDocumentBlueprintFromDocument({ - requestBody, - }: { - requestBody?: CreateDocumentBlueprintFromDocumentRequestModel, - }): CancelablePromise { - return __request(OpenAPI, { - method: 'POST', - url: '/umbraco/management/api/v1/document-blueprint/from-document', - body: requestBody, - mediaType: 'application/json', - responseHeader: 'Umb-Generated-Resource', - errors: { - 401: `The resource is protected and requires an authentication token`, - 403: `The authenticated user do not have access to this resource`, - 404: `Not Found`, - }, - }); - } - - /** - * @returns any Success - * @throws ApiError - */ - public static getItemDocumentBlueprint({ - id, - }: { - id?: Array, - }): CancelablePromise> { - return __request(OpenAPI, { - method: 'GET', - url: '/umbraco/management/api/v1/item/document-blueprint', - query: { - 'id': id, - }, - errors: { - 401: `The resource is protected and requires an authentication token`, - }, - }); - } - - /** - * @returns any Success - * @throws ApiError - */ - public static getTreeDocumentBlueprintChildren({ - parentId, - skip, - take = 100, - foldersOnly = false, - }: { - parentId?: string, - skip?: number, - take?: number, - foldersOnly?: boolean, - }): CancelablePromise { - return __request(OpenAPI, { - method: 'GET', - url: '/umbraco/management/api/v1/tree/document-blueprint/children', - query: { - 'parentId': parentId, - 'skip': skip, - 'take': take, - 'foldersOnly': foldersOnly, - }, - errors: { - 401: `The resource is protected and requires an authentication token`, - }, - }); - } - - /** - * @returns any Success - * @throws ApiError - */ - public static getTreeDocumentBlueprintRoot({ - skip, - take = 100, - foldersOnly = false, - }: { - skip?: number, - take?: number, - foldersOnly?: boolean, - }): CancelablePromise { - return __request(OpenAPI, { - method: 'GET', - url: '/umbraco/management/api/v1/tree/document-blueprint/root', - query: { - 'skip': skip, - 'take': take, - 'foldersOnly': foldersOnly, - }, - errors: { - 401: `The resource is protected and requires an authentication token`, - }, - }); - } - -} diff --git a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/services/DocumentResource.ts b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/services/DocumentResource.ts deleted file mode 100644 index 361f0bf34b..0000000000 --- a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/services/DocumentResource.ts +++ /dev/null @@ -1,1005 +0,0 @@ -/* generated using openapi-typescript-codegen -- do no edit */ -/* istanbul ignore file */ -/* tslint:disable */ -/* eslint-disable */ -import type { CopyDocumentRequestModel } from '../models/CopyDocumentRequestModel'; -import type { CreateDocumentRequestModel } from '../models/CreateDocumentRequestModel'; -import type { DirectionModel } from '../models/DirectionModel'; -import type { DocumentConfigurationResponseModel } from '../models/DocumentConfigurationResponseModel'; -import type { DocumentItemResponseModel } from '../models/DocumentItemResponseModel'; -import type { DocumentNotificationResponseModel } from '../models/DocumentNotificationResponseModel'; -import type { DocumentResponseModel } from '../models/DocumentResponseModel'; -import type { DocumentTreeItemResponseModel } from '../models/DocumentTreeItemResponseModel'; -import type { DomainsResponseModel } from '../models/DomainsResponseModel'; -import type { MoveDocumentRequestModel } from '../models/MoveDocumentRequestModel'; -import type { MoveMediaRequestModel } from '../models/MoveMediaRequestModel'; -import type { PagedDocumentCollectionResponseModel } from '../models/PagedDocumentCollectionResponseModel'; -import type { PagedDocumentRecycleBinItemResponseModel } from '../models/PagedDocumentRecycleBinItemResponseModel'; -import type { PagedDocumentTreeItemResponseModel } from '../models/PagedDocumentTreeItemResponseModel'; -import type { PagedIReferenceResponseModel } from '../models/PagedIReferenceResponseModel'; -import type { PagedModelDocumentItemResponseModel } from '../models/PagedModelDocumentItemResponseModel'; -import type { PagedReferenceByIdModel } from '../models/PagedReferenceByIdModel'; -import type { PublicAccessRequestModel } from '../models/PublicAccessRequestModel'; -import type { PublishDocumentRequestModel } from '../models/PublishDocumentRequestModel'; -import type { PublishDocumentWithDescendantsRequestModel } from '../models/PublishDocumentWithDescendantsRequestModel'; -import type { ReferenceByIdModel } from '../models/ReferenceByIdModel'; -import type { SortingRequestModel } from '../models/SortingRequestModel'; -import type { UnpublishDocumentRequestModel } from '../models/UnpublishDocumentRequestModel'; -import type { UpdateDocumentNotificationsRequestModel } from '../models/UpdateDocumentNotificationsRequestModel'; -import type { UpdateDocumentRequestModel } from '../models/UpdateDocumentRequestModel'; -import type { UpdateDomainsRequestModel } from '../models/UpdateDomainsRequestModel'; - -import type { CancelablePromise } from '../core/CancelablePromise'; -import { OpenAPI } from '../core/OpenAPI'; -import { request as __request } from '../core/request'; - -export class DocumentResource { - - /** - * @returns any Success - * @throws ApiError - */ - public static getCollectionDocumentById({ - id, - dataTypeId, - orderBy = 'updateDate', - orderCulture, - orderDirection, - filter, - skip, - take = 100, - }: { - id: string, - dataTypeId?: string, - orderBy?: string, - orderCulture?: string, - orderDirection?: DirectionModel, - filter?: string, - skip?: number, - take?: number, - }): CancelablePromise { - return __request(OpenAPI, { - method: 'GET', - url: '/umbraco/management/api/v1/collection/document/{id}', - path: { - 'id': id, - }, - query: { - 'dataTypeId': dataTypeId, - 'orderBy': orderBy, - 'orderCulture': orderCulture, - 'orderDirection': orderDirection, - 'filter': filter, - 'skip': skip, - 'take': take, - }, - errors: { - 400: `Bad Request`, - 401: `The resource is protected and requires an authentication token`, - 404: `Not Found`, - }, - }); - } - - /** - * @returns string Created - * @throws ApiError - */ - public static postDocument({ - requestBody, - }: { - requestBody?: CreateDocumentRequestModel, - }): CancelablePromise { - return __request(OpenAPI, { - method: 'POST', - url: '/umbraco/management/api/v1/document', - body: requestBody, - mediaType: 'application/json', - responseHeader: 'Umb-Generated-Resource', - errors: { - 400: `Bad Request`, - 401: `The resource is protected and requires an authentication token`, - 403: `The authenticated user do not have access to this resource`, - 404: `Not Found`, - }, - }); - } - - /** - * @returns any Success - * @throws ApiError - */ - public static getDocumentById({ - id, - }: { - id: string, - }): CancelablePromise { - return __request(OpenAPI, { - method: 'GET', - url: '/umbraco/management/api/v1/document/{id}', - path: { - 'id': id, - }, - errors: { - 401: `The resource is protected and requires an authentication token`, - 403: `The authenticated user do not have access to this resource`, - 404: `Not Found`, - }, - }); - } - - /** - * @returns string Success - * @throws ApiError - */ - public static deleteDocumentById({ - id, - }: { - id: string, - }): CancelablePromise { - return __request(OpenAPI, { - method: 'DELETE', - url: '/umbraco/management/api/v1/document/{id}', - path: { - 'id': id, - }, - responseHeader: 'Umb-Notifications', - errors: { - 400: `Bad Request`, - 401: `The resource is protected and requires an authentication token`, - 403: `The authenticated user do not have access to this resource`, - 404: `Not Found`, - }, - }); - } - - /** - * @returns string Success - * @throws ApiError - */ - public static putDocumentById({ - id, - requestBody, - }: { - id: string, - requestBody?: UpdateDocumentRequestModel, - }): CancelablePromise { - return __request(OpenAPI, { - method: 'PUT', - url: '/umbraco/management/api/v1/document/{id}', - path: { - 'id': id, - }, - body: requestBody, - mediaType: 'application/json', - responseHeader: 'Umb-Notifications', - errors: { - 400: `Bad Request`, - 401: `The resource is protected and requires an authentication token`, - 403: `The authenticated user do not have access to this resource`, - 404: `Not Found`, - }, - }); - } - - /** - * @returns string Created - * @throws ApiError - */ - public static postDocumentByIdCopy({ - id, - requestBody, - }: { - id: string, - requestBody?: CopyDocumentRequestModel, - }): CancelablePromise { - return __request(OpenAPI, { - method: 'POST', - url: '/umbraco/management/api/v1/document/{id}/copy', - path: { - 'id': id, - }, - body: requestBody, - mediaType: 'application/json', - responseHeader: 'Umb-Generated-Resource', - errors: { - 401: `The resource is protected and requires an authentication token`, - 403: `The authenticated user do not have access to this resource`, - 404: `Not Found`, - }, - }); - } - - /** - * @returns any Success - * @throws ApiError - */ - public static getDocumentByIdDomains({ - id, - }: { - id: string, - }): CancelablePromise { - return __request(OpenAPI, { - method: 'GET', - url: '/umbraco/management/api/v1/document/{id}/domains', - path: { - 'id': id, - }, - errors: { - 401: `The resource is protected and requires an authentication token`, - 404: `Not Found`, - }, - }); - } - - /** - * @returns string Success - * @throws ApiError - */ - public static putDocumentByIdDomains({ - id, - requestBody, - }: { - id: string, - requestBody?: UpdateDomainsRequestModel, - }): CancelablePromise { - return __request(OpenAPI, { - method: 'PUT', - url: '/umbraco/management/api/v1/document/{id}/domains', - path: { - 'id': id, - }, - body: requestBody, - mediaType: 'application/json', - responseHeader: 'Umb-Notifications', - errors: { - 400: `Bad Request`, - 401: `The resource is protected and requires an authentication token`, - 404: `Not Found`, - 409: `Conflict`, - }, - }); - } - - /** - * @returns string Success - * @throws ApiError - */ - public static putDocumentByIdMove({ - id, - requestBody, - }: { - id: string, - requestBody?: MoveDocumentRequestModel, - }): CancelablePromise { - return __request(OpenAPI, { - method: 'PUT', - url: '/umbraco/management/api/v1/document/{id}/move', - path: { - 'id': id, - }, - body: requestBody, - mediaType: 'application/json', - responseHeader: 'Umb-Notifications', - errors: { - 401: `The resource is protected and requires an authentication token`, - 403: `The authenticated user do not have access to this resource`, - 404: `Not Found`, - }, - }); - } - - /** - * @returns string Success - * @throws ApiError - */ - public static putDocumentByIdMoveToRecycleBin({ - id, - }: { - id: string, - }): CancelablePromise { - return __request(OpenAPI, { - method: 'PUT', - url: '/umbraco/management/api/v1/document/{id}/move-to-recycle-bin', - path: { - 'id': id, - }, - responseHeader: 'Umb-Notifications', - errors: { - 400: `Bad Request`, - 401: `The resource is protected and requires an authentication token`, - 403: `The authenticated user do not have access to this resource`, - 404: `Not Found`, - }, - }); - } - - /** - * @returns any Success - * @throws ApiError - */ - public static getDocumentByIdNotifications({ - id, - }: { - id: string, - }): CancelablePromise> { - return __request(OpenAPI, { - method: 'GET', - url: '/umbraco/management/api/v1/document/{id}/notifications', - path: { - 'id': id, - }, - errors: { - 401: `The resource is protected and requires an authentication token`, - 403: `The authenticated user do not have access to this resource`, - 404: `Not Found`, - }, - }); - } - - /** - * @returns string Success - * @throws ApiError - */ - public static putDocumentByIdNotifications({ - id, - requestBody, - }: { - id: string, - requestBody?: UpdateDocumentNotificationsRequestModel, - }): CancelablePromise { - return __request(OpenAPI, { - method: 'PUT', - url: '/umbraco/management/api/v1/document/{id}/notifications', - path: { - 'id': id, - }, - body: requestBody, - mediaType: 'application/json', - responseHeader: 'Umb-Notifications', - errors: { - 401: `The resource is protected and requires an authentication token`, - 404: `Not Found`, - }, - }); - } - - /** - * @returns string Created - * @throws ApiError - */ - public static postDocumentByIdPublicAccess({ - id, - requestBody, - }: { - id: string, - requestBody?: PublicAccessRequestModel, - }): CancelablePromise { - return __request(OpenAPI, { - method: 'POST', - url: '/umbraco/management/api/v1/document/{id}/public-access', - path: { - 'id': id, - }, - body: requestBody, - mediaType: 'application/json', - responseHeader: 'Umb-Generated-Resource', - errors: { - 401: `The resource is protected and requires an authentication token`, - 403: `The authenticated user do not have access to this resource`, - 404: `Not Found`, - }, - }); - } - - /** - * @returns string Success - * @throws ApiError - */ - public static deleteDocumentByIdPublicAccess({ - id, - }: { - id: string, - }): CancelablePromise { - return __request(OpenAPI, { - method: 'DELETE', - url: '/umbraco/management/api/v1/document/{id}/public-access', - path: { - 'id': id, - }, - responseHeader: 'Umb-Notifications', - errors: { - 401: `The resource is protected and requires an authentication token`, - 403: `The authenticated user do not have access to this resource`, - 404: `Not Found`, - }, - }); - } - - /** - * @returns void - * @throws ApiError - */ - public static getDocumentByIdPublicAccess({ - id, - }: { - id: string, - }): CancelablePromise { - return __request(OpenAPI, { - method: 'GET', - url: '/umbraco/management/api/v1/document/{id}/public-access', - path: { - 'id': id, - }, - errors: { - 401: `The resource is protected and requires an authentication token`, - 403: `The authenticated user do not have access to this resource`, - 404: `Not Found`, - }, - }); - } - - /** - * @returns string Success - * @throws ApiError - */ - public static putDocumentByIdPublicAccess({ - id, - requestBody, - }: { - id: string, - requestBody?: PublicAccessRequestModel, - }): CancelablePromise { - return __request(OpenAPI, { - method: 'PUT', - url: '/umbraco/management/api/v1/document/{id}/public-access', - path: { - 'id': id, - }, - body: requestBody, - mediaType: 'application/json', - responseHeader: 'Umb-Notifications', - errors: { - 401: `The resource is protected and requires an authentication token`, - 403: `The authenticated user do not have access to this resource`, - 404: `Not Found`, - }, - }); - } - - /** - * @returns string Success - * @throws ApiError - */ - public static putDocumentByIdPublish({ - id, - requestBody, - }: { - id: string, - requestBody?: PublishDocumentRequestModel, - }): CancelablePromise { - return __request(OpenAPI, { - method: 'PUT', - url: '/umbraco/management/api/v1/document/{id}/publish', - path: { - 'id': id, - }, - body: requestBody, - mediaType: 'application/json', - responseHeader: 'Umb-Notifications', - errors: { - 400: `Bad Request`, - 401: `The resource is protected and requires an authentication token`, - 403: `The authenticated user do not have access to this resource`, - 404: `Not Found`, - }, - }); - } - - /** - * @returns string Success - * @throws ApiError - */ - public static putDocumentByIdPublishWithDescendants({ - id, - requestBody, - }: { - id: string, - requestBody?: PublishDocumentWithDescendantsRequestModel, - }): CancelablePromise { - return __request(OpenAPI, { - method: 'PUT', - url: '/umbraco/management/api/v1/document/{id}/publish-with-descendants', - path: { - 'id': id, - }, - body: requestBody, - mediaType: 'application/json', - responseHeader: 'Umb-Notifications', - errors: { - 400: `Bad Request`, - 401: `The resource is protected and requires an authentication token`, - 403: `The authenticated user do not have access to this resource`, - 404: `Not Found`, - }, - }); - } - - /** - * @returns any Success - * @throws ApiError - */ - public static getDocumentByIdReferencedBy({ - id, - skip, - take = 20, - }: { - id: string, - skip?: number, - take?: number, - }): CancelablePromise { - return __request(OpenAPI, { - method: 'GET', - url: '/umbraco/management/api/v1/document/{id}/referenced-by', - path: { - 'id': id, - }, - query: { - 'skip': skip, - 'take': take, - }, - errors: { - 401: `The resource is protected and requires an authentication token`, - }, - }); - } - - /** - * @returns any Success - * @throws ApiError - */ - public static getDocumentByIdReferencedDescendants({ - id, - skip, - take = 20, - }: { - id: string, - skip?: number, - take?: number, - }): CancelablePromise { - return __request(OpenAPI, { - method: 'GET', - url: '/umbraco/management/api/v1/document/{id}/referenced-descendants', - path: { - 'id': id, - }, - query: { - 'skip': skip, - 'take': take, - }, - errors: { - 401: `The resource is protected and requires an authentication token`, - }, - }); - } - - /** - * @returns string Success - * @throws ApiError - */ - public static putDocumentByIdUnpublish({ - id, - requestBody, - }: { - id: string, - requestBody?: UnpublishDocumentRequestModel, - }): CancelablePromise { - return __request(OpenAPI, { - method: 'PUT', - url: '/umbraco/management/api/v1/document/{id}/unpublish', - path: { - 'id': id, - }, - body: requestBody, - mediaType: 'application/json', - responseHeader: 'Umb-Notifications', - errors: { - 400: `Bad Request`, - 401: `The resource is protected and requires an authentication token`, - 403: `The authenticated user do not have access to this resource`, - 404: `Not Found`, - }, - }); - } - - /** - * @returns string Success - * @throws ApiError - */ - public static putDocumentByIdValidate({ - id, - requestBody, - }: { - id: string, - requestBody?: UpdateDocumentRequestModel, - }): CancelablePromise { - return __request(OpenAPI, { - method: 'PUT', - url: '/umbraco/management/api/v1/document/{id}/validate', - path: { - 'id': id, - }, - body: requestBody, - mediaType: 'application/json', - responseHeader: 'Umb-Notifications', - errors: { - 400: `Bad Request`, - 401: `The resource is protected and requires an authentication token`, - 403: `The authenticated user do not have access to this resource`, - 404: `Not Found`, - }, - }); - } - - /** - * @returns any Success - * @throws ApiError - */ - public static getDocumentAreReferenced({ - id, - skip, - take = 20, - }: { - id?: Array, - skip?: number, - take?: number, - }): CancelablePromise { - return __request(OpenAPI, { - method: 'GET', - url: '/umbraco/management/api/v1/document/are-referenced', - query: { - 'id': id, - 'skip': skip, - 'take': take, - }, - errors: { - 401: `The resource is protected and requires an authentication token`, - }, - }); - } - - /** - * @returns any Success - * @throws ApiError - */ - public static getDocumentConfiguration(): CancelablePromise { - return __request(OpenAPI, { - method: 'GET', - url: '/umbraco/management/api/v1/document/configuration', - errors: { - 401: `The resource is protected and requires an authentication token`, - }, - }); - } - - /** - * @returns string Success - * @throws ApiError - */ - public static putDocumentSort({ - requestBody, - }: { - requestBody?: SortingRequestModel, - }): CancelablePromise { - return __request(OpenAPI, { - method: 'PUT', - url: '/umbraco/management/api/v1/document/sort', - body: requestBody, - mediaType: 'application/json', - responseHeader: 'Umb-Notifications', - errors: { - 400: `Bad Request`, - 401: `The resource is protected and requires an authentication token`, - 403: `The authenticated user do not have access to this resource`, - 404: `Not Found`, - }, - }); - } - - /** - * @returns string Success - * @throws ApiError - */ - public static postDocumentValidate({ - requestBody, - }: { - requestBody?: CreateDocumentRequestModel, - }): CancelablePromise { - return __request(OpenAPI, { - method: 'POST', - url: '/umbraco/management/api/v1/document/validate', - body: requestBody, - mediaType: 'application/json', - responseHeader: 'Umb-Notifications', - errors: { - 400: `Bad Request`, - 401: `The resource is protected and requires an authentication token`, - 403: `The authenticated user do not have access to this resource`, - 404: `Not Found`, - }, - }); - } - - /** - * @returns any Success - * @throws ApiError - */ - public static getItemDocument({ - id, - }: { - id?: Array, - }): CancelablePromise> { - return __request(OpenAPI, { - method: 'GET', - url: '/umbraco/management/api/v1/item/document', - query: { - 'id': id, - }, - errors: { - 401: `The resource is protected and requires an authentication token`, - }, - }); - } - - /** - * @returns any Success - * @throws ApiError - */ - public static getItemDocumentSearch({ - query, - skip, - take = 100, - }: { - query?: string, - skip?: number, - take?: number, - }): CancelablePromise { - return __request(OpenAPI, { - method: 'GET', - url: '/umbraco/management/api/v1/item/document/search', - query: { - 'query': query, - 'skip': skip, - 'take': take, - }, - errors: { - 401: `The resource is protected and requires an authentication token`, - }, - }); - } - - /** - * @returns string Success - * @throws ApiError - */ - public static deleteRecycleBinDocument(): CancelablePromise { - return __request(OpenAPI, { - method: 'DELETE', - url: '/umbraco/management/api/v1/recycle-bin/document', - responseHeader: 'Umb-Notifications', - errors: { - 400: `Bad Request`, - 401: `The resource is protected and requires an authentication token`, - 403: `The authenticated user do not have access to this resource`, - }, - }); - } - - /** - * @returns string Success - * @throws ApiError - */ - public static deleteRecycleBinDocumentById({ - id, - }: { - id: string, - }): CancelablePromise { - return __request(OpenAPI, { - method: 'DELETE', - url: '/umbraco/management/api/v1/recycle-bin/document/{id}', - path: { - 'id': id, - }, - responseHeader: 'Umb-Notifications', - errors: { - 400: `Bad Request`, - 401: `The resource is protected and requires an authentication token`, - 403: `The authenticated user do not have access to this resource`, - 404: `Not Found`, - }, - }); - } - - /** - * @returns any Success - * @throws ApiError - */ - public static getRecycleBinDocumentByIdOriginalParent({ - id, - }: { - id: string, - }): CancelablePromise { - return __request(OpenAPI, { - method: 'GET', - url: '/umbraco/management/api/v1/recycle-bin/document/{id}/original-parent', - path: { - 'id': id, - }, - errors: { - 400: `Bad Request`, - 401: `The resource is protected and requires an authentication token`, - 403: `The authenticated user do not have access to this resource`, - 404: `Not Found`, - }, - }); - } - - /** - * @returns string Success - * @throws ApiError - */ - public static putRecycleBinDocumentByIdRestore({ - id, - requestBody, - }: { - id: string, - requestBody?: MoveMediaRequestModel, - }): CancelablePromise { - return __request(OpenAPI, { - method: 'PUT', - url: '/umbraco/management/api/v1/recycle-bin/document/{id}/restore', - path: { - 'id': id, - }, - body: requestBody, - mediaType: 'application/json', - responseHeader: 'Umb-Notifications', - errors: { - 400: `Bad Request`, - 401: `The resource is protected and requires an authentication token`, - 403: `The authenticated user do not have access to this resource`, - 404: `Not Found`, - }, - }); - } - - /** - * @returns any Success - * @throws ApiError - */ - public static getRecycleBinDocumentChildren({ - parentId, - skip, - take = 100, - }: { - parentId?: string, - skip?: number, - take?: number, - }): CancelablePromise { - return __request(OpenAPI, { - method: 'GET', - url: '/umbraco/management/api/v1/recycle-bin/document/children', - query: { - 'parentId': parentId, - 'skip': skip, - 'take': take, - }, - errors: { - 401: `The resource is protected and requires an authentication token`, - }, - }); - } - - /** - * @returns any Success - * @throws ApiError - */ - public static getRecycleBinDocumentRoot({ - skip, - take = 100, - }: { - skip?: number, - take?: number, - }): CancelablePromise { - return __request(OpenAPI, { - method: 'GET', - url: '/umbraco/management/api/v1/recycle-bin/document/root', - query: { - 'skip': skip, - 'take': take, - }, - errors: { - 401: `The resource is protected and requires an authentication token`, - }, - }); - } - - /** - * @returns any Success - * @throws ApiError - */ - public static getTreeDocumentAncestors({ - descendantId, - }: { - descendantId?: string, - }): CancelablePromise> { - return __request(OpenAPI, { - method: 'GET', - url: '/umbraco/management/api/v1/tree/document/ancestors', - query: { - 'descendantId': descendantId, - }, - errors: { - 401: `The resource is protected and requires an authentication token`, - }, - }); - } - - /** - * @returns any Success - * @throws ApiError - */ - public static getTreeDocumentChildren({ - parentId, - skip, - take = 100, - dataTypeId, - }: { - parentId?: string, - skip?: number, - take?: number, - dataTypeId?: string, - }): CancelablePromise { - return __request(OpenAPI, { - method: 'GET', - url: '/umbraco/management/api/v1/tree/document/children', - query: { - 'parentId': parentId, - 'skip': skip, - 'take': take, - 'dataTypeId': dataTypeId, - }, - errors: { - 401: `The resource is protected and requires an authentication token`, - }, - }); - } - - /** - * @returns any Success - * @throws ApiError - */ - public static getTreeDocumentRoot({ - skip, - take = 100, - dataTypeId, - }: { - skip?: number, - take?: number, - dataTypeId?: string, - }): CancelablePromise { - return __request(OpenAPI, { - method: 'GET', - url: '/umbraco/management/api/v1/tree/document/root', - query: { - 'skip': skip, - 'take': take, - 'dataTypeId': dataTypeId, - }, - errors: { - 401: `The resource is protected and requires an authentication token`, - }, - }); - } - -} diff --git a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/services/DocumentTypeResource.ts b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/services/DocumentTypeResource.ts deleted file mode 100644 index a8ddaf5e7b..0000000000 --- a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/services/DocumentTypeResource.ts +++ /dev/null @@ -1,515 +0,0 @@ -/* generated using openapi-typescript-codegen -- do no edit */ -/* istanbul ignore file */ -/* tslint:disable */ -/* eslint-disable */ -import type { AvailableDocumentTypeCompositionResponseModel } from '../models/AvailableDocumentTypeCompositionResponseModel'; -import type { CopyDocumentTypeRequestModel } from '../models/CopyDocumentTypeRequestModel'; -import type { CreateDocumentTypeRequestModel } from '../models/CreateDocumentTypeRequestModel'; -import type { CreateFolderRequestModel } from '../models/CreateFolderRequestModel'; -import type { DocumentTypeCompositionRequestModel } from '../models/DocumentTypeCompositionRequestModel'; -import type { DocumentTypeCompositionResponseModel } from '../models/DocumentTypeCompositionResponseModel'; -import type { DocumentTypeConfigurationResponseModel } from '../models/DocumentTypeConfigurationResponseModel'; -import type { DocumentTypeItemResponseModel } from '../models/DocumentTypeItemResponseModel'; -import type { DocumentTypeResponseModel } from '../models/DocumentTypeResponseModel'; -import type { DocumentTypeTreeItemResponseModel } from '../models/DocumentTypeTreeItemResponseModel'; -import type { FolderResponseModel } from '../models/FolderResponseModel'; -import type { MoveDocumentTypeRequestModel } from '../models/MoveDocumentTypeRequestModel'; -import type { PagedAllowedDocumentTypeModel } from '../models/PagedAllowedDocumentTypeModel'; -import type { PagedDocumentTypeTreeItemResponseModel } from '../models/PagedDocumentTypeTreeItemResponseModel'; -import type { PagedModelDocumentTypeItemResponseModel } from '../models/PagedModelDocumentTypeItemResponseModel'; -import type { UpdateDocumentTypeRequestModel } from '../models/UpdateDocumentTypeRequestModel'; -import type { UpdateFolderResponseModel } from '../models/UpdateFolderResponseModel'; - -import type { CancelablePromise } from '../core/CancelablePromise'; -import { OpenAPI } from '../core/OpenAPI'; -import { request as __request } from '../core/request'; - -export class DocumentTypeResource { - - /** - * @returns string Created - * @throws ApiError - */ - public static postDocumentType({ - requestBody, - }: { - requestBody?: CreateDocumentTypeRequestModel, - }): CancelablePromise { - return __request(OpenAPI, { - method: 'POST', - url: '/umbraco/management/api/v1/document-type', - body: requestBody, - mediaType: 'application/json', - responseHeader: 'Umb-Generated-Resource', - errors: { - 400: `Bad Request`, - 401: `The resource is protected and requires an authentication token`, - 404: `Not Found`, - }, - }); - } - - /** - * @returns any Success - * @throws ApiError - */ - public static getDocumentTypeById({ - id, - }: { - id: string, - }): CancelablePromise { - return __request(OpenAPI, { - method: 'GET', - url: '/umbraco/management/api/v1/document-type/{id}', - path: { - 'id': id, - }, - errors: { - 401: `The resource is protected and requires an authentication token`, - 404: `Not Found`, - }, - }); - } - - /** - * @returns string Success - * @throws ApiError - */ - public static deleteDocumentTypeById({ - id, - }: { - id: string, - }): CancelablePromise { - return __request(OpenAPI, { - method: 'DELETE', - url: '/umbraco/management/api/v1/document-type/{id}', - path: { - 'id': id, - }, - responseHeader: 'Umb-Notifications', - errors: { - 401: `The resource is protected and requires an authentication token`, - 404: `Not Found`, - }, - }); - } - - /** - * @returns string Success - * @throws ApiError - */ - public static putDocumentTypeById({ - id, - requestBody, - }: { - id: string, - requestBody?: UpdateDocumentTypeRequestModel, - }): CancelablePromise { - return __request(OpenAPI, { - method: 'PUT', - url: '/umbraco/management/api/v1/document-type/{id}', - path: { - 'id': id, - }, - body: requestBody, - mediaType: 'application/json', - responseHeader: 'Umb-Notifications', - errors: { - 400: `Bad Request`, - 401: `The resource is protected and requires an authentication token`, - 404: `Not Found`, - }, - }); - } - - /** - * @returns any Success - * @throws ApiError - */ - public static getDocumentTypeByIdAllowedChildren({ - id, - skip, - take = 100, - }: { - id: string, - skip?: number, - take?: number, - }): CancelablePromise { - return __request(OpenAPI, { - method: 'GET', - url: '/umbraco/management/api/v1/document-type/{id}/allowed-children', - path: { - 'id': id, - }, - query: { - 'skip': skip, - 'take': take, - }, - errors: { - 401: `The resource is protected and requires an authentication token`, - 404: `Not Found`, - }, - }); - } - - /** - * @returns any Success - * @throws ApiError - */ - public static getDocumentTypeByIdCompositionReferences({ - id, - }: { - id: string, - }): CancelablePromise> { - return __request(OpenAPI, { - method: 'GET', - url: '/umbraco/management/api/v1/document-type/{id}/composition-references', - path: { - 'id': id, - }, - errors: { - 400: `Bad Request`, - 401: `The resource is protected and requires an authentication token`, - 404: `Not Found`, - }, - }); - } - - /** - * @returns string Created - * @throws ApiError - */ - public static postDocumentTypeByIdCopy({ - id, - requestBody, - }: { - id: string, - requestBody?: CopyDocumentTypeRequestModel, - }): CancelablePromise { - return __request(OpenAPI, { - method: 'POST', - url: '/umbraco/management/api/v1/document-type/{id}/copy', - path: { - 'id': id, - }, - body: requestBody, - mediaType: 'application/json', - responseHeader: 'Umb-Generated-Resource', - errors: { - 400: `Bad Request`, - 401: `The resource is protected and requires an authentication token`, - 404: `Not Found`, - }, - }); - } - - /** - * @returns string Success - * @throws ApiError - */ - public static putDocumentTypeByIdMove({ - id, - requestBody, - }: { - id: string, - requestBody?: MoveDocumentTypeRequestModel, - }): CancelablePromise { - return __request(OpenAPI, { - method: 'PUT', - url: '/umbraco/management/api/v1/document-type/{id}/move', - path: { - 'id': id, - }, - body: requestBody, - mediaType: 'application/json', - responseHeader: 'Umb-Notifications', - errors: { - 400: `Bad Request`, - 401: `The resource is protected and requires an authentication token`, - 404: `Not Found`, - }, - }); - } - - /** - * @returns any Success - * @throws ApiError - */ - public static getDocumentTypeAllowedAtRoot({ - skip, - take = 100, - }: { - skip?: number, - take?: number, - }): CancelablePromise { - return __request(OpenAPI, { - method: 'GET', - url: '/umbraco/management/api/v1/document-type/allowed-at-root', - query: { - 'skip': skip, - 'take': take, - }, - errors: { - 401: `The resource is protected and requires an authentication token`, - }, - }); - } - - /** - * @returns any Success - * @throws ApiError - */ - public static postDocumentTypeAvailableCompositions({ - requestBody, - }: { - requestBody?: DocumentTypeCompositionRequestModel, - }): CancelablePromise> { - return __request(OpenAPI, { - method: 'POST', - url: '/umbraco/management/api/v1/document-type/available-compositions', - body: requestBody, - mediaType: 'application/json', - errors: { - 401: `The resource is protected and requires an authentication token`, - }, - }); - } - - /** - * @returns any Success - * @throws ApiError - */ - public static getDocumentTypeConfiguration(): CancelablePromise { - return __request(OpenAPI, { - method: 'GET', - url: '/umbraco/management/api/v1/document-type/configuration', - errors: { - 401: `The resource is protected and requires an authentication token`, - }, - }); - } - - /** - * @returns string Created - * @throws ApiError - */ - public static postDocumentTypeFolder({ - requestBody, - }: { - requestBody?: CreateFolderRequestModel, - }): CancelablePromise { - return __request(OpenAPI, { - method: 'POST', - url: '/umbraco/management/api/v1/document-type/folder', - body: requestBody, - mediaType: 'application/json', - responseHeader: 'Umb-Generated-Resource', - errors: { - 400: `Bad Request`, - 401: `The resource is protected and requires an authentication token`, - 404: `Not Found`, - }, - }); - } - - /** - * @returns any Success - * @throws ApiError - */ - public static getDocumentTypeFolderById({ - id, - }: { - id: string, - }): CancelablePromise { - return __request(OpenAPI, { - method: 'GET', - url: '/umbraco/management/api/v1/document-type/folder/{id}', - path: { - 'id': id, - }, - errors: { - 401: `The resource is protected and requires an authentication token`, - 404: `Not Found`, - }, - }); - } - - /** - * @returns string Success - * @throws ApiError - */ - public static deleteDocumentTypeFolderById({ - id, - }: { - id: string, - }): CancelablePromise { - return __request(OpenAPI, { - method: 'DELETE', - url: '/umbraco/management/api/v1/document-type/folder/{id}', - path: { - 'id': id, - }, - responseHeader: 'Umb-Notifications', - errors: { - 400: `Bad Request`, - 401: `The resource is protected and requires an authentication token`, - 404: `Not Found`, - }, - }); - } - - /** - * @returns string Success - * @throws ApiError - */ - public static putDocumentTypeFolderById({ - id, - requestBody, - }: { - id: string, - requestBody?: UpdateFolderResponseModel, - }): CancelablePromise { - return __request(OpenAPI, { - method: 'PUT', - url: '/umbraco/management/api/v1/document-type/folder/{id}', - path: { - 'id': id, - }, - body: requestBody, - mediaType: 'application/json', - responseHeader: 'Umb-Notifications', - errors: { - 400: `Bad Request`, - 401: `The resource is protected and requires an authentication token`, - 404: `Not Found`, - }, - }); - } - - /** - * @returns any Success - * @throws ApiError - */ - public static getItemDocumentType({ - id, - }: { - id?: Array, - }): CancelablePromise> { - return __request(OpenAPI, { - method: 'GET', - url: '/umbraco/management/api/v1/item/document-type', - query: { - 'id': id, - }, - errors: { - 401: `The resource is protected and requires an authentication token`, - }, - }); - } - - /** - * @returns any Success - * @throws ApiError - */ - public static getItemDocumentTypeSearch({ - query, - skip, - take = 100, - }: { - query?: string, - skip?: number, - take?: number, - }): CancelablePromise { - return __request(OpenAPI, { - method: 'GET', - url: '/umbraco/management/api/v1/item/document-type/search', - query: { - 'query': query, - 'skip': skip, - 'take': take, - }, - errors: { - 401: `The resource is protected and requires an authentication token`, - }, - }); - } - - /** - * @returns any Success - * @throws ApiError - */ - public static getTreeDocumentTypeAncestors({ - descendantId, - }: { - descendantId?: string, - }): CancelablePromise> { - return __request(OpenAPI, { - method: 'GET', - url: '/umbraco/management/api/v1/tree/document-type/ancestors', - query: { - 'descendantId': descendantId, - }, - errors: { - 401: `The resource is protected and requires an authentication token`, - }, - }); - } - - /** - * @returns any Success - * @throws ApiError - */ - public static getTreeDocumentTypeChildren({ - parentId, - skip, - take = 100, - foldersOnly = false, - }: { - parentId?: string, - skip?: number, - take?: number, - foldersOnly?: boolean, - }): CancelablePromise { - return __request(OpenAPI, { - method: 'GET', - url: '/umbraco/management/api/v1/tree/document-type/children', - query: { - 'parentId': parentId, - 'skip': skip, - 'take': take, - 'foldersOnly': foldersOnly, - }, - errors: { - 401: `The resource is protected and requires an authentication token`, - }, - }); - } - - /** - * @returns any Success - * @throws ApiError - */ - public static getTreeDocumentTypeRoot({ - skip, - take = 100, - foldersOnly = false, - }: { - skip?: number, - take?: number, - foldersOnly?: boolean, - }): CancelablePromise { - return __request(OpenAPI, { - method: 'GET', - url: '/umbraco/management/api/v1/tree/document-type/root', - query: { - 'skip': skip, - 'take': take, - 'foldersOnly': foldersOnly, - }, - errors: { - 401: `The resource is protected and requires an authentication token`, - }, - }); - } - -} diff --git a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/services/DocumentVersionResource.ts b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/services/DocumentVersionResource.ts deleted file mode 100644 index ac1c69b4bd..0000000000 --- a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/services/DocumentVersionResource.ts +++ /dev/null @@ -1,127 +0,0 @@ -/* generated using openapi-typescript-codegen -- do no edit */ -/* istanbul ignore file */ -/* tslint:disable */ -/* eslint-disable */ -import type { DocumentVersionResponseModel } from '../models/DocumentVersionResponseModel'; -import type { PagedDocumentVersionItemResponseModel } from '../models/PagedDocumentVersionItemResponseModel'; - -import type { CancelablePromise } from '../core/CancelablePromise'; -import { OpenAPI } from '../core/OpenAPI'; -import { request as __request } from '../core/request'; - -export class DocumentVersionResource { - - /** - * @returns any Success - * @throws ApiError - */ - public static getDocumentVersion({ - documentId, - culture, - skip, - take = 100, - }: { - documentId: string, - culture?: string, - skip?: number, - take?: number, - }): CancelablePromise { - return __request(OpenAPI, { - method: 'GET', - url: '/umbraco/management/api/v1/document-version', - query: { - 'documentId': documentId, - 'culture': culture, - 'skip': skip, - 'take': take, - }, - errors: { - 400: `Bad Request`, - 401: `The resource is protected and requires an authentication token`, - 404: `Not Found`, - }, - }); - } - - /** - * @returns any Success - * @throws ApiError - */ - public static getDocumentVersionById({ - id, - }: { - id: string, - }): CancelablePromise { - return __request(OpenAPI, { - method: 'GET', - url: '/umbraco/management/api/v1/document-version/{id}', - path: { - 'id': id, - }, - errors: { - 400: `Bad Request`, - 401: `The resource is protected and requires an authentication token`, - 404: `Not Found`, - }, - }); - } - - /** - * @returns string Success - * @throws ApiError - */ - public static putDocumentVersionByIdPreventCleanup({ - id, - preventCleanup, - }: { - id: string, - preventCleanup?: boolean, - }): CancelablePromise { - return __request(OpenAPI, { - method: 'PUT', - url: '/umbraco/management/api/v1/document-version/{id}/prevent-cleanup', - path: { - 'id': id, - }, - query: { - 'preventCleanup': preventCleanup, - }, - responseHeader: 'Umb-Notifications', - errors: { - 400: `Bad Request`, - 401: `The resource is protected and requires an authentication token`, - 404: `Not Found`, - }, - }); - } - - /** - * @returns string Success - * @throws ApiError - */ - public static postDocumentVersionByIdRollback({ - id, - culture, - }: { - id: string, - culture?: string, - }): CancelablePromise { - return __request(OpenAPI, { - method: 'POST', - url: '/umbraco/management/api/v1/document-version/{id}/rollback', - path: { - 'id': id, - }, - query: { - 'culture': culture, - }, - responseHeader: 'Umb-Notifications', - errors: { - 400: `Bad Request`, - 401: `The resource is protected and requires an authentication token`, - 404: `Not Found`, - }, - }); - } - -} diff --git a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/services/DynamicRootResource.ts b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/services/DynamicRootResource.ts deleted file mode 100644 index 8b91f9bf26..0000000000 --- a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/services/DynamicRootResource.ts +++ /dev/null @@ -1,48 +0,0 @@ -/* generated using openapi-typescript-codegen -- do no edit */ -/* istanbul ignore file */ -/* tslint:disable */ -/* eslint-disable */ -import type { DynamicRootRequestModel } from '../models/DynamicRootRequestModel'; -import type { DynamicRootResponseModel } from '../models/DynamicRootResponseModel'; - -import type { CancelablePromise } from '../core/CancelablePromise'; -import { OpenAPI } from '../core/OpenAPI'; -import { request as __request } from '../core/request'; - -export class DynamicRootResource { - - /** - * @returns any Success - * @throws ApiError - */ - public static postDynamicRootQuery({ - requestBody, - }: { - requestBody?: DynamicRootRequestModel, - }): CancelablePromise { - return __request(OpenAPI, { - method: 'POST', - url: '/umbraco/management/api/v1/dynamic-root/query', - body: requestBody, - mediaType: 'application/json', - errors: { - 401: `The resource is protected and requires an authentication token`, - }, - }); - } - - /** - * @returns string Success - * @throws ApiError - */ - public static getDynamicRootSteps(): CancelablePromise> { - return __request(OpenAPI, { - method: 'GET', - url: '/umbraco/management/api/v1/dynamic-root/steps', - errors: { - 401: `The resource is protected and requires an authentication token`, - }, - }); - } - -} diff --git a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/services/HealthCheckResource.ts b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/services/HealthCheckResource.ts deleted file mode 100644 index c6f725d3a6..0000000000 --- a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/services/HealthCheckResource.ts +++ /dev/null @@ -1,106 +0,0 @@ -/* generated using openapi-typescript-codegen -- do no edit */ -/* istanbul ignore file */ -/* tslint:disable */ -/* eslint-disable */ -import type { HealthCheckActionRequestModel } from '../models/HealthCheckActionRequestModel'; -import type { HealthCheckGroupPresentationModel } from '../models/HealthCheckGroupPresentationModel'; -import type { HealthCheckGroupWithResultResponseModel } from '../models/HealthCheckGroupWithResultResponseModel'; -import type { HealthCheckResultResponseModel } from '../models/HealthCheckResultResponseModel'; -import type { PagedHealthCheckGroupResponseModel } from '../models/PagedHealthCheckGroupResponseModel'; - -import type { CancelablePromise } from '../core/CancelablePromise'; -import { OpenAPI } from '../core/OpenAPI'; -import { request as __request } from '../core/request'; - -export class HealthCheckResource { - - /** - * @returns any Success - * @throws ApiError - */ - public static getHealthCheckGroup({ - skip, - take = 100, - }: { - skip?: number, - take?: number, - }): CancelablePromise { - return __request(OpenAPI, { - method: 'GET', - url: '/umbraco/management/api/v1/health-check-group', - query: { - 'skip': skip, - 'take': take, - }, - errors: { - 401: `The resource is protected and requires an authentication token`, - }, - }); - } - - /** - * @returns any Success - * @throws ApiError - */ - public static getHealthCheckGroupByName({ - name, - }: { - name: string, - }): CancelablePromise { - return __request(OpenAPI, { - method: 'GET', - url: '/umbraco/management/api/v1/health-check-group/{name}', - path: { - 'name': name, - }, - errors: { - 401: `The resource is protected and requires an authentication token`, - 404: `Not Found`, - }, - }); - } - - /** - * @returns any Success - * @throws ApiError - */ - public static postHealthCheckGroupByNameCheck({ - name, - }: { - name: string, - }): CancelablePromise { - return __request(OpenAPI, { - method: 'POST', - url: '/umbraco/management/api/v1/health-check-group/{name}/check', - path: { - 'name': name, - }, - errors: { - 401: `The resource is protected and requires an authentication token`, - 404: `Not Found`, - }, - }); - } - - /** - * @returns any Success - * @throws ApiError - */ - public static postHealthCheckExecuteAction({ - requestBody, - }: { - requestBody?: HealthCheckActionRequestModel, - }): CancelablePromise { - return __request(OpenAPI, { - method: 'POST', - url: '/umbraco/management/api/v1/health-check/execute-action', - body: requestBody, - mediaType: 'application/json', - errors: { - 400: `Bad Request`, - 401: `The resource is protected and requires an authentication token`, - }, - }); - } - -} diff --git a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/services/HelpResource.ts b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/services/HelpResource.ts deleted file mode 100644 index a0e655e7af..0000000000 --- a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/services/HelpResource.ts +++ /dev/null @@ -1,47 +0,0 @@ -/* generated using openapi-typescript-codegen -- do no edit */ -/* istanbul ignore file */ -/* tslint:disable */ -/* eslint-disable */ -import type { PagedHelpPageResponseModel } from '../models/PagedHelpPageResponseModel'; - -import type { CancelablePromise } from '../core/CancelablePromise'; -import { OpenAPI } from '../core/OpenAPI'; -import { request as __request } from '../core/request'; - -export class HelpResource { - - /** - * @returns any Success - * @throws ApiError - */ - public static getHelp({ - section, - tree, - skip, - take = 100, - baseUrl = 'https://our.umbraco.com', - }: { - section?: string, - tree?: string, - skip?: number, - take?: number, - baseUrl?: string, - }): CancelablePromise { - return __request(OpenAPI, { - method: 'GET', - url: '/umbraco/management/api/v1/help', - query: { - 'section': section, - 'tree': tree, - 'skip': skip, - 'take': take, - 'baseUrl': baseUrl, - }, - errors: { - 400: `Bad Request`, - 401: `The resource is protected and requires an authentication token`, - }, - }); - } - -} diff --git a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/services/IndexerResource.ts b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/services/IndexerResource.ts deleted file mode 100644 index 98f9a8b49b..0000000000 --- a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/services/IndexerResource.ts +++ /dev/null @@ -1,85 +0,0 @@ -/* generated using openapi-typescript-codegen -- do no edit */ -/* istanbul ignore file */ -/* tslint:disable */ -/* eslint-disable */ -import type { IndexResponseModel } from '../models/IndexResponseModel'; -import type { PagedIndexResponseModel } from '../models/PagedIndexResponseModel'; - -import type { CancelablePromise } from '../core/CancelablePromise'; -import { OpenAPI } from '../core/OpenAPI'; -import { request as __request } from '../core/request'; - -export class IndexerResource { - - /** - * @returns any Success - * @throws ApiError - */ - public static getIndexer({ - skip, - take = 100, - }: { - skip?: number, - take?: number, - }): CancelablePromise { - return __request(OpenAPI, { - method: 'GET', - url: '/umbraco/management/api/v1/indexer', - query: { - 'skip': skip, - 'take': take, - }, - errors: { - 401: `The resource is protected and requires an authentication token`, - }, - }); - } - - /** - * @returns any Success - * @throws ApiError - */ - public static getIndexerByIndexName({ - indexName, - }: { - indexName: string, - }): CancelablePromise { - return __request(OpenAPI, { - method: 'GET', - url: '/umbraco/management/api/v1/indexer/{indexName}', - path: { - 'indexName': indexName, - }, - errors: { - 400: `Bad Request`, - 401: `The resource is protected and requires an authentication token`, - }, - }); - } - - /** - * @returns string Success - * @throws ApiError - */ - public static postIndexerByIndexNameRebuild({ - indexName, - }: { - indexName: string, - }): CancelablePromise { - return __request(OpenAPI, { - method: 'POST', - url: '/umbraco/management/api/v1/indexer/{indexName}/rebuild', - path: { - 'indexName': indexName, - }, - responseHeader: 'Umb-Notifications', - errors: { - 400: `Bad Request`, - 401: `The resource is protected and requires an authentication token`, - 404: `Not Found`, - 409: `Conflict`, - }, - }); - } - -} diff --git a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/services/InstallResource.ts b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/services/InstallResource.ts deleted file mode 100644 index cb350886f7..0000000000 --- a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/services/InstallResource.ts +++ /dev/null @@ -1,71 +0,0 @@ -/* generated using openapi-typescript-codegen -- do no edit */ -/* istanbul ignore file */ -/* tslint:disable */ -/* eslint-disable */ -import type { DatabaseInstallRequestModel } from '../models/DatabaseInstallRequestModel'; -import type { InstallRequestModel } from '../models/InstallRequestModel'; -import type { InstallSettingsResponseModel } from '../models/InstallSettingsResponseModel'; - -import type { CancelablePromise } from '../core/CancelablePromise'; -import { OpenAPI } from '../core/OpenAPI'; -import { request as __request } from '../core/request'; - -export class InstallResource { - - /** - * @returns any Success - * @throws ApiError - */ - public static getInstallSettings(): CancelablePromise { - return __request(OpenAPI, { - method: 'GET', - url: '/umbraco/management/api/v1/install/settings', - errors: { - 428: `Client Error`, - }, - }); - } - - /** - * @returns string Success - * @throws ApiError - */ - public static postInstallSetup({ - requestBody, - }: { - requestBody?: InstallRequestModel, - }): CancelablePromise { - return __request(OpenAPI, { - method: 'POST', - url: '/umbraco/management/api/v1/install/setup', - body: requestBody, - mediaType: 'application/json', - responseHeader: 'Umb-Notifications', - errors: { - 428: `Client Error`, - }, - }); - } - - /** - * @returns string Success - * @throws ApiError - */ - public static postInstallValidateDatabase({ - requestBody, - }: { - requestBody?: DatabaseInstallRequestModel, - }): CancelablePromise { - return __request(OpenAPI, { - method: 'POST', - url: '/umbraco/management/api/v1/install/validate-database', - body: requestBody, - mediaType: 'application/json', - responseHeader: 'Umb-Notifications', - errors: { - 400: `Bad Request`, - }, - }); - } - -} diff --git a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/services/LanguageResource.ts b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/services/LanguageResource.ts deleted file mode 100644 index 2226026620..0000000000 --- a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/services/LanguageResource.ts +++ /dev/null @@ -1,159 +0,0 @@ -/* generated using openapi-typescript-codegen -- do no edit */ -/* istanbul ignore file */ -/* tslint:disable */ -/* eslint-disable */ -import type { CreateLanguageRequestModel } from '../models/CreateLanguageRequestModel'; -import type { LanguageItemResponseModel } from '../models/LanguageItemResponseModel'; -import type { LanguageResponseModel } from '../models/LanguageResponseModel'; -import type { PagedLanguageResponseModel } from '../models/PagedLanguageResponseModel'; -import type { UpdateLanguageRequestModel } from '../models/UpdateLanguageRequestModel'; - -import type { CancelablePromise } from '../core/CancelablePromise'; -import { OpenAPI } from '../core/OpenAPI'; -import { request as __request } from '../core/request'; - -export class LanguageResource { - - /** - * @returns any Success - * @throws ApiError - */ - public static getItemLanguage({ - isoCode, - }: { - isoCode?: Array, - }): CancelablePromise> { - return __request(OpenAPI, { - method: 'GET', - url: '/umbraco/management/api/v1/item/language', - query: { - 'isoCode': isoCode, - }, - errors: { - 401: `The resource is protected and requires an authentication token`, - }, - }); - } - - /** - * @returns any Success - * @throws ApiError - */ - public static getLanguage({ - skip, - take = 100, - }: { - skip?: number, - take?: number, - }): CancelablePromise { - return __request(OpenAPI, { - method: 'GET', - url: '/umbraco/management/api/v1/language', - query: { - 'skip': skip, - 'take': take, - }, - errors: { - 401: `The resource is protected and requires an authentication token`, - }, - }); - } - - /** - * @returns string Created - * @throws ApiError - */ - public static postLanguage({ - requestBody, - }: { - requestBody?: CreateLanguageRequestModel, - }): CancelablePromise { - return __request(OpenAPI, { - method: 'POST', - url: '/umbraco/management/api/v1/language', - body: requestBody, - mediaType: 'application/json', - responseHeader: 'Umb-Generated-Resource', - errors: { - 400: `Bad Request`, - 401: `The resource is protected and requires an authentication token`, - 404: `Not Found`, - }, - }); - } - - /** - * @returns any Success - * @throws ApiError - */ - public static getLanguageByIsoCode({ - isoCode, - }: { - isoCode: string, - }): CancelablePromise { - return __request(OpenAPI, { - method: 'GET', - url: '/umbraco/management/api/v1/language/{isoCode}', - path: { - 'isoCode': isoCode, - }, - errors: { - 401: `The resource is protected and requires an authentication token`, - 404: `Not Found`, - }, - }); - } - - /** - * @returns string Success - * @throws ApiError - */ - public static deleteLanguageByIsoCode({ - isoCode, - }: { - isoCode: string, - }): CancelablePromise { - return __request(OpenAPI, { - method: 'DELETE', - url: '/umbraco/management/api/v1/language/{isoCode}', - path: { - 'isoCode': isoCode, - }, - responseHeader: 'Umb-Notifications', - errors: { - 400: `Bad Request`, - 401: `The resource is protected and requires an authentication token`, - 404: `Not Found`, - }, - }); - } - - /** - * @returns string Success - * @throws ApiError - */ - public static putLanguageByIsoCode({ - isoCode, - requestBody, - }: { - isoCode: string, - requestBody?: UpdateLanguageRequestModel, - }): CancelablePromise { - return __request(OpenAPI, { - method: 'PUT', - url: '/umbraco/management/api/v1/language/{isoCode}', - path: { - 'isoCode': isoCode, - }, - body: requestBody, - mediaType: 'application/json', - responseHeader: 'Umb-Notifications', - errors: { - 400: `Bad Request`, - 401: `The resource is protected and requires an authentication token`, - 404: `Not Found`, - }, - }); - } - -} diff --git a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/services/LogViewerResource.ts b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/services/LogViewerResource.ts deleted file mode 100644 index b7b40ca217..0000000000 --- a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/services/LogViewerResource.ts +++ /dev/null @@ -1,256 +0,0 @@ -/* generated using openapi-typescript-codegen -- do no edit */ -/* istanbul ignore file */ -/* tslint:disable */ -/* eslint-disable */ -import type { DirectionModel } from '../models/DirectionModel'; -import type { LogLevelCountsReponseModel } from '../models/LogLevelCountsReponseModel'; -import type { LogLevelModel } from '../models/LogLevelModel'; -import type { PagedLoggerResponseModel } from '../models/PagedLoggerResponseModel'; -import type { PagedLogMessageResponseModel } from '../models/PagedLogMessageResponseModel'; -import type { PagedLogTemplateResponseModel } from '../models/PagedLogTemplateResponseModel'; -import type { PagedSavedLogSearchResponseModel } from '../models/PagedSavedLogSearchResponseModel'; -import type { SavedLogSearchRequestModel } from '../models/SavedLogSearchRequestModel'; -import type { SavedLogSearchResponseModel } from '../models/SavedLogSearchResponseModel'; - -import type { CancelablePromise } from '../core/CancelablePromise'; -import { OpenAPI } from '../core/OpenAPI'; -import { request as __request } from '../core/request'; - -export class LogViewerResource { - - /** - * @returns any Success - * @throws ApiError - */ - public static getLogViewerLevel({ - skip, - take = 100, - }: { - skip?: number, - take?: number, - }): CancelablePromise { - return __request(OpenAPI, { - method: 'GET', - url: '/umbraco/management/api/v1/log-viewer/level', - query: { - 'skip': skip, - 'take': take, - }, - errors: { - 401: `The resource is protected and requires an authentication token`, - }, - }); - } - - /** - * @returns any Success - * @throws ApiError - */ - public static getLogViewerLevelCount({ - startDate, - endDate, - }: { - startDate?: string, - endDate?: string, - }): CancelablePromise { - return __request(OpenAPI, { - method: 'GET', - url: '/umbraco/management/api/v1/log-viewer/level-count', - query: { - 'startDate': startDate, - 'endDate': endDate, - }, - errors: { - 400: `Bad Request`, - 401: `The resource is protected and requires an authentication token`, - }, - }); - } - - /** - * @returns any Success - * @throws ApiError - */ - public static getLogViewerLog({ - skip, - take = 100, - orderDirection, - filterExpression, - logLevel, - startDate, - endDate, - }: { - skip?: number, - take?: number, - orderDirection?: DirectionModel, - filterExpression?: string, - logLevel?: Array, - startDate?: string, - endDate?: string, - }): CancelablePromise { - return __request(OpenAPI, { - method: 'GET', - url: '/umbraco/management/api/v1/log-viewer/log', - query: { - 'skip': skip, - 'take': take, - 'orderDirection': orderDirection, - 'filterExpression': filterExpression, - 'logLevel': logLevel, - 'startDate': startDate, - 'endDate': endDate, - }, - errors: { - 401: `The resource is protected and requires an authentication token`, - }, - }); - } - - /** - * @returns any Success - * @throws ApiError - */ - public static getLogViewerMessageTemplate({ - skip, - take = 100, - startDate, - endDate, - }: { - skip?: number, - take?: number, - startDate?: string, - endDate?: string, - }): CancelablePromise { - return __request(OpenAPI, { - method: 'GET', - url: '/umbraco/management/api/v1/log-viewer/message-template', - query: { - 'skip': skip, - 'take': take, - 'startDate': startDate, - 'endDate': endDate, - }, - errors: { - 400: `Bad Request`, - 401: `The resource is protected and requires an authentication token`, - }, - }); - } - - /** - * @returns any Success - * @throws ApiError - */ - public static getLogViewerSavedSearch({ - skip, - take = 100, - }: { - skip?: number, - take?: number, - }): CancelablePromise { - return __request(OpenAPI, { - method: 'GET', - url: '/umbraco/management/api/v1/log-viewer/saved-search', - query: { - 'skip': skip, - 'take': take, - }, - errors: { - 401: `The resource is protected and requires an authentication token`, - }, - }); - } - - /** - * @returns string Created - * @throws ApiError - */ - public static postLogViewerSavedSearch({ - requestBody, - }: { - requestBody?: SavedLogSearchRequestModel, - }): CancelablePromise { - return __request(OpenAPI, { - method: 'POST', - url: '/umbraco/management/api/v1/log-viewer/saved-search', - body: requestBody, - mediaType: 'application/json', - responseHeader: 'Umb-Generated-Resource', - errors: { - 400: `Bad Request`, - 401: `The resource is protected and requires an authentication token`, - }, - }); - } - - /** - * @returns any Success - * @throws ApiError - */ - public static getLogViewerSavedSearchByName({ - name, - }: { - name: string, - }): CancelablePromise { - return __request(OpenAPI, { - method: 'GET', - url: '/umbraco/management/api/v1/log-viewer/saved-search/{name}', - path: { - 'name': name, - }, - errors: { - 401: `The resource is protected and requires an authentication token`, - 404: `Not Found`, - }, - }); - } - - /** - * @returns string Success - * @throws ApiError - */ - public static deleteLogViewerSavedSearchByName({ - name, - }: { - name: string, - }): CancelablePromise { - return __request(OpenAPI, { - method: 'DELETE', - url: '/umbraco/management/api/v1/log-viewer/saved-search/{name}', - path: { - 'name': name, - }, - responseHeader: 'Umb-Notifications', - errors: { - 401: `The resource is protected and requires an authentication token`, - 404: `Not Found`, - }, - }); - } - - /** - * @returns any Success - * @throws ApiError - */ - public static getLogViewerValidateLogsSize({ - startDate, - endDate, - }: { - startDate?: string, - endDate?: string, - }): CancelablePromise { - return __request(OpenAPI, { - method: 'GET', - url: '/umbraco/management/api/v1/log-viewer/validate-logs-size', - query: { - 'startDate': startDate, - 'endDate': endDate, - }, - errors: { - 400: `Bad Request`, - 401: `The resource is protected and requires an authentication token`, - }, - }); - } - -} diff --git a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/services/MediaResource.ts b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/services/MediaResource.ts deleted file mode 100644 index 13e488d10b..0000000000 --- a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/services/MediaResource.ts +++ /dev/null @@ -1,671 +0,0 @@ -/* generated using openapi-typescript-codegen -- do no edit */ -/* istanbul ignore file */ -/* tslint:disable */ -/* eslint-disable */ -import type { CreateMediaRequestModel } from '../models/CreateMediaRequestModel'; -import type { DirectionModel } from '../models/DirectionModel'; -import type { MediaConfigurationResponseModel } from '../models/MediaConfigurationResponseModel'; -import type { MediaItemResponseModel } from '../models/MediaItemResponseModel'; -import type { MediaResponseModel } from '../models/MediaResponseModel'; -import type { MediaTreeItemResponseModel } from '../models/MediaTreeItemResponseModel'; -import type { MoveMediaRequestModel } from '../models/MoveMediaRequestModel'; -import type { PagedIReferenceResponseModel } from '../models/PagedIReferenceResponseModel'; -import type { PagedMediaCollectionResponseModel } from '../models/PagedMediaCollectionResponseModel'; -import type { PagedMediaRecycleBinItemResponseModel } from '../models/PagedMediaRecycleBinItemResponseModel'; -import type { PagedMediaTreeItemResponseModel } from '../models/PagedMediaTreeItemResponseModel'; -import type { PagedModelMediaItemResponseModel } from '../models/PagedModelMediaItemResponseModel'; -import type { PagedReferenceByIdModel } from '../models/PagedReferenceByIdModel'; -import type { ReferenceByIdModel } from '../models/ReferenceByIdModel'; -import type { SortingRequestModel } from '../models/SortingRequestModel'; -import type { UpdateMediaRequestModel } from '../models/UpdateMediaRequestModel'; - -import type { CancelablePromise } from '../core/CancelablePromise'; -import { OpenAPI } from '../core/OpenAPI'; -import { request as __request } from '../core/request'; - -export class MediaResource { - - /** - * @returns any Success - * @throws ApiError - */ - public static getCollectionMedia({ - id, - dataTypeId, - orderBy = 'updateDate', - orderDirection, - filter, - skip, - take = 100, - }: { - id?: string, - dataTypeId?: string, - orderBy?: string, - orderDirection?: DirectionModel, - filter?: string, - skip?: number, - take?: number, - }): CancelablePromise { - return __request(OpenAPI, { - method: 'GET', - url: '/umbraco/management/api/v1/collection/media', - query: { - 'id': id, - 'dataTypeId': dataTypeId, - 'orderBy': orderBy, - 'orderDirection': orderDirection, - 'filter': filter, - 'skip': skip, - 'take': take, - }, - errors: { - 400: `Bad Request`, - 401: `The resource is protected and requires an authentication token`, - 404: `Not Found`, - }, - }); - } - - /** - * @returns any Success - * @throws ApiError - */ - public static getItemMedia({ - id, - }: { - id?: Array, - }): CancelablePromise> { - return __request(OpenAPI, { - method: 'GET', - url: '/umbraco/management/api/v1/item/media', - query: { - 'id': id, - }, - errors: { - 401: `The resource is protected and requires an authentication token`, - }, - }); - } - - /** - * @returns any Success - * @throws ApiError - */ - public static getItemMediaSearch({ - query, - skip, - take = 100, - }: { - query?: string, - skip?: number, - take?: number, - }): CancelablePromise { - return __request(OpenAPI, { - method: 'GET', - url: '/umbraco/management/api/v1/item/media/search', - query: { - 'query': query, - 'skip': skip, - 'take': take, - }, - errors: { - 401: `The resource is protected and requires an authentication token`, - }, - }); - } - - /** - * @returns string Created - * @throws ApiError - */ - public static postMedia({ - requestBody, - }: { - requestBody?: CreateMediaRequestModel, - }): CancelablePromise { - return __request(OpenAPI, { - method: 'POST', - url: '/umbraco/management/api/v1/media', - body: requestBody, - mediaType: 'application/json', - responseHeader: 'Umb-Generated-Resource', - errors: { - 400: `Bad Request`, - 401: `The resource is protected and requires an authentication token`, - 403: `The authenticated user do not have access to this resource`, - 404: `Not Found`, - }, - }); - } - - /** - * @returns any Success - * @throws ApiError - */ - public static getMediaById({ - id, - }: { - id: string, - }): CancelablePromise { - return __request(OpenAPI, { - method: 'GET', - url: '/umbraco/management/api/v1/media/{id}', - path: { - 'id': id, - }, - errors: { - 401: `The resource is protected and requires an authentication token`, - 403: `The authenticated user do not have access to this resource`, - 404: `Not Found`, - }, - }); - } - - /** - * @returns string Success - * @throws ApiError - */ - public static deleteMediaById({ - id, - }: { - id: string, - }): CancelablePromise { - return __request(OpenAPI, { - method: 'DELETE', - url: '/umbraco/management/api/v1/media/{id}', - path: { - 'id': id, - }, - responseHeader: 'Umb-Notifications', - errors: { - 400: `Bad Request`, - 401: `The resource is protected and requires an authentication token`, - 403: `The authenticated user do not have access to this resource`, - 404: `Not Found`, - }, - }); - } - - /** - * @returns string Success - * @throws ApiError - */ - public static putMediaById({ - id, - requestBody, - }: { - id: string, - requestBody?: UpdateMediaRequestModel, - }): CancelablePromise { - return __request(OpenAPI, { - method: 'PUT', - url: '/umbraco/management/api/v1/media/{id}', - path: { - 'id': id, - }, - body: requestBody, - mediaType: 'application/json', - responseHeader: 'Umb-Notifications', - errors: { - 400: `Bad Request`, - 401: `The resource is protected and requires an authentication token`, - 403: `The authenticated user do not have access to this resource`, - 404: `Not Found`, - }, - }); - } - - /** - * @returns string Success - * @throws ApiError - */ - public static putMediaByIdMove({ - id, - requestBody, - }: { - id: string, - requestBody?: MoveMediaRequestModel, - }): CancelablePromise { - return __request(OpenAPI, { - method: 'PUT', - url: '/umbraco/management/api/v1/media/{id}/move', - path: { - 'id': id, - }, - body: requestBody, - mediaType: 'application/json', - responseHeader: 'Umb-Notifications', - errors: { - 401: `The resource is protected and requires an authentication token`, - 403: `The authenticated user do not have access to this resource`, - 404: `Not Found`, - }, - }); - } - - /** - * @returns string Success - * @throws ApiError - */ - public static putMediaByIdMoveToRecycleBin({ - id, - }: { - id: string, - }): CancelablePromise { - return __request(OpenAPI, { - method: 'PUT', - url: '/umbraco/management/api/v1/media/{id}/move-to-recycle-bin', - path: { - 'id': id, - }, - responseHeader: 'Umb-Notifications', - errors: { - 400: `Bad Request`, - 401: `The resource is protected and requires an authentication token`, - 403: `The authenticated user do not have access to this resource`, - 404: `Not Found`, - }, - }); - } - - /** - * @returns any Success - * @throws ApiError - */ - public static getMediaByIdReferencedBy({ - id, - skip, - take = 20, - }: { - id: string, - skip?: number, - take?: number, - }): CancelablePromise { - return __request(OpenAPI, { - method: 'GET', - url: '/umbraco/management/api/v1/media/{id}/referenced-by', - path: { - 'id': id, - }, - query: { - 'skip': skip, - 'take': take, - }, - errors: { - 401: `The resource is protected and requires an authentication token`, - }, - }); - } - - /** - * @returns any Success - * @throws ApiError - */ - public static getMediaByIdReferencedDescendants({ - id, - skip, - take = 20, - }: { - id: string, - skip?: number, - take?: number, - }): CancelablePromise { - return __request(OpenAPI, { - method: 'GET', - url: '/umbraco/management/api/v1/media/{id}/referenced-descendants', - path: { - 'id': id, - }, - query: { - 'skip': skip, - 'take': take, - }, - errors: { - 401: `The resource is protected and requires an authentication token`, - }, - }); - } - - /** - * @returns string Success - * @throws ApiError - */ - public static putMediaByIdValidate({ - id, - requestBody, - }: { - id: string, - requestBody?: UpdateMediaRequestModel, - }): CancelablePromise { - return __request(OpenAPI, { - method: 'PUT', - url: '/umbraco/management/api/v1/media/{id}/validate', - path: { - 'id': id, - }, - body: requestBody, - mediaType: 'application/json', - responseHeader: 'Umb-Notifications', - errors: { - 400: `Bad Request`, - 401: `The resource is protected and requires an authentication token`, - 403: `The authenticated user do not have access to this resource`, - 404: `Not Found`, - }, - }); - } - - /** - * @returns any Success - * @throws ApiError - */ - public static getMediaAreReferenced({ - id, - skip, - take = 20, - }: { - id?: Array, - skip?: number, - take?: number, - }): CancelablePromise { - return __request(OpenAPI, { - method: 'GET', - url: '/umbraco/management/api/v1/media/are-referenced', - query: { - 'id': id, - 'skip': skip, - 'take': take, - }, - errors: { - 401: `The resource is protected and requires an authentication token`, - }, - }); - } - - /** - * @returns any Success - * @throws ApiError - */ - public static getMediaConfiguration(): CancelablePromise { - return __request(OpenAPI, { - method: 'GET', - url: '/umbraco/management/api/v1/media/configuration', - errors: { - 401: `The resource is protected and requires an authentication token`, - }, - }); - } - - /** - * @returns string Success - * @throws ApiError - */ - public static putMediaSort({ - requestBody, - }: { - requestBody?: SortingRequestModel, - }): CancelablePromise { - return __request(OpenAPI, { - method: 'PUT', - url: '/umbraco/management/api/v1/media/sort', - body: requestBody, - mediaType: 'application/json', - responseHeader: 'Umb-Notifications', - errors: { - 400: `Bad Request`, - 401: `The resource is protected and requires an authentication token`, - 403: `The authenticated user do not have access to this resource`, - 404: `Not Found`, - }, - }); - } - - /** - * @returns string Success - * @throws ApiError - */ - public static postMediaValidate({ - requestBody, - }: { - requestBody?: CreateMediaRequestModel, - }): CancelablePromise { - return __request(OpenAPI, { - method: 'POST', - url: '/umbraco/management/api/v1/media/validate', - body: requestBody, - mediaType: 'application/json', - responseHeader: 'Umb-Notifications', - errors: { - 400: `Bad Request`, - 401: `The resource is protected and requires an authentication token`, - 403: `The authenticated user do not have access to this resource`, - 404: `Not Found`, - }, - }); - } - - /** - * @returns string Success - * @throws ApiError - */ - public static deleteRecycleBinMedia(): CancelablePromise { - return __request(OpenAPI, { - method: 'DELETE', - url: '/umbraco/management/api/v1/recycle-bin/media', - responseHeader: 'Umb-Notifications', - errors: { - 400: `Bad Request`, - 401: `The resource is protected and requires an authentication token`, - 403: `The authenticated user do not have access to this resource`, - }, - }); - } - - /** - * @returns string Success - * @throws ApiError - */ - public static deleteRecycleBinMediaById({ - id, - }: { - id: string, - }): CancelablePromise { - return __request(OpenAPI, { - method: 'DELETE', - url: '/umbraco/management/api/v1/recycle-bin/media/{id}', - path: { - 'id': id, - }, - responseHeader: 'Umb-Notifications', - errors: { - 400: `Bad Request`, - 401: `The resource is protected and requires an authentication token`, - 403: `The authenticated user do not have access to this resource`, - 404: `Not Found`, - }, - }); - } - - /** - * @returns any Success - * @throws ApiError - */ - public static getRecycleBinMediaByIdOriginalParent({ - id, - }: { - id: string, - }): CancelablePromise { - return __request(OpenAPI, { - method: 'GET', - url: '/umbraco/management/api/v1/recycle-bin/media/{id}/original-parent', - path: { - 'id': id, - }, - errors: { - 400: `Bad Request`, - 401: `The resource is protected and requires an authentication token`, - 403: `The authenticated user do not have access to this resource`, - 404: `Not Found`, - }, - }); - } - - /** - * @returns string Success - * @throws ApiError - */ - public static putRecycleBinMediaByIdRestore({ - id, - requestBody, - }: { - id: string, - requestBody?: MoveMediaRequestModel, - }): CancelablePromise { - return __request(OpenAPI, { - method: 'PUT', - url: '/umbraco/management/api/v1/recycle-bin/media/{id}/restore', - path: { - 'id': id, - }, - body: requestBody, - mediaType: 'application/json', - responseHeader: 'Umb-Notifications', - errors: { - 400: `Bad Request`, - 401: `The resource is protected and requires an authentication token`, - 403: `The authenticated user do not have access to this resource`, - 404: `Not Found`, - }, - }); - } - - /** - * @returns any Success - * @throws ApiError - */ - public static getRecycleBinMediaChildren({ - parentId, - skip, - take = 100, - }: { - parentId?: string, - skip?: number, - take?: number, - }): CancelablePromise { - return __request(OpenAPI, { - method: 'GET', - url: '/umbraco/management/api/v1/recycle-bin/media/children', - query: { - 'parentId': parentId, - 'skip': skip, - 'take': take, - }, - errors: { - 401: `The resource is protected and requires an authentication token`, - }, - }); - } - - /** - * @returns any Success - * @throws ApiError - */ - public static getRecycleBinMediaRoot({ - skip, - take = 100, - }: { - skip?: number, - take?: number, - }): CancelablePromise { - return __request(OpenAPI, { - method: 'GET', - url: '/umbraco/management/api/v1/recycle-bin/media/root', - query: { - 'skip': skip, - 'take': take, - }, - errors: { - 401: `The resource is protected and requires an authentication token`, - }, - }); - } - - /** - * @returns any Success - * @throws ApiError - */ - public static getTreeMediaAncestors({ - descendantId, - }: { - descendantId?: string, - }): CancelablePromise> { - return __request(OpenAPI, { - method: 'GET', - url: '/umbraco/management/api/v1/tree/media/ancestors', - query: { - 'descendantId': descendantId, - }, - errors: { - 401: `The resource is protected and requires an authentication token`, - }, - }); - } - - /** - * @returns any Success - * @throws ApiError - */ - public static getTreeMediaChildren({ - parentId, - skip, - take = 100, - dataTypeId, - }: { - parentId?: string, - skip?: number, - take?: number, - dataTypeId?: string, - }): CancelablePromise { - return __request(OpenAPI, { - method: 'GET', - url: '/umbraco/management/api/v1/tree/media/children', - query: { - 'parentId': parentId, - 'skip': skip, - 'take': take, - 'dataTypeId': dataTypeId, - }, - errors: { - 401: `The resource is protected and requires an authentication token`, - }, - }); - } - - /** - * @returns any Success - * @throws ApiError - */ - public static getTreeMediaRoot({ - skip, - take = 100, - dataTypeId, - }: { - skip?: number, - take?: number, - dataTypeId?: string, - }): CancelablePromise { - return __request(OpenAPI, { - method: 'GET', - url: '/umbraco/management/api/v1/tree/media/root', - query: { - 'skip': skip, - 'take': take, - 'dataTypeId': dataTypeId, - }, - errors: { - 401: `The resource is protected and requires an authentication token`, - }, - }); - } - -} diff --git a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/services/MediaTypeResource.ts b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/services/MediaTypeResource.ts deleted file mode 100644 index 3f6d2410eb..0000000000 --- a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/services/MediaTypeResource.ts +++ /dev/null @@ -1,500 +0,0 @@ -/* generated using openapi-typescript-codegen -- do no edit */ -/* istanbul ignore file */ -/* tslint:disable */ -/* eslint-disable */ -import type { AvailableMediaTypeCompositionResponseModel } from '../models/AvailableMediaTypeCompositionResponseModel'; -import type { CopyMediaTypeRequestModel } from '../models/CopyMediaTypeRequestModel'; -import type { CreateFolderRequestModel } from '../models/CreateFolderRequestModel'; -import type { CreateMediaTypeRequestModel } from '../models/CreateMediaTypeRequestModel'; -import type { FolderResponseModel } from '../models/FolderResponseModel'; -import type { MediaTypeCompositionRequestModel } from '../models/MediaTypeCompositionRequestModel'; -import type { MediaTypeCompositionResponseModel } from '../models/MediaTypeCompositionResponseModel'; -import type { MediaTypeItemResponseModel } from '../models/MediaTypeItemResponseModel'; -import type { MediaTypeResponseModel } from '../models/MediaTypeResponseModel'; -import type { MediaTypeTreeItemResponseModel } from '../models/MediaTypeTreeItemResponseModel'; -import type { MoveMediaTypeRequestModel } from '../models/MoveMediaTypeRequestModel'; -import type { PagedAllowedMediaTypeModel } from '../models/PagedAllowedMediaTypeModel'; -import type { PagedMediaTypeTreeItemResponseModel } from '../models/PagedMediaTypeTreeItemResponseModel'; -import type { PagedModelMediaTypeItemResponseModel } from '../models/PagedModelMediaTypeItemResponseModel'; -import type { UpdateFolderResponseModel } from '../models/UpdateFolderResponseModel'; -import type { UpdateMediaTypeRequestModel } from '../models/UpdateMediaTypeRequestModel'; - -import type { CancelablePromise } from '../core/CancelablePromise'; -import { OpenAPI } from '../core/OpenAPI'; -import { request as __request } from '../core/request'; - -export class MediaTypeResource { - - /** - * @returns any Success - * @throws ApiError - */ - public static getItemMediaType({ - id, - }: { - id?: Array, - }): CancelablePromise> { - return __request(OpenAPI, { - method: 'GET', - url: '/umbraco/management/api/v1/item/media-type', - query: { - 'id': id, - }, - errors: { - 401: `The resource is protected and requires an authentication token`, - }, - }); - } - - /** - * @returns any Success - * @throws ApiError - */ - public static getItemMediaTypeSearch({ - query, - skip, - take = 100, - }: { - query?: string, - skip?: number, - take?: number, - }): CancelablePromise { - return __request(OpenAPI, { - method: 'GET', - url: '/umbraco/management/api/v1/item/media-type/search', - query: { - 'query': query, - 'skip': skip, - 'take': take, - }, - errors: { - 401: `The resource is protected and requires an authentication token`, - }, - }); - } - - /** - * @returns string Created - * @throws ApiError - */ - public static postMediaType({ - requestBody, - }: { - requestBody?: CreateMediaTypeRequestModel, - }): CancelablePromise { - return __request(OpenAPI, { - method: 'POST', - url: '/umbraco/management/api/v1/media-type', - body: requestBody, - mediaType: 'application/json', - responseHeader: 'Umb-Generated-Resource', - errors: { - 400: `Bad Request`, - 401: `The resource is protected and requires an authentication token`, - 404: `Not Found`, - }, - }); - } - - /** - * @returns any Success - * @throws ApiError - */ - public static getMediaTypeById({ - id, - }: { - id: string, - }): CancelablePromise { - return __request(OpenAPI, { - method: 'GET', - url: '/umbraco/management/api/v1/media-type/{id}', - path: { - 'id': id, - }, - errors: { - 401: `The resource is protected and requires an authentication token`, - 404: `Not Found`, - }, - }); - } - - /** - * @returns string Success - * @throws ApiError - */ - public static deleteMediaTypeById({ - id, - }: { - id: string, - }): CancelablePromise { - return __request(OpenAPI, { - method: 'DELETE', - url: '/umbraco/management/api/v1/media-type/{id}', - path: { - 'id': id, - }, - responseHeader: 'Umb-Notifications', - errors: { - 401: `The resource is protected and requires an authentication token`, - 404: `Not Found`, - }, - }); - } - - /** - * @returns string Success - * @throws ApiError - */ - public static putMediaTypeById({ - id, - requestBody, - }: { - id: string, - requestBody?: UpdateMediaTypeRequestModel, - }): CancelablePromise { - return __request(OpenAPI, { - method: 'PUT', - url: '/umbraco/management/api/v1/media-type/{id}', - path: { - 'id': id, - }, - body: requestBody, - mediaType: 'application/json', - responseHeader: 'Umb-Notifications', - errors: { - 400: `Bad Request`, - 401: `The resource is protected and requires an authentication token`, - 404: `Not Found`, - }, - }); - } - - /** - * @returns any Success - * @throws ApiError - */ - public static getMediaTypeByIdAllowedChildren({ - id, - skip, - take = 100, - }: { - id: string, - skip?: number, - take?: number, - }): CancelablePromise { - return __request(OpenAPI, { - method: 'GET', - url: '/umbraco/management/api/v1/media-type/{id}/allowed-children', - path: { - 'id': id, - }, - query: { - 'skip': skip, - 'take': take, - }, - errors: { - 401: `The resource is protected and requires an authentication token`, - 404: `Not Found`, - }, - }); - } - - /** - * @returns any Success - * @throws ApiError - */ - public static getMediaTypeByIdCompositionReferences({ - id, - }: { - id: string, - }): CancelablePromise> { - return __request(OpenAPI, { - method: 'GET', - url: '/umbraco/management/api/v1/media-type/{id}/composition-references', - path: { - 'id': id, - }, - errors: { - 400: `Bad Request`, - 401: `The resource is protected and requires an authentication token`, - 404: `Not Found`, - }, - }); - } - - /** - * @returns string Created - * @throws ApiError - */ - public static postMediaTypeByIdCopy({ - id, - requestBody, - }: { - id: string, - requestBody?: CopyMediaTypeRequestModel, - }): CancelablePromise { - return __request(OpenAPI, { - method: 'POST', - url: '/umbraco/management/api/v1/media-type/{id}/copy', - path: { - 'id': id, - }, - body: requestBody, - mediaType: 'application/json', - responseHeader: 'Umb-Generated-Resource', - errors: { - 400: `Bad Request`, - 401: `The resource is protected and requires an authentication token`, - 404: `Not Found`, - }, - }); - } - - /** - * @returns string Success - * @throws ApiError - */ - public static putMediaTypeByIdMove({ - id, - requestBody, - }: { - id: string, - requestBody?: MoveMediaTypeRequestModel, - }): CancelablePromise { - return __request(OpenAPI, { - method: 'PUT', - url: '/umbraco/management/api/v1/media-type/{id}/move', - path: { - 'id': id, - }, - body: requestBody, - mediaType: 'application/json', - responseHeader: 'Umb-Notifications', - errors: { - 400: `Bad Request`, - 401: `The resource is protected and requires an authentication token`, - 404: `Not Found`, - }, - }); - } - - /** - * @returns any Success - * @throws ApiError - */ - public static getMediaTypeAllowedAtRoot({ - skip, - take = 100, - }: { - skip?: number, - take?: number, - }): CancelablePromise { - return __request(OpenAPI, { - method: 'GET', - url: '/umbraco/management/api/v1/media-type/allowed-at-root', - query: { - 'skip': skip, - 'take': take, - }, - errors: { - 401: `The resource is protected and requires an authentication token`, - }, - }); - } - - /** - * @returns any Success - * @throws ApiError - */ - public static postMediaTypeAvailableCompositions({ - requestBody, - }: { - requestBody?: MediaTypeCompositionRequestModel, - }): CancelablePromise> { - return __request(OpenAPI, { - method: 'POST', - url: '/umbraco/management/api/v1/media-type/available-compositions', - body: requestBody, - mediaType: 'application/json', - errors: { - 401: `The resource is protected and requires an authentication token`, - }, - }); - } - - /** - * @returns string Created - * @throws ApiError - */ - public static postMediaTypeFolder({ - requestBody, - }: { - requestBody?: CreateFolderRequestModel, - }): CancelablePromise { - return __request(OpenAPI, { - method: 'POST', - url: '/umbraco/management/api/v1/media-type/folder', - body: requestBody, - mediaType: 'application/json', - responseHeader: 'Umb-Generated-Resource', - errors: { - 400: `Bad Request`, - 401: `The resource is protected and requires an authentication token`, - 404: `Not Found`, - }, - }); - } - - /** - * @returns any Success - * @throws ApiError - */ - public static getMediaTypeFolderById({ - id, - }: { - id: string, - }): CancelablePromise { - return __request(OpenAPI, { - method: 'GET', - url: '/umbraco/management/api/v1/media-type/folder/{id}', - path: { - 'id': id, - }, - errors: { - 401: `The resource is protected and requires an authentication token`, - 404: `Not Found`, - }, - }); - } - - /** - * @returns string Success - * @throws ApiError - */ - public static deleteMediaTypeFolderById({ - id, - }: { - id: string, - }): CancelablePromise { - return __request(OpenAPI, { - method: 'DELETE', - url: '/umbraco/management/api/v1/media-type/folder/{id}', - path: { - 'id': id, - }, - responseHeader: 'Umb-Notifications', - errors: { - 400: `Bad Request`, - 401: `The resource is protected and requires an authentication token`, - 404: `Not Found`, - }, - }); - } - - /** - * @returns string Success - * @throws ApiError - */ - public static putMediaTypeFolderById({ - id, - requestBody, - }: { - id: string, - requestBody?: UpdateFolderResponseModel, - }): CancelablePromise { - return __request(OpenAPI, { - method: 'PUT', - url: '/umbraco/management/api/v1/media-type/folder/{id}', - path: { - 'id': id, - }, - body: requestBody, - mediaType: 'application/json', - responseHeader: 'Umb-Notifications', - errors: { - 400: `Bad Request`, - 401: `The resource is protected and requires an authentication token`, - 404: `Not Found`, - }, - }); - } - - /** - * @returns any Success - * @throws ApiError - */ - public static getTreeMediaTypeAncestors({ - descendantId, - }: { - descendantId?: string, - }): CancelablePromise> { - return __request(OpenAPI, { - method: 'GET', - url: '/umbraco/management/api/v1/tree/media-type/ancestors', - query: { - 'descendantId': descendantId, - }, - errors: { - 401: `The resource is protected and requires an authentication token`, - }, - }); - } - - /** - * @returns any Success - * @throws ApiError - */ - public static getTreeMediaTypeChildren({ - parentId, - skip, - take = 100, - foldersOnly = false, - }: { - parentId?: string, - skip?: number, - take?: number, - foldersOnly?: boolean, - }): CancelablePromise { - return __request(OpenAPI, { - method: 'GET', - url: '/umbraco/management/api/v1/tree/media-type/children', - query: { - 'parentId': parentId, - 'skip': skip, - 'take': take, - 'foldersOnly': foldersOnly, - }, - errors: { - 401: `The resource is protected and requires an authentication token`, - }, - }); - } - - /** - * @returns any Success - * @throws ApiError - */ - public static getTreeMediaTypeRoot({ - skip, - take = 100, - foldersOnly = false, - }: { - skip?: number, - take?: number, - foldersOnly?: boolean, - }): CancelablePromise { - return __request(OpenAPI, { - method: 'GET', - url: '/umbraco/management/api/v1/tree/media-type/root', - query: { - 'skip': skip, - 'take': take, - 'foldersOnly': foldersOnly, - }, - errors: { - 401: `The resource is protected and requires an authentication token`, - }, - }); - } - -} diff --git a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/services/MemberGroupResource.ts b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/services/MemberGroupResource.ts deleted file mode 100644 index d80e275f0e..0000000000 --- a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/services/MemberGroupResource.ts +++ /dev/null @@ -1,181 +0,0 @@ -/* generated using openapi-typescript-codegen -- do no edit */ -/* istanbul ignore file */ -/* tslint:disable */ -/* eslint-disable */ -import type { CreateMemberGroupRequestModel } from '../models/CreateMemberGroupRequestModel'; -import type { MemberGroupItemResponseModel } from '../models/MemberGroupItemResponseModel'; -import type { MemberGroupResponseModel } from '../models/MemberGroupResponseModel'; -import type { PagedMemberGroupResponseModel } from '../models/PagedMemberGroupResponseModel'; -import type { PagedNamedEntityTreeItemResponseModel } from '../models/PagedNamedEntityTreeItemResponseModel'; -import type { UpdateMemberGroupRequestModel } from '../models/UpdateMemberGroupRequestModel'; - -import type { CancelablePromise } from '../core/CancelablePromise'; -import { OpenAPI } from '../core/OpenAPI'; -import { request as __request } from '../core/request'; - -export class MemberGroupResource { - - /** - * @returns any Success - * @throws ApiError - */ - public static getItemMemberGroup({ - id, - }: { - id?: Array, - }): CancelablePromise> { - return __request(OpenAPI, { - method: 'GET', - url: '/umbraco/management/api/v1/item/member-group', - query: { - 'id': id, - }, - errors: { - 401: `The resource is protected and requires an authentication token`, - }, - }); - } - - /** - * @returns any Success - * @throws ApiError - */ - public static getMemberGroup({ - skip, - take = 100, - }: { - skip?: number, - take?: number, - }): CancelablePromise { - return __request(OpenAPI, { - method: 'GET', - url: '/umbraco/management/api/v1/member-group', - query: { - 'skip': skip, - 'take': take, - }, - errors: { - 401: `The resource is protected and requires an authentication token`, - }, - }); - } - - /** - * @returns any Success - * @throws ApiError - */ - public static postMemberGroup({ - requestBody, - }: { - requestBody?: CreateMemberGroupRequestModel, - }): CancelablePromise { - return __request(OpenAPI, { - method: 'POST', - url: '/umbraco/management/api/v1/member-group', - body: requestBody, - mediaType: 'application/json', - errors: { - 400: `Bad Request`, - 401: `The resource is protected and requires an authentication token`, - }, - }); - } - - /** - * @returns any Success - * @throws ApiError - */ - public static getMemberGroupById({ - id, - }: { - id: string, - }): CancelablePromise { - return __request(OpenAPI, { - method: 'GET', - url: '/umbraco/management/api/v1/member-group/{id}', - path: { - 'id': id, - }, - errors: { - 401: `The resource is protected and requires an authentication token`, - 404: `Not Found`, - }, - }); - } - - /** - * @returns string Success - * @throws ApiError - */ - public static deleteMemberGroupById({ - id, - }: { - id: string, - }): CancelablePromise { - return __request(OpenAPI, { - method: 'DELETE', - url: '/umbraco/management/api/v1/member-group/{id}', - path: { - 'id': id, - }, - responseHeader: 'Umb-Notifications', - errors: { - 400: `Bad Request`, - 401: `The resource is protected and requires an authentication token`, - 404: `Not Found`, - }, - }); - } - - /** - * @returns any Success - * @throws ApiError - */ - public static putMemberGroupById({ - id, - requestBody, - }: { - id: string, - requestBody?: UpdateMemberGroupRequestModel, - }): CancelablePromise { - return __request(OpenAPI, { - method: 'PUT', - url: '/umbraco/management/api/v1/member-group/{id}', - path: { - 'id': id, - }, - body: requestBody, - mediaType: 'application/json', - errors: { - 400: `Bad Request`, - 401: `The resource is protected and requires an authentication token`, - 404: `Not Found`, - }, - }); - } - - /** - * @returns any Success - * @throws ApiError - */ - public static getTreeMemberGroupRoot({ - skip, - take = 100, - }: { - skip?: number, - take?: number, - }): CancelablePromise { - return __request(OpenAPI, { - method: 'GET', - url: '/umbraco/management/api/v1/tree/member-group/root', - query: { - 'skip': skip, - 'take': take, - }, - errors: { - 401: `The resource is protected and requires an authentication token`, - }, - }); - } - -} diff --git a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/services/MemberResource.ts b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/services/MemberResource.ts deleted file mode 100644 index 3db3db8763..0000000000 --- a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/services/MemberResource.ts +++ /dev/null @@ -1,276 +0,0 @@ -/* generated using openapi-typescript-codegen -- do no edit */ -/* istanbul ignore file */ -/* tslint:disable */ -/* eslint-disable */ -import type { CreateMemberRequestModel } from '../models/CreateMemberRequestModel'; -import type { DirectionModel } from '../models/DirectionModel'; -import type { MemberConfigurationResponseModel } from '../models/MemberConfigurationResponseModel'; -import type { MemberItemResponseModel } from '../models/MemberItemResponseModel'; -import type { MemberResponseModel } from '../models/MemberResponseModel'; -import type { PagedMemberResponseModel } from '../models/PagedMemberResponseModel'; -import type { PagedModelMemberItemResponseModel } from '../models/PagedModelMemberItemResponseModel'; -import type { UpdateMemberRequestModel } from '../models/UpdateMemberRequestModel'; - -import type { CancelablePromise } from '../core/CancelablePromise'; -import { OpenAPI } from '../core/OpenAPI'; -import { request as __request } from '../core/request'; - -export class MemberResource { - - /** - * @returns any Success - * @throws ApiError - */ - public static getFilterMember({ - memberTypeId, - memberGroupName, - isApproved, - isLockedOut, - orderBy = 'username', - orderDirection, - filter, - skip, - take = 100, - }: { - memberTypeId?: string, - memberGroupName?: string, - isApproved?: boolean, - isLockedOut?: boolean, - orderBy?: string, - orderDirection?: DirectionModel, - filter?: string, - skip?: number, - take?: number, - }): CancelablePromise { - return __request(OpenAPI, { - method: 'GET', - url: '/umbraco/management/api/v1/filter/member', - query: { - 'memberTypeId': memberTypeId, - 'memberGroupName': memberGroupName, - 'isApproved': isApproved, - 'isLockedOut': isLockedOut, - 'orderBy': orderBy, - 'orderDirection': orderDirection, - 'filter': filter, - 'skip': skip, - 'take': take, - }, - errors: { - 401: `The resource is protected and requires an authentication token`, - 404: `Not Found`, - }, - }); - } - - /** - * @returns any Success - * @throws ApiError - */ - public static getItemMember({ - id, - }: { - id?: Array, - }): CancelablePromise> { - return __request(OpenAPI, { - method: 'GET', - url: '/umbraco/management/api/v1/item/member', - query: { - 'id': id, - }, - errors: { - 401: `The resource is protected and requires an authentication token`, - }, - }); - } - - /** - * @returns any Success - * @throws ApiError - */ - public static getItemMemberSearch({ - query, - skip, - take = 100, - }: { - query?: string, - skip?: number, - take?: number, - }): CancelablePromise { - return __request(OpenAPI, { - method: 'GET', - url: '/umbraco/management/api/v1/item/member/search', - query: { - 'query': query, - 'skip': skip, - 'take': take, - }, - errors: { - 401: `The resource is protected and requires an authentication token`, - }, - }); - } - - /** - * @returns string Created - * @throws ApiError - */ - public static postMember({ - requestBody, - }: { - requestBody?: CreateMemberRequestModel, - }): CancelablePromise { - return __request(OpenAPI, { - method: 'POST', - url: '/umbraco/management/api/v1/member', - body: requestBody, - mediaType: 'application/json', - responseHeader: 'Umb-Generated-Resource', - errors: { - 400: `Bad Request`, - 401: `The resource is protected and requires an authentication token`, - 404: `Not Found`, - }, - }); - } - - /** - * @returns any Success - * @throws ApiError - */ - public static getMemberById({ - id, - }: { - id: string, - }): CancelablePromise { - return __request(OpenAPI, { - method: 'GET', - url: '/umbraco/management/api/v1/member/{id}', - path: { - 'id': id, - }, - errors: { - 401: `The resource is protected and requires an authentication token`, - 404: `Not Found`, - }, - }); - } - - /** - * @returns string Success - * @throws ApiError - */ - public static deleteMemberById({ - id, - }: { - id: string, - }): CancelablePromise { - return __request(OpenAPI, { - method: 'DELETE', - url: '/umbraco/management/api/v1/member/{id}', - path: { - 'id': id, - }, - responseHeader: 'Umb-Notifications', - errors: { - 400: `Bad Request`, - 401: `The resource is protected and requires an authentication token`, - 404: `Not Found`, - }, - }); - } - - /** - * @returns string Success - * @throws ApiError - */ - public static putMemberById({ - id, - requestBody, - }: { - id: string, - requestBody?: UpdateMemberRequestModel, - }): CancelablePromise { - return __request(OpenAPI, { - method: 'PUT', - url: '/umbraco/management/api/v1/member/{id}', - path: { - 'id': id, - }, - body: requestBody, - mediaType: 'application/json', - responseHeader: 'Umb-Notifications', - errors: { - 400: `Bad Request`, - 401: `The resource is protected and requires an authentication token`, - 404: `Not Found`, - }, - }); - } - - /** - * @returns string Success - * @throws ApiError - */ - public static putMemberByIdValidate({ - id, - requestBody, - }: { - id: string, - requestBody?: UpdateMemberRequestModel, - }): CancelablePromise { - return __request(OpenAPI, { - method: 'PUT', - url: '/umbraco/management/api/v1/member/{id}/validate', - path: { - 'id': id, - }, - body: requestBody, - mediaType: 'application/json', - responseHeader: 'Umb-Notifications', - errors: { - 400: `Bad Request`, - 401: `The resource is protected and requires an authentication token`, - 404: `Not Found`, - }, - }); - } - - /** - * @returns any Success - * @throws ApiError - */ - public static getMemberConfiguration(): CancelablePromise { - return __request(OpenAPI, { - method: 'GET', - url: '/umbraco/management/api/v1/member/configuration', - errors: { - 401: `The resource is protected and requires an authentication token`, - }, - }); - } - - /** - * @returns string Success - * @throws ApiError - */ - public static postMemberValidate({ - requestBody, - }: { - requestBody?: CreateMemberRequestModel, - }): CancelablePromise { - return __request(OpenAPI, { - method: 'POST', - url: '/umbraco/management/api/v1/member/validate', - body: requestBody, - mediaType: 'application/json', - responseHeader: 'Umb-Notifications', - errors: { - 400: `Bad Request`, - 401: `The resource is protected and requires an authentication token`, - 404: `Not Found`, - }, - }); - } - -} diff --git a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/services/MemberTypeResource.ts b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/services/MemberTypeResource.ts deleted file mode 100644 index 7d1f97bdf1..0000000000 --- a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/services/MemberTypeResource.ts +++ /dev/null @@ -1,256 +0,0 @@ -/* generated using openapi-typescript-codegen -- do no edit */ -/* istanbul ignore file */ -/* tslint:disable */ -/* eslint-disable */ -import type { AvailableMemberTypeCompositionResponseModel } from '../models/AvailableMemberTypeCompositionResponseModel'; -import type { CreateMemberTypeRequestModel } from '../models/CreateMemberTypeRequestModel'; -import type { MemberTypeCompositionRequestModel } from '../models/MemberTypeCompositionRequestModel'; -import type { MemberTypeCompositionResponseModel } from '../models/MemberTypeCompositionResponseModel'; -import type { MemberTypeItemResponseModel } from '../models/MemberTypeItemResponseModel'; -import type { MemberTypeResponseModel } from '../models/MemberTypeResponseModel'; -import type { PagedModelMemberTypeItemResponseModel } from '../models/PagedModelMemberTypeItemResponseModel'; -import type { PagedNamedEntityTreeItemResponseModel } from '../models/PagedNamedEntityTreeItemResponseModel'; -import type { UpdateMemberTypeRequestModel } from '../models/UpdateMemberTypeRequestModel'; - -import type { CancelablePromise } from '../core/CancelablePromise'; -import { OpenAPI } from '../core/OpenAPI'; -import { request as __request } from '../core/request'; - -export class MemberTypeResource { - - /** - * @returns any Success - * @throws ApiError - */ - public static getItemMemberType({ - id, - }: { - id?: Array, - }): CancelablePromise> { - return __request(OpenAPI, { - method: 'GET', - url: '/umbraco/management/api/v1/item/member-type', - query: { - 'id': id, - }, - errors: { - 401: `The resource is protected and requires an authentication token`, - }, - }); - } - - /** - * @returns any Success - * @throws ApiError - */ - public static getItemMemberTypeSearch({ - query, - skip, - take = 100, - }: { - query?: string, - skip?: number, - take?: number, - }): CancelablePromise { - return __request(OpenAPI, { - method: 'GET', - url: '/umbraco/management/api/v1/item/member-type/search', - query: { - 'query': query, - 'skip': skip, - 'take': take, - }, - errors: { - 401: `The resource is protected and requires an authentication token`, - }, - }); - } - - /** - * @returns string Created - * @throws ApiError - */ - public static postMemberType({ - requestBody, - }: { - requestBody?: CreateMemberTypeRequestModel, - }): CancelablePromise { - return __request(OpenAPI, { - method: 'POST', - url: '/umbraco/management/api/v1/member-type', - body: requestBody, - mediaType: 'application/json', - responseHeader: 'Umb-Generated-Resource', - errors: { - 400: `Bad Request`, - 401: `The resource is protected and requires an authentication token`, - 404: `Not Found`, - }, - }); - } - - /** - * @returns any Success - * @throws ApiError - */ - public static getMemberTypeById({ - id, - }: { - id: string, - }): CancelablePromise { - return __request(OpenAPI, { - method: 'GET', - url: '/umbraco/management/api/v1/member-type/{id}', - path: { - 'id': id, - }, - errors: { - 401: `The resource is protected and requires an authentication token`, - 404: `Not Found`, - }, - }); - } - - /** - * @returns string Success - * @throws ApiError - */ - public static deleteMemberTypeById({ - id, - }: { - id: string, - }): CancelablePromise { - return __request(OpenAPI, { - method: 'DELETE', - url: '/umbraco/management/api/v1/member-type/{id}', - path: { - 'id': id, - }, - responseHeader: 'Umb-Notifications', - errors: { - 401: `The resource is protected and requires an authentication token`, - 404: `Not Found`, - }, - }); - } - - /** - * @returns string Success - * @throws ApiError - */ - public static putMemberTypeById({ - id, - requestBody, - }: { - id: string, - requestBody?: UpdateMemberTypeRequestModel, - }): CancelablePromise { - return __request(OpenAPI, { - method: 'PUT', - url: '/umbraco/management/api/v1/member-type/{id}', - path: { - 'id': id, - }, - body: requestBody, - mediaType: 'application/json', - responseHeader: 'Umb-Notifications', - errors: { - 400: `Bad Request`, - 401: `The resource is protected and requires an authentication token`, - 404: `Not Found`, - }, - }); - } - - /** - * @returns any Success - * @throws ApiError - */ - public static getMemberTypeByIdCompositionReferences({ - id, - }: { - id: string, - }): CancelablePromise> { - return __request(OpenAPI, { - method: 'GET', - url: '/umbraco/management/api/v1/member-type/{id}/composition-references', - path: { - 'id': id, - }, - errors: { - 400: `Bad Request`, - 401: `The resource is protected and requires an authentication token`, - 404: `Not Found`, - }, - }); - } - - /** - * @returns string Created - * @throws ApiError - */ - public static postMemberTypeByIdCopy({ - id, - }: { - id: string, - }): CancelablePromise { - return __request(OpenAPI, { - method: 'POST', - url: '/umbraco/management/api/v1/member-type/{id}/copy', - path: { - 'id': id, - }, - responseHeader: 'Umb-Generated-Resource', - errors: { - 400: `Bad Request`, - 401: `The resource is protected and requires an authentication token`, - 404: `Not Found`, - }, - }); - } - - /** - * @returns any Success - * @throws ApiError - */ - public static postMemberTypeAvailableCompositions({ - requestBody, - }: { - requestBody?: MemberTypeCompositionRequestModel, - }): CancelablePromise> { - return __request(OpenAPI, { - method: 'POST', - url: '/umbraco/management/api/v1/member-type/available-compositions', - body: requestBody, - mediaType: 'application/json', - errors: { - 401: `The resource is protected and requires an authentication token`, - }, - }); - } - - /** - * @returns any Success - * @throws ApiError - */ - public static getTreeMemberTypeRoot({ - skip, - take = 100, - }: { - skip?: number, - take?: number, - }): CancelablePromise { - return __request(OpenAPI, { - method: 'GET', - url: '/umbraco/management/api/v1/tree/member-type/root', - query: { - 'skip': skip, - 'take': take, - }, - errors: { - 401: `The resource is protected and requires an authentication token`, - }, - }); - } - -} diff --git a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/services/ModelsBuilderResource.ts b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/services/ModelsBuilderResource.ts deleted file mode 100644 index f1d51bc3c8..0000000000 --- a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/services/ModelsBuilderResource.ts +++ /dev/null @@ -1,58 +0,0 @@ -/* generated using openapi-typescript-codegen -- do no edit */ -/* istanbul ignore file */ -/* tslint:disable */ -/* eslint-disable */ -import type { ModelsBuilderResponseModel } from '../models/ModelsBuilderResponseModel'; -import type { OutOfDateStatusResponseModel } from '../models/OutOfDateStatusResponseModel'; - -import type { CancelablePromise } from '../core/CancelablePromise'; -import { OpenAPI } from '../core/OpenAPI'; -import { request as __request } from '../core/request'; - -export class ModelsBuilderResource { - - /** - * @returns string Success - * @throws ApiError - */ - public static postModelsBuilderBuild(): CancelablePromise { - return __request(OpenAPI, { - method: 'POST', - url: '/umbraco/management/api/v1/models-builder/build', - responseHeader: 'Umb-Notifications', - errors: { - 401: `The resource is protected and requires an authentication token`, - 428: `Client Error`, - }, - }); - } - - /** - * @returns any Success - * @throws ApiError - */ - public static getModelsBuilderDashboard(): CancelablePromise { - return __request(OpenAPI, { - method: 'GET', - url: '/umbraco/management/api/v1/models-builder/dashboard', - errors: { - 401: `The resource is protected and requires an authentication token`, - }, - }); - } - - /** - * @returns any Success - * @throws ApiError - */ - public static getModelsBuilderStatus(): CancelablePromise { - return __request(OpenAPI, { - method: 'GET', - url: '/umbraco/management/api/v1/models-builder/status', - errors: { - 401: `The resource is protected and requires an authentication token`, - }, - }); - } - -} diff --git a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/services/ObjectTypesResource.ts b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/services/ObjectTypesResource.ts deleted file mode 100644 index 00759d1852..0000000000 --- a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/services/ObjectTypesResource.ts +++ /dev/null @@ -1,37 +0,0 @@ -/* generated using openapi-typescript-codegen -- do no edit */ -/* istanbul ignore file */ -/* tslint:disable */ -/* eslint-disable */ -import type { PagedObjectTypeResponseModel } from '../models/PagedObjectTypeResponseModel'; - -import type { CancelablePromise } from '../core/CancelablePromise'; -import { OpenAPI } from '../core/OpenAPI'; -import { request as __request } from '../core/request'; - -export class ObjectTypesResource { - - /** - * @returns any Success - * @throws ApiError - */ - public static getObjectTypes({ - skip, - take = 100, - }: { - skip?: number, - take?: number, - }): CancelablePromise { - return __request(OpenAPI, { - method: 'GET', - url: '/umbraco/management/api/v1/object-types', - query: { - 'skip': skip, - 'take': take, - }, - errors: { - 401: `The resource is protected and requires an authentication token`, - }, - }); - } - -} diff --git a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/services/PackageResource.ts b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/services/PackageResource.ts deleted file mode 100644 index c83524dc6c..0000000000 --- a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/services/PackageResource.ts +++ /dev/null @@ -1,247 +0,0 @@ -/* generated using openapi-typescript-codegen -- do no edit */ -/* istanbul ignore file */ -/* tslint:disable */ -/* eslint-disable */ -import type { CreatePackageRequestModel } from '../models/CreatePackageRequestModel'; -import type { PackageConfigurationResponseModel } from '../models/PackageConfigurationResponseModel'; -import type { PackageDefinitionResponseModel } from '../models/PackageDefinitionResponseModel'; -import type { PackageManifestResponseModel } from '../models/PackageManifestResponseModel'; -import type { PagedPackageDefinitionResponseModel } from '../models/PagedPackageDefinitionResponseModel'; -import type { PagedPackageMigrationStatusResponseModel } from '../models/PagedPackageMigrationStatusResponseModel'; -import type { UpdatePackageRequestModel } from '../models/UpdatePackageRequestModel'; - -import type { CancelablePromise } from '../core/CancelablePromise'; -import { OpenAPI } from '../core/OpenAPI'; -import { request as __request } from '../core/request'; - -export class PackageResource { - - /** - * @returns string Success - * @throws ApiError - */ - public static postPackageByNameRunMigration({ - name, - }: { - name: string, - }): CancelablePromise { - return __request(OpenAPI, { - method: 'POST', - url: '/umbraco/management/api/v1/package/{name}/run-migration', - path: { - 'name': name, - }, - responseHeader: 'Umb-Notifications', - errors: { - 401: `The resource is protected and requires an authentication token`, - 404: `Not Found`, - 409: `Conflict`, - }, - }); - } - - /** - * @returns any Success - * @throws ApiError - */ - public static getPackageConfiguration(): CancelablePromise { - return __request(OpenAPI, { - method: 'GET', - url: '/umbraco/management/api/v1/package/configuration', - errors: { - 401: `The resource is protected and requires an authentication token`, - }, - }); - } - - /** - * @returns any Success - * @throws ApiError - */ - public static getPackageCreated({ - skip, - take = 100, - }: { - skip?: number, - take?: number, - }): CancelablePromise { - return __request(OpenAPI, { - method: 'GET', - url: '/umbraco/management/api/v1/package/created', - query: { - 'skip': skip, - 'take': take, - }, - errors: { - 401: `The resource is protected and requires an authentication token`, - }, - }); - } - - /** - * @returns string Created - * @throws ApiError - */ - public static postPackageCreated({ - requestBody, - }: { - requestBody?: CreatePackageRequestModel, - }): CancelablePromise { - return __request(OpenAPI, { - method: 'POST', - url: '/umbraco/management/api/v1/package/created', - body: requestBody, - mediaType: 'application/json', - responseHeader: 'Umb-Generated-Resource', - errors: { - 400: `Bad Request`, - 401: `The resource is protected and requires an authentication token`, - 404: `Not Found`, - }, - }); - } - - /** - * @returns any Success - * @throws ApiError - */ - public static getPackageCreatedById({ - id, - }: { - id: string, - }): CancelablePromise { - return __request(OpenAPI, { - method: 'GET', - url: '/umbraco/management/api/v1/package/created/{id}', - path: { - 'id': id, - }, - errors: { - 401: `The resource is protected and requires an authentication token`, - 404: `Not Found`, - }, - }); - } - - /** - * @returns string Success - * @throws ApiError - */ - public static deletePackageCreatedById({ - id, - }: { - id: string, - }): CancelablePromise { - return __request(OpenAPI, { - method: 'DELETE', - url: '/umbraco/management/api/v1/package/created/{id}', - path: { - 'id': id, - }, - responseHeader: 'Umb-Notifications', - errors: { - 401: `The resource is protected and requires an authentication token`, - 404: `Not Found`, - }, - }); - } - - /** - * @returns string Success - * @throws ApiError - */ - public static putPackageCreatedById({ - id, - requestBody, - }: { - id: string, - requestBody?: UpdatePackageRequestModel, - }): CancelablePromise { - return __request(OpenAPI, { - method: 'PUT', - url: '/umbraco/management/api/v1/package/created/{id}', - path: { - 'id': id, - }, - body: requestBody, - mediaType: 'application/json', - responseHeader: 'Umb-Notifications', - errors: { - 401: `The resource is protected and requires an authentication token`, - 404: `Not Found`, - }, - }); - } - - /** - * @returns any Success - * @throws ApiError - */ - public static getPackageCreatedByIdDownload({ - id, - }: { - id: string, - }): CancelablePromise { - return __request(OpenAPI, { - method: 'GET', - url: '/umbraco/management/api/v1/package/created/{id}/download', - path: { - 'id': id, - }, - errors: { - 401: `The resource is protected and requires an authentication token`, - 404: `Not Found`, - }, - }); - } - - /** - * @returns any Success - * @throws ApiError - */ - public static getPackageManifest(): CancelablePromise> { - return __request(OpenAPI, { - method: 'GET', - url: '/umbraco/management/api/v1/package/manifest', - errors: { - 401: `The resource is protected and requires an authentication token`, - }, - }); - } - - /** - * @returns any Success - * @throws ApiError - */ - public static getPackageManifestPublic(): CancelablePromise> { - return __request(OpenAPI, { - method: 'GET', - url: '/umbraco/management/api/v1/package/manifest/public', - }); - } - - /** - * @returns any Success - * @throws ApiError - */ - public static getPackageMigrationStatus({ - skip, - take = 100, - }: { - skip?: number, - take?: number, - }): CancelablePromise { - return __request(OpenAPI, { - method: 'GET', - url: '/umbraco/management/api/v1/package/migration-status', - query: { - 'skip': skip, - 'take': take, - }, - errors: { - 401: `The resource is protected and requires an authentication token`, - }, - }); - } - -} diff --git a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/services/PartialViewResource.ts b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/services/PartialViewResource.ts deleted file mode 100644 index 258df0ccad..0000000000 --- a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/services/PartialViewResource.ts +++ /dev/null @@ -1,356 +0,0 @@ -/* generated using openapi-typescript-codegen -- do no edit */ -/* istanbul ignore file */ -/* tslint:disable */ -/* eslint-disable */ -import type { CreatePartialViewFolderRequestModel } from '../models/CreatePartialViewFolderRequestModel'; -import type { CreatePartialViewRequestModel } from '../models/CreatePartialViewRequestModel'; -import type { FileSystemTreeItemPresentationModel } from '../models/FileSystemTreeItemPresentationModel'; -import type { PagedFileSystemTreeItemPresentationModel } from '../models/PagedFileSystemTreeItemPresentationModel'; -import type { PagedPartialViewSnippetItemResponseModel } from '../models/PagedPartialViewSnippetItemResponseModel'; -import type { PartialViewFolderResponseModel } from '../models/PartialViewFolderResponseModel'; -import type { PartialViewItemResponseModel } from '../models/PartialViewItemResponseModel'; -import type { PartialViewResponseModel } from '../models/PartialViewResponseModel'; -import type { PartialViewSnippetResponseModel } from '../models/PartialViewSnippetResponseModel'; -import type { RenamePartialViewRequestModel } from '../models/RenamePartialViewRequestModel'; -import type { UpdatePartialViewRequestModel } from '../models/UpdatePartialViewRequestModel'; - -import type { CancelablePromise } from '../core/CancelablePromise'; -import { OpenAPI } from '../core/OpenAPI'; -import { request as __request } from '../core/request'; - -export class PartialViewResource { - - /** - * @returns any Success - * @throws ApiError - */ - public static getItemPartialView({ - path, - }: { - path?: Array, - }): CancelablePromise> { - return __request(OpenAPI, { - method: 'GET', - url: '/umbraco/management/api/v1/item/partial-view', - query: { - 'path': path, - }, - errors: { - 401: `The resource is protected and requires an authentication token`, - }, - }); - } - - /** - * @returns string Created - * @throws ApiError - */ - public static postPartialView({ - requestBody, - }: { - requestBody?: CreatePartialViewRequestModel, - }): CancelablePromise { - return __request(OpenAPI, { - method: 'POST', - url: '/umbraco/management/api/v1/partial-view', - body: requestBody, - mediaType: 'application/json', - responseHeader: 'Umb-Generated-Resource', - errors: { - 400: `Bad Request`, - 401: `The resource is protected and requires an authentication token`, - 404: `Not Found`, - }, - }); - } - - /** - * @returns any Success - * @throws ApiError - */ - public static getPartialViewByPath({ - path, - }: { - path: string, - }): CancelablePromise { - return __request(OpenAPI, { - method: 'GET', - url: '/umbraco/management/api/v1/partial-view/{path}', - path: { - 'path': path, - }, - errors: { - 401: `The resource is protected and requires an authentication token`, - 404: `Not Found`, - }, - }); - } - - /** - * @returns string Success - * @throws ApiError - */ - public static deletePartialViewByPath({ - path, - }: { - path: string, - }): CancelablePromise { - return __request(OpenAPI, { - method: 'DELETE', - url: '/umbraco/management/api/v1/partial-view/{path}', - path: { - 'path': path, - }, - responseHeader: 'Umb-Notifications', - errors: { - 400: `Bad Request`, - 401: `The resource is protected and requires an authentication token`, - 404: `Not Found`, - }, - }); - } - - /** - * @returns string Success - * @throws ApiError - */ - public static putPartialViewByPath({ - path, - requestBody, - }: { - path: string, - requestBody?: UpdatePartialViewRequestModel, - }): CancelablePromise { - return __request(OpenAPI, { - method: 'PUT', - url: '/umbraco/management/api/v1/partial-view/{path}', - path: { - 'path': path, - }, - body: requestBody, - mediaType: 'application/json', - responseHeader: 'Umb-Notifications', - errors: { - 400: `Bad Request`, - 401: `The resource is protected and requires an authentication token`, - 404: `Not Found`, - }, - }); - } - - /** - * @returns string Created - * @throws ApiError - */ - public static putPartialViewByPathRename({ - path, - requestBody, - }: { - path: string, - requestBody?: RenamePartialViewRequestModel, - }): CancelablePromise { - return __request(OpenAPI, { - method: 'PUT', - url: '/umbraco/management/api/v1/partial-view/{path}/rename', - path: { - 'path': path, - }, - body: requestBody, - mediaType: 'application/json', - responseHeader: 'Umb-Generated-Resource', - errors: { - 400: `Bad Request`, - 401: `The resource is protected and requires an authentication token`, - 404: `Not Found`, - }, - }); - } - - /** - * @returns string Created - * @throws ApiError - */ - public static postPartialViewFolder({ - requestBody, - }: { - requestBody?: CreatePartialViewFolderRequestModel, - }): CancelablePromise { - return __request(OpenAPI, { - method: 'POST', - url: '/umbraco/management/api/v1/partial-view/folder', - body: requestBody, - mediaType: 'application/json', - responseHeader: 'Umb-Generated-Resource', - errors: { - 400: `Bad Request`, - 401: `The resource is protected and requires an authentication token`, - 404: `Not Found`, - }, - }); - } - - /** - * @returns any Success - * @throws ApiError - */ - public static getPartialViewFolderByPath({ - path, - }: { - path: string, - }): CancelablePromise { - return __request(OpenAPI, { - method: 'GET', - url: '/umbraco/management/api/v1/partial-view/folder/{path}', - path: { - 'path': path, - }, - errors: { - 401: `The resource is protected and requires an authentication token`, - 404: `Not Found`, - }, - }); - } - - /** - * @returns string Success - * @throws ApiError - */ - public static deletePartialViewFolderByPath({ - path, - }: { - path: string, - }): CancelablePromise { - return __request(OpenAPI, { - method: 'DELETE', - url: '/umbraco/management/api/v1/partial-view/folder/{path}', - path: { - 'path': path, - }, - responseHeader: 'Umb-Notifications', - errors: { - 400: `Bad Request`, - 401: `The resource is protected and requires an authentication token`, - 404: `Not Found`, - }, - }); - } - - /** - * @returns any Success - * @throws ApiError - */ - public static getPartialViewSnippet({ - skip, - take = 100, - }: { - skip?: number, - take?: number, - }): CancelablePromise { - return __request(OpenAPI, { - method: 'GET', - url: '/umbraco/management/api/v1/partial-view/snippet', - query: { - 'skip': skip, - 'take': take, - }, - errors: { - 401: `The resource is protected and requires an authentication token`, - }, - }); - } - - /** - * @returns any Success - * @throws ApiError - */ - public static getPartialViewSnippetById({ - id, - }: { - id: string, - }): CancelablePromise { - return __request(OpenAPI, { - method: 'GET', - url: '/umbraco/management/api/v1/partial-view/snippet/{id}', - path: { - 'id': id, - }, - errors: { - 401: `The resource is protected and requires an authentication token`, - 404: `Not Found`, - }, - }); - } - - /** - * @returns any Success - * @throws ApiError - */ - public static getTreePartialViewAncestors({ - descendantPath, - }: { - descendantPath?: string, - }): CancelablePromise> { - return __request(OpenAPI, { - method: 'GET', - url: '/umbraco/management/api/v1/tree/partial-view/ancestors', - query: { - 'descendantPath': descendantPath, - }, - errors: { - 401: `The resource is protected and requires an authentication token`, - }, - }); - } - - /** - * @returns any Success - * @throws ApiError - */ - public static getTreePartialViewChildren({ - parentPath, - skip, - take = 100, - }: { - parentPath?: string, - skip?: number, - take?: number, - }): CancelablePromise { - return __request(OpenAPI, { - method: 'GET', - url: '/umbraco/management/api/v1/tree/partial-view/children', - query: { - 'parentPath': parentPath, - 'skip': skip, - 'take': take, - }, - errors: { - 401: `The resource is protected and requires an authentication token`, - }, - }); - } - - /** - * @returns any Success - * @throws ApiError - */ - public static getTreePartialViewRoot({ - skip, - take = 100, - }: { - skip?: number, - take?: number, - }): CancelablePromise { - return __request(OpenAPI, { - method: 'GET', - url: '/umbraco/management/api/v1/tree/partial-view/root', - query: { - 'skip': skip, - 'take': take, - }, - errors: { - 401: `The resource is protected and requires an authentication token`, - }, - }); - } - -} diff --git a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/services/PreviewResource.ts b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/services/PreviewResource.ts deleted file mode 100644 index f87491b48e..0000000000 --- a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/services/PreviewResource.ts +++ /dev/null @@ -1,41 +0,0 @@ -/* generated using openapi-typescript-codegen -- do no edit */ -/* istanbul ignore file */ -/* tslint:disable */ -/* eslint-disable */ -import type { CancelablePromise } from '../core/CancelablePromise'; -import { OpenAPI } from '../core/OpenAPI'; -import { request as __request } from '../core/request'; - -export class PreviewResource { - - /** - * @returns string Success - * @throws ApiError - */ - public static deletePreview(): CancelablePromise { - return __request(OpenAPI, { - method: 'DELETE', - url: '/umbraco/management/api/v1/preview', - responseHeader: 'Umb-Notifications', - errors: { - 401: `The resource is protected and requires an authentication token`, - }, - }); - } - - /** - * @returns string Success - * @throws ApiError - */ - public static postPreview(): CancelablePromise { - return __request(OpenAPI, { - method: 'POST', - url: '/umbraco/management/api/v1/preview', - responseHeader: 'Umb-Notifications', - errors: { - 401: `The resource is protected and requires an authentication token`, - }, - }); - } - -} diff --git a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/services/ProfilingResource.ts b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/services/ProfilingResource.ts deleted file mode 100644 index f2b9d345f4..0000000000 --- a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/services/ProfilingResource.ts +++ /dev/null @@ -1,49 +0,0 @@ -/* generated using openapi-typescript-codegen -- do no edit */ -/* istanbul ignore file */ -/* tslint:disable */ -/* eslint-disable */ -import type { ProfilingStatusRequestModel } from '../models/ProfilingStatusRequestModel'; -import type { ProfilingStatusResponseModel } from '../models/ProfilingStatusResponseModel'; - -import type { CancelablePromise } from '../core/CancelablePromise'; -import { OpenAPI } from '../core/OpenAPI'; -import { request as __request } from '../core/request'; - -export class ProfilingResource { - - /** - * @returns any Success - * @throws ApiError - */ - public static getProfilingStatus(): CancelablePromise { - return __request(OpenAPI, { - method: 'GET', - url: '/umbraco/management/api/v1/profiling/status', - errors: { - 401: `The resource is protected and requires an authentication token`, - }, - }); - } - - /** - * @returns string Success - * @throws ApiError - */ - public static putProfilingStatus({ - requestBody, - }: { - requestBody?: ProfilingStatusRequestModel, - }): CancelablePromise { - return __request(OpenAPI, { - method: 'PUT', - url: '/umbraco/management/api/v1/profiling/status', - body: requestBody, - mediaType: 'application/json', - responseHeader: 'Umb-Notifications', - errors: { - 401: `The resource is protected and requires an authentication token`, - }, - }); - } - -} diff --git a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/services/PropertyTypeResource.ts b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/services/PropertyTypeResource.ts deleted file mode 100644 index 36cf7b48cc..0000000000 --- a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/services/PropertyTypeResource.ts +++ /dev/null @@ -1,36 +0,0 @@ -/* generated using openapi-typescript-codegen -- do no edit */ -/* istanbul ignore file */ -/* tslint:disable */ -/* eslint-disable */ -import type { CancelablePromise } from '../core/CancelablePromise'; -import { OpenAPI } from '../core/OpenAPI'; -import { request as __request } from '../core/request'; - -export class PropertyTypeResource { - - /** - * @returns boolean Success - * @throws ApiError - */ - public static getPropertyTypeIsUsed({ - contentTypeId, - propertyAlias, - }: { - contentTypeId?: string, - propertyAlias?: string, - }): CancelablePromise { - return __request(OpenAPI, { - method: 'GET', - url: '/umbraco/management/api/v1/property-type/is-used', - query: { - 'contentTypeId': contentTypeId, - 'propertyAlias': propertyAlias, - }, - errors: { - 400: `Bad Request`, - 401: `The resource is protected and requires an authentication token`, - }, - }); - } - -} diff --git a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/services/PublishedCacheResource.ts b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/services/PublishedCacheResource.ts deleted file mode 100644 index e3c70690bf..0000000000 --- a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/services/PublishedCacheResource.ts +++ /dev/null @@ -1,70 +0,0 @@ -/* generated using openapi-typescript-codegen -- do no edit */ -/* istanbul ignore file */ -/* tslint:disable */ -/* eslint-disable */ -import type { CancelablePromise } from '../core/CancelablePromise'; -import { OpenAPI } from '../core/OpenAPI'; -import { request as __request } from '../core/request'; - -export class PublishedCacheResource { - - /** - * @returns string Success - * @throws ApiError - */ - public static postPublishedCacheCollect(): CancelablePromise { - return __request(OpenAPI, { - method: 'POST', - url: '/umbraco/management/api/v1/published-cache/collect', - responseHeader: 'Umb-Notifications', - errors: { - 401: `The resource is protected and requires an authentication token`, - }, - }); - } - - /** - * @returns string Success - * @throws ApiError - */ - public static postPublishedCacheRebuild(): CancelablePromise { - return __request(OpenAPI, { - method: 'POST', - url: '/umbraco/management/api/v1/published-cache/rebuild', - responseHeader: 'Umb-Notifications', - errors: { - 401: `The resource is protected and requires an authentication token`, - }, - }); - } - - /** - * @returns string Success - * @throws ApiError - */ - public static postPublishedCacheReload(): CancelablePromise { - return __request(OpenAPI, { - method: 'POST', - url: '/umbraco/management/api/v1/published-cache/reload', - responseHeader: 'Umb-Notifications', - errors: { - 401: `The resource is protected and requires an authentication token`, - }, - }); - } - - /** - * @returns string Success - * @throws ApiError - */ - public static getPublishedCacheStatus(): CancelablePromise { - return __request(OpenAPI, { - method: 'GET', - url: '/umbraco/management/api/v1/published-cache/status', - errors: { - 401: `The resource is protected and requires an authentication token`, - }, - }); - } - -} diff --git a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/services/RedirectManagementResource.ts b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/services/RedirectManagementResource.ts deleted file mode 100644 index 608b436b61..0000000000 --- a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/services/RedirectManagementResource.ts +++ /dev/null @@ -1,130 +0,0 @@ -/* generated using openapi-typescript-codegen -- do no edit */ -/* istanbul ignore file */ -/* tslint:disable */ -/* eslint-disable */ -import type { PagedRedirectUrlResponseModel } from '../models/PagedRedirectUrlResponseModel'; -import type { RedirectStatusModel } from '../models/RedirectStatusModel'; -import type { RedirectUrlStatusResponseModel } from '../models/RedirectUrlStatusResponseModel'; - -import type { CancelablePromise } from '../core/CancelablePromise'; -import { OpenAPI } from '../core/OpenAPI'; -import { request as __request } from '../core/request'; - -export class RedirectManagementResource { - - /** - * @returns any Success - * @throws ApiError - */ - public static getRedirectManagement({ - filter, - skip, - take = 100, - }: { - filter?: string, - skip?: number, - take?: number, - }): CancelablePromise { - return __request(OpenAPI, { - method: 'GET', - url: '/umbraco/management/api/v1/redirect-management', - query: { - 'filter': filter, - 'skip': skip, - 'take': take, - }, - errors: { - 400: `Bad Request`, - 401: `The resource is protected and requires an authentication token`, - }, - }); - } - - /** - * @returns any Success - * @throws ApiError - */ - public static getRedirectManagementById({ - id, - skip, - take = 100, - }: { - id: string, - skip?: number, - take?: number, - }): CancelablePromise { - return __request(OpenAPI, { - method: 'GET', - url: '/umbraco/management/api/v1/redirect-management/{id}', - path: { - 'id': id, - }, - query: { - 'skip': skip, - 'take': take, - }, - errors: { - 401: `The resource is protected and requires an authentication token`, - }, - }); - } - - /** - * @returns string Success - * @throws ApiError - */ - public static deleteRedirectManagementById({ - id, - }: { - id: string, - }): CancelablePromise { - return __request(OpenAPI, { - method: 'DELETE', - url: '/umbraco/management/api/v1/redirect-management/{id}', - path: { - 'id': id, - }, - responseHeader: 'Umb-Notifications', - errors: { - 401: `The resource is protected and requires an authentication token`, - }, - }); - } - - /** - * @returns any Success - * @throws ApiError - */ - public static getRedirectManagementStatus(): CancelablePromise { - return __request(OpenAPI, { - method: 'GET', - url: '/umbraco/management/api/v1/redirect-management/status', - errors: { - 401: `The resource is protected and requires an authentication token`, - }, - }); - } - - /** - * @returns string Success - * @throws ApiError - */ - public static postRedirectManagementStatus({ - status, - }: { - status?: RedirectStatusModel, - }): CancelablePromise { - return __request(OpenAPI, { - method: 'POST', - url: '/umbraco/management/api/v1/redirect-management/status', - query: { - 'status': status, - }, - responseHeader: 'Umb-Notifications', - errors: { - 401: `The resource is protected and requires an authentication token`, - }, - }); - } - -} diff --git a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/services/RelationResource.ts b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/services/RelationResource.ts deleted file mode 100644 index 470f38ac4a..0000000000 --- a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/services/RelationResource.ts +++ /dev/null @@ -1,43 +0,0 @@ -/* generated using openapi-typescript-codegen -- do no edit */ -/* istanbul ignore file */ -/* tslint:disable */ -/* eslint-disable */ -import type { PagedRelationResponseModel } from '../models/PagedRelationResponseModel'; - -import type { CancelablePromise } from '../core/CancelablePromise'; -import { OpenAPI } from '../core/OpenAPI'; -import { request as __request } from '../core/request'; - -export class RelationResource { - - /** - * @returns any Success - * @throws ApiError - */ - public static getRelationTypeById({ - id, - skip, - take = 100, - }: { - id: string, - skip?: number, - take?: number, - }): CancelablePromise { - return __request(OpenAPI, { - method: 'GET', - url: '/umbraco/management/api/v1/relation/type/{id}', - path: { - 'id': id, - }, - query: { - 'skip': skip, - 'take': take, - }, - errors: { - 401: `The resource is protected and requires an authentication token`, - 404: `Not Found`, - }, - }); - } - -} diff --git a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/services/RelationTypeResource.ts b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/services/RelationTypeResource.ts deleted file mode 100644 index 40a2bb7c22..0000000000 --- a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/services/RelationTypeResource.ts +++ /dev/null @@ -1,82 +0,0 @@ -/* generated using openapi-typescript-codegen -- do no edit */ -/* istanbul ignore file */ -/* tslint:disable */ -/* eslint-disable */ -import type { PagedRelationTypeResponseModel } from '../models/PagedRelationTypeResponseModel'; -import type { RelationTypeItemResponseModel } from '../models/RelationTypeItemResponseModel'; -import type { RelationTypeResponseModel } from '../models/RelationTypeResponseModel'; - -import type { CancelablePromise } from '../core/CancelablePromise'; -import { OpenAPI } from '../core/OpenAPI'; -import { request as __request } from '../core/request'; - -export class RelationTypeResource { - - /** - * @returns any Success - * @throws ApiError - */ - public static getItemRelationType({ - id, - }: { - id?: Array, - }): CancelablePromise> { - return __request(OpenAPI, { - method: 'GET', - url: '/umbraco/management/api/v1/item/relation-type', - query: { - 'id': id, - }, - errors: { - 401: `The resource is protected and requires an authentication token`, - }, - }); - } - - /** - * @returns any Success - * @throws ApiError - */ - public static getRelationType({ - skip, - take = 100, - }: { - skip?: number, - take?: number, - }): CancelablePromise { - return __request(OpenAPI, { - method: 'GET', - url: '/umbraco/management/api/v1/relation-type', - query: { - 'skip': skip, - 'take': take, - }, - errors: { - 401: `The resource is protected and requires an authentication token`, - }, - }); - } - - /** - * @returns any Success - * @throws ApiError - */ - public static getRelationTypeById({ - id, - }: { - id: string, - }): CancelablePromise { - return __request(OpenAPI, { - method: 'GET', - url: '/umbraco/management/api/v1/relation-type/{id}', - path: { - 'id': id, - }, - errors: { - 401: `The resource is protected and requires an authentication token`, - 404: `Not Found`, - }, - }); - } - -} diff --git a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/services/ScriptResource.ts b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/services/ScriptResource.ts deleted file mode 100644 index 576ac97f16..0000000000 --- a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/services/ScriptResource.ts +++ /dev/null @@ -1,308 +0,0 @@ -/* generated using openapi-typescript-codegen -- do no edit */ -/* istanbul ignore file */ -/* tslint:disable */ -/* eslint-disable */ -import type { CreateScriptFolderRequestModel } from '../models/CreateScriptFolderRequestModel'; -import type { CreateScriptRequestModel } from '../models/CreateScriptRequestModel'; -import type { FileSystemTreeItemPresentationModel } from '../models/FileSystemTreeItemPresentationModel'; -import type { PagedFileSystemTreeItemPresentationModel } from '../models/PagedFileSystemTreeItemPresentationModel'; -import type { RenameScriptRequestModel } from '../models/RenameScriptRequestModel'; -import type { ScriptFolderResponseModel } from '../models/ScriptFolderResponseModel'; -import type { ScriptItemResponseModel } from '../models/ScriptItemResponseModel'; -import type { ScriptResponseModel } from '../models/ScriptResponseModel'; -import type { UpdateScriptRequestModel } from '../models/UpdateScriptRequestModel'; - -import type { CancelablePromise } from '../core/CancelablePromise'; -import { OpenAPI } from '../core/OpenAPI'; -import { request as __request } from '../core/request'; - -export class ScriptResource { - - /** - * @returns any Success - * @throws ApiError - */ - public static getItemScript({ - path, - }: { - path?: Array, - }): CancelablePromise> { - return __request(OpenAPI, { - method: 'GET', - url: '/umbraco/management/api/v1/item/script', - query: { - 'path': path, - }, - errors: { - 401: `The resource is protected and requires an authentication token`, - }, - }); - } - - /** - * @returns string Created - * @throws ApiError - */ - public static postScript({ - requestBody, - }: { - requestBody?: CreateScriptRequestModel, - }): CancelablePromise { - return __request(OpenAPI, { - method: 'POST', - url: '/umbraco/management/api/v1/script', - body: requestBody, - mediaType: 'application/json', - responseHeader: 'Umb-Generated-Resource', - errors: { - 400: `Bad Request`, - 401: `The resource is protected and requires an authentication token`, - 404: `Not Found`, - }, - }); - } - - /** - * @returns any Success - * @throws ApiError - */ - public static getScriptByPath({ - path, - }: { - path: string, - }): CancelablePromise { - return __request(OpenAPI, { - method: 'GET', - url: '/umbraco/management/api/v1/script/{path}', - path: { - 'path': path, - }, - errors: { - 401: `The resource is protected and requires an authentication token`, - 404: `Not Found`, - }, - }); - } - - /** - * @returns string Success - * @throws ApiError - */ - public static deleteScriptByPath({ - path, - }: { - path: string, - }): CancelablePromise { - return __request(OpenAPI, { - method: 'DELETE', - url: '/umbraco/management/api/v1/script/{path}', - path: { - 'path': path, - }, - responseHeader: 'Umb-Notifications', - errors: { - 400: `Bad Request`, - 401: `The resource is protected and requires an authentication token`, - 404: `Not Found`, - }, - }); - } - - /** - * @returns string Success - * @throws ApiError - */ - public static putScriptByPath({ - path, - requestBody, - }: { - path: string, - requestBody?: UpdateScriptRequestModel, - }): CancelablePromise { - return __request(OpenAPI, { - method: 'PUT', - url: '/umbraco/management/api/v1/script/{path}', - path: { - 'path': path, - }, - body: requestBody, - mediaType: 'application/json', - responseHeader: 'Umb-Notifications', - errors: { - 400: `Bad Request`, - 401: `The resource is protected and requires an authentication token`, - 404: `Not Found`, - }, - }); - } - - /** - * @returns string Created - * @throws ApiError - */ - public static putScriptByPathRename({ - path, - requestBody, - }: { - path: string, - requestBody?: RenameScriptRequestModel, - }): CancelablePromise { - return __request(OpenAPI, { - method: 'PUT', - url: '/umbraco/management/api/v1/script/{path}/rename', - path: { - 'path': path, - }, - body: requestBody, - mediaType: 'application/json', - responseHeader: 'Umb-Generated-Resource', - errors: { - 400: `Bad Request`, - 401: `The resource is protected and requires an authentication token`, - 404: `Not Found`, - }, - }); - } - - /** - * @returns string Created - * @throws ApiError - */ - public static postScriptFolder({ - requestBody, - }: { - requestBody?: CreateScriptFolderRequestModel, - }): CancelablePromise { - return __request(OpenAPI, { - method: 'POST', - url: '/umbraco/management/api/v1/script/folder', - body: requestBody, - mediaType: 'application/json', - responseHeader: 'Umb-Generated-Resource', - errors: { - 400: `Bad Request`, - 401: `The resource is protected and requires an authentication token`, - 404: `Not Found`, - }, - }); - } - - /** - * @returns any Success - * @throws ApiError - */ - public static getScriptFolderByPath({ - path, - }: { - path: string, - }): CancelablePromise { - return __request(OpenAPI, { - method: 'GET', - url: '/umbraco/management/api/v1/script/folder/{path}', - path: { - 'path': path, - }, - errors: { - 401: `The resource is protected and requires an authentication token`, - 404: `Not Found`, - }, - }); - } - - /** - * @returns string Success - * @throws ApiError - */ - public static deleteScriptFolderByPath({ - path, - }: { - path: string, - }): CancelablePromise { - return __request(OpenAPI, { - method: 'DELETE', - url: '/umbraco/management/api/v1/script/folder/{path}', - path: { - 'path': path, - }, - responseHeader: 'Umb-Notifications', - errors: { - 400: `Bad Request`, - 401: `The resource is protected and requires an authentication token`, - 404: `Not Found`, - }, - }); - } - - /** - * @returns any Success - * @throws ApiError - */ - public static getTreeScriptAncestors({ - descendantPath, - }: { - descendantPath?: string, - }): CancelablePromise> { - return __request(OpenAPI, { - method: 'GET', - url: '/umbraco/management/api/v1/tree/script/ancestors', - query: { - 'descendantPath': descendantPath, - }, - errors: { - 401: `The resource is protected and requires an authentication token`, - }, - }); - } - - /** - * @returns any Success - * @throws ApiError - */ - public static getTreeScriptChildren({ - parentPath, - skip, - take = 100, - }: { - parentPath?: string, - skip?: number, - take?: number, - }): CancelablePromise { - return __request(OpenAPI, { - method: 'GET', - url: '/umbraco/management/api/v1/tree/script/children', - query: { - 'parentPath': parentPath, - 'skip': skip, - 'take': take, - }, - errors: { - 401: `The resource is protected and requires an authentication token`, - }, - }); - } - - /** - * @returns any Success - * @throws ApiError - */ - public static getTreeScriptRoot({ - skip, - take = 100, - }: { - skip?: number, - take?: number, - }): CancelablePromise { - return __request(OpenAPI, { - method: 'GET', - url: '/umbraco/management/api/v1/tree/script/root', - query: { - 'skip': skip, - 'take': take, - }, - errors: { - 401: `The resource is protected and requires an authentication token`, - }, - }); - } - -} diff --git a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/services/SearcherResource.ts b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/services/SearcherResource.ts deleted file mode 100644 index b4baa27a9d..0000000000 --- a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/services/SearcherResource.ts +++ /dev/null @@ -1,71 +0,0 @@ -/* generated using openapi-typescript-codegen -- do no edit */ -/* istanbul ignore file */ -/* tslint:disable */ -/* eslint-disable */ -import type { PagedSearcherResponseModel } from '../models/PagedSearcherResponseModel'; -import type { PagedSearchResultResponseModel } from '../models/PagedSearchResultResponseModel'; - -import type { CancelablePromise } from '../core/CancelablePromise'; -import { OpenAPI } from '../core/OpenAPI'; -import { request as __request } from '../core/request'; - -export class SearcherResource { - - /** - * @returns any Success - * @throws ApiError - */ - public static getSearcher({ - skip, - take = 100, - }: { - skip?: number, - take?: number, - }): CancelablePromise { - return __request(OpenAPI, { - method: 'GET', - url: '/umbraco/management/api/v1/searcher', - query: { - 'skip': skip, - 'take': take, - }, - errors: { - 401: `The resource is protected and requires an authentication token`, - }, - }); - } - - /** - * @returns any Success - * @throws ApiError - */ - public static getSearcherBySearcherNameQuery({ - searcherName, - term, - skip, - take = 100, - }: { - searcherName: string, - term?: string, - skip?: number, - take?: number, - }): CancelablePromise { - return __request(OpenAPI, { - method: 'GET', - url: '/umbraco/management/api/v1/searcher/{searcherName}/query', - path: { - 'searcherName': searcherName, - }, - query: { - 'term': term, - 'skip': skip, - 'take': take, - }, - errors: { - 401: `The resource is protected and requires an authentication token`, - 404: `Not Found`, - }, - }); - } - -} diff --git a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/services/SecurityResource.ts b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/services/SecurityResource.ts deleted file mode 100644 index 187b69ae51..0000000000 --- a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/services/SecurityResource.ts +++ /dev/null @@ -1,96 +0,0 @@ -/* generated using openapi-typescript-codegen -- do no edit */ -/* istanbul ignore file */ -/* tslint:disable */ -/* eslint-disable */ -import type { ResetPasswordRequestModel } from '../models/ResetPasswordRequestModel'; -import type { ResetPasswordTokenRequestModel } from '../models/ResetPasswordTokenRequestModel'; -import type { SecurityConfigurationResponseModel } from '../models/SecurityConfigurationResponseModel'; -import type { VerifyResetPasswordResponseModel } from '../models/VerifyResetPasswordResponseModel'; -import type { VerifyResetPasswordTokenRequestModel } from '../models/VerifyResetPasswordTokenRequestModel'; - -import type { CancelablePromise } from '../core/CancelablePromise'; -import { OpenAPI } from '../core/OpenAPI'; -import { request as __request } from '../core/request'; - -export class SecurityResource { - - /** - * @returns any Success - * @throws ApiError - */ - public static getSecurityConfiguration(): CancelablePromise { - return __request(OpenAPI, { - method: 'GET', - url: '/umbraco/management/api/v1/security/configuration', - errors: { - 401: `The resource is protected and requires an authentication token`, - }, - }); - } - - /** - * @returns string Success - * @throws ApiError - */ - public static postSecurityForgotPassword({ - requestBody, - }: { - requestBody?: ResetPasswordRequestModel, - }): CancelablePromise { - return __request(OpenAPI, { - method: 'POST', - url: '/umbraco/management/api/v1/security/forgot-password', - body: requestBody, - mediaType: 'application/json', - responseHeader: 'Umb-Notifications', - errors: { - 400: `Bad Request`, - 401: `The resource is protected and requires an authentication token`, - }, - }); - } - - /** - * @returns void - * @throws ApiError - */ - public static postSecurityForgotPasswordReset({ - requestBody, - }: { - requestBody?: ResetPasswordTokenRequestModel, - }): CancelablePromise { - return __request(OpenAPI, { - method: 'POST', - url: '/umbraco/management/api/v1/security/forgot-password/reset', - body: requestBody, - mediaType: 'application/json', - errors: { - 400: `Bad Request`, - 401: `The resource is protected and requires an authentication token`, - 404: `Not Found`, - }, - }); - } - - /** - * @returns any Success - * @throws ApiError - */ - public static postSecurityForgotPasswordVerify({ - requestBody, - }: { - requestBody?: VerifyResetPasswordTokenRequestModel, - }): CancelablePromise { - return __request(OpenAPI, { - method: 'POST', - url: '/umbraco/management/api/v1/security/forgot-password/verify', - body: requestBody, - mediaType: 'application/json', - errors: { - 400: `Bad Request`, - 404: `Not Found`, - }, - }); - } - -} diff --git a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/services/ServerResource.ts b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/services/ServerResource.ts deleted file mode 100644 index 15d61a5904..0000000000 --- a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/services/ServerResource.ts +++ /dev/null @@ -1,72 +0,0 @@ -/* generated using openapi-typescript-codegen -- do no edit */ -/* istanbul ignore file */ -/* tslint:disable */ -/* eslint-disable */ -import type { ServerConfigurationResponseModel } from '../models/ServerConfigurationResponseModel'; -import type { ServerInformationResponseModel } from '../models/ServerInformationResponseModel'; -import type { ServerStatusResponseModel } from '../models/ServerStatusResponseModel'; -import type { ServerTroubleshootingResponseModel } from '../models/ServerTroubleshootingResponseModel'; - -import type { CancelablePromise } from '../core/CancelablePromise'; -import { OpenAPI } from '../core/OpenAPI'; -import { request as __request } from '../core/request'; - -export class ServerResource { - - /** - * @returns any Success - * @throws ApiError - */ - public static getServerConfiguration(): CancelablePromise { - return __request(OpenAPI, { - method: 'GET', - url: '/umbraco/management/api/v1/server/configuration', - errors: { - 401: `The resource is protected and requires an authentication token`, - }, - }); - } - - /** - * @returns any Success - * @throws ApiError - */ - public static getServerInformation(): CancelablePromise { - return __request(OpenAPI, { - method: 'GET', - url: '/umbraco/management/api/v1/server/information', - errors: { - 401: `The resource is protected and requires an authentication token`, - }, - }); - } - - /** - * @returns any Success - * @throws ApiError - */ - public static getServerStatus(): CancelablePromise { - return __request(OpenAPI, { - method: 'GET', - url: '/umbraco/management/api/v1/server/status', - errors: { - 400: `Bad Request`, - }, - }); - } - - /** - * @returns any Success - * @throws ApiError - */ - public static getServerTroubleshooting(): CancelablePromise { - return __request(OpenAPI, { - method: 'GET', - url: '/umbraco/management/api/v1/server/troubleshooting', - errors: { - 401: `The resource is protected and requires an authentication token`, - }, - }); - } - -} diff --git a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/services/StaticFileResource.ts b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/services/StaticFileResource.ts deleted file mode 100644 index 321a4b3bb6..0000000000 --- a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/services/StaticFileResource.ts +++ /dev/null @@ -1,108 +0,0 @@ -/* generated using openapi-typescript-codegen -- do no edit */ -/* istanbul ignore file */ -/* tslint:disable */ -/* eslint-disable */ -import type { FileSystemTreeItemPresentationModel } from '../models/FileSystemTreeItemPresentationModel'; -import type { PagedFileSystemTreeItemPresentationModel } from '../models/PagedFileSystemTreeItemPresentationModel'; -import type { StaticFileItemResponseModel } from '../models/StaticFileItemResponseModel'; - -import type { CancelablePromise } from '../core/CancelablePromise'; -import { OpenAPI } from '../core/OpenAPI'; -import { request as __request } from '../core/request'; - -export class StaticFileResource { - - /** - * @returns any Success - * @throws ApiError - */ - public static getItemStaticFile({ - path, - }: { - path?: Array, - }): CancelablePromise> { - return __request(OpenAPI, { - method: 'GET', - url: '/umbraco/management/api/v1/item/static-file', - query: { - 'path': path, - }, - errors: { - 401: `The resource is protected and requires an authentication token`, - }, - }); - } - - /** - * @returns any Success - * @throws ApiError - */ - public static getTreeStaticFileAncestors({ - descendantPath, - }: { - descendantPath?: string, - }): CancelablePromise> { - return __request(OpenAPI, { - method: 'GET', - url: '/umbraco/management/api/v1/tree/static-file/ancestors', - query: { - 'descendantPath': descendantPath, - }, - errors: { - 401: `The resource is protected and requires an authentication token`, - }, - }); - } - - /** - * @returns any Success - * @throws ApiError - */ - public static getTreeStaticFileChildren({ - parentPath, - skip, - take = 100, - }: { - parentPath?: string, - skip?: number, - take?: number, - }): CancelablePromise { - return __request(OpenAPI, { - method: 'GET', - url: '/umbraco/management/api/v1/tree/static-file/children', - query: { - 'parentPath': parentPath, - 'skip': skip, - 'take': take, - }, - errors: { - 401: `The resource is protected and requires an authentication token`, - }, - }); - } - - /** - * @returns any Success - * @throws ApiError - */ - public static getTreeStaticFileRoot({ - skip, - take = 100, - }: { - skip?: number, - take?: number, - }): CancelablePromise { - return __request(OpenAPI, { - method: 'GET', - url: '/umbraco/management/api/v1/tree/static-file/root', - query: { - 'skip': skip, - 'take': take, - }, - errors: { - 401: `The resource is protected and requires an authentication token`, - }, - }); - } - -} diff --git a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/services/StylesheetResource.ts b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/services/StylesheetResource.ts deleted file mode 100644 index 98cd485ab7..0000000000 --- a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/services/StylesheetResource.ts +++ /dev/null @@ -1,308 +0,0 @@ -/* generated using openapi-typescript-codegen -- do no edit */ -/* istanbul ignore file */ -/* tslint:disable */ -/* eslint-disable */ -import type { CreateStylesheetFolderRequestModel } from '../models/CreateStylesheetFolderRequestModel'; -import type { CreateStylesheetRequestModel } from '../models/CreateStylesheetRequestModel'; -import type { FileSystemTreeItemPresentationModel } from '../models/FileSystemTreeItemPresentationModel'; -import type { PagedFileSystemTreeItemPresentationModel } from '../models/PagedFileSystemTreeItemPresentationModel'; -import type { RenameStylesheetRequestModel } from '../models/RenameStylesheetRequestModel'; -import type { StylesheetFolderResponseModel } from '../models/StylesheetFolderResponseModel'; -import type { StylesheetItemResponseModel } from '../models/StylesheetItemResponseModel'; -import type { StylesheetResponseModel } from '../models/StylesheetResponseModel'; -import type { UpdateStylesheetRequestModel } from '../models/UpdateStylesheetRequestModel'; - -import type { CancelablePromise } from '../core/CancelablePromise'; -import { OpenAPI } from '../core/OpenAPI'; -import { request as __request } from '../core/request'; - -export class StylesheetResource { - - /** - * @returns any Success - * @throws ApiError - */ - public static getItemStylesheet({ - path, - }: { - path?: Array, - }): CancelablePromise> { - return __request(OpenAPI, { - method: 'GET', - url: '/umbraco/management/api/v1/item/stylesheet', - query: { - 'path': path, - }, - errors: { - 401: `The resource is protected and requires an authentication token`, - }, - }); - } - - /** - * @returns string Created - * @throws ApiError - */ - public static postStylesheet({ - requestBody, - }: { - requestBody?: CreateStylesheetRequestModel, - }): CancelablePromise { - return __request(OpenAPI, { - method: 'POST', - url: '/umbraco/management/api/v1/stylesheet', - body: requestBody, - mediaType: 'application/json', - responseHeader: 'Umb-Generated-Resource', - errors: { - 400: `Bad Request`, - 401: `The resource is protected and requires an authentication token`, - 404: `Not Found`, - }, - }); - } - - /** - * @returns any Success - * @throws ApiError - */ - public static getStylesheetByPath({ - path, - }: { - path: string, - }): CancelablePromise { - return __request(OpenAPI, { - method: 'GET', - url: '/umbraco/management/api/v1/stylesheet/{path}', - path: { - 'path': path, - }, - errors: { - 401: `The resource is protected and requires an authentication token`, - 404: `Not Found`, - }, - }); - } - - /** - * @returns string Success - * @throws ApiError - */ - public static deleteStylesheetByPath({ - path, - }: { - path: string, - }): CancelablePromise { - return __request(OpenAPI, { - method: 'DELETE', - url: '/umbraco/management/api/v1/stylesheet/{path}', - path: { - 'path': path, - }, - responseHeader: 'Umb-Notifications', - errors: { - 400: `Bad Request`, - 401: `The resource is protected and requires an authentication token`, - 404: `Not Found`, - }, - }); - } - - /** - * @returns string Success - * @throws ApiError - */ - public static putStylesheetByPath({ - path, - requestBody, - }: { - path: string, - requestBody?: UpdateStylesheetRequestModel, - }): CancelablePromise { - return __request(OpenAPI, { - method: 'PUT', - url: '/umbraco/management/api/v1/stylesheet/{path}', - path: { - 'path': path, - }, - body: requestBody, - mediaType: 'application/json', - responseHeader: 'Umb-Notifications', - errors: { - 400: `Bad Request`, - 401: `The resource is protected and requires an authentication token`, - 404: `Not Found`, - }, - }); - } - - /** - * @returns string Created - * @throws ApiError - */ - public static putStylesheetByPathRename({ - path, - requestBody, - }: { - path: string, - requestBody?: RenameStylesheetRequestModel, - }): CancelablePromise { - return __request(OpenAPI, { - method: 'PUT', - url: '/umbraco/management/api/v1/stylesheet/{path}/rename', - path: { - 'path': path, - }, - body: requestBody, - mediaType: 'application/json', - responseHeader: 'Umb-Generated-Resource', - errors: { - 400: `Bad Request`, - 401: `The resource is protected and requires an authentication token`, - 404: `Not Found`, - }, - }); - } - - /** - * @returns string Created - * @throws ApiError - */ - public static postStylesheetFolder({ - requestBody, - }: { - requestBody?: CreateStylesheetFolderRequestModel, - }): CancelablePromise { - return __request(OpenAPI, { - method: 'POST', - url: '/umbraco/management/api/v1/stylesheet/folder', - body: requestBody, - mediaType: 'application/json', - responseHeader: 'Umb-Generated-Resource', - errors: { - 400: `Bad Request`, - 401: `The resource is protected and requires an authentication token`, - 404: `Not Found`, - }, - }); - } - - /** - * @returns any Success - * @throws ApiError - */ - public static getStylesheetFolderByPath({ - path, - }: { - path: string, - }): CancelablePromise { - return __request(OpenAPI, { - method: 'GET', - url: '/umbraco/management/api/v1/stylesheet/folder/{path}', - path: { - 'path': path, - }, - errors: { - 401: `The resource is protected and requires an authentication token`, - 404: `Not Found`, - }, - }); - } - - /** - * @returns string Success - * @throws ApiError - */ - public static deleteStylesheetFolderByPath({ - path, - }: { - path: string, - }): CancelablePromise { - return __request(OpenAPI, { - method: 'DELETE', - url: '/umbraco/management/api/v1/stylesheet/folder/{path}', - path: { - 'path': path, - }, - responseHeader: 'Umb-Notifications', - errors: { - 400: `Bad Request`, - 401: `The resource is protected and requires an authentication token`, - 404: `Not Found`, - }, - }); - } - - /** - * @returns any Success - * @throws ApiError - */ - public static getTreeStylesheetAncestors({ - descendantPath, - }: { - descendantPath?: string, - }): CancelablePromise> { - return __request(OpenAPI, { - method: 'GET', - url: '/umbraco/management/api/v1/tree/stylesheet/ancestors', - query: { - 'descendantPath': descendantPath, - }, - errors: { - 401: `The resource is protected and requires an authentication token`, - }, - }); - } - - /** - * @returns any Success - * @throws ApiError - */ - public static getTreeStylesheetChildren({ - parentPath, - skip, - take = 100, - }: { - parentPath?: string, - skip?: number, - take?: number, - }): CancelablePromise { - return __request(OpenAPI, { - method: 'GET', - url: '/umbraco/management/api/v1/tree/stylesheet/children', - query: { - 'parentPath': parentPath, - 'skip': skip, - 'take': take, - }, - errors: { - 401: `The resource is protected and requires an authentication token`, - }, - }); - } - - /** - * @returns any Success - * @throws ApiError - */ - public static getTreeStylesheetRoot({ - skip, - take = 100, - }: { - skip?: number, - take?: number, - }): CancelablePromise { - return __request(OpenAPI, { - method: 'GET', - url: '/umbraco/management/api/v1/tree/stylesheet/root', - query: { - 'skip': skip, - 'take': take, - }, - errors: { - 401: `The resource is protected and requires an authentication token`, - }, - }); - } - -} diff --git a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/services/TagResource.ts b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/services/TagResource.ts deleted file mode 100644 index 6885224f62..0000000000 --- a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/services/TagResource.ts +++ /dev/null @@ -1,46 +0,0 @@ -/* generated using openapi-typescript-codegen -- do no edit */ -/* istanbul ignore file */ -/* tslint:disable */ -/* eslint-disable */ -import type { PagedTagResponseModel } from '../models/PagedTagResponseModel'; - -import type { CancelablePromise } from '../core/CancelablePromise'; -import { OpenAPI } from '../core/OpenAPI'; -import { request as __request } from '../core/request'; - -export class TagResource { - - /** - * @returns any Success - * @throws ApiError - */ - public static getTag({ - query, - tagGroup, - culture, - skip, - take = 100, - }: { - query?: string, - tagGroup?: string, - culture?: string, - skip?: number, - take?: number, - }): CancelablePromise { - return __request(OpenAPI, { - method: 'GET', - url: '/umbraco/management/api/v1/tag', - query: { - 'query': query, - 'tagGroup': tagGroup, - 'culture': culture, - 'skip': skip, - 'take': take, - }, - errors: { - 401: `The resource is protected and requires an authentication token`, - }, - }); - } - -} diff --git a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/services/TelemetryResource.ts b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/services/TelemetryResource.ts deleted file mode 100644 index f87ab544c9..0000000000 --- a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/services/TelemetryResource.ts +++ /dev/null @@ -1,75 +0,0 @@ -/* generated using openapi-typescript-codegen -- do no edit */ -/* istanbul ignore file */ -/* tslint:disable */ -/* eslint-disable */ -import type { PagedTelemetryResponseModel } from '../models/PagedTelemetryResponseModel'; -import type { TelemetryRequestModel } from '../models/TelemetryRequestModel'; -import type { TelemetryResponseModel } from '../models/TelemetryResponseModel'; - -import type { CancelablePromise } from '../core/CancelablePromise'; -import { OpenAPI } from '../core/OpenAPI'; -import { request as __request } from '../core/request'; - -export class TelemetryResource { - - /** - * @returns any Success - * @throws ApiError - */ - public static getTelemetry({ - skip, - take = 100, - }: { - skip?: number, - take?: number, - }): CancelablePromise { - return __request(OpenAPI, { - method: 'GET', - url: '/umbraco/management/api/v1/telemetry', - query: { - 'skip': skip, - 'take': take, - }, - errors: { - 401: `The resource is protected and requires an authentication token`, - }, - }); - } - - /** - * @returns any Success - * @throws ApiError - */ - public static getTelemetryLevel(): CancelablePromise { - return __request(OpenAPI, { - method: 'GET', - url: '/umbraco/management/api/v1/telemetry/level', - errors: { - 401: `The resource is protected and requires an authentication token`, - }, - }); - } - - /** - * @returns string Success - * @throws ApiError - */ - public static postTelemetryLevel({ - requestBody, - }: { - requestBody?: TelemetryRequestModel, - }): CancelablePromise { - return __request(OpenAPI, { - method: 'POST', - url: '/umbraco/management/api/v1/telemetry/level', - body: requestBody, - mediaType: 'application/json', - responseHeader: 'Umb-Notifications', - errors: { - 400: `Bad Request`, - 401: `The resource is protected and requires an authentication token`, - }, - }); - } - -} diff --git a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/services/TemplateResource.ts b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/services/TemplateResource.ts deleted file mode 100644 index 01d5cece06..0000000000 --- a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/services/TemplateResource.ts +++ /dev/null @@ -1,288 +0,0 @@ -/* generated using openapi-typescript-codegen -- do no edit */ -/* istanbul ignore file */ -/* tslint:disable */ -/* eslint-disable */ -import type { CreateTemplateRequestModel } from '../models/CreateTemplateRequestModel'; -import type { NamedEntityTreeItemResponseModel } from '../models/NamedEntityTreeItemResponseModel'; -import type { PagedModelTemplateItemResponseModel } from '../models/PagedModelTemplateItemResponseModel'; -import type { PagedNamedEntityTreeItemResponseModel } from '../models/PagedNamedEntityTreeItemResponseModel'; -import type { TemplateConfigurationResponseModel } from '../models/TemplateConfigurationResponseModel'; -import type { TemplateItemResponseModel } from '../models/TemplateItemResponseModel'; -import type { TemplateQueryExecuteModel } from '../models/TemplateQueryExecuteModel'; -import type { TemplateQueryResultResponseModel } from '../models/TemplateQueryResultResponseModel'; -import type { TemplateQuerySettingsResponseModel } from '../models/TemplateQuerySettingsResponseModel'; -import type { TemplateResponseModel } from '../models/TemplateResponseModel'; -import type { UpdateTemplateRequestModel } from '../models/UpdateTemplateRequestModel'; - -import type { CancelablePromise } from '../core/CancelablePromise'; -import { OpenAPI } from '../core/OpenAPI'; -import { request as __request } from '../core/request'; - -export class TemplateResource { - - /** - * @returns any Success - * @throws ApiError - */ - public static getItemTemplate({ - id, - }: { - id?: Array, - }): CancelablePromise> { - return __request(OpenAPI, { - method: 'GET', - url: '/umbraco/management/api/v1/item/template', - query: { - 'id': id, - }, - errors: { - 401: `The resource is protected and requires an authentication token`, - }, - }); - } - - /** - * @returns any Success - * @throws ApiError - */ - public static getItemTemplateSearch({ - query, - skip, - take = 100, - }: { - query?: string, - skip?: number, - take?: number, - }): CancelablePromise { - return __request(OpenAPI, { - method: 'GET', - url: '/umbraco/management/api/v1/item/template/search', - query: { - 'query': query, - 'skip': skip, - 'take': take, - }, - errors: { - 401: `The resource is protected and requires an authentication token`, - }, - }); - } - - /** - * @returns string Created - * @throws ApiError - */ - public static postTemplate({ - requestBody, - }: { - requestBody?: CreateTemplateRequestModel, - }): CancelablePromise { - return __request(OpenAPI, { - method: 'POST', - url: '/umbraco/management/api/v1/template', - body: requestBody, - mediaType: 'application/json', - responseHeader: 'Umb-Generated-Resource', - errors: { - 400: `Bad Request`, - 401: `The resource is protected and requires an authentication token`, - 404: `Not Found`, - }, - }); - } - - /** - * @returns any Success - * @throws ApiError - */ - public static getTemplateById({ - id, - }: { - id: string, - }): CancelablePromise { - return __request(OpenAPI, { - method: 'GET', - url: '/umbraco/management/api/v1/template/{id}', - path: { - 'id': id, - }, - errors: { - 401: `The resource is protected and requires an authentication token`, - 404: `Not Found`, - }, - }); - } - - /** - * @returns string Success - * @throws ApiError - */ - public static deleteTemplateById({ - id, - }: { - id: string, - }): CancelablePromise { - return __request(OpenAPI, { - method: 'DELETE', - url: '/umbraco/management/api/v1/template/{id}', - path: { - 'id': id, - }, - responseHeader: 'Umb-Notifications', - errors: { - 400: `Bad Request`, - 401: `The resource is protected and requires an authentication token`, - 404: `Not Found`, - }, - }); - } - - /** - * @returns string Success - * @throws ApiError - */ - public static putTemplateById({ - id, - requestBody, - }: { - id: string, - requestBody?: UpdateTemplateRequestModel, - }): CancelablePromise { - return __request(OpenAPI, { - method: 'PUT', - url: '/umbraco/management/api/v1/template/{id}', - path: { - 'id': id, - }, - body: requestBody, - mediaType: 'application/json', - responseHeader: 'Umb-Notifications', - errors: { - 400: `Bad Request`, - 401: `The resource is protected and requires an authentication token`, - 404: `Not Found`, - }, - }); - } - - /** - * @returns any Success - * @throws ApiError - */ - public static getTemplateConfiguration(): CancelablePromise { - return __request(OpenAPI, { - method: 'GET', - url: '/umbraco/management/api/v1/template/configuration', - errors: { - 401: `The resource is protected and requires an authentication token`, - }, - }); - } - - /** - * @returns any Success - * @throws ApiError - */ - public static postTemplateQueryExecute({ - requestBody, - }: { - requestBody?: TemplateQueryExecuteModel, - }): CancelablePromise { - return __request(OpenAPI, { - method: 'POST', - url: '/umbraco/management/api/v1/template/query/execute', - body: requestBody, - mediaType: 'application/json', - errors: { - 401: `The resource is protected and requires an authentication token`, - }, - }); - } - - /** - * @returns any Success - * @throws ApiError - */ - public static getTemplateQuerySettings(): CancelablePromise { - return __request(OpenAPI, { - method: 'GET', - url: '/umbraco/management/api/v1/template/query/settings', - errors: { - 401: `The resource is protected and requires an authentication token`, - }, - }); - } - - /** - * @returns any Success - * @throws ApiError - */ - public static getTreeTemplateAncestors({ - descendantId, - }: { - descendantId?: string, - }): CancelablePromise> { - return __request(OpenAPI, { - method: 'GET', - url: '/umbraco/management/api/v1/tree/template/ancestors', - query: { - 'descendantId': descendantId, - }, - errors: { - 401: `The resource is protected and requires an authentication token`, - }, - }); - } - - /** - * @returns any Success - * @throws ApiError - */ - public static getTreeTemplateChildren({ - parentId, - skip, - take = 100, - }: { - parentId?: string, - skip?: number, - take?: number, - }): CancelablePromise { - return __request(OpenAPI, { - method: 'GET', - url: '/umbraco/management/api/v1/tree/template/children', - query: { - 'parentId': parentId, - 'skip': skip, - 'take': take, - }, - errors: { - 401: `The resource is protected and requires an authentication token`, - }, - }); - } - - /** - * @returns any Success - * @throws ApiError - */ - public static getTreeTemplateRoot({ - skip, - take = 100, - }: { - skip?: number, - take?: number, - }): CancelablePromise { - return __request(OpenAPI, { - method: 'GET', - url: '/umbraco/management/api/v1/tree/template/root', - query: { - 'skip': skip, - 'take': take, - }, - errors: { - 401: `The resource is protected and requires an authentication token`, - }, - }); - } - -} diff --git a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/services/TemporaryFileResource.ts b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/services/TemporaryFileResource.ts deleted file mode 100644 index 6d587006f9..0000000000 --- a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/services/TemporaryFileResource.ts +++ /dev/null @@ -1,100 +0,0 @@ -/* generated using openapi-typescript-codegen -- do no edit */ -/* istanbul ignore file */ -/* tslint:disable */ -/* eslint-disable */ -import type { TemporaryFileConfigurationResponseModel } from '../models/TemporaryFileConfigurationResponseModel'; -import type { TemporaryFileResponseModel } from '../models/TemporaryFileResponseModel'; - -import type { CancelablePromise } from '../core/CancelablePromise'; -import { OpenAPI } from '../core/OpenAPI'; -import { request as __request } from '../core/request'; - -export class TemporaryFileResource { - - /** - * @returns string Created - * @throws ApiError - */ - public static postTemporaryFile({ - formData, - }: { - formData?: { - Id?: string; - File?: Blob; - }, - }): CancelablePromise { - return __request(OpenAPI, { - method: 'POST', - url: '/umbraco/management/api/v1/temporary-file', - formData: formData, - mediaType: 'multipart/form-data', - responseHeader: 'Umb-Generated-Resource', - errors: { - 400: `Bad Request`, - 401: `The resource is protected and requires an authentication token`, - }, - }); - } - - /** - * @returns any Success - * @throws ApiError - */ - public static getTemporaryFileById({ - id, - }: { - id: string, - }): CancelablePromise { - return __request(OpenAPI, { - method: 'GET', - url: '/umbraco/management/api/v1/temporary-file/{id}', - path: { - 'id': id, - }, - errors: { - 400: `Bad Request`, - 401: `The resource is protected and requires an authentication token`, - 404: `Not Found`, - }, - }); - } - - /** - * @returns string Success - * @throws ApiError - */ - public static deleteTemporaryFileById({ - id, - }: { - id: string, - }): CancelablePromise { - return __request(OpenAPI, { - method: 'DELETE', - url: '/umbraco/management/api/v1/temporary-file/{id}', - path: { - 'id': id, - }, - responseHeader: 'Umb-Notifications', - errors: { - 400: `Bad Request`, - 401: `The resource is protected and requires an authentication token`, - 404: `Not Found`, - }, - }); - } - - /** - * @returns any Success - * @throws ApiError - */ - public static getTemporaryFileConfiguration(): CancelablePromise { - return __request(OpenAPI, { - method: 'GET', - url: '/umbraco/management/api/v1/temporary-file/configuration', - errors: { - 401: `The resource is protected and requires an authentication token`, - }, - }); - } - -} diff --git a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/services/TourResource.ts b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/services/TourResource.ts deleted file mode 100644 index 06d5fe9885..0000000000 --- a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/services/TourResource.ts +++ /dev/null @@ -1,49 +0,0 @@ -/* generated using openapi-typescript-codegen -- do no edit */ -/* istanbul ignore file */ -/* tslint:disable */ -/* eslint-disable */ -import type { SetTourStatusRequestModel } from '../models/SetTourStatusRequestModel'; -import type { UserTourStatusesResponseModel } from '../models/UserTourStatusesResponseModel'; - -import type { CancelablePromise } from '../core/CancelablePromise'; -import { OpenAPI } from '../core/OpenAPI'; -import { request as __request } from '../core/request'; - -export class TourResource { - - /** - * @returns any Success - * @throws ApiError - */ - public static getTour(): CancelablePromise { - return __request(OpenAPI, { - method: 'GET', - url: '/umbraco/management/api/v1/tour', - errors: { - 401: `The resource is protected and requires an authentication token`, - }, - }); - } - - /** - * @returns string Success - * @throws ApiError - */ - public static postTour({ - requestBody, - }: { - requestBody?: SetTourStatusRequestModel, - }): CancelablePromise { - return __request(OpenAPI, { - method: 'POST', - url: '/umbraco/management/api/v1/tour', - body: requestBody, - mediaType: 'application/json', - responseHeader: 'Umb-Notifications', - errors: { - 401: `The resource is protected and requires an authentication token`, - }, - }); - } - -} diff --git a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/services/UpgradeResource.ts b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/services/UpgradeResource.ts deleted file mode 100644 index 9987c2f24f..0000000000 --- a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/services/UpgradeResource.ts +++ /dev/null @@ -1,45 +0,0 @@ -/* generated using openapi-typescript-codegen -- do no edit */ -/* istanbul ignore file */ -/* tslint:disable */ -/* eslint-disable */ -import type { UpgradeSettingsResponseModel } from '../models/UpgradeSettingsResponseModel'; - -import type { CancelablePromise } from '../core/CancelablePromise'; -import { OpenAPI } from '../core/OpenAPI'; -import { request as __request } from '../core/request'; - -export class UpgradeResource { - - /** - * @returns string Success - * @throws ApiError - */ - public static postUpgradeAuthorize(): CancelablePromise { - return __request(OpenAPI, { - method: 'POST', - url: '/umbraco/management/api/v1/upgrade/authorize', - responseHeader: 'Umb-Notifications', - errors: { - 401: `The resource is protected and requires an authentication token`, - 428: `Client Error`, - 500: `Server Error`, - }, - }); - } - - /** - * @returns any Success - * @throws ApiError - */ - public static getUpgradeSettings(): CancelablePromise { - return __request(OpenAPI, { - method: 'GET', - url: '/umbraco/management/api/v1/upgrade/settings', - errors: { - 401: `The resource is protected and requires an authentication token`, - 428: `Client Error`, - }, - }); - } - -} diff --git a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/services/UserGroupResource.ts b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/services/UserGroupResource.ts deleted file mode 100644 index 56df5f3884..0000000000 --- a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/services/UserGroupResource.ts +++ /dev/null @@ -1,238 +0,0 @@ -/* generated using openapi-typescript-codegen -- do no edit */ -/* istanbul ignore file */ -/* tslint:disable */ -/* eslint-disable */ -import type { CreateUserGroupRequestModel } from '../models/CreateUserGroupRequestModel'; -import type { DeleteUserGroupsRequestModel } from '../models/DeleteUserGroupsRequestModel'; -import type { PagedUserGroupResponseModel } from '../models/PagedUserGroupResponseModel'; -import type { UpdateUserGroupRequestModel } from '../models/UpdateUserGroupRequestModel'; -import type { UserGroupItemResponseModel } from '../models/UserGroupItemResponseModel'; -import type { UserGroupResponseModel } from '../models/UserGroupResponseModel'; - -import type { CancelablePromise } from '../core/CancelablePromise'; -import { OpenAPI } from '../core/OpenAPI'; -import { request as __request } from '../core/request'; - -export class UserGroupResource { - - /** - * @returns any Success - * @throws ApiError - */ - public static getItemUserGroup({ - id, - }: { - id?: Array, - }): CancelablePromise> { - return __request(OpenAPI, { - method: 'GET', - url: '/umbraco/management/api/v1/item/user-group', - query: { - 'id': id, - }, - errors: { - 401: `The resource is protected and requires an authentication token`, - }, - }); - } - - /** - * @returns string Success - * @throws ApiError - */ - public static deleteUserGroup({ - requestBody, - }: { - requestBody?: DeleteUserGroupsRequestModel, - }): CancelablePromise { - return __request(OpenAPI, { - method: 'DELETE', - url: '/umbraco/management/api/v1/user-group', - body: requestBody, - mediaType: 'application/json', - responseHeader: 'Umb-Notifications', - errors: { - 401: `The resource is protected and requires an authentication token`, - 403: `The authenticated user do not have access to this resource`, - 404: `Not Found`, - }, - }); - } - - /** - * @returns string Created - * @throws ApiError - */ - public static postUserGroup({ - requestBody, - }: { - requestBody?: CreateUserGroupRequestModel, - }): CancelablePromise { - return __request(OpenAPI, { - method: 'POST', - url: '/umbraco/management/api/v1/user-group', - body: requestBody, - mediaType: 'application/json', - responseHeader: 'Umb-Generated-Resource', - errors: { - 400: `Bad Request`, - 401: `The resource is protected and requires an authentication token`, - }, - }); - } - - /** - * @returns any Success - * @throws ApiError - */ - public static getUserGroup({ - skip, - take = 100, - }: { - skip?: number, - take?: number, - }): CancelablePromise { - return __request(OpenAPI, { - method: 'GET', - url: '/umbraco/management/api/v1/user-group', - query: { - 'skip': skip, - 'take': take, - }, - errors: { - 401: `The resource is protected and requires an authentication token`, - }, - }); - } - - /** - * @returns any Success - * @throws ApiError - */ - public static getUserGroupById({ - id, - }: { - id: string, - }): CancelablePromise { - return __request(OpenAPI, { - method: 'GET', - url: '/umbraco/management/api/v1/user-group/{id}', - path: { - 'id': id, - }, - errors: { - 401: `The resource is protected and requires an authentication token`, - 403: `The authenticated user do not have access to this resource`, - 404: `Not Found`, - }, - }); - } - - /** - * @returns string Success - * @throws ApiError - */ - public static deleteUserGroupById({ - id, - }: { - id: string, - }): CancelablePromise { - return __request(OpenAPI, { - method: 'DELETE', - url: '/umbraco/management/api/v1/user-group/{id}', - path: { - 'id': id, - }, - responseHeader: 'Umb-Notifications', - errors: { - 401: `The resource is protected and requires an authentication token`, - 403: `The authenticated user do not have access to this resource`, - 404: `Not Found`, - }, - }); - } - - /** - * @returns string Success - * @throws ApiError - */ - public static putUserGroupById({ - id, - requestBody, - }: { - id: string, - requestBody?: UpdateUserGroupRequestModel, - }): CancelablePromise { - return __request(OpenAPI, { - method: 'PUT', - url: '/umbraco/management/api/v1/user-group/{id}', - path: { - 'id': id, - }, - body: requestBody, - mediaType: 'application/json', - responseHeader: 'Umb-Notifications', - errors: { - 401: `The resource is protected and requires an authentication token`, - 404: `Not Found`, - }, - }); - } - - /** - * @returns string Success - * @throws ApiError - */ - public static deleteUserGroupByIdUsers({ - id, - requestBody, - }: { - id: string, - requestBody?: Array, - }): CancelablePromise { - return __request(OpenAPI, { - method: 'DELETE', - url: '/umbraco/management/api/v1/user-group/{id}/users', - path: { - 'id': id, - }, - body: requestBody, - mediaType: 'application/json', - responseHeader: 'Umb-Notifications', - errors: { - 401: `The resource is protected and requires an authentication token`, - 403: `The authenticated user do not have access to this resource`, - 404: `Not Found`, - }, - }); - } - - /** - * @returns string Success - * @throws ApiError - */ - public static postUserGroupByIdUsers({ - id, - requestBody, - }: { - id: string, - requestBody?: Array, - }): CancelablePromise { - return __request(OpenAPI, { - method: 'POST', - url: '/umbraco/management/api/v1/user-group/{id}/users', - path: { - 'id': id, - }, - body: requestBody, - mediaType: 'application/json', - responseHeader: 'Umb-Notifications', - errors: { - 401: `The resource is protected and requires an authentication token`, - 403: `The authenticated user do not have access to this resource`, - 404: `Not Found`, - }, - }); - } - -} diff --git a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/services/UserResource.ts b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/services/UserResource.ts deleted file mode 100644 index afe9e48f33..0000000000 --- a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/services/UserResource.ts +++ /dev/null @@ -1,853 +0,0 @@ -/* generated using openapi-typescript-codegen -- do no edit */ -/* istanbul ignore file */ -/* tslint:disable */ -/* eslint-disable */ -import type { ChangePasswordCurrentUserRequestModel } from '../models/ChangePasswordCurrentUserRequestModel'; -import type { ChangePasswordUserRequestModel } from '../models/ChangePasswordUserRequestModel'; -import type { CreateInitialPasswordUserRequestModel } from '../models/CreateInitialPasswordUserRequestModel'; -import type { CreateUserRequestModel } from '../models/CreateUserRequestModel'; -import type { CurrentUserResponseModel } from '../models/CurrentUserResponseModel'; -import type { CurrenUserConfigurationResponseModel } from '../models/CurrenUserConfigurationResponseModel'; -import type { DeleteUsersRequestModel } from '../models/DeleteUsersRequestModel'; -import type { DirectionModel } from '../models/DirectionModel'; -import type { DisableUserRequestModel } from '../models/DisableUserRequestModel'; -import type { EnableTwoFactorRequestModel } from '../models/EnableTwoFactorRequestModel'; -import type { EnableUserRequestModel } from '../models/EnableUserRequestModel'; -import type { InviteUserRequestModel } from '../models/InviteUserRequestModel'; -import type { LinkedLoginsRequestModel } from '../models/LinkedLoginsRequestModel'; -import type { NoopSetupTwoFactorModel } from '../models/NoopSetupTwoFactorModel'; -import type { PagedUserResponseModel } from '../models/PagedUserResponseModel'; -import type { ResendInviteUserRequestModel } from '../models/ResendInviteUserRequestModel'; -import type { ResetPasswordUserResponseModel } from '../models/ResetPasswordUserResponseModel'; -import type { SetAvatarRequestModel } from '../models/SetAvatarRequestModel'; -import type { UnlockUsersRequestModel } from '../models/UnlockUsersRequestModel'; -import type { UpdateUserGroupsOnUserRequestModel } from '../models/UpdateUserGroupsOnUserRequestModel'; -import type { UpdateUserRequestModel } from '../models/UpdateUserRequestModel'; -import type { UserConfigurationResponseModel } from '../models/UserConfigurationResponseModel'; -import type { UserItemResponseModel } from '../models/UserItemResponseModel'; -import type { UserOrderModel } from '../models/UserOrderModel'; -import type { UserPermissionsResponseModel } from '../models/UserPermissionsResponseModel'; -import type { UserResponseModel } from '../models/UserResponseModel'; -import type { UserStateModel } from '../models/UserStateModel'; -import type { UserTwoFactorProviderModel } from '../models/UserTwoFactorProviderModel'; -import type { VerifyInviteUserRequestModel } from '../models/VerifyInviteUserRequestModel'; -import type { VerifyInviteUserResponseModel } from '../models/VerifyInviteUserResponseModel'; - -import type { CancelablePromise } from '../core/CancelablePromise'; -import { OpenAPI } from '../core/OpenAPI'; -import { request as __request } from '../core/request'; - -export class UserResource { - - /** - * @returns any Success - * @throws ApiError - */ - public static getFilterUser({ - skip, - take = 100, - orderBy, - orderDirection, - userGroupIds, - userStates, - filter = '', - }: { - skip?: number, - take?: number, - orderBy?: UserOrderModel, - orderDirection?: DirectionModel, - userGroupIds?: Array, - userStates?: Array, - filter?: string, - }): CancelablePromise { - return __request(OpenAPI, { - method: 'GET', - url: '/umbraco/management/api/v1/filter/user', - query: { - 'skip': skip, - 'take': take, - 'orderBy': orderBy, - 'orderDirection': orderDirection, - 'userGroupIds': userGroupIds, - 'userStates': userStates, - 'filter': filter, - }, - errors: { - 400: `Bad Request`, - 401: `The resource is protected and requires an authentication token`, - 404: `Not Found`, - }, - }); - } - - /** - * @returns any Success - * @throws ApiError - */ - public static getItemUser({ - id, - }: { - id?: Array, - }): CancelablePromise> { - return __request(OpenAPI, { - method: 'GET', - url: '/umbraco/management/api/v1/item/user', - query: { - 'id': id, - }, - errors: { - 401: `The resource is protected and requires an authentication token`, - }, - }); - } - - /** - * @returns string Created - * @throws ApiError - */ - public static postUser({ - requestBody, - }: { - requestBody?: CreateUserRequestModel, - }): CancelablePromise { - return __request(OpenAPI, { - method: 'POST', - url: '/umbraco/management/api/v1/user', - body: requestBody, - mediaType: 'application/json', - responseHeader: 'Umb-Generated-Resource', - errors: { - 400: `Bad Request`, - 401: `The resource is protected and requires an authentication token`, - 404: `Not Found`, - }, - }); - } - - /** - * @returns string Success - * @throws ApiError - */ - public static deleteUser({ - requestBody, - }: { - requestBody?: DeleteUsersRequestModel, - }): CancelablePromise { - return __request(OpenAPI, { - method: 'DELETE', - url: '/umbraco/management/api/v1/user', - body: requestBody, - mediaType: 'application/json', - responseHeader: 'Umb-Notifications', - errors: { - 400: `Bad Request`, - 401: `The resource is protected and requires an authentication token`, - 403: `The authenticated user do not have access to this resource`, - }, - }); - } - - /** - * @returns any Success - * @throws ApiError - */ - public static getUser({ - skip, - take = 100, - }: { - skip?: number, - take?: number, - }): CancelablePromise { - return __request(OpenAPI, { - method: 'GET', - url: '/umbraco/management/api/v1/user', - query: { - 'skip': skip, - 'take': take, - }, - errors: { - 401: `The resource is protected and requires an authentication token`, - 404: `Not Found`, - }, - }); - } - - /** - * @returns any Success - * @throws ApiError - */ - public static getUserById({ - id, - }: { - id: string, - }): CancelablePromise { - return __request(OpenAPI, { - method: 'GET', - url: '/umbraco/management/api/v1/user/{id}', - path: { - 'id': id, - }, - errors: { - 401: `The resource is protected and requires an authentication token`, - 403: `The authenticated user do not have access to this resource`, - 404: `Not Found`, - }, - }); - } - - /** - * @returns string Success - * @throws ApiError - */ - public static deleteUserById({ - id, - }: { - id: string, - }): CancelablePromise { - return __request(OpenAPI, { - method: 'DELETE', - url: '/umbraco/management/api/v1/user/{id}', - path: { - 'id': id, - }, - responseHeader: 'Umb-Notifications', - errors: { - 400: `Bad Request`, - 401: `The resource is protected and requires an authentication token`, - 403: `The authenticated user do not have access to this resource`, - 404: `Not Found`, - }, - }); - } - - /** - * @returns string Success - * @throws ApiError - */ - public static putUserById({ - id, - requestBody, - }: { - id: string, - requestBody?: UpdateUserRequestModel, - }): CancelablePromise { - return __request(OpenAPI, { - method: 'PUT', - url: '/umbraco/management/api/v1/user/{id}', - path: { - 'id': id, - }, - body: requestBody, - mediaType: 'application/json', - responseHeader: 'Umb-Notifications', - errors: { - 400: `Bad Request`, - 401: `The resource is protected and requires an authentication token`, - 403: `The authenticated user do not have access to this resource`, - 404: `Not Found`, - }, - }); - } - - /** - * @returns any Success - * @throws ApiError - */ - public static getUserById2Fa({ - id, - }: { - id: string, - }): CancelablePromise> { - return __request(OpenAPI, { - method: 'GET', - url: '/umbraco/management/api/v1/user/{id}/2fa', - path: { - 'id': id, - }, - errors: { - 401: `The resource is protected and requires an authentication token`, - 403: `The authenticated user do not have access to this resource`, - 404: `Not Found`, - }, - }); - } - - /** - * @returns string Success - * @throws ApiError - */ - public static deleteUserById2FaByProviderName({ - id, - providerName, - }: { - id: string, - providerName: string, - }): CancelablePromise { - return __request(OpenAPI, { - method: 'DELETE', - url: '/umbraco/management/api/v1/user/{id}/2fa/{providerName}', - path: { - 'id': id, - 'providerName': providerName, - }, - responseHeader: 'Umb-Notifications', - errors: { - 400: `Bad Request`, - 401: `The resource is protected and requires an authentication token`, - 403: `The authenticated user do not have access to this resource`, - 404: `Not Found`, - }, - }); - } - - /** - * @returns string Success - * @throws ApiError - */ - public static postUserByIdChangePassword({ - id, - requestBody, - }: { - id: string, - requestBody?: ChangePasswordUserRequestModel, - }): CancelablePromise { - return __request(OpenAPI, { - method: 'POST', - url: '/umbraco/management/api/v1/user/{id}/change-password', - path: { - 'id': id, - }, - body: requestBody, - mediaType: 'application/json', - responseHeader: 'Umb-Notifications', - errors: { - 400: `Bad Request`, - 401: `The resource is protected and requires an authentication token`, - 403: `The authenticated user do not have access to this resource`, - 404: `Not Found`, - }, - }); - } - - /** - * @returns any Success - * @throws ApiError - */ - public static postUserByIdResetPassword({ - id, - }: { - id: string, - }): CancelablePromise { - return __request(OpenAPI, { - method: 'POST', - url: '/umbraco/management/api/v1/user/{id}/reset-password', - path: { - 'id': id, - }, - errors: { - 400: `Bad Request`, - 401: `The resource is protected and requires an authentication token`, - 403: `The authenticated user do not have access to this resource`, - 404: `Not Found`, - }, - }); - } - - /** - * @returns string Success - * @throws ApiError - */ - public static deleteUserAvatarById({ - id, - }: { - id: string, - }): CancelablePromise { - return __request(OpenAPI, { - method: 'DELETE', - url: '/umbraco/management/api/v1/user/avatar/{id}', - path: { - 'id': id, - }, - responseHeader: 'Umb-Notifications', - errors: { - 400: `Bad Request`, - 401: `The resource is protected and requires an authentication token`, - 403: `The authenticated user do not have access to this resource`, - 404: `Not Found`, - }, - }); - } - - /** - * @returns string Success - * @throws ApiError - */ - public static postUserAvatarById({ - id, - requestBody, - }: { - id: string, - requestBody?: SetAvatarRequestModel, - }): CancelablePromise { - return __request(OpenAPI, { - method: 'POST', - url: '/umbraco/management/api/v1/user/avatar/{id}', - path: { - 'id': id, - }, - body: requestBody, - mediaType: 'application/json', - responseHeader: 'Umb-Notifications', - errors: { - 400: `Bad Request`, - 401: `The resource is protected and requires an authentication token`, - 403: `The authenticated user do not have access to this resource`, - 404: `Not Found`, - }, - }); - } - - /** - * @returns any Success - * @throws ApiError - */ - public static getUserConfiguration(): CancelablePromise { - return __request(OpenAPI, { - method: 'GET', - url: '/umbraco/management/api/v1/user/configuration', - errors: { - 401: `The resource is protected and requires an authentication token`, - }, - }); - } - - /** - * @returns any Success - * @throws ApiError - */ - public static getUserCurrent(): CancelablePromise { - return __request(OpenAPI, { - method: 'GET', - url: '/umbraco/management/api/v1/user/current', - errors: { - 401: `The resource is protected and requires an authentication token`, - 403: `The authenticated user do not have access to this resource`, - }, - }); - } - - /** - * @returns any Success - * @throws ApiError - */ - public static getUserCurrent2Fa(): CancelablePromise> { - return __request(OpenAPI, { - method: 'GET', - url: '/umbraco/management/api/v1/user/current/2fa', - errors: { - 401: `The resource is protected and requires an authentication token`, - }, - }); - } - - /** - * @returns string Success - * @throws ApiError - */ - public static deleteUserCurrent2FaByProviderName({ - providerName, - code, - }: { - providerName: string, - code?: string, - }): CancelablePromise { - return __request(OpenAPI, { - method: 'DELETE', - url: '/umbraco/management/api/v1/user/current/2fa/{providerName}', - path: { - 'providerName': providerName, - }, - query: { - 'code': code, - }, - responseHeader: 'Umb-Notifications', - errors: { - 400: `Bad Request`, - 401: `The resource is protected and requires an authentication token`, - 404: `Not Found`, - }, - }); - } - - /** - * @returns any Success - * @throws ApiError - */ - public static postUserCurrent2FaByProviderName({ - providerName, - requestBody, - }: { - providerName: string, - requestBody?: EnableTwoFactorRequestModel, - }): CancelablePromise { - return __request(OpenAPI, { - method: 'POST', - url: '/umbraco/management/api/v1/user/current/2fa/{providerName}', - path: { - 'providerName': providerName, - }, - body: requestBody, - mediaType: 'application/json', - errors: { - 400: `Bad Request`, - 401: `The resource is protected and requires an authentication token`, - 404: `Not Found`, - }, - }); - } - - /** - * @returns any Success - * @throws ApiError - */ - public static getUserCurrent2FaByProviderName({ - providerName, - }: { - providerName: string, - }): CancelablePromise { - return __request(OpenAPI, { - method: 'GET', - url: '/umbraco/management/api/v1/user/current/2fa/{providerName}', - path: { - 'providerName': providerName, - }, - errors: { - 400: `Bad Request`, - 401: `The resource is protected and requires an authentication token`, - 404: `Not Found`, - }, - }); - } - - /** - * @returns string Success - * @throws ApiError - */ - public static postUserCurrentAvatar({ - requestBody, - }: { - requestBody?: SetAvatarRequestModel, - }): CancelablePromise { - return __request(OpenAPI, { - method: 'POST', - url: '/umbraco/management/api/v1/user/current/avatar', - body: requestBody, - mediaType: 'application/json', - responseHeader: 'Umb-Notifications', - errors: { - 400: `Bad Request`, - 401: `The resource is protected and requires an authentication token`, - 403: `The authenticated user do not have access to this resource`, - }, - }); - } - - /** - * @returns string Success - * @throws ApiError - */ - public static postUserCurrentChangePassword({ - requestBody, - }: { - requestBody?: ChangePasswordCurrentUserRequestModel, - }): CancelablePromise { - return __request(OpenAPI, { - method: 'POST', - url: '/umbraco/management/api/v1/user/current/change-password', - body: requestBody, - mediaType: 'application/json', - responseHeader: 'Umb-Notifications', - errors: { - 400: `Bad Request`, - 401: `The resource is protected and requires an authentication token`, - }, - }); - } - - /** - * @returns any Success - * @throws ApiError - */ - public static getUserCurrentConfiguration(): CancelablePromise { - return __request(OpenAPI, { - method: 'GET', - url: '/umbraco/management/api/v1/user/current/configuration', - errors: { - 401: `The resource is protected and requires an authentication token`, - }, - }); - } - - /** - * @returns any Success - * @throws ApiError - */ - public static getUserCurrentLogins(): CancelablePromise { - return __request(OpenAPI, { - method: 'GET', - url: '/umbraco/management/api/v1/user/current/logins', - errors: { - 401: `The resource is protected and requires an authentication token`, - }, - }); - } - - /** - * @returns any Success - * @throws ApiError - */ - public static getUserCurrentPermissions({ - id, - }: { - id?: Array, - }): CancelablePromise { - return __request(OpenAPI, { - method: 'GET', - url: '/umbraco/management/api/v1/user/current/permissions', - query: { - 'id': id, - }, - errors: { - 401: `The resource is protected and requires an authentication token`, - 404: `Not Found`, - }, - }); - } - - /** - * @returns any Success - * @throws ApiError - */ - public static getUserCurrentPermissionsDocument({ - id, - }: { - id?: Array, - }): CancelablePromise> { - return __request(OpenAPI, { - method: 'GET', - url: '/umbraco/management/api/v1/user/current/permissions/document', - query: { - 'id': id, - }, - errors: { - 401: `The resource is protected and requires an authentication token`, - 404: `Not Found`, - }, - }); - } - - /** - * @returns any Success - * @throws ApiError - */ - public static getUserCurrentPermissionsMedia({ - id, - }: { - id?: Array, - }): CancelablePromise { - return __request(OpenAPI, { - method: 'GET', - url: '/umbraco/management/api/v1/user/current/permissions/media', - query: { - 'id': id, - }, - errors: { - 401: `The resource is protected and requires an authentication token`, - 404: `Not Found`, - }, - }); - } - - /** - * @returns string Success - * @throws ApiError - */ - public static postUserDisable({ - requestBody, - }: { - requestBody?: DisableUserRequestModel, - }): CancelablePromise { - return __request(OpenAPI, { - method: 'POST', - url: '/umbraco/management/api/v1/user/disable', - body: requestBody, - mediaType: 'application/json', - responseHeader: 'Umb-Notifications', - errors: { - 400: `Bad Request`, - 401: `The resource is protected and requires an authentication token`, - 403: `The authenticated user do not have access to this resource`, - 404: `Not Found`, - }, - }); - } - - /** - * @returns string Success - * @throws ApiError - */ - public static postUserEnable({ - requestBody, - }: { - requestBody?: EnableUserRequestModel, - }): CancelablePromise { - return __request(OpenAPI, { - method: 'POST', - url: '/umbraco/management/api/v1/user/enable', - body: requestBody, - mediaType: 'application/json', - responseHeader: 'Umb-Notifications', - errors: { - 400: `Bad Request`, - 401: `The resource is protected and requires an authentication token`, - 403: `The authenticated user do not have access to this resource`, - 404: `Not Found`, - }, - }); - } - - /** - * @returns string Created - * @throws ApiError - */ - public static postUserInvite({ - requestBody, - }: { - requestBody?: InviteUserRequestModel, - }): CancelablePromise { - return __request(OpenAPI, { - method: 'POST', - url: '/umbraco/management/api/v1/user/invite', - body: requestBody, - mediaType: 'application/json', - responseHeader: 'Umb-Generated-Resource', - errors: { - 400: `Bad Request`, - 401: `The resource is protected and requires an authentication token`, - 404: `Not Found`, - }, - }); - } - - /** - * @returns string Success - * @throws ApiError - */ - public static postUserInviteCreatePassword({ - requestBody, - }: { - requestBody?: CreateInitialPasswordUserRequestModel, - }): CancelablePromise { - return __request(OpenAPI, { - method: 'POST', - url: '/umbraco/management/api/v1/user/invite/create-password', - body: requestBody, - mediaType: 'application/json', - responseHeader: 'Umb-Notifications', - errors: { - 400: `Bad Request`, - 404: `Not Found`, - }, - }); - } - - /** - * @returns string Success - * @throws ApiError - */ - public static postUserInviteResend({ - requestBody, - }: { - requestBody?: ResendInviteUserRequestModel, - }): CancelablePromise { - return __request(OpenAPI, { - method: 'POST', - url: '/umbraco/management/api/v1/user/invite/resend', - body: requestBody, - mediaType: 'application/json', - responseHeader: 'Umb-Notifications', - errors: { - 400: `Bad Request`, - 401: `The resource is protected and requires an authentication token`, - 404: `Not Found`, - }, - }); - } - - /** - * @returns any Success - * @throws ApiError - */ - public static postUserInviteVerify({ - requestBody, - }: { - requestBody?: VerifyInviteUserRequestModel, - }): CancelablePromise { - return __request(OpenAPI, { - method: 'POST', - url: '/umbraco/management/api/v1/user/invite/verify', - body: requestBody, - mediaType: 'application/json', - errors: { - 400: `Bad Request`, - 404: `Not Found`, - }, - }); - } - - /** - * @returns string Success - * @throws ApiError - */ - public static postUserSetUserGroups({ - requestBody, - }: { - requestBody?: UpdateUserGroupsOnUserRequestModel, - }): CancelablePromise { - return __request(OpenAPI, { - method: 'POST', - url: '/umbraco/management/api/v1/user/set-user-groups', - body: requestBody, - mediaType: 'application/json', - responseHeader: 'Umb-Notifications', - errors: { - 401: `The resource is protected and requires an authentication token`, - 403: `The authenticated user do not have access to this resource`, - }, - }); - } - - /** - * @returns string Success - * @throws ApiError - */ - public static postUserUnlock({ - requestBody, - }: { - requestBody?: UnlockUsersRequestModel, - }): CancelablePromise { - return __request(OpenAPI, { - method: 'POST', - url: '/umbraco/management/api/v1/user/unlock', - body: requestBody, - mediaType: 'application/json', - responseHeader: 'Umb-Notifications', - errors: { - 400: `Bad Request`, - 401: `The resource is protected and requires an authentication token`, - 403: `The authenticated user do not have access to this resource`, - }, - }); - } - -} diff --git a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/services/WebhookResource.ts b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/services/WebhookResource.ts deleted file mode 100644 index c0a457ea98..0000000000 --- a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/services/WebhookResource.ts +++ /dev/null @@ -1,159 +0,0 @@ -/* generated using openapi-typescript-codegen -- do no edit */ -/* istanbul ignore file */ -/* tslint:disable */ -/* eslint-disable */ -import type { CreateWebhookRequestModel } from '../models/CreateWebhookRequestModel'; -import type { PagedWebhookResponseModel } from '../models/PagedWebhookResponseModel'; -import type { UpdateWebhookRequestModel } from '../models/UpdateWebhookRequestModel'; -import type { WebhookItemResponseModel } from '../models/WebhookItemResponseModel'; -import type { WebhookResponseModel } from '../models/WebhookResponseModel'; - -import type { CancelablePromise } from '../core/CancelablePromise'; -import { OpenAPI } from '../core/OpenAPI'; -import { request as __request } from '../core/request'; - -export class WebhookResource { - - /** - * @returns any Success - * @throws ApiError - */ - public static getWebhook({ - skip, - take = 100, - }: { - skip?: number, - take?: number, - }): CancelablePromise { - return __request(OpenAPI, { - method: 'GET', - url: '/umbraco/management/api/v1/webhook', - query: { - 'skip': skip, - 'take': take, - }, - errors: { - 401: `The resource is protected and requires an authentication token`, - }, - }); - } - - /** - * @returns string Created - * @throws ApiError - */ - public static postWebhook({ - requestBody, - }: { - requestBody?: CreateWebhookRequestModel, - }): CancelablePromise { - return __request(OpenAPI, { - method: 'POST', - url: '/umbraco/management/api/v1/webhook', - body: requestBody, - mediaType: 'application/json', - responseHeader: 'Umb-Generated-Resource', - errors: { - 400: `Bad Request`, - 401: `The resource is protected and requires an authentication token`, - 404: `Not Found`, - }, - }); - } - - /** - * @returns any Success - * @throws ApiError - */ - public static getWebhookById({ - id, - }: { - id: string, - }): CancelablePromise { - return __request(OpenAPI, { - method: 'GET', - url: '/umbraco/management/api/v1/webhook/{id}', - path: { - 'id': id, - }, - errors: { - 401: `The resource is protected and requires an authentication token`, - 404: `Not Found`, - }, - }); - } - - /** - * @returns string Success - * @throws ApiError - */ - public static putWebhookById({ - id, - requestBody, - }: { - id: string, - requestBody?: UpdateWebhookRequestModel, - }): CancelablePromise { - return __request(OpenAPI, { - method: 'PUT', - url: '/umbraco/management/api/v1/webhook/{id}', - path: { - 'id': id, - }, - body: requestBody, - mediaType: 'application/json', - responseHeader: 'Umb-Notifications', - errors: { - 400: `Bad Request`, - 401: `The resource is protected and requires an authentication token`, - 404: `Not Found`, - }, - }); - } - - /** - * @returns string Success - * @throws ApiError - */ - public static deleteWebhookById({ - id, - }: { - id: string, - }): CancelablePromise { - return __request(OpenAPI, { - method: 'DELETE', - url: '/umbraco/management/api/v1/webhook/{id}', - path: { - 'id': id, - }, - responseHeader: 'Umb-Notifications', - errors: { - 400: `Bad Request`, - 401: `The resource is protected and requires an authentication token`, - 404: `Not Found`, - }, - }); - } - - /** - * @returns any Success - * @throws ApiError - */ - public static getWebhookItem({ - ids, - }: { - ids?: Array, - }): CancelablePromise> { - return __request(OpenAPI, { - method: 'GET', - url: '/umbraco/management/api/v1/webhook/item', - query: { - 'ids': ids, - }, - errors: { - 401: `The resource is protected and requires an authentication token`, - }, - }); - } - -} diff --git a/src/Umbraco.Web.UI.Client/src/external/base64-js/index.ts b/src/Umbraco.Web.UI.Client/src/external/base64-js/index.ts new file mode 100644 index 0000000000..d8a192ebba --- /dev/null +++ b/src/Umbraco.Web.UI.Client/src/external/base64-js/index.ts @@ -0,0 +1 @@ +export { fromByteArray } from 'base64-js'; diff --git a/src/Umbraco.Web.UI.Client/src/external/diff/index.ts b/src/Umbraco.Web.UI.Client/src/external/diff/index.ts new file mode 100644 index 0000000000..498d9d0e23 --- /dev/null +++ b/src/Umbraco.Web.UI.Client/src/external/diff/index.ts @@ -0,0 +1 @@ +export { diffWords } from 'diff'; diff --git a/src/Umbraco.Web.UI.Client/src/external/openid/LICENSE b/src/Umbraco.Web.UI.Client/src/external/openid/LICENSE new file mode 100644 index 0000000000..d9a10c0d8e --- /dev/null +++ b/src/Umbraco.Web.UI.Client/src/external/openid/LICENSE @@ -0,0 +1,176 @@ + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS diff --git a/src/Umbraco.Web.UI.Client/src/external/openid/authorization_request.ts b/src/Umbraco.Web.UI.Client/src/external/openid/authorization_request.ts new file mode 100644 index 0000000000..668082c472 --- /dev/null +++ b/src/Umbraco.Web.UI.Client/src/external/openid/authorization_request.ts @@ -0,0 +1,122 @@ +/* eslint-disable local-rules/umb-class-prefix */ +/* + * Copyright 2017 Google Inc. + * + * Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except + * in compliance with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software distributed under the + * License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either + * express or implied. See the License for the specific language governing permissions and + * limitations under the License. + */ + +import { DefaultCrypto } from './crypto_utils.js'; +import type { Crypto } from './crypto_utils.js'; +import { log } from './logger.js'; +import type { StringMap } from './types.js'; + +/** + * Represents an AuthorizationRequest as JSON. + */ +export interface AuthorizationRequestJson { + response_type: string; + client_id: string; + redirect_uri: string; + scope: string; + state?: string; + extras?: StringMap; + internal?: StringMap; +} + +/** + * Generates a cryptographically random new state. Useful for CSRF protection. + */ +const SIZE = 10; // 10 bytes +const newState = function (crypto: Crypto): string { + return crypto.generateRandom(SIZE); +}; + +/** + * Represents the AuthorizationRequest. + * For more information look at + * https://tools.ietf.org/html/rfc6749#section-4.1.1 + */ +export class AuthorizationRequest { + static RESPONSE_TYPE_TOKEN = 'token'; + static RESPONSE_TYPE_CODE = 'code'; + + // NOTE: + // Both redirect_uri and state are actually optional. + // However AppAuth is more opionionated, and requires you to use both. + + clientId: string; + redirectUri: string; + scope: string; + responseType: string; + state: string; + extras?: StringMap; + internal?: StringMap; + /** + * Constructs a new AuthorizationRequest. + * Use a `undefined` value for the `state` parameter, to generate a random + * state for CSRF protection. + */ + constructor( + request: AuthorizationRequestJson, + private crypto: Crypto = new DefaultCrypto(), + private usePkce: boolean = true, + ) { + this.clientId = request.client_id; + this.redirectUri = request.redirect_uri; + this.scope = request.scope; + this.responseType = request.response_type || AuthorizationRequest.RESPONSE_TYPE_CODE; + this.state = request.state || newState(crypto); + this.extras = request.extras; + // read internal properties if available + this.internal = request.internal; + } + + setupCodeVerifier(): Promise { + if (!this.usePkce) { + return Promise.resolve(); + } else { + const codeVerifier = this.crypto.generateRandom(128); + const challenge: Promise = this.crypto.deriveChallenge(codeVerifier).catch((error) => { + log('Unable to generate PKCE challenge. Not using PKCE', error); + return undefined; + }); + return challenge.then((result) => { + if (result) { + // keep track of the code used. + this.internal = this.internal || {}; + this.internal['code_verifier'] = codeVerifier; + this.extras = this.extras || {}; + this.extras['code_challenge'] = result; + // We always use S256. Plain is not good enough. + this.extras['code_challenge_method'] = 'S256'; + } + }); + } + } + + /** + * Serializes the AuthorizationRequest to a JavaScript Object. + */ + toJson(): Promise { + // Always make sure that the code verifier is setup when toJson() is called. + return this.setupCodeVerifier().then(() => { + return { + response_type: this.responseType, + client_id: this.clientId, + redirect_uri: this.redirectUri, + scope: this.scope, + state: this.state, + extras: this.extras, + internal: this.internal, + }; + }); + } +} diff --git a/src/Umbraco.Web.UI.Client/src/external/openid/authorization_request_handler.ts b/src/Umbraco.Web.UI.Client/src/external/openid/authorization_request_handler.ts new file mode 100644 index 0000000000..90eb72b171 --- /dev/null +++ b/src/Umbraco.Web.UI.Client/src/external/openid/authorization_request_handler.ts @@ -0,0 +1,161 @@ +/* eslint-disable local-rules/umb-class-prefix */ +/* + * Copyright 2017 Google Inc. + * + * Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except + * in compliance with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software distributed under the + * License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either + * express or implied. See the License for the specific language governing permissions and + * limitations under the License. + */ + +import type { AuthorizationRequest } from './authorization_request.js'; +import type { AuthorizationError, AuthorizationResponse } from './authorization_response.js'; +import type { AuthorizationServiceConfiguration } from './authorization_service_configuration.js'; +import type { Crypto } from './crypto_utils.js'; +import { log } from './logger.js'; +import type { QueryStringUtils } from './query_string_utils.js'; +import type { StringMap } from './types.js'; + +/** + * This type represents a lambda that can take an AuthorizationRequest, + * and an AuthorizationResponse as arguments. + */ +export type AuthorizationListener = ( + request: AuthorizationRequest, + response: AuthorizationResponse | null, + error: AuthorizationError | null, +) => void; + +/** + * Represents a structural type holding both authorization request and response. + */ +export interface AuthorizationRequestResponse { + request: AuthorizationRequest; + response: AuthorizationResponse | null; + error: AuthorizationError | null; +} + +/** + * Authorization Service notifier. + * This manages the communication of the AuthorizationResponse to the 3p client. + */ +export class AuthorizationNotifier { + private listener: AuthorizationListener | null = null; + + setAuthorizationListener(listener: AuthorizationListener) { + this.listener = listener; + } + + /** + * The authorization complete callback. + */ + onAuthorizationComplete( + request: AuthorizationRequest, + response: AuthorizationResponse | null, + error: AuthorizationError | null, + ): void { + if (this.listener) { + // complete authorization request + this.listener(request, response, error); + } + } +} + +// TODO(rahulrav@): add more built in parameters. +/* built in parameters. */ +export const BUILT_IN_PARAMETERS = ['redirect_uri', 'client_id', 'response_type', 'state', 'scope']; + +/** + * Defines the interface which is capable of handling an authorization request + * using various methods (iframe / popup / different process etc.). + */ +export abstract class AuthorizationRequestHandler { + constructor( + public utils: QueryStringUtils, + protected crypto: Crypto, + ) {} + + // notifier send the response back to the client. + protected notifier: AuthorizationNotifier | null = null; + + /** + * A utility method to be able to build the authorization request URL. + */ + protected buildRequestUrl(configuration: AuthorizationServiceConfiguration, request: AuthorizationRequest) { + // build the query string + // coerce to any type for convenience + const requestMap: StringMap = { + redirect_uri: request.redirectUri, + client_id: request.clientId, + response_type: request.responseType, + state: request.state, + scope: request.scope, + }; + + // copy over extras + if (request.extras) { + for (const extra in request.extras) { + if (Object.prototype.hasOwnProperty.call(request.extras, extra)) { + // check before inserting to requestMap + if (BUILT_IN_PARAMETERS.indexOf(extra) < 0) { + requestMap[extra] = request.extras[extra]; + } + } + } + } + + const query = this.utils.stringify(requestMap); + const baseUrl = configuration.authorizationEndpoint; + const url = `${baseUrl}?${query}`; + return url; + } + + /** + * Completes the authorization request if necessary & when possible. + */ + completeAuthorizationRequestIfPossible(): Promise { + // call complete authorization if possible to see there might + // be a response that needs to be delivered. + log(`Checking to see if there is an authorization response to be delivered.`); + if (!this.notifier) { + log(`Notifier is not present on AuthorizationRequest handler. + No delivery of result will be possible`); + } + return this.completeAuthorizationRequest().then((result) => { + if (!result) { + log(`No result is available yet.`); + } + if (result && this.notifier) { + this.notifier.onAuthorizationComplete(result.request, result.response, result.error); + } + }); + } + + /** + * Sets the default Authorization Service notifier. + */ + setAuthorizationNotifier(notifier: AuthorizationNotifier): AuthorizationRequestHandler { + this.notifier = notifier; + return this; + } + + /** + * Makes an authorization request. + */ + abstract performAuthorizationRequest( + configuration: AuthorizationServiceConfiguration, + request: AuthorizationRequest, + ): void; + + /** + * Checks if an authorization flow can be completed, and completes it. + * The handler returns a `Promise` if ready, or a `Promise` + * if not ready. + */ + protected abstract completeAuthorizationRequest(): Promise; +} diff --git a/src/Umbraco.Web.UI.Client/src/external/openid/authorization_response.ts b/src/Umbraco.Web.UI.Client/src/external/openid/authorization_response.ts new file mode 100644 index 0000000000..ac074fca30 --- /dev/null +++ b/src/Umbraco.Web.UI.Client/src/external/openid/authorization_response.ts @@ -0,0 +1,79 @@ +/* eslint-disable local-rules/umb-class-prefix */ +/* + * Copyright 2017 Google Inc. + * + * Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except + * in compliance with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software distributed under the + * License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either + * express or implied. See the License for the specific language governing permissions and + * limitations under the License. + */ + +/** + * Represents the AuthorizationResponse as a JSON object. + */ +export interface AuthorizationResponseJson { + code: string; + state: string; +} + +/** + * Represents the AuthorizationError as a JSON object. + */ +export interface AuthorizationErrorJson { + error: string; + error_description?: string; + error_uri?: string; + state?: string; +} + +/** + * Represents the Authorization Response type. + * For more information look at + * https://tools.ietf.org/html/rfc6749#section-4.1.2 + */ +export class AuthorizationResponse { + code: string; + state: string; + + constructor(response: AuthorizationResponseJson) { + this.code = response.code; + this.state = response.state; + } + + toJson(): AuthorizationResponseJson { + return { code: this.code, state: this.state }; + } +} + +/** + * Represents the Authorization error response. + * For more information look at: + * https://tools.ietf.org/html/rfc6749#section-4.1.2.1 + */ +export class AuthorizationError { + error: string; + errorDescription?: string; + errorUri?: string; + state?: string; + + constructor(error: AuthorizationErrorJson) { + this.error = error.error; + this.errorDescription = error.error_description; + this.errorUri = error.error_uri; + this.state = error.state; + } + + toJson(): AuthorizationErrorJson { + return { + error: this.error, + error_description: this.errorDescription, + error_uri: this.errorUri, + state: this.state, + }; + } +} diff --git a/src/Umbraco.Web.UI.Client/src/external/openid/authorization_service_configuration.ts b/src/Umbraco.Web.UI.Client/src/external/openid/authorization_service_configuration.ts new file mode 100644 index 0000000000..3fd30c663f --- /dev/null +++ b/src/Umbraco.Web.UI.Client/src/external/openid/authorization_service_configuration.ts @@ -0,0 +1,81 @@ +/* eslint-disable local-rules/umb-class-prefix */ +/* + * Copyright 2017 Google Inc. + * + * Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except + * in compliance with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software distributed under the + * License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either + * express or implied. See the License for the specific language governing permissions and + * limitations under the License. + */ + +import type { Requestor } from './xhr.js'; +import { FetchRequestor } from './xhr.js'; + +/** + * Represents AuthorizationServiceConfiguration as a JSON object. + */ +export interface AuthorizationServiceConfigurationJson { + authorization_endpoint: string; + token_endpoint: string; + revocation_endpoint: string; + end_session_endpoint?: string; + userinfo_endpoint?: string; +} + +/** + * The standard base path for well-known resources on domains. + * See https://tools.ietf.org/html/rfc5785 for more information. + */ +const WELL_KNOWN_PATH = '.well-known'; + +/** + * The standard resource under the well known path at which an OpenID Connect + * discovery document can be found under an issuer's base URI. + */ +const OPENID_CONFIGURATION = 'openid-configuration'; + +/** + * Configuration details required to interact with an authorization service. + * + * More information at https://openid.net/specs/openid-connect-discovery-1_0-17.html + */ +export class AuthorizationServiceConfiguration { + authorizationEndpoint: string; + tokenEndpoint: string; + revocationEndpoint: string; + userInfoEndpoint?: string; + endSessionEndpoint?: string; + + constructor(request: AuthorizationServiceConfigurationJson) { + this.authorizationEndpoint = request.authorization_endpoint; + this.tokenEndpoint = request.token_endpoint; + this.revocationEndpoint = request.revocation_endpoint; + this.userInfoEndpoint = request.userinfo_endpoint; + this.endSessionEndpoint = request.end_session_endpoint; + } + + toJson() { + return { + authorization_endpoint: this.authorizationEndpoint, + token_endpoint: this.tokenEndpoint, + revocation_endpoint: this.revocationEndpoint, + end_session_endpoint: this.endSessionEndpoint, + userinfo_endpoint: this.userInfoEndpoint, + }; + } + + static fetchFromIssuer(openIdIssuerUrl: string, requestor?: Requestor): Promise { + const fullUrl = `${openIdIssuerUrl}/${WELL_KNOWN_PATH}/${OPENID_CONFIGURATION}`; + + const requestorToUse = requestor || new FetchRequestor(); + + return requestorToUse + .xhr({ url: fullUrl, dataType: 'json', method: 'GET' }) + .then((json) => new AuthorizationServiceConfiguration(json)); + } +} diff --git a/src/Umbraco.Web.UI.Client/src/external/openid/crypto_utils.ts b/src/Umbraco.Web.UI.Client/src/external/openid/crypto_utils.ts new file mode 100644 index 0000000000..9ee6c84ac1 --- /dev/null +++ b/src/Umbraco.Web.UI.Client/src/external/openid/crypto_utils.ts @@ -0,0 +1,98 @@ +/* eslint-disable local-rules/umb-class-prefix */ +/* + * Copyright 2017 Google Inc. + * + * Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except + * in compliance with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software distributed under the + * License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either + * express or implied. See the License for the specific language governing permissions and + * limitations under the License. + */ + +import * as base64 from '@umbraco-cms/backoffice/external/base64-js'; + +import { AppAuthError } from './errors.js'; + +const HAS_CRYPTO = typeof window !== 'undefined' && !!(window.crypto as any); +const HAS_SUBTLE_CRYPTO = HAS_CRYPTO && !!(window.crypto.subtle as any); +const CHARSET = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789'; + +export function bufferToString(buffer: Uint8Array) { + const state = []; + for (let i = 0; i < buffer.byteLength; i += 1) { + const index = buffer[i] % CHARSET.length; + state.push(CHARSET[index]); + } + return state.join(''); +} + +export function urlSafe(buffer: Uint8Array): string { + const encoded = base64.fromByteArray(new Uint8Array(buffer)); + return encoded.replace(/\+/g, '-').replace(/\//g, '_').replace(/=/g, ''); +} + +// adapted from source: http://stackoverflow.com/a/11058858 +// this is used in place of TextEncode as the api is not yet +// well supported: https://caniuse.com/#search=TextEncoder +export function textEncodeLite(str: string) { + const buf = new ArrayBuffer(str.length); + const bufView = new Uint8Array(buf); + + for (let i = 0; i < str.length; i++) { + bufView[i] = str.charCodeAt(i); + } + return bufView; +} + +export interface Crypto { + /** + * Generate a random string + */ + generateRandom(size: number): string; + /** + * Compute the SHA256 of a given code. + * This is useful when using PKCE. + */ + deriveChallenge(code: string): Promise; +} + +/** + * The default implementation of the `Crypto` interface. + * This uses the capabilities of the browser. + */ +export class DefaultCrypto implements Crypto { + generateRandom(size: number) { + const buffer = new Uint8Array(size); + if (HAS_CRYPTO) { + window.crypto.getRandomValues(buffer); + } else { + // fall back to Math.random() if nothing else is available + for (let i = 0; i < size; i += 1) { + buffer[i] = (Math.random() * CHARSET.length) | 0; + } + } + return bufferToString(buffer); + } + + deriveChallenge(code: string): Promise { + if (code.length < 43 || code.length > 128) { + return Promise.reject(new AppAuthError('Invalid code length.')); + } + if (!HAS_SUBTLE_CRYPTO) { + return Promise.reject(new AppAuthError('window.crypto.subtle is unavailable.')); + } + + return new Promise((resolve, reject) => { + crypto.subtle.digest('SHA-256', textEncodeLite(code)).then( + (buffer) => { + return resolve(urlSafe(new Uint8Array(buffer))); + }, + (error) => reject(error), + ); + }); + } +} diff --git a/src/Umbraco.Web.UI.Client/src/external/openid/errors.ts b/src/Umbraco.Web.UI.Client/src/external/openid/errors.ts new file mode 100644 index 0000000000..a37305b800 --- /dev/null +++ b/src/Umbraco.Web.UI.Client/src/external/openid/errors.ts @@ -0,0 +1,24 @@ +/* eslint-disable local-rules/umb-class-prefix */ +/* + * Copyright 2017 Google Inc. + * + * Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except + * in compliance with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software distributed under the + * License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either + * express or implied. See the License for the specific language governing permissions and + * limitations under the License. + */ + +/** + * Represents the AppAuthError type. + */ +export class AppAuthError { + constructor( + public message: string, + public extras?: any, + ) {} +} diff --git a/src/Umbraco.Web.UI.Client/src/external/openid/flags.ts b/src/Umbraco.Web.UI.Client/src/external/openid/flags.ts new file mode 100644 index 0000000000..8a278c6c06 --- /dev/null +++ b/src/Umbraco.Web.UI.Client/src/external/openid/flags.ts @@ -0,0 +1,21 @@ +/* + * Copyright 2017 Google Inc. + * + * Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except + * in compliance with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software distributed under the + * License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either + * express or implied. See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* Global flags that control the behavior of App Auth JS. */ + +/* Logging turned on ? */ +export const IS_LOG = true; + +/* Profiling turned on ? */ +export const IS_PROFILE = false; diff --git a/src/Umbraco.Web.UI.Client/src/external/openid/index.ts b/src/Umbraco.Web.UI.Client/src/external/openid/index.ts index ff18b32b45..108f5e5134 100644 --- a/src/Umbraco.Web.UI.Client/src/external/openid/index.ts +++ b/src/Umbraco.Web.UI.Client/src/external/openid/index.ts @@ -1,18 +1,17 @@ -export { - BaseTokenRequestHandler, - BasicQueryStringUtils, - FetchRequestor, - LocalStorageBackend, - RedirectRequestHandler, - RevokeTokenRequest, -} from '@openid/appauth'; -export { AuthorizationRequest } from '@openid/appauth/built/authorization_request'; -export { AuthorizationNotifier } from '@openid/appauth/built/authorization_request_handler'; -export { AuthorizationServiceConfiguration } from '@openid/appauth/built/authorization_service_configuration'; -export { - GRANT_TYPE_AUTHORIZATION_CODE, - GRANT_TYPE_REFRESH_TOKEN, - TokenRequest, -} from '@openid/appauth/built/token_request'; -export { TokenResponse } from '@openid/appauth/built/token_response'; -export type { LocationLike, StringMap } from '@openid/appauth/built/types'; +export * from './authorization_request.js'; +export * from './authorization_request_handler.js'; +export * from './authorization_response.js'; +export * from './authorization_service_configuration.js'; +export * from './crypto_utils.js'; +export * from './errors.js'; +export * from './flags.js'; +export * from './logger.js'; +export * from './query_string_utils.js'; +export * from './redirect_based_handler.js'; +export * from './revoke_token_request.js'; +export * from './storage.js'; +export * from './token_request.js'; +export * from './token_request_handler.js'; +export * from './token_response.js'; +export type * from './types.js'; +export * from './xhr.js'; diff --git a/src/Umbraco.Web.UI.Client/src/external/openid/logger.ts b/src/Umbraco.Web.UI.Client/src/external/openid/logger.ts new file mode 100644 index 0000000000..9f31c83d79 --- /dev/null +++ b/src/Umbraco.Web.UI.Client/src/external/openid/logger.ts @@ -0,0 +1,71 @@ +/* + * Copyright 2017 Google Inc. + * + * Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except + * in compliance with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software distributed under the + * License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either + * express or implied. See the License for the specific language governing permissions and + * limitations under the License. + */ + +import { IS_LOG, IS_PROFILE } from './flags.js'; + +export function log(message: string, ...args: any[]) { + if (IS_LOG) { + const length = args ? args.length : 0; + if (length > 0) { + console.log(message, ...args); + } else { + console.log(message); + } + } +} + +// check to see if native support for profiling is available. +const NATIVE_PROFILE_SUPPORT = typeof window !== 'undefined' && !!window.performance && !!console.profile; + +/** + * A decorator that can profile a function. + */ +export function profile(target: any, propertyKey: string, descriptor: PropertyDescriptor) { + if (IS_PROFILE) { + return performProfile(target, propertyKey, descriptor); + } else { + // return as-is + return descriptor; + } +} + +function performProfile(target: any, propertyKey: string, descriptor: PropertyDescriptor): PropertyDescriptor { + const originalCallable = descriptor.value; + // name must exist + let name = originalCallable.name; + if (!name) { + name = 'anonymous function'; + } + if (NATIVE_PROFILE_SUPPORT) { + descriptor.value = function (args: any[]) { + console.profile(name); + const startTime = window.performance.now(); + const result = originalCallable.call(this || window, ...args); + const duration = window.performance.now() - startTime; + console.log(`${name} took ${duration} ms`); + console.profileEnd(); + return result; + }; + } else { + descriptor.value = function (args: any[]) { + log(`Profile start ${name}`); + const start = Date.now(); + const result = originalCallable.call(this || window, ...args); + const duration = Date.now() - start; + log(`Profile end ${name} took ${duration} ms.`); + return result; + }; + } + return descriptor; +} diff --git a/src/Umbraco.Web.UI.Client/src/external/openid/query_string_utils.ts b/src/Umbraco.Web.UI.Client/src/external/openid/query_string_utils.ts new file mode 100644 index 0000000000..eb88ce5c13 --- /dev/null +++ b/src/Umbraco.Web.UI.Client/src/external/openid/query_string_utils.ts @@ -0,0 +1,64 @@ +/* eslint-disable local-rules/umb-class-prefix */ +/* + * Copyright 2017 Google Inc. + * + * Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except + * in compliance with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software distributed under the + * License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either + * express or implied. See the License for the specific language governing permissions and + * limitations under the License. + */ + +import type { LocationLike, StringMap } from './types.js'; + +/** + * Query String Utilities. + */ +export interface QueryStringUtils { + stringify(input: StringMap): string; + parse(query: LocationLike, useHash?: boolean): StringMap; + parseQueryString(query: string): StringMap; +} + +export class BasicQueryStringUtils implements QueryStringUtils { + parse(input: LocationLike, useHash?: boolean) { + if (useHash) { + return this.parseQueryString(input.hash); + } else { + return this.parseQueryString(input.search); + } + } + + parseQueryString(query: string): StringMap { + const result: StringMap = {}; + // if anything starts with ?, # or & remove it + query = query.trim().replace(/^(\?|#|&)/, ''); + const params = query.split('&'); + for (let i = 0; i < params.length; i += 1) { + const param = params[i]; // looks something like a=b + const parts = param.split('='); + if (parts.length >= 2) { + const key = decodeURIComponent(parts.shift()!); + const value = parts.length > 0 ? parts.join('=') : null; + if (value) { + result[key] = decodeURIComponent(value); + } + } + } + return result; + } + + stringify(input: StringMap) { + const encoded: string[] = []; + for (const key in input) { + if (Object.prototype.hasOwnProperty.call(input, key) && input[key]) { + encoded.push(`${encodeURIComponent(key)}=${encodeURIComponent(input[key])}`); + } + } + return encoded.join('&'); + } +} diff --git a/src/Umbraco.Web.UI.Client/src/external/openid/redirect_based_handler.ts b/src/Umbraco.Web.UI.Client/src/external/openid/redirect_based_handler.ts new file mode 100644 index 0000000000..8344c28cf2 --- /dev/null +++ b/src/Umbraco.Web.UI.Client/src/external/openid/redirect_based_handler.ts @@ -0,0 +1,146 @@ +/* eslint-disable local-rules/umb-class-prefix */ +/* + * Copyright 2017 Google Inc. + * + * Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except + * in compliance with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software distributed under the + * License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either + * express or implied. See the License for the specific language governing permissions and + * limitations under the License. + */ + +import { AuthorizationRequest } from './authorization_request.js'; +import type { AuthorizationRequestResponse } from './authorization_request_handler.js'; +import { AuthorizationRequestHandler } from './authorization_request_handler.js'; +import { AuthorizationError, AuthorizationResponse } from './authorization_response.js'; +import type { AuthorizationServiceConfiguration } from './authorization_service_configuration.js'; +import type { Crypto } from './crypto_utils.js'; +import { DefaultCrypto } from './crypto_utils.js'; +import { log } from './logger.js'; +import { BasicQueryStringUtils } from './query_string_utils.js'; +import type { StorageBackend } from './storage.js'; +import { LocalStorageBackend } from './storage.js'; +import type { LocationLike } from './types.js'; + +/** key for authorization request. */ +const authorizationRequestKey = (handle: string) => { + return `${handle}_appauth_authorization_request`; +}; + +/** key for authorization service configuration */ +const authorizationServiceConfigurationKey = (handle: string) => { + return `${handle}_appauth_authorization_service_configuration`; +}; + +/** key in local storage which represents the current authorization request. */ +const AUTHORIZATION_REQUEST_HANDLE_KEY = 'appauth_current_authorization_request'; + +/** + * Represents an AuthorizationRequestHandler which uses a standard + * redirect based code flow. + */ +export class RedirectRequestHandler extends AuthorizationRequestHandler { + constructor( + // use the provided storage backend + // or initialize local storage with the default storage backend which + // uses window.localStorage + public storageBackend: StorageBackend = new LocalStorageBackend(), + utils = new BasicQueryStringUtils(), + public locationLike: LocationLike = window.location, + crypto: Crypto = new DefaultCrypto(), + ) { + super(utils, crypto); + } + + performAuthorizationRequest(configuration: AuthorizationServiceConfiguration, request: AuthorizationRequest) { + const handle = this.crypto.generateRandom(10); + + // before you make request, persist all request related data in local storage. + const persisted = Promise.all([ + this.storageBackend.setItem(AUTHORIZATION_REQUEST_HANDLE_KEY, handle), + // Calling toJson() adds in the code & challenge when possible + request + .toJson() + .then((result) => this.storageBackend.setItem(authorizationRequestKey(handle), JSON.stringify(result))), + this.storageBackend.setItem(authorizationServiceConfigurationKey(handle), JSON.stringify(configuration.toJson())), + ]); + + persisted.then(() => { + // make the redirect request + const url = this.buildRequestUrl(configuration, request); + log('Making a request to ', request, url); + this.locationLike.assign(url); + }); + } + + /** + * Attempts to introspect the contents of storage backend and completes the + * request. + */ + protected completeAuthorizationRequest(): Promise { + // TODO(rahulrav@): handle authorization errors. + return this.storageBackend.getItem(AUTHORIZATION_REQUEST_HANDLE_KEY).then((handle) => { + if (handle) { + // we have a pending request. + // fetch authorization request, and check state + return ( + this.storageBackend + .getItem(authorizationRequestKey(handle)) + // requires a corresponding instance of result + // TODO(rahulrav@): check for inconsitent state here + .then((result) => JSON.parse(result!)) + .then((json) => new AuthorizationRequest(json)) + .then((request) => { + // check redirect_uri and state + const currentUri = `${this.locationLike.origin}${this.locationLike.pathname}`; + const queryParams = this.utils.parse(this.locationLike, true /* use hash */); + const state: string | undefined = queryParams['state']; + const code: string | undefined = queryParams['code']; + const error: string | undefined = queryParams['error']; + log('Potential authorization request ', currentUri, queryParams, state, code, error); + const shouldNotify = state === request.state; + let authorizationResponse: AuthorizationResponse | null = null; + let authorizationError: AuthorizationError | null = null; + if (shouldNotify) { + if (error) { + // get additional optional info. + const errorUri = queryParams['error_uri']; + const errorDescription = queryParams['error_description']; + authorizationError = new AuthorizationError({ + error: error, + error_description: errorDescription, + error_uri: errorUri, + state: state, + }); + } else { + authorizationResponse = new AuthorizationResponse({ code: code, state: state }); + } + // cleanup state + return Promise.all([ + this.storageBackend.removeItem(AUTHORIZATION_REQUEST_HANDLE_KEY), + this.storageBackend.removeItem(authorizationRequestKey(handle)), + this.storageBackend.removeItem(authorizationServiceConfigurationKey(handle)), + ]).then(() => { + log('Delivering authorization response'); + return { + request: request, + response: authorizationResponse, + error: authorizationError, + } as AuthorizationRequestResponse; + }); + } else { + log('Mismatched request (state and request_uri) dont match.'); + return Promise.resolve(null); + } + }) + ); + } else { + return null; + } + }); + } +} diff --git a/src/Umbraco.Web.UI.Client/src/external/openid/revoke_token_request.ts b/src/Umbraco.Web.UI.Client/src/external/openid/revoke_token_request.ts new file mode 100644 index 0000000000..97e21f1bec --- /dev/null +++ b/src/Umbraco.Web.UI.Client/src/external/openid/revoke_token_request.ts @@ -0,0 +1,73 @@ +/* eslint-disable local-rules/umb-class-prefix */ +import type { StringMap } from './types.js'; + +/* + * Copyright 2017 Google Inc. + * + * Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except + * in compliance with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software distributed under the + * License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either + * express or implied. See the License for the specific language governing permissions and + * limitations under the License. + */ + +/** + * Supported token types + */ +export type TokenTypeHint = 'refresh_token' | 'access_token'; + +/** + * Represents the Token Request as JSON. + */ +export interface RevokeTokenRequestJson { + token: string; + token_type_hint?: TokenTypeHint; + client_id?: string; + client_secret?: string; +} + +/** + * Represents a revoke token request. + * For more information look at: + * https://tools.ietf.org/html/rfc7009#section-2.1 + */ +export class RevokeTokenRequest { + token: string; + tokenTypeHint: TokenTypeHint | undefined; + clientId: string | undefined; + clientSecret: string | undefined; + + constructor(request: RevokeTokenRequestJson) { + this.token = request.token; + this.tokenTypeHint = request.token_type_hint; + this.clientId = request.client_id; + this.clientSecret = request.client_secret; + } + + /** + * Serializes a TokenRequest to a JavaScript object. + */ + toJson(): RevokeTokenRequestJson { + const json: RevokeTokenRequestJson = { token: this.token }; + if (this.tokenTypeHint) { + json['token_type_hint'] = this.tokenTypeHint; + } + if (this.clientId) { + json['client_id'] = this.clientId; + } + if (this.clientSecret) { + json['client_secret'] = this.clientSecret; + } + return json; + } + + toStringMap(): StringMap { + const json = this.toJson(); + // :( + return json as any; + } +} diff --git a/src/Umbraco.Web.UI.Client/src/external/openid/storage.ts b/src/Umbraco.Web.UI.Client/src/external/openid/storage.ts new file mode 100644 index 0000000000..a33c5dfcad --- /dev/null +++ b/src/Umbraco.Web.UI.Client/src/external/openid/storage.ts @@ -0,0 +1,101 @@ +/* eslint-disable local-rules/umb-class-prefix */ +/* + * Copyright 2017 Google Inc. + * + * Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except + * in compliance with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software distributed under the + * License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either + * express or implied. See the License for the specific language governing permissions and + * limitations under the License. + */ + +/** + * A subset of the `Storage` interface which we need for the backends to work. + * + * Essentially removes the indexable properties and readonly properties from + * `Storage` in lib.dom.d.ts. This is so that a custom type can extend it for + * testing. + */ +export interface UnderlyingStorage { + readonly length: number; + clear(): void; + getItem(key: string): string | null; + removeItem(key: string): void; + setItem(key: string, data: string): void; +} + +/** + * Asynchronous storage APIs. All methods return a `Promise`. + * All methods take the `DOMString` + * IDL type (as it is the lowest common denominator). + */ +export abstract class StorageBackend { + /** + * When passed a key `name`, will return that key's value. + */ + public abstract getItem(name: string): Promise; + + /** + * When passed a key `name`, will remove that key from the storage. + */ + public abstract removeItem(name: string): Promise; + + /** + * When invoked, will empty all keys out of the storage. + */ + public abstract clear(): Promise; + + /** + * The setItem() method of the `StorageBackend` interface, + * when passed a key name and value, will add that key to the storage, + * or update that key's value if it already exists. + */ + public abstract setItem(name: string, value: string): Promise; +} + +/** + * A `StorageBackend` backed by `localstorage`. + */ +export class LocalStorageBackend extends StorageBackend { + private storage: UnderlyingStorage; + constructor(storage?: UnderlyingStorage) { + super(); + this.storage = storage || window.localStorage; + } + + public getItem(name: string): Promise { + return new Promise((resolve, reject) => { + const value = this.storage.getItem(name); + if (value) { + resolve(value); + } else { + resolve(null); + } + }); + } + + public removeItem(name: string): Promise { + return new Promise((resolve, reject) => { + this.storage.removeItem(name); + resolve(); + }); + } + + public clear(): Promise { + return new Promise((resolve, reject) => { + this.storage.clear(); + resolve(); + }); + } + + public setItem(name: string, value: string): Promise { + return new Promise((resolve, reject) => { + this.storage.setItem(name, value); + resolve(); + }); + } +} diff --git a/src/Umbraco.Web.UI.Client/src/external/openid/token_request.ts b/src/Umbraco.Web.UI.Client/src/external/openid/token_request.ts new file mode 100644 index 0000000000..9cf5978d63 --- /dev/null +++ b/src/Umbraco.Web.UI.Client/src/external/openid/token_request.ts @@ -0,0 +1,99 @@ +/* eslint-disable local-rules/umb-class-prefix */ +/* eslint-disable local-rules/exported-string-constant-naming */ +/* + * Copyright 2017 Google Inc. + * + * Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except + * in compliance with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software distributed under the + * License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either + * express or implied. See the License for the specific language governing permissions and + * limitations under the License. + */ + +import type { StringMap } from './types.js'; + +export const GRANT_TYPE_AUTHORIZATION_CODE = 'authorization_code'; +export const GRANT_TYPE_REFRESH_TOKEN = 'refresh_token'; + +/** + * Represents the Token Request as JSON. + */ +export interface TokenRequestJson { + grant_type: string; + code?: string; + refresh_token?: string; + redirect_uri: string; + client_id: string; + extras?: StringMap; +} + +/** + * Represents an Access Token request. + * For more information look at: + * https://tools.ietf.org/html/rfc6749#section-4.1.3 + */ +export class TokenRequest { + clientId: string; + redirectUri: string; + grantType: string; + code: string | undefined; + refreshToken: string | undefined; + extras: StringMap | undefined; + + constructor(request: TokenRequestJson) { + this.clientId = request.client_id; + this.redirectUri = request.redirect_uri; + this.grantType = request.grant_type; + this.code = request.code; + this.refreshToken = request.refresh_token; + this.extras = request.extras; + } + + /** + * Serializes a TokenRequest to a JavaScript object. + */ + toJson(): TokenRequestJson { + return { + grant_type: this.grantType, + code: this.code, + refresh_token: this.refreshToken, + redirect_uri: this.redirectUri, + client_id: this.clientId, + extras: this.extras, + }; + } + + toStringMap(): StringMap { + const map: StringMap = { + grant_type: this.grantType, + client_id: this.clientId, + redirect_uri: this.redirectUri, + }; + + if (this.code) { + map['code'] = this.code; + } + + if (this.refreshToken) { + map['refresh_token'] = this.refreshToken; + } + + // copy over extras + if (this.extras) { + for (const extra in this.extras) { + if ( + Object.prototype.hasOwnProperty.call(this.extras, extra) && + !Object.prototype.hasOwnProperty.call(map, extra) + ) { + // check before inserting to requestMap + map[extra] = this.extras[extra]; + } + } + } + return map; + } +} diff --git a/src/Umbraco.Web.UI.Client/src/external/openid/token_request_handler.ts b/src/Umbraco.Web.UI.Client/src/external/openid/token_request_handler.ts new file mode 100644 index 0000000000..b4bc6f12e4 --- /dev/null +++ b/src/Umbraco.Web.UI.Client/src/external/openid/token_request_handler.ts @@ -0,0 +1,87 @@ +/* eslint-disable local-rules/umb-class-prefix */ +/* + * Copyright 2017 Google Inc. + * + * Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except + * in compliance with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software distributed under the + * License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either + * express or implied. See the License for the specific language governing permissions and + * limitations under the License. + */ + +import type { AuthorizationServiceConfiguration } from './authorization_service_configuration.js'; +import { AppAuthError } from './errors.js'; +import { BasicQueryStringUtils } from './query_string_utils.js'; +import type { QueryStringUtils } from './query_string_utils.js'; +import type { RevokeTokenRequest } from './revoke_token_request.js'; +import type { TokenRequest } from './token_request.js'; +import { TokenError, TokenResponse } from './token_response.js'; +import type { TokenErrorJson, TokenResponseJson } from './token_response.js'; +import { FetchRequestor, type Requestor } from './xhr.js'; + +/** + * Represents an interface which can make a token request. + */ +export interface TokenRequestHandler { + /** + * Performs the token request, given the service configuration. + */ + performTokenRequest(configuration: AuthorizationServiceConfiguration, request: TokenRequest): Promise; + + performRevokeTokenRequest( + configuration: AuthorizationServiceConfiguration, + request: RevokeTokenRequest, + ): Promise; +} + +/** + * The default token request handler. + */ +export class BaseTokenRequestHandler implements TokenRequestHandler { + constructor( + public readonly requestor: Requestor = new FetchRequestor(), + public readonly utils: QueryStringUtils = new BasicQueryStringUtils(), + ) {} + + private isTokenResponse(response: TokenResponseJson | TokenErrorJson): response is TokenResponseJson { + return (response as TokenErrorJson).error === undefined; + } + + performRevokeTokenRequest( + configuration: AuthorizationServiceConfiguration, + request: RevokeTokenRequest, + ): Promise { + const revokeTokenResponse = this.requestor.xhr({ + url: configuration.revocationEndpoint, + method: 'POST', + headers: { 'Content-Type': 'application/x-www-form-urlencoded' }, + data: this.utils.stringify(request.toStringMap()), + }); + + return revokeTokenResponse.then((response) => { + return true; + }); + } + + performTokenRequest(configuration: AuthorizationServiceConfiguration, request: TokenRequest): Promise { + const tokenResponse = this.requestor.xhr({ + url: configuration.tokenEndpoint, + method: 'POST', + dataType: 'json', // adding implicit dataType + headers: { 'Content-Type': 'application/x-www-form-urlencoded' }, + data: this.utils.stringify(request.toStringMap()), + }); + + return tokenResponse.then((response) => { + if (this.isTokenResponse(response)) { + return new TokenResponse(response); + } else { + return Promise.reject(new AppAuthError(response.error, new TokenError(response))); + } + }); + } +} diff --git a/src/Umbraco.Web.UI.Client/src/external/openid/token_response.ts b/src/Umbraco.Web.UI.Client/src/external/openid/token_response.ts new file mode 100644 index 0000000000..3afbf101d7 --- /dev/null +++ b/src/Umbraco.Web.UI.Client/src/external/openid/token_response.ts @@ -0,0 +1,137 @@ +/* eslint-disable local-rules/umb-class-prefix */ +/* + * Copyright 2017 Google Inc. + * + * Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except + * in compliance with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software distributed under the + * License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either + * express or implied. See the License for the specific language governing permissions and + * limitations under the License. + */ + +/** + * Represents the access token types. + * For more information see: + * https://tools.ietf.org/html/rfc6749#section-7.1 + */ +export type TokenType = 'bearer' | 'mac'; + +/** + * Represents the TokenResponse as a JSON Object. + */ +export interface TokenResponseJson { + access_token: string; + token_type?: TokenType /* treating token type as optional, as its going to be inferred. */; + expires_in?: string /* lifetime in seconds. */; + refresh_token?: string; + scope?: string; + id_token?: string /* https://openid.net/specs/openid-connect-core-1_0.html#TokenResponse */; + issued_at?: number /* when was it issued ? */; +} + +/** + * Represents the possible error codes from the token endpoint. + * For more information look at: + * https://tools.ietf.org/html/rfc6749#section-5.2 + */ +export type ErrorType = + | 'invalid_request' + | 'invalid_client' + | 'invalid_grant' + | 'unauthorized_client' + | 'unsupported_grant_type' + | 'invalid_scope'; + +/** + * Represents the TokenError as a JSON Object. + */ +export interface TokenErrorJson { + error: ErrorType; + error_description?: string; + error_uri?: string; +} + +// constants +const AUTH_EXPIRY_BUFFER = 10 * 60 * -1; // 10 mins in seconds + +/** + * Returns the instant of time in seconds. + */ +export const nowInSeconds = () => Math.round(new Date().getTime() / 1000); + +/** + * Represents the Token Response type. + * For more information look at: + * https://tools.ietf.org/html/rfc6749#section-5.1 + */ +export class TokenResponse { + accessToken: string; + tokenType: TokenType; + expiresIn: number | undefined; + refreshToken: string | undefined; + scope: string | undefined; + idToken: string | undefined; + issuedAt: number; + + constructor(response: TokenResponseJson) { + this.accessToken = response.access_token; + this.tokenType = response.token_type || 'bearer'; + if (response.expires_in) { + this.expiresIn = parseInt(response.expires_in, 10); + } + this.refreshToken = response.refresh_token; + this.scope = response.scope; + this.idToken = response.id_token; + this.issuedAt = response.issued_at || nowInSeconds(); + } + + toJson(): TokenResponseJson { + return { + access_token: this.accessToken, + id_token: this.idToken, + refresh_token: this.refreshToken, + scope: this.scope, + token_type: this.tokenType, + issued_at: this.issuedAt, + expires_in: this.expiresIn?.toString(), + }; + } + + isValid(buffer: number = AUTH_EXPIRY_BUFFER): boolean { + if (this.expiresIn) { + const now = nowInSeconds(); + return now < this.issuedAt + this.expiresIn + buffer; + } else { + return true; + } + } +} + +/** + * Represents the Token Error type. + * For more information look at: + * https://tools.ietf.org/html/rfc6749#section-5.2 + */ +export class TokenError { + error: ErrorType; + errorDescription: string | undefined; + errorUri: string | undefined; + + constructor(tokenError: TokenErrorJson) { + this.error = tokenError.error; + this.errorDescription = tokenError.error_description; + this.errorUri = tokenError.error_uri; + } + + toJson(): TokenErrorJson { + return { + error: this.error, + error_description: this.errorDescription, + error_uri: this.errorUri, + }; + } +} diff --git a/src/Umbraco.Web.UI.Client/src/external/openid/types.ts b/src/Umbraco.Web.UI.Client/src/external/openid/types.ts new file mode 100644 index 0000000000..b6fb853dad --- /dev/null +++ b/src/Umbraco.Web.UI.Client/src/external/openid/types.ts @@ -0,0 +1,38 @@ +/* + * Copyright 2017 Google Inc. + * + * Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except + * in compliance with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software distributed under the + * License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either + * express or implied. See the License for the specific language governing permissions and + * limitations under the License. + */ + +export interface StringMap { + [key: string]: string; +} + +/** + * Represents a window.location like object. + */ +export interface LocationLike { + hash: string; + host: string; + origin: string; + hostname: string; + pathname: string; + port: string; + protocol: string; + search: string; + assign(url: string): void; +} + +export interface XhrRequestInit extends RequestInit { + url: string; + dataType?: string; + data?: any; +} diff --git a/src/Umbraco.Web.UI.Client/src/external/openid/xhr.ts b/src/Umbraco.Web.UI.Client/src/external/openid/xhr.ts new file mode 100644 index 0000000000..fc32dbf8cb --- /dev/null +++ b/src/Umbraco.Web.UI.Client/src/external/openid/xhr.ts @@ -0,0 +1,78 @@ +/* eslint-disable local-rules/umb-class-prefix */ +/* + * Copyright 2017 Google Inc. + * + * Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except + * in compliance with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software distributed under the + * License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either + * express or implied. See the License for the specific language governing permissions and + * limitations under the License. + */ + +import { AppAuthError } from './errors.js'; +import type { XhrRequestInit } from './types.js'; + +/** + * An class that abstracts away the ability to make an XMLHttpRequest. + */ +export abstract class Requestor { + abstract xhr(settings: unknown): Promise; +} + +/** + * Uses fetch API to make Ajax requests + */ +export class FetchRequestor extends Requestor { + xhr(settings: XhrRequestInit): Promise { + if (!settings.url) { + return Promise.reject(new AppAuthError('A URL must be provided.')); + } + const url: URL = new URL(settings.url); + const requestInit: RequestInit = {}; + requestInit.method = settings.method; + requestInit.mode = 'cors'; + + if (settings.data) { + if (settings.method && settings.method.toUpperCase() === 'POST') { + requestInit.body = settings.data; + } else { + const searchParams = new URLSearchParams(settings.data); + searchParams.forEach((value, key) => { + url.searchParams.append(key, value); + }); + } + } + + // Set the request headers + requestInit.headers = {}; + if (settings.headers) { + requestInit.headers = settings.headers; + } + + const isJsonDataType = settings.dataType && settings.dataType.toLowerCase() === 'json'; + + // Set 'Accept' header value for json requests (Taken from + // https://github.com/jquery/jquery/blob/e0d941156900a6bff7c098c8ea7290528e468cf8/src/ajax.js#L644 + // ) + if (isJsonDataType) { + (requestInit.headers as any).Accept = 'application/json, text/javascript, */*; q=0.01'; + } + + return fetch(url.toString(), requestInit).then((response) => { + if (response.status >= 200 && response.status < 300) { + const contentType = response.headers.get('content-type'); + if (isJsonDataType || (contentType && contentType.indexOf('application/json') !== -1)) { + return response.json(); + } else { + return response.text(); + } + } else { + return Promise.reject(new AppAuthError(response.status.toString(), response.statusText)); + } + }); + } +} diff --git a/src/Umbraco.Web.UI.Client/src/external/rxjs/index.ts b/src/Umbraco.Web.UI.Client/src/external/rxjs/index.ts index f7d17284b7..cc5b1fcd73 100644 --- a/src/Umbraco.Web.UI.Client/src/external/rxjs/index.ts +++ b/src/Umbraco.Web.UI.Client/src/external/rxjs/index.ts @@ -17,4 +17,5 @@ export { switchMap, filter, startWith, + skip, } from 'rxjs'; diff --git a/src/Umbraco.Web.UI.Client/src/libs/context-api/consume/context-consumer.ts b/src/Umbraco.Web.UI.Client/src/libs/context-api/consume/context-consumer.ts index f49942f71e..e4cbaacc6e 100644 --- a/src/Umbraco.Web.UI.Client/src/libs/context-api/consume/context-consumer.ts +++ b/src/Umbraco.Web.UI.Client/src/libs/context-api/consume/context-consumer.ts @@ -170,6 +170,7 @@ export class UmbContextConsumer this.#createConditionController(conditionManifest, conditionConfig)), ); + // If we got destroyed in the mean time, then we don't need to continue: + if (!this.#extensionRegistry) { + newConditionControllers.forEach((controller) => controller?.destroy()); + return; + } + const oldLength = this.#conditionControllers.length; newConditionControllers diff --git a/src/Umbraco.Web.UI.Client/src/libs/extension-api/controller/base-extensions-initializer.controller.ts b/src/Umbraco.Web.UI.Client/src/libs/extension-api/controller/base-extensions-initializer.controller.ts index 293a91f3d5..b177cd5cc7 100644 --- a/src/Umbraco.Web.UI.Client/src/libs/extension-api/controller/base-extensions-initializer.controller.ts +++ b/src/Umbraco.Web.UI.Client/src/libs/extension-api/controller/base-extensions-initializer.controller.ts @@ -186,6 +186,7 @@ export abstract class UmbBaseExtensionsInitializer< hostDisconnected(): void { super.hostDisconnected(); if (this.#changeDebounce) { + cancelAnimationFrame(this.#changeDebounce); this.#notifyChange(); } } diff --git a/src/Umbraco.Web.UI.Client/src/libs/extension-api/controller/server-extension-registrator.controller.ts b/src/Umbraco.Web.UI.Client/src/libs/extension-api/controller/server-extension-registrator.controller.ts index c663868854..d582f2f307 100644 --- a/src/Umbraco.Web.UI.Client/src/libs/extension-api/controller/server-extension-registrator.controller.ts +++ b/src/Umbraco.Web.UI.Client/src/libs/extension-api/controller/server-extension-registrator.controller.ts @@ -1,10 +1,6 @@ import type { ManifestBase } from '../types/index.js'; import { isManifestBaseType } from '../type-guards/index.js'; -import { - PackageResource, - OpenAPI, - type PackageManifestResponseModel, -} from '@umbraco-cms/backoffice/external/backend-api'; +import { OpenAPI, ManifestService, type ManifestResponseModel } from '@umbraco-cms/backoffice/external/backend-api'; import { UmbControllerBase } from '@umbraco-cms/backoffice/class-api'; import type { UmbControllerHost } from '@umbraco-cms/backoffice/controller-api'; import type { UmbBackofficeExtensionRegistry } from '@umbraco-cms/backoffice/extension-registry'; @@ -26,7 +22,19 @@ export class UmbServerExtensionRegistrator extends UmbControllerBase { * @remark Users must have the BACKOFFICE_ACCESS permission to access this method. */ public async registerAllExtensions() { - const { data: packages } = await tryExecuteAndNotify(this, PackageResource.getPackageManifest()); + const { data: packages } = await tryExecuteAndNotify(this, ManifestService.getManifestManifest()); + if (packages) { + await this.#loadServerPackages(packages); + } + } + + /** + * Registers all private extensions from the server. + * This is used to register all private extensions that are available to the user. + * @remark Users must have the BACKOFFICE_ACCESS permission to access this method. + */ + public async registerPrivateExtensions() { + const { data: packages } = await tryExecuteAndNotify(this, ManifestService.getManifestManifestPrivate()); if (packages) { await this.#loadServerPackages(packages); } @@ -38,13 +46,13 @@ export class UmbServerExtensionRegistrator extends UmbControllerBase { * @remark Any user can access this method without any permissions. */ public async registerPublicExtensions() { - const { data: packages } = await tryExecuteAndNotify(this, PackageResource.getPackageManifestPublic()); + const { data: packages } = await tryExecuteAndNotify(this, ManifestService.getManifestManifestPublic()); if (packages) { await this.#loadServerPackages(packages); } } - async #loadServerPackages(packages: PackageManifestResponseModel[]) { + async #loadServerPackages(packages: ManifestResponseModel[]) { const extensions: ManifestBase[] = []; packages.forEach((p) => { diff --git a/src/Umbraco.Web.UI.Client/src/libs/extension-api/functions/index.ts b/src/Umbraco.Web.UI.Client/src/libs/extension-api/functions/index.ts index cf2758ba9f..21d7768a87 100644 --- a/src/Umbraco.Web.UI.Client/src/libs/extension-api/functions/index.ts +++ b/src/Umbraco.Web.UI.Client/src/libs/extension-api/functions/index.ts @@ -6,4 +6,4 @@ export * from './load-manifest-api.function.js'; export * from './load-manifest-element.function.js'; export * from './load-manifest-plain-css.function.js'; export * from './load-manifest-plain-js.function.js'; -export * from './types.js'; +export type * from './types.js'; diff --git a/src/Umbraco.Web.UI.Client/src/libs/extension-api/index.ts b/src/Umbraco.Web.UI.Client/src/libs/extension-api/index.ts index c8ce6b7200..22c8863cb0 100644 --- a/src/Umbraco.Web.UI.Client/src/libs/extension-api/index.ts +++ b/src/Umbraco.Web.UI.Client/src/libs/extension-api/index.ts @@ -2,7 +2,7 @@ export * from './condition/index.js'; export * from './controller/index.js'; export * from './functions/index.js'; export * from './initializers/index.js'; -export * from './models/index.js'; +export type * from './models/index.js'; export * from './registry/extension.registry.js'; export * from './type-guards/index.js'; -export * from './types/index.js'; +export type * from './types/index.js'; diff --git a/src/Umbraco.Web.UI.Client/src/libs/localization-api/localization.controller.test.ts b/src/Umbraco.Web.UI.Client/src/libs/localization-api/localization.controller.test.ts index c9b1ab775a..e85968960f 100644 --- a/src/Umbraco.Web.UI.Client/src/libs/localization-api/localization.controller.test.ts +++ b/src/Umbraco.Web.UI.Client/src/libs/localization-api/localization.controller.test.ts @@ -274,6 +274,22 @@ describe('UmbLocalizeController', () => { }); }); + describe('string', () => { + it('should replace words prefixed with a # with translated value', async () => { + const str = '#close'; + const str2 = '#logout #close'; + const str3 = '#logout #missing_translation_key #close'; + expect(controller.string(str)).to.equal('Close'); + expect(controller.string(str2)).to.equal('Log out Close'); + expect(controller.string(str3)).to.equal('Log out #missing_translation_key Close'); + }); + + it('should return the word with a # if the word is not found', async () => { + const str = '#missing_translation_key'; + expect(controller.string(str)).to.equal('#missing_translation_key'); + }); + }); + describe('host element', () => { let element: UmbLocalizeControllerHostElement; diff --git a/src/Umbraco.Web.UI.Client/src/libs/localization-api/localization.controller.ts b/src/Umbraco.Web.UI.Client/src/libs/localization-api/localization.controller.ts index 9706aa8272..1a2ebfbfdf 100644 --- a/src/Umbraco.Web.UI.Client/src/libs/localization-api/localization.controller.ts +++ b/src/Umbraco.Web.UI.Client/src/libs/localization-api/localization.controller.ts @@ -159,4 +159,21 @@ export class UmbLocalizationController { + const key = match.slice(1); + // TODO: find solution to pass dynamic string to term + // eslint-disable-next-line @typescript-eslint/ban-ts-comment + // @ts-ignore + const localized = this.term(key); + // we didn't find a localized string, so we return the original string with the # + return localized === key ? match : localized; + }); + + return localizedText; + } } diff --git a/src/Umbraco.Web.UI.Client/src/mocks/browser-handlers.ts b/src/Umbraco.Web.UI.Client/src/mocks/browser-handlers.ts index 6a3c44ce04..3bbf78c39a 100644 --- a/src/Umbraco.Web.UI.Client/src/mocks/browser-handlers.ts +++ b/src/Umbraco.Web.UI.Client/src/mocks/browser-handlers.ts @@ -36,6 +36,7 @@ import { handlers as userGroupsHandlers } from './handlers/user-group/index.js'; import { handlers as userHandlers } from './handlers/user/index.js'; import * as manifestsHandlers from './handlers/manifests.handlers.js'; import * as serverHandlers from './handlers/server.handlers.js'; +import { handlers as documentBlueprintHandlers } from './handlers/document-blueprint/index.js'; const handlers = [ ...auditLogHandlers, @@ -74,6 +75,7 @@ const handlers = [ ...upgradeHandlers, ...userGroupsHandlers, ...userHandlers, + ...documentBlueprintHandlers, serverHandlers.serverInformationHandler, ]; @@ -90,11 +92,11 @@ switch (import.meta.env.VITE_UMBRACO_INSTALL_STATUS) { switch (import.meta.env.VITE_UMBRACO_EXTENSION_MOCKS) { case 'on': - handlers.push(manifestsHandlers.manifestDevelopmentHandler); + handlers.push(...manifestsHandlers.manifestDevelopmentHandlers); break; default: - handlers.push(manifestsHandlers.manifestEmptyHandler); + handlers.push(...manifestsHandlers.manifestEmptyHandlers); } export { handlers }; diff --git a/src/Umbraco.Web.UI.Client/src/mocks/data/document-blueprint/document-blueprint.data.ts b/src/Umbraco.Web.UI.Client/src/mocks/data/document-blueprint/document-blueprint.data.ts new file mode 100644 index 0000000000..084f715a9a --- /dev/null +++ b/src/Umbraco.Web.UI.Client/src/mocks/data/document-blueprint/document-blueprint.data.ts @@ -0,0 +1,45 @@ +import type { UmbMockDocumentModel } from '../document/document.data.js'; +import { DocumentVariantStateModel } from '@umbraco-cms/backoffice/external/backend-api'; + +export interface UmbMockDocumentBlueprintModel extends UmbMockDocumentModel {} + +export const data: Array = [ + { + urls: [ + { + culture: 'en-US', + url: '/', + }, + ], + template: null, + id: 'the-simplest-document-id', + parent: null, + documentType: { + id: 'the-simplest-document-type-id', + icon: 'icon-document', + }, + hasChildren: false, + noAccess: false, + isProtected: false, + isTrashed: false, + variants: [ + { + state: DocumentVariantStateModel.DRAFT, + publishDate: '2023-02-06T15:32:24.957009', + culture: 'en-us', + segment: null, + name: 'The Simplest Document Blueprint', + createDate: '2023-02-06T15:32:05.350038', + updateDate: '2023-02-06T15:32:24.957009', + }, + ], + values: [ + { + alias: 'prop1', + culture: null, + segment: null, + value: 'my blueprint value', + }, + ], + }, +]; diff --git a/src/Umbraco.Web.UI.Client/src/mocks/data/document-blueprint/document-blueprint.db.ts b/src/Umbraco.Web.UI.Client/src/mocks/data/document-blueprint/document-blueprint.db.ts new file mode 100644 index 0000000000..9166a603dc --- /dev/null +++ b/src/Umbraco.Web.UI.Client/src/mocks/data/document-blueprint/document-blueprint.db.ts @@ -0,0 +1,110 @@ +import { UmbMockEntityTreeManager } from '../utils/entity/entity-tree.manager.js'; +import { UmbMockEntityItemManager } from '../utils/entity/entity-item.manager.js'; +import { UmbMockEntityDetailManager } from '../utils/entity/entity-detail.manager.js'; +import { umbDocumentTypeMockDb } from '../document-type/document-type.db.js'; +import { UmbEntityMockDbBase } from '../utils/entity/entity-base.js'; +import { data } from './document-blueprint.data.js'; +import type { UmbMockDocumentBlueprintModel } from './document-blueprint.data.js'; +import { DocumentVariantStateModel } from '@umbraco-cms/backoffice/external/backend-api'; +import { UmbId } from '@umbraco-cms/backoffice/id'; +import type { + CreateDocumentRequestModel, + DocumentItemResponseModel, + DocumentResponseModel, + DocumentTreeItemResponseModel, +} from '@umbraco-cms/backoffice/external/backend-api'; + +export class UmbDocumentBlueprintMockDB extends UmbEntityMockDbBase { + tree = new UmbMockEntityTreeManager(this, treeItemMapper); + item = new UmbMockEntityItemManager(this, itemMapper); + detail = new UmbMockEntityDetailManager( + this, + createMockDocumentBlueprintMapper, + detailResponseMapper, + ); + + constructor(data: Array) { + super(data); + } +} + +const treeItemMapper = (model: UmbMockDocumentBlueprintModel): Omit => { + const documentType = umbDocumentTypeMockDb.read(model.documentType.id); + if (!documentType) throw new Error(`Document type with id ${model.documentType.id} not found`); + + return { + documentType: { + icon: documentType.icon, + id: documentType.id, + }, + hasChildren: model.hasChildren, + id: model.id, + isProtected: model.isProtected, + isTrashed: model.isTrashed, + noAccess: model.noAccess, + parent: model.parent, + variants: model.variants, + }; +}; + +const createMockDocumentBlueprintMapper = (request: CreateDocumentRequestModel): UmbMockDocumentBlueprintModel => { + const documentType = umbDocumentTypeMockDb.read(request.documentType.id); + if (!documentType) throw new Error(`Document type with id ${request.documentType.id} not found`); + + const now = new Date().toString(); + + return { + documentType: { + id: documentType.id, + icon: documentType.icon, + collection: undefined, // TODO: get list from doc type when ready + }, + hasChildren: false, + id: request.id ? request.id : UmbId.new(), + isProtected: false, + isTrashed: false, + noAccess: false, + parent: request.parent, + values: request.values, + variants: request.variants.map((variantRequest) => { + return { + culture: variantRequest.culture, + segment: variantRequest.segment, + name: variantRequest.name, + createDate: now, + updateDate: now, + state: DocumentVariantStateModel.DRAFT, + publishDate: null, + }; + }), + urls: [], + }; +}; + +const detailResponseMapper = (model: UmbMockDocumentBlueprintModel): DocumentResponseModel => { + return { + documentType: model.documentType, + id: model.id, + isTrashed: model.isTrashed, + template: model.template, + urls: model.urls, + values: model.values, + variants: model.variants, + }; +}; + +const itemMapper = (model: UmbMockDocumentBlueprintModel): DocumentItemResponseModel => { + return { + documentType: { + collection: model.documentType.collection, + icon: model.documentType.icon, + id: model.documentType.id, + }, + id: model.id, + isProtected: model.isProtected, + isTrashed: model.isTrashed, + variants: model.variants, + }; +}; + +export const umbDocumentBlueprintMockDb = new UmbDocumentBlueprintMockDB(data); diff --git a/src/Umbraco.Web.UI.Client/src/mocks/e2e-handlers.ts b/src/Umbraco.Web.UI.Client/src/mocks/e2e-handlers.ts index 17cf239c92..30ecb97891 100644 --- a/src/Umbraco.Web.UI.Client/src/mocks/e2e-handlers.ts +++ b/src/Umbraco.Web.UI.Client/src/mocks/e2e-handlers.ts @@ -20,7 +20,7 @@ import { handlers as configHandlers } from './handlers/config.handlers.js'; export const handlers = [ serverHandlers.serverRunningHandler, serverHandlers.serverInformationHandler, - manifestsHandlers.manifestEmptyHandler, + ...manifestsHandlers.manifestEmptyHandlers, ...auditLogHandlers, ...installHandlers, ...upgradeHandlers, diff --git a/src/Umbraco.Web.UI.Client/src/mocks/handlers/document-blueprint/detail.handlers.ts b/src/Umbraco.Web.UI.Client/src/mocks/handlers/document-blueprint/detail.handlers.ts new file mode 100644 index 0000000000..80722ba2a8 --- /dev/null +++ b/src/Umbraco.Web.UI.Client/src/mocks/handlers/document-blueprint/detail.handlers.ts @@ -0,0 +1,48 @@ +const { rest } = window.MockServiceWorker; +import { umbDocumentBlueprintMockDb } from '../../data/document-blueprint/document-blueprint.db.js'; +import { UMB_SLUG } from './slug.js'; +import type { + CreateDocumentRequestModel, + UpdateDocumentRequestModel, +} from '@umbraco-cms/backoffice/external/backend-api'; +import { umbracoPath } from '@umbraco-cms/backoffice/utils'; + +export const detailHandlers = [ + rest.post(umbracoPath(`${UMB_SLUG}`), async (req, res, ctx) => { + const requestBody = (await req.json()) as CreateDocumentRequestModel; + if (!requestBody) return res(ctx.status(400, 'no body found')); + + const id = umbDocumentBlueprintMockDb.detail.create(requestBody); + + return res( + ctx.status(201), + ctx.set({ + Location: req.url.href + '/' + id, + 'Umb-Generated-Resource': id, + }), + ); + }), + + rest.get(umbracoPath(`${UMB_SLUG}/:id`), (req, res, ctx) => { + const id = req.params.id as string; + if (!id) return res(ctx.status(400)); + const response = umbDocumentBlueprintMockDb.detail.read(id); + return res(ctx.status(200), ctx.json(response)); + }), + + rest.put(umbracoPath(`${UMB_SLUG}/:id`), async (req, res, ctx) => { + const id = req.params.id as string; + if (!id) return res(ctx.status(400)); + const requestBody = (await req.json()) as UpdateDocumentRequestModel; + if (!requestBody) return res(ctx.status(400, 'no body found')); + umbDocumentBlueprintMockDb.detail.update(id, requestBody); + return res(ctx.status(200)); + }), + + rest.delete(umbracoPath(`${UMB_SLUG}/:id`), (req, res, ctx) => { + const id = req.params.id as string; + if (!id) return res(ctx.status(400)); + umbDocumentBlueprintMockDb.detail.delete(id); + return res(ctx.status(200)); + }), +]; diff --git a/src/Umbraco.Web.UI.Client/src/mocks/handlers/document-blueprint/index.ts b/src/Umbraco.Web.UI.Client/src/mocks/handlers/document-blueprint/index.ts new file mode 100644 index 0000000000..236354678a --- /dev/null +++ b/src/Umbraco.Web.UI.Client/src/mocks/handlers/document-blueprint/index.ts @@ -0,0 +1,5 @@ +import { treeHandlers } from './tree.handlers.js'; +import { itemHandlers } from './item.handlers.js'; +import { detailHandlers } from './detail.handlers.js'; + +export const handlers = [...treeHandlers, ...itemHandlers, ...detailHandlers]; diff --git a/src/Umbraco.Web.UI.Client/src/mocks/handlers/document-blueprint/item.handlers.ts b/src/Umbraco.Web.UI.Client/src/mocks/handlers/document-blueprint/item.handlers.ts new file mode 100644 index 0000000000..377e4343d8 --- /dev/null +++ b/src/Umbraco.Web.UI.Client/src/mocks/handlers/document-blueprint/item.handlers.ts @@ -0,0 +1,13 @@ +const { rest } = window.MockServiceWorker; +import { umbDocumentBlueprintMockDb } from '../../data/document-blueprint/document-blueprint.db.js'; +import { UMB_SLUG } from './slug.js'; +import { umbracoPath } from '@umbraco-cms/backoffice/utils'; + +export const itemHandlers = [ + rest.get(umbracoPath(`/item${UMB_SLUG}`), (req, res, ctx) => { + const ids = req.url.searchParams.getAll('id'); + if (!ids) return; + const items = umbDocumentBlueprintMockDb.item.getItems(ids); + return res(ctx.status(200), ctx.json(items)); + }), +]; diff --git a/src/Umbraco.Web.UI.Client/src/mocks/handlers/document-blueprint/slug.ts b/src/Umbraco.Web.UI.Client/src/mocks/handlers/document-blueprint/slug.ts new file mode 100644 index 0000000000..f877ec0b7a --- /dev/null +++ b/src/Umbraco.Web.UI.Client/src/mocks/handlers/document-blueprint/slug.ts @@ -0,0 +1 @@ +export const UMB_SLUG = '/document-blueprint'; diff --git a/src/Umbraco.Web.UI.Client/src/mocks/handlers/document-blueprint/tree.handlers.ts b/src/Umbraco.Web.UI.Client/src/mocks/handlers/document-blueprint/tree.handlers.ts new file mode 100644 index 0000000000..fda1cfb47f --- /dev/null +++ b/src/Umbraco.Web.UI.Client/src/mocks/handlers/document-blueprint/tree.handlers.ts @@ -0,0 +1,22 @@ +const { rest } = window.MockServiceWorker; +import { umbDocumentBlueprintMockDb } from '../../data/document-blueprint/document-blueprint.db.js'; +import { UMB_SLUG } from './slug.js'; +import { umbracoPath } from '@umbraco-cms/backoffice/utils'; + +export const treeHandlers = [ + rest.get(umbracoPath(`/tree${UMB_SLUG}/root`), (req, res, ctx) => { + const skip = Number(req.url.searchParams.get('skip')); + const take = Number(req.url.searchParams.get('take')); + const response = umbDocumentBlueprintMockDb.tree.getRoot({ skip, take }); + return res(ctx.status(200), ctx.json(response)); + }), + + rest.get(umbracoPath(`/tree${UMB_SLUG}/children`), (req, res, ctx) => { + const parentId = req.url.searchParams.get('parentId'); + if (!parentId) return; + const skip = Number(req.url.searchParams.get('skip')); + const take = Number(req.url.searchParams.get('take')); + const response = umbDocumentBlueprintMockDb.tree.getChildrenOf({ parentId, skip, take }); + return res(ctx.status(200), ctx.json(response)); + }), +]; diff --git a/src/Umbraco.Web.UI.Client/src/mocks/handlers/manifests.handlers.ts b/src/Umbraco.Web.UI.Client/src/mocks/handlers/manifests.handlers.ts index 751575284d..fbfc33ed1a 100644 --- a/src/Umbraco.Web.UI.Client/src/mocks/handlers/manifests.handlers.ts +++ b/src/Umbraco.Web.UI.Client/src/mocks/handlers/manifests.handlers.ts @@ -3,107 +3,159 @@ const { rest } = window.MockServiceWorker; import type { PackageManifestResponse } from '../../packages/packages/types.js'; import { umbracoPath } from '@umbraco-cms/backoffice/utils'; -export const manifestDevelopmentHandler = rest.get(umbracoPath('/package/manifest'), (_req, res, ctx) => { - return res( - // Respond with a 200 status code - ctx.status(200), - ctx.json([ - { - name: 'My Package Name', - version: '1.0.0', - extensions: [ - { - type: 'bundle', - alias: 'My.Package.Bundle', - name: 'My Package Bundle', - js: '/App_Plugins/custom-bundle-package/index.js', - }, - ], - }, - { - name: 'Named Package', - version: '1.0.0', - extensions: [ - { - type: 'section', - alias: 'My.Section.Custom', - name: 'Custom Section', - js: '/App_Plugins/section.js', - elementName: 'my-section-custom', - weight: 1, - meta: { - label: 'Custom', - pathname: 'my-custom', +export const manifestDevelopmentHandlers = [ + rest.get(umbracoPath('/manifest/manifest/private'), (_req, res, ctx) => { + return res( + // Respond with a 200 status code + ctx.status(200), + ctx.json([ + { + name: 'My Package Name', + version: '1.0.0', + extensions: [ + { + type: 'bundle', + alias: 'My.Package.Bundle', + name: 'My Package Bundle', + js: '/App_Plugins/custom-bundle-package/index.js', }, - }, - { - type: 'propertyEditorUi', - alias: 'My.PropertyEditorUI.Custom', - name: 'My Custom Property Editor UI', - js: '/App_Plugins/property-editor.js', - elementName: 'my-property-editor-ui-custom', - meta: { - label: 'My Custom Property', - icon: 'document', - group: 'Common', - propertyEditorSchema: 'Umbraco.TextBox', + ], + }, + { + name: 'Named Package', + version: '1.0.0', + extensions: [ + { + type: 'section', + alias: 'My.Section.Custom', + name: 'Custom Section', + js: '/App_Plugins/section.js', + elementName: 'my-section-custom', + weight: 1, + meta: { + label: 'Custom', + pathname: 'my-custom', + }, }, - }, - ], - }, - { - name: 'Package with an entry point', - extensions: [ - { - type: 'entryPoint', - name: 'My Custom Entry Point', - alias: 'My.Entrypoint.Custom', - js: '/App_Plugins/custom-entrypoint.js', - }, - ], - }, - { - name: 'Package with a view', - extensions: [ - { - type: 'packageView', - alias: 'My.PackageView.Custom', - name: 'My Custom Package View', - js: '/App_Plugins/package-view.js', - meta: { - packageName: 'Package with a view', + { + type: 'propertyEditorUi', + alias: 'My.PropertyEditorUI.Custom', + name: 'My Custom Property Editor UI', + js: '/App_Plugins/property-editor.js', + elementName: 'my-property-editor-ui-custom', + meta: { + label: 'My Custom Property', + icon: 'document', + group: 'Common', + propertyEditorSchema: 'Umbraco.TextBox', + }, }, - }, - ], - }, - { - name: 'My MFA Package', - extensions: [ - { - type: 'mfaLoginProvider', - alias: 'My.MfaLoginProvider.Custom.Google', - name: 'My Custom Google MFA Provider', - forProviderName: 'Google Authenticator', - }, - { - type: 'mfaLoginProvider', - alias: 'My.MfaLoginProvider.Custom.SMS', - name: 'My Custom SMS MFA Provider', - forProviderName: 'sms', - meta: { - label: 'Setup SMS Verification', + ], + }, + { + name: 'Package with an entry point', + extensions: [ + { + type: 'entryPoint', + name: 'My Custom Entry Point', + alias: 'My.Entrypoint.Custom', + js: '/App_Plugins/custom-entrypoint.js', }, - }, - ], - }, - ]), - ); -}); + ], + }, + { + name: 'My MFA Package', + extensions: [ + { + type: 'mfaLoginProvider', + alias: 'My.MfaLoginProvider.Custom.Google', + name: 'My Custom Google MFA Provider', + forProviderName: 'Google Authenticator', + }, + { + type: 'mfaLoginProvider', + alias: 'My.MfaLoginProvider.Custom.SMS', + name: 'My Custom SMS MFA Provider', + forProviderName: 'sms', + meta: { + label: 'Setup SMS Verification', + }, + }, + ], + }, + { + name: 'Package with a view', + extensions: [ + { + type: 'packageView', + alias: 'My.PackageView.Custom', + name: 'My Custom Package View', + js: '/App_Plugins/package-view.js', + meta: { + packageName: 'Package with a view', + }, + }, + ], + }, + { + name: 'My MFA Package', + extensions: [ + { + type: 'mfaLoginProvider', + alias: 'My.MfaLoginProvider.Custom', + name: 'My Custom MFA Provider', + forProviderName: 'sms', + meta: { + label: 'Setup SMS Verification', + }, + }, + ], + }, + ]), + ); + }), + rest.get(umbracoPath('/manifest/manifest/public'), (_req, res, ctx) => { + return res( + ctx.status(200), + ctx.json([ + { + name: 'My Auth Package', + extensions: [ + { + type: 'authProvider', + alias: 'My.AuthProvider.Google', + name: 'My Custom Auth Provider', + forProviderName: 'Umbraco.Google', + meta: { + label: 'Sign in with Google', + }, + }, + { + type: 'authProvider', + alias: 'My.AuthProvider.Github', + name: 'My Github Auth Provider', + forProviderName: 'Umbraco.Github', + meta: { + label: 'GitHub', + defaultView: { + look: 'primary', + icon: 'icon-github', + color: 'success', + }, + }, + }, + ], + }, + ]), + ); + }), +]; -export const manifestEmptyHandler = rest.get(umbracoPath('/package/manifest'), (_req, res, ctx) => { - return res( - // Respond with a 200 status code - ctx.status(200), - ctx.json([]), - ); -}); +export const manifestEmptyHandlers = [ + rest.get(umbracoPath('/manifest/manifest/private'), (_req, res, ctx) => { + return res(ctx.status(200), ctx.json([])); + }), + rest.get(umbracoPath('/manifest/manifest/public'), (_req, res, ctx) => { + return res(ctx.status(200), ctx.json([])); + }), +]; diff --git a/src/Umbraco.Web.UI.Client/src/packages/audit-log/repository/audit-log.server.data.ts b/src/Umbraco.Web.UI.Client/src/packages/audit-log/repository/audit-log.server.data.ts index e3e365046f..634ee8eeef 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/audit-log/repository/audit-log.server.data.ts +++ b/src/Umbraco.Web.UI.Client/src/packages/audit-log/repository/audit-log.server.data.ts @@ -1,5 +1,5 @@ import type { DirectionModel, AuditTypeModel } from '@umbraco-cms/backoffice/external/backend-api'; -import { AuditLogResource } from '@umbraco-cms/backoffice/external/backend-api'; +import { AuditLogService } from '@umbraco-cms/backoffice/external/backend-api'; import type { UmbControllerHost } from '@umbraco-cms/backoffice/controller-api'; import { tryExecuteAndNotify } from '@umbraco-cms/backoffice/resources'; @@ -39,7 +39,7 @@ export class UmbAuditLogServerDataSource { }) { return await tryExecuteAndNotify( this.#host, - AuditLogResource.getAuditLog({ orderDirection, sinceDate, skip, take }), + AuditLogService.getAuditLog({ orderDirection, sinceDate, skip, take }), ); } @@ -58,7 +58,7 @@ export class UmbAuditLogServerDataSource { }) { return await tryExecuteAndNotify( this.#host, - AuditLogResource.getAuditLogById({ id, orderDirection, sinceDate, skip, take }), + AuditLogService.getAuditLogById({ id, orderDirection, sinceDate, skip, take }), ); } @@ -75,7 +75,7 @@ export class UmbAuditLogServerDataSource { }) { return await tryExecuteAndNotify( this.#host, - AuditLogResource.getAuditLogTypeByLogType({ logType, sinceDate, skip, take }), + AuditLogService.getAuditLogTypeByLogType({ logType, sinceDate, skip, take }), ); } } diff --git a/src/Umbraco.Web.UI.Client/src/packages/block/block-grid/components/block-grid-area-config-entry/workspace/manifests.ts b/src/Umbraco.Web.UI.Client/src/packages/block/block-grid/components/block-grid-area-config-entry/workspace/manifests.ts index 17644bc775..f338a81368 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/block/block-grid/components/block-grid-area-config-entry/workspace/manifests.ts +++ b/src/Umbraco.Web.UI.Client/src/packages/block/block-grid/components/block-grid-area-config-entry/workspace/manifests.ts @@ -21,7 +21,7 @@ export const manifests: Array = [ name: 'Save Block Grid Area Type Workspace Action', api: UmbSubmitWorkspaceAction, meta: { - label: 'Submit', + label: '#general_submit', look: 'primary', color: 'positive', }, diff --git a/src/Umbraco.Web.UI.Client/src/packages/block/block-grid/components/block-grid-area-config-entry/workspace/views/manifests.ts b/src/Umbraco.Web.UI.Client/src/packages/block/block-grid/components/block-grid-area-config-entry/workspace/views/manifests.ts index c92f2b2d77..0e8e9ccd27 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/block/block-grid/components/block-grid-area-config-entry/workspace/views/manifests.ts +++ b/src/Umbraco.Web.UI.Client/src/packages/block/block-grid/components/block-grid-area-config-entry/workspace/views/manifests.ts @@ -9,7 +9,7 @@ export const workspaceViews: Array = [ js: () => import('./settings.element.js'), weight: 1000, meta: { - label: 'Settings', + label: '#general_settings', pathname: 'settings', icon: 'icon-settings', }, diff --git a/src/Umbraco.Web.UI.Client/src/packages/block/block-grid/workspace/views/manifests.ts b/src/Umbraco.Web.UI.Client/src/packages/block/block-grid/workspace/views/manifests.ts index 57f890ed14..793f06141d 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/block/block-grid/workspace/views/manifests.ts +++ b/src/Umbraco.Web.UI.Client/src/packages/block/block-grid/workspace/views/manifests.ts @@ -9,7 +9,7 @@ export const workspaceViews: Array = [ js: () => import('./block-grid-type-workspace-view-settings.element.js'), weight: 1000, meta: { - label: 'Settings', + label: '#general_settings', pathname: 'settings', icon: 'icon-settings', }, @@ -27,7 +27,7 @@ export const workspaceViews: Array = [ js: () => import('./block-grid-type-workspace-view-areas.element.js'), weight: 1000, meta: { - label: 'Areas', + label: '#blockEditor_areas', pathname: 'areas', icon: 'icon-grid', }, @@ -45,7 +45,7 @@ export const workspaceViews: Array = [ js: () => import('./block-grid-type-workspace-view-advanced.element.js'), weight: 1000, meta: { - label: 'Advanced', + label: '#blockEditor_tabAreas', pathname: 'advanced', icon: 'icon-wrench', }, diff --git a/src/Umbraco.Web.UI.Client/src/packages/block/block-list/workspace/views/manifests.ts b/src/Umbraco.Web.UI.Client/src/packages/block/block-list/workspace/views/manifests.ts index 03b003709b..1774211ed4 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/block/block-list/workspace/views/manifests.ts +++ b/src/Umbraco.Web.UI.Client/src/packages/block/block-list/workspace/views/manifests.ts @@ -9,7 +9,7 @@ export const workspaceViews: Array = [ js: () => import('./block-list-type-workspace-view.element.js'), weight: 1000, meta: { - label: 'Settings', + label: '#blockEditor_tabBlockSettings', pathname: 'settings', icon: 'icon-settings', }, diff --git a/src/Umbraco.Web.UI.Client/src/packages/block/block-rte/workspace/views/manifests.ts b/src/Umbraco.Web.UI.Client/src/packages/block/block-rte/workspace/views/manifests.ts index e574f7aa62..b94ed190cf 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/block/block-rte/workspace/views/manifests.ts +++ b/src/Umbraco.Web.UI.Client/src/packages/block/block-rte/workspace/views/manifests.ts @@ -9,7 +9,7 @@ export const workspaceViews: Array = [ js: () => import('./block-rte-type-workspace-view.element.js'), weight: 1000, meta: { - label: 'Settings', + label: '#general_settings', pathname: 'settings', icon: 'icon-settings', }, diff --git a/src/Umbraco.Web.UI.Client/src/packages/block/block-type/workspace/manifests.ts b/src/Umbraco.Web.UI.Client/src/packages/block/block-type/workspace/manifests.ts index 0df0592053..3bd2d3aea3 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/block/block-type/workspace/manifests.ts +++ b/src/Umbraco.Web.UI.Client/src/packages/block/block-type/workspace/manifests.ts @@ -12,7 +12,7 @@ export const manifests: Array = [ name: 'Save Block Type Workspace Action', api: UmbSubmitWorkspaceAction, meta: { - label: 'Submit', + label: '#general_submit', look: 'primary', color: 'positive', }, diff --git a/src/Umbraco.Web.UI.Client/src/packages/block/block/workspace/manifests.ts b/src/Umbraco.Web.UI.Client/src/packages/block/block/workspace/manifests.ts index bc76264f4d..8d31bc6c3f 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/block/block/workspace/manifests.ts +++ b/src/Umbraco.Web.UI.Client/src/packages/block/block/workspace/manifests.ts @@ -10,7 +10,7 @@ export const manifests: Array = [ name: 'Save Block Type Workspace Action', api: UmbSubmitWorkspaceAction, meta: { - label: 'Submit', + label: '#general_submit', look: 'primary', color: 'positive', }, @@ -38,7 +38,7 @@ export const manifests: Array = [ js: () => import('./views/edit/block-workspace-view-edit.element.js'), weight: 1000, meta: { - label: 'Content', + label: '#general_content', pathname: 'content', icon: 'icon-document', blockElementManagerName: 'content', @@ -63,7 +63,7 @@ export const manifests: Array = [ js: () => import('./views/edit/block-workspace-view-edit.element.js'), weight: 1000, meta: { - label: 'Settings', + label: '#general_settings', pathname: 'settings', icon: 'icon-settings', blockElementManagerName: 'settings', diff --git a/src/Umbraco.Web.UI.Client/src/packages/core/auth/auth-flow.ts b/src/Umbraco.Web.UI.Client/src/packages/core/auth/auth-flow.ts index 4ced20b66d..82455be922 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/core/auth/auth-flow.ts +++ b/src/Umbraco.Web.UI.Client/src/packages/core/auth/auth-flow.ts @@ -89,6 +89,7 @@ export class UmbAuthFlow { // state readonly #configuration: AuthorizationServiceConfiguration; readonly #redirectUri: string; + readonly #postLogoutRedirectUri: string; readonly #clientId: string; readonly #scope: string; @@ -99,10 +100,12 @@ export class UmbAuthFlow { constructor( openIdConnectUrl: string, redirectUri: string, + postLogoutRedirectUri: string, clientId = 'umbraco-back-office', scope = 'offline_access', ) { this.#redirectUri = redirectUri; + this.#postLogoutRedirectUri = postLogoutRedirectUri; this.#clientId = clientId; this.#scope = scope; @@ -187,15 +190,23 @@ export class UmbAuthFlow { } /** - * This method will make an authorization request to the server. + * Make an authorization request to the server using the specified identity provider. + * This method will redirect the user to the authorization endpoint of the server. * - * @param username The username to use for the authorization request. It will be provided to the OpenID server as a hint. + * @param identityProvider The identity provider to use for the authorization request. + * @param usernameHint (Optional) The username to use for the authorization request. It will be provided to the OpenID server as a hint. */ - makeAuthorizationRequest(username?: string): void { + makeAuthorizationRequest(identityProvider: string, usernameHint?: string): void { const extras: StringMap = { prompt: 'consent', access_type: 'offline' }; - if (username) { - extras['login_hint'] = username; + // If the identity provider is not 'Umbraco', we will add it to the extras. + if (identityProvider !== 'Umbraco') { + extras['identity_provider'] = identityProvider; + } + + // If there is a username hint, we will add it to the extras. + if (usernameHint) { + extras['login_hint'] = usernameHint; } // create a request @@ -275,7 +286,7 @@ export class UmbAuthFlow { // which will redirect the user back to the client // and the client will then try and log in again (if the user is not logged in) // which will redirect the user to the login page - location.href = `${this.#configuration.endSessionEndpoint}?post_logout_redirect_uri=${this.#redirectUri}`; + location.href = `${this.#configuration.endSessionEndpoint}?post_logout_redirect_uri=${this.#postLogoutRedirectUri}`; } /** diff --git a/src/Umbraco.Web.UI.Client/src/packages/core/auth/auth.context.ts b/src/Umbraco.Web.UI.Client/src/packages/core/auth/auth.context.ts index f457655b18..be37177cc0 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/core/auth/auth.context.ts +++ b/src/Umbraco.Web.UI.Client/src/packages/core/auth/auth.context.ts @@ -1,3 +1,4 @@ +import { umbExtensionsRegistry } from '../extension-registry/index.js'; import { UmbAuthFlow } from './auth-flow.js'; import { UMB_AUTH_CONTEXT } from './auth.context.token.js'; import type { UmbOpenApiConfiguration } from './models/openApiConfiguration.js'; @@ -5,11 +6,15 @@ import { OpenAPI } from '@umbraco-cms/backoffice/external/backend-api'; import type { UmbControllerHost } from '@umbraco-cms/backoffice/controller-api'; import { UmbContextBase } from '@umbraco-cms/backoffice/class-api'; import { UmbBooleanState } from '@umbraco-cms/backoffice/observable-api'; +import { ReplaySubject, filter, switchMap } from '@umbraco-cms/backoffice/external/rxjs'; export class UmbAuthContext extends UmbContextBase { #isAuthorized = new UmbBooleanState(false); readonly isAuthorized = this.#isAuthorized.asObservable(); + #isInitialized = new ReplaySubject(1); + readonly isInitialized = this.#isInitialized.asObservable().pipe(filter((isInitialized) => isInitialized)); + #isBypassed = false; #serverUrl; #backofficePath; @@ -21,14 +26,16 @@ export class UmbAuthContext extends UmbContextBase { this.#serverUrl = serverUrl; this.#backofficePath = backofficePath; - this.#authFlow = new UmbAuthFlow(serverUrl, this.#getRedirectUrl()); + this.#authFlow = new UmbAuthFlow(serverUrl, this.getRedirectUrl(), this.getPostLogoutRedirectUrl()); } /** * Initiates the login flow. + * @param identityProvider The provider to use for login. Default is 'Umbraco'. + * @param usernameHint The username hint to use for login. */ - makeAuthorizationRequest() { - return this.#authFlow.makeAuthorizationRequest(); + makeAuthorizationRequest(identityProvider = 'Umbraco', usernameHint?: string) { + return this.#authFlow.makeAuthorizationRequest(identityProvider, usernameHint); } /** @@ -88,6 +95,16 @@ export class UmbAuthContext extends UmbContextBase { return this.#authFlow.clearTokenStorage(); } + /** + * Handles the case where the user has timed out, i.e. the token has expired. + * This will clear the token storage and set the user as unauthorized. + * @memberof UmbAuthContext + */ + timeOut() { + this.clearTokenStorage(); + this.#isAuthorized.setValue(false); + } + /** * Signs the user out by removing any tokens from the browser. * @memberof UmbAuthContext @@ -141,7 +158,19 @@ export class UmbAuthContext extends UmbContextBase { }; } - #getRedirectUrl() { + setInitialized() { + this.#isInitialized.next(true); + } + + getAuthProviders() { + return this.isInitialized.pipe(switchMap(() => umbExtensionsRegistry.byType('authProvider'))); + } + + getRedirectUrl() { return `${window.location.origin}${this.#backofficePath}`; } + + getPostLogoutRedirectUrl() { + return `${window.location.origin}${this.#backofficePath.endsWith('/') ? this.#backofficePath : this.#backofficePath + '/'}logout`; + } } diff --git a/src/Umbraco.Web.UI.Client/src/packages/core/auth/components/auth-provider-default.element.ts b/src/Umbraco.Web.UI.Client/src/packages/core/auth/components/auth-provider-default.element.ts new file mode 100644 index 0000000000..c6c10745c1 --- /dev/null +++ b/src/Umbraco.Web.UI.Client/src/packages/core/auth/components/auth-provider-default.element.ts @@ -0,0 +1,55 @@ +import type { ManifestAuthProvider } from '../../extension-registry/models/index.js'; +import type { UmbAuthProviderDefaultProps } from '../types.js'; +import { UmbLitElement } from '../../lit-element/lit-element.element.js'; +import { UmbTextStyles } from '../../style/index.js'; +import { css, customElement, html, nothing, property } from '@umbraco-cms/backoffice/external/lit'; + +@customElement('umb-auth-provider-default') +export class UmbAuthProviderDefaultElement extends UmbLitElement implements UmbAuthProviderDefaultProps { + @property({ attribute: false }) + manifest!: ManifestAuthProvider; + + @property({ attribute: false }) + onSubmit!: (providerName: string, loginHint?: string) => void; + + connectedCallback(): void { + super.connectedCallback(); + this.setAttribute('part', 'auth-provider-default'); + } + + render() { + return html` + this.onSubmit(this.manifest.forProviderName)} + id="auth-provider-button" + .label=${this.manifest.meta?.label ?? this.manifest.forProviderName} + .look=${this.manifest.meta?.defaultView?.look ?? 'outline'} + .color=${this.manifest.meta?.defaultView?.color ?? 'default'}> + ${this.manifest.meta?.defaultView?.icon + ? html`` + : nothing} + ${this.manifest.meta?.label ?? this.manifest.forProviderName} + + `; + } + + static styles = [ + UmbTextStyles, + css` + :host { + display: block; + } + + #auth-provider-button { + width: 100%; + } + `, + ]; +} + +declare global { + interface HTMLElementTagNameMap { + 'umb-auth-provider-default': UmbAuthProviderDefaultElement; + } +} diff --git a/src/Umbraco.Web.UI.Client/src/packages/core/auth/components/index.ts b/src/Umbraco.Web.UI.Client/src/packages/core/auth/components/index.ts new file mode 100644 index 0000000000..e5fdd6f189 --- /dev/null +++ b/src/Umbraco.Web.UI.Client/src/packages/core/auth/components/index.ts @@ -0,0 +1 @@ +export * from './auth-provider-default.element.js'; diff --git a/src/Umbraco.Web.UI.Client/src/packages/core/auth/index.ts b/src/Umbraco.Web.UI.Client/src/packages/core/auth/index.ts index e6dc7d478d..2f5cf6b67d 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/core/auth/index.ts +++ b/src/Umbraco.Web.UI.Client/src/packages/core/auth/index.ts @@ -1,3 +1,9 @@ +import './components/index.js'; + export * from './auth.context.js'; export * from './auth.context.token.js'; +export * from './modals/index.js'; export * from './models/openApiConfiguration.js'; +export * from './components/index.js'; + +export type * from './types.js'; diff --git a/src/Umbraco.Web.UI.Client/src/packages/core/auth/manifests.ts b/src/Umbraco.Web.UI.Client/src/packages/core/auth/manifests.ts new file mode 100644 index 0000000000..f0f6228203 --- /dev/null +++ b/src/Umbraco.Web.UI.Client/src/packages/core/auth/manifests.ts @@ -0,0 +1,5 @@ +import type { ManifestTypes } from '../extension-registry/models/index.js'; +import { manifests as modalManifests } from './modals/manifests.js'; +import { manifests as providerManifests } from './providers/manifests.js'; + +export const manifests: Array = [...modalManifests, ...providerManifests]; diff --git a/src/Umbraco.Web.UI.Client/src/packages/core/auth/modals/index.ts b/src/Umbraco.Web.UI.Client/src/packages/core/auth/modals/index.ts new file mode 100644 index 0000000000..c574cd0af1 --- /dev/null +++ b/src/Umbraco.Web.UI.Client/src/packages/core/auth/modals/index.ts @@ -0,0 +1 @@ +export * from './umb-app-auth-modal.token.js'; diff --git a/src/Umbraco.Web.UI.Client/src/packages/core/auth/modals/manifests.ts b/src/Umbraco.Web.UI.Client/src/packages/core/auth/modals/manifests.ts new file mode 100644 index 0000000000..315736dd1f --- /dev/null +++ b/src/Umbraco.Web.UI.Client/src/packages/core/auth/modals/manifests.ts @@ -0,0 +1,10 @@ +import type { ManifestModal } from '@umbraco-cms/backoffice/extension-registry'; + +export const manifests: Array = [ + { + type: 'modal', + alias: 'Umb.Modal.AppAuth', + name: 'Umb App Auth Modal', + js: () => import('./umb-app-auth-modal.element.js'), + }, +]; diff --git a/src/Umbraco.Web.UI.Client/src/packages/core/auth/modals/umb-app-auth-modal.element.ts b/src/Umbraco.Web.UI.Client/src/packages/core/auth/modals/umb-app-auth-modal.element.ts new file mode 100644 index 0000000000..9fb5122908 --- /dev/null +++ b/src/Umbraco.Web.UI.Client/src/packages/core/auth/modals/umb-app-auth-modal.element.ts @@ -0,0 +1,92 @@ +import { UmbModalBaseElement } from '../../modal/index.js'; +import type { UmbModalAppAuthConfig, UmbModalAppAuthValue } from './umb-app-auth-modal.token.js'; +import { css, customElement, html } from '@umbraco-cms/backoffice/external/lit'; +import { UmbTextStyles } from '@umbraco-cms/backoffice/style'; + +@customElement('umb-app-auth-modal') +export class UmbAppAuthModalElement extends UmbModalBaseElement { + get props() { + return { + userLoginState: this.data?.userLoginState ?? 'loggingIn', + onSubmit: this.onSubmit, + }; + } + + get headline() { + return this.data?.userLoginState === 'timedOut' + ? this.localize.term('login_instruction') + : this.localize.term( + [ + 'login_greeting0', + 'login_greeting1', + 'login_greeting2', + 'login_greeting3', + 'login_greeting4', + 'login_greeting5', + 'login_greeting6', + ][new Date().getDay()], + ); + } + + render() { + return html` + +

${this.headline}

+ ${this.data?.userLoginState === 'timedOut' + ? html`

${this.localize.term('login_timeout')}

` + : ''} + +
+ `; + } + + private onSubmit = (providerName: string) => { + this.value = { providerName }; + this._submitModal(); + }; + + static styles = [ + UmbTextStyles, + css` + :host { + display: block; + + --umb-body-layout-color-background: #fff; + } + + #login-layout { + width: 380px; + max-width: 80vw; + min-height: 327px; + } + + #greeting { + width: 100%; + color: var(--umb-login-header-color, var(--uui-color-interactive)); + text-align: center; + font-weight: 400; + font-size: var(--umb-login-header-font-size, 2rem); + line-height: 1.2; + margin: 0; + } + + #providers { + display: flex; + flex-direction: column; + gap: var(--uui-size-space-5); + } + `, + ]; +} + +export default UmbAppAuthModalElement; + +declare global { + interface HTMLElementTagNameMap { + 'umb-app-auth-modal': UmbAppAuthModalElement; + } +} diff --git a/src/Umbraco.Web.UI.Client/src/packages/core/auth/modals/umb-app-auth-modal.token.ts b/src/Umbraco.Web.UI.Client/src/packages/core/auth/modals/umb-app-auth-modal.token.ts new file mode 100644 index 0000000000..97dd990b68 --- /dev/null +++ b/src/Umbraco.Web.UI.Client/src/packages/core/auth/modals/umb-app-auth-modal.token.ts @@ -0,0 +1,26 @@ +import { UmbModalToken } from '../../modal/token/index.js'; +import type { UmbUserLoginState } from '../types.js'; + +export type UmbModalAppAuthConfig = { + userLoginState: UmbUserLoginState; +}; + +export type UmbModalAppAuthValue = { + /** + * The name of the provider that the user has selected to authenticate with. + * @required + */ + providerName?: string; + + /** + * The login hint that the user has provided to the provider. + * @optional + */ + loginHint?: string; +}; + +export const UMB_MODAL_APP_AUTH = new UmbModalToken('Umb.Modal.AppAuth', { + modal: { + type: 'dialog', + }, +}); diff --git a/src/Umbraco.Web.UI.Client/src/packages/core/auth/providers/manifests.ts b/src/Umbraco.Web.UI.Client/src/packages/core/auth/providers/manifests.ts new file mode 100644 index 0000000000..5c8e7dc2de --- /dev/null +++ b/src/Umbraco.Web.UI.Client/src/packages/core/auth/providers/manifests.ts @@ -0,0 +1,18 @@ +import type { ManifestAuthProvider } from '@umbraco-cms/backoffice/extension-registry'; + +export const manifests: Array = [ + { + type: 'authProvider', + alias: 'Umb.AuthProviders.Umbraco', + name: 'Umbraco login provider', + forProviderName: 'Umbraco', + weight: 1000, + meta: { + label: 'Sign in with Umbraco', + defaultView: { + icon: 'icon-umbraco', + look: 'primary', + }, + }, + }, +]; diff --git a/src/Umbraco.Web.UI.Client/src/packages/core/auth/types.ts b/src/Umbraco.Web.UI.Client/src/packages/core/auth/types.ts new file mode 100644 index 0000000000..7074b49380 --- /dev/null +++ b/src/Umbraco.Web.UI.Client/src/packages/core/auth/types.ts @@ -0,0 +1,26 @@ +import type { ManifestAuthProvider } from '../extension-registry/index.js'; + +/** + * User login state that can be used to determine the current state of the user. + * @example 'loggedIn' + */ +export type UmbUserLoginState = 'loggingIn' | 'loggedOut' | 'timedOut'; + +export interface UmbAuthProviderDefaultProps { + /** + * The manifest for the registered provider. + */ + manifest?: ManifestAuthProvider; + + /** + * The current user login state. + */ + userLoginState?: UmbUserLoginState; + + /** + * Callback that is called when the user selects a provider. + * @param providerName The name of the provider that the user selected. + * @param loginHint The login hint to use for login if available. + */ + onSubmit: (providerName: string, loginHint?: string) => void; +} diff --git a/src/Umbraco.Web.UI.Client/src/packages/core/collection/collection-view.manager.test.ts b/src/Umbraco.Web.UI.Client/src/packages/core/collection/collection-view.manager.test.ts index 02eed66b19..0f6024506d 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/core/collection/collection-view.manager.test.ts +++ b/src/Umbraco.Web.UI.Client/src/packages/core/collection/collection-view.manager.test.ts @@ -1,9 +1,9 @@ import { expect } from '@open-wc/testing'; +import type { ManifestCollectionView } from '../extension-registry/models/index.js'; +import { umbExtensionsRegistry } from '../extension-registry/index.js'; import { UmbCollectionViewManager } from './collection-view.manager.js'; import { Observable } from '@umbraco-cms/backoffice/external/rxjs'; import { UmbControllerHostElementMixin } from '@umbraco-cms/backoffice/controller-api'; -import type { ManifestCollectionView } from '@umbraco-cms/backoffice/extension-registry'; -import { umbExtensionsRegistry } from '@umbraco-cms/backoffice/extension-registry'; import { customElement } from '@umbraco-cms/backoffice/external/lit'; @customElement('test-my-controller-host') diff --git a/src/Umbraco.Web.UI.Client/src/packages/core/components/backoffice-modal-container/backoffice-modal-container.element.ts b/src/Umbraco.Web.UI.Client/src/packages/core/components/backoffice-modal-container/backoffice-modal-container.element.ts index 48d0068860..bd01e0acf1 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/core/components/backoffice-modal-container/backoffice-modal-container.element.ts +++ b/src/Umbraco.Web.UI.Client/src/packages/core/components/backoffice-modal-container/backoffice-modal-container.element.ts @@ -1,6 +1,6 @@ import { UmbTextStyles } from '@umbraco-cms/backoffice/style'; import type { CSSResultGroup } from '@umbraco-cms/backoffice/external/lit'; -import { css, html, repeat, customElement, state, nothing } from '@umbraco-cms/backoffice/external/lit'; +import { css, html, repeat, customElement, state, nothing, property } from '@umbraco-cms/backoffice/external/lit'; import type { UmbModalManagerContext, UmbModalContext } from '@umbraco-cms/backoffice/modal'; import { UMB_MODAL_MANAGER_CONTEXT, UmbModalElement } from '@umbraco-cms/backoffice/modal'; import { UmbLitElement } from '@umbraco-cms/backoffice/lit-element'; @@ -13,6 +13,9 @@ export class UmbBackofficeModalContainerElement extends UmbLitElement { @state() _modals: Array = []; + @property({ reflect: true, attribute: 'fill-background' }) + fillBackground = false; + private _modalManager?: UmbModalManagerContext; constructor() { @@ -35,6 +38,7 @@ export class UmbBackofficeModalContainerElement extends UmbLitElement { /** We cannot render the umb-modal element directly in the uui-modal-container because it wont get recognized by UUI. * We therefore have a helper class which creates the uui-modal element and returns it. */ #createModalElements(modals: Array) { + this.removeAttribute('fill-background'); const oldValue = this._modals; this._modals = modals; @@ -61,6 +65,15 @@ export class UmbBackofficeModalContainerElement extends UmbLitElement { modal.addEventListener('umb:destroy', this.#onCloseEnd.bind(this, modal.key)); this._modalElementMap.set(modal.key, modalElement); + + // If any of the modals are fillBackground, set the fillBackground property to true + if (modal.backdropBackground) { + this.fillBackground = true; + this.shadowRoot + ?.getElementById('container') + ?.style.setProperty('--backdrop-background', modal.backdropBackground); + } + this.requestUpdate(); }); } @@ -78,13 +91,13 @@ export class UmbBackofficeModalContainerElement extends UmbLitElement { render() { return html` - + ${this._modals.length > 0 ? repeat( this._modals, (modal) => modal.key, (modal) => this.#renderModal(modal.key), - ) + ) : ''} `; @@ -97,6 +110,10 @@ export class UmbBackofficeModalContainerElement extends UmbLitElement { position: absolute; z-index: 1000; } + + :host([fill-background]) #container::after { + background: var(--backdrop-background); + } `, ]; } diff --git a/src/Umbraco.Web.UI.Client/src/packages/core/components/body-layout/body-layout.element.ts b/src/Umbraco.Web.UI.Client/src/packages/core/components/body-layout/body-layout.element.ts index 1d589df449..22be2b754a 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/core/components/body-layout/body-layout.element.ts +++ b/src/Umbraco.Web.UI.Client/src/packages/core/components/body-layout/body-layout.element.ts @@ -134,7 +134,7 @@ export class UmbBodyLayoutElement extends LitElement { css` :host { display: flex; - background-color: var(--uui-color-background); + background-color: var(--umb-body-layout-color-background, var(--uui-color-background)); width: 100%; height: 100%; flex-direction: column; diff --git a/src/Umbraco.Web.UI.Client/src/packages/core/components/entity-actions-bundle/entity-actions-bundle.element.ts b/src/Umbraco.Web.UI.Client/src/packages/core/components/entity-actions-bundle/entity-actions-bundle.element.ts index c696d25743..98b3c13bea 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/core/components/entity-actions-bundle/entity-actions-bundle.element.ts +++ b/src/Umbraco.Web.UI.Client/src/packages/core/components/entity-actions-bundle/entity-actions-bundle.element.ts @@ -1,3 +1,4 @@ +import { UmbEntityContext } from '../../entity/entity.context.js'; import type { UmbEntityAction } from '@umbraco-cms/backoffice/entity-action'; import type { PropertyValueMap } from '@umbraco-cms/backoffice/external/lit'; import { html, nothing, customElement, property, state, ifDefined } from '@umbraco-cms/backoffice/external/lit'; @@ -6,7 +7,7 @@ import { UMB_SECTION_SIDEBAR_CONTEXT } from '@umbraco-cms/backoffice/section'; import { UmbLitElement } from '@umbraco-cms/backoffice/lit-element'; import type { ManifestEntityActionDefaultKind } from '@umbraco-cms/backoffice/extension-registry'; import { umbExtensionsRegistry } from '@umbraco-cms/backoffice/extension-registry'; -import { createExtensionApi } from '@umbraco-cms/backoffice/extension-api'; +import { UmbExtensionsManifestInitializer, createExtensionApi } from '@umbraco-cms/backoffice/extension-api'; @customElement('umb-entity-actions-bundle') export class UmbEntityActionsBundleElement extends UmbLitElement { @@ -30,6 +31,8 @@ export class UmbEntityActionsBundleElement extends UmbLitElement { #sectionSidebarContext?: UmbSectionSidebarContext; + #entityContext = new UmbEntityContext(this); + constructor() { super(); @@ -40,26 +43,35 @@ export class UmbEntityActionsBundleElement extends UmbLitElement { protected updated(_changedProperties: PropertyValueMap | Map): void { if (_changedProperties.has('entityType') && _changedProperties.has('unique')) { + this.#entityContext.setEntityType(this.entityType); + this.#entityContext.setUnique(this.unique); this.#observeEntityActions(); } } #observeEntityActions() { - this.observe( - umbExtensionsRegistry.byTypeAndFilter('entityAction', (ext) => ext.forEntityTypes.includes(this.entityType!)), + new UmbExtensionsManifestInitializer( + this, + umbExtensionsRegistry, + 'entityAction', + (ext) => ext.forEntityTypes.includes(this.entityType!), async (actions) => { this._numberOfActions = actions.length; this._firstActionManifest = - this._numberOfActions > 0 ? (actions[0] as ManifestEntityActionDefaultKind) : undefined; - if (!this._firstActionManifest) return; - this._firstActionApi = await createExtensionApi(this, this._firstActionManifest, [ - { unique: this.unique, entityType: this.entityType, meta: this._firstActionManifest.meta }, - ]); + this._numberOfActions > 0 ? (actions[0].manifest as ManifestEntityActionDefaultKind) : undefined; + this.#createFirstActionApi(); }, 'umbEntityActionsObserver', ); } + async #createFirstActionApi() { + if (!this._firstActionManifest) return; + this._firstActionApi = await createExtensionApi(this, this._firstActionManifest, [ + { unique: this.unique, entityType: this.entityType, meta: this._firstActionManifest.meta }, + ]); + } + #openContextMenu() { if (!this.entityType) throw new Error('Entity type is not defined'); if (this.unique === undefined) throw new Error('Unique is not defined'); @@ -73,7 +85,7 @@ export class UmbEntityActionsBundleElement extends UmbLitElement { render() { if (this._numberOfActions === 0) return nothing; - return html` ${this.#renderFirstAction()} ${this.#renderMore()} `; + return html`${this.#renderMore()} ${this.#renderFirstAction()} `; } #renderMore() { diff --git a/src/Umbraco.Web.UI.Client/src/packages/core/components/extension-slot/extension-slot.element.ts b/src/Umbraco.Web.UI.Client/src/packages/core/components/extension-slot/extension-slot.element.ts index 139f7f5345..2e3b3fd37f 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/core/components/extension-slot/extension-slot.element.ts +++ b/src/Umbraco.Web.UI.Client/src/packages/core/components/extension-slot/extension-slot.element.ts @@ -43,9 +43,7 @@ export class UmbExtensionSlotElement extends UmbLitElement { public set type(value: string | string[] | undefined) { if (value === this.#type) return; this.#type = value; - if (this.#attached) { - this._observeExtensions(); - } + this.#observeExtensions(); } #type?: string | string[] | undefined; @@ -65,9 +63,7 @@ export class UmbExtensionSlotElement extends UmbLitElement { public set filter(value: (manifest: any) => boolean) { if (value === this.#filter) return; this.#filter = value; - if (this.#attached) { - this._observeExtensions(); - } + this.#observeExtensions(); } #filter: (manifest: any) => boolean = () => true; @@ -100,11 +96,17 @@ export class UmbExtensionSlotElement extends UmbLitElement { connectedCallback(): void { super.connectedCallback(); - this._observeExtensions(); this.#attached = true; + this.#observeExtensions(); + } + disconnectedCallback(): void { + this.#attached = false; + this.#extensionsController?.destroy(); + super.disconnectedCallback(); } - private _observeExtensions(): void { + #observeExtensions(): void { + if (!this.#attached) return; this.#extensionsController?.destroy(); if (this.#type) { this.#extensionsController = new UmbExtensionsElementInitializer( @@ -128,7 +130,7 @@ export class UmbExtensionSlotElement extends UmbLitElement { this._permitted, (ext) => ext.alias, (ext) => (this.renderMethod ? this.renderMethod(ext) : ext.component), - ) + ) : html``; } diff --git a/src/Umbraco.Web.UI.Client/src/packages/core/components/extension-with-api-slot/extension-with-api-slot.element.ts b/src/Umbraco.Web.UI.Client/src/packages/core/components/extension-with-api-slot/extension-with-api-slot.element.ts index 40f8e76d69..d1c35b7e9c 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/core/components/extension-with-api-slot/extension-with-api-slot.element.ts +++ b/src/Umbraco.Web.UI.Client/src/packages/core/components/extension-with-api-slot/extension-with-api-slot.element.ts @@ -45,9 +45,7 @@ export class UmbExtensionWithApiSlotElement extends UmbLitElement { public set type(value: string | string[] | undefined) { if (value === this.#type) return; this.#type = value; - if (this.#attached) { - this._observeExtensions(); - } + this.#observeExtensions(); } #type?: string | string[] | undefined; @@ -67,9 +65,7 @@ export class UmbExtensionWithApiSlotElement extends UmbLitElement { public set filter(value: (manifest: any) => boolean) { if (value === this.#filter) return; this.#filter = value; - if (this.#attached) { - this._observeExtensions(); - } + this.#observeExtensions(); } #filter: (manifest: any) => boolean = () => true; @@ -107,8 +103,9 @@ export class UmbExtensionWithApiSlotElement extends UmbLitElement { return this.#constructorArgs; } set apiArgs(newVal: Array | UmbApiConstructorArgumentsMethodType | undefined) { - // TODO, compare changes since last time. only reset the ones that changed. This might be better done by the controller is self: + if (newVal === this.#constructorArgs) return; this.#constructorArgs = newVal; + this.#observeExtensions(); } #constructorArgs?: Array | UmbApiConstructorArgumentsMethodType = []; @@ -146,11 +143,18 @@ export class UmbExtensionWithApiSlotElement extends UmbLitElement { connectedCallback(): void { super.connectedCallback(); - this._observeExtensions(); this.#attached = true; + this.#observeExtensions(); + } + disconnectedCallback(): void { + this.#attached = false; + this.#extensionsController?.destroy(); + super.disconnectedCallback(); } - private _observeExtensions(): void { + #observeExtensions(): void { + // We want to be attached before we start observing extensions, cause first at this point we know that we got the right properties. [NL] + if (!this.#attached) return; this.#extensionsController?.destroy(); if (this.#type) { this.#extensionsController = new UmbExtensionsElementAndApiInitializer( diff --git a/src/Umbraco.Web.UI.Client/src/packages/core/components/ref-item/ref-item.element.ts b/src/Umbraco.Web.UI.Client/src/packages/core/components/ref-item/ref-item.element.ts index 04cdbaf84a..550900a7af 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/core/components/ref-item/ref-item.element.ts +++ b/src/Umbraco.Web.UI.Client/src/packages/core/components/ref-item/ref-item.element.ts @@ -1,4 +1,4 @@ -import { html, customElement, css, property, when, nothing, state } from '@umbraco-cms/backoffice/external/lit'; +import { html, customElement, css, property, when, nothing } from '@umbraco-cms/backoffice/external/lit'; import { UmbElementMixin } from '@umbraco-cms/backoffice/element-api'; import { UUIRefElement, UUIRefEvent, UUIRefNodeElement } from '@umbraco-cms/backoffice/external/uui'; diff --git a/src/Umbraco.Web.UI.Client/src/packages/core/components/table/table.element.ts b/src/Umbraco.Web.UI.Client/src/packages/core/components/table/table.element.ts index 43234edd3d..4b7eaa35e2 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/core/components/table/table.element.ts +++ b/src/Umbraco.Web.UI.Client/src/packages/core/components/table/table.element.ts @@ -30,6 +30,7 @@ export interface UmbTableColumn { elementName?: string; width?: string; allowSorting?: boolean; + align?: 'left' | 'center' | 'right'; } export interface UmbTableColumnLayoutElement extends HTMLElement { @@ -176,7 +177,9 @@ export class UmbTableElement extends LitElement { private _renderHeaderCell(column: UmbTableColumn) { return html` - ${column.allowSorting ? html`${this._renderSortingUI(column)}` : column.name} + ${column.allowSorting + ? html`${this._renderSortingUI(column)}` + : html`${column.name}`} `; } @@ -184,9 +187,9 @@ export class UmbTableElement extends LitElement { private _renderSortingUI(column: UmbTableColumn) { return html` @@ -225,23 +228,27 @@ export class UmbTableElement extends LitElement { if (this.config.hideIcon && !this.config.allowSelection) return; return html` - ${when(!this.config.hideIcon, () => html``)} + ${when(!this.config.hideIcon, () => html``)} ${when( this.config.allowSelection, - () => - html` html` + e.stopPropagation()} @change=${(event: Event) => this._handleRowCheckboxChange(event, item)} ?checked="${this._isSelected(item.id)}"> - `, + + `, )} `; } private _renderRowCell(column: UmbTableColumn, item: UmbTableItem) { - return html`${this._renderCellContent(column, item)} + return html` + + ${this._renderCellContent(column, item)} + `; } @@ -280,10 +287,10 @@ export class UmbTableElement extends LitElement { display: none; } - uui-table-row[selectable]:focus uui-icon, - uui-table-row[selectable]:focus-within uui-icon, - uui-table-row[selectable]:hover uui-icon, - uui-table-row[select-only] uui-icon { + uui-table-row[selectable]:focus umb-icon, + uui-table-row[selectable]:focus-within umb-icon, + uui-table-row[selectable]:hover umb-icon, + uui-table-row[select-only] umb-icon { display: none; } @@ -313,8 +320,11 @@ export class UmbTableElement extends LitElement { justify-content: space-between; width: 100%; } + uui-table-head-cell button > span { + flex: 1 0 auto; + } - uui-table-cell uui-icon { + uui-table-cell umb-icon { vertical-align: top; } `, diff --git a/src/Umbraco.Web.UI.Client/src/packages/core/content-type/modals/manifests.ts b/src/Umbraco.Web.UI.Client/src/packages/core/content-type/modals/manifests.ts index daedade274..7b6a72b557 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/core/content-type/modals/manifests.ts +++ b/src/Umbraco.Web.UI.Client/src/packages/core/content-type/modals/manifests.ts @@ -5,13 +5,13 @@ const modals: Array = [ type: 'modal', alias: 'Umb.Modal.CompositionPicker', name: 'ContentType Composition Picker Modal', - js: () => import('./composition-picker/composition-picker-modal.element.js'), + element: () => import('./composition-picker/composition-picker-modal.element.js'), }, { type: 'modal', alias: 'Umb.Modal.PropertyTypeSettings', name: 'Property Type Settings Modal', - js: () => import('./property-type-settings/property-type-settings-modal.element.js'), + element: () => import('./property-type-settings/property-type-settings-modal.element.js'), }, ]; diff --git a/src/Umbraco.Web.UI.Client/src/packages/core/content-type/workspace/views/design/manifest.ts b/src/Umbraco.Web.UI.Client/src/packages/core/content-type/workspace/views/design/manifest.ts index 42b52d383f..86a9442024 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/core/content-type/workspace/views/design/manifest.ts +++ b/src/Umbraco.Web.UI.Client/src/packages/core/content-type/workspace/views/design/manifest.ts @@ -11,7 +11,7 @@ export const contentTypeDesignEditorManifest: UmbBackofficeManifestKind = { element: () => import('./content-type-design-editor.element.js'), weight: 1000, meta: { - label: 'Design', + label: '#general_design', pathname: 'design', icon: 'icon-document-dashed-line', }, diff --git a/src/Umbraco.Web.UI.Client/src/packages/core/culture/components/input-culture-select/input-culture-select.element.ts b/src/Umbraco.Web.UI.Client/src/packages/core/culture/components/input-culture-select/input-culture-select.element.ts index 82e6de0d2c..eb00b0e550 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/core/culture/components/input-culture-select/input-culture-select.element.ts +++ b/src/Umbraco.Web.UI.Client/src/packages/core/culture/components/input-culture-select/input-culture-select.element.ts @@ -57,7 +57,9 @@ export class UmbInputCultureSelectElement extends FormControlMixin(UmbLitElement event.stopPropagation(); const target = event.composedPath()[0] as UUIComboboxElement; this._value = target.value; - const culture = this._cultures.find((culture) => culture.name === this._value); + const culture = this._cultures.find( + (culture) => culture.name.toLowerCase() === (this._value as string).toLowerCase(), + ); this.selectedCultureName = culture?.englishName; this.dispatchEvent(new UmbChangeEvent()); } @@ -69,7 +71,7 @@ export class UmbInputCultureSelectElement extends FormControlMixin(UmbLitElement } get #fromAvailableCultures() { - return this._cultures.find((culture) => culture.name === this.value); + return this._cultures.find((culture) => culture.name.toLowerCase() === (this.value as string).toLowerCase()); } render() { @@ -94,7 +96,7 @@ export class UmbInputCultureSelectElement extends FormControlMixin(UmbLitElement )} - `} + `} `; } } diff --git a/src/Umbraco.Web.UI.Client/src/packages/core/culture/repository/sources/culture.server.data.ts b/src/Umbraco.Web.UI.Client/src/packages/core/culture/repository/sources/culture.server.data.ts index d7cca0cc46..7ac0ac1a6f 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/core/culture/repository/sources/culture.server.data.ts +++ b/src/Umbraco.Web.UI.Client/src/packages/core/culture/repository/sources/culture.server.data.ts @@ -1,5 +1,5 @@ import type { UmbCultureDataSource } from './index.js'; -import { CultureResource } from '@umbraco-cms/backoffice/external/backend-api'; +import { CultureService } from '@umbraco-cms/backoffice/external/backend-api'; import type { UmbControllerHost } from '@umbraco-cms/backoffice/controller-api'; import { tryExecuteAndNotify } from '@umbraco-cms/backoffice/resources'; @@ -27,6 +27,6 @@ export class UmbCultureServerDataSource implements UmbCultureDataSource { * @memberof UmbLanguageServerDataSource */ async getCollection({ skip, take }: { skip: number; take: number }) { - return tryExecuteAndNotify(this.#host, CultureResource.getCulture({ skip, take })); + return tryExecuteAndNotify(this.#host, CultureService.getCulture({ skip, take })); } } diff --git a/src/Umbraco.Web.UI.Client/src/packages/core/debug/manifests.ts b/src/Umbraco.Web.UI.Client/src/packages/core/debug/manifests.ts index ff35dfe66d..b38f9c2533 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/core/debug/manifests.ts +++ b/src/Umbraco.Web.UI.Client/src/packages/core/debug/manifests.ts @@ -5,7 +5,7 @@ const modals: Array = [ type: 'modal', alias: 'Umb.Modal.ContextDebugger', name: 'Context Debugger Modal', - js: () => import('./modals/debug/debug-modal.element.js'), + element: () => import('./modals/debug/debug-modal.element.js'), }, ]; diff --git a/src/Umbraco.Web.UI.Client/src/packages/core/entity-action/common/delete/delete.action.kind.ts b/src/Umbraco.Web.UI.Client/src/packages/core/entity-action/common/delete/delete.action.kind.ts index bf2f0136f6..12fb21ad02 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/core/entity-action/common/delete/delete.action.kind.ts +++ b/src/Umbraco.Web.UI.Client/src/packages/core/entity-action/common/delete/delete.action.kind.ts @@ -11,11 +11,11 @@ export const manifest: UmbBackofficeManifestKind = { type: 'entityAction', kind: 'delete', api: () => import('./delete.action.js'), - weight: 900, + weight: 1100, forEntityTypes: [], meta: { icon: 'icon-trash', - label: 'Delete...', + label: '#actions_delete', itemRepositoryAlias: '', detailRepositoryAlias: '', }, diff --git a/src/Umbraco.Web.UI.Client/src/packages/core/entity-action/common/duplicate/duplicate.action.kind.ts b/src/Umbraco.Web.UI.Client/src/packages/core/entity-action/common/duplicate/duplicate.action.kind.ts index 0174d495ef..051ebdde0b 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/core/entity-action/common/duplicate/duplicate.action.kind.ts +++ b/src/Umbraco.Web.UI.Client/src/packages/core/entity-action/common/duplicate/duplicate.action.kind.ts @@ -15,7 +15,7 @@ export const manifest: UmbBackofficeManifestKind = { forEntityTypes: [], meta: { icon: 'icon-documents', - label: 'Duplicate to...', + label: '#actions_copy', itemRepositoryAlias: '', duplicateRepositoryAlias: '', pickerModal: '', diff --git a/src/Umbraco.Web.UI.Client/src/packages/core/entity-action/common/index.ts b/src/Umbraco.Web.UI.Client/src/packages/core/entity-action/common/index.ts index b597275cdd..005791ff7b 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/core/entity-action/common/index.ts +++ b/src/Umbraco.Web.UI.Client/src/packages/core/entity-action/common/index.ts @@ -2,4 +2,3 @@ export * from './duplicate/duplicate.action.js'; export * from './delete/delete.action.js'; export * from './move/move.action.js'; export * from './sort-children-of/sort-children-of.action.js'; -export * from './trash/trash.action.js'; diff --git a/src/Umbraco.Web.UI.Client/src/packages/core/entity-action/common/move/move.action.kind.ts b/src/Umbraco.Web.UI.Client/src/packages/core/entity-action/common/move/move.action.kind.ts index a872359e9f..09b3fb9010 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/core/entity-action/common/move/move.action.kind.ts +++ b/src/Umbraco.Web.UI.Client/src/packages/core/entity-action/common/move/move.action.kind.ts @@ -15,7 +15,7 @@ export const manifest: UmbBackofficeManifestKind = { forEntityTypes: [], meta: { icon: 'icon-enter', - label: 'Move to (TBD)...', + label: '#actions_move', itemRepositoryAlias: '', moveRepositoryAlias: '', pickerModal: '', diff --git a/src/Umbraco.Web.UI.Client/src/packages/core/entity-action/common/sort-children-of/sort-children-of.action.kind.ts b/src/Umbraco.Web.UI.Client/src/packages/core/entity-action/common/sort-children-of/sort-children-of.action.kind.ts index 42dab12acb..3845a19139 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/core/entity-action/common/sort-children-of/sort-children-of.action.kind.ts +++ b/src/Umbraco.Web.UI.Client/src/packages/core/entity-action/common/sort-children-of/sort-children-of.action.kind.ts @@ -15,7 +15,7 @@ export const manifest: UmbBackofficeManifestKind = { forEntityTypes: [], meta: { icon: 'icon-height', - label: 'Sort Children...', + label: '#actions_sort', itemRepositoryAlias: '', sortRepositoryAlias: '', }, diff --git a/src/Umbraco.Web.UI.Client/src/packages/core/entity-action/common/trash/trash.action.ts b/src/Umbraco.Web.UI.Client/src/packages/core/entity-action/common/trash/trash.action.ts deleted file mode 100644 index 3c4fc550c3..0000000000 --- a/src/Umbraco.Web.UI.Client/src/packages/core/entity-action/common/trash/trash.action.ts +++ /dev/null @@ -1,34 +0,0 @@ -import { UmbEntityActionBase } from '../../entity-action-base.js'; -import type { UmbControllerHost } from '@umbraco-cms/backoffice/controller-api'; -//import { umbConfirmModal } from '@umbraco-cms/backoffice/modal'; - -export class UmbTrashEntityAction extends UmbEntityActionBase { - constructor(host: UmbControllerHost, args: any) { - super(host, args); - } - - async execute() { - console.log(`execute trash for: ${this.args.unique}`); - /* - if (!this.unique) throw new Error('Unique is not available'); - if (!this.repository) return; - - const { data } = await this.repository.requestItems([this.unique]); - - if (data) { - const item = data[0]; - - await umbConfirmModal(this._host, { - headline: `Trash ${item.name}`, - content: 'Are you sure you want to move this item to the recycle bin?', - color: 'danger', - confirmLabel: 'Trash', - }); - - this.repository?.trash(this.unique); - } - */ - } -} - -export default UmbTrashEntityAction; diff --git a/src/Umbraco.Web.UI.Client/src/packages/core/entity-action/default/entity-action.element.ts b/src/Umbraco.Web.UI.Client/src/packages/core/entity-action/default/entity-action.element.ts index e0c639c52c..de1f6cab4e 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/core/entity-action/default/entity-action.element.ts +++ b/src/Umbraco.Web.UI.Client/src/packages/core/entity-action/default/entity-action.element.ts @@ -53,7 +53,9 @@ export class UmbEntityActionElement< render() { return html` diff --git a/src/Umbraco.Web.UI.Client/src/packages/core/entity-action/entity-action-list.element.ts b/src/Umbraco.Web.UI.Client/src/packages/core/entity-action/entity-action-list.element.ts index b9c3f9d207..3b06e5b891 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/core/entity-action/entity-action-list.element.ts +++ b/src/Umbraco.Web.UI.Client/src/packages/core/entity-action/entity-action-list.element.ts @@ -1,5 +1,5 @@ -import { UmbEntityContext } from '@umbraco-cms/backoffice/entity'; import type { UmbEntityActionArgs } from './types.js'; +import { UmbEntityContext } from '@umbraco-cms/backoffice/entity'; import { html, customElement, property, state, css } from '@umbraco-cms/backoffice/external/lit'; import type { ManifestEntityAction, MetaEntityAction } from '@umbraco-cms/backoffice/extension-registry'; import { UmbLitElement } from '@umbraco-cms/backoffice/lit-element'; @@ -17,9 +17,9 @@ export class UmbEntityActionListElement extends UmbLitElement { this.#generateApiArgs(); this.requestUpdate('_props'); // Update filter: - const oldValue = this._filter; + //const oldValue = this._filter; this._filter = (extension: ManifestEntityAction) => extension.forEntityTypes.includes(value); - this.requestUpdate('_filter', oldValue); + //this.requestUpdate('_filter', oldValue); } @state() diff --git a/src/Umbraco.Web.UI.Client/src/packages/core/entity-action/manifests.ts b/src/Umbraco.Web.UI.Client/src/packages/core/entity-action/manifests.ts index dcdfb2d4b3..bbe018524f 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/core/entity-action/manifests.ts +++ b/src/Umbraco.Web.UI.Client/src/packages/core/entity-action/manifests.ts @@ -2,7 +2,6 @@ import { manifests as defaultEntityActionManifests } from './default/manifests.j import { manifests as deleteEntityActionManifests } from './common/delete/manifests.js'; import { manifests as duplicateEntityActionManifests } from './common/duplicate/manifests.js'; import { manifests as moveEntityActionManifests } from './common/move/manifests.js'; -import { manifests as trashEntityActionManifests } from './common/trash/manifests.js'; import { manifests as sortChildrenOfEntityActionManifests } from './common/sort-children-of/manifests.js'; export const manifests = [ @@ -10,6 +9,5 @@ export const manifests = [ ...deleteEntityActionManifests, ...duplicateEntityActionManifests, ...moveEntityActionManifests, - ...trashEntityActionManifests, ...sortChildrenOfEntityActionManifests, ]; diff --git a/src/Umbraco.Web.UI.Client/src/packages/core/entry-point.ts b/src/Umbraco.Web.UI.Client/src/packages/core/entry-point.ts index f591e15ea4..1f88e46d6a 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/core/entry-point.ts +++ b/src/Umbraco.Web.UI.Client/src/packages/core/entry-point.ts @@ -1,3 +1,4 @@ +import { UMB_AUTH_CONTEXT } from './auth/auth.context.token.js'; import { UmbBackofficeNotificationContainerElement, UmbBackofficeModalContainerElement } from './components/index.js'; import { UmbActionEventContext } from './action/action-event.context.js'; import { manifests as coreManifests } from './manifests.js'; @@ -17,12 +18,17 @@ export const onInit: UmbEntryPointOnInit = (host, extensionRegistry) => { extensionRegistry.registerMany(coreManifests); const notificationContainerElement = new UmbBackofficeNotificationContainerElement(); - host.appendChild(notificationContainerElement); + host.shadowRoot?.appendChild(notificationContainerElement); const modalContainerElement = new UmbBackofficeModalContainerElement(); - host.appendChild(modalContainerElement); + host.shadowRoot?.appendChild(modalContainerElement); new UmbNotificationContext(host); new UmbModalManagerContext(host); new UmbActionEventContext(host); + + host.consumeContext(UMB_AUTH_CONTEXT, (authContext) => { + // Initialize the auth context to let the app context know that the core module is ready + authContext.setInitialized(); + }); }; diff --git a/src/Umbraco.Web.UI.Client/src/packages/core/extension-registry/collection/repository/manifests.ts b/src/Umbraco.Web.UI.Client/src/packages/core/extension-registry/collection/repository/manifests.ts index 15cf8232e5..3a929d8e79 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/core/extension-registry/collection/repository/manifests.ts +++ b/src/Umbraco.Web.UI.Client/src/packages/core/extension-registry/collection/repository/manifests.ts @@ -1,4 +1,3 @@ -import { UmbExtensionCollectionRepository } from './extension-collection.repository.js'; import type { ManifestRepository } from '@umbraco-cms/backoffice/extension-registry'; export const UMB_EXTENSION_COLLECTION_REPOSITORY_ALIAS = 'Umb.Repository.ExtensionCollection'; @@ -7,7 +6,7 @@ const repository: ManifestRepository = { type: 'repository', alias: UMB_EXTENSION_COLLECTION_REPOSITORY_ALIAS, name: 'Extension Collection Repository', - api: UmbExtensionCollectionRepository, + api: () => import('./extension-collection.repository.js'), }; export const manifests = [repository]; diff --git a/src/Umbraco.Web.UI.Client/src/packages/core/extension-registry/collection/views/manifests.ts b/src/Umbraco.Web.UI.Client/src/packages/core/extension-registry/collection/views/manifests.ts index b577757db8..004a05d294 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/core/extension-registry/collection/views/manifests.ts +++ b/src/Umbraco.Web.UI.Client/src/packages/core/extension-registry/collection/views/manifests.ts @@ -7,7 +7,7 @@ const tableCollectionView: ManifestCollectionView = { type: 'collectionView', alias: UMB_EXTENSION_TABLE_COLLECTION_VIEW_ALIAS, name: 'Extension Table Collection View', - js: () => import('./table/extension-table-collection-view.element.js'), + element: () => import('./table/extension-table-collection-view.element.js'), meta: { label: 'Table', icon: 'icon-list', diff --git a/src/Umbraco.Web.UI.Client/src/packages/core/extension-registry/conditions/types.ts b/src/Umbraco.Web.UI.Client/src/packages/core/extension-registry/conditions/types.ts index f6747e7ed9..3c893630a7 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/core/extension-registry/conditions/types.ts +++ b/src/Umbraco.Web.UI.Client/src/packages/core/extension-registry/conditions/types.ts @@ -3,26 +3,26 @@ import type { CollectionBulkActionPermissionConditionConfig } from '../../collec import type { UmbSectionUserPermissionConditionConfig } from '../../section/conditions/index.js'; import type { SectionAliasConditionConfig } from './section-alias.condition.js'; import type { SwitchConditionConfig } from './switch.condition.js'; -import type { UserPermissionConditionConfig } from '@umbraco-cms/backoffice/user-permission'; import type { BlockWorkspaceHasSettingsConditionConfig } from '@umbraco-cms/backoffice/block'; import type { WorkspaceAliasConditionConfig, WorkspaceEntityTypeConditionConfig, } from '@umbraco-cms/backoffice/workspace'; import type { UmbConditionConfigBase } from '@umbraco-cms/backoffice/extension-api'; +import type { UmbDocumentUserPermissionConditionConfig } from '@umbraco-cms/backoffice/document'; /* TODO: in theory should't the core package import from other packages. Are there any other way we can do this? Niels: Sadly I don't see any other solutions currently. But are very open for ideas :-) now that I think about it maybe there is some ability to extend a global type, similar to the 'declare global' trick we use on Elements. */ export type ConditionTypes = + | BlockWorkspaceHasSettingsConditionConfig | CollectionAliasConditionConfig | CollectionBulkActionPermissionConditionConfig | SectionAliasConditionConfig - | WorkspaceAliasConditionConfig - | BlockWorkspaceHasSettingsConditionConfig - | WorkspaceEntityTypeConditionConfig | SwitchConditionConfig - | UserPermissionConditionConfig + | UmbDocumentUserPermissionConditionConfig | UmbSectionUserPermissionConditionConfig + | WorkspaceAliasConditionConfig + | WorkspaceEntityTypeConditionConfig | UmbConditionConfigBase; diff --git a/src/Umbraco.Web.UI.Client/src/packages/core/extension-registry/index.ts b/src/Umbraco.Web.UI.Client/src/packages/core/extension-registry/index.ts index 9d63aeebbb..7442cd6ae9 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/core/extension-registry/index.ts +++ b/src/Umbraco.Web.UI.Client/src/packages/core/extension-registry/index.ts @@ -1,6 +1,6 @@ export * from './conditions/index.js'; -export * from './interfaces/index.js'; -export * from './models/index.js'; +export type * from './interfaces/index.js'; +export type * from './models/index.js'; export * from './registry.js'; export * from './utils/index.js'; diff --git a/src/Umbraco.Web.UI.Client/src/packages/core/extension-registry/models/auth-provider.model.ts b/src/Umbraco.Web.UI.Client/src/packages/core/extension-registry/models/auth-provider.model.ts new file mode 100644 index 0000000000..116be49a73 --- /dev/null +++ b/src/Umbraco.Web.UI.Client/src/packages/core/extension-registry/models/auth-provider.model.ts @@ -0,0 +1,80 @@ +import type { ManifestElement } from '@umbraco-cms/backoffice/extension-api'; +import type { UUIInterfaceColor, UUIInterfaceLook } from '@umbraco-cms/backoffice/external/uui'; + +/** + * Represents an authentication provider that can be used to authenticate users. + * The provider needs to be registered in the API that the authorization request is sent to in order to be used. + * + * @see {forProviderName} for the provider name that this provider is for. + */ +export interface ManifestAuthProvider extends ManifestElement { + type: 'authProvider'; + + /** + * The provider name that this provider is for. + * @examples 'Umbraco.Github' + */ + forProviderName: string; + + meta?: MetaAuthProvider; +} + +export interface MetaAuthProvider { + /** + * The label of the provider that is shown to the user. + */ + label?: string; + + /** + * The default view of the provider that is shown to the user. + * If no element is provided, then the button will be rendered as a @see {UUIButtonElement} using these options. + */ + defaultView?: { + /** + * The icon of the provider that is shown to the user. + * @examples ['icon-cloud', 'icon-github', 'icon-google', 'icon-facebook', 'icon-twitter', 'icon-x', 'icon-microsoft'] + * @default 'icon-cloud' + */ + icon?: string; + + /** + * The color of the provider that is shown to the user. + * @default 'secondary' + */ + color?: UUIInterfaceColor; + + /** + * The look of the provider that is shown to the user. + * @default 'default' + */ + look?: UUIInterfaceLook; + }; + + /** + * The behavior of the provider when it is used. + */ + behavior?: { + /** + * If true, the Umbraco backoffice login will be disabled. + * @default false + */ + denyLocalLogin?: boolean; + + /** + * If true, the user will be redirected to the provider's login page immediately. + * @default false + */ + autoRedirect?: boolean; + }; + + /** + * The linking options of the provider when it is used. + */ + linking?: { + /** + * If true, the user will be able to link the provider to an existing account. + * @default false + */ + allowManualLinking?: boolean; + }; +} diff --git a/src/Umbraco.Web.UI.Client/src/packages/core/extension-registry/models/current-user-action.model.ts b/src/Umbraco.Web.UI.Client/src/packages/core/extension-registry/models/current-user-action.model.ts new file mode 100644 index 0000000000..7af684a83a --- /dev/null +++ b/src/Umbraco.Web.UI.Client/src/packages/core/extension-registry/models/current-user-action.model.ts @@ -0,0 +1,73 @@ +import type { ConditionTypes } from '../conditions/types.js'; +import type { UmbAction } from '../../action/action.interface.js'; +import type { UmbControllerHostElement } from '@umbraco-cms/backoffice/controller-api'; +import type { ManifestElementAndApi, ManifestWithDynamicConditions } from '@umbraco-cms/backoffice/extension-api'; +import type { UUIInterfaceColor, UUIInterfaceLook } from '@umbraco-cms/backoffice/external/uui'; + +export interface UmbCurrentUserActionArgs { + meta: MetaArgsType; +} + +export interface UmbCurrentUserAction extends UmbAction> { + /** + * The href location, the action will act as a link. + * @returns {Promise} + */ + getHref(): Promise; + + /** + * The `execute` method, the action will act as a button. + * @returns {Promise} + */ + execute(): Promise; +} + +export interface ManifestCurrentUserAction + extends ManifestElementAndApi>, + ManifestWithDynamicConditions { + type: 'currentUserAction'; + meta: MetaType; +} + +export interface MetaCurrentUserAction {} + +export interface ManifestCurrentUserActionDefaultKind< + MetaType extends MetaCurrentUserActionDefaultKind = MetaCurrentUserActionDefaultKind, +> extends ManifestCurrentUserAction { + type: 'currentUserAction'; + kind: 'default'; +} + +export interface MetaCurrentUserActionDefaultKind extends MetaCurrentUserAction { + /** + * An icon to represent the action to be performed + * + * @examples [ + * "icon-box", + * "icon-grid" + * ] + */ + icon?: string; + + /** + * The friendly name of the action to perform + * + * @examples [ + * "Create", + * "Create Content Template" + * ] + */ + label: string; + + /** + * The look of the button + * @default primary + */ + look?: UUIInterfaceLook; + + /** + * The color of the button + * @default default + */ + color?: UUIInterfaceColor; +} diff --git a/src/Umbraco.Web.UI.Client/src/packages/core/extension-registry/models/entity-action.model.ts b/src/Umbraco.Web.UI.Client/src/packages/core/extension-registry/models/entity-action.model.ts index 1a0e2fde40..68ed28918a 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/core/extension-registry/models/entity-action.model.ts +++ b/src/Umbraco.Web.UI.Client/src/packages/core/extension-registry/models/entity-action.model.ts @@ -2,7 +2,7 @@ import type { ConditionTypes } from '../conditions/types.js'; import type { UmbControllerHostElement } from '@umbraco-cms/backoffice/controller-api'; import type { UmbEntityAction } from '@umbraco-cms/backoffice/entity-action'; import type { ManifestElementAndApi, ManifestWithDynamicConditions } from '@umbraco-cms/backoffice/extension-api'; -import type { UmbModalToken } from '@umbraco-cms/backoffice/modal'; +import type { UmbModalToken, UmbPickerModalData, UmbPickerModalValue } from '@umbraco-cms/backoffice/modal'; /** * An action to perform on an entity @@ -63,10 +63,35 @@ export interface ManifestEntityActionTrashKind extends ManifestEntityAction { + type: 'entityAction'; + kind: 'restoreFromRecycleBin'; +} + +export interface MetaEntityActionRestoreFromRecycleBinKind extends MetaEntityActionDefaultKind { + recycleBinRepositoryAlias: string; + itemRepositoryAlias: string; + pickerModal: UmbModalToken, UmbPickerModalValue> | string; +} + +// EMPTY RECYCLE BIN +export interface ManifestEntityActionEmptyRecycleBinKind + extends ManifestEntityAction { + type: 'entityAction'; + kind: 'emptyRecycleBin'; +} + +export interface MetaEntityActionEmptyRecycleBinKind extends MetaEntityActionDefaultKind { + recycleBinRepositoryAlias: string; +} + // RENAME export interface ManifestEntityActionRenameServerFileKind extends ManifestEntityAction { diff --git a/src/Umbraco.Web.UI.Client/src/packages/core/extension-registry/models/entity-user-permission.model.ts b/src/Umbraco.Web.UI.Client/src/packages/core/extension-registry/models/entity-user-permission.model.ts index 4eb5723b94..db8ed1e2e2 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/core/extension-registry/models/entity-user-permission.model.ts +++ b/src/Umbraco.Web.UI.Client/src/packages/core/extension-registry/models/entity-user-permission.model.ts @@ -9,8 +9,6 @@ export interface ManifestEntityUserPermission extends ManifestBase { export interface MetaEntityUserPermission { verbs: Array; label?: string; - labelKey?: string; description?: string; - descriptionKey?: string; group?: string; } diff --git a/src/Umbraco.Web.UI.Client/src/packages/core/extension-registry/models/index.ts b/src/Umbraco.Web.UI.Client/src/packages/core/extension-registry/models/index.ts index bd329b9276..5729a909c2 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/core/extension-registry/models/index.ts +++ b/src/Umbraco.Web.UI.Client/src/packages/core/extension-registry/models/index.ts @@ -1,6 +1,8 @@ +import type { ManifestAuthProvider } from './auth-provider.model.js'; import type { ManifestBlockEditorCustomView } from './block-editor-custom-view.model.js'; import type { ManifestCollection } from './collection.models.js'; import type { ManifestCollectionView } from './collection-view.model.js'; +import type { ManifestCurrentUserAction, ManifestCurrentUserActionDefaultKind } from './current-user-action.model.js'; import type { ManifestDashboard } from './dashboard.model.js'; import type { ManifestDashboardCollection } from './dashboard-collection.model.js'; import type { @@ -15,6 +17,8 @@ import type { ManifestEntityActionDeleteFolderKind, ManifestEntityActionDefaultKind, ManifestEntityActionTrashKind, + ManifestEntityActionRestoreFromRecycleBinKind, + ManifestEntityActionEmptyRecycleBinKind, ManifestEntityActionSortChildrenOfKind, } from './entity-action.model.js'; import type { ManifestDynamicRootOrigin, ManifestDynamicRootQueryStep } from './dynamic-root.model.js'; @@ -64,10 +68,12 @@ import type { ManifestEntryPoint, } from '@umbraco-cms/backoffice/extension-api'; +export type * from './auth-provider.model.js'; export type * from './block-editor-custom-view.model.js'; export type * from './collection.models.js'; export type * from './collection-action.model.js'; export type * from './collection-view.model.js'; +export type * from './current-user-action.model.js'; export type * from './dashboard-collection.model.js'; export type * from './dashboard.model.js'; export type * from './dynamic-root.model.js'; @@ -111,9 +117,11 @@ export type ManifestEntityActions = | ManifestEntityActionDeleteFolderKind | ManifestEntityActionDeleteKind | ManifestEntityActionDuplicateKind + | ManifestEntityActionEmptyRecycleBinKind | ManifestEntityActionMoveKind | ManifestEntityActionReloadTreeItemChildrenKind | ManifestEntityActionRenameServerFileKind + | ManifestEntityActionRestoreFromRecycleBinKind | ManifestEntityActionSortChildrenOfKind | ManifestEntityActionTrashKind | ManifestEntityActionUpdateFolderKind; @@ -131,12 +139,15 @@ export type ManifestWorkspaces = ManifestWorkspace | ManifestWorkspaceRoutableKi export type ManifestWorkspaceViews = ManifestWorkspaceView | ManifestWorkspaceViewContentTypeDesignEditorKind; export type ManifestTypes = + | ManifestAuthProvider | ManifestBundle - | ManifestCondition | ManifestBlockEditorCustomView | ManifestCollection | ManifestCollectionView | ManifestCollectionAction + | ManifestCurrentUserAction + | ManifestCurrentUserActionDefaultKind + | ManifestCondition | ManifestDashboard | ManifestDashboardCollection | ManifestDynamicRootOrigin diff --git a/src/Umbraco.Web.UI.Client/src/packages/core/icon-registry/LICENSE b/src/Umbraco.Web.UI.Client/src/packages/core/icon-registry/LICENSE index 4300c4cd5e..66b4696927 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/core/icon-registry/LICENSE +++ b/src/Umbraco.Web.UI.Client/src/packages/core/icon-registry/LICENSE @@ -1,8 +1,16 @@ Lucide License -ISC License +ISC License Copyright (c) for portions of Lucide are held by Cole Bemis 2013-2022 as part of Feather (MIT). All other copyright (c) for Lucide are held by Lucide Contributors 2022. Permission to use, copy, modify, and/or distribute this software for any purpose with or without fee is hereby granted, provided that the above copyright notice and this permission notice appear in all copies. THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + +--- + +Simple Icons +CC0 1.0 Universal license + +The person who associated a work with this deed has dedicated the work to the public domain by waiving all of his or her rights to the work worldwide under copyright law, including all related and neighboring rights, to the extent allowed by law. +You can copy, modify, distribute and perform the work, even for commercial purposes, all without asking permission. diff --git a/src/Umbraco.Web.UI.Client/src/packages/core/icon-registry/icon-dictionary.json b/src/Umbraco.Web.UI.Client/src/packages/core/icon-registry/icon-dictionary.json index d46fcbda58..b573765d43 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/core/icon-registry/icon-dictionary.json +++ b/src/Umbraco.Web.UI.Client/src/packages/core/icon-registry/icon-dictionary.json @@ -18,11 +18,11 @@ }, { "name": "icon-alert-alt", - "file": "alert-triangle.svg" + "file": "triangle-alert.svg" }, { "name": "icon-alert", - "file": "alert-triangle.svg" + "file": "triangle-alert.svg" }, { "name": "icon-alt", @@ -38,7 +38,7 @@ }, { "name": "icon-application-error", - "file": "application-error.svg" + "file": "circle-x.svg" }, { "name": "icon-application-window-alt", @@ -114,7 +114,7 @@ }, { "name": "icon-badge-add", - "file": "plus-circle.svg" + "file": "circle-plus.svg" }, { "_name": "icon-badge-count", @@ -122,7 +122,7 @@ }, { "name": "icon-badge-remove", - "file": "minus-circle.svg" + "file": "circle-minus.svg" }, { "name": "icon-badge-restricted", @@ -131,7 +131,7 @@ }, { "name": "icon-ball", - "file": "dribble.svg" + "file": "dribbble.svg" }, { "_name": "icon-band-aid", @@ -410,7 +410,7 @@ }, { "name": "icon-checkbox", - "file": "check-square.svg" + "file": "square-check.svg" }, { "_name": "icon-chess", @@ -431,7 +431,7 @@ }, { "name": "icon-circle-dotted-active", - "file": "check-circle.svg" + "file": "circle-check.svg" }, { "name": "icon-circle-dotted", @@ -460,7 +460,7 @@ }, { "name": "icon-cloud-upload", - "file": "upload-cloud.svg" + "file": "cloud-upload.svg" }, { "name": "icon-cloud", @@ -488,7 +488,7 @@ }, { "name": "icon-coin-dollar", - "file": "dollar.svg" + "file": "dollar-sign.svg" }, { "name": "icon-coin-euro", @@ -496,7 +496,7 @@ }, { "name": "icon-coin-pound", - "file": "pound.svg" + "file": "pound-sterling.svg" }, { "name": "icon-coin-yen", @@ -565,7 +565,7 @@ }, { "name": "icon-combination-lock-open", - "file": "unlock-keyhole.svg" + "file": "lock-keyhole-open.svg" }, { "name": "icon-combination-lock", @@ -589,7 +589,7 @@ }, { "name": "icon-console", - "file": "terminal-square.svg" + "file": "square-terminal.svg" }, { "name": "icon-contrast", @@ -756,7 +756,7 @@ }, { "name": "icon-donate", - "file": "helping-hand.svg", + "file": "hand-helping.svg", "legacy": true }, { @@ -816,7 +816,7 @@ }, { "name": "icon-escape", - "file": "arrow-up-left-from-circle.svg" + "file": "circle-arrow-out-up-left.svg" }, { "name": "icon-ethernet", @@ -832,7 +832,7 @@ }, { "name": "icon-exit-fullscreen", - "file": "exit-fullscreen.svg" + "file": "minimize-2.svg" }, { "name": "icon-facebook-like", @@ -852,7 +852,7 @@ }, { "name": "icon-file-cabinet", - "file": "library-square.svg" + "file": "square-library.svg" }, { "name": "icon-files", @@ -860,7 +860,7 @@ }, { "name": "icon-filter-arrows", - "file": "filter-arrows.svg" + "file": "arrow-down-a-z.svg" }, { "name": "icon-filter", @@ -1090,7 +1090,7 @@ }, { "name": "icon-help-alt", - "file": "help-circle.svg" + "file": "circle-help.svg" }, { "name": "icon-help", @@ -1124,7 +1124,7 @@ }, { "name": "icon-indent", - "file": "indent.svg" + "file": "indent-increase.svg" }, { "name": "icon-infinity", @@ -1193,7 +1193,7 @@ }, { "name": "icon-layout", - "file": "layout.svg" + "file": "layout-dashboard.svg" }, { "name": "icon-left-double-arrow", @@ -1222,11 +1222,11 @@ }, { "name": "icon-lightbulb-active", - "file": "bulb.svg" + "file": "lightbulb.svg" }, { "name": "icon-lightbulb", - "file": "bulb.svg", + "file": "lightbulb-off.svg", "legacy": true }, { @@ -1257,11 +1257,11 @@ }, { "name": "icon-locate", - "file": "locate" + "file": "locate.svg" }, { "name": "icon-location-near-me", - "file": "map-pinned", + "file": "map-pinned.svg", "legacy": true }, { @@ -1404,7 +1404,7 @@ }, { "name": "icon-multiple-windows", - "file": "multiple-windows.svg" + "file": "book-copy.svg" }, { "name": "icon-music", @@ -1457,7 +1457,7 @@ }, { "name": "icon-navigation-top", - "file": "arrow-up-to-line", + "file": "arrow-up-to-line.svg", "legacy": true }, { @@ -1486,7 +1486,7 @@ { "name": "icon-newspaper-alt", "file": "newspaper.svg", - "legacy":true + "legacy": true }, { "name": "icon-newspaper", @@ -1544,7 +1544,7 @@ }, { "name": "icon-outdent", - "file": "outdent.svg" + "file": "indent-decrease.svg" }, { "name": "icon-page-add", @@ -1715,7 +1715,7 @@ }, { "name": "icon-power-outlet", - "file": "power-square.svg", + "file": "square-power.svg", "legacy": true }, { @@ -1737,22 +1737,22 @@ { "name": "icon-price-dollar", "file": "badge-dollar-sign.svg", - "legacy":true + "legacy": true }, { "name": "icon-price-euro", "file": "badge-euro.svg", - "legacy":true + "legacy": true }, { "name": "icon-price-pound", "file": "badge-pound-sterling.svg", - "legacy":true + "legacy": true }, { "name": "icon-price-yen", - "file": "badge-japanese-yen", - "legacy":true + "file": "badge-japanese-yen.svg", + "legacy": true }, { "name": "icon-print", @@ -1826,6 +1826,10 @@ "file": "disc-3.svg", "legacy": true }, + { + "name": "icon-rectangle-ellipsis", + "file": "rectangle-ellipsis.svg" + }, { "name": "icon-redo", "file": "redo-2.svg" @@ -1857,7 +1861,7 @@ }, { "name": "icon-resize", - "file": "resize.svg" + "file": "scaling.svg" }, { "name": "icon-return-to-top", @@ -1904,7 +1908,7 @@ }, { "name": "icon-school", - "file": "school-2.svg" + "file": "school.svg" }, { "name": "icon-screensharing", @@ -2065,11 +2069,11 @@ }, { "name": "icon-speed-gauge", - "file": "gauge-circle.svg" + "file": "circle-gauge.svg" }, { "name": "icon-split-alt", - "file": "split-alt.svg" + "file": "square-split-horizontal.svg" }, { "name": "icon-split", @@ -2101,7 +2105,7 @@ }, { "name": "icon-stop-alt", - "file": "x-octagon.svg" + "file": "octagon-x.svg" }, { "name": "icon-stop-hand", @@ -2118,7 +2122,7 @@ }, { "name": "icon-stream", - "file": "activity-square.svg", + "file": "square-activity.svg", "legacy": true }, { @@ -2169,7 +2173,7 @@ }, { "name": "icon-terminal", - "file": "terminal-square.svg" + "file": "square-terminal.svg" }, { "name": "icon-theater", @@ -2303,7 +2307,7 @@ }, { "name": "icon-unlocked", - "file": "unlock.svg" + "file": "lock-open.svg" }, { "name": "icon-untitled", @@ -2378,7 +2382,7 @@ }, { "name": "icon-wand", - "file": "wand-2.svg" + "file": "wand-sparkles.svg" }, { "name": "icon-webhook", @@ -2398,7 +2402,7 @@ }, { "name": "icon-window-popin", - "file": "arrow-down-left-square.svg" + "file": "square-arrow-down-left.svg" }, { "name": "icon-window-sizes", @@ -2414,7 +2418,7 @@ }, { "name": "icon-wrong", - "file": "x-circle.svg" + "file": "circle-x.svg" }, { "name": "icon-zip", @@ -2429,10 +2433,6 @@ "name": "icon-zoom-in", "file": "zoom-in.svg" }, - - - - { "name": "icon-zoom-out", "file": "zoom-out.svg" @@ -2446,6 +2446,48 @@ "file": "database.svg" } ], + "simpleIcons": [ + { + "name": "icon-azure", + "file": "microsoftazure.svg" + }, + { + "name": "icon-facebook", + "file": "facebook.svg" + }, + { + "name": "icon-gitbook", + "file": "gitbook.svg" + }, + { + "name": "icon-github", + "file": "github.svg" + }, + { + "name": "icon-gitlab", + "file": "gitlab.svg" + }, + { + "name": "icon-google", + "file": "google.svg" + }, + { + "name": "icon-linkedin", + "file": "linkedin.svg" + }, + { + "name": "icon-mastodon", + "file": "mastodon.svg" + }, + { + "name": "icon-microsoft", + "file": "microsoft.svg" + }, + { + "name": "icon-twitter-x", + "file": "x.svg" + } + ], "umbraco": [ { "name": "icon-umbraco", diff --git a/src/Umbraco.Web.UI.Client/src/packages/core/icon-registry/icons/icon-activity.js b/src/Umbraco.Web.UI.Client/src/packages/core/icon-registry/icons/icon-activity.js index b62ded23d8..62050b8a97 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/core/icon-registry/icons/icon-activity.js +++ b/src/Umbraco.Web.UI.Client/src/packages/core/icon-registry/icons/icon-activity.js @@ -1,4 +1,6 @@ -export default ` + + + + + - + diff --git a/src/Umbraco.Web.UI.Client/src/packages/core/icon-registry/icons/icon-alert.js b/src/Umbraco.Web.UI.Client/src/packages/core/icon-registry/icons/icon-alert.js index 57fab6a18f..5f0968705c 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/core/icon-registry/icons/icon-alert.js +++ b/src/Umbraco.Web.UI.Client/src/packages/core/icon-registry/icons/icon-alert.js @@ -1,4 +1,6 @@ -export default ` + - + diff --git a/src/Umbraco.Web.UI.Client/src/packages/core/icon-registry/icons/icon-alt.js b/src/Umbraco.Web.UI.Client/src/packages/core/icon-registry/icons/icon-alt.js index 2159c8f7b7..bac060ec9e 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/core/icon-registry/icons/icon-alt.js +++ b/src/Umbraco.Web.UI.Client/src/packages/core/icon-registry/icons/icon-alt.js @@ -1,4 +1,6 @@ -export default ` + + - - + + `; \ No newline at end of file diff --git a/src/Umbraco.Web.UI.Client/src/packages/core/icon-registry/icons/icon-app.js b/src/Umbraco.Web.UI.Client/src/packages/core/icon-registry/icons/icon-app.js index d97cdf3c99..6e55063cc2 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/core/icon-registry/icons/icon-app.js +++ b/src/Umbraco.Web.UI.Client/src/packages/core/icon-registry/icons/icon-app.js @@ -1,4 +1,6 @@ -export default ` + +export default ` + + + + + `; \ No newline at end of file diff --git a/src/Umbraco.Web.UI.Client/src/packages/core/icon-registry/icons/icon-application-window-alt.js b/src/Umbraco.Web.UI.Client/src/packages/core/icon-registry/icons/icon-application-window-alt.js index d97cdf3c99..6e55063cc2 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/core/icon-registry/icons/icon-application-window-alt.js +++ b/src/Umbraco.Web.UI.Client/src/packages/core/icon-registry/icons/icon-application-window-alt.js @@ -1,4 +1,6 @@ -export default ` + + + + + + + + + - - - - - + + + + + `; \ No newline at end of file diff --git a/src/Umbraco.Web.UI.Client/src/packages/core/icon-registry/icons/icon-award.js b/src/Umbraco.Web.UI.Client/src/packages/core/icon-registry/icons/icon-award.js index 7b28089061..d1c66b42ea 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/core/icon-registry/icons/icon-award.js +++ b/src/Umbraco.Web.UI.Client/src/packages/core/icon-registry/icons/icon-award.js @@ -1,4 +1,6 @@ -export default ` + + + +Microsoft Azure`; \ No newline at end of file diff --git a/src/Umbraco.Web.UI.Client/src/packages/core/icon-registry/icons/icon-backspace.js b/src/Umbraco.Web.UI.Client/src/packages/core/icon-registry/icons/icon-backspace.js index 3468b2de32..f58e7515e2 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/core/icon-registry/icons/icon-backspace.js +++ b/src/Umbraco.Web.UI.Client/src/packages/core/icon-registry/icons/icon-backspace.js @@ -1,4 +1,6 @@ -export default ` + + + +`; \ No newline at end of file +export default ` + + + + + + +`; \ No newline at end of file diff --git a/src/Umbraco.Web.UI.Client/src/packages/core/icon-registry/icons/icon-bar-chart.js b/src/Umbraco.Web.UI.Client/src/packages/core/icon-registry/icons/icon-bar-chart.js index 109796ea9f..76b8545988 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/core/icon-registry/icons/icon-bar-chart.js +++ b/src/Umbraco.Web.UI.Client/src/packages/core/icon-registry/icons/icon-bar-chart.js @@ -1,4 +1,6 @@ -export default ` + + + + + + + + + + + - - - - - - + + + + + + `; \ No newline at end of file diff --git a/src/Umbraco.Web.UI.Client/src/packages/core/icon-registry/icons/icon-block.js b/src/Umbraco.Web.UI.Client/src/packages/core/icon-registry/icons/icon-block.js index bfc4b9ac55..065f1a4134 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/core/icon-registry/icons/icon-block.js +++ b/src/Umbraco.Web.UI.Client/src/packages/core/icon-registry/icons/icon-block.js @@ -1,4 +1,6 @@ -export default ` + + + + + + + + + + + - - - - + + + + `; \ No newline at end of file diff --git a/src/Umbraco.Web.UI.Client/src/packages/core/icon-registry/icons/icon-box.js b/src/Umbraco.Web.UI.Client/src/packages/core/icon-registry/icons/icon-box.js index fa62904822..89b43a0cba 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/core/icon-registry/icons/icon-box.js +++ b/src/Umbraco.Web.UI.Client/src/packages/core/icon-registry/icons/icon-box.js @@ -1,4 +1,6 @@ -export default ` + + + + - - + + `; \ No newline at end of file diff --git a/src/Umbraco.Web.UI.Client/src/packages/core/icon-registry/icons/icon-browser-window.js b/src/Umbraco.Web.UI.Client/src/packages/core/icon-registry/icons/icon-browser-window.js index d97cdf3c99..6e55063cc2 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/core/icon-registry/icons/icon-browser-window.js +++ b/src/Umbraco.Web.UI.Client/src/packages/core/icon-registry/icons/icon-browser-window.js @@ -1,4 +1,6 @@ -export default ` + + + + + + + - + diff --git a/src/Umbraco.Web.UI.Client/src/packages/core/icon-registry/icons/icon-bus.js b/src/Umbraco.Web.UI.Client/src/packages/core/icon-registry/icons/icon-bus.js index 897078ba71..a4d3518616 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/core/icon-registry/icons/icon-bus.js +++ b/src/Umbraco.Web.UI.Client/src/packages/core/icon-registry/icons/icon-bus.js @@ -1,4 +1,6 @@ -export default ` + + + - - - - + + + + diff --git a/src/Umbraco.Web.UI.Client/src/packages/core/icon-registry/icons/icon-calendar.js b/src/Umbraco.Web.UI.Client/src/packages/core/icon-registry/icons/icon-calendar.js index f93fb3cce8..3feb22d6bc 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/core/icon-registry/icons/icon-calendar.js +++ b/src/Umbraco.Web.UI.Client/src/packages/core/icon-registry/icons/icon-calendar.js @@ -1,4 +1,6 @@ -export default ` + - - - - + + + + `; \ No newline at end of file diff --git a/src/Umbraco.Web.UI.Client/src/packages/core/icon-registry/icons/icon-camcorder.js b/src/Umbraco.Web.UI.Client/src/packages/core/icon-registry/icons/icon-camcorder.js index d6bb176155..76d45da0af 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/core/icon-registry/icons/icon-camcorder.js +++ b/src/Umbraco.Web.UI.Client/src/packages/core/icon-registry/icons/icon-camcorder.js @@ -1,4 +1,6 @@ -export default ` + - - + + `; \ No newline at end of file diff --git a/src/Umbraco.Web.UI.Client/src/packages/core/icon-registry/icons/icon-camera-roll.js b/src/Umbraco.Web.UI.Client/src/packages/core/icon-registry/icons/icon-camera-roll.js index b5e5624d6c..b166371cb5 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/core/icon-registry/icons/icon-camera-roll.js +++ b/src/Umbraco.Web.UI.Client/src/packages/core/icon-registry/icons/icon-camera-roll.js @@ -1,4 +1,6 @@ -export default ` + + + + + + - - + + + `; \ No newline at end of file diff --git a/src/Umbraco.Web.UI.Client/src/packages/core/icon-registry/icons/icon-chart-curve.js b/src/Umbraco.Web.UI.Client/src/packages/core/icon-registry/icons/icon-chart-curve.js index 8d116e0956..c4e755712d 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/core/icon-registry/icons/icon-chart-curve.js +++ b/src/Umbraco.Web.UI.Client/src/packages/core/icon-registry/icons/icon-chart-curve.js @@ -1,4 +1,6 @@ -export default ` + + + - + `; \ No newline at end of file diff --git a/src/Umbraco.Web.UI.Client/src/packages/core/icon-registry/icons/icon-chat.js b/src/Umbraco.Web.UI.Client/src/packages/core/icon-registry/icons/icon-chat.js index 71334e73de..d085d1cf59 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/core/icon-registry/icons/icon-chat.js +++ b/src/Umbraco.Web.UI.Client/src/packages/core/icon-registry/icons/icon-chat.js @@ -1,4 +1,6 @@ -export default ` + - + `; \ No newline at end of file diff --git a/src/Umbraco.Web.UI.Client/src/packages/core/icon-registry/icons/icon-check.js b/src/Umbraco.Web.UI.Client/src/packages/core/icon-registry/icons/icon-check.js index 473616d01d..6c76da118c 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/core/icon-registry/icons/icon-check.js +++ b/src/Umbraco.Web.UI.Client/src/packages/core/icon-registry/icons/icon-check.js @@ -1,4 +1,6 @@ -export default ` + - + `; \ No newline at end of file diff --git a/src/Umbraco.Web.UI.Client/src/packages/core/icon-registry/icons/icon-checkbox-dotted.js b/src/Umbraco.Web.UI.Client/src/packages/core/icon-registry/icons/icon-checkbox-dotted.js index 3a70ad0976..77cf157d2c 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/core/icon-registry/icons/icon-checkbox-dotted.js +++ b/src/Umbraco.Web.UI.Client/src/packages/core/icon-registry/icons/icon-checkbox-dotted.js @@ -1,4 +1,6 @@ -export default ` + + + - - + + `; \ No newline at end of file diff --git a/src/Umbraco.Web.UI.Client/src/packages/core/icon-registry/icons/icon-chip-alt.js b/src/Umbraco.Web.UI.Client/src/packages/core/icon-registry/icons/icon-chip-alt.js index d9f518da8c..27be8044b2 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/core/icon-registry/icons/icon-chip-alt.js +++ b/src/Umbraco.Web.UI.Client/src/packages/core/icon-registry/icons/icon-chip-alt.js @@ -1,4 +1,6 @@ -export default ` + - - + + diff --git a/src/Umbraco.Web.UI.Client/src/packages/core/icon-registry/icons/icon-chip.js b/src/Umbraco.Web.UI.Client/src/packages/core/icon-registry/icons/icon-chip.js index d9f518da8c..27be8044b2 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/core/icon-registry/icons/icon-chip.js +++ b/src/Umbraco.Web.UI.Client/src/packages/core/icon-registry/icons/icon-chip.js @@ -1,4 +1,6 @@ -export default ` + - - + + diff --git a/src/Umbraco.Web.UI.Client/src/packages/core/icon-registry/icons/icon-cinema.js b/src/Umbraco.Web.UI.Client/src/packages/core/icon-registry/icons/icon-cinema.js index 81a4bdbf0a..6bcc908df7 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/core/icon-registry/icons/icon-cinema.js +++ b/src/Umbraco.Web.UI.Client/src/packages/core/icon-registry/icons/icon-cinema.js @@ -1,4 +1,6 @@ -export default ` + - - - - - - - - - + + + + + + + + + `; \ No newline at end of file diff --git a/src/Umbraco.Web.UI.Client/src/packages/core/icon-registry/icons/icon-circle-dotted-active.js b/src/Umbraco.Web.UI.Client/src/packages/core/icon-registry/icons/icon-circle-dotted-active.js index 156f66bff1..17c872c8ac 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/core/icon-registry/icons/icon-circle-dotted-active.js +++ b/src/Umbraco.Web.UI.Client/src/packages/core/icon-registry/icons/icon-circle-dotted-active.js @@ -1,4 +1,6 @@ -export default ` + - - + + `; \ No newline at end of file diff --git a/src/Umbraco.Web.UI.Client/src/packages/core/icon-registry/icons/icon-circle-dotted.js b/src/Umbraco.Web.UI.Client/src/packages/core/icon-registry/icons/icon-circle-dotted.js index aa5948bd9a..966034888a 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/core/icon-registry/icons/icon-circle-dotted.js +++ b/src/Umbraco.Web.UI.Client/src/packages/core/icon-registry/icons/icon-circle-dotted.js @@ -1,4 +1,6 @@ -export default ` + - - - - - - - - + + + + + + + + `; \ No newline at end of file diff --git a/src/Umbraco.Web.UI.Client/src/packages/core/icon-registry/icons/icon-circuits.js b/src/Umbraco.Web.UI.Client/src/packages/core/icon-registry/icons/icon-circuits.js index 1d1fdb10f1..ff26f1d336 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/core/icon-registry/icons/icon-circuits.js +++ b/src/Umbraco.Web.UI.Client/src/packages/core/icon-registry/icons/icon-circuits.js @@ -1,4 +1,6 @@ -export default ` + + + + + + + + + + - - - - - + + + + `; \ No newline at end of file diff --git a/src/Umbraco.Web.UI.Client/src/packages/core/icon-registry/icons/icon-coin-dollar.js b/src/Umbraco.Web.UI.Client/src/packages/core/icon-registry/icons/icon-coin-dollar.js index 969b5b053a..4b7189099e 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/core/icon-registry/icons/icon-coin-dollar.js +++ b/src/Umbraco.Web.UI.Client/src/packages/core/icon-registry/icons/icon-coin-dollar.js @@ -1 +1,15 @@ -export default ``; \ No newline at end of file +export default ` + + + + +`; \ No newline at end of file diff --git a/src/Umbraco.Web.UI.Client/src/packages/core/icon-registry/icons/icon-coin-euro.js b/src/Umbraco.Web.UI.Client/src/packages/core/icon-registry/icons/icon-coin-euro.js index 5c4c115ce0..37df3960ce 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/core/icon-registry/icons/icon-coin-euro.js +++ b/src/Umbraco.Web.UI.Client/src/packages/core/icon-registry/icons/icon-coin-euro.js @@ -1,4 +1,6 @@ -export default ` +`; \ No newline at end of file +export default ` + + + + + + +`; \ No newline at end of file diff --git a/src/Umbraco.Web.UI.Client/src/packages/core/icon-registry/icons/icon-coin-yen.js b/src/Umbraco.Web.UI.Client/src/packages/core/icon-registry/icons/icon-coin-yen.js index a5a5977186..4331cfee00 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/core/icon-registry/icons/icon-coin-yen.js +++ b/src/Umbraco.Web.UI.Client/src/packages/core/icon-registry/icons/icon-coin-yen.js @@ -1,4 +1,6 @@ -export default ` + + + + + + + - + `; \ No newline at end of file diff --git a/src/Umbraco.Web.UI.Client/src/packages/core/icon-registry/icons/icon-combination-lock.js b/src/Umbraco.Web.UI.Client/src/packages/core/icon-registry/icons/icon-combination-lock.js index 2fc74e12a0..79636c737d 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/core/icon-registry/icons/icon-combination-lock.js +++ b/src/Umbraco.Web.UI.Client/src/packages/core/icon-registry/icons/icon-combination-lock.js @@ -1,4 +1,6 @@ -export default ` + + + + - - + + diff --git a/src/Umbraco.Web.UI.Client/src/packages/core/icon-registry/icons/icon-connection.js b/src/Umbraco.Web.UI.Client/src/packages/core/icon-registry/icons/icon-connection.js index 48ed67b71d..b2bf31044b 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/core/icon-registry/icons/icon-connection.js +++ b/src/Umbraco.Web.UI.Client/src/packages/core/icon-registry/icons/icon-connection.js @@ -1,4 +1,6 @@ -export default ` + - + `; \ No newline at end of file diff --git a/src/Umbraco.Web.UI.Client/src/packages/core/icon-registry/icons/icon-console.js b/src/Umbraco.Web.UI.Client/src/packages/core/icon-registry/icons/icon-console.js index e6a4216529..ae37b3e434 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/core/icon-registry/icons/icon-console.js +++ b/src/Umbraco.Web.UI.Client/src/packages/core/icon-registry/icons/icon-console.js @@ -1,4 +1,6 @@ -export default ` + + + - + `; \ No newline at end of file diff --git a/src/Umbraco.Web.UI.Client/src/packages/core/icon-registry/icons/icon-conversation.js b/src/Umbraco.Web.UI.Client/src/packages/core/icon-registry/icons/icon-conversation.js index 2dd6429818..cbd6332dd9 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/core/icon-registry/icons/icon-conversation.js +++ b/src/Umbraco.Web.UI.Client/src/packages/core/icon-registry/icons/icon-conversation.js @@ -1,4 +1,6 @@ -export default ` + + + + + + + - + + `; \ No newline at end of file diff --git a/src/Umbraco.Web.UI.Client/src/packages/core/icon-registry/icons/icon-crown.js b/src/Umbraco.Web.UI.Client/src/packages/core/icon-registry/icons/icon-crown.js index b3e2ab035f..375d55d40a 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/core/icon-registry/icons/icon-crown.js +++ b/src/Umbraco.Web.UI.Client/src/packages/core/icon-registry/icons/icon-crown.js @@ -1,4 +1,6 @@ -export default ` + - + + `; \ No newline at end of file diff --git a/src/Umbraco.Web.UI.Client/src/packages/core/icon-registry/icons/icon-cupcake.js b/src/Umbraco.Web.UI.Client/src/packages/core/icon-registry/icons/icon-cupcake.js index 62c451b88a..495a9ed186 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/core/icon-registry/icons/icon-cupcake.js +++ b/src/Umbraco.Web.UI.Client/src/packages/core/icon-registry/icons/icon-cupcake.js @@ -1,4 +1,6 @@ -export default ` + + + + + + - - - - - + + + + + `; \ No newline at end of file diff --git a/src/Umbraco.Web.UI.Client/src/packages/core/icon-registry/icons/icon-delete-key.js b/src/Umbraco.Web.UI.Client/src/packages/core/icon-registry/icons/icon-delete-key.js index 3468b2de32..f58e7515e2 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/core/icon-registry/icons/icon-delete-key.js +++ b/src/Umbraco.Web.UI.Client/src/packages/core/icon-registry/icons/icon-delete-key.js @@ -1,4 +1,6 @@ -export default ` + + + + + + + + + + + + + + + + + + + - - - - - - - + + + + + `; \ No newline at end of file diff --git a/src/Umbraco.Web.UI.Client/src/packages/core/icon-registry/icons/icon-document-dashed-line.js b/src/Umbraco.Web.UI.Client/src/packages/core/icon-registry/icons/icon-document-dashed-line.js index 8c9981cebe..cd8141f1e1 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/core/icon-registry/icons/icon-document-dashed-line.js +++ b/src/Umbraco.Web.UI.Client/src/packages/core/icon-registry/icons/icon-document-dashed-line.js @@ -1,4 +1,6 @@ -export default ` + - - + + `; \ No newline at end of file diff --git a/src/Umbraco.Web.UI.Client/src/packages/core/icon-registry/icons/icon-document.js b/src/Umbraco.Web.UI.Client/src/packages/core/icon-registry/icons/icon-document.js index 8c9981cebe..cd8141f1e1 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/core/icon-registry/icons/icon-document.js +++ b/src/Umbraco.Web.UI.Client/src/packages/core/icon-registry/icons/icon-document.js @@ -1,4 +1,6 @@ -export default ` + - - + + `; \ No newline at end of file diff --git a/src/Umbraco.Web.UI.Client/src/packages/core/icon-registry/icons/icon-documents.js b/src/Umbraco.Web.UI.Client/src/packages/core/icon-registry/icons/icon-documents.js index d4aabefb81..242a3c8892 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/core/icon-registry/icons/icon-documents.js +++ b/src/Umbraco.Web.UI.Client/src/packages/core/icon-registry/icons/icon-documents.js @@ -1,4 +1,6 @@ -export default ` + - - - + + + `; \ No newline at end of file diff --git a/src/Umbraco.Web.UI.Client/src/packages/core/icon-registry/icons/icon-donate.js b/src/Umbraco.Web.UI.Client/src/packages/core/icon-registry/icons/icon-donate.js index 19bd8a54a9..4f75b4d314 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/core/icon-registry/icons/icon-donate.js +++ b/src/Umbraco.Web.UI.Client/src/packages/core/icon-registry/icons/icon-donate.js @@ -1,4 +1,6 @@ -export default ` + - - + + + `; \ No newline at end of file diff --git a/src/Umbraco.Web.UI.Client/src/packages/core/icon-registry/icons/icon-door-open-alt.js b/src/Umbraco.Web.UI.Client/src/packages/core/icon-registry/icons/icon-door-open-alt.js index 447478feff..49142081d7 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/core/icon-registry/icons/icon-door-open-alt.js +++ b/src/Umbraco.Web.UI.Client/src/packages/core/icon-registry/icons/icon-door-open-alt.js @@ -1,4 +1,6 @@ -export default ` + + + + + + + + + + + + + +`; \ No newline at end of file +export default ` + + + + + + +`; \ No newline at end of file diff --git a/src/Umbraco.Web.UI.Client/src/packages/core/icon-registry/icons/icon-eye.js b/src/Umbraco.Web.UI.Client/src/packages/core/icon-registry/icons/icon-eye.js index 155193587d..ef57913c30 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/core/icon-registry/icons/icon-eye.js +++ b/src/Umbraco.Web.UI.Client/src/packages/core/icon-registry/icons/icon-eye.js @@ -1,4 +1,6 @@ -export default ` + +Facebook`; \ No newline at end of file diff --git a/src/Umbraco.Web.UI.Client/src/packages/core/icon-registry/icons/icon-factory.js b/src/Umbraco.Web.UI.Client/src/packages/core/icon-registry/icons/icon-factory.js index 03b08f1b0c..cc9995bae7 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/core/icon-registry/icons/icon-factory.js +++ b/src/Umbraco.Web.UI.Client/src/packages/core/icon-registry/icons/icon-factory.js @@ -1,4 +1,6 @@ -export default ` + + + + - - + + diff --git a/src/Umbraco.Web.UI.Client/src/packages/core/icon-registry/icons/icon-filter-arrows.js b/src/Umbraco.Web.UI.Client/src/packages/core/icon-registry/icons/icon-filter-arrows.js index ea8c0be238..a2638745f3 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/core/icon-registry/icons/icon-filter-arrows.js +++ b/src/Umbraco.Web.UI.Client/src/packages/core/icon-registry/icons/icon-filter-arrows.js @@ -1 +1,18 @@ -export default ``; \ No newline at end of file +export default ` + + + + + + + +`; \ No newline at end of file diff --git a/src/Umbraco.Web.UI.Client/src/packages/core/icon-registry/icons/icon-filter.js b/src/Umbraco.Web.UI.Client/src/packages/core/icon-registry/icons/icon-filter.js index ca3f618f21..3758051998 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/core/icon-registry/icons/icon-filter.js +++ b/src/Umbraco.Web.UI.Client/src/packages/core/icon-registry/icons/icon-filter.js @@ -1,4 +1,6 @@ -export default ` + + - - - - + + - + + + `; \ No newline at end of file diff --git a/src/Umbraco.Web.UI.Client/src/packages/core/icon-registry/icons/icon-fire.js b/src/Umbraco.Web.UI.Client/src/packages/core/icon-registry/icons/icon-fire.js index 1f6aa08b9e..d0e5368b33 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/core/icon-registry/icons/icon-fire.js +++ b/src/Umbraco.Web.UI.Client/src/packages/core/icon-registry/icons/icon-fire.js @@ -1,4 +1,6 @@ -export default ` + + + + + - + `; \ No newline at end of file diff --git a/src/Umbraco.Web.UI.Client/src/packages/core/icon-registry/icons/icon-flashlight.js b/src/Umbraco.Web.UI.Client/src/packages/core/icon-registry/icons/icon-flashlight.js index 249703a7a9..7304c7e432 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/core/icon-registry/icons/icon-flashlight.js +++ b/src/Umbraco.Web.UI.Client/src/packages/core/icon-registry/icons/icon-flashlight.js @@ -1,4 +1,6 @@ -export default ` + + + + + + + + + + + + + + +GitBook`; \ No newline at end of file diff --git a/src/Umbraco.Web.UI.Client/src/packages/core/icon-registry/icons/icon-github.js b/src/Umbraco.Web.UI.Client/src/packages/core/icon-registry/icons/icon-github.js new file mode 100644 index 0000000000..e7308eddeb --- /dev/null +++ b/src/Umbraco.Web.UI.Client/src/packages/core/icon-registry/icons/icon-github.js @@ -0,0 +1 @@ +export default `GitHub`; \ No newline at end of file diff --git a/src/Umbraco.Web.UI.Client/src/packages/core/icon-registry/icons/icon-gitlab.js b/src/Umbraco.Web.UI.Client/src/packages/core/icon-registry/icons/icon-gitlab.js new file mode 100644 index 0000000000..8ef7e658bd --- /dev/null +++ b/src/Umbraco.Web.UI.Client/src/packages/core/icon-registry/icons/icon-gitlab.js @@ -0,0 +1 @@ +export default `GitLab`; \ No newline at end of file diff --git a/src/Umbraco.Web.UI.Client/src/packages/core/icon-registry/icons/icon-glasses.js b/src/Umbraco.Web.UI.Client/src/packages/core/icon-registry/icons/icon-glasses.js index a62515c745..2708466da5 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/core/icon-registry/icons/icon-glasses.js +++ b/src/Umbraco.Web.UI.Client/src/packages/core/icon-registry/icons/icon-glasses.js @@ -1,4 +1,6 @@ -export default ` + + + + + + + +Google`; \ No newline at end of file diff --git a/src/Umbraco.Web.UI.Client/src/packages/core/icon-registry/icons/icon-gps.js b/src/Umbraco.Web.UI.Client/src/packages/core/icon-registry/icons/icon-gps.js index 24fb8f3795..53e8503d35 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/core/icon-registry/icons/icon-gps.js +++ b/src/Umbraco.Web.UI.Client/src/packages/core/icon-registry/icons/icon-gps.js @@ -1,4 +1,6 @@ -export default ` + + - - + + + `; \ No newline at end of file diff --git a/src/Umbraco.Web.UI.Client/src/packages/core/icon-registry/icons/icon-grid.js b/src/Umbraco.Web.UI.Client/src/packages/core/icon-registry/icons/icon-grid.js index aeea114f39..aedf88ec42 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/core/icon-registry/icons/icon-grid.js +++ b/src/Umbraco.Web.UI.Client/src/packages/core/icon-registry/icons/icon-grid.js @@ -1,4 +1,6 @@ -export default ` + + - - - + + + `; \ No newline at end of file diff --git a/src/Umbraco.Web.UI.Client/src/packages/core/icon-registry/icons/icon-hand-active-alt.js b/src/Umbraco.Web.UI.Client/src/packages/core/icon-registry/icons/icon-hand-active-alt.js index 6a95d7be84..706be7eb43 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/core/icon-registry/icons/icon-hand-active-alt.js +++ b/src/Umbraco.Web.UI.Client/src/packages/core/icon-registry/icons/icon-hand-active-alt.js @@ -1,4 +1,6 @@ -export default ` + + + + + + + + + + + + + + + - - - - + + + + `; \ No newline at end of file diff --git a/src/Umbraco.Web.UI.Client/src/packages/core/icon-registry/icons/icon-home.js b/src/Umbraco.Web.UI.Client/src/packages/core/icon-registry/icons/icon-home.js index cd0f80b394..1974c077bf 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/core/icon-registry/icons/icon-home.js +++ b/src/Umbraco.Web.UI.Client/src/packages/core/icon-registry/icons/icon-home.js @@ -1,4 +1,6 @@ -export default ` + + + + + + + + + + + + + + - + `; \ No newline at end of file diff --git a/src/Umbraco.Web.UI.Client/src/packages/core/icon-registry/icons/icon-keyboard.js b/src/Umbraco.Web.UI.Client/src/packages/core/icon-registry/icons/icon-keyboard.js index 5148588b9b..a3365d6441 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/core/icon-registry/icons/icon-keyboard.js +++ b/src/Umbraco.Web.UI.Client/src/packages/core/icon-registry/icons/icon-keyboard.js @@ -1,4 +1,6 @@ -export default ` + - - - - - - - - + + + + + + + + `; \ No newline at end of file diff --git a/src/Umbraco.Web.UI.Client/src/packages/core/icon-registry/icons/icon-lab.js b/src/Umbraco.Web.UI.Client/src/packages/core/icon-registry/icons/icon-lab.js index 8df04b6a8a..00f456df55 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/core/icon-registry/icons/icon-lab.js +++ b/src/Umbraco.Web.UI.Client/src/packages/core/icon-registry/icons/icon-lab.js @@ -1,4 +1,6 @@ -export default ` + + + + + - - - + + + + `; \ No newline at end of file diff --git a/src/Umbraco.Web.UI.Client/src/packages/core/icon-registry/icons/icon-left-double-arrow.js b/src/Umbraco.Web.UI.Client/src/packages/core/icon-registry/icons/icon-left-double-arrow.js index 98e0cb1644..f3e9ab9897 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/core/icon-registry/icons/icon-left-double-arrow.js +++ b/src/Umbraco.Web.UI.Client/src/packages/core/icon-registry/icons/icon-left-double-arrow.js @@ -1,4 +1,6 @@ -export default ` + + + + + +`; \ No newline at end of file +export default ` + + + + + +`; \ No newline at end of file diff --git a/src/Umbraco.Web.UI.Client/src/packages/core/icon-registry/icons/icon-lightbulb.js b/src/Umbraco.Web.UI.Client/src/packages/core/icon-registry/icons/icon-lightbulb.js index 1d3d919677..8a6fef4f60 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/core/icon-registry/icons/icon-lightbulb.js +++ b/src/Umbraco.Web.UI.Client/src/packages/core/icon-registry/icons/icon-lightbulb.js @@ -1 +1,18 @@ -export default ``; \ No newline at end of file +export default ` + + + + + + + +`; \ No newline at end of file diff --git a/src/Umbraco.Web.UI.Client/src/packages/core/icon-registry/icons/icon-lightning.js b/src/Umbraco.Web.UI.Client/src/packages/core/icon-registry/icons/icon-lightning.js index 341687ce33..022e697902 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/core/icon-registry/icons/icon-lightning.js +++ b/src/Umbraco.Web.UI.Client/src/packages/core/icon-registry/icons/icon-lightning.js @@ -1,4 +1,6 @@ -export default ` + +LinkedIn`; \ No newline at end of file diff --git a/src/Umbraco.Web.UI.Client/src/packages/core/icon-registry/icons/icon-list.js b/src/Umbraco.Web.UI.Client/src/packages/core/icon-registry/icons/icon-list.js index 31f866f8b8..613cc60bff 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/core/icon-registry/icons/icon-list.js +++ b/src/Umbraco.Web.UI.Client/src/packages/core/icon-registry/icons/icon-list.js @@ -1,4 +1,6 @@ -export default ` + + +`; \ No newline at end of file +export default ` + + + + + + + +`; \ No newline at end of file diff --git a/src/Umbraco.Web.UI.Client/src/packages/core/icon-registry/icons/icon-location-near-me.js b/src/Umbraco.Web.UI.Client/src/packages/core/icon-registry/icons/icon-location-near-me.js index 8a504041fb..051fb9c134 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/core/icon-registry/icons/icon-location-near-me.js +++ b/src/Umbraco.Web.UI.Client/src/packages/core/icon-registry/icons/icon-location-near-me.js @@ -1 +1,16 @@ -export default ``; \ No newline at end of file +export default ` + + + + + +`; \ No newline at end of file diff --git a/src/Umbraco.Web.UI.Client/src/packages/core/icon-registry/icons/icon-location-nearby.js b/src/Umbraco.Web.UI.Client/src/packages/core/icon-registry/icons/icon-location-nearby.js index c3aa71b598..051fb9c134 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/core/icon-registry/icons/icon-location-nearby.js +++ b/src/Umbraco.Web.UI.Client/src/packages/core/icon-registry/icons/icon-location-nearby.js @@ -1,4 +1,6 @@ -export default ` + + + + + + + + + + + - - - + + + `; \ No newline at end of file diff --git a/src/Umbraco.Web.UI.Client/src/packages/core/icon-registry/icons/icon-mastodon.js b/src/Umbraco.Web.UI.Client/src/packages/core/icon-registry/icons/icon-mastodon.js new file mode 100644 index 0000000000..40c5f92c70 --- /dev/null +++ b/src/Umbraco.Web.UI.Client/src/packages/core/icon-registry/icons/icon-mastodon.js @@ -0,0 +1 @@ +export default `Mastodon`; \ No newline at end of file diff --git a/src/Umbraco.Web.UI.Client/src/packages/core/icon-registry/icons/icon-medal.js b/src/Umbraco.Web.UI.Client/src/packages/core/icon-registry/icons/icon-medal.js index e98b04fe65..784b7b26ad 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/core/icon-registry/icons/icon-medal.js +++ b/src/Umbraco.Web.UI.Client/src/packages/core/icon-registry/icons/icon-medal.js @@ -1,4 +1,6 @@ -export default ` + + + + + + + + + +Microsoft`; \ No newline at end of file diff --git a/src/Umbraco.Web.UI.Client/src/packages/core/icon-registry/icons/icon-mindmap.js b/src/Umbraco.Web.UI.Client/src/packages/core/icon-registry/icons/icon-mindmap.js index 3231454630..be05d90a8c 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/core/icon-registry/icons/icon-mindmap.js +++ b/src/Umbraco.Web.UI.Client/src/packages/core/icon-registry/icons/icon-mindmap.js @@ -1,4 +1,6 @@ -export default ` + + + + + + + +`; \ No newline at end of file +export default ` + + + + + +`; \ No newline at end of file diff --git a/src/Umbraco.Web.UI.Client/src/packages/core/icon-registry/icons/icon-music.js b/src/Umbraco.Web.UI.Client/src/packages/core/icon-registry/icons/icon-music.js index 079ec6aa06..aebc84b2c1 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/core/icon-registry/icons/icon-music.js +++ b/src/Umbraco.Web.UI.Client/src/packages/core/icon-registry/icons/icon-music.js @@ -1,4 +1,6 @@ -export default ` + + + + + + + + + +`; \ No newline at end of file +export default ` + + + + + +`; \ No newline at end of file diff --git a/src/Umbraco.Web.UI.Client/src/packages/core/icon-registry/icons/icon-navigation-up.js b/src/Umbraco.Web.UI.Client/src/packages/core/icon-registry/icons/icon-navigation-up.js index b190c33903..0c279351ba 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/core/icon-registry/icons/icon-navigation-up.js +++ b/src/Umbraco.Web.UI.Client/src/packages/core/icon-registry/icons/icon-navigation-up.js @@ -1,4 +1,6 @@ -export default ` + + + + + + + + + - + `; \ No newline at end of file diff --git a/src/Umbraco.Web.UI.Client/src/packages/core/icon-registry/icons/icon-nodes.js b/src/Umbraco.Web.UI.Client/src/packages/core/icon-registry/icons/icon-nodes.js index 12f312c95b..00b2ef7666 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/core/icon-registry/icons/icon-nodes.js +++ b/src/Umbraco.Web.UI.Client/src/packages/core/icon-registry/icons/icon-nodes.js @@ -1,4 +1,6 @@ -export default ` + + - - - - - + + + + + `; \ No newline at end of file diff --git a/src/Umbraco.Web.UI.Client/src/packages/core/icon-registry/icons/icon-notepad.js b/src/Umbraco.Web.UI.Client/src/packages/core/icon-registry/icons/icon-notepad.js index a55ebcfe29..1ed651b00a 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/core/icon-registry/icons/icon-notepad.js +++ b/src/Umbraco.Web.UI.Client/src/packages/core/icon-registry/icons/icon-notepad.js @@ -1,4 +1,6 @@ -export default ` + - - - - - + + + + + `; \ No newline at end of file diff --git a/src/Umbraco.Web.UI.Client/src/packages/core/icon-registry/icons/icon-old-key.js b/src/Umbraco.Web.UI.Client/src/packages/core/icon-registry/icons/icon-old-key.js index 15c3fd8918..6a9fe1fd69 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/core/icon-registry/icons/icon-old-key.js +++ b/src/Umbraco.Web.UI.Client/src/packages/core/icon-registry/icons/icon-old-key.js @@ -1,4 +1,6 @@ -export default ` + + + + + + + - - `; \ No newline at end of file diff --git a/src/Umbraco.Web.UI.Client/src/packages/core/icon-registry/icons/icon-outbox.js b/src/Umbraco.Web.UI.Client/src/packages/core/icon-registry/icons/icon-outbox.js index 8acfeaa240..b52c463e63 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/core/icon-registry/icons/icon-outbox.js +++ b/src/Umbraco.Web.UI.Client/src/packages/core/icon-registry/icons/icon-outbox.js @@ -1,4 +1,6 @@ -export default ` + + + - - + + diff --git a/src/Umbraco.Web.UI.Client/src/packages/core/icon-registry/icons/icon-page-down.js b/src/Umbraco.Web.UI.Client/src/packages/core/icon-registry/icons/icon-page-down.js index 642c8cef2e..1c86c40b04 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/core/icon-registry/icons/icon-page-down.js +++ b/src/Umbraco.Web.UI.Client/src/packages/core/icon-registry/icons/icon-page-down.js @@ -1,4 +1,6 @@ -export default ` + + - - + + `; \ No newline at end of file diff --git a/src/Umbraco.Web.UI.Client/src/packages/core/icon-registry/icons/icon-page-restricted.js b/src/Umbraco.Web.UI.Client/src/packages/core/icon-registry/icons/icon-page-restricted.js index 4a989a7211..7c35e29227 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/core/icon-registry/icons/icon-page-restricted.js +++ b/src/Umbraco.Web.UI.Client/src/packages/core/icon-registry/icons/icon-page-restricted.js @@ -1,4 +1,6 @@ -export default ` + - - - + + + `; \ No newline at end of file diff --git a/src/Umbraco.Web.UI.Client/src/packages/core/icon-registry/icons/icon-page-up.js b/src/Umbraco.Web.UI.Client/src/packages/core/icon-registry/icons/icon-page-up.js index feee56f7d2..bc7fff45d8 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/core/icon-registry/icons/icon-page-up.js +++ b/src/Umbraco.Web.UI.Client/src/packages/core/icon-registry/icons/icon-page-up.js @@ -1,4 +1,6 @@ -export default ` + + + - - - - + + + + `; \ No newline at end of file diff --git a/src/Umbraco.Web.UI.Client/src/packages/core/icon-registry/icons/icon-panel-show.js b/src/Umbraco.Web.UI.Client/src/packages/core/icon-registry/icons/icon-panel-show.js index 60f726746e..0a80011c64 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/core/icon-registry/icons/icon-panel-show.js +++ b/src/Umbraco.Web.UI.Client/src/packages/core/icon-registry/icons/icon-panel-show.js @@ -1,4 +1,6 @@ -export default ` + - - + + `; \ No newline at end of file diff --git a/src/Umbraco.Web.UI.Client/src/packages/core/icon-registry/icons/icon-pannel-close.js b/src/Umbraco.Web.UI.Client/src/packages/core/icon-registry/icons/icon-pannel-close.js index d77cf0fbd6..0c9617849b 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/core/icon-registry/icons/icon-pannel-close.js +++ b/src/Umbraco.Web.UI.Client/src/packages/core/icon-registry/icons/icon-pannel-close.js @@ -1,4 +1,6 @@ -export default ` + - - + + `; \ No newline at end of file diff --git a/src/Umbraco.Web.UI.Client/src/packages/core/icon-registry/icons/icon-paper-bag.js b/src/Umbraco.Web.UI.Client/src/packages/core/icon-registry/icons/icon-paper-bag.js index 9063c5eb6d..977a22fec4 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/core/icon-registry/icons/icon-paper-bag.js +++ b/src/Umbraco.Web.UI.Client/src/packages/core/icon-registry/icons/icon-paper-bag.js @@ -1,4 +1,6 @@ -export default ` + - + - - + - + + `; \ No newline at end of file diff --git a/src/Umbraco.Web.UI.Client/src/packages/core/icon-registry/icons/icon-paper-plane-alt.js b/src/Umbraco.Web.UI.Client/src/packages/core/icon-registry/icons/icon-paper-plane-alt.js index f0b5778aec..2bc0e4f053 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/core/icon-registry/icons/icon-paper-plane-alt.js +++ b/src/Umbraco.Web.UI.Client/src/packages/core/icon-registry/icons/icon-paper-plane-alt.js @@ -1,4 +1,6 @@ -export default ` + + + + + - - + + `; \ No newline at end of file diff --git a/src/Umbraco.Web.UI.Client/src/packages/core/icon-registry/icons/icon-pc.js b/src/Umbraco.Web.UI.Client/src/packages/core/icon-registry/icons/icon-pc.js index 8fd5a6c4cf..4f6d4caa2a 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/core/icon-registry/icons/icon-pc.js +++ b/src/Umbraco.Web.UI.Client/src/packages/core/icon-registry/icons/icon-pc.js @@ -1,4 +1,6 @@ -export default ` + + + + + + + + + + + + + + + + + + - + `; \ No newline at end of file diff --git a/src/Umbraco.Web.UI.Client/src/packages/core/icon-registry/icons/icon-playing-cards.js b/src/Umbraco.Web.UI.Client/src/packages/core/icon-registry/icons/icon-playing-cards.js index da7667d4ce..b635a2847d 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/core/icon-registry/icons/icon-playing-cards.js +++ b/src/Umbraco.Web.UI.Client/src/packages/core/icon-registry/icons/icon-playing-cards.js @@ -1,4 +1,6 @@ -export default ` + + + + - - + - + + `; \ No newline at end of file diff --git a/src/Umbraco.Web.UI.Client/src/packages/core/icon-registry/icons/icon-poll.js b/src/Umbraco.Web.UI.Client/src/packages/core/icon-registry/icons/icon-poll.js index 44d65f9fab..f2a8e62f0b 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/core/icon-registry/icons/icon-poll.js +++ b/src/Umbraco.Web.UI.Client/src/packages/core/icon-registry/icons/icon-poll.js @@ -1,4 +1,6 @@ -export default ` + + - - + + `; \ No newline at end of file diff --git a/src/Umbraco.Web.UI.Client/src/packages/core/icon-registry/icons/icon-power-outlet.js b/src/Umbraco.Web.UI.Client/src/packages/core/icon-registry/icons/icon-power-outlet.js index 400f9ee83b..195f503291 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/core/icon-registry/icons/icon-power-outlet.js +++ b/src/Umbraco.Web.UI.Client/src/packages/core/icon-registry/icons/icon-power-outlet.js @@ -1,4 +1,6 @@ -export default ` + + + + + + + +`; \ No newline at end of file +export default ` + + + + + + + +`; \ No newline at end of file diff --git a/src/Umbraco.Web.UI.Client/src/packages/core/icon-registry/icons/icon-print.js b/src/Umbraco.Web.UI.Client/src/packages/core/icon-registry/icons/icon-print.js index 03e53d1b9c..f3f6305ac2 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/core/icon-registry/icons/icon-print.js +++ b/src/Umbraco.Web.UI.Client/src/packages/core/icon-registry/icons/icon-print.js @@ -1,4 +1,6 @@ -export default ` + + + + + + + + + + + + + + + - + - + `; \ No newline at end of file diff --git a/src/Umbraco.Web.UI.Client/src/packages/core/icon-registry/icons/icon-reception.js b/src/Umbraco.Web.UI.Client/src/packages/core/icon-registry/icons/icon-reception.js index 5cb25ae766..5e4718d474 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/core/icon-registry/icons/icon-reception.js +++ b/src/Umbraco.Web.UI.Client/src/packages/core/icon-registry/icons/icon-reception.js @@ -1,4 +1,6 @@ -export default ` + - + diff --git a/src/Umbraco.Web.UI.Client/src/packages/core/icon-registry/icons/icon-record.js b/src/Umbraco.Web.UI.Client/src/packages/core/icon-registry/icons/icon-record.js index 1070a02dc6..e3b0d8dae3 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/core/icon-registry/icons/icon-record.js +++ b/src/Umbraco.Web.UI.Client/src/packages/core/icon-registry/icons/icon-record.js @@ -1,4 +1,6 @@ -export default ` + + + + + + + +`; \ No newline at end of file diff --git a/src/Umbraco.Web.UI.Client/src/packages/core/icon-registry/icons/icon-redo.js b/src/Umbraco.Web.UI.Client/src/packages/core/icon-registry/icons/icon-redo.js index effddccaee..3ded149884 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/core/icon-registry/icons/icon-redo.js +++ b/src/Umbraco.Web.UI.Client/src/packages/core/icon-registry/icons/icon-redo.js @@ -1,4 +1,6 @@ -export default ` + + + + + + +`; \ No newline at end of file +export default ` + + + + + + +`; \ No newline at end of file diff --git a/src/Umbraco.Web.UI.Client/src/packages/core/icon-registry/icons/icon-return-to-top.js b/src/Umbraco.Web.UI.Client/src/packages/core/icon-registry/icons/icon-return-to-top.js index feee56f7d2..bc7fff45d8 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/core/icon-registry/icons/icon-return-to-top.js +++ b/src/Umbraco.Web.UI.Client/src/packages/core/icon-registry/icons/icon-return-to-top.js @@ -1,4 +1,6 @@ -export default ` + + + + + + + + + + + - - - - - - - + + + + + + `; \ No newline at end of file diff --git a/src/Umbraco.Web.UI.Client/src/packages/core/icon-registry/icons/icon-screensharing.js b/src/Umbraco.Web.UI.Client/src/packages/core/icon-registry/icons/icon-screensharing.js index 8d73a967b4..1c1f33d1d1 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/core/icon-registry/icons/icon-screensharing.js +++ b/src/Umbraco.Web.UI.Client/src/packages/core/icon-registry/icons/icon-screensharing.js @@ -1,4 +1,6 @@ -export default ` + + + + + + + + + + + - - + - + + `; \ No newline at end of file diff --git a/src/Umbraco.Web.UI.Client/src/packages/core/icon-registry/icons/icon-share.js b/src/Umbraco.Web.UI.Client/src/packages/core/icon-registry/icons/icon-share.js index b9b4a789cd..6b827171ce 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/core/icon-registry/icons/icon-share.js +++ b/src/Umbraco.Web.UI.Client/src/packages/core/icon-registry/icons/icon-share.js @@ -1,4 +1,6 @@ -export default ` + + + - + `; \ No newline at end of file diff --git a/src/Umbraco.Web.UI.Client/src/packages/core/icon-registry/icons/icon-shift.js b/src/Umbraco.Web.UI.Client/src/packages/core/icon-registry/icons/icon-shift.js index 1ff14b0317..bcaeedb708 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/core/icon-registry/icons/icon-shift.js +++ b/src/Umbraco.Web.UI.Client/src/packages/core/icon-registry/icons/icon-shift.js @@ -1,4 +1,6 @@ -export default ` + + + + + - + - - + - + + `; \ No newline at end of file diff --git a/src/Umbraco.Web.UI.Client/src/packages/core/icon-registry/icons/icon-shopping-basket-alt.js b/src/Umbraco.Web.UI.Client/src/packages/core/icon-registry/icons/icon-shopping-basket-alt.js index 9063c5eb6d..977a22fec4 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/core/icon-registry/icons/icon-shopping-basket-alt.js +++ b/src/Umbraco.Web.UI.Client/src/packages/core/icon-registry/icons/icon-shopping-basket-alt.js @@ -1,4 +1,6 @@ -export default ` + - + - - + - + + `; \ No newline at end of file diff --git a/src/Umbraco.Web.UI.Client/src/packages/core/icon-registry/icons/icon-shopping-basket.js b/src/Umbraco.Web.UI.Client/src/packages/core/icon-registry/icons/icon-shopping-basket.js index 13d8e9da0b..8b165a8e83 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/core/icon-registry/icons/icon-shopping-basket.js +++ b/src/Umbraco.Web.UI.Client/src/packages/core/icon-registry/icons/icon-shopping-basket.js @@ -1,4 +1,6 @@ -export default ` + + + + + + + + + + + + + + + + - - + + `; \ No newline at end of file diff --git a/src/Umbraco.Web.UI.Client/src/packages/core/icon-registry/icons/icon-speaker.js b/src/Umbraco.Web.UI.Client/src/packages/core/icon-registry/icons/icon-speaker.js index 1f66be4f30..6e80fb1c1a 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/core/icon-registry/icons/icon-speaker.js +++ b/src/Umbraco.Web.UI.Client/src/packages/core/icon-registry/icons/icon-speaker.js @@ -1,4 +1,6 @@ -export default ` + - + + - + `; \ No newline at end of file diff --git a/src/Umbraco.Web.UI.Client/src/packages/core/icon-registry/icons/icon-speed-gauge.js b/src/Umbraco.Web.UI.Client/src/packages/core/icon-registry/icons/icon-speed-gauge.js index 0d4081e95e..69a710a79f 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/core/icon-registry/icons/icon-speed-gauge.js +++ b/src/Umbraco.Web.UI.Client/src/packages/core/icon-registry/icons/icon-speed-gauge.js @@ -1,4 +1,6 @@ -export default ` +`; \ No newline at end of file +export default ` + + + + + +`; \ No newline at end of file diff --git a/src/Umbraco.Web.UI.Client/src/packages/core/icon-registry/icons/icon-split.js b/src/Umbraco.Web.UI.Client/src/packages/core/icon-registry/icons/icon-split.js index 8fdb764692..15b1705a60 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/core/icon-registry/icons/icon-split.js +++ b/src/Umbraco.Web.UI.Client/src/packages/core/icon-registry/icons/icon-split.js @@ -1,4 +1,6 @@ -export default ` + + + + + + + + + + + - - - - - + + + + + `; \ No newline at end of file diff --git a/src/Umbraco.Web.UI.Client/src/packages/core/icon-registry/icons/icon-stream.js b/src/Umbraco.Web.UI.Client/src/packages/core/icon-registry/icons/icon-stream.js index da405aa047..0547f30284 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/core/icon-registry/icons/icon-stream.js +++ b/src/Umbraco.Web.UI.Client/src/packages/core/icon-registry/icons/icon-stream.js @@ -1,4 +1,6 @@ -export default ` + + + + + + + - - + + `; \ No newline at end of file diff --git a/src/Umbraco.Web.UI.Client/src/packages/core/icon-registry/icons/icon-tags.js b/src/Umbraco.Web.UI.Client/src/packages/core/icon-registry/icons/icon-tags.js index 75d1809bf3..d8ed5c1d4e 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/core/icon-registry/icons/icon-tags.js +++ b/src/Umbraco.Web.UI.Client/src/packages/core/icon-registry/icons/icon-tags.js @@ -1,4 +1,6 @@ -export default ` + - - + + `; \ No newline at end of file diff --git a/src/Umbraco.Web.UI.Client/src/packages/core/icon-registry/icons/icon-takeaway-cup.js b/src/Umbraco.Web.UI.Client/src/packages/core/icon-registry/icons/icon-takeaway-cup.js index 0fcd567622..f2a137df1f 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/core/icon-registry/icons/icon-takeaway-cup.js +++ b/src/Umbraco.Web.UI.Client/src/packages/core/icon-registry/icons/icon-takeaway-cup.js @@ -1,4 +1,6 @@ -export default ` + + + + + + - - - - - - - - + + + + + + + + `; \ No newline at end of file diff --git a/src/Umbraco.Web.UI.Client/src/packages/core/icon-registry/icons/icon-thumb-down.js b/src/Umbraco.Web.UI.Client/src/packages/core/icon-registry/icons/icon-thumb-down.js index 2f541cbcc4..724cb7842e 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/core/icon-registry/icons/icon-thumb-down.js +++ b/src/Umbraco.Web.UI.Client/src/packages/core/icon-registry/icons/icon-thumb-down.js @@ -1,4 +1,6 @@ -export default ` + + + + + + + + + + + + + + + + + - + `; \ No newline at end of file diff --git a/src/Umbraco.Web.UI.Client/src/packages/core/icon-registry/icons/icon-trophy.js b/src/Umbraco.Web.UI.Client/src/packages/core/icon-registry/icons/icon-trophy.js index 780a686f1c..e281a9bcc4 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/core/icon-registry/icons/icon-trophy.js +++ b/src/Umbraco.Web.UI.Client/src/packages/core/icon-registry/icons/icon-trophy.js @@ -1,4 +1,6 @@ -export default ` + + - - - + + - -`; \ No newline at end of file + +`; \ No newline at end of file diff --git a/src/Umbraco.Web.UI.Client/src/packages/core/icon-registry/icons/icon-tv-old.js b/src/Umbraco.Web.UI.Client/src/packages/core/icon-registry/icons/icon-tv-old.js index 533cfd97bb..786e9631f2 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/core/icon-registry/icons/icon-tv-old.js +++ b/src/Umbraco.Web.UI.Client/src/packages/core/icon-registry/icons/icon-tv-old.js @@ -1,4 +1,6 @@ -export default ` + +X`; \ No newline at end of file diff --git a/src/Umbraco.Web.UI.Client/src/packages/core/icon-registry/icons/icon-twitter.js b/src/Umbraco.Web.UI.Client/src/packages/core/icon-registry/icons/icon-twitter.js new file mode 100644 index 0000000000..3e61a109ac --- /dev/null +++ b/src/Umbraco.Web.UI.Client/src/packages/core/icon-registry/icons/icon-twitter.js @@ -0,0 +1,6 @@ +export default ` + Twitter + + +`; \ No newline at end of file diff --git a/src/Umbraco.Web.UI.Client/src/packages/core/icon-registry/icons/icon-umb-content.js b/src/Umbraco.Web.UI.Client/src/packages/core/icon-registry/icons/icon-umb-content.js index 8c9981cebe..cd8141f1e1 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/core/icon-registry/icons/icon-umb-content.js +++ b/src/Umbraco.Web.UI.Client/src/packages/core/icon-registry/icons/icon-umb-content.js @@ -1,4 +1,6 @@ -export default ` + - - + + `; \ No newline at end of file diff --git a/src/Umbraco.Web.UI.Client/src/packages/core/icon-registry/icons/icon-umb-developer.js b/src/Umbraco.Web.UI.Client/src/packages/core/icon-registry/icons/icon-umb-developer.js index f48531413f..dfea179621 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/core/icon-registry/icons/icon-umb-developer.js +++ b/src/Umbraco.Web.UI.Client/src/packages/core/icon-registry/icons/icon-umb-developer.js @@ -1,4 +1,6 @@ -export default ` + + + + - -`; \ No newline at end of file +export default ` + + +`; \ No newline at end of file diff --git a/src/Umbraco.Web.UI.Client/src/packages/core/icon-registry/icons/icon-umbrella.js b/src/Umbraco.Web.UI.Client/src/packages/core/icon-registry/icons/icon-umbrella.js index 0aa2999ca4..b9921dc5b9 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/core/icon-registry/icons/icon-umbrella.js +++ b/src/Umbraco.Web.UI.Client/src/packages/core/icon-registry/icons/icon-umbrella.js @@ -1,4 +1,6 @@ -export default ` + + + + + - - - - - - - + + + + + `; \ No newline at end of file diff --git a/src/Umbraco.Web.UI.Client/src/packages/core/icon-registry/icons/icon-usb.js b/src/Umbraco.Web.UI.Client/src/packages/core/icon-registry/icons/icon-usb.js index c1db3129ee..02020d222d 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/core/icon-registry/icons/icon-usb.js +++ b/src/Umbraco.Web.UI.Client/src/packages/core/icon-registry/icons/icon-usb.js @@ -1,4 +1,6 @@ -export default ` + + + + + + + + + + + - - + + `; \ No newline at end of file diff --git a/src/Umbraco.Web.UI.Client/src/packages/core/icon-registry/icons/icon-voice.js b/src/Umbraco.Web.UI.Client/src/packages/core/icon-registry/icons/icon-voice.js index 36a22721d2..d375d997d4 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/core/icon-registry/icons/icon-voice.js +++ b/src/Umbraco.Web.UI.Client/src/packages/core/icon-registry/icons/icon-voice.js @@ -1,4 +1,6 @@ -export default ` + + + - - - + + `; \ No newline at end of file diff --git a/src/Umbraco.Web.UI.Client/src/packages/core/icon-registry/icons/icon-wand.js b/src/Umbraco.Web.UI.Client/src/packages/core/icon-registry/icons/icon-wand.js index 6612df3c92..dc7a79a489 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/core/icon-registry/icons/icon-wand.js +++ b/src/Umbraco.Web.UI.Client/src/packages/core/icon-registry/icons/icon-wand.js @@ -1,4 +1,6 @@ -export default ` + - + diff --git a/src/Umbraco.Web.UI.Client/src/packages/core/icon-registry/icons/icon-webhook.js b/src/Umbraco.Web.UI.Client/src/packages/core/icon-registry/icons/icon-webhook.js index a9e0e0d542..65f708da6c 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/core/icon-registry/icons/icon-webhook.js +++ b/src/Umbraco.Web.UI.Client/src/packages/core/icon-registry/icons/icon-webhook.js @@ -1,4 +1,6 @@ -export default ` + + + + - - + - + + `; \ No newline at end of file diff --git a/src/Umbraco.Web.UI.Client/src/packages/core/icon-registry/icons/icon-window-popin.js b/src/Umbraco.Web.UI.Client/src/packages/core/icon-registry/icons/icon-window-popin.js index 7a5e8c2f12..58a1723833 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/core/icon-registry/icons/icon-window-popin.js +++ b/src/Umbraco.Web.UI.Client/src/packages/core/icon-registry/icons/icon-window-popin.js @@ -1,4 +1,6 @@ -export default ` + + - - - + + + `; \ No newline at end of file diff --git a/src/Umbraco.Web.UI.Client/src/packages/core/icon-registry/icons/icon-wine-glass.js b/src/Umbraco.Web.UI.Client/src/packages/core/icon-registry/icons/icon-wine-glass.js index 5ba02332ac..aef436cd09 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/core/icon-registry/icons/icon-wine-glass.js +++ b/src/Umbraco.Web.UI.Client/src/packages/core/icon-registry/icons/icon-wine-glass.js @@ -1,4 +1,6 @@ -export default ` + + + + - - + + diff --git a/src/Umbraco.Web.UI.Client/src/packages/core/icon-registry/icons/icon-zom-out.js b/src/Umbraco.Web.UI.Client/src/packages/core/icon-registry/icons/icon-zom-out.js index 543cbd2a87..c3acf3939a 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/core/icon-registry/icons/icon-zom-out.js +++ b/src/Umbraco.Web.UI.Client/src/packages/core/icon-registry/icons/icon-zom-out.js @@ -1,4 +1,6 @@ -export default ` + + + + Twitter + + diff --git a/src/Umbraco.Web.UI.Client/src/packages/core/icon-registry/svgs/icon-umbraco.svg b/src/Umbraco.Web.UI.Client/src/packages/core/icon-registry/svgs/icon-umbraco.svg index 0e121eebf3..1e69d80a4b 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/core/icon-registry/svgs/icon-umbraco.svg +++ b/src/Umbraco.Web.UI.Client/src/packages/core/icon-registry/svgs/icon-umbraco.svg @@ -1,3 +1,4 @@ - - - \ No newline at end of file + + + diff --git a/src/Umbraco.Web.UI.Client/src/packages/core/manifests.ts b/src/Umbraco.Web.UI.Client/src/packages/core/manifests.ts index 492e43c337..63bd854535 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/core/manifests.ts +++ b/src/Umbraco.Web.UI.Client/src/packages/core/manifests.ts @@ -1,3 +1,4 @@ +import { manifests as authManifests } from './auth/manifests.js'; import { manifests as collectionManifests } from './collection/manifests.js'; import { manifests as contentManifests } from './content/manifests.js'; import { manifests as contentTypeManifests } from './content-type/manifests.js'; @@ -9,6 +10,7 @@ import { manifests as localizationManifests } from './localization/manifests.js' import { manifests as modalManifests } from './modal/common/manifests.js'; import { manifests as propertyActionManifests } from './property-action/manifests.js'; import { manifests as propertyEditorManifests } from './property-editor/manifests.js'; +import { manifests as recycleBinManifests } from './recycle-bin/manifests.js'; import { manifests as sectionManifests } from './section/manifests.js'; import { manifests as serverFileSystemManifests } from './server-file-system/manifests.js'; import { manifests as settingsManifests } from './settings/manifests.js'; @@ -19,6 +21,7 @@ import { manifests as workspaceManifests } from './workspace/manifests.js'; import type { ManifestTypes, UmbBackofficeManifestKind } from './extension-registry/index.js'; export const manifests: Array = [ + ...authManifests, ...extensionManifests, ...cultureManifests, ...localizationManifests, @@ -36,4 +39,5 @@ export const manifests: Array = [ ...propertyActionManifests, ...serverFileSystemManifests, ...debugManifests, + ...recycleBinManifests, ]; diff --git a/src/Umbraco.Web.UI.Client/src/packages/core/modal/common/confirm/confirm-modal.controller.ts b/src/Umbraco.Web.UI.Client/src/packages/core/modal/common/confirm/confirm-modal.controller.ts index 61fb44d6a4..c950224cc1 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/core/modal/common/confirm/confirm-modal.controller.ts +++ b/src/Umbraco.Web.UI.Client/src/packages/core/modal/common/confirm/confirm-modal.controller.ts @@ -22,7 +22,6 @@ export class UmbConfirmModalController extends UmbControllerBase { // This is a one time off, so we can destroy our selfs. this.destroy(); - // Map back into UmbVariantId instances: return; } } diff --git a/src/Umbraco.Web.UI.Client/src/packages/core/modal/common/manifests.ts b/src/Umbraco.Web.UI.Client/src/packages/core/modal/common/manifests.ts index 8f79fa6818..e8c091fd3d 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/core/modal/common/manifests.ts +++ b/src/Umbraco.Web.UI.Client/src/packages/core/modal/common/manifests.ts @@ -5,31 +5,31 @@ const modals: Array = [ type: 'modal', alias: 'Umb.Modal.Confirm', name: 'Confirm Modal', - js: () => import('./confirm/confirm-modal.element.js'), + element: () => import('./confirm/confirm-modal.element.js'), }, { type: 'modal', alias: 'Umb.Modal.IconPicker', name: 'Icon Picker Modal', - js: () => import('./icon-picker/icon-picker-modal.element.js'), + element: () => import('./icon-picker/icon-picker-modal.element.js'), }, { type: 'modal', alias: 'Umb.Modal.LinkPicker', name: 'Link Picker Modal', - js: () => import('./link-picker/link-picker-modal.element.js'), + element: () => import('./link-picker/link-picker-modal.element.js'), }, { type: 'modal', alias: 'Umb.Modal.CodeEditor', name: 'Code Editor Modal', - js: () => import('./code-editor/code-editor-modal.element.js'), + element: () => import('./code-editor/code-editor-modal.element.js'), }, { type: 'modal', alias: 'Umb.Modal.EmbeddedMedia', name: 'Embedded Media Modal', - js: () => import('./embedded-media/embedded-media-modal.element.js'), + element: () => import('./embedded-media/embedded-media-modal.element.js'), }, { type: 'modal', diff --git a/src/Umbraco.Web.UI.Client/src/packages/core/modal/context/modal-manager.context.ts b/src/Umbraco.Web.UI.Client/src/packages/core/modal/context/modal-manager.context.ts index d923e06b0b..eb74e7deca 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/core/modal/context/modal-manager.context.ts +++ b/src/Umbraco.Web.UI.Client/src/packages/core/modal/context/modal-manager.context.ts @@ -12,6 +12,11 @@ export interface UmbModalConfig { key?: string; type?: UmbModalType; size?: UUIModalSidebarSize; + + /** + * Set the background property of the modal backdrop + */ + backdropBackground?: string; } export class UmbModalManagerContext extends UmbContextBase { diff --git a/src/Umbraco.Web.UI.Client/src/packages/core/modal/context/modal.context.ts b/src/Umbraco.Web.UI.Client/src/packages/core/modal/context/modal.context.ts index a22c2dd674..05d6220b7a 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/core/modal/context/modal.context.ts +++ b/src/Umbraco.Web.UI.Client/src/packages/core/modal/context/modal.context.ts @@ -32,6 +32,7 @@ export class UmbModalContext; @@ -51,10 +52,12 @@ export class UmbModalContext { +export interface UmbPickerModalData { multiple?: boolean; - hideTreeRoot?: boolean; - filter?: (item: TreeItemType) => boolean; - pickableFilter?: (item: TreeItemType) => boolean; + hideTreeRoot?: boolean; // TODO: this should be moved to a tree picker modal data interface + filter?: (item: ItemType) => boolean; + pickableFilter?: (item: ItemType) => boolean; } export interface UmbPickerModalValue { selection: Array; @@ -11,3 +11,5 @@ export interface UmbPickerModalValue { export interface UmbTreePickerModalData extends UmbPickerModalData { treeAlias?: string; } + +export interface UmbTreePickerModalValue extends UmbPickerModalValue {} diff --git a/src/Umbraco.Web.UI.Client/src/packages/core/property-editor/uis/multi-url-picker/property-editor-ui-multi-url-picker.element.ts b/src/Umbraco.Web.UI.Client/src/packages/core/property-editor/uis/multi-url-picker/property-editor-ui-multi-url-picker.element.ts index fe5de77170..a4602e52ef 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/core/property-editor/uis/multi-url-picker/property-editor-ui-multi-url-picker.element.ts +++ b/src/Umbraco.Web.UI.Client/src/packages/core/property-editor/uis/multi-url-picker/property-editor-ui-multi-url-picker.element.ts @@ -1,10 +1,10 @@ -import { UMB_PROPERTY_CONTEXT } from '@umbraco-cms/backoffice/property'; +import { UmbLitElement } from '../../../lit-element/index.js'; +import { UMB_PROPERTY_CONTEXT } from '../../../property/property/index.js'; import { html, customElement, property, state } from '@umbraco-cms/backoffice/external/lit'; import type { UUIModalSidebarSize } from '@umbraco-cms/backoffice/external/uui'; import type { UmbInputMultiUrlElement } from '@umbraco-cms/backoffice/components'; import type { UmbLinkPickerLink } from '@umbraco-cms/backoffice/modal'; import type { UmbPropertyEditorUiElement } from '@umbraco-cms/backoffice/extension-registry'; -import { UmbLitElement } from '@umbraco-cms/backoffice/lit-element'; import type { UmbPropertyEditorConfigCollection } from '@umbraco-cms/backoffice/property-editor'; /** diff --git a/src/Umbraco.Web.UI.Client/src/packages/core/property/property/property.element.ts b/src/Umbraco.Web.UI.Client/src/packages/core/property/property/property.element.ts index a337dc05a0..e6397911a7 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/core/property/property/property.element.ts +++ b/src/Umbraco.Web.UI.Client/src/packages/core/property/property/property.element.ts @@ -1,9 +1,8 @@ +import { umbExtensionsRegistry, type ManifestPropertyEditorUi } from '../../extension-registry/index.js'; import { UmbPropertyContext } from './property.context.js'; import { UmbTextStyles } from '@umbraco-cms/backoffice/style'; -import { css, html, customElement, property, state, ifDefined } from '@umbraco-cms/backoffice/external/lit'; +import { css, html, customElement, property, state, ifDefined, nothing } from '@umbraco-cms/backoffice/external/lit'; import { createExtensionElement } from '@umbraco-cms/backoffice/extension-api'; -import type { ManifestPropertyEditorUi } from '@umbraco-cms/backoffice/extension-registry'; -import { umbExtensionsRegistry } from '@umbraco-cms/backoffice/extension-registry'; import type { UmbObserverController } from '@umbraco-cms/backoffice/observable-api'; import { UmbLitElement } from '@umbraco-cms/backoffice/lit-element'; import type { @@ -288,12 +287,12 @@ export class UmbPropertyElement extends UmbLitElement { } private _renderPropertyActionMenu() { - return html`${this._propertyEditorUiAlias + return this._propertyEditorUiAlias ? html`` - : ''}`; + : nothing; } static styles = [ diff --git a/src/Umbraco.Web.UI.Client/src/packages/core/recycle-bin/entity-action/empty-recycle-bin/empty-recycle-bin.action.kind.ts b/src/Umbraco.Web.UI.Client/src/packages/core/recycle-bin/entity-action/empty-recycle-bin/empty-recycle-bin.action.kind.ts new file mode 100644 index 0000000000..de15a8826a --- /dev/null +++ b/src/Umbraco.Web.UI.Client/src/packages/core/recycle-bin/entity-action/empty-recycle-bin/empty-recycle-bin.action.kind.ts @@ -0,0 +1,21 @@ +import { UMB_ENTITY_ACTION_DEFAULT_KIND_MANIFEST } from '../../../entity-action/default/default.action.kind.js'; +import type { UmbBackofficeManifestKind } from '@umbraco-cms/backoffice/extension-registry'; + +export const manifest: UmbBackofficeManifestKind = { + type: 'kind', + alias: 'Umb.Kind.EntityAction.RecycleBin.Empty', + matchKind: 'emptyRecycleBin', + matchType: 'entityAction', + manifest: { + ...UMB_ENTITY_ACTION_DEFAULT_KIND_MANIFEST.manifest, + type: 'entityAction', + kind: 'emptyRecycleBin', + api: () => import('./empty-recycle-bin.action.js'), + weight: 100, + forEntityTypes: [], + meta: { + icon: 'icon-trash', + label: 'Empty Recycle Bin...', + }, + }, +}; diff --git a/src/Umbraco.Web.UI.Client/src/packages/core/recycle-bin/entity-action/empty-recycle-bin/empty-recycle-bin.action.ts b/src/Umbraco.Web.UI.Client/src/packages/core/recycle-bin/entity-action/empty-recycle-bin/empty-recycle-bin.action.ts new file mode 100644 index 0000000000..acc0562252 --- /dev/null +++ b/src/Umbraco.Web.UI.Client/src/packages/core/recycle-bin/entity-action/empty-recycle-bin/empty-recycle-bin.action.ts @@ -0,0 +1,46 @@ +import { UmbEntityActionBase } from '../../../entity-action/entity-action-base.js'; +import type { UmbRecycleBinRepository } from '../../recycle-bin-repository.interface.js'; +import { umbConfirmModal } from '@umbraco-cms/backoffice/modal'; +import { + createExtensionApiByAlias, + type MetaEntityActionEmptyRecycleBinKind, +} from '@umbraco-cms/backoffice/extension-registry'; +import { UMB_ACTION_EVENT_CONTEXT } from '@umbraco-cms/backoffice/action'; +import { UmbReloadTreeItemChildrenRequestEntityActionEvent } from '@umbraco-cms/backoffice/tree'; + +/** + * Entity action for emptying the recycle bin. + * @export + * @class UmbEmptyRecycleBinEntityAction + * @extends {UmbEntityActionBase} + */ +export class UmbEmptyRecycleBinEntityAction extends UmbEntityActionBase { + /** + * Executes the action. + * @memberof UmbEmptyRecycleBinEntityAction + */ + async execute() { + await umbConfirmModal(this._host, { + headline: `Empty Recycle Bin`, + content: `When items are deleted from the recycle bin, they will be gone forever.`, + color: 'danger', + confirmLabel: 'Empty Recycle Bin', + }); + + const recycleBinRepository = await createExtensionApiByAlias( + this, + this.args.meta.recycleBinRepositoryAlias, + ); + await recycleBinRepository.requestEmpty(); + + const actionEventContext = await this.getContext(UMB_ACTION_EVENT_CONTEXT); + const event = new UmbReloadTreeItemChildrenRequestEntityActionEvent({ + unique: this.args.unique, + entityType: this.args.entityType, + }); + + actionEventContext.dispatchEvent(event); + } +} + +export { UmbEmptyRecycleBinEntityAction as api }; diff --git a/src/Umbraco.Web.UI.Client/src/packages/core/recycle-bin/entity-action/empty-recycle-bin/manifests.ts b/src/Umbraco.Web.UI.Client/src/packages/core/recycle-bin/entity-action/empty-recycle-bin/manifests.ts new file mode 100644 index 0000000000..89241384bb --- /dev/null +++ b/src/Umbraco.Web.UI.Client/src/packages/core/recycle-bin/entity-action/empty-recycle-bin/manifests.ts @@ -0,0 +1,3 @@ +import { manifest as emptyRecycleBinKindManifest } from './empty-recycle-bin.action.kind.js'; + +export const manifests = [emptyRecycleBinKindManifest]; diff --git a/src/Umbraco.Web.UI.Client/src/packages/core/recycle-bin/entity-action/index.ts b/src/Umbraco.Web.UI.Client/src/packages/core/recycle-bin/entity-action/index.ts new file mode 100644 index 0000000000..df73603f45 --- /dev/null +++ b/src/Umbraco.Web.UI.Client/src/packages/core/recycle-bin/entity-action/index.ts @@ -0,0 +1,3 @@ +export { UmbTrashEntityAction } from './trash/trash.action.js'; +export { UmbRestoreFromRecycleBinEntityAction } from './restore-from-recycle-bin/restore-from-recycle-bin.action.js'; +export { UmbEmptyRecycleBinEntityAction } from './empty-recycle-bin/empty-recycle-bin.action.js'; diff --git a/src/Umbraco.Web.UI.Client/src/packages/core/recycle-bin/entity-action/restore-from-recycle-bin/manifests.ts b/src/Umbraco.Web.UI.Client/src/packages/core/recycle-bin/entity-action/restore-from-recycle-bin/manifests.ts new file mode 100644 index 0000000000..04e5fa7111 --- /dev/null +++ b/src/Umbraco.Web.UI.Client/src/packages/core/recycle-bin/entity-action/restore-from-recycle-bin/manifests.ts @@ -0,0 +1,11 @@ +import { manifest as kindManifest } from './restore-from-recycle-bin.action.kind.js'; + +export const manifests = [ + kindManifest, + { + type: 'modal', + alias: 'Umb.Modal.RecycleBin.Restore', + name: 'Restore From Recycle Bin Modal', + element: () => import('./modal/restore-from-recycle-bin-modal.element.js'), + }, +]; diff --git a/src/Umbraco.Web.UI.Client/src/packages/core/recycle-bin/entity-action/restore-from-recycle-bin/modal/index.ts b/src/Umbraco.Web.UI.Client/src/packages/core/recycle-bin/entity-action/restore-from-recycle-bin/modal/index.ts new file mode 100644 index 0000000000..b4d1511566 --- /dev/null +++ b/src/Umbraco.Web.UI.Client/src/packages/core/recycle-bin/entity-action/restore-from-recycle-bin/modal/index.ts @@ -0,0 +1,2 @@ +export * from './restore-from-recycle-bin-modal.token.js'; +export * from './restore-from-recycle-bin-modal.element.js'; diff --git a/src/Umbraco.Web.UI.Client/src/packages/core/recycle-bin/entity-action/restore-from-recycle-bin/modal/restore-from-recycle-bin-modal.element.ts b/src/Umbraco.Web.UI.Client/src/packages/core/recycle-bin/entity-action/restore-from-recycle-bin/modal/restore-from-recycle-bin-modal.element.ts new file mode 100644 index 0000000000..6bcb071416 --- /dev/null +++ b/src/Umbraco.Web.UI.Client/src/packages/core/recycle-bin/entity-action/restore-from-recycle-bin/modal/restore-from-recycle-bin-modal.element.ts @@ -0,0 +1,192 @@ +import type { UmbRecycleBinRepository } from '../../../recycle-bin-repository.interface.js'; +import type { + UmbRestoreFromRecycleBinModalData, + UmbRestoreFromRecycleBinModalValue, +} from './restore-from-recycle-bin-modal.token.js'; +import type { PropertyValueMap } from '@umbraco-cms/backoffice/external/lit'; +import { html, customElement, state, css } from '@umbraco-cms/backoffice/external/lit'; +import { UmbTextStyles } from '@umbraco-cms/backoffice/style'; +import { UMB_MODAL_MANAGER_CONTEXT, UmbModalBaseElement } from '@umbraco-cms/backoffice/modal'; +import { createExtensionApiByAlias } from '@umbraco-cms/backoffice/extension-registry'; +import type { UmbItemRepository } from '@umbraco-cms/backoffice/repository'; + +const elementName = 'umb-restore-from-recycle-bin-modal'; + +@customElement(elementName) +export class UmbRestoreFromRecycleBinModalElement extends UmbModalBaseElement< + UmbRestoreFromRecycleBinModalData, + UmbRestoreFromRecycleBinModalValue +> { + @state() + _isAutomaticRestore = false; + + @state() + _restoreItem?: any; + + @state() + _destinationItem?: any; + + #recycleBinRepository?: UmbRecycleBinRepository; + + protected async firstUpdated(_changedProperties: PropertyValueMap | Map): Promise { + super.firstUpdated(_changedProperties); + if (!this.data?.unique) throw new Error('Cannot restore an item without a unique identifier.'); + + this._restoreItem = await this.#requestItem(this.data.unique); + const unique = await this.#requestAutomaticRestoreDestination(); + + if (unique !== undefined) { + this.setDestination(unique); + this._isAutomaticRestore = true; + } + } + + async setDestination(unique: string | null) { + // TODO: handle ROOT lookup. Currently, we can't look up the root in the item repository. + // This is a temp solution to show something in the UI. + if (unique === null) { + this._destinationItem = { + name: 'ROOT', + }; + + this.#setDestinationValue({ + unique: null, + entityType: 'unknown', + }); + } + + if (unique) { + this._destinationItem = await this.#requestItem(unique); + if (!this._destinationItem) throw new Error('Cant find destination item.'); + + this.#setDestinationValue({ + unique: this._destinationItem.unique, + entityType: this._destinationItem.entityType, + }); + } + } + + async #requestAutomaticRestoreDestination(): Promise { + if (!this.data?.unique) throw new Error('Cannot restore an item without a unique identifier.'); + if (!this.data?.recycleBinRepositoryAlias) + throw new Error('Cannot restore an item without a recycle bin repository alias.'); + + this.#recycleBinRepository = await createExtensionApiByAlias( + this, + this.data.recycleBinRepositoryAlias, + ); + + const { data } = await this.#recycleBinRepository.requestOriginalParent({ + unique: this.data.unique, + }); + + // only check for undefined because data can be null if the parent is the root + if (data !== undefined) { + return data ? data.unique : null; + } + + return undefined; + } + + async #requestItem(unique: string) { + if (!this.data?.itemRepositoryAlias) throw new Error('Cannot restore an item without an item repository alias.'); + + const itemRepository = await createExtensionApiByAlias>(this, this.data.itemRepositoryAlias); + const { data } = await itemRepository.requestItems([unique]); + + return data?.[0]; + } + + async #onSelectCustomDestination() { + if (!this.data?.pickerModal) throw new Error('Cannot select a destination without a picker modal.'); + + const modalManager = await this.getContext(UMB_MODAL_MANAGER_CONTEXT); + const modal = modalManager.open(this, this.data.pickerModal, { + data: { + multiple: false, + }, + }); + + const { selection } = await modal.onSubmit(); + + if (selection.length > 0) { + const unique = selection[0]; + this.setDestination(unique); + } + } + + async #onSubmit() { + if (!this.value.destination) throw new Error('Cannot restore an item without a destination.'); + if (!this.#recycleBinRepository) throw new Error('Cannot restore an item without a destination.'); + if (!this.data?.unique) throw new Error('Cannot restore an item without a unique identifier.'); + + const { error } = await this.#recycleBinRepository.requestRestore({ + unique: this.data.unique, + destination: { unique: this.value.destination.unique }, + }); + + if (!error) { + this._submitModal(); + } + } + + #setDestinationValue(destination: UmbRestoreFromRecycleBinModalValue['destination']) { + this.updateValue({ destination }); + } + + render() { + return html` + + + ${this._isAutomaticRestore + ? html` Restore ${this._restoreItem?.name} to ${this._destinationItem?.name}` + : this.#renderCustomSelectDestination()} + + ${this.#renderActions()} + + `; + } + + #renderCustomSelectDestination() { + return html` +

Cannot automatically restore this item.

+

There is no location where this item can be automatically restored. You can select a new location below.

+
Restore to:
+ ${this._destinationItem + ? html` + + (this._destinationItem = undefined)} label="Remove" + >${this.localize.term('general_remove')} + + ` + : html` Select location`} + `; + } + + #renderActions() { + return html` + + + `; + } + + static styles = [ + UmbTextStyles, + css` + #placeholder { + width: 100%; + } + `, + ]; +} + +export default UmbRestoreFromRecycleBinModalElement; + +declare global { + interface HTMLElementTagNameMap { + [elementName]: UmbRestoreFromRecycleBinModalElement; + } +} diff --git a/src/Umbraco.Web.UI.Client/src/packages/core/recycle-bin/entity-action/restore-from-recycle-bin/modal/restore-from-recycle-bin-modal.token.ts b/src/Umbraco.Web.UI.Client/src/packages/core/recycle-bin/entity-action/restore-from-recycle-bin/modal/restore-from-recycle-bin-modal.token.ts new file mode 100644 index 0000000000..63b94f4451 --- /dev/null +++ b/src/Umbraco.Web.UI.Client/src/packages/core/recycle-bin/entity-action/restore-from-recycle-bin/modal/restore-from-recycle-bin-modal.token.ts @@ -0,0 +1,29 @@ +import type { UmbPickerModalData, UmbPickerModalValue } from '@umbraco-cms/backoffice/modal'; +import { UmbModalToken } from '@umbraco-cms/backoffice/modal'; + +export interface UmbRestoreFromRecycleBinModalData { + unique: string; + entityType: string; + recycleBinRepositoryAlias: string; + itemRepositoryAlias: string; + pickerModal: UmbModalToken, UmbPickerModalValue> | string; +} + +export interface UmbRestoreFromRecycleBinModalValue { + destination: + | { + unique: string | null; + entityType: string; + } + | undefined; +} + +export const UMB_RESTORE_FROM_RECYCLE_BIN_MODAL = new UmbModalToken< + UmbRestoreFromRecycleBinModalData, + UmbRestoreFromRecycleBinModalValue +>('Umb.Modal.RecycleBin.Restore', { + modal: { + type: 'sidebar', + size: 'small', + }, +}); diff --git a/src/Umbraco.Web.UI.Client/src/packages/core/recycle-bin/entity-action/restore-from-recycle-bin/restore-from-recycle-bin.action.kind.ts b/src/Umbraco.Web.UI.Client/src/packages/core/recycle-bin/entity-action/restore-from-recycle-bin/restore-from-recycle-bin.action.kind.ts new file mode 100644 index 0000000000..18edd68da0 --- /dev/null +++ b/src/Umbraco.Web.UI.Client/src/packages/core/recycle-bin/entity-action/restore-from-recycle-bin/restore-from-recycle-bin.action.kind.ts @@ -0,0 +1,22 @@ +import { UMB_ENTITY_ACTION_DEFAULT_KIND_MANIFEST } from '../../../entity-action/default/default.action.kind.js'; +import type { UmbBackofficeManifestKind } from '@umbraco-cms/backoffice/extension-registry'; + +export const manifest: UmbBackofficeManifestKind = { + type: 'kind', + alias: 'Umb.Kind.EntityAction.RecycleBin.Restore', + matchKind: 'restoreFromRecycleBin', + matchType: 'entityAction', + manifest: { + ...UMB_ENTITY_ACTION_DEFAULT_KIND_MANIFEST.manifest, + type: 'entityAction', + kind: 'restoreFromRecycleBin', + api: () => import('./restore-from-recycle-bin.action.js'), + weight: 100, + forEntityTypes: [], + meta: { + icon: 'icon-undo', + label: 'Restore...', + pickerModal: '', + }, + }, +}; diff --git a/src/Umbraco.Web.UI.Client/src/packages/core/recycle-bin/entity-action/restore-from-recycle-bin/restore-from-recycle-bin.action.ts b/src/Umbraco.Web.UI.Client/src/packages/core/recycle-bin/entity-action/restore-from-recycle-bin/restore-from-recycle-bin.action.ts new file mode 100644 index 0000000000..699c4ce03e --- /dev/null +++ b/src/Umbraco.Web.UI.Client/src/packages/core/recycle-bin/entity-action/restore-from-recycle-bin/restore-from-recycle-bin.action.ts @@ -0,0 +1,49 @@ +import { UmbEntityActionBase } from '../../../entity-action/entity-action-base.js'; +import { UMB_RESTORE_FROM_RECYCLE_BIN_MODAL } from './modal/restore-from-recycle-bin-modal.token.js'; +import { UMB_MODAL_MANAGER_CONTEXT } from '@umbraco-cms/backoffice/modal'; +import { UmbRequestReloadStructureForEntityEvent } from '@umbraco-cms/backoffice/entity-action'; +import { UMB_ACTION_EVENT_CONTEXT } from '@umbraco-cms/backoffice/action'; +import type { MetaEntityActionRestoreFromRecycleBinKind } from '@umbraco-cms/backoffice/extension-registry'; + +/** + * Entity action for restoring an item from the recycle bin. + * @export + * @class UmbRestoreFromRecycleBinEntityAction + * @extends {UmbEntityActionBase} + */ +export class UmbRestoreFromRecycleBinEntityAction extends UmbEntityActionBase { + /** + * Executes the action. + * @memberof UmbRestoreFromRecycleBinEntityAction + */ + async execute() { + if (!this.args.unique) throw new Error('Cannot restore an item without a unique identifier.'); + + const modalManager = await this.getContext(UMB_MODAL_MANAGER_CONTEXT); + const modal = modalManager.open(this, UMB_RESTORE_FROM_RECYCLE_BIN_MODAL, { + data: { + unique: this.args.unique, + entityType: this.args.entityType, + recycleBinRepositoryAlias: this.args.meta.recycleBinRepositoryAlias, + itemRepositoryAlias: this.args.meta.itemRepositoryAlias, + pickerModal: this.args.meta.pickerModal, + }, + }); + + const { destination } = await modal.onSubmit(); + if (!destination) throw new Error('Cannot reload the structure without a destination.'); + + const actionEventContext = await this.getContext(UMB_ACTION_EVENT_CONTEXT); + const event = new UmbRequestReloadStructureForEntityEvent({ + unique: this.args.unique, + entityType: this.args.entityType, + }); + + actionEventContext.dispatchEvent(event); + + // TODO: reload destination + console.log(destination.unique, destination.entityType); + } +} + +export { UmbRestoreFromRecycleBinEntityAction as api }; diff --git a/src/Umbraco.Web.UI.Client/src/packages/core/entity-action/common/trash/manifests.ts b/src/Umbraco.Web.UI.Client/src/packages/core/recycle-bin/entity-action/trash/manifests.ts similarity index 100% rename from src/Umbraco.Web.UI.Client/src/packages/core/entity-action/common/trash/manifests.ts rename to src/Umbraco.Web.UI.Client/src/packages/core/recycle-bin/entity-action/trash/manifests.ts diff --git a/src/Umbraco.Web.UI.Client/src/packages/core/entity-action/common/trash/trash.action.kind.ts b/src/Umbraco.Web.UI.Client/src/packages/core/recycle-bin/entity-action/trash/trash.action.kind.ts similarity index 72% rename from src/Umbraco.Web.UI.Client/src/packages/core/entity-action/common/trash/trash.action.kind.ts rename to src/Umbraco.Web.UI.Client/src/packages/core/recycle-bin/entity-action/trash/trash.action.kind.ts index beb3103a7b..32aac57159 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/core/entity-action/common/trash/trash.action.kind.ts +++ b/src/Umbraco.Web.UI.Client/src/packages/core/recycle-bin/entity-action/trash/trash.action.kind.ts @@ -1,4 +1,4 @@ -import { UMB_ENTITY_ACTION_DEFAULT_KIND_MANIFEST } from '../../default/default.action.kind.js'; +import { UMB_ENTITY_ACTION_DEFAULT_KIND_MANIFEST } from '../../../entity-action/default/default.action.kind.js'; import type { UmbBackofficeManifestKind } from '@umbraco-cms/backoffice/extension-registry'; export const manifest: UmbBackofficeManifestKind = { @@ -11,13 +11,13 @@ export const manifest: UmbBackofficeManifestKind = { type: 'entityAction', kind: 'trash', api: () => import('./trash.action.js'), - weight: 900, + weight: 1150, forEntityTypes: [], meta: { icon: 'icon-trash', - label: 'Trash', + label: '#actions_trash', itemRepositoryAlias: '', - trashRepositoryAlias: '', + recycleBinRepositoryAlias: '', }, }, }; diff --git a/src/Umbraco.Web.UI.Client/src/packages/core/recycle-bin/entity-action/trash/trash.action.ts b/src/Umbraco.Web.UI.Client/src/packages/core/recycle-bin/entity-action/trash/trash.action.ts new file mode 100644 index 0000000000..14e29f7f11 --- /dev/null +++ b/src/Umbraco.Web.UI.Client/src/packages/core/recycle-bin/entity-action/trash/trash.action.ts @@ -0,0 +1,59 @@ +import { UmbEntityActionBase } from '../../../entity-action/entity-action-base.js'; +import { UmbRequestReloadStructureForEntityEvent } from '../../../entity-action/request-reload-structure-for-entity.event.js'; +import type { UmbRecycleBinRepository } from '../../recycle-bin-repository.interface.js'; +import type { MetaEntityActionTrashKind } from '@umbraco-cms/backoffice/extension-registry'; +import { createExtensionApiByAlias } from '@umbraco-cms/backoffice/extension-registry'; +import { umbConfirmModal } from '@umbraco-cms/backoffice/modal'; +import type { UmbItemRepository } from '@umbraco-cms/backoffice/repository'; +import { UMB_ACTION_EVENT_CONTEXT } from '@umbraco-cms/backoffice/action'; + +/** + * Entity action for trashing an item. + * @export + * @class UmbTrashEntityAction + * @extends {UmbEntityActionBase} + */ +export class UmbTrashEntityAction extends UmbEntityActionBase { + /** + * Executes the action. + * @memberof UmbTrashEntityAction + */ + async execute() { + if (!this.args.unique) throw new Error('Cannot trash an item without a unique identifier.'); + + const itemRepository = await createExtensionApiByAlias>( + this, + this.args.meta.itemRepositoryAlias, + ); + + const { data } = await itemRepository.requestItems([this.args.unique]); + const item = data?.[0]; + if (!item) throw new Error('Item not found.'); + + // TODO: handle items with variants + await umbConfirmModal(this._host, { + headline: `Trash`, + content: `Are you sure you want to move ${item.name} to the recycle bin?`, + color: 'danger', + confirmLabel: 'Trash', + }); + + const recycleBinRepository = await createExtensionApiByAlias( + this, + this.args.meta.recycleBinRepositoryAlias, + ); + await recycleBinRepository.requestTrash({ unique: this.args.unique }); + + const actionEventContext = await this.getContext(UMB_ACTION_EVENT_CONTEXT); + const event = new UmbRequestReloadStructureForEntityEvent({ + unique: this.args.unique, + entityType: this.args.entityType, + }); + + actionEventContext.dispatchEvent(event); + + // TODO: reload destination + } +} + +export { UmbTrashEntityAction as api }; diff --git a/src/Umbraco.Web.UI.Client/src/packages/core/recycle-bin/index.ts b/src/Umbraco.Web.UI.Client/src/packages/core/recycle-bin/index.ts new file mode 100644 index 0000000000..4cb027b622 --- /dev/null +++ b/src/Umbraco.Web.UI.Client/src/packages/core/recycle-bin/index.ts @@ -0,0 +1,14 @@ +export { UmbRecycleBinRepositoryBase } from './recycle-bin-repository-base.js'; +export { + UmbTrashEntityAction, + UmbRestoreFromRecycleBinEntityAction, + UmbEmptyRecycleBinEntityAction, +} from './entity-action/index.js'; + +export type { UmbRecycleBinDataSource } from './recycle-bin-data-source.interface.js'; +export type { UmbRecycleBinRepository } from './recycle-bin-repository.interface.js'; +export type { + UmbRecycleBinRestoreRequestArgs, + UmbRecycleBinTrashRequestArgs, + UmbRecycleBinOriginalParentRequestArgs, +} from './types.js'; diff --git a/src/Umbraco.Web.UI.Client/src/packages/core/recycle-bin/manifests.ts b/src/Umbraco.Web.UI.Client/src/packages/core/recycle-bin/manifests.ts new file mode 100644 index 0000000000..49e2d1fd73 --- /dev/null +++ b/src/Umbraco.Web.UI.Client/src/packages/core/recycle-bin/manifests.ts @@ -0,0 +1,9 @@ +import { manifests as trashEntityActionManifests } from '../recycle-bin/entity-action/trash/manifests.js'; +import { manifests as restoreFromRecycleBinEntityActionManifests } from '../recycle-bin/entity-action/restore-from-recycle-bin/manifests.js'; +import { manifests as emptyRecycleBinEntityActionManifests } from '../recycle-bin/entity-action/empty-recycle-bin/manifests.js'; + +export const manifests = [ + ...trashEntityActionManifests, + ...restoreFromRecycleBinEntityActionManifests, + ...emptyRecycleBinEntityActionManifests, +]; diff --git a/src/Umbraco.Web.UI.Client/src/packages/core/recycle-bin/recycle-bin-data-source.interface.ts b/src/Umbraco.Web.UI.Client/src/packages/core/recycle-bin/recycle-bin-data-source.interface.ts new file mode 100644 index 0000000000..8d381a83c9 --- /dev/null +++ b/src/Umbraco.Web.UI.Client/src/packages/core/recycle-bin/recycle-bin-data-source.interface.ts @@ -0,0 +1,18 @@ +import type { + UmbRecycleBinOriginalParentRequestArgs, + UmbRecycleBinRestoreRequestArgs, + UmbRecycleBinTrashRequestArgs, +} from './types.js'; +import type { UmbControllerHost } from '@umbraco-cms/backoffice/controller-api'; +import type { UmbDataSourceResponse } from '@umbraco-cms/backoffice/repository'; + +export interface UmbRecycleBinDataSourceConstructor { + new (host: UmbControllerHost): UmbRecycleBinDataSource; +} + +export interface UmbRecycleBinDataSource { + trash(args: UmbRecycleBinTrashRequestArgs): Promise; + restore(args: UmbRecycleBinRestoreRequestArgs): Promise; + empty(): Promise; + getOriginalParent(args: UmbRecycleBinOriginalParentRequestArgs): Promise; +} diff --git a/src/Umbraco.Web.UI.Client/src/packages/core/recycle-bin/recycle-bin-repository-base.ts b/src/Umbraco.Web.UI.Client/src/packages/core/recycle-bin/recycle-bin-repository-base.ts new file mode 100644 index 0000000000..1dd19e0809 --- /dev/null +++ b/src/Umbraco.Web.UI.Client/src/packages/core/recycle-bin/recycle-bin-repository-base.ts @@ -0,0 +1,99 @@ +import type { UmbRecycleBinRepository } from './recycle-bin-repository.interface.js'; +import type { + UmbRecycleBinDataSource, + UmbRecycleBinDataSourceConstructor, +} from './recycle-bin-data-source.interface.js'; +import type { + UmbRecycleBinOriginalParentRequestArgs, + UmbRecycleBinRestoreRequestArgs, + UmbRecycleBinTrashRequestArgs, +} from './types.js'; +import { UMB_NOTIFICATION_CONTEXT } from '@umbraco-cms/backoffice/notification'; +import type { UmbControllerHost } from '@umbraco-cms/backoffice/controller-api'; +import { UmbRepositoryBase } from '@umbraco-cms/backoffice/repository'; + +/** + * Base class for recycle bin repositories. + * @export + * @abstract + * @class UmbRecycleBinRepositoryBase + * @extends {UmbRepositoryBase} + * @implements {UmbRecycleBinRepository} + */ +export abstract class UmbRecycleBinRepositoryBase extends UmbRepositoryBase implements UmbRecycleBinRepository { + #recycleBinSource: UmbRecycleBinDataSource; + + /** + * Creates an instance of UmbRecycleBinRepositoryBase. + * @param {UmbControllerHost} host + * @param {UmbRecycleBinDataSourceConstructor} recycleBinSource + * @memberof UmbRecycleBinRepositoryBase + */ + constructor(host: UmbControllerHost, recycleBinSource: UmbRecycleBinDataSourceConstructor) { + super(host); + this.#recycleBinSource = new recycleBinSource(this); + } + + /** + * Requests to trash an item. + * @param {UmbRecycleBinTrashRequestArgs} args + * @return {*} + * @memberof UmbRecycleBinRepositoryBase + */ + async requestTrash(args: UmbRecycleBinTrashRequestArgs) { + const { error } = await this.#recycleBinSource.trash(args); + + if (!error) { + const notificationContext = await this.getContext(UMB_NOTIFICATION_CONTEXT); + const notification = { data: { message: `Trashed` } }; + notificationContext.peek('positive', notification); + } + + return { error }; + } + + /** + * Requests to restore an item. + * @param {UmbRecycleBinRestoreRequestArgs} args + * @return {*} + * @memberof UmbRecycleBinRepositoryBase + */ + async requestRestore(args: UmbRecycleBinRestoreRequestArgs) { + const { error } = await this.#recycleBinSource.restore(args); + + if (!error) { + const notificationContext = await this.getContext(UMB_NOTIFICATION_CONTEXT); + const notification = { data: { message: `Restored` } }; + notificationContext.peek('positive', notification); + } + + return { error }; + } + + /** + * Requests to empty the recycle bin. + * @return {*} + * @memberof UmbRecycleBinRepositoryBase + */ + async requestEmpty() { + const { error } = await this.#recycleBinSource.empty(); + + if (!error) { + const notificationContext = await this.getContext(UMB_NOTIFICATION_CONTEXT); + const notification = { data: { message: `Recycle Bin Emptied` } }; + notificationContext.peek('positive', notification); + } + + return this.#recycleBinSource.empty(); + } + + /** + * Requests the original parent of an item. + * @param {UmbRecycleBinOriginalParentRequestArgs} args + * @return {*} + * @memberof UmbRecycleBinRepositoryBase + */ + async requestOriginalParent(args: UmbRecycleBinOriginalParentRequestArgs) { + return this.#recycleBinSource.getOriginalParent(args); + } +} diff --git a/src/Umbraco.Web.UI.Client/src/packages/core/recycle-bin/recycle-bin-repository.interface.ts b/src/Umbraco.Web.UI.Client/src/packages/core/recycle-bin/recycle-bin-repository.interface.ts new file mode 100644 index 0000000000..92a6d2ba9a --- /dev/null +++ b/src/Umbraco.Web.UI.Client/src/packages/core/recycle-bin/recycle-bin-repository.interface.ts @@ -0,0 +1,15 @@ +import type { UmbRepositoryBase } from '../repository/repository-base.js'; +import type { + UmbRecycleBinOriginalParentRequestArgs, + UmbRecycleBinRestoreRequestArgs, + UmbRecycleBinTrashRequestArgs, +} from './types.js'; +import type { UmbRepositoryErrorResponse, UmbRepositoryResponse } from '@umbraco-cms/backoffice/repository'; +import type { UmbApi } from '@umbraco-cms/backoffice/extension-api'; + +export interface UmbRecycleBinRepository extends UmbRepositoryBase, UmbApi { + requestTrash(args: UmbRecycleBinTrashRequestArgs): Promise; + requestRestore(args: UmbRecycleBinRestoreRequestArgs): Promise; + requestEmpty(): Promise; + requestOriginalParent(args: UmbRecycleBinOriginalParentRequestArgs): Promise>; +} diff --git a/src/Umbraco.Web.UI.Client/src/packages/core/recycle-bin/types.ts b/src/Umbraco.Web.UI.Client/src/packages/core/recycle-bin/types.ts new file mode 100644 index 0000000000..3a74c7c86f --- /dev/null +++ b/src/Umbraco.Web.UI.Client/src/packages/core/recycle-bin/types.ts @@ -0,0 +1,14 @@ +export interface UmbRecycleBinRestoreRequestArgs { + unique: string; + destination: { + unique: string | null; + }; +} + +export interface UmbRecycleBinTrashRequestArgs { + unique: string; +} + +export interface UmbRecycleBinOriginalParentRequestArgs { + unique: string; +} diff --git a/src/Umbraco.Web.UI.Client/src/packages/core/repository/index.ts b/src/Umbraco.Web.UI.Client/src/packages/core/repository/index.ts index 0002dac5a9..7557680428 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/core/repository/index.ts +++ b/src/Umbraco.Web.UI.Client/src/packages/core/repository/index.ts @@ -7,4 +7,4 @@ export * from './detail/index.js'; export type { UmbDataSourceResponse, UmbDataSourceErrorResponse } from './data-source-response.interface.js'; export type { UmbMoveDataSource, UmbMoveRepository } from './move/index.js'; export type { UmbDuplicateDataSource, UmbDuplicateRepository } from './duplicate/index.js'; -export type { UmbPagedModel } from './types.js'; +export type { UmbPagedModel, UmbRepositoryResponse, UmbRepositoryErrorResponse } from './types.js'; diff --git a/src/Umbraco.Web.UI.Client/src/packages/core/repository/item/item-repository-base.ts b/src/Umbraco.Web.UI.Client/src/packages/core/repository/item/item-repository-base.ts index d9b083893e..8fc9b78f12 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/core/repository/item/item-repository-base.ts +++ b/src/Umbraco.Web.UI.Client/src/packages/core/repository/item/item-repository-base.ts @@ -36,8 +36,8 @@ export class UmbItemRepositoryBase if (!uniques) throw new Error('Uniques are missing'); await this._init; - const { data, error } = await this.#itemSource.getItems(uniques); - + const { data, error: _error } = await this.#itemSource.getItems(uniques); + const error: any = _error; if (data) { this._itemStore!.appendItems(data); } diff --git a/src/Umbraco.Web.UI.Client/src/packages/core/resources/resource.controller.ts b/src/Umbraco.Web.UI.Client/src/packages/core/resources/resource.controller.ts index b7dc4e9992..5e62ce0486 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/core/resources/resource.controller.ts +++ b/src/Umbraco.Web.UI.Client/src/packages/core/resources/resource.controller.ts @@ -1,4 +1,5 @@ /* eslint-disable @typescript-eslint/no-explicit-any */ +import { UMB_AUTH_CONTEXT } from '../auth/index.js'; import { isApiError, isCancelError, isCancelablePromise } from './apiTypeValidators.function.js'; import { UMB_NOTIFICATION_CONTEXT, type UmbNotificationOptions } from '@umbraco-cms/backoffice/notification'; import type { UmbControllerHost } from '@umbraco-cms/backoffice/controller-api'; @@ -11,6 +12,8 @@ export class UmbResourceController extends UmbControllerBase { #notificationContext?: typeof UMB_NOTIFICATION_CONTEXT.TYPE; + #authContext?: typeof UMB_AUTH_CONTEXT.TYPE; + constructor(host: UmbControllerHost, promise: Promise, alias?: string) { super(host, alias); @@ -19,6 +22,10 @@ export class UmbResourceController extends UmbControllerBase { new UmbContextConsumerController(host, UMB_NOTIFICATION_CONTEXT, (_instance) => { this.#notificationContext = _instance; }); + + new UmbContextConsumerController(host, UMB_AUTH_CONTEXT, (_instance) => { + this.#authContext = _instance; + }); } hostConnected(): void { @@ -50,8 +57,8 @@ export class UmbResourceController extends UmbControllerBase { * If the executor function throws an error, then show the details in a notification. */ async tryExecuteAndNotify(options?: UmbNotificationOptions): Promise> { - const { data, error } = await UmbResourceController.tryExecute(this.#promise); - + const { data, error: _error } = await UmbResourceController.tryExecute(this.#promise); + const error: any = _error; if (error) { /** * Determine if we want to show a notification or just log the error to the console. @@ -78,21 +85,21 @@ export class UmbResourceController extends UmbControllerBase { // Go through the error status codes and act accordingly switch (error.status ?? 0) { - case 401: - // Unauthorized - console.log('Unauthorized'); - - // TODO: Do not remove the token here but instead let whatever is listening to the event decide what to do - localStorage.removeItem('umb:userAuthTokenResponse'); - - // TODO: Show a modal dialog to login either by bubbling an event to UmbAppElement or by showing a modal directly - this.#notificationContext?.peek('warning', { - data: { - headline: 'Session Expired', - message: 'Your session has expired. Please refresh the page.', - }, - }); + case 401: { + // See if we can get the UmbAuthContext and let it know the user is timed out + if (this.#authContext) { + this.#authContext.timeOut(); + } else { + // If we can't get the auth context, show a notification + this.#notificationContext?.peek('warning', { + data: { + headline: 'Session Expired', + message: 'Your session has expired. Please refresh the page.', + }, + }); + } break; + } case 500: // Server Error diff --git a/src/Umbraco.Web.UI.Client/src/packages/core/section/components/ref-section/ref-section.element.ts b/src/Umbraco.Web.UI.Client/src/packages/core/section/components/ref-section/ref-section.element.ts index 8b41537035..0b9892c507 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/core/section/components/ref-section/ref-section.element.ts +++ b/src/Umbraco.Web.UI.Client/src/packages/core/section/components/ref-section/ref-section.element.ts @@ -11,7 +11,7 @@ export class UmbRefSectionElement extends UmbElementMixin(UUIRefElement) { public render() { return html`
-
${this.item?.meta.label}
+
${this.item?.meta.label ? this.localize.string(this.item.meta.label) : this.item?.name}
diff --git a/src/Umbraco.Web.UI.Client/src/packages/core/section/section-main-views/section-main-views.element.ts b/src/Umbraco.Web.UI.Client/src/packages/core/section/section-main-views/section-main-views.element.ts index c8d639e8e7..6a7d3917b6 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/core/section/section-main-views/section-main-views.element.ts +++ b/src/Umbraco.Web.UI.Client/src/packages/core/section/section-main-views/section-main-views.element.ts @@ -97,7 +97,7 @@ export class UmbSectionMainViewElement extends UmbLitElement { }}> - ` + ` : html`${nothing}`; } @@ -107,17 +107,16 @@ export class UmbSectionMainViewElement extends UmbLitElement { ? html` ${this._dashboards.map((dashboard) => { - const dashboardName = dashboard.meta.label ?? dashboard.name; const dashboardPath = this.#constructDashboardPath(dashboard); return html` `; })} - ` + ` : ''; } @@ -127,7 +126,7 @@ export class UmbSectionMainViewElement extends UmbLitElement { ? html` ${this._views.map((view) => { - const viewName = view.meta.label ?? view.name; + const viewName = view.meta.label ? this.localize.string(view.meta.label) : view.name; const viewPath = this.#constructViewPath(view); return html` - ` + ` : ''; } diff --git a/src/Umbraco.Web.UI.Client/src/packages/core/server-file-system/rename/rename-server-file.action.kind.ts b/src/Umbraco.Web.UI.Client/src/packages/core/server-file-system/rename/rename-server-file.action.kind.ts index 7af4436044..f54bb2417c 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/core/server-file-system/rename/rename-server-file.action.kind.ts +++ b/src/Umbraco.Web.UI.Client/src/packages/core/server-file-system/rename/rename-server-file.action.kind.ts @@ -15,7 +15,7 @@ export const manifest: UmbBackofficeManifestKind = { forEntityTypes: [], meta: { icon: 'icon-edit', - label: 'Rename...', + label: '#actions_rename', renameRepositoryAlias: '', itemRepositoryAlias: '', }, diff --git a/src/Umbraco.Web.UI.Client/src/packages/core/settings/manifests.ts b/src/Umbraco.Web.UI.Client/src/packages/core/settings/manifests.ts index 73f0a117b6..803d177dbe 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/core/settings/manifests.ts +++ b/src/Umbraco.Web.UI.Client/src/packages/core/settings/manifests.ts @@ -9,7 +9,7 @@ export const manifests = [ name: 'Settings Section', weight: 400, meta: { - label: 'Settings', + label: '#sections_settings', pathname: 'settings', }, conditions: [ diff --git a/src/Umbraco.Web.UI.Client/src/packages/core/settings/welcome-dashboard/manifests.ts b/src/Umbraco.Web.UI.Client/src/packages/core/settings/welcome-dashboard/manifests.ts index 5865d480c2..5112dd2791 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/core/settings/welcome-dashboard/manifests.ts +++ b/src/Umbraco.Web.UI.Client/src/packages/core/settings/welcome-dashboard/manifests.ts @@ -6,7 +6,7 @@ export const manifests = [ element: () => import('./settings-welcome-dashboard.element.js'), weight: 500, meta: { - label: 'Welcome', + label: '#dashboardTabs_settingsWelcome', pathname: 'welcome', }, conditions: [ diff --git a/src/Umbraco.Web.UI.Client/src/packages/core/temporary-file/temporary-file.server.data-source.ts b/src/Umbraco.Web.UI.Client/src/packages/core/temporary-file/temporary-file.server.data-source.ts index 02d0335653..c5393ee8ff 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/core/temporary-file/temporary-file.server.data-source.ts +++ b/src/Umbraco.Web.UI.Client/src/packages/core/temporary-file/temporary-file.server.data-source.ts @@ -1,4 +1,4 @@ -import { TemporaryFileResource } from '@umbraco-cms/backoffice/external/backend-api'; +import { TemporaryFileService } from '@umbraco-cms/backoffice/external/backend-api'; import type { UmbControllerHost } from '@umbraco-cms/backoffice/controller-api'; import { tryExecuteAndNotify } from '@umbraco-cms/backoffice/resources'; @@ -30,7 +30,7 @@ export class UmbTemporaryFileServerDataSource { async create(id: string, file: File) { return tryExecuteAndNotify( this.#host, - TemporaryFileResource.postTemporaryFile({ + TemporaryFileService.postTemporaryFile({ formData: { Id: id, File: file, @@ -47,7 +47,7 @@ export class UmbTemporaryFileServerDataSource { */ read(id: string) { if (!id) throw new Error('Id is missing'); - return tryExecuteAndNotify(this.#host, TemporaryFileResource.getTemporaryFileById({ id })); + return tryExecuteAndNotify(this.#host, TemporaryFileService.getTemporaryFileById({ id })); } /** @@ -58,6 +58,6 @@ export class UmbTemporaryFileServerDataSource { */ delete(id: string) { if (!id) throw new Error('Id is missing'); - return tryExecuteAndNotify(this.#host, TemporaryFileResource.deleteTemporaryFileById({ id })); + return tryExecuteAndNotify(this.#host, TemporaryFileService.deleteTemporaryFileById({ id })); } } diff --git a/src/Umbraco.Web.UI.Client/src/packages/core/themes/manifests.ts b/src/Umbraco.Web.UI.Client/src/packages/core/themes/manifests.ts index 5491ef95e5..80de990440 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/core/themes/manifests.ts +++ b/src/Umbraco.Web.UI.Client/src/packages/core/themes/manifests.ts @@ -5,7 +5,7 @@ export const themes: Array = [ type: 'globalContext', alias: 'Umb.GlobalContext.Theme', name: 'Theme Context', - js: () => import('./theme.context.js'), + api: () => import('./theme.context.js'), }, { type: 'theme', diff --git a/src/Umbraco.Web.UI.Client/src/packages/core/themes/theme.context.ts b/src/Umbraco.Web.UI.Client/src/packages/core/themes/theme.context.ts index f411529ebb..cdc86b88eb 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/core/themes/theme.context.ts +++ b/src/Umbraco.Web.UI.Client/src/packages/core/themes/theme.context.ts @@ -34,9 +34,7 @@ export class UmbThemeContext extends UmbContextBase { if (themeAlias) { localStorage.setItem(LOCAL_STORAGE_KEY, themeAlias); this.#themeObserver = this.observe( - umbExtensionsRegistry - .byType('theme') - .pipe(map((extensions) => extensions.filter((extension) => extension.alias === themeAlias))), + umbExtensionsRegistry.byTypeAndFilter('theme', (extension) => extension.alias === themeAlias), async (themes) => { this.#styleElement?.remove(); if (themes.length > 0 && themes[0].css) { diff --git a/src/Umbraco.Web.UI.Client/src/packages/core/tree/data/tree-repository-base.ts b/src/Umbraco.Web.UI.Client/src/packages/core/tree/data/tree-repository-base.ts index 2409617d42..01a9abb68f 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/core/tree/data/tree-repository-base.ts +++ b/src/Umbraco.Web.UI.Client/src/packages/core/tree/data/tree-repository-base.ts @@ -4,6 +4,7 @@ import type { UmbTreeRepository } from './tree-repository.interface.js'; import type { UmbTreeDataSource, UmbTreeDataSourceConstructor } from './tree-data-source.interface.js'; import type { UmbTreeAncestorsOfRequestArgs } from './types.js'; import { UmbRepositoryBase } from '@umbraco-cms/backoffice/repository'; +import type { ProblemDetails } from '@umbraco-cms/backoffice/external/backend-api'; import type { UmbControllerHost } from '@umbraco-cms/backoffice/controller-api'; import type { UmbApi } from '@umbraco-cms/backoffice/extension-api'; import type { UmbContextToken } from '@umbraco-cms/backoffice/context-api'; @@ -28,7 +29,7 @@ export abstract class UmbTreeRepositoryBase< { protected _init: Promise; protected _treeStore?: UmbTreeStore; - #treeSource: UmbTreeDataSource; + protected _treeSource: UmbTreeDataSource; /** * Creates an instance of UmbTreeRepositoryBase. @@ -43,7 +44,7 @@ export abstract class UmbTreeRepositoryBase< treeStoreContextAlias: string | UmbContextToken, ) { super(host); - this.#treeSource = new treeSourceConstructor(this); + this._treeSource = new treeSourceConstructor(this); this._init = this.consumeContext(treeStoreContextAlias, (instance) => { this._treeStore = instance; @@ -55,7 +56,7 @@ export abstract class UmbTreeRepositoryBase< * @return {*} * @memberof UmbTreeRepositoryBase */ - abstract requestTreeRoot(): Promise<{ data?: TreeRootType; error?: Error }>; + abstract requestTreeRoot(): Promise<{ data?: TreeRootType; error?: ProblemDetails }>; /** * Requests root items of a tree @@ -65,8 +66,8 @@ export abstract class UmbTreeRepositoryBase< async requestRootTreeItems(args: any) { await this._init; - const { data, error } = await this.#treeSource.getRootItems(args); - + const { data, error: _error } = await this._treeSource.getRootItems(args); + const error: any = _error; if (data) { this._treeStore!.appendItems(data.items); } @@ -84,8 +85,8 @@ export abstract class UmbTreeRepositoryBase< if (args.parentUnique === undefined) throw new Error('Parent unique is missing'); await this._init; - const { data, error } = await this.#treeSource.getChildrenOf(args); - + const { data, error: _error } = await this._treeSource.getChildrenOf(args); + const error: any = _error; if (data) { this._treeStore!.appendItems(data.items); } @@ -103,8 +104,8 @@ export abstract class UmbTreeRepositoryBase< if (args.descendantUnique === undefined) throw new Error('Descendant unique is missing'); await this._init; - const { data, error } = await this.#treeSource.getAncestorsOf(args); - + const { data, error: _error } = await this._treeSource.getAncestorsOf(args); + const error: any = _error; // TODO: implement observable for ancestor items in the store return { data, error }; } diff --git a/src/Umbraco.Web.UI.Client/src/packages/core/tree/folder/entity-action/create-folder/create-folder.action.kind.ts b/src/Umbraco.Web.UI.Client/src/packages/core/tree/folder/entity-action/create-folder/create-folder.action.kind.ts index 4a03faa74f..6d3ec770bf 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/core/tree/folder/entity-action/create-folder/create-folder.action.kind.ts +++ b/src/Umbraco.Web.UI.Client/src/packages/core/tree/folder/entity-action/create-folder/create-folder.action.kind.ts @@ -16,7 +16,7 @@ export const manifest: UmbBackofficeManifestKind = { forEntityTypes: [], meta: { icon: 'icon-add', - label: 'Create folder...', + label: '#actions_folderCreate', }, }, }; diff --git a/src/Umbraco.Web.UI.Client/src/packages/core/tree/folder/entity-action/delete-folder/delete-folder.action.kind.ts b/src/Umbraco.Web.UI.Client/src/packages/core/tree/folder/entity-action/delete-folder/delete-folder.action.kind.ts index a737db6ff2..30677f4ba5 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/core/tree/folder/entity-action/delete-folder/delete-folder.action.kind.ts +++ b/src/Umbraco.Web.UI.Client/src/packages/core/tree/folder/entity-action/delete-folder/delete-folder.action.kind.ts @@ -16,7 +16,7 @@ export const manifest: UmbBackofficeManifestKind = { forEntityTypes: [], meta: { icon: 'icon-trash', - label: 'Delete Folder...', + label: '#actions_folderDelete', }, }, }; diff --git a/src/Umbraco.Web.UI.Client/src/packages/core/tree/folder/entity-action/update-folder/update-folder.action.kind.ts b/src/Umbraco.Web.UI.Client/src/packages/core/tree/folder/entity-action/update-folder/update-folder.action.kind.ts index a7390e4da4..39f62fcb10 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/core/tree/folder/entity-action/update-folder/update-folder.action.kind.ts +++ b/src/Umbraco.Web.UI.Client/src/packages/core/tree/folder/entity-action/update-folder/update-folder.action.kind.ts @@ -16,7 +16,7 @@ export const manifest: UmbBackofficeManifestKind = { forEntityTypes: [], meta: { icon: 'icon-edit', - label: 'Rename Folder...', + label: '#actions_folderRename', }, }, }; diff --git a/src/Umbraco.Web.UI.Client/src/packages/core/tree/reload-tree-item-children/reload-tree-item-children.action.kind.ts b/src/Umbraco.Web.UI.Client/src/packages/core/tree/reload-tree-item-children/reload-tree-item-children.action.kind.ts index 87e817a078..56906b23a9 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/core/tree/reload-tree-item-children/reload-tree-item-children.action.kind.ts +++ b/src/Umbraco.Web.UI.Client/src/packages/core/tree/reload-tree-item-children/reload-tree-item-children.action.kind.ts @@ -15,7 +15,7 @@ export const manifest: UmbBackofficeManifestKind = { forEntityTypes: [], meta: { icon: 'icon-refresh', - label: 'Reload children', + label: '#actions_refreshNode', }, }, }; diff --git a/src/Umbraco.Web.UI.Client/src/packages/core/tree/reload-tree-item-children/reload-tree-item-children.action.ts b/src/Umbraco.Web.UI.Client/src/packages/core/tree/reload-tree-item-children/reload-tree-item-children.action.ts index 16b21e69e3..d28f261947 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/core/tree/reload-tree-item-children/reload-tree-item-children.action.ts +++ b/src/Umbraco.Web.UI.Client/src/packages/core/tree/reload-tree-item-children/reload-tree-item-children.action.ts @@ -21,4 +21,5 @@ export class UmbReloadTreeItemChildrenEntityAction extends UmbEntityActionBase 0); this.pagination.setTotalItems(data.total); } @@ -209,8 +207,6 @@ export abstract class UmbTreeItemContextBase { @@ -299,28 +295,6 @@ export abstract class UmbTreeItemContextBase children.length > 0), - ); - - // observe if any children will be added runtime to a tree item. Nested items/folders etc. - this.observe(hasChildrenObservable, (hasChildren) => { - /* we need to skip the first value, because it will also return false until a child is in the store - we therefor rely on the value from the tree item itself */ - if (this.#hasChildrenInitValueFlag === true) { - this.#hasChildren.setValue(hasChildren); - } - this.#hasChildrenInitValueFlag = true; - }); - } - #onReloadRequest = (event: UmbEntityActionEvent) => { if (event.getUnique() !== this.unique) return; if (event.getEntityType() !== this.entityType) return; diff --git a/src/Umbraco.Web.UI.Client/src/packages/core/tree/tree-item/tree-item-base/tree-item-element-base.ts b/src/Umbraco.Web.UI.Client/src/packages/core/tree/tree-item/tree-item-base/tree-item-element-base.ts index fff0a03aeb..82f98b8a28 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/core/tree/tree-item/tree-item-base/tree-item-element-base.ts +++ b/src/Umbraco.Web.UI.Client/src/packages/core/tree/tree-item/tree-item-base/tree-item-element-base.ts @@ -117,7 +117,7 @@ export abstract class UmbTreeItemElementBase ${this.renderIconContainer()} ${this.renderLabel()} ${this.#renderActions()} ${this.#renderChildItems()} diff --git a/src/Umbraco.Web.UI.Client/src/packages/core/tree/tree-picker/manifests.ts b/src/Umbraco.Web.UI.Client/src/packages/core/tree/tree-picker/manifests.ts index 8bbb3ffe7d..fd500d4150 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/core/tree/tree-picker/manifests.ts +++ b/src/Umbraco.Web.UI.Client/src/packages/core/tree/tree-picker/manifests.ts @@ -3,6 +3,6 @@ export const manifests = [ type: 'modal', alias: 'Umb.Modal.TreePicker', name: 'Tree Picker Modal', - js: () => import('./tree-picker-modal.element.js'), + element: () => import('./tree-picker-modal.element.js'), }, ]; diff --git a/src/Umbraco.Web.UI.Client/src/packages/core/umbraco-package.ts b/src/Umbraco.Web.UI.Client/src/packages/core/umbraco-package.ts deleted file mode 100644 index 98bf5c8f3b..0000000000 --- a/src/Umbraco.Web.UI.Client/src/packages/core/umbraco-package.ts +++ /dev/null @@ -1,12 +0,0 @@ -import type { ManifestEntryPoint } from '@umbraco-cms/backoffice/extension-api'; - -export const name = 'Umbraco.Core'; -export const version = '0.0.1'; -export const extensions: Array = [ - { - name: 'Core Entry Point', - alias: 'Umb.EntryPoint.Core', - type: 'entryPoint', - js: () => import('./entry-point.js'), - }, -]; diff --git a/src/Umbraco.Web.UI.Client/src/packages/core/workspace/components/workspace-action-menu-item/default/workspace-action-menu-item.element.ts b/src/Umbraco.Web.UI.Client/src/packages/core/workspace/components/workspace-action-menu-item/default/workspace-action-menu-item.element.ts index b9314156d5..ce758395d0 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/core/workspace/components/workspace-action-menu-item/default/workspace-action-menu-item.element.ts +++ b/src/Umbraco.Web.UI.Client/src/packages/core/workspace/components/workspace-action-menu-item/default/workspace-action-menu-item.element.ts @@ -48,7 +48,9 @@ export class UmbWorkspaceActionMenuItemElement< render() { return html` diff --git a/src/Umbraco.Web.UI.Client/src/packages/core/workspace/components/workspace-action/common/submit/submit.action.ts b/src/Umbraco.Web.UI.Client/src/packages/core/workspace/components/workspace-action/common/submit/submit.action.ts index ce9c0b2509..1656a63439 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/core/workspace/components/workspace-action/common/submit/submit.action.ts +++ b/src/Umbraco.Web.UI.Client/src/packages/core/workspace/components/workspace-action/common/submit/submit.action.ts @@ -22,9 +22,7 @@ export class UmbSubmitWorkspaceAction extends UmbWorkspaceActionBase { // We can't save if we don't have a unique if (unique === undefined) { - this._isDisabled.setValue(true); - } else { - this._isDisabled.setValue(false); + this.disable(); } }, 'saveWorkspaceActionUniqueObserver', diff --git a/src/Umbraco.Web.UI.Client/src/packages/core/workspace/components/workspace-action/default/workspace-action.element.ts b/src/Umbraco.Web.UI.Client/src/packages/core/workspace/components/workspace-action/default/workspace-action.element.ts index 0411a498ff..acd21adda3 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/core/workspace/components/workspace-action/default/workspace-action.element.ts +++ b/src/Umbraco.Web.UI.Client/src/packages/core/workspace/components/workspace-action/default/workspace-action.element.ts @@ -1,6 +1,6 @@ import type { UmbWorkspaceAction } from '../workspace-action.interface.js'; import { UmbActionExecutedEvent } from '@umbraco-cms/backoffice/event'; -import { html, customElement, property, state } from '@umbraco-cms/backoffice/external/lit'; +import { html, customElement, property, state, ifDefined } from '@umbraco-cms/backoffice/external/lit'; import type { UUIButtonState } from '@umbraco-cms/backoffice/external/uui'; import { UmbLitElement } from '@umbraco-cms/backoffice/lit-element'; import type { @@ -118,7 +118,9 @@ export class UmbWorkspaceActionElement< @click=${this._onClick} look=${this.#manifest?.meta.look || 'default'} color=${this.#manifest?.meta.color || 'default'} - label=${this.#manifest?.meta.label || ''} + label=${ifDefined( + this.#manifest?.meta.label ? this.localize.string(this.#manifest.meta.label) : this.#manifest?.name, + )} .disabled=${this._isDisabled} .state=${this._buttonState}> public execute(): Promise { return Promise.resolve(); } + + /** + * Disables the action. + * @memberof UmbWorkspaceActionBase + */ + public disable(): void { + this._isDisabled.setValue(true); + } + + /** + * Enables the action. + * @memberof UmbWorkspaceActionBase + */ + public enable(): void { + this._isDisabled.setValue(false); + } } diff --git a/src/Umbraco.Web.UI.Client/src/packages/core/workspace/components/workspace-editor/workspace-editor.element.ts b/src/Umbraco.Web.UI.Client/src/packages/core/workspace/components/workspace-editor/workspace-editor.element.ts index a97eb4b5ed..0ab6de3fe3 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/core/workspace/components/workspace-editor/workspace-editor.element.ts +++ b/src/Umbraco.Web.UI.Client/src/packages/core/workspace/components/workspace-editor/workspace-editor.element.ts @@ -110,11 +110,11 @@ export class UmbWorkspaceEditorElement extends UmbLitElement { (view) => view.alias, (view) => html` - ${view.meta.label || view.name} + ${view.meta.label ? this.localize.string(view.meta.label) : view.name} `, )} diff --git a/src/Umbraco.Web.UI.Client/src/packages/data-type/collection/repository/data-type-collection.server.data-source.ts b/src/Umbraco.Web.UI.Client/src/packages/data-type/collection/repository/data-type-collection.server.data-source.ts index 558131b3e8..d323766736 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/data-type/collection/repository/data-type-collection.server.data-source.ts +++ b/src/Umbraco.Web.UI.Client/src/packages/data-type/collection/repository/data-type-collection.server.data-source.ts @@ -1,7 +1,7 @@ import type { UmbDataTypeCollectionFilterModel } from '../types.js'; import type { UmbDataTypeItemModel } from '../../repository/index.js'; import { tryExecuteAndNotify } from '@umbraco-cms/backoffice/resources'; -import { DataTypeResource } from '@umbraco-cms/backoffice/external/backend-api'; +import { DataTypeService } from '@umbraco-cms/backoffice/external/backend-api'; import type { UmbCollectionDataSource } from '@umbraco-cms/backoffice/collection'; import type { DataTypeItemResponseModel } from '@umbraco-cms/backoffice/external/backend-api'; import type { UmbControllerHost } from '@umbraco-cms/backoffice/controller-api'; @@ -39,7 +39,7 @@ export class UmbDataTypeCollectionServerDataSource implements UmbCollectionDataS * @DataTypeof UmbDataTypeCollectionServerDataSource */ async getCollection(filter: UmbDataTypeCollectionFilterModel) { - const { data, error } = await tryExecuteAndNotify(this.#host, DataTypeResource.getFilterDataType(filter)); + const { data, error } = await tryExecuteAndNotify(this.#host, DataTypeService.getFilterDataType(filter)); if (error) { return { error }; diff --git a/src/Umbraco.Web.UI.Client/src/packages/data-type/entity-actions/create/manifests.ts b/src/Umbraco.Web.UI.Client/src/packages/data-type/entity-actions/create/manifests.ts index b4ecb39f47..badd17d6a6 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/data-type/entity-actions/create/manifests.ts +++ b/src/Umbraco.Web.UI.Client/src/packages/data-type/entity-actions/create/manifests.ts @@ -5,7 +5,7 @@ import type { ManifestTypes } from '@umbraco-cms/backoffice/extension-registry'; const entityActions: Array = [ { type: 'entityAction', - kind: 'delete', + kind: 'default', alias: 'Umb.EntityAction.DataType.Create', name: 'Create Data Type Entity Action', weight: 1000, @@ -13,14 +13,14 @@ const entityActions: Array = [ forEntityTypes: [UMB_DATA_TYPE_ROOT_ENTITY_TYPE, UMB_DATA_TYPE_FOLDER_ENTITY_TYPE], meta: { icon: 'icon-add', - label: 'Create...', + label: '#actions_create', }, }, { type: 'modal', alias: 'Umb.Modal.DataTypeCreateOptions', name: 'Data Type Create Options Modal', - js: () => import('./modal/data-type-create-options-modal.element.js'), + element: () => import('./modal/data-type-create-options-modal.element.js'), }, ]; diff --git a/src/Umbraco.Web.UI.Client/src/packages/data-type/modals/manifests.ts b/src/Umbraco.Web.UI.Client/src/packages/data-type/modals/manifests.ts index d612586eaa..43db5752e0 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/data-type/modals/manifests.ts +++ b/src/Umbraco.Web.UI.Client/src/packages/data-type/modals/manifests.ts @@ -5,19 +5,19 @@ const modals: Array = [ type: 'modal', alias: 'Umb.Modal.PropertyEditorUiPicker', name: 'Property Editor UI Picker Modal', - js: () => import('./property-editor-ui-picker/property-editor-ui-picker-modal.element.js'), + element: () => import('./property-editor-ui-picker/property-editor-ui-picker-modal.element.js'), }, { type: 'modal', alias: 'Umb.Modal.DataTypePickerFlow', name: 'Data Type Picker Flow Modal', - js: () => import('./data-type-picker-flow/data-type-picker-flow-modal.element.js'), + element: () => import('./data-type-picker-flow/data-type-picker-flow-modal.element.js'), }, { type: 'modal', alias: 'Umb.Modal.DataTypePickerFlowDataTypePicker', name: 'Data Type Picker Flow UI Picker Modal', - js: () => import('./data-type-picker-flow/data-type-picker-flow-data-type-picker-modal.element.js'), + element: () => import('./data-type-picker-flow/data-type-picker-flow-data-type-picker-modal.element.js'), }, ]; diff --git a/src/Umbraco.Web.UI.Client/src/packages/data-type/repository/detail/data-type-detail.server.data-source.ts b/src/Umbraco.Web.UI.Client/src/packages/data-type/repository/detail/data-type-detail.server.data-source.ts index 67d697e9eb..0fbed19899 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/data-type/repository/detail/data-type-detail.server.data-source.ts +++ b/src/Umbraco.Web.UI.Client/src/packages/data-type/repository/detail/data-type-detail.server.data-source.ts @@ -6,7 +6,7 @@ import type { CreateDataTypeRequestModel, UpdateDataTypeRequestModel, } from '@umbraco-cms/backoffice/external/backend-api'; -import { DataTypeResource } from '@umbraco-cms/backoffice/external/backend-api'; +import { DataTypeService } from '@umbraco-cms/backoffice/external/backend-api'; import type { UmbControllerHost } from '@umbraco-cms/backoffice/controller-api'; import { tryExecuteAndNotify } from '@umbraco-cms/backoffice/resources'; @@ -57,7 +57,7 @@ export class UmbDataTypeServerDataSource implements UmbDetailDataSource) => DataTypeResource.getItemDataType({ id: uniques }); +const getItems = (uniques: Array) => DataTypeService.getItemDataType({ id: uniques }); const mapper = (item: DataTypeItemResponseModel): UmbDataTypeItemModel => { return { diff --git a/src/Umbraco.Web.UI.Client/src/packages/data-type/repository/move/data-type-move.server.data-source.ts b/src/Umbraco.Web.UI.Client/src/packages/data-type/repository/move/data-type-move.server.data-source.ts index bcbe3a9b25..8152c3e0c5 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/data-type/repository/move/data-type-move.server.data-source.ts +++ b/src/Umbraco.Web.UI.Client/src/packages/data-type/repository/move/data-type-move.server.data-source.ts @@ -1,4 +1,4 @@ -import { DataTypeResource } from '@umbraco-cms/backoffice/external/backend-api'; +import { DataTypeService } from '@umbraco-cms/backoffice/external/backend-api'; import type { UmbControllerHost } from '@umbraco-cms/backoffice/controller-api'; import { tryExecuteAndNotify } from '@umbraco-cms/backoffice/resources'; import type { UmbMoveDataSource } from '@umbraco-cms/backoffice/repository'; @@ -33,7 +33,7 @@ export class UmbDataTypeMoveServerDataSource implements UmbMoveDataSource { return tryExecuteAndNotify( this.#host, - DataTypeResource.putDataTypeByIdMove({ + DataTypeService.putDataTypeByIdMove({ id: unique, requestBody: { target: targetUnique ? { id: targetUnique } : null, diff --git a/src/Umbraco.Web.UI.Client/src/packages/data-type/tree/data-type-tree.repository.ts b/src/Umbraco.Web.UI.Client/src/packages/data-type/tree/data-type-tree.repository.ts index 8e1702f7ef..2c9f04fc7c 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/data-type/tree/data-type-tree.repository.ts +++ b/src/Umbraco.Web.UI.Client/src/packages/data-type/tree/data-type-tree.repository.ts @@ -18,7 +18,7 @@ export class UmbDataTypeTreeRepository const data: UmbDataTypeTreeRootModel = { unique: null, entityType: UMB_DATA_TYPE_ROOT_ENTITY_TYPE, - name: 'Data Types', + name: '#treeHeaders_dataTypes', hasChildren: true, isFolder: true, }; diff --git a/src/Umbraco.Web.UI.Client/src/packages/data-type/tree/data-type-tree.server.data-source.ts b/src/Umbraco.Web.UI.Client/src/packages/data-type/tree/data-type-tree.server.data-source.ts index 8063d1407f..add7e96529 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/data-type/tree/data-type-tree.server.data-source.ts +++ b/src/Umbraco.Web.UI.Client/src/packages/data-type/tree/data-type-tree.server.data-source.ts @@ -6,7 +6,7 @@ import type { } from '@umbraco-cms/backoffice/tree'; import { UmbTreeServerDataSourceBase } from '@umbraco-cms/backoffice/tree'; import type { DataTypeTreeItemResponseModel } from '@umbraco-cms/backoffice/external/backend-api'; -import { DataTypeResource } from '@umbraco-cms/backoffice/external/backend-api'; +import { DataTypeService } from '@umbraco-cms/backoffice/external/backend-api'; import type { UmbControllerHost } from '@umbraco-cms/backoffice/controller-api'; import { type ManifestPropertyEditorUi, umbExtensionsRegistry } from '@umbraco-cms/backoffice/extension-registry'; @@ -45,7 +45,7 @@ export class UmbDataTypeTreeServerDataSource extends UmbTreeServerDataSourceBase const getRootItems = async (args: UmbTreeRootItemsRequestArgs) => { // eslint-disable-next-line local-rules/no-direct-api-import - return DataTypeResource.getTreeDataTypeRoot({ skip: args.skip, take: args.take }); + return DataTypeService.getTreeDataTypeRoot({ skip: args.skip, take: args.take }); }; const getChildrenOf = (args: UmbTreeChildrenOfRequestArgs) => { @@ -53,7 +53,7 @@ const getChildrenOf = (args: UmbTreeChildrenOfRequestArgs) => { return getRootItems(args); } else { // eslint-disable-next-line local-rules/no-direct-api-import - return DataTypeResource.getTreeDataTypeChildren({ + return DataTypeService.getTreeDataTypeChildren({ parentId: args.parentUnique, skip: args.skip, take: args.take, @@ -63,7 +63,7 @@ const getChildrenOf = (args: UmbTreeChildrenOfRequestArgs) => { const getAncestorsOf = (args: UmbTreeAncestorsOfRequestArgs) => // eslint-disable-next-line local-rules/no-direct-api-import - DataTypeResource.getTreeDataTypeAncestors({ + DataTypeService.getTreeDataTypeAncestors({ descendantId: args.descendantUnique, }); diff --git a/src/Umbraco.Web.UI.Client/src/packages/data-type/tree/folder/data-type-folder.server.data-source.ts b/src/Umbraco.Web.UI.Client/src/packages/data-type/tree/folder/data-type-folder.server.data-source.ts index e5f5be8799..2068a8ac25 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/data-type/tree/folder/data-type-folder.server.data-source.ts +++ b/src/Umbraco.Web.UI.Client/src/packages/data-type/tree/folder/data-type-folder.server.data-source.ts @@ -1,5 +1,5 @@ import type { UmbCreateFolderModel, UmbFolderDataSource, UmbUpdateFolderModel } from '@umbraco-cms/backoffice/tree'; -import { DataTypeResource } from '@umbraco-cms/backoffice/external/backend-api'; +import { DataTypeService } from '@umbraco-cms/backoffice/external/backend-api'; import type { UmbControllerHost } from '@umbraco-cms/backoffice/controller-api'; import { tryExecuteAndNotify } from '@umbraco-cms/backoffice/resources'; @@ -32,7 +32,7 @@ export class UmbDataTypeFolderServerDataSource implements UmbFolderDataSource { const { data, error } = await tryExecuteAndNotify( this.#host, - DataTypeResource.getDataTypeFolderById({ + DataTypeService.getDataTypeFolderById({ id: unique, }), ); @@ -67,7 +67,7 @@ export class UmbDataTypeFolderServerDataSource implements UmbFolderDataSource { const { error } = await tryExecuteAndNotify( this.#host, - DataTypeResource.postDataTypeFolder({ + DataTypeService.postDataTypeFolder({ requestBody, }), ); @@ -91,7 +91,7 @@ export class UmbDataTypeFolderServerDataSource implements UmbFolderDataSource { const { error } = await tryExecuteAndNotify( this.#host, - DataTypeResource.putDataTypeFolderById({ + DataTypeService.putDataTypeFolderById({ id: args.unique, requestBody: { name: args.name }, }), @@ -114,7 +114,7 @@ export class UmbDataTypeFolderServerDataSource implements UmbFolderDataSource { if (!unique) throw new Error('Unique is missing'); return tryExecuteAndNotify( this.#host, - DataTypeResource.deleteDataTypeFolderById({ + DataTypeService.deleteDataTypeFolderById({ id: unique, }), ); diff --git a/src/Umbraco.Web.UI.Client/src/packages/data-type/tree/reload-tree-item-children/manifests.ts b/src/Umbraco.Web.UI.Client/src/packages/data-type/tree/reload-tree-item-children/manifests.ts index cf276f7dc6..c2a2ff3859 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/data-type/tree/reload-tree-item-children/manifests.ts +++ b/src/Umbraco.Web.UI.Client/src/packages/data-type/tree/reload-tree-item-children/manifests.ts @@ -8,6 +8,5 @@ export const manifests: Array = [ alias: 'Umb.EntityAction.DataType.Tree.ReloadChildrenOf', name: 'Reload Data Type Tree Item Children Entity Action', forEntityTypes: [UMB_DATA_TYPE_ROOT_ENTITY_TYPE, UMB_DATA_TYPE_FOLDER_ENTITY_TYPE], - meta: {}, }, ]; diff --git a/src/Umbraco.Web.UI.Client/src/packages/data-type/workspace/manifests.ts b/src/Umbraco.Web.UI.Client/src/packages/data-type/workspace/manifests.ts index a55a0207ae..75b3d6e5d0 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/data-type/workspace/manifests.ts +++ b/src/Umbraco.Web.UI.Client/src/packages/data-type/workspace/manifests.ts @@ -24,10 +24,10 @@ const workspaceViews: Array = [ type: 'workspaceView', alias: 'Umb.WorkspaceView.DataType.Edit', name: 'Data Type Workspace Edit View', - js: () => import('./views/details/data-type-details-workspace-view.element.js'), + element: () => import('./views/details/data-type-details-workspace-view.element.js'), weight: 90, meta: { - label: 'Details', + label: '#general_details', pathname: 'details', icon: 'edit', }, @@ -42,10 +42,10 @@ const workspaceViews: Array = [ type: 'workspaceView', alias: 'Umb.WorkspaceView.DataType.Info', name: 'Data Type Workspace Info View', - js: () => import('./views/info/workspace-view-data-type-info.element.js'), + element: () => import('./views/info/workspace-view-data-type-info.element.js'), weight: 90, meta: { - label: 'Info', + label: '#general_info', pathname: 'info', icon: 'info', }, @@ -66,7 +66,7 @@ const workspaceActions: Array = [ name: 'Save Data Type Workspace Action', api: UmbSubmitWorkspaceAction, meta: { - label: 'Save', + label: '#buttons_save', look: 'primary', color: 'positive', }, diff --git a/src/Umbraco.Web.UI.Client/src/packages/dictionary/collection/repository/dictionary-collection.server.data-source.ts b/src/Umbraco.Web.UI.Client/src/packages/dictionary/collection/repository/dictionary-collection.server.data-source.ts index f1c9e01e53..b19167af1a 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/dictionary/collection/repository/dictionary-collection.server.data-source.ts +++ b/src/Umbraco.Web.UI.Client/src/packages/dictionary/collection/repository/dictionary-collection.server.data-source.ts @@ -1,7 +1,7 @@ import type { UmbDictionaryCollectionFilterModel, UmbDictionaryCollectionModel } from '../types.js'; import { UMB_DICTIONARY_ENTITY_TYPE } from '../../entity.js'; import type { UmbCollectionDataSource } from '@umbraco-cms/backoffice/collection'; -import { DictionaryResource } from '@umbraco-cms/backoffice/external/backend-api'; +import { DictionaryService } from '@umbraco-cms/backoffice/external/backend-api'; import type { UmbControllerHost } from '@umbraco-cms/backoffice/controller-api'; import { tryExecuteAndNotify } from '@umbraco-cms/backoffice/resources'; @@ -30,7 +30,7 @@ export class UmbDictionaryCollectionServerDataSource implements UmbCollectionDat * @memberof UmbDictionaryCollectionServerDataSource */ async getCollection(filter: UmbDictionaryCollectionFilterModel) { - const { data, error } = await tryExecuteAndNotify(this.#host, DictionaryResource.getDictionary(filter)); + const { data, error } = await tryExecuteAndNotify(this.#host, DictionaryService.getDictionary(filter)); if (data) { const items = data.items.map((item) => { diff --git a/src/Umbraco.Web.UI.Client/src/packages/dictionary/dashboard/manifests.ts b/src/Umbraco.Web.UI.Client/src/packages/dictionary/dashboard/manifests.ts index 9c2bd689f9..7d8ca0164f 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/dictionary/dashboard/manifests.ts +++ b/src/Umbraco.Web.UI.Client/src/packages/dictionary/dashboard/manifests.ts @@ -8,7 +8,7 @@ const dashboards: Array = [ name: 'Dictionary Overview Dashboard', element: () => import('./dictionary-overview-dashboard.element.js'), meta: { - label: 'Dictionary overview', + label: '#dictionaryItem_overviewTitle', pathname: '', }, conditions: [ diff --git a/src/Umbraco.Web.UI.Client/src/packages/dictionary/entity-action/manifests.ts b/src/Umbraco.Web.UI.Client/src/packages/dictionary/entity-action/manifests.ts index e3503e1c88..e331dd3d01 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/dictionary/entity-action/manifests.ts +++ b/src/Umbraco.Web.UI.Client/src/packages/dictionary/entity-action/manifests.ts @@ -13,7 +13,7 @@ const entityActions: Array = [ forEntityTypes: [UMB_DICTIONARY_ENTITY_TYPE, UMB_DICTIONARY_ROOT_ENTITY_TYPE], meta: { icon: 'icon-add', - label: 'Create', + label: '#dictionary_createNew', }, }, { @@ -36,7 +36,7 @@ const entityActions: Array = [ forEntityTypes: [UMB_DICTIONARY_ENTITY_TYPE], meta: { icon: 'icon-download-alt', - label: 'Export', + label: '#actions_export', }, }, { @@ -49,7 +49,7 @@ const entityActions: Array = [ forEntityTypes: [UMB_DICTIONARY_ENTITY_TYPE, UMB_DICTIONARY_ROOT_ENTITY_TYPE], meta: { icon: 'icon-page-up', - label: 'Import', + label: '#actions_import', }, }, { diff --git a/src/Umbraco.Web.UI.Client/src/packages/dictionary/repository/detail/dictionary-detail.server.data-source.ts b/src/Umbraco.Web.UI.Client/src/packages/dictionary/repository/detail/dictionary-detail.server.data-source.ts index a41b6389f8..e77fa63992 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/dictionary/repository/detail/dictionary-detail.server.data-source.ts +++ b/src/Umbraco.Web.UI.Client/src/packages/dictionary/repository/detail/dictionary-detail.server.data-source.ts @@ -6,7 +6,7 @@ import type { CreateDictionaryItemRequestModel, UpdateDictionaryItemRequestModel, } from '@umbraco-cms/backoffice/external/backend-api'; -import { DictionaryResource } from '@umbraco-cms/backoffice/external/backend-api'; +import { DictionaryService } from '@umbraco-cms/backoffice/external/backend-api'; import type { UmbControllerHost } from '@umbraco-cms/backoffice/controller-api'; import { tryExecuteAndNotify } from '@umbraco-cms/backoffice/resources'; @@ -53,7 +53,7 @@ export class UmbDictionaryServerDataSource implements UmbDetailDataSource) => DictionaryResource.getItemDictionary({ id: uniques }); +const getItems = (uniques: Array) => DictionaryService.getItemDictionary({ id: uniques }); const mapper = (item: DictionaryItemItemResponseModel): UmbDictionaryItemModel => { return { diff --git a/src/Umbraco.Web.UI.Client/src/packages/dictionary/section/manifests.ts b/src/Umbraco.Web.UI.Client/src/packages/dictionary/section/manifests.ts index 9baccac979..2ae5954eab 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/dictionary/section/manifests.ts +++ b/src/Umbraco.Web.UI.Client/src/packages/dictionary/section/manifests.ts @@ -10,7 +10,7 @@ const section: ManifestSection = { name: 'Dictionary Section', weight: 100, meta: { - label: 'Dictionary', + label: '#sections_translation', pathname: 'dictionary', }, conditions: [ diff --git a/src/Umbraco.Web.UI.Client/src/packages/dictionary/tree/dictionary-tree.repository.ts b/src/Umbraco.Web.UI.Client/src/packages/dictionary/tree/dictionary-tree.repository.ts index 8e273e86ef..b772686501 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/dictionary/tree/dictionary-tree.repository.ts +++ b/src/Umbraco.Web.UI.Client/src/packages/dictionary/tree/dictionary-tree.repository.ts @@ -18,7 +18,7 @@ export class UmbDictionaryTreeRepository const data: UmbDictionaryTreeRootModel = { unique: null, entityType: UMB_DICTIONARY_ROOT_ENTITY_TYPE, - name: 'Dictionary', + name: '#treeHeaders_dictionary', hasChildren: true, isFolder: true, }; diff --git a/src/Umbraco.Web.UI.Client/src/packages/dictionary/tree/dictionary-tree.server.data-source.ts b/src/Umbraco.Web.UI.Client/src/packages/dictionary/tree/dictionary-tree.server.data-source.ts index 3cc46577e0..626ae02e76 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/dictionary/tree/dictionary-tree.server.data-source.ts +++ b/src/Umbraco.Web.UI.Client/src/packages/dictionary/tree/dictionary-tree.server.data-source.ts @@ -8,7 +8,7 @@ import type { import { UmbTreeServerDataSourceBase } from '@umbraco-cms/backoffice/tree'; import type { UmbControllerHost } from '@umbraco-cms/backoffice/controller-api'; import type { NamedEntityTreeItemResponseModel } from '@umbraco-cms/backoffice/external/backend-api'; -import { DictionaryResource } from '@umbraco-cms/backoffice/external/backend-api'; +import { DictionaryService } from '@umbraco-cms/backoffice/external/backend-api'; /** * A data source for the Dictionary tree that fetches data from the server @@ -37,14 +37,14 @@ export class UmbDictionaryTreeServerDataSource extends UmbTreeServerDataSourceBa const getRootItems = (args: UmbTreeRootItemsRequestArgs) => // eslint-disable-next-line local-rules/no-direct-api-import - DictionaryResource.getTreeDictionaryRoot({ skip: args.skip, take: args.take }); + DictionaryService.getTreeDictionaryRoot({ skip: args.skip, take: args.take }); const getChildrenOf = (args: UmbTreeChildrenOfRequestArgs) => { if (args.parentUnique === null) { return getRootItems(args); } else { // eslint-disable-next-line local-rules/no-direct-api-import - return DictionaryResource.getTreeDictionaryChildren({ + return DictionaryService.getTreeDictionaryChildren({ parentId: args.parentUnique, skip: args.skip, take: args.take, @@ -54,7 +54,7 @@ const getChildrenOf = (args: UmbTreeChildrenOfRequestArgs) => { const getAncestorsOf = (args: UmbTreeAncestorsOfRequestArgs) => // eslint-disable-next-line local-rules/no-direct-api-import - DictionaryResource.getTreeDictionaryAncestors({ + DictionaryService.getTreeDictionaryAncestors({ descendantId: args.descendantUnique, }); diff --git a/src/Umbraco.Web.UI.Client/src/packages/dictionary/workspace/manifests.ts b/src/Umbraco.Web.UI.Client/src/packages/dictionary/workspace/manifests.ts index e889ec34da..fb241d41d8 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/dictionary/workspace/manifests.ts +++ b/src/Umbraco.Web.UI.Client/src/packages/dictionary/workspace/manifests.ts @@ -25,7 +25,7 @@ const workspaceViews: Array = [ js: () => import('./views/workspace-view-dictionary-editor.element.js'), weight: 100, meta: { - label: 'Edit', + label: '#general_edit', pathname: 'edit', icon: 'edit', }, @@ -47,7 +47,7 @@ const workspaceActions: Array = [ weight: 90, api: UmbSubmitWorkspaceAction, meta: { - label: 'Save', + label: '#buttons_save', look: 'primary', color: 'positive', }, diff --git a/src/Umbraco.Web.UI.Client/src/packages/documents/dashboards/manifests.ts b/src/Umbraco.Web.UI.Client/src/packages/documents/dashboards/manifests.ts index 4d156accdd..6455ec0e8f 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/documents/dashboards/manifests.ts +++ b/src/Umbraco.Web.UI.Client/src/packages/documents/dashboards/manifests.ts @@ -5,10 +5,10 @@ const dashboards: Array = [ type: 'dashboard', alias: 'Umb.Dashboard.RedirectManagement', name: 'Redirect Management Dashboard', - js: () => import('./redirect-management/dashboard-redirect-management.element.js'), + element: () => import('./redirect-management/dashboard-redirect-management.element.js'), weight: 10, meta: { - label: 'Redirect Management', + label: '#dashboardTabs_contentRedirectManager', pathname: 'redirect-management', }, conditions: [ diff --git a/src/Umbraco.Web.UI.Client/src/packages/documents/dashboards/redirect-management/dashboard-redirect-management.element.ts b/src/Umbraco.Web.UI.Client/src/packages/documents/dashboards/redirect-management/dashboard-redirect-management.element.ts index 55c4451cfd..227cf67cca 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/documents/dashboards/redirect-management/dashboard-redirect-management.element.ts +++ b/src/Umbraco.Web.UI.Client/src/packages/documents/dashboards/redirect-management/dashboard-redirect-management.element.ts @@ -3,7 +3,7 @@ import { css, html, nothing, customElement, state, query, property } from '@umbr import { umbConfirmModal } from '@umbraco-cms/backoffice/modal'; import { UmbLitElement } from '@umbraco-cms/backoffice/lit-element'; import type { RedirectUrlResponseModel } from '@umbraco-cms/backoffice/external/backend-api'; -import { RedirectManagementResource, RedirectStatusModel } from '@umbraco-cms/backoffice/external/backend-api'; +import { RedirectManagementService, RedirectStatusModel } from '@umbraco-cms/backoffice/external/backend-api'; import { tryExecuteAndNotify } from '@umbraco-cms/backoffice/resources'; import { UmbTextStyles } from '@umbraco-cms/backoffice/style'; @@ -43,7 +43,7 @@ export class UmbDashboardRedirectManagementElement extends UmbLitElement { } async #getTrackerStatus() { - const { data } = await tryExecuteAndNotify(this, RedirectManagementResource.getRedirectManagementStatus()); + const { data } = await tryExecuteAndNotify(this, RedirectManagementService.getRedirectManagementStatus()); if (data && data.status) this._trackerEnabled = data.status === RedirectStatusModel.ENABLED ? true : false; } @@ -52,7 +52,7 @@ export class UmbDashboardRedirectManagementElement extends UmbLitElement { const skip = this.page * this.itemsPerPage - this.itemsPerPage; const { data } = await tryExecuteAndNotify( this, - RedirectManagementResource.getRedirectManagement({ filter, take: this.itemsPerPage, skip }), + RedirectManagementService.getRedirectManagement({ filter, take: this.itemsPerPage, skip }), ); if (!data) return; @@ -89,7 +89,7 @@ export class UmbDashboardRedirectManagementElement extends UmbLitElement { this.#redirectDelete(data.id!); } async #redirectDelete(id: string) { - const { error } = await tryExecuteAndNotify(this, RedirectManagementResource.deleteRedirectManagementById({ id })); + const { error } = await tryExecuteAndNotify(this, RedirectManagementService.deleteRedirectManagementById({ id })); if (error) return; this._redirectData = this._redirectData?.filter((x) => x.id !== id); @@ -129,7 +129,7 @@ export class UmbDashboardRedirectManagementElement extends UmbLitElement { const status = this._trackerEnabled ? RedirectStatusModel.DISABLED : RedirectStatusModel.ENABLED; const { error } = await tryExecuteAndNotify( this, - RedirectManagementResource.postRedirectManagementStatus({ status }), + RedirectManagementService.postRedirectManagementStatus({ status }), ); if (error) return; this._trackerEnabled = !this._trackerEnabled; @@ -173,10 +173,10 @@ export class UmbDashboardRedirectManagementElement extends UmbLitElement { ${this._redirectData?.length ? html` ${this._trackerEnabled ? '' : html`
`} ${this.#renderTable()} -
` + ` : this._filter !== undefined - ? this.#renderZeroResults() - : this.#renderNoRedirects()} + ? this.#renderZeroResults() + : this.#renderNoRedirects()} ${this.#renderPagination()}`; } diff --git a/src/Umbraco.Web.UI.Client/src/packages/documents/document-blueprints/entity-actions/create/create.action.ts b/src/Umbraco.Web.UI.Client/src/packages/documents/document-blueprints/entity-actions/create/create.action.ts new file mode 100644 index 0000000000..d5034e8d25 --- /dev/null +++ b/src/Umbraco.Web.UI.Client/src/packages/documents/document-blueprints/entity-actions/create/create.action.ts @@ -0,0 +1,33 @@ +import { UMB_DOCUMENT_BLUEPRINT_ENTITY_TYPE } from '../../entity.js'; +import { UMB_DOCUMENT_BLUEPRINT_CREATE_OPTIONS_MODAL } from './modal/index.js'; +import type { UmbEntityActionArgs } from '@umbraco-cms/backoffice/entity-action'; +import { UmbEntityActionBase } from '@umbraco-cms/backoffice/entity-action'; +import type { UmbControllerHost } from '@umbraco-cms/backoffice/controller-api'; +import { UMB_MODAL_MANAGER_CONTEXT } from '@umbraco-cms/backoffice/modal'; + +export class UmbCreateEntityAction extends UmbEntityActionBase { + constructor(host: UmbControllerHost, args: UmbEntityActionArgs) { + super(host, args); + } + + async execute() { + const modalManager = await this.getContext(UMB_MODAL_MANAGER_CONTEXT); + const modalContext = modalManager.open(this, UMB_DOCUMENT_BLUEPRINT_CREATE_OPTIONS_MODAL, { + data: { + parent: { + unique: this.args.unique, + entityType: this.args.entityType, + }, + }, + }); + + await modalContext.onSubmit().catch(() => undefined); + + const documentTypeUnique = modalContext.getValue().documentTypeUnique; + + const url = `section/settings/workspace/${UMB_DOCUMENT_BLUEPRINT_ENTITY_TYPE}/create/parent/${this.args.entityType}/${ + documentTypeUnique || 'null' + }`; + history.pushState(null, '', url); + } +} diff --git a/src/Umbraco.Web.UI.Client/src/packages/documents/document-blueprints/entity-actions/create/manifests.ts b/src/Umbraco.Web.UI.Client/src/packages/documents/document-blueprints/entity-actions/create/manifests.ts new file mode 100644 index 0000000000..d9e8cd9a76 --- /dev/null +++ b/src/Umbraco.Web.UI.Client/src/packages/documents/document-blueprints/entity-actions/create/manifests.ts @@ -0,0 +1,12 @@ +import type { ManifestTypes } from '@umbraco-cms/backoffice/extension-registry'; + +const entityActions: Array = [ + { + type: 'modal', + alias: 'Umb.Modal.DocumentBlueprintCreateOptions', + name: 'Document Blueprint Create Options Modal', + element: () => import('./modal/document-blueprint-create-options-modal.element.js'), + }, +]; + +export const manifests = [...entityActions]; diff --git a/src/Umbraco.Web.UI.Client/src/packages/documents/document-blueprints/entity-actions/create/modal/document-blueprint-create-options-modal.element.ts b/src/Umbraco.Web.UI.Client/src/packages/documents/document-blueprints/entity-actions/create/modal/document-blueprint-create-options-modal.element.ts new file mode 100644 index 0000000000..ef7e3ac473 --- /dev/null +++ b/src/Umbraco.Web.UI.Client/src/packages/documents/document-blueprints/entity-actions/create/modal/document-blueprint-create-options-modal.element.ts @@ -0,0 +1,80 @@ +import type { + UmbDocumentBlueprintCreateOptionsModalData, + UmbDocumentBlueprintCreateOptionsModalValue, +} from './index.js'; +import { UmbTextStyles } from '@umbraco-cms/backoffice/style'; +import { html, customElement, css, state } from '@umbraco-cms/backoffice/external/lit'; +import { UmbModalBaseElement } from '@umbraco-cms/backoffice/modal'; +import type { DocumentTypeResponseModel } from '@umbraco-cms/backoffice/external/backend-api'; +import { UmbDocumentTypeStructureRepository } from '@umbraco-cms/backoffice/document-type'; +import { type UmbSelectedEvent, UmbSelectionChangeEvent } from '@umbraco-cms/backoffice/event'; +import type { UmbTreeElement } from '@umbraco-cms/backoffice/tree'; + +@customElement('umb-document-blueprint-create-options-modal') +export class UmbDocumentBlueprintCreateOptionsModalElement extends UmbModalBaseElement< + UmbDocumentBlueprintCreateOptionsModalData, + UmbDocumentBlueprintCreateOptionsModalValue +> { + @state() + private _documentTypes?: Array; + + #documentTypeRepository = new UmbDocumentTypeStructureRepository(this); + + connectedCallback(): void { + super.connectedCallback(); + } + + async #fetchTypes() { + //const something = await this.#documentTypeRepository. + } + + #onNavigate() { + this._submitModal(); + } + + #onSelected(event: UmbSelectedEvent) { + event.stopPropagation(); + const element = event.target as UmbTreeElement; + this.value = { documentTypeUnique: element.getSelection()[0] }; + this.modalContext?.dispatchEvent(new UmbSelectionChangeEvent()); + this.#onNavigate(); + } + + render() { + return html` + + + Create an item under Content Templates + + Select the Document Type you want to make a content blueprint for + + item.isElement == false, + }} + @selected=${this.#onSelected}> + + + + `; + } + + static styles = [ + UmbTextStyles, + css` + strong { + display: block; + } + `, + ]; +} + +export default UmbDocumentBlueprintCreateOptionsModalElement; + +declare global { + interface HTMLElementTagNameMap { + 'umb-document-blueprint-create-options-modal': UmbDocumentBlueprintCreateOptionsModalElement; + } +} diff --git a/src/Umbraco.Web.UI.Client/src/packages/documents/document-blueprints/entity-actions/create/modal/index.ts b/src/Umbraco.Web.UI.Client/src/packages/documents/document-blueprints/entity-actions/create/modal/index.ts new file mode 100644 index 0000000000..98a89164ec --- /dev/null +++ b/src/Umbraco.Web.UI.Client/src/packages/documents/document-blueprints/entity-actions/create/modal/index.ts @@ -0,0 +1,22 @@ +import { UmbModalToken } from '@umbraco-cms/backoffice/modal'; + +export interface UmbDocumentBlueprintCreateOptionsModalData { + parent: { + unique: string | null; + entityType: string; + }; +} + +export interface UmbDocumentBlueprintCreateOptionsModalValue { + documentTypeUnique: string; +} + +export const UMB_DOCUMENT_BLUEPRINT_CREATE_OPTIONS_MODAL = new UmbModalToken< + UmbDocumentBlueprintCreateOptionsModalData, + UmbDocumentBlueprintCreateOptionsModalValue +>('Umb.Modal.DocumentBlueprintCreateOptions', { + modal: { + type: 'sidebar', + size: 'small', + }, +}); diff --git a/src/Umbraco.Web.UI.Client/src/packages/documents/document-blueprints/entity-actions/manifests.ts b/src/Umbraco.Web.UI.Client/src/packages/documents/document-blueprints/entity-actions/manifests.ts new file mode 100644 index 0000000000..e5c2ec3ba5 --- /dev/null +++ b/src/Umbraco.Web.UI.Client/src/packages/documents/document-blueprints/entity-actions/manifests.ts @@ -0,0 +1,36 @@ +import { UMB_DOCUMENT_BLUEPRINT_ENTITY_TYPE, UMB_DOCUMENT_BLUEPRINT_FOLDER_ENTITY_TYPE } from '../entity.js'; +import { + UMB_DOCUMENT_BLUEPRINT_DETAIL_REPOSITORY_ALIAS, + UMB_DOCUMENT_BLUEPRINT_ITEM_REPOSITORY_ALIAS, +} from '../index.js'; +import { manifests as createManifests } from './create/manifests.js'; +import { UmbCreateEntityAction } from './create/create.action.js'; +import type { ManifestTypes } from '@umbraco-cms/backoffice/extension-registry'; + +const entityActions: Array = [ + { + type: 'entityAction', + kind: 'default', + alias: 'Umb.EntityAction.DocumentBlueprint.Create', + name: 'Create Document Blueprint Entity Action', + api: UmbCreateEntityAction, + forEntityTypes: [UMB_DOCUMENT_BLUEPRINT_FOLDER_ENTITY_TYPE], + meta: { + icon: 'icon-add', + label: 'Create', + }, + }, + { + type: 'entityAction', + kind: 'delete', + alias: 'Umb.EntityAction.DocumentBlueprintItem.Delete', + name: 'Delete Document Blueprint Item Entity Action', + forEntityTypes: [UMB_DOCUMENT_BLUEPRINT_ENTITY_TYPE], + meta: { + detailRepositoryAlias: UMB_DOCUMENT_BLUEPRINT_DETAIL_REPOSITORY_ALIAS, + itemRepositoryAlias: UMB_DOCUMENT_BLUEPRINT_ITEM_REPOSITORY_ALIAS, + }, + }, +]; + +export const manifests = [...entityActions, ...createManifests]; diff --git a/src/Umbraco.Web.UI.Client/src/packages/documents/document-blueprints/entity.ts b/src/Umbraco.Web.UI.Client/src/packages/documents/document-blueprints/entity.ts new file mode 100644 index 0000000000..9c0cff3d89 --- /dev/null +++ b/src/Umbraco.Web.UI.Client/src/packages/documents/document-blueprints/entity.ts @@ -0,0 +1,5 @@ +export const UMB_DOCUMENT_BLUEPRINT_ENTITY_TYPE = 'document-blueprint'; +export const UMB_DOCUMENT_BLUEPRINT_FOLDER_ENTITY_TYPE = 'document-blueprint-folder'; + +export type UmbDocumentBlueprintEntityType = typeof UMB_DOCUMENT_BLUEPRINT_ENTITY_TYPE; +export type UmbDocumentBlueprintFolderEntityType = typeof UMB_DOCUMENT_BLUEPRINT_FOLDER_ENTITY_TYPE; diff --git a/src/Umbraco.Web.UI.Client/src/packages/documents/document-blueprints/index.ts b/src/Umbraco.Web.UI.Client/src/packages/documents/document-blueprints/index.ts index e69de29bb2..188be00f10 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/documents/document-blueprints/index.ts +++ b/src/Umbraco.Web.UI.Client/src/packages/documents/document-blueprints/index.ts @@ -0,0 +1,7 @@ +export * from './entity.js'; + +export * from './workspace/index.js'; + +export * from './repository/index.js'; +export * from './tree/types.js'; +export * from './types.js'; diff --git a/src/Umbraco.Web.UI.Client/src/packages/documents/document-blueprints/manifests.ts b/src/Umbraco.Web.UI.Client/src/packages/documents/document-blueprints/manifests.ts index ea4e6d7613..cd0755cc73 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/documents/document-blueprints/manifests.ts +++ b/src/Umbraco.Web.UI.Client/src/packages/documents/document-blueprints/manifests.ts @@ -1,4 +1,13 @@ +import { manifests as entityActionManifests } from './entity-actions/manifests.js'; import { manifests as menuItemManifests } from './menu-item/manifests.js'; +import { manifests as repositoryManifests } from './repository/manifests.js'; +import { manifests as treeManifests } from './tree/manifests.js'; import { manifests as workspaceManifests } from './workspace/manifests.js'; -export const manifests = [...menuItemManifests, ...workspaceManifests]; +export const manifests = [ + ...entityActionManifests, + ...menuItemManifests, + ...repositoryManifests, + ...treeManifests, + ...workspaceManifests, +]; diff --git a/src/Umbraco.Web.UI.Client/src/packages/documents/document-blueprints/menu-item/manifests.ts b/src/Umbraco.Web.UI.Client/src/packages/documents/document-blueprints/menu-item/manifests.ts index 71b18dec07..1ccfeb6caf 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/documents/document-blueprints/menu-item/manifests.ts +++ b/src/Umbraco.Web.UI.Client/src/packages/documents/document-blueprints/menu-item/manifests.ts @@ -1,14 +1,17 @@ -import type { ManifestMenuItem } from '@umbraco-cms/backoffice/extension-registry'; +import { UMB_DOCUMENT_BLUEPRINT_TREE_ALIAS } from '../tree/manifests.js'; +import type { ManifestTypes } from '@umbraco-cms/backoffice/extension-registry'; -const menuItem: ManifestMenuItem = { +const menuItem: ManifestTypes = { type: 'menuItem', + kind: 'tree', alias: 'Umb.MenuItem.DocumentBlueprints', name: 'Document Blueprints Menu Item', weight: 100, meta: { + treeAlias: UMB_DOCUMENT_BLUEPRINT_TREE_ALIAS, label: 'Document Blueprints', - icon: 'icon-blueprint', - entityType: 'document-blueprint-root', + //icon: 'icon-blueprint', + //entityType: 'document-blueprint', menus: ['Umb.Menu.StructureSettings'], }, }; diff --git a/src/Umbraco.Web.UI.Client/src/packages/documents/document-blueprints/repository/detail/document-blueprint-detail.repository.ts b/src/Umbraco.Web.UI.Client/src/packages/documents/document-blueprints/repository/detail/document-blueprint-detail.repository.ts new file mode 100644 index 0000000000..0ba747f00b --- /dev/null +++ b/src/Umbraco.Web.UI.Client/src/packages/documents/document-blueprints/repository/detail/document-blueprint-detail.repository.ts @@ -0,0 +1,11 @@ +import type { UmbDocumentBlueprintDetailModel } from '../../types.js'; +import { UmbDocumentBlueprintServerDataSource } from './document-blueprint-detail.server.data-source.js'; +import { UMB_DOCUMENT_BLUEPRINT_DETAIL_STORE_CONTEXT } from './document-blueprint-detail.store.js'; +import type { UmbControllerHost } from '@umbraco-cms/backoffice/controller-api'; +import { UmbDetailRepositoryBase } from '@umbraco-cms/backoffice/repository'; + +export class UmbDocumentBlueprintDetailRepository extends UmbDetailRepositoryBase { + constructor(host: UmbControllerHost) { + super(host, UmbDocumentBlueprintServerDataSource, UMB_DOCUMENT_BLUEPRINT_DETAIL_STORE_CONTEXT); + } +} diff --git a/src/Umbraco.Web.UI.Client/src/packages/documents/document-blueprints/repository/detail/document-blueprint-detail.server.data-source.ts b/src/Umbraco.Web.UI.Client/src/packages/documents/document-blueprints/repository/detail/document-blueprint-detail.server.data-source.ts new file mode 100644 index 0000000000..33eb7dbeb8 --- /dev/null +++ b/src/Umbraco.Web.UI.Client/src/packages/documents/document-blueprints/repository/detail/document-blueprint-detail.server.data-source.ts @@ -0,0 +1,197 @@ +import type { UmbDocumentBlueprintDetailModel } from '../../types.js'; +import { UMB_DOCUMENT_BLUEPRINT_ENTITY_TYPE } from '../../entity.js'; +import { UmbId } from '@umbraco-cms/backoffice/id'; +import type { UmbDetailDataSource } from '@umbraco-cms/backoffice/repository'; +import type { + CreateDocumentRequestModel, + UpdateDocumentRequestModel, +} from '@umbraco-cms/backoffice/external/backend-api'; +import { DocumentBlueprintService } from '@umbraco-cms/backoffice/external/backend-api'; +import type { UmbControllerHost } from '@umbraco-cms/backoffice/controller-api'; +import { tryExecuteAndNotify } from '@umbraco-cms/backoffice/resources'; + +/** + * A data source for the Document that fetches data from the server + * @export + * @class UmbDocumentBlueprintServerDataSource + * @implements {RepositoryDetailDataSource} + */ +export class UmbDocumentBlueprintServerDataSource implements UmbDetailDataSource { + #host: UmbControllerHost; + + /** + * Creates an instance of UmbDocumentBlueprintServerDataSource. + * @param {UmbControllerHost} host + * @memberof UmbDocumentBlueprintServerDataSource + */ + constructor(host: UmbControllerHost) { + this.#host = host; + } + + /** + * Creates a new Document scaffold + * @return { UmbDocumentBlueprintDetailModel } + * @memberof UmbDocumentBlueprintServerDataSource + */ + async createScaffold(preset: Partial = {}) { + const data: UmbDocumentBlueprintDetailModel = { + entityType: UMB_DOCUMENT_BLUEPRINT_ENTITY_TYPE, + unique: UmbId.new(), + documentType: { + unique: '', + collection: null, + }, + values: [], + variants: [], + ...preset, + }; + + return { data }; + } + + /** + * Creates a new variant scaffold. + * @returns A new variant scaffold. + */ + /* + // TDOD: remove if not used + createVariantScaffold(): UmbDocumentBlueprintVariantModel { + return { + state: null, + culture: null, + segment: null, + name: '', + publishDate: null, + createDate: null, + updateDate: null, + }; + } + */ + + /** + * Fetches a Document with the given id from the server + * @param {string} unique + * @return {*} + * @memberof UmbDocumentBlueprintServerDataSource + */ + async read(unique: string) { + if (!unique) throw new Error('Unique is missing'); + + const { data, error } = await tryExecuteAndNotify( + this.#host, + DocumentBlueprintService.getDocumentBlueprintById({ id: unique }), + ); + + if (error || !data) { + return { error }; + } + + // TODO: make data mapper to prevent errors + const document: UmbDocumentBlueprintDetailModel = { + entityType: UMB_DOCUMENT_BLUEPRINT_ENTITY_TYPE, + unique: data.id, + values: data.values.map((value) => { + return { + alias: value.alias, + culture: value.culture || null, + segment: value.segment || null, + value: value.value, + }; + }), + variants: data.variants.map((variant) => { + return { + state: variant.state, + culture: variant.culture || null, + segment: variant.segment || null, + name: variant.name, + publishDate: variant.publishDate || null, + createDate: variant.createDate, + updateDate: variant.updateDate, + }; + }), + documentType: { + unique: data.documentType.id, + collection: data.documentType.collection ? { unique: data.documentType.collection.id } : null, + }, + }; + + return { data: document }; + } + + /** + * Inserts a new Document on the server + * @param {UmbDocumentBlueprintDetailModel} model + * @return {*} + * @memberof UmbDocumentBlueprintServerDataSource + */ + async create(model: UmbDocumentBlueprintDetailModel, parentUnique: string | null = null) { + if (!model) throw new Error('Document is missing'); + if (!model.unique) throw new Error('Document unique is missing'); + + // TODO: make data mapper to prevent errors + const requestBody: CreateDocumentRequestModel = { + id: model.unique, + parent: parentUnique ? { id: parentUnique } : null, + documentType: { id: model.documentType.unique }, + + values: model.values, + variants: model.variants, + }; + + const { data, error } = await tryExecuteAndNotify( + this.#host, + DocumentBlueprintService.postDocumentBlueprint({ + requestBody, + }), + ); + + if (data) { + return this.read(data); + } + + return { error }; + } + + /** + * Updates a Document on the server + * @param {UmbDocumentBlueprintDetailModel} Document + * @return {*} + * @memberof UmbDocumentBlueprintServerDataSource + */ + async update(model: UmbDocumentBlueprintDetailModel) { + if (!model.unique) throw new Error('Unique is missing'); + + // TODO: make data mapper to prevent errors + const requestBody: UpdateDocumentRequestModel = { + values: model.values, + variants: model.variants, + }; + + const { error } = await tryExecuteAndNotify( + this.#host, + DocumentBlueprintService.putDocumentBlueprintById({ + id: model.unique, + requestBody, + }), + ); + + if (!error) { + return this.read(model.unique); + } + + return { error }; + } + + /** + * Deletes a Document on the server + * @param {string} unique + * @return {*} + * @memberof UmbDocumentBlueprintServerDataSource + */ + async delete(unique: string) { + if (!unique) throw new Error('Unique is missing'); + + // TODO: update to delete when implemented + return tryExecuteAndNotify(this.#host, DocumentBlueprintService.deleteDocumentBlueprintById({ id: unique })); + } +} diff --git a/src/Umbraco.Web.UI.Client/src/packages/documents/document-blueprints/repository/detail/document-blueprint-detail.store.ts b/src/Umbraco.Web.UI.Client/src/packages/documents/document-blueprints/repository/detail/document-blueprint-detail.store.ts new file mode 100644 index 0000000000..844ad7543e --- /dev/null +++ b/src/Umbraco.Web.UI.Client/src/packages/documents/document-blueprints/repository/detail/document-blueprint-detail.store.ts @@ -0,0 +1,25 @@ +import type { UmbDocumentBlueprintDetailModel } from '../../types.js'; +import { UmbContextToken } from '@umbraco-cms/backoffice/context-api'; +import { UmbDetailStoreBase } from '@umbraco-cms/backoffice/store'; +import type { UmbControllerHost } from '@umbraco-cms/backoffice/controller-api'; + +/** + * @export + * @class UmbDocumentBlueprintDetailStore + * @extends {UmbStoreBase} + * @description - Data Store for Document Blueprint Details + */ +export class UmbDocumentBlueprintDetailStore extends UmbDetailStoreBase { + /** + * Creates an instance of UmbDocumentBlueprintDetailStore. + * @param {UmbControllerHost} host + * @memberof UmbDocumentBlueprintDetailStore + */ + constructor(host: UmbControllerHost) { + super(host, UMB_DOCUMENT_BLUEPRINT_DETAIL_STORE_CONTEXT.toString()); + } +} + +export const UMB_DOCUMENT_BLUEPRINT_DETAIL_STORE_CONTEXT = new UmbContextToken( + 'UmbDocumentBlueprintDetailStore', +); diff --git a/src/Umbraco.Web.UI.Client/src/packages/documents/document-blueprints/repository/detail/index.ts b/src/Umbraco.Web.UI.Client/src/packages/documents/document-blueprints/repository/detail/index.ts new file mode 100644 index 0000000000..8f95154dd2 --- /dev/null +++ b/src/Umbraco.Web.UI.Client/src/packages/documents/document-blueprints/repository/detail/index.ts @@ -0,0 +1,3 @@ +export { UmbDocumentBlueprintDetailRepository } from './document-blueprint-detail.repository.js'; +export { UMB_DOCUMENT_BLUEPRINT_DETAIL_REPOSITORY_ALIAS } from './manifests.js'; +export { UMB_DOCUMENT_BLUEPRINT_DETAIL_STORE_CONTEXT } from './document-blueprint-detail.store.js'; diff --git a/src/Umbraco.Web.UI.Client/src/packages/documents/document-blueprints/repository/detail/manifests.ts b/src/Umbraco.Web.UI.Client/src/packages/documents/document-blueprints/repository/detail/manifests.ts new file mode 100644 index 0000000000..923eb105ae --- /dev/null +++ b/src/Umbraco.Web.UI.Client/src/packages/documents/document-blueprints/repository/detail/manifests.ts @@ -0,0 +1,23 @@ +import { UmbDocumentBlueprintDetailRepository } from './document-blueprint-detail.repository.js'; +import { UmbDocumentBlueprintDetailStore } from './document-blueprint-detail.store.js'; +import type { ManifestRepository, ManifestStore } from '@umbraco-cms/backoffice/extension-registry'; + +export const UMB_DOCUMENT_BLUEPRINT_DETAIL_REPOSITORY_ALIAS = 'Umb.Repository.DocumentBlueprint.Detail'; + +const repository: ManifestRepository = { + type: 'repository', + alias: UMB_DOCUMENT_BLUEPRINT_DETAIL_REPOSITORY_ALIAS, + name: 'Document Blueprint Detail Repository', + api: UmbDocumentBlueprintDetailRepository, +}; + +export const UMB_DOCUMENT_BLUEPRINT_DETAIL_STORE_ALIAS = 'Umb.Store.DocumentBlueprint.Detail'; + +const store: ManifestStore = { + type: 'store', + alias: UMB_DOCUMENT_BLUEPRINT_DETAIL_STORE_ALIAS, + name: 'Document Blueprint Detail Store', + api: UmbDocumentBlueprintDetailStore, +}; + +export const manifests = [repository, store]; diff --git a/src/Umbraco.Web.UI.Client/src/packages/documents/document-blueprints/repository/index.ts b/src/Umbraco.Web.UI.Client/src/packages/documents/document-blueprints/repository/index.ts new file mode 100644 index 0000000000..45e331149c --- /dev/null +++ b/src/Umbraco.Web.UI.Client/src/packages/documents/document-blueprints/repository/index.ts @@ -0,0 +1,7 @@ +export { + UmbDocumentBlueprintDetailRepository, + UMB_DOCUMENT_BLUEPRINT_DETAIL_REPOSITORY_ALIAS, +} from './detail/index.js'; +export { UmbDocumentBlueprintItemRepository, UMB_DOCUMENT_BLUEPRINT_ITEM_REPOSITORY_ALIAS } from './item/index.js'; + +export type { UmbDocumentBlueprintItemModel } from './item/types.js'; diff --git a/src/Umbraco.Web.UI.Client/src/packages/documents/document-blueprints/repository/item/document-blueprint-item.repository.ts b/src/Umbraco.Web.UI.Client/src/packages/documents/document-blueprints/repository/item/document-blueprint-item.repository.ts new file mode 100644 index 0000000000..36d29289ff --- /dev/null +++ b/src/Umbraco.Web.UI.Client/src/packages/documents/document-blueprints/repository/item/document-blueprint-item.repository.ts @@ -0,0 +1,11 @@ +import { UmbDocumentBlueprintItemServerDataSource } from './document-blueprint-item.server.data-source.js'; +import { UMB_DOCUMENT_BLUEPRINT_ITEM_STORE_CONTEXT } from './document-blueprint-item.store.js'; +import type { UmbDocumentBlueprintItemModel } from './types.js'; +import type { UmbControllerHost } from '@umbraco-cms/backoffice/controller-api'; +import { UmbItemRepositoryBase } from '@umbraco-cms/backoffice/repository'; + +export class UmbDocumentBlueprintItemRepository extends UmbItemRepositoryBase { + constructor(host: UmbControllerHost) { + super(host, UmbDocumentBlueprintItemServerDataSource, UMB_DOCUMENT_BLUEPRINT_ITEM_STORE_CONTEXT); + } +} diff --git a/src/Umbraco.Web.UI.Client/src/packages/documents/document-blueprints/repository/item/document-blueprint-item.server.data-source.ts b/src/Umbraco.Web.UI.Client/src/packages/documents/document-blueprints/repository/item/document-blueprint-item.server.data-source.ts new file mode 100644 index 0000000000..0c619df3a6 --- /dev/null +++ b/src/Umbraco.Web.UI.Client/src/packages/documents/document-blueprints/repository/item/document-blueprint-item.server.data-source.ts @@ -0,0 +1,57 @@ +import { UMB_DOCUMENT_BLUEPRINT_ENTITY_TYPE } from '../../entity.js'; +import type { UmbDocumentBlueprintItemModel } from './types.js'; +import { DocumentBlueprintService } from '@umbraco-cms/backoffice/external/backend-api'; +import { UmbItemServerDataSourceBase } from '@umbraco-cms/backoffice/repository'; +import type { CancelablePromise, DocumentItemResponseModel } from '@umbraco-cms/backoffice/external/backend-api'; +import type { UmbControllerHost } from '@umbraco-cms/backoffice/controller-api'; + +/** + * A data source for Document Blueprint items that fetches data from the server + * @export + * @class UmbDocumentBlueprintItemServerDataSource + * @implements {DocumentTreeDataSource} + */ +export class UmbDocumentBlueprintItemServerDataSource extends UmbItemServerDataSourceBase< + DocumentItemResponseModel, + UmbDocumentBlueprintItemModel +> { + /** + * Creates an instance of UmbDocumentBlueprintItemServerDataSource. + * @param {UmbControllerHost} host + * @memberof UmbDocumentBlueprintItemServerDataSource + */ + constructor(host: UmbControllerHost) { + super(host, { + getItems, + mapper, + }); + } +} + +/* eslint-disable local-rules/no-direct-api-import */ +const getItems = (uniques: Array) => + DocumentBlueprintService.getItemDocumentBlueprint({ id: uniques }) as unknown as CancelablePromise< + DocumentItemResponseModel[] + >; + +const mapper = (item: DocumentItemResponseModel): UmbDocumentBlueprintItemModel => { + return { + entityType: UMB_DOCUMENT_BLUEPRINT_ENTITY_TYPE, + unique: item.id, + isTrashed: item.isTrashed, + isProtected: item.isProtected, + documentType: { + unique: item.documentType.id, + icon: item.documentType.icon, + collection: item.documentType.collection ? { unique: item.documentType.collection.id } : null, + }, + variants: item.variants.map((variant) => { + return { + culture: variant.culture || null, + name: variant.name, + state: variant.state, + }; + }), + name: item.variants[0]?.name, // TODO: this is not correct. We need to get it from the variants. This is a temp solution. + }; +}; diff --git a/src/Umbraco.Web.UI.Client/src/packages/documents/document-blueprints/repository/item/document-blueprint-item.store.ts b/src/Umbraco.Web.UI.Client/src/packages/documents/document-blueprints/repository/item/document-blueprint-item.store.ts new file mode 100644 index 0000000000..188f50afca --- /dev/null +++ b/src/Umbraco.Web.UI.Client/src/packages/documents/document-blueprints/repository/item/document-blueprint-item.store.ts @@ -0,0 +1,26 @@ +import type { UmbDocumentBlueprintDetailModel } from '../../types.js'; +import { UmbContextToken } from '@umbraco-cms/backoffice/context-api'; +import type { UmbControllerHost } from '@umbraco-cms/backoffice/controller-api'; +import { UmbItemStoreBase } from '@umbraco-cms/backoffice/store'; + +/** + * @export + * @class UmbDocumentBlueprintItemStore + * @extends {UmbStoreBase} + * @description - Data Store for Document items + */ + +export class UmbDocumentBlueprintItemStore extends UmbItemStoreBase { + /** + * Creates an instance of UmbDocumentBlueprintItemStore. + * @param {UmbControllerHost} host + * @memberof UmbDocumentBlueprintItemStore + */ + constructor(host: UmbControllerHost) { + super(host, UMB_DOCUMENT_BLUEPRINT_ITEM_STORE_CONTEXT.toString()); + } +} + +export const UMB_DOCUMENT_BLUEPRINT_ITEM_STORE_CONTEXT = new UmbContextToken( + 'UmbDocumentBlueprintItemStore', +); diff --git a/src/Umbraco.Web.UI.Client/src/packages/documents/document-blueprints/repository/item/index.ts b/src/Umbraco.Web.UI.Client/src/packages/documents/document-blueprints/repository/item/index.ts new file mode 100644 index 0000000000..6b47360768 --- /dev/null +++ b/src/Umbraco.Web.UI.Client/src/packages/documents/document-blueprints/repository/item/index.ts @@ -0,0 +1,2 @@ +export { UmbDocumentBlueprintItemRepository } from './document-blueprint-item.repository.js'; +export { UMB_DOCUMENT_BLUEPRINT_ITEM_REPOSITORY_ALIAS } from './manifests.js'; diff --git a/src/Umbraco.Web.UI.Client/src/packages/documents/document-blueprints/repository/item/manifests.ts b/src/Umbraco.Web.UI.Client/src/packages/documents/document-blueprints/repository/item/manifests.ts new file mode 100644 index 0000000000..5674ac938e --- /dev/null +++ b/src/Umbraco.Web.UI.Client/src/packages/documents/document-blueprints/repository/item/manifests.ts @@ -0,0 +1,22 @@ +import { UmbDocumentBlueprintItemStore } from './document-blueprint-item.store.js'; +import { UmbDocumentBlueprintItemRepository } from './document-blueprint-item.repository.js'; +import type { ManifestRepository, ManifestItemStore } from '@umbraco-cms/backoffice/extension-registry'; + +export const UMB_DOCUMENT_BLUEPRINT_ITEM_REPOSITORY_ALIAS = 'Umb.Repository.DocumentBlueprint.Item'; +export const UMB_DOCUMENT_BLUEPRINT_STORE_ALIAS = 'Umb.Store.DocumentBlueprint.Item'; + +const itemRepository: ManifestRepository = { + type: 'repository', + alias: UMB_DOCUMENT_BLUEPRINT_ITEM_REPOSITORY_ALIAS, + name: 'Document Blueprint Item Repository', + api: UmbDocumentBlueprintItemRepository, +}; + +const itemStore: ManifestItemStore = { + type: 'itemStore', + alias: UMB_DOCUMENT_BLUEPRINT_STORE_ALIAS, + name: 'Document Blueprint Item Store', + api: UmbDocumentBlueprintItemStore, +}; + +export const manifests = [itemRepository, itemStore]; diff --git a/src/Umbraco.Web.UI.Client/src/packages/documents/document-blueprints/repository/item/types.ts b/src/Umbraco.Web.UI.Client/src/packages/documents/document-blueprints/repository/item/types.ts new file mode 100644 index 0000000000..e054aac1d5 --- /dev/null +++ b/src/Umbraco.Web.UI.Client/src/packages/documents/document-blueprints/repository/item/types.ts @@ -0,0 +1,23 @@ +import type { UmbDocumentBlueprintEntityType } from '../../entity.js'; +import type { DocumentVariantStateModel } from '@umbraco-cms/backoffice/external/backend-api'; +import type { UmbReferenceByUnique } from '@umbraco-cms/backoffice/models'; + +export interface UmbDocumentBlueprintItemModel { + entityType: UmbDocumentBlueprintEntityType; + name: string; // TODO: this is not correct. We need to get it from the variants. This is a temp solution. + unique: string; + isTrashed: boolean; + isProtected: boolean; + documentType: { + unique: string; + icon: string; + collection: UmbReferenceByUnique | null; + }; + variants: Array; +} + +export interface UmbDocumentBlueprintItemVariantModel { + name: string; + culture: string | null; + state: DocumentVariantStateModel | null; +} diff --git a/src/Umbraco.Web.UI.Client/src/packages/documents/document-blueprints/repository/manifests.ts b/src/Umbraco.Web.UI.Client/src/packages/documents/document-blueprints/repository/manifests.ts new file mode 100644 index 0000000000..bb35952020 --- /dev/null +++ b/src/Umbraco.Web.UI.Client/src/packages/documents/document-blueprints/repository/manifests.ts @@ -0,0 +1,4 @@ +import { manifests as detailManifests } from './detail/manifests.js'; +import { manifests as itemManifests } from './item/manifests.js'; + +export const manifests = [...detailManifests, ...itemManifests]; diff --git a/src/Umbraco.Web.UI.Client/src/packages/documents/document-blueprints/tree/document-blueprint-tree.repository.ts b/src/Umbraco.Web.UI.Client/src/packages/documents/document-blueprints/tree/document-blueprint-tree.repository.ts new file mode 100644 index 0000000000..55e303dfc5 --- /dev/null +++ b/src/Umbraco.Web.UI.Client/src/packages/documents/document-blueprints/tree/document-blueprint-tree.repository.ts @@ -0,0 +1,28 @@ +import { UMB_DOCUMENT_BLUEPRINT_ENTITY_TYPE } from '../entity.js'; +import { UmbDocumentBlueprintTreeServerDataSource } from './document-blueprint-tree.server.data-source.js'; +import { UMB_DOCUMENT_BLUEPRINT_TREE_STORE_CONTEXT } from './document-blueprint-tree.store.js'; +import type { UmbDocumentBlueprintTreeItemModel, UmbDocumentBlueprintTreeRootModel } from './types.js'; +import { UmbTreeRepositoryBase } from '@umbraco-cms/backoffice/tree'; +import type { UmbControllerHost } from '@umbraco-cms/backoffice/controller-api'; +import type { UmbApi } from '@umbraco-cms/backoffice/extension-api'; + +export class UmbDocumentBlueprintTreeRepository + extends UmbTreeRepositoryBase + implements UmbApi +{ + constructor(host: UmbControllerHost) { + super(host, UmbDocumentBlueprintTreeServerDataSource, UMB_DOCUMENT_BLUEPRINT_TREE_STORE_CONTEXT); + } + + async requestTreeRoot() { + const data: UmbDocumentBlueprintTreeRootModel = { + unique: null, + entityType: UMB_DOCUMENT_BLUEPRINT_ENTITY_TYPE, + name: 'Document Blueprints', + hasChildren: true, + isFolder: true, + }; + + return { data }; + } +} diff --git a/src/Umbraco.Web.UI.Client/src/packages/documents/document-blueprints/tree/document-blueprint-tree.server.data-source.ts b/src/Umbraco.Web.UI.Client/src/packages/documents/document-blueprints/tree/document-blueprint-tree.server.data-source.ts new file mode 100644 index 0000000000..1a7ab6308a --- /dev/null +++ b/src/Umbraco.Web.UI.Client/src/packages/documents/document-blueprints/tree/document-blueprint-tree.server.data-source.ts @@ -0,0 +1,74 @@ +import { UMB_DOCUMENT_BLUEPRINT_ENTITY_TYPE } from '../entity.js'; +import type { UmbDocumentBlueprintTreeItemModel } from './types.js'; +import type { + UmbTreeAncestorsOfRequestArgs, + UmbTreeChildrenOfRequestArgs, + UmbTreeRootItemsRequestArgs, +} from '@umbraco-cms/backoffice/tree'; +import { UmbTreeServerDataSourceBase } from '@umbraco-cms/backoffice/tree'; +import type { + DocumentBlueprintTreeItemResponseModel, + DocumentTreeItemResponseModel, +} from '@umbraco-cms/backoffice/external/backend-api'; +import { DocumentBlueprintService } from '@umbraco-cms/backoffice/external/backend-api'; +import type { UmbControllerHost } from '@umbraco-cms/backoffice/controller-api'; + +/** + * A data source for a data type tree that fetches data from the server + * @export + * @class UmbDocumentBlueprintTreeServerDataSource + * @implements {DocumentTreeDataSource} + */ +export class UmbDocumentBlueprintTreeServerDataSource extends UmbTreeServerDataSourceBase< + DocumentBlueprintTreeItemResponseModel, + UmbDocumentBlueprintTreeItemModel +> { + /** + * Creates an instance of UmbDocumentBlueprintTreeServerDataSource. + * @param {UmbControllerHost} host + * @memberof UmbDocumentBlueprintTreeServerDataSource + */ + constructor(host: UmbControllerHost) { + super(host, { + getRootItems, + getChildrenOf, + getAncestorsOf, + mapper, + }); + } +} + +const getRootItems = (args: UmbTreeRootItemsRequestArgs) => + // eslint-disable-next-line local-rules/no-direct-api-import + DocumentBlueprintService.getTreeDocumentBlueprintRoot({ skip: args.skip, take: args.take }); + +const getChildrenOf = (args: UmbTreeChildrenOfRequestArgs) => { + if (args.parentUnique === null) { + return getRootItems(args); + } else { + throw new Error('Not implemented'); + /* + // eslint-disable-next-line local-rules/no-direct-api-import + return DocumentBlueprintService.getTreeDocumentBlueprintChildren({ + parentId: args.parentUnique, + }); + */ + } +}; + +const getAncestorsOf = (args: UmbTreeAncestorsOfRequestArgs) => { + throw new Error('Not implemented'); +}; + +const mapper = (item: DocumentBlueprintTreeItemResponseModel): UmbDocumentBlueprintTreeItemModel => { + //TODO remove temp hack when api endpoints are fixed + const hack = item as Partial; + return { + unique: item.id, + parentUnique: item.parent?.id || null, + name: hack?.variants?.[0].name ?? '', + entityType: UMB_DOCUMENT_BLUEPRINT_ENTITY_TYPE, + isFolder: false, + hasChildren: item.hasChildren, + }; +}; diff --git a/src/Umbraco.Web.UI.Client/src/packages/documents/document-blueprints/tree/document-blueprint-tree.store.ts b/src/Umbraco.Web.UI.Client/src/packages/documents/document-blueprints/tree/document-blueprint-tree.store.ts new file mode 100644 index 0000000000..5a2d338793 --- /dev/null +++ b/src/Umbraco.Web.UI.Client/src/packages/documents/document-blueprints/tree/document-blueprint-tree.store.ts @@ -0,0 +1,38 @@ +import { UMB_DOCUMENT_BLUEPRINT_DETAIL_STORE_CONTEXT } from '../repository/detail/index.js'; +import type { UmbDocumentBlueprintDetailModel } from '../types.js'; +import type { UmbDocumentBlueprintTreeItemModel } from './types.js'; +import { UmbUniqueTreeStore } from '@umbraco-cms/backoffice/tree'; +import { UmbStoreConnector } from '@umbraco-cms/backoffice/store'; +import { UmbContextToken } from '@umbraco-cms/backoffice/context-api'; +import type { UmbControllerHost } from '@umbraco-cms/backoffice/controller-api'; + +/** + * @export + * @class UmbDocumentBlueprintTreeStore + * @extends {UmbStoreBase} + * @description - Tree Data Store for Document Blueprints + */ +export class UmbDocumentBlueprintTreeStore extends UmbUniqueTreeStore { + /** + * Creates an instance of UmbDocumentBlueprintTreeStore. + * @param {UmbControllerHost} host + * @memberof UmbDocumentBlueprintTreeStore + */ + constructor(host: UmbControllerHost) { + super(host, UMB_DOCUMENT_BLUEPRINT_TREE_STORE_CONTEXT.toString()); + + new UmbStoreConnector(host, { + store: this, + connectToStoreAlias: UMB_DOCUMENT_BLUEPRINT_DETAIL_STORE_CONTEXT, + updateStoreItemMapper: (item) => this.#updateTreeItemMapper(item), + }); + } + + #updateTreeItemMapper = (item: UmbDocumentBlueprintDetailModel) => { + return { ...item, name: item.variants.map((variant) => variant.name)[0] }; + }; +} + +export const UMB_DOCUMENT_BLUEPRINT_TREE_STORE_CONTEXT = new UmbContextToken( + 'UmbDocumentBlueprintTreeStore', +); diff --git a/src/Umbraco.Web.UI.Client/src/packages/documents/document-blueprints/tree/folder/document-blueprint-folder.repository.ts b/src/Umbraco.Web.UI.Client/src/packages/documents/document-blueprints/tree/folder/document-blueprint-folder.repository.ts new file mode 100644 index 0000000000..1031ebc6ed --- /dev/null +++ b/src/Umbraco.Web.UI.Client/src/packages/documents/document-blueprints/tree/folder/document-blueprint-folder.repository.ts @@ -0,0 +1,9 @@ +// import { UmbDocumentBlueprintFolderServerDataSource } from './document-blueprint-folder.server.data-source.js'; +// import type { UmbControllerHost } from '@umbraco-cms/backoffice/controller-api'; +// import { UmbFolderRepositoryBase } from '@umbraco-cms/backoffice/tree'; + +// export class UmbDocumentBlueprintFolderRepository extends UmbFolderRepositoryBase { +// constructor(host: UmbControllerHost) { +// super(host, UmbDocumentBlueprintFolderServerDataSource); +// } +// } diff --git a/src/Umbraco.Web.UI.Client/src/packages/documents/document-blueprints/tree/folder/document-blueprint-folder.server.data-source.ts b/src/Umbraco.Web.UI.Client/src/packages/documents/document-blueprints/tree/folder/document-blueprint-folder.server.data-source.ts new file mode 100644 index 0000000000..e0dce44acd --- /dev/null +++ b/src/Umbraco.Web.UI.Client/src/packages/documents/document-blueprints/tree/folder/document-blueprint-folder.server.data-source.ts @@ -0,0 +1,122 @@ +// import type { UmbCreateFolderModel, UmbFolderDataSource, UmbUpdateFolderModel } from '@umbraco-cms/backoffice/tree'; +// import { DocumentBlueprintService } from '@umbraco-cms/backoffice/external/backend-api'; +// import type { UmbControllerHost } from '@umbraco-cms/backoffice/controller-api'; +// import { tryExecuteAndNotify } from '@umbraco-cms/backoffice/resources'; + +// /** +// * A data source for a Document Blueprint folder that fetches data from the server +// * @export +// * @class UmbDocumentBlueprintFolderServerDataSource +// * @implements {RepositoryDetailDataSource} +// */ +// export class UmbDocumentBlueprintFolderServerDataSource implements UmbFolderDataSource { +// #host: UmbControllerHost; + +// /** +// * Creates an instance of UmbDocumentBlueprintFolderServerDataSource. +// * @param {UmbControllerHost} host +// * @memberof UmbDocumentBlueprintFolderServerDataSource +// */ +// constructor(host: UmbControllerHost) { +// this.#host = host; +// } + +// /** +// * Fetches a Document Blueprint folder from the server +// * @param {string} unique +// * @return {*} +// * @memberof UmbDocumentBlueprintFolderServerDataSource +// */ +// async read(unique: string) { +// if (!unique) throw new Error('Unique is missing'); + +// const { data, error } = await tryExecuteAndNotify( +// this.#host, +// DocumentBlueprintService.getDocumentBlueprintFolderById({ +// id: unique, +// }), +// ); + +// if (data) { +// const mappedData = { +// unique: data.id, +// name: data.name, +// }; + +// return { data: mappedData }; +// } + +// return { error }; +// } + +// /** +// * Creates a Document Blueprint folder on the server +// * @param {UmbCreateFolderModel} args +// * @return {*} +// * @memberof UmbDocumentBlueprintFolderServerDataSource +// */ +// async create(args: UmbCreateFolderModel) { +// if (args.parentUnique === undefined) throw new Error('Parent unique is missing'); +// if (!args.name) throw new Error('Name is missing'); + +// const requestBody = { +// id: args.unique, +// parent: args.parentUnique ? { id: args.parentUnique } : null, +// name: args.name, +// }; + +// const { error } = await tryExecuteAndNotify( +// this.#host, +// DocumentBlueprintService.postDocumentBlueprintFolder({ +// requestBody, +// }), +// ); + +// if (!error) { +// return this.read(args.unique); +// } + +// return { error }; +// } + +// /** +// * Updates a Document Blueprint folder on the server +// * @param {UmbUpdateFolderModel} args +// * @return {*} +// * @memberof UmbDocumentBlueprintFolderServerDataSource +// */ +// async update(args: UmbUpdateFolderModel) { +// if (!args.unique) throw new Error('Unique is missing'); +// if (!args.name) throw new Error('Folder name is missing'); + +// const { error } = await tryExecuteAndNotify( +// this.#host, +// DocumentBlueprintService.putDocumentBlueprintFolderById({ +// id: args.unique, +// requestBody: { name: args.name }, +// }), +// ); + +// if (!error) { +// return this.read(args.unique); +// } + +// return { error }; +// } + +// /** +// * Deletes a Document Blueprint folder on the server +// * @param {string} unique +// * @return {*} +// * @memberof UmbDocumentBlueprintServerDataSource +// */ +// async delete(unique: string) { +// if (!unique) throw new Error('Unique is missing'); +// return tryExecuteAndNotify( +// this.#host, +// DocumentBlueprintService.deleteDocumentBlueprintFolderById({ +// id: unique, +// }), +// ); +// } +// } diff --git a/src/Umbraco.Web.UI.Client/src/packages/documents/document-blueprints/tree/folder/index.ts b/src/Umbraco.Web.UI.Client/src/packages/documents/document-blueprints/tree/folder/index.ts new file mode 100644 index 0000000000..c0cde243d3 --- /dev/null +++ b/src/Umbraco.Web.UI.Client/src/packages/documents/document-blueprints/tree/folder/index.ts @@ -0,0 +1,2 @@ +// export { UmbDocumentBlueprintFolderRepository } from './document-blueprint-folder.repository.js'; +// export { UMB_DOCUMENT_BLUEPRINT_FOLDER_REPOSITORY_ALIAS } from './manifests.js'; diff --git a/src/Umbraco.Web.UI.Client/src/packages/documents/document-blueprints/tree/folder/manifests.ts b/src/Umbraco.Web.UI.Client/src/packages/documents/document-blueprints/tree/folder/manifests.ts new file mode 100644 index 0000000000..90635572ee --- /dev/null +++ b/src/Umbraco.Web.UI.Client/src/packages/documents/document-blueprints/tree/folder/manifests.ts @@ -0,0 +1,37 @@ +// import { UMB_DOCUMENT_BLUEPRINT_FOLDER_ENTITY_TYPE } from '../../entity.js'; +// import { UmbDocumentBlueprintFolderRepository } from './document-blueprint-folder.repository.js'; +// import type { ManifestRepository, ManifestTypes } from '@umbraco-cms/backoffice/extension-registry'; + +// export const UMB_DOCUMENT_BLUEPRINT_FOLDER_REPOSITORY_ALIAS = 'Umb.Repository.DocumentBlueprint.Folder'; + +// const folderRepository: ManifestRepository = { +// type: 'repository', +// alias: UMB_DOCUMENT_BLUEPRINT_FOLDER_REPOSITORY_ALIAS, +// name: 'Document Blueprint Folder Repository', +// api: UmbDocumentBlueprintFolderRepository, +// }; + +// const entityActions: Array = [ +// { +// type: 'entityAction', +// kind: 'folderUpdate', +// alias: 'Umb.EntityAction.DocumentBlueprint.Folder.Rename', +// name: 'Rename Document Blueprint Folder Entity Action', +// forEntityTypes: [UMB_DOCUMENT_BLUEPRINT_FOLDER_ENTITY_TYPE], +// meta: { +// folderRepositoryAlias: UMB_DOCUMENT_BLUEPRINT_FOLDER_REPOSITORY_ALIAS, +// }, +// }, +// { +// type: 'entityAction', +// kind: 'folderDelete', +// alias: 'Umb.EntityAction.DocumentBlueprint.Folder.Delete', +// name: 'Delete Document Blueprint Folder Entity Action', +// forEntityTypes: [UMB_DOCUMENT_BLUEPRINT_FOLDER_ENTITY_TYPE], +// meta: { +// folderRepositoryAlias: UMB_DOCUMENT_BLUEPRINT_FOLDER_REPOSITORY_ALIAS, +// }, +// }, +// ]; + +// export const manifests = [folderRepository, ...entityActions]; diff --git a/src/Umbraco.Web.UI.Client/src/packages/documents/document-blueprints/tree/folder/types.ts b/src/Umbraco.Web.UI.Client/src/packages/documents/document-blueprints/tree/folder/types.ts new file mode 100644 index 0000000000..e29ea4ff3b --- /dev/null +++ b/src/Umbraco.Web.UI.Client/src/packages/documents/document-blueprints/tree/folder/types.ts @@ -0,0 +1,6 @@ +// import type { UMB_DOCUMENT_BLUEPRINT_FOLDER_ENTITY_TYPE } from '../../entity.js'; +// import type { UmbDocumentBlueprintTreeItemModel } from '../types.js'; + +// export interface UmbDocumentBlueprintFolderTreeItemModel extends UmbDocumentBlueprintTreeItemModel { +// entityType: typeof UMB_DOCUMENT_BLUEPRINT_FOLDER_ENTITY_TYPE; +// } diff --git a/src/Umbraco.Web.UI.Client/src/packages/documents/document-blueprints/tree/index.ts b/src/Umbraco.Web.UI.Client/src/packages/documents/document-blueprints/tree/index.ts new file mode 100644 index 0000000000..9f2a67da2f --- /dev/null +++ b/src/Umbraco.Web.UI.Client/src/packages/documents/document-blueprints/tree/index.ts @@ -0,0 +1,2 @@ +export { UMB_DOCUMENT_BLUEPRINT_TREE_STORE_CONTEXT } from './document-blueprint-tree.store.js'; +//export * from './folder/index.js'; diff --git a/src/Umbraco.Web.UI.Client/src/packages/documents/document-blueprints/tree/manifests.ts b/src/Umbraco.Web.UI.Client/src/packages/documents/document-blueprints/tree/manifests.ts new file mode 100644 index 0000000000..1a085f7d96 --- /dev/null +++ b/src/Umbraco.Web.UI.Client/src/packages/documents/document-blueprints/tree/manifests.ts @@ -0,0 +1,50 @@ +import { UMB_DOCUMENT_BLUEPRINT_ENTITY_TYPE, UMB_DOCUMENT_BLUEPRINT_FOLDER_ENTITY_TYPE } from '../entity.js'; +//import { manifests as folderManifests } from './folder/manifests.js'; +import { manifests as reloadManifests } from './reload-tree-item-children/manifests.js'; +import { UmbDocumentBlueprintTreeRepository } from './document-blueprint-tree.repository.js'; +import { UmbDocumentBlueprintTreeStore } from './document-blueprint-tree.store.js'; +import type { + ManifestRepository, + ManifestTree, + ManifestTreeItem, + ManifestTreeStore, +} from '@umbraco-cms/backoffice/extension-registry'; + +export const UMB_DOCUMENT_BLUEPRINT_TREE_REPOSITORY_ALIAS = 'Umb.Repository.DocumentBlueprint.Tree'; +export const UMB_DOCUMENT_BLUEPRINT_TREE_STORE_ALIAS = 'Umb.Store.DocumentBlueprint.Tree'; +export const UMB_DOCUMENT_BLUEPRINT_TREE_ALIAS = 'Umb.Tree.DocumentBlueprint'; + +const treeRepository: ManifestRepository = { + type: 'repository', + alias: UMB_DOCUMENT_BLUEPRINT_TREE_REPOSITORY_ALIAS, + name: 'Document Blueprint Tree Repository', + api: UmbDocumentBlueprintTreeRepository, +}; + +const treeStore: ManifestTreeStore = { + type: 'treeStore', + alias: UMB_DOCUMENT_BLUEPRINT_TREE_STORE_ALIAS, + name: 'Document Blueprint Tree Store', + api: UmbDocumentBlueprintTreeStore, +}; + +const tree: ManifestTree = { + type: 'tree', + kind: 'default', + alias: UMB_DOCUMENT_BLUEPRINT_TREE_ALIAS, + name: 'Document Blueprints Tree', + meta: { + repositoryAlias: UMB_DOCUMENT_BLUEPRINT_TREE_REPOSITORY_ALIAS, + }, +}; + +const treeItem: ManifestTreeItem = { + type: 'treeItem', + kind: 'default', + alias: 'Umb.TreeItem.DocumentBlueprint', + name: 'Document Blueprint Tree Item', + forEntityTypes: [UMB_DOCUMENT_BLUEPRINT_ENTITY_TYPE, UMB_DOCUMENT_BLUEPRINT_FOLDER_ENTITY_TYPE], +}; + +export const manifests = [treeRepository, treeStore, tree, treeItem, ...reloadManifests]; +//...folderManifests, diff --git a/src/Umbraco.Web.UI.Client/src/packages/documents/document-blueprints/tree/reload-tree-item-children/manifests.ts b/src/Umbraco.Web.UI.Client/src/packages/documents/document-blueprints/tree/reload-tree-item-children/manifests.ts new file mode 100644 index 0000000000..54c0de35fa --- /dev/null +++ b/src/Umbraco.Web.UI.Client/src/packages/documents/document-blueprints/tree/reload-tree-item-children/manifests.ts @@ -0,0 +1,13 @@ +import { UMB_DOCUMENT_BLUEPRINT_ENTITY_TYPE, UMB_DOCUMENT_BLUEPRINT_FOLDER_ENTITY_TYPE } from '../../entity.js'; +import type { ManifestTypes } from '@umbraco-cms/backoffice/extension-registry'; + +export const manifests: Array = [ + { + type: 'entityAction', + kind: 'reloadTreeItemChildren', + alias: 'Umb.EntityAction.DocumentBlueprint.Tree.ReloadChildrenOf', + name: 'Reload Document Blueprint Tree Item Children Entity Action', + forEntityTypes: [UMB_DOCUMENT_BLUEPRINT_ENTITY_TYPE, UMB_DOCUMENT_BLUEPRINT_FOLDER_ENTITY_TYPE], + meta: {}, + }, +]; diff --git a/src/Umbraco.Web.UI.Client/src/packages/documents/document-blueprints/tree/types.ts b/src/Umbraco.Web.UI.Client/src/packages/documents/document-blueprints/tree/types.ts new file mode 100644 index 0000000000..fbe951351d --- /dev/null +++ b/src/Umbraco.Web.UI.Client/src/packages/documents/document-blueprints/tree/types.ts @@ -0,0 +1,8 @@ +import type { UmbDocumentBlueprintEntityType, UmbDocumentBlueprintFolderEntityType } from '../entity.js'; +import type { UmbUniqueTreeItemModel, UmbUniqueTreeRootModel } from '@umbraco-cms/backoffice/tree'; + +export interface UmbDocumentBlueprintTreeRootModel extends UmbUniqueTreeRootModel {} + +export interface UmbDocumentBlueprintTreeItemModel extends UmbUniqueTreeItemModel { + entityType: UmbDocumentBlueprintEntityType | UmbDocumentBlueprintFolderEntityType; +} diff --git a/src/Umbraco.Web.UI.Client/src/packages/documents/document-blueprints/types.ts b/src/Umbraco.Web.UI.Client/src/packages/documents/document-blueprints/types.ts new file mode 100644 index 0000000000..09965e112f --- /dev/null +++ b/src/Umbraco.Web.UI.Client/src/packages/documents/document-blueprints/types.ts @@ -0,0 +1,36 @@ +import type { UmbDocumentBlueprintEntityType } from './entity.js'; +import type { UmbVariantModel, UmbVariantOptionModel } from '@umbraco-cms/backoffice/variant'; +import type { UmbReferenceByUnique } from '@umbraco-cms/backoffice/models'; +import { DocumentVariantStateModel as UmbDocumentBlueprintVariantState } from '@umbraco-cms/backoffice/external/backend-api'; +export { UmbDocumentBlueprintVariantState }; + +export interface UmbDocumentBlueprintDetailModel { + documentType: { + unique: string; + collection: UmbReferenceByUnique | null; + }; + entityType: UmbDocumentBlueprintEntityType; + unique: string; + values: Array; + variants: Array; +} + +export interface UmbDocumentBlueprintVariantModel extends UmbVariantModel { + state?: UmbDocumentBlueprintVariantState | null; + publishDate?: string | null; +} + +export interface UmbDocumentBlueprintUrlInfoModel { + culture: string | null; + url: string; +} + +export interface UmbDocumentBlueprintValueModel { + culture: string | null; + segment: string | null; + alias: string; + value: ValueType; +} + +export interface UmbDocumentBlueprintVariantOptionModel + extends UmbVariantOptionModel {} diff --git a/src/Umbraco.Web.UI.Client/src/packages/documents/document-blueprints/workspace/document-blueprint-root-workspace.element.ts b/src/Umbraco.Web.UI.Client/src/packages/documents/document-blueprints/workspace/document-blueprint-root-workspace.element.ts index acc70aef58..a2595863dd 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/documents/document-blueprints/workspace/document-blueprint-root-workspace.element.ts +++ b/src/Umbraco.Web.UI.Client/src/packages/documents/document-blueprints/workspace/document-blueprint-root-workspace.element.ts @@ -1,14 +1,60 @@ -import { html, customElement } from '@umbraco-cms/backoffice/external/lit'; +import { html, customElement, css } from '@umbraco-cms/backoffice/external/lit'; import { UmbLitElement } from '@umbraco-cms/backoffice/lit-element'; @customElement('umb-document-blueprint-root-workspace') export class UmbDocumentBlueprintRootWorkspaceElement extends UmbLitElement { render() { - return html`
Document Blueprint Root Workspace
`; + return html` +
+ +

+ What are Content Blueprints? +

+ + Content Blueprints are pre-defined content that can be selected when creating a new content node. + +

+ + How do I create a Content Blueprint? + +

+ +

There are two ways to create a Content Blueprint:

+
    +
  • + Right-click a content node and select "Create Content Blueprint" to create a new Content Blueprint. +
  • +
  • + Right-click the Content Blueprints tree in the Settings section and select the Document Type you want to + create a Content Blueprint for. +
  • +
+

Once given a name, editors can start using the Content Blueprint as a foundation for their new page.

+
+

+ + How do I manage Content Blueprints? + +

+ + You can edit and delete Content Blueprints from the "Content Blueprints" tree in the Settings section. + Expand the Document Type which the Content Blueprint is based on and click it to edit or delete it. + +
+
+
`; } + + static styles = [ + css` + #wrapper { + margin: var(--uui-size-layout-1); + } + `, + ]; } -export { UmbDocumentBlueprintRootWorkspaceElement as element }; +export default UmbDocumentBlueprintRootWorkspaceElement; declare global { interface HTMLElementTagNameMap { diff --git a/src/Umbraco.Web.UI.Client/src/packages/documents/document-blueprints/workspace/document-blueprint-workspace-editor.element.ts b/src/Umbraco.Web.UI.Client/src/packages/documents/document-blueprints/workspace/document-blueprint-workspace-editor.element.ts new file mode 100644 index 0000000000..9387350ca2 --- /dev/null +++ b/src/Umbraco.Web.UI.Client/src/packages/documents/document-blueprints/workspace/document-blueprint-workspace-editor.element.ts @@ -0,0 +1,129 @@ +import type { UmbDocumentBlueprintVariantOptionModel } from '../types.js'; +import { UmbDocumentBlueprintWorkspaceSplitViewElement } from './document-blueprint-workspace-split-view.element.js'; +import { UMB_DOCUMENT_BLUEPRINT_WORKSPACE_CONTEXT } from './document-blueprint-workspace.context-token.js'; +import { customElement, state, css, html } from '@umbraco-cms/backoffice/external/lit'; +import { UmbLitElement } from '@umbraco-cms/backoffice/lit-element'; +import { UmbTextStyles } from '@umbraco-cms/backoffice/style'; +import type { UmbRoute, UmbRouterSlotInitEvent } from '@umbraco-cms/backoffice/router'; + +@customElement('umb-document-blueprint-workspace-editor') +export class UmbDocumentBlueprintWorkspaceEditorElement extends UmbLitElement { + // + // TODO: Refactor: when having a split view/variants context token, we can rename the split view/variants component to a generic and make this component generic as well. [NL] + private splitViewElement = new UmbDocumentBlueprintWorkspaceSplitViewElement(); + + #workspaceContext?: typeof UMB_DOCUMENT_BLUEPRINT_WORKSPACE_CONTEXT.TYPE; + + @state() + _routes?: Array; + + constructor() { + super(); + console.log('editor'); + + this.consumeContext(UMB_DOCUMENT_BLUEPRINT_WORKSPACE_CONTEXT, (instance) => { + this.#workspaceContext = instance; + this.#observeVariants(); + }); + } + + #observeVariants() { + if (!this.#workspaceContext) return; + this.observe(this.#workspaceContext.variantOptions, (options) => this._generateRoutes(options), '_observeVariants'); + } + + private _handleVariantFolderPart(index: number, folderPart: string) { + const variantSplit = folderPart.split('_'); + const culture = variantSplit[0]; + const segment = variantSplit[1]; + this.#workspaceContext?.splitView.setActiveVariant(index, culture, segment); + } + + private async _generateRoutes(variants: Array) { + if (!variants || variants.length === 0) return; + + // Generate split view routes for all available routes + const routes: Array = []; + + // Split view routes: + variants.forEach((variantA) => { + variants.forEach((variantB) => { + routes.push({ + // TODO: When implementing Segments, be aware if using the unique is URL Safe... [NL] + path: variantA.unique + '_&_' + variantB.unique, + component: this.splitViewElement, + setup: (_component, info) => { + // Set split view/active info.. + const variantSplit = info.match.fragments.consumed.split('_&_'); + variantSplit.forEach((part, index) => { + this._handleVariantFolderPart(index, part); + }); + }, + }); + }); + }); + + // Single view: + variants.forEach((variant) => { + routes.push({ + // TODO: When implementing Segments, be aware if using the unique is URL Safe... [NL] + path: variant.unique, + component: this.splitViewElement, + setup: (_component, info) => { + // cause we might come from a split-view, we need to reset index 1. + this.#workspaceContext?.splitView.removeActiveVariant(1); + this._handleVariantFolderPart(0, info.match.fragments.consumed); + }, + }); + }); + + if (routes.length !== 0) { + // Using first single view as the default route for now (hence the math below): + routes.push({ + path: '', + redirectTo: routes[variants.length * variants.length]?.path, + }); + } + + const oldValue = this._routes; + + // is there any differences in the amount ot the paths? [NL] + // TODO: if we make a memorization function as the observer, we can avoid this check and avoid the whole build of routes. [NL] + if (oldValue && oldValue.length === routes.length) { + // is there any differences in the paths? [NL] + const hasDifferences = oldValue.some((route, index) => route.path !== routes[index].path); + if (!hasDifferences) return; + } + this._routes = routes; + this.requestUpdate('_routes', oldValue); + } + + private _gotWorkspaceRoute = (e: UmbRouterSlotInitEvent) => { + this.#workspaceContext?.splitView.setWorkspaceRoute(e.target.absoluteRouterPath); + }; + + render() { + return this._routes && this._routes.length > 0 + ? html`` + : ''; + } + + static styles = [ + UmbTextStyles, + css` + :host { + display: block; + width: 100%; + height: 100%; + } + `, + ]; +} + +export default UmbDocumentBlueprintWorkspaceEditorElement; + +declare global { + interface HTMLElementTagNameMap { + 'umb-document-blueprint-workspace-editor': UmbDocumentBlueprintWorkspaceEditorElement; + } +} diff --git a/src/Umbraco.Web.UI.Client/src/packages/documents/document-blueprints/workspace/document-blueprint-workspace-split-view.element.ts b/src/Umbraco.Web.UI.Client/src/packages/documents/document-blueprints/workspace/document-blueprint-workspace-split-view.element.ts new file mode 100644 index 0000000000..77cc3b90b3 --- /dev/null +++ b/src/Umbraco.Web.UI.Client/src/packages/documents/document-blueprints/workspace/document-blueprint-workspace-split-view.element.ts @@ -0,0 +1,87 @@ +import { UMB_DOCUMENT_BLUEPRINT_WORKSPACE_CONTEXT } from './document-blueprint-workspace.context-token.js'; +import { UmbTextStyles } from '@umbraco-cms/backoffice/style'; +import { css, html, nothing, customElement, state, repeat } from '@umbraco-cms/backoffice/external/lit'; +import type { ActiveVariant } from '@umbraco-cms/backoffice/workspace'; +import { UmbLitElement } from '@umbraco-cms/backoffice/lit-element'; + +@customElement('umb-document-blueprint-workspace-split-view') +export class UmbDocumentBlueprintWorkspaceSplitViewElement extends UmbLitElement { + // TODO: Refactor: use the split view context token: + private _workspaceContext?: typeof UMB_DOCUMENT_BLUEPRINT_WORKSPACE_CONTEXT.TYPE; + + @state() + _variants?: Array; + + constructor() { + super(); + + // TODO: Refactor: use a split view workspace context token: + this.consumeContext(UMB_DOCUMENT_BLUEPRINT_WORKSPACE_CONTEXT, (context) => { + this._workspaceContext = context; + this._observeActiveVariantInfo(); + }); + } + + private _observeActiveVariantInfo() { + if (!this._workspaceContext) return; + this.observe( + this._workspaceContext.splitView.activeVariantsInfo, + (variants) => { + this._variants = variants; + }, + '_observeActiveVariantsInfo', + ); + } + + render() { + return this._variants + ? html`
+ ${repeat( + this._variants, + (view) => + view.index + '_' + (view.culture ?? '') + '_' + (view.segment ?? '') + '_' + this._variants!.length, + (view) => html` + + `, + )} +
+ + ` + : nothing; + } + + static styles = [ + UmbTextStyles, + css` + :host { + width: 100%; + height: 100%; + + display: flex; + flex: 1; + flex-direction: column; + } + + #splitViews { + display: flex; + width: 100%; + height: calc(100% - var(--umb-footer-layout-height)); + } + + #breadcrumbs { + margin: 0 var(--uui-size-layout-1); + } + `, + ]; +} + +export default UmbDocumentBlueprintWorkspaceSplitViewElement; + +declare global { + interface HTMLElementTagNameMap { + 'umb-document-blueprint-workspace-split-view': UmbDocumentBlueprintWorkspaceSplitViewElement; + } +} diff --git a/src/Umbraco.Web.UI.Client/src/packages/documents/document-blueprints/workspace/document-blueprint-workspace.context-token.ts b/src/Umbraco.Web.UI.Client/src/packages/documents/document-blueprints/workspace/document-blueprint-workspace.context-token.ts new file mode 100644 index 0000000000..ae5d2144e2 --- /dev/null +++ b/src/Umbraco.Web.UI.Client/src/packages/documents/document-blueprints/workspace/document-blueprint-workspace.context-token.ts @@ -0,0 +1,14 @@ +import { UMB_DOCUMENT_BLUEPRINT_ENTITY_TYPE } from '../entity.js'; +import type { UmbDocumentBlueprintWorkspaceContext } from './document-blueprint-workspace.context.js'; +import { UmbContextToken } from '@umbraco-cms/backoffice/context-api'; +import type { UmbSubmittableWorkspaceContext } from '@umbraco-cms/backoffice/workspace'; + +export const UMB_DOCUMENT_BLUEPRINT_WORKSPACE_CONTEXT = new UmbContextToken< + UmbSubmittableWorkspaceContext, + UmbDocumentBlueprintWorkspaceContext +>( + 'UmbWorkspaceContext', + undefined, + (context): context is UmbDocumentBlueprintWorkspaceContext => + context.getEntityType?.() === UMB_DOCUMENT_BLUEPRINT_ENTITY_TYPE, +); diff --git a/src/Umbraco.Web.UI.Client/src/packages/documents/document-blueprints/workspace/document-blueprint-workspace.context.ts b/src/Umbraco.Web.UI.Client/src/packages/documents/document-blueprints/workspace/document-blueprint-workspace.context.ts new file mode 100644 index 0000000000..49024a6b9a --- /dev/null +++ b/src/Umbraco.Web.UI.Client/src/packages/documents/document-blueprints/workspace/document-blueprint-workspace.context.ts @@ -0,0 +1,446 @@ +import { UMB_DOCUMENT_BLUEPRINT_ENTITY_TYPE } from '../entity.js'; +import { UmbDocumentBlueprintDetailRepository } from '../repository/index.js'; +import type { + UmbDocumentBlueprintDetailModel, + UmbDocumentBlueprintVariantModel, + UmbDocumentBlueprintVariantOptionModel, +} from '../types.js'; +import { UmbDocumentPropertyDataContext } from '../../documents/property-dataset-context/document-property-dataset-context.js'; +import { + appendToFrozenArray, + mergeObservables, + UmbArrayState, + UmbObjectState, +} from '@umbraco-cms/backoffice/observable-api'; +import { + UmbSubmittableWorkspaceContextBase, + UmbWorkspaceIsNewRedirectController, + UmbWorkspaceRouteManager, + UmbWorkspaceSplitViewManager, +} from '@umbraco-cms/backoffice/workspace'; +import { UmbContentTypeStructureManager } from '@umbraco-cms/backoffice/content-type'; +import { UmbDocumentTypeDetailRepository } from '@umbraco-cms/backoffice/document-type'; +import { UmbLanguageCollectionRepository } from '@umbraco-cms/backoffice/language'; +import { UmbRequestReloadTreeItemChildrenEvent } from '@umbraco-cms/backoffice/tree'; +import { UmbRequestReloadStructureForEntityEvent } from '@umbraco-cms/backoffice/entity-action'; +import { UMB_ACTION_EVENT_CONTEXT } from '@umbraco-cms/backoffice/action'; +import { UMB_INVARIANT_CULTURE, UmbVariantId } from '@umbraco-cms/backoffice/variant'; +import type { UmbControllerHost } from '@umbraco-cms/backoffice/controller-api'; +import type { UmbLanguageDetailModel } from '@umbraco-cms/backoffice/language'; +import type { UmbRoutableWorkspaceContext } from '@umbraco-cms/backoffice/workspace'; +import { UmbDocumentWorkspaceContext } from '@umbraco-cms/backoffice/document'; + +type EntityType = UmbDocumentBlueprintDetailModel; + +export class UmbDocumentBlueprintWorkspaceContext + extends UmbSubmittableWorkspaceContextBase + implements UmbRoutableWorkspaceContext +{ + // + readonly repository = new UmbDocumentBlueprintDetailRepository(this); + + #parent = new UmbObjectState<{ entityType: string; unique: string | null } | undefined>(undefined); + readonly parentUnique = this.#parent.asObservablePart((parent) => (parent ? parent.unique : undefined)); + + /** + */ + #persistedData = new UmbObjectState(undefined); + + #currentData = new UmbObjectState(undefined); + + // TODo: Optimize this so it uses either a App Language Context? [NL] + #languageRepository = new UmbLanguageCollectionRepository(this); + #languages = new UmbArrayState([], (x) => x.unique); + public readonly languages = this.#languages.asObservable(); + + readonly unique = this.#currentData.asObservablePart((data) => data?.unique); + readonly contentTypeUnique = this.#currentData.asObservablePart((data) => data?.documentType.unique); + + readonly variants = this.#currentData.asObservablePart((data) => data?.variants || []); + + //readonly urls = this.#currentData.asObservablePart((data) => data?.urls || []); + + readonly structure = new UmbContentTypeStructureManager(this, new UmbDocumentTypeDetailRepository(this)); + readonly variesByCulture = this.structure.ownerContentTypePart((x) => x?.variesByCulture); + //#variesByCulture?: boolean; + readonly variesBySegment = this.structure.ownerContentTypePart((x) => x?.variesBySegment); + //#variesBySegment?: boolean; + readonly varies = this.structure.ownerContentTypePart((x) => + x ? x.variesByCulture || x.variesBySegment : undefined, + ); + #varies?: boolean; + + readonly routes = new UmbWorkspaceRouteManager(this); + readonly splitView = new UmbWorkspaceSplitViewManager(); + + readonly variantOptions = mergeObservables( + [this.varies, this.variants, this.languages], + ([varies, variants, languages]) => { + // TODO: When including segments, when be aware about the case of segment varying when not culture varying. [NL] + if (varies === true) { + return languages.map((language) => { + return { + variant: variants.find((x) => x.culture === language.unique), + language, + // TODO: When including segments, this object should be updated to include a object for the segment. [NL] + // TODO: When including segments, the unique should be updated to include the segment as well. [NL] + unique: language.unique, // This must be a variantId string! + culture: language.unique, + segment: null, + } as UmbDocumentBlueprintVariantOptionModel; + }); + } else if (varies === false) { + return [ + { + variant: variants.find((x) => x.culture === null), + language: languages.find((x) => x.isDefault), + culture: null, + segment: null, + unique: UMB_INVARIANT_CULTURE, // This must be a variantId string! + } as UmbDocumentBlueprintVariantOptionModel, + ]; + } + return [] as Array; + }, + ); + + constructor(host: UmbControllerHost) { + super(host, 'Umb.Workspace.DocumentBlueprint'); + + this.observe(this.contentTypeUnique, (unique) => this.structure.loadType(unique)); + this.observe(this.varies, (varies) => (this.#varies = varies)); + + this.loadLanguages(); + + this.routes.setRoutes([ + { + path: 'create/parent/:entityType/:parentUnique/:documentTypeUnique', + component: () => import('./document-blueprint-workspace-editor.element.js'), + setup: async (_component, info) => { + const parentEntityType = info.match.params.entityType; + const parentUnique = info.match.params.parentUnique === 'null' ? null : info.match.params.parentUnique; + const documentTypeUnique = info.match.params.documentTypeUnique; + this.create({ entityType: parentEntityType, unique: parentUnique }, documentTypeUnique); + + new UmbWorkspaceIsNewRedirectController( + this, + this, + this.getHostElement().shadowRoot!.querySelector('umb-router-slot')!, + ); + }, + }, + { + path: 'edit/null', + component: () => import('./document-blueprint-root-workspace.element.js'), + }, + { + path: 'edit/:unique', + component: () => import('./document-blueprint-workspace-editor.element.js'), + setup: (_component, info) => { + this.removeUmbControllerByAlias('isNewRedirectController'); + const unique = info.match.params.unique; + this.load(unique); + }, + }, + ]); + } + + resetState() { + super.resetState(); + this.#persistedData.setValue(undefined); + this.#currentData.setValue(undefined); + } + + async loadLanguages() { + // TODO: If we don't end up having a Global Context for languages, then we should at least change this into using a asObservable which should be returned from the repository. [Nl] + const { data } = await this.#languageRepository.requestCollection({}); + this.#languages.setValue(data?.items ?? []); + } + + async load(unique: string) { + this.resetState(); + + const { data, asObservable } = await this.repository.requestByUnique(unique); + + if (data) { + this.setIsNew(false); + this.#persistedData.update(data); + this.#currentData.update(data); + } + + if (asObservable) { + this.observe(asObservable(), (entity) => this.#onStoreChange(entity), 'UmbDocumentBlueprintStoreObserver'); + } + } + + #onStoreChange(entity: EntityType | undefined) { + if (!entity) { + //TODO: This solution is alright for now. But reconsider when we introduce signal-r + history.pushState(null, '', 'section/document-blueprint'); + } + } + + async create(parent: { entityType: string; unique: string | null }, documentTypeUnique: string) { + this.resetState(); + this.#parent.setValue(parent); + + const { data } = await this.repository.createScaffold({ + documentType: { unique: documentTypeUnique, collection: null }, + }); + + if (!data) return undefined; + + this.setIsNew(true); + this.#persistedData.setValue(data); + this.#currentData.setValue(data); + return data; + } + + getData() { + return this.#currentData.getValue(); + } + + getUnique() { + return this.getData()?.unique; + } + + getEntityType() { + return UMB_DOCUMENT_BLUEPRINT_ENTITY_TYPE; + } + + getContentTypeId() { + return this.getData()?.documentType.unique; + } + + // TODO: Check if this is used: + getVaries() { + return this.#varies; + } + + variantById(variantId: UmbVariantId) { + return this.#currentData.asObservablePart((data) => data?.variants?.find((x) => variantId.compare(x))); + } + + getVariant(variantId: UmbVariantId) { + return this.#currentData.getValue()?.variants?.find((x) => variantId.compare(x)); + } + + getName(variantId?: UmbVariantId) { + const variants = this.#currentData.getValue()?.variants; + if (!variants) return; + if (variantId) { + return variants.find((x) => variantId.compare(x))?.name; + } else { + return variants[0]?.name; + } + } + + setName(name: string, variantId?: UmbVariantId) { + // const oldVariants = this.#currentData.getValue()?.variants || []; + // const variants = partialUpdateFrozenArray( + // oldVariants, + // { name }, + // variantId ? (x) => variantId.compare(x) : () => true, + // ); + // this.#currentData.update({ variants }); + + this.#updateVariantData(variantId ?? UmbVariantId.CreateInvariant(), { name }); + } + + name(variantId?: UmbVariantId) { + return this.#currentData.asObservablePart((data) => data?.variants?.find((x) => variantId?.compare(x))?.name ?? ''); + } + + async propertyStructureById(propertyId: string) { + return this.structure.propertyStructureById(propertyId); + } + + async propertyValueByAlias(propertyAlias: string, variantId?: UmbVariantId) { + return this.#currentData.asObservablePart( + (data) => + data?.values?.find((x) => x?.alias === propertyAlias && (variantId ? variantId.compare(x as any) : true)) + ?.value as PropertyValueType, + ); + } + + /** + * Get the current value of the property with the given alias and variantId. + * @param alias + * @param variantId + * @returns The value or undefined if not set or found. + */ + getPropertyValue(alias: string, variantId?: UmbVariantId) { + const currentData = this.#currentData.value; + if (currentData) { + const newDataSet = currentData.values?.find( + (x) => x.alias === alias && (variantId ? variantId.compare(x as any) : true), + ); + return newDataSet?.value as ReturnType; + } + return undefined; + } + async setPropertyValue( + alias: string, + value: UmbDocumentBlueprintValueModel, + variantId?: UmbVariantId, + ) { + if (!variantId) throw new Error('VariantId is missing'); + + const entry = { ...variantId.toObject(), alias, value }; + const currentData = this.#currentData.value; + if (currentData) { + const values = appendToFrozenArray( + currentData.values || [], + entry, + (x) => x.alias === alias && (variantId ? variantId.compare(x as any) : true), + ); + this.#currentData.update({ values }); + + // TODO: We should move this type of logic to the act of saving [NL] + this.#updateVariantData(variantId); + } + } + + /* #calculateChangedVariants() { + const persisted = this.#persistedData.getValue(); + const current = this.#currentData.getValue(); + if (!current) throw new Error('Current data is missing'); + + const changedVariants = current?.variants.map((variant) => { + const persistedVariant = persisted?.variants.find((x) => UmbVariantId.Create(variant).compare(x)); + return { + culture: variant.culture, + segment: variant.segment, + equal: persistedVariant ? jsonStringComparison(variant, persistedVariant) : false, + }; + }); + + const changedProperties = current?.values.map((value) => { + const persistedValues = persisted?.values.find((x) => UmbVariantId.Create(value).compare(x)); + return { + culture: value.culture, + segment: value.segment, + equal: persistedValues ? jsonStringComparison(value, persistedValues) : false, + }; + }); + + // calculate the variantIds of those who either have a change in properties or in variants: + return ( + changedVariants + ?.concat(changedProperties ?? []) + .filter((x) => x.equal === false) + .map((x) => new UmbVariantId(x.culture, x.segment)) ?? [] + ); + } */ + + #updateVariantData(variantId: UmbVariantId, update?: Partial) { + const currentData = this.getData(); + if (!currentData) throw new Error('Data is missing'); + if (this.#varies === true) { + // If variant Id is invariant, we don't to have the variant appended to our data. + if (variantId.isInvariant()) return; + const variant = currentData.variants.find((x) => variantId.compare(x)); + const newVariants = appendToFrozenArray( + currentData.variants, + { + name: '', + createDate: null, + updateDate: null, + ...variantId.toObject(), + ...variant, + ...update, + }, + (x) => variantId.compare(x), + ); + this.#currentData.update({ variants: newVariants }); + } else if (this.#varies === false) { + // TODO: Beware about segments, in this case we need to also consider segments, if its allowed to vary by segments. + const invariantVariantId = UmbVariantId.CreateInvariant(); + const variant = currentData.variants.find((x) => invariantVariantId.compare(x)); + // Cause we are invariant, we will just overwrite all variants with this one: + const newVariants = [ + { + name: '', + createDate: null, + updateDate: null, + ...invariantVariantId.toObject(), + ...variant, + ...update, + }, + ]; + this.#currentData.update({ variants: newVariants }); + } else { + throw new Error('Varies by culture is missing'); + } + } + + async #createOrSave() { + if (!this.#currentData.value?.unique) throw new Error('Unique is missing'); + + if (this.getIsNew()) { + const parent = this.#parent.getValue(); + if (!parent) throw new Error('Parent is not set'); + const value = this.#currentData.value; + + if ((await this.repository.create(value, parent.unique)).data !== undefined) { + this.setIsNew(false); + + // TODO: this might not be the right place to alert the tree, but it works for now + const eventContext = await this.getContext(UMB_ACTION_EVENT_CONTEXT); + const event = new UmbRequestReloadTreeItemChildrenEvent({ + entityType: parent.entityType, + unique: parent.unique, + }); + eventContext.dispatchEvent(event); + } + } else { + await this.repository.save(this.#currentData.value); + + const actionEventContext = await this.getContext(UMB_ACTION_EVENT_CONTEXT); + const event = new UmbRequestReloadStructureForEntityEvent({ + unique: this.getUnique()!, + entityType: this.getEntityType(), + }); + + actionEventContext.dispatchEvent(event); + } + } + + async submit() { + const data = this.getData(); + if (!data) throw new Error('Data is missing'); + await this.#createOrSave(); + this.setIsNew(false); + return true; + } + + async delete() { + const id = this.getUnique(); + if (id) { + await this.repository.delete(id); + } + } + + /* + concept notes: + + public saveAndPreview() { + + } + */ + + public createPropertyDatasetContext(host: UmbControllerHost, variantId: UmbVariantId) { + // TODO: [LK] Temporary workaround/hack to get the workspace to load. + const docCxt = new UmbDocumentWorkspaceContext(host); + return new UmbDocumentPropertyDataContext(host, docCxt, variantId); + } + + public destroy(): void { + this.#persistedData.destroy(); + this.#currentData.destroy(); + this.structure.destroy(); + super.destroy(); + } +} + +export { UmbDocumentBlueprintWorkspaceContext as api }; diff --git a/src/Umbraco.Web.UI.Client/src/packages/documents/document-blueprints/workspace/index.ts b/src/Umbraco.Web.UI.Client/src/packages/documents/document-blueprints/workspace/index.ts new file mode 100644 index 0000000000..22a5c8eeab --- /dev/null +++ b/src/Umbraco.Web.UI.Client/src/packages/documents/document-blueprints/workspace/index.ts @@ -0,0 +1 @@ +export * from './document-blueprint-workspace.context-token.js'; diff --git a/src/Umbraco.Web.UI.Client/src/packages/documents/document-blueprints/workspace/manifests.ts b/src/Umbraco.Web.UI.Client/src/packages/documents/document-blueprints/workspace/manifests.ts index 7983bf294f..9427a1084f 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/documents/document-blueprints/workspace/manifests.ts +++ b/src/Umbraco.Web.UI.Client/src/packages/documents/document-blueprints/workspace/manifests.ts @@ -1,13 +1,40 @@ -import type { ManifestWorkspace } from '@umbraco-cms/backoffice/extension-registry'; +import { UMB_DOCUMENT_BLUEPRINT_ENTITY_TYPE } from '../entity.js'; +import { UmbSaveWorkspaceAction } from '@umbraco-cms/backoffice/workspace'; +import type { ManifestWorkspace, ManifestWorkspaceActions } from '@umbraco-cms/backoffice/extension-registry'; + +export const UMB_DOCUMENT_BLUEPRINT_WORKSPACE_ALIAS = 'Umb.Workspace.DocumentBlueprint'; const workspace: ManifestWorkspace = { type: 'workspace', - alias: 'Umb.Workspace.DocumentBlueprint.Root', - name: 'Document Blueprint Root Workspace', - element: () => import('./document-blueprint-root-workspace.element.js'), + kind: 'routable', + alias: UMB_DOCUMENT_BLUEPRINT_WORKSPACE_ALIAS, + name: 'Document Blueprint Workspace', + api: () => import('./document-blueprint-workspace.context.js'), meta: { - entityType: 'document-blueprint-root', + entityType: UMB_DOCUMENT_BLUEPRINT_ENTITY_TYPE, }, }; -export const manifests = [workspace]; +const workspaceActions: Array = [ + { + type: 'workspaceAction', + kind: 'default', + alias: 'Umb.WorkspaceAction.DocumentBlueprint.Save', + name: 'Save Document Workspace Action', + weight: 80, + api: UmbSaveWorkspaceAction, + meta: { + label: 'Save', + look: 'secondary', + color: 'positive', + }, + conditions: [ + { + alias: 'Umb.Condition.WorkspaceAlias', + match: workspace.alias, + }, + ], + }, +]; + +export const manifests = [workspace, ...workspaceActions]; diff --git a/src/Umbraco.Web.UI.Client/src/packages/documents/document-types/entity-actions/create/manifests.ts b/src/Umbraco.Web.UI.Client/src/packages/documents/document-types/entity-actions/create/manifests.ts index e22aaa3ac6..fcea8dd858 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/documents/document-types/entity-actions/create/manifests.ts +++ b/src/Umbraco.Web.UI.Client/src/packages/documents/document-types/entity-actions/create/manifests.ts @@ -21,7 +21,7 @@ const entityActions: Array = [ ], meta: { icon: 'icon-add', - label: 'Create...', + label: '#actions_create', }, }, { diff --git a/src/Umbraco.Web.UI.Client/src/packages/documents/document-types/repository/composition/document-type-composition.server.data-source.ts b/src/Umbraco.Web.UI.Client/src/packages/documents/document-types/repository/composition/document-type-composition.server.data-source.ts index e49f351ddc..0422becef4 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/documents/document-types/repository/composition/document-type-composition.server.data-source.ts +++ b/src/Umbraco.Web.UI.Client/src/packages/documents/document-types/repository/composition/document-type-composition.server.data-source.ts @@ -5,7 +5,7 @@ import type { } from '../../types.js'; import { type DocumentTypeCompositionRequestModel, - DocumentTypeResource, + DocumentTypeService, } from '@umbraco-cms/backoffice/external/backend-api'; import type { UmbControllerHost } from '@umbraco-cms/backoffice/controller-api'; import { tryExecuteAndNotify } from '@umbraco-cms/backoffice/resources'; @@ -35,7 +35,7 @@ export class UmbDocumentTypeCompositionServerDataSource { async getReferences(unique: string) { const response = await tryExecuteAndNotify( this.#host, - DocumentTypeResource.getDocumentTypeByIdCompositionReferences({ id: unique }), + DocumentTypeService.getDocumentTypeByIdCompositionReferences({ id: unique }), ); const error = response.error; const data: Array | undefined = response.data?.map((reference) => { @@ -64,7 +64,7 @@ export class UmbDocumentTypeCompositionServerDataSource { const response = await tryExecuteAndNotify( this.#host, - DocumentTypeResource.postDocumentTypeAvailableCompositions({ requestBody }), + DocumentTypeService.postDocumentTypeAvailableCompositions({ requestBody }), ); const error = response.error; const data: Array | undefined = response.data?.map((composition) => { diff --git a/src/Umbraco.Web.UI.Client/src/packages/documents/document-types/repository/detail/document-type-detail.server.data-source.ts b/src/Umbraco.Web.UI.Client/src/packages/documents/document-types/repository/detail/document-type-detail.server.data-source.ts index 1d6e7f12a3..23019e7fa2 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/documents/document-types/repository/detail/document-type-detail.server.data-source.ts +++ b/src/Umbraco.Web.UI.Client/src/packages/documents/document-types/repository/detail/document-type-detail.server.data-source.ts @@ -6,7 +6,7 @@ import type { CreateDocumentTypeRequestModel, UpdateDocumentTypeRequestModel, } from '@umbraco-cms/backoffice/external/backend-api'; -import { DocumentTypeResource } from '@umbraco-cms/backoffice/external/backend-api'; +import { DocumentTypeService } from '@umbraco-cms/backoffice/external/backend-api'; import type { UmbControllerHost } from '@umbraco-cms/backoffice/controller-api'; import { tryExecuteAndNotify } from '@umbraco-cms/backoffice/resources'; import type { UmbPropertyTypeContainerModel } from '@umbraco-cms/backoffice/content-type'; @@ -76,7 +76,7 @@ export class UmbDocumentTypeDetailServerDataSource implements UmbDetailDataSourc const { data, error } = await tryExecuteAndNotify( this.#host, - DocumentTypeResource.getDocumentTypeById({ id: unique }), + DocumentTypeService.getDocumentTypeById({ id: unique }), ); if (error || !data) { @@ -190,7 +190,7 @@ export class UmbDocumentTypeDetailServerDataSource implements UmbDetailDataSourc const { data, error } = await tryExecuteAndNotify( this.#host, - DocumentTypeResource.postDocumentType({ + DocumentTypeService.postDocumentType({ requestBody, }), ); @@ -257,7 +257,7 @@ export class UmbDocumentTypeDetailServerDataSource implements UmbDetailDataSourc const { error } = await tryExecuteAndNotify( this.#host, - DocumentTypeResource.putDocumentTypeById({ + DocumentTypeService.putDocumentTypeById({ id: model.unique, requestBody, }), @@ -281,7 +281,7 @@ export class UmbDocumentTypeDetailServerDataSource implements UmbDetailDataSourc return tryExecuteAndNotify( this.#host, - DocumentTypeResource.deleteDocumentTypeById({ + DocumentTypeService.deleteDocumentTypeById({ id: unique, }), ); diff --git a/src/Umbraco.Web.UI.Client/src/packages/documents/document-types/repository/item/document-type-item.server.data-source.ts b/src/Umbraco.Web.UI.Client/src/packages/documents/document-types/repository/item/document-type-item.server.data-source.ts index 608de5c6d7..3c14064764 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/documents/document-types/repository/item/document-type-item.server.data-source.ts +++ b/src/Umbraco.Web.UI.Client/src/packages/documents/document-types/repository/item/document-type-item.server.data-source.ts @@ -1,7 +1,7 @@ import type { UmbDocumentTypeItemModel } from './types.js'; import { UmbItemServerDataSourceBase } from '@umbraco-cms/backoffice/repository'; import type { DocumentTypeItemResponseModel } from '@umbraco-cms/backoffice/external/backend-api'; -import { DocumentTypeResource } from '@umbraco-cms/backoffice/external/backend-api'; +import { DocumentTypeService } from '@umbraco-cms/backoffice/external/backend-api'; import type { UmbControllerHost } from '@umbraco-cms/backoffice/controller-api'; /** @@ -25,7 +25,7 @@ export class UmbDocumentTypeItemServerDataSource extends UmbItemServerDataSource } /* eslint-disable local-rules/no-direct-api-import */ -const getItems = (uniques: Array) => DocumentTypeResource.getItemDocumentType({ id: uniques }); +const getItems = (uniques: Array) => DocumentTypeService.getItemDocumentType({ id: uniques }); const mapper = (item: DocumentTypeItemResponseModel): UmbDocumentTypeItemModel => { return { diff --git a/src/Umbraco.Web.UI.Client/src/packages/documents/document-types/repository/structure/document-type-structure.server.data-source.ts b/src/Umbraco.Web.UI.Client/src/packages/documents/document-types/repository/structure/document-type-structure.server.data-source.ts index 1a4dc8b280..aead8f5ff7 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/documents/document-types/repository/structure/document-type-structure.server.data-source.ts +++ b/src/Umbraco.Web.UI.Client/src/packages/documents/document-types/repository/structure/document-type-structure.server.data-source.ts @@ -1,6 +1,6 @@ import type { UmbAllowedDocumentTypeModel } from './types.js'; import type { AllowedDocumentTypeModel } from '@umbraco-cms/backoffice/external/backend-api'; -import { DocumentTypeResource } from '@umbraco-cms/backoffice/external/backend-api'; +import { DocumentTypeService } from '@umbraco-cms/backoffice/external/backend-api'; import { UmbContentTypeStructureServerDataSourceBase } from '@umbraco-cms/backoffice/content-type'; import type { UmbControllerHost } from '@umbraco-cms/backoffice/controller-api'; @@ -22,10 +22,10 @@ export class UmbDocumentTypeStructureServerDataSource extends UmbContentTypeStru const getAllowedChildrenOf = (unique: string | null) => { if (unique) { // eslint-disable-next-line local-rules/no-direct-api-import - return DocumentTypeResource.getDocumentTypeByIdAllowedChildren({ id: unique }); + return DocumentTypeService.getDocumentTypeByIdAllowedChildren({ id: unique }); } else { // eslint-disable-next-line local-rules/no-direct-api-import - return DocumentTypeResource.getDocumentTypeAllowedAtRoot({}); + return DocumentTypeService.getDocumentTypeAllowedAtRoot({}); } }; diff --git a/src/Umbraco.Web.UI.Client/src/packages/documents/document-types/tree/document-type-tree.repository.ts b/src/Umbraco.Web.UI.Client/src/packages/documents/document-types/tree/document-type-tree.repository.ts index 0f45c87dfa..15d2f7f74c 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/documents/document-types/tree/document-type-tree.repository.ts +++ b/src/Umbraco.Web.UI.Client/src/packages/documents/document-types/tree/document-type-tree.repository.ts @@ -18,7 +18,7 @@ export class UmbDocumentTypeTreeRepository const data: UmbDocumentTypeTreeRootModel = { unique: null, entityType: UMB_DOCUMENT_TYPE_ROOT_ENTITY_TYPE, - name: 'Document Types', + name: '#treeHeaders_documentTypes', hasChildren: true, isFolder: true, }; diff --git a/src/Umbraco.Web.UI.Client/src/packages/documents/document-types/tree/document-type.tree.server.data-source.ts b/src/Umbraco.Web.UI.Client/src/packages/documents/document-types/tree/document-type.tree.server.data-source.ts index 6988ebde67..f8df358f0f 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/documents/document-types/tree/document-type.tree.server.data-source.ts +++ b/src/Umbraco.Web.UI.Client/src/packages/documents/document-types/tree/document-type.tree.server.data-source.ts @@ -7,7 +7,7 @@ import type { } from '@umbraco-cms/backoffice/tree'; import { UmbTreeServerDataSourceBase } from '@umbraco-cms/backoffice/tree'; import type { DocumentTypeTreeItemResponseModel } from '@umbraco-cms/backoffice/external/backend-api'; -import { DocumentTypeResource } from '@umbraco-cms/backoffice/external/backend-api'; +import { DocumentTypeService } from '@umbraco-cms/backoffice/external/backend-api'; import type { UmbControllerHost } from '@umbraco-cms/backoffice/controller-api'; /** @@ -37,14 +37,14 @@ export class UmbDocumentTypeTreeServerDataSource extends UmbTreeServerDataSource const getRootItems = (args: UmbTreeRootItemsRequestArgs) => // eslint-disable-next-line local-rules/no-direct-api-import - DocumentTypeResource.getTreeDocumentTypeRoot({ skip: args.skip, take: args.take }); + DocumentTypeService.getTreeDocumentTypeRoot({ skip: args.skip, take: args.take }); const getChildrenOf = (args: UmbTreeChildrenOfRequestArgs) => { if (args.parentUnique === null) { return getRootItems({ skip: args.skip, take: args.take }); } else { // eslint-disable-next-line local-rules/no-direct-api-import - return DocumentTypeResource.getTreeDocumentTypeChildren({ + return DocumentTypeService.getTreeDocumentTypeChildren({ parentId: args.parentUnique, skip: args.skip, take: args.take, @@ -54,7 +54,7 @@ const getChildrenOf = (args: UmbTreeChildrenOfRequestArgs) => { const getAncestorsOf = (args: UmbTreeAncestorsOfRequestArgs) => // eslint-disable-next-line local-rules/no-direct-api-import - DocumentTypeResource.getTreeDocumentTypeAncestors({ + DocumentTypeService.getTreeDocumentTypeAncestors({ descendantId: args.descendantUnique, }); diff --git a/src/Umbraco.Web.UI.Client/src/packages/documents/document-types/tree/folder/document-type-folder.server.data-source.ts b/src/Umbraco.Web.UI.Client/src/packages/documents/document-types/tree/folder/document-type-folder.server.data-source.ts index 5371e5c03f..03d1fcee78 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/documents/document-types/tree/folder/document-type-folder.server.data-source.ts +++ b/src/Umbraco.Web.UI.Client/src/packages/documents/document-types/tree/folder/document-type-folder.server.data-source.ts @@ -1,5 +1,5 @@ import type { UmbCreateFolderModel, UmbFolderDataSource, UmbUpdateFolderModel } from '@umbraco-cms/backoffice/tree'; -import { DocumentTypeResource } from '@umbraco-cms/backoffice/external/backend-api'; +import { DocumentTypeService } from '@umbraco-cms/backoffice/external/backend-api'; import type { UmbControllerHost } from '@umbraco-cms/backoffice/controller-api'; import { tryExecuteAndNotify } from '@umbraco-cms/backoffice/resources'; @@ -32,7 +32,7 @@ export class UmbDocumentTypeFolderServerDataSource implements UmbFolderDataSourc const { data, error } = await tryExecuteAndNotify( this.#host, - DocumentTypeResource.getDocumentTypeFolderById({ + DocumentTypeService.getDocumentTypeFolderById({ id: unique, }), ); @@ -67,7 +67,7 @@ export class UmbDocumentTypeFolderServerDataSource implements UmbFolderDataSourc const { error } = await tryExecuteAndNotify( this.#host, - DocumentTypeResource.postDocumentTypeFolder({ + DocumentTypeService.postDocumentTypeFolder({ requestBody, }), ); @@ -91,7 +91,7 @@ export class UmbDocumentTypeFolderServerDataSource implements UmbFolderDataSourc const { error } = await tryExecuteAndNotify( this.#host, - DocumentTypeResource.putDocumentTypeFolderById({ + DocumentTypeService.putDocumentTypeFolderById({ id: args.unique, requestBody: { name: args.name }, }), @@ -114,7 +114,7 @@ export class UmbDocumentTypeFolderServerDataSource implements UmbFolderDataSourc if (!unique) throw new Error('Unique is missing'); return tryExecuteAndNotify( this.#host, - DocumentTypeResource.deleteDocumentTypeFolderById({ + DocumentTypeService.deleteDocumentTypeFolderById({ id: unique, }), ); diff --git a/src/Umbraco.Web.UI.Client/src/packages/documents/document-types/workspace/manifests.ts b/src/Umbraco.Web.UI.Client/src/packages/documents/document-types/workspace/manifests.ts index 7aa4387ada..deaca635a6 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/documents/document-types/workspace/manifests.ts +++ b/src/Umbraco.Web.UI.Client/src/packages/documents/document-types/workspace/manifests.ts @@ -26,7 +26,7 @@ const workspaceViews: Array = [ alias: 'Umb.WorkspaceView.DocumentType.Design', name: 'Document Type Workspace Design View', meta: { - label: 'Design', + label: '#general_design', pathname: 'design', icon: 'icon-document-dashed-line', compositionRepositoryAlias: UMB_DOCUMENT_TYPE_COMPOSITION_REPOSITORY_ALIAS, @@ -45,7 +45,7 @@ const workspaceViews: Array = [ element: () => import('./views/structure/document-type-workspace-view-structure.element.js'), weight: 800, meta: { - label: 'Structure', + label: '#contentTypeEditor_structure', pathname: 'structure', icon: 'icon-mindmap', }, @@ -63,7 +63,7 @@ const workspaceViews: Array = [ element: () => import('./views/settings/document-type-workspace-view-settings.element.js'), weight: 600, meta: { - label: 'Settings', + label: '#general_settings', pathname: 'settings', icon: 'icon-settings', }, @@ -81,7 +81,7 @@ const workspaceViews: Array = [ element: () => import('./views/templates/document-type-workspace-view-templates.element.js'), weight: 400, meta: { - label: 'Templates', + label: '#treeHeaders_templates', pathname: 'templates', icon: 'icon-layout', }, @@ -102,7 +102,7 @@ const workspaceActions: Array = [ name: 'Save Document Type Workspace Action', api: UmbSubmitWorkspaceAction, meta: { - label: 'Save', + label: '#buttons_save', look: 'primary', color: 'positive', }, diff --git a/src/Umbraco.Web.UI.Client/src/packages/documents/documents/collection/repository/document-collection.server.data-source.ts b/src/Umbraco.Web.UI.Client/src/packages/documents/documents/collection/repository/document-collection.server.data-source.ts index 654f500253..c6899b78ed 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/documents/documents/collection/repository/document-collection.server.data-source.ts +++ b/src/Umbraco.Web.UI.Client/src/packages/documents/documents/collection/repository/document-collection.server.data-source.ts @@ -1,5 +1,5 @@ import type { UmbDocumentCollectionFilterModel, UmbDocumentCollectionItemModel } from '../types.js'; -import { DirectionModel, DocumentResource } from '@umbraco-cms/backoffice/external/backend-api'; +import { DirectionModel, DocumentService } from '@umbraco-cms/backoffice/external/backend-api'; import { tryExecuteAndNotify } from '@umbraco-cms/backoffice/resources'; import type { DocumentCollectionResponseModel } from '@umbraco-cms/backoffice/external/backend-api'; import type { UmbCollectionDataSource } from '@umbraco-cms/backoffice/collection'; @@ -28,7 +28,7 @@ export class UmbDocumentCollectionServerDataSource implements UmbCollectionDataS take: query.take ?? 100, }; - const { data, error } = await tryExecuteAndNotify(this.#host, DocumentResource.getCollectionDocumentById(params)); + const { data, error } = await tryExecuteAndNotify(this.#host, DocumentService.getCollectionDocumentById(params)); if (data) { const items = data.items.map((item: DocumentCollectionResponseModel) => { @@ -37,6 +37,7 @@ export class UmbDocumentCollectionServerDataSource implements UmbCollectionDataS const model: UmbDocumentCollectionItemModel = { unique: item.id, + entityType: 'document', contentTypeAlias: item.documentType.alias, createDate: new Date(variant.createDate), creator: item.creator, @@ -46,7 +47,7 @@ export class UmbDocumentCollectionServerDataSource implements UmbCollectionDataS updateDate: new Date(variant.updateDate), updater: item.updater, values: item.values.map((item) => { - return { alias: item.alias, value: item.value }; + return { alias: item.alias, value: item.value as string }; }), }; return model; diff --git a/src/Umbraco.Web.UI.Client/src/packages/documents/documents/collection/types.ts b/src/Umbraco.Web.UI.Client/src/packages/documents/documents/collection/types.ts index 329f3bfb83..103dde6ac0 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/documents/documents/collection/types.ts +++ b/src/Umbraco.Web.UI.Client/src/packages/documents/documents/collection/types.ts @@ -11,6 +11,7 @@ export interface UmbDocumentCollectionFilterModel extends UmbCollectionFilterMod export interface UmbDocumentCollectionItemModel { unique: string; + entityType: string; contentTypeAlias: string; createDate: Date; creator?: string | null; diff --git a/src/Umbraco.Web.UI.Client/src/packages/documents/documents/entity-actions/create-blueprint.action.ts b/src/Umbraco.Web.UI.Client/src/packages/documents/documents/entity-actions/create-blueprint.action.ts deleted file mode 100644 index dac438922f..0000000000 --- a/src/Umbraco.Web.UI.Client/src/packages/documents/documents/entity-actions/create-blueprint.action.ts +++ /dev/null @@ -1,15 +0,0 @@ -import type { UmbEntityActionArgs } from '@umbraco-cms/backoffice/entity-action'; -import { UmbEntityActionBase } from '@umbraco-cms/backoffice/entity-action'; -import type { UmbControllerHost } from '@umbraco-cms/backoffice/controller-api'; - -export class UmbCreateDocumentBlueprintEntityAction extends UmbEntityActionBase { - constructor(host: UmbControllerHost, args: UmbEntityActionArgs) { - super(host, args); - } - - async execute() { - console.log(`execute for: ${this.args.unique}`); - //await this.repository?.createBlueprint(); - } -} -export default UmbCreateDocumentBlueprintEntityAction; diff --git a/src/Umbraco.Web.UI.Client/src/packages/documents/documents/entity-actions/create-blueprint/create-blueprint.action.ts b/src/Umbraco.Web.UI.Client/src/packages/documents/documents/entity-actions/create-blueprint/create-blueprint.action.ts new file mode 100644 index 0000000000..6bf9bec25d --- /dev/null +++ b/src/Umbraco.Web.UI.Client/src/packages/documents/documents/entity-actions/create-blueprint/create-blueprint.action.ts @@ -0,0 +1,23 @@ +import { UMB_CREATE_BLUEPRINT_MODAL } from './modal/create-blueprint-modal.token.js'; +import type { UmbEntityActionArgs } from '@umbraco-cms/backoffice/entity-action'; +import { UmbEntityActionBase } from '@umbraco-cms/backoffice/entity-action'; +import type { UmbControllerHost } from '@umbraco-cms/backoffice/controller-api'; +import { UMB_MODAL_MANAGER_CONTEXT } from '@umbraco-cms/backoffice/modal'; +import { UmbDocumentBlueprintDetailRepository } from '@umbraco-cms/backoffice/document-blueprint'; + +export class UmbCreateDocumentBlueprintEntityAction extends UmbEntityActionBase { + #repository = new UmbDocumentBlueprintDetailRepository(this); + + constructor(host: UmbControllerHost, args: UmbEntityActionArgs) { + super(host, args); + } + + async execute() { + const modalManager = await this.getContext(UMB_MODAL_MANAGER_CONTEXT); + const modalContext = modalManager.open(this, UMB_CREATE_BLUEPRINT_MODAL, { + data: { unique: this.args.unique }, + }); + await modalContext.onSubmit().catch(() => undefined); + } +} +export default UmbCreateDocumentBlueprintEntityAction; diff --git a/src/Umbraco.Web.UI.Client/src/packages/documents/documents/entity-actions/create-blueprint/index.ts b/src/Umbraco.Web.UI.Client/src/packages/documents/documents/entity-actions/create-blueprint/index.ts new file mode 100644 index 0000000000..28d9f38fba --- /dev/null +++ b/src/Umbraco.Web.UI.Client/src/packages/documents/documents/entity-actions/create-blueprint/index.ts @@ -0,0 +1 @@ +export * from './modal/index.js'; diff --git a/src/Umbraco.Web.UI.Client/src/packages/documents/documents/entity-actions/create-blueprint/manifests.ts b/src/Umbraco.Web.UI.Client/src/packages/documents/documents/entity-actions/create-blueprint/manifests.ts new file mode 100644 index 0000000000..5950207852 --- /dev/null +++ b/src/Umbraco.Web.UI.Client/src/packages/documents/documents/entity-actions/create-blueprint/manifests.ts @@ -0,0 +1,36 @@ +import { UMB_DOCUMENT_ENTITY_TYPE } from '../../entity.js'; +import { UMB_USER_PERMISSION_DOCUMENT_CREATE_BLUEPRINT } from '../../user-permissions/constants.js'; +import type { ManifestTypes } from '@umbraco-cms/backoffice/extension-registry'; + +const entityActions: Array = [ + { + type: 'entityAction', + kind: 'default', + alias: 'Umb.EntityAction.Document.CreateBlueprint', + name: 'Create Document Blueprint Entity Action', + weight: 1000, + api: () => import('./create-blueprint.action.js'), + forEntityTypes: [UMB_DOCUMENT_ENTITY_TYPE], + meta: { + icon: 'icon-blueprint', + label: '#actions_createblueprint', + }, + conditions: [ + { + alias: 'Umb.Condition.UserPermission.Document', + allOf: [UMB_USER_PERMISSION_DOCUMENT_CREATE_BLUEPRINT], + }, + ], + }, +]; + +const manifestModals: Array = [ + { + type: 'modal', + alias: 'Umb.Modal.CreateBlueprint', + name: 'Create Blueprint Modal', + js: () => import('./modal/create-blueprint-modal.element.js'), + }, +]; + +export const manifests = [...entityActions, ...manifestModals]; diff --git a/src/Umbraco.Web.UI.Client/src/packages/documents/documents/entity-actions/create-blueprint/modal/create-blueprint-modal.element.ts b/src/Umbraco.Web.UI.Client/src/packages/documents/documents/entity-actions/create-blueprint/modal/create-blueprint-modal.element.ts new file mode 100644 index 0000000000..b099cb20af --- /dev/null +++ b/src/Umbraco.Web.UI.Client/src/packages/documents/documents/entity-actions/create-blueprint/modal/create-blueprint-modal.element.ts @@ -0,0 +1,120 @@ +import { UmbDocumentDetailRepository } from '../../../repository/index.js'; +import type { UmbCreateBlueprintModalData } from './create-blueprint-modal.token.js'; +import { html, customElement, css, state } from '@umbraco-cms/backoffice/external/lit'; +import { UmbTextStyles } from '@umbraco-cms/backoffice/style'; +import { UmbModalBaseElement } from '@umbraco-cms/backoffice/modal'; +import type { UmbDocumentDetailModel } from '@umbraco-cms/backoffice/document'; +import { + type UmbDocumentBlueprintDetailModel, + UmbDocumentBlueprintDetailRepository, +} from '@umbraco-cms/backoffice/document-blueprint'; +import type { UUIInputEvent } from '@umbraco-cms/backoffice/external/uui'; +import { UmbId } from '@umbraco-cms/backoffice/id'; + +@customElement('umb-create-blueprint-modal') +export class UmbCreateBlueprintModalElement extends UmbModalBaseElement { + #blueprintRepository = new UmbDocumentBlueprintDetailRepository(this); + #documentRepository = new UmbDocumentDetailRepository(this); + + #documentUnique = ''; + #document?: UmbDocumentDetailModel; + + @state() + private _documentName = ''; + + @state() + private _blueprintName = ''; + + firstUpdated() { + this.#documentUnique = this.data?.unique ?? ''; + this.#getDocumentData(); + } + + async #getDocumentData() { + const { data } = await this.#documentRepository.requestByUnique(this.#documentUnique); + if (!data) return; + + this.#document = data; + this._documentName = data.variants[0].name; + this._blueprintName = data.variants[0].name; + } + + #mapDocumentToBlueprintModel() { + if (!this.#document) return; + const variants = this.#document?.variants.map((variant) => ({ ...variant, name: this._blueprintName })); + const model: UmbDocumentBlueprintDetailModel = { + ...this.#document, + entityType: 'document-blueprint', + variants, + unique: UmbId.new(), + }; + + return model; + } + + async #handleSave() { + const model = this.#mapDocumentToBlueprintModel(); + if (!model) return; + const { error } = await this.#blueprintRepository.create(model, null); + console.log('error', error); + this.modalContext?.submit(); + } + + #renderBlueprintName() { + return html`Create a new Content Template from ${this._documentName} + A Content Template is predefined content that an editor can select to use as the basis for creating new content . + Name + (this._blueprintName = e.target.value as string)}>`; + } + + render() { + return html` + + ${this.#renderBlueprintName()} + + + + `; + } + + #handleClose() { + this.modalContext?.reject(); + } + + static styles = [ + UmbTextStyles, + css` + strong, + uui-label, + uui-input { + display: block; + } + + uui-label { + margin-top: var(--uui-size-space-6); + } + `, + ]; +} + +export default UmbCreateBlueprintModalElement; + +declare global { + interface HTMLElementTagNameMap { + 'umb-create-blueprint-modal': UmbCreateBlueprintModalElement; + } +} diff --git a/src/Umbraco.Web.UI.Client/src/packages/documents/documents/entity-actions/create-blueprint/modal/create-blueprint-modal.token.ts b/src/Umbraco.Web.UI.Client/src/packages/documents/documents/entity-actions/create-blueprint/modal/create-blueprint-modal.token.ts new file mode 100644 index 0000000000..dbd009afca --- /dev/null +++ b/src/Umbraco.Web.UI.Client/src/packages/documents/documents/entity-actions/create-blueprint/modal/create-blueprint-modal.token.ts @@ -0,0 +1,15 @@ +import { UmbModalToken } from '@umbraco-cms/backoffice/modal'; + +export interface UmbCreateBlueprintModalData { + unique: string | null; +} + +export const UMB_CREATE_BLUEPRINT_MODAL = new UmbModalToken( + 'Umb.Modal.CreateBlueprint', + { + modal: { + type: 'sidebar', + size: 'small', + }, + }, +); diff --git a/src/Umbraco.Web.UI.Client/src/packages/documents/documents/entity-actions/create-blueprint/modal/index.ts b/src/Umbraco.Web.UI.Client/src/packages/documents/documents/entity-actions/create-blueprint/modal/index.ts new file mode 100644 index 0000000000..9f1d8090a6 --- /dev/null +++ b/src/Umbraco.Web.UI.Client/src/packages/documents/documents/entity-actions/create-blueprint/modal/index.ts @@ -0,0 +1,2 @@ +export * from './create-blueprint-modal.token.js'; +export * from './create-blueprint-modal.element.js'; diff --git a/src/Umbraco.Web.UI.Client/src/packages/documents/documents/entity-actions/create/manifests.ts b/src/Umbraco.Web.UI.Client/src/packages/documents/documents/entity-actions/create/manifests.ts index 844d5dd2ff..1f7ccebe2d 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/documents/documents/entity-actions/create/manifests.ts +++ b/src/Umbraco.Web.UI.Client/src/packages/documents/documents/entity-actions/create/manifests.ts @@ -1,4 +1,5 @@ import { UMB_DOCUMENT_ENTITY_TYPE, UMB_DOCUMENT_ROOT_ENTITY_TYPE } from '../../entity.js'; +import { UMB_USER_PERMISSION_DOCUMENT_CREATE } from '../../user-permissions/index.js'; import type { ManifestTypes } from '@umbraco-cms/backoffice/extension-registry'; const entityActions: Array = [ @@ -12,8 +13,14 @@ const entityActions: Array = [ forEntityTypes: [UMB_DOCUMENT_ROOT_ENTITY_TYPE, UMB_DOCUMENT_ENTITY_TYPE], meta: { icon: 'icon-add', - label: 'Create...', + label: '#actions_create', }, + conditions: [ + { + alias: 'Umb.Condition.UserPermission.Document', + allOf: [UMB_USER_PERMISSION_DOCUMENT_CREATE], + }, + ], }, ]; diff --git a/src/Umbraco.Web.UI.Client/src/packages/documents/documents/entity-actions/culture-and-hostnames/manifests.ts b/src/Umbraco.Web.UI.Client/src/packages/documents/documents/entity-actions/culture-and-hostnames/manifests.ts index 76f0b2f269..42d1b6ccbe 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/documents/documents/entity-actions/culture-and-hostnames/manifests.ts +++ b/src/Umbraco.Web.UI.Client/src/packages/documents/documents/entity-actions/culture-and-hostnames/manifests.ts @@ -1,4 +1,5 @@ import { UMB_DOCUMENT_ENTITY_TYPE } from '../../entity.js'; +import { UMB_USER_PERMISSION_DOCUMENT_CULTURE_AND_HOSTNAMES } from '../../user-permissions/index.js'; import { UmbDocumentCultureAndHostnamesEntityAction } from './culture-and-hostnames.action.js'; import type { ManifestTypes } from '@umbraco-cms/backoffice/extension-registry'; @@ -13,8 +14,14 @@ const entityActions: Array = [ forEntityTypes: [UMB_DOCUMENT_ENTITY_TYPE], meta: { icon: 'icon-home', - label: 'Culture and Hostnames...', + label: '#actions_assigndomain', }, + conditions: [ + { + alias: 'Umb.Condition.UserPermission.Document', + allOf: [UMB_USER_PERMISSION_DOCUMENT_CULTURE_AND_HOSTNAMES], + }, + ], }, ]; diff --git a/src/Umbraco.Web.UI.Client/src/packages/documents/documents/entity-actions/culture-and-hostnames/repository/culture-and-hostnames.server.data.ts b/src/Umbraco.Web.UI.Client/src/packages/documents/documents/entity-actions/culture-and-hostnames/repository/culture-and-hostnames.server.data.ts index 213f6406c0..94d47ff21f 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/documents/documents/entity-actions/culture-and-hostnames/repository/culture-and-hostnames.server.data.ts +++ b/src/Umbraco.Web.UI.Client/src/packages/documents/documents/entity-actions/culture-and-hostnames/repository/culture-and-hostnames.server.data.ts @@ -1,4 +1,4 @@ -import { DocumentResource } from '@umbraco-cms/backoffice/external/backend-api'; +import { DocumentService } from '@umbraco-cms/backoffice/external/backend-api'; import type { UpdateDomainsRequestModel } from '@umbraco-cms/backoffice/external/backend-api'; import type { UmbControllerHost } from '@umbraco-cms/backoffice/controller-api'; import { tryExecuteAndNotify } from '@umbraco-cms/backoffice/resources'; @@ -28,7 +28,7 @@ export class UmbDocumentCultureAndHostnamesServerDataSource { */ async read(unique: string) { if (!unique) throw new Error('Unique is missing'); - return tryExecuteAndNotify(this.#host, DocumentResource.getDocumentByIdDomains({ id: unique })); + return tryExecuteAndNotify(this.#host, DocumentService.getDocumentByIdDomains({ id: unique })); } /** @@ -39,6 +39,6 @@ export class UmbDocumentCultureAndHostnamesServerDataSource { */ async update(unique: string, data: UpdateDomainsRequestModel) { if (!unique) throw new Error('Unique is missing'); - return tryExecuteAndNotify(this.#host, DocumentResource.putDocumentByIdDomains({ id: unique, requestBody: data })); + return tryExecuteAndNotify(this.#host, DocumentService.putDocumentByIdDomains({ id: unique, requestBody: data })); } } diff --git a/src/Umbraco.Web.UI.Client/src/packages/documents/documents/entity-actions/manifests.ts b/src/Umbraco.Web.UI.Client/src/packages/documents/documents/entity-actions/manifests.ts index 3d5c84ca4c..8d0ab6f62c 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/documents/documents/entity-actions/manifests.ts +++ b/src/Umbraco.Web.UI.Client/src/packages/documents/documents/entity-actions/manifests.ts @@ -1,7 +1,17 @@ -import { UMB_DOCUMENT_DETAIL_REPOSITORY_ALIAS } from '../repository/index.js'; +import { UMB_DOCUMENT_DETAIL_REPOSITORY_ALIAS, UMB_DOCUMENT_ITEM_REPOSITORY_ALIAS } from '../repository/index.js'; import { UMB_DOCUMENT_ENTITY_TYPE } from '../entity.js'; import { UMB_DOCUMENT_PICKER_MODAL } from '../modals/index.js'; +import { + UMB_USER_PERMISSION_DOCUMENT_DELETE, + UMB_USER_PERMISSION_DOCUMENT_DUPLICATE, + UMB_USER_PERMISSION_DOCUMENT_MOVE, + UMB_USER_PERMISSION_DOCUMENT_NOTIFICATIONS, + UMB_USER_PERMISSION_DOCUMENT_PERMISSIONS, + UMB_USER_PERMISSION_DOCUMENT_PUBLISH, + UMB_USER_PERMISSION_DOCUMENT_UNPUBLISH, +} from '../user-permissions/constants.js'; import { manifests as createManifests } from './create/manifests.js'; +import { manifests as createBlueprintManifests } from './create-blueprint/manifests.js'; import { manifests as publicAccessManifests } from './public-access/manifests.js'; import { manifests as cultureAndHostnamesManifests } from './culture-and-hostnames/manifests.js'; import { manifests as sortChildrenOfManifests } from './sort-children-of/manifests.js'; @@ -13,26 +23,17 @@ const entityActions: Array = [ kind: 'delete', alias: 'Umb.EntityAction.Document.Delete', name: 'Delete Document Entity Action', - weight: 1100, forEntityTypes: [UMB_DOCUMENT_ENTITY_TYPE], meta: { - deleteRepositoryAlias: UMB_DOCUMENT_DETAIL_REPOSITORY_ALIAS, - itemRepositoryAlias: UMB_DOCUMENT_DETAIL_REPOSITORY_ALIAS, - pickerModalAlias: UMB_DOCUMENT_PICKER_MODAL, - }, - }, - { - type: 'entityAction', - kind: 'default', - alias: 'Umb.EntityAction.Document.CreateBlueprint', - name: 'Create Document Blueprint Entity Action', - weight: 1000, - api: () => import('./create-blueprint.action.js'), - forEntityTypes: [UMB_DOCUMENT_ENTITY_TYPE], - meta: { - icon: 'icon-blueprint', - label: 'Create Document Blueprint (TBD)', + itemRepositoryAlias: UMB_DOCUMENT_ITEM_REPOSITORY_ALIAS, + detailRepositoryAlias: UMB_DOCUMENT_DETAIL_REPOSITORY_ALIAS, }, + conditions: [ + { + alias: 'Umb.Condition.UserPermission.Document', + allOf: [UMB_USER_PERMISSION_DOCUMENT_DELETE], + }, + ], }, { type: 'entityAction', @@ -46,6 +47,12 @@ const entityActions: Array = [ itemRepositoryAlias: UMB_DOCUMENT_DETAIL_REPOSITORY_ALIAS, pickerModelAlias: UMB_DOCUMENT_PICKER_MODAL, }, + conditions: [ + { + alias: 'Umb.Condition.UserPermission.Document', + allOf: [UMB_USER_PERMISSION_DOCUMENT_MOVE], + }, + ], }, { type: 'entityAction', @@ -59,6 +66,12 @@ const entityActions: Array = [ itemRepositoryAlias: UMB_DOCUMENT_DETAIL_REPOSITORY_ALIAS, pickerModal: UMB_DOCUMENT_PICKER_MODAL, }, + conditions: [ + { + alias: 'Umb.Condition.UserPermission.Document', + allOf: [UMB_USER_PERMISSION_DOCUMENT_DUPLICATE], + }, + ], }, { type: 'entityAction', @@ -70,8 +83,14 @@ const entityActions: Array = [ forEntityTypes: [UMB_DOCUMENT_ENTITY_TYPE], meta: { icon: 'icon-globe', - label: 'Publish', + label: '#actions_publish', }, + conditions: [ + { + alias: 'Umb.Condition.UserPermission.Document', + allOf: [UMB_USER_PERMISSION_DOCUMENT_PUBLISH], + }, + ], }, { type: 'entityAction', @@ -83,8 +102,14 @@ const entityActions: Array = [ forEntityTypes: [UMB_DOCUMENT_ENTITY_TYPE], meta: { icon: 'icon-globe', - label: 'Unpublish...', + label: '#actions_unpublish', }, + conditions: [ + { + alias: 'Umb.Condition.UserPermission.Document', + allOf: [UMB_USER_PERMISSION_DOCUMENT_UNPUBLISH], + }, + ], }, { type: 'entityAction', @@ -96,8 +121,14 @@ const entityActions: Array = [ api: () => import('./permissions.action.js'), meta: { icon: 'icon-name-badge', - label: 'Permissions...', + label: '#actions_setPermissions', }, + conditions: [ + { + alias: 'Umb.Condition.UserPermission.Document', + allOf: [UMB_USER_PERMISSION_DOCUMENT_PERMISSIONS], + }, + ], }, { type: 'entityAction', @@ -109,13 +140,20 @@ const entityActions: Array = [ api: () => import('./permissions.action.js'), meta: { icon: 'icon-megaphone', - label: 'Notifications...', + label: '#actions_notify', }, + conditions: [ + { + alias: 'Umb.Condition.UserPermission.Document', + allOf: [UMB_USER_PERMISSION_DOCUMENT_NOTIFICATIONS], + }, + ], }, ]; export const manifests = [ ...createManifests, + ...createBlueprintManifests, ...publicAccessManifests, ...cultureAndHostnamesManifests, ...sortChildrenOfManifests, diff --git a/src/Umbraco.Web.UI.Client/src/packages/documents/documents/entity-actions/public-access/manifests.ts b/src/Umbraco.Web.UI.Client/src/packages/documents/documents/entity-actions/public-access/manifests.ts index 6fafa57fb6..7f75cf107b 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/documents/documents/entity-actions/public-access/manifests.ts +++ b/src/Umbraco.Web.UI.Client/src/packages/documents/documents/entity-actions/public-access/manifests.ts @@ -1,4 +1,5 @@ import { UMB_DOCUMENT_ENTITY_TYPE } from '../../entity.js'; +import { UMB_USER_PERMISSION_DOCUMENT_PUBLIC_ACCESS } from '../../user-permissions/index.js'; import { UmbDocumentPublicAccessEntityAction } from './public-access.action.js'; import type { ManifestTypes } from '@umbraco-cms/backoffice/extension-registry'; @@ -7,14 +8,20 @@ const entityActions: Array = [ type: 'entityAction', kind: 'default', alias: 'Umb.EntityAction.Document.PublicAccess', - name: 'Document Permissions Entity Action', + name: 'Document Public Access Entity Action', weight: 200, api: UmbDocumentPublicAccessEntityAction, forEntityTypes: [UMB_DOCUMENT_ENTITY_TYPE], meta: { icon: 'icon-lock', - label: 'Restrict Public Access...', + label: '#actions_protect', }, + conditions: [ + { + alias: 'Umb.Condition.UserPermission.Document', + allOf: [UMB_USER_PERMISSION_DOCUMENT_PUBLIC_ACCESS], + }, + ], }, ]; diff --git a/src/Umbraco.Web.UI.Client/src/packages/documents/documents/entity-actions/public-access/repository/public-access.server.data.ts b/src/Umbraco.Web.UI.Client/src/packages/documents/documents/entity-actions/public-access/repository/public-access.server.data.ts index 41e9453d94..61d9fac657 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/documents/documents/entity-actions/public-access/repository/public-access.server.data.ts +++ b/src/Umbraco.Web.UI.Client/src/packages/documents/documents/entity-actions/public-access/repository/public-access.server.data.ts @@ -1,4 +1,4 @@ -import { DocumentResource } from '@umbraco-cms/backoffice/external/backend-api'; +import { DocumentService } from '@umbraco-cms/backoffice/external/backend-api'; import type { PublicAccessRequestModel } from '@umbraco-cms/backoffice/external/backend-api'; import type { UmbControllerHost } from '@umbraco-cms/backoffice/controller-api'; import { tryExecuteAndNotify } from '@umbraco-cms/backoffice/resources'; @@ -31,7 +31,7 @@ export class UmbDocumentPublicAccessServerDataSource { if (!unique) throw new Error('unique is missing'); return tryExecuteAndNotify( this.#host, - DocumentResource.postDocumentByIdPublicAccess({ id: unique, requestBody: data }), + DocumentService.postDocumentByIdPublicAccess({ id: unique, requestBody: data }), ); } @@ -42,7 +42,7 @@ export class UmbDocumentPublicAccessServerDataSource { */ async read(unique: string) { if (!unique) throw new Error('unique is missing'); - return tryExecuteAndNotify(this.#host, DocumentResource.getDocumentByIdPublicAccess({ id: unique })); + return tryExecuteAndNotify(this.#host, DocumentService.getDocumentByIdPublicAccess({ id: unique })); } /** @@ -53,7 +53,7 @@ export class UmbDocumentPublicAccessServerDataSource { */ async update(unique: string, requestBody: PublicAccessRequestModel) { if (!unique) throw new Error('unique is missing'); - return tryExecuteAndNotify(this.#host, DocumentResource.putDocumentByIdPublicAccess({ id: unique, requestBody })); + return tryExecuteAndNotify(this.#host, DocumentService.putDocumentByIdPublicAccess({ id: unique, requestBody })); } /** @@ -63,6 +63,6 @@ export class UmbDocumentPublicAccessServerDataSource { */ async delete(unique: string) { if (!unique) throw new Error('unique is missing'); - return tryExecuteAndNotify(this.#host, DocumentResource.deleteDocumentByIdPublicAccess({ id: unique })); + return tryExecuteAndNotify(this.#host, DocumentService.deleteDocumentByIdPublicAccess({ id: unique })); } } diff --git a/src/Umbraco.Web.UI.Client/src/packages/documents/documents/entity-actions/sort-children-of/manifests.ts b/src/Umbraco.Web.UI.Client/src/packages/documents/documents/entity-actions/sort-children-of/manifests.ts index e38ec7363f..0476d0180a 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/documents/documents/entity-actions/sort-children-of/manifests.ts +++ b/src/Umbraco.Web.UI.Client/src/packages/documents/documents/entity-actions/sort-children-of/manifests.ts @@ -1,6 +1,7 @@ import { UMB_DOCUMENT_ENTITY_TYPE, UMB_DOCUMENT_ROOT_ENTITY_TYPE } from '../../entity.js'; import { UMB_DOCUMENT_ITEM_REPOSITORY_ALIAS } from '../../repository/index.js'; import { UMB_DOCUMENT_TREE_REPOSITORY_ALIAS } from '../../tree/index.js'; +import { UMB_USER_PERMISSION_DOCUMENT_SORT } from '../../user-permissions/index.js'; import { UMB_SORT_CHILDREN_OF_DOCUMENT_REPOSITORY_ALIAS } from './repository/constants.js'; import { manifests as repositoryManifests } from './repository/manifests.js'; import type { ManifestTypes } from '@umbraco-cms/backoffice/extension-registry'; @@ -18,5 +19,11 @@ export const manifests: Array = [ sortChildrenOfRepositoryAlias: UMB_SORT_CHILDREN_OF_DOCUMENT_REPOSITORY_ALIAS, treeRepositoryAlias: UMB_DOCUMENT_TREE_REPOSITORY_ALIAS, }, + conditions: [ + { + alias: 'Umb.Condition.UserPermission.Document', + allOf: [UMB_USER_PERMISSION_DOCUMENT_SORT], + }, + ], }, ]; diff --git a/src/Umbraco.Web.UI.Client/src/packages/documents/documents/entity-actions/sort-children-of/repository/sort-children-of.server.data.ts b/src/Umbraco.Web.UI.Client/src/packages/documents/documents/entity-actions/sort-children-of/repository/sort-children-of.server.data.ts index e958faa93d..d820a02ffb 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/documents/documents/entity-actions/sort-children-of/repository/sort-children-of.server.data.ts +++ b/src/Umbraco.Web.UI.Client/src/packages/documents/documents/entity-actions/sort-children-of/repository/sort-children-of.server.data.ts @@ -1,5 +1,5 @@ import type { UmbSortChildrenOfArgs } from './types.js'; -import { DocumentResource } from '@umbraco-cms/backoffice/external/backend-api'; +import { DocumentService } from '@umbraco-cms/backoffice/external/backend-api'; import type { UmbControllerHost } from '@umbraco-cms/backoffice/controller-api'; import { tryExecuteAndNotify } from '@umbraco-cms/backoffice/resources'; @@ -33,7 +33,7 @@ export class UmbSortChildrenOfDocumentServerDataSource { return tryExecuteAndNotify( this.#host, - DocumentResource.putDocumentSort({ + DocumentService.putDocumentSort({ requestBody: { parent: args.unique ? { id: args.unique } : null, sorting: sortingMapping, diff --git a/src/Umbraco.Web.UI.Client/src/packages/documents/documents/global-contexts/document-configuration.context.ts b/src/Umbraco.Web.UI.Client/src/packages/documents/documents/global-contexts/document-configuration.context.ts index c7d28e8905..b69994d8a9 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/documents/documents/global-contexts/document-configuration.context.ts +++ b/src/Umbraco.Web.UI.Client/src/packages/documents/documents/global-contexts/document-configuration.context.ts @@ -2,10 +2,7 @@ import { UmbControllerBase } from '@umbraco-cms/backoffice/class-api'; import { UmbContextToken } from '@umbraco-cms/backoffice/context-api'; import type { UmbControllerHost } from '@umbraco-cms/backoffice/controller-api'; import type { UmbApi } from '@umbraco-cms/backoffice/extension-api'; -import { - DocumentResource, - type DocumentConfigurationResponseModel, -} from '@umbraco-cms/backoffice/external/backend-api'; +import { DocumentService, type DocumentConfigurationResponseModel } from '@umbraco-cms/backoffice/external/backend-api'; import { tryExecuteAndNotify } from '@umbraco-cms/backoffice/resources'; // TODO: Turn this into a Repository with a Store that holds the cache [NL] @@ -37,7 +34,7 @@ export class UmbDocumentConfigurationContext extends UmbControllerBase implement * @returns A promise that resolves to the document configuration, or null if the configuration could not be fetched. */ async fetchDocumentConfiguration() { - const { data } = await tryExecuteAndNotify(this, DocumentResource.getDocumentConfiguration()); + const { data } = await tryExecuteAndNotify(this, DocumentService.getDocumentConfiguration()); return data ?? null; } diff --git a/src/Umbraco.Web.UI.Client/src/packages/documents/documents/global-contexts/manifests.ts b/src/Umbraco.Web.UI.Client/src/packages/documents/documents/global-contexts/manifests.ts index 5d8128c423..48c16cc85b 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/documents/documents/global-contexts/manifests.ts +++ b/src/Umbraco.Web.UI.Client/src/packages/documents/documents/global-contexts/manifests.ts @@ -5,6 +5,6 @@ export const manifests: Array = [ type: 'globalContext', alias: 'Umb.GlobalContext.DocumentConfiguration', name: 'Document Configuration Context', - js: () => import('./document-configuration.context.js'), + api: () => import('./document-configuration.context.js'), }, ]; diff --git a/src/Umbraco.Web.UI.Client/src/packages/documents/documents/modals/manifests.ts b/src/Umbraco.Web.UI.Client/src/packages/documents/documents/modals/manifests.ts index 0951f2da46..e964a7543a 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/documents/documents/modals/manifests.ts +++ b/src/Umbraco.Web.UI.Client/src/packages/documents/documents/modals/manifests.ts @@ -1,5 +1,6 @@ import type { ManifestModal } from '@umbraco-cms/backoffice/extension-registry'; +export const UMB_ROLLBACK_MODAL_ALIAS = 'Umb.Modal.Rollback'; export const UMB_DOCUMENT_SAVE_MODAL_ALIAS = 'Umb.Modal.DocumentSave'; export const UMB_DOCUMENT_PUBLISH_MODAL_ALIAS = 'Umb.Modal.DocumentPublish'; export const UMB_DOCUMENT_UNPUBLISH_MODAL_ALIAS = 'Umb.Modal.DocumentUnpublish'; @@ -7,6 +8,12 @@ export const UMB_DOCUMENT_SCHEDULE_MODAL_ALIAS = 'Umb.Modal.DocumentSchedule'; export const UMB_DOCUMENT_PUBLISH_WITH_DESCENDANTS_MODAL_ALIAS = 'Umb.Modal.DocumentPublishWithDescendants'; const modals: Array = [ + { + type: 'modal', + alias: UMB_ROLLBACK_MODAL_ALIAS, + name: 'Rollback Modal', + js: () => import('./rollback/rollback-modal.element.js'), + }, { type: 'modal', alias: UMB_DOCUMENT_SAVE_MODAL_ALIAS, diff --git a/src/Umbraco.Web.UI.Client/src/packages/documents/documents/modals/rollback/index.ts b/src/Umbraco.Web.UI.Client/src/packages/documents/documents/modals/rollback/index.ts new file mode 100644 index 0000000000..fd0f63b2c3 --- /dev/null +++ b/src/Umbraco.Web.UI.Client/src/packages/documents/documents/modals/rollback/index.ts @@ -0,0 +1 @@ +export * from './rollback-modal.token.js'; diff --git a/src/Umbraco.Web.UI.Client/src/packages/documents/documents/modals/rollback/repository/index.ts b/src/Umbraco.Web.UI.Client/src/packages/documents/documents/modals/rollback/repository/index.ts new file mode 100644 index 0000000000..ccf1fc6c85 --- /dev/null +++ b/src/Umbraco.Web.UI.Client/src/packages/documents/documents/modals/rollback/repository/index.ts @@ -0,0 +1,2 @@ +export { UmbRollbackRepository } from './rollback.repository.js'; +export { UMB_ROLLBACK_REPOSITORY_ALIAS } from './manifests.js'; diff --git a/src/Umbraco.Web.UI.Client/src/packages/documents/documents/modals/rollback/repository/manifests.ts b/src/Umbraco.Web.UI.Client/src/packages/documents/documents/modals/rollback/repository/manifests.ts new file mode 100644 index 0000000000..1e0c52fc4f --- /dev/null +++ b/src/Umbraco.Web.UI.Client/src/packages/documents/documents/modals/rollback/repository/manifests.ts @@ -0,0 +1,12 @@ +import type { ManifestRepository } from '@umbraco-cms/backoffice/extension-registry'; + +export const UMB_ROLLBACK_REPOSITORY_ALIAS = 'Umb.Repository.Rollback'; + +const repository: ManifestRepository = { + type: 'repository', + alias: UMB_ROLLBACK_REPOSITORY_ALIAS, + name: 'Rollback Repository', + api: () => import('./rollback.repository.js'), +}; + +export const manifests = [repository]; diff --git a/src/Umbraco.Web.UI.Client/src/packages/documents/documents/modals/rollback/repository/rollback.repository.ts b/src/Umbraco.Web.UI.Client/src/packages/documents/documents/modals/rollback/repository/rollback.repository.ts new file mode 100644 index 0000000000..1d8ec27d60 --- /dev/null +++ b/src/Umbraco.Web.UI.Client/src/packages/documents/documents/modals/rollback/repository/rollback.repository.ts @@ -0,0 +1,32 @@ +import { UmbRollbackServerDataSource } from './rollback.server.data-source.js'; +import { UmbControllerBase } from '@umbraco-cms/backoffice/class-api'; +import type { UmbControllerHost } from '@umbraco-cms/backoffice/controller-api'; +import type { UmbApi } from '@umbraco-cms/backoffice/extension-api'; + +export class UmbRollbackRepository extends UmbControllerBase implements UmbApi { + #dataSource: UmbRollbackServerDataSource; + + constructor(host: UmbControllerHost) { + super(host); + + this.#dataSource = new UmbRollbackServerDataSource(this); + } + + async requestVersionsByDocumentId(id: string, culture?: string) { + return await this.#dataSource.getVersionsByDocumentId(id, culture); + } + + async requestVersionById(id: string) { + return await this.#dataSource.getVersionById(id); + } + + async setPreventCleanup(versionId: string, preventCleanup: boolean) { + return await this.#dataSource.setPreventCleanup(versionId, preventCleanup); + } + + async rollback(versionId: string, culture?: string) { + return await this.#dataSource.rollback(versionId, culture); + } +} + +export default UmbRollbackRepository; diff --git a/src/Umbraco.Web.UI.Client/src/packages/documents/documents/modals/rollback/repository/rollback.server.data-source.ts b/src/Umbraco.Web.UI.Client/src/packages/documents/documents/modals/rollback/repository/rollback.server.data-source.ts new file mode 100644 index 0000000000..9d2837a7c0 --- /dev/null +++ b/src/Umbraco.Web.UI.Client/src/packages/documents/documents/modals/rollback/repository/rollback.server.data-source.ts @@ -0,0 +1,54 @@ +import type { UmbControllerHost } from '@umbraco-cms/backoffice/controller-api'; +import { DocumentVersionService } from '@umbraco-cms/backoffice/external/backend-api'; +import { tryExecuteAndNotify } from '@umbraco-cms/backoffice/resources'; + +/** + * A data source for the Rollback that fetches data from the server + * @export + * @class UmbRollbackServerDataSource + * @implements {RepositoryDetailDataSource} + */ +export class UmbRollbackServerDataSource { + #host: UmbControllerHost; + + /** + * Creates an instance of UmbRollbackServerDataSource. + * @param {UmbControllerHost} host + * @memberof UmbRollbackServerDataSource + */ + constructor(host: UmbControllerHost) { + this.#host = host; + } + + /** + * Get a list of versions for a document + * @return {*} + * @memberof UmbRollbackServerDataSource + */ + getVersionsByDocumentId(id: string, culture?: string) { + return tryExecuteAndNotify(this.#host, DocumentVersionService.getDocumentVersion({ documentId: id, culture })); + } + + /** + * Get a specific version by id + * @return {*} + * @memberof UmbRollbackServerDataSource + */ + getVersionById(versionId: string) { + return tryExecuteAndNotify(this.#host, DocumentVersionService.getDocumentVersionById({ id: versionId })); + } + + setPreventCleanup(versionId: string, preventCleanup: boolean) { + return tryExecuteAndNotify( + this.#host, + DocumentVersionService.putDocumentVersionByIdPreventCleanup({ id: versionId, preventCleanup }), + ); + } + + rollback(versionId: string, culture?: string) { + return tryExecuteAndNotify( + this.#host, + DocumentVersionService.postDocumentVersionByIdRollback({ id: versionId, culture }), + ); + } +} diff --git a/src/Umbraco.Web.UI.Client/src/packages/documents/documents/modals/rollback/rollback-modal.element.ts b/src/Umbraco.Web.UI.Client/src/packages/documents/documents/modals/rollback/rollback-modal.element.ts new file mode 100644 index 0000000000..4bff0c9cac --- /dev/null +++ b/src/Umbraco.Web.UI.Client/src/packages/documents/documents/modals/rollback/rollback-modal.element.ts @@ -0,0 +1,385 @@ +import { UMB_DOCUMENT_WORKSPACE_CONTEXT } from '../../workspace/index.js'; +import type { UmbRollbackModalData, UmbRollbackModalValue } from './rollback-modal.token.js'; +import { UmbRollbackRepository } from './repository/rollback.repository.js'; +import { diffWords } from '@umbraco-cms/backoffice/external/diff'; +import { css, customElement, html, nothing, repeat, state } from '@umbraco-cms/backoffice/external/lit'; +import { UmbModalBaseElement } from '@umbraco-cms/backoffice/modal'; +import { UmbTextStyles } from '@umbraco-cms/backoffice/style'; + +import '../shared/document-variant-language-picker.element.js'; +import { UmbUserItemRepository } from '@umbraco-cms/backoffice/user'; +import { UMB_PROPERTY_DATASET_CONTEXT } from '@umbraco-cms/backoffice/property'; +import type { UUISelectEvent } from '@umbraco-cms/backoffice/external/uui'; + +type DocumentVersion = { + id: string; + date: string; + user: string; + isCurrentlyPublishedVersion: boolean; + preventCleanup: boolean; +}; + +@customElement('umb-rollback-modal') +export class UmbRollbackModalElement extends UmbModalBaseElement { + @state() + versions: DocumentVersion[] = []; + + @state() + currentVersion?: { + date: string; + name: string; + user: string; + id: string; + properties: { + alias: string; + value: string; + }[]; + }; + + @state() + currentCulture?: string; + + @state() + availableVariants: Option[] = []; + + #rollbackRepository = new UmbRollbackRepository(this); + #userItemRepository = new UmbUserItemRepository(this); + + #workspaceContext?: typeof UMB_DOCUMENT_WORKSPACE_CONTEXT.TYPE; + + #propertyDatasetContext?: typeof UMB_PROPERTY_DATASET_CONTEXT.TYPE; + + #localizeDateOptions: Intl.DateTimeFormatOptions = { + day: 'numeric', + month: 'long', + hour: 'numeric', + minute: '2-digit', + }; + + constructor() { + super(); + + this.consumeContext(UMB_PROPERTY_DATASET_CONTEXT, (instance) => { + this.#propertyDatasetContext = instance; + this.currentCulture = instance.getVariantId().culture ?? undefined; + this.#requestVersions(); + }); + + this.consumeContext(UMB_DOCUMENT_WORKSPACE_CONTEXT, (instance) => { + this.#workspaceContext = instance; + + this.observe(instance.variantOptions, (options) => { + this.availableVariants = options.map((option) => { + return { + name: option.language.name, + value: option.language.unique, + selected: option.language.unique === this.currentCulture, + }; + }); + }); + }); + } + + async #requestVersions() { + if (!this.#propertyDatasetContext) return; + + const documentId = this.#propertyDatasetContext.getUnique(); + if (!documentId) return; + + const { data } = await this.#rollbackRepository.requestVersionsByDocumentId(documentId, this.currentCulture); + if (!data) return; + + const tempItems: DocumentVersion[] = []; + + const uniqueUserIds = [...new Set(data?.items.map((item) => item.user.id))]; + + const { data: userItems } = await this.#userItemRepository.requestItems(uniqueUserIds); + + data?.items.forEach((item: any) => { + tempItems.push({ + date: item.versionDate, + user: + userItems?.find((user) => user.unique === item.user.id)?.name || this.localize.term('general_unknownUser'), + isCurrentlyPublishedVersion: item.isCurrentPublishedVersion, + id: item.id, + preventCleanup: item.preventCleanup, + }); + }); + + this.versions = tempItems; + const id = tempItems.find((item) => item.isCurrentlyPublishedVersion)?.id; + + if (id) { + this.#setCurrentVersion(id); + } + } + + async #setCurrentVersion(id: string) { + const version = this.versions.find((item) => item.id === id); + if (!version) return; + + const { data } = await this.#rollbackRepository.requestVersionById(id); + if (!data) return; + + this.currentVersion = { + date: version.date, + user: version.user, + name: data.variants.find((x) => x.culture === this.currentCulture)?.name || data.variants[0].name, + id: data.id, + properties: data.values + .filter((x) => x.culture === this.currentCulture || !x.culture) // When invariant, culture is undefined or null. + .map((value: any) => { + return { + alias: value.alias, + value: value.value, + }; + }), + }; + } + + #onRollback() { + if (!this.currentVersion) return; + + const id = this.currentVersion.id; + const culture = this.availableVariants.length > 1 ? this.currentCulture : undefined; + this.#rollbackRepository.rollback(id, culture); + + const docUnique = this.#workspaceContext?.getUnique() ?? ''; + // TODO Use the load method on the context instead of location.href, when it works. + // this.#workspaceContext?.load(docUnique); + location.href = 'section/content/workspace/document/edit/' + docUnique; + this.modalContext?.reject(); + } + + #onCancel() { + this.modalContext?.reject(); + } + + #onVersionClicked(id: string) { + this.#setCurrentVersion(id); + } + + #onPreventCleanup(event: Event, id: string, preventCleanup: boolean) { + event.preventDefault(); + event.stopImmediatePropagation(); + this.#rollbackRepository.setPreventCleanup(id, preventCleanup); + + const version = this.versions.find((item) => item.id === id); + if (!version) return; + + version.preventCleanup = preventCleanup; + this.requestUpdate('versions'); + } + + #onChangeCulture(event: UUISelectEvent) { + const value = event.target.value; + + this.currentCulture = value.toString(); + this.#requestVersions(); + } + + #renderCultureSelect() { + if (this.availableVariants.length < 2) return nothing; + return html` +
+ ${this.localize.term('general_language')} + +
+ `; + } + + #renderVersions() { + return html` ${this.#renderCultureSelect()} + ${repeat( + this.versions, + (item) => item.id, + (item) => { + return html` +
this.#onVersionClicked(item.id)} + @keydown=${() => {}} + class="rollback-item ${this.currentVersion?.id === item.id ? 'active' : ''}"> +
+

+ +

+

${item.user}

+

${item.isCurrentlyPublishedVersion ? this.localize.term('rollback_currentPublishedVersion') : ''}

+
+ this.#onPreventCleanup(event, item.id, !item.preventCleanup)} + label=${item.preventCleanup + ? this.localize.term('contentTypeEditor_historyCleanupEnableCleanup') + : this.localize.term('contentTypeEditor_historyCleanupPreventCleanup')}> + +
+ `; + }, + )}`; + } + + #renderCurrentVersion() { + if (!this.currentVersion) return; + + let draftValues = + (this.#workspaceContext?.getData()?.values as Array<{ alias: string; culture: string; value: any }>) ?? []; + + draftValues = draftValues.filter((x) => x.culture === this.currentCulture || !x.culture); // When invariant, culture is undefined or null. + + const diffs = this.currentVersion.properties.map((item) => { + const draftValue = draftValues.find((x) => x.alias === item.alias); + + if (!draftValue) return; + + const draftValueString = trimQuotes(JSON.stringify(draftValue.value)); + const versionValueString = trimQuotes(JSON.stringify(item.value)); + + const diff = diffWords(draftValueString, versionValueString); + return { alias: item.alias, diff }; + }); + + function trimQuotes(str: string): string { + return str.replace(/^['"]|['"]$/g, ''); + } + + return html` +
+

name: ${this.currentVersion.name}

+ ${repeat( + this.currentVersion.properties, + (item) => item.alias, + (item) => { + const diff = diffs.find((x) => x?.alias === item.alias); + return html` +

+ ${item.alias}: + ${diff + ? diff.diff.map((part) => + part.added + ? html`${part.value}` + : part.removed + ? html`${part.value}` + : part.value, + ) + : JSON.stringify(item.value)} +

+ `; + }, + )} +
+ `; + } + + get currentVersionHeader() { + return ( + this.localize.date(this.currentVersion?.date || '', this.#localizeDateOptions) + ' - ' + this.currentVersion?.user + ); + } + + render() { + return html` + +
+ +
${this.#renderVersions()}
+
+ ${this.#renderCurrentVersion()} +
+ + + + +
+ `; + } + + static styles = [ + UmbTextStyles, + css` + #language-select { + display: flex; + flex-direction: column; + padding: var(--uui-size-space-5); + padding-bottom: 0; + gap: var(--uui-size-space-2); + font-size: 15px; + } + #diff .added { + background-color: #d1ffdb; + } + #diff .removed { + background-color: #ffd1d1; + } + .rollback-item { + position: relative; + display: flex; + justify-content: space-between; + align-items: center; + padding: var(--uui-size-space-5); + cursor: pointer; + } + .rollback-item::after { + content: ''; + position: absolute; + inset: 2px; + display: block; + border: 2px solid transparent; + pointer-events: none; + } + .rollback-item.active::after, + .rollback-item:hover::after { + border-color: var(--uui-color-selected); + } + .rollback-item:not(.active):hover::after { + opacity: 0.5; + } + .rollback-item p { + margin: 0; + opacity: 0.5; + } + p.rollback-item-date { + opacity: 1; + } + .rollback-item uui-button { + white-space: nowrap; + } + #main { + display: flex; + gap: var(--uui-size-space-4); + width: 100%; + height: 100%; + } + + #box-left { + --uui-box-default-padding: 0; + max-width: 500px; + flex: 1; + overflow: auto; + height: 100%; + } + + #box-right { + flex: 1; + overflow: auto; + height: 100%; + } + `, + ]; +} + +export default UmbRollbackModalElement; + +declare global { + interface HTMLElementTagNameMap { + 'umb-rollback-modal': UmbRollbackModalElement; + } +} diff --git a/src/Umbraco.Web.UI.Client/src/packages/documents/documents/modals/rollback/rollback-modal.token.ts b/src/Umbraco.Web.UI.Client/src/packages/documents/documents/modals/rollback/rollback-modal.token.ts new file mode 100644 index 0000000000..a6174f17e7 --- /dev/null +++ b/src/Umbraco.Web.UI.Client/src/packages/documents/documents/modals/rollback/rollback-modal.token.ts @@ -0,0 +1,15 @@ +import { UMB_ROLLBACK_MODAL_ALIAS } from '../manifests.js'; +import { UmbModalToken } from '@umbraco-cms/backoffice/modal'; + +export interface UmbRollbackModalData {} +export interface UmbRollbackModalValue {} + +export const UMB_ROLLBACK_MODAL = new UmbModalToken( + UMB_ROLLBACK_MODAL_ALIAS, + { + modal: { + type: 'sidebar', + size: 'full', + }, + }, +); diff --git a/src/Umbraco.Web.UI.Client/src/packages/documents/documents/property-dataset-context/document-property-dataset-context.token.ts b/src/Umbraco.Web.UI.Client/src/packages/documents/documents/property-dataset-context/document-property-dataset-context.token.ts index 62cd946c83..96efd8d3e6 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/documents/documents/property-dataset-context/document-property-dataset-context.token.ts +++ b/src/Umbraco.Web.UI.Client/src/packages/documents/documents/property-dataset-context/document-property-dataset-context.token.ts @@ -10,4 +10,4 @@ export const IsDocumentPropertyDatasetContext = ( export const UMB_DOCUMENT_PROPERTY_DATASET_CONTEXT = new UmbContextToken< UmbPropertyDatasetContext, UmbDocumentPropertyDataContext ->('UmbVariantContext', undefined, IsDocumentPropertyDatasetContext); +>('UmbPropertyDatasetContext', undefined, IsDocumentPropertyDatasetContext); diff --git a/src/Umbraco.Web.UI.Client/src/packages/documents/documents/recycle-bin/entity-action/manifests.ts b/src/Umbraco.Web.UI.Client/src/packages/documents/documents/recycle-bin/entity-action/manifests.ts index 2c654126d5..0ac0cd09be 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/documents/documents/recycle-bin/entity-action/manifests.ts +++ b/src/Umbraco.Web.UI.Client/src/packages/documents/documents/recycle-bin/entity-action/manifests.ts @@ -1,22 +1,42 @@ +import { UMB_DOCUMENT_RECYCLE_BIN_REPOSITORY_ALIAS } from '../repository/index.js'; import { UMB_DOCUMENT_ENTITY_TYPE } from '../../entity.js'; -import { UMB_DOCUMENT_DETAIL_REPOSITORY_ALIAS, UMB_DOCUMENT_ITEM_REPOSITORY_ALIAS } from '../../repository/index.js'; +import { UMB_DOCUMENT_ITEM_REPOSITORY_ALIAS } from '../../repository/index.js'; +import { UMB_DOCUMENT_RECYCLE_BIN_ROOT_ENTITY_TYPE } from '../entity.js'; +import { UMB_DOCUMENT_PICKER_MODAL } from '../../modals/document-picker-modal.token.js'; +import type { ManifestTypes } from '@umbraco-cms/backoffice/extension-registry'; -export const manifests = [ +export const manifests: Array = [ { type: 'entityAction', kind: 'trash', - alias: 'Umb.EntityAction.Document.Trash', + alias: 'Umb.EntityAction.Document.RecycleBin.Trash', name: 'Trash Document Entity Action', forEntityTypes: [UMB_DOCUMENT_ENTITY_TYPE], meta: { itemRepositoryAlias: UMB_DOCUMENT_ITEM_REPOSITORY_ALIAS, - trashRepositoryAlias: UMB_DOCUMENT_DETAIL_REPOSITORY_ALIAS, + recycleBinRepositoryAlias: UMB_DOCUMENT_RECYCLE_BIN_REPOSITORY_ALIAS, + }, + }, + { + type: 'entityAction', + kind: 'restoreFromRecycleBin', + alias: 'Umb.EntityAction.Document.RecycleBin.Restore', + name: 'Restore Document From Recycle Bin Entity Action', + forEntityTypes: [UMB_DOCUMENT_ENTITY_TYPE], + meta: { + itemRepositoryAlias: UMB_DOCUMENT_ITEM_REPOSITORY_ALIAS, + recycleBinRepositoryAlias: UMB_DOCUMENT_RECYCLE_BIN_REPOSITORY_ALIAS, + pickerModal: UMB_DOCUMENT_PICKER_MODAL, + }, + }, + { + type: 'entityAction', + kind: 'emptyRecycleBin', + alias: 'Umb.EntityAction.Document.RecycleBin.Empty', + name: 'Empty Document Recycle Bin Entity Action', + forEntityTypes: [UMB_DOCUMENT_RECYCLE_BIN_ROOT_ENTITY_TYPE], + meta: { + recycleBinRepositoryAlias: UMB_DOCUMENT_RECYCLE_BIN_REPOSITORY_ALIAS, }, - conditions: [ - { - alias: 'Umb.Condition.UserPermission', - match: 'Umb.UserPermission.Document.Delete', - }, - ], }, ]; diff --git a/src/Umbraco.Web.UI.Client/src/packages/documents/documents/recycle-bin/entity.ts b/src/Umbraco.Web.UI.Client/src/packages/documents/documents/recycle-bin/entity.ts index 5751458ba0..1e39a86afa 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/documents/documents/recycle-bin/entity.ts +++ b/src/Umbraco.Web.UI.Client/src/packages/documents/documents/recycle-bin/entity.ts @@ -1,2 +1 @@ export const UMB_DOCUMENT_RECYCLE_BIN_ROOT_ENTITY_TYPE = 'document-recycle-bin-root'; -export const UMB_DOCUMENT_RECYCLE_BIN_ENTITY_TYPE = 'document-recycle-bin'; diff --git a/src/Umbraco.Web.UI.Client/src/packages/documents/documents/recycle-bin/manifests.ts b/src/Umbraco.Web.UI.Client/src/packages/documents/documents/recycle-bin/manifests.ts index 38ee0700be..423a1afcc2 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/documents/documents/recycle-bin/manifests.ts +++ b/src/Umbraco.Web.UI.Client/src/packages/documents/documents/recycle-bin/manifests.ts @@ -1,5 +1,6 @@ -import { manifests as treeManifests } from './tree/manifests.js'; -import { manifests as menuItemManifests } from './menu-item/manifests.js'; import { manifests as entityActionManifests } from './entity-action/manifests.js'; +import { manifests as menuItemManifests } from './menu-item/manifests.js'; +import { manifests as repositoryManifests } from './repository/manifests.js'; +import { manifests as treeManifests } from './tree/manifests.js'; -export const manifests = [...treeManifests, ...menuItemManifests, ...entityActionManifests]; +export const manifests = [...entityActionManifests, ...menuItemManifests, ...repositoryManifests, ...treeManifests]; diff --git a/src/Umbraco.Web.UI.Client/src/packages/documents/documents/recycle-bin/menu-item/manifests.ts b/src/Umbraco.Web.UI.Client/src/packages/documents/documents/recycle-bin/menu-item/manifests.ts index 60699a97fa..418ed9c109 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/documents/documents/recycle-bin/menu-item/manifests.ts +++ b/src/Umbraco.Web.UI.Client/src/packages/documents/documents/recycle-bin/menu-item/manifests.ts @@ -1,14 +1,15 @@ import { UMB_CONTENT_MENU_ALIAS } from '../../menu/manifests.js'; +import { UMB_DOCUMENT_RECYCLE_BIN_TREE_ALIAS } from '../tree/index.js'; import type { ManifestMenuItemTreeKind } from '@umbraco-cms/backoffice/extension-registry'; const menuItem: ManifestMenuItemTreeKind = { type: 'menuItem', kind: 'tree', - alias: 'Umb.MenuItem.DocumentRecycleBin', + alias: 'Umb.MenuItem.Document.RecycleBin', name: 'Document Recycle Bin Menu Item', weight: 100, meta: { - treeAlias: 'Umb.Tree.DocumentRecycleBin', + treeAlias: UMB_DOCUMENT_RECYCLE_BIN_TREE_ALIAS, label: 'Recycle Bin', icon: 'icon-trash', menus: [UMB_CONTENT_MENU_ALIAS], diff --git a/src/Umbraco.Web.UI.Client/src/packages/documents/documents/recycle-bin/repository/constants.ts b/src/Umbraco.Web.UI.Client/src/packages/documents/documents/recycle-bin/repository/constants.ts new file mode 100644 index 0000000000..f350dc5e9d --- /dev/null +++ b/src/Umbraco.Web.UI.Client/src/packages/documents/documents/recycle-bin/repository/constants.ts @@ -0,0 +1 @@ +export const UMB_DOCUMENT_RECYCLE_BIN_REPOSITORY_ALIAS = 'Umb.Repository.Document.RecycleBin'; diff --git a/src/Umbraco.Web.UI.Client/src/packages/documents/documents/recycle-bin/repository/document-recycle-bin.repository.ts b/src/Umbraco.Web.UI.Client/src/packages/documents/documents/recycle-bin/repository/document-recycle-bin.repository.ts new file mode 100644 index 0000000000..89422926fc --- /dev/null +++ b/src/Umbraco.Web.UI.Client/src/packages/documents/documents/recycle-bin/repository/document-recycle-bin.repository.ts @@ -0,0 +1,11 @@ +import { UmbDocumentRecycleBinServerDataSource } from './document-recycle-bin.server.data-source.js'; +import { UmbRecycleBinRepositoryBase } from '@umbraco-cms/backoffice/recycle-bin'; +import type { UmbControllerHost } from '@umbraco-cms/backoffice/controller-api'; + +export class UmbDocumentRecycleBinRepository extends UmbRecycleBinRepositoryBase { + constructor(host: UmbControllerHost) { + super(host, UmbDocumentRecycleBinServerDataSource); + } +} + +export { UmbDocumentRecycleBinRepository as api }; diff --git a/src/Umbraco.Web.UI.Client/src/packages/documents/documents/recycle-bin/repository/document-recycle-bin.server.data-source.ts b/src/Umbraco.Web.UI.Client/src/packages/documents/documents/recycle-bin/repository/document-recycle-bin.server.data-source.ts new file mode 100644 index 0000000000..4db3dbe660 --- /dev/null +++ b/src/Umbraco.Web.UI.Client/src/packages/documents/documents/recycle-bin/repository/document-recycle-bin.server.data-source.ts @@ -0,0 +1,52 @@ +import type { + UmbRecycleBinDataSource, + UmbRecycleBinRestoreRequestArgs, + UmbRecycleBinTrashRequestArgs, + UmbRecycleBinOriginalParentRequestArgs, +} from '@umbraco-cms/backoffice/recycle-bin'; +import type { UmbControllerHost } from '@umbraco-cms/backoffice/controller-api'; +import { DocumentService } from '@umbraco-cms/backoffice/external/backend-api'; +import { tryExecuteAndNotify } from '@umbraco-cms/backoffice/resources'; + +export class UmbDocumentRecycleBinServerDataSource implements UmbRecycleBinDataSource { + #host: UmbControllerHost; + + constructor(host: UmbControllerHost) { + this.#host = host; + } + + trash(args: UmbRecycleBinTrashRequestArgs) { + return tryExecuteAndNotify(this.#host, DocumentService.putDocumentByIdMoveToRecycleBin({ id: args.unique })); + } + + restore(args: UmbRecycleBinRestoreRequestArgs) { + return tryExecuteAndNotify( + this.#host, + DocumentService.putRecycleBinDocumentByIdRestore({ + id: args.unique, + requestBody: { + target: args.destination.unique ? { id: args.destination.unique } : null, + }, + }), + ); + } + + empty() { + return tryExecuteAndNotify(this.#host, DocumentService.deleteRecycleBinDocument()); + } + + async getOriginalParent(args: UmbRecycleBinOriginalParentRequestArgs) { + const { data, error } = await tryExecuteAndNotify( + this.#host, + DocumentService.getRecycleBinDocumentByIdOriginalParent({ id: args.unique }), + ); + + // only check for undefined because data can be null if the parent is the root + if (data !== undefined) { + const mappedData = data ? { unique: data.id } : null; + return { data: mappedData }; + } + + return { error }; + } +} diff --git a/src/Umbraco.Web.UI.Client/src/packages/documents/documents/recycle-bin/repository/index.ts b/src/Umbraco.Web.UI.Client/src/packages/documents/documents/recycle-bin/repository/index.ts new file mode 100644 index 0000000000..50bcc134af --- /dev/null +++ b/src/Umbraco.Web.UI.Client/src/packages/documents/documents/recycle-bin/repository/index.ts @@ -0,0 +1 @@ +export { UMB_DOCUMENT_RECYCLE_BIN_REPOSITORY_ALIAS } from './constants.js'; diff --git a/src/Umbraco.Web.UI.Client/src/packages/documents/documents/recycle-bin/repository/manifests.ts b/src/Umbraco.Web.UI.Client/src/packages/documents/documents/recycle-bin/repository/manifests.ts new file mode 100644 index 0000000000..b2b0b2ac63 --- /dev/null +++ b/src/Umbraco.Web.UI.Client/src/packages/documents/documents/recycle-bin/repository/manifests.ts @@ -0,0 +1,11 @@ +import { UMB_DOCUMENT_RECYCLE_BIN_REPOSITORY_ALIAS } from './constants.js'; +import type { ManifestRepository } from '@umbraco-cms/backoffice/extension-registry'; + +const queryRepository: ManifestRepository = { + type: 'repository', + alias: UMB_DOCUMENT_RECYCLE_BIN_REPOSITORY_ALIAS, + name: 'Document Recycle Bin Repository', + api: () => import('./document-recycle-bin.repository.js'), +}; + +export const manifests = [queryRepository]; diff --git a/src/Umbraco.Web.UI.Client/src/packages/documents/documents/recycle-bin/repository/types.ts b/src/Umbraco.Web.UI.Client/src/packages/documents/documents/recycle-bin/repository/types.ts new file mode 100644 index 0000000000..e69de29bb2 diff --git a/src/Umbraco.Web.UI.Client/src/packages/documents/documents/recycle-bin/tree/constants.ts b/src/Umbraco.Web.UI.Client/src/packages/documents/documents/recycle-bin/tree/constants.ts new file mode 100644 index 0000000000..492e6f36ed --- /dev/null +++ b/src/Umbraco.Web.UI.Client/src/packages/documents/documents/recycle-bin/tree/constants.ts @@ -0,0 +1,3 @@ +export const UMB_DOCUMENT_RECYCLE_BIN_TREE_REPOSITORY_ALIAS = 'Umb.Repository.Document.RecycleBin.Tree'; +export const UMB_DOCUMENT_RECYCLE_BIN_TREE_STORE_ALIAS = 'Umb.Store.Document.RecycleBin.Tree'; +export const UMB_DOCUMENT_RECYCLE_BIN_TREE_ALIAS = 'Umb.Tree.Document.RecycleBin'; diff --git a/src/Umbraco.Web.UI.Client/src/packages/documents/documents/recycle-bin/tree/document-recycle-bin-tree.repository.ts b/src/Umbraco.Web.UI.Client/src/packages/documents/documents/recycle-bin/tree/document-recycle-bin-tree.repository.ts index 37ff658fb9..e11e98e92c 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/documents/documents/recycle-bin/tree/document-recycle-bin-tree.repository.ts +++ b/src/Umbraco.Web.UI.Client/src/packages/documents/documents/recycle-bin/tree/document-recycle-bin-tree.repository.ts @@ -15,12 +15,15 @@ export class UmbDocumentRecycleBinTreeRepository } async requestTreeRoot() { + const { data: treeRootData } = await this._treeSource.getRootItems({ skip: 0, take: 1 }); + const hasChildren = treeRootData ? treeRootData.total > 0 : false; + const data = { unique: null, entityType: UMB_DOCUMENT_RECYCLE_BIN_ROOT_ENTITY_TYPE, - name: 'Recycle Bin', + name: '#treeHeaders_contentRecycleBin', icon: 'icon-trash', - hasChildren: true, + hasChildren, isContainer: false, isFolder: true, }; diff --git a/src/Umbraco.Web.UI.Client/src/packages/documents/documents/recycle-bin/tree/document-recycle-bin-tree.server.data-source.ts b/src/Umbraco.Web.UI.Client/src/packages/documents/documents/recycle-bin/tree/document-recycle-bin-tree.server.data-source.ts index d5a1ee2f36..45adeddff3 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/documents/documents/recycle-bin/tree/document-recycle-bin-tree.server.data-source.ts +++ b/src/Umbraco.Web.UI.Client/src/packages/documents/documents/recycle-bin/tree/document-recycle-bin-tree.server.data-source.ts @@ -1,6 +1,7 @@ +import { UMB_DOCUMENT_ENTITY_TYPE } from '../../entity.js'; import type { UmbDocumentRecycleBinTreeItemModel } from './types.js'; import type { DocumentRecycleBinItemResponseModel } from '@umbraco-cms/backoffice/external/backend-api'; -import { DocumentResource } from '@umbraco-cms/backoffice/external/backend-api'; +import { DocumentService } from '@umbraco-cms/backoffice/external/backend-api'; import type { UmbControllerHost } from '@umbraco-cms/backoffice/controller-api'; import type { UmbTreeAncestorsOfRequestArgs, @@ -36,14 +37,14 @@ export class UmbDocumentRecycleBinTreeServerDataSource extends UmbTreeServerData const getRootItems = (args: UmbTreeRootItemsRequestArgs) => // eslint-disable-next-line local-rules/no-direct-api-import - DocumentResource.getRecycleBinDocumentRoot({ skip: args.skip, take: args.take }); + DocumentService.getRecycleBinDocumentRoot({ skip: args.skip, take: args.take }); const getChildrenOf = (args: UmbTreeChildrenOfRequestArgs) => { if (args.parentUnique === null) { return getRootItems(args); } else { // eslint-disable-next-line local-rules/no-direct-api-import - return DocumentResource.getRecycleBinDocumentChildren({ + return DocumentService.getRecycleBinDocumentChildren({ parentId: args.parentUnique, skip: args.skip, take: args.take, @@ -53,7 +54,7 @@ const getChildrenOf = (args: UmbTreeChildrenOfRequestArgs) => { const getAncestorsOf = (args: UmbTreeAncestorsOfRequestArgs) => // eslint-disable-next-line local-rules/no-direct-api-import - DocumentResource.getTreeDocumentAncestors({ + DocumentService.getTreeDocumentAncestors({ descendantId: args.descendantUnique, }); @@ -61,9 +62,25 @@ const mapper = (item: DocumentRecycleBinItemResponseModel): UmbDocumentRecycleBi return { unique: item.id, parentUnique: item.parent ? item.parent.id : null, - entityType: 'document-recycle-bin', + entityType: UMB_DOCUMENT_ENTITY_TYPE, + noAccess: false, + isTrashed: true, hasChildren: item.hasChildren, - isFolder: false, + isProtected: false, + documentType: { + unique: item.documentType.id, + icon: item.documentType.icon, + collection: item.documentType.collection ? { unique: item.documentType.collection.id } : null, + }, + variants: item.variants.map((variant) => { + return { + name: variant.name, + culture: variant.culture || null, + segment: null, // TODO: add segment to the backend API? + state: variant.state, + }; + }), name: item.variants[0]?.name, // TODO: this is not correct. We need to get it from the variants. This is a temp solution. + isFolder: false, }; }; diff --git a/src/Umbraco.Web.UI.Client/src/packages/documents/documents/recycle-bin/tree/index.ts b/src/Umbraco.Web.UI.Client/src/packages/documents/documents/recycle-bin/tree/index.ts index 995f0b5ebf..1c6d9bc43c 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/documents/documents/recycle-bin/tree/index.ts +++ b/src/Umbraco.Web.UI.Client/src/packages/documents/documents/recycle-bin/tree/index.ts @@ -3,7 +3,7 @@ export { UMB_DOCUMENT_RECYCLE_BIN_TREE_REPOSITORY_ALIAS, UMB_DOCUMENT_RECYCLE_BIN_TREE_STORE_ALIAS, UMB_DOCUMENT_RECYCLE_BIN_TREE_ALIAS, -} from './manifests.js'; +} from './constants.js'; export { UMB_DOCUMENT_RECYCLE_BIN_TREE_STORE_CONTEXT } from './document-recycle-bin-tree.store.js'; export { type UmbDocumentRecycleBinTreeStore } from './document-recycle-bin-tree.store.js'; export * from './types.js'; diff --git a/src/Umbraco.Web.UI.Client/src/packages/documents/documents/recycle-bin/tree/manifests.ts b/src/Umbraco.Web.UI.Client/src/packages/documents/documents/recycle-bin/tree/manifests.ts index 0b7795f149..69c76b9235 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/documents/documents/recycle-bin/tree/manifests.ts +++ b/src/Umbraco.Web.UI.Client/src/packages/documents/documents/recycle-bin/tree/manifests.ts @@ -1,4 +1,9 @@ -import { UMB_DOCUMENT_RECYCLE_BIN_ENTITY_TYPE, UMB_DOCUMENT_RECYCLE_BIN_ROOT_ENTITY_TYPE } from '../entity.js'; +import { UMB_DOCUMENT_RECYCLE_BIN_ROOT_ENTITY_TYPE } from '../entity.js'; +import { + UMB_DOCUMENT_RECYCLE_BIN_TREE_ALIAS, + UMB_DOCUMENT_RECYCLE_BIN_TREE_REPOSITORY_ALIAS, + UMB_DOCUMENT_RECYCLE_BIN_TREE_STORE_ALIAS, +} from './constants.js'; import { UmbDocumentRecycleBinTreeRepository } from './document-recycle-bin-tree.repository.js'; import { UmbDocumentRecycleBinTreeStore } from './document-recycle-bin-tree.store.js'; import { manifests as reloadTreeItemChildrenManifests } from './reload-tree-item-children/manifests.js'; @@ -9,10 +14,6 @@ import type { ManifestTreeStore, } from '@umbraco-cms/backoffice/extension-registry'; -export const UMB_DOCUMENT_RECYCLE_BIN_TREE_REPOSITORY_ALIAS = 'Umb.Repository.DocumentRecycleBin.Tree'; -export const UMB_DOCUMENT_RECYCLE_BIN_TREE_STORE_ALIAS = 'Umb.Store.DocumentRecycleBin.Tree'; -export const UMB_DOCUMENT_RECYCLE_BIN_TREE_ALIAS = 'Umb.Tree.DocumentRecycleBin'; - const treeRepository: ManifestRepository = { type: 'repository', alias: UMB_DOCUMENT_RECYCLE_BIN_TREE_REPOSITORY_ALIAS, @@ -40,9 +41,9 @@ const tree: ManifestTree = { const treeItem: ManifestTreeItem = { type: 'treeItem', kind: 'default', - alias: 'Umb.TreeItem.DocumentRecycleBin', - name: 'DocumentRecycleBin Tree Item', - forEntityTypes: [UMB_DOCUMENT_RECYCLE_BIN_ROOT_ENTITY_TYPE, UMB_DOCUMENT_RECYCLE_BIN_ENTITY_TYPE], + alias: 'Umb.TreeItem.Document.RecycleBin', + name: 'Document Recycle Bin Tree Item', + forEntityTypes: [UMB_DOCUMENT_RECYCLE_BIN_ROOT_ENTITY_TYPE], }; export const manifests = [treeRepository, treeStore, tree, treeItem, ...reloadTreeItemChildrenManifests]; diff --git a/src/Umbraco.Web.UI.Client/src/packages/documents/documents/recycle-bin/tree/reload-tree-item-children/manifests.ts b/src/Umbraco.Web.UI.Client/src/packages/documents/documents/recycle-bin/tree/reload-tree-item-children/manifests.ts index 9b90625f81..35463faee4 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/documents/documents/recycle-bin/tree/reload-tree-item-children/manifests.ts +++ b/src/Umbraco.Web.UI.Client/src/packages/documents/documents/recycle-bin/tree/reload-tree-item-children/manifests.ts @@ -1,4 +1,4 @@ -import { UMB_DOCUMENT_RECYCLE_BIN_ENTITY_TYPE, UMB_DOCUMENT_RECYCLE_BIN_ROOT_ENTITY_TYPE } from '../../entity.js'; +import { UMB_DOCUMENT_RECYCLE_BIN_ROOT_ENTITY_TYPE } from '../../entity.js'; import type { ManifestTypes } from '@umbraco-cms/backoffice/extension-registry'; export const manifests: Array = [ @@ -7,6 +7,6 @@ export const manifests: Array = [ kind: 'reloadTreeItemChildren', alias: 'Umb.EntityAction.DocumentRecycleBin.Tree.ReloadChildrenOf', name: 'Reload Document Recycle Bin Tree Item Children Entity Action', - forEntityTypes: [UMB_DOCUMENT_RECYCLE_BIN_ENTITY_TYPE, UMB_DOCUMENT_RECYCLE_BIN_ROOT_ENTITY_TYPE], + forEntityTypes: [UMB_DOCUMENT_RECYCLE_BIN_ROOT_ENTITY_TYPE], }, ]; diff --git a/src/Umbraco.Web.UI.Client/src/packages/documents/documents/recycle-bin/tree/types.ts b/src/Umbraco.Web.UI.Client/src/packages/documents/documents/recycle-bin/tree/types.ts index 5c67491e8e..d84c7821f1 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/documents/documents/recycle-bin/tree/types.ts +++ b/src/Umbraco.Web.UI.Client/src/packages/documents/documents/recycle-bin/tree/types.ts @@ -1,5 +1,6 @@ -import type { UmbUniqueTreeItemModel, UmbUniqueTreeRootModel } from '@umbraco-cms/backoffice/tree'; +import type { UmbDocumentTreeItemModel } from '../../tree/index.js'; +import type { UmbUniqueTreeRootModel } from '@umbraco-cms/backoffice/tree'; -export interface UmbDocumentRecycleBinTreeItemModel extends UmbUniqueTreeItemModel {} +export interface UmbDocumentRecycleBinTreeItemModel extends UmbDocumentTreeItemModel {} export interface UmbDocumentRecycleBinTreeRootModel extends UmbUniqueTreeRootModel {} diff --git a/src/Umbraco.Web.UI.Client/src/packages/documents/documents/reference/repository/document-reference.server.data.ts b/src/Umbraco.Web.UI.Client/src/packages/documents/documents/reference/repository/document-reference.server.data.ts index 1b8cae5e0c..2a872130a3 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/documents/documents/reference/repository/document-reference.server.data.ts +++ b/src/Umbraco.Web.UI.Client/src/packages/documents/documents/reference/repository/document-reference.server.data.ts @@ -1,4 +1,4 @@ -import { DocumentResource } from '@umbraco-cms/backoffice/external/backend-api'; +import { DocumentService } from '@umbraco-cms/backoffice/external/backend-api'; import type { UmbControllerHost } from '@umbraco-cms/backoffice/controller-api'; import { tryExecuteAndNotify } from '@umbraco-cms/backoffice/resources'; @@ -26,6 +26,6 @@ export class UmbDocumentReferenceServerDataSource { * @memberof UmbDocumentReferenceServerDataSource */ async getReferencedBy(id: string, skip = 0, take = 20) { - return await tryExecuteAndNotify(this.#host, DocumentResource.getDocumentByIdReferencedBy({ id, skip, take })); + return await tryExecuteAndNotify(this.#host, DocumentService.getDocumentByIdReferencedBy({ id, skip, take })); } } diff --git a/src/Umbraco.Web.UI.Client/src/packages/documents/documents/repository/detail/document-detail.server.data-source.ts b/src/Umbraco.Web.UI.Client/src/packages/documents/documents/repository/detail/document-detail.server.data-source.ts index 904a3b62a8..e50e95ad9b 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/documents/documents/repository/detail/document-detail.server.data-source.ts +++ b/src/Umbraco.Web.UI.Client/src/packages/documents/documents/repository/detail/document-detail.server.data-source.ts @@ -6,7 +6,7 @@ import type { CreateDocumentRequestModel, UpdateDocumentRequestModel, } from '@umbraco-cms/backoffice/external/backend-api'; -import { DocumentResource } from '@umbraco-cms/backoffice/external/backend-api'; +import { DocumentService } from '@umbraco-cms/backoffice/external/backend-api'; import type { UmbControllerHost } from '@umbraco-cms/backoffice/controller-api'; import { tryExecuteAndNotify } from '@umbraco-cms/backoffice/resources'; @@ -80,7 +80,7 @@ export class UmbDocumentServerDataSource implements UmbDetailDataSource) => DocumentResource.getItemDocument({ id: uniques }); +const getItems = (uniques: Array) => DocumentService.getItemDocument({ id: uniques }); const mapper = (item: DocumentItemResponseModel): UmbDocumentItemModel => { return { diff --git a/src/Umbraco.Web.UI.Client/src/packages/documents/documents/repository/publishing/document-publishing.server.data-source.ts b/src/Umbraco.Web.UI.Client/src/packages/documents/documents/repository/publishing/document-publishing.server.data-source.ts index 20cc82657a..af96d59a88 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/documents/documents/repository/publishing/document-publishing.server.data-source.ts +++ b/src/Umbraco.Web.UI.Client/src/packages/documents/documents/repository/publishing/document-publishing.server.data-source.ts @@ -5,7 +5,7 @@ import type { PublishDocumentWithDescendantsRequestModel, UnpublishDocumentRequestModel, } from '@umbraco-cms/backoffice/external/backend-api'; -import { DocumentResource } from '@umbraco-cms/backoffice/external/backend-api'; +import { DocumentService } from '@umbraco-cms/backoffice/external/backend-api'; import type { UmbControllerHost } from '@umbraco-cms/backoffice/controller-api'; import { tryExecuteAndNotify } from '@umbraco-cms/backoffice/resources'; import type { UmbVariantId } from '@umbraco-cms/backoffice/variant'; @@ -52,7 +52,7 @@ export class UmbDocumentPublishingServerDataSource { publishSchedules, }; - return tryExecuteAndNotify(this.#host, DocumentResource.putDocumentByIdPublish({ id: unique, requestBody })); + return tryExecuteAndNotify(this.#host, DocumentService.putDocumentByIdPublish({ id: unique, requestBody })); } /** @@ -75,14 +75,14 @@ export class UmbDocumentPublishingServerDataSource { cultures: null, }; - return tryExecuteAndNotify(this.#host, DocumentResource.putDocumentByIdUnpublish({ id: unique, requestBody })); + return tryExecuteAndNotify(this.#host, DocumentService.putDocumentByIdUnpublish({ id: unique, requestBody })); } const requestBody: UnpublishDocumentRequestModel = { cultures: variantIds.map((variant) => variant.toCultureString()), }; - return tryExecuteAndNotify(this.#host, DocumentResource.putDocumentByIdUnpublish({ id: unique, requestBody })); + return tryExecuteAndNotify(this.#host, DocumentService.putDocumentByIdUnpublish({ id: unique, requestBody })); } /** @@ -103,7 +103,7 @@ export class UmbDocumentPublishingServerDataSource { return tryExecuteAndNotify( this.#host, - DocumentResource.putDocumentByIdPublishWithDescendants({ id: unique, requestBody }), + DocumentService.putDocumentByIdPublishWithDescendants({ id: unique, requestBody }), ); } } diff --git a/src/Umbraco.Web.UI.Client/src/packages/documents/documents/tree/document-tree.repository.ts b/src/Umbraco.Web.UI.Client/src/packages/documents/documents/tree/document-tree.repository.ts index 8e1e117978..999e7aff82 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/documents/documents/tree/document-tree.repository.ts +++ b/src/Umbraco.Web.UI.Client/src/packages/documents/documents/tree/document-tree.repository.ts @@ -18,7 +18,7 @@ export class UmbDocumentTreeRepository const data: UmbDocumentTreeRootModel = { unique: null, entityType: UMB_DOCUMENT_ROOT_ENTITY_TYPE, - name: 'Documents', + name: '#treeHeaders_content', hasChildren: true, isFolder: true, }; diff --git a/src/Umbraco.Web.UI.Client/src/packages/documents/documents/tree/document-tree.server.data-source.ts b/src/Umbraco.Web.UI.Client/src/packages/documents/documents/tree/document-tree.server.data-source.ts index 7ca165460b..c10981c388 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/documents/documents/tree/document-tree.server.data-source.ts +++ b/src/Umbraco.Web.UI.Client/src/packages/documents/documents/tree/document-tree.server.data-source.ts @@ -7,7 +7,7 @@ import type { } from '@umbraco-cms/backoffice/tree'; import { UmbTreeServerDataSourceBase } from '@umbraco-cms/backoffice/tree'; import type { DocumentTreeItemResponseModel } from '@umbraco-cms/backoffice/external/backend-api'; -import { DocumentResource } from '@umbraco-cms/backoffice/external/backend-api'; +import { DocumentService } from '@umbraco-cms/backoffice/external/backend-api'; import type { UmbControllerHost } from '@umbraco-cms/backoffice/controller-api'; /** @@ -37,14 +37,14 @@ export class UmbDocumentTreeServerDataSource extends UmbTreeServerDataSourceBase const getRootItems = (args: UmbTreeRootItemsRequestArgs) => // eslint-disable-next-line local-rules/no-direct-api-import - DocumentResource.getTreeDocumentRoot({ skip: args.skip, take: args.take }); + DocumentService.getTreeDocumentRoot({ skip: args.skip, take: args.take }); const getChildrenOf = (args: UmbTreeChildrenOfRequestArgs) => { if (args.parentUnique === null) { return getRootItems(args); } else { // eslint-disable-next-line local-rules/no-direct-api-import - return DocumentResource.getTreeDocumentChildren({ + return DocumentService.getTreeDocumentChildren({ parentId: args.parentUnique, skip: args.skip, take: args.take, @@ -54,7 +54,7 @@ const getChildrenOf = (args: UmbTreeChildrenOfRequestArgs) => { const getAncestorsOf = (args: UmbTreeAncestorsOfRequestArgs) => // eslint-disable-next-line local-rules/no-direct-api-import - DocumentResource.getTreeDocumentAncestors({ + DocumentService.getTreeDocumentAncestors({ descendantId: args.descendantUnique, }); diff --git a/src/Umbraco.Web.UI.Client/src/packages/documents/documents/tree/manifests.ts b/src/Umbraco.Web.UI.Client/src/packages/documents/documents/tree/manifests.ts index 281c0d85a7..5b964c6b94 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/documents/documents/tree/manifests.ts +++ b/src/Umbraco.Web.UI.Client/src/packages/documents/documents/tree/manifests.ts @@ -42,7 +42,15 @@ const treeItem: ManifestTreeItem = { name: 'Document Tree Item', element: () => import('./tree-item/document-tree-item.element.js'), api: UmbDocumentTreeItemContext, - forEntityTypes: [UMB_DOCUMENT_ROOT_ENTITY_TYPE, UMB_DOCUMENT_ENTITY_TYPE], + forEntityTypes: [UMB_DOCUMENT_ENTITY_TYPE], }; -export const manifests = [...reloadTreeItemChildrenManifests, tree, treeItem, treeRepository, treeStore]; +const rootTreeItem: ManifestTreeItem = { + type: 'treeItem', + kind: 'default', + alias: 'Umb.TreeItem.Document.Root', + name: 'Document Tree Item', + forEntityTypes: [UMB_DOCUMENT_ROOT_ENTITY_TYPE], +}; + +export const manifests = [...reloadTreeItemChildrenManifests, tree, treeItem, rootTreeItem, treeRepository, treeStore]; diff --git a/src/Umbraco.Web.UI.Client/src/packages/documents/documents/types.ts b/src/Umbraco.Web.UI.Client/src/packages/documents/documents/types.ts index 8c5903cfa5..fca17e55dc 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/documents/documents/types.ts +++ b/src/Umbraco.Web.UI.Client/src/packages/documents/documents/types.ts @@ -3,6 +3,7 @@ import type { UmbVariantModel, UmbVariantOptionModel, UmbVariantPublishModel } f import type { UmbReferenceByUnique } from '@umbraco-cms/backoffice/models'; import { DocumentVariantStateModel as UmbDocumentVariantState } from '@umbraco-cms/backoffice/external/backend-api'; export { UmbDocumentVariantState }; +export type { UmbDocumentUserPermissionConditionConfig } from './user-permissions/document-user-permission.condition.js'; export interface UmbDocumentDetailModel { documentType: { diff --git a/src/Umbraco.Web.UI.Client/src/packages/documents/documents/user-permissions/constants.ts b/src/Umbraco.Web.UI.Client/src/packages/documents/documents/user-permissions/constants.ts index b33399bf8f..6b789bd308 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/documents/documents/user-permissions/constants.ts +++ b/src/Umbraco.Web.UI.Client/src/packages/documents/documents/user-permissions/constants.ts @@ -1,16 +1,15 @@ -export const UMB_USER_PERMISSION_DOCUMENT_CREATE = 'Umb.UserPermission.Document.Create'; -export const UMB_USER_PERMISSION_DOCUMENT_READ = 'Umb.UserPermission.Document.Read'; -export const UMB_USER_PERMISSION_DOCUMENT_UPDATE = 'Umb.UserPermission.Document.Update'; -export const UMB_USER_PERMISSION_DOCUMENT_DELETE = 'Umb.UserPermission.Document.Delete'; -export const UMB_USER_PERMISSION_DOCUMENT_CREATE_BLUEPRINT = 'Umb.UserPermission.Document.CreateBlueprint'; -export const UMB_USER_PERMISSION_DOCUMENT_NOTIFICATIONS = 'Umb.UserPermission.Document.Notifications'; -export const UMB_USER_PERMISSION_DOCUMENT_PUBLISH = 'Umb.UserPermission.Document.Publish'; -export const UMB_USER_PERMISSION_DOCUMENT_PERMISSIONS = 'Umb.UserPermission.Document.Permissions'; -export const UMB_USER_PERMISSION_DOCUMENT_SEND_FOR_APPROVAL = 'Umb.UserPermission.Document.SendForApproval'; -export const UMB_USER_PERMISSION_DOCUMENT_UNPUBLISH = 'Umb.UserPermission.Document.Unpublish'; -export const UMB_USER_PERMISSION_DOCUMENT_DUPLICATE = 'Umb.UserPermission.Document.Duplicate'; -export const UMB_USER_PERMISSION_DOCUMENT_MOVE = 'Umb.UserPermission.Document.Move'; -export const UMB_USER_PERMISSION_DOCUMENT_SORT = 'Umb.UserPermission.Document.Sort'; -export const UMB_USER_PERMISSION_DOCUMENT_CULTURE_AND_HOSTNAMES = 'Umb.UserPermission.Document.CultureAndHostnames'; -export const UMB_USER_PERMISSION_DOCUMENT_PUBLIC_ACCESS = 'Umb.UserPermission.Document.PublicAccess'; -export const UMB_USER_PERMISSION_DOCUMENT_ROLLBACK = 'Umb.UserPermission.Document.Rollback'; +export const UMB_USER_PERMISSION_DOCUMENT_CREATE = 'Umb.Document.Create'; +export const UMB_USER_PERMISSION_DOCUMENT_READ = 'Umb.Document.Read'; +export const UMB_USER_PERMISSION_DOCUMENT_UPDATE = 'Umb.Document.Update'; +export const UMB_USER_PERMISSION_DOCUMENT_DELETE = 'Umb.Document.Delete'; +export const UMB_USER_PERMISSION_DOCUMENT_CREATE_BLUEPRINT = 'Umb.Document.CreateBlueprint'; +export const UMB_USER_PERMISSION_DOCUMENT_NOTIFICATIONS = 'Umb.Document.Notifications'; +export const UMB_USER_PERMISSION_DOCUMENT_PUBLISH = 'Umb.Document.Publish'; +export const UMB_USER_PERMISSION_DOCUMENT_PERMISSIONS = 'Umb.Document.Permissions'; +export const UMB_USER_PERMISSION_DOCUMENT_UNPUBLISH = 'Umb.Document.Unpublish'; +export const UMB_USER_PERMISSION_DOCUMENT_DUPLICATE = 'Umb.Document.Duplicate'; +export const UMB_USER_PERMISSION_DOCUMENT_MOVE = 'Umb.Document.Move'; +export const UMB_USER_PERMISSION_DOCUMENT_SORT = 'Umb.Document.Sort'; +export const UMB_USER_PERMISSION_DOCUMENT_CULTURE_AND_HOSTNAMES = 'Umb.Document.CultureAndHostnames'; +export const UMB_USER_PERMISSION_DOCUMENT_PUBLIC_ACCESS = 'Umb.Document.PublicAccess'; +export const UMB_USER_PERMISSION_DOCUMENT_ROLLBACK = 'Umb.Document.Rollback'; diff --git a/src/Umbraco.Web.UI.Client/src/packages/documents/documents/user-permissions/document-user-permission.condition.ts b/src/Umbraco.Web.UI.Client/src/packages/documents/documents/user-permissions/document-user-permission.condition.ts new file mode 100644 index 0000000000..607ac7f761 --- /dev/null +++ b/src/Umbraco.Web.UI.Client/src/packages/documents/documents/user-permissions/document-user-permission.condition.ts @@ -0,0 +1,137 @@ +import { UMB_ENTITY_CONTEXT } from '@umbraco-cms/backoffice/entity'; +import { UMB_CURRENT_USER_CONTEXT } from '../../../user/current-user/current-user.context.js'; +import { isDocumentUserPermission } from './utils.js'; +import { observeMultiple } from '@umbraco-cms/backoffice/observable-api'; +import { UmbConditionBase } from '@umbraco-cms/backoffice/extension-registry'; +import type { + ManifestCondition, + UmbConditionConfigBase, + UmbConditionControllerArguments, + UmbExtensionCondition, +} from '@umbraco-cms/backoffice/extension-api'; +import type { UmbControllerHost } from '@umbraco-cms/backoffice/controller-api'; +import type { DocumentPermissionPresentationModel } from '@umbraco-cms/backoffice/external/backend-api'; + +export class UmbDocumentUserPermissionCondition + extends UmbConditionBase + implements UmbExtensionCondition +{ + #entityType: string | undefined; + #unique: string | null | undefined; + #documentPermissions: Array = []; + #fallbackPermissions: string[] = []; + + constructor( + host: UmbControllerHost, + args: UmbConditionControllerArguments, + ) { + super(host, args); + + this.consumeContext(UMB_CURRENT_USER_CONTEXT, (context) => { + this.observe( + context.currentUser, + (currentUser) => { + this.#documentPermissions = currentUser?.permissions?.filter(isDocumentUserPermission) || []; + this.#fallbackPermissions = currentUser?.fallbackPermissions || []; + this.#checkPermissions(); + }, + 'umbUserPermissionConditionObserver', + ); + }); + + this.consumeContext(UMB_ENTITY_CONTEXT, (context) => { + if (!context) return; + + this.observe( + observeMultiple([context.entityType, context.unique]), + ([entityType, unique]) => { + this.#entityType = entityType; + this.#unique = unique; + this.#checkPermissions(); + }, + 'umbUserPermissionEntityContextObserver', + ); + }); + } + + #checkPermissions() { + if (!this.#entityType) return; + if (this.#unique === undefined) return; + + const hasDocumentPermissions = this.#documentPermissions.length > 0; + + // if there is no permissions for any documents we use the fallback permissions + if (!hasDocumentPermissions) { + this.#check(this.#fallbackPermissions); + return; + } + + /* If there are document permission we check if there are permissions for the current document + If there aren't we use the fallback permissions */ + if (hasDocumentPermissions) { + const permissionsForCurrentDocument = this.#documentPermissions.find( + (permission) => permission.document.id === this.#unique, + ); + + // no permissions for the current document - use the fallback permissions + if (!permissionsForCurrentDocument) { + this.#check(this.#fallbackPermissions); + return; + } + + // we found permissions for the current document - check them + this.#check(permissionsForCurrentDocument.verbs); + } + } + + #check(verbs: Array) { + /* we default to true se we don't require both allOf and oneOf to be defined + but they can be combined for more complex scenarios */ + let allOfPermitted = true; + let oneOfPermitted = true; + + // check if all of the verbs are present + if (this.config.allOf?.length) { + allOfPermitted = this.config.allOf.every((verb) => verbs.includes(verb)); + } + + // check if at least one of the verbs is present + if (this.config.oneOf?.length) { + oneOfPermitted = this.config.oneOf.some((verb) => verbs.includes(verb)); + } + + // if neither allOf or oneOf is defined we default to false + if (!allOfPermitted && !oneOfPermitted) { + allOfPermitted = false; + oneOfPermitted = false; + } + + this.permitted = allOfPermitted && oneOfPermitted; + } +} + +export type UmbDocumentUserPermissionConditionConfig = + UmbConditionConfigBase<'Umb.Condition.UserPermission.Document'> & { + /** + * The user must have all of the permissions in this array for the condition to be met. + * + * @example + * ["Umb.Document.Save", "Umb.Document.Publish"] + */ + allOf?: Array; + + /** + * The user must have at least one of the permissions in this array for the condition to be met. + * + * @example + * ["Umb.Document.Save", "Umb.Document.Publish"] + */ + oneOf?: Array; + }; + +export const manifest: ManifestCondition = { + type: 'condition', + name: 'Document User Permission Condition', + alias: 'Umb.Condition.UserPermission.Document', + api: UmbDocumentUserPermissionCondition, +}; diff --git a/src/Umbraco.Web.UI.Client/src/packages/documents/documents/user-permissions/input-document-granular-user-permission/input-document-granular-user-permission.element.ts b/src/Umbraco.Web.UI.Client/src/packages/documents/documents/user-permissions/input-document-granular-user-permission/input-document-granular-user-permission.element.ts index 7eb0367957..8c43e9af9c 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/documents/documents/user-permissions/input-document-granular-user-permission/input-document-granular-user-permission.element.ts +++ b/src/Umbraco.Web.UI.Client/src/packages/documents/documents/user-permissions/input-document-granular-user-permission/input-document-granular-user-permission.element.ts @@ -66,7 +66,7 @@ export class UmbInputDocumentGranularUserPermissionElement extends FormControlMi this.dispatchEvent(new UmbChangeEvent()); } - #addGranularPermission() { + async #addGranularPermission() { this.#documentPickerModalContext = this.#modalManagerContext?.open(this, UMB_DOCUMENT_PICKER_MODAL, { data: { hideTreeRoot: true, @@ -83,17 +83,24 @@ export class UmbInputDocumentGranularUserPermissionElement extends FormControlMi if (!unique) return; const documentItem = await this.#requestDocumentItem(unique); - const result = await this.#selectEntityUserPermissionsForDocument(documentItem); - this.#documentPickerModalContext?.reject(); - const permissionItem: UmbDocumentUserPermissionModel = { - $type: 'DocumentPermissionPresentationModel', - document: { id: unique }, - verbs: result, - }; + this.#selectEntityUserPermissionsForDocument(documentItem).then( + (result) => { + this.#documentPickerModalContext?.reject(); - this.permissions = [...this._permissions, permissionItem]; - this.dispatchEvent(new UmbChangeEvent()); + const permissionItem: UmbDocumentUserPermissionModel = { + $type: 'DocumentPermissionPresentationModel', + document: { id: unique }, + verbs: result, + }; + + this.permissions = [...this._permissions, permissionItem]; + this.dispatchEvent(new UmbChangeEvent()); + }, + () => { + this.#documentPickerModalContext?.reject(); + }, + ); }); } @@ -127,7 +134,7 @@ export class UmbInputDocumentGranularUserPermissionElement extends FormControlMi const value = await this.#entityUserPermissionModalContext?.onSubmit(); return value?.allowedVerbs; } catch (error) { - return allowedVerbs; + throw new Error(); } } @@ -218,14 +225,7 @@ export class UmbInputDocumentGranularUserPermissionElement extends FormControlMi ) .map((m) => { const manifest = m as ManifestEntityUserPermission; - - if (manifest.meta.labelKey) { - return this.localize.term(manifest.meta.labelKey); - } else if (manifest.meta.label) { - return manifest.meta.label; - } else { - return manifest.name; - } + return manifest.meta.label ? this.localize.string(manifest.meta.label) : manifest.name; }) .join(', '); } diff --git a/src/Umbraco.Web.UI.Client/src/packages/documents/documents/user-permissions/manifests.ts b/src/Umbraco.Web.UI.Client/src/packages/documents/documents/user-permissions/manifests.ts index 1fc1880cb9..bd7db811ec 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/documents/documents/user-permissions/manifests.ts +++ b/src/Umbraco.Web.UI.Client/src/packages/documents/documents/user-permissions/manifests.ts @@ -17,6 +17,7 @@ import { UMB_USER_PERMISSION_DOCUMENT_ROLLBACK, } from './constants.js'; import { manifests as repositoryManifests } from './repository/manifests.js'; +import { manifest as conditionManifest } from './document-user-permission.condition.js'; import type { ManifestGranularUserPermission, ManifestEntityUserPermission, @@ -30,8 +31,8 @@ const permissions: Array = [ forEntityTypes: [UMB_DOCUMENT_ENTITY_TYPE], meta: { verbs: ['Umb.Document.Read'], - labelKey: 'actions_browse', - descriptionKey: 'actionDescriptions_browse', + label: '#actions_browse', + description: '#actionDescriptions_browse', }, }, { @@ -41,8 +42,8 @@ const permissions: Array = [ forEntityTypes: [UMB_DOCUMENT_ENTITY_TYPE], meta: { verbs: ['Umb.Document.CreateBlueprint'], - labelKey: 'actions_createblueprint', - descriptionKey: 'actionDescriptions_createblueprint', + label: '#actions_createblueprint', + description: '#actionDescriptions_createblueprint', }, }, { @@ -52,8 +53,8 @@ const permissions: Array = [ forEntityTypes: [UMB_DOCUMENT_ENTITY_TYPE], meta: { verbs: ['Umb.Document.Delete'], - labelKey: 'actions_delete', - descriptionKey: 'actionDescriptions_delete', + label: '#actions_delete', + description: '#actionDescriptions_delete', }, }, { @@ -63,8 +64,8 @@ const permissions: Array = [ forEntityTypes: [UMB_DOCUMENT_ENTITY_TYPE], meta: { verbs: ['Umb.Document.Create'], - labelKey: 'actions_create', - descriptionKey: 'actionDescriptions_create', + label: '#actions_create', + description: '#actionDescriptions_create', }, }, { @@ -74,8 +75,8 @@ const permissions: Array = [ forEntityTypes: [UMB_DOCUMENT_ENTITY_TYPE], meta: { verbs: ['Umb.Document.Notifications'], - labelKey: 'actions_notify', - descriptionKey: 'actionDescriptions_notify', + label: '#actions_notify', + description: '#actionDescriptions_notify', }, }, { @@ -85,8 +86,8 @@ const permissions: Array = [ forEntityTypes: [UMB_DOCUMENT_ENTITY_TYPE], meta: { verbs: ['Umb.Document.Publish'], - labelKey: 'actions_publish', - descriptionKey: 'actionDescriptions_publish', + label: '#actions_publish', + description: '#actionDescriptions_publish', }, }, { @@ -96,8 +97,8 @@ const permissions: Array = [ forEntityTypes: [UMB_DOCUMENT_ENTITY_TYPE], meta: { verbs: ['Umb.Document.Permissions'], - labelKey: 'actions_setPermissions', - descriptionKey: 'actionDescriptions_rights', + label: '#actions_setPermissions', + description: '#actionDescriptions_rights', }, }, { @@ -107,8 +108,8 @@ const permissions: Array = [ forEntityTypes: [UMB_DOCUMENT_ENTITY_TYPE], meta: { verbs: ['Umb.Document.Unpublish'], - labelKey: 'actions_unpublish', - descriptionKey: 'actionDescriptions_unpublish', + label: '#actions_unpublish', + description: '#actionDescriptions_unpublish', }, }, { @@ -118,8 +119,8 @@ const permissions: Array = [ forEntityTypes: [UMB_DOCUMENT_ENTITY_TYPE], meta: { verbs: ['Umb.Document.Update'], - labelKey: 'actions_update', - descriptionKey: 'actionDescriptions_update', + label: '#actions_update', + description: '#actionDescriptions_update', }, }, { @@ -129,8 +130,8 @@ const permissions: Array = [ forEntityTypes: [UMB_DOCUMENT_ENTITY_TYPE], meta: { verbs: ['Umb.Document.Duplicate'], - labelKey: 'actions_copy', - descriptionKey: 'actionDescriptions_copy', + label: '#actions_copy', + description: '#actionDescriptions_copy', group: 'structure', }, }, @@ -141,8 +142,8 @@ const permissions: Array = [ forEntityTypes: [UMB_DOCUMENT_ENTITY_TYPE], meta: { verbs: ['Umb.Document.Move'], - labelKey: 'actions_move', - descriptionKey: 'actionDescriptions_move', + label: '#actions_move', + description: '#actionDescriptions_move', group: 'structure', }, }, @@ -153,8 +154,8 @@ const permissions: Array = [ forEntityTypes: [UMB_DOCUMENT_ENTITY_TYPE], meta: { verbs: ['Umb.Document.Sort'], - labelKey: 'actions_sort', - descriptionKey: 'actionDescriptions_sort', + label: '#actions_sort', + description: '#actionDescriptions_sort', group: 'structure', }, }, @@ -165,8 +166,8 @@ const permissions: Array = [ forEntityTypes: [UMB_DOCUMENT_ENTITY_TYPE], meta: { verbs: ['Umb.Document.CultureAndHostnames'], - labelKey: 'actions_assigndomain', - descriptionKey: 'actionDescriptions_assignDomain', + label: '#actions_assigndomain', + description: '#actionDescriptions_assignDomain', group: 'administration', }, }, @@ -177,8 +178,8 @@ const permissions: Array = [ forEntityTypes: [UMB_DOCUMENT_ENTITY_TYPE], meta: { verbs: ['Umb.Document.PublicAccess'], - labelKey: 'actions_protect', - descriptionKey: 'actionDescriptions_protect', + label: '#actions_protect', + description: '#actionDescriptions_protect', group: 'administration', }, }, @@ -189,8 +190,8 @@ const permissions: Array = [ forEntityTypes: [UMB_DOCUMENT_ENTITY_TYPE], meta: { verbs: ['Umb.Document.Rollback'], - labelKey: 'actions_rollback', - descriptionKey: 'actionDescriptions_rollback', + label: '#actions_rollback', + description: '#actionDescriptions_rollback', group: 'administration', }, }, @@ -211,4 +212,4 @@ export const granularPermissions: Array = [ }, ]; -export const manifests = [...repositoryManifests, ...permissions, ...granularPermissions]; +export const manifests = [...repositoryManifests, ...permissions, ...granularPermissions, conditionManifest]; diff --git a/src/Umbraco.Web.UI.Client/src/packages/documents/documents/user-permissions/utils.ts b/src/Umbraco.Web.UI.Client/src/packages/documents/documents/user-permissions/utils.ts new file mode 100644 index 0000000000..f49a1d73eb --- /dev/null +++ b/src/Umbraco.Web.UI.Client/src/packages/documents/documents/user-permissions/utils.ts @@ -0,0 +1,10 @@ +import type { + DocumentPermissionPresentationModel, + UnknownTypePermissionPresentationModel, +} from '@umbraco-cms/backoffice/external/backend-api'; + +export function isDocumentUserPermission( + permission: DocumentPermissionPresentationModel | UnknownTypePermissionPresentationModel, +): permission is DocumentPermissionPresentationModel { + return (permission as DocumentPermissionPresentationModel).$type === 'DocumentPermissionPresentationModel'; +} diff --git a/src/Umbraco.Web.UI.Client/src/packages/documents/documents/workspace/actions/publish-with-descendants.action.ts b/src/Umbraco.Web.UI.Client/src/packages/documents/documents/workspace/actions/publish-with-descendants.action.ts index f1c1fe9fe3..1476c21406 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/documents/documents/workspace/actions/publish-with-descendants.action.ts +++ b/src/Umbraco.Web.UI.Client/src/packages/documents/documents/workspace/actions/publish-with-descendants.action.ts @@ -7,3 +7,5 @@ export class UmbDocumentPublishWithDescendantsWorkspaceAction extends UmbWorkspa return workspaceContext.publishWithDescendants(); } } + +export { UmbDocumentPublishWithDescendantsWorkspaceAction as api }; diff --git a/src/Umbraco.Web.UI.Client/src/packages/documents/documents/workspace/actions/save-and-preview.action.ts b/src/Umbraco.Web.UI.Client/src/packages/documents/documents/workspace/actions/save-and-preview.action.ts index 67fea0b564..0b7bd4f7e3 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/documents/documents/workspace/actions/save-and-preview.action.ts +++ b/src/Umbraco.Web.UI.Client/src/packages/documents/documents/workspace/actions/save-and-preview.action.ts @@ -1,13 +1,31 @@ -import { UMB_DOCUMENT_WORKSPACE_CONTEXT } from '../document-workspace.context-token.js'; +import { UmbDocumentUserPermissionCondition } from '../../user-permissions/document-user-permission.condition.js'; +import { UMB_USER_PERMISSION_DOCUMENT_UPDATE } from '../../user-permissions/index.js'; import { UmbWorkspaceActionBase } from '@umbraco-cms/backoffice/workspace'; +import type { UmbControllerHost } from '@umbraco-cms/backoffice/controller-api'; export class UmbDocumentSaveAndPreviewWorkspaceAction extends UmbWorkspaceActionBase { + constructor(host: UmbControllerHost, args: any) { + super(host, args); + + /* The action is disabled by default because the onChange callback + will first be triggered when the condition is changed to permitted */ + this.disable(); + + const condition = new UmbDocumentUserPermissionCondition(host, { + host, + config: { + alias: 'Umb.Condition.UserPermission.Document', + allOf: [UMB_USER_PERMISSION_DOCUMENT_UPDATE], + }, + onChange: () => { + condition.permitted ? this.enable() : this.disable(); + }, + }); + } + async execute() { - const workspaceContext = await this.getContext(UMB_DOCUMENT_WORKSPACE_CONTEXT); - //const document = workspaceContext.getData(); - // TODO: handle errors - //if (!document) return; - //this.workspaceContext.repository?.saveAndPreview(); - //Remember to return a promise. + alert('Save and preview'); } } + +export { UmbDocumentSaveAndPreviewWorkspaceAction as api }; diff --git a/src/Umbraco.Web.UI.Client/src/packages/documents/documents/workspace/actions/save-and-publish.action.ts b/src/Umbraco.Web.UI.Client/src/packages/documents/documents/workspace/actions/save-and-publish.action.ts index 223602ad3c..8b63be05bc 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/documents/documents/workspace/actions/save-and-publish.action.ts +++ b/src/Umbraco.Web.UI.Client/src/packages/documents/documents/workspace/actions/save-and-publish.action.ts @@ -1,9 +1,36 @@ import { UMB_DOCUMENT_WORKSPACE_CONTEXT } from '../document-workspace.context-token.js'; +import { + UMB_USER_PERMISSION_DOCUMENT_PUBLISH, + UMB_USER_PERMISSION_DOCUMENT_UPDATE, +} from '../../user-permissions/constants.js'; +import { UmbDocumentUserPermissionCondition } from '../../user-permissions/document-user-permission.condition.js'; +import type { UmbControllerHost } from '@umbraco-cms/backoffice/controller-api'; import { UmbWorkspaceActionBase } from '@umbraco-cms/backoffice/workspace'; export class UmbDocumentSaveAndPublishWorkspaceAction extends UmbWorkspaceActionBase { + constructor(host: UmbControllerHost, args: any) { + super(host, args); + + /* The action is disabled by default because the onChange callback + will first be triggered when the condition is changed to permitted */ + this.disable(); + + const condition = new UmbDocumentUserPermissionCondition(host, { + host, + config: { + alias: 'Umb.Condition.UserPermission.Document', + allOf: [UMB_USER_PERMISSION_DOCUMENT_UPDATE, UMB_USER_PERMISSION_DOCUMENT_PUBLISH], + }, + onChange: () => { + condition.permitted ? this.enable() : this.disable(); + }, + }); + } + async execute() { const workspaceContext = await this.getContext(UMB_DOCUMENT_WORKSPACE_CONTEXT); return workspaceContext.saveAndPublish(); } } + +export { UmbDocumentSaveAndPublishWorkspaceAction as api }; diff --git a/src/Umbraco.Web.UI.Client/src/packages/documents/documents/workspace/actions/save-and-schedule.action.ts b/src/Umbraco.Web.UI.Client/src/packages/documents/documents/workspace/actions/save-and-schedule.action.ts index 6419b22d54..2220f006ff 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/documents/documents/workspace/actions/save-and-schedule.action.ts +++ b/src/Umbraco.Web.UI.Client/src/packages/documents/documents/workspace/actions/save-and-schedule.action.ts @@ -7,3 +7,5 @@ export class UmbDocumentSaveAndScheduleWorkspaceAction extends UmbWorkspaceActio return workspaceContext.schedule(); } } + +export { UmbDocumentSaveAndScheduleWorkspaceAction as api }; diff --git a/src/Umbraco.Web.UI.Client/src/packages/documents/documents/workspace/actions/save.action.ts b/src/Umbraco.Web.UI.Client/src/packages/documents/documents/workspace/actions/save.action.ts new file mode 100644 index 0000000000..385b7e565c --- /dev/null +++ b/src/Umbraco.Web.UI.Client/src/packages/documents/documents/workspace/actions/save.action.ts @@ -0,0 +1,34 @@ +import { + UMB_USER_PERMISSION_DOCUMENT_CREATE, + UMB_USER_PERMISSION_DOCUMENT_UPDATE, +} from '../../user-permissions/constants.js'; +import { UmbDocumentUserPermissionCondition } from '../../user-permissions/document-user-permission.condition.js'; +import type { UmbControllerHost } from '@umbraco-cms/backoffice/controller-api'; +import { UmbSubmitWorkspaceAction } from '@umbraco-cms/backoffice/workspace'; + +export class UmbDocumentSaveWorkspaceAction extends UmbSubmitWorkspaceAction { + constructor(host: UmbControllerHost, args: any) { + super(host, args); + + /* The action is disabled by default because the onChange callback + will first be triggered when the condition is changed to permitted */ + this.disable(); + + // TODO: this check is not sufficient. It will show the save button if a use + // has only create options. The best solution would be to split the two buttons into two separate actions + // with a condition on isNew to show/hide them + // The server will throw a permission error if this scenario happens + const condition = new UmbDocumentUserPermissionCondition(host, { + host, + config: { + alias: 'Umb.Condition.UserPermission.Document', + oneOf: [UMB_USER_PERMISSION_DOCUMENT_CREATE, UMB_USER_PERMISSION_DOCUMENT_UPDATE], + }, + onChange: () => { + condition.permitted ? this.enable() : this.disable(); + }, + }); + } +} + +export { UmbDocumentSaveWorkspaceAction as api }; diff --git a/src/Umbraco.Web.UI.Client/src/packages/documents/documents/workspace/actions/unpublish.action.ts b/src/Umbraco.Web.UI.Client/src/packages/documents/documents/workspace/actions/unpublish.action.ts index dd07517d21..b74b5713b2 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/documents/documents/workspace/actions/unpublish.action.ts +++ b/src/Umbraco.Web.UI.Client/src/packages/documents/documents/workspace/actions/unpublish.action.ts @@ -7,3 +7,5 @@ export class UmbDocumentUnpublishWorkspaceAction extends UmbWorkspaceActionBase return workspaceContext.unpublish(); } } + +export { UmbDocumentUnpublishWorkspaceAction as api }; diff --git a/src/Umbraco.Web.UI.Client/src/packages/documents/documents/workspace/document-workspace.context.ts b/src/Umbraco.Web.UI.Client/src/packages/documents/documents/workspace/document-workspace.context.ts index 372d192409..c1ad169068 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/documents/documents/workspace/document-workspace.context.ts +++ b/src/Umbraco.Web.UI.Client/src/packages/documents/documents/workspace/document-workspace.context.ts @@ -175,8 +175,6 @@ export class UmbDocumentWorkspaceContext component: () => import('./document-workspace-editor.element.js'), setup: (_component, info) => { const unique = info.match.params.unique; - this.#entityContext.setEntityType(UMB_DOCUMENT_ENTITY_TYPE); - this.#entityContext.setUnique(unique); this.load(unique); }, }, @@ -202,6 +200,8 @@ export class UmbDocumentWorkspaceContext const { data, asObservable } = (await this.#getDataPromise) as GetDataType; if (data) { + this.#entityContext.setEntityType(UMB_DOCUMENT_ENTITY_TYPE); + this.#entityContext.setUnique(unique); this.setIsNew(false); this.#persistedData.setValue(data); this.#currentData.setValue(data); @@ -229,6 +229,8 @@ export class UmbDocumentWorkspaceContext const { data } = await this.#getDataPromise; if (!data) return undefined; + this.#entityContext.setEntityType(UMB_DOCUMENT_ENTITY_TYPE); + this.#entityContext.setUnique(data.unique); this.setIsNew(true); this.#persistedData.setValue(undefined); this.#currentData.setValue(data); diff --git a/src/Umbraco.Web.UI.Client/src/packages/documents/documents/workspace/manifests.ts b/src/Umbraco.Web.UI.Client/src/packages/documents/documents/workspace/manifests.ts index adb25f6266..238f8f6cbe 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/documents/documents/workspace/manifests.ts +++ b/src/Umbraco.Web.UI.Client/src/packages/documents/documents/workspace/manifests.ts @@ -1,9 +1,9 @@ import { UMB_DOCUMENT_ENTITY_TYPE } from '../entity.js'; -import { UmbDocumentSaveAndScheduleWorkspaceAction } from './actions/save-and-schedule.action.js'; -import { UmbDocumentUnpublishWorkspaceAction } from './actions/unpublish.action.js'; -import { UmbDocumentSaveAndPublishWorkspaceAction } from './actions/save-and-publish.action.js'; -import { UmbDocumentPublishWithDescendantsWorkspaceAction } from './actions/publish-with-descendants.action.js'; -import { UmbSubmitWorkspaceAction } from '@umbraco-cms/backoffice/workspace'; +import { + UMB_USER_PERMISSION_DOCUMENT_UNPUBLISH, + UMB_USER_PERMISSION_DOCUMENT_UPDATE, + UMB_USER_PERMISSION_DOCUMENT_PUBLISH, +} from '../user-permissions/index.js'; import type { ManifestWorkspaces, ManifestWorkspaceActions, @@ -51,7 +51,7 @@ const workspaceViews: Array = [ alias: 'Umb.WorkspaceView.Document.Edit', name: 'Document Workspace Edit View', meta: { - label: 'Content', + label: '#general_content', pathname: 'content', icon: 'document', }, @@ -69,7 +69,7 @@ const workspaceViews: Array = [ element: () => import('./views/info/document-workspace-view-info.element.js'), weight: 100, meta: { - label: 'Info', + label: '#general_info', pathname: 'info', icon: 'info', }, @@ -89,9 +89,9 @@ const workspaceActions: Array = [ alias: 'Umb.WorkspaceAction.Document.SaveAndPublish', name: 'Save And Publish Document Workspace Action', weight: 70, - api: UmbDocumentSaveAndPublishWorkspaceAction, + api: () => import('./actions/save-and-publish.action.js'), meta: { - label: 'Save And Publish', + label: '#buttons_saveAndPublish', look: 'primary', color: 'positive', }, @@ -108,9 +108,9 @@ const workspaceActions: Array = [ alias: 'Umb.WorkspaceAction.Document.Save', name: 'Save Document Workspace Action', weight: 80, - api: UmbSubmitWorkspaceAction, + api: () => import('./actions/save.action.js'), meta: { - label: 'Save', + label: '#buttons_save', look: 'secondary', color: 'positive', }, @@ -121,13 +121,13 @@ const workspaceActions: Array = [ }, ], }, - /* { type: 'workspaceAction', + kind: 'default', alias: 'Umb.WorkspaceAction.Document.SaveAndPreview', name: 'Save And Preview Document Workspace Action', weight: 90, - api: UmbDocumentSaveAndPreviewWorkspaceAction, + api: () => import('./actions/save-and-preview.action.js'), meta: { label: 'Save And Preview', }, @@ -138,7 +138,6 @@ const workspaceActions: Array = [ }, ], }, - */ ]; const workspaceActionMenuItems: Array = [ @@ -148,12 +147,18 @@ const workspaceActionMenuItems: Array = [ alias: 'Umb.Document.WorkspaceActionMenuItem.Unpublish', name: 'Unpublish', weight: 0, - api: UmbDocumentUnpublishWorkspaceAction, + api: () => import('./actions/unpublish.action.js'), forWorkspaceActions: 'Umb.WorkspaceAction.Document.SaveAndPublish', meta: { - label: 'Unpublish...', + label: '#actions_unpublish', icon: 'icon-globe', }, + conditions: [ + { + alias: 'Umb.Condition.UserPermission.Document', + allOf: [UMB_USER_PERMISSION_DOCUMENT_UNPUBLISH], + }, + ], }, { type: 'workspaceActionMenuItem', @@ -161,12 +166,18 @@ const workspaceActionMenuItems: Array = [ alias: 'Umb.Document.WorkspaceActionMenuItem.PublishWithDescendants', name: 'Publish with descendants', weight: 10, - api: UmbDocumentPublishWithDescendantsWorkspaceAction, + api: () => import('./actions/publish-with-descendants.action.js'), forWorkspaceActions: 'Umb.WorkspaceAction.Document.SaveAndPublish', meta: { - label: 'Publish with descendants...', + label: '#buttons_publishDescendants', icon: 'icon-globe', }, + conditions: [ + { + alias: 'Umb.Condition.UserPermission.Document', + allOf: [UMB_USER_PERMISSION_DOCUMENT_UPDATE, UMB_USER_PERMISSION_DOCUMENT_PUBLISH], + }, + ], }, { type: 'workspaceActionMenuItem', @@ -174,12 +185,18 @@ const workspaceActionMenuItems: Array = [ alias: 'Umb.Document.WorkspaceActionMenuItem.SchedulePublishing', name: 'Schedule publishing', weight: 20, - api: UmbDocumentSaveAndScheduleWorkspaceAction, + api: () => import('./actions/save-and-schedule.action.js'), forWorkspaceActions: 'Umb.WorkspaceAction.Document.SaveAndPublish', meta: { - label: 'Schedule...', + label: '#buttons_schedulePublish', icon: 'icon-globe', }, + conditions: [ + { + alias: 'Umb.Condition.UserPermission.Document', + allOf: [UMB_USER_PERMISSION_DOCUMENT_UPDATE, UMB_USER_PERMISSION_DOCUMENT_PUBLISH], + }, + ], }, ]; diff --git a/src/Umbraco.Web.UI.Client/src/packages/documents/documents/workspace/views/info/document-workspace-view-info-history.element.ts b/src/Umbraco.Web.UI.Client/src/packages/documents/documents/workspace/views/info/document-workspace-view-info-history.element.ts index 600d06260f..216c381979 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/documents/documents/workspace/views/info/document-workspace-view-info-history.element.ts +++ b/src/Umbraco.Web.UI.Client/src/packages/documents/documents/workspace/views/info/document-workspace-view-info-history.element.ts @@ -1,3 +1,4 @@ +import { UMB_ROLLBACK_MODAL } from '../../../modals/rollback/index.js'; import { HistoryTagStyleAndText, TimeOptions } from './utils.js'; import { UmbAuditLogRepository } from '@umbraco-cms/backoffice/audit-log'; import { @@ -15,6 +16,8 @@ import { UmbLitElement } from '@umbraco-cms/backoffice/lit-element'; import { UmbTextStyles } from '@umbraco-cms/backoffice/style'; import type { AuditLogWithUsernameResponseModel } from '@umbraco-cms/backoffice/external/backend-api'; import { DirectionModel } from '@umbraco-cms/backoffice/external/backend-api'; +import { UMB_MODAL_MANAGER_CONTEXT } from '@umbraco-cms/backoffice/modal'; +import { UMB_NOTIFICATION_CONTEXT } from '@umbraco-cms/backoffice/notification'; @customElement('umb-document-workspace-view-info-history') export class UmbDocumentWorkspaceViewInfoHistoryElement extends UmbLitElement { @@ -88,6 +91,16 @@ export class UmbDocumentWorkspaceViewInfoHistoryElement extends UmbLitElement { this.#getLogs(); } + #onRollbackModalOpen = async () => { + const modalManagerContext = await this.getContext(UMB_MODAL_MANAGER_CONTEXT); + const modalContext = modalManagerContext.open(this, UMB_ROLLBACK_MODAL, {}); + + await modalContext.onSubmit(); + // TODO: This notification won't actually show at the moment because we perform a full page reload after rollback. However, when we can do it without a full page reload, this should be used. + const notificationContext = await this.getContext(UMB_NOTIFICATION_CONTEXT); + notificationContext.peek('positive', { data: { message: this.localize.term('rollback_documentRolledBack') } }); + }; + render() { return html`
@@ -96,9 +109,8 @@ export class UmbDocumentWorkspaceViewInfoHistoryElement extends UmbLitElement { label=${this.localize.term('actions_rollback')} look="secondary" slot="actions" - @click=${() => alert('TODO: Rollback Modal')}> + @click=${this.#onRollbackModalOpen}> -
${this._items ? this.#renderHistory() : html` `} diff --git a/src/Umbraco.Web.UI.Client/src/packages/documents/index.ts b/src/Umbraco.Web.UI.Client/src/packages/documents/index.ts index b9cc5c0340..e0f90f8c40 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/documents/index.ts +++ b/src/Umbraco.Web.UI.Client/src/packages/documents/index.ts @@ -1,4 +1,5 @@ import './document-types/index.js'; import './documents/index.js'; +import './document-blueprints/index.js'; export * from './manifests.js'; diff --git a/src/Umbraco.Web.UI.Client/src/packages/documents/section.manifests.ts b/src/Umbraco.Web.UI.Client/src/packages/documents/section.manifests.ts index 81a84ad864..bba5937c6b 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/documents/section.manifests.ts +++ b/src/Umbraco.Web.UI.Client/src/packages/documents/section.manifests.ts @@ -12,7 +12,7 @@ const section: ManifestSection = { name: 'Content Section', weight: 600, meta: { - label: 'Content', + label: '#sections_content', pathname: 'content', }, conditions: [ diff --git a/src/Umbraco.Web.UI.Client/src/packages/dynamic-root/repository/dynamic-root.server.data.ts b/src/Umbraco.Web.UI.Client/src/packages/dynamic-root/repository/dynamic-root.server.data.ts index 9553724bdc..4cd544752f 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/dynamic-root/repository/dynamic-root.server.data.ts +++ b/src/Umbraco.Web.UI.Client/src/packages/dynamic-root/repository/dynamic-root.server.data.ts @@ -1,4 +1,4 @@ -import { DynamicRootResource } from '@umbraco-cms/backoffice/external/backend-api'; +import { DynamicRootService } from '@umbraco-cms/backoffice/external/backend-api'; import { tryExecuteAndNotify } from '@umbraco-cms/backoffice/resources'; import type { DynamicRootRequestModel, DynamicRootResponseModel } from '@umbraco-cms/backoffice/external/backend-api'; import type { UmbControllerHost } from '@umbraco-cms/backoffice/controller-api'; @@ -19,7 +19,7 @@ export class UmbDynamicRootServerDataSource { query: args.query, }; - const { data } = await tryExecuteAndNotify(this.#host, DynamicRootResource.postDynamicRootQuery({ requestBody })); + const { data } = await tryExecuteAndNotify(this.#host, DynamicRootService.postDynamicRootQuery({ requestBody })); return data; } diff --git a/src/Umbraco.Web.UI.Client/src/packages/health-check/dashboard-health-check.element.ts b/src/Umbraco.Web.UI.Client/src/packages/health-check/dashboard-health-check.element.ts index 42455e3a5d..2b2ab13032 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/health-check/dashboard-health-check.element.ts +++ b/src/Umbraco.Web.UI.Client/src/packages/health-check/dashboard-health-check.element.ts @@ -2,7 +2,7 @@ import type { UmbDashboardHealthCheckGroupElement } from './views/health-check-g import { UmbHealthCheckDashboardContext, UMB_HEALTHCHECK_DASHBOARD_CONTEXT } from './health-check-dashboard.context.js'; import { html, customElement, state } from '@umbraco-cms/backoffice/external/lit'; import type { HealthCheckGroupResponseModel } from '@umbraco-cms/backoffice/external/backend-api'; -import { HealthCheckResource } from '@umbraco-cms/backoffice/external/backend-api'; +import { HealthCheckService } from '@umbraco-cms/backoffice/external/backend-api'; import type { UmbRoute } from '@umbraco-cms/backoffice/router'; import { UmbLitElement } from '@umbraco-cms/backoffice/lit-element'; import type { ManifestHealthCheck } from '@umbraco-cms/backoffice/extension-registry'; @@ -43,7 +43,7 @@ export class UmbDashboardHealthCheckElement extends UmbLitElement { } #registerHealthChecks = async () => { - const { data } = await tryExecuteAndNotify(this, HealthCheckResource.getHealthCheckGroup({ skip: 0, take: 9999 })); + const { data } = await tryExecuteAndNotify(this, HealthCheckService.getHealthCheckGroup({ skip: 0, take: 9999 })); if (!data) return; const manifests = this.#createManifests(data.items); this.#register(manifests); diff --git a/src/Umbraco.Web.UI.Client/src/packages/health-check/health-check.context.ts b/src/Umbraco.Web.UI.Client/src/packages/health-check/health-check.context.ts index ba0d2a3631..8c827fbade 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/health-check/health-check.context.ts +++ b/src/Umbraco.Web.UI.Client/src/packages/health-check/health-check.context.ts @@ -2,7 +2,7 @@ import type { HealthCheckGroupPresentationModel, HealthCheckGroupWithResultResponseModel, } from '@umbraco-cms/backoffice/external/backend-api'; -import { HealthCheckResource } from '@umbraco-cms/backoffice/external/backend-api'; +import { HealthCheckService } from '@umbraco-cms/backoffice/external/backend-api'; import { UmbContextToken } from '@umbraco-cms/backoffice/context-api'; import { tryExecuteAndNotify } from '@umbraco-cms/backoffice/resources'; import type { UmbApi } from '@umbraco-cms/backoffice/extension-api'; @@ -17,7 +17,7 @@ export class UmbHealthCheckContext extends UmbControllerBase implements UmbApi { public readonly results = this.#results.asObservable(); async getGroupChecks(name: string) { - const { data } = await tryExecuteAndNotify(this, HealthCheckResource.getHealthCheckGroupByName({ name })); + const { data } = await tryExecuteAndNotify(this, HealthCheckService.getHealthCheckGroupByName({ name })); if (data) { this.#checks.setValue(data); @@ -27,7 +27,7 @@ export class UmbHealthCheckContext extends UmbControllerBase implements UmbApi { } async checkGroup(name: string) { - const { data } = await tryExecuteAndNotify(this, HealthCheckResource.postHealthCheckGroupByNameCheck({ name })); + const { data } = await tryExecuteAndNotify(this, HealthCheckService.postHealthCheckGroupByNameCheck({ name })); if (data) { this.#results.setValue(data); diff --git a/src/Umbraco.Web.UI.Client/src/packages/health-check/manifests.ts b/src/Umbraco.Web.UI.Client/src/packages/health-check/manifests.ts index f40347abb5..c630937f90 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/health-check/manifests.ts +++ b/src/Umbraco.Web.UI.Client/src/packages/health-check/manifests.ts @@ -7,7 +7,7 @@ export const manifests = [ js: () => import('./dashboard-health-check.element.js'), weight: 102, meta: { - label: 'Health Check', + label: '#dashboardTabs_settingsHealthCheck', pathname: 'health-check', }, conditions: [ diff --git a/src/Umbraco.Web.UI.Client/src/packages/health-check/views/health-check-action.element.ts b/src/Umbraco.Web.UI.Client/src/packages/health-check/views/health-check-action.element.ts index 9165ea0ff6..33b882d25e 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/health-check/views/health-check-action.element.ts +++ b/src/Umbraco.Web.UI.Client/src/packages/health-check/views/health-check-action.element.ts @@ -2,7 +2,7 @@ import { UmbTextStyles } from '@umbraco-cms/backoffice/style'; import type { UUIButtonState } from '@umbraco-cms/backoffice/external/uui'; import { css, html, nothing, customElement, property, state, ifDefined } from '@umbraco-cms/backoffice/external/lit'; import type { HealthCheckActionRequestModel } from '@umbraco-cms/backoffice/external/backend-api'; -import { HealthCheckResource } from '@umbraco-cms/backoffice/external/backend-api'; +import { HealthCheckService } from '@umbraco-cms/backoffice/external/backend-api'; import { UmbLitElement } from '@umbraco-cms/backoffice/lit-element'; import { tryExecuteAndNotify } from '@umbraco-cms/backoffice/resources'; @@ -19,7 +19,7 @@ export class UmbDashboardHealthCheckActionElement extends UmbLitElement { this._buttonState = 'waiting'; const { error } = await tryExecuteAndNotify( this, - HealthCheckResource.postHealthCheckExecuteAction({ requestBody: this.action }), + HealthCheckService.postHealthCheckExecuteAction({ requestBody: this.action }), ); if (error) { diff --git a/src/Umbraco.Web.UI.Client/src/packages/language/collection/repository/language-collection.server.data-source.ts b/src/Umbraco.Web.UI.Client/src/packages/language/collection/repository/language-collection.server.data-source.ts index 4e79bd47bc..7b9b341661 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/language/collection/repository/language-collection.server.data-source.ts +++ b/src/Umbraco.Web.UI.Client/src/packages/language/collection/repository/language-collection.server.data-source.ts @@ -2,7 +2,7 @@ import type { UmbLanguageCollectionFilterModel } from '../types.js'; import type { UmbLanguageDetailModel } from '../../types.js'; import { UMB_LANGUAGE_ENTITY_TYPE } from '../../entity.js'; import type { UmbCollectionDataSource } from '@umbraco-cms/backoffice/collection'; -import { LanguageResource } from '@umbraco-cms/backoffice/external/backend-api'; +import { LanguageService } from '@umbraco-cms/backoffice/external/backend-api'; import type { UmbControllerHost } from '@umbraco-cms/backoffice/controller-api'; import { tryExecuteAndNotify } from '@umbraco-cms/backoffice/resources'; @@ -31,7 +31,7 @@ export class UmbLanguageCollectionServerDataSource implements UmbCollectionDataS * @memberof UmbLanguageCollectionServerDataSource */ async getCollection(filter: UmbLanguageCollectionFilterModel) { - const { data, error } = await tryExecuteAndNotify(this.#host, LanguageResource.getLanguage(filter)); + const { data, error } = await tryExecuteAndNotify(this.#host, LanguageService.getLanguage(filter)); if (data) { const items = data.items.map((item) => { diff --git a/src/Umbraco.Web.UI.Client/src/packages/language/entity-actions/manifests.ts b/src/Umbraco.Web.UI.Client/src/packages/language/entity-actions/manifests.ts index e1f0f005cb..cfb8a2c75e 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/language/entity-actions/manifests.ts +++ b/src/Umbraco.Web.UI.Client/src/packages/language/entity-actions/manifests.ts @@ -25,7 +25,7 @@ const entityActions: Array = [ forEntityTypes: [UMB_LANGUAGE_ROOT_ENTITY_TYPE], meta: { icon: 'icon-add', - label: 'Create', + label: '#actions_create', }, }, ]; diff --git a/src/Umbraco.Web.UI.Client/src/packages/language/global-contexts/manifests.ts b/src/Umbraco.Web.UI.Client/src/packages/language/global-contexts/manifests.ts index 69e33d1028..754429c362 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/language/global-contexts/manifests.ts +++ b/src/Umbraco.Web.UI.Client/src/packages/language/global-contexts/manifests.ts @@ -5,6 +5,6 @@ export const manifests: Array = [ type: 'globalContext', alias: 'Umb.GlobalContext.AppLanguage', name: 'App Language Context', - js: () => import('./app-language.context.js'), + api: () => import('./app-language.context.js'), }, ]; diff --git a/src/Umbraco.Web.UI.Client/src/packages/language/repository/detail/language-detail.server.data-source.ts b/src/Umbraco.Web.UI.Client/src/packages/language/repository/detail/language-detail.server.data-source.ts index b7c7070d0f..46d8e93d94 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/language/repository/detail/language-detail.server.data-source.ts +++ b/src/Umbraco.Web.UI.Client/src/packages/language/repository/detail/language-detail.server.data-source.ts @@ -6,7 +6,7 @@ import type { CreateLanguageRequestModel, UpdateLanguageRequestModel, } from '@umbraco-cms/backoffice/external/backend-api'; -import { LanguageResource } from '@umbraco-cms/backoffice/external/backend-api'; +import { LanguageService } from '@umbraco-cms/backoffice/external/backend-api'; import type { UmbControllerHost } from '@umbraco-cms/backoffice/controller-api'; import { tryExecuteAndNotify } from '@umbraco-cms/backoffice/resources'; @@ -59,7 +59,7 @@ export class UmbLanguageServerDataSource implements UmbDetailDataSource) => LanguageResource.getItemLanguage({ isoCode: uniques }); +const getItems = (uniques: Array) => LanguageService.getItemLanguage({ isoCode: uniques }); const mapper = (item: LanguageItemResponseModel): UmbLanguageItemModel => { return { diff --git a/src/Umbraco.Web.UI.Client/src/packages/language/workspace/language/manifests.ts b/src/Umbraco.Web.UI.Client/src/packages/language/workspace/language/manifests.ts index 96711c9deb..ce50e15990 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/language/workspace/language/manifests.ts +++ b/src/Umbraco.Web.UI.Client/src/packages/language/workspace/language/manifests.ts @@ -24,7 +24,7 @@ const workspaceViews: Array = [ js: () => import('./views/language-details-workspace-view.element.js'), weight: 90, meta: { - label: 'Details', + label: '#general_details', pathname: 'details', icon: 'edit', }, @@ -47,7 +47,7 @@ const workspaceActions: Array = [ meta: { look: 'primary', color: 'positive', - label: 'Save', + label: '#buttons_save', }, conditions: [ { diff --git a/src/Umbraco.Web.UI.Client/src/packages/language/workspace/language/views/language-details-workspace-view.element.ts b/src/Umbraco.Web.UI.Client/src/packages/language/workspace/language/views/language-details-workspace-view.element.ts index 259a7751b4..634a3a87e7 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/language/workspace/language/views/language-details-workspace-view.element.ts +++ b/src/Umbraco.Web.UI.Client/src/packages/language/workspace/language/views/language-details-workspace-view.element.ts @@ -10,6 +10,7 @@ import { UmbChangeEvent } from '@umbraco-cms/backoffice/event'; import { UmbLitElement } from '@umbraco-cms/backoffice/lit-element'; import type { UmbWorkspaceViewElement } from '@umbraco-cms/backoffice/extension-registry'; import { UmbTextStyles } from '@umbraco-cms/backoffice/style'; +import '@umbraco-cms/backoffice/culture'; @customElement('umb-language-details-workspace-view') export class UmbLanguageDetailsWorkspaceViewElement extends UmbLitElement implements UmbWorkspaceViewElement { diff --git a/src/Umbraco.Web.UI.Client/src/packages/log-viewer/repository/sources/log-viewer.server.data.ts b/src/Umbraco.Web.UI.Client/src/packages/log-viewer/repository/sources/log-viewer.server.data.ts index 8454adbed1..402a34696a 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/log-viewer/repository/sources/log-viewer.server.data.ts +++ b/src/Umbraco.Web.UI.Client/src/packages/log-viewer/repository/sources/log-viewer.server.data.ts @@ -4,7 +4,7 @@ import type { LogLevelModel, SavedLogSearchResponseModel, } from '@umbraco-cms/backoffice/external/backend-api'; -import { LogViewerResource } from '@umbraco-cms/backoffice/external/backend-api'; +import { LogViewerService } from '@umbraco-cms/backoffice/external/backend-api'; import type { UmbControllerHost } from '@umbraco-cms/backoffice/controller-api'; import { tryExecuteAndNotify } from '@umbraco-cms/backoffice/resources'; @@ -34,7 +34,7 @@ export class UmbLogSearchesServerDataSource implements LogSearchDataSource { * @memberof UmbLogSearchesServerDataSource */ async getAllSavedSearches({ skip = 0, take = 100 }: { skip?: number; take?: number }) { - return await tryExecuteAndNotify(this.#host, LogViewerResource.getLogViewerSavedSearch({ skip, take })); + return await tryExecuteAndNotify(this.#host, LogViewerService.getLogViewerSavedSearch({ skip, take })); } /** * Get a log viewer saved search by name from the server @@ -44,7 +44,7 @@ export class UmbLogSearchesServerDataSource implements LogSearchDataSource { * @memberof UmbLogSearchesServerDataSource */ async getSavedSearchByName({ name }: { name: string }) { - return await tryExecuteAndNotify(this.#host, LogViewerResource.getLogViewerSavedSearchByName({ name })); + return await tryExecuteAndNotify(this.#host, LogViewerService.getLogViewerSavedSearchByName({ name })); } /** @@ -57,7 +57,7 @@ export class UmbLogSearchesServerDataSource implements LogSearchDataSource { async postLogViewerSavedSearch({ name, query }: SavedLogSearchResponseModel) { return await tryExecuteAndNotify( this.#host, - LogViewerResource.postLogViewerSavedSearch({ requestBody: { name, query } }), + LogViewerService.postLogViewerSavedSearch({ requestBody: { name, query } }), ); } /** @@ -68,7 +68,7 @@ export class UmbLogSearchesServerDataSource implements LogSearchDataSource { * @memberof UmbLogSearchesServerDataSource */ async deleteSavedSearchByName({ name }: { name: string }) { - return await tryExecuteAndNotify(this.#host, LogViewerResource.deleteLogViewerSavedSearchByName({ name })); + return await tryExecuteAndNotify(this.#host, LogViewerService.deleteLogViewerSavedSearchByName({ name })); } } /** @@ -98,7 +98,7 @@ export class UmbLogMessagesServerDataSource implements LogMessagesDataSource { * @memberof UmbLogMessagesServerDataSource */ async getLogViewerLevel({ skip = 0, take = 100 }: { skip?: number; take?: number }) { - return await tryExecuteAndNotify(this.#host, LogViewerResource.getLogViewerLevel({ skip, take })); + return await tryExecuteAndNotify(this.#host, LogViewerService.getLogViewerLevel({ skip, take })); } /** @@ -111,7 +111,7 @@ export class UmbLogMessagesServerDataSource implements LogMessagesDataSource { async getLogViewerLevelCount({ startDate, endDate }: { startDate?: string; endDate?: string }) { return await tryExecuteAndNotify( this.#host, - LogViewerResource.getLogViewerLevelCount({ + LogViewerService.getLogViewerLevelCount({ startDate, endDate, }), @@ -159,7 +159,7 @@ export class UmbLogMessagesServerDataSource implements LogMessagesDataSource { }) { return await tryExecuteAndNotify( this.#host, - LogViewerResource.getLogViewerLog({ + LogViewerService.getLogViewerLog({ skip, take, orderDirection, @@ -200,7 +200,7 @@ export class UmbLogMessagesServerDataSource implements LogMessagesDataSource { }) { return await tryExecuteAndNotify( this.#host, - LogViewerResource.getLogViewerMessageTemplate({ + LogViewerService.getLogViewerMessageTemplate({ skip, take, startDate, @@ -212,7 +212,7 @@ export class UmbLogMessagesServerDataSource implements LogMessagesDataSource { async getLogViewerValidateLogsSize({ startDate, endDate }: { startDate?: string; endDate?: string }) { return await tryExecuteAndNotify( this.#host, - LogViewerResource.getLogViewerValidateLogsSize({ + LogViewerService.getLogViewerValidateLogsSize({ startDate, endDate, }), diff --git a/src/Umbraco.Web.UI.Client/src/packages/log-viewer/workspace/manifests.ts b/src/Umbraco.Web.UI.Client/src/packages/log-viewer/workspace/manifests.ts index 22154a19b6..b1076a052c 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/log-viewer/workspace/manifests.ts +++ b/src/Umbraco.Web.UI.Client/src/packages/log-viewer/workspace/manifests.ts @@ -44,7 +44,7 @@ const workspaceViews: Array = [ element: () => import('./views/search/index.js'), weight: 200, meta: { - label: 'Search', + label: '#general_search', pathname: 'search', icon: 'icon-search', }, diff --git a/src/Umbraco.Web.UI.Client/src/packages/media/media-types/entity-actions/create/manifests.ts b/src/Umbraco.Web.UI.Client/src/packages/media/media-types/entity-actions/create/manifests.ts index 950ba4c98f..e47997e8ee 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/media/media-types/entity-actions/create/manifests.ts +++ b/src/Umbraco.Web.UI.Client/src/packages/media/media-types/entity-actions/create/manifests.ts @@ -17,7 +17,7 @@ const entityActions: Array = [ forEntityTypes: [UMB_MEDIA_TYPE_ENTITY_TYPE, UMB_MEDIA_TYPE_ROOT_ENTITY_TYPE, UMB_MEDIA_TYPE_FOLDER_ENTITY_TYPE], meta: { icon: 'icon-add', - label: 'Create...', + label: '#actions_create', }, }, { diff --git a/src/Umbraco.Web.UI.Client/src/packages/media/media-types/repository/detail/media-type-detail.server.data-source.ts b/src/Umbraco.Web.UI.Client/src/packages/media/media-types/repository/detail/media-type-detail.server.data-source.ts index 2254f77db9..a8908fa616 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/media/media-types/repository/detail/media-type-detail.server.data-source.ts +++ b/src/Umbraco.Web.UI.Client/src/packages/media/media-types/repository/detail/media-type-detail.server.data-source.ts @@ -6,7 +6,7 @@ import type { CreateMediaTypeRequestModel, UpdateMediaTypeRequestModel, } from '@umbraco-cms/backoffice/external/backend-api'; -import { MediaTypeResource } from '@umbraco-cms/backoffice/external/backend-api'; +import { MediaTypeService } from '@umbraco-cms/backoffice/external/backend-api'; import type { UmbControllerHost } from '@umbraco-cms/backoffice/controller-api'; import { tryExecuteAndNotify } from '@umbraco-cms/backoffice/resources'; import type { UmbPropertyTypeContainerModel } from '@umbraco-cms/backoffice/content-type'; @@ -67,7 +67,7 @@ export class UmbMediaTypeServerDataSource implements UmbDetailDataSource) => MediaTypeResource.getItemMediaType({ id: uniques }); +const getItems = (uniques: Array) => MediaTypeService.getItemMediaType({ id: uniques }); const mapper = (item: MediaTypeItemResponseModel): UmbMediaTypeItemModel => { return { diff --git a/src/Umbraco.Web.UI.Client/src/packages/media/media-types/repository/structure/media-type-structure.server.data-source.ts b/src/Umbraco.Web.UI.Client/src/packages/media/media-types/repository/structure/media-type-structure.server.data-source.ts index 6dc2d1767c..22b833b379 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/media/media-types/repository/structure/media-type-structure.server.data-source.ts +++ b/src/Umbraco.Web.UI.Client/src/packages/media/media-types/repository/structure/media-type-structure.server.data-source.ts @@ -2,7 +2,7 @@ import type { UmbAllowedMediaTypeModel } from './types.js'; import { UmbContentTypeStructureServerDataSourceBase } from '@umbraco-cms/backoffice/content-type'; import type { UmbControllerHost } from '@umbraco-cms/backoffice/controller-api'; import type { AllowedMediaTypeModel } from '@umbraco-cms/backoffice/external/backend-api'; -import { MediaTypeResource } from '@umbraco-cms/backoffice/external/backend-api'; +import { MediaTypeService } from '@umbraco-cms/backoffice/external/backend-api'; /** * @@ -22,10 +22,10 @@ export class UmbMediaTypeStructureServerDataSource extends UmbContentTypeStructu const getAllowedChildrenOf = (unique: string | null) => { if (unique) { // eslint-disable-next-line local-rules/no-direct-api-import - return MediaTypeResource.getMediaTypeByIdAllowedChildren({ id: unique }); + return MediaTypeService.getMediaTypeByIdAllowedChildren({ id: unique }); } else { // eslint-disable-next-line local-rules/no-direct-api-import - return MediaTypeResource.getMediaTypeAllowedAtRoot({}); + return MediaTypeService.getMediaTypeAllowedAtRoot({}); } }; diff --git a/src/Umbraco.Web.UI.Client/src/packages/media/media-types/tree/folder/media-type-folder.server.data-source.ts b/src/Umbraco.Web.UI.Client/src/packages/media/media-types/tree/folder/media-type-folder.server.data-source.ts index 080558d0f0..a83e9ae676 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/media/media-types/tree/folder/media-type-folder.server.data-source.ts +++ b/src/Umbraco.Web.UI.Client/src/packages/media/media-types/tree/folder/media-type-folder.server.data-source.ts @@ -1,5 +1,5 @@ import type { UmbCreateFolderModel, UmbFolderDataSource, UmbUpdateFolderModel } from '@umbraco-cms/backoffice/tree'; -import { MediaTypeResource } from '@umbraco-cms/backoffice/external/backend-api'; +import { MediaTypeService } from '@umbraco-cms/backoffice/external/backend-api'; import type { UmbControllerHost } from '@umbraco-cms/backoffice/controller-api'; import { tryExecuteAndNotify } from '@umbraco-cms/backoffice/resources'; @@ -32,7 +32,7 @@ export class UmbMediaTypeFolderServerDataSource implements UmbFolderDataSource { const { data, error } = await tryExecuteAndNotify( this.#host, - MediaTypeResource.getMediaTypeFolderById({ + MediaTypeService.getMediaTypeFolderById({ id: unique, }), ); @@ -67,7 +67,7 @@ export class UmbMediaTypeFolderServerDataSource implements UmbFolderDataSource { const { error } = await tryExecuteAndNotify( this.#host, - MediaTypeResource.postMediaTypeFolder({ + MediaTypeService.postMediaTypeFolder({ requestBody, }), ); @@ -91,7 +91,7 @@ export class UmbMediaTypeFolderServerDataSource implements UmbFolderDataSource { const { error } = await tryExecuteAndNotify( this.#host, - MediaTypeResource.putMediaTypeFolderById({ + MediaTypeService.putMediaTypeFolderById({ id: args.unique, requestBody: { name: args.name }, }), @@ -114,7 +114,7 @@ export class UmbMediaTypeFolderServerDataSource implements UmbFolderDataSource { if (!unique) throw new Error('Unique is missing'); return tryExecuteAndNotify( this.#host, - MediaTypeResource.deleteMediaTypeFolderById({ + MediaTypeService.deleteMediaTypeFolderById({ id: unique, }), ); diff --git a/src/Umbraco.Web.UI.Client/src/packages/media/media-types/tree/media-type-tree.repository.ts b/src/Umbraco.Web.UI.Client/src/packages/media/media-types/tree/media-type-tree.repository.ts index ae20ab7e9c..deac728c26 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/media/media-types/tree/media-type-tree.repository.ts +++ b/src/Umbraco.Web.UI.Client/src/packages/media/media-types/tree/media-type-tree.repository.ts @@ -18,7 +18,7 @@ export class UmbMediaTypeTreeRepository const data: UmbMediaTypeTreeRootModel = { unique: null, entityType: UMB_MEDIA_TYPE_ROOT_ENTITY_TYPE, - name: 'Media Types', + name: '#treeHeaders_mediaTypes', hasChildren: true, isFolder: true, }; diff --git a/src/Umbraco.Web.UI.Client/src/packages/media/media-types/tree/media-type-tree.server.data-source.ts b/src/Umbraco.Web.UI.Client/src/packages/media/media-types/tree/media-type-tree.server.data-source.ts index 203056945e..45ab65334e 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/media/media-types/tree/media-type-tree.server.data-source.ts +++ b/src/Umbraco.Web.UI.Client/src/packages/media/media-types/tree/media-type-tree.server.data-source.ts @@ -1,7 +1,7 @@ import { UMB_MEDIA_TYPE_ENTITY_TYPE, UMB_MEDIA_TYPE_FOLDER_ENTITY_TYPE } from '../entity.js'; import type { UmbMediaTypeTreeItemModel } from './types.js'; import type { MediaTypeTreeItemResponseModel } from '@umbraco-cms/backoffice/external/backend-api'; -import { MediaTypeResource } from '@umbraco-cms/backoffice/external/backend-api'; +import { MediaTypeService } from '@umbraco-cms/backoffice/external/backend-api'; import type { UmbControllerHost } from '@umbraco-cms/backoffice/controller-api'; import type { UmbTreeAncestorsOfRequestArgs, @@ -37,14 +37,14 @@ export class UmbMediaTypeTreeServerDataSource extends UmbTreeServerDataSourceBas const getRootItems = (args: UmbTreeRootItemsRequestArgs) => // eslint-disable-next-line local-rules/no-direct-api-import - MediaTypeResource.getTreeMediaTypeRoot({ skip: args.skip, take: args.take }); + MediaTypeService.getTreeMediaTypeRoot({ skip: args.skip, take: args.take }); const getChildrenOf = (args: UmbTreeChildrenOfRequestArgs) => { if (args.parentUnique === null) { return getRootItems(args); } else { // eslint-disable-next-line local-rules/no-direct-api-import - return MediaTypeResource.getTreeMediaTypeChildren({ + return MediaTypeService.getTreeMediaTypeChildren({ parentId: args.parentUnique, skip: args.skip, take: args.take, @@ -54,7 +54,7 @@ const getChildrenOf = (args: UmbTreeChildrenOfRequestArgs) => { const getAncestorsOf = (args: UmbTreeAncestorsOfRequestArgs) => // eslint-disable-next-line local-rules/no-direct-api-import - MediaTypeResource.getTreeMediaTypeAncestors({ + MediaTypeService.getTreeMediaTypeAncestors({ descendantId: args.descendantUnique, }); diff --git a/src/Umbraco.Web.UI.Client/src/packages/media/media-types/workspace/manifests.ts b/src/Umbraco.Web.UI.Client/src/packages/media/media-types/workspace/manifests.ts index 9826f39746..62bd3c02b8 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/media/media-types/workspace/manifests.ts +++ b/src/Umbraco.Web.UI.Client/src/packages/media/media-types/workspace/manifests.ts @@ -26,7 +26,7 @@ const workspaceViews: Array = [ alias: 'Umb.WorkspaceView.MediaType.Design', name: 'Media Type Workspace Design View', meta: { - label: 'Design', + label: '#general_design', pathname: 'design', icon: 'icon-document-dashed-line', }, @@ -44,7 +44,7 @@ const workspaceViews: Array = [ js: () => import('./views/structure/media-type-workspace-view-structure.element.js'), weight: 800, meta: { - label: 'Structure', + label: '#contentTypeEditor_structure', pathname: 'structure', icon: 'icon-mindmap', }, @@ -65,7 +65,7 @@ const workspaceActions: Array = [ name: 'Save Media Type Workspace Action', api: UmbSubmitWorkspaceAction, meta: { - label: 'Save', + label: '#buttons_save', look: 'primary', color: 'positive', }, diff --git a/src/Umbraco.Web.UI.Client/src/packages/media/media/collection/repository/media-collection.server.data-source.ts b/src/Umbraco.Web.UI.Client/src/packages/media/media/collection/repository/media-collection.server.data-source.ts index cecb87e09e..d8a243868f 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/media/media/collection/repository/media-collection.server.data-source.ts +++ b/src/Umbraco.Web.UI.Client/src/packages/media/media/collection/repository/media-collection.server.data-source.ts @@ -1,5 +1,5 @@ import type { UmbMediaCollectionFilterModel, UmbMediaCollectionItemModel } from '../types.js'; -import { DirectionModel, MediaResource } from '@umbraco-cms/backoffice/external/backend-api'; +import { DirectionModel, MediaService } from '@umbraco-cms/backoffice/external/backend-api'; import { tryExecuteAndNotify } from '@umbraco-cms/backoffice/resources'; import type { MediaCollectionResponseModel } from '@umbraco-cms/backoffice/external/backend-api'; import type { UmbCollectionDataSource } from '@umbraco-cms/backoffice/collection'; @@ -23,7 +23,7 @@ export class UmbMediaCollectionServerDataSource implements UmbCollectionDataSour take: query.take ?? 100, }; - const { data, error } = await tryExecuteAndNotify(this.#host, MediaResource.getCollectionMedia(params)); + const { data, error } = await tryExecuteAndNotify(this.#host, MediaService.getCollectionMedia(params)); if (data) { const items = data.items.map((item: MediaCollectionResponseModel) => { @@ -38,7 +38,7 @@ export class UmbMediaCollectionServerDataSource implements UmbCollectionDataSour name: variant.name, updateDate: new Date(variant.updateDate), values: item.values.map((item) => { - return { alias: item.alias, value: item.value }; + return { alias: item.alias, value: item.value as string }; }), }; return model; diff --git a/src/Umbraco.Web.UI.Client/src/packages/media/media/entity-actions/create/manifests.ts b/src/Umbraco.Web.UI.Client/src/packages/media/media/entity-actions/create/manifests.ts index 01adf09894..6d961309f3 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/media/media/entity-actions/create/manifests.ts +++ b/src/Umbraco.Web.UI.Client/src/packages/media/media/entity-actions/create/manifests.ts @@ -13,7 +13,7 @@ const entityActions: Array = [ forEntityTypes: [UMB_MEDIA_ROOT_ENTITY_TYPE, UMB_MEDIA_ENTITY_TYPE], meta: { icon: 'icon-add', - label: 'Create', + label: '#actions_create', }, }, ]; diff --git a/src/Umbraco.Web.UI.Client/src/packages/media/media/manifests.ts b/src/Umbraco.Web.UI.Client/src/packages/media/media/manifests.ts index dba85d8ce2..cbdd5167a5 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/media/media/manifests.ts +++ b/src/Umbraco.Web.UI.Client/src/packages/media/media/manifests.ts @@ -3,6 +3,7 @@ import { manifests as entityActionsManifests } from './entity-actions/manifests. import { manifests as entityBulkActionsManifests } from './entity-bulk-actions/manifests.js'; import { manifests as menuManifests } from './menu/manifests.js'; import { manifests as propertyEditorsManifests } from './property-editors/manifests.js'; +import { manifests as recycleBinManifests } from './recycle-bin/manifests.js'; import { manifests as repositoryManifests } from './repository/manifests.js'; import { manifests as sectionViewManifests } from './section-view/manifests.js'; import { manifests as treeManifests } from './tree/manifests.js'; @@ -14,6 +15,7 @@ export const manifests = [ ...entityBulkActionsManifests, ...menuManifests, ...propertyEditorsManifests, + ...recycleBinManifests, ...repositoryManifests, ...sectionViewManifests, ...treeManifests, diff --git a/src/Umbraco.Web.UI.Client/src/packages/media/media/property-editors/image-crops-configuration/property-editor-ui-image-crops-configuration.element.ts b/src/Umbraco.Web.UI.Client/src/packages/media/media/property-editors/image-crops-configuration/property-editor-ui-image-crops-configuration.element.ts index f712272b8c..d81aa7776b 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/media/media/property-editors/image-crops-configuration/property-editor-ui-image-crops-configuration.element.ts +++ b/src/Umbraco.Web.UI.Client/src/packages/media/media/property-editors/image-crops-configuration/property-editor-ui-image-crops-configuration.element.ts @@ -106,7 +106,7 @@ export class UmbPropertyEditorUIImageCropsConfigurationElement return html`
-
+
Label
@@ -139,8 +139,14 @@ export class UmbPropertyEditorUIImageCropsConfigurationElement ${item.label} (${item.alias}) (${item.width} x ${item.height}px)
- this.#onEdit(item)}>Edit - this.#onRemove(item.alias)}>Remove + this.#onEdit(item)}> + this.#onRemove(item.alias)}>
`, diff --git a/src/Umbraco.Web.UI.Client/src/packages/media/media/property-editors/media-picker/property-editor-ui-media-picker.element.ts b/src/Umbraco.Web.UI.Client/src/packages/media/media/property-editors/media-picker/property-editor-ui-media-picker.element.ts index 098cef1980..25fce15f1d 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/media/media/property-editors/media-picker/property-editor-ui-media-picker.element.ts +++ b/src/Umbraco.Web.UI.Client/src/packages/media/media/property-editors/media-picker/property-editor-ui-media-picker.element.ts @@ -30,7 +30,7 @@ export class UmbPropertyEditorUIMediaPickerElement extends UmbLitElement impleme const validationLimit = config?.getByAlias('validationLimit'); if (!validationLimit) return; - const minMax: Record = validationLimit.value; + const minMax: Record = validationLimit.value as any; this._limitMin = minMax.min ?? 0; this._limitMax = minMax.max ?? Infinity; diff --git a/src/Umbraco.Web.UI.Client/src/packages/media/media/recycle-bin/entity-action/manifests.ts b/src/Umbraco.Web.UI.Client/src/packages/media/media/recycle-bin/entity-action/manifests.ts new file mode 100644 index 0000000000..d3631a29c6 --- /dev/null +++ b/src/Umbraco.Web.UI.Client/src/packages/media/media/recycle-bin/entity-action/manifests.ts @@ -0,0 +1,42 @@ +import { UMB_MEDIA_RECYCLE_BIN_REPOSITORY_ALIAS } from '../repository/index.js'; +import { UMB_MEDIA_ENTITY_TYPE } from '../../entity.js'; +import { UMB_MEDIA_ITEM_REPOSITORY_ALIAS } from '../../repository/index.js'; +import { UMB_MEDIA_RECYCLE_BIN_ROOT_ENTITY_TYPE } from '../entity.js'; +import { UMB_MEDIA_TREE_PICKER_MODAL } from '@umbraco-cms/backoffice/modal'; +import type { ManifestTypes } from '@umbraco-cms/backoffice/extension-registry'; + +export const manifests: Array = [ + { + type: 'entityAction', + kind: 'trash', + alias: 'Umb.EntityAction.Media.RecycleBin.Trash', + name: 'Trash Media Entity Action', + forEntityTypes: [UMB_MEDIA_ENTITY_TYPE], + meta: { + itemRepositoryAlias: UMB_MEDIA_ITEM_REPOSITORY_ALIAS, + recycleBinRepositoryAlias: UMB_MEDIA_RECYCLE_BIN_REPOSITORY_ALIAS, + }, + }, + { + type: 'entityAction', + kind: 'restoreFromRecycleBin', + alias: 'Umb.EntityAction.Media.RecycleBin.Restore', + name: 'Restore Media From Recycle Bin Entity Action', + forEntityTypes: [UMB_MEDIA_ENTITY_TYPE], + meta: { + itemRepositoryAlias: UMB_MEDIA_ITEM_REPOSITORY_ALIAS, + recycleBinRepositoryAlias: UMB_MEDIA_RECYCLE_BIN_REPOSITORY_ALIAS, + pickerModal: UMB_MEDIA_TREE_PICKER_MODAL, + }, + }, + { + type: 'entityAction', + kind: 'emptyRecycleBin', + alias: 'Umb.EntityAction.Media.RecycleBin.Empty', + name: 'Empty Media Recycle Bin Entity Action', + forEntityTypes: [UMB_MEDIA_RECYCLE_BIN_ROOT_ENTITY_TYPE], + meta: { + recycleBinRepositoryAlias: UMB_MEDIA_RECYCLE_BIN_REPOSITORY_ALIAS, + }, + }, +]; diff --git a/src/Umbraco.Web.UI.Client/src/packages/media/media/recycle-bin/entity.ts b/src/Umbraco.Web.UI.Client/src/packages/media/media/recycle-bin/entity.ts new file mode 100644 index 0000000000..6237cb94c2 --- /dev/null +++ b/src/Umbraco.Web.UI.Client/src/packages/media/media/recycle-bin/entity.ts @@ -0,0 +1 @@ +export const UMB_MEDIA_RECYCLE_BIN_ROOT_ENTITY_TYPE = 'media-recycle-bin-root'; diff --git a/src/Umbraco.Web.UI.Client/src/packages/media/media/recycle-bin/index.ts b/src/Umbraco.Web.UI.Client/src/packages/media/media/recycle-bin/index.ts new file mode 100644 index 0000000000..f04892ceea --- /dev/null +++ b/src/Umbraco.Web.UI.Client/src/packages/media/media/recycle-bin/index.ts @@ -0,0 +1,2 @@ +export * from './tree/index.js'; +export * from './entity.js'; diff --git a/src/Umbraco.Web.UI.Client/src/packages/media/media/recycle-bin/manifests.ts b/src/Umbraco.Web.UI.Client/src/packages/media/media/recycle-bin/manifests.ts new file mode 100644 index 0000000000..423a1afcc2 --- /dev/null +++ b/src/Umbraco.Web.UI.Client/src/packages/media/media/recycle-bin/manifests.ts @@ -0,0 +1,6 @@ +import { manifests as entityActionManifests } from './entity-action/manifests.js'; +import { manifests as menuItemManifests } from './menu-item/manifests.js'; +import { manifests as repositoryManifests } from './repository/manifests.js'; +import { manifests as treeManifests } from './tree/manifests.js'; + +export const manifests = [...entityActionManifests, ...menuItemManifests, ...repositoryManifests, ...treeManifests]; diff --git a/src/Umbraco.Web.UI.Client/src/packages/media/media/recycle-bin/menu-item/manifests.ts b/src/Umbraco.Web.UI.Client/src/packages/media/media/recycle-bin/menu-item/manifests.ts new file mode 100644 index 0000000000..3c6b76f1eb --- /dev/null +++ b/src/Umbraco.Web.UI.Client/src/packages/media/media/recycle-bin/menu-item/manifests.ts @@ -0,0 +1,19 @@ +import { UMB_MEDIA_MENU_ALIAS } from '../../menu/manifests.js'; +import { UMB_MEDIA_RECYCLE_BIN_TREE_ALIAS } from '../tree/index.js'; +import type { ManifestMenuItemTreeKind } from '@umbraco-cms/backoffice/extension-registry'; + +const menuItem: ManifestMenuItemTreeKind = { + type: 'menuItem', + kind: 'tree', + alias: 'Umb.MenuItem.Media.RecycleBin', + name: 'Media Recycle Bin Menu Item', + weight: 100, + meta: { + treeAlias: UMB_MEDIA_RECYCLE_BIN_TREE_ALIAS, + label: 'Recycle Bin', + icon: 'icon-trash', + menus: [UMB_MEDIA_MENU_ALIAS], + }, +}; + +export const manifests = [menuItem]; diff --git a/src/Umbraco.Web.UI.Client/src/packages/media/media/recycle-bin/repository/constants.ts b/src/Umbraco.Web.UI.Client/src/packages/media/media/recycle-bin/repository/constants.ts new file mode 100644 index 0000000000..e71d4eb514 --- /dev/null +++ b/src/Umbraco.Web.UI.Client/src/packages/media/media/recycle-bin/repository/constants.ts @@ -0,0 +1 @@ +export const UMB_MEDIA_RECYCLE_BIN_REPOSITORY_ALIAS = 'Umb.Repository.Media.RecycleBin'; diff --git a/src/Umbraco.Web.UI.Client/src/packages/media/media/recycle-bin/repository/index.ts b/src/Umbraco.Web.UI.Client/src/packages/media/media/recycle-bin/repository/index.ts new file mode 100644 index 0000000000..b62f9e3b1d --- /dev/null +++ b/src/Umbraco.Web.UI.Client/src/packages/media/media/recycle-bin/repository/index.ts @@ -0,0 +1 @@ +export { UMB_MEDIA_RECYCLE_BIN_REPOSITORY_ALIAS } from './constants.js'; diff --git a/src/Umbraco.Web.UI.Client/src/packages/media/media/recycle-bin/repository/manifests.ts b/src/Umbraco.Web.UI.Client/src/packages/media/media/recycle-bin/repository/manifests.ts new file mode 100644 index 0000000000..d645ed6c0e --- /dev/null +++ b/src/Umbraco.Web.UI.Client/src/packages/media/media/recycle-bin/repository/manifests.ts @@ -0,0 +1,11 @@ +import { UMB_MEDIA_RECYCLE_BIN_REPOSITORY_ALIAS } from './constants.js'; +import type { ManifestRepository } from '@umbraco-cms/backoffice/extension-registry'; + +const repository: ManifestRepository = { + type: 'repository', + alias: UMB_MEDIA_RECYCLE_BIN_REPOSITORY_ALIAS, + name: 'Media Recycle Bin Repository', + api: () => import('./media-recycle-bin.repository.js'), +}; + +export const manifests = [repository]; diff --git a/src/Umbraco.Web.UI.Client/src/packages/media/media/recycle-bin/repository/media-recycle-bin.repository.ts b/src/Umbraco.Web.UI.Client/src/packages/media/media/recycle-bin/repository/media-recycle-bin.repository.ts new file mode 100644 index 0000000000..867693f2c9 --- /dev/null +++ b/src/Umbraco.Web.UI.Client/src/packages/media/media/recycle-bin/repository/media-recycle-bin.repository.ts @@ -0,0 +1,11 @@ +import { UmbMediaRecycleBinServerDataSource } from './media-recycle-bin.server.data-source.js'; +import { UmbRecycleBinRepositoryBase } from '@umbraco-cms/backoffice/recycle-bin'; +import type { UmbControllerHost } from '@umbraco-cms/backoffice/controller-api'; + +export class UmbMediaRecycleBinRepository extends UmbRecycleBinRepositoryBase { + constructor(host: UmbControllerHost) { + super(host, UmbMediaRecycleBinServerDataSource); + } +} + +export { UmbMediaRecycleBinRepository as api }; diff --git a/src/Umbraco.Web.UI.Client/src/packages/media/media/recycle-bin/repository/media-recycle-bin.server.data-source.ts b/src/Umbraco.Web.UI.Client/src/packages/media/media/recycle-bin/repository/media-recycle-bin.server.data-source.ts new file mode 100644 index 0000000000..6348f879fa --- /dev/null +++ b/src/Umbraco.Web.UI.Client/src/packages/media/media/recycle-bin/repository/media-recycle-bin.server.data-source.ts @@ -0,0 +1,52 @@ +import type { + UmbRecycleBinDataSource, + UmbRecycleBinRestoreRequestArgs, + UmbRecycleBinTrashRequestArgs, + UmbRecycleBinOriginalParentRequestArgs, +} from '@umbraco-cms/backoffice/recycle-bin'; +import type { UmbControllerHost } from '@umbraco-cms/backoffice/controller-api'; +import { MediaService } from '@umbraco-cms/backoffice/external/backend-api'; +import { tryExecuteAndNotify } from '@umbraco-cms/backoffice/resources'; + +export class UmbMediaRecycleBinServerDataSource implements UmbRecycleBinDataSource { + #host: UmbControllerHost; + + constructor(host: UmbControllerHost) { + this.#host = host; + } + + trash(args: UmbRecycleBinTrashRequestArgs) { + return tryExecuteAndNotify(this.#host, MediaService.putMediaByIdMoveToRecycleBin({ id: args.unique })); + } + + restore(args: UmbRecycleBinRestoreRequestArgs) { + return tryExecuteAndNotify( + this.#host, + MediaService.putRecycleBinMediaByIdRestore({ + id: args.unique, + requestBody: { + target: args.destination.unique ? { id: args.destination.unique } : null, + }, + }), + ); + } + + empty() { + return tryExecuteAndNotify(this.#host, MediaService.deleteRecycleBinMedia()); + } + + async getOriginalParent(args: UmbRecycleBinOriginalParentRequestArgs) { + const { data, error } = await tryExecuteAndNotify( + this.#host, + MediaService.getRecycleBinMediaByIdOriginalParent({ id: args.unique }), + ); + + // only check for undefined because data can be null if the parent is the root + if (data !== undefined) { + const mappedData = data ? { unique: data.id } : null; + return { data: mappedData }; + } + + return { error }; + } +} diff --git a/src/Umbraco.Web.UI.Client/src/packages/media/media/recycle-bin/tree/constants.ts b/src/Umbraco.Web.UI.Client/src/packages/media/media/recycle-bin/tree/constants.ts new file mode 100644 index 0000000000..161a713575 --- /dev/null +++ b/src/Umbraco.Web.UI.Client/src/packages/media/media/recycle-bin/tree/constants.ts @@ -0,0 +1,3 @@ +export const UMB_MEDIA_RECYCLE_BIN_TREE_REPOSITORY_ALIAS = 'Umb.Repository.Media.RecycleBin.Tree'; +export const UMB_MEDIA_RECYCLE_BIN_TREE_STORE_ALIAS = 'Umb.Store.Media.RecycleBin.Tree'; +export const UMB_MEDIA_RECYCLE_BIN_TREE_ALIAS = 'Umb.Tree.Media.RecycleBin'; diff --git a/src/Umbraco.Web.UI.Client/src/packages/media/media/recycle-bin/tree/index.ts b/src/Umbraco.Web.UI.Client/src/packages/media/media/recycle-bin/tree/index.ts new file mode 100644 index 0000000000..2a6044c805 --- /dev/null +++ b/src/Umbraco.Web.UI.Client/src/packages/media/media/recycle-bin/tree/index.ts @@ -0,0 +1,9 @@ +export { UmbMediaRecycleBinTreeRepository } from './media-recycle-bin-tree.repository.js'; +export { + UMB_MEDIA_RECYCLE_BIN_TREE_REPOSITORY_ALIAS, + UMB_MEDIA_RECYCLE_BIN_TREE_STORE_ALIAS, + UMB_MEDIA_RECYCLE_BIN_TREE_ALIAS, +} from './constants.js'; +export { UMB_MEDIA_RECYCLE_BIN_TREE_STORE_CONTEXT } from './media-recycle-bin-tree.store.js'; +export { type UmbMediaRecycleBinTreeStore } from './media-recycle-bin-tree.store.js'; +export * from './types.js'; diff --git a/src/Umbraco.Web.UI.Client/src/packages/media/media/recycle-bin/tree/manifests.ts b/src/Umbraco.Web.UI.Client/src/packages/media/media/recycle-bin/tree/manifests.ts new file mode 100644 index 0000000000..d3557a6293 --- /dev/null +++ b/src/Umbraco.Web.UI.Client/src/packages/media/media/recycle-bin/tree/manifests.ts @@ -0,0 +1,49 @@ +import { UMB_MEDIA_RECYCLE_BIN_ROOT_ENTITY_TYPE } from '../entity.js'; +import { + UMB_MEDIA_RECYCLE_BIN_TREE_ALIAS, + UMB_MEDIA_RECYCLE_BIN_TREE_REPOSITORY_ALIAS, + UMB_MEDIA_RECYCLE_BIN_TREE_STORE_ALIAS, +} from './constants.js'; +import { UmbMediaRecycleBinTreeRepository } from './media-recycle-bin-tree.repository.js'; +import { UmbMediaRecycleBinTreeStore } from './media-recycle-bin-tree.store.js'; +import { manifests as reloadTreeItemChildrenManifests } from './reload-tree-item-children/manifests.js'; +import type { + ManifestRepository, + ManifestTree, + ManifestTreeItem, + ManifestTreeStore, +} from '@umbraco-cms/backoffice/extension-registry'; + +const treeRepository: ManifestRepository = { + type: 'repository', + alias: UMB_MEDIA_RECYCLE_BIN_TREE_REPOSITORY_ALIAS, + name: 'Media Recycle Bin Tree Repository', + api: UmbMediaRecycleBinTreeRepository, +}; + +const treeStore: ManifestTreeStore = { + type: 'treeStore', + alias: UMB_MEDIA_RECYCLE_BIN_TREE_STORE_ALIAS, + name: 'Media Recycle Bin Tree Store', + api: UmbMediaRecycleBinTreeStore, +}; + +const tree: ManifestTree = { + type: 'tree', + kind: 'default', + alias: UMB_MEDIA_RECYCLE_BIN_TREE_ALIAS, + name: 'Media Recycle Bin Tree', + meta: { + repositoryAlias: UMB_MEDIA_RECYCLE_BIN_TREE_REPOSITORY_ALIAS, + }, +}; + +const treeItem: ManifestTreeItem = { + type: 'treeItem', + kind: 'default', + alias: 'Umb.TreeItem.Media.RecycleBin', + name: 'Media Recycle Bin Tree Item', + forEntityTypes: [UMB_MEDIA_RECYCLE_BIN_ROOT_ENTITY_TYPE], +}; + +export const manifests = [treeRepository, treeStore, tree, treeItem, ...reloadTreeItemChildrenManifests]; diff --git a/src/Umbraco.Web.UI.Client/src/packages/media/media/recycle-bin/tree/media-recycle-bin-tree.repository.ts b/src/Umbraco.Web.UI.Client/src/packages/media/media/recycle-bin/tree/media-recycle-bin-tree.repository.ts new file mode 100644 index 0000000000..7d3f2eb88d --- /dev/null +++ b/src/Umbraco.Web.UI.Client/src/packages/media/media/recycle-bin/tree/media-recycle-bin-tree.repository.ts @@ -0,0 +1,33 @@ +import { UMB_MEDIA_RECYCLE_BIN_ROOT_ENTITY_TYPE } from '../entity.js'; +import { UmbMediaRecycleBinTreeServerDataSource } from './media-recycle-bin-tree.server.data-source.js'; +import type { UmbMediaRecycleBinTreeItemModel, UmbMediaRecycleBinTreeRootModel } from './types.js'; +import { UMB_MEDIA_RECYCLE_BIN_TREE_STORE_CONTEXT } from './media-recycle-bin-tree.store.js'; +import { UmbTreeRepositoryBase } from '@umbraco-cms/backoffice/tree'; +import type { UmbControllerHost } from '@umbraco-cms/backoffice/controller-api'; +import type { UmbApi } from '@umbraco-cms/backoffice/extension-api'; + +export class UmbMediaRecycleBinTreeRepository + extends UmbTreeRepositoryBase + implements UmbApi +{ + constructor(host: UmbControllerHost) { + super(host, UmbMediaRecycleBinTreeServerDataSource, UMB_MEDIA_RECYCLE_BIN_TREE_STORE_CONTEXT); + } + + async requestTreeRoot() { + const { data: treeRootData } = await this._treeSource.getRootItems({ skip: 0, take: 1 }); + const hasChildren = treeRootData ? treeRootData.total > 0 : false; + + const data = { + unique: null, + entityType: UMB_MEDIA_RECYCLE_BIN_ROOT_ENTITY_TYPE, + name: 'Recycle Bin', + icon: 'icon-trash', + hasChildren, + isContainer: false, + isFolder: true, + }; + + return { data }; + } +} diff --git a/src/Umbraco.Web.UI.Client/src/packages/media/media/recycle-bin/tree/media-recycle-bin-tree.server.data-source.ts b/src/Umbraco.Web.UI.Client/src/packages/media/media/recycle-bin/tree/media-recycle-bin-tree.server.data-source.ts new file mode 100644 index 0000000000..9907d34e88 --- /dev/null +++ b/src/Umbraco.Web.UI.Client/src/packages/media/media/recycle-bin/tree/media-recycle-bin-tree.server.data-source.ts @@ -0,0 +1,84 @@ +import { UMB_MEDIA_ENTITY_TYPE } from '../../entity.js'; +import type { UmbMediaRecycleBinTreeItemModel } from './types.js'; +import type { MediaRecycleBinItemResponseModel } from '@umbraco-cms/backoffice/external/backend-api'; +import { MediaService } from '@umbraco-cms/backoffice/external/backend-api'; +import type { UmbControllerHost } from '@umbraco-cms/backoffice/controller-api'; +import type { + UmbTreeAncestorsOfRequestArgs, + UmbTreeChildrenOfRequestArgs, + UmbTreeRootItemsRequestArgs, +} from '@umbraco-cms/backoffice/tree'; +import { UmbTreeServerDataSourceBase } from '@umbraco-cms/backoffice/tree'; + +/** + * A data source for the Media Recycle Bin tree that fetches data from the server + * @export + * @class UmbMediaRecycleBinTreeServerDataSource + * @implements {UmbTreeDataSource} + */ +export class UmbMediaRecycleBinTreeServerDataSource extends UmbTreeServerDataSourceBase< + MediaRecycleBinItemResponseModel, + UmbMediaRecycleBinTreeItemModel +> { + /** + * Creates an instance of UmbMediaRecycleBinTreeServerDataSource. + * @param {UmbControllerHost} host + * @memberof UmbMediaRecycleBinTreeServerDataSource + */ + constructor(host: UmbControllerHost) { + super(host, { + getRootItems, + getChildrenOf, + getAncestorsOf, + mapper, + }); + } +} + +const getRootItems = (args: UmbTreeRootItemsRequestArgs) => + // eslint-disable-next-line local-rules/no-direct-api-import + MediaService.getRecycleBinMediaRoot({ skip: args.skip, take: args.take }); + +const getChildrenOf = (args: UmbTreeChildrenOfRequestArgs) => { + if (args.parentUnique === null) { + return getRootItems(args); + } else { + // eslint-disable-next-line local-rules/no-direct-api-import + return MediaService.getRecycleBinMediaChildren({ + parentId: args.parentUnique, + skip: args.skip, + take: args.take, + }); + } +}; + +const getAncestorsOf = (args: UmbTreeAncestorsOfRequestArgs) => + // eslint-disable-next-line local-rules/no-direct-api-import + MediaService.getTreeMediaAncestors({ + descendantId: args.descendantUnique, + }); + +const mapper = (item: MediaRecycleBinItemResponseModel): UmbMediaRecycleBinTreeItemModel => { + return { + unique: item.id, + parentUnique: item.parent ? item.parent.id : null, + entityType: UMB_MEDIA_ENTITY_TYPE, + noAccess: false, + isTrashed: true, + hasChildren: item.hasChildren, + mediaType: { + unique: item.mediaType.id, + icon: item.mediaType.icon, + collection: item.mediaType.collection ? { unique: item.mediaType.collection.id } : null, + }, + variants: item.variants.map((variant) => { + return { + name: variant.name, + culture: variant.culture || null, + segment: null, // TODO: add segment to the backend API? + }; + }), + name: item.variants[0]?.name, // TODO: this is not correct. We need to get it from the variants. This is a temp solution. + isFolder: false, + }; +}; diff --git a/src/Umbraco.Web.UI.Client/src/packages/media/media/recycle-bin/tree/media-recycle-bin-tree.store.ts b/src/Umbraco.Web.UI.Client/src/packages/media/media/recycle-bin/tree/media-recycle-bin-tree.store.ts new file mode 100644 index 0000000000..6ccf7e34dd --- /dev/null +++ b/src/Umbraco.Web.UI.Client/src/packages/media/media/recycle-bin/tree/media-recycle-bin-tree.store.ts @@ -0,0 +1,24 @@ +import { UmbContextToken } from '@umbraco-cms/backoffice/context-api'; +import type { UmbControllerHost } from '@umbraco-cms/backoffice/controller-api'; +import { UmbUniqueTreeStore } from '@umbraco-cms/backoffice/tree'; + +/** + * @export + * @class UmbMediaRecycleBinTreeStore + * @extends {UmbStoreBase} + * @description - Tree Data Store for Media Recycle Bin Tree Items + */ +export class UmbMediaRecycleBinTreeStore extends UmbUniqueTreeStore { + /** + * Creates an instance of UmbMediaRecycleBinTreeStore. + * @param {UmbControllerHost} host + * @memberof UmbMediaRecycleBinTreeStore + */ + constructor(host: UmbControllerHost) { + super(host, UMB_MEDIA_RECYCLE_BIN_TREE_STORE_CONTEXT.toString()); + } +} + +export const UMB_MEDIA_RECYCLE_BIN_TREE_STORE_CONTEXT = new UmbContextToken( + 'UmbMediaRecycleBinTreeStore', +); diff --git a/src/Umbraco.Web.UI.Client/src/packages/media/media/recycle-bin/tree/reload-tree-item-children/manifests.ts b/src/Umbraco.Web.UI.Client/src/packages/media/media/recycle-bin/tree/reload-tree-item-children/manifests.ts new file mode 100644 index 0000000000..e4977c9214 --- /dev/null +++ b/src/Umbraco.Web.UI.Client/src/packages/media/media/recycle-bin/tree/reload-tree-item-children/manifests.ts @@ -0,0 +1,12 @@ +import { UMB_MEDIA_RECYCLE_BIN_ROOT_ENTITY_TYPE } from '../../entity.js'; +import type { ManifestTypes } from '@umbraco-cms/backoffice/extension-registry'; + +export const manifests: Array = [ + { + type: 'entityAction', + kind: 'reloadTreeItemChildren', + alias: 'Umb.EntityAction.MediaRecycleBin.Tree.ReloadChildrenOf', + name: 'Reload Media Recycle Bin Tree Item Children Entity Action', + forEntityTypes: [UMB_MEDIA_RECYCLE_BIN_ROOT_ENTITY_TYPE], + }, +]; diff --git a/src/Umbraco.Web.UI.Client/src/packages/media/media/recycle-bin/tree/types.ts b/src/Umbraco.Web.UI.Client/src/packages/media/media/recycle-bin/tree/types.ts new file mode 100644 index 0000000000..b09498103f --- /dev/null +++ b/src/Umbraco.Web.UI.Client/src/packages/media/media/recycle-bin/tree/types.ts @@ -0,0 +1,6 @@ +import type { UmbMediaTreeItemModel } from '../../tree/index.js'; +import type { UmbUniqueTreeRootModel } from '@umbraco-cms/backoffice/tree'; + +export interface UmbMediaRecycleBinTreeItemModel extends UmbMediaTreeItemModel {} + +export interface UmbMediaRecycleBinTreeRootModel extends UmbUniqueTreeRootModel {} diff --git a/src/Umbraco.Web.UI.Client/src/packages/media/media/reference/repository/media-reference.server.data.ts b/src/Umbraco.Web.UI.Client/src/packages/media/media/reference/repository/media-reference.server.data.ts index b8f1177398..7def339e28 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/media/media/reference/repository/media-reference.server.data.ts +++ b/src/Umbraco.Web.UI.Client/src/packages/media/media/reference/repository/media-reference.server.data.ts @@ -1,5 +1,5 @@ import type { UmbControllerHost } from '@umbraco-cms/backoffice/controller-api'; -import { MediaResource } from '@umbraco-cms/backoffice/external/backend-api'; +import { MediaService } from '@umbraco-cms/backoffice/external/backend-api'; import { tryExecuteAndNotify } from '@umbraco-cms/backoffice/resources'; /** @@ -26,6 +26,6 @@ export class UmbMediaReferenceServerDataSource { * @memberof UmbMediaReferenceServerDataSource */ async getReferencedBy(id: string, skip = 0, take = 20) { - return await tryExecuteAndNotify(this.#host, MediaResource.getMediaByIdReferencedBy({ id, skip, take })); + return await tryExecuteAndNotify(this.#host, MediaService.getMediaByIdReferencedBy({ id, skip, take })); } } diff --git a/src/Umbraco.Web.UI.Client/src/packages/media/media/repository/detail/media-detail.server.data-source.ts b/src/Umbraco.Web.UI.Client/src/packages/media/media/repository/detail/media-detail.server.data-source.ts index 5aba5c5b97..29cd802d92 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/media/media/repository/detail/media-detail.server.data-source.ts +++ b/src/Umbraco.Web.UI.Client/src/packages/media/media/repository/detail/media-detail.server.data-source.ts @@ -3,7 +3,7 @@ import { UMB_MEDIA_ENTITY_TYPE } from '../../entity.js'; import { UmbId } from '@umbraco-cms/backoffice/id'; import type { UmbDetailDataSource } from '@umbraco-cms/backoffice/repository'; import type { CreateMediaRequestModel, UpdateMediaRequestModel } from '@umbraco-cms/backoffice/external/backend-api'; -import { MediaResource } from '@umbraco-cms/backoffice/external/backend-api'; +import { MediaService } from '@umbraco-cms/backoffice/external/backend-api'; import type { UmbControllerHost } from '@umbraco-cms/backoffice/controller-api'; import { tryExecuteAndNotify } from '@umbraco-cms/backoffice/resources'; @@ -66,7 +66,7 @@ export class UmbMediaServerDataSource implements UmbDetailDataSource) => MediaResource.getItemMedia({ id: uniques }); +const getItems = (uniques: Array) => MediaService.getItemMedia({ id: uniques }); const mapper = (item: MediaItemResponseModel): UmbMediaItemModel => { return { diff --git a/src/Umbraco.Web.UI.Client/src/packages/media/media/section-view/manifests.ts b/src/Umbraco.Web.UI.Client/src/packages/media/media/section-view/manifests.ts index a6f7acda64..bcb5010371 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/media/media/section-view/manifests.ts +++ b/src/Umbraco.Web.UI.Client/src/packages/media/media/section-view/manifests.ts @@ -8,7 +8,7 @@ const sectionsViews: Array = [ element: () => import('./media-section-view.element.js'), weight: 200, meta: { - label: 'Media', + label: '#general_media', pathname: 'media', icon: 'icon-user', }, diff --git a/src/Umbraco.Web.UI.Client/src/packages/media/media/tree/media-tree.repository.ts b/src/Umbraco.Web.UI.Client/src/packages/media/media/tree/media-tree.repository.ts index c9b9893e53..7fea19f1ac 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/media/media/tree/media-tree.repository.ts +++ b/src/Umbraco.Web.UI.Client/src/packages/media/media/tree/media-tree.repository.ts @@ -18,7 +18,7 @@ export class UmbMediaTreeRepository const data: UmbMediaTreeRootModel = { unique: null, entityType: UMB_MEDIA_ROOT_ENTITY_TYPE, - name: 'Media', + name: '#treeHeaders_media', hasChildren: true, isFolder: true, }; diff --git a/src/Umbraco.Web.UI.Client/src/packages/media/media/tree/media-tree.server.data-source.ts b/src/Umbraco.Web.UI.Client/src/packages/media/media/tree/media-tree.server.data-source.ts index a9223242b6..3522d289fd 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/media/media/tree/media-tree.server.data-source.ts +++ b/src/Umbraco.Web.UI.Client/src/packages/media/media/tree/media-tree.server.data-source.ts @@ -6,7 +6,7 @@ import type { UmbTreeRootItemsRequestArgs, } from '@umbraco-cms/backoffice/tree'; import { UmbTreeServerDataSourceBase } from '@umbraco-cms/backoffice/tree'; -import { MediaResource, type MediaTreeItemResponseModel } from '@umbraco-cms/backoffice/external/backend-api'; +import { MediaService, type MediaTreeItemResponseModel } from '@umbraco-cms/backoffice/external/backend-api'; import type { UmbControllerHost } from '@umbraco-cms/backoffice/controller-api'; /** @@ -36,14 +36,14 @@ export class UmbMediaTreeServerDataSource extends UmbTreeServerDataSourceBase< const getRootItems = (args: UmbTreeRootItemsRequestArgs) => // eslint-disable-next-line local-rules/no-direct-api-import - MediaResource.getTreeMediaRoot({ skip: args.skip, take: args.take }); + MediaService.getTreeMediaRoot({ skip: args.skip, take: args.take }); const getChildrenOf = (args: UmbTreeChildrenOfRequestArgs) => { if (args.parentUnique === null) { return getRootItems(args); } else { // eslint-disable-next-line local-rules/no-direct-api-import - return MediaResource.getTreeMediaChildren({ + return MediaService.getTreeMediaChildren({ parentId: args.parentUnique, skip: args.skip, take: args.take, @@ -53,7 +53,7 @@ const getChildrenOf = (args: UmbTreeChildrenOfRequestArgs) => { const getAncestorsOf = (args: UmbTreeAncestorsOfRequestArgs) => // eslint-disable-next-line local-rules/no-direct-api-import - MediaResource.getTreeMediaAncestors({ + MediaService.getTreeMediaAncestors({ descendantId: args.descendantUnique, }); diff --git a/src/Umbraco.Web.UI.Client/src/packages/media/media/workspace/manifests.ts b/src/Umbraco.Web.UI.Client/src/packages/media/media/workspace/manifests.ts index bd158e586e..00808ce9c6 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/media/media/workspace/manifests.ts +++ b/src/Umbraco.Web.UI.Client/src/packages/media/media/workspace/manifests.ts @@ -44,7 +44,7 @@ const workspaceViews: Array = [ js: () => import('./views/edit/media-workspace-view-edit.element.js'), weight: 200, meta: { - label: 'Media', + label: '#general_details', pathname: 'media', icon: 'icon-picture', }, @@ -62,7 +62,7 @@ const workspaceViews: Array = [ js: () => import('./views/info/media-workspace-view-info.element.js'), weight: 100, meta: { - label: 'Info', + label: '#general_info', pathname: 'info', icon: 'info', }, @@ -83,7 +83,7 @@ const workspaceActions: Array = [ name: 'Save Media Workspace Action', api: UmbSubmitWorkspaceAction, meta: { - label: 'Save', + label: '#buttons_save', look: 'primary', color: 'positive', }, diff --git a/src/Umbraco.Web.UI.Client/src/packages/media/section.manifests.ts b/src/Umbraco.Web.UI.Client/src/packages/media/section.manifests.ts index e06de6f026..3981df871d 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/media/section.manifests.ts +++ b/src/Umbraco.Web.UI.Client/src/packages/media/section.manifests.ts @@ -9,7 +9,7 @@ const section: ManifestSection = { name: 'Media Section', weight: 500, meta: { - label: 'Media', + label: '#sections_media', pathname: 'media', }, conditions: [ diff --git a/src/Umbraco.Web.UI.Client/src/packages/members/member-group/collection/repository/member-group-collection.server.data-source.ts b/src/Umbraco.Web.UI.Client/src/packages/members/member-group/collection/repository/member-group-collection.server.data-source.ts index 4ba9a19e08..5ca4fe119d 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/members/member-group/collection/repository/member-group-collection.server.data-source.ts +++ b/src/Umbraco.Web.UI.Client/src/packages/members/member-group/collection/repository/member-group-collection.server.data-source.ts @@ -5,7 +5,7 @@ import type { UmbCollectionDataSource } from '@umbraco-cms/backoffice/collection import type { UmbControllerHost } from '@umbraco-cms/backoffice/controller-api'; import { tryExecuteAndNotify } from '@umbraco-cms/backoffice/resources'; import type { MemberGroupResponseModel } from '@umbraco-cms/backoffice/external/backend-api'; -import { MemberGroupResource } from '@umbraco-cms/backoffice/external/backend-api'; +import { MemberGroupService } from '@umbraco-cms/backoffice/external/backend-api'; /** * A data source that fetches the member collection data from the server. @@ -32,7 +32,7 @@ export class UmbMemberGroupCollectionServerDataSource implements UmbCollectionDa * @memberof UmbMemberGroupCollectionServerDataSource */ async getCollection(filter: UmbMemberGroupCollectionFilterModel) { - const { data, error } = await tryExecuteAndNotify(this.#host, MemberGroupResource.getMemberGroup(filter)); + const { data, error } = await tryExecuteAndNotify(this.#host, MemberGroupService.getMemberGroup(filter)); if (error) { return { error }; diff --git a/src/Umbraco.Web.UI.Client/src/packages/members/member-group/repository/detail/member-group-detail.server.data-source.ts b/src/Umbraco.Web.UI.Client/src/packages/members/member-group/repository/detail/member-group-detail.server.data-source.ts index 099082a55e..a81abc353d 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/members/member-group/repository/detail/member-group-detail.server.data-source.ts +++ b/src/Umbraco.Web.UI.Client/src/packages/members/member-group/repository/detail/member-group-detail.server.data-source.ts @@ -5,7 +5,7 @@ import type { UmbDetailDataSource } from '@umbraco-cms/backoffice/repository'; import type { UmbControllerHost } from '@umbraco-cms/backoffice/controller-api'; import { tryExecuteAndNotify } from '@umbraco-cms/backoffice/resources'; import type { CreateMemberGroupRequestModel } from '@umbraco-cms/backoffice/external/backend-api'; -import { MemberGroupResource } from '@umbraco-cms/backoffice/external/backend-api'; +import { MemberGroupService } from '@umbraco-cms/backoffice/external/backend-api'; /** * A data source for the Member Group that fetches data from the server @@ -52,7 +52,7 @@ export class UmbMemberGroupServerDataSource implements UmbDetailDataSource) => MemberGroupResource.getItemMemberGroup({ id: uniques }); +const getItems = (uniques: Array) => MemberGroupService.getItemMemberGroup({ id: uniques }); const mapper = (item: MemberGroupItemResponseModel): UmbMemberGroupItemModel => { return { diff --git a/src/Umbraco.Web.UI.Client/src/packages/members/member-group/workspace/manifests.ts b/src/Umbraco.Web.UI.Client/src/packages/members/member-group/workspace/manifests.ts index f17abf1cf3..7732091c9b 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/members/member-group/workspace/manifests.ts +++ b/src/Umbraco.Web.UI.Client/src/packages/members/member-group/workspace/manifests.ts @@ -27,7 +27,7 @@ const workspaceActions: Array = [ name: 'Save Member Group Workspace Action', api: UmbSubmitWorkspaceAction, meta: { - label: 'Save', + label: '#buttons_save', look: 'primary', color: 'positive', }, @@ -48,7 +48,7 @@ export const workspaceViews: Array = [ js: () => import('./views/info/member-type-workspace-view-info.element.js'), weight: 300, meta: { - label: 'Info', + label: '#general_info', pathname: 'info', icon: 'icon-document', }, diff --git a/src/Umbraco.Web.UI.Client/src/packages/members/member-section/manifests.ts b/src/Umbraco.Web.UI.Client/src/packages/members/member-section/manifests.ts index 9b9ffe225e..368ad7f0d3 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/members/member-section/manifests.ts +++ b/src/Umbraco.Web.UI.Client/src/packages/members/member-section/manifests.ts @@ -6,7 +6,7 @@ const section: ManifestSection = { name: 'Members Section', weight: 300, meta: { - label: 'Members', + label: '#sections_member', pathname: 'member-management', }, conditions: [ diff --git a/src/Umbraco.Web.UI.Client/src/packages/members/member-type/entity-actions/manifests.ts b/src/Umbraco.Web.UI.Client/src/packages/members/member-type/entity-actions/manifests.ts index 177b69c006..1af70b700e 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/members/member-type/entity-actions/manifests.ts +++ b/src/Umbraco.Web.UI.Client/src/packages/members/member-type/entity-actions/manifests.ts @@ -15,7 +15,7 @@ const entityActions: Array = [ forEntityTypes: [UMB_MEMBER_TYPE_ROOT_ENTITY_TYPE], meta: { icon: 'icon-add', - label: 'Create...', + label: '#actions_create', }, }, { diff --git a/src/Umbraco.Web.UI.Client/src/packages/members/member-type/repository/detail/member-type-detail.server.data-source.ts b/src/Umbraco.Web.UI.Client/src/packages/members/member-type/repository/detail/member-type-detail.server.data-source.ts index cf717ef3df..aac637749c 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/members/member-type/repository/detail/member-type-detail.server.data-source.ts +++ b/src/Umbraco.Web.UI.Client/src/packages/members/member-type/repository/detail/member-type-detail.server.data-source.ts @@ -6,7 +6,7 @@ import type { CreateMemberTypeRequestModel, UpdateMemberTypeRequestModel, } from '@umbraco-cms/backoffice/external/backend-api'; -import { MemberTypeResource } from '@umbraco-cms/backoffice/external/backend-api'; +import { MemberTypeService } from '@umbraco-cms/backoffice/external/backend-api'; import type { UmbControllerHost } from '@umbraco-cms/backoffice/controller-api'; import { tryExecuteAndNotify } from '@umbraco-cms/backoffice/resources'; import type { UmbPropertyContainerTypes } from '@umbraco-cms/backoffice/content-type'; @@ -67,7 +67,7 @@ export class UmbMemberTypeServerDataSource implements UmbDetailDataSource) => MemberTypeResource.getItemMemberType({ id: uniques }); +const getItems = (uniques: Array) => MemberTypeService.getItemMemberType({ id: uniques }); const mapper = (item: MemberTypeItemResponseModel): UmbMemberTypeItemModel => { return { diff --git a/src/Umbraco.Web.UI.Client/src/packages/members/member-type/tree/member-type-tree.repository.ts b/src/Umbraco.Web.UI.Client/src/packages/members/member-type/tree/member-type-tree.repository.ts index 80d19d5ef5..fa6123d7d7 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/members/member-type/tree/member-type-tree.repository.ts +++ b/src/Umbraco.Web.UI.Client/src/packages/members/member-type/tree/member-type-tree.repository.ts @@ -18,7 +18,7 @@ export class UmbMemberTypeTreeRepository const data: UmbMemberTypeTreeRootModel = { unique: null, entityType: UMB_MEMBER_TYPE_ROOT_ENTITY_TYPE, - name: 'Member Types', + name: '#treeHeaders_memberTypes', hasChildren: true, isFolder: true, }; diff --git a/src/Umbraco.Web.UI.Client/src/packages/members/member-type/tree/member-type-tree.server.data-source.ts b/src/Umbraco.Web.UI.Client/src/packages/members/member-type/tree/member-type-tree.server.data-source.ts index c593f6fa68..41be9cbe23 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/members/member-type/tree/member-type-tree.server.data-source.ts +++ b/src/Umbraco.Web.UI.Client/src/packages/members/member-type/tree/member-type-tree.server.data-source.ts @@ -3,7 +3,7 @@ import type { UmbMemberTypeTreeItemModel } from './types.js'; import type { UmbTreeChildrenOfRequestArgs, UmbTreeRootItemsRequestArgs } from '@umbraco-cms/backoffice/tree'; import { UmbTreeServerDataSourceBase } from '@umbraco-cms/backoffice/tree'; import type { NamedEntityTreeItemResponseModel } from '@umbraco-cms/backoffice/external/backend-api'; -import { MemberTypeResource } from '@umbraco-cms/backoffice/external/backend-api'; +import { MemberTypeService } from '@umbraco-cms/backoffice/external/backend-api'; import type { UmbControllerHost } from '@umbraco-cms/backoffice/controller-api'; /** @@ -33,7 +33,7 @@ export class UmbMemberTypeTreeServerDataSource extends UmbTreeServerDataSourceBa const getRootItems = (args: UmbTreeRootItemsRequestArgs) => // eslint-disable-next-line local-rules/no-direct-api-import - MemberTypeResource.getTreeMemberTypeRoot({ skip: args.skip, take: args.take }); + MemberTypeService.getTreeMemberTypeRoot({ skip: args.skip, take: args.take }); const getChildrenOf = (args: UmbTreeChildrenOfRequestArgs) => { if (args.parentUnique === null) { diff --git a/src/Umbraco.Web.UI.Client/src/packages/members/member-type/workspace/manifests.ts b/src/Umbraco.Web.UI.Client/src/packages/members/member-type/workspace/manifests.ts index 336c403747..8acc0d3acd 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/members/member-type/workspace/manifests.ts +++ b/src/Umbraco.Web.UI.Client/src/packages/members/member-type/workspace/manifests.ts @@ -25,7 +25,7 @@ const workspaceViews: Array = [ alias: 'Umb.WorkspaceView.MemberType.Design', name: 'Member Type Workspace Design View', meta: { - label: 'Design', + label: '#general_design', pathname: 'design', icon: 'icon-member-dashed-line', }, @@ -46,7 +46,7 @@ const workspaceActions: Array = [ name: 'Save Member Type Workspace Action', api: UmbSubmitWorkspaceAction, meta: { - label: 'Save', + label: '#buttons_save', look: 'primary', color: 'positive', }, diff --git a/src/Umbraco.Web.UI.Client/src/packages/members/member/collection/repository/member-collection.server.data-source.ts b/src/Umbraco.Web.UI.Client/src/packages/members/member/collection/repository/member-collection.server.data-source.ts index d9df07980f..ca64ad7003 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/members/member/collection/repository/member-collection.server.data-source.ts +++ b/src/Umbraco.Web.UI.Client/src/packages/members/member/collection/repository/member-collection.server.data-source.ts @@ -4,7 +4,7 @@ import type { UmbMemberCollectionFilterModel } from '../types.js'; import { tryExecuteAndNotify } from '@umbraco-cms/backoffice/resources'; import type { UmbCollectionDataSource } from '@umbraco-cms/backoffice/collection'; import type { MemberResponseModel } from '@umbraco-cms/backoffice/external/backend-api'; -import { MemberResource } from '@umbraco-cms/backoffice/external/backend-api'; +import { MemberService } from '@umbraco-cms/backoffice/external/backend-api'; import type { UmbControllerHost } from '@umbraco-cms/backoffice/controller-api'; import type { UmbVariantModel } from '@umbraco-cms/backoffice/variant'; @@ -33,7 +33,7 @@ export class UmbMemberCollectionServerDataSource implements UmbCollectionDataSou * @memberof UmbMemberCollectionServerDataSource */ async getCollection(filter: UmbMemberCollectionFilterModel) { - const { data, error } = await tryExecuteAndNotify(this.#host, MemberResource.getFilterMember(filter)); + const { data, error } = await tryExecuteAndNotify(this.#host, MemberService.getFilterMember(filter)); if (error) { return { error }; diff --git a/src/Umbraco.Web.UI.Client/src/packages/members/member/repository/detail/member-detail.server.data-source.ts b/src/Umbraco.Web.UI.Client/src/packages/members/member/repository/detail/member-detail.server.data-source.ts index 4a1a62c604..a3a123d02c 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/members/member/repository/detail/member-detail.server.data-source.ts +++ b/src/Umbraco.Web.UI.Client/src/packages/members/member/repository/detail/member-detail.server.data-source.ts @@ -3,7 +3,7 @@ import { UMB_MEMBER_ENTITY_TYPE } from '../../entity.js'; import { UmbId } from '@umbraco-cms/backoffice/id'; import type { UmbDetailDataSource } from '@umbraco-cms/backoffice/repository'; import type { CreateMemberRequestModel, UpdateMemberRequestModel } from '@umbraco-cms/backoffice/external/backend-api'; -import { MemberResource } from '@umbraco-cms/backoffice/external/backend-api'; +import { MemberService } from '@umbraco-cms/backoffice/external/backend-api'; import type { UmbControllerHost } from '@umbraco-cms/backoffice/controller-api'; import { tryExecuteAndNotify } from '@umbraco-cms/backoffice/resources'; @@ -73,7 +73,7 @@ export class UmbMemberServerDataSource implements UmbDetailDataSource) => MemberResource.getItemMember({ id: uniques }); +const getItems = (uniques: Array) => MemberService.getItemMember({ id: uniques }); const mapper = (item: MemberItemResponseModel): UmbMemberItemModel => { return { diff --git a/src/Umbraco.Web.UI.Client/src/packages/members/member/workspace/manifests.ts b/src/Umbraco.Web.UI.Client/src/packages/members/member/workspace/manifests.ts index 9198c2ef10..98312be30d 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/members/member/workspace/manifests.ts +++ b/src/Umbraco.Web.UI.Client/src/packages/members/member/workspace/manifests.ts @@ -27,7 +27,7 @@ const workspaceActions: Array = [ name: 'Save Member Workspace Action', api: UmbSubmitWorkspaceAction, meta: { - label: 'Save', + label: '#buttons_save', look: 'primary', color: 'positive', }, @@ -48,7 +48,7 @@ export const workspaceViews: Array = [ js: () => import('./views/content/member-workspace-view-content.element.js'), weight: 100, meta: { - label: 'Content', + label: '#general_details', pathname: 'content', icon: 'icon-document', }, diff --git a/src/Umbraco.Web.UI.Client/src/packages/models-builder/manifests.ts b/src/Umbraco.Web.UI.Client/src/packages/models-builder/manifests.ts index d3b793e074..9f20431ef3 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/models-builder/manifests.ts +++ b/src/Umbraco.Web.UI.Client/src/packages/models-builder/manifests.ts @@ -6,7 +6,7 @@ export const manifests = [ element: () => import('./models-builder-dashboard.element.js'), weight: 300, meta: { - label: 'Models Builder', + label: '#dashboardTabs_settingsModelsBuilder', pathname: 'models-builder', }, conditions: [ diff --git a/src/Umbraco.Web.UI.Client/src/packages/models-builder/models-builder-dashboard.element.ts b/src/Umbraco.Web.UI.Client/src/packages/models-builder/models-builder-dashboard.element.ts index e9f08b1220..03f5c50531 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/models-builder/models-builder-dashboard.element.ts +++ b/src/Umbraco.Web.UI.Client/src/packages/models-builder/models-builder-dashboard.element.ts @@ -2,7 +2,7 @@ import type { UUIButtonState } from '@umbraco-cms/backoffice/external/uui'; import { css, html, nothing, customElement, state } from '@umbraco-cms/backoffice/external/lit'; import type { ModelsBuilderResponseModel } from '@umbraco-cms/backoffice/external/backend-api'; -import { ModelsBuilderResource, ModelsModeModel } from '@umbraco-cms/backoffice/external/backend-api'; +import { ModelsBuilderService, ModelsModeModel } from '@umbraco-cms/backoffice/external/backend-api'; import { UmbLitElement } from '@umbraco-cms/backoffice/lit-element'; import { tryExecuteAndNotify } from '@umbraco-cms/backoffice/resources'; import { UmbTextStyles } from '@umbraco-cms/backoffice/style'; @@ -24,7 +24,7 @@ export class UmbModelsBuilderDashboardElement extends UmbLitElement { } private async _getDashboardData() { - const { data } = await tryExecuteAndNotify(this, ModelsBuilderResource.getModelsBuilderDashboard()); + const { data } = await tryExecuteAndNotify(this, ModelsBuilderService.getModelsBuilderDashboard()); if (data) { this._modelsBuilder = data; return true; @@ -39,7 +39,7 @@ export class UmbModelsBuilderDashboardElement extends UmbLitElement { } private async _postGenerateModels() { - const { error } = await tryExecuteAndNotify(this, ModelsBuilderResource.postModelsBuilderBuild()); + const { error } = await tryExecuteAndNotify(this, ModelsBuilderService.postModelsBuilderBuild()); if (error) { return false; } @@ -74,7 +74,7 @@ export class UmbModelsBuilderDashboardElement extends UmbLitElement { ${this._modelsBuilder?.mode ? html`
  • The ModelsMode is '${this._modelsBuilder.mode}'. ${this.renderModelsMode()} -
  • ` + ` : nothing} ${this.renderList()} @@ -90,7 +90,7 @@ export class UmbModelsBuilderDashboardElement extends UmbLitElement { label="Generate models" @click="${this._onGenerateModels}"> Generate models - ` + ` : nothing}

    ${this._modelsBuilder?.lastError @@ -109,8 +109,8 @@ export class UmbModelsBuilderDashboardElement extends UmbLitElement { ${this._modelsBuilder?.trackingOutOfDateModels === true ? html`
  • Tracking of out-of-date models is enabled.
  • ` : this._modelsBuilder?.trackingOutOfDateModels === false - ? html`
  • Tracking of out-of-date models is not enabled.
  • ` - : nothing}`; + ? html`
  • Tracking of out-of-date models is not enabled.
  • ` + : nothing}`; } return nothing; } diff --git a/src/Umbraco.Web.UI.Client/src/packages/object-type/object-type.repository.ts b/src/Umbraco.Web.UI.Client/src/packages/object-type/object-type.repository.ts index 7669921f21..ab9fa73ee5 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/object-type/object-type.repository.ts +++ b/src/Umbraco.Web.UI.Client/src/packages/object-type/object-type.repository.ts @@ -1,4 +1,4 @@ -import { ObjectTypesResource } from '@umbraco-cms/backoffice/external/backend-api'; +import { ObjectTypesService } from '@umbraco-cms/backoffice/external/backend-api'; import { UmbControllerBase } from '@umbraco-cms/backoffice/class-api'; import type { UmbControllerHost } from '@umbraco-cms/backoffice/controller-api'; import type { UmbApi } from '@umbraco-cms/backoffice/extension-api'; @@ -14,7 +14,7 @@ export class UmbObjectTypeRepository extends UmbControllerBase implements UmbApi } async #read() { - return tryExecuteAndNotify(this.#host, ObjectTypesResource.getObjectTypes({})); + return tryExecuteAndNotify(this.#host, ObjectTypesService.getObjectTypes({})); } async read() { diff --git a/src/Umbraco.Web.UI.Client/src/packages/packages/package-section/manifests.ts b/src/Umbraco.Web.UI.Client/src/packages/packages/package-section/manifests.ts index 6667d5cbd2..fb2c6018c7 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/packages/package-section/manifests.ts +++ b/src/Umbraco.Web.UI.Client/src/packages/packages/package-section/manifests.ts @@ -8,7 +8,7 @@ const section: ManifestSection = { name: 'Packages Section', weight: 200, meta: { - label: 'Packages', + label: '#sections_packages', pathname: 'packages', }, conditions: [ @@ -45,7 +45,7 @@ const sectionsViews: Array = [ element: () => import('./views/installed/installed-packages-section-view.element.js'), weight: 200, meta: { - label: 'Installed', + label: '#packager_installed', pathname: 'installed', icon: 'icon-box', }, @@ -63,7 +63,7 @@ const sectionsViews: Array = [ element: () => import('./views/created/created-packages-section-view.element.js'), weight: 100, meta: { - label: 'Created', + label: '#packager_created', pathname: 'created', icon: 'icon-files', }, diff --git a/src/Umbraco.Web.UI.Client/src/packages/packages/package-section/views/installed/installed-packages-section-view-item.element.ts b/src/Umbraco.Web.UI.Client/src/packages/packages/package-section/views/installed/installed-packages-section-view-item.element.ts index 324658656f..bf2ac4e49b 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/packages/package-section/views/installed/installed-packages-section-view-item.element.ts +++ b/src/Umbraco.Web.UI.Client/src/packages/packages/package-section/views/installed/installed-packages-section-view-item.element.ts @@ -1,6 +1,6 @@ import { html, css, nothing, ifDefined, customElement, property, state } from '@umbraco-cms/backoffice/external/lit'; import { createExtensionElement } from '@umbraco-cms/backoffice/extension-api'; -import { PackageResource } from '@umbraco-cms/backoffice/external/backend-api'; +import { PackageService } from '@umbraco-cms/backoffice/external/backend-api'; import { tryExecuteAndNotify } from '@umbraco-cms/backoffice/resources'; import { umbConfirmModal } from '@umbraco-cms/backoffice/modal'; import { umbExtensionsRegistry } from '@umbraco-cms/backoffice/extension-registry'; @@ -101,7 +101,7 @@ export class UmbInstalledPackagesSectionViewItemElement extends UmbLitElement { this._migrationButtonState = 'waiting'; const { error } = await tryExecuteAndNotify( this, - PackageResource.postPackageByNameRunMigration({ name: this.name }), + PackageService.postPackageByNameRunMigration({ name: this.name }), ); if (error) return; diff --git a/src/Umbraco.Web.UI.Client/src/packages/packages/package/repository/sources/package.server.data.ts b/src/Umbraco.Web.UI.Client/src/packages/packages/package/repository/sources/package.server.data.ts index 3b70e8e1b5..ae20261028 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/packages/package/repository/sources/package.server.data.ts +++ b/src/Umbraco.Web.UI.Client/src/packages/packages/package/repository/sources/package.server.data.ts @@ -1,5 +1,5 @@ import { tryExecuteAndNotify } from '@umbraco-cms/backoffice/resources'; -import { PackageResource } from '@umbraco-cms/backoffice/external/backend-api'; +import { ManifestService, PackageService } from '@umbraco-cms/backoffice/external/backend-api'; import type { CreatePackageRequestModel, UpdatePackageRequestModel, @@ -14,19 +14,19 @@ export class UmbPackageServerDataSource { constructor(private readonly host: UmbControllerHost) {} async deleteCreatedPackage(unique: string) { - return await tryExecuteAndNotify(this.host, PackageResource.deletePackageCreatedById({ id: unique })); + return await tryExecuteAndNotify(this.host, PackageService.deletePackageCreatedById({ id: unique })); } getCreatedPackage(unique: string) { - return tryExecuteAndNotify(this.host, PackageResource.getPackageCreatedById({ id: unique })); + return tryExecuteAndNotify(this.host, PackageService.getPackageCreatedById({ id: unique })); } getCreatedPackages({ skip, take }: { skip: number; take: number }) { - return tryExecuteAndNotify(this.host, PackageResource.getPackageCreated({ skip, take })); + return tryExecuteAndNotify(this.host, PackageService.getPackageCreated({ skip, take })); } getCreatePackageDownload(unique: string) { - return tryExecuteAndNotify(this.host, PackageResource.getPackageCreatedByIdDownload({ id: unique })); + return tryExecuteAndNotify(this.host, PackageService.getPackageCreatedByIdDownload({ id: unique })); } /** @@ -34,7 +34,7 @@ export class UmbPackageServerDataSource { * @memberof UmbPackageServerDataSource */ getRootItems() { - return tryExecuteAndNotify(this.host, PackageResource.getPackageManifest()); + return tryExecuteAndNotify(this.host, ManifestService.getManifestManifest()); } /** @@ -42,7 +42,7 @@ export class UmbPackageServerDataSource { * @memberof UmbPackageServerDataSource */ getPackageConfiguration() { - return tryExecuteAndNotify(this.host, PackageResource.getPackageConfiguration()); + return tryExecuteAndNotify(this.host, PackageService.getPackageConfiguration()); } /** @@ -50,14 +50,14 @@ export class UmbPackageServerDataSource { * @memberof UmbPackageServerDataSource */ getPackageMigrations() { - return tryExecuteAndNotify(this.host, PackageResource.getPackageMigrationStatus({ skip: 0, take: 9999 })); + return tryExecuteAndNotify(this.host, PackageService.getPackageMigrationStatus({ skip: 0, take: 9999 })); } async saveCreatedPackage(requestBody: CreatePackageRequestModel) { - return await tryExecuteAndNotify(this.host, PackageResource.postPackageCreated({ requestBody })); + return await tryExecuteAndNotify(this.host, PackageService.postPackageCreated({ requestBody })); } async updateCreatedPackage(id: string, requestBody: UpdatePackageRequestModel) { - return await tryExecuteAndNotify(this.host, PackageResource.putPackageCreatedById({ id, requestBody })); + return await tryExecuteAndNotify(this.host, PackageService.putPackageCreatedById({ id, requestBody })); } } diff --git a/src/Umbraco.Web.UI.Client/src/packages/packages/types.ts b/src/Umbraco.Web.UI.Client/src/packages/packages/types.ts index 774cd13211..b3eb720c52 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/packages/types.ts +++ b/src/Umbraco.Web.UI.Client/src/packages/packages/types.ts @@ -1,6 +1,6 @@ -import type { PackageManifestResponseModel } from '@umbraco-cms/backoffice/external/backend-api'; +import type { ManifestResponseModel } from '@umbraco-cms/backoffice/external/backend-api'; -export type UmbPackage = PackageManifestResponseModel; +export type UmbPackage = ManifestResponseModel; export type PackageManifestResponse = UmbPackage[]; diff --git a/src/Umbraco.Web.UI.Client/src/packages/relations/relation-types/collection/repository/relation-type-collection.server.data-source.ts b/src/Umbraco.Web.UI.Client/src/packages/relations/relation-types/collection/repository/relation-type-collection.server.data-source.ts index b1fb2a947a..0759a38fbb 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/relations/relation-types/collection/repository/relation-type-collection.server.data-source.ts +++ b/src/Umbraco.Web.UI.Client/src/packages/relations/relation-types/collection/repository/relation-type-collection.server.data-source.ts @@ -2,7 +2,7 @@ import type { UmbRelationTypeCollectionFilterModel } from '../types.js'; import type { UmbRelationTypeDetailModel } from '../../types.js'; import { UMB_RELATION_TYPE_ENTITY_TYPE } from '../../entity.js'; import type { UmbCollectionDataSource } from '@umbraco-cms/backoffice/collection'; -import { RelationTypeResource } from '@umbraco-cms/backoffice/external/backend-api'; +import { RelationTypeService } from '@umbraco-cms/backoffice/external/backend-api'; import type { UmbControllerHost } from '@umbraco-cms/backoffice/controller-api'; import { tryExecuteAndNotify } from '@umbraco-cms/backoffice/resources'; @@ -31,7 +31,7 @@ export class UmbRelationTypeCollectionServerDataSource implements UmbCollectionD * @memberof UmbRelationTypeCollectionServerDataSource */ async getCollection(filter: UmbRelationTypeCollectionFilterModel) { - const { data, error } = await tryExecuteAndNotify(this.#host, RelationTypeResource.getRelationType(filter)); + const { data, error } = await tryExecuteAndNotify(this.#host, RelationTypeService.getRelationType(filter)); if (data) { const items = data.items.map((item) => { diff --git a/src/Umbraco.Web.UI.Client/src/packages/relations/relation-types/repository/detail/relation-type-detail.server.data-source.ts b/src/Umbraco.Web.UI.Client/src/packages/relations/relation-types/repository/detail/relation-type-detail.server.data-source.ts index 897b3bdb28..a196655e7f 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/relations/relation-types/repository/detail/relation-type-detail.server.data-source.ts +++ b/src/Umbraco.Web.UI.Client/src/packages/relations/relation-types/repository/detail/relation-type-detail.server.data-source.ts @@ -1,6 +1,6 @@ import type { UmbRelationTypeDetailModel } from '../../types.js'; import { UMB_RELATION_TYPE_ENTITY_TYPE } from '../../entity.js'; -import { RelationTypeResource } from '@umbraco-cms/backoffice/external/backend-api'; +import { RelationTypeService } from '@umbraco-cms/backoffice/external/backend-api'; import type { UmbControllerHost } from '@umbraco-cms/backoffice/controller-api'; import { tryExecuteAndNotify } from '@umbraco-cms/backoffice/resources'; import type { UmbReadDetailDataSource } from '@umbraco-cms/backoffice/repository'; @@ -34,7 +34,7 @@ export class UmbRelationTypeDetailServerDataSource implements UmbReadDetailDataS const { data, error } = await tryExecuteAndNotify( this.#host, - RelationTypeResource.getRelationTypeById({ id: unique }), + RelationTypeService.getRelationTypeById({ id: unique }), ); if (error || !data) { diff --git a/src/Umbraco.Web.UI.Client/src/packages/relations/relation-types/workspace/relation-type/manifests.ts b/src/Umbraco.Web.UI.Client/src/packages/relations/relation-types/workspace/relation-type/manifests.ts index 49fc7fad40..88485c6869 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/relations/relation-types/workspace/relation-type/manifests.ts +++ b/src/Umbraco.Web.UI.Client/src/packages/relations/relation-types/workspace/relation-type/manifests.ts @@ -19,7 +19,7 @@ const workspaceViews: Array = [ js: () => import('./views/relation-type-detail-workspace-view.element.js'), weight: 20, meta: { - label: 'Details', + label: '#general_details', pathname: 'details', icon: 'icon-trafic', }, diff --git a/src/Umbraco.Web.UI.Client/src/packages/relations/relations/collection/repository/relation-collection.server.data-source.ts b/src/Umbraco.Web.UI.Client/src/packages/relations/relations/collection/repository/relation-collection.server.data-source.ts index 48d9103712..96abd9cbc7 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/relations/relations/collection/repository/relation-collection.server.data-source.ts +++ b/src/Umbraco.Web.UI.Client/src/packages/relations/relations/collection/repository/relation-collection.server.data-source.ts @@ -2,7 +2,7 @@ import type { UmbRelationCollectionFilterModel } from '../types.js'; import type { UmbRelationDetailModel } from '../../types.js'; import { UMB_RELATION_ENTITY_TYPE } from '../../entity.js'; import type { UmbCollectionDataSource } from '@umbraco-cms/backoffice/collection'; -import { RelationResource } from '@umbraco-cms/backoffice/external/backend-api'; +import { RelationService } from '@umbraco-cms/backoffice/external/backend-api'; import type { UmbControllerHost } from '@umbraco-cms/backoffice/controller-api'; import { tryExecuteAndNotify } from '@umbraco-cms/backoffice/resources'; @@ -37,7 +37,7 @@ export class UmbRelationCollectionServerDataSource implements UmbCollectionDataS id: filter.relationType.unique, }; - const { data, error } = await tryExecuteAndNotify(this.#host, RelationResource.getRelationTypeById(requestBody)); + const { data, error } = await tryExecuteAndNotify(this.#host, RelationService.getRelationTypeById(requestBody)); if (data) { const items = data.items.map((item) => { diff --git a/src/Umbraco.Web.UI.Client/src/packages/search/examine-management-dashboard/views/section-view-examine-indexers.ts b/src/Umbraco.Web.UI.Client/src/packages/search/examine-management-dashboard/views/section-view-examine-indexers.ts index 0f0a80fa9e..9d86f91654 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/search/examine-management-dashboard/views/section-view-examine-indexers.ts +++ b/src/Umbraco.Web.UI.Client/src/packages/search/examine-management-dashboard/views/section-view-examine-indexers.ts @@ -2,7 +2,7 @@ import type { UUIButtonState } from '@umbraco-cms/backoffice/external/uui'; import { css, html, nothing, customElement, property, state } from '@umbraco-cms/backoffice/external/lit'; import { umbConfirmModal } from '@umbraco-cms/backoffice/modal'; import type { IndexResponseModel } from '@umbraco-cms/backoffice/external/backend-api'; -import { HealthStatusModel, IndexerResource } from '@umbraco-cms/backoffice/external/backend-api'; +import { HealthStatusModel, IndexerService } from '@umbraco-cms/backoffice/external/backend-api'; import { UmbLitElement } from '@umbraco-cms/backoffice/lit-element'; import { tryExecuteAndNotify } from '@umbraco-cms/backoffice/resources'; @@ -31,7 +31,7 @@ export class UmbDashboardExamineIndexElement extends UmbLitElement { private async _getIndexData() { const { data } = await tryExecuteAndNotify( this, - IndexerResource.getIndexerByIndexName({ indexName: this.indexName }), + IndexerService.getIndexerByIndexName({ indexName: this.indexName }), ); this._indexData = data; @@ -62,7 +62,7 @@ export class UmbDashboardExamineIndexElement extends UmbLitElement { this._buttonState = 'waiting'; const { error } = await tryExecuteAndNotify( this, - IndexerResource.postIndexerByIndexNameRebuild({ indexName: this.indexName }), + IndexerService.postIndexerByIndexNameRebuild({ indexName: this.indexName }), ); if (error) { this._buttonState = 'failed'; @@ -123,7 +123,7 @@ export class UmbDashboardExamineIndexElement extends UmbLitElement { ${entry[0]} ${entry[1]} `; - }) + }) : ''} `; diff --git a/src/Umbraco.Web.UI.Client/src/packages/search/examine-management-dashboard/views/section-view-examine-overview.ts b/src/Umbraco.Web.UI.Client/src/packages/search/examine-management-dashboard/views/section-view-examine-overview.ts index dbd33c3214..c14200b221 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/search/examine-management-dashboard/views/section-view-examine-overview.ts +++ b/src/Umbraco.Web.UI.Client/src/packages/search/examine-management-dashboard/views/section-view-examine-overview.ts @@ -2,7 +2,7 @@ import { UmbTextStyles } from '@umbraco-cms/backoffice/style'; import { css, html, nothing, customElement, state } from '@umbraco-cms/backoffice/external/lit'; import type { IndexResponseModel, SearcherResponseModel } from '@umbraco-cms/backoffice/external/backend-api'; -import { HealthStatusModel, IndexerResource, SearcherResource } from '@umbraco-cms/backoffice/external/backend-api'; +import { HealthStatusModel, IndexerService, SearcherService } from '@umbraco-cms/backoffice/external/backend-api'; import { UmbLitElement } from '@umbraco-cms/backoffice/lit-element'; import { tryExecuteAndNotify } from '@umbraco-cms/backoffice/resources'; @@ -28,14 +28,14 @@ export class UmbDashboardExamineOverviewElement extends UmbLitElement { private async _getIndexers() { this._loadingIndexers = true; - const { data } = await tryExecuteAndNotify(this, IndexerResource.getIndexer({ take: 9999, skip: 0 })); + const { data } = await tryExecuteAndNotify(this, IndexerService.getIndexer({ take: 9999, skip: 0 })); this._indexers = data?.items ?? []; this._loadingIndexers = false; } private async _getSearchers() { this._loadingSearchers = true; - const { data } = await tryExecuteAndNotify(this, SearcherResource.getSearcher({ take: 9999, skip: 0 })); + const { data } = await tryExecuteAndNotify(this, SearcherService.getSearcher({ take: 9999, skip: 0 })); this._searchers = data?.items ?? []; this._loadingSearchers = false; } diff --git a/src/Umbraco.Web.UI.Client/src/packages/search/examine-management-dashboard/views/section-view-examine-searchers.ts b/src/Umbraco.Web.UI.Client/src/packages/search/examine-management-dashboard/views/section-view-examine-searchers.ts index ac6fcb3c92..05d8649b00 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/search/examine-management-dashboard/views/section-view-examine-searchers.ts +++ b/src/Umbraco.Web.UI.Client/src/packages/search/examine-management-dashboard/views/section-view-examine-searchers.ts @@ -2,7 +2,7 @@ import { UmbTextStyles } from '@umbraco-cms/backoffice/style'; import { css, html, nothing, customElement, state, query, property } from '@umbraco-cms/backoffice/external/lit'; import { UMB_MODAL_MANAGER_CONTEXT, UMB_EXAMINE_FIELDS_SETTINGS_MODAL } from '@umbraco-cms/backoffice/modal'; import type { SearchResultResponseModel, FieldPresentationModel } from '@umbraco-cms/backoffice/external/backend-api'; -import { SearcherResource } from '@umbraco-cms/backoffice/external/backend-api'; +import { SearcherService } from '@umbraco-cms/backoffice/external/backend-api'; import { UmbLitElement } from '@umbraco-cms/backoffice/lit-element'; import { tryExecuteAndNotify } from '@umbraco-cms/backoffice/resources'; @@ -46,7 +46,7 @@ export class UmbDashboardExamineSearcherElement extends UmbLitElement { const { data } = await tryExecuteAndNotify( this, - SearcherResource.getSearcherBySearcherNameQuery({ + SearcherService.getSearcherBySearcherNameQuery({ searcherName: this.searcherName, term: this._searchInput.value, take: 100, @@ -73,10 +73,10 @@ export class UmbDashboardExamineSearcherElement extends UmbLitElement { this._exposedFields = this._exposedFields ? this._exposedFields.filter((field) => { return { name: field.name, exposed: field.exposed }; - }) + }) : newFieldNames?.map((name) => { return { name, exposed: false }; - }); + }); } }); } @@ -194,7 +194,7 @@ export class UmbDashboardExamineSearcherElement extends UmbLitElement { >x - ` + ` : html``; })}`; } diff --git a/src/Umbraco.Web.UI.Client/src/packages/search/manifests.ts b/src/Umbraco.Web.UI.Client/src/packages/search/manifests.ts index 6842024300..74f7473793 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/search/manifests.ts +++ b/src/Umbraco.Web.UI.Client/src/packages/search/manifests.ts @@ -27,7 +27,7 @@ export const manifests: Array = [ js: () => import('./examine-management-dashboard/dashboard-examine-management.element.js'), weight: 400, meta: { - label: 'Examine Management', + label: '#dashboardTabs_settingsExamine', pathname: 'examine-management', }, conditions: [ diff --git a/src/Umbraco.Web.UI.Client/src/packages/settings/dashboards/manifests.ts b/src/Umbraco.Web.UI.Client/src/packages/settings/dashboards/manifests.ts index a406ba57df..c1f82d6790 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/settings/dashboards/manifests.ts +++ b/src/Umbraco.Web.UI.Client/src/packages/settings/dashboards/manifests.ts @@ -11,7 +11,7 @@ const dashboards: Array = [ js: () => import('./published-status/dashboard-published-status.element.js'), weight: 200, meta: { - label: 'Published Status', + label: '#dashboardTabs_settingsPublishedStatus', pathname: 'published-status', }, conditions: [ @@ -29,7 +29,7 @@ const dashboards: Array = [ js: () => import('./performance-profiling/dashboard-performance-profiling.element.js'), weight: 101, meta: { - label: 'Profiling', + label: '#dashboardTabs_settingsProfiler', pathname: 'profiling', }, conditions: [ diff --git a/src/Umbraco.Web.UI.Client/src/packages/settings/dashboards/performance-profiling/dashboard-performance-profiling.element.ts b/src/Umbraco.Web.UI.Client/src/packages/settings/dashboards/performance-profiling/dashboard-performance-profiling.element.ts index 5cb5371c94..ad9fe8097d 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/settings/dashboards/performance-profiling/dashboard-performance-profiling.element.ts +++ b/src/Umbraco.Web.UI.Client/src/packages/settings/dashboards/performance-profiling/dashboard-performance-profiling.element.ts @@ -1,7 +1,7 @@ import { UmbTextStyles } from '@umbraco-cms/backoffice/style'; import { css, html, customElement, state, query, unsafeHTML } from '@umbraco-cms/backoffice/external/lit'; import { UmbLitElement } from '@umbraco-cms/backoffice/lit-element'; -import { ProfilingResource } from '@umbraco-cms/backoffice/external/backend-api'; +import { ProfilingService } from '@umbraco-cms/backoffice/external/backend-api'; import { tryExecuteAndNotify } from '@umbraco-cms/backoffice/resources'; @customElement('umb-dashboard-performance-profiling') @@ -26,7 +26,7 @@ export class UmbDashboardPerformanceProfilingElement extends UmbLitElement { } private async _getProfilingStatus() { - const { data } = await tryExecuteAndNotify(this, ProfilingResource.getProfilingStatus()); + const { data } = await tryExecuteAndNotify(this, ProfilingService.getProfilingStatus()); if (!data) return; this._profilingStatus = data.enabled ?? false; @@ -35,7 +35,7 @@ export class UmbDashboardPerformanceProfilingElement extends UmbLitElement { private async _changeProfilingStatus() { const { error } = await tryExecuteAndNotify( this, - ProfilingResource.putProfilingStatus({ requestBody: { enabled: !this._profilingStatus } }), + ProfilingService.putProfilingStatus({ requestBody: { enabled: !this._profilingStatus } }), ); if (error) { @@ -60,7 +60,7 @@ export class UmbDashboardPerformanceProfilingElement extends UmbLitElement {

    ${this.localize.term('profiling_reminder')}

    ${unsafeHTML(this.localize.term('profiling_reminderDescription'))} - ` + ` : html` ${unsafeHTML(this.localize.term('profiling_profilerEnabledDescription'))} `; } diff --git a/src/Umbraco.Web.UI.Client/src/packages/settings/dashboards/published-status/dashboard-published-status.element.ts b/src/Umbraco.Web.UI.Client/src/packages/settings/dashboards/published-status/dashboard-published-status.element.ts index 526de9e794..190b775b43 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/settings/dashboards/published-status/dashboard-published-status.element.ts +++ b/src/Umbraco.Web.UI.Client/src/packages/settings/dashboards/published-status/dashboard-published-status.element.ts @@ -1,7 +1,7 @@ import type { UUIButtonState } from '@umbraco-cms/backoffice/external/uui'; import { css, html, customElement, state } from '@umbraco-cms/backoffice/external/lit'; import { umbConfirmModal } from '@umbraco-cms/backoffice/modal'; -import { PublishedCacheResource } from '@umbraco-cms/backoffice/external/backend-api'; +import { PublishedCacheService } from '@umbraco-cms/backoffice/external/backend-api'; import { tryExecuteAndNotify } from '@umbraco-cms/backoffice/resources'; import { UmbLitElement } from '@umbraco-cms/backoffice/lit-element'; import { UmbTextStyles } from '@umbraco-cms/backoffice/style'; @@ -30,7 +30,7 @@ export class UmbDashboardPublishedStatusElement extends UmbLitElement { // Refresh private async _getPublishedStatus() { - const { data } = await tryExecuteAndNotify(this, PublishedCacheResource.getPublishedCacheStatus()); + const { data } = await tryExecuteAndNotify(this, PublishedCacheService.getPublishedCacheStatus()); if (data) { this._publishedStatusText = data; } @@ -46,7 +46,7 @@ export class UmbDashboardPublishedStatusElement extends UmbLitElement { private async _reloadMemoryCache() { this._buttonStateReload = 'waiting'; this._buttonState = 'waiting'; - const { error } = await tryExecuteAndNotify(this, PublishedCacheResource.postPublishedCacheReload()); + const { error } = await tryExecuteAndNotify(this, PublishedCacheService.postPublishedCacheReload()); if (error) { this._buttonStateReload = 'failed'; this._buttonState = 'failed'; @@ -70,7 +70,7 @@ export class UmbDashboardPublishedStatusElement extends UmbLitElement { // Rebuild private async _rebuildDatabaseCache() { this._buttonStateRebuild = 'waiting'; - const { error } = await tryExecuteAndNotify(this, PublishedCacheResource.postPublishedCacheRebuild()); + const { error } = await tryExecuteAndNotify(this, PublishedCacheService.postPublishedCacheRebuild()); if (error) { this._buttonStateRebuild = 'failed'; } else { @@ -92,7 +92,7 @@ export class UmbDashboardPublishedStatusElement extends UmbLitElement { //Collect private async _cacheCollect() { this._buttonStateCollect = 'waiting'; - const { error } = await tryExecuteAndNotify(this, PublishedCacheResource.postPublishedCacheCollect()); + const { error } = await tryExecuteAndNotify(this, PublishedCacheService.postPublishedCacheCollect()); if (error) { this._buttonStateCollect = 'failed'; } else { diff --git a/src/Umbraco.Web.UI.Client/src/packages/settings/dashboards/telemetry/dashboard-telemetry.element.ts b/src/Umbraco.Web.UI.Client/src/packages/settings/dashboards/telemetry/dashboard-telemetry.element.ts index 3738b33a9a..d4bad8ee8d 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/settings/dashboards/telemetry/dashboard-telemetry.element.ts +++ b/src/Umbraco.Web.UI.Client/src/packages/settings/dashboards/telemetry/dashboard-telemetry.element.ts @@ -1,7 +1,7 @@ import { css, html, customElement, state, unsafeHTML } from '@umbraco-cms/backoffice/external/lit'; import type { UUIButtonState } from '@umbraco-cms/backoffice/external/uui'; import type { TelemetryResponseModel } from '@umbraco-cms/backoffice/external/backend-api'; -import { TelemetryLevelModel, TelemetryResource, ApiError } from '@umbraco-cms/backoffice/external/backend-api'; +import { TelemetryLevelModel, TelemetryService, ApiError } from '@umbraco-cms/backoffice/external/backend-api'; import { UmbLitElement } from '@umbraco-cms/backoffice/lit-element'; import { tryExecuteAndNotify } from '@umbraco-cms/backoffice/resources'; import { UmbTextStyles } from '@umbraco-cms/backoffice/style'; @@ -26,10 +26,10 @@ export class UmbDashboardTelemetryElement extends UmbLitElement { } private async _setup() { - const telemetryLevels = await tryExecuteAndNotify(this, TelemetryResource.getTelemetry({ skip: 0, take: 3 })); + const telemetryLevels = await tryExecuteAndNotify(this, TelemetryService.getTelemetry({ skip: 0, take: 3 })); this._telemetryLevels = telemetryLevels.data?.items ?? []; - const telemetryLevel = await tryExecuteAndNotify(this, TelemetryResource.getTelemetryLevel()); + const telemetryLevel = await tryExecuteAndNotify(this, TelemetryService.getTelemetryLevel()); this._telemetryFormData = telemetryLevel.data?.telemetryLevel ?? TelemetryLevelModel.BASIC; } @@ -40,14 +40,14 @@ export class UmbDashboardTelemetryElement extends UmbLitElement { const { error } = await tryExecuteAndNotify( this, - TelemetryResource.postTelemetryLevel({ + TelemetryService.postTelemetryLevel({ requestBody: { telemetryLevel: this._telemetryFormData }, }), ); if (error) { this._buttonState = 'failed'; - this._errorMessage = error instanceof ApiError ? error.body.detail : error.message; + this._errorMessage = error instanceof ApiError ? (error.body as any).detail : error.message; return; } diff --git a/src/Umbraco.Web.UI.Client/src/packages/static-file/repository/item/static-file-item.server.data-source.ts b/src/Umbraco.Web.UI.Client/src/packages/static-file/repository/item/static-file-item.server.data-source.ts index 294314b69c..0bd42e077f 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/static-file/repository/item/static-file-item.server.data-source.ts +++ b/src/Umbraco.Web.UI.Client/src/packages/static-file/repository/item/static-file-item.server.data-source.ts @@ -1,7 +1,7 @@ import type { UmbStaticFileItemModel } from './types.js'; import { UmbItemServerDataSourceBase } from '@umbraco-cms/backoffice/repository'; import type { StaticFileItemResponseModel } from '@umbraco-cms/backoffice/external/backend-api'; -import { StaticFileResource } from '@umbraco-cms/backoffice/external/backend-api'; +import { StaticFileService } from '@umbraco-cms/backoffice/external/backend-api'; import type { UmbControllerHost } from '@umbraco-cms/backoffice/controller-api'; /** @@ -28,7 +28,7 @@ export class UmbStaticFileItemServerDataSource extends UmbItemServerDataSourceBa } /* eslint-disable local-rules/no-direct-api-import */ -const getItems = (uniques: Array) => StaticFileResource.getItemStaticFile({ path: uniques }); +const getItems = (uniques: Array) => StaticFileService.getItemStaticFile({ path: uniques }); const mapper = (item: StaticFileItemResponseModel): UmbStaticFileItemModel => { return { diff --git a/src/Umbraco.Web.UI.Client/src/packages/static-file/tree/static-file-tree.server.data-source.ts b/src/Umbraco.Web.UI.Client/src/packages/static-file/tree/static-file-tree.server.data-source.ts index 0d7345bdda..53dc833a15 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/static-file/tree/static-file-tree.server.data-source.ts +++ b/src/Umbraco.Web.UI.Client/src/packages/static-file/tree/static-file-tree.server.data-source.ts @@ -8,7 +8,7 @@ import type { } from '@umbraco-cms/backoffice/tree'; import { UmbTreeServerDataSourceBase } from '@umbraco-cms/backoffice/tree'; import { - StaticFileResource, + StaticFileService, type FileSystemTreeItemPresentationModel, } from '@umbraco-cms/backoffice/external/backend-api'; import type { UmbControllerHost } from '@umbraco-cms/backoffice/controller-api'; @@ -40,7 +40,7 @@ export class UmbStaticFileTreeServerDataSource extends UmbTreeServerDataSourceBa const getRootItems = (args: UmbTreeRootItemsRequestArgs) => // eslint-disable-next-line local-rules/no-direct-api-import - StaticFileResource.getTreeStaticFileRoot({ skip: args.skip, take: args.take }); + StaticFileService.getTreeStaticFileRoot({ skip: args.skip, take: args.take }); const getChildrenOf = (args: UmbTreeChildrenOfRequestArgs) => { const parentPath = new UmbServerFilePathUniqueSerializer().toServerPath(args.parentUnique); @@ -49,7 +49,7 @@ const getChildrenOf = (args: UmbTreeChildrenOfRequestArgs) => { return getRootItems(args); } else { // eslint-disable-next-line local-rules/no-direct-api-import - return StaticFileResource.getTreeStaticFileChildren({ + return StaticFileService.getTreeStaticFileChildren({ parentPath, skip: args.skip, take: args.take, @@ -59,7 +59,7 @@ const getChildrenOf = (args: UmbTreeChildrenOfRequestArgs) => { const getAncestorsOf = (args: UmbTreeAncestorsOfRequestArgs) => // eslint-disable-next-line local-rules/no-direct-api-import - StaticFileResource.getTreeStaticFileAncestors({ + StaticFileService.getTreeStaticFileAncestors({ descendantPath: args.descendantUnique, }); diff --git a/src/Umbraco.Web.UI.Client/src/packages/tags/property-editors/tags/property-editor-ui-tags.element.ts b/src/Umbraco.Web.UI.Client/src/packages/tags/property-editors/tags/property-editor-ui-tags.element.ts index 40b49ce6d6..7c25a6004f 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/tags/property-editors/tags/property-editor-ui-tags.element.ts +++ b/src/Umbraco.Web.UI.Client/src/packages/tags/property-editors/tags/property-editor-ui-tags.element.ts @@ -56,7 +56,7 @@ export class UmbPropertyEditorUITagsElement extends UmbLitElement implements Umb render() { return html``; diff --git a/src/Umbraco.Web.UI.Client/src/packages/tags/repository/sources/tag.server.data.ts b/src/Umbraco.Web.UI.Client/src/packages/tags/repository/sources/tag.server.data.ts index 5f88952d4b..af9a893f1d 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/tags/repository/sources/tag.server.data.ts +++ b/src/Umbraco.Web.UI.Client/src/packages/tags/repository/sources/tag.server.data.ts @@ -1,4 +1,4 @@ -import { TagResource } from '@umbraco-cms/backoffice/external/backend-api'; +import { TagService } from '@umbraco-cms/backoffice/external/backend-api'; import type { UmbControllerHost } from '@umbraco-cms/backoffice/controller-api'; import { tryExecuteAndNotify } from '@umbraco-cms/backoffice/resources'; @@ -38,6 +38,6 @@ export class UmbTagServerDataSource { tagGroup?: string; culture?: string; }) { - return tryExecuteAndNotify(this.#host, TagResource.getTag({ query, skip, take, tagGroup, culture })); + return tryExecuteAndNotify(this.#host, TagService.getTag({ query, skip, take, tagGroup, culture })); } } diff --git a/src/Umbraco.Web.UI.Client/src/packages/templating/partial-views/entity-actions/create/manifests.ts b/src/Umbraco.Web.UI.Client/src/packages/templating/partial-views/entity-actions/create/manifests.ts index da6fef2722..91977b42b3 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/templating/partial-views/entity-actions/create/manifests.ts +++ b/src/Umbraco.Web.UI.Client/src/packages/templating/partial-views/entity-actions/create/manifests.ts @@ -13,7 +13,7 @@ export const manifests: Array = [ forEntityTypes: [UMB_PARTIAL_VIEW_ROOT_ENTITY_TYPE, UMB_PARTIAL_VIEW_FOLDER_ENTITY_TYPE], meta: { icon: 'icon-add', - label: 'Create...', + label: '#actions_create', }, }, { diff --git a/src/Umbraco.Web.UI.Client/src/packages/templating/partial-views/entity-actions/create/snippet-modal/create-from-snippet-modal.ts b/src/Umbraco.Web.UI.Client/src/packages/templating/partial-views/entity-actions/create/snippet-modal/create-from-snippet-modal.ts index 6e38934bd0..8aed2e2718 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/templating/partial-views/entity-actions/create/snippet-modal/create-from-snippet-modal.ts +++ b/src/Umbraco.Web.UI.Client/src/packages/templating/partial-views/entity-actions/create/snippet-modal/create-from-snippet-modal.ts @@ -3,7 +3,7 @@ import { html, customElement, state } from '@umbraco-cms/backoffice/external/lit import { UmbModalBaseElement } from '@umbraco-cms/backoffice/modal'; import { tryExecuteAndNotify } from '@umbraco-cms/backoffice/resources'; import type { PartialViewSnippetItemResponseModel } from '@umbraco-cms/backoffice/external/backend-api'; -import { PartialViewResource } from '@umbraco-cms/backoffice/external/backend-api'; +import { PartialViewService } from '@umbraco-cms/backoffice/external/backend-api'; interface UmbSnippetLinkModel { name: string; @@ -25,7 +25,7 @@ export class UmbPartialViewCreateFromSnippetModalElement extends UmbModalBaseEle } protected async firstUpdated() { - const { data } = await tryExecuteAndNotify(this, PartialViewResource.getPartialViewSnippet({ take: 10000 })); + const { data } = await tryExecuteAndNotify(this, PartialViewService.getPartialViewSnippet({ take: 10000 })); if (data) { this._snippets = data.items.map((snippet) => { diff --git a/src/Umbraco.Web.UI.Client/src/packages/templating/partial-views/entity-actions/rename/rename-partial-view.server.data-source.ts b/src/Umbraco.Web.UI.Client/src/packages/templating/partial-views/entity-actions/rename/rename-partial-view.server.data-source.ts index df91eb5c04..5f178979f4 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/templating/partial-views/entity-actions/rename/rename-partial-view.server.data-source.ts +++ b/src/Umbraco.Web.UI.Client/src/packages/templating/partial-views/entity-actions/rename/rename-partial-view.server.data-source.ts @@ -4,7 +4,7 @@ import { appendFileExtensionIfNeeded, } from '@umbraco-cms/backoffice/server-file-system'; import type { RenameStylesheetRequestModel } from '@umbraco-cms/backoffice/external/backend-api'; -import { PartialViewResource } from '@umbraco-cms/backoffice/external/backend-api'; +import { PartialViewService } from '@umbraco-cms/backoffice/external/backend-api'; import type { UmbControllerHost } from '@umbraco-cms/backoffice/controller-api'; import { tryExecuteAndNotify } from '@umbraco-cms/backoffice/resources'; @@ -38,7 +38,7 @@ export class UmbRenamePartialViewServerDataSource { const { data, error } = await tryExecuteAndNotify( this.#host, - PartialViewResource.putPartialViewByPathRename({ + PartialViewService.putPartialViewByPathRename({ path: encodeURIComponent(path), requestBody, }), diff --git a/src/Umbraco.Web.UI.Client/src/packages/templating/partial-views/repository/item/partial-view-item.server.data-source.ts b/src/Umbraco.Web.UI.Client/src/packages/templating/partial-views/repository/item/partial-view-item.server.data-source.ts index 0dcd3f2a06..96b2840354 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/templating/partial-views/repository/item/partial-view-item.server.data-source.ts +++ b/src/Umbraco.Web.UI.Client/src/packages/templating/partial-views/repository/item/partial-view-item.server.data-source.ts @@ -4,7 +4,7 @@ import { UmbServerFilePathUniqueSerializer } from '@umbraco-cms/backoffice/serve import type { UmbItemDataSource } from '@umbraco-cms/backoffice/repository'; import type { UmbControllerHost } from '@umbraco-cms/backoffice/controller-api'; import { tryExecuteAndNotify } from '@umbraco-cms/backoffice/resources'; -import { PartialViewResource } from '@umbraco-cms/backoffice/external/backend-api'; +import { PartialViewService } from '@umbraco-cms/backoffice/external/backend-api'; /** * A data source for script items that fetches data from the server @@ -43,7 +43,7 @@ export class UmbPartialViewItemServerDataSource implements UmbItemDataSource // eslint-disable-next-line local-rules/no-direct-api-import - PartialViewResource.getTreePartialViewRoot({ skip: args.skip, take: args.take }); + PartialViewService.getTreePartialViewRoot({ skip: args.skip, take: args.take }); const getChildrenOf = (args: UmbTreeChildrenOfRequestArgs) => { const parentPath = new UmbServerFilePathUniqueSerializer().toServerPath(args.parentUnique); @@ -47,7 +47,7 @@ const getChildrenOf = (args: UmbTreeChildrenOfRequestArgs) => { return getRootItems(args); } else { // eslint-disable-next-line local-rules/no-direct-api-import - return PartialViewResource.getTreePartialViewChildren({ + return PartialViewService.getTreePartialViewChildren({ parentPath, skip: args.skip, take: args.take, @@ -60,7 +60,7 @@ const getAncestorsOf = (args: UmbTreeAncestorsOfRequestArgs) => { if (!descendantPath) throw new Error('Descendant path is not available'); // eslint-disable-next-line local-rules/no-direct-api-import - return PartialViewResource.getTreePartialViewAncestors({ + return PartialViewService.getTreePartialViewAncestors({ descendantPath, }); }; diff --git a/src/Umbraco.Web.UI.Client/src/packages/templating/partial-views/workspace/manifests.ts b/src/Umbraco.Web.UI.Client/src/packages/templating/partial-views/workspace/manifests.ts index 734cd8e35d..e390ab43c0 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/templating/partial-views/workspace/manifests.ts +++ b/src/Umbraco.Web.UI.Client/src/packages/templating/partial-views/workspace/manifests.ts @@ -22,7 +22,7 @@ const workspaceActions: Array = [ name: 'Save Partial View', api: UmbSubmitWorkspaceAction, meta: { - label: 'Save', + label: '#buttons_save', look: 'primary', color: 'positive', }, diff --git a/src/Umbraco.Web.UI.Client/src/packages/templating/partial-views/workspace/partial-view-workspace.context.ts b/src/Umbraco.Web.UI.Client/src/packages/templating/partial-views/workspace/partial-view-workspace.context.ts index 80639f4d70..1b6f6935cb 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/templating/partial-views/workspace/partial-view-workspace.context.ts +++ b/src/Umbraco.Web.UI.Client/src/packages/templating/partial-views/workspace/partial-view-workspace.context.ts @@ -12,7 +12,7 @@ import { } from '@umbraco-cms/backoffice/workspace'; import { loadCodeEditor } from '@umbraco-cms/backoffice/code-editor'; import { tryExecuteAndNotify } from '@umbraco-cms/backoffice/resources'; -import { PartialViewResource } from '@umbraco-cms/backoffice/external/backend-api'; +import { PartialViewService } from '@umbraco-cms/backoffice/external/backend-api'; import { UMB_ACTION_EVENT_CONTEXT } from '@umbraco-cms/backoffice/action'; import { UmbRequestReloadTreeItemChildrenEvent } from '@umbraco-cms/backoffice/tree'; import { UmbRequestReloadStructureForEntityEvent } from '@umbraco-cms/backoffice/entity-action'; @@ -201,7 +201,7 @@ export class UmbPartialViewWorkspaceContext #getSnippet(snippetId: string) { return tryExecuteAndNotify( this, - PartialViewResource.getPartialViewSnippetById({ + PartialViewService.getPartialViewSnippetById({ id: snippetId, }), ); diff --git a/src/Umbraco.Web.UI.Client/src/packages/templating/scripts/entity-actions/create/manifests.ts b/src/Umbraco.Web.UI.Client/src/packages/templating/scripts/entity-actions/create/manifests.ts index 1c8c5aa5da..4b9b260cf4 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/templating/scripts/entity-actions/create/manifests.ts +++ b/src/Umbraco.Web.UI.Client/src/packages/templating/scripts/entity-actions/create/manifests.ts @@ -13,7 +13,7 @@ export const manifests: Array = [ forEntityTypes: [UMB_SCRIPT_ROOT_ENTITY_TYPE, UMB_SCRIPT_FOLDER_ENTITY_TYPE], meta: { icon: 'icon-add', - label: 'Create...', + label: '#actions_create', }, }, { diff --git a/src/Umbraco.Web.UI.Client/src/packages/templating/scripts/entity-actions/rename/rename-script.server.data-source.ts b/src/Umbraco.Web.UI.Client/src/packages/templating/scripts/entity-actions/rename/rename-script.server.data-source.ts index c6b077f36b..9361984091 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/templating/scripts/entity-actions/rename/rename-script.server.data-source.ts +++ b/src/Umbraco.Web.UI.Client/src/packages/templating/scripts/entity-actions/rename/rename-script.server.data-source.ts @@ -4,7 +4,7 @@ import { appendFileExtensionIfNeeded, } from '@umbraco-cms/backoffice/server-file-system'; import type { RenameStylesheetRequestModel } from '@umbraco-cms/backoffice/external/backend-api'; -import { ScriptResource } from '@umbraco-cms/backoffice/external/backend-api'; +import { ScriptService } from '@umbraco-cms/backoffice/external/backend-api'; import type { UmbControllerHost } from '@umbraco-cms/backoffice/controller-api'; import { tryExecuteAndNotify } from '@umbraco-cms/backoffice/resources'; @@ -38,7 +38,7 @@ export class UmbRenameScriptServerDataSource { const { data, error } = await tryExecuteAndNotify( this.#host, - ScriptResource.putScriptByPathRename({ + ScriptService.putScriptByPathRename({ path: encodeURIComponent(path), requestBody, }), diff --git a/src/Umbraco.Web.UI.Client/src/packages/templating/scripts/repository/item/script-item.server.data-source.ts b/src/Umbraco.Web.UI.Client/src/packages/templating/scripts/repository/item/script-item.server.data-source.ts index be426ae292..11b9ccb95d 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/templating/scripts/repository/item/script-item.server.data-source.ts +++ b/src/Umbraco.Web.UI.Client/src/packages/templating/scripts/repository/item/script-item.server.data-source.ts @@ -4,7 +4,7 @@ import { UmbServerFilePathUniqueSerializer } from '@umbraco-cms/backoffice/serve import type { UmbItemDataSource } from '@umbraco-cms/backoffice/repository'; import type { UmbControllerHost } from '@umbraco-cms/backoffice/controller-api'; import { tryExecuteAndNotify } from '@umbraco-cms/backoffice/resources'; -import { ScriptResource } from '@umbraco-cms/backoffice/external/backend-api'; +import { ScriptService } from '@umbraco-cms/backoffice/external/backend-api'; /** * A data source for script items that fetches data from the server @@ -43,7 +43,7 @@ export class UmbScriptItemServerDataSource implements UmbItemDataSource // eslint-disable-next-line local-rules/no-direct-api-import - ScriptResource.getTreeScriptRoot({ skip: args.skip, take: args.take }); + ScriptService.getTreeScriptRoot({ skip: args.skip, take: args.take }); const getChildrenOf = (args: UmbTreeChildrenOfRequestArgs) => { const parentPath = new UmbServerFilePathUniqueSerializer().toServerPath(args.parentUnique); @@ -47,7 +47,7 @@ const getChildrenOf = (args: UmbTreeChildrenOfRequestArgs) => { return getRootItems(args); } else { // eslint-disable-next-line local-rules/no-direct-api-import - return ScriptResource.getTreeScriptChildren({ + return ScriptService.getTreeScriptChildren({ parentPath, skip: args.skip, take: args.take, @@ -60,7 +60,7 @@ const getAncestorsOf = (args: UmbTreeAncestorsOfRequestArgs) => { if (!descendantPath) throw new Error('Descendant path is not available'); // eslint-disable-next-line local-rules/no-direct-api-import - return ScriptResource.getTreeScriptAncestors({ + return ScriptService.getTreeScriptAncestors({ descendantPath, }); }; diff --git a/src/Umbraco.Web.UI.Client/src/packages/templating/scripts/workspace/manifests.ts b/src/Umbraco.Web.UI.Client/src/packages/templating/scripts/workspace/manifests.ts index a5ac33c6db..a440205f97 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/templating/scripts/workspace/manifests.ts +++ b/src/Umbraco.Web.UI.Client/src/packages/templating/scripts/workspace/manifests.ts @@ -24,7 +24,7 @@ const workspaceActions: Array = [ name: 'Save Script Workspace Action', api: UmbSubmitWorkspaceAction, meta: { - label: 'Save', + label: '#buttons_save', look: 'primary', color: 'positive', }, diff --git a/src/Umbraco.Web.UI.Client/src/packages/templating/stylesheets/entity-actions/create/manifests.ts b/src/Umbraco.Web.UI.Client/src/packages/templating/stylesheets/entity-actions/create/manifests.ts index df096e95f5..b0b1c1903f 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/templating/stylesheets/entity-actions/create/manifests.ts +++ b/src/Umbraco.Web.UI.Client/src/packages/templating/stylesheets/entity-actions/create/manifests.ts @@ -13,7 +13,7 @@ export const manifests: Array = [ forEntityTypes: [UMB_STYLESHEET_ROOT_ENTITY_TYPE, UMB_STYLESHEET_FOLDER_ENTITY_TYPE], meta: { icon: 'icon-add', - label: 'Create...', + label: '#actions_create', }, }, { diff --git a/src/Umbraco.Web.UI.Client/src/packages/templating/stylesheets/entity-actions/rename/rename-stylesheet.server.data-source.ts b/src/Umbraco.Web.UI.Client/src/packages/templating/stylesheets/entity-actions/rename/rename-stylesheet.server.data-source.ts index fd1425c44f..d3a8cd1698 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/templating/stylesheets/entity-actions/rename/rename-stylesheet.server.data-source.ts +++ b/src/Umbraco.Web.UI.Client/src/packages/templating/stylesheets/entity-actions/rename/rename-stylesheet.server.data-source.ts @@ -4,7 +4,7 @@ import { appendFileExtensionIfNeeded, } from '@umbraco-cms/backoffice/server-file-system'; import type { RenameStylesheetRequestModel } from '@umbraco-cms/backoffice/external/backend-api'; -import { StylesheetResource } from '@umbraco-cms/backoffice/external/backend-api'; +import { StylesheetService } from '@umbraco-cms/backoffice/external/backend-api'; import type { UmbControllerHost } from '@umbraco-cms/backoffice/controller-api'; import { tryExecuteAndNotify } from '@umbraco-cms/backoffice/resources'; @@ -38,7 +38,7 @@ export class UmbRenameStylesheetServerDataSource { const { data, error } = await tryExecuteAndNotify( this.#host, - StylesheetResource.putStylesheetByPathRename({ + StylesheetService.putStylesheetByPathRename({ path: encodeURIComponent(path), requestBody, }), diff --git a/src/Umbraco.Web.UI.Client/src/packages/templating/stylesheets/repository/item/stylesheet-item.server.data-source.ts b/src/Umbraco.Web.UI.Client/src/packages/templating/stylesheets/repository/item/stylesheet-item.server.data-source.ts index 9fe4f6e62a..ebdb50678e 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/templating/stylesheets/repository/item/stylesheet-item.server.data-source.ts +++ b/src/Umbraco.Web.UI.Client/src/packages/templating/stylesheets/repository/item/stylesheet-item.server.data-source.ts @@ -4,7 +4,7 @@ import { UmbServerFilePathUniqueSerializer } from '@umbraco-cms/backoffice/serve import type { UmbItemDataSource } from '@umbraco-cms/backoffice/repository'; import type { UmbControllerHost } from '@umbraco-cms/backoffice/controller-api'; import { tryExecuteAndNotify } from '@umbraco-cms/backoffice/resources'; -import { StylesheetResource } from '@umbraco-cms/backoffice/external/backend-api'; +import { StylesheetService } from '@umbraco-cms/backoffice/external/backend-api'; /** * A data source for stylesheet items that fetches data from the server @@ -43,7 +43,7 @@ export class UmbStylesheetItemServerDataSource implements UmbItemDataSource // eslint-disable-next-line local-rules/no-direct-api-import - StylesheetResource.getTreeStylesheetRoot({ skip: args.skip, take: args.take }); + StylesheetService.getTreeStylesheetRoot({ skip: args.skip, take: args.take }); const getChildrenOf = (args: UmbTreeChildrenOfRequestArgs) => { const parentPath = new UmbServerFilePathUniqueSerializer().toServerPath(args.parentUnique); @@ -47,7 +47,7 @@ const getChildrenOf = (args: UmbTreeChildrenOfRequestArgs) => { return getRootItems(args); } else { // eslint-disable-next-line local-rules/no-direct-api-import - return StylesheetResource.getTreeStylesheetChildren({ + return StylesheetService.getTreeStylesheetChildren({ parentPath, skip: args.skip, take: args.take, @@ -60,7 +60,7 @@ const getAncestorsOf = (args: UmbTreeAncestorsOfRequestArgs) => { if (!descendantPath) throw new Error('Descendant path is not available'); // eslint-disable-next-line local-rules/no-direct-api-import - return StylesheetResource.getTreeStylesheetAncestors({ + return StylesheetService.getTreeStylesheetAncestors({ descendantPath, }); }; diff --git a/src/Umbraco.Web.UI.Client/src/packages/templating/stylesheets/workspace/manifests.ts b/src/Umbraco.Web.UI.Client/src/packages/templating/stylesheets/workspace/manifests.ts index ffdb1016de..576b32f168 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/templating/stylesheets/workspace/manifests.ts +++ b/src/Umbraco.Web.UI.Client/src/packages/templating/stylesheets/workspace/manifests.ts @@ -26,7 +26,7 @@ const workspaceViews: Array = [ js: () => import('./views/code-editor/stylesheet-code-editor-workspace-view.element.js'), weight: 700, meta: { - label: 'Code', + label: '#stylesheet_tabCode', pathname: 'code', icon: 'icon-brackets', }, @@ -44,7 +44,7 @@ const workspaceViews: Array = [ js: () => import('./views/rich-text-rule/stylesheet-rich-text-rule-workspace-view.element.js'), weight: 800, meta: { - label: 'Rich Text Editor', + label: '#stylesheet_tabRule', pathname: 'rich-text-editor', icon: 'icon-font', }, @@ -64,7 +64,7 @@ const workspaceActions: Array = [ name: 'Save Stylesheet Workspace Action', api: UmbSubmitWorkspaceAction, meta: { - label: 'Save', + label: '#buttons_save', look: 'primary', color: 'positive', }, diff --git a/src/Umbraco.Web.UI.Client/src/packages/templating/templates/entity-actions/manifests.ts b/src/Umbraco.Web.UI.Client/src/packages/templating/templates/entity-actions/manifests.ts index 701e5606e7..f7ec206706 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/templating/templates/entity-actions/manifests.ts +++ b/src/Umbraco.Web.UI.Client/src/packages/templating/templates/entity-actions/manifests.ts @@ -13,7 +13,7 @@ const entityActions: Array = [ forEntityTypes: [UMB_TEMPLATE_ENTITY_TYPE, UMB_TEMPLATE_ROOT_ENTITY_TYPE], meta: { icon: 'icon-add', - label: 'Create', + label: '#actions_create', }, }, { diff --git a/src/Umbraco.Web.UI.Client/src/packages/templating/templates/repository/detail/template-detail.server.data-source.ts b/src/Umbraco.Web.UI.Client/src/packages/templating/templates/repository/detail/template-detail.server.data-source.ts index 3bf44f6deb..e119e9f8ee 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/templating/templates/repository/detail/template-detail.server.data-source.ts +++ b/src/Umbraco.Web.UI.Client/src/packages/templating/templates/repository/detail/template-detail.server.data-source.ts @@ -6,7 +6,7 @@ import type { CreateTemplateRequestModel, UpdateTemplateRequestModel, } from '@umbraco-cms/backoffice/external/backend-api'; -import { TemplateResource } from '@umbraco-cms/backoffice/external/backend-api'; +import { TemplateService } from '@umbraco-cms/backoffice/external/backend-api'; import type { UmbControllerHost } from '@umbraco-cms/backoffice/controller-api'; import { tryExecuteAndNotify } from '@umbraco-cms/backoffice/resources'; @@ -60,7 +60,7 @@ export class UmbTemplateServerDataSource implements UmbDetailDataSource) => TemplateResource.getItemTemplate({ id: uniques }); +const getItems = (uniques: Array) => TemplateService.getItemTemplate({ id: uniques }); const mapper = (item: TemplateItemResponseModel): UmbTemplateItemModel => { return { diff --git a/src/Umbraco.Web.UI.Client/src/packages/templating/templates/repository/query/template-query.server.data-source.ts b/src/Umbraco.Web.UI.Client/src/packages/templating/templates/repository/query/template-query.server.data-source.ts index 84dbbe7b75..ad525b57b0 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/templating/templates/repository/query/template-query.server.data-source.ts +++ b/src/Umbraco.Web.UI.Client/src/packages/templating/templates/repository/query/template-query.server.data-source.ts @@ -1,6 +1,6 @@ import type { UmbExecuteTemplateQueryRequestModel } from './types.js'; import type { TemplateQueryExecuteModel } from '@umbraco-cms/backoffice/external/backend-api'; -import { TemplateResource } from '@umbraco-cms/backoffice/external/backend-api'; +import { TemplateService } from '@umbraco-cms/backoffice/external/backend-api'; import type { UmbControllerHost } from '@umbraco-cms/backoffice/controller-api'; import { tryExecuteAndNotify } from '@umbraco-cms/backoffice/resources'; @@ -30,7 +30,7 @@ export class UmbTemplateQueryServerDataSource { * @memberof UmbTemplateQueryServerDataSource */ async getTemplateQuerySettings() { - return tryExecuteAndNotify(this.#host, TemplateResource.getTemplateQuerySettings()); + return tryExecuteAndNotify(this.#host, TemplateService.getTemplateQuerySettings()); } /** * Executes a query builder query on the server @@ -47,6 +47,6 @@ export class UmbTemplateQueryServerDataSource { take: args.take, }; - return tryExecuteAndNotify(this.#host, TemplateResource.postTemplateQueryExecute({ requestBody })); + return tryExecuteAndNotify(this.#host, TemplateService.postTemplateQueryExecute({ requestBody })); } } diff --git a/src/Umbraco.Web.UI.Client/src/packages/templating/templates/tree/template-tree.repository.ts b/src/Umbraco.Web.UI.Client/src/packages/templating/templates/tree/template-tree.repository.ts index 096aeee850..d4c5dbbcb4 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/templating/templates/tree/template-tree.repository.ts +++ b/src/Umbraco.Web.UI.Client/src/packages/templating/templates/tree/template-tree.repository.ts @@ -18,7 +18,7 @@ export class UmbTemplateTreeRepository const data: UmbTemplateTreeRootModel = { unique: null, entityType: UMB_TEMPLATE_ROOT_ENTITY_TYPE, - name: 'Templates', + name: '#treeHeaders_templates', hasChildren: true, isFolder: true, }; diff --git a/src/Umbraco.Web.UI.Client/src/packages/templating/templates/tree/template-tree.server.data-source.ts b/src/Umbraco.Web.UI.Client/src/packages/templating/templates/tree/template-tree.server.data-source.ts index 8c8f0a8d76..9dc8e27799 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/templating/templates/tree/template-tree.server.data-source.ts +++ b/src/Umbraco.Web.UI.Client/src/packages/templating/templates/tree/template-tree.server.data-source.ts @@ -7,7 +7,7 @@ import type { } from '@umbraco-cms/backoffice/tree'; import { UmbTreeServerDataSourceBase } from '@umbraco-cms/backoffice/tree'; import type { NamedEntityTreeItemResponseModel } from '@umbraco-cms/backoffice/external/backend-api'; -import { TemplateResource } from '@umbraco-cms/backoffice/external/backend-api'; +import { TemplateService } from '@umbraco-cms/backoffice/external/backend-api'; import type { UmbControllerHost } from '@umbraco-cms/backoffice/controller-api'; /** @@ -37,14 +37,14 @@ export class UmbTemplateTreeServerDataSource extends UmbTreeServerDataSourceBase const getRootItems = (args: UmbTreeRootItemsRequestArgs) => // eslint-disable-next-line local-rules/no-direct-api-import - TemplateResource.getTreeTemplateRoot({ skip: args.skip, take: args.take }); + TemplateService.getTreeTemplateRoot({ skip: args.skip, take: args.take }); const getChildrenOf = (args: UmbTreeChildrenOfRequestArgs) => { if (args.parentUnique === null) { return getRootItems(args); } else { // eslint-disable-next-line local-rules/no-direct-api-import - return TemplateResource.getTreeTemplateChildren({ + return TemplateService.getTreeTemplateChildren({ parentId: args.parentUnique, skip: args.skip, take: args.take, @@ -54,7 +54,7 @@ const getChildrenOf = (args: UmbTreeChildrenOfRequestArgs) => { const getAncestorsOf = (args: UmbTreeAncestorsOfRequestArgs) => // eslint-disable-next-line local-rules/no-direct-api-import - TemplateResource.getTreeTemplateAncestors({ + TemplateService.getTreeTemplateAncestors({ descendantId: args.descendantUnique, }); diff --git a/src/Umbraco.Web.UI.Client/src/packages/templating/templates/workspace/manifests.ts b/src/Umbraco.Web.UI.Client/src/packages/templating/templates/workspace/manifests.ts index 13a5f9b71b..9648fdcc09 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/templating/templates/workspace/manifests.ts +++ b/src/Umbraco.Web.UI.Client/src/packages/templating/templates/workspace/manifests.ts @@ -31,7 +31,7 @@ const workspaceActions: Array = [ meta: { look: 'primary', color: 'positive', - label: 'Save', + label: '#buttons_save', }, conditions: [ { diff --git a/src/Umbraco.Web.UI.Client/src/packages/tiny-mce/components/input-tiny-mce/input-tiny-mce.element.ts b/src/Umbraco.Web.UI.Client/src/packages/tiny-mce/components/input-tiny-mce/input-tiny-mce.element.ts index 7ccc036d14..4c85e03a05 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/tiny-mce/components/input-tiny-mce/input-tiny-mce.element.ts +++ b/src/Umbraco.Web.UI.Client/src/packages/tiny-mce/components/input-tiny-mce/input-tiny-mce.element.ts @@ -1,3 +1,4 @@ +import { loadManifestApi } from '../../../../libs/extension-api/functions/load-manifest-api.function.js'; import { pastePreProcessHandler } from './input-tiny-mce.handlers.js'; import { defaultFallbackConfig } from './input-tiny-mce.defaults.js'; import { availableLanguages } from './input-tiny-mce.languages.js'; @@ -6,7 +7,6 @@ import type { TinyMcePluginArguments, UmbTinyMcePluginBase } from './tiny-mce-pl import { getProcessedImageUrl } from '@umbraco-cms/backoffice/utils'; import { FormControlMixin } from '@umbraco-cms/backoffice/external/uui'; import type { EditorEvent, Editor, RawEditorOptions } from '@umbraco-cms/backoffice/external/tinymce'; -import { loadManifestApi } from '@umbraco-cms/backoffice/extension-api'; import { type ManifestTinyMcePlugin, umbExtensionsRegistry } from '@umbraco-cms/backoffice/extension-registry'; import { css, customElement, html, property, query, state } from '@umbraco-cms/backoffice/external/lit'; import { firstValueFrom } from '@umbraco-cms/backoffice/external/rxjs'; diff --git a/src/Umbraco.Web.UI.Client/src/packages/umbraco-news/manifests.ts b/src/Umbraco.Web.UI.Client/src/packages/umbraco-news/manifests.ts index 62024e27f5..9ab6011d4b 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/umbraco-news/manifests.ts +++ b/src/Umbraco.Web.UI.Client/src/packages/umbraco-news/manifests.ts @@ -4,10 +4,10 @@ export const dashboard: ManifestDashboard = { type: 'dashboard', alias: 'Umb.Dashboard.UmbracoNews', name: 'Umbraco News Dashboard', - js: () => import('./umbraco-news-dashboard.element.js'), + element: () => import('./umbraco-news-dashboard.element.js'), weight: 20, meta: { - label: 'Welcome', + label: '#dashboardTabs_contentIntro', }, conditions: [ { diff --git a/src/Umbraco.Web.UI.Client/src/packages/user/current-user/action/current-user-app-button.element.ts b/src/Umbraco.Web.UI.Client/src/packages/user/current-user/action/current-user-app-button.element.ts new file mode 100644 index 0000000000..fd6887215a --- /dev/null +++ b/src/Umbraco.Web.UI.Client/src/packages/user/current-user/action/current-user-app-button.element.ts @@ -0,0 +1,66 @@ +import { UmbTextStyles } from '@umbraco-cms/backoffice/style'; +import { html, customElement, ifDefined, state, property } from '@umbraco-cms/backoffice/external/lit'; +import { UmbLitElement } from '@umbraco-cms/backoffice/lit-element'; +import type { + ManifestCurrentUserActionDefaultKind, + MetaCurrentUserActionDefaultKind, + UmbCurrentUserAction, +} from '@umbraco-cms/backoffice/extension-registry'; +import { UmbActionExecutedEvent } from '@umbraco-cms/backoffice/event'; + +@customElement('umb-current-user-app-button') +export class UmbCurrentUserAppButtonElement< + MetaType extends MetaCurrentUserActionDefaultKind = MetaCurrentUserActionDefaultKind, + ApiType extends UmbCurrentUserAction = UmbCurrentUserAction, +> extends UmbLitElement { + #api?: ApiType; + + @state() + _href?: string; + + @property({ attribute: false }) + public manifest?: ManifestCurrentUserActionDefaultKind; + + public set api(api: ApiType | undefined) { + this.#api = api; + + this.#api?.getHref?.().then((href) => { + this._href = href; + }); + } + + async #onClick(event: Event) { + if (!this._href) { + event.stopPropagation(); + await this.#api?.execute(); + } + this.dispatchEvent(new UmbActionExecutedEvent()); + } + + get label(): string | undefined { + return this.manifest?.meta.label ? this.localize.string(this.manifest.meta.label) : undefined; + } + + render() { + return html` + + ${this.manifest?.meta.icon ? html`` : ''} ${this.label} + + `; + } + + static styles = [UmbTextStyles]; +} + +export default UmbCurrentUserAppButtonElement; + +declare global { + interface HTMLElementTagNameMap { + 'umb-current-user-app-button': UmbCurrentUserAppButtonElement; + } +} diff --git a/src/Umbraco.Web.UI.Client/src/packages/user/current-user/action/default.kind.ts b/src/Umbraco.Web.UI.Client/src/packages/user/current-user/action/default.kind.ts new file mode 100644 index 0000000000..900bd8ad36 --- /dev/null +++ b/src/Umbraco.Web.UI.Client/src/packages/user/current-user/action/default.kind.ts @@ -0,0 +1,13 @@ +import type { UmbBackofficeManifestKind } from '@umbraco-cms/backoffice/extension-registry'; + +export const manifest: UmbBackofficeManifestKind = { + type: 'kind', + alias: 'Umb.Kind.CurrentUserAction.Default', + matchKind: 'default', + matchType: 'currentUserAction', + manifest: { + type: 'currentUserAction', + kind: 'default', + elementName: 'umb-current-user-app-button', + }, +}; diff --git a/src/Umbraco.Web.UI.Client/src/packages/user/current-user/action/index.ts b/src/Umbraco.Web.UI.Client/src/packages/user/current-user/action/index.ts new file mode 100644 index 0000000000..76e9e5eab0 --- /dev/null +++ b/src/Umbraco.Web.UI.Client/src/packages/user/current-user/action/index.ts @@ -0,0 +1 @@ +export * from './current-user-app-button.element.js'; diff --git a/src/Umbraco.Web.UI.Client/src/packages/user/current-user/components/mfa-provider-default.element.ts b/src/Umbraco.Web.UI.Client/src/packages/user/current-user/components/mfa-provider-default.element.ts index 9c735beda3..9f975cec2c 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/user/current-user/components/mfa-provider-default.element.ts +++ b/src/Umbraco.Web.UI.Client/src/packages/user/current-user/components/mfa-provider-default.element.ts @@ -1,5 +1,5 @@ import type { UmbMfaProviderConfigurationCallback, UmbMfaProviderConfigurationElementProps } from '../types.js'; -import { UserResource } from '@umbraco-cms/backoffice/external/backend-api'; +import { UserService } from '@umbraco-cms/backoffice/external/backend-api'; import { css, customElement, html, property, state, query } from '@umbraco-cms/backoffice/external/lit'; import { UmbLitElement } from '@umbraco-cms/backoffice/lit-element'; import { isApiError, tryExecuteAndNotify } from '@umbraco-cms/backoffice/resources'; @@ -61,11 +61,11 @@ export class UmbMfaProviderDefaultElement extends UmbLitElement implements UmbMf this.peek('Provider name is required', 'danger'); throw new Error('Provider name is required'); } - const { data } = await tryExecuteAndNotify( + const { data: _data } = await tryExecuteAndNotify( this, - UserResource.getUserCurrent2FaByProviderName({ providerName: this.providerName }), + UserService.getUserCurrent2FaByProviderName({ providerName: this.providerName }), ); - + const data: any = _data; if (!data) { this.peek('No data returned', 'danger'); throw new Error('No data returned'); @@ -184,7 +184,7 @@ export class UmbMfaProviderDefaultElement extends UmbLitElement implements UmbMf } else { this._buttonState = 'failed'; if (isApiError(error)) { - if (error.body.operationStatus === 'InvalidCode') { + if ((error.body as any).operationStatus === 'InvalidCode') { this.codeField?.setCustomValidity(this.localize.term('user_2faInvalidCode')); this.codeField?.focus(); } else { diff --git a/src/Umbraco.Web.UI.Client/src/packages/user/current-user/current-user.context.ts b/src/Umbraco.Web.UI.Client/src/packages/user/current-user/current-user.context.ts index 5de00944d5..2faa82b6ff 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/user/current-user/current-user.context.ts +++ b/src/Umbraco.Web.UI.Client/src/packages/user/current-user/current-user.context.ts @@ -12,6 +12,7 @@ export class UmbCurrentUserContext extends UmbContextBase #currentUser = new UmbObjectState(undefined); readonly currentUser = this.#currentUser.asObservable(); + readonly unique = this.#currentUser.asObservablePart((user) => user?.unique); readonly languageIsoCode = this.#currentUser.asObservablePart((user) => user?.languageIsoCode); #authContext?: typeof UMB_AUTH_CONTEXT.TYPE; diff --git a/src/Umbraco.Web.UI.Client/src/packages/user/current-user/external-login/external-login-providers-user-profile-app.element.ts b/src/Umbraco.Web.UI.Client/src/packages/user/current-user/external-login/external-login-providers-user-profile-app.element.ts deleted file mode 100644 index 87e434b2f2..0000000000 --- a/src/Umbraco.Web.UI.Client/src/packages/user/current-user/external-login/external-login-providers-user-profile-app.element.ts +++ /dev/null @@ -1,25 +0,0 @@ -import { html, customElement } from '@umbraco-cms/backoffice/external/lit'; -import { UmbTextStyles } from '@umbraco-cms/backoffice/style'; -import { UmbLitElement } from '@umbraco-cms/backoffice/lit-element'; - -@customElement('umb-external-login-providers-user-profile-app') -export class UmbExternalLoginProvidersUserProfileAppElement extends UmbLitElement { - render() { - return html` - - External login providers - - - `; - } - - static styles = [UmbTextStyles]; -} - -export default UmbExternalLoginProvidersUserProfileAppElement; - -declare global { - interface HTMLElementTagNameMap { - 'umb-external-login-providers-user-profile-app': UmbExternalLoginProvidersUserProfileAppElement; - } -} diff --git a/src/Umbraco.Web.UI.Client/src/packages/user/current-user/external-login/manifests.ts b/src/Umbraco.Web.UI.Client/src/packages/user/current-user/external-login/manifests.ts deleted file mode 100644 index 0d8cf09bbb..0000000000 --- a/src/Umbraco.Web.UI.Client/src/packages/user/current-user/external-login/manifests.ts +++ /dev/null @@ -1,16 +0,0 @@ -import type { ManifestUserProfileApp } from '@umbraco-cms/backoffice/extension-registry'; - -export const userProfileApps: Array = [ - { - type: 'userProfileApp', - alias: 'Umb.UserProfileApp.CurrentUser.ExternalLoginProviders', - name: 'External Login Providers User Profile App', - element: () => import('./external-login-providers-user-profile-app.element.js'), - weight: 700, - meta: { - label: 'External Login Providers User Profile App', - pathname: 'externalLoginProviders', - }, - }, -]; -export const manifests = [...userProfileApps]; diff --git a/src/Umbraco.Web.UI.Client/src/packages/user/current-user/history/current-user-history-user-profile-app.element.ts b/src/Umbraco.Web.UI.Client/src/packages/user/current-user/history/current-user-history-user-profile-app.element.ts index c2b58fac26..11c997ad26 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/user/current-user/history/current-user-history-user-profile-app.element.ts +++ b/src/Umbraco.Web.UI.Client/src/packages/user/current-user/history/current-user-history-user-profile-app.element.ts @@ -1,8 +1,8 @@ import type { UmbCurrentUserHistoryItem, UmbCurrentUserHistoryStore } from './current-user-history.store.js'; import { UMB_CURRENT_USER_HISTORY_STORE_CONTEXT } from './current-user-history.store.js'; -import { css, html, nothing, customElement, state } from '@umbraco-cms/backoffice/external/lit'; -import { UmbTextStyles } from '@umbraco-cms/backoffice/style'; +import { html, customElement, state, map, ifDefined, css } from '@umbraco-cms/backoffice/external/lit'; import { UmbLitElement } from '@umbraco-cms/backoffice/lit-element'; +import { UmbTextStyles } from '@umbraco-cms/backoffice/style'; @customElement('umb-current-user-history-user-profile-app') export class UmbCurrentUserHistoryUserProfileAppElement extends UmbLitElement { @@ -25,85 +25,49 @@ export class UmbCurrentUserHistoryUserProfileAppElement extends UmbLitElement { this.observe( this.#currentUserHistoryStore.latestHistory, (history) => { - this._history = history; + this._history = history.reverse(); }, 'umbCurrentUserHistoryObserver', ); } } + #truncate(input: string, length: number, separator = '...'): string { + if (input.length <= length) return input; + + const separatorLength = separator.length; + const charsToShow = length - separatorLength; + const frontChars = Math.ceil(charsToShow / 2); + const backChars = Math.floor(charsToShow / 2); + + return input.substring(9, frontChars) + separator + input.substring(input.length - backChars); + } + render() { return html` - - Recent History -
    - ${this._history.reverse().map((item) => html` ${this.#renderHistoryItem(item)} `)} -
    + + ${map(this._history, (item) => html` ${this.#renderItem(item)} `)} `; } - #renderHistoryItem(item: UmbCurrentUserHistoryItem) { + #renderItem(item: UmbCurrentUserHistoryItem) { + const label = Array.isArray(item.label) ? item.label[0] : item.label; + const detail = Array.isArray(item.label) ? item.label.join(' > ') : this.#truncate(item.path, 50); + return html` - - -
    - ${Array.isArray(item.label) ? item.label[0] : item.label} - - ${Array.isArray(item.label) - ? item.label.map((label, index) => { - if (index === 0) return; - return html` - ${label} - ${index !== item.label.length - 1 ? html`${'>'}` : nothing} - `; - }) - : nothing} - -
    -
    + + + `; } static styles = [ UmbTextStyles, css` - #recent-history { - display: flex; - flex-direction: column; - gap: var(--uui-size-space-3); - } - #recent-history-items { - display: flex; - flex-direction: column; - gap: var(--uui-size-space-4); - } - .history-item { - display: grid; - grid-template-columns: 32px 1fr; - grid-template-rows: 1fr; - color: var(--uui-color-interactive); - text-decoration: none; - } - .history-item uui-icon { - margin-top: var(--uui-size-space-1); - } - .history-item:hover { - color: var(--uui-color-interactive-emphasis); - } - .history-item > div { - color: inherit; - text-decoration: none; - display: flex; - flex-direction: column; - line-height: 1.4em; - } - .history-item > div > span { - font-size: var(--uui-size-4); - opacity: 0.5; - text-overflow: ellipsis; - overflow: hidden; - white-space: nowrap; + uui-ref-node { + padding-left: 0; + padding-right: 0; } `, ]; diff --git a/src/Umbraco.Web.UI.Client/src/packages/user/current-user/index.ts b/src/Umbraco.Web.UI.Client/src/packages/user/current-user/index.ts index 16c179e8dc..def7620871 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/user/current-user/index.ts +++ b/src/Umbraco.Web.UI.Client/src/packages/user/current-user/index.ts @@ -1,3 +1,4 @@ +export * from './action/index.js'; export * from './components/index.js'; export * from './history/current-user-history.store.js'; export * from './utils/index.js'; diff --git a/src/Umbraco.Web.UI.Client/src/packages/user/current-user/manifests.ts b/src/Umbraco.Web.UI.Client/src/packages/user/current-user/manifests.ts index 8b2d9a3751..e3212adbe1 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/user/current-user/manifests.ts +++ b/src/Umbraco.Web.UI.Client/src/packages/user/current-user/manifests.ts @@ -1,5 +1,5 @@ +import { manifest as actionDefaultKindManifest } from './action/default.kind.js'; import { manifests as modalManifests } from './modals/manifests.js'; -import { manifests as externalLoginProviderManifests } from './external-login/manifests.js'; import { manifests as historyManifests } from './history/manifests.js'; import { manifests as mfaLoginProviderManifests } from './mfa-login/manifests.js'; import { manifests as profileManifests } from './profile/manifests.js'; @@ -29,7 +29,7 @@ export const headerApps: Array = [ ]; export const manifests = [ - ...externalLoginProviderManifests, + actionDefaultKindManifest, ...headerApps, ...historyManifests, ...mfaLoginProviderManifests, diff --git a/src/Umbraco.Web.UI.Client/src/packages/user/current-user/mfa-login/configure-mfa-providers-action.ts b/src/Umbraco.Web.UI.Client/src/packages/user/current-user/mfa-login/configure-mfa-providers-action.ts new file mode 100644 index 0000000000..bc644ec9bd --- /dev/null +++ b/src/Umbraco.Web.UI.Client/src/packages/user/current-user/mfa-login/configure-mfa-providers-action.ts @@ -0,0 +1,18 @@ +import { UMB_CURRENT_USER_MFA_MODAL } from '../modals/current-user-mfa/current-user-mfa-modal.token.js'; +import { UmbActionBase } from '@umbraco-cms/backoffice/action'; +import type { UmbCurrentUserAction, UmbCurrentUserActionArgs } from '@umbraco-cms/backoffice/extension-registry'; +import { UMB_MODAL_MANAGER_CONTEXT } from '@umbraco-cms/backoffice/modal'; + +export class UmbConfigureMfaProvidersApi + extends UmbActionBase> + implements UmbCurrentUserAction +{ + async getHref() { + return undefined; + } + + async execute() { + const modalManagerContext = await this.getContext(UMB_MODAL_MANAGER_CONTEXT); + await modalManagerContext.open(this, UMB_CURRENT_USER_MFA_MODAL).onSubmit(); + } +} diff --git a/src/Umbraco.Web.UI.Client/src/packages/user/current-user/mfa-login/manifests.ts b/src/Umbraco.Web.UI.Client/src/packages/user/current-user/mfa-login/manifests.ts index 1e922de8a2..4fec1b55f0 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/user/current-user/mfa-login/manifests.ts +++ b/src/Umbraco.Web.UI.Client/src/packages/user/current-user/mfa-login/manifests.ts @@ -1,16 +1,24 @@ -import type { ManifestUserProfileApp } from '@umbraco-cms/backoffice/extension-registry'; +import { UmbConfigureMfaProvidersApi } from './configure-mfa-providers-action.js'; +import type { ManifestCurrentUserActionDefaultKind } from '@umbraco-cms/backoffice/extension-registry'; -export const userProfileApps: Array = [ +export const userProfileApps: Array = [ { - type: 'userProfileApp', - alias: 'Umb.UserProfileApp.CurrentUser.MfaLoginProviders', - name: 'MFA Login Providers User Profile App', - element: () => import('./mfa-providers-user-profile-app.element.js'), + type: 'currentUserAction', + kind: 'default', + alias: 'Umb.CurrentUser.App.MfaLoginProviders', + name: 'MFA Login Providers Current User App', weight: 800, + api: UmbConfigureMfaProvidersApi, meta: { - label: 'Two-Factor Authentication', - pathname: 'mfa-providers', + label: '#user_configureTwoFactor', + icon: 'icon-rectangle-ellipsis', + look: 'secondary', }, + conditions: [ + { + alias: 'Umb.Condition.User.AllowMfaAction', + }, + ], }, ]; export const manifests = [...userProfileApps]; diff --git a/src/Umbraco.Web.UI.Client/src/packages/user/current-user/mfa-login/mfa-providers-user-profile-app.element.ts b/src/Umbraco.Web.UI.Client/src/packages/user/current-user/mfa-login/mfa-providers-current-user-app.element.ts similarity index 67% rename from src/Umbraco.Web.UI.Client/src/packages/user/current-user/mfa-login/mfa-providers-user-profile-app.element.ts rename to src/Umbraco.Web.UI.Client/src/packages/user/current-user/mfa-login/mfa-providers-current-user-app.element.ts index 806f63ff9a..f48ab2e4ed 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/user/current-user/mfa-login/mfa-providers-user-profile-app.element.ts +++ b/src/Umbraco.Web.UI.Client/src/packages/user/current-user/mfa-login/mfa-providers-current-user-app.element.ts @@ -6,8 +6,8 @@ import { UMB_MODAL_MANAGER_CONTEXT } from '@umbraco-cms/backoffice/modal'; import { umbExtensionsRegistry } from '@umbraco-cms/backoffice/extension-registry'; import { firstValueFrom } from '@umbraco-cms/backoffice/external/rxjs'; -@customElement('umb-mfa-providers-user-profile-app') -export class UmbMfaProvidersUserProfileAppElement extends UmbLitElement { +@customElement('umb-mfa-providers-current-user-app') +export class UmbMfaProvidersCurrentUserAppElement extends UmbLitElement { @state() _hasProviders = false; @@ -26,11 +26,14 @@ export class UmbMfaProvidersUserProfileAppElement extends UmbLitElement { } return html` - - - Configure Two Factor - - + + + Configure Two Factor + `; } @@ -42,10 +45,10 @@ export class UmbMfaProvidersUserProfileAppElement extends UmbLitElement { static styles = [UmbTextStyles]; } -export default UmbMfaProvidersUserProfileAppElement; +export default UmbMfaProvidersCurrentUserAppElement; declare global { interface HTMLElementTagNameMap { - 'umb-mfa-providers-user-profile-app': UmbMfaProvidersUserProfileAppElement; + 'umb-mfa-providers-current-user-app': UmbMfaProvidersCurrentUserAppElement; } } diff --git a/src/Umbraco.Web.UI.Client/src/packages/user/current-user/modals/current-user-mfa-disable-provider/current-user-mfa-disable-provider-modal.element.ts b/src/Umbraco.Web.UI.Client/src/packages/user/current-user/modals/current-user-mfa-disable-provider/current-user-mfa-disable-provider-modal.element.ts index 709a336d2a..dc7883c7b7 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/user/current-user/modals/current-user-mfa-disable-provider/current-user-mfa-disable-provider-modal.element.ts +++ b/src/Umbraco.Web.UI.Client/src/packages/user/current-user/modals/current-user-mfa-disable-provider/current-user-mfa-disable-provider-modal.element.ts @@ -109,7 +109,7 @@ export class UmbCurrentUserMfaDisableProviderModalElement extends UmbModalBaseEl } else { this._buttonState = 'failed'; if (isApiError(error)) { - if (error.body.operationStatus === 'InvalidCode') { + if ((error.body as any).operationStatus === 'InvalidCode') { this._codeInput.setCustomValidity(this.localize.term('user_2faInvalidCode')); this._codeInput.focus(); } else { diff --git a/src/Umbraco.Web.UI.Client/src/packages/user/current-user/modals/current-user/current-user-modal.element.ts b/src/Umbraco.Web.UI.Client/src/packages/user/current-user/modals/current-user/current-user-modal.element.ts index 9ad8bd483b..1e89d04f19 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/user/current-user/modals/current-user/current-user-modal.element.ts +++ b/src/Umbraco.Web.UI.Client/src/packages/user/current-user/modals/current-user/current-user-modal.element.ts @@ -1,12 +1,12 @@ import { UMB_CURRENT_USER_CONTEXT } from '../../current-user.context.js'; import type { UmbCurrentUserModel } from '../../types.js'; -import { UMB_APP_CONTEXT } from '@umbraco-cms/backoffice/app'; import { UMB_AUTH_CONTEXT } from '@umbraco-cms/backoffice/auth'; import { UmbTextStyles } from '@umbraco-cms/backoffice/style'; import type { CSSResultGroup } from '@umbraco-cms/backoffice/external/lit'; import { css, html, customElement, property, state } from '@umbraco-cms/backoffice/external/lit'; import type { UmbModalContext } from '@umbraco-cms/backoffice/modal'; import { UmbLitElement } from '@umbraco-cms/backoffice/lit-element'; +import type { UUIButtonState } from '@umbraco-cms/backoffice/external/uui'; @customElement('umb-current-user-modal') export class UmbCurrentUserModalElement extends UmbLitElement { @@ -16,6 +16,9 @@ export class UmbCurrentUserModalElement extends UmbLitElement { @state() private _currentUser?: UmbCurrentUserModel; + @state() + private _logOutButtonState?: UUIButtonState; + #authContext?: typeof UMB_AUTH_CONTEXT.TYPE; #currentUserContext?: typeof UMB_CURRENT_USER_CONTEXT.TYPE; @@ -50,7 +53,9 @@ export class UmbCurrentUserModalElement extends UmbLitElement { private async _logout() { if (!this.#authContext) return; - this.#authContext.signOut(); + this._logOutButtonState = 'waiting'; + await this.#authContext.signOut(); + this._logOutButtonState = 'success'; } render() { @@ -65,6 +70,7 @@ export class UmbCurrentUserModalElement extends UmbLitElement { diff --git a/src/Umbraco.Web.UI.Client/src/packages/user/current-user/profile/change-password-current-user.action.ts b/src/Umbraco.Web.UI.Client/src/packages/user/current-user/profile/change-password-current-user.action.ts new file mode 100644 index 0000000000..1b24d3e922 --- /dev/null +++ b/src/Umbraco.Web.UI.Client/src/packages/user/current-user/profile/change-password-current-user.action.ts @@ -0,0 +1,43 @@ +import { UMB_CURRENT_USER_CONTEXT } from '../current-user.context.js'; +import { UmbActionBase } from '@umbraco-cms/backoffice/action'; +import type { UmbCurrentUserAction, UmbCurrentUserActionArgs } from '@umbraco-cms/backoffice/extension-registry'; +import type { UmbControllerHost } from '@umbraco-cms/backoffice/controller-api'; +import { UMB_CHANGE_PASSWORD_MODAL, UMB_MODAL_MANAGER_CONTEXT } from '@umbraco-cms/backoffice/modal'; + +export class UmbChangePasswordCurrentUserAction + extends UmbActionBase> + implements UmbCurrentUserAction +{ + #unique?: string; + + constructor(host: UmbControllerHost, args: UmbCurrentUserActionArgs) { + super(host, args); + + this.consumeContext(UMB_CURRENT_USER_CONTEXT, (context) => { + this.observe( + context.unique, + (unique) => { + this.#unique = unique; + }, + 'umbEditCurrentUserActionObserver', + ); + }); + } + + async getHref() { + return undefined; + } + + async execute() { + if (!this.#unique) return; + + const modalManager = await this.getContext(UMB_MODAL_MANAGER_CONTEXT); + modalManager.open(this, UMB_CHANGE_PASSWORD_MODAL, { + data: { + user: { + unique: this.#unique, + }, + }, + }); + } +} diff --git a/src/Umbraco.Web.UI.Client/src/packages/user/current-user/profile/current-user-profile-user-profile-app.element.ts b/src/Umbraco.Web.UI.Client/src/packages/user/current-user/profile/current-user-profile-user-profile-app.element.ts index 0916731b84..cc257c97df 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/user/current-user/profile/current-user-profile-user-profile-app.element.ts +++ b/src/Umbraco.Web.UI.Client/src/packages/user/current-user/profile/current-user-profile-user-profile-app.element.ts @@ -1,67 +1,28 @@ -import { html, customElement, state } from '@umbraco-cms/backoffice/external/lit'; +import { html, customElement, css } from '@umbraco-cms/backoffice/external/lit'; import { UmbLitElement } from '@umbraco-cms/backoffice/lit-element'; -import { UMB_CHANGE_PASSWORD_MODAL, UMB_MODAL_MANAGER_CONTEXT } from '@umbraco-cms/backoffice/modal'; -import { UMB_CURRENT_USER_CONTEXT, type UmbCurrentUserModel } from '@umbraco-cms/backoffice/current-user'; +import { UmbTextStyles } from '@umbraco-cms/backoffice/style'; @customElement('umb-current-user-profile-user-profile-app') export class UmbCurrentUserProfileUserProfileAppElement extends UmbLitElement { - @state() - private _currentUser?: UmbCurrentUserModel; - - #currentUserContext?: typeof UMB_CURRENT_USER_CONTEXT.TYPE; - - constructor() { - super(); - - this.consumeContext(UMB_CURRENT_USER_CONTEXT, (instance) => { - this.#currentUserContext = instance; - this._observeCurrentUser(); - }); - } - - private async _observeCurrentUser() { - if (!this.#currentUserContext) return; - - this.observe( - this.#currentUserContext.currentUser, - (currentUser) => { - this._currentUser = currentUser; - }, - 'umbCurrentUserObserver', - ); - } - - private _edit() { - if (!this._currentUser) return; - - history.pushState(null, '', 'section/user-management/view/users/user/edit/' + this._currentUser.unique); //TODO Change to a tag with href and make dynamic - //TODO Implement modal routing for the current-user-modal, so that the modal closes when navigating to the edit profile page - } - async #changePassword() { - if (!this._currentUser) throw new Error('Current User not found'); - - const modalManager = await this.getContext(UMB_MODAL_MANAGER_CONTEXT); - modalManager.open(this, UMB_CHANGE_PASSWORD_MODAL, { - data: { - user: { - unique: this._currentUser.unique, - }, - }, - }); - } - render() { return html` - - ${this.localize.term('general_edit')} - - - ${this.localize.term('general_changePassword')} - + `; } + + static styles = [ + UmbTextStyles, + css` + #actions { + display: flex; + flex-wrap: wrap; + flex-direction: row; + gap: var(--uui-size-space-2); + } + `, + ]; } export default UmbCurrentUserProfileUserProfileAppElement; diff --git a/src/Umbraco.Web.UI.Client/src/packages/user/current-user/profile/edit-current-user.action.ts b/src/Umbraco.Web.UI.Client/src/packages/user/current-user/profile/edit-current-user.action.ts new file mode 100644 index 0000000000..ad02bc5285 --- /dev/null +++ b/src/Umbraco.Web.UI.Client/src/packages/user/current-user/profile/edit-current-user.action.ts @@ -0,0 +1,38 @@ +import { UMB_CURRENT_USER_CONTEXT } from '../current-user.context.js'; +import { UmbActionBase } from '@umbraco-cms/backoffice/action'; +import type { UmbCurrentUserAction, UmbCurrentUserActionArgs } from '@umbraco-cms/backoffice/extension-registry'; +import type { UmbControllerHost } from '@umbraco-cms/backoffice/controller-api'; + +export class UmbEditCurrentUserAction + extends UmbActionBase> + implements UmbCurrentUserAction +{ + #init; + #unique?: string; + + constructor(host: UmbControllerHost, args: UmbCurrentUserActionArgs) { + super(host, args); + + this.#init = new Promise((res) => { + this.consumeContext(UMB_CURRENT_USER_CONTEXT, (context) => { + this.observe( + context.unique, + (unique) => { + this.#unique = unique; + res(); + }, + 'umbEditCurrentUserActionObserver', + ); + }); + }); + } + + async getHref() { + await this.#init; + return `section/user-management/view/users/user/edit/${this.#unique}`; + } + + async execute() { + return; + } +} diff --git a/src/Umbraco.Web.UI.Client/src/packages/user/current-user/profile/manifests.ts b/src/Umbraco.Web.UI.Client/src/packages/user/current-user/profile/manifests.ts index 632490be5f..70cc917a96 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/user/current-user/profile/manifests.ts +++ b/src/Umbraco.Web.UI.Client/src/packages/user/current-user/profile/manifests.ts @@ -1,6 +1,11 @@ -import type { ManifestUserProfileApp } from '@umbraco-cms/backoffice/extension-registry'; +import { UmbChangePasswordCurrentUserAction } from './change-password-current-user.action.js'; +import { UmbEditCurrentUserAction } from './edit-current-user.action.js'; +import type { + ManifestCurrentUserActionDefaultKind, + ManifestUserProfileApp, +} from '@umbraco-cms/backoffice/extension-registry'; -export const userProfileApps: Array = [ +const userProfileApps: Array = [ { type: 'userProfileApp', alias: 'Umb.UserProfileApp.CurrentUser.Profile', @@ -13,4 +18,38 @@ export const userProfileApps: Array = [ }, }, ]; -export const manifests = [...userProfileApps]; + +const currentUserActions: Array = [ + { + type: 'currentUserAction', + kind: 'default', + alias: 'Umb.CurrentUser.Button.Edit', + name: 'Current User Edit Button', + weight: 1000, + api: UmbEditCurrentUserAction, + meta: { + label: '#general_edit', + icon: 'edit', + }, + conditions: [ + { + alias: 'Umb.Condition.SectionUserPermission', + match: 'Umb.Section.Users', + }, + ], + }, + { + type: 'currentUserAction', + kind: 'default', + alias: 'Umb.CurrentUser.Button.ChangePassword', + name: 'Current User Change Password Button', + weight: 900, + api: UmbChangePasswordCurrentUserAction, + meta: { + label: '#general_changePassword', + icon: 'lock', + }, + }, +]; + +export const manifests = [...userProfileApps, ...currentUserActions]; diff --git a/src/Umbraco.Web.UI.Client/src/packages/user/current-user/repository/current-user.server.data-source.ts b/src/Umbraco.Web.UI.Client/src/packages/user/current-user/repository/current-user.server.data-source.ts index 1d0fcb88aa..46bfc12a3c 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/user/current-user/repository/current-user.server.data-source.ts +++ b/src/Umbraco.Web.UI.Client/src/packages/user/current-user/repository/current-user.server.data-source.ts @@ -1,5 +1,5 @@ import type { UmbCurrentUserModel } from '../types.js'; -import { UserResource } from '@umbraco-cms/backoffice/external/backend-api'; +import { UserService } from '@umbraco-cms/backoffice/external/backend-api'; import type { UmbControllerHost } from '@umbraco-cms/backoffice/controller-api'; import { tryExecute, tryExecuteAndNotify } from '@umbraco-cms/backoffice/resources'; @@ -26,7 +26,7 @@ export class UmbCurrentUserServerDataSource { * @memberof UmbCurrentUserServerDataSource */ async getCurrentUser() { - const { data, error } = await tryExecuteAndNotify(this.#host, UserResource.getUserCurrent()); + const { data, error } = await tryExecuteAndNotify(this.#host, UserService.getUserCurrent()); if (data) { const user: UmbCurrentUserModel = { @@ -56,7 +56,7 @@ export class UmbCurrentUserServerDataSource { * @memberof UmbCurrentUserServerDataSource */ async getMfaLoginProviders() { - const { data, error } = await tryExecuteAndNotify(this.#host, UserResource.getUserCurrent2Fa()); + const { data, error } = await tryExecuteAndNotify(this.#host, UserService.getUserCurrent2Fa()); if (data) { return { data }; @@ -70,7 +70,7 @@ export class UmbCurrentUserServerDataSource { */ async enableMfaProvider(providerName: string, code: string, secret: string) { const { error } = await tryExecute( - UserResource.postUserCurrent2FaByProviderName({ providerName, requestBody: { code, secret } }), + UserService.postUserCurrent2FaByProviderName({ providerName, requestBody: { code, secret } }), ); if (error) { @@ -84,7 +84,7 @@ export class UmbCurrentUserServerDataSource { * Disable an MFA provider */ async disableMfaProvider(providerName: string, code: string) { - const { error } = await tryExecute(UserResource.deleteUserCurrent2FaByProviderName({ providerName, code })); + const { error } = await tryExecute(UserService.deleteUserCurrent2FaByProviderName({ providerName, code })); if (error) { return { error }; diff --git a/src/Umbraco.Web.UI.Client/src/packages/user/current-user/theme/current-user-theme-user-profile-app.element.ts b/src/Umbraco.Web.UI.Client/src/packages/user/current-user/theme/current-user-theme-user-profile-app.element.ts index c3c294372e..84e443680d 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/user/current-user/theme/current-user-theme-user-profile-app.element.ts +++ b/src/Umbraco.Web.UI.Client/src/packages/user/current-user/theme/current-user-theme-user-profile-app.element.ts @@ -1,10 +1,9 @@ -import type { UmbThemeContext } from '@umbraco-cms/backoffice/themes'; -import { UMB_THEME_CONTEXT } from '@umbraco-cms/backoffice/themes'; -import { css, html, customElement, state } from '@umbraco-cms/backoffice/external/lit'; -import type { UUISelectEvent } from '@umbraco-cms/backoffice/external/uui'; +import { css, html, customElement, state, nothing } from '@umbraco-cms/backoffice/external/lit'; import { UmbLitElement } from '@umbraco-cms/backoffice/lit-element'; -import type { ManifestTheme } from '@umbraco-cms/backoffice/extension-registry'; import { umbExtensionsRegistry } from '@umbraco-cms/backoffice/extension-registry'; +import { UMB_THEME_CONTEXT } from '@umbraco-cms/backoffice/themes'; +import type { UmbThemeContext } from '@umbraco-cms/backoffice/themes'; +import type { UUISelectEvent } from '@umbraco-cms/backoffice/external/uui'; @customElement('umb-current-user-theme-user-profile-app') export class UmbCurrentUserThemeUserProfileAppElement extends UmbLitElement { @@ -14,7 +13,7 @@ export class UmbCurrentUserThemeUserProfileAppElement extends UmbLitElement { private _themeAlias: string | null = null; @state() - private _themes: Array = []; + private _themes: Array