diff --git a/.github/CODEOWNERS b/.github/CODEOWNERS index c82cfcb07bab..38558483819c 100644 --- a/.github/CODEOWNERS +++ b/.github/CODEOWNERS @@ -1651,6 +1651,12 @@ sdk/artifactsigning/arm-artifactsigning/ @qiaozha @MaryGao @JialinHuang803 sdk/discovery/arm-discovery/ @qiaozha @MaryGao @JialinHuang803 sdk/marketplace/arm-marketplace/ @qiaozha @MaryGao @JialinHuang803 +# PRLabel: %Mgmt +sdk/applink/arm-applink/ @qiaozha @MaryGao @JialinHuang803 + +# PRLabel: %Mgmt +sdk/appnetwork/arm-appnetwork/ @qiaozha @MaryGao @JialinHuang803 + ########### # Config ########### diff --git a/eng/ignore-links.txt b/eng/ignore-links.txt index 9ebe277d8d29..379619c0499c 100644 --- a/eng/ignore-links.txt +++ b/eng/ignore-links.txt @@ -77,3 +77,7 @@ https://www.npmjs.com/package/@azure/arm-marketplace https://www.npmjs.com/package/@azure/ai-speech-transcription https://learn.microsoft.com/javascript/api/@azure/arm-discovery?view=azure-node-preview https://www.npmjs.com/package/@azure/arm-discovery +https://learn.microsoft.com/javascript/api/@azure/arm-applink?view=azure-node-preview +https://www.npmjs.com/package/@azure/arm-applink +https://learn.microsoft.com/javascript/api/@azure/arm-appnetwork?view=azure-node-preview +https://www.npmjs.com/package/@azure/arm-appnetwork diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 0df5fff55fc0..da38f601a1bd 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -1832,6 +1832,164 @@ importers: specifier: catalog:testing version: 4.1.0(@opentelemetry/api@1.9.0)(@types/node@20.19.37)(@vitest/browser-playwright@4.1.0)(vite@7.3.1(@types/node@20.19.37)(tsx@4.21.0)(yaml@2.8.3)) + sdk/applink/arm-applink: + dependencies: + '@azure-rest/core-client': + specifier: ^2.3.1 + version: link:../../core/core-client-rest + '@azure/abort-controller': + specifier: ^2.1.2 + version: link:../../core/abort-controller + '@azure/core-auth': + specifier: ^1.9.0 + version: link:../../core/core-auth + '@azure/core-lro': + specifier: ^3.1.0 + version: link:../../core/core-lro + '@azure/core-rest-pipeline': + specifier: ^1.20.0 + version: link:../../core/core-rest-pipeline + '@azure/core-util': + specifier: ^1.12.0 + version: link:../../core/core-util + '@azure/logger': + specifier: ^1.2.0 + version: link:../../core/logger + tslib: + specifier: ^2.8.1 + version: 2.8.1 + devDependencies: + '@azure-tools/test-credential': + specifier: workspace:^ + version: link:../../test-utils/test-credential + '@azure-tools/test-recorder': + specifier: workspace:^ + version: link:../../test-utils/recorder + '@azure-tools/test-utils-vitest': + specifier: workspace:^ + version: link:../../test-utils/test-utils-vitest + '@azure/dev-tool': + specifier: workspace:^ + version: link:../../../common/tools/dev-tool + '@azure/eslint-plugin-azure-sdk': + specifier: workspace:^ + version: link:../../../common/tools/eslint-plugin-azure-sdk + '@azure/identity': + specifier: catalog:internal + version: 4.13.0 + '@types/node': + specifier: 'catalog:' + version: 20.19.37 + '@vitest/browser-playwright': + specifier: catalog:testing + version: 4.1.0(playwright@1.58.2)(vite@7.3.1(@types/node@20.19.37)(tsx@4.21.0)(yaml@2.8.3))(vitest@4.1.0) + '@vitest/coverage-istanbul': + specifier: catalog:testing + version: 4.1.0(vitest@4.1.0) + cross-env: + specifier: 'catalog:' + version: 10.1.0 + dotenv: + specifier: catalog:testing + version: 16.6.1 + eslint: + specifier: 'catalog:' + version: 9.39.4 + playwright: + specifier: catalog:testing + version: 1.58.2 + prettier: + specifier: 'catalog:' + version: 3.8.1 + rimraf: + specifier: 'catalog:' + version: 6.1.3 + typescript: + specifier: 'catalog:' + version: 5.9.3 + vitest: + specifier: catalog:testing + version: 4.1.0(@opentelemetry/api@1.9.0)(@types/node@20.19.37)(@vitest/browser-playwright@4.1.0)(vite@7.3.1(@types/node@20.19.37)(tsx@4.21.0)(yaml@2.8.3)) + + sdk/appnetwork/arm-appnetwork: + dependencies: + '@azure-rest/core-client': + specifier: ^2.3.1 + version: link:../../core/core-client-rest + '@azure/abort-controller': + specifier: ^2.1.2 + version: link:../../core/abort-controller + '@azure/core-auth': + specifier: ^1.9.0 + version: link:../../core/core-auth + '@azure/core-lro': + specifier: ^3.1.0 + version: link:../../core/core-lro + '@azure/core-rest-pipeline': + specifier: ^1.20.0 + version: link:../../core/core-rest-pipeline + '@azure/core-util': + specifier: ^1.12.0 + version: link:../../core/core-util + '@azure/logger': + specifier: ^1.2.0 + version: link:../../core/logger + tslib: + specifier: ^2.8.1 + version: 2.8.1 + devDependencies: + '@azure-tools/test-credential': + specifier: workspace:^ + version: link:../../test-utils/test-credential + '@azure-tools/test-recorder': + specifier: workspace:^ + version: link:../../test-utils/recorder + '@azure-tools/test-utils-vitest': + specifier: workspace:^ + version: link:../../test-utils/test-utils-vitest + '@azure/dev-tool': + specifier: workspace:^ + version: link:../../../common/tools/dev-tool + '@azure/eslint-plugin-azure-sdk': + specifier: workspace:^ + version: link:../../../common/tools/eslint-plugin-azure-sdk + '@azure/identity': + specifier: catalog:internal + version: 4.13.0 + '@types/node': + specifier: 'catalog:' + version: 20.19.37 + '@vitest/browser-playwright': + specifier: catalog:testing + version: 4.1.0(playwright@1.58.2)(vite@7.3.1(@types/node@20.19.37)(tsx@4.21.0)(yaml@2.8.3))(vitest@4.1.0) + '@vitest/coverage-istanbul': + specifier: catalog:testing + version: 4.1.0(vitest@4.1.0) + cross-env: + specifier: 'catalog:' + version: 10.1.0 + dotenv: + specifier: catalog:testing + version: 16.6.1 + eslint: + specifier: 'catalog:' + version: 9.39.4 + playwright: + specifier: catalog:testing + version: 1.58.2 + prettier: + specifier: 'catalog:' + version: 3.8.1 + rimraf: + specifier: 'catalog:' + version: 6.1.3 + typescript: + specifier: 'catalog:' + version: 5.9.3 + vitest: + specifier: catalog:testing + version: 4.1.0(@opentelemetry/api@1.9.0)(@types/node@20.19.37)(@vitest/browser-playwright@4.1.0)(vite@7.3.1(@types/node@20.19.37)(tsx@4.21.0)(yaml@2.8.3)) + sdk/appservice/arm-appservice: dependencies: '@azure/abort-controller': @@ -32893,156 +33051,24 @@ packages: '@epic-web/invariant@1.0.0': resolution: {integrity: sha1-EHPl3ubdVAQQeEmQ63PkrNJcmBM=} - '@esbuild/aix-ppc64@0.27.4': - resolution: {integrity: sha1-TFhQAvetaU04/g6Mv1z9k5zP8yc=} - engines: {node: '>=18'} - cpu: [ppc64] - os: [aix] - - '@esbuild/android-arm64@0.27.4': - resolution: {integrity: sha1-diXQlSw7QC0+3iA6Fsnyt4+KSCc=} - engines: {node: '>=18'} - cpu: [arm64] - os: [android] - - '@esbuild/android-arm@0.27.4': - resolution: {integrity: sha1-mgzx0SmX7Ebd37Ms5n6byoQjgaw=} - engines: {node: '>=18'} - cpu: [arm] - os: [android] - - '@esbuild/android-x64@0.27.4': - resolution: {integrity: sha1-BuH9xig/zNa8aq3WdUr85s+W9C4=} - engines: {node: '>=18'} - cpu: [x64] - os: [android] - - '@esbuild/darwin-arm64@0.27.4': - resolution: {integrity: sha1-bFUO5sAnO8sPrCREeP9yfCZ1XYA=} - engines: {node: '>=18'} - cpu: [arm64] - os: [darwin] - '@esbuild/darwin-x64@0.27.4': resolution: {integrity: sha1-7XoSXp8lzgCRua/3g+6UP2umy4Y=} engines: {node: '>=18'} cpu: [x64] os: [darwin] - '@esbuild/freebsd-arm64@0.27.4': - resolution: {integrity: sha1-WX3I5xYdunHbTBZWExwfHp12YMY=} - engines: {node: '>=18'} - cpu: [arm64] - os: [freebsd] - - '@esbuild/freebsd-x64@0.27.4': - resolution: {integrity: sha1-6hcfn08A76qOnT/ouqG3XXV9GzY=} - engines: {node: '>=18'} - cpu: [x64] - os: [freebsd] - - '@esbuild/linux-arm64@0.27.4': - resolution: {integrity: sha1-5S1X8gI2k4bm28szcKF6BJGrFGQ=} - engines: {node: '>=18'} - cpu: [arm64] - os: [linux] - - '@esbuild/linux-arm@0.27.4': - resolution: {integrity: sha1-XgwLY0kIrbzgoCzr66izrKwmP7Y=} - engines: {node: '>=18'} - cpu: [arm] - os: [linux] - - '@esbuild/linux-ia32@0.27.4': - resolution: {integrity: sha1-X5DwHxMWUkc+wGsDihTEloPhTsc=} - engines: {node: '>=18'} - cpu: [ia32] - os: [linux] - - '@esbuild/linux-loong64@0.27.4': - resolution: {integrity: sha1-Y7rP/bmVdMkxj5r70N1P/3aoN+M=} - engines: {node: '>=18'} - cpu: [loong64] - os: [linux] - - '@esbuild/linux-mips64el@0.27.4': - resolution: {integrity: sha1-xLaVLspqjv/2f+42caNTbI5nt+s=} - engines: {node: '>=18'} - cpu: [mips64el] - os: [linux] - - '@esbuild/linux-ppc64@0.27.4': - resolution: {integrity: sha1-bepn09mMaYbxt3aeTxhI5a5HrVg=} - engines: {node: '>=18'} - cpu: [ppc64] - os: [linux] - - '@esbuild/linux-riscv64@0.27.4': - resolution: {integrity: sha1-mtK0w8BQLGutqcgZl7tWxZeFNIk=} - engines: {node: '>=18'} - cpu: [riscv64] - os: [linux] - - '@esbuild/linux-s390x@0.27.4': - resolution: {integrity: sha1-xD08/QcwQspvXFK7m8MT7SBmzig=} - engines: {node: '>=18'} - cpu: [s390x] - os: [linux] - '@esbuild/linux-x64@0.27.4': resolution: {integrity: sha1-RfoXPgWRrHTYDTz3ZwRxPhTipKY=} engines: {node: '>=18'} cpu: [x64] os: [linux] - '@esbuild/netbsd-arm64@0.27.4': - resolution: {integrity: sha1-NmsO9AzbmG/HUcva0W6MJf4bqHk=} - engines: {node: '>=18'} - cpu: [arm64] - os: [netbsd] - - '@esbuild/netbsd-x64@0.27.4': - resolution: {integrity: sha1-6YXUmjZo/SBENDBx1S4a6BURKz4=} - engines: {node: '>=18'} - cpu: [x64] - os: [netbsd] - - '@esbuild/openbsd-arm64@0.27.4': - resolution: {integrity: sha1-b7Sre3P35Vcs5eyc+RwT/23USEI=} - engines: {node: '>=18'} - cpu: [arm64] - os: [openbsd] - - '@esbuild/openbsd-x64@0.27.4': - resolution: {integrity: sha1-ZB8FIECg15hD1oiY9XkWOKAm2YM=} - engines: {node: '>=18'} - cpu: [x64] - os: [openbsd] - - '@esbuild/openharmony-arm64@0.27.4': - resolution: {integrity: sha1-/B0z6snYGuCkM7PtHdYXGiDU4xc=} - engines: {node: '>=18'} - cpu: [arm64] - os: [openharmony] - - '@esbuild/sunos-x64@0.27.4': - resolution: {integrity: sha1-ryzVyoQtbQVxIfZqGS1PeX3ij1M=} - engines: {node: '>=18'} - cpu: [x64] - os: [sunos] - '@esbuild/win32-arm64@0.27.4': resolution: {integrity: sha1-eOx+WbsGQEWD1MlRHmIdsxx2DeM=} engines: {node: '>=18'} cpu: [arm64] os: [win32] - '@esbuild/win32-ia32@0.27.4': - resolution: {integrity: sha1-DmFqpIi37l0lkqsHD/nsBqn93xE=} - engines: {node: '>=18'} - cpu: [ia32] - os: [win32] - '@esbuild/win32-x64@0.27.4': resolution: {integrity: sha1-H3unGj1hVdRKb6qNviScYqs+QIw=} engines: {node: '>=18'} @@ -34061,102 +34087,11 @@ packages: rollup: optional: true - '@rollup/rollup-android-arm-eabi@4.60.0': - resolution: {integrity: sha1-fhWN38FveNqZwNXMuubK5APvMoQ=} - cpu: [arm] - os: [android] - - '@rollup/rollup-android-arm64@4.60.0': - resolution: {integrity: sha1-SfSuDiK2+f+804GLmgdY+i0Qsc0=} - cpu: [arm64] - os: [android] - - '@rollup/rollup-darwin-arm64@4.60.0': - resolution: {integrity: sha1-uyACaQaaz1wcTXmtFCUk936LgjY=} - cpu: [arm64] - os: [darwin] - '@rollup/rollup-darwin-x64@4.60.0': resolution: {integrity: sha1-G/epKyfr3V4NHUhQPHgRFgdzvho=} cpu: [x64] os: [darwin] - '@rollup/rollup-freebsd-arm64@4.60.0': - resolution: {integrity: sha1-XM9Te5nFF1AIREcCGTrQscNvfxY=} - cpu: [arm64] - os: [freebsd] - - '@rollup/rollup-freebsd-x64@4.60.0': - resolution: {integrity: sha1-EZbs179OEoYk74PNH514URRHSnc=} - cpu: [x64] - os: [freebsd] - - '@rollup/rollup-linux-arm-gnueabihf@4.60.0': - resolution: {integrity: sha1-zBR2M6SvIp/ug6c3vyM0+6w9wo4=} - cpu: [arm] - os: [linux] - libc: [glibc] - - '@rollup/rollup-linux-arm-musleabihf@4.60.0': - resolution: {integrity: sha1-NVn58GAVPqVFlKQsO4eil77cwm4=} - cpu: [arm] - os: [linux] - libc: [musl] - - '@rollup/rollup-linux-arm64-gnu@4.60.0': - resolution: {integrity: sha1-6R+IexVBI0hc/EtZvv4ggPzY8t8=} - cpu: [arm64] - os: [linux] - libc: [glibc] - - '@rollup/rollup-linux-arm64-musl@4.60.0': - resolution: {integrity: sha1-ZgdS8EDfm6RKJHZd9piSiRfAvyE=} - cpu: [arm64] - os: [linux] - libc: [musl] - - '@rollup/rollup-linux-loong64-gnu@4.60.0': - resolution: {integrity: sha1-yw6Tml+keczvJk8/RbMZcWlfhpw=} - cpu: [loong64] - os: [linux] - libc: [glibc] - - '@rollup/rollup-linux-loong64-musl@4.60.0': - resolution: {integrity: sha1-QvhvvILNGoG+LTRkdt0yMc9e5EI=} - cpu: [loong64] - os: [linux] - libc: [musl] - - '@rollup/rollup-linux-ppc64-gnu@4.60.0': - resolution: {integrity: sha1-OXdqZHp4ncleoEknfF748Jjfd/k=} - cpu: [ppc64] - os: [linux] - libc: [glibc] - - '@rollup/rollup-linux-ppc64-musl@4.60.0': - resolution: {integrity: sha1-Rm8gApqOizuylUx93ryVhkIMrCw=} - cpu: [ppc64] - os: [linux] - libc: [musl] - - '@rollup/rollup-linux-riscv64-gnu@4.60.0': - resolution: {integrity: sha1-z/mHfHjxLnqmJG9pAq2RPpntsrc=} - cpu: [riscv64] - os: [linux] - libc: [glibc] - - '@rollup/rollup-linux-riscv64-musl@4.60.0': - resolution: {integrity: sha1-mnYvuZtagqkhAX9WSRt+iSufsX0=} - cpu: [riscv64] - os: [linux] - libc: [musl] - - '@rollup/rollup-linux-s390x-gnu@4.60.0': - resolution: {integrity: sha1-nSWtisfatoGTW694rF6pLRRinN8=} - cpu: [s390x] - os: [linux] - libc: [glibc] - '@rollup/rollup-linux-x64-gnu@4.60.0': resolution: {integrity: sha1-XlE54RgZ+jigUjaNp5Qiy0r89GY=} cpu: [x64] @@ -34169,26 +34104,11 @@ packages: os: [linux] libc: [musl] - '@rollup/rollup-openbsd-x64@4.60.0': - resolution: {integrity: sha1-5uCe66pwErucczG0N6npkr2UyjU=} - cpu: [x64] - os: [openbsd] - - '@rollup/rollup-openharmony-arm64@4.60.0': - resolution: {integrity: sha1-99ma6FcDJJjlel5yWftxAP0kqH4=} - cpu: [arm64] - os: [openharmony] - '@rollup/rollup-win32-arm64-msvc@4.60.0': resolution: {integrity: sha1-QeOS9dnzvxJT/a8vbW9rG/xFKFY=} cpu: [arm64] os: [win32] - '@rollup/rollup-win32-ia32-msvc@4.60.0': - resolution: {integrity: sha1-9BsEkL4OXTz0WbTcB2oZK1Mq3qk=} - cpu: [ia32] - os: [win32] - '@rollup/rollup-win32-x64-gnu@4.60.0': resolution: {integrity: sha1-D8+fH8t1DwMXsTqsOzIxaH5jl6U=} cpu: [x64] @@ -34248,31 +34168,16 @@ packages: cpu: [x64] os: [darwin] - '@turbo/darwin-arm64@2.8.20': - resolution: {integrity: sha1-8C/dgYv+YQJAwaYIZe65yjOBYPU=} - cpu: [arm64] - os: [darwin] - '@turbo/linux-64@2.8.20': resolution: {integrity: sha1-Ufq6lbJCcxsL6umBFySz7u5qoKE=} cpu: [x64] os: [linux] - '@turbo/linux-arm64@2.8.20': - resolution: {integrity: sha1-TEZuwJosLmUT35TXA2YLtu+mFhQ=} - cpu: [arm64] - os: [linux] - '@turbo/windows-64@2.8.20': resolution: {integrity: sha1-uPI/8dXd+bGr5B2yscs1sTBmwGM=} cpu: [x64] os: [win32] - '@turbo/windows-arm64@2.8.20': - resolution: {integrity: sha1-gDLULGz9lU08OBcg1aZdw+fqMBQ=} - cpu: [arm64] - os: [win32] - '@types/argparse@1.0.38': resolution: {integrity: sha1-qB/YYG1IH4c6OADG665PHXaKVqk=} @@ -38410,81 +38315,15 @@ snapshots: '@epic-web/invariant@1.0.0': {} - '@esbuild/aix-ppc64@0.27.4': - optional: true - - '@esbuild/android-arm64@0.27.4': - optional: true - - '@esbuild/android-arm@0.27.4': - optional: true - - '@esbuild/android-x64@0.27.4': - optional: true - - '@esbuild/darwin-arm64@0.27.4': - optional: true - '@esbuild/darwin-x64@0.27.4': optional: true - '@esbuild/freebsd-arm64@0.27.4': - optional: true - - '@esbuild/freebsd-x64@0.27.4': - optional: true - - '@esbuild/linux-arm64@0.27.4': - optional: true - - '@esbuild/linux-arm@0.27.4': - optional: true - - '@esbuild/linux-ia32@0.27.4': - optional: true - - '@esbuild/linux-loong64@0.27.4': - optional: true - - '@esbuild/linux-mips64el@0.27.4': - optional: true - - '@esbuild/linux-ppc64@0.27.4': - optional: true - - '@esbuild/linux-riscv64@0.27.4': - optional: true - - '@esbuild/linux-s390x@0.27.4': - optional: true - '@esbuild/linux-x64@0.27.4': optional: true - '@esbuild/netbsd-arm64@0.27.4': - optional: true - - '@esbuild/netbsd-x64@0.27.4': - optional: true - - '@esbuild/openbsd-arm64@0.27.4': - optional: true - - '@esbuild/openbsd-x64@0.27.4': - optional: true - - '@esbuild/openharmony-arm64@0.27.4': - optional: true - - '@esbuild/sunos-x64@0.27.4': - optional: true - '@esbuild/win32-arm64@0.27.4': optional: true - '@esbuild/win32-ia32@0.27.4': - optional: true - '@esbuild/win32-x64@0.27.4': optional: true @@ -39651,75 +39490,18 @@ snapshots: optionalDependencies: rollup: 4.60.0 - '@rollup/rollup-android-arm-eabi@4.60.0': - optional: true - - '@rollup/rollup-android-arm64@4.60.0': - optional: true - - '@rollup/rollup-darwin-arm64@4.60.0': - optional: true - '@rollup/rollup-darwin-x64@4.60.0': optional: true - '@rollup/rollup-freebsd-arm64@4.60.0': - optional: true - - '@rollup/rollup-freebsd-x64@4.60.0': - optional: true - - '@rollup/rollup-linux-arm-gnueabihf@4.60.0': - optional: true - - '@rollup/rollup-linux-arm-musleabihf@4.60.0': - optional: true - - '@rollup/rollup-linux-arm64-gnu@4.60.0': - optional: true - - '@rollup/rollup-linux-arm64-musl@4.60.0': - optional: true - - '@rollup/rollup-linux-loong64-gnu@4.60.0': - optional: true - - '@rollup/rollup-linux-loong64-musl@4.60.0': - optional: true - - '@rollup/rollup-linux-ppc64-gnu@4.60.0': - optional: true - - '@rollup/rollup-linux-ppc64-musl@4.60.0': - optional: true - - '@rollup/rollup-linux-riscv64-gnu@4.60.0': - optional: true - - '@rollup/rollup-linux-riscv64-musl@4.60.0': - optional: true - - '@rollup/rollup-linux-s390x-gnu@4.60.0': - optional: true - '@rollup/rollup-linux-x64-gnu@4.60.0': optional: true '@rollup/rollup-linux-x64-musl@4.60.0': optional: true - '@rollup/rollup-openbsd-x64@4.60.0': - optional: true - - '@rollup/rollup-openharmony-arm64@4.60.0': - optional: true - '@rollup/rollup-win32-arm64-msvc@4.60.0': optional: true - '@rollup/rollup-win32-ia32-msvc@4.60.0': - optional: true - '@rollup/rollup-win32-x64-gnu@4.60.0': optional: true @@ -39780,21 +39562,12 @@ snapshots: '@turbo/darwin-64@2.8.20': optional: true - '@turbo/darwin-arm64@2.8.20': - optional: true - '@turbo/linux-64@2.8.20': optional: true - '@turbo/linux-arm64@2.8.20': - optional: true - '@turbo/windows-64@2.8.20': optional: true - '@turbo/windows-arm64@2.8.20': - optional: true - '@types/argparse@1.0.38': {} '@types/body-parser@1.19.6': @@ -40877,31 +40650,9 @@ snapshots: esbuild@0.27.4: optionalDependencies: - '@esbuild/aix-ppc64': 0.27.4 - '@esbuild/android-arm': 0.27.4 - '@esbuild/android-arm64': 0.27.4 - '@esbuild/android-x64': 0.27.4 - '@esbuild/darwin-arm64': 0.27.4 '@esbuild/darwin-x64': 0.27.4 - '@esbuild/freebsd-arm64': 0.27.4 - '@esbuild/freebsd-x64': 0.27.4 - '@esbuild/linux-arm': 0.27.4 - '@esbuild/linux-arm64': 0.27.4 - '@esbuild/linux-ia32': 0.27.4 - '@esbuild/linux-loong64': 0.27.4 - '@esbuild/linux-mips64el': 0.27.4 - '@esbuild/linux-ppc64': 0.27.4 - '@esbuild/linux-riscv64': 0.27.4 - '@esbuild/linux-s390x': 0.27.4 '@esbuild/linux-x64': 0.27.4 - '@esbuild/netbsd-arm64': 0.27.4 - '@esbuild/netbsd-x64': 0.27.4 - '@esbuild/openbsd-arm64': 0.27.4 - '@esbuild/openbsd-x64': 0.27.4 - '@esbuild/openharmony-arm64': 0.27.4 - '@esbuild/sunos-x64': 0.27.4 '@esbuild/win32-arm64': 0.27.4 - '@esbuild/win32-ia32': 0.27.4 '@esbuild/win32-x64': 0.27.4 escalade@3.2.0: {} @@ -42471,29 +42222,10 @@ snapshots: dependencies: '@types/estree': 1.0.8 optionalDependencies: - '@rollup/rollup-android-arm-eabi': 4.60.0 - '@rollup/rollup-android-arm64': 4.60.0 - '@rollup/rollup-darwin-arm64': 4.60.0 '@rollup/rollup-darwin-x64': 4.60.0 - '@rollup/rollup-freebsd-arm64': 4.60.0 - '@rollup/rollup-freebsd-x64': 4.60.0 - '@rollup/rollup-linux-arm-gnueabihf': 4.60.0 - '@rollup/rollup-linux-arm-musleabihf': 4.60.0 - '@rollup/rollup-linux-arm64-gnu': 4.60.0 - '@rollup/rollup-linux-arm64-musl': 4.60.0 - '@rollup/rollup-linux-loong64-gnu': 4.60.0 - '@rollup/rollup-linux-loong64-musl': 4.60.0 - '@rollup/rollup-linux-ppc64-gnu': 4.60.0 - '@rollup/rollup-linux-ppc64-musl': 4.60.0 - '@rollup/rollup-linux-riscv64-gnu': 4.60.0 - '@rollup/rollup-linux-riscv64-musl': 4.60.0 - '@rollup/rollup-linux-s390x-gnu': 4.60.0 '@rollup/rollup-linux-x64-gnu': 4.60.0 '@rollup/rollup-linux-x64-musl': 4.60.0 - '@rollup/rollup-openbsd-x64': 4.60.0 - '@rollup/rollup-openharmony-arm64': 4.60.0 '@rollup/rollup-win32-arm64-msvc': 4.60.0 - '@rollup/rollup-win32-ia32-msvc': 4.60.0 '@rollup/rollup-win32-x64-gnu': 4.60.0 '@rollup/rollup-win32-x64-msvc': 4.60.0 fsevents: 2.3.3 @@ -42872,11 +42604,8 @@ snapshots: turbo@2.8.20: optionalDependencies: '@turbo/darwin-64': 2.8.20 - '@turbo/darwin-arm64': 2.8.20 '@turbo/linux-64': 2.8.20 - '@turbo/linux-arm64': 2.8.20 '@turbo/windows-64': 2.8.20 - '@turbo/windows-arm64': 2.8.20 type-check@0.3.2: dependencies: diff --git a/sdk/applink/arm-applink/CHANGELOG.md b/sdk/applink/arm-applink/CHANGELOG.md new file mode 100644 index 000000000000..c2bb67158837 --- /dev/null +++ b/sdk/applink/arm-applink/CHANGELOG.md @@ -0,0 +1,7 @@ +# Release History + +## 1.0.0-beta.1 (2026-03-24) + +### Features Added + +Initial release of the @azure/arm-applink package diff --git a/sdk/applink/arm-applink/LICENSE b/sdk/applink/arm-applink/LICENSE new file mode 100644 index 000000000000..63447fd8bbbf --- /dev/null +++ b/sdk/applink/arm-applink/LICENSE @@ -0,0 +1,21 @@ +Copyright (c) Microsoft Corporation. + +MIT License + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED *AS IS*, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. \ No newline at end of file diff --git a/sdk/applink/arm-applink/README.md b/sdk/applink/arm-applink/README.md new file mode 100644 index 000000000000..bd495322f65a --- /dev/null +++ b/sdk/applink/arm-applink/README.md @@ -0,0 +1,115 @@ +# Azure AppLink client library for JavaScript + +This package contains an isomorphic SDK (runs both in Node.js and in browsers) for Azure AppLink client. + + + +Key links: + +- [Source code](https://github.com/Azure/azure-sdk-for-js/tree/main/sdk/applink/arm-applink) +- [Package (NPM)](https://www.npmjs.com/package/@azure/arm-applink) +- [API reference documentation](https://learn.microsoft.com/javascript/api/@azure/arm-applink?view=azure-node-preview) +- [Samples](https://github.com/Azure/azure-sdk-for-js/tree/main/sdk/applink/arm-applink/samples) + +## Getting started + +### Currently supported environments + +- [LTS versions of Node.js](https://github.com/nodejs/release#release-schedule) +- Latest versions of Safari, Chrome, Edge and Firefox. + +See our [support policy](https://github.com/Azure/azure-sdk-for-js/blob/main/SUPPORT.md) for more details. + +### Prerequisites + +- An [Azure subscription][azure_sub]. + +### Install the `@azure/arm-applink` package + +Install the Azure AppLink client library for JavaScript with `npm`: + +```bash +npm install @azure/arm-applink +``` + +### Create and authenticate a `AppLinkClient` + +To create a client object to access the Azure AppLink API, you will need the `endpoint` of your Azure AppLink resource and a `credential`. The Azure AppLink client can use Azure Active Directory credentials to authenticate. +You can find the endpoint for your Azure AppLink resource in the [Azure Portal][azure_portal]. + +You can authenticate with Azure Active Directory using a credential from the [@azure/identity][azure_identity] library or [an existing AAD Token](https://github.com/Azure/azure-sdk-for-js/blob/main/sdk/identity/identity/samples/AzureIdentityExamples.md#authenticating-with-a-pre-fetched-access-token). + +To use the [DefaultAzureCredential][defaultazurecredential] provider shown below, or other credential providers provided with the Azure SDK, please install the `@azure/identity` package: + +```bash +npm install @azure/identity +``` + +You will also need to **register a new AAD application and grant access to Azure AppLink** by assigning the suitable role to your service principal (note: roles such as `"Owner"` will not grant the necessary permissions). + +For more information about how to create an Azure AD Application check out [this guide](https://learn.microsoft.com/azure/active-directory/develop/howto-create-service-principal-portal). + +Using Node.js and Node-like environments, you can use the `DefaultAzureCredential` class to authenticate the client. + +```ts snippet:ReadmeSampleCreateClient_Node +import { AppLinkClient } from "@azure/arm-applink"; +import { DefaultAzureCredential } from "@azure/identity"; + +const subscriptionId = "00000000-0000-0000-0000-000000000000"; +const client = new AppLinkClient(new DefaultAzureCredential(), subscriptionId); +``` + +For browser environments, use the `InteractiveBrowserCredential` from the `@azure/identity` package to authenticate. + +```ts snippet:ReadmeSampleCreateClient_Browser +import { InteractiveBrowserCredential } from "@azure/identity"; +import { AppLinkClient } from "@azure/arm-applink"; + +const credential = new InteractiveBrowserCredential({ + tenantId: "", + clientId: "", +}); +const subscriptionId = "00000000-0000-0000-0000-000000000000"; +const client = new AppLinkClient(credential, subscriptionId); +``` + + +### JavaScript Bundle +To use this client library in the browser, first you need to use a bundler. For details on how to do this, please refer to our [bundling documentation](https://aka.ms/AzureSDKBundling). + +## Key concepts + +### AppLinkClient + +`AppLinkClient` is the primary interface for developers using the Azure AppLink client library. Explore the methods on this client object to understand the different features of the Azure AppLink service that you can access. + +## Troubleshooting + +### Logging + +Enabling logging may help uncover useful information about failures. In order to see a log of HTTP requests and responses, set the `AZURE_LOG_LEVEL` environment variable to `info`. Alternatively, logging can be enabled at runtime by calling `setLogLevel` in the `@azure/logger`: + +```ts snippet:SetLogLevel +import { setLogLevel } from "@azure/logger"; + +setLogLevel("info"); +``` + +For more detailed instructions on how to enable logs, you can look at the [@azure/logger package docs](https://github.com/Azure/azure-sdk-for-js/tree/main/sdk/core/logger). + +## Next steps + +Please take a look at the [samples](https://github.com/Azure/azure-sdk-for-js/tree/main/sdk/applink/arm-applink/samples) directory for detailed examples on how to use this library. + +## Contributing + +If you'd like to contribute to this library, please read the [contributing guide](https://github.com/Azure/azure-sdk-for-js/blob/main/CONTRIBUTING.md) to learn more about how to build and test the code. + +## Related projects + +- [Microsoft Azure SDK for JavaScript](https://github.com/Azure/azure-sdk-for-js) + +[azure_sub]: https://azure.microsoft.com/free/ +[azure_portal]: https://portal.azure.com +[azure_identity]: https://github.com/Azure/azure-sdk-for-js/tree/main/sdk/identity/identity +[defaultazurecredential]: https://github.com/Azure/azure-sdk-for-js/tree/main/sdk/identity/identity#defaultazurecredential diff --git a/sdk/applink/arm-applink/api-extractor.json b/sdk/applink/arm-applink/api-extractor.json new file mode 100644 index 000000000000..870d6d399477 --- /dev/null +++ b/sdk/applink/arm-applink/api-extractor.json @@ -0,0 +1 @@ +{ "extends": "../../../api-extractor-base.json" } diff --git a/sdk/applink/arm-applink/eslint.config.mjs b/sdk/applink/arm-applink/eslint.config.mjs new file mode 100644 index 000000000000..6d2f8a5914c3 --- /dev/null +++ b/sdk/applink/arm-applink/eslint.config.mjs @@ -0,0 +1,14 @@ +import azsdkEslint from "@azure/eslint-plugin-azure-sdk"; + +export default azsdkEslint.config([ + { + rules: { + "@azure/azure-sdk/ts-modules-only-named": "warn", + "@azure/azure-sdk/ts-package-json-types": "warn", + "@azure/azure-sdk/ts-package-json-engine-is-present": "warn", + "@azure/azure-sdk/ts-package-json-files-required": "off", + "@azure/azure-sdk/ts-package-json-main-is-cjs": "off", + "tsdoc/syntax": "warn", + }, + }, +]); diff --git a/sdk/applink/arm-applink/metadata.json b/sdk/applink/arm-applink/metadata.json new file mode 100644 index 000000000000..c2e15f635bda --- /dev/null +++ b/sdk/applink/arm-applink/metadata.json @@ -0,0 +1,78 @@ +{ + "apiVersions": { + "Microsoft.AppLink": "2025-08-01-preview" + }, + "emitterVersion": "0.51.0", + "crossLanguageDefinitions": { + "CrossLanguagePackageId": "Microsoft.AppLink", + "CrossLanguageDefinitionId": { + "@azure/arm-applink!OperationListResult:interface": "Azure.ResourceManager.CommonTypes.OperationListResult", + "@azure/arm-applink!Operation:interface": "Azure.ResourceManager.CommonTypes.Operation", + "@azure/arm-applink!OperationDisplay:interface": "Azure.ResourceManager.CommonTypes.OperationDisplay", + "@azure/arm-applink!ErrorResponse:interface": "Azure.ResourceManager.CommonTypes.ErrorResponse", + "@azure/arm-applink!ErrorDetail:interface": "Azure.ResourceManager.CommonTypes.ErrorDetail", + "@azure/arm-applink!ErrorAdditionalInfo:interface": "Azure.ResourceManager.CommonTypes.ErrorAdditionalInfo", + "@azure/arm-applink!AppLink:interface": "Microsoft.AppLink.AppLink", + "@azure/arm-applink!AppLinkProperties:interface": "Microsoft.AppLink.AppLinkProperties", + "@azure/arm-applink!ManagedServiceIdentity:interface": "Azure.ResourceManager.CommonTypes.ManagedServiceIdentity", + "@azure/arm-applink!UserAssignedIdentity:interface": "Azure.ResourceManager.CommonTypes.UserAssignedIdentity", + "@azure/arm-applink!TrackedResource:interface": "Azure.ResourceManager.CommonTypes.TrackedResource", + "@azure/arm-applink!Resource:interface": "Azure.ResourceManager.CommonTypes.Resource", + "@azure/arm-applink!SystemData:interface": "Azure.ResourceManager.CommonTypes.SystemData", + "@azure/arm-applink!ArmOperationStatusResourceProvisioningState:interface": "Azure.ResourceManager.ArmOperationStatus", + "@azure/arm-applink!AppLinkUpdate:interface": "Microsoft.AppLink.AppLinkUpdate", + "@azure/arm-applink!AppLinkListResult:interface": "Azure.ResourceManager.ResourceListResult", + "@azure/arm-applink!AppLinkMember:interface": "Microsoft.AppLink.AppLinkMember", + "@azure/arm-applink!AppLinkMemberProperties:interface": "Microsoft.AppLink.AppLinkMemberProperties", + "@azure/arm-applink!Metadata:interface": "Microsoft.AppLink.Metadata", + "@azure/arm-applink!UpgradeProfile:interface": "Microsoft.AppLink.UpgradeProfile", + "@azure/arm-applink!FullyManagedUpgradeProfile:interface": "Microsoft.AppLink.FullyManagedUpgradeProfile", + "@azure/arm-applink!SelfManagedUpgradeProfile:interface": "Microsoft.AppLink.SelfManagedUpgradeProfile", + "@azure/arm-applink!ObservabilityProfile:interface": "Microsoft.AppLink.ObservabilityProfile", + "@azure/arm-applink!MetricsProfile:interface": "Microsoft.AppLink.MetricsProfile", + "@azure/arm-applink!ConnectivityProfile:interface": "Microsoft.AppLink.ConnectivityProfile", + "@azure/arm-applink!EastWestGatewayProfile:interface": "Microsoft.AppLink.EastWestGatewayProfile", + "@azure/arm-applink!PrivateConnectProfile:interface": "Microsoft.AppLink.PrivateConnectProfile", + "@azure/arm-applink!AppLinkMemberUpdate:interface": "Microsoft.AppLink.AppLinkMemberUpdate", + "@azure/arm-applink!AppLinkMemberUpdateProperties:interface": "Microsoft.AppLink.AppLinkMemberUpdateProperties", + "@azure/arm-applink!AppLinkMemberListResult:interface": "Azure.ResourceManager.ResourceListResult", + "@azure/arm-applink!UpgradeHistoryListResult:interface": "Azure.ResourceManager.ResourceListResult", + "@azure/arm-applink!UpgradeHistory:interface": "Microsoft.AppLink.UpgradeHistory", + "@azure/arm-applink!UpgradeHistoryProperties:interface": "Microsoft.AppLink.UpgradeHistoryProperties", + "@azure/arm-applink!ProxyResource:interface": "Azure.ResourceManager.CommonTypes.ProxyResource", + "@azure/arm-applink!AvailableVersionListResult:interface": "Azure.ResourceManager.ResourceListResult", + "@azure/arm-applink!AvailableVersion:interface": "Microsoft.AppLink.AvailableVersion", + "@azure/arm-applink!AvailableVersionProperties:interface": "Microsoft.AppLink.AvailableVersionProperties", + "@azure/arm-applink!FullyManagedVersions:interface": "Microsoft.AppLink.FullyManagedVersions", + "@azure/arm-applink!ReleaseChannelInfo:interface": "Microsoft.AppLink.ReleaseChannelInfo", + "@azure/arm-applink!SelfManagedVersions:interface": "Microsoft.AppLink.SelfManagedVersions", + "@azure/arm-applink!VersionInfo:interface": "Microsoft.AppLink.VersionInfo", + "@azure/arm-applink!KnownOrigin:enum": "Azure.ResourceManager.CommonTypes.Origin", + "@azure/arm-applink!KnownActionType:enum": "Azure.ResourceManager.CommonTypes.ActionType", + "@azure/arm-applink!KnownProvisioningState:enum": "Microsoft.AppLink.ProvisioningState", + "@azure/arm-applink!KnownManagedServiceIdentityType:enum": "Azure.ResourceManager.CommonTypes.ManagedServiceIdentityType", + "@azure/arm-applink!KnowncreatedByType:enum": "Azure.ResourceManager.CommonTypes.createdByType", + "@azure/arm-applink!KnownResourceProvisioningState:enum": "Azure.ResourceManager.ResourceProvisioningState", + "@azure/arm-applink!KnownClusterType:enum": "Microsoft.AppLink.ClusterType", + "@azure/arm-applink!KnownUpgradeMode:enum": "Microsoft.AppLink.UpgradeMode", + "@azure/arm-applink!KnownUpgradeReleaseChannel:enum": "Microsoft.AppLink.UpgradeReleaseChannel", + "@azure/arm-applink!KnownEastWestGatewayVisibility:enum": "Microsoft.AppLink.EastWestGatewayVisibility", + "@azure/arm-applink!KnownVersions:enum": "Microsoft.AppLink.Versions", + "@azure/arm-applink!ManagedServiceIdentityUserAssignedIdentity:type": "Azure.ResourceManager.CommonTypes.ManagedServiceIdentity.userAssignedIdentity.anonymous", + "@azure/arm-applink!AvailableVersionsOperations#listByLocation:member": "Microsoft.AppLink.AvailableVersions.listByLocation", + "@azure/arm-applink!UpgradeHistoriesOperations#listByAppLinkMember:member": "Microsoft.AppLink.UpgradeHistories.listByAppLinkMember", + "@azure/arm-applink!AppLinkMembersOperations#listByAppLink:member": "Microsoft.AppLink.AppLinkMembers.listByAppLink", + "@azure/arm-applink!AppLinkMembersOperations#delete:member": "Microsoft.AppLink.AppLinkMembers.delete", + "@azure/arm-applink!AppLinkMembersOperations#update:member": "Microsoft.AppLink.AppLinkMembers.update", + "@azure/arm-applink!AppLinkMembersOperations#createOrUpdate:member": "Microsoft.AppLink.AppLinkMembers.createOrUpdate", + "@azure/arm-applink!AppLinkMembersOperations#get:member": "Microsoft.AppLink.AppLinkMembers.get", + "@azure/arm-applink!AppLinksOperations#listBySubscription:member": "Microsoft.AppLink.AppLinks.listBySubscription", + "@azure/arm-applink!AppLinksOperations#listByResourceGroup:member": "Microsoft.AppLink.AppLinks.listByResourceGroup", + "@azure/arm-applink!AppLinksOperations#delete:member": "Microsoft.AppLink.AppLinks.delete", + "@azure/arm-applink!AppLinksOperations#update:member": "Microsoft.AppLink.AppLinks.update", + "@azure/arm-applink!AppLinksOperations#createOrUpdate:member": "Microsoft.AppLink.AppLinks.createOrUpdate", + "@azure/arm-applink!AppLinksOperations#get:member": "Microsoft.AppLink.AppLinks.get", + "@azure/arm-applink!OperationsOperations#list:member": "Azure.ResourceManager.Operations.list" + } + } +} diff --git a/sdk/applink/arm-applink/package.json b/sdk/applink/arm-applink/package.json new file mode 100644 index 000000000000..5b09edfaf745 --- /dev/null +++ b/sdk/applink/arm-applink/package.json @@ -0,0 +1,249 @@ +{ + "name": "@azure/arm-applink", + "version": "1.0.0-beta.1", + "description": "A generated SDK for AppLinkClient.", + "engines": { + "node": ">=20.0.0" + }, + "sideEffects": false, + "autoPublish": false, + "type": "module", + "main": "./dist/commonjs/index.js", + "module": "./dist/esm/index.js", + "types": "./dist/commonjs/index.d.ts", + "browser": "./dist/browser/index.js", + "react-native": "./dist/react-native/index.js", + "exports": { + "./package.json": "./package.json", + ".": { + "browser": { + "types": "./dist/browser/index.d.ts", + "default": "./dist/browser/index.js" + }, + "react-native": { + "types": "./dist/react-native/index.d.ts", + "default": "./dist/react-native/index.js" + }, + "import": { + "types": "./dist/esm/index.d.ts", + "default": "./dist/esm/index.js" + }, + "require": { + "types": "./dist/commonjs/index.d.ts", + "default": "./dist/commonjs/index.js" + } + }, + "./api": { + "browser": { + "types": "./dist/browser/api/index.d.ts", + "default": "./dist/browser/api/index.js" + }, + "react-native": { + "types": "./dist/react-native/api/index.d.ts", + "default": "./dist/react-native/api/index.js" + }, + "import": { + "types": "./dist/esm/api/index.d.ts", + "default": "./dist/esm/api/index.js" + }, + "require": { + "types": "./dist/commonjs/api/index.d.ts", + "default": "./dist/commonjs/api/index.js" + } + }, + "./api/availableVersions": { + "browser": { + "types": "./dist/browser/api/availableVersions/index.d.ts", + "default": "./dist/browser/api/availableVersions/index.js" + }, + "react-native": { + "types": "./dist/react-native/api/availableVersions/index.d.ts", + "default": "./dist/react-native/api/availableVersions/index.js" + }, + "import": { + "types": "./dist/esm/api/availableVersions/index.d.ts", + "default": "./dist/esm/api/availableVersions/index.js" + }, + "require": { + "types": "./dist/commonjs/api/availableVersions/index.d.ts", + "default": "./dist/commonjs/api/availableVersions/index.js" + } + }, + "./api/upgradeHistories": { + "browser": { + "types": "./dist/browser/api/upgradeHistories/index.d.ts", + "default": "./dist/browser/api/upgradeHistories/index.js" + }, + "react-native": { + "types": "./dist/react-native/api/upgradeHistories/index.d.ts", + "default": "./dist/react-native/api/upgradeHistories/index.js" + }, + "import": { + "types": "./dist/esm/api/upgradeHistories/index.d.ts", + "default": "./dist/esm/api/upgradeHistories/index.js" + }, + "require": { + "types": "./dist/commonjs/api/upgradeHistories/index.d.ts", + "default": "./dist/commonjs/api/upgradeHistories/index.js" + } + }, + "./api/appLinkMembers": { + "browser": { + "types": "./dist/browser/api/appLinkMembers/index.d.ts", + "default": "./dist/browser/api/appLinkMembers/index.js" + }, + "react-native": { + "types": "./dist/react-native/api/appLinkMembers/index.d.ts", + "default": "./dist/react-native/api/appLinkMembers/index.js" + }, + "import": { + "types": "./dist/esm/api/appLinkMembers/index.d.ts", + "default": "./dist/esm/api/appLinkMembers/index.js" + }, + "require": { + "types": "./dist/commonjs/api/appLinkMembers/index.d.ts", + "default": "./dist/commonjs/api/appLinkMembers/index.js" + } + }, + "./api/appLinks": { + "browser": { + "types": "./dist/browser/api/appLinks/index.d.ts", + "default": "./dist/browser/api/appLinks/index.js" + }, + "react-native": { + "types": "./dist/react-native/api/appLinks/index.d.ts", + "default": "./dist/react-native/api/appLinks/index.js" + }, + "import": { + "types": "./dist/esm/api/appLinks/index.d.ts", + "default": "./dist/esm/api/appLinks/index.js" + }, + "require": { + "types": "./dist/commonjs/api/appLinks/index.d.ts", + "default": "./dist/commonjs/api/appLinks/index.js" + } + }, + "./api/operations": { + "browser": { + "types": "./dist/browser/api/operations/index.d.ts", + "default": "./dist/browser/api/operations/index.js" + }, + "react-native": { + "types": "./dist/react-native/api/operations/index.d.ts", + "default": "./dist/react-native/api/operations/index.js" + }, + "import": { + "types": "./dist/esm/api/operations/index.d.ts", + "default": "./dist/esm/api/operations/index.js" + }, + "require": { + "types": "./dist/commonjs/api/operations/index.d.ts", + "default": "./dist/commonjs/api/operations/index.js" + } + }, + "./models": { + "browser": { + "types": "./dist/browser/models/index.d.ts", + "default": "./dist/browser/models/index.js" + }, + "react-native": { + "types": "./dist/react-native/models/index.d.ts", + "default": "./dist/react-native/models/index.js" + }, + "import": { + "types": "./dist/esm/models/index.d.ts", + "default": "./dist/esm/models/index.js" + }, + "require": { + "types": "./dist/commonjs/models/index.d.ts", + "default": "./dist/commonjs/models/index.js" + } + } + }, + "keywords": [ + "node", + "azure", + "cloud", + "typescript", + "browser", + "isomorphic" + ], + "author": "Microsoft Corporation", + "license": "MIT", + "files": [ + "dist/", + "!dist/**/*.d.*ts.map", + "README.md", + "LICENSE" + ], + "sdk-type": "mgmt", + "repository": "github:Azure/azure-sdk-for-js", + "bugs": { + "url": "https://github.com/Azure/azure-sdk-for-js/issues" + }, + "homepage": "https://github.com/Azure/azure-sdk-for-js/tree/main/sdk/applink/arm-applink/README.md", + "prettier": "@azure/eslint-plugin-azure-sdk/prettier.json", + "//metadata": { + "constantPaths": [ + { + "path": "src/api/appLinkContext.ts", + "prefix": "userAgentInfo" + } + ] + }, + "dependencies": { + "@azure/core-util": "^1.12.0", + "@azure-rest/core-client": "^2.3.1", + "@azure/abort-controller": "^2.1.2", + "@azure/core-auth": "^1.9.0", + "@azure/core-lro": "^3.1.0", + "@azure/core-rest-pipeline": "^1.20.0", + "@azure/logger": "^1.2.0", + "tslib": "^2.8.1" + }, + "devDependencies": { + "@azure-tools/test-credential": "workspace:^", + "@azure-tools/test-recorder": "workspace:^", + "@azure-tools/test-utils-vitest": "workspace:^", + "@azure/dev-tool": "workspace:^", + "@azure/eslint-plugin-azure-sdk": "workspace:^", + "@azure/identity": "catalog:internal", + "@types/node": "catalog:", + "cross-env": "catalog:", + "eslint": "catalog:", + "prettier": "catalog:", + "rimraf": "catalog:", + "@vitest/browser-playwright": "catalog:testing", + "@vitest/coverage-istanbul": "catalog:testing", + "dotenv": "catalog:testing", + "playwright": "catalog:testing", + "typescript": "catalog:", + "vitest": "catalog:testing" + }, + "scripts": { + "clean": "rimraf --glob dist dist-browser dist-esm test-dist temp types *.tgz *.log", + "extract-api": "rimraf review && dev-tool run extract-api", + "pack": "pnpm pack 2>&1", + "lint": "echo skipped", + "lint:fix": "echo skipped", + "build:samples": "tsc -p tsconfig.samples.json && dev-tool samples publish -f", + "check-format": "prettier --list-different --config ../../../.prettierrc.json --ignore-path ../../../.prettierignore \"src/**/*.{ts,cts,mts}\" \"test/**/*.{ts,cts,mts}\" \"*.{js,cjs,mjs,json}\" \"samples-dev/*.ts\"", + "execute:samples": "dev-tool samples run samples-dev", + "format": "prettier --write --config ../../../.prettierrc.json --ignore-path ../../../.prettierignore \"src/**/*.{ts,cts,mts}\" \"test/**/*.{ts,cts,mts}\" \"*.{js,cjs,mjs,json}\" \"samples-dev/*.ts\"", + "generate:client": "echo skipped", + "test:browser": "dev-tool run build-test && dev-tool run test:vitest --browser", + "build": "npm run clean && dev-tool run build-package && dev-tool run extract-api", + "test:node": "dev-tool run test:vitest", + "test:node:esm": "dev-tool run test:vitest --esm", + "test": "npm run test:node && npm run test:browser", + "update-snippets": "dev-tool run update-snippets" + }, + "//sampleConfiguration": { + "productName": "@azure/arm-applink", + "productSlugs": [ + "azure" + ], + "disableDocsMs": true, + "apiRefLink": "https://learn.microsoft.com/javascript/api/@azure/arm-applink?view=azure-node-preview" + } +} diff --git a/sdk/applink/arm-applink/review/arm-applink-api-appLinkMembers-node.api.md b/sdk/applink/arm-applink/review/arm-applink-api-appLinkMembers-node.api.md new file mode 100644 index 000000000000..4ab4535e6727 --- /dev/null +++ b/sdk/applink/arm-applink/review/arm-applink-api-appLinkMembers-node.api.md @@ -0,0 +1,52 @@ +## API Report File for "@azure/arm-applink" + +> Do not edit this file. It is a report generated by [API Extractor](https://api-extractor.com/). + +```ts + +import type { Client } from '@azure-rest/core-client'; +import type { OperationOptions } from '@azure-rest/core-client'; +import type { OperationState } from '@azure/core-lro'; +import type { PollerLike } from '@azure/core-lro'; + +// @public +export function $delete(context: AppLinkContext, resourceGroupName: string, appLinkName: string, appLinkMemberName: string, options?: AppLinkMembersDeleteOptionalParams): PollerLike, void>; + +// @public +export interface AppLinkMembersCreateOrUpdateOptionalParams extends OperationOptions { + updateIntervalInMs?: number; +} + +// @public +export interface AppLinkMembersDeleteOptionalParams extends OperationOptions { + updateIntervalInMs?: number; +} + +// @public +export interface AppLinkMembersGetOptionalParams extends OperationOptions { +} + +// @public +export interface AppLinkMembersListByAppLinkOptionalParams extends OperationOptions { +} + +// @public +export interface AppLinkMembersUpdateOptionalParams extends OperationOptions { + updateIntervalInMs?: number; +} + +// @public +export function createOrUpdate(context: AppLinkContext, resourceGroupName: string, appLinkName: string, appLinkMemberName: string, resource: AppLinkMember, options?: AppLinkMembersCreateOrUpdateOptionalParams): PollerLike, AppLinkMember>; + +// @public +export function get(context: AppLinkContext, resourceGroupName: string, appLinkName: string, appLinkMemberName: string, options?: AppLinkMembersGetOptionalParams): Promise; + +// @public +export function listByAppLink(context: AppLinkContext, resourceGroupName: string, appLinkName: string, options?: AppLinkMembersListByAppLinkOptionalParams): PagedAsyncIterableIterator; + +// @public +export function update(context: AppLinkContext, resourceGroupName: string, appLinkName: string, appLinkMemberName: string, properties: AppLinkMemberUpdate, options?: AppLinkMembersUpdateOptionalParams): PollerLike, AppLinkMember>; + +// (No @packageDocumentation comment for this package) + +``` diff --git a/sdk/applink/arm-applink/review/arm-applink-api-appLinks-node.api.md b/sdk/applink/arm-applink/review/arm-applink-api-appLinks-node.api.md new file mode 100644 index 000000000000..a0ba95549781 --- /dev/null +++ b/sdk/applink/arm-applink/review/arm-applink-api-appLinks-node.api.md @@ -0,0 +1,59 @@ +## API Report File for "@azure/arm-applink" + +> Do not edit this file. It is a report generated by [API Extractor](https://api-extractor.com/). + +```ts + +import type { Client } from '@azure-rest/core-client'; +import type { OperationOptions } from '@azure-rest/core-client'; +import type { OperationState } from '@azure/core-lro'; +import type { PollerLike } from '@azure/core-lro'; + +// @public +export function $delete(context: AppLinkContext, resourceGroupName: string, appLinkName: string, options?: AppLinksDeleteOptionalParams): PollerLike, void>; + +// @public +export interface AppLinksCreateOrUpdateOptionalParams extends OperationOptions { + updateIntervalInMs?: number; +} + +// @public +export interface AppLinksDeleteOptionalParams extends OperationOptions { + updateIntervalInMs?: number; +} + +// @public +export interface AppLinksGetOptionalParams extends OperationOptions { +} + +// @public +export interface AppLinksListByResourceGroupOptionalParams extends OperationOptions { +} + +// @public +export interface AppLinksListBySubscriptionOptionalParams extends OperationOptions { +} + +// @public +export interface AppLinksUpdateOptionalParams extends OperationOptions { + updateIntervalInMs?: number; +} + +// @public +export function createOrUpdate(context: AppLinkContext, resourceGroupName: string, appLinkName: string, resource: AppLink, options?: AppLinksCreateOrUpdateOptionalParams): PollerLike, AppLink>; + +// @public +export function get(context: AppLinkContext, resourceGroupName: string, appLinkName: string, options?: AppLinksGetOptionalParams): Promise; + +// @public +export function listByResourceGroup(context: AppLinkContext, resourceGroupName: string, options?: AppLinksListByResourceGroupOptionalParams): PagedAsyncIterableIterator; + +// @public +export function listBySubscription(context: AppLinkContext, options?: AppLinksListBySubscriptionOptionalParams): PagedAsyncIterableIterator; + +// @public +export function update(context: AppLinkContext, resourceGroupName: string, appLinkName: string, properties: AppLinkUpdate, options?: AppLinksUpdateOptionalParams): PollerLike, AppLink>; + +// (No @packageDocumentation comment for this package) + +``` diff --git a/sdk/applink/arm-applink/review/arm-applink-api-availableVersions-node.api.md b/sdk/applink/arm-applink/review/arm-applink-api-availableVersions-node.api.md new file mode 100644 index 000000000000..d9dc6b07c9df --- /dev/null +++ b/sdk/applink/arm-applink/review/arm-applink-api-availableVersions-node.api.md @@ -0,0 +1,20 @@ +## API Report File for "@azure/arm-applink" + +> Do not edit this file. It is a report generated by [API Extractor](https://api-extractor.com/). + +```ts + +import type { Client } from '@azure-rest/core-client'; +import type { OperationOptions } from '@azure-rest/core-client'; + +// @public +export interface AvailableVersionsListByLocationOptionalParams extends OperationOptions { + kubernetesVersion?: string; +} + +// @public +export function listByLocation(context: AppLinkContext, location: string, options?: AvailableVersionsListByLocationOptionalParams): PagedAsyncIterableIterator; + +// (No @packageDocumentation comment for this package) + +``` diff --git a/sdk/applink/arm-applink/review/arm-applink-api-node.api.md b/sdk/applink/arm-applink/review/arm-applink-api-node.api.md new file mode 100644 index 000000000000..7f72b9c484ec --- /dev/null +++ b/sdk/applink/arm-applink/review/arm-applink-api-node.api.md @@ -0,0 +1,28 @@ +## API Report File for "@azure/arm-applink" + +> Do not edit this file. It is a report generated by [API Extractor](https://api-extractor.com/). + +```ts + +import type { Client } from '@azure-rest/core-client'; +import type { ClientOptions } from '@azure-rest/core-client'; +import type { TokenCredential } from '@azure/core-auth'; + +// @public +export interface AppLinkClientOptionalParams extends ClientOptions { + apiVersion?: string; + cloudSetting?: AzureSupportedClouds; +} + +// @public (undocumented) +export interface AppLinkContext extends Client { + apiVersion?: string; + subscriptionId: string; +} + +// @public (undocumented) +export function createAppLink(credential: TokenCredential, subscriptionId: string, options?: AppLinkClientOptionalParams): AppLinkContext; + +// (No @packageDocumentation comment for this package) + +``` diff --git a/sdk/applink/arm-applink/review/arm-applink-api-operations-node.api.md b/sdk/applink/arm-applink/review/arm-applink-api-operations-node.api.md new file mode 100644 index 000000000000..36996e405fa7 --- /dev/null +++ b/sdk/applink/arm-applink/review/arm-applink-api-operations-node.api.md @@ -0,0 +1,19 @@ +## API Report File for "@azure/arm-applink" + +> Do not edit this file. It is a report generated by [API Extractor](https://api-extractor.com/). + +```ts + +import type { Client } from '@azure-rest/core-client'; +import type { OperationOptions } from '@azure-rest/core-client'; + +// @public +export function list(context: AppLinkContext, options?: OperationsListOptionalParams): PagedAsyncIterableIterator; + +// @public +export interface OperationsListOptionalParams extends OperationOptions { +} + +// (No @packageDocumentation comment for this package) + +``` diff --git a/sdk/applink/arm-applink/review/arm-applink-api-upgradeHistories-node.api.md b/sdk/applink/arm-applink/review/arm-applink-api-upgradeHistories-node.api.md new file mode 100644 index 000000000000..67fee3db1902 --- /dev/null +++ b/sdk/applink/arm-applink/review/arm-applink-api-upgradeHistories-node.api.md @@ -0,0 +1,19 @@ +## API Report File for "@azure/arm-applink" + +> Do not edit this file. It is a report generated by [API Extractor](https://api-extractor.com/). + +```ts + +import type { Client } from '@azure-rest/core-client'; +import type { OperationOptions } from '@azure-rest/core-client'; + +// @public +export function listByAppLinkMember(context: AppLinkContext, resourceGroupName: string, appLinkName: string, appLinkMemberName: string, options?: UpgradeHistoriesListByAppLinkMemberOptionalParams): PagedAsyncIterableIterator; + +// @public +export interface UpgradeHistoriesListByAppLinkMemberOptionalParams extends OperationOptions { +} + +// (No @packageDocumentation comment for this package) + +``` diff --git a/sdk/applink/arm-applink/review/arm-applink-models-node.api.md b/sdk/applink/arm-applink/review/arm-applink-models-node.api.md new file mode 100644 index 000000000000..f34741149f39 --- /dev/null +++ b/sdk/applink/arm-applink/review/arm-applink-models-node.api.md @@ -0,0 +1,324 @@ +## API Report File for "@azure/arm-applink" + +> Do not edit this file. It is a report generated by [API Extractor](https://api-extractor.com/). + +```ts + +// @public +export type ActionType = string; + +// @public +export interface AppLink extends TrackedResource { + identity?: ManagedServiceIdentity; + properties?: AppLinkProperties; +} + +// @public +export interface AppLinkMember extends TrackedResource { + properties?: AppLinkMemberProperties; +} + +// @public +export interface AppLinkMemberProperties { + clusterType?: ClusterType; + connectivityProfile?: ConnectivityProfile; + metadata: Metadata; + observabilityProfile?: ObservabilityProfile; + readonly provisioningState?: ProvisioningState; + upgradeProfile?: UpgradeProfile; +} + +// @public +export interface AppLinkMemberUpdate { + properties?: AppLinkMemberUpdateProperties; + tags?: Record; +} + +// @public +export interface AppLinkMemberUpdateProperties { + connectivityProfile?: ConnectivityProfile; + observabilityProfile?: ObservabilityProfile; + upgradeProfile?: UpgradeProfile; +} + +// @public +export interface AppLinkProperties { + readonly provisioningState?: ProvisioningState; +} + +// @public +export interface AppLinkUpdate { + tags?: Record; +} + +// @public +export interface AvailableVersion extends ProxyResource { + properties?: AvailableVersionProperties; +} + +// @public +export interface AvailableVersionProperties { + fullyManagedVersions: FullyManagedVersions; + kubernetesVersion: string; + readonly provisioningState?: ProvisioningState; + selfManagedVersions: SelfManagedVersions; +} + +// @public +export type ClusterType = string; + +// @public +export interface ConnectivityProfile { + eastWestGateway?: EastWestGatewayProfile; + privateConnect?: PrivateConnectProfile; +} + +// @public +export type CreatedByType = string; + +// @public +export interface EastWestGatewayProfile { + visibility: EastWestGatewayVisibility; +} + +// @public +export type EastWestGatewayVisibility = string; + +// @public +export interface ErrorAdditionalInfo { + readonly info?: any; + readonly type?: string; +} + +// @public +export interface ErrorDetail { + readonly additionalInfo?: ErrorAdditionalInfo[]; + readonly code?: string; + readonly details?: ErrorDetail[]; + readonly message?: string; + readonly target?: string; +} + +// @public +export interface ErrorResponse { + error?: ErrorDetail; +} + +// @public +export interface FullyManagedUpgradeProfile { + releaseChannel: UpgradeReleaseChannel; +} + +// @public +export interface FullyManagedVersions { + releaseChannels: ReleaseChannelInfo[]; +} + +// @public +export enum KnownActionType { + Internal = "Internal" +} + +// @public +export enum KnownClusterType { + AKS = "AKS" +} + +// @public +export enum KnownCreatedByType { + Application = "Application", + Key = "Key", + ManagedIdentity = "ManagedIdentity", + User = "User" +} + +// @public +export enum KnownEastWestGatewayVisibility { + External = "External", + Internal = "Internal" +} + +// @public +export enum KnownManagedServiceIdentityType { + None = "None", + SystemAssigned = "SystemAssigned", + SystemAssignedUserAssigned = "SystemAssigned,UserAssigned", + UserAssigned = "UserAssigned" +} + +// @public +export enum KnownOrigin { + System = "system", + User = "user", + UserSystem = "user,system" +} + +// @public +export enum KnownProvisioningState { + Accepted = "Accepted", + Canceled = "Canceled", + Deleting = "Deleting", + Failed = "Failed", + Provisioning = "Provisioning", + Succeeded = "Succeeded", + Updating = "Updating" +} + +// @public +export enum KnownUpgradeMode { + FullyManaged = "FullyManaged", + SelfManaged = "SelfManaged" +} + +// @public +export enum KnownUpgradeReleaseChannel { + Rapid = "Rapid", + Stable = "Stable" +} + +// @public +export enum KnownVersions { + V20250801Preview = "2025-08-01-preview" +} + +// @public +export interface ManagedServiceIdentity { + readonly principalId?: string; + readonly tenantId?: string; + type: ManagedServiceIdentityType; + userAssignedIdentities?: Record; +} + +// @public +export type ManagedServiceIdentityType = string; + +// @public +export interface Metadata { + resourceId: string; +} + +// @public +export interface MetricsProfile { + readonly metricsEndpoint?: string; +} + +// @public +export interface ObservabilityProfile { + metrics?: MetricsProfile; +} + +// @public +export interface Operation { + readonly actionType?: ActionType; + display?: OperationDisplay; + readonly isDataAction?: boolean; + readonly name?: string; + readonly origin?: Origin; +} + +// @public +export interface OperationDisplay { + readonly description?: string; + readonly operation?: string; + readonly provider?: string; + readonly resource?: string; +} + +// @public +export type Origin = string; + +// @public +export interface PrivateConnectProfile { + subnetResourceId: string; +} + +// @public +export type ProvisioningState = string; + +// @public +export interface ProxyResource extends Resource { +} + +// @public +export interface ReleaseChannelInfo { + releaseChannel: string; + version: string; +} + +// @public +export interface Resource { + readonly id?: string; + readonly name?: string; + readonly systemData?: SystemData; + readonly type?: string; +} + +// @public +export interface SelfManagedUpgradeProfile { + version: string; +} + +// @public +export interface SelfManagedVersions { + versions: VersionInfo[]; +} + +// @public +export interface SystemData { + createdAt?: Date; + createdBy?: string; + createdByType?: CreatedByType; + lastModifiedAt?: Date; + lastModifiedBy?: string; + lastModifiedByType?: CreatedByType; +} + +// @public +export interface TrackedResource extends Resource { + location: string; + tags?: Record; +} + +// @public +export interface UpgradeHistory extends ProxyResource { + properties?: UpgradeHistoryProperties; +} + +// @public +export interface UpgradeHistoryProperties { + endTimestamp?: Date; + fromVersion: string; + initiatedBy: string; + readonly provisioningState?: ProvisioningState; + startTimestamp: Date; + toVersion: string; +} + +// @public +export type UpgradeMode = string; + +// @public +export interface UpgradeProfile { + fullyManagedUpgradeProfile?: FullyManagedUpgradeProfile; + mode: UpgradeMode; + selfManagedUpgradeProfile?: SelfManagedUpgradeProfile; +} + +// @public +export type UpgradeReleaseChannel = string; + +// @public +export interface UserAssignedIdentity { + readonly clientId?: string; + readonly principalId?: string; +} + +// @public +export interface VersionInfo { + upgrades: string[]; + version: string; +} + +// (No @packageDocumentation comment for this package) + +``` diff --git a/sdk/applink/arm-applink/review/arm-applink-node.api.md b/sdk/applink/arm-applink/review/arm-applink-node.api.md new file mode 100644 index 000000000000..316a7c38cbc8 --- /dev/null +++ b/sdk/applink/arm-applink/review/arm-applink-node.api.md @@ -0,0 +1,484 @@ +## API Report File for "@azure/arm-applink" + +> Do not edit this file. It is a report generated by [API Extractor](https://api-extractor.com/). + +```ts + +import type { AbortSignalLike } from '@azure/abort-controller'; +import type { ClientOptions } from '@azure-rest/core-client'; +import type { OperationOptions } from '@azure-rest/core-client'; +import type { OperationState } from '@azure/core-lro'; +import type { PathUncheckedResponse } from '@azure-rest/core-client'; +import type { Pipeline } from '@azure/core-rest-pipeline'; +import type { PollerLike } from '@azure/core-lro'; +import type { TokenCredential } from '@azure/core-auth'; + +// @public +export type ActionType = string; + +// @public +export interface AppLink extends TrackedResource { + identity?: ManagedServiceIdentity; + properties?: AppLinkProperties; +} + +// @public (undocumented) +export class AppLinkClient { + constructor(credential: TokenCredential, subscriptionId: string, options?: AppLinkClientOptionalParams); + readonly appLinkMembers: AppLinkMembersOperations; + readonly appLinks: AppLinksOperations; + readonly availableVersions: AvailableVersionsOperations; + readonly operations: OperationsOperations; + readonly pipeline: Pipeline; + readonly upgradeHistories: UpgradeHistoriesOperations; +} + +// @public +export interface AppLinkClientOptionalParams extends ClientOptions { + apiVersion?: string; + cloudSetting?: AzureSupportedClouds; +} + +// @public +export interface AppLinkMember extends TrackedResource { + properties?: AppLinkMemberProperties; +} + +// @public +export interface AppLinkMemberProperties { + clusterType?: ClusterType; + connectivityProfile?: ConnectivityProfile; + metadata: Metadata; + observabilityProfile?: ObservabilityProfile; + readonly provisioningState?: ProvisioningState; + upgradeProfile?: UpgradeProfile; +} + +// @public +export interface AppLinkMembersCreateOrUpdateOptionalParams extends OperationOptions { + updateIntervalInMs?: number; +} + +// @public +export interface AppLinkMembersDeleteOptionalParams extends OperationOptions { + updateIntervalInMs?: number; +} + +// @public +export interface AppLinkMembersGetOptionalParams extends OperationOptions { +} + +// @public +export interface AppLinkMembersListByAppLinkOptionalParams extends OperationOptions { +} + +// @public +export interface AppLinkMembersOperations { + createOrUpdate: (resourceGroupName: string, appLinkName: string, appLinkMemberName: string, resource: AppLinkMember, options?: AppLinkMembersCreateOrUpdateOptionalParams) => PollerLike, AppLinkMember>; + delete: (resourceGroupName: string, appLinkName: string, appLinkMemberName: string, options?: AppLinkMembersDeleteOptionalParams) => PollerLike, void>; + get: (resourceGroupName: string, appLinkName: string, appLinkMemberName: string, options?: AppLinkMembersGetOptionalParams) => Promise; + listByAppLink: (resourceGroupName: string, appLinkName: string, options?: AppLinkMembersListByAppLinkOptionalParams) => PagedAsyncIterableIterator; + update: (resourceGroupName: string, appLinkName: string, appLinkMemberName: string, properties: AppLinkMemberUpdate, options?: AppLinkMembersUpdateOptionalParams) => PollerLike, AppLinkMember>; +} + +// @public +export interface AppLinkMembersUpdateOptionalParams extends OperationOptions { + updateIntervalInMs?: number; +} + +// @public +export interface AppLinkMemberUpdate { + properties?: AppLinkMemberUpdateProperties; + tags?: Record; +} + +// @public +export interface AppLinkMemberUpdateProperties { + connectivityProfile?: ConnectivityProfile; + observabilityProfile?: ObservabilityProfile; + upgradeProfile?: UpgradeProfile; +} + +// @public +export interface AppLinkProperties { + readonly provisioningState?: ProvisioningState; +} + +// @public +export interface AppLinksCreateOrUpdateOptionalParams extends OperationOptions { + updateIntervalInMs?: number; +} + +// @public +export interface AppLinksDeleteOptionalParams extends OperationOptions { + updateIntervalInMs?: number; +} + +// @public +export interface AppLinksGetOptionalParams extends OperationOptions { +} + +// @public +export interface AppLinksListByResourceGroupOptionalParams extends OperationOptions { +} + +// @public +export interface AppLinksListBySubscriptionOptionalParams extends OperationOptions { +} + +// @public +export interface AppLinksOperations { + createOrUpdate: (resourceGroupName: string, appLinkName: string, resource: AppLink, options?: AppLinksCreateOrUpdateOptionalParams) => PollerLike, AppLink>; + delete: (resourceGroupName: string, appLinkName: string, options?: AppLinksDeleteOptionalParams) => PollerLike, void>; + get: (resourceGroupName: string, appLinkName: string, options?: AppLinksGetOptionalParams) => Promise; + listByResourceGroup: (resourceGroupName: string, options?: AppLinksListByResourceGroupOptionalParams) => PagedAsyncIterableIterator; + listBySubscription: (options?: AppLinksListBySubscriptionOptionalParams) => PagedAsyncIterableIterator; + update: (resourceGroupName: string, appLinkName: string, properties: AppLinkUpdate, options?: AppLinksUpdateOptionalParams) => PollerLike, AppLink>; +} + +// @public +export interface AppLinksUpdateOptionalParams extends OperationOptions { + updateIntervalInMs?: number; +} + +// @public +export interface AppLinkUpdate { + tags?: Record; +} + +// @public +export interface AvailableVersion extends ProxyResource { + properties?: AvailableVersionProperties; +} + +// @public +export interface AvailableVersionProperties { + fullyManagedVersions: FullyManagedVersions; + kubernetesVersion: string; + readonly provisioningState?: ProvisioningState; + selfManagedVersions: SelfManagedVersions; +} + +// @public +export interface AvailableVersionsListByLocationOptionalParams extends OperationOptions { + kubernetesVersion?: string; +} + +// @public +export interface AvailableVersionsOperations { + listByLocation: (location: string, options?: AvailableVersionsListByLocationOptionalParams) => PagedAsyncIterableIterator; +} + +// @public +export enum AzureClouds { + AZURE_CHINA_CLOUD = "AZURE_CHINA_CLOUD", + AZURE_PUBLIC_CLOUD = "AZURE_PUBLIC_CLOUD", + AZURE_US_GOVERNMENT = "AZURE_US_GOVERNMENT" +} + +// @public +export type AzureSupportedClouds = `${AzureClouds}`; + +// @public +export type ClusterType = string; + +// @public +export interface ConnectivityProfile { + eastWestGateway?: EastWestGatewayProfile; + privateConnect?: PrivateConnectProfile; +} + +// @public +export type ContinuablePage = TPage & { + continuationToken?: string; +}; + +// @public +export type CreatedByType = string; + +// @public +export interface EastWestGatewayProfile { + visibility: EastWestGatewayVisibility; +} + +// @public +export type EastWestGatewayVisibility = string; + +// @public +export interface ErrorAdditionalInfo { + readonly info?: any; + readonly type?: string; +} + +// @public +export interface ErrorDetail { + readonly additionalInfo?: ErrorAdditionalInfo[]; + readonly code?: string; + readonly details?: ErrorDetail[]; + readonly message?: string; + readonly target?: string; +} + +// @public +export interface ErrorResponse { + error?: ErrorDetail; +} + +// @public +export interface FullyManagedUpgradeProfile { + releaseChannel: UpgradeReleaseChannel; +} + +// @public +export interface FullyManagedVersions { + releaseChannels: ReleaseChannelInfo[]; +} + +// @public +export enum KnownActionType { + Internal = "Internal" +} + +// @public +export enum KnownClusterType { + AKS = "AKS" +} + +// @public +export enum KnownCreatedByType { + Application = "Application", + Key = "Key", + ManagedIdentity = "ManagedIdentity", + User = "User" +} + +// @public +export enum KnownEastWestGatewayVisibility { + External = "External", + Internal = "Internal" +} + +// @public +export enum KnownManagedServiceIdentityType { + None = "None", + SystemAssigned = "SystemAssigned", + SystemAssignedUserAssigned = "SystemAssigned,UserAssigned", + UserAssigned = "UserAssigned" +} + +// @public +export enum KnownOrigin { + System = "system", + User = "user", + UserSystem = "user,system" +} + +// @public +export enum KnownProvisioningState { + Accepted = "Accepted", + Canceled = "Canceled", + Deleting = "Deleting", + Failed = "Failed", + Provisioning = "Provisioning", + Succeeded = "Succeeded", + Updating = "Updating" +} + +// @public +export enum KnownUpgradeMode { + FullyManaged = "FullyManaged", + SelfManaged = "SelfManaged" +} + +// @public +export enum KnownUpgradeReleaseChannel { + Rapid = "Rapid", + Stable = "Stable" +} + +// @public +export enum KnownVersions { + V20250801Preview = "2025-08-01-preview" +} + +// @public +export interface ManagedServiceIdentity { + readonly principalId?: string; + readonly tenantId?: string; + type: ManagedServiceIdentityType; + userAssignedIdentities?: Record; +} + +// @public +export type ManagedServiceIdentityType = string; + +// @public +export interface Metadata { + resourceId: string; +} + +// @public +export interface MetricsProfile { + readonly metricsEndpoint?: string; +} + +// @public +export interface ObservabilityProfile { + metrics?: MetricsProfile; +} + +// @public +export interface Operation { + readonly actionType?: ActionType; + display?: OperationDisplay; + readonly isDataAction?: boolean; + readonly name?: string; + readonly origin?: Origin; +} + +// @public +export interface OperationDisplay { + readonly description?: string; + readonly operation?: string; + readonly provider?: string; + readonly resource?: string; +} + +// @public +export interface OperationsListOptionalParams extends OperationOptions { +} + +// @public +export interface OperationsOperations { + list: (options?: OperationsListOptionalParams) => PagedAsyncIterableIterator; +} + +// @public +export type Origin = string; + +// @public +export interface PagedAsyncIterableIterator { + [Symbol.asyncIterator](): PagedAsyncIterableIterator; + byPage: (settings?: TPageSettings) => AsyncIterableIterator>; + next(): Promise>; +} + +// @public +export interface PageSettings { + continuationToken?: string; +} + +// @public +export interface PrivateConnectProfile { + subnetResourceId: string; +} + +// @public +export type ProvisioningState = string; + +// @public +export interface ProxyResource extends Resource { +} + +// @public +export interface ReleaseChannelInfo { + releaseChannel: string; + version: string; +} + +// @public +export interface Resource { + readonly id?: string; + readonly name?: string; + readonly systemData?: SystemData; + readonly type?: string; +} + +// @public +export function restorePoller(client: AppLinkClient, serializedState: string, sourceOperation: (...args: any[]) => PollerLike, TResult>, options?: RestorePollerOptions): PollerLike, TResult>; + +// @public (undocumented) +export interface RestorePollerOptions extends OperationOptions { + abortSignal?: AbortSignalLike; + processResponseBody?: (result: TResponse) => Promise; + updateIntervalInMs?: number; +} + +// @public +export interface SelfManagedUpgradeProfile { + version: string; +} + +// @public +export interface SelfManagedVersions { + versions: VersionInfo[]; +} + +// @public +export interface SystemData { + createdAt?: Date; + createdBy?: string; + createdByType?: CreatedByType; + lastModifiedAt?: Date; + lastModifiedBy?: string; + lastModifiedByType?: CreatedByType; +} + +// @public +export interface TrackedResource extends Resource { + location: string; + tags?: Record; +} + +// @public +export interface UpgradeHistoriesListByAppLinkMemberOptionalParams extends OperationOptions { +} + +// @public +export interface UpgradeHistoriesOperations { + listByAppLinkMember: (resourceGroupName: string, appLinkName: string, appLinkMemberName: string, options?: UpgradeHistoriesListByAppLinkMemberOptionalParams) => PagedAsyncIterableIterator; +} + +// @public +export interface UpgradeHistory extends ProxyResource { + properties?: UpgradeHistoryProperties; +} + +// @public +export interface UpgradeHistoryProperties { + endTimestamp?: Date; + fromVersion: string; + initiatedBy: string; + readonly provisioningState?: ProvisioningState; + startTimestamp: Date; + toVersion: string; +} + +// @public +export type UpgradeMode = string; + +// @public +export interface UpgradeProfile { + fullyManagedUpgradeProfile?: FullyManagedUpgradeProfile; + mode: UpgradeMode; + selfManagedUpgradeProfile?: SelfManagedUpgradeProfile; +} + +// @public +export type UpgradeReleaseChannel = string; + +// @public +export interface UserAssignedIdentity { + readonly clientId?: string; + readonly principalId?: string; +} + +// @public +export interface VersionInfo { + upgrades: string[]; + version: string; +} + +// (No @packageDocumentation comment for this package) + +``` diff --git a/sdk/applink/arm-applink/sample.env b/sdk/applink/arm-applink/sample.env new file mode 100644 index 000000000000..508439fc7d62 --- /dev/null +++ b/sdk/applink/arm-applink/sample.env @@ -0,0 +1 @@ +# Feel free to add your own environment variables. \ No newline at end of file diff --git a/sdk/applink/arm-applink/samples-dev/appLinkMembersCreateOrUpdateSample.ts b/sdk/applink/arm-applink/samples-dev/appLinkMembersCreateOrUpdateSample.ts new file mode 100644 index 000000000000..5f2a2c5cdd40 --- /dev/null +++ b/sdk/applink/arm-applink/samples-dev/appLinkMembersCreateOrUpdateSample.ts @@ -0,0 +1,51 @@ +// Copyright (c) Microsoft Corporation. +// Licensed under the MIT License. + +import { AppLinkClient } from "@azure/arm-applink"; +import { DefaultAzureCredential } from "@azure/identity"; + +/** + * This sample demonstrates how to create an AppLinkMember. + * + * @summary create an AppLinkMember. + * x-ms-original-file: 2025-08-01-preview/AppLinkMembers_CreateOrUpdate.json + */ +async function appLinkMembersCreateOrUpdate(): Promise { + const credential = new DefaultAzureCredential(); + const subscriptionId = "11809CA1-E126-4017-945E-AA795CD5C5A9"; + const client = new AppLinkClient(credential, subscriptionId); + const result = await client.appLinkMembers.createOrUpdate( + "test_rg", + "applink-test-01", + "member-01", + { + properties: { + clusterType: "AKS", + metadata: { + resourceId: + "/subscriptions/bc7e0da9-5e4c-4a91-9252-9658837006cf/resourcegroups/applink-rg/providers/Microsoft.ContainerService/managedClusters/applink-member1", + }, + upgradeProfile: { + mode: "FullyManaged", + fullyManagedUpgradeProfile: { releaseChannel: "Stable" }, + }, + connectivityProfile: { + privateConnect: { + subnetResourceId: + "/subscriptions/bc7e0da9-5e4c-4a91-9252-9658837006cf/resourceGroups/applink-vnet-rg/providers/Microsoft.Network/virtualNetworks/vnet1/subnets/subnet1", + }, + eastWestGateway: { visibility: "Internal" }, + }, + }, + tags: { key2913: "test_tag" }, + location: "westus2", + }, + ); + console.log(result); +} + +async function main(): Promise { + await appLinkMembersCreateOrUpdate(); +} + +main().catch(console.error); diff --git a/sdk/applink/arm-applink/samples-dev/appLinkMembersDeleteSample.ts b/sdk/applink/arm-applink/samples-dev/appLinkMembersDeleteSample.ts new file mode 100644 index 000000000000..5a39e0240ad6 --- /dev/null +++ b/sdk/applink/arm-applink/samples-dev/appLinkMembersDeleteSample.ts @@ -0,0 +1,24 @@ +// Copyright (c) Microsoft Corporation. +// Licensed under the MIT License. + +import { AppLinkClient } from "@azure/arm-applink"; +import { DefaultAzureCredential } from "@azure/identity"; + +/** + * This sample demonstrates how to delete an AppLinkMember. + * + * @summary delete an AppLinkMember. + * x-ms-original-file: 2025-08-01-preview/AppLinkMembers_Delete.json + */ +async function appLinkMembersDelete(): Promise { + const credential = new DefaultAzureCredential(); + const subscriptionId = "11809CA1-E126-4017-945E-AA795CD5C5A9"; + const client = new AppLinkClient(credential, subscriptionId); + await client.appLinkMembers.delete("test_rg", "applink-test-01", "member-01"); +} + +async function main(): Promise { + await appLinkMembersDelete(); +} + +main().catch(console.error); diff --git a/sdk/applink/arm-applink/samples-dev/appLinkMembersGetSample.ts b/sdk/applink/arm-applink/samples-dev/appLinkMembersGetSample.ts new file mode 100644 index 000000000000..a24b319daaec --- /dev/null +++ b/sdk/applink/arm-applink/samples-dev/appLinkMembersGetSample.ts @@ -0,0 +1,25 @@ +// Copyright (c) Microsoft Corporation. +// Licensed under the MIT License. + +import { AppLinkClient } from "@azure/arm-applink"; +import { DefaultAzureCredential } from "@azure/identity"; + +/** + * This sample demonstrates how to get an AppLinkMember. + * + * @summary get an AppLinkMember. + * x-ms-original-file: 2025-08-01-preview/AppLinkMembers_Get.json + */ +async function appLinkMembersGet(): Promise { + const credential = new DefaultAzureCredential(); + const subscriptionId = "11809CA1-E126-4017-945E-AA795CD5C5A9"; + const client = new AppLinkClient(credential, subscriptionId); + const result = await client.appLinkMembers.get("test_rg", "applink-test-01", "member-01"); + console.log(result); +} + +async function main(): Promise { + await appLinkMembersGet(); +} + +main().catch(console.error); diff --git a/sdk/applink/arm-applink/samples-dev/appLinkMembersListByAppLinkSample.ts b/sdk/applink/arm-applink/samples-dev/appLinkMembersListByAppLinkSample.ts new file mode 100644 index 000000000000..3ccf612ab129 --- /dev/null +++ b/sdk/applink/arm-applink/samples-dev/appLinkMembersListByAppLinkSample.ts @@ -0,0 +1,29 @@ +// Copyright (c) Microsoft Corporation. +// Licensed under the MIT License. + +import { AppLinkClient } from "@azure/arm-applink"; +import { DefaultAzureCredential } from "@azure/identity"; + +/** + * This sample demonstrates how to list AppLinkMember resources by AppLink. + * + * @summary list AppLinkMember resources by AppLink. + * x-ms-original-file: 2025-08-01-preview/AppLinkMembers_ListByAppLink.json + */ +async function appLinkMembersListByAppLink(): Promise { + const credential = new DefaultAzureCredential(); + const subscriptionId = "11809CA1-E126-4017-945E-AA795CD5C5A9"; + const client = new AppLinkClient(credential, subscriptionId); + const resArray = new Array(); + for await (const item of client.appLinkMembers.listByAppLink("test_rg", "applink-test-01")) { + resArray.push(item); + } + + console.log(resArray); +} + +async function main(): Promise { + await appLinkMembersListByAppLink(); +} + +main().catch(console.error); diff --git a/sdk/applink/arm-applink/samples-dev/appLinkMembersUpdateSample.ts b/sdk/applink/arm-applink/samples-dev/appLinkMembersUpdateSample.ts new file mode 100644 index 000000000000..6192a208006f --- /dev/null +++ b/sdk/applink/arm-applink/samples-dev/appLinkMembersUpdateSample.ts @@ -0,0 +1,31 @@ +// Copyright (c) Microsoft Corporation. +// Licensed under the MIT License. + +import { AppLinkClient } from "@azure/arm-applink"; +import { DefaultAzureCredential } from "@azure/identity"; + +/** + * This sample demonstrates how to update an AppLinkMember. + * + * @summary update an AppLinkMember. + * x-ms-original-file: 2025-08-01-preview/AppLinkMembers_Update.json + */ +async function appLinkMembersUpdate(): Promise { + const credential = new DefaultAzureCredential(); + const subscriptionId = "11809CA1-E126-4017-945E-AA795CD5C5A9"; + const client = new AppLinkClient(credential, subscriptionId); + const result = await client.appLinkMembers.update("test_rg", "applink-test-01", "member-01", { + tags: { key7952: "updated_tag_value" }, + properties: { + upgradeProfile: { mode: "SelfManaged", selfManagedUpgradeProfile: { version: "1.26" } }, + connectivityProfile: { eastWestGateway: { visibility: "Internal" } }, + }, + }); + console.log(result); +} + +async function main(): Promise { + await appLinkMembersUpdate(); +} + +main().catch(console.error); diff --git a/sdk/applink/arm-applink/samples-dev/appLinksCreateOrUpdateSample.ts b/sdk/applink/arm-applink/samples-dev/appLinksCreateOrUpdateSample.ts new file mode 100644 index 000000000000..0496f40dc40e --- /dev/null +++ b/sdk/applink/arm-applink/samples-dev/appLinksCreateOrUpdateSample.ts @@ -0,0 +1,30 @@ +// Copyright (c) Microsoft Corporation. +// Licensed under the MIT License. + +import { AppLinkClient } from "@azure/arm-applink"; +import { DefaultAzureCredential } from "@azure/identity"; + +/** + * This sample demonstrates how to create an AppLink. + * + * @summary create an AppLink. + * x-ms-original-file: 2025-08-01-preview/AppLinks_CreateOrUpdate.json + */ +async function appLinksCreateOrUpdate(): Promise { + const credential = new DefaultAzureCredential(); + const subscriptionId = "11809CA1-E126-4017-945E-AA795CD5C5A9"; + const client = new AppLinkClient(credential, subscriptionId); + const result = await client.appLinks.createOrUpdate("test_rg", "applink-test-01", { + properties: {}, + identity: { type: "SystemAssigned" }, + tags: { key2913: "test_tag" }, + location: "westus2", + }); + console.log(result); +} + +async function main(): Promise { + await appLinksCreateOrUpdate(); +} + +main().catch(console.error); diff --git a/sdk/applink/arm-applink/samples-dev/appLinksDeleteSample.ts b/sdk/applink/arm-applink/samples-dev/appLinksDeleteSample.ts new file mode 100644 index 000000000000..085bfad02e38 --- /dev/null +++ b/sdk/applink/arm-applink/samples-dev/appLinksDeleteSample.ts @@ -0,0 +1,24 @@ +// Copyright (c) Microsoft Corporation. +// Licensed under the MIT License. + +import { AppLinkClient } from "@azure/arm-applink"; +import { DefaultAzureCredential } from "@azure/identity"; + +/** + * This sample demonstrates how to delete an AppLink. + * + * @summary delete an AppLink. + * x-ms-original-file: 2025-08-01-preview/AppLinks_Delete.json + */ +async function appLinksDelete(): Promise { + const credential = new DefaultAzureCredential(); + const subscriptionId = "11809CA1-E126-4017-945E-AA795CD5C5A9"; + const client = new AppLinkClient(credential, subscriptionId); + await client.appLinks.delete("test_rg", "applink-test-01"); +} + +async function main(): Promise { + await appLinksDelete(); +} + +main().catch(console.error); diff --git a/sdk/applink/arm-applink/samples-dev/appLinksGetSample.ts b/sdk/applink/arm-applink/samples-dev/appLinksGetSample.ts new file mode 100644 index 000000000000..e2192b6a7826 --- /dev/null +++ b/sdk/applink/arm-applink/samples-dev/appLinksGetSample.ts @@ -0,0 +1,25 @@ +// Copyright (c) Microsoft Corporation. +// Licensed under the MIT License. + +import { AppLinkClient } from "@azure/arm-applink"; +import { DefaultAzureCredential } from "@azure/identity"; + +/** + * This sample demonstrates how to get an AppLink. + * + * @summary get an AppLink. + * x-ms-original-file: 2025-08-01-preview/AppLinks_Get.json + */ +async function appLinksGet(): Promise { + const credential = new DefaultAzureCredential(); + const subscriptionId = "11809CA1-E126-4017-945E-AA795CD5C5A9"; + const client = new AppLinkClient(credential, subscriptionId); + const result = await client.appLinks.get("test_rg", "applink-test-01"); + console.log(result); +} + +async function main(): Promise { + await appLinksGet(); +} + +main().catch(console.error); diff --git a/sdk/applink/arm-applink/samples-dev/appLinksListByResourceGroupSample.ts b/sdk/applink/arm-applink/samples-dev/appLinksListByResourceGroupSample.ts new file mode 100644 index 000000000000..d21515dad04b --- /dev/null +++ b/sdk/applink/arm-applink/samples-dev/appLinksListByResourceGroupSample.ts @@ -0,0 +1,29 @@ +// Copyright (c) Microsoft Corporation. +// Licensed under the MIT License. + +import { AppLinkClient } from "@azure/arm-applink"; +import { DefaultAzureCredential } from "@azure/identity"; + +/** + * This sample demonstrates how to list AppLink resources by resource group. + * + * @summary list AppLink resources by resource group. + * x-ms-original-file: 2025-08-01-preview/AppLinks_ListByResourceGroup.json + */ +async function appLinksListByResourceGroup(): Promise { + const credential = new DefaultAzureCredential(); + const subscriptionId = "11809CA1-E126-4017-945E-AA795CD5C5A9"; + const client = new AppLinkClient(credential, subscriptionId); + const resArray = new Array(); + for await (const item of client.appLinks.listByResourceGroup("test_rg")) { + resArray.push(item); + } + + console.log(resArray); +} + +async function main(): Promise { + await appLinksListByResourceGroup(); +} + +main().catch(console.error); diff --git a/sdk/applink/arm-applink/samples-dev/appLinksListBySubscriptionSample.ts b/sdk/applink/arm-applink/samples-dev/appLinksListBySubscriptionSample.ts new file mode 100644 index 000000000000..3fba8d5bfbbd --- /dev/null +++ b/sdk/applink/arm-applink/samples-dev/appLinksListBySubscriptionSample.ts @@ -0,0 +1,29 @@ +// Copyright (c) Microsoft Corporation. +// Licensed under the MIT License. + +import { AppLinkClient } from "@azure/arm-applink"; +import { DefaultAzureCredential } from "@azure/identity"; + +/** + * This sample demonstrates how to list AppLink resources by subscription. + * + * @summary list AppLink resources by subscription. + * x-ms-original-file: 2025-08-01-preview/AppLinks_ListBySubscription.json + */ +async function appLinksListBySubscription(): Promise { + const credential = new DefaultAzureCredential(); + const subscriptionId = "11809CA1-E126-4017-945E-AA795CD5C5A9"; + const client = new AppLinkClient(credential, subscriptionId); + const resArray = new Array(); + for await (const item of client.appLinks.listBySubscription()) { + resArray.push(item); + } + + console.log(resArray); +} + +async function main(): Promise { + await appLinksListBySubscription(); +} + +main().catch(console.error); diff --git a/sdk/applink/arm-applink/samples-dev/appLinksUpdateSample.ts b/sdk/applink/arm-applink/samples-dev/appLinksUpdateSample.ts new file mode 100644 index 000000000000..ed8db0c69d59 --- /dev/null +++ b/sdk/applink/arm-applink/samples-dev/appLinksUpdateSample.ts @@ -0,0 +1,27 @@ +// Copyright (c) Microsoft Corporation. +// Licensed under the MIT License. + +import { AppLinkClient } from "@azure/arm-applink"; +import { DefaultAzureCredential } from "@azure/identity"; + +/** + * This sample demonstrates how to update an AppLink. + * + * @summary update an AppLink. + * x-ms-original-file: 2025-08-01-preview/AppLinks_Update.json + */ +async function appLinksUpdate(): Promise { + const credential = new DefaultAzureCredential(); + const subscriptionId = "11809CA1-E126-4017-945E-AA795CD5C5A9"; + const client = new AppLinkClient(credential, subscriptionId); + const result = await client.appLinks.update("test_rg", "applink-test-01", { + tags: { environment: "production", "cost-center": "platform" }, + }); + console.log(result); +} + +async function main(): Promise { + await appLinksUpdate(); +} + +main().catch(console.error); diff --git a/sdk/applink/arm-applink/samples-dev/availableVersionsListByLocationSample.ts b/sdk/applink/arm-applink/samples-dev/availableVersionsListByLocationSample.ts new file mode 100644 index 000000000000..27f0a86194c5 --- /dev/null +++ b/sdk/applink/arm-applink/samples-dev/availableVersionsListByLocationSample.ts @@ -0,0 +1,50 @@ +// Copyright (c) Microsoft Corporation. +// Licensed under the MIT License. + +import { AppLinkClient } from "@azure/arm-applink"; +import { DefaultAzureCredential } from "@azure/identity"; + +/** + * This sample demonstrates how to list AvailableVersion resources by location. + * + * @summary list AvailableVersion resources by location. + * x-ms-original-file: 2025-08-01-preview/AvailableVersions_ListByLocation.json + */ +async function availableVersionsListByLocation(): Promise { + const credential = new DefaultAzureCredential(); + const subscriptionId = "11809CA1-E126-4017-945E-AA795CD5C5A9"; + const client = new AppLinkClient(credential, subscriptionId); + const resArray = new Array(); + for await (const item of client.availableVersions.listByLocation("westus2")) { + resArray.push(item); + } + + console.log(resArray); +} + +/** + * This sample demonstrates how to list AvailableVersion resources by location. + * + * @summary list AvailableVersion resources by location. + * x-ms-original-file: 2025-08-01-preview/AvailableVersions_ListByLocationWithFilter.json + */ +async function availableVersionsListByLocationWithFilter(): Promise { + const credential = new DefaultAzureCredential(); + const subscriptionId = "11809CA1-E126-4017-945E-AA795CD5C5A9"; + const client = new AppLinkClient(credential, subscriptionId); + const resArray = new Array(); + for await (const item of client.availableVersions.listByLocation("westus2", { + kubernetesVersion: "1.28", + })) { + resArray.push(item); + } + + console.log(resArray); +} + +async function main(): Promise { + await availableVersionsListByLocation(); + await availableVersionsListByLocationWithFilter(); +} + +main().catch(console.error); diff --git a/sdk/applink/arm-applink/samples-dev/operationsListSample.ts b/sdk/applink/arm-applink/samples-dev/operationsListSample.ts new file mode 100644 index 000000000000..77fdacd9cc17 --- /dev/null +++ b/sdk/applink/arm-applink/samples-dev/operationsListSample.ts @@ -0,0 +1,29 @@ +// Copyright (c) Microsoft Corporation. +// Licensed under the MIT License. + +import { AppLinkClient } from "@azure/arm-applink"; +import { DefaultAzureCredential } from "@azure/identity"; + +/** + * This sample demonstrates how to list the operations for the provider + * + * @summary list the operations for the provider + * x-ms-original-file: 2025-08-01-preview/Operations_List.json + */ +async function operationsList(): Promise { + const credential = new DefaultAzureCredential(); + const subscriptionId = "00000000-0000-0000-0000-000000000000"; + const client = new AppLinkClient(credential, subscriptionId); + const resArray = new Array(); + for await (const item of client.operations.list()) { + resArray.push(item); + } + + console.log(resArray); +} + +async function main(): Promise { + await operationsList(); +} + +main().catch(console.error); diff --git a/sdk/applink/arm-applink/samples-dev/upgradeHistoriesListByAppLinkMemberSample.ts b/sdk/applink/arm-applink/samples-dev/upgradeHistoriesListByAppLinkMemberSample.ts new file mode 100644 index 000000000000..fcc6c2320e57 --- /dev/null +++ b/sdk/applink/arm-applink/samples-dev/upgradeHistoriesListByAppLinkMemberSample.ts @@ -0,0 +1,33 @@ +// Copyright (c) Microsoft Corporation. +// Licensed under the MIT License. + +import { AppLinkClient } from "@azure/arm-applink"; +import { DefaultAzureCredential } from "@azure/identity"; + +/** + * This sample demonstrates how to list UpgradeHistory resources by AppLinkMember. + * + * @summary list UpgradeHistory resources by AppLinkMember. + * x-ms-original-file: 2025-08-01-preview/UpgradeHistories_ListByAppLinkMember.json + */ +async function upgradeHistoriesListByAppLinkMember(): Promise { + const credential = new DefaultAzureCredential(); + const subscriptionId = "11809CA1-E126-4017-945E-AA795CD5C5A9"; + const client = new AppLinkClient(credential, subscriptionId); + const resArray = new Array(); + for await (const item of client.upgradeHistories.listByAppLinkMember( + "test_rg", + "applink-test-01", + "member-01", + )) { + resArray.push(item); + } + + console.log(resArray); +} + +async function main(): Promise { + await upgradeHistoriesListByAppLinkMember(); +} + +main().catch(console.error); diff --git a/sdk/applink/arm-applink/samples/v1-beta/javascript/README.md b/sdk/applink/arm-applink/samples/v1-beta/javascript/README.md new file mode 100644 index 000000000000..2db5e8418f9a --- /dev/null +++ b/sdk/applink/arm-applink/samples/v1-beta/javascript/README.md @@ -0,0 +1,76 @@ +# @azure/arm-applink client library samples for JavaScript (Beta) + +These sample programs show how to use the JavaScript client libraries for @azure/arm-applink in some common scenarios. + +| **File Name** | **Description** | +| ----------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------- | +| [appLinkMembersCreateOrUpdateSample.js][applinkmemberscreateorupdatesample] | create an AppLinkMember. x-ms-original-file: 2025-08-01-preview/AppLinkMembers_CreateOrUpdate.json | +| [appLinkMembersDeleteSample.js][applinkmembersdeletesample] | delete an AppLinkMember. x-ms-original-file: 2025-08-01-preview/AppLinkMembers_Delete.json | +| [appLinkMembersGetSample.js][applinkmembersgetsample] | get an AppLinkMember. x-ms-original-file: 2025-08-01-preview/AppLinkMembers_Get.json | +| [appLinkMembersListByAppLinkSample.js][applinkmemberslistbyapplinksample] | list AppLinkMember resources by AppLink. x-ms-original-file: 2025-08-01-preview/AppLinkMembers_ListByAppLink.json | +| [appLinkMembersUpdateSample.js][applinkmembersupdatesample] | update an AppLinkMember. x-ms-original-file: 2025-08-01-preview/AppLinkMembers_Update.json | +| [appLinksCreateOrUpdateSample.js][applinkscreateorupdatesample] | create an AppLink. x-ms-original-file: 2025-08-01-preview/AppLinks_CreateOrUpdate.json | +| [appLinksDeleteSample.js][applinksdeletesample] | delete an AppLink. x-ms-original-file: 2025-08-01-preview/AppLinks_Delete.json | +| [appLinksGetSample.js][applinksgetsample] | get an AppLink. x-ms-original-file: 2025-08-01-preview/AppLinks_Get.json | +| [appLinksListByResourceGroupSample.js][applinkslistbyresourcegroupsample] | list AppLink resources by resource group. x-ms-original-file: 2025-08-01-preview/AppLinks_ListByResourceGroup.json | +| [appLinksListBySubscriptionSample.js][applinkslistbysubscriptionsample] | list AppLink resources by subscription. x-ms-original-file: 2025-08-01-preview/AppLinks_ListBySubscription.json | +| [appLinksUpdateSample.js][applinksupdatesample] | update an AppLink. x-ms-original-file: 2025-08-01-preview/AppLinks_Update.json | +| [availableVersionsListByLocationSample.js][availableversionslistbylocationsample] | list AvailableVersion resources by location. x-ms-original-file: 2025-08-01-preview/AvailableVersions_ListByLocation.json | +| [operationsListSample.js][operationslistsample] | list the operations for the provider x-ms-original-file: 2025-08-01-preview/Operations_List.json | +| [upgradeHistoriesListByAppLinkMemberSample.js][upgradehistorieslistbyapplinkmembersample] | list UpgradeHistory resources by AppLinkMember. x-ms-original-file: 2025-08-01-preview/UpgradeHistories_ListByAppLinkMember.json | + +## Prerequisites + +The sample programs are compatible with [LTS versions of Node.js](https://github.com/nodejs/release#release-schedule). + +You need [an Azure subscription][freesub] to run these sample programs. + +Samples retrieve credentials to access the service endpoint from environment variables. Alternatively, edit the source code to include the appropriate credentials. See each individual sample for details on which environment variables/credentials it requires to function. + +Adapting the samples to run in the browser may require some additional consideration. For details, please see the [package README][package]. + +## Setup + +To run the samples using the published version of the package: + +1. Install the dependencies using `npm`: + +```bash +npm install +``` + +2. Edit the file `sample.env`, adding the correct credentials to access the Azure service and run the samples. Then rename the file from `sample.env` to just `.env`. The sample programs will read this file automatically. + +3. Run whichever samples you like (note that some samples may require additional setup, see the table above): + +```bash +node appLinkMembersCreateOrUpdateSample.js +``` + +Alternatively, run a single sample with the required environment variables set (setting up the `.env` file is not required if you do this), for example (cross-platform): + +```bash +node appLinkMembersCreateOrUpdateSample.js +``` + +## Next Steps + +Take a look at our [API Documentation][apiref] for more information about the APIs that are available in the clients. + +[applinkmemberscreateorupdatesample]: https://github.com/Azure/azure-sdk-for-js/blob/main/sdk/applink/arm-applink/samples/v1-beta/javascript/appLinkMembersCreateOrUpdateSample.js +[applinkmembersdeletesample]: https://github.com/Azure/azure-sdk-for-js/blob/main/sdk/applink/arm-applink/samples/v1-beta/javascript/appLinkMembersDeleteSample.js +[applinkmembersgetsample]: https://github.com/Azure/azure-sdk-for-js/blob/main/sdk/applink/arm-applink/samples/v1-beta/javascript/appLinkMembersGetSample.js +[applinkmemberslistbyapplinksample]: https://github.com/Azure/azure-sdk-for-js/blob/main/sdk/applink/arm-applink/samples/v1-beta/javascript/appLinkMembersListByAppLinkSample.js +[applinkmembersupdatesample]: https://github.com/Azure/azure-sdk-for-js/blob/main/sdk/applink/arm-applink/samples/v1-beta/javascript/appLinkMembersUpdateSample.js +[applinkscreateorupdatesample]: https://github.com/Azure/azure-sdk-for-js/blob/main/sdk/applink/arm-applink/samples/v1-beta/javascript/appLinksCreateOrUpdateSample.js +[applinksdeletesample]: https://github.com/Azure/azure-sdk-for-js/blob/main/sdk/applink/arm-applink/samples/v1-beta/javascript/appLinksDeleteSample.js +[applinksgetsample]: https://github.com/Azure/azure-sdk-for-js/blob/main/sdk/applink/arm-applink/samples/v1-beta/javascript/appLinksGetSample.js +[applinkslistbyresourcegroupsample]: https://github.com/Azure/azure-sdk-for-js/blob/main/sdk/applink/arm-applink/samples/v1-beta/javascript/appLinksListByResourceGroupSample.js +[applinkslistbysubscriptionsample]: https://github.com/Azure/azure-sdk-for-js/blob/main/sdk/applink/arm-applink/samples/v1-beta/javascript/appLinksListBySubscriptionSample.js +[applinksupdatesample]: https://github.com/Azure/azure-sdk-for-js/blob/main/sdk/applink/arm-applink/samples/v1-beta/javascript/appLinksUpdateSample.js +[availableversionslistbylocationsample]: https://github.com/Azure/azure-sdk-for-js/blob/main/sdk/applink/arm-applink/samples/v1-beta/javascript/availableVersionsListByLocationSample.js +[operationslistsample]: https://github.com/Azure/azure-sdk-for-js/blob/main/sdk/applink/arm-applink/samples/v1-beta/javascript/operationsListSample.js +[upgradehistorieslistbyapplinkmembersample]: https://github.com/Azure/azure-sdk-for-js/blob/main/sdk/applink/arm-applink/samples/v1-beta/javascript/upgradeHistoriesListByAppLinkMemberSample.js +[apiref]: https://learn.microsoft.com/javascript/api/@azure/arm-applink?view=azure-node-preview +[freesub]: https://azure.microsoft.com/free/ +[package]: https://github.com/Azure/azure-sdk-for-js/tree/main/sdk/applink/arm-applink/README.md diff --git a/sdk/applink/arm-applink/samples/v1-beta/javascript/appLinkMembersCreateOrUpdateSample.js b/sdk/applink/arm-applink/samples/v1-beta/javascript/appLinkMembersCreateOrUpdateSample.js new file mode 100644 index 000000000000..9b15ebb1a277 --- /dev/null +++ b/sdk/applink/arm-applink/samples/v1-beta/javascript/appLinkMembersCreateOrUpdateSample.js @@ -0,0 +1,51 @@ +// Copyright (c) Microsoft Corporation. +// Licensed under the MIT License. + +const { AppLinkClient } = require("@azure/arm-applink"); +const { DefaultAzureCredential } = require("@azure/identity"); + +/** + * This sample demonstrates how to create an AppLinkMember. + * + * @summary create an AppLinkMember. + * x-ms-original-file: 2025-08-01-preview/AppLinkMembers_CreateOrUpdate.json + */ +async function appLinkMembersCreateOrUpdate() { + const credential = new DefaultAzureCredential(); + const subscriptionId = "11809CA1-E126-4017-945E-AA795CD5C5A9"; + const client = new AppLinkClient(credential, subscriptionId); + const result = await client.appLinkMembers.createOrUpdate( + "test_rg", + "applink-test-01", + "member-01", + { + properties: { + clusterType: "AKS", + metadata: { + resourceId: + "/subscriptions/bc7e0da9-5e4c-4a91-9252-9658837006cf/resourcegroups/applink-rg/providers/Microsoft.ContainerService/managedClusters/applink-member1", + }, + upgradeProfile: { + mode: "FullyManaged", + fullyManagedUpgradeProfile: { releaseChannel: "Stable" }, + }, + connectivityProfile: { + privateConnect: { + subnetResourceId: + "/subscriptions/bc7e0da9-5e4c-4a91-9252-9658837006cf/resourceGroups/applink-vnet-rg/providers/Microsoft.Network/virtualNetworks/vnet1/subnets/subnet1", + }, + eastWestGateway: { visibility: "Internal" }, + }, + }, + tags: { key2913: "test_tag" }, + location: "westus2", + }, + ); + console.log(result); +} + +async function main() { + await appLinkMembersCreateOrUpdate(); +} + +main().catch(console.error); diff --git a/sdk/applink/arm-applink/samples/v1-beta/javascript/appLinkMembersDeleteSample.js b/sdk/applink/arm-applink/samples/v1-beta/javascript/appLinkMembersDeleteSample.js new file mode 100644 index 000000000000..aebc427fbb25 --- /dev/null +++ b/sdk/applink/arm-applink/samples/v1-beta/javascript/appLinkMembersDeleteSample.js @@ -0,0 +1,24 @@ +// Copyright (c) Microsoft Corporation. +// Licensed under the MIT License. + +const { AppLinkClient } = require("@azure/arm-applink"); +const { DefaultAzureCredential } = require("@azure/identity"); + +/** + * This sample demonstrates how to delete an AppLinkMember. + * + * @summary delete an AppLinkMember. + * x-ms-original-file: 2025-08-01-preview/AppLinkMembers_Delete.json + */ +async function appLinkMembersDelete() { + const credential = new DefaultAzureCredential(); + const subscriptionId = "11809CA1-E126-4017-945E-AA795CD5C5A9"; + const client = new AppLinkClient(credential, subscriptionId); + await client.appLinkMembers.delete("test_rg", "applink-test-01", "member-01"); +} + +async function main() { + await appLinkMembersDelete(); +} + +main().catch(console.error); diff --git a/sdk/applink/arm-applink/samples/v1-beta/javascript/appLinkMembersGetSample.js b/sdk/applink/arm-applink/samples/v1-beta/javascript/appLinkMembersGetSample.js new file mode 100644 index 000000000000..c64e34c0214d --- /dev/null +++ b/sdk/applink/arm-applink/samples/v1-beta/javascript/appLinkMembersGetSample.js @@ -0,0 +1,25 @@ +// Copyright (c) Microsoft Corporation. +// Licensed under the MIT License. + +const { AppLinkClient } = require("@azure/arm-applink"); +const { DefaultAzureCredential } = require("@azure/identity"); + +/** + * This sample demonstrates how to get an AppLinkMember. + * + * @summary get an AppLinkMember. + * x-ms-original-file: 2025-08-01-preview/AppLinkMembers_Get.json + */ +async function appLinkMembersGet() { + const credential = new DefaultAzureCredential(); + const subscriptionId = "11809CA1-E126-4017-945E-AA795CD5C5A9"; + const client = new AppLinkClient(credential, subscriptionId); + const result = await client.appLinkMembers.get("test_rg", "applink-test-01", "member-01"); + console.log(result); +} + +async function main() { + await appLinkMembersGet(); +} + +main().catch(console.error); diff --git a/sdk/applink/arm-applink/samples/v1-beta/javascript/appLinkMembersListByAppLinkSample.js b/sdk/applink/arm-applink/samples/v1-beta/javascript/appLinkMembersListByAppLinkSample.js new file mode 100644 index 000000000000..2c5f3d38f7c7 --- /dev/null +++ b/sdk/applink/arm-applink/samples/v1-beta/javascript/appLinkMembersListByAppLinkSample.js @@ -0,0 +1,29 @@ +// Copyright (c) Microsoft Corporation. +// Licensed under the MIT License. + +const { AppLinkClient } = require("@azure/arm-applink"); +const { DefaultAzureCredential } = require("@azure/identity"); + +/** + * This sample demonstrates how to list AppLinkMember resources by AppLink. + * + * @summary list AppLinkMember resources by AppLink. + * x-ms-original-file: 2025-08-01-preview/AppLinkMembers_ListByAppLink.json + */ +async function appLinkMembersListByAppLink() { + const credential = new DefaultAzureCredential(); + const subscriptionId = "11809CA1-E126-4017-945E-AA795CD5C5A9"; + const client = new AppLinkClient(credential, subscriptionId); + const resArray = new Array(); + for await (const item of client.appLinkMembers.listByAppLink("test_rg", "applink-test-01")) { + resArray.push(item); + } + + console.log(resArray); +} + +async function main() { + await appLinkMembersListByAppLink(); +} + +main().catch(console.error); diff --git a/sdk/applink/arm-applink/samples/v1-beta/javascript/appLinkMembersUpdateSample.js b/sdk/applink/arm-applink/samples/v1-beta/javascript/appLinkMembersUpdateSample.js new file mode 100644 index 000000000000..ec950279e9f4 --- /dev/null +++ b/sdk/applink/arm-applink/samples/v1-beta/javascript/appLinkMembersUpdateSample.js @@ -0,0 +1,31 @@ +// Copyright (c) Microsoft Corporation. +// Licensed under the MIT License. + +const { AppLinkClient } = require("@azure/arm-applink"); +const { DefaultAzureCredential } = require("@azure/identity"); + +/** + * This sample demonstrates how to update an AppLinkMember. + * + * @summary update an AppLinkMember. + * x-ms-original-file: 2025-08-01-preview/AppLinkMembers_Update.json + */ +async function appLinkMembersUpdate() { + const credential = new DefaultAzureCredential(); + const subscriptionId = "11809CA1-E126-4017-945E-AA795CD5C5A9"; + const client = new AppLinkClient(credential, subscriptionId); + const result = await client.appLinkMembers.update("test_rg", "applink-test-01", "member-01", { + tags: { key7952: "updated_tag_value" }, + properties: { + upgradeProfile: { mode: "SelfManaged", selfManagedUpgradeProfile: { version: "1.26" } }, + connectivityProfile: { eastWestGateway: { visibility: "Internal" } }, + }, + }); + console.log(result); +} + +async function main() { + await appLinkMembersUpdate(); +} + +main().catch(console.error); diff --git a/sdk/applink/arm-applink/samples/v1-beta/javascript/appLinksCreateOrUpdateSample.js b/sdk/applink/arm-applink/samples/v1-beta/javascript/appLinksCreateOrUpdateSample.js new file mode 100644 index 000000000000..a46cd77e067f --- /dev/null +++ b/sdk/applink/arm-applink/samples/v1-beta/javascript/appLinksCreateOrUpdateSample.js @@ -0,0 +1,30 @@ +// Copyright (c) Microsoft Corporation. +// Licensed under the MIT License. + +const { AppLinkClient } = require("@azure/arm-applink"); +const { DefaultAzureCredential } = require("@azure/identity"); + +/** + * This sample demonstrates how to create an AppLink. + * + * @summary create an AppLink. + * x-ms-original-file: 2025-08-01-preview/AppLinks_CreateOrUpdate.json + */ +async function appLinksCreateOrUpdate() { + const credential = new DefaultAzureCredential(); + const subscriptionId = "11809CA1-E126-4017-945E-AA795CD5C5A9"; + const client = new AppLinkClient(credential, subscriptionId); + const result = await client.appLinks.createOrUpdate("test_rg", "applink-test-01", { + properties: {}, + identity: { type: "SystemAssigned" }, + tags: { key2913: "test_tag" }, + location: "westus2", + }); + console.log(result); +} + +async function main() { + await appLinksCreateOrUpdate(); +} + +main().catch(console.error); diff --git a/sdk/applink/arm-applink/samples/v1-beta/javascript/appLinksDeleteSample.js b/sdk/applink/arm-applink/samples/v1-beta/javascript/appLinksDeleteSample.js new file mode 100644 index 000000000000..4911504cdb6e --- /dev/null +++ b/sdk/applink/arm-applink/samples/v1-beta/javascript/appLinksDeleteSample.js @@ -0,0 +1,24 @@ +// Copyright (c) Microsoft Corporation. +// Licensed under the MIT License. + +const { AppLinkClient } = require("@azure/arm-applink"); +const { DefaultAzureCredential } = require("@azure/identity"); + +/** + * This sample demonstrates how to delete an AppLink. + * + * @summary delete an AppLink. + * x-ms-original-file: 2025-08-01-preview/AppLinks_Delete.json + */ +async function appLinksDelete() { + const credential = new DefaultAzureCredential(); + const subscriptionId = "11809CA1-E126-4017-945E-AA795CD5C5A9"; + const client = new AppLinkClient(credential, subscriptionId); + await client.appLinks.delete("test_rg", "applink-test-01"); +} + +async function main() { + await appLinksDelete(); +} + +main().catch(console.error); diff --git a/sdk/applink/arm-applink/samples/v1-beta/javascript/appLinksGetSample.js b/sdk/applink/arm-applink/samples/v1-beta/javascript/appLinksGetSample.js new file mode 100644 index 000000000000..346957c0b3cc --- /dev/null +++ b/sdk/applink/arm-applink/samples/v1-beta/javascript/appLinksGetSample.js @@ -0,0 +1,25 @@ +// Copyright (c) Microsoft Corporation. +// Licensed under the MIT License. + +const { AppLinkClient } = require("@azure/arm-applink"); +const { DefaultAzureCredential } = require("@azure/identity"); + +/** + * This sample demonstrates how to get an AppLink. + * + * @summary get an AppLink. + * x-ms-original-file: 2025-08-01-preview/AppLinks_Get.json + */ +async function appLinksGet() { + const credential = new DefaultAzureCredential(); + const subscriptionId = "11809CA1-E126-4017-945E-AA795CD5C5A9"; + const client = new AppLinkClient(credential, subscriptionId); + const result = await client.appLinks.get("test_rg", "applink-test-01"); + console.log(result); +} + +async function main() { + await appLinksGet(); +} + +main().catch(console.error); diff --git a/sdk/applink/arm-applink/samples/v1-beta/javascript/appLinksListByResourceGroupSample.js b/sdk/applink/arm-applink/samples/v1-beta/javascript/appLinksListByResourceGroupSample.js new file mode 100644 index 000000000000..24b7dde3381d --- /dev/null +++ b/sdk/applink/arm-applink/samples/v1-beta/javascript/appLinksListByResourceGroupSample.js @@ -0,0 +1,29 @@ +// Copyright (c) Microsoft Corporation. +// Licensed under the MIT License. + +const { AppLinkClient } = require("@azure/arm-applink"); +const { DefaultAzureCredential } = require("@azure/identity"); + +/** + * This sample demonstrates how to list AppLink resources by resource group. + * + * @summary list AppLink resources by resource group. + * x-ms-original-file: 2025-08-01-preview/AppLinks_ListByResourceGroup.json + */ +async function appLinksListByResourceGroup() { + const credential = new DefaultAzureCredential(); + const subscriptionId = "11809CA1-E126-4017-945E-AA795CD5C5A9"; + const client = new AppLinkClient(credential, subscriptionId); + const resArray = new Array(); + for await (const item of client.appLinks.listByResourceGroup("test_rg")) { + resArray.push(item); + } + + console.log(resArray); +} + +async function main() { + await appLinksListByResourceGroup(); +} + +main().catch(console.error); diff --git a/sdk/applink/arm-applink/samples/v1-beta/javascript/appLinksListBySubscriptionSample.js b/sdk/applink/arm-applink/samples/v1-beta/javascript/appLinksListBySubscriptionSample.js new file mode 100644 index 000000000000..9f0bab97bd62 --- /dev/null +++ b/sdk/applink/arm-applink/samples/v1-beta/javascript/appLinksListBySubscriptionSample.js @@ -0,0 +1,29 @@ +// Copyright (c) Microsoft Corporation. +// Licensed under the MIT License. + +const { AppLinkClient } = require("@azure/arm-applink"); +const { DefaultAzureCredential } = require("@azure/identity"); + +/** + * This sample demonstrates how to list AppLink resources by subscription. + * + * @summary list AppLink resources by subscription. + * x-ms-original-file: 2025-08-01-preview/AppLinks_ListBySubscription.json + */ +async function appLinksListBySubscription() { + const credential = new DefaultAzureCredential(); + const subscriptionId = "11809CA1-E126-4017-945E-AA795CD5C5A9"; + const client = new AppLinkClient(credential, subscriptionId); + const resArray = new Array(); + for await (const item of client.appLinks.listBySubscription()) { + resArray.push(item); + } + + console.log(resArray); +} + +async function main() { + await appLinksListBySubscription(); +} + +main().catch(console.error); diff --git a/sdk/applink/arm-applink/samples/v1-beta/javascript/appLinksUpdateSample.js b/sdk/applink/arm-applink/samples/v1-beta/javascript/appLinksUpdateSample.js new file mode 100644 index 000000000000..2fb6727eca90 --- /dev/null +++ b/sdk/applink/arm-applink/samples/v1-beta/javascript/appLinksUpdateSample.js @@ -0,0 +1,27 @@ +// Copyright (c) Microsoft Corporation. +// Licensed under the MIT License. + +const { AppLinkClient } = require("@azure/arm-applink"); +const { DefaultAzureCredential } = require("@azure/identity"); + +/** + * This sample demonstrates how to update an AppLink. + * + * @summary update an AppLink. + * x-ms-original-file: 2025-08-01-preview/AppLinks_Update.json + */ +async function appLinksUpdate() { + const credential = new DefaultAzureCredential(); + const subscriptionId = "11809CA1-E126-4017-945E-AA795CD5C5A9"; + const client = new AppLinkClient(credential, subscriptionId); + const result = await client.appLinks.update("test_rg", "applink-test-01", { + tags: { environment: "production", "cost-center": "platform" }, + }); + console.log(result); +} + +async function main() { + await appLinksUpdate(); +} + +main().catch(console.error); diff --git a/sdk/applink/arm-applink/samples/v1-beta/javascript/availableVersionsListByLocationSample.js b/sdk/applink/arm-applink/samples/v1-beta/javascript/availableVersionsListByLocationSample.js new file mode 100644 index 000000000000..f86d451e2340 --- /dev/null +++ b/sdk/applink/arm-applink/samples/v1-beta/javascript/availableVersionsListByLocationSample.js @@ -0,0 +1,50 @@ +// Copyright (c) Microsoft Corporation. +// Licensed under the MIT License. + +const { AppLinkClient } = require("@azure/arm-applink"); +const { DefaultAzureCredential } = require("@azure/identity"); + +/** + * This sample demonstrates how to list AvailableVersion resources by location. + * + * @summary list AvailableVersion resources by location. + * x-ms-original-file: 2025-08-01-preview/AvailableVersions_ListByLocation.json + */ +async function availableVersionsListByLocation() { + const credential = new DefaultAzureCredential(); + const subscriptionId = "11809CA1-E126-4017-945E-AA795CD5C5A9"; + const client = new AppLinkClient(credential, subscriptionId); + const resArray = new Array(); + for await (const item of client.availableVersions.listByLocation("westus2")) { + resArray.push(item); + } + + console.log(resArray); +} + +/** + * This sample demonstrates how to list AvailableVersion resources by location. + * + * @summary list AvailableVersion resources by location. + * x-ms-original-file: 2025-08-01-preview/AvailableVersions_ListByLocationWithFilter.json + */ +async function availableVersionsListByLocationWithFilter() { + const credential = new DefaultAzureCredential(); + const subscriptionId = "11809CA1-E126-4017-945E-AA795CD5C5A9"; + const client = new AppLinkClient(credential, subscriptionId); + const resArray = new Array(); + for await (const item of client.availableVersions.listByLocation("westus2", { + kubernetesVersion: "1.28", + })) { + resArray.push(item); + } + + console.log(resArray); +} + +async function main() { + await availableVersionsListByLocation(); + await availableVersionsListByLocationWithFilter(); +} + +main().catch(console.error); diff --git a/sdk/applink/arm-applink/samples/v1-beta/javascript/operationsListSample.js b/sdk/applink/arm-applink/samples/v1-beta/javascript/operationsListSample.js new file mode 100644 index 000000000000..9c0621ad3bce --- /dev/null +++ b/sdk/applink/arm-applink/samples/v1-beta/javascript/operationsListSample.js @@ -0,0 +1,29 @@ +// Copyright (c) Microsoft Corporation. +// Licensed under the MIT License. + +const { AppLinkClient } = require("@azure/arm-applink"); +const { DefaultAzureCredential } = require("@azure/identity"); + +/** + * This sample demonstrates how to list the operations for the provider + * + * @summary list the operations for the provider + * x-ms-original-file: 2025-08-01-preview/Operations_List.json + */ +async function operationsList() { + const credential = new DefaultAzureCredential(); + const subscriptionId = "00000000-0000-0000-0000-000000000000"; + const client = new AppLinkClient(credential, subscriptionId); + const resArray = new Array(); + for await (const item of client.operations.list()) { + resArray.push(item); + } + + console.log(resArray); +} + +async function main() { + await operationsList(); +} + +main().catch(console.error); diff --git a/sdk/applink/arm-applink/samples/v1-beta/javascript/package.json b/sdk/applink/arm-applink/samples/v1-beta/javascript/package.json new file mode 100644 index 000000000000..a4b0ceae19f3 --- /dev/null +++ b/sdk/applink/arm-applink/samples/v1-beta/javascript/package.json @@ -0,0 +1,36 @@ +{ + "name": "@azure-samples/arm-applink-js-beta", + "private": true, + "version": "1.0.0", + "description": "@azure/arm-applink client library samples for JavaScript (Beta)", + "engines": { + "node": ">=20.0.0" + }, + "repository": { + "type": "git", + "url": "git+https://github.com/Azure/azure-sdk-for-js.git", + "directory": "sdk/applink/arm-applink" + }, + "keywords": [ + "node", + "azure", + "cloud", + "typescript", + "browser", + "isomorphic" + ], + "author": "Microsoft Corporation", + "license": "MIT", + "bugs": { + "url": "https://github.com/Azure/azure-sdk-for-js/issues" + }, + "homepage": "https://github.com/Azure/azure-sdk-for-js/tree/main/sdk/applink/arm-applink", + "dependencies": { + "@azure/arm-applink": "next", + "dotenv": "latest", + "@azure/identity": "^4.13.0" + }, + "devDependencies": { + "cross-env": "latest" + } +} diff --git a/sdk/applink/arm-applink/samples/v1-beta/javascript/sample.env b/sdk/applink/arm-applink/samples/v1-beta/javascript/sample.env new file mode 100644 index 000000000000..508439fc7d62 --- /dev/null +++ b/sdk/applink/arm-applink/samples/v1-beta/javascript/sample.env @@ -0,0 +1 @@ +# Feel free to add your own environment variables. \ No newline at end of file diff --git a/sdk/applink/arm-applink/samples/v1-beta/javascript/upgradeHistoriesListByAppLinkMemberSample.js b/sdk/applink/arm-applink/samples/v1-beta/javascript/upgradeHistoriesListByAppLinkMemberSample.js new file mode 100644 index 000000000000..ac69d845e360 --- /dev/null +++ b/sdk/applink/arm-applink/samples/v1-beta/javascript/upgradeHistoriesListByAppLinkMemberSample.js @@ -0,0 +1,33 @@ +// Copyright (c) Microsoft Corporation. +// Licensed under the MIT License. + +const { AppLinkClient } = require("@azure/arm-applink"); +const { DefaultAzureCredential } = require("@azure/identity"); + +/** + * This sample demonstrates how to list UpgradeHistory resources by AppLinkMember. + * + * @summary list UpgradeHistory resources by AppLinkMember. + * x-ms-original-file: 2025-08-01-preview/UpgradeHistories_ListByAppLinkMember.json + */ +async function upgradeHistoriesListByAppLinkMember() { + const credential = new DefaultAzureCredential(); + const subscriptionId = "11809CA1-E126-4017-945E-AA795CD5C5A9"; + const client = new AppLinkClient(credential, subscriptionId); + const resArray = new Array(); + for await (const item of client.upgradeHistories.listByAppLinkMember( + "test_rg", + "applink-test-01", + "member-01", + )) { + resArray.push(item); + } + + console.log(resArray); +} + +async function main() { + await upgradeHistoriesListByAppLinkMember(); +} + +main().catch(console.error); diff --git a/sdk/applink/arm-applink/samples/v1-beta/typescript/README.md b/sdk/applink/arm-applink/samples/v1-beta/typescript/README.md new file mode 100644 index 000000000000..edd9184e4d2c --- /dev/null +++ b/sdk/applink/arm-applink/samples/v1-beta/typescript/README.md @@ -0,0 +1,89 @@ +# @azure/arm-applink client library samples for TypeScript (Beta) + +These sample programs show how to use the TypeScript client libraries for @azure/arm-applink in some common scenarios. + +| **File Name** | **Description** | +| ----------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------- | +| [appLinkMembersCreateOrUpdateSample.ts][applinkmemberscreateorupdatesample] | create an AppLinkMember. x-ms-original-file: 2025-08-01-preview/AppLinkMembers_CreateOrUpdate.json | +| [appLinkMembersDeleteSample.ts][applinkmembersdeletesample] | delete an AppLinkMember. x-ms-original-file: 2025-08-01-preview/AppLinkMembers_Delete.json | +| [appLinkMembersGetSample.ts][applinkmembersgetsample] | get an AppLinkMember. x-ms-original-file: 2025-08-01-preview/AppLinkMembers_Get.json | +| [appLinkMembersListByAppLinkSample.ts][applinkmemberslistbyapplinksample] | list AppLinkMember resources by AppLink. x-ms-original-file: 2025-08-01-preview/AppLinkMembers_ListByAppLink.json | +| [appLinkMembersUpdateSample.ts][applinkmembersupdatesample] | update an AppLinkMember. x-ms-original-file: 2025-08-01-preview/AppLinkMembers_Update.json | +| [appLinksCreateOrUpdateSample.ts][applinkscreateorupdatesample] | create an AppLink. x-ms-original-file: 2025-08-01-preview/AppLinks_CreateOrUpdate.json | +| [appLinksDeleteSample.ts][applinksdeletesample] | delete an AppLink. x-ms-original-file: 2025-08-01-preview/AppLinks_Delete.json | +| [appLinksGetSample.ts][applinksgetsample] | get an AppLink. x-ms-original-file: 2025-08-01-preview/AppLinks_Get.json | +| [appLinksListByResourceGroupSample.ts][applinkslistbyresourcegroupsample] | list AppLink resources by resource group. x-ms-original-file: 2025-08-01-preview/AppLinks_ListByResourceGroup.json | +| [appLinksListBySubscriptionSample.ts][applinkslistbysubscriptionsample] | list AppLink resources by subscription. x-ms-original-file: 2025-08-01-preview/AppLinks_ListBySubscription.json | +| [appLinksUpdateSample.ts][applinksupdatesample] | update an AppLink. x-ms-original-file: 2025-08-01-preview/AppLinks_Update.json | +| [availableVersionsListByLocationSample.ts][availableversionslistbylocationsample] | list AvailableVersion resources by location. x-ms-original-file: 2025-08-01-preview/AvailableVersions_ListByLocation.json | +| [operationsListSample.ts][operationslistsample] | list the operations for the provider x-ms-original-file: 2025-08-01-preview/Operations_List.json | +| [upgradeHistoriesListByAppLinkMemberSample.ts][upgradehistorieslistbyapplinkmembersample] | list UpgradeHistory resources by AppLinkMember. x-ms-original-file: 2025-08-01-preview/UpgradeHistories_ListByAppLinkMember.json | + +## Prerequisites + +The sample programs are compatible with [LTS versions of Node.js](https://github.com/nodejs/release#release-schedule). + +Before running the samples in Node, they must be compiled to JavaScript using the TypeScript compiler. For more information on TypeScript, see the [TypeScript documentation][typescript]. Install the TypeScript compiler using: + +```bash +npm install -g typescript +``` + +You need [an Azure subscription][freesub] to run these sample programs. + +Samples retrieve credentials to access the service endpoint from environment variables. Alternatively, edit the source code to include the appropriate credentials. See each individual sample for details on which environment variables/credentials it requires to function. + +Adapting the samples to run in the browser may require some additional consideration. For details, please see the [package README][package]. + +## Setup + +To run the samples using the published version of the package: + +1. Install the dependencies using `npm`: + +```bash +npm install +``` + +2. Compile the samples: + +```bash +npm run build +``` + +3. Edit the file `sample.env`, adding the correct credentials to access the Azure service and run the samples. Then rename the file from `sample.env` to just `.env`. The sample programs will read this file automatically. + +4. Run whichever samples you like (note that some samples may require additional setup, see the table above): + +```bash +node dist/appLinkMembersCreateOrUpdateSample.js +``` + +Alternatively, run a single sample with the required environment variables set (setting up the `.env` file is not required if you do this), for example (cross-platform): + +```bash +node dist/appLinkMembersCreateOrUpdateSample.js +``` + +## Next Steps + +Take a look at our [API Documentation][apiref] for more information about the APIs that are available in the clients. + +[applinkmemberscreateorupdatesample]: https://github.com/Azure/azure-sdk-for-js/blob/main/sdk/applink/arm-applink/samples/v1-beta/typescript/src/appLinkMembersCreateOrUpdateSample.ts +[applinkmembersdeletesample]: https://github.com/Azure/azure-sdk-for-js/blob/main/sdk/applink/arm-applink/samples/v1-beta/typescript/src/appLinkMembersDeleteSample.ts +[applinkmembersgetsample]: https://github.com/Azure/azure-sdk-for-js/blob/main/sdk/applink/arm-applink/samples/v1-beta/typescript/src/appLinkMembersGetSample.ts +[applinkmemberslistbyapplinksample]: https://github.com/Azure/azure-sdk-for-js/blob/main/sdk/applink/arm-applink/samples/v1-beta/typescript/src/appLinkMembersListByAppLinkSample.ts +[applinkmembersupdatesample]: https://github.com/Azure/azure-sdk-for-js/blob/main/sdk/applink/arm-applink/samples/v1-beta/typescript/src/appLinkMembersUpdateSample.ts +[applinkscreateorupdatesample]: https://github.com/Azure/azure-sdk-for-js/blob/main/sdk/applink/arm-applink/samples/v1-beta/typescript/src/appLinksCreateOrUpdateSample.ts +[applinksdeletesample]: https://github.com/Azure/azure-sdk-for-js/blob/main/sdk/applink/arm-applink/samples/v1-beta/typescript/src/appLinksDeleteSample.ts +[applinksgetsample]: https://github.com/Azure/azure-sdk-for-js/blob/main/sdk/applink/arm-applink/samples/v1-beta/typescript/src/appLinksGetSample.ts +[applinkslistbyresourcegroupsample]: https://github.com/Azure/azure-sdk-for-js/blob/main/sdk/applink/arm-applink/samples/v1-beta/typescript/src/appLinksListByResourceGroupSample.ts +[applinkslistbysubscriptionsample]: https://github.com/Azure/azure-sdk-for-js/blob/main/sdk/applink/arm-applink/samples/v1-beta/typescript/src/appLinksListBySubscriptionSample.ts +[applinksupdatesample]: https://github.com/Azure/azure-sdk-for-js/blob/main/sdk/applink/arm-applink/samples/v1-beta/typescript/src/appLinksUpdateSample.ts +[availableversionslistbylocationsample]: https://github.com/Azure/azure-sdk-for-js/blob/main/sdk/applink/arm-applink/samples/v1-beta/typescript/src/availableVersionsListByLocationSample.ts +[operationslistsample]: https://github.com/Azure/azure-sdk-for-js/blob/main/sdk/applink/arm-applink/samples/v1-beta/typescript/src/operationsListSample.ts +[upgradehistorieslistbyapplinkmembersample]: https://github.com/Azure/azure-sdk-for-js/blob/main/sdk/applink/arm-applink/samples/v1-beta/typescript/src/upgradeHistoriesListByAppLinkMemberSample.ts +[apiref]: https://learn.microsoft.com/javascript/api/@azure/arm-applink?view=azure-node-preview +[freesub]: https://azure.microsoft.com/free/ +[package]: https://github.com/Azure/azure-sdk-for-js/tree/main/sdk/applink/arm-applink/README.md +[typescript]: https://www.typescriptlang.org/docs/home.html diff --git a/sdk/applink/arm-applink/samples/v1-beta/typescript/package.json b/sdk/applink/arm-applink/samples/v1-beta/typescript/package.json new file mode 100644 index 000000000000..30fee9aaf317 --- /dev/null +++ b/sdk/applink/arm-applink/samples/v1-beta/typescript/package.json @@ -0,0 +1,43 @@ +{ + "name": "@azure-samples/arm-applink-ts-beta", + "private": true, + "version": "1.0.0", + "description": "@azure/arm-applink client library samples for TypeScript (Beta)", + "engines": { + "node": ">=20.0.0" + }, + "scripts": { + "build": "tsc", + "prebuild": "rimraf dist/" + }, + "repository": { + "type": "git", + "url": "git+https://github.com/Azure/azure-sdk-for-js.git", + "directory": "sdk/applink/arm-applink" + }, + "keywords": [ + "node", + "azure", + "cloud", + "typescript", + "browser", + "isomorphic" + ], + "author": "Microsoft Corporation", + "license": "MIT", + "bugs": { + "url": "https://github.com/Azure/azure-sdk-for-js/issues" + }, + "homepage": "https://github.com/Azure/azure-sdk-for-js/tree/main/sdk/applink/arm-applink", + "dependencies": { + "@azure/arm-applink": "next", + "dotenv": "latest", + "@azure/identity": "^4.13.0" + }, + "devDependencies": { + "@types/node": "^20.0.0", + "cross-env": "latest", + "rimraf": "latest", + "typescript": "~5.9.3" + } +} diff --git a/sdk/applink/arm-applink/samples/v1-beta/typescript/sample.env b/sdk/applink/arm-applink/samples/v1-beta/typescript/sample.env new file mode 100644 index 000000000000..508439fc7d62 --- /dev/null +++ b/sdk/applink/arm-applink/samples/v1-beta/typescript/sample.env @@ -0,0 +1 @@ +# Feel free to add your own environment variables. \ No newline at end of file diff --git a/sdk/applink/arm-applink/samples/v1-beta/typescript/src/appLinkMembersCreateOrUpdateSample.ts b/sdk/applink/arm-applink/samples/v1-beta/typescript/src/appLinkMembersCreateOrUpdateSample.ts new file mode 100644 index 000000000000..5f2a2c5cdd40 --- /dev/null +++ b/sdk/applink/arm-applink/samples/v1-beta/typescript/src/appLinkMembersCreateOrUpdateSample.ts @@ -0,0 +1,51 @@ +// Copyright (c) Microsoft Corporation. +// Licensed under the MIT License. + +import { AppLinkClient } from "@azure/arm-applink"; +import { DefaultAzureCredential } from "@azure/identity"; + +/** + * This sample demonstrates how to create an AppLinkMember. + * + * @summary create an AppLinkMember. + * x-ms-original-file: 2025-08-01-preview/AppLinkMembers_CreateOrUpdate.json + */ +async function appLinkMembersCreateOrUpdate(): Promise { + const credential = new DefaultAzureCredential(); + const subscriptionId = "11809CA1-E126-4017-945E-AA795CD5C5A9"; + const client = new AppLinkClient(credential, subscriptionId); + const result = await client.appLinkMembers.createOrUpdate( + "test_rg", + "applink-test-01", + "member-01", + { + properties: { + clusterType: "AKS", + metadata: { + resourceId: + "/subscriptions/bc7e0da9-5e4c-4a91-9252-9658837006cf/resourcegroups/applink-rg/providers/Microsoft.ContainerService/managedClusters/applink-member1", + }, + upgradeProfile: { + mode: "FullyManaged", + fullyManagedUpgradeProfile: { releaseChannel: "Stable" }, + }, + connectivityProfile: { + privateConnect: { + subnetResourceId: + "/subscriptions/bc7e0da9-5e4c-4a91-9252-9658837006cf/resourceGroups/applink-vnet-rg/providers/Microsoft.Network/virtualNetworks/vnet1/subnets/subnet1", + }, + eastWestGateway: { visibility: "Internal" }, + }, + }, + tags: { key2913: "test_tag" }, + location: "westus2", + }, + ); + console.log(result); +} + +async function main(): Promise { + await appLinkMembersCreateOrUpdate(); +} + +main().catch(console.error); diff --git a/sdk/applink/arm-applink/samples/v1-beta/typescript/src/appLinkMembersDeleteSample.ts b/sdk/applink/arm-applink/samples/v1-beta/typescript/src/appLinkMembersDeleteSample.ts new file mode 100644 index 000000000000..5a39e0240ad6 --- /dev/null +++ b/sdk/applink/arm-applink/samples/v1-beta/typescript/src/appLinkMembersDeleteSample.ts @@ -0,0 +1,24 @@ +// Copyright (c) Microsoft Corporation. +// Licensed under the MIT License. + +import { AppLinkClient } from "@azure/arm-applink"; +import { DefaultAzureCredential } from "@azure/identity"; + +/** + * This sample demonstrates how to delete an AppLinkMember. + * + * @summary delete an AppLinkMember. + * x-ms-original-file: 2025-08-01-preview/AppLinkMembers_Delete.json + */ +async function appLinkMembersDelete(): Promise { + const credential = new DefaultAzureCredential(); + const subscriptionId = "11809CA1-E126-4017-945E-AA795CD5C5A9"; + const client = new AppLinkClient(credential, subscriptionId); + await client.appLinkMembers.delete("test_rg", "applink-test-01", "member-01"); +} + +async function main(): Promise { + await appLinkMembersDelete(); +} + +main().catch(console.error); diff --git a/sdk/applink/arm-applink/samples/v1-beta/typescript/src/appLinkMembersGetSample.ts b/sdk/applink/arm-applink/samples/v1-beta/typescript/src/appLinkMembersGetSample.ts new file mode 100644 index 000000000000..a24b319daaec --- /dev/null +++ b/sdk/applink/arm-applink/samples/v1-beta/typescript/src/appLinkMembersGetSample.ts @@ -0,0 +1,25 @@ +// Copyright (c) Microsoft Corporation. +// Licensed under the MIT License. + +import { AppLinkClient } from "@azure/arm-applink"; +import { DefaultAzureCredential } from "@azure/identity"; + +/** + * This sample demonstrates how to get an AppLinkMember. + * + * @summary get an AppLinkMember. + * x-ms-original-file: 2025-08-01-preview/AppLinkMembers_Get.json + */ +async function appLinkMembersGet(): Promise { + const credential = new DefaultAzureCredential(); + const subscriptionId = "11809CA1-E126-4017-945E-AA795CD5C5A9"; + const client = new AppLinkClient(credential, subscriptionId); + const result = await client.appLinkMembers.get("test_rg", "applink-test-01", "member-01"); + console.log(result); +} + +async function main(): Promise { + await appLinkMembersGet(); +} + +main().catch(console.error); diff --git a/sdk/applink/arm-applink/samples/v1-beta/typescript/src/appLinkMembersListByAppLinkSample.ts b/sdk/applink/arm-applink/samples/v1-beta/typescript/src/appLinkMembersListByAppLinkSample.ts new file mode 100644 index 000000000000..3ccf612ab129 --- /dev/null +++ b/sdk/applink/arm-applink/samples/v1-beta/typescript/src/appLinkMembersListByAppLinkSample.ts @@ -0,0 +1,29 @@ +// Copyright (c) Microsoft Corporation. +// Licensed under the MIT License. + +import { AppLinkClient } from "@azure/arm-applink"; +import { DefaultAzureCredential } from "@azure/identity"; + +/** + * This sample demonstrates how to list AppLinkMember resources by AppLink. + * + * @summary list AppLinkMember resources by AppLink. + * x-ms-original-file: 2025-08-01-preview/AppLinkMembers_ListByAppLink.json + */ +async function appLinkMembersListByAppLink(): Promise { + const credential = new DefaultAzureCredential(); + const subscriptionId = "11809CA1-E126-4017-945E-AA795CD5C5A9"; + const client = new AppLinkClient(credential, subscriptionId); + const resArray = new Array(); + for await (const item of client.appLinkMembers.listByAppLink("test_rg", "applink-test-01")) { + resArray.push(item); + } + + console.log(resArray); +} + +async function main(): Promise { + await appLinkMembersListByAppLink(); +} + +main().catch(console.error); diff --git a/sdk/applink/arm-applink/samples/v1-beta/typescript/src/appLinkMembersUpdateSample.ts b/sdk/applink/arm-applink/samples/v1-beta/typescript/src/appLinkMembersUpdateSample.ts new file mode 100644 index 000000000000..6192a208006f --- /dev/null +++ b/sdk/applink/arm-applink/samples/v1-beta/typescript/src/appLinkMembersUpdateSample.ts @@ -0,0 +1,31 @@ +// Copyright (c) Microsoft Corporation. +// Licensed under the MIT License. + +import { AppLinkClient } from "@azure/arm-applink"; +import { DefaultAzureCredential } from "@azure/identity"; + +/** + * This sample demonstrates how to update an AppLinkMember. + * + * @summary update an AppLinkMember. + * x-ms-original-file: 2025-08-01-preview/AppLinkMembers_Update.json + */ +async function appLinkMembersUpdate(): Promise { + const credential = new DefaultAzureCredential(); + const subscriptionId = "11809CA1-E126-4017-945E-AA795CD5C5A9"; + const client = new AppLinkClient(credential, subscriptionId); + const result = await client.appLinkMembers.update("test_rg", "applink-test-01", "member-01", { + tags: { key7952: "updated_tag_value" }, + properties: { + upgradeProfile: { mode: "SelfManaged", selfManagedUpgradeProfile: { version: "1.26" } }, + connectivityProfile: { eastWestGateway: { visibility: "Internal" } }, + }, + }); + console.log(result); +} + +async function main(): Promise { + await appLinkMembersUpdate(); +} + +main().catch(console.error); diff --git a/sdk/applink/arm-applink/samples/v1-beta/typescript/src/appLinksCreateOrUpdateSample.ts b/sdk/applink/arm-applink/samples/v1-beta/typescript/src/appLinksCreateOrUpdateSample.ts new file mode 100644 index 000000000000..0496f40dc40e --- /dev/null +++ b/sdk/applink/arm-applink/samples/v1-beta/typescript/src/appLinksCreateOrUpdateSample.ts @@ -0,0 +1,30 @@ +// Copyright (c) Microsoft Corporation. +// Licensed under the MIT License. + +import { AppLinkClient } from "@azure/arm-applink"; +import { DefaultAzureCredential } from "@azure/identity"; + +/** + * This sample demonstrates how to create an AppLink. + * + * @summary create an AppLink. + * x-ms-original-file: 2025-08-01-preview/AppLinks_CreateOrUpdate.json + */ +async function appLinksCreateOrUpdate(): Promise { + const credential = new DefaultAzureCredential(); + const subscriptionId = "11809CA1-E126-4017-945E-AA795CD5C5A9"; + const client = new AppLinkClient(credential, subscriptionId); + const result = await client.appLinks.createOrUpdate("test_rg", "applink-test-01", { + properties: {}, + identity: { type: "SystemAssigned" }, + tags: { key2913: "test_tag" }, + location: "westus2", + }); + console.log(result); +} + +async function main(): Promise { + await appLinksCreateOrUpdate(); +} + +main().catch(console.error); diff --git a/sdk/applink/arm-applink/samples/v1-beta/typescript/src/appLinksDeleteSample.ts b/sdk/applink/arm-applink/samples/v1-beta/typescript/src/appLinksDeleteSample.ts new file mode 100644 index 000000000000..085bfad02e38 --- /dev/null +++ b/sdk/applink/arm-applink/samples/v1-beta/typescript/src/appLinksDeleteSample.ts @@ -0,0 +1,24 @@ +// Copyright (c) Microsoft Corporation. +// Licensed under the MIT License. + +import { AppLinkClient } from "@azure/arm-applink"; +import { DefaultAzureCredential } from "@azure/identity"; + +/** + * This sample demonstrates how to delete an AppLink. + * + * @summary delete an AppLink. + * x-ms-original-file: 2025-08-01-preview/AppLinks_Delete.json + */ +async function appLinksDelete(): Promise { + const credential = new DefaultAzureCredential(); + const subscriptionId = "11809CA1-E126-4017-945E-AA795CD5C5A9"; + const client = new AppLinkClient(credential, subscriptionId); + await client.appLinks.delete("test_rg", "applink-test-01"); +} + +async function main(): Promise { + await appLinksDelete(); +} + +main().catch(console.error); diff --git a/sdk/applink/arm-applink/samples/v1-beta/typescript/src/appLinksGetSample.ts b/sdk/applink/arm-applink/samples/v1-beta/typescript/src/appLinksGetSample.ts new file mode 100644 index 000000000000..e2192b6a7826 --- /dev/null +++ b/sdk/applink/arm-applink/samples/v1-beta/typescript/src/appLinksGetSample.ts @@ -0,0 +1,25 @@ +// Copyright (c) Microsoft Corporation. +// Licensed under the MIT License. + +import { AppLinkClient } from "@azure/arm-applink"; +import { DefaultAzureCredential } from "@azure/identity"; + +/** + * This sample demonstrates how to get an AppLink. + * + * @summary get an AppLink. + * x-ms-original-file: 2025-08-01-preview/AppLinks_Get.json + */ +async function appLinksGet(): Promise { + const credential = new DefaultAzureCredential(); + const subscriptionId = "11809CA1-E126-4017-945E-AA795CD5C5A9"; + const client = new AppLinkClient(credential, subscriptionId); + const result = await client.appLinks.get("test_rg", "applink-test-01"); + console.log(result); +} + +async function main(): Promise { + await appLinksGet(); +} + +main().catch(console.error); diff --git a/sdk/applink/arm-applink/samples/v1-beta/typescript/src/appLinksListByResourceGroupSample.ts b/sdk/applink/arm-applink/samples/v1-beta/typescript/src/appLinksListByResourceGroupSample.ts new file mode 100644 index 000000000000..d21515dad04b --- /dev/null +++ b/sdk/applink/arm-applink/samples/v1-beta/typescript/src/appLinksListByResourceGroupSample.ts @@ -0,0 +1,29 @@ +// Copyright (c) Microsoft Corporation. +// Licensed under the MIT License. + +import { AppLinkClient } from "@azure/arm-applink"; +import { DefaultAzureCredential } from "@azure/identity"; + +/** + * This sample demonstrates how to list AppLink resources by resource group. + * + * @summary list AppLink resources by resource group. + * x-ms-original-file: 2025-08-01-preview/AppLinks_ListByResourceGroup.json + */ +async function appLinksListByResourceGroup(): Promise { + const credential = new DefaultAzureCredential(); + const subscriptionId = "11809CA1-E126-4017-945E-AA795CD5C5A9"; + const client = new AppLinkClient(credential, subscriptionId); + const resArray = new Array(); + for await (const item of client.appLinks.listByResourceGroup("test_rg")) { + resArray.push(item); + } + + console.log(resArray); +} + +async function main(): Promise { + await appLinksListByResourceGroup(); +} + +main().catch(console.error); diff --git a/sdk/applink/arm-applink/samples/v1-beta/typescript/src/appLinksListBySubscriptionSample.ts b/sdk/applink/arm-applink/samples/v1-beta/typescript/src/appLinksListBySubscriptionSample.ts new file mode 100644 index 000000000000..3fba8d5bfbbd --- /dev/null +++ b/sdk/applink/arm-applink/samples/v1-beta/typescript/src/appLinksListBySubscriptionSample.ts @@ -0,0 +1,29 @@ +// Copyright (c) Microsoft Corporation. +// Licensed under the MIT License. + +import { AppLinkClient } from "@azure/arm-applink"; +import { DefaultAzureCredential } from "@azure/identity"; + +/** + * This sample demonstrates how to list AppLink resources by subscription. + * + * @summary list AppLink resources by subscription. + * x-ms-original-file: 2025-08-01-preview/AppLinks_ListBySubscription.json + */ +async function appLinksListBySubscription(): Promise { + const credential = new DefaultAzureCredential(); + const subscriptionId = "11809CA1-E126-4017-945E-AA795CD5C5A9"; + const client = new AppLinkClient(credential, subscriptionId); + const resArray = new Array(); + for await (const item of client.appLinks.listBySubscription()) { + resArray.push(item); + } + + console.log(resArray); +} + +async function main(): Promise { + await appLinksListBySubscription(); +} + +main().catch(console.error); diff --git a/sdk/applink/arm-applink/samples/v1-beta/typescript/src/appLinksUpdateSample.ts b/sdk/applink/arm-applink/samples/v1-beta/typescript/src/appLinksUpdateSample.ts new file mode 100644 index 000000000000..ed8db0c69d59 --- /dev/null +++ b/sdk/applink/arm-applink/samples/v1-beta/typescript/src/appLinksUpdateSample.ts @@ -0,0 +1,27 @@ +// Copyright (c) Microsoft Corporation. +// Licensed under the MIT License. + +import { AppLinkClient } from "@azure/arm-applink"; +import { DefaultAzureCredential } from "@azure/identity"; + +/** + * This sample demonstrates how to update an AppLink. + * + * @summary update an AppLink. + * x-ms-original-file: 2025-08-01-preview/AppLinks_Update.json + */ +async function appLinksUpdate(): Promise { + const credential = new DefaultAzureCredential(); + const subscriptionId = "11809CA1-E126-4017-945E-AA795CD5C5A9"; + const client = new AppLinkClient(credential, subscriptionId); + const result = await client.appLinks.update("test_rg", "applink-test-01", { + tags: { environment: "production", "cost-center": "platform" }, + }); + console.log(result); +} + +async function main(): Promise { + await appLinksUpdate(); +} + +main().catch(console.error); diff --git a/sdk/applink/arm-applink/samples/v1-beta/typescript/src/availableVersionsListByLocationSample.ts b/sdk/applink/arm-applink/samples/v1-beta/typescript/src/availableVersionsListByLocationSample.ts new file mode 100644 index 000000000000..27f0a86194c5 --- /dev/null +++ b/sdk/applink/arm-applink/samples/v1-beta/typescript/src/availableVersionsListByLocationSample.ts @@ -0,0 +1,50 @@ +// Copyright (c) Microsoft Corporation. +// Licensed under the MIT License. + +import { AppLinkClient } from "@azure/arm-applink"; +import { DefaultAzureCredential } from "@azure/identity"; + +/** + * This sample demonstrates how to list AvailableVersion resources by location. + * + * @summary list AvailableVersion resources by location. + * x-ms-original-file: 2025-08-01-preview/AvailableVersions_ListByLocation.json + */ +async function availableVersionsListByLocation(): Promise { + const credential = new DefaultAzureCredential(); + const subscriptionId = "11809CA1-E126-4017-945E-AA795CD5C5A9"; + const client = new AppLinkClient(credential, subscriptionId); + const resArray = new Array(); + for await (const item of client.availableVersions.listByLocation("westus2")) { + resArray.push(item); + } + + console.log(resArray); +} + +/** + * This sample demonstrates how to list AvailableVersion resources by location. + * + * @summary list AvailableVersion resources by location. + * x-ms-original-file: 2025-08-01-preview/AvailableVersions_ListByLocationWithFilter.json + */ +async function availableVersionsListByLocationWithFilter(): Promise { + const credential = new DefaultAzureCredential(); + const subscriptionId = "11809CA1-E126-4017-945E-AA795CD5C5A9"; + const client = new AppLinkClient(credential, subscriptionId); + const resArray = new Array(); + for await (const item of client.availableVersions.listByLocation("westus2", { + kubernetesVersion: "1.28", + })) { + resArray.push(item); + } + + console.log(resArray); +} + +async function main(): Promise { + await availableVersionsListByLocation(); + await availableVersionsListByLocationWithFilter(); +} + +main().catch(console.error); diff --git a/sdk/applink/arm-applink/samples/v1-beta/typescript/src/operationsListSample.ts b/sdk/applink/arm-applink/samples/v1-beta/typescript/src/operationsListSample.ts new file mode 100644 index 000000000000..77fdacd9cc17 --- /dev/null +++ b/sdk/applink/arm-applink/samples/v1-beta/typescript/src/operationsListSample.ts @@ -0,0 +1,29 @@ +// Copyright (c) Microsoft Corporation. +// Licensed under the MIT License. + +import { AppLinkClient } from "@azure/arm-applink"; +import { DefaultAzureCredential } from "@azure/identity"; + +/** + * This sample demonstrates how to list the operations for the provider + * + * @summary list the operations for the provider + * x-ms-original-file: 2025-08-01-preview/Operations_List.json + */ +async function operationsList(): Promise { + const credential = new DefaultAzureCredential(); + const subscriptionId = "00000000-0000-0000-0000-000000000000"; + const client = new AppLinkClient(credential, subscriptionId); + const resArray = new Array(); + for await (const item of client.operations.list()) { + resArray.push(item); + } + + console.log(resArray); +} + +async function main(): Promise { + await operationsList(); +} + +main().catch(console.error); diff --git a/sdk/applink/arm-applink/samples/v1-beta/typescript/src/upgradeHistoriesListByAppLinkMemberSample.ts b/sdk/applink/arm-applink/samples/v1-beta/typescript/src/upgradeHistoriesListByAppLinkMemberSample.ts new file mode 100644 index 000000000000..fcc6c2320e57 --- /dev/null +++ b/sdk/applink/arm-applink/samples/v1-beta/typescript/src/upgradeHistoriesListByAppLinkMemberSample.ts @@ -0,0 +1,33 @@ +// Copyright (c) Microsoft Corporation. +// Licensed under the MIT License. + +import { AppLinkClient } from "@azure/arm-applink"; +import { DefaultAzureCredential } from "@azure/identity"; + +/** + * This sample demonstrates how to list UpgradeHistory resources by AppLinkMember. + * + * @summary list UpgradeHistory resources by AppLinkMember. + * x-ms-original-file: 2025-08-01-preview/UpgradeHistories_ListByAppLinkMember.json + */ +async function upgradeHistoriesListByAppLinkMember(): Promise { + const credential = new DefaultAzureCredential(); + const subscriptionId = "11809CA1-E126-4017-945E-AA795CD5C5A9"; + const client = new AppLinkClient(credential, subscriptionId); + const resArray = new Array(); + for await (const item of client.upgradeHistories.listByAppLinkMember( + "test_rg", + "applink-test-01", + "member-01", + )) { + resArray.push(item); + } + + console.log(resArray); +} + +async function main(): Promise { + await upgradeHistoriesListByAppLinkMember(); +} + +main().catch(console.error); diff --git a/sdk/applink/arm-applink/samples/v1-beta/typescript/tsconfig.json b/sdk/applink/arm-applink/samples/v1-beta/typescript/tsconfig.json new file mode 100644 index 000000000000..400db87cf648 --- /dev/null +++ b/sdk/applink/arm-applink/samples/v1-beta/typescript/tsconfig.json @@ -0,0 +1,20 @@ +{ + "compilerOptions": { + "target": "ES2023", + "module": "commonjs", + "lib": [], + "importHelpers": true, + "strict": true, + "noUnusedLocals": true, + "noUnusedParameters": true, + "noImplicitReturns": true, + "noFallthroughCasesInSwitch": true, + "moduleResolution": "node10", + "esModuleInterop": true, + "outDir": "./dist", + "resolveJsonModule": true + }, + "include": [ + "./src" + ] +} diff --git a/sdk/applink/arm-applink/src/api/appLinkContext.ts b/sdk/applink/arm-applink/src/api/appLinkContext.ts new file mode 100644 index 000000000000..d490bb372581 --- /dev/null +++ b/sdk/applink/arm-applink/src/api/appLinkContext.ts @@ -0,0 +1,50 @@ +// Copyright (c) Microsoft Corporation. +// Licensed under the MIT License. + +import { logger } from "../logger.js"; +import { KnownVersions } from "../models/models.js"; +import type { AzureSupportedClouds } from "../static-helpers/cloudSettingHelpers.js"; +import { getArmEndpoint } from "../static-helpers/cloudSettingHelpers.js"; +import type { Client, ClientOptions } from "@azure-rest/core-client"; +import { getClient } from "@azure-rest/core-client"; +import type { TokenCredential } from "@azure/core-auth"; + +export interface AppLinkContext extends Client { + /** The ID of the target subscription. The value must be an UUID. */ + subscriptionId: string; + /** The API version to use for this operation. */ + /** Known values of {@link KnownVersions} that the service accepts. */ + apiVersion?: string; +} + +/** Optional parameters for the client. */ +export interface AppLinkClientOptionalParams extends ClientOptions { + /** The API version to use for this operation. */ + /** Known values of {@link KnownVersions} that the service accepts. */ + apiVersion?: string; + /** Specifies the Azure cloud environment for the client. */ + cloudSetting?: AzureSupportedClouds; +} + +export function createAppLink( + credential: TokenCredential, + subscriptionId: string, + options: AppLinkClientOptionalParams = {}, +): AppLinkContext { + const endpointUrl = + options.endpoint ?? getArmEndpoint(options.cloudSetting) ?? "https://management.azure.com"; + const prefixFromOptions = options?.userAgentOptions?.userAgentPrefix; + const userAgentInfo = `azsdk-js-arm-applink/1.0.0-beta.1`; + const userAgentPrefix = prefixFromOptions + ? `${prefixFromOptions} azsdk-js-api ${userAgentInfo}` + : `azsdk-js-api ${userAgentInfo}`; + const { apiVersion: _, ...updatedOptions } = { + ...options, + userAgentOptions: { userAgentPrefix }, + loggingOptions: { logger: options.loggingOptions?.logger ?? logger.info }, + credentials: { scopes: options.credentials?.scopes ?? [`${endpointUrl}/.default`] }, + }; + const clientContext = getClient(endpointUrl, credential, updatedOptions); + const apiVersion = options.apiVersion; + return { ...clientContext, apiVersion, subscriptionId } as AppLinkContext; +} diff --git a/sdk/applink/arm-applink/src/api/appLinkMembers/index.ts b/sdk/applink/arm-applink/src/api/appLinkMembers/index.ts new file mode 100644 index 000000000000..d8bf350fee9c --- /dev/null +++ b/sdk/applink/arm-applink/src/api/appLinkMembers/index.ts @@ -0,0 +1,11 @@ +// Copyright (c) Microsoft Corporation. +// Licensed under the MIT License. + +export { listByAppLink, $delete, update, createOrUpdate, get } from "./operations.js"; +export type { + AppLinkMembersListByAppLinkOptionalParams, + AppLinkMembersDeleteOptionalParams, + AppLinkMembersUpdateOptionalParams, + AppLinkMembersCreateOrUpdateOptionalParams, + AppLinkMembersGetOptionalParams, +} from "./options.js"; diff --git a/sdk/applink/arm-applink/src/api/appLinkMembers/operations.ts b/sdk/applink/arm-applink/src/api/appLinkMembers/operations.ts new file mode 100644 index 000000000000..6c6dcc107e40 --- /dev/null +++ b/sdk/applink/arm-applink/src/api/appLinkMembers/operations.ts @@ -0,0 +1,331 @@ +// Copyright (c) Microsoft Corporation. +// Licensed under the MIT License. + +import type { AppLinkContext as Client } from "../index.js"; +import type { + AppLinkMember, + AppLinkMemberUpdate, + _AppLinkMemberListResult, +} from "../../models/models.js"; +import { + errorResponseDeserializer, + appLinkMemberSerializer, + appLinkMemberDeserializer, + appLinkMemberUpdateSerializer, + _appLinkMemberListResultDeserializer, +} from "../../models/models.js"; +import type { PagedAsyncIterableIterator } from "../../static-helpers/pagingHelpers.js"; +import { buildPagedAsyncIterator } from "../../static-helpers/pagingHelpers.js"; +import { getLongRunningPoller } from "../../static-helpers/pollingHelpers.js"; +import { expandUrlTemplate } from "../../static-helpers/urlTemplate.js"; +import type { + AppLinkMembersListByAppLinkOptionalParams, + AppLinkMembersDeleteOptionalParams, + AppLinkMembersUpdateOptionalParams, + AppLinkMembersCreateOrUpdateOptionalParams, + AppLinkMembersGetOptionalParams, +} from "./options.js"; +import type { StreamableMethod, PathUncheckedResponse } from "@azure-rest/core-client"; +import { createRestError, operationOptionsToRequestParameters } from "@azure-rest/core-client"; +import type { PollerLike, OperationState } from "@azure/core-lro"; + +export function _listByAppLinkSend( + context: Client, + resourceGroupName: string, + appLinkName: string, + options: AppLinkMembersListByAppLinkOptionalParams = { requestOptions: {} }, +): StreamableMethod { + const path = expandUrlTemplate( + "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.AppLink/appLinks/{appLinkName}/appLinkMembers{?api%2Dversion}", + { + subscriptionId: context.subscriptionId, + resourceGroupName: resourceGroupName, + appLinkName: appLinkName, + "api%2Dversion": context.apiVersion ?? "2025-08-01-preview", + }, + { + allowReserved: options?.requestOptions?.skipUrlEncoding, + }, + ); + return context.path(path).get({ + ...operationOptionsToRequestParameters(options), + headers: { accept: "application/json", ...options.requestOptions?.headers }, + }); +} + +export async function _listByAppLinkDeserialize( + result: PathUncheckedResponse, +): Promise<_AppLinkMemberListResult> { + const expectedStatuses = ["200"]; + if (!expectedStatuses.includes(result.status)) { + const error = createRestError(result); + error.details = errorResponseDeserializer(result.body); + + throw error; + } + + return _appLinkMemberListResultDeserializer(result.body); +} + +/** List AppLinkMember resources by AppLink. */ +export function listByAppLink( + context: Client, + resourceGroupName: string, + appLinkName: string, + options: AppLinkMembersListByAppLinkOptionalParams = { requestOptions: {} }, +): PagedAsyncIterableIterator { + return buildPagedAsyncIterator( + context, + () => _listByAppLinkSend(context, resourceGroupName, appLinkName, options), + _listByAppLinkDeserialize, + ["200"], + { + itemName: "value", + nextLinkName: "nextLink", + apiVersion: context.apiVersion ?? "2025-08-01-preview", + }, + ); +} + +export function _$deleteSend( + context: Client, + resourceGroupName: string, + appLinkName: string, + appLinkMemberName: string, + options: AppLinkMembersDeleteOptionalParams = { requestOptions: {} }, +): StreamableMethod { + const path = expandUrlTemplate( + "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.AppLink/appLinks/{appLinkName}/appLinkMembers/{appLinkMemberName}{?api%2Dversion}", + { + subscriptionId: context.subscriptionId, + resourceGroupName: resourceGroupName, + appLinkName: appLinkName, + appLinkMemberName: appLinkMemberName, + "api%2Dversion": context.apiVersion ?? "2025-08-01-preview", + }, + { + allowReserved: options?.requestOptions?.skipUrlEncoding, + }, + ); + return context.path(path).delete({ ...operationOptionsToRequestParameters(options) }); +} + +export async function _$deleteDeserialize(result: PathUncheckedResponse): Promise { + const expectedStatuses = ["202", "204", "200"]; + if (!expectedStatuses.includes(result.status)) { + const error = createRestError(result); + error.details = errorResponseDeserializer(result.body); + + throw error; + } + + return; +} + +/** Delete an AppLinkMember. */ +/** + * @fixme delete is a reserved word that cannot be used as an operation name. + * Please add @clientName("clientName") or @clientName("", "javascript") + * to the operation to override the generated name. + */ +export function $delete( + context: Client, + resourceGroupName: string, + appLinkName: string, + appLinkMemberName: string, + options: AppLinkMembersDeleteOptionalParams = { requestOptions: {} }, +): PollerLike, void> { + return getLongRunningPoller(context, _$deleteDeserialize, ["202", "204", "200"], { + updateIntervalInMs: options?.updateIntervalInMs, + abortSignal: options?.abortSignal, + getInitialResponse: () => + _$deleteSend(context, resourceGroupName, appLinkName, appLinkMemberName, options), + resourceLocationConfig: "location", + apiVersion: context.apiVersion ?? "2025-08-01-preview", + }) as PollerLike, void>; +} + +export function _updateSend( + context: Client, + resourceGroupName: string, + appLinkName: string, + appLinkMemberName: string, + properties: AppLinkMemberUpdate, + options: AppLinkMembersUpdateOptionalParams = { requestOptions: {} }, +): StreamableMethod { + const path = expandUrlTemplate( + "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.AppLink/appLinks/{appLinkName}/appLinkMembers/{appLinkMemberName}{?api%2Dversion}", + { + subscriptionId: context.subscriptionId, + resourceGroupName: resourceGroupName, + appLinkName: appLinkName, + appLinkMemberName: appLinkMemberName, + "api%2Dversion": context.apiVersion ?? "2025-08-01-preview", + }, + { + allowReserved: options?.requestOptions?.skipUrlEncoding, + }, + ); + return context.path(path).patch({ + ...operationOptionsToRequestParameters(options), + contentType: "application/json", + headers: { accept: "application/json", ...options.requestOptions?.headers }, + body: appLinkMemberUpdateSerializer(properties), + }); +} + +export async function _updateDeserialize(result: PathUncheckedResponse): Promise { + const expectedStatuses = ["200", "202", "201"]; + if (!expectedStatuses.includes(result.status)) { + const error = createRestError(result); + error.details = errorResponseDeserializer(result.body); + + throw error; + } + + return appLinkMemberDeserializer(result.body); +} + +/** Update an AppLinkMember. */ +export function update( + context: Client, + resourceGroupName: string, + appLinkName: string, + appLinkMemberName: string, + properties: AppLinkMemberUpdate, + options: AppLinkMembersUpdateOptionalParams = { requestOptions: {} }, +): PollerLike, AppLinkMember> { + return getLongRunningPoller(context, _updateDeserialize, ["200", "202", "201"], { + updateIntervalInMs: options?.updateIntervalInMs, + abortSignal: options?.abortSignal, + getInitialResponse: () => + _updateSend(context, resourceGroupName, appLinkName, appLinkMemberName, properties, options), + resourceLocationConfig: "azure-async-operation", + apiVersion: context.apiVersion ?? "2025-08-01-preview", + }) as PollerLike, AppLinkMember>; +} + +export function _createOrUpdateSend( + context: Client, + resourceGroupName: string, + appLinkName: string, + appLinkMemberName: string, + resource: AppLinkMember, + options: AppLinkMembersCreateOrUpdateOptionalParams = { requestOptions: {} }, +): StreamableMethod { + const path = expandUrlTemplate( + "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.AppLink/appLinks/{appLinkName}/appLinkMembers/{appLinkMemberName}{?api%2Dversion}", + { + subscriptionId: context.subscriptionId, + resourceGroupName: resourceGroupName, + appLinkName: appLinkName, + appLinkMemberName: appLinkMemberName, + "api%2Dversion": context.apiVersion ?? "2025-08-01-preview", + }, + { + allowReserved: options?.requestOptions?.skipUrlEncoding, + }, + ); + return context.path(path).put({ + ...operationOptionsToRequestParameters(options), + contentType: "application/json", + headers: { accept: "application/json", ...options.requestOptions?.headers }, + body: appLinkMemberSerializer(resource), + }); +} + +export async function _createOrUpdateDeserialize( + result: PathUncheckedResponse, +): Promise { + const expectedStatuses = ["200", "201", "202"]; + if (!expectedStatuses.includes(result.status)) { + const error = createRestError(result); + error.details = errorResponseDeserializer(result.body); + + throw error; + } + + return appLinkMemberDeserializer(result.body); +} + +/** Create an AppLinkMember. */ +export function createOrUpdate( + context: Client, + resourceGroupName: string, + appLinkName: string, + appLinkMemberName: string, + resource: AppLinkMember, + options: AppLinkMembersCreateOrUpdateOptionalParams = { requestOptions: {} }, +): PollerLike, AppLinkMember> { + return getLongRunningPoller(context, _createOrUpdateDeserialize, ["200", "201", "202"], { + updateIntervalInMs: options?.updateIntervalInMs, + abortSignal: options?.abortSignal, + getInitialResponse: () => + _createOrUpdateSend( + context, + resourceGroupName, + appLinkName, + appLinkMemberName, + resource, + options, + ), + resourceLocationConfig: "azure-async-operation", + apiVersion: context.apiVersion ?? "2025-08-01-preview", + }) as PollerLike, AppLinkMember>; +} + +export function _getSend( + context: Client, + resourceGroupName: string, + appLinkName: string, + appLinkMemberName: string, + options: AppLinkMembersGetOptionalParams = { requestOptions: {} }, +): StreamableMethod { + const path = expandUrlTemplate( + "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.AppLink/appLinks/{appLinkName}/appLinkMembers/{appLinkMemberName}{?api%2Dversion}", + { + subscriptionId: context.subscriptionId, + resourceGroupName: resourceGroupName, + appLinkName: appLinkName, + appLinkMemberName: appLinkMemberName, + "api%2Dversion": context.apiVersion ?? "2025-08-01-preview", + }, + { + allowReserved: options?.requestOptions?.skipUrlEncoding, + }, + ); + return context.path(path).get({ + ...operationOptionsToRequestParameters(options), + headers: { accept: "application/json", ...options.requestOptions?.headers }, + }); +} + +export async function _getDeserialize(result: PathUncheckedResponse): Promise { + const expectedStatuses = ["200"]; + if (!expectedStatuses.includes(result.status)) { + const error = createRestError(result); + error.details = errorResponseDeserializer(result.body); + + throw error; + } + + return appLinkMemberDeserializer(result.body); +} + +/** Get an AppLinkMember. */ +export async function get( + context: Client, + resourceGroupName: string, + appLinkName: string, + appLinkMemberName: string, + options: AppLinkMembersGetOptionalParams = { requestOptions: {} }, +): Promise { + const result = await _getSend( + context, + resourceGroupName, + appLinkName, + appLinkMemberName, + options, + ); + return _getDeserialize(result); +} diff --git a/sdk/applink/arm-applink/src/api/appLinkMembers/options.ts b/sdk/applink/arm-applink/src/api/appLinkMembers/options.ts new file mode 100644 index 000000000000..c7cfdd685fdf --- /dev/null +++ b/sdk/applink/arm-applink/src/api/appLinkMembers/options.ts @@ -0,0 +1,28 @@ +// Copyright (c) Microsoft Corporation. +// Licensed under the MIT License. + +import type { OperationOptions } from "@azure-rest/core-client"; + +/** Optional parameters. */ +export interface AppLinkMembersListByAppLinkOptionalParams extends OperationOptions {} + +/** Optional parameters. */ +export interface AppLinkMembersDeleteOptionalParams extends OperationOptions { + /** Delay to wait until next poll, in milliseconds. */ + updateIntervalInMs?: number; +} + +/** Optional parameters. */ +export interface AppLinkMembersUpdateOptionalParams extends OperationOptions { + /** Delay to wait until next poll, in milliseconds. */ + updateIntervalInMs?: number; +} + +/** Optional parameters. */ +export interface AppLinkMembersCreateOrUpdateOptionalParams extends OperationOptions { + /** Delay to wait until next poll, in milliseconds. */ + updateIntervalInMs?: number; +} + +/** Optional parameters. */ +export interface AppLinkMembersGetOptionalParams extends OperationOptions {} diff --git a/sdk/applink/arm-applink/src/api/appLinks/index.ts b/sdk/applink/arm-applink/src/api/appLinks/index.ts new file mode 100644 index 000000000000..7ab6b228f868 --- /dev/null +++ b/sdk/applink/arm-applink/src/api/appLinks/index.ts @@ -0,0 +1,19 @@ +// Copyright (c) Microsoft Corporation. +// Licensed under the MIT License. + +export { + listBySubscription, + listByResourceGroup, + $delete, + update, + createOrUpdate, + get, +} from "./operations.js"; +export type { + AppLinksListBySubscriptionOptionalParams, + AppLinksListByResourceGroupOptionalParams, + AppLinksDeleteOptionalParams, + AppLinksUpdateOptionalParams, + AppLinksCreateOrUpdateOptionalParams, + AppLinksGetOptionalParams, +} from "./options.js"; diff --git a/sdk/applink/arm-applink/src/api/appLinks/operations.ts b/sdk/applink/arm-applink/src/api/appLinks/operations.ts new file mode 100644 index 000000000000..2fe8b5c7356d --- /dev/null +++ b/sdk/applink/arm-applink/src/api/appLinks/operations.ts @@ -0,0 +1,349 @@ +// Copyright (c) Microsoft Corporation. +// Licensed under the MIT License. + +import type { AppLinkContext as Client } from "../index.js"; +import type { AppLink, AppLinkUpdate, _AppLinkListResult } from "../../models/models.js"; +import { + errorResponseDeserializer, + appLinkSerializer, + appLinkDeserializer, + appLinkUpdateSerializer, + _appLinkListResultDeserializer, +} from "../../models/models.js"; +import type { PagedAsyncIterableIterator } from "../../static-helpers/pagingHelpers.js"; +import { buildPagedAsyncIterator } from "../../static-helpers/pagingHelpers.js"; +import { getLongRunningPoller } from "../../static-helpers/pollingHelpers.js"; +import { expandUrlTemplate } from "../../static-helpers/urlTemplate.js"; +import type { + AppLinksListBySubscriptionOptionalParams, + AppLinksListByResourceGroupOptionalParams, + AppLinksDeleteOptionalParams, + AppLinksUpdateOptionalParams, + AppLinksCreateOrUpdateOptionalParams, + AppLinksGetOptionalParams, +} from "./options.js"; +import type { StreamableMethod, PathUncheckedResponse } from "@azure-rest/core-client"; +import { createRestError, operationOptionsToRequestParameters } from "@azure-rest/core-client"; +import type { PollerLike, OperationState } from "@azure/core-lro"; + +export function _listBySubscriptionSend( + context: Client, + options: AppLinksListBySubscriptionOptionalParams = { requestOptions: {} }, +): StreamableMethod { + const path = expandUrlTemplate( + "/subscriptions/{subscriptionId}/providers/Microsoft.AppLink/appLinks{?api%2Dversion}", + { + subscriptionId: context.subscriptionId, + "api%2Dversion": context.apiVersion ?? "2025-08-01-preview", + }, + { + allowReserved: options?.requestOptions?.skipUrlEncoding, + }, + ); + return context.path(path).get({ + ...operationOptionsToRequestParameters(options), + headers: { accept: "application/json", ...options.requestOptions?.headers }, + }); +} + +export async function _listBySubscriptionDeserialize( + result: PathUncheckedResponse, +): Promise<_AppLinkListResult> { + const expectedStatuses = ["200"]; + if (!expectedStatuses.includes(result.status)) { + const error = createRestError(result); + error.details = errorResponseDeserializer(result.body); + + throw error; + } + + return _appLinkListResultDeserializer(result.body); +} + +/** List AppLink resources by subscription. */ +export function listBySubscription( + context: Client, + options: AppLinksListBySubscriptionOptionalParams = { requestOptions: {} }, +): PagedAsyncIterableIterator { + return buildPagedAsyncIterator( + context, + () => _listBySubscriptionSend(context, options), + _listBySubscriptionDeserialize, + ["200"], + { + itemName: "value", + nextLinkName: "nextLink", + apiVersion: context.apiVersion ?? "2025-08-01-preview", + }, + ); +} + +export function _listByResourceGroupSend( + context: Client, + resourceGroupName: string, + options: AppLinksListByResourceGroupOptionalParams = { requestOptions: {} }, +): StreamableMethod { + const path = expandUrlTemplate( + "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.AppLink/appLinks{?api%2Dversion}", + { + subscriptionId: context.subscriptionId, + resourceGroupName: resourceGroupName, + "api%2Dversion": context.apiVersion ?? "2025-08-01-preview", + }, + { + allowReserved: options?.requestOptions?.skipUrlEncoding, + }, + ); + return context.path(path).get({ + ...operationOptionsToRequestParameters(options), + headers: { accept: "application/json", ...options.requestOptions?.headers }, + }); +} + +export async function _listByResourceGroupDeserialize( + result: PathUncheckedResponse, +): Promise<_AppLinkListResult> { + const expectedStatuses = ["200"]; + if (!expectedStatuses.includes(result.status)) { + const error = createRestError(result); + error.details = errorResponseDeserializer(result.body); + + throw error; + } + + return _appLinkListResultDeserializer(result.body); +} + +/** List AppLink resources by resource group. */ +export function listByResourceGroup( + context: Client, + resourceGroupName: string, + options: AppLinksListByResourceGroupOptionalParams = { requestOptions: {} }, +): PagedAsyncIterableIterator { + return buildPagedAsyncIterator( + context, + () => _listByResourceGroupSend(context, resourceGroupName, options), + _listByResourceGroupDeserialize, + ["200"], + { + itemName: "value", + nextLinkName: "nextLink", + apiVersion: context.apiVersion ?? "2025-08-01-preview", + }, + ); +} + +export function _$deleteSend( + context: Client, + resourceGroupName: string, + appLinkName: string, + options: AppLinksDeleteOptionalParams = { requestOptions: {} }, +): StreamableMethod { + const path = expandUrlTemplate( + "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.AppLink/appLinks/{appLinkName}{?api%2Dversion}", + { + subscriptionId: context.subscriptionId, + resourceGroupName: resourceGroupName, + appLinkName: appLinkName, + "api%2Dversion": context.apiVersion ?? "2025-08-01-preview", + }, + { + allowReserved: options?.requestOptions?.skipUrlEncoding, + }, + ); + return context.path(path).delete({ ...operationOptionsToRequestParameters(options) }); +} + +export async function _$deleteDeserialize(result: PathUncheckedResponse): Promise { + const expectedStatuses = ["202", "204", "200"]; + if (!expectedStatuses.includes(result.status)) { + const error = createRestError(result); + error.details = errorResponseDeserializer(result.body); + + throw error; + } + + return; +} + +/** Delete an AppLink. */ +/** + * @fixme delete is a reserved word that cannot be used as an operation name. + * Please add @clientName("clientName") or @clientName("", "javascript") + * to the operation to override the generated name. + */ +export function $delete( + context: Client, + resourceGroupName: string, + appLinkName: string, + options: AppLinksDeleteOptionalParams = { requestOptions: {} }, +): PollerLike, void> { + return getLongRunningPoller(context, _$deleteDeserialize, ["202", "204", "200"], { + updateIntervalInMs: options?.updateIntervalInMs, + abortSignal: options?.abortSignal, + getInitialResponse: () => _$deleteSend(context, resourceGroupName, appLinkName, options), + resourceLocationConfig: "location", + apiVersion: context.apiVersion ?? "2025-08-01-preview", + }) as PollerLike, void>; +} + +export function _updateSend( + context: Client, + resourceGroupName: string, + appLinkName: string, + properties: AppLinkUpdate, + options: AppLinksUpdateOptionalParams = { requestOptions: {} }, +): StreamableMethod { + const path = expandUrlTemplate( + "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.AppLink/appLinks/{appLinkName}{?api%2Dversion}", + { + subscriptionId: context.subscriptionId, + resourceGroupName: resourceGroupName, + appLinkName: appLinkName, + "api%2Dversion": context.apiVersion ?? "2025-08-01-preview", + }, + { + allowReserved: options?.requestOptions?.skipUrlEncoding, + }, + ); + return context.path(path).patch({ + ...operationOptionsToRequestParameters(options), + contentType: "application/json", + headers: { accept: "application/json", ...options.requestOptions?.headers }, + body: appLinkUpdateSerializer(properties), + }); +} + +export async function _updateDeserialize(result: PathUncheckedResponse): Promise { + const expectedStatuses = ["200", "202", "201"]; + if (!expectedStatuses.includes(result.status)) { + const error = createRestError(result); + error.details = errorResponseDeserializer(result.body); + + throw error; + } + + return appLinkDeserializer(result.body); +} + +/** Update an AppLink. */ +export function update( + context: Client, + resourceGroupName: string, + appLinkName: string, + properties: AppLinkUpdate, + options: AppLinksUpdateOptionalParams = { requestOptions: {} }, +): PollerLike, AppLink> { + return getLongRunningPoller(context, _updateDeserialize, ["200", "202", "201"], { + updateIntervalInMs: options?.updateIntervalInMs, + abortSignal: options?.abortSignal, + getInitialResponse: () => + _updateSend(context, resourceGroupName, appLinkName, properties, options), + resourceLocationConfig: "azure-async-operation", + apiVersion: context.apiVersion ?? "2025-08-01-preview", + }) as PollerLike, AppLink>; +} + +export function _createOrUpdateSend( + context: Client, + resourceGroupName: string, + appLinkName: string, + resource: AppLink, + options: AppLinksCreateOrUpdateOptionalParams = { requestOptions: {} }, +): StreamableMethod { + const path = expandUrlTemplate( + "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.AppLink/appLinks/{appLinkName}{?api%2Dversion}", + { + subscriptionId: context.subscriptionId, + resourceGroupName: resourceGroupName, + appLinkName: appLinkName, + "api%2Dversion": context.apiVersion ?? "2025-08-01-preview", + }, + { + allowReserved: options?.requestOptions?.skipUrlEncoding, + }, + ); + return context.path(path).put({ + ...operationOptionsToRequestParameters(options), + contentType: "application/json", + headers: { accept: "application/json", ...options.requestOptions?.headers }, + body: appLinkSerializer(resource), + }); +} + +export async function _createOrUpdateDeserialize(result: PathUncheckedResponse): Promise { + const expectedStatuses = ["200", "201", "202"]; + if (!expectedStatuses.includes(result.status)) { + const error = createRestError(result); + error.details = errorResponseDeserializer(result.body); + + throw error; + } + + return appLinkDeserializer(result.body); +} + +/** Create an AppLink. */ +export function createOrUpdate( + context: Client, + resourceGroupName: string, + appLinkName: string, + resource: AppLink, + options: AppLinksCreateOrUpdateOptionalParams = { requestOptions: {} }, +): PollerLike, AppLink> { + return getLongRunningPoller(context, _createOrUpdateDeserialize, ["200", "201", "202"], { + updateIntervalInMs: options?.updateIntervalInMs, + abortSignal: options?.abortSignal, + getInitialResponse: () => + _createOrUpdateSend(context, resourceGroupName, appLinkName, resource, options), + resourceLocationConfig: "azure-async-operation", + apiVersion: context.apiVersion ?? "2025-08-01-preview", + }) as PollerLike, AppLink>; +} + +export function _getSend( + context: Client, + resourceGroupName: string, + appLinkName: string, + options: AppLinksGetOptionalParams = { requestOptions: {} }, +): StreamableMethod { + const path = expandUrlTemplate( + "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.AppLink/appLinks/{appLinkName}{?api%2Dversion}", + { + subscriptionId: context.subscriptionId, + resourceGroupName: resourceGroupName, + appLinkName: appLinkName, + "api%2Dversion": context.apiVersion ?? "2025-08-01-preview", + }, + { + allowReserved: options?.requestOptions?.skipUrlEncoding, + }, + ); + return context.path(path).get({ + ...operationOptionsToRequestParameters(options), + headers: { accept: "application/json", ...options.requestOptions?.headers }, + }); +} + +export async function _getDeserialize(result: PathUncheckedResponse): Promise { + const expectedStatuses = ["200"]; + if (!expectedStatuses.includes(result.status)) { + const error = createRestError(result); + error.details = errorResponseDeserializer(result.body); + + throw error; + } + + return appLinkDeserializer(result.body); +} + +/** Get an AppLink. */ +export async function get( + context: Client, + resourceGroupName: string, + appLinkName: string, + options: AppLinksGetOptionalParams = { requestOptions: {} }, +): Promise { + const result = await _getSend(context, resourceGroupName, appLinkName, options); + return _getDeserialize(result); +} diff --git a/sdk/applink/arm-applink/src/api/appLinks/options.ts b/sdk/applink/arm-applink/src/api/appLinks/options.ts new file mode 100644 index 000000000000..5a3989ce0aaf --- /dev/null +++ b/sdk/applink/arm-applink/src/api/appLinks/options.ts @@ -0,0 +1,31 @@ +// Copyright (c) Microsoft Corporation. +// Licensed under the MIT License. + +import type { OperationOptions } from "@azure-rest/core-client"; + +/** Optional parameters. */ +export interface AppLinksListBySubscriptionOptionalParams extends OperationOptions {} + +/** Optional parameters. */ +export interface AppLinksListByResourceGroupOptionalParams extends OperationOptions {} + +/** Optional parameters. */ +export interface AppLinksDeleteOptionalParams extends OperationOptions { + /** Delay to wait until next poll, in milliseconds. */ + updateIntervalInMs?: number; +} + +/** Optional parameters. */ +export interface AppLinksUpdateOptionalParams extends OperationOptions { + /** Delay to wait until next poll, in milliseconds. */ + updateIntervalInMs?: number; +} + +/** Optional parameters. */ +export interface AppLinksCreateOrUpdateOptionalParams extends OperationOptions { + /** Delay to wait until next poll, in milliseconds. */ + updateIntervalInMs?: number; +} + +/** Optional parameters. */ +export interface AppLinksGetOptionalParams extends OperationOptions {} diff --git a/sdk/applink/arm-applink/src/api/availableVersions/index.ts b/sdk/applink/arm-applink/src/api/availableVersions/index.ts new file mode 100644 index 000000000000..d8f342abdab6 --- /dev/null +++ b/sdk/applink/arm-applink/src/api/availableVersions/index.ts @@ -0,0 +1,5 @@ +// Copyright (c) Microsoft Corporation. +// Licensed under the MIT License. + +export { listByLocation } from "./operations.js"; +export type { AvailableVersionsListByLocationOptionalParams } from "./options.js"; diff --git a/sdk/applink/arm-applink/src/api/availableVersions/operations.ts b/sdk/applink/arm-applink/src/api/availableVersions/operations.ts new file mode 100644 index 000000000000..b00b1801d6bb --- /dev/null +++ b/sdk/applink/arm-applink/src/api/availableVersions/operations.ts @@ -0,0 +1,71 @@ +// Copyright (c) Microsoft Corporation. +// Licensed under the MIT License. + +import type { AppLinkContext as Client } from "../index.js"; +import type { _AvailableVersionListResult, AvailableVersion } from "../../models/models.js"; +import { + errorResponseDeserializer, + _availableVersionListResultDeserializer, +} from "../../models/models.js"; +import type { PagedAsyncIterableIterator } from "../../static-helpers/pagingHelpers.js"; +import { buildPagedAsyncIterator } from "../../static-helpers/pagingHelpers.js"; +import { expandUrlTemplate } from "../../static-helpers/urlTemplate.js"; +import type { AvailableVersionsListByLocationOptionalParams } from "./options.js"; +import type { StreamableMethod, PathUncheckedResponse } from "@azure-rest/core-client"; +import { createRestError, operationOptionsToRequestParameters } from "@azure-rest/core-client"; + +export function _listByLocationSend( + context: Client, + location: string, + options: AvailableVersionsListByLocationOptionalParams = { requestOptions: {} }, +): StreamableMethod { + const path = expandUrlTemplate( + "/subscriptions/{subscriptionId}/providers/Microsoft.AppLink/locations/{location}/availableVersions{?api%2Dversion,kubernetesVersion}", + { + subscriptionId: context.subscriptionId, + location: location, + "api%2Dversion": context.apiVersion ?? "2025-08-01-preview", + kubernetesVersion: options?.kubernetesVersion, + }, + { + allowReserved: options?.requestOptions?.skipUrlEncoding, + }, + ); + return context.path(path).get({ + ...operationOptionsToRequestParameters(options), + headers: { accept: "application/json", ...options.requestOptions?.headers }, + }); +} + +export async function _listByLocationDeserialize( + result: PathUncheckedResponse, +): Promise<_AvailableVersionListResult> { + const expectedStatuses = ["200"]; + if (!expectedStatuses.includes(result.status)) { + const error = createRestError(result); + error.details = errorResponseDeserializer(result.body); + + throw error; + } + + return _availableVersionListResultDeserializer(result.body); +} + +/** List AvailableVersion resources by location. */ +export function listByLocation( + context: Client, + location: string, + options: AvailableVersionsListByLocationOptionalParams = { requestOptions: {} }, +): PagedAsyncIterableIterator { + return buildPagedAsyncIterator( + context, + () => _listByLocationSend(context, location, options), + _listByLocationDeserialize, + ["200"], + { + itemName: "value", + nextLinkName: "nextLink", + apiVersion: context.apiVersion ?? "2025-08-01-preview", + }, + ); +} diff --git a/sdk/applink/arm-applink/src/api/availableVersions/options.ts b/sdk/applink/arm-applink/src/api/availableVersions/options.ts new file mode 100644 index 000000000000..cbf628ce8457 --- /dev/null +++ b/sdk/applink/arm-applink/src/api/availableVersions/options.ts @@ -0,0 +1,10 @@ +// Copyright (c) Microsoft Corporation. +// Licensed under the MIT License. + +import type { OperationOptions } from "@azure-rest/core-client"; + +/** Optional parameters. */ +export interface AvailableVersionsListByLocationOptionalParams extends OperationOptions { + /** Kubernetes version to filter profiles */ + kubernetesVersion?: string; +} diff --git a/sdk/applink/arm-applink/src/api/index.ts b/sdk/applink/arm-applink/src/api/index.ts new file mode 100644 index 000000000000..1df2d27c1d71 --- /dev/null +++ b/sdk/applink/arm-applink/src/api/index.ts @@ -0,0 +1,5 @@ +// Copyright (c) Microsoft Corporation. +// Licensed under the MIT License. + +export type { AppLinkContext, AppLinkClientOptionalParams } from "./appLinkContext.js"; +export { createAppLink } from "./appLinkContext.js"; diff --git a/sdk/applink/arm-applink/src/api/operations/index.ts b/sdk/applink/arm-applink/src/api/operations/index.ts new file mode 100644 index 000000000000..de883c05d2f1 --- /dev/null +++ b/sdk/applink/arm-applink/src/api/operations/index.ts @@ -0,0 +1,5 @@ +// Copyright (c) Microsoft Corporation. +// Licensed under the MIT License. + +export { list } from "./operations.js"; +export type { OperationsListOptionalParams } from "./options.js"; diff --git a/sdk/applink/arm-applink/src/api/operations/operations.ts b/sdk/applink/arm-applink/src/api/operations/operations.ts new file mode 100644 index 000000000000..192647294811 --- /dev/null +++ b/sdk/applink/arm-applink/src/api/operations/operations.ts @@ -0,0 +1,66 @@ +// Copyright (c) Microsoft Corporation. +// Licensed under the MIT License. + +import type { AppLinkContext as Client } from "../index.js"; +import type { _OperationListResult, Operation } from "../../models/models.js"; +import { + _operationListResultDeserializer, + errorResponseDeserializer, +} from "../../models/models.js"; +import type { PagedAsyncIterableIterator } from "../../static-helpers/pagingHelpers.js"; +import { buildPagedAsyncIterator } from "../../static-helpers/pagingHelpers.js"; +import { expandUrlTemplate } from "../../static-helpers/urlTemplate.js"; +import type { OperationsListOptionalParams } from "./options.js"; +import type { StreamableMethod, PathUncheckedResponse } from "@azure-rest/core-client"; +import { createRestError, operationOptionsToRequestParameters } from "@azure-rest/core-client"; + +export function _listSend( + context: Client, + options: OperationsListOptionalParams = { requestOptions: {} }, +): StreamableMethod { + const path = expandUrlTemplate( + "/providers/Microsoft.AppLink/operations{?api%2Dversion}", + { + "api%2Dversion": context.apiVersion ?? "2025-08-01-preview", + }, + { + allowReserved: options?.requestOptions?.skipUrlEncoding, + }, + ); + return context.path(path).get({ + ...operationOptionsToRequestParameters(options), + headers: { accept: "application/json", ...options.requestOptions?.headers }, + }); +} + +export async function _listDeserialize( + result: PathUncheckedResponse, +): Promise<_OperationListResult> { + const expectedStatuses = ["200"]; + if (!expectedStatuses.includes(result.status)) { + const error = createRestError(result); + error.details = errorResponseDeserializer(result.body); + + throw error; + } + + return _operationListResultDeserializer(result.body); +} + +/** List the operations for the provider */ +export function list( + context: Client, + options: OperationsListOptionalParams = { requestOptions: {} }, +): PagedAsyncIterableIterator { + return buildPagedAsyncIterator( + context, + () => _listSend(context, options), + _listDeserialize, + ["200"], + { + itemName: "value", + nextLinkName: "nextLink", + apiVersion: context.apiVersion ?? "2025-08-01-preview", + }, + ); +} diff --git a/sdk/applink/arm-applink/src/api/operations/options.ts b/sdk/applink/arm-applink/src/api/operations/options.ts new file mode 100644 index 000000000000..b9a3fd9758a3 --- /dev/null +++ b/sdk/applink/arm-applink/src/api/operations/options.ts @@ -0,0 +1,7 @@ +// Copyright (c) Microsoft Corporation. +// Licensed under the MIT License. + +import type { OperationOptions } from "@azure-rest/core-client"; + +/** Optional parameters. */ +export interface OperationsListOptionalParams extends OperationOptions {} diff --git a/sdk/applink/arm-applink/src/api/upgradeHistories/index.ts b/sdk/applink/arm-applink/src/api/upgradeHistories/index.ts new file mode 100644 index 000000000000..c9dee6b8c40d --- /dev/null +++ b/sdk/applink/arm-applink/src/api/upgradeHistories/index.ts @@ -0,0 +1,5 @@ +// Copyright (c) Microsoft Corporation. +// Licensed under the MIT License. + +export { listByAppLinkMember } from "./operations.js"; +export type { UpgradeHistoriesListByAppLinkMemberOptionalParams } from "./options.js"; diff --git a/sdk/applink/arm-applink/src/api/upgradeHistories/operations.ts b/sdk/applink/arm-applink/src/api/upgradeHistories/operations.ts new file mode 100644 index 000000000000..2a00ef533eef --- /dev/null +++ b/sdk/applink/arm-applink/src/api/upgradeHistories/operations.ts @@ -0,0 +1,77 @@ +// Copyright (c) Microsoft Corporation. +// Licensed under the MIT License. + +import type { AppLinkContext as Client } from "../index.js"; +import type { _UpgradeHistoryListResult, UpgradeHistory } from "../../models/models.js"; +import { + errorResponseDeserializer, + _upgradeHistoryListResultDeserializer, +} from "../../models/models.js"; +import type { PagedAsyncIterableIterator } from "../../static-helpers/pagingHelpers.js"; +import { buildPagedAsyncIterator } from "../../static-helpers/pagingHelpers.js"; +import { expandUrlTemplate } from "../../static-helpers/urlTemplate.js"; +import type { UpgradeHistoriesListByAppLinkMemberOptionalParams } from "./options.js"; +import type { StreamableMethod, PathUncheckedResponse } from "@azure-rest/core-client"; +import { createRestError, operationOptionsToRequestParameters } from "@azure-rest/core-client"; + +export function _listByAppLinkMemberSend( + context: Client, + resourceGroupName: string, + appLinkName: string, + appLinkMemberName: string, + options: UpgradeHistoriesListByAppLinkMemberOptionalParams = { requestOptions: {} }, +): StreamableMethod { + const path = expandUrlTemplate( + "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.AppLink/appLinks/{appLinkName}/appLinkMembers/{appLinkMemberName}/upgradeHistories{?api%2Dversion}", + { + subscriptionId: context.subscriptionId, + resourceGroupName: resourceGroupName, + appLinkName: appLinkName, + appLinkMemberName: appLinkMemberName, + "api%2Dversion": context.apiVersion ?? "2025-08-01-preview", + }, + { + allowReserved: options?.requestOptions?.skipUrlEncoding, + }, + ); + return context.path(path).get({ + ...operationOptionsToRequestParameters(options), + headers: { accept: "application/json", ...options.requestOptions?.headers }, + }); +} + +export async function _listByAppLinkMemberDeserialize( + result: PathUncheckedResponse, +): Promise<_UpgradeHistoryListResult> { + const expectedStatuses = ["200"]; + if (!expectedStatuses.includes(result.status)) { + const error = createRestError(result); + error.details = errorResponseDeserializer(result.body); + + throw error; + } + + return _upgradeHistoryListResultDeserializer(result.body); +} + +/** List UpgradeHistory resources by AppLinkMember. */ +export function listByAppLinkMember( + context: Client, + resourceGroupName: string, + appLinkName: string, + appLinkMemberName: string, + options: UpgradeHistoriesListByAppLinkMemberOptionalParams = { requestOptions: {} }, +): PagedAsyncIterableIterator { + return buildPagedAsyncIterator( + context, + () => + _listByAppLinkMemberSend(context, resourceGroupName, appLinkName, appLinkMemberName, options), + _listByAppLinkMemberDeserialize, + ["200"], + { + itemName: "value", + nextLinkName: "nextLink", + apiVersion: context.apiVersion ?? "2025-08-01-preview", + }, + ); +} diff --git a/sdk/applink/arm-applink/src/api/upgradeHistories/options.ts b/sdk/applink/arm-applink/src/api/upgradeHistories/options.ts new file mode 100644 index 000000000000..868b1ce2a3be --- /dev/null +++ b/sdk/applink/arm-applink/src/api/upgradeHistories/options.ts @@ -0,0 +1,7 @@ +// Copyright (c) Microsoft Corporation. +// Licensed under the MIT License. + +import type { OperationOptions } from "@azure-rest/core-client"; + +/** Optional parameters. */ +export interface UpgradeHistoriesListByAppLinkMemberOptionalParams extends OperationOptions {} diff --git a/sdk/applink/arm-applink/src/appLinkClient.ts b/sdk/applink/arm-applink/src/appLinkClient.ts new file mode 100644 index 000000000000..00c231ec2f4e --- /dev/null +++ b/sdk/applink/arm-applink/src/appLinkClient.ts @@ -0,0 +1,57 @@ +// Copyright (c) Microsoft Corporation. +// Licensed under the MIT License. + +import type { AppLinkContext, AppLinkClientOptionalParams } from "./api/index.js"; +import { createAppLink } from "./api/index.js"; +import type { AppLinkMembersOperations } from "./classic/appLinkMembers/index.js"; +import { _getAppLinkMembersOperations } from "./classic/appLinkMembers/index.js"; +import type { AppLinksOperations } from "./classic/appLinks/index.js"; +import { _getAppLinksOperations } from "./classic/appLinks/index.js"; +import type { AvailableVersionsOperations } from "./classic/availableVersions/index.js"; +import { _getAvailableVersionsOperations } from "./classic/availableVersions/index.js"; +import type { OperationsOperations } from "./classic/operations/index.js"; +import { _getOperationsOperations } from "./classic/operations/index.js"; +import type { UpgradeHistoriesOperations } from "./classic/upgradeHistories/index.js"; +import { _getUpgradeHistoriesOperations } from "./classic/upgradeHistories/index.js"; +import type { TokenCredential } from "@azure/core-auth"; +import type { Pipeline } from "@azure/core-rest-pipeline"; + +export type { AppLinkClientOptionalParams } from "./api/appLinkContext.js"; + +export class AppLinkClient { + private _client: AppLinkContext; + /** The pipeline used by this client to make requests */ + public readonly pipeline: Pipeline; + + constructor( + credential: TokenCredential, + subscriptionId: string, + options: AppLinkClientOptionalParams = {}, + ) { + const prefixFromOptions = options?.userAgentOptions?.userAgentPrefix; + const userAgentPrefix = prefixFromOptions + ? `${prefixFromOptions} azsdk-js-client` + : `azsdk-js-client`; + this._client = createAppLink(credential, subscriptionId, { + ...options, + userAgentOptions: { userAgentPrefix }, + }); + this.pipeline = this._client.pipeline; + this.availableVersions = _getAvailableVersionsOperations(this._client); + this.upgradeHistories = _getUpgradeHistoriesOperations(this._client); + this.appLinkMembers = _getAppLinkMembersOperations(this._client); + this.appLinks = _getAppLinksOperations(this._client); + this.operations = _getOperationsOperations(this._client); + } + + /** The operation groups for availableVersions */ + public readonly availableVersions: AvailableVersionsOperations; + /** The operation groups for upgradeHistories */ + public readonly upgradeHistories: UpgradeHistoriesOperations; + /** The operation groups for appLinkMembers */ + public readonly appLinkMembers: AppLinkMembersOperations; + /** The operation groups for appLinks */ + public readonly appLinks: AppLinksOperations; + /** The operation groups for operations */ + public readonly operations: OperationsOperations; +} diff --git a/sdk/applink/arm-applink/src/classic/appLinkMembers/index.ts b/sdk/applink/arm-applink/src/classic/appLinkMembers/index.ts new file mode 100644 index 000000000000..a46196281a75 --- /dev/null +++ b/sdk/applink/arm-applink/src/classic/appLinkMembers/index.ts @@ -0,0 +1,109 @@ +// Copyright (c) Microsoft Corporation. +// Licensed under the MIT License. + +import type { AppLinkContext } from "../../api/appLinkContext.js"; +import { + listByAppLink, + $delete, + update, + createOrUpdate, + get, +} from "../../api/appLinkMembers/operations.js"; +import type { + AppLinkMembersListByAppLinkOptionalParams, + AppLinkMembersDeleteOptionalParams, + AppLinkMembersUpdateOptionalParams, + AppLinkMembersCreateOrUpdateOptionalParams, + AppLinkMembersGetOptionalParams, +} from "../../api/appLinkMembers/options.js"; +import type { AppLinkMember, AppLinkMemberUpdate } from "../../models/models.js"; +import type { PagedAsyncIterableIterator } from "../../static-helpers/pagingHelpers.js"; +import type { PollerLike, OperationState } from "@azure/core-lro"; + +/** Interface representing a AppLinkMembers operations. */ +export interface AppLinkMembersOperations { + /** List AppLinkMember resources by AppLink. */ + listByAppLink: ( + resourceGroupName: string, + appLinkName: string, + options?: AppLinkMembersListByAppLinkOptionalParams, + ) => PagedAsyncIterableIterator; + /** Delete an AppLinkMember. */ + /** + * @fixme delete is a reserved word that cannot be used as an operation name. + * Please add @clientName("clientName") or @clientName("", "javascript") + * to the operation to override the generated name. + */ + delete: ( + resourceGroupName: string, + appLinkName: string, + appLinkMemberName: string, + options?: AppLinkMembersDeleteOptionalParams, + ) => PollerLike, void>; + /** Update an AppLinkMember. */ + update: ( + resourceGroupName: string, + appLinkName: string, + appLinkMemberName: string, + properties: AppLinkMemberUpdate, + options?: AppLinkMembersUpdateOptionalParams, + ) => PollerLike, AppLinkMember>; + /** Create an AppLinkMember. */ + createOrUpdate: ( + resourceGroupName: string, + appLinkName: string, + appLinkMemberName: string, + resource: AppLinkMember, + options?: AppLinkMembersCreateOrUpdateOptionalParams, + ) => PollerLike, AppLinkMember>; + /** Get an AppLinkMember. */ + get: ( + resourceGroupName: string, + appLinkName: string, + appLinkMemberName: string, + options?: AppLinkMembersGetOptionalParams, + ) => Promise; +} + +function _getAppLinkMembers(context: AppLinkContext) { + return { + listByAppLink: ( + resourceGroupName: string, + appLinkName: string, + options?: AppLinkMembersListByAppLinkOptionalParams, + ) => listByAppLink(context, resourceGroupName, appLinkName, options), + delete: ( + resourceGroupName: string, + appLinkName: string, + appLinkMemberName: string, + options?: AppLinkMembersDeleteOptionalParams, + ) => $delete(context, resourceGroupName, appLinkName, appLinkMemberName, options), + update: ( + resourceGroupName: string, + appLinkName: string, + appLinkMemberName: string, + properties: AppLinkMemberUpdate, + options?: AppLinkMembersUpdateOptionalParams, + ) => update(context, resourceGroupName, appLinkName, appLinkMemberName, properties, options), + createOrUpdate: ( + resourceGroupName: string, + appLinkName: string, + appLinkMemberName: string, + resource: AppLinkMember, + options?: AppLinkMembersCreateOrUpdateOptionalParams, + ) => + createOrUpdate(context, resourceGroupName, appLinkName, appLinkMemberName, resource, options), + get: ( + resourceGroupName: string, + appLinkName: string, + appLinkMemberName: string, + options?: AppLinkMembersGetOptionalParams, + ) => get(context, resourceGroupName, appLinkName, appLinkMemberName, options), + }; +} + +export function _getAppLinkMembersOperations(context: AppLinkContext): AppLinkMembersOperations { + return { + ..._getAppLinkMembers(context), + }; +} diff --git a/sdk/applink/arm-applink/src/classic/appLinks/index.ts b/sdk/applink/arm-applink/src/classic/appLinks/index.ts new file mode 100644 index 000000000000..4ee93aa6bebc --- /dev/null +++ b/sdk/applink/arm-applink/src/classic/appLinks/index.ts @@ -0,0 +1,103 @@ +// Copyright (c) Microsoft Corporation. +// Licensed under the MIT License. + +import type { AppLinkContext } from "../../api/appLinkContext.js"; +import { + listBySubscription, + listByResourceGroup, + $delete, + update, + createOrUpdate, + get, +} from "../../api/appLinks/operations.js"; +import type { + AppLinksListBySubscriptionOptionalParams, + AppLinksListByResourceGroupOptionalParams, + AppLinksDeleteOptionalParams, + AppLinksUpdateOptionalParams, + AppLinksCreateOrUpdateOptionalParams, + AppLinksGetOptionalParams, +} from "../../api/appLinks/options.js"; +import type { AppLink, AppLinkUpdate } from "../../models/models.js"; +import type { PagedAsyncIterableIterator } from "../../static-helpers/pagingHelpers.js"; +import type { PollerLike, OperationState } from "@azure/core-lro"; + +/** Interface representing a AppLinks operations. */ +export interface AppLinksOperations { + /** List AppLink resources by subscription. */ + listBySubscription: ( + options?: AppLinksListBySubscriptionOptionalParams, + ) => PagedAsyncIterableIterator; + /** List AppLink resources by resource group. */ + listByResourceGroup: ( + resourceGroupName: string, + options?: AppLinksListByResourceGroupOptionalParams, + ) => PagedAsyncIterableIterator; + /** Delete an AppLink. */ + /** + * @fixme delete is a reserved word that cannot be used as an operation name. + * Please add @clientName("clientName") or @clientName("", "javascript") + * to the operation to override the generated name. + */ + delete: ( + resourceGroupName: string, + appLinkName: string, + options?: AppLinksDeleteOptionalParams, + ) => PollerLike, void>; + /** Update an AppLink. */ + update: ( + resourceGroupName: string, + appLinkName: string, + properties: AppLinkUpdate, + options?: AppLinksUpdateOptionalParams, + ) => PollerLike, AppLink>; + /** Create an AppLink. */ + createOrUpdate: ( + resourceGroupName: string, + appLinkName: string, + resource: AppLink, + options?: AppLinksCreateOrUpdateOptionalParams, + ) => PollerLike, AppLink>; + /** Get an AppLink. */ + get: ( + resourceGroupName: string, + appLinkName: string, + options?: AppLinksGetOptionalParams, + ) => Promise; +} + +function _getAppLinks(context: AppLinkContext) { + return { + listBySubscription: (options?: AppLinksListBySubscriptionOptionalParams) => + listBySubscription(context, options), + listByResourceGroup: ( + resourceGroupName: string, + options?: AppLinksListByResourceGroupOptionalParams, + ) => listByResourceGroup(context, resourceGroupName, options), + delete: ( + resourceGroupName: string, + appLinkName: string, + options?: AppLinksDeleteOptionalParams, + ) => $delete(context, resourceGroupName, appLinkName, options), + update: ( + resourceGroupName: string, + appLinkName: string, + properties: AppLinkUpdate, + options?: AppLinksUpdateOptionalParams, + ) => update(context, resourceGroupName, appLinkName, properties, options), + createOrUpdate: ( + resourceGroupName: string, + appLinkName: string, + resource: AppLink, + options?: AppLinksCreateOrUpdateOptionalParams, + ) => createOrUpdate(context, resourceGroupName, appLinkName, resource, options), + get: (resourceGroupName: string, appLinkName: string, options?: AppLinksGetOptionalParams) => + get(context, resourceGroupName, appLinkName, options), + }; +} + +export function _getAppLinksOperations(context: AppLinkContext): AppLinksOperations { + return { + ..._getAppLinks(context), + }; +} diff --git a/sdk/applink/arm-applink/src/classic/availableVersions/index.ts b/sdk/applink/arm-applink/src/classic/availableVersions/index.ts new file mode 100644 index 000000000000..29110f8e3e54 --- /dev/null +++ b/sdk/applink/arm-applink/src/classic/availableVersions/index.ts @@ -0,0 +1,32 @@ +// Copyright (c) Microsoft Corporation. +// Licensed under the MIT License. + +import type { AppLinkContext } from "../../api/appLinkContext.js"; +import { listByLocation } from "../../api/availableVersions/operations.js"; +import type { AvailableVersionsListByLocationOptionalParams } from "../../api/availableVersions/options.js"; +import type { AvailableVersion } from "../../models/models.js"; +import type { PagedAsyncIterableIterator } from "../../static-helpers/pagingHelpers.js"; + +/** Interface representing a AvailableVersions operations. */ +export interface AvailableVersionsOperations { + /** List AvailableVersion resources by location. */ + listByLocation: ( + location: string, + options?: AvailableVersionsListByLocationOptionalParams, + ) => PagedAsyncIterableIterator; +} + +function _getAvailableVersions(context: AppLinkContext) { + return { + listByLocation: (location: string, options?: AvailableVersionsListByLocationOptionalParams) => + listByLocation(context, location, options), + }; +} + +export function _getAvailableVersionsOperations( + context: AppLinkContext, +): AvailableVersionsOperations { + return { + ..._getAvailableVersions(context), + }; +} diff --git a/sdk/applink/arm-applink/src/classic/index.ts b/sdk/applink/arm-applink/src/classic/index.ts new file mode 100644 index 000000000000..6795f3d3c3f6 --- /dev/null +++ b/sdk/applink/arm-applink/src/classic/index.ts @@ -0,0 +1,8 @@ +// Copyright (c) Microsoft Corporation. +// Licensed under the MIT License. + +export type { AppLinkMembersOperations } from "./appLinkMembers/index.js"; +export type { AppLinksOperations } from "./appLinks/index.js"; +export type { AvailableVersionsOperations } from "./availableVersions/index.js"; +export type { OperationsOperations } from "./operations/index.js"; +export type { UpgradeHistoriesOperations } from "./upgradeHistories/index.js"; diff --git a/sdk/applink/arm-applink/src/classic/operations/index.ts b/sdk/applink/arm-applink/src/classic/operations/index.ts new file mode 100644 index 000000000000..4c7862bad99c --- /dev/null +++ b/sdk/applink/arm-applink/src/classic/operations/index.ts @@ -0,0 +1,26 @@ +// Copyright (c) Microsoft Corporation. +// Licensed under the MIT License. + +import type { AppLinkContext } from "../../api/appLinkContext.js"; +import { list } from "../../api/operations/operations.js"; +import type { OperationsListOptionalParams } from "../../api/operations/options.js"; +import type { Operation } from "../../models/models.js"; +import type { PagedAsyncIterableIterator } from "../../static-helpers/pagingHelpers.js"; + +/** Interface representing a Operations operations. */ +export interface OperationsOperations { + /** List the operations for the provider */ + list: (options?: OperationsListOptionalParams) => PagedAsyncIterableIterator; +} + +function _getOperations(context: AppLinkContext) { + return { + list: (options?: OperationsListOptionalParams) => list(context, options), + }; +} + +export function _getOperationsOperations(context: AppLinkContext): OperationsOperations { + return { + ..._getOperations(context), + }; +} diff --git a/sdk/applink/arm-applink/src/classic/upgradeHistories/index.ts b/sdk/applink/arm-applink/src/classic/upgradeHistories/index.ts new file mode 100644 index 000000000000..77495eec4aa2 --- /dev/null +++ b/sdk/applink/arm-applink/src/classic/upgradeHistories/index.ts @@ -0,0 +1,38 @@ +// Copyright (c) Microsoft Corporation. +// Licensed under the MIT License. + +import type { AppLinkContext } from "../../api/appLinkContext.js"; +import { listByAppLinkMember } from "../../api/upgradeHistories/operations.js"; +import type { UpgradeHistoriesListByAppLinkMemberOptionalParams } from "../../api/upgradeHistories/options.js"; +import type { UpgradeHistory } from "../../models/models.js"; +import type { PagedAsyncIterableIterator } from "../../static-helpers/pagingHelpers.js"; + +/** Interface representing a UpgradeHistories operations. */ +export interface UpgradeHistoriesOperations { + /** List UpgradeHistory resources by AppLinkMember. */ + listByAppLinkMember: ( + resourceGroupName: string, + appLinkName: string, + appLinkMemberName: string, + options?: UpgradeHistoriesListByAppLinkMemberOptionalParams, + ) => PagedAsyncIterableIterator; +} + +function _getUpgradeHistories(context: AppLinkContext) { + return { + listByAppLinkMember: ( + resourceGroupName: string, + appLinkName: string, + appLinkMemberName: string, + options?: UpgradeHistoriesListByAppLinkMemberOptionalParams, + ) => listByAppLinkMember(context, resourceGroupName, appLinkName, appLinkMemberName, options), + }; +} + +export function _getUpgradeHistoriesOperations( + context: AppLinkContext, +): UpgradeHistoriesOperations { + return { + ..._getUpgradeHistories(context), + }; +} diff --git a/sdk/applink/arm-applink/src/index.ts b/sdk/applink/arm-applink/src/index.ts new file mode 100644 index 000000000000..13df7f521a0e --- /dev/null +++ b/sdk/applink/arm-applink/src/index.ts @@ -0,0 +1,101 @@ +// Copyright (c) Microsoft Corporation. +// Licensed under the MIT License. + +import type { AzureSupportedClouds } from "./static-helpers/cloudSettingHelpers.js"; +import { AzureClouds } from "./static-helpers/cloudSettingHelpers.js"; +import type { + PageSettings, + ContinuablePage, + PagedAsyncIterableIterator, +} from "./static-helpers/pagingHelpers.js"; + +export { AppLinkClient } from "./appLinkClient.js"; +export type { RestorePollerOptions } from "./restorePollerHelpers.js"; +export { restorePoller } from "./restorePollerHelpers.js"; +export type { + Operation, + OperationDisplay, + Origin, + ActionType, + ErrorResponse, + ErrorDetail, + ErrorAdditionalInfo, + AppLink, + AppLinkProperties, + ProvisioningState, + ManagedServiceIdentity, + ManagedServiceIdentityType, + UserAssignedIdentity, + TrackedResource, + Resource, + SystemData, + CreatedByType, + AppLinkUpdate, + AppLinkMember, + AppLinkMemberProperties, + ClusterType, + Metadata, + UpgradeProfile, + UpgradeMode, + FullyManagedUpgradeProfile, + UpgradeReleaseChannel, + SelfManagedUpgradeProfile, + ObservabilityProfile, + MetricsProfile, + ConnectivityProfile, + EastWestGatewayProfile, + EastWestGatewayVisibility, + PrivateConnectProfile, + AppLinkMemberUpdate, + AppLinkMemberUpdateProperties, + UpgradeHistory, + UpgradeHistoryProperties, + ProxyResource, + AvailableVersion, + AvailableVersionProperties, + FullyManagedVersions, + ReleaseChannelInfo, + SelfManagedVersions, + VersionInfo, +} from "./models/index.js"; +export { + KnownOrigin, + KnownActionType, + KnownProvisioningState, + KnownManagedServiceIdentityType, + KnownCreatedByType, + KnownClusterType, + KnownUpgradeMode, + KnownUpgradeReleaseChannel, + KnownEastWestGatewayVisibility, + KnownVersions, +} from "./models/index.js"; +export type { AppLinkClientOptionalParams } from "./api/index.js"; +export type { + AppLinkMembersListByAppLinkOptionalParams, + AppLinkMembersDeleteOptionalParams, + AppLinkMembersUpdateOptionalParams, + AppLinkMembersCreateOrUpdateOptionalParams, + AppLinkMembersGetOptionalParams, +} from "./api/appLinkMembers/index.js"; +export type { + AppLinksListBySubscriptionOptionalParams, + AppLinksListByResourceGroupOptionalParams, + AppLinksDeleteOptionalParams, + AppLinksUpdateOptionalParams, + AppLinksCreateOrUpdateOptionalParams, + AppLinksGetOptionalParams, +} from "./api/appLinks/index.js"; +export type { AvailableVersionsListByLocationOptionalParams } from "./api/availableVersions/index.js"; +export type { OperationsListOptionalParams } from "./api/operations/index.js"; +export type { UpgradeHistoriesListByAppLinkMemberOptionalParams } from "./api/upgradeHistories/index.js"; +export type { + AppLinkMembersOperations, + AppLinksOperations, + AvailableVersionsOperations, + OperationsOperations, + UpgradeHistoriesOperations, +} from "./classic/index.js"; +export type { PageSettings, ContinuablePage, PagedAsyncIterableIterator }; +export { AzureClouds }; +export type { AzureSupportedClouds }; diff --git a/sdk/applink/arm-applink/src/logger.ts b/sdk/applink/arm-applink/src/logger.ts new file mode 100644 index 000000000000..212e0f848648 --- /dev/null +++ b/sdk/applink/arm-applink/src/logger.ts @@ -0,0 +1,5 @@ +// Copyright (c) Microsoft Corporation. +// Licensed under the MIT License. + +import { createClientLogger } from "@azure/logger"; +export const logger = createClientLogger("arm-applink"); diff --git a/sdk/applink/arm-applink/src/models/index.ts b/sdk/applink/arm-applink/src/models/index.ts new file mode 100644 index 000000000000..1d9b3b4933f1 --- /dev/null +++ b/sdk/applink/arm-applink/src/models/index.ts @@ -0,0 +1,61 @@ +// Copyright (c) Microsoft Corporation. +// Licensed under the MIT License. + +export type { + Operation, + OperationDisplay, + Origin, + ActionType, + ErrorResponse, + ErrorDetail, + ErrorAdditionalInfo, + AppLink, + AppLinkProperties, + ProvisioningState, + ManagedServiceIdentity, + ManagedServiceIdentityType, + UserAssignedIdentity, + TrackedResource, + Resource, + SystemData, + CreatedByType, + AppLinkUpdate, + AppLinkMember, + AppLinkMemberProperties, + ClusterType, + Metadata, + UpgradeProfile, + UpgradeMode, + FullyManagedUpgradeProfile, + UpgradeReleaseChannel, + SelfManagedUpgradeProfile, + ObservabilityProfile, + MetricsProfile, + ConnectivityProfile, + EastWestGatewayProfile, + EastWestGatewayVisibility, + PrivateConnectProfile, + AppLinkMemberUpdate, + AppLinkMemberUpdateProperties, + UpgradeHistory, + UpgradeHistoryProperties, + ProxyResource, + AvailableVersion, + AvailableVersionProperties, + FullyManagedVersions, + ReleaseChannelInfo, + SelfManagedVersions, + VersionInfo, +} from "./models.js"; +export { + KnownOrigin, + KnownActionType, + KnownProvisioningState, + KnownManagedServiceIdentityType, + KnownCreatedByType, + KnownClusterType, + KnownUpgradeMode, + KnownUpgradeReleaseChannel, + KnownEastWestGatewayVisibility, + KnownVersions, +} from "./models.js"; diff --git a/sdk/applink/arm-applink/src/models/models.ts b/sdk/applink/arm-applink/src/models/models.ts new file mode 100644 index 000000000000..d0a04b536a4b --- /dev/null +++ b/sdk/applink/arm-applink/src/models/models.ts @@ -0,0 +1,1101 @@ +// Copyright (c) Microsoft Corporation. +// Licensed under the MIT License. + +/** + * This file contains only generated model types and their (de)serializers. + * Disable the following rules for internal models with '_' prefix and deserializers which require 'any' for raw JSON input. + */ +/* eslint-disable @typescript-eslint/naming-convention */ +/* eslint-disable @typescript-eslint/explicit-module-boundary-types */ +/** A list of REST API operations supported by an Azure Resource Provider. It contains an URL link to get the next set of results. */ +export interface _OperationListResult { + /** The Operation items on this page */ + value: Operation[]; + /** The link to the next page of items */ + nextLink?: string; +} + +export function _operationListResultDeserializer(item: any): _OperationListResult { + return { + value: operationArrayDeserializer(item["value"]), + nextLink: item["nextLink"], + }; +} + +export function operationArrayDeserializer(result: Array): any[] { + return result.map((item) => { + return operationDeserializer(item); + }); +} + +/** Details of a REST API operation, returned from the Resource Provider Operations API */ +export interface Operation { + /** The name of the operation, as per Resource-Based Access Control (RBAC). Examples: "Microsoft.Compute/virtualMachines/write", "Microsoft.Compute/virtualMachines/capture/action" */ + readonly name?: string; + /** Whether the operation applies to data-plane. This is "true" for data-plane operations and "false" for Azure Resource Manager/control-plane operations. */ + readonly isDataAction?: boolean; + /** Localized display information for this particular operation. */ + display?: OperationDisplay; + /** The intended executor of the operation; as in Resource Based Access Control (RBAC) and audit logs UX. Default value is "user,system" */ + readonly origin?: Origin; + /** Extensible enum. Indicates the action type. "Internal" refers to actions that are for internal only APIs. */ + readonly actionType?: ActionType; +} + +export function operationDeserializer(item: any): Operation { + return { + name: item["name"], + isDataAction: item["isDataAction"], + display: !item["display"] ? item["display"] : operationDisplayDeserializer(item["display"]), + origin: item["origin"], + actionType: item["actionType"], + }; +} + +/** Localized display information for an operation. */ +export interface OperationDisplay { + /** The localized friendly form of the resource provider name, e.g. "Microsoft Monitoring Insights" or "Microsoft Compute". */ + readonly provider?: string; + /** The localized friendly name of the resource type related to this operation. E.g. "Virtual Machines" or "Job Schedule Collections". */ + readonly resource?: string; + /** The concise, localized friendly name for the operation; suitable for dropdowns. E.g. "Create or Update Virtual Machine", "Restart Virtual Machine". */ + readonly operation?: string; + /** The short, localized friendly description of the operation; suitable for tool tips and detailed views. */ + readonly description?: string; +} + +export function operationDisplayDeserializer(item: any): OperationDisplay { + return { + provider: item["provider"], + resource: item["resource"], + operation: item["operation"], + description: item["description"], + }; +} + +/** The intended executor of the operation; as in Resource Based Access Control (RBAC) and audit logs UX. Default value is "user,system" */ +export enum KnownOrigin { + /** Indicates the operation is initiated by a user. */ + User = "user", + /** Indicates the operation is initiated by a system. */ + System = "system", + /** Indicates the operation is initiated by a user or system. */ + UserSystem = "user,system", +} + +/** + * The intended executor of the operation; as in Resource Based Access Control (RBAC) and audit logs UX. Default value is "user,system" \ + * {@link KnownOrigin} can be used interchangeably with Origin, + * this enum contains the known values that the service supports. + * ### Known values supported by the service + * **user**: Indicates the operation is initiated by a user. \ + * **system**: Indicates the operation is initiated by a system. \ + * **user,system**: Indicates the operation is initiated by a user or system. + */ +export type Origin = string; + +/** Extensible enum. Indicates the action type. "Internal" refers to actions that are for internal only APIs. */ +export enum KnownActionType { + /** Actions are for internal-only APIs. */ + Internal = "Internal", +} + +/** + * Extensible enum. Indicates the action type. "Internal" refers to actions that are for internal only APIs. \ + * {@link KnownActionType} can be used interchangeably with ActionType, + * this enum contains the known values that the service supports. + * ### Known values supported by the service + * **Internal**: Actions are for internal-only APIs. + */ +export type ActionType = string; + +/** Common error response for all Azure Resource Manager APIs to return error details for failed operations. */ +export interface ErrorResponse { + /** The error object. */ + error?: ErrorDetail; +} + +export function errorResponseDeserializer(item: any): ErrorResponse { + return { + error: !item["error"] ? item["error"] : errorDetailDeserializer(item["error"]), + }; +} + +/** The error detail. */ +export interface ErrorDetail { + /** The error code. */ + readonly code?: string; + /** The error message. */ + readonly message?: string; + /** The error target. */ + readonly target?: string; + /** The error details. */ + readonly details?: ErrorDetail[]; + /** The error additional info. */ + readonly additionalInfo?: ErrorAdditionalInfo[]; +} + +export function errorDetailDeserializer(item: any): ErrorDetail { + return { + code: item["code"], + message: item["message"], + target: item["target"], + details: !item["details"] ? item["details"] : errorDetailArrayDeserializer(item["details"]), + additionalInfo: !item["additionalInfo"] + ? item["additionalInfo"] + : errorAdditionalInfoArrayDeserializer(item["additionalInfo"]), + }; +} + +export function errorDetailArrayDeserializer(result: Array): any[] { + return result.map((item) => { + return errorDetailDeserializer(item); + }); +} + +export function errorAdditionalInfoArrayDeserializer(result: Array): any[] { + return result.map((item) => { + return errorAdditionalInfoDeserializer(item); + }); +} + +/** The resource management error additional info. */ +export interface ErrorAdditionalInfo { + /** The additional info type. */ + readonly type?: string; + /** The additional info. */ + readonly info?: any; +} + +export function errorAdditionalInfoDeserializer(item: any): ErrorAdditionalInfo { + return { + type: item["type"], + info: item["info"], + }; +} + +/** AppLink resource */ +export interface AppLink extends TrackedResource { + /** The resource-specific properties for this resource. */ + properties?: AppLinkProperties; + /** The managed service identities assigned to this resource. */ + identity?: ManagedServiceIdentity; +} + +export function appLinkSerializer(item: AppLink): any { + return { + tags: item["tags"], + location: item["location"], + properties: !item["properties"] + ? item["properties"] + : appLinkPropertiesSerializer(item["properties"]), + identity: !item["identity"] + ? item["identity"] + : managedServiceIdentitySerializer(item["identity"]), + }; +} + +export function appLinkDeserializer(item: any): AppLink { + return { + tags: !item["tags"] + ? item["tags"] + : Object.fromEntries(Object.entries(item["tags"]).map(([k, p]: [string, any]) => [k, p])), + location: item["location"], + id: item["id"], + name: item["name"], + type: item["type"], + systemData: !item["systemData"] + ? item["systemData"] + : systemDataDeserializer(item["systemData"]), + properties: !item["properties"] + ? item["properties"] + : appLinkPropertiesDeserializer(item["properties"]), + identity: !item["identity"] + ? item["identity"] + : managedServiceIdentityDeserializer(item["identity"]), + }; +} + +/** AppLink properties */ +export interface AppLinkProperties { + /** Provisioning state */ + readonly provisioningState?: ProvisioningState; +} + +export function appLinkPropertiesSerializer(item: AppLinkProperties): any { + return item; +} + +export function appLinkPropertiesDeserializer(item: any): AppLinkProperties { + return { + provisioningState: item["provisioningState"], + }; +} + +/** Provisioning state of the resource */ +export enum KnownProvisioningState { + /** Resource has been created. */ + Succeeded = "Succeeded", + /** Resource creation failed. */ + Failed = "Failed", + /** Resource creation was canceled. */ + Canceled = "Canceled", + /** Resource is getting provisioned. */ + Provisioning = "Provisioning", + /** Resource is Updating. */ + Updating = "Updating", + /** Resource is Deleting. */ + Deleting = "Deleting", + /** Resource has been Accepted. */ + Accepted = "Accepted", +} + +/** + * Provisioning state of the resource \ + * {@link KnownProvisioningState} can be used interchangeably with ProvisioningState, + * this enum contains the known values that the service supports. + * ### Known values supported by the service + * **Succeeded**: Resource has been created. \ + * **Failed**: Resource creation failed. \ + * **Canceled**: Resource creation was canceled. \ + * **Provisioning**: Resource is getting provisioned. \ + * **Updating**: Resource is Updating. \ + * **Deleting**: Resource is Deleting. \ + * **Accepted**: Resource has been Accepted. + */ +export type ProvisioningState = string; + +/** Managed service identity (system assigned and/or user assigned identities) */ +export interface ManagedServiceIdentity { + /** The service principal ID of the system assigned identity. This property will only be provided for a system assigned identity. */ + readonly principalId?: string; + /** The tenant ID of the system assigned identity. This property will only be provided for a system assigned identity. */ + readonly tenantId?: string; + /** The type of managed identity assigned to this resource. */ + type: ManagedServiceIdentityType; + /** The identities assigned to this resource by the user. */ + userAssignedIdentities?: Record; +} + +export function managedServiceIdentitySerializer(item: ManagedServiceIdentity): any { + return { type: item["type"], userAssignedIdentities: item["userAssignedIdentities"] }; +} + +export function managedServiceIdentityDeserializer(item: any): ManagedServiceIdentity { + return { + principalId: item["principalId"], + tenantId: item["tenantId"], + type: item["type"], + userAssignedIdentities: !item["userAssignedIdentities"] + ? item["userAssignedIdentities"] + : Object.fromEntries( + Object.entries(item["userAssignedIdentities"]).map(([k, p]: [string, any]) => [ + k, + !p ? p : userAssignedIdentityDeserializer(p), + ]), + ), + }; +} + +/** Type of managed service identity (where both SystemAssigned and UserAssigned types are allowed). */ +export enum KnownManagedServiceIdentityType { + /** No managed identity. */ + None = "None", + /** System assigned managed identity. */ + SystemAssigned = "SystemAssigned", + /** User assigned managed identity. */ + UserAssigned = "UserAssigned", + /** System and user assigned managed identity. */ + SystemAssignedUserAssigned = "SystemAssigned,UserAssigned", +} + +/** + * Type of managed service identity (where both SystemAssigned and UserAssigned types are allowed). \ + * {@link KnownManagedServiceIdentityType} can be used interchangeably with ManagedServiceIdentityType, + * this enum contains the known values that the service supports. + * ### Known values supported by the service + * **None**: No managed identity. \ + * **SystemAssigned**: System assigned managed identity. \ + * **UserAssigned**: User assigned managed identity. \ + * **SystemAssigned,UserAssigned**: System and user assigned managed identity. + */ +export type ManagedServiceIdentityType = string; + +/** User assigned identity properties */ +export interface UserAssignedIdentity { + /** The principal ID of the assigned identity. */ + readonly principalId?: string; + /** The client ID of the assigned identity. */ + readonly clientId?: string; +} + +export function userAssignedIdentitySerializer(item: UserAssignedIdentity): any { + return item; +} + +export function userAssignedIdentityDeserializer(item: any): UserAssignedIdentity { + return { + principalId: item["principalId"], + clientId: item["clientId"], + }; +} + +/** The resource model definition for an Azure Resource Manager tracked top level resource which has 'tags' and a 'location' */ +export interface TrackedResource extends Resource { + /** Resource tags. */ + tags?: Record; + /** The geo-location where the resource lives */ + location: string; +} + +export function trackedResourceSerializer(item: TrackedResource): any { + return { tags: item["tags"], location: item["location"] }; +} + +export function trackedResourceDeserializer(item: any): TrackedResource { + return { + id: item["id"], + name: item["name"], + type: item["type"], + systemData: !item["systemData"] + ? item["systemData"] + : systemDataDeserializer(item["systemData"]), + tags: !item["tags"] + ? item["tags"] + : Object.fromEntries(Object.entries(item["tags"]).map(([k, p]: [string, any]) => [k, p])), + location: item["location"], + }; +} + +/** Common fields that are returned in the response for all Azure Resource Manager resources */ +export interface Resource { + /** Fully qualified resource ID for the resource. Ex - /subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/{resourceProviderNamespace}/{resourceType}/{resourceName} */ + readonly id?: string; + /** The name of the resource */ + readonly name?: string; + /** The type of the resource. E.g. "Microsoft.Compute/virtualMachines" or "Microsoft.Storage/storageAccounts" */ + readonly type?: string; + /** Azure Resource Manager metadata containing createdBy and modifiedBy information. */ + readonly systemData?: SystemData; +} + +export function resourceSerializer(item: Resource): any { + return item; +} + +export function resourceDeserializer(item: any): Resource { + return { + id: item["id"], + name: item["name"], + type: item["type"], + systemData: !item["systemData"] + ? item["systemData"] + : systemDataDeserializer(item["systemData"]), + }; +} + +/** Metadata pertaining to creation and last modification of the resource. */ +export interface SystemData { + /** The identity that created the resource. */ + createdBy?: string; + /** The type of identity that created the resource. */ + createdByType?: CreatedByType; + /** The timestamp of resource creation (UTC). */ + createdAt?: Date; + /** The identity that last modified the resource. */ + lastModifiedBy?: string; + /** The type of identity that last modified the resource. */ + lastModifiedByType?: CreatedByType; + /** The timestamp of resource last modification (UTC) */ + lastModifiedAt?: Date; +} + +export function systemDataDeserializer(item: any): SystemData { + return { + createdBy: item["createdBy"], + createdByType: item["createdByType"], + createdAt: !item["createdAt"] ? item["createdAt"] : new Date(item["createdAt"]), + lastModifiedBy: item["lastModifiedBy"], + lastModifiedByType: item["lastModifiedByType"], + lastModifiedAt: !item["lastModifiedAt"] + ? item["lastModifiedAt"] + : new Date(item["lastModifiedAt"]), + }; +} + +/** The kind of entity that created the resource. */ +export enum KnownCreatedByType { + /** The entity was created by a user. */ + User = "User", + /** The entity was created by an application. */ + Application = "Application", + /** The entity was created by a managed identity. */ + ManagedIdentity = "ManagedIdentity", + /** The entity was created by a key. */ + Key = "Key", +} + +/** + * The kind of entity that created the resource. \ + * {@link KnownCreatedByType} can be used interchangeably with CreatedByType, + * this enum contains the known values that the service supports. + * ### Known values supported by the service + * **User**: The entity was created by a user. \ + * **Application**: The entity was created by an application. \ + * **ManagedIdentity**: The entity was created by a managed identity. \ + * **Key**: The entity was created by a key. + */ +export type CreatedByType = string; + +/** The type used for update operations of the AppLink. */ +export interface AppLinkUpdate { + /** Resource tags. */ + tags?: Record; +} + +export function appLinkUpdateSerializer(item: AppLinkUpdate): any { + return { tags: item["tags"] }; +} + +/** The response of a AppLink list operation. */ +export interface _AppLinkListResult { + /** The AppLink items on this page */ + value: AppLink[]; + /** The link to the next page of items */ + nextLink?: string; +} + +export function _appLinkListResultDeserializer(item: any): _AppLinkListResult { + return { + value: appLinkArrayDeserializer(item["value"]), + nextLink: item["nextLink"], + }; +} + +export function appLinkArraySerializer(result: Array): any[] { + return result.map((item) => { + return appLinkSerializer(item); + }); +} + +export function appLinkArrayDeserializer(result: Array): any[] { + return result.map((item) => { + return appLinkDeserializer(item); + }); +} + +/** AppLink Member resource */ +export interface AppLinkMember extends TrackedResource { + /** The resource-specific properties for this resource. */ + properties?: AppLinkMemberProperties; +} + +export function appLinkMemberSerializer(item: AppLinkMember): any { + return { + tags: item["tags"], + location: item["location"], + properties: !item["properties"] + ? item["properties"] + : appLinkMemberPropertiesSerializer(item["properties"]), + }; +} + +export function appLinkMemberDeserializer(item: any): AppLinkMember { + return { + tags: !item["tags"] + ? item["tags"] + : Object.fromEntries(Object.entries(item["tags"]).map(([k, p]: [string, any]) => [k, p])), + location: item["location"], + id: item["id"], + name: item["name"], + type: item["type"], + systemData: !item["systemData"] + ? item["systemData"] + : systemDataDeserializer(item["systemData"]), + properties: !item["properties"] + ? item["properties"] + : appLinkMemberPropertiesDeserializer(item["properties"]), + }; +} + +/** AppLink Member properties */ +export interface AppLinkMemberProperties { + /** Cluster type */ + clusterType?: ClusterType; + /** AppLink Member Metadata */ + metadata: Metadata; + /** Upgrade profile. */ + upgradeProfile?: UpgradeProfile; + /** Observability profile */ + observabilityProfile?: ObservabilityProfile; + /** Connectivity profile. */ + connectivityProfile?: ConnectivityProfile; + /** Provisioning state */ + readonly provisioningState?: ProvisioningState; +} + +export function appLinkMemberPropertiesSerializer(item: AppLinkMemberProperties): any { + return { + clusterType: item["clusterType"], + metadata: metadataSerializer(item["metadata"]), + upgradeProfile: !item["upgradeProfile"] + ? item["upgradeProfile"] + : upgradeProfileSerializer(item["upgradeProfile"]), + observabilityProfile: !item["observabilityProfile"] + ? item["observabilityProfile"] + : observabilityProfileSerializer(item["observabilityProfile"]), + connectivityProfile: !item["connectivityProfile"] + ? item["connectivityProfile"] + : connectivityProfileSerializer(item["connectivityProfile"]), + }; +} + +export function appLinkMemberPropertiesDeserializer(item: any): AppLinkMemberProperties { + return { + clusterType: item["clusterType"], + metadata: metadataDeserializer(item["metadata"]), + upgradeProfile: !item["upgradeProfile"] + ? item["upgradeProfile"] + : upgradeProfileDeserializer(item["upgradeProfile"]), + observabilityProfile: !item["observabilityProfile"] + ? item["observabilityProfile"] + : observabilityProfileDeserializer(item["observabilityProfile"]), + connectivityProfile: !item["connectivityProfile"] + ? item["connectivityProfile"] + : connectivityProfileDeserializer(item["connectivityProfile"]), + provisioningState: item["provisioningState"], + }; +} + +/** AppLinkMember cluster type */ +export enum KnownClusterType { + /** Azure Kubernetes Service */ + AKS = "AKS", +} + +/** + * AppLinkMember cluster type \ + * {@link KnownClusterType} can be used interchangeably with ClusterType, + * this enum contains the known values that the service supports. + * ### Known values supported by the service + * **AKS**: Azure Kubernetes Service + */ +export type ClusterType = string; + +/** AppLinkMember metadata */ +export interface Metadata { + /** Resource ID */ + resourceId: string; +} + +export function metadataSerializer(item: Metadata): any { + return { resourceId: item["resourceId"] }; +} + +export function metadataDeserializer(item: any): Metadata { + return { + resourceId: item["resourceId"], + }; +} + +/** AppLinkMember upgrade profile. */ +export interface UpgradeProfile { + /** Upgrade mode. */ + mode: UpgradeMode; + /** Fully managed upgrade profile. */ + fullyManagedUpgradeProfile?: FullyManagedUpgradeProfile; + /** Self managed upgrade profile. */ + selfManagedUpgradeProfile?: SelfManagedUpgradeProfile; +} + +export function upgradeProfileSerializer(item: UpgradeProfile): any { + return { + mode: item["mode"], + fullyManagedUpgradeProfile: !item["fullyManagedUpgradeProfile"] + ? item["fullyManagedUpgradeProfile"] + : fullyManagedUpgradeProfileSerializer(item["fullyManagedUpgradeProfile"]), + selfManagedUpgradeProfile: !item["selfManagedUpgradeProfile"] + ? item["selfManagedUpgradeProfile"] + : selfManagedUpgradeProfileSerializer(item["selfManagedUpgradeProfile"]), + }; +} + +export function upgradeProfileDeserializer(item: any): UpgradeProfile { + return { + mode: item["mode"], + fullyManagedUpgradeProfile: !item["fullyManagedUpgradeProfile"] + ? item["fullyManagedUpgradeProfile"] + : fullyManagedUpgradeProfileDeserializer(item["fullyManagedUpgradeProfile"]), + selfManagedUpgradeProfile: !item["selfManagedUpgradeProfile"] + ? item["selfManagedUpgradeProfile"] + : selfManagedUpgradeProfileDeserializer(item["selfManagedUpgradeProfile"]), + }; +} + +/** AppLinkMember upgrade mode */ +export enum KnownUpgradeMode { + /** Fully managed upgrade mode */ + FullyManaged = "FullyManaged", + /** Self managed upgrade mode */ + SelfManaged = "SelfManaged", +} + +/** + * AppLinkMember upgrade mode \ + * {@link KnownUpgradeMode} can be used interchangeably with UpgradeMode, + * this enum contains the known values that the service supports. + * ### Known values supported by the service + * **FullyManaged**: Fully managed upgrade mode \ + * **SelfManaged**: Self managed upgrade mode + */ +export type UpgradeMode = string; + +/** AppLinkMember fully managed upgrade profile */ +export interface FullyManagedUpgradeProfile { + /** Release channel */ + releaseChannel: UpgradeReleaseChannel; +} + +export function fullyManagedUpgradeProfileSerializer(item: FullyManagedUpgradeProfile): any { + return { releaseChannel: item["releaseChannel"] }; +} + +export function fullyManagedUpgradeProfileDeserializer(item: any): FullyManagedUpgradeProfile { + return { + releaseChannel: item["releaseChannel"], + }; +} + +/** AppLinkMember upgrade release channel */ +export enum KnownUpgradeReleaseChannel { + /** Rapid release channel */ + Rapid = "Rapid", + /** Stable release channel */ + Stable = "Stable", +} + +/** + * AppLinkMember upgrade release channel \ + * {@link KnownUpgradeReleaseChannel} can be used interchangeably with UpgradeReleaseChannel, + * this enum contains the known values that the service supports. + * ### Known values supported by the service + * **Rapid**: Rapid release channel \ + * **Stable**: Stable release channel + */ +export type UpgradeReleaseChannel = string; + +/** AppLinkMember self managed upgrade profile */ +export interface SelfManagedUpgradeProfile { + /** Istio version */ + version: string; +} + +export function selfManagedUpgradeProfileSerializer(item: SelfManagedUpgradeProfile): any { + return { version: item["version"] }; +} + +export function selfManagedUpgradeProfileDeserializer(item: any): SelfManagedUpgradeProfile { + return { + version: item["version"], + }; +} + +/** AppLinkMember observability profile */ +export interface ObservabilityProfile { + /** Metrics configuration */ + metrics?: MetricsProfile; +} + +export function observabilityProfileSerializer(item: ObservabilityProfile): any { + return { + metrics: !item["metrics"] ? item["metrics"] : metricsProfileSerializer(item["metrics"]), + }; +} + +export function observabilityProfileDeserializer(item: any): ObservabilityProfile { + return { + metrics: !item["metrics"] ? item["metrics"] : metricsProfileDeserializer(item["metrics"]), + }; +} + +/** AppLinkMember metrics profile */ +export interface MetricsProfile { + /** Metrics endpoint URL */ + readonly metricsEndpoint?: string; +} + +export function metricsProfileSerializer(item: MetricsProfile): any { + return item; +} + +export function metricsProfileDeserializer(item: any): MetricsProfile { + return { + metricsEndpoint: item["metricsEndpoint"], + }; +} + +/** AppLinkMember connectivity profile. */ +export interface ConnectivityProfile { + /** East-West gateway profile. */ + eastWestGateway?: EastWestGatewayProfile; + /** Private connect profile. */ + privateConnect?: PrivateConnectProfile; +} + +export function connectivityProfileSerializer(item: ConnectivityProfile): any { + return { + eastWestGateway: !item["eastWestGateway"] + ? item["eastWestGateway"] + : eastWestGatewayProfileSerializer(item["eastWestGateway"]), + privateConnect: !item["privateConnect"] + ? item["privateConnect"] + : privateConnectProfileSerializer(item["privateConnect"]), + }; +} + +export function connectivityProfileDeserializer(item: any): ConnectivityProfile { + return { + eastWestGateway: !item["eastWestGateway"] + ? item["eastWestGateway"] + : eastWestGatewayProfileDeserializer(item["eastWestGateway"]), + privateConnect: !item["privateConnect"] + ? item["privateConnect"] + : privateConnectProfileDeserializer(item["privateConnect"]), + }; +} + +/** AppLinkMember east-west gateway profile. */ +export interface EastWestGatewayProfile { + /** East-West gateway visibility. */ + visibility: EastWestGatewayVisibility; +} + +export function eastWestGatewayProfileSerializer(item: EastWestGatewayProfile): any { + return { visibility: item["visibility"] }; +} + +export function eastWestGatewayProfileDeserializer(item: any): EastWestGatewayProfile { + return { + visibility: item["visibility"], + }; +} + +/** East-West gateway visibility. */ +export enum KnownEastWestGatewayVisibility { + /** Use an internal load balancer for the east-west gateway. */ + Internal = "Internal", + /** Use an external load balancer for the east-west gateway. */ + External = "External", +} + +/** + * East-West gateway visibility. \ + * {@link KnownEastWestGatewayVisibility} can be used interchangeably with EastWestGatewayVisibility, + * this enum contains the known values that the service supports. + * ### Known values supported by the service + * **Internal**: Use an internal load balancer for the east-west gateway. \ + * **External**: Use an external load balancer for the east-west gateway. + */ +export type EastWestGatewayVisibility = string; + +/** AppLinkMember private connect profile. */ +export interface PrivateConnectProfile { + /** Delegated Subnet to AppLink. */ + subnetResourceId: string; +} + +export function privateConnectProfileSerializer(item: PrivateConnectProfile): any { + return { subnetResourceId: item["subnetResourceId"] }; +} + +export function privateConnectProfileDeserializer(item: any): PrivateConnectProfile { + return { + subnetResourceId: item["subnetResourceId"], + }; +} + +/** The type used for update operations of the AppLinkMember. */ +export interface AppLinkMemberUpdate { + /** Resource tags. */ + tags?: Record; + /** The resource-specific properties for this resource. */ + properties?: AppLinkMemberUpdateProperties; +} + +export function appLinkMemberUpdateSerializer(item: AppLinkMemberUpdate): any { + return { + tags: item["tags"], + properties: !item["properties"] + ? item["properties"] + : appLinkMemberUpdatePropertiesSerializer(item["properties"]), + }; +} + +/** The updatable properties of the AppLinkMember. */ +export interface AppLinkMemberUpdateProperties { + /** Upgrade profile. */ + upgradeProfile?: UpgradeProfile; + /** Observability profile */ + observabilityProfile?: ObservabilityProfile; + /** Connectivity profile. */ + connectivityProfile?: ConnectivityProfile; +} + +export function appLinkMemberUpdatePropertiesSerializer(item: AppLinkMemberUpdateProperties): any { + return { + upgradeProfile: !item["upgradeProfile"] + ? item["upgradeProfile"] + : upgradeProfileSerializer(item["upgradeProfile"]), + observabilityProfile: !item["observabilityProfile"] + ? item["observabilityProfile"] + : observabilityProfileSerializer(item["observabilityProfile"]), + connectivityProfile: !item["connectivityProfile"] + ? item["connectivityProfile"] + : connectivityProfileSerializer(item["connectivityProfile"]), + }; +} + +/** The response of a AppLinkMember list operation. */ +export interface _AppLinkMemberListResult { + /** The AppLinkMember items on this page */ + value: AppLinkMember[]; + /** The link to the next page of items */ + nextLink?: string; +} + +export function _appLinkMemberListResultDeserializer(item: any): _AppLinkMemberListResult { + return { + value: appLinkMemberArrayDeserializer(item["value"]), + nextLink: item["nextLink"], + }; +} + +export function appLinkMemberArraySerializer(result: Array): any[] { + return result.map((item) => { + return appLinkMemberSerializer(item); + }); +} + +export function appLinkMemberArrayDeserializer(result: Array): any[] { + return result.map((item) => { + return appLinkMemberDeserializer(item); + }); +} + +/** The response of a UpgradeHistory list operation. */ +export interface _UpgradeHistoryListResult { + /** The UpgradeHistory items on this page */ + value: UpgradeHistory[]; + /** The link to the next page of items */ + nextLink?: string; +} + +export function _upgradeHistoryListResultDeserializer(item: any): _UpgradeHistoryListResult { + return { + value: upgradeHistoryArrayDeserializer(item["value"]), + nextLink: item["nextLink"], + }; +} + +export function upgradeHistoryArrayDeserializer(result: Array): any[] { + return result.map((item) => { + return upgradeHistoryDeserializer(item); + }); +} + +/** AppLinkMember upgrade history */ +export interface UpgradeHistory extends ProxyResource { + /** The resource-specific properties for this resource. */ + properties?: UpgradeHistoryProperties; +} + +export function upgradeHistoryDeserializer(item: any): UpgradeHistory { + return { + id: item["id"], + name: item["name"], + type: item["type"], + systemData: !item["systemData"] + ? item["systemData"] + : systemDataDeserializer(item["systemData"]), + properties: !item["properties"] + ? item["properties"] + : upgradeHistoryPropertiesDeserializer(item["properties"]), + }; +} + +/** AppLinkMember upgrade history properties */ +export interface UpgradeHistoryProperties { + /** Start timestamp */ + startTimestamp: Date; + /** End timestamp */ + endTimestamp?: Date; + /** Upgrade initiator */ + initiatedBy: string; + /** Version upgraded from */ + fromVersion: string; + /** Version upgraded to */ + toVersion: string; + /** Provisioning state */ + readonly provisioningState?: ProvisioningState; +} + +export function upgradeHistoryPropertiesDeserializer(item: any): UpgradeHistoryProperties { + return { + startTimestamp: new Date(item["startTimestamp"]), + endTimestamp: !item["endTimestamp"] ? item["endTimestamp"] : new Date(item["endTimestamp"]), + initiatedBy: item["initiatedBy"], + fromVersion: item["fromVersion"], + toVersion: item["toVersion"], + provisioningState: item["provisioningState"], + }; +} + +/** The resource model definition for a Azure Resource Manager proxy resource. It will not have tags and a location */ +export interface ProxyResource extends Resource {} + +export function proxyResourceDeserializer(item: any): ProxyResource { + return { + id: item["id"], + name: item["name"], + type: item["type"], + systemData: !item["systemData"] + ? item["systemData"] + : systemDataDeserializer(item["systemData"]), + }; +} + +/** The response of a AvailableVersion list operation. */ +export interface _AvailableVersionListResult { + /** The AvailableVersion items on this page */ + value: AvailableVersion[]; + /** The link to the next page of items */ + nextLink?: string; +} + +export function _availableVersionListResultDeserializer(item: any): _AvailableVersionListResult { + return { + value: availableVersionArrayDeserializer(item["value"]), + nextLink: item["nextLink"], + }; +} + +export function availableVersionArrayDeserializer(result: Array): any[] { + return result.map((item) => { + return availableVersionDeserializer(item); + }); +} + +/** AppLink available version resource */ +export interface AvailableVersion extends ProxyResource { + /** The resource-specific properties for this resource. */ + properties?: AvailableVersionProperties; +} + +export function availableVersionDeserializer(item: any): AvailableVersion { + return { + id: item["id"], + name: item["name"], + type: item["type"], + systemData: !item["systemData"] + ? item["systemData"] + : systemDataDeserializer(item["systemData"]), + properties: !item["properties"] + ? item["properties"] + : availableVersionPropertiesDeserializer(item["properties"]), + }; +} + +/** AppLink available version properties */ +export interface AvailableVersionProperties { + /** Kubernetes version */ + kubernetesVersion: string; + /** Fully managed versions */ + fullyManagedVersions: FullyManagedVersions; + /** Self managed versions */ + selfManagedVersions: SelfManagedVersions; + /** Provisioning state */ + readonly provisioningState?: ProvisioningState; +} + +export function availableVersionPropertiesDeserializer(item: any): AvailableVersionProperties { + return { + kubernetesVersion: item["kubernetesVersion"], + fullyManagedVersions: fullyManagedVersionsDeserializer(item["fullyManagedVersions"]), + selfManagedVersions: selfManagedVersionsDeserializer(item["selfManagedVersions"]), + provisioningState: item["provisioningState"], + }; +} + +/** Fully managed versions */ +export interface FullyManagedVersions { + /** Release channels */ + releaseChannels: ReleaseChannelInfo[]; +} + +export function fullyManagedVersionsDeserializer(item: any): FullyManagedVersions { + return { + releaseChannels: releaseChannelInfoArrayDeserializer(item["releaseChannels"]), + }; +} + +export function releaseChannelInfoArrayDeserializer(result: Array): any[] { + return result.map((item) => { + return releaseChannelInfoDeserializer(item); + }); +} + +/** Release channel information */ +export interface ReleaseChannelInfo { + /** Release channel */ + releaseChannel: string; + /** Istio version behind release channel */ + version: string; +} + +export function releaseChannelInfoDeserializer(item: any): ReleaseChannelInfo { + return { + releaseChannel: item["releaseChannel"], + version: item["version"], + }; +} + +/** Self managed versions */ +export interface SelfManagedVersions { + /** Istio versions */ + versions: VersionInfo[]; +} + +export function selfManagedVersionsDeserializer(item: any): SelfManagedVersions { + return { + versions: versionInfoArrayDeserializer(item["versions"]), + }; +} + +export function versionInfoArrayDeserializer(result: Array): any[] { + return result.map((item) => { + return versionInfoDeserializer(item); + }); +} + +/** Version information */ +export interface VersionInfo { + /** Istio version */ + version: string; + /** Available upgrades */ + upgrades: string[]; +} + +export function versionInfoDeserializer(item: any): VersionInfo { + return { + version: item["version"], + upgrades: item["upgrades"].map((p: any) => { + return p; + }), + }; +} + +/** The available API versions. */ +export enum KnownVersions { + /** 2025-08-01-preview version */ + V20250801Preview = "2025-08-01-preview", +} diff --git a/sdk/applink/arm-applink/src/restorePollerHelpers.ts b/sdk/applink/arm-applink/src/restorePollerHelpers.ts new file mode 100644 index 000000000000..738252019063 --- /dev/null +++ b/sdk/applink/arm-applink/src/restorePollerHelpers.ts @@ -0,0 +1,173 @@ +// Copyright (c) Microsoft Corporation. +// Licensed under the MIT License. + +import type { AppLinkClient } from "./appLinkClient.js"; +import { + _$deleteDeserialize, + _updateDeserialize, + _createOrUpdateDeserialize, +} from "./api/appLinkMembers/operations.js"; +import { + _$deleteDeserialize as _$deleteDeserializeAppLinks, + _updateDeserialize as _updateDeserializeAppLinks, + _createOrUpdateDeserialize as _createOrUpdateDeserializeAppLinks, +} from "./api/appLinks/operations.js"; +import { getLongRunningPoller } from "./static-helpers/pollingHelpers.js"; +import type { OperationOptions, PathUncheckedResponse } from "@azure-rest/core-client"; +import type { AbortSignalLike } from "@azure/abort-controller"; +import type { PollerLike, OperationState, ResourceLocationConfig } from "@azure/core-lro"; +import { deserializeState } from "@azure/core-lro"; + +export interface RestorePollerOptions< + TResult, + TResponse extends PathUncheckedResponse = PathUncheckedResponse, +> extends OperationOptions { + /** Delay to wait until next poll, in milliseconds. */ + updateIntervalInMs?: number; + /** + * The signal which can be used to abort requests. + */ + abortSignal?: AbortSignalLike; + /** Deserialization function for raw response body */ + processResponseBody?: (result: TResponse) => Promise; +} + +/** + * Creates a poller from the serialized state of another poller. This can be + * useful when you want to create pollers on a different host or a poller + * needs to be constructed after the original one is not in scope. + */ +export function restorePoller( + client: AppLinkClient, + serializedState: string, + sourceOperation: (...args: any[]) => PollerLike, TResult>, + options?: RestorePollerOptions, +): PollerLike, TResult> { + const pollerConfig = deserializeState(serializedState).config; + const { initialRequestUrl, requestMethod, metadata } = pollerConfig; + if (!initialRequestUrl || !requestMethod) { + throw new Error( + `Invalid serialized state: ${serializedState} for sourceOperation ${sourceOperation?.name}`, + ); + } + const resourceLocationConfig = metadata?.["resourceLocationConfig"] as + | ResourceLocationConfig + | undefined; + const { deserializer, expectedStatuses = [] } = + getDeserializationHelper(initialRequestUrl, requestMethod) ?? {}; + const deserializeHelper = options?.processResponseBody ?? deserializer; + if (!deserializeHelper) { + throw new Error( + `Please ensure the operation is in this client! We can't find its deserializeHelper for ${sourceOperation?.name}.`, + ); + } + const apiVersion = getApiVersionFromUrl(initialRequestUrl); + return getLongRunningPoller( + (client as any)["_client"] ?? client, + deserializeHelper as (result: TResponse) => Promise, + expectedStatuses, + { + updateIntervalInMs: options?.updateIntervalInMs, + abortSignal: options?.abortSignal, + resourceLocationConfig, + restoreFrom: serializedState, + initialRequestUrl, + apiVersion, + }, + ); +} + +interface DeserializationHelper { + deserializer: (result: PathUncheckedResponse) => Promise; + expectedStatuses: string[]; +} + +const deserializeMap: Record = { + "DELETE /subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.AppLink/appLinks/{appLinkName}/appLinkMembers/{appLinkMemberName}": + { deserializer: _$deleteDeserialize, expectedStatuses: ["202", "204", "200"] }, + "PATCH /subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.AppLink/appLinks/{appLinkName}/appLinkMembers/{appLinkMemberName}": + { deserializer: _updateDeserialize, expectedStatuses: ["200", "202", "201"] }, + "PUT /subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.AppLink/appLinks/{appLinkName}/appLinkMembers/{appLinkMemberName}": + { deserializer: _createOrUpdateDeserialize, expectedStatuses: ["200", "201", "202"] }, + "DELETE /subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.AppLink/appLinks/{appLinkName}": + { deserializer: _$deleteDeserializeAppLinks, expectedStatuses: ["202", "204", "200"] }, + "PATCH /subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.AppLink/appLinks/{appLinkName}": + { deserializer: _updateDeserializeAppLinks, expectedStatuses: ["200", "202", "201"] }, + "PUT /subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.AppLink/appLinks/{appLinkName}": + { deserializer: _createOrUpdateDeserializeAppLinks, expectedStatuses: ["200", "201", "202"] }, +}; + +function getDeserializationHelper( + urlStr: string, + method: string, +): DeserializationHelper | undefined { + const path = new URL(urlStr).pathname; + const pathParts = path.split("/"); + + // Traverse list to match the longest candidate + // matchedLen: the length of candidate path + // matchedValue: the matched status code array + let matchedLen = -1, + matchedValue: DeserializationHelper | undefined; + + // Iterate the responseMap to find a match + for (const [key, value] of Object.entries(deserializeMap)) { + // Extracting the path from the map key which is in format + // GET /path/foo + if (!key.startsWith(method)) { + continue; + } + const candidatePath = getPathFromMapKey(key); + // Get each part of the url path + const candidateParts = candidatePath.split("/"); + + // track if we have found a match to return the values found. + let found = true; + for (let i = candidateParts.length - 1, j = pathParts.length - 1; i >= 1 && j >= 1; i--, j--) { + if (candidateParts[i]?.startsWith("{") && candidateParts[i]?.indexOf("}") !== -1) { + const start = candidateParts[i]!.indexOf("}") + 1, + end = candidateParts[i]?.length; + // If the current part of the candidate is a "template" part + // Try to use the suffix of pattern to match the path + // {guid} ==> $ + // {guid}:export ==> :export$ + const isMatched = new RegExp(`${candidateParts[i]?.slice(start, end)}`).test( + pathParts[j] || "", + ); + + if (!isMatched) { + found = false; + break; + } + continue; + } + + // If the candidate part is not a template and + // the parts don't match mark the candidate as not found + // to move on with the next candidate path. + if (candidateParts[i] !== pathParts[j]) { + found = false; + break; + } + } + + // We finished evaluating the current candidate parts + // Update the matched value if and only if we found the longer pattern + if (found && candidatePath.length > matchedLen) { + matchedLen = candidatePath.length; + matchedValue = value; + } + } + + return matchedValue; +} + +function getPathFromMapKey(mapKey: string): string { + const pathStart = mapKey.indexOf("/"); + return mapKey.slice(pathStart); +} + +function getApiVersionFromUrl(urlStr: string): string | undefined { + const url = new URL(urlStr); + return url.searchParams.get("api-version") ?? undefined; +} diff --git a/sdk/applink/arm-applink/src/static-helpers/cloudSettingHelpers.ts b/sdk/applink/arm-applink/src/static-helpers/cloudSettingHelpers.ts new file mode 100644 index 000000000000..613112c6e397 --- /dev/null +++ b/sdk/applink/arm-applink/src/static-helpers/cloudSettingHelpers.ts @@ -0,0 +1,42 @@ +// Copyright (c) Microsoft Corporation. +// Licensed under the MIT License. + +/** + * An enum to describe Azure Cloud environments. + * @enum {string} + */ +export enum AzureClouds { + /** Azure public cloud, which is the default cloud for Azure SDKs. */ + AZURE_PUBLIC_CLOUD = "AZURE_PUBLIC_CLOUD", + /** Azure China cloud */ + AZURE_CHINA_CLOUD = "AZURE_CHINA_CLOUD", + /** Azure US government cloud */ + AZURE_US_GOVERNMENT = "AZURE_US_GOVERNMENT", +} + +/** The supported values for cloud setting as a string literal type */ +export type AzureSupportedClouds = `${AzureClouds}`; + +/** + * Gets the Azure Resource Manager endpoint URL for the specified cloud setting. + * @param cloudSetting - The Azure cloud environment setting. Use one of the AzureClouds enum values. + * @returns The ARM endpoint URL for the specified cloud, or undefined if cloudSetting is undefined. + * @throws {Error} Throws an error if an unknown cloud setting is provided. + */ +export function getArmEndpoint(cloudSetting?: AzureSupportedClouds): string | undefined { + if (cloudSetting === undefined) { + return undefined; + } + const cloudEndpoints: Record = { + AZURE_CHINA_CLOUD: "https://management.chinacloudapi.cn/", + AZURE_US_GOVERNMENT: "https://management.usgovcloudapi.net/", + AZURE_PUBLIC_CLOUD: "https://management.azure.com/", + }; + if (cloudSetting in cloudEndpoints) { + return cloudEndpoints[cloudSetting]; + } else { + throw new Error( + `Unknown cloud setting: ${cloudSetting}. Please refer to the enum AzureClouds for possible values.`, + ); + } +} diff --git a/sdk/applink/arm-applink/src/static-helpers/pagingHelpers.ts b/sdk/applink/arm-applink/src/static-helpers/pagingHelpers.ts new file mode 100644 index 000000000000..9258ba95eda8 --- /dev/null +++ b/sdk/applink/arm-applink/src/static-helpers/pagingHelpers.ts @@ -0,0 +1,270 @@ +// Copyright (c) Microsoft Corporation. +// Licensed under the MIT License. + +import type { Client, PathUncheckedResponse } from "@azure-rest/core-client"; +import { createRestError } from "@azure-rest/core-client"; +import { RestError } from "@azure/core-rest-pipeline"; + +/** + * Options for the byPage method + */ +export interface PageSettings { + /** + * A reference to a specific page to start iterating from. + */ + continuationToken?: string; +} + +/** + * An interface that describes a page of results. + */ +export type ContinuablePage = TPage & { + /** + * The token that keeps track of where to continue the iterator + */ + continuationToken?: string; +}; + +/** + * An interface that allows async iterable iteration both to completion and by page. + */ +export interface PagedAsyncIterableIterator< + TElement, + TPage = TElement[], + TPageSettings extends PageSettings = PageSettings, +> { + /** + * The next method, part of the iteration protocol + */ + next(): Promise>; + /** + * The connection to the async iterator, part of the iteration protocol + */ + [Symbol.asyncIterator](): PagedAsyncIterableIterator; + /** + * Return an AsyncIterableIterator that works a page at a time + */ + byPage: (settings?: TPageSettings) => AsyncIterableIterator>; +} + +/** + * An interface that describes how to communicate with the service. + */ +export interface PagedResult< + TElement, + TPage = TElement[], + TPageSettings extends PageSettings = PageSettings, +> { + /** + * Link to the first page of results. + */ + firstPageLink?: string; + /** + * A method that returns a page of results. + */ + getPage: (pageLink?: string) => Promise<{ page: TPage; nextPageLink?: string } | undefined>; + /** + * a function to implement the `byPage` method on the paged async iterator. + */ + byPage?: (settings?: TPageSettings) => AsyncIterableIterator>; + + /** + * A function to extract elements from a page. + */ + toElements?: (page: TPage) => TElement[]; +} + +/** + * Options for the paging helper + */ +export interface BuildPagedAsyncIteratorOptions { + itemName?: string; + nextLinkName?: string; + nextLinkMethod?: "GET" | "POST"; + apiVersion?: string; +} + +/** + * Helper to paginate results in a generic way and return a PagedAsyncIterableIterator + */ +export function buildPagedAsyncIterator< + TElement, + TPage = TElement[], + TPageSettings extends PageSettings = PageSettings, + TResponse extends PathUncheckedResponse = PathUncheckedResponse, +>( + client: Client, + getInitialResponse: () => PromiseLike, + processResponseBody: (result: TResponse) => PromiseLike, + expectedStatuses: string[], + options: BuildPagedAsyncIteratorOptions = {}, +): PagedAsyncIterableIterator { + const itemName = options.itemName ?? "value"; + const nextLinkName = options.nextLinkName ?? "nextLink"; + const nextLinkMethod = options.nextLinkMethod ?? "GET"; + const apiVersion = options.apiVersion; + const pagedResult: PagedResult = { + getPage: async (pageLink?: string) => { + let result; + if (pageLink === undefined) { + result = await getInitialResponse(); + } else { + const resolvedPageLink = apiVersion ? addApiVersionToUrl(pageLink, apiVersion) : pageLink; + result = + nextLinkMethod === "POST" + ? await client.pathUnchecked(resolvedPageLink).post() + : await client.pathUnchecked(resolvedPageLink).get(); + } + checkPagingRequest(result, expectedStatuses); + const results = await processResponseBody(result as TResponse); + const nextLink = getNextLink(results, nextLinkName); + const values = getElements(results, itemName) as TPage; + return { + page: values, + nextPageLink: nextLink, + }; + }, + byPage: (settings?: TPageSettings) => { + const { continuationToken } = settings ?? {}; + return getPageAsyncIterator(pagedResult, { + pageLink: continuationToken, + }); + }, + }; + return getPagedAsyncIterator(pagedResult); +} + +/** + * returns an async iterator that iterates over results. It also has a `byPage` + * method that returns pages of items at once. + * + * @param pagedResult - an object that specifies how to get pages. + * @returns a paged async iterator that iterates over results. + */ + +function getPagedAsyncIterator< + TElement, + TPage = TElement[], + TPageSettings extends PageSettings = PageSettings, +>( + pagedResult: PagedResult, +): PagedAsyncIterableIterator { + const iter = getItemAsyncIterator(pagedResult); + return { + next() { + return iter.next(); + }, + [Symbol.asyncIterator]() { + return this; + }, + byPage: + pagedResult?.byPage ?? + ((settings?: TPageSettings) => { + const { continuationToken } = settings ?? {}; + return getPageAsyncIterator(pagedResult, { + pageLink: continuationToken, + }); + }), + }; +} + +async function* getItemAsyncIterator( + pagedResult: PagedResult, +): AsyncIterableIterator { + const pages = getPageAsyncIterator(pagedResult); + for await (const page of pages) { + yield* page as unknown as TElement[]; + } +} + +async function* getPageAsyncIterator( + pagedResult: PagedResult, + options: { + pageLink?: string; + } = {}, +): AsyncIterableIterator> { + const { pageLink } = options; + let response = await pagedResult.getPage(pageLink ?? pagedResult.firstPageLink); + if (!response) { + return; + } + let result = response.page as ContinuablePage; + result.continuationToken = response.nextPageLink; + yield result; + while (response.nextPageLink) { + response = await pagedResult.getPage(response.nextPageLink); + if (!response) { + return; + } + result = response.page as ContinuablePage; + result.continuationToken = response.nextPageLink; + yield result; + } +} + +/** + * Gets for the value of nextLink in the body + */ +function getNextLink(body: unknown, nextLinkName?: string): string | undefined { + if (!nextLinkName) { + return undefined; + } + + const nextLink = (body as Record)[nextLinkName]; + + if (typeof nextLink !== "string" && typeof nextLink !== "undefined" && nextLink !== null) { + throw new RestError( + `Body Property ${nextLinkName} should be a string or undefined or null but got ${typeof nextLink}`, + ); + } + + if (nextLink === null) { + return undefined; + } + + return nextLink; +} + +/** + * Gets the elements of the current request in the body. + */ +function getElements(body: unknown, itemName: string): T[] { + const value = (body as Record)[itemName] as T[]; + if (!Array.isArray(value)) { + throw new RestError( + `Couldn't paginate response\n Body doesn't contain an array property with name: ${itemName}`, + ); + } + + return value ?? []; +} + +/** + * Checks if a request failed + */ +function checkPagingRequest(response: PathUncheckedResponse, expectedStatuses: string[]): void { + if (!expectedStatuses.includes(response.status)) { + throw createRestError( + `Pagination failed with unexpected statusCode ${response.status}`, + response, + ); + } +} + +/** + * Adds the api-version query parameter on a URL if it's not present. + * @param url - the URL to modify + * @param apiVersion - the API version to set + * @returns - the URL with the api-version query parameter set + */ +function addApiVersionToUrl(url: string, apiVersion: string): string { + // The base URL is only used for parsing and won't appear in the returned URL + const urlObj = new URL(url, "https://microsoft.com"); + if (!urlObj.searchParams.get("api-version")) { + // Append one if there is no apiVersion + return `${url}${ + Array.from(urlObj.searchParams.keys()).length > 0 ? "&" : "?" + }api-version=${apiVersion}`; + } + return url; +} diff --git a/sdk/applink/arm-applink/src/static-helpers/pollingHelpers.ts b/sdk/applink/arm-applink/src/static-helpers/pollingHelpers.ts new file mode 100644 index 000000000000..8e36a866edcc --- /dev/null +++ b/sdk/applink/arm-applink/src/static-helpers/pollingHelpers.ts @@ -0,0 +1,150 @@ +// Copyright (c) Microsoft Corporation. +// Licensed under the MIT License. + +import type { + PollerLike, + OperationState, + ResourceLocationConfig, + RunningOperation, + OperationResponse, +} from "@azure/core-lro"; +import { createHttpPoller } from "@azure/core-lro"; + +import type { Client, PathUncheckedResponse } from "@azure-rest/core-client"; +import { createRestError } from "@azure-rest/core-client"; +import type { AbortSignalLike } from "@azure/abort-controller"; + +export interface GetLongRunningPollerOptions { + /** Delay to wait until next poll, in milliseconds. */ + updateIntervalInMs?: number; + /** + * The signal which can be used to abort requests. + */ + abortSignal?: AbortSignalLike; + /** + * The potential location of the result of the LRO if specified by the LRO extension in the swagger. + */ + resourceLocationConfig?: ResourceLocationConfig; + /** + * The original url of the LRO + * Should not be null when restoreFrom is set + */ + initialRequestUrl?: string; + /** + * A serialized poller which can be used to resume an existing paused Long-Running-Operation. + */ + restoreFrom?: string; + /** + * The function to get the initial response + */ + getInitialResponse?: () => PromiseLike; + /** + * The api-version of the LRO + */ + apiVersion?: string; +} +export function getLongRunningPoller( + client: Client, + processResponseBody: (result: TResponse) => Promise, + expectedStatuses: string[], + options: GetLongRunningPollerOptions, +): PollerLike, TResult> { + const { restoreFrom, getInitialResponse, apiVersion } = options; + if (!restoreFrom && !getInitialResponse) { + throw new Error("Either restoreFrom or getInitialResponse must be specified"); + } + let initialResponse: TResponse | undefined = undefined; + const pollAbortController = new AbortController(); + const poller: RunningOperation = { + sendInitialRequest: async () => { + if (!getInitialResponse) { + throw new Error("getInitialResponse is required when initializing a new poller"); + } + initialResponse = await getInitialResponse(); + return getLroResponse(initialResponse, expectedStatuses); + }, + sendPollRequest: async ( + path: string, + pollOptions?: { + abortSignal?: AbortSignalLike; + }, + ) => { + // The poll request would both listen to the user provided abort signal and the poller's own abort signal + function abortListener(): void { + pollAbortController.abort(); + } + const abortSignal = pollAbortController.signal; + if (options.abortSignal?.aborted) { + pollAbortController.abort(); + } else if (pollOptions?.abortSignal?.aborted) { + pollAbortController.abort(); + } else if (!abortSignal.aborted) { + options.abortSignal?.addEventListener("abort", abortListener, { + once: true, + }); + pollOptions?.abortSignal?.addEventListener("abort", abortListener, { + once: true, + }); + } + let response; + try { + const pollingPath = apiVersion ? addApiVersionToUrl(path, apiVersion) : path; + response = await client.pathUnchecked(pollingPath).get({ abortSignal }); + } finally { + options.abortSignal?.removeEventListener("abort", abortListener); + pollOptions?.abortSignal?.removeEventListener("abort", abortListener); + } + + return getLroResponse(response as TResponse, expectedStatuses); + }, + }; + return createHttpPoller(poller, { + intervalInMs: options?.updateIntervalInMs, + resourceLocationConfig: options?.resourceLocationConfig, + restoreFrom: options?.restoreFrom, + processResult: (result: unknown) => { + return processResponseBody(result as TResponse); + }, + }); +} +/** + * Converts a Rest Client response to a response that the LRO implementation understands + * @param response - a rest client http response + * @param deserializeFn - deserialize function to convert Rest response to modular output + * @returns - An LRO response that the LRO implementation understands + */ +function getLroResponse( + response: TResponse, + expectedStatuses: string[], +): OperationResponse { + if (!expectedStatuses.includes(response.status)) { + throw createRestError(response); + } + + return { + flatResponse: response, + rawResponse: { + ...response, + statusCode: Number.parseInt(response.status), + body: response.body, + }, + }; +} + +/** + * Adds the api-version query parameter on a URL if it's not present. + * @param url - the URL to modify + * @param apiVersion - the API version to set + * @returns - the URL with the api-version query parameter set + */ +function addApiVersionToUrl(url: string, apiVersion: string): string { + // The base URL is only used for parsing and won't appear in the returned URL + const urlObj = new URL(url, "https://microsoft.com"); + if (!urlObj.searchParams.get("api-version")) { + // Append one if there is no apiVersion + return `${url}${ + Array.from(urlObj.searchParams.keys()).length > 0 ? "&" : "?" + }api-version=${apiVersion}`; + } + return url; +} diff --git a/sdk/applink/arm-applink/src/static-helpers/urlTemplate.ts b/sdk/applink/arm-applink/src/static-helpers/urlTemplate.ts new file mode 100644 index 000000000000..e8af8cd3ab73 --- /dev/null +++ b/sdk/applink/arm-applink/src/static-helpers/urlTemplate.ts @@ -0,0 +1,227 @@ +// Copyright (c) Microsoft Corporation. +// Licensed under the MIT License. + +// --------------------- +// interfaces +// --------------------- +interface ValueOptions { + isFirst: boolean; // is first value in the expression + op?: string; // operator + varValue?: any; // variable value + varName?: string; // variable name + modifier?: string; // modifier e.g * + reserved?: boolean; // if true we'll keep reserved words with not encoding +} + +export interface UrlTemplateOptions { + // if set to true, reserved characters will not be encoded + allowReserved?: boolean; +} + +// --------------------- +// helpers +// --------------------- +function encodeComponent(val: string, reserved?: boolean, op?: string): string { + return (reserved ?? op === "+") || op === "#" + ? encodeReservedComponent(val) + : encodeRFC3986URIComponent(val); +} + +function encodeReservedComponent(str: string): string { + return str + .split(/(%[0-9A-Fa-f]{2})/g) + .map((part) => (!/%[0-9A-Fa-f]/.test(part) ? encodeURI(part) : part)) + .join(""); +} + +function encodeRFC3986URIComponent(str: string): string { + return encodeURIComponent(str).replace( + /[!'()*]/g, + (c) => `%${c.charCodeAt(0).toString(16).toUpperCase()}`, + ); +} + +function isDefined(val: any): boolean { + return val !== undefined && val !== null; +} + +function getNamedAndIfEmpty(op?: string): [boolean, string] { + return [!!op && [";", "?", "&"].includes(op), !!op && ["?", "&"].includes(op) ? "=" : ""]; +} + +function getFirstOrSep(op?: string, isFirst = false): string { + if (isFirst) { + return !op || op === "+" ? "" : op; + } else if (!op || op === "+" || op === "#") { + return ","; + } else if (op === "?") { + return "&"; + } else { + return op; + } +} + +function getExpandedValue(option: ValueOptions): string { + let isFirst = option.isFirst; + const { op, varName, varValue: value, reserved } = option; + const vals: string[] = []; + const [named, ifEmpty] = getNamedAndIfEmpty(op); + + if (Array.isArray(value)) { + for (const val of value.filter(isDefined)) { + // prepare the following parts: separator, varName, value + vals.push(`${getFirstOrSep(op, isFirst)}`); + if (named && varName) { + vals.push(`${encodeURIComponent(varName)}`); + if (val === "") { + vals.push(ifEmpty); + } else { + vals.push("="); + } + } + vals.push(encodeComponent(val, reserved, op)); + isFirst = false; + } + } else if (typeof value === "object") { + for (const key of Object.keys(value)) { + const val = value[key]; + if (!isDefined(val)) { + continue; + } + // prepare the following parts: separator, key, value + vals.push(`${getFirstOrSep(op, isFirst)}`); + if (key) { + vals.push(`${encodeURIComponent(key)}`); + if (named && val === "") { + vals.push(ifEmpty); + } else { + vals.push("="); + } + } + vals.push(encodeComponent(val, reserved, op)); + isFirst = false; + } + } + return vals.join(""); +} + +function getNonExpandedValue(option: ValueOptions): string | undefined { + const { op, varName, varValue: value, isFirst, reserved } = option; + const vals: string[] = []; + const first = getFirstOrSep(op, isFirst); + const [named, ifEmpty] = getNamedAndIfEmpty(op); + if (named && varName) { + vals.push(encodeComponent(varName, reserved, op)); + if (value === "") { + if (!ifEmpty) { + vals.push(ifEmpty); + } + return !vals.join("") ? undefined : `${first}${vals.join("")}`; + } + vals.push("="); + } + + const items = []; + if (Array.isArray(value)) { + for (const val of value.filter(isDefined)) { + items.push(encodeComponent(val, reserved, op)); + } + } else if (typeof value === "object") { + for (const key of Object.keys(value)) { + if (!isDefined(value[key])) { + continue; + } + items.push(encodeRFC3986URIComponent(key)); + items.push(encodeComponent(value[key], reserved, op)); + } + } + vals.push(items.join(",")); + return !vals.join(",") ? undefined : `${first}${vals.join("")}`; +} + +function getVarValue(option: ValueOptions): string | undefined { + const { op, varName, modifier, isFirst, reserved, varValue: value } = option; + + if (!isDefined(value)) { + return undefined; + } else if (["string", "number", "boolean"].includes(typeof value)) { + let val = value.toString(); + const [named, ifEmpty] = getNamedAndIfEmpty(op); + const vals: string[] = [getFirstOrSep(op, isFirst)]; + if (named && varName) { + // No need to encode varName considering it is already encoded + vals.push(varName); + if (val === "") { + vals.push(ifEmpty); + } else { + vals.push("="); + } + } + if (modifier && modifier !== "*") { + val = val.substring(0, parseInt(modifier, 10)); + } + vals.push(encodeComponent(val, reserved, op)); + return vals.join(""); + } else if (modifier === "*") { + return getExpandedValue(option); + } else { + return getNonExpandedValue(option); + } +} + +// --------------------------------------------------------------------------------------------------- +// This is an implementation of RFC 6570 URI Template: https://datatracker.ietf.org/doc/html/rfc6570. +// --------------------------------------------------------------------------------------------------- +export function expandUrlTemplate( + template: string, + context: Record, + option?: UrlTemplateOptions, +): string { + const result = template.replace(/\{([^{}]+)\}|([^{}]+)/g, (_, expr, text) => { + if (!expr) { + return encodeReservedComponent(text); + } + let op; + if (["+", "#", ".", "/", ";", "?", "&"].includes(expr[0])) { + op = expr[0]; + expr = expr.slice(1); + } + const varList = expr.split(/,/g); + const innerResult = []; + for (const varSpec of varList) { + const varMatch = /([^:*]*)(?::(\d+)|(\*))?/.exec(varSpec); + if (!varMatch || !varMatch[1]) { + continue; + } + const varValue = getVarValue({ + isFirst: innerResult.length === 0, + op, + varValue: context[varMatch[1]], + varName: varMatch[1], + modifier: varMatch[2] || varMatch[3], + reserved: option?.allowReserved, + }); + if (varValue) { + innerResult.push(varValue); + } + } + return innerResult.join(""); + }); + + return normalizeUnreserved(result); +} + +/** + * Normalize an expanded URI by decoding percent-encoded unreserved characters. + * RFC 3986 unreserved: "-" / "." / "~" + */ +function normalizeUnreserved(uri: string): string { + return uri.replace(/%([0-9A-Fa-f]{2})/g, (match, hex) => { + const char = String.fromCharCode(parseInt(hex, 16)); + // Decode only if it's unreserved + if (/[.~-]/.test(char)) { + return char; + } + return match; // leave other encodings intact + }); +} diff --git a/sdk/applink/arm-applink/test/public/sampleTest.spec.ts b/sdk/applink/arm-applink/test/public/sampleTest.spec.ts new file mode 100644 index 000000000000..02e40ba0c606 --- /dev/null +++ b/sdk/applink/arm-applink/test/public/sampleTest.spec.ts @@ -0,0 +1,28 @@ +// Copyright (c) Microsoft Corporation. +// Licensed under the MIT License. + +// import { Recorder } from "@azure-tools/test-recorder"; +// import { createRecorder } from "./utils/recordedClient.js"; +import { + assert, + // beforeEach, + // afterEach, + it, + describe, +} from "vitest"; + +describe("My test", () => { + // let recorder: Recorder; + + // beforeEach(async function(ctx) { + // recorder = await createRecorder(ctx); + // }); + + // afterEach(async function() { + // await recorder.stop(); + // }); + + it("sample test", async function () { + assert.equal(1, 1); + }); +}); diff --git a/sdk/applink/arm-applink/test/public/utils/recordedClient.ts b/sdk/applink/arm-applink/test/public/utils/recordedClient.ts new file mode 100644 index 000000000000..285e4643c45e --- /dev/null +++ b/sdk/applink/arm-applink/test/public/utils/recordedClient.ts @@ -0,0 +1,24 @@ +// Copyright (c) Microsoft Corporation. +// Licensed under the MIT License. + +import type { RecorderStartOptions, VitestTestContext } from "@azure-tools/test-recorder"; +import { Recorder } from "@azure-tools/test-recorder"; + +const replaceableVariables: Record = { + SUBSCRIPTION_ID: "azure_subscription_id", +}; + +const recorderEnvSetup: RecorderStartOptions = { + envSetupForPlayback: replaceableVariables, +}; + +/** + * creates the recorder and reads the environment variables from the `.env` file. + * Should be called first in the test suite to make sure environment variables are + * read before they are being used. + */ +export async function createRecorder(context: VitestTestContext): Promise { + const recorder = new Recorder(context); + await recorder.start(recorderEnvSetup); + return recorder; +} diff --git a/sdk/applink/arm-applink/test/snippets.spec.ts b/sdk/applink/arm-applink/test/snippets.spec.ts new file mode 100644 index 000000000000..777a5082029d --- /dev/null +++ b/sdk/applink/arm-applink/test/snippets.spec.ts @@ -0,0 +1,27 @@ +// Copyright (c) Microsoft Corporation. +// Licensed under the MIT License. + +import { AppLinkClient } from "../src/index.js"; +import { DefaultAzureCredential, InteractiveBrowserCredential } from "@azure/identity"; +import { setLogLevel } from "@azure/logger"; +import { describe, it } from "vitest"; + +describe("snippets", () => { + it("ReadmeSampleCreateClient_Node", async () => { + const subscriptionId = "00000000-0000-0000-0000-000000000000"; + const client = new AppLinkClient(new DefaultAzureCredential(), subscriptionId); + }); + + it("ReadmeSampleCreateClient_Browser", async () => { + const credential = new InteractiveBrowserCredential({ + tenantId: "", + clientId: "", + }); + const subscriptionId = "00000000-0000-0000-0000-000000000000"; + const client = new AppLinkClient(credential, subscriptionId); + }); + + it("SetLogLevel", async () => { + setLogLevel("info"); + }); +}); diff --git a/sdk/applink/arm-applink/tsconfig.browser.config.json b/sdk/applink/arm-applink/tsconfig.browser.config.json new file mode 100644 index 000000000000..ab508991e025 --- /dev/null +++ b/sdk/applink/arm-applink/tsconfig.browser.config.json @@ -0,0 +1,10 @@ +{ + "extends": "../../../tsconfig.browser.base.json", + "compilerOptions": { + "paths": { + "@azure/arm-applink": ["./dist/browser/index.d.ts"], + "@azure/arm-applink/*": ["./dist/browser/*"], + "$internal/*": ["./dist/browser/*"] + } + } +} diff --git a/sdk/applink/arm-applink/tsconfig.json b/sdk/applink/arm-applink/tsconfig.json new file mode 100644 index 000000000000..0e57dbd186e5 --- /dev/null +++ b/sdk/applink/arm-applink/tsconfig.json @@ -0,0 +1,16 @@ +{ + "references": [ + { + "path": "./tsconfig.src.json" + }, + { + "path": "./tsconfig.samples.json" + }, + { + "path": "./tsconfig.test.json" + }, + { + "path": "./tsconfig.snippets.json" + } + ] +} diff --git a/sdk/applink/arm-applink/tsconfig.samples.json b/sdk/applink/arm-applink/tsconfig.samples.json new file mode 100644 index 000000000000..6162ac93df1e --- /dev/null +++ b/sdk/applink/arm-applink/tsconfig.samples.json @@ -0,0 +1,8 @@ +{ + "extends": "../../../tsconfig.samples.base.json", + "compilerOptions": { + "paths": { + "@azure/arm-applink": ["./dist/esm"] + } + } +} diff --git a/sdk/applink/arm-applink/tsconfig.snippets.json b/sdk/applink/arm-applink/tsconfig.snippets.json new file mode 100644 index 000000000000..6f3148b5ed97 --- /dev/null +++ b/sdk/applink/arm-applink/tsconfig.snippets.json @@ -0,0 +1,3 @@ +{ + "extends": ["../../../tsconfig.snippets.base.json"] +} diff --git a/sdk/applink/arm-applink/tsconfig.src.json b/sdk/applink/arm-applink/tsconfig.src.json new file mode 100644 index 000000000000..bae70752dd38 --- /dev/null +++ b/sdk/applink/arm-applink/tsconfig.src.json @@ -0,0 +1,3 @@ +{ + "extends": "../../../tsconfig.lib.json" +} diff --git a/sdk/applink/arm-applink/tsconfig.test.json b/sdk/applink/arm-applink/tsconfig.test.json new file mode 100644 index 000000000000..42798ad68913 --- /dev/null +++ b/sdk/applink/arm-applink/tsconfig.test.json @@ -0,0 +1,14 @@ +{ + "references": [ + { + "path": "./tsconfig.test.node.json" + }, + { + "path": "./tsconfig.browser.config.json" + } + ], + "compilerOptions": { + "composite": true + }, + "files": [] +} diff --git a/sdk/applink/arm-applink/tsconfig.test.node.json b/sdk/applink/arm-applink/tsconfig.test.node.json new file mode 100644 index 000000000000..22799a0245c3 --- /dev/null +++ b/sdk/applink/arm-applink/tsconfig.test.node.json @@ -0,0 +1,10 @@ +{ + "extends": "../../../tsconfig.test.node.base.json", + "compilerOptions": { + "paths": { + "@azure/arm-applink": ["./src/index.ts"], + "@azure/arm-applink/*": ["./src/*"], + "$internal/*": ["./src/*"] + } + } +} diff --git a/sdk/applink/arm-applink/tsp-location.yaml b/sdk/applink/arm-applink/tsp-location.yaml new file mode 100644 index 000000000000..ad089824ba9f --- /dev/null +++ b/sdk/applink/arm-applink/tsp-location.yaml @@ -0,0 +1,4 @@ +directory: specification/applink/AppLink.Management +commit: 5bdcbdbbffe1d6417e9783f9cdf79432600e5a31 +repo: Azure/azure-rest-api-specs +additionalDirectories: diff --git a/sdk/applink/arm-applink/vitest.browser.config.ts b/sdk/applink/arm-applink/vitest.browser.config.ts new file mode 100644 index 000000000000..72964f281efe --- /dev/null +++ b/sdk/applink/arm-applink/vitest.browser.config.ts @@ -0,0 +1,6 @@ +// Copyright (c) Microsoft Corporation. +// Licensed under the MIT License. + +import viteConfig from "../../../vitest.browser.shared.config.ts"; + +export default viteConfig; diff --git a/sdk/applink/arm-applink/vitest.config.ts b/sdk/applink/arm-applink/vitest.config.ts new file mode 100644 index 000000000000..0dfa15cc4498 --- /dev/null +++ b/sdk/applink/arm-applink/vitest.config.ts @@ -0,0 +1,6 @@ +// Copyright (c) Microsoft Corporation. +// Licensed under the MIT License. + +import viteConfig from "../../../vitest.shared.config.ts"; + +export default viteConfig; diff --git a/sdk/applink/arm-applink/vitest.esm.config.ts b/sdk/applink/arm-applink/vitest.esm.config.ts new file mode 100644 index 000000000000..5e9735e9b144 --- /dev/null +++ b/sdk/applink/arm-applink/vitest.esm.config.ts @@ -0,0 +1,8 @@ +// Copyright (c) Microsoft Corporation. +// Licensed under the MIT License. + +import { mergeConfig } from "vitest/config"; +import vitestConfig from "./vitest.config.ts"; +import vitestEsmConfig from "../../../vitest.esm.shared.config.ts"; + +export default mergeConfig(vitestConfig, vitestEsmConfig); diff --git a/sdk/applink/arm-applink/warp.config.yml b/sdk/applink/arm-applink/warp.config.yml new file mode 100644 index 000000000000..fffad954aa85 --- /dev/null +++ b/sdk/applink/arm-applink/warp.config.yml @@ -0,0 +1,29 @@ +# warp.config.yml — build configuration + +exports: + "./package.json": "./package.json" + ".": "./src/index.ts" + "./api": "./src/api/index.ts" + "./api/availableVersions": "src/api/availableVersions/index.ts" + "./api/upgradeHistories": "src/api/upgradeHistories/index.ts" + "./api/appLinkMembers": "src/api/appLinkMembers/index.ts" + "./api/appLinks": "src/api/appLinks/index.ts" + "./api/operations": "src/api/operations/index.ts" + "./models": "./src/models/index.ts" + +targets: + - name: browser + tsconfig: "../../../tsconfig.src.browser.json" + polyfillSuffix: "-browser" + + - name: react-native + tsconfig: "../../../tsconfig.src.react-native.json" + polyfillSuffix: "-react-native" + + - name: esm + condition: import + tsconfig: "../../../tsconfig.src.esm.json" + + - name: commonjs + condition: require + tsconfig: "../../../tsconfig.src.cjs.json" diff --git a/sdk/applink/ci.mgmt.yml b/sdk/applink/ci.mgmt.yml new file mode 100644 index 000000000000..7ff6b9e72195 --- /dev/null +++ b/sdk/applink/ci.mgmt.yml @@ -0,0 +1,35 @@ +# NOTE: Please refer to https://aka.ms/azsdk/engsys/ci-yaml before editing this file. + +trigger: + branches: + include: + - main + - feature/* + - release/* + - hotfix/* + exclude: + - feature/v4 + paths: + include: + - sdk/applink/arm-applink + - sdk/applink/ci.mgmt.yml +pr: + branches: + include: + - main + - feature/* + - release/* + - hotfix/* + exclude: + - feature/v4 + paths: + include: + - sdk/applink/arm-applink + - sdk/applink/ci.mgmt.yml +extends: + template: /eng/pipelines/templates/stages/archetype-sdk-client.yml + parameters: + ServiceDirectory: applink + Artifacts: + - name: azure-arm-applink + safeName: azurearmapplink diff --git a/sdk/appnetwork/arm-appnetwork/CHANGELOG.md b/sdk/appnetwork/arm-appnetwork/CHANGELOG.md new file mode 100644 index 000000000000..8952ab0fb7aa --- /dev/null +++ b/sdk/appnetwork/arm-appnetwork/CHANGELOG.md @@ -0,0 +1,7 @@ +# Release History + +## 1.0.0-beta.1 (2026-03-25) + +### Features Added + +Initial release of the @azure/arm-appnetwork package diff --git a/sdk/appnetwork/arm-appnetwork/LICENSE b/sdk/appnetwork/arm-appnetwork/LICENSE new file mode 100644 index 000000000000..63447fd8bbbf --- /dev/null +++ b/sdk/appnetwork/arm-appnetwork/LICENSE @@ -0,0 +1,21 @@ +Copyright (c) Microsoft Corporation. + +MIT License + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED *AS IS*, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. \ No newline at end of file diff --git a/sdk/appnetwork/arm-appnetwork/README.md b/sdk/appnetwork/arm-appnetwork/README.md new file mode 100644 index 000000000000..595fd9e120d5 --- /dev/null +++ b/sdk/appnetwork/arm-appnetwork/README.md @@ -0,0 +1,115 @@ +# Azure AppLink client library for JavaScript + +This package contains an isomorphic SDK (runs both in Node.js and in browsers) for Azure AppLink client. + + + +Key links: + +- [Source code](https://github.com/Azure/azure-sdk-for-js/tree/main/sdk/appnetwork/arm-appnetwork) +- [Package (NPM)](https://www.npmjs.com/package/@azure/arm-appnetwork) +- [API reference documentation](https://learn.microsoft.com/javascript/api/@azure/arm-appnetwork?view=azure-node-preview) +- [Samples](https://github.com/Azure/azure-sdk-for-js/tree/main/sdk/appnetwork/arm-appnetwork/samples) + +## Getting started + +### Currently supported environments + +- [LTS versions of Node.js](https://github.com/nodejs/release#release-schedule) +- Latest versions of Safari, Chrome, Edge and Firefox. + +See our [support policy](https://github.com/Azure/azure-sdk-for-js/blob/main/SUPPORT.md) for more details. + +### Prerequisites + +- An [Azure subscription][azure_sub]. + +### Install the `@azure/arm-appnetwork` package + +Install the Azure AppLink client library for JavaScript with `npm`: + +```bash +npm install @azure/arm-appnetwork +``` + +### Create and authenticate a `AppLinkClient` + +To create a client object to access the Azure AppLink API, you will need the `endpoint` of your Azure AppLink resource and a `credential`. The Azure AppLink client can use Azure Active Directory credentials to authenticate. +You can find the endpoint for your Azure AppLink resource in the [Azure Portal][azure_portal]. + +You can authenticate with Azure Active Directory using a credential from the [@azure/identity][azure_identity] library or [an existing AAD Token](https://github.com/Azure/azure-sdk-for-js/blob/main/sdk/identity/identity/samples/AzureIdentityExamples.md#authenticating-with-a-pre-fetched-access-token). + +To use the [DefaultAzureCredential][defaultazurecredential] provider shown below, or other credential providers provided with the Azure SDK, please install the `@azure/identity` package: + +```bash +npm install @azure/identity +``` + +You will also need to **register a new AAD application and grant access to Azure AppLink** by assigning the suitable role to your service principal (note: roles such as `"Owner"` will not grant the necessary permissions). + +For more information about how to create an Azure AD Application check out [this guide](https://learn.microsoft.com/azure/active-directory/develop/howto-create-service-principal-portal). + +Using Node.js and Node-like environments, you can use the `DefaultAzureCredential` class to authenticate the client. + +```ts snippet:ReadmeSampleCreateClient_Node +import { AppLinkClient } from "@azure/arm-appnetwork"; +import { DefaultAzureCredential } from "@azure/identity"; + +const subscriptionId = "00000000-0000-0000-0000-000000000000"; +const client = new AppLinkClient(new DefaultAzureCredential(), subscriptionId); +``` + +For browser environments, use the `InteractiveBrowserCredential` from the `@azure/identity` package to authenticate. + +```ts snippet:ReadmeSampleCreateClient_Browser +import { InteractiveBrowserCredential } from "@azure/identity"; +import { AppLinkClient } from "@azure/arm-appnetwork"; + +const credential = new InteractiveBrowserCredential({ + tenantId: "", + clientId: "", +}); +const subscriptionId = "00000000-0000-0000-0000-000000000000"; +const client = new AppLinkClient(credential, subscriptionId); +``` + + +### JavaScript Bundle +To use this client library in the browser, first you need to use a bundler. For details on how to do this, please refer to our [bundling documentation](https://aka.ms/AzureSDKBundling). + +## Key concepts + +### AppLinkClient + +`AppLinkClient` is the primary interface for developers using the Azure AppLink client library. Explore the methods on this client object to understand the different features of the Azure AppLink service that you can access. + +## Troubleshooting + +### Logging + +Enabling logging may help uncover useful information about failures. In order to see a log of HTTP requests and responses, set the `AZURE_LOG_LEVEL` environment variable to `info`. Alternatively, logging can be enabled at runtime by calling `setLogLevel` in the `@azure/logger`: + +```ts snippet:SetLogLevel +import { setLogLevel } from "@azure/logger"; + +setLogLevel("info"); +``` + +For more detailed instructions on how to enable logs, you can look at the [@azure/logger package docs](https://github.com/Azure/azure-sdk-for-js/tree/main/sdk/core/logger). + +## Next steps + +Please take a look at the [samples](https://github.com/Azure/azure-sdk-for-js/tree/main/sdk/appnetwork/arm-appnetwork/samples) directory for detailed examples on how to use this library. + +## Contributing + +If you'd like to contribute to this library, please read the [contributing guide](https://github.com/Azure/azure-sdk-for-js/blob/main/CONTRIBUTING.md) to learn more about how to build and test the code. + +## Related projects + +- [Microsoft Azure SDK for JavaScript](https://github.com/Azure/azure-sdk-for-js) + +[azure_sub]: https://azure.microsoft.com/free/ +[azure_portal]: https://portal.azure.com +[azure_identity]: https://github.com/Azure/azure-sdk-for-js/tree/main/sdk/identity/identity +[defaultazurecredential]: https://github.com/Azure/azure-sdk-for-js/tree/main/sdk/identity/identity#defaultazurecredential diff --git a/sdk/appnetwork/arm-appnetwork/api-extractor.json b/sdk/appnetwork/arm-appnetwork/api-extractor.json new file mode 100644 index 000000000000..870d6d399477 --- /dev/null +++ b/sdk/appnetwork/arm-appnetwork/api-extractor.json @@ -0,0 +1 @@ +{ "extends": "../../../api-extractor-base.json" } diff --git a/sdk/appnetwork/arm-appnetwork/eslint.config.mjs b/sdk/appnetwork/arm-appnetwork/eslint.config.mjs new file mode 100644 index 000000000000..6d2f8a5914c3 --- /dev/null +++ b/sdk/appnetwork/arm-appnetwork/eslint.config.mjs @@ -0,0 +1,14 @@ +import azsdkEslint from "@azure/eslint-plugin-azure-sdk"; + +export default azsdkEslint.config([ + { + rules: { + "@azure/azure-sdk/ts-modules-only-named": "warn", + "@azure/azure-sdk/ts-package-json-types": "warn", + "@azure/azure-sdk/ts-package-json-engine-is-present": "warn", + "@azure/azure-sdk/ts-package-json-files-required": "off", + "@azure/azure-sdk/ts-package-json-main-is-cjs": "off", + "tsdoc/syntax": "warn", + }, + }, +]); diff --git a/sdk/appnetwork/arm-appnetwork/metadata.json b/sdk/appnetwork/arm-appnetwork/metadata.json new file mode 100644 index 000000000000..96d1ae0242c7 --- /dev/null +++ b/sdk/appnetwork/arm-appnetwork/metadata.json @@ -0,0 +1,78 @@ +{ + "apiVersions": { + "Microsoft.AppLink": "2025-08-01-preview" + }, + "emitterVersion": "0.51.0", + "crossLanguageDefinitions": { + "CrossLanguagePackageId": "Microsoft.AppLink", + "CrossLanguageDefinitionId": { + "@azure/arm-appnetwork!OperationListResult:interface": "Azure.ResourceManager.CommonTypes.OperationListResult", + "@azure/arm-appnetwork!Operation:interface": "Azure.ResourceManager.CommonTypes.Operation", + "@azure/arm-appnetwork!OperationDisplay:interface": "Azure.ResourceManager.CommonTypes.OperationDisplay", + "@azure/arm-appnetwork!ErrorResponse:interface": "Azure.ResourceManager.CommonTypes.ErrorResponse", + "@azure/arm-appnetwork!ErrorDetail:interface": "Azure.ResourceManager.CommonTypes.ErrorDetail", + "@azure/arm-appnetwork!ErrorAdditionalInfo:interface": "Azure.ResourceManager.CommonTypes.ErrorAdditionalInfo", + "@azure/arm-appnetwork!AppLink:interface": "Microsoft.AppLink.AppLink", + "@azure/arm-appnetwork!AppLinkProperties:interface": "Microsoft.AppLink.AppLinkProperties", + "@azure/arm-appnetwork!ManagedServiceIdentity:interface": "Azure.ResourceManager.CommonTypes.ManagedServiceIdentity", + "@azure/arm-appnetwork!UserAssignedIdentity:interface": "Azure.ResourceManager.CommonTypes.UserAssignedIdentity", + "@azure/arm-appnetwork!TrackedResource:interface": "Azure.ResourceManager.CommonTypes.TrackedResource", + "@azure/arm-appnetwork!Resource:interface": "Azure.ResourceManager.CommonTypes.Resource", + "@azure/arm-appnetwork!SystemData:interface": "Azure.ResourceManager.CommonTypes.SystemData", + "@azure/arm-appnetwork!ArmOperationStatusResourceProvisioningState:interface": "Azure.ResourceManager.ArmOperationStatus", + "@azure/arm-appnetwork!AppLinkUpdate:interface": "Microsoft.AppLink.AppLinkUpdate", + "@azure/arm-appnetwork!AppLinkListResult:interface": "Azure.ResourceManager.ResourceListResult", + "@azure/arm-appnetwork!AppLinkMember:interface": "Microsoft.AppLink.AppLinkMember", + "@azure/arm-appnetwork!AppLinkMemberProperties:interface": "Microsoft.AppLink.AppLinkMemberProperties", + "@azure/arm-appnetwork!Metadata:interface": "Microsoft.AppLink.Metadata", + "@azure/arm-appnetwork!UpgradeProfile:interface": "Microsoft.AppLink.UpgradeProfile", + "@azure/arm-appnetwork!FullyManagedUpgradeProfile:interface": "Microsoft.AppLink.FullyManagedUpgradeProfile", + "@azure/arm-appnetwork!SelfManagedUpgradeProfile:interface": "Microsoft.AppLink.SelfManagedUpgradeProfile", + "@azure/arm-appnetwork!ObservabilityProfile:interface": "Microsoft.AppLink.ObservabilityProfile", + "@azure/arm-appnetwork!MetricsProfile:interface": "Microsoft.AppLink.MetricsProfile", + "@azure/arm-appnetwork!ConnectivityProfile:interface": "Microsoft.AppLink.ConnectivityProfile", + "@azure/arm-appnetwork!EastWestGatewayProfile:interface": "Microsoft.AppLink.EastWestGatewayProfile", + "@azure/arm-appnetwork!PrivateConnectProfile:interface": "Microsoft.AppLink.PrivateConnectProfile", + "@azure/arm-appnetwork!AppLinkMemberUpdate:interface": "Microsoft.AppLink.AppLinkMemberUpdate", + "@azure/arm-appnetwork!AppLinkMemberUpdateProperties:interface": "Microsoft.AppLink.AppLinkMemberUpdateProperties", + "@azure/arm-appnetwork!AppLinkMemberListResult:interface": "Azure.ResourceManager.ResourceListResult", + "@azure/arm-appnetwork!UpgradeHistoryListResult:interface": "Azure.ResourceManager.ResourceListResult", + "@azure/arm-appnetwork!UpgradeHistory:interface": "Microsoft.AppLink.UpgradeHistory", + "@azure/arm-appnetwork!UpgradeHistoryProperties:interface": "Microsoft.AppLink.UpgradeHistoryProperties", + "@azure/arm-appnetwork!ProxyResource:interface": "Azure.ResourceManager.CommonTypes.ProxyResource", + "@azure/arm-appnetwork!AvailableVersionListResult:interface": "Azure.ResourceManager.ResourceListResult", + "@azure/arm-appnetwork!AvailableVersion:interface": "Microsoft.AppLink.AvailableVersion", + "@azure/arm-appnetwork!AvailableVersionProperties:interface": "Microsoft.AppLink.AvailableVersionProperties", + "@azure/arm-appnetwork!FullyManagedVersions:interface": "Microsoft.AppLink.FullyManagedVersions", + "@azure/arm-appnetwork!ReleaseChannelInfo:interface": "Microsoft.AppLink.ReleaseChannelInfo", + "@azure/arm-appnetwork!SelfManagedVersions:interface": "Microsoft.AppLink.SelfManagedVersions", + "@azure/arm-appnetwork!VersionInfo:interface": "Microsoft.AppLink.VersionInfo", + "@azure/arm-appnetwork!KnownOrigin:enum": "Azure.ResourceManager.CommonTypes.Origin", + "@azure/arm-appnetwork!KnownActionType:enum": "Azure.ResourceManager.CommonTypes.ActionType", + "@azure/arm-appnetwork!KnownProvisioningState:enum": "Microsoft.AppLink.ProvisioningState", + "@azure/arm-appnetwork!KnownManagedServiceIdentityType:enum": "Azure.ResourceManager.CommonTypes.ManagedServiceIdentityType", + "@azure/arm-appnetwork!KnowncreatedByType:enum": "Azure.ResourceManager.CommonTypes.createdByType", + "@azure/arm-appnetwork!KnownResourceProvisioningState:enum": "Azure.ResourceManager.ResourceProvisioningState", + "@azure/arm-appnetwork!KnownClusterType:enum": "Microsoft.AppLink.ClusterType", + "@azure/arm-appnetwork!KnownUpgradeMode:enum": "Microsoft.AppLink.UpgradeMode", + "@azure/arm-appnetwork!KnownUpgradeReleaseChannel:enum": "Microsoft.AppLink.UpgradeReleaseChannel", + "@azure/arm-appnetwork!KnownEastWestGatewayVisibility:enum": "Microsoft.AppLink.EastWestGatewayVisibility", + "@azure/arm-appnetwork!KnownVersions:enum": "Microsoft.AppLink.Versions", + "@azure/arm-appnetwork!ManagedServiceIdentityUserAssignedIdentity:type": "Azure.ResourceManager.CommonTypes.ManagedServiceIdentity.userAssignedIdentity.anonymous", + "@azure/arm-appnetwork!AvailableVersionsOperations#listByLocation:member": "Microsoft.AppLink.AvailableVersions.listByLocation", + "@azure/arm-appnetwork!UpgradeHistoriesOperations#listByAppLinkMember:member": "Microsoft.AppLink.UpgradeHistories.listByAppLinkMember", + "@azure/arm-appnetwork!AppLinkMembersOperations#listByAppLink:member": "Microsoft.AppLink.AppLinkMembers.listByAppLink", + "@azure/arm-appnetwork!AppLinkMembersOperations#delete:member": "Microsoft.AppLink.AppLinkMembers.delete", + "@azure/arm-appnetwork!AppLinkMembersOperations#update:member": "Microsoft.AppLink.AppLinkMembers.update", + "@azure/arm-appnetwork!AppLinkMembersOperations#createOrUpdate:member": "Microsoft.AppLink.AppLinkMembers.createOrUpdate", + "@azure/arm-appnetwork!AppLinkMembersOperations#get:member": "Microsoft.AppLink.AppLinkMembers.get", + "@azure/arm-appnetwork!AppLinksOperations#listBySubscription:member": "Microsoft.AppLink.AppLinks.listBySubscription", + "@azure/arm-appnetwork!AppLinksOperations#listByResourceGroup:member": "Microsoft.AppLink.AppLinks.listByResourceGroup", + "@azure/arm-appnetwork!AppLinksOperations#delete:member": "Microsoft.AppLink.AppLinks.delete", + "@azure/arm-appnetwork!AppLinksOperations#update:member": "Microsoft.AppLink.AppLinks.update", + "@azure/arm-appnetwork!AppLinksOperations#createOrUpdate:member": "Microsoft.AppLink.AppLinks.createOrUpdate", + "@azure/arm-appnetwork!AppLinksOperations#get:member": "Microsoft.AppLink.AppLinks.get", + "@azure/arm-appnetwork!OperationsOperations#list:member": "Azure.ResourceManager.Operations.list" + } + } +} diff --git a/sdk/appnetwork/arm-appnetwork/package.json b/sdk/appnetwork/arm-appnetwork/package.json new file mode 100644 index 000000000000..3cf7a5713573 --- /dev/null +++ b/sdk/appnetwork/arm-appnetwork/package.json @@ -0,0 +1,249 @@ +{ + "name": "@azure/arm-appnetwork", + "version": "1.0.0-beta.1", + "description": "A generated SDK for AppLinkClient.", + "engines": { + "node": ">=20.0.0" + }, + "sideEffects": false, + "autoPublish": false, + "type": "module", + "main": "./dist/commonjs/index.js", + "module": "./dist/esm/index.js", + "types": "./dist/commonjs/index.d.ts", + "browser": "./dist/browser/index.js", + "react-native": "./dist/react-native/index.js", + "exports": { + "./package.json": "./package.json", + ".": { + "browser": { + "types": "./dist/browser/index.d.ts", + "default": "./dist/browser/index.js" + }, + "react-native": { + "types": "./dist/react-native/index.d.ts", + "default": "./dist/react-native/index.js" + }, + "import": { + "types": "./dist/esm/index.d.ts", + "default": "./dist/esm/index.js" + }, + "require": { + "types": "./dist/commonjs/index.d.ts", + "default": "./dist/commonjs/index.js" + } + }, + "./api": { + "browser": { + "types": "./dist/browser/api/index.d.ts", + "default": "./dist/browser/api/index.js" + }, + "react-native": { + "types": "./dist/react-native/api/index.d.ts", + "default": "./dist/react-native/api/index.js" + }, + "import": { + "types": "./dist/esm/api/index.d.ts", + "default": "./dist/esm/api/index.js" + }, + "require": { + "types": "./dist/commonjs/api/index.d.ts", + "default": "./dist/commonjs/api/index.js" + } + }, + "./api/availableVersions": { + "browser": { + "types": "./dist/browser/api/availableVersions/index.d.ts", + "default": "./dist/browser/api/availableVersions/index.js" + }, + "react-native": { + "types": "./dist/react-native/api/availableVersions/index.d.ts", + "default": "./dist/react-native/api/availableVersions/index.js" + }, + "import": { + "types": "./dist/esm/api/availableVersions/index.d.ts", + "default": "./dist/esm/api/availableVersions/index.js" + }, + "require": { + "types": "./dist/commonjs/api/availableVersions/index.d.ts", + "default": "./dist/commonjs/api/availableVersions/index.js" + } + }, + "./api/upgradeHistories": { + "browser": { + "types": "./dist/browser/api/upgradeHistories/index.d.ts", + "default": "./dist/browser/api/upgradeHistories/index.js" + }, + "react-native": { + "types": "./dist/react-native/api/upgradeHistories/index.d.ts", + "default": "./dist/react-native/api/upgradeHistories/index.js" + }, + "import": { + "types": "./dist/esm/api/upgradeHistories/index.d.ts", + "default": "./dist/esm/api/upgradeHistories/index.js" + }, + "require": { + "types": "./dist/commonjs/api/upgradeHistories/index.d.ts", + "default": "./dist/commonjs/api/upgradeHistories/index.js" + } + }, + "./api/appLinkMembers": { + "browser": { + "types": "./dist/browser/api/appLinkMembers/index.d.ts", + "default": "./dist/browser/api/appLinkMembers/index.js" + }, + "react-native": { + "types": "./dist/react-native/api/appLinkMembers/index.d.ts", + "default": "./dist/react-native/api/appLinkMembers/index.js" + }, + "import": { + "types": "./dist/esm/api/appLinkMembers/index.d.ts", + "default": "./dist/esm/api/appLinkMembers/index.js" + }, + "require": { + "types": "./dist/commonjs/api/appLinkMembers/index.d.ts", + "default": "./dist/commonjs/api/appLinkMembers/index.js" + } + }, + "./api/appLinks": { + "browser": { + "types": "./dist/browser/api/appLinks/index.d.ts", + "default": "./dist/browser/api/appLinks/index.js" + }, + "react-native": { + "types": "./dist/react-native/api/appLinks/index.d.ts", + "default": "./dist/react-native/api/appLinks/index.js" + }, + "import": { + "types": "./dist/esm/api/appLinks/index.d.ts", + "default": "./dist/esm/api/appLinks/index.js" + }, + "require": { + "types": "./dist/commonjs/api/appLinks/index.d.ts", + "default": "./dist/commonjs/api/appLinks/index.js" + } + }, + "./api/operations": { + "browser": { + "types": "./dist/browser/api/operations/index.d.ts", + "default": "./dist/browser/api/operations/index.js" + }, + "react-native": { + "types": "./dist/react-native/api/operations/index.d.ts", + "default": "./dist/react-native/api/operations/index.js" + }, + "import": { + "types": "./dist/esm/api/operations/index.d.ts", + "default": "./dist/esm/api/operations/index.js" + }, + "require": { + "types": "./dist/commonjs/api/operations/index.d.ts", + "default": "./dist/commonjs/api/operations/index.js" + } + }, + "./models": { + "browser": { + "types": "./dist/browser/models/index.d.ts", + "default": "./dist/browser/models/index.js" + }, + "react-native": { + "types": "./dist/react-native/models/index.d.ts", + "default": "./dist/react-native/models/index.js" + }, + "import": { + "types": "./dist/esm/models/index.d.ts", + "default": "./dist/esm/models/index.js" + }, + "require": { + "types": "./dist/commonjs/models/index.d.ts", + "default": "./dist/commonjs/models/index.js" + } + } + }, + "keywords": [ + "node", + "azure", + "cloud", + "typescript", + "browser", + "isomorphic" + ], + "author": "Microsoft Corporation", + "license": "MIT", + "files": [ + "dist/", + "!dist/**/*.d.*ts.map", + "README.md", + "LICENSE" + ], + "sdk-type": "mgmt", + "repository": "github:Azure/azure-sdk-for-js", + "bugs": { + "url": "https://github.com/Azure/azure-sdk-for-js/issues" + }, + "homepage": "https://github.com/Azure/azure-sdk-for-js/tree/main/sdk/appnetwork/arm-appnetwork/README.md", + "prettier": "@azure/eslint-plugin-azure-sdk/prettier.json", + "//metadata": { + "constantPaths": [ + { + "path": "src/api/appLinkContext.ts", + "prefix": "userAgentInfo" + } + ] + }, + "dependencies": { + "@azure/core-util": "^1.12.0", + "@azure-rest/core-client": "^2.3.1", + "@azure/abort-controller": "^2.1.2", + "@azure/core-auth": "^1.9.0", + "@azure/core-lro": "^3.1.0", + "@azure/core-rest-pipeline": "^1.20.0", + "@azure/logger": "^1.2.0", + "tslib": "^2.8.1" + }, + "devDependencies": { + "@azure-tools/test-credential": "workspace:^", + "@azure-tools/test-recorder": "workspace:^", + "@azure-tools/test-utils-vitest": "workspace:^", + "@azure/dev-tool": "workspace:^", + "@azure/eslint-plugin-azure-sdk": "workspace:^", + "@azure/identity": "catalog:internal", + "@types/node": "catalog:", + "cross-env": "catalog:", + "eslint": "catalog:", + "prettier": "catalog:", + "rimraf": "catalog:", + "@vitest/browser-playwright": "catalog:testing", + "@vitest/coverage-istanbul": "catalog:testing", + "dotenv": "catalog:testing", + "playwright": "catalog:testing", + "typescript": "catalog:", + "vitest": "catalog:testing" + }, + "scripts": { + "clean": "rimraf --glob dist dist-browser dist-esm test-dist temp types *.tgz *.log", + "extract-api": "rimraf review && dev-tool run extract-api", + "pack": "pnpm pack 2>&1", + "lint": "echo skipped", + "lint:fix": "echo skipped", + "build:samples": "tsc -p tsconfig.samples.json && dev-tool samples publish -f", + "check-format": "prettier --list-different --config ../../../.prettierrc.json --ignore-path ../../../.prettierignore \"src/**/*.{ts,cts,mts}\" \"test/**/*.{ts,cts,mts}\" \"*.{js,cjs,mjs,json}\" \"samples-dev/*.ts\"", + "execute:samples": "dev-tool samples run samples-dev", + "format": "prettier --write --config ../../../.prettierrc.json --ignore-path ../../../.prettierignore \"src/**/*.{ts,cts,mts}\" \"test/**/*.{ts,cts,mts}\" \"*.{js,cjs,mjs,json}\" \"samples-dev/*.ts\"", + "generate:client": "echo skipped", + "test:browser": "dev-tool run build-test && dev-tool run test:vitest --browser", + "build": "npm run clean && dev-tool run build-package && dev-tool run extract-api", + "test:node": "dev-tool run test:vitest", + "test:node:esm": "dev-tool run test:vitest --esm", + "test": "npm run test:node && npm run test:browser", + "update-snippets": "dev-tool run update-snippets" + }, + "//sampleConfiguration": { + "productName": "@azure/arm-appnetwork", + "productSlugs": [ + "azure" + ], + "disableDocsMs": true, + "apiRefLink": "https://learn.microsoft.com/javascript/api/@azure/arm-appnetwork?view=azure-node-preview" + } +} diff --git a/sdk/appnetwork/arm-appnetwork/review/arm-appnetwork-api-appLinkMembers-node.api.md b/sdk/appnetwork/arm-appnetwork/review/arm-appnetwork-api-appLinkMembers-node.api.md new file mode 100644 index 000000000000..87251c4e8126 --- /dev/null +++ b/sdk/appnetwork/arm-appnetwork/review/arm-appnetwork-api-appLinkMembers-node.api.md @@ -0,0 +1,52 @@ +## API Report File for "@azure/arm-appnetwork" + +> Do not edit this file. It is a report generated by [API Extractor](https://api-extractor.com/). + +```ts + +import type { Client } from '@azure-rest/core-client'; +import type { OperationOptions } from '@azure-rest/core-client'; +import type { OperationState } from '@azure/core-lro'; +import type { PollerLike } from '@azure/core-lro'; + +// @public +export function $delete(context: AppLinkContext, resourceGroupName: string, appLinkName: string, appLinkMemberName: string, options?: AppLinkMembersDeleteOptionalParams): PollerLike, void>; + +// @public +export interface AppLinkMembersCreateOrUpdateOptionalParams extends OperationOptions { + updateIntervalInMs?: number; +} + +// @public +export interface AppLinkMembersDeleteOptionalParams extends OperationOptions { + updateIntervalInMs?: number; +} + +// @public +export interface AppLinkMembersGetOptionalParams extends OperationOptions { +} + +// @public +export interface AppLinkMembersListByAppLinkOptionalParams extends OperationOptions { +} + +// @public +export interface AppLinkMembersUpdateOptionalParams extends OperationOptions { + updateIntervalInMs?: number; +} + +// @public +export function createOrUpdate(context: AppLinkContext, resourceGroupName: string, appLinkName: string, appLinkMemberName: string, resource: AppLinkMember, options?: AppLinkMembersCreateOrUpdateOptionalParams): PollerLike, AppLinkMember>; + +// @public +export function get(context: AppLinkContext, resourceGroupName: string, appLinkName: string, appLinkMemberName: string, options?: AppLinkMembersGetOptionalParams): Promise; + +// @public +export function listByAppLink(context: AppLinkContext, resourceGroupName: string, appLinkName: string, options?: AppLinkMembersListByAppLinkOptionalParams): PagedAsyncIterableIterator; + +// @public +export function update(context: AppLinkContext, resourceGroupName: string, appLinkName: string, appLinkMemberName: string, properties: AppLinkMemberUpdate, options?: AppLinkMembersUpdateOptionalParams): PollerLike, AppLinkMember>; + +// (No @packageDocumentation comment for this package) + +``` diff --git a/sdk/appnetwork/arm-appnetwork/review/arm-appnetwork-api-appLinks-node.api.md b/sdk/appnetwork/arm-appnetwork/review/arm-appnetwork-api-appLinks-node.api.md new file mode 100644 index 000000000000..067e864901c5 --- /dev/null +++ b/sdk/appnetwork/arm-appnetwork/review/arm-appnetwork-api-appLinks-node.api.md @@ -0,0 +1,59 @@ +## API Report File for "@azure/arm-appnetwork" + +> Do not edit this file. It is a report generated by [API Extractor](https://api-extractor.com/). + +```ts + +import type { Client } from '@azure-rest/core-client'; +import type { OperationOptions } from '@azure-rest/core-client'; +import type { OperationState } from '@azure/core-lro'; +import type { PollerLike } from '@azure/core-lro'; + +// @public +export function $delete(context: AppLinkContext, resourceGroupName: string, appLinkName: string, options?: AppLinksDeleteOptionalParams): PollerLike, void>; + +// @public +export interface AppLinksCreateOrUpdateOptionalParams extends OperationOptions { + updateIntervalInMs?: number; +} + +// @public +export interface AppLinksDeleteOptionalParams extends OperationOptions { + updateIntervalInMs?: number; +} + +// @public +export interface AppLinksGetOptionalParams extends OperationOptions { +} + +// @public +export interface AppLinksListByResourceGroupOptionalParams extends OperationOptions { +} + +// @public +export interface AppLinksListBySubscriptionOptionalParams extends OperationOptions { +} + +// @public +export interface AppLinksUpdateOptionalParams extends OperationOptions { + updateIntervalInMs?: number; +} + +// @public +export function createOrUpdate(context: AppLinkContext, resourceGroupName: string, appLinkName: string, resource: AppLink, options?: AppLinksCreateOrUpdateOptionalParams): PollerLike, AppLink>; + +// @public +export function get(context: AppLinkContext, resourceGroupName: string, appLinkName: string, options?: AppLinksGetOptionalParams): Promise; + +// @public +export function listByResourceGroup(context: AppLinkContext, resourceGroupName: string, options?: AppLinksListByResourceGroupOptionalParams): PagedAsyncIterableIterator; + +// @public +export function listBySubscription(context: AppLinkContext, options?: AppLinksListBySubscriptionOptionalParams): PagedAsyncIterableIterator; + +// @public +export function update(context: AppLinkContext, resourceGroupName: string, appLinkName: string, properties: AppLinkUpdate, options?: AppLinksUpdateOptionalParams): PollerLike, AppLink>; + +// (No @packageDocumentation comment for this package) + +``` diff --git a/sdk/appnetwork/arm-appnetwork/review/arm-appnetwork-api-availableVersions-node.api.md b/sdk/appnetwork/arm-appnetwork/review/arm-appnetwork-api-availableVersions-node.api.md new file mode 100644 index 000000000000..f0fe33f3e496 --- /dev/null +++ b/sdk/appnetwork/arm-appnetwork/review/arm-appnetwork-api-availableVersions-node.api.md @@ -0,0 +1,20 @@ +## API Report File for "@azure/arm-appnetwork" + +> Do not edit this file. It is a report generated by [API Extractor](https://api-extractor.com/). + +```ts + +import type { Client } from '@azure-rest/core-client'; +import type { OperationOptions } from '@azure-rest/core-client'; + +// @public +export interface AvailableVersionsListByLocationOptionalParams extends OperationOptions { + kubernetesVersion?: string; +} + +// @public +export function listByLocation(context: AppLinkContext, location: string, options?: AvailableVersionsListByLocationOptionalParams): PagedAsyncIterableIterator; + +// (No @packageDocumentation comment for this package) + +``` diff --git a/sdk/appnetwork/arm-appnetwork/review/arm-appnetwork-api-node.api.md b/sdk/appnetwork/arm-appnetwork/review/arm-appnetwork-api-node.api.md new file mode 100644 index 000000000000..fae602f87074 --- /dev/null +++ b/sdk/appnetwork/arm-appnetwork/review/arm-appnetwork-api-node.api.md @@ -0,0 +1,28 @@ +## API Report File for "@azure/arm-appnetwork" + +> Do not edit this file. It is a report generated by [API Extractor](https://api-extractor.com/). + +```ts + +import type { Client } from '@azure-rest/core-client'; +import type { ClientOptions } from '@azure-rest/core-client'; +import type { TokenCredential } from '@azure/core-auth'; + +// @public +export interface AppLinkClientOptionalParams extends ClientOptions { + apiVersion?: string; + cloudSetting?: AzureSupportedClouds; +} + +// @public (undocumented) +export interface AppLinkContext extends Client { + apiVersion?: string; + subscriptionId: string; +} + +// @public (undocumented) +export function createAppLink(credential: TokenCredential, subscriptionId: string, options?: AppLinkClientOptionalParams): AppLinkContext; + +// (No @packageDocumentation comment for this package) + +``` diff --git a/sdk/appnetwork/arm-appnetwork/review/arm-appnetwork-api-operations-node.api.md b/sdk/appnetwork/arm-appnetwork/review/arm-appnetwork-api-operations-node.api.md new file mode 100644 index 000000000000..0af6eeb19d55 --- /dev/null +++ b/sdk/appnetwork/arm-appnetwork/review/arm-appnetwork-api-operations-node.api.md @@ -0,0 +1,19 @@ +## API Report File for "@azure/arm-appnetwork" + +> Do not edit this file. It is a report generated by [API Extractor](https://api-extractor.com/). + +```ts + +import type { Client } from '@azure-rest/core-client'; +import type { OperationOptions } from '@azure-rest/core-client'; + +// @public +export function list(context: AppLinkContext, options?: OperationsListOptionalParams): PagedAsyncIterableIterator; + +// @public +export interface OperationsListOptionalParams extends OperationOptions { +} + +// (No @packageDocumentation comment for this package) + +``` diff --git a/sdk/appnetwork/arm-appnetwork/review/arm-appnetwork-api-upgradeHistories-node.api.md b/sdk/appnetwork/arm-appnetwork/review/arm-appnetwork-api-upgradeHistories-node.api.md new file mode 100644 index 000000000000..2182796aa5cc --- /dev/null +++ b/sdk/appnetwork/arm-appnetwork/review/arm-appnetwork-api-upgradeHistories-node.api.md @@ -0,0 +1,19 @@ +## API Report File for "@azure/arm-appnetwork" + +> Do not edit this file. It is a report generated by [API Extractor](https://api-extractor.com/). + +```ts + +import type { Client } from '@azure-rest/core-client'; +import type { OperationOptions } from '@azure-rest/core-client'; + +// @public +export function listByAppLinkMember(context: AppLinkContext, resourceGroupName: string, appLinkName: string, appLinkMemberName: string, options?: UpgradeHistoriesListByAppLinkMemberOptionalParams): PagedAsyncIterableIterator; + +// @public +export interface UpgradeHistoriesListByAppLinkMemberOptionalParams extends OperationOptions { +} + +// (No @packageDocumentation comment for this package) + +``` diff --git a/sdk/appnetwork/arm-appnetwork/review/arm-appnetwork-models-node.api.md b/sdk/appnetwork/arm-appnetwork/review/arm-appnetwork-models-node.api.md new file mode 100644 index 000000000000..c84343e18fdd --- /dev/null +++ b/sdk/appnetwork/arm-appnetwork/review/arm-appnetwork-models-node.api.md @@ -0,0 +1,324 @@ +## API Report File for "@azure/arm-appnetwork" + +> Do not edit this file. It is a report generated by [API Extractor](https://api-extractor.com/). + +```ts + +// @public +export type ActionType = string; + +// @public +export interface AppLink extends TrackedResource { + identity?: ManagedServiceIdentity; + properties?: AppLinkProperties; +} + +// @public +export interface AppLinkMember extends TrackedResource { + properties?: AppLinkMemberProperties; +} + +// @public +export interface AppLinkMemberProperties { + clusterType?: ClusterType; + connectivityProfile?: ConnectivityProfile; + metadata: Metadata; + observabilityProfile?: ObservabilityProfile; + readonly provisioningState?: ProvisioningState; + upgradeProfile?: UpgradeProfile; +} + +// @public +export interface AppLinkMemberUpdate { + properties?: AppLinkMemberUpdateProperties; + tags?: Record; +} + +// @public +export interface AppLinkMemberUpdateProperties { + connectivityProfile?: ConnectivityProfile; + observabilityProfile?: ObservabilityProfile; + upgradeProfile?: UpgradeProfile; +} + +// @public +export interface AppLinkProperties { + readonly provisioningState?: ProvisioningState; +} + +// @public +export interface AppLinkUpdate { + tags?: Record; +} + +// @public +export interface AvailableVersion extends ProxyResource { + properties?: AvailableVersionProperties; +} + +// @public +export interface AvailableVersionProperties { + fullyManagedVersions: FullyManagedVersions; + kubernetesVersion: string; + readonly provisioningState?: ProvisioningState; + selfManagedVersions: SelfManagedVersions; +} + +// @public +export type ClusterType = string; + +// @public +export interface ConnectivityProfile { + eastWestGateway?: EastWestGatewayProfile; + privateConnect?: PrivateConnectProfile; +} + +// @public +export type CreatedByType = string; + +// @public +export interface EastWestGatewayProfile { + visibility: EastWestGatewayVisibility; +} + +// @public +export type EastWestGatewayVisibility = string; + +// @public +export interface ErrorAdditionalInfo { + readonly info?: any; + readonly type?: string; +} + +// @public +export interface ErrorDetail { + readonly additionalInfo?: ErrorAdditionalInfo[]; + readonly code?: string; + readonly details?: ErrorDetail[]; + readonly message?: string; + readonly target?: string; +} + +// @public +export interface ErrorResponse { + error?: ErrorDetail; +} + +// @public +export interface FullyManagedUpgradeProfile { + releaseChannel: UpgradeReleaseChannel; +} + +// @public +export interface FullyManagedVersions { + releaseChannels: ReleaseChannelInfo[]; +} + +// @public +export enum KnownActionType { + Internal = "Internal" +} + +// @public +export enum KnownClusterType { + AKS = "AKS" +} + +// @public +export enum KnownCreatedByType { + Application = "Application", + Key = "Key", + ManagedIdentity = "ManagedIdentity", + User = "User" +} + +// @public +export enum KnownEastWestGatewayVisibility { + External = "External", + Internal = "Internal" +} + +// @public +export enum KnownManagedServiceIdentityType { + None = "None", + SystemAssigned = "SystemAssigned", + SystemAssignedUserAssigned = "SystemAssigned,UserAssigned", + UserAssigned = "UserAssigned" +} + +// @public +export enum KnownOrigin { + System = "system", + User = "user", + UserSystem = "user,system" +} + +// @public +export enum KnownProvisioningState { + Accepted = "Accepted", + Canceled = "Canceled", + Deleting = "Deleting", + Failed = "Failed", + Provisioning = "Provisioning", + Succeeded = "Succeeded", + Updating = "Updating" +} + +// @public +export enum KnownUpgradeMode { + FullyManaged = "FullyManaged", + SelfManaged = "SelfManaged" +} + +// @public +export enum KnownUpgradeReleaseChannel { + Rapid = "Rapid", + Stable = "Stable" +} + +// @public +export enum KnownVersions { + V20250801Preview = "2025-08-01-preview" +} + +// @public +export interface ManagedServiceIdentity { + readonly principalId?: string; + readonly tenantId?: string; + type: ManagedServiceIdentityType; + userAssignedIdentities?: Record; +} + +// @public +export type ManagedServiceIdentityType = string; + +// @public +export interface Metadata { + resourceId: string; +} + +// @public +export interface MetricsProfile { + readonly metricsEndpoint?: string; +} + +// @public +export interface ObservabilityProfile { + metrics?: MetricsProfile; +} + +// @public +export interface Operation { + readonly actionType?: ActionType; + display?: OperationDisplay; + readonly isDataAction?: boolean; + readonly name?: string; + readonly origin?: Origin; +} + +// @public +export interface OperationDisplay { + readonly description?: string; + readonly operation?: string; + readonly provider?: string; + readonly resource?: string; +} + +// @public +export type Origin = string; + +// @public +export interface PrivateConnectProfile { + subnetResourceId: string; +} + +// @public +export type ProvisioningState = string; + +// @public +export interface ProxyResource extends Resource { +} + +// @public +export interface ReleaseChannelInfo { + releaseChannel: string; + version: string; +} + +// @public +export interface Resource { + readonly id?: string; + readonly name?: string; + readonly systemData?: SystemData; + readonly type?: string; +} + +// @public +export interface SelfManagedUpgradeProfile { + version: string; +} + +// @public +export interface SelfManagedVersions { + versions: VersionInfo[]; +} + +// @public +export interface SystemData { + createdAt?: Date; + createdBy?: string; + createdByType?: CreatedByType; + lastModifiedAt?: Date; + lastModifiedBy?: string; + lastModifiedByType?: CreatedByType; +} + +// @public +export interface TrackedResource extends Resource { + location: string; + tags?: Record; +} + +// @public +export interface UpgradeHistory extends ProxyResource { + properties?: UpgradeHistoryProperties; +} + +// @public +export interface UpgradeHistoryProperties { + endTimestamp?: Date; + fromVersion: string; + initiatedBy: string; + readonly provisioningState?: ProvisioningState; + startTimestamp: Date; + toVersion: string; +} + +// @public +export type UpgradeMode = string; + +// @public +export interface UpgradeProfile { + fullyManagedUpgradeProfile?: FullyManagedUpgradeProfile; + mode: UpgradeMode; + selfManagedUpgradeProfile?: SelfManagedUpgradeProfile; +} + +// @public +export type UpgradeReleaseChannel = string; + +// @public +export interface UserAssignedIdentity { + readonly clientId?: string; + readonly principalId?: string; +} + +// @public +export interface VersionInfo { + upgrades: string[]; + version: string; +} + +// (No @packageDocumentation comment for this package) + +``` diff --git a/sdk/appnetwork/arm-appnetwork/review/arm-appnetwork-node.api.md b/sdk/appnetwork/arm-appnetwork/review/arm-appnetwork-node.api.md new file mode 100644 index 000000000000..132a63803723 --- /dev/null +++ b/sdk/appnetwork/arm-appnetwork/review/arm-appnetwork-node.api.md @@ -0,0 +1,484 @@ +## API Report File for "@azure/arm-appnetwork" + +> Do not edit this file. It is a report generated by [API Extractor](https://api-extractor.com/). + +```ts + +import type { AbortSignalLike } from '@azure/abort-controller'; +import type { ClientOptions } from '@azure-rest/core-client'; +import type { OperationOptions } from '@azure-rest/core-client'; +import type { OperationState } from '@azure/core-lro'; +import type { PathUncheckedResponse } from '@azure-rest/core-client'; +import type { Pipeline } from '@azure/core-rest-pipeline'; +import type { PollerLike } from '@azure/core-lro'; +import type { TokenCredential } from '@azure/core-auth'; + +// @public +export type ActionType = string; + +// @public +export interface AppLink extends TrackedResource { + identity?: ManagedServiceIdentity; + properties?: AppLinkProperties; +} + +// @public (undocumented) +export class AppLinkClient { + constructor(credential: TokenCredential, subscriptionId: string, options?: AppLinkClientOptionalParams); + readonly appLinkMembers: AppLinkMembersOperations; + readonly appLinks: AppLinksOperations; + readonly availableVersions: AvailableVersionsOperations; + readonly operations: OperationsOperations; + readonly pipeline: Pipeline; + readonly upgradeHistories: UpgradeHistoriesOperations; +} + +// @public +export interface AppLinkClientOptionalParams extends ClientOptions { + apiVersion?: string; + cloudSetting?: AzureSupportedClouds; +} + +// @public +export interface AppLinkMember extends TrackedResource { + properties?: AppLinkMemberProperties; +} + +// @public +export interface AppLinkMemberProperties { + clusterType?: ClusterType; + connectivityProfile?: ConnectivityProfile; + metadata: Metadata; + observabilityProfile?: ObservabilityProfile; + readonly provisioningState?: ProvisioningState; + upgradeProfile?: UpgradeProfile; +} + +// @public +export interface AppLinkMembersCreateOrUpdateOptionalParams extends OperationOptions { + updateIntervalInMs?: number; +} + +// @public +export interface AppLinkMembersDeleteOptionalParams extends OperationOptions { + updateIntervalInMs?: number; +} + +// @public +export interface AppLinkMembersGetOptionalParams extends OperationOptions { +} + +// @public +export interface AppLinkMembersListByAppLinkOptionalParams extends OperationOptions { +} + +// @public +export interface AppLinkMembersOperations { + createOrUpdate: (resourceGroupName: string, appLinkName: string, appLinkMemberName: string, resource: AppLinkMember, options?: AppLinkMembersCreateOrUpdateOptionalParams) => PollerLike, AppLinkMember>; + delete: (resourceGroupName: string, appLinkName: string, appLinkMemberName: string, options?: AppLinkMembersDeleteOptionalParams) => PollerLike, void>; + get: (resourceGroupName: string, appLinkName: string, appLinkMemberName: string, options?: AppLinkMembersGetOptionalParams) => Promise; + listByAppLink: (resourceGroupName: string, appLinkName: string, options?: AppLinkMembersListByAppLinkOptionalParams) => PagedAsyncIterableIterator; + update: (resourceGroupName: string, appLinkName: string, appLinkMemberName: string, properties: AppLinkMemberUpdate, options?: AppLinkMembersUpdateOptionalParams) => PollerLike, AppLinkMember>; +} + +// @public +export interface AppLinkMembersUpdateOptionalParams extends OperationOptions { + updateIntervalInMs?: number; +} + +// @public +export interface AppLinkMemberUpdate { + properties?: AppLinkMemberUpdateProperties; + tags?: Record; +} + +// @public +export interface AppLinkMemberUpdateProperties { + connectivityProfile?: ConnectivityProfile; + observabilityProfile?: ObservabilityProfile; + upgradeProfile?: UpgradeProfile; +} + +// @public +export interface AppLinkProperties { + readonly provisioningState?: ProvisioningState; +} + +// @public +export interface AppLinksCreateOrUpdateOptionalParams extends OperationOptions { + updateIntervalInMs?: number; +} + +// @public +export interface AppLinksDeleteOptionalParams extends OperationOptions { + updateIntervalInMs?: number; +} + +// @public +export interface AppLinksGetOptionalParams extends OperationOptions { +} + +// @public +export interface AppLinksListByResourceGroupOptionalParams extends OperationOptions { +} + +// @public +export interface AppLinksListBySubscriptionOptionalParams extends OperationOptions { +} + +// @public +export interface AppLinksOperations { + createOrUpdate: (resourceGroupName: string, appLinkName: string, resource: AppLink, options?: AppLinksCreateOrUpdateOptionalParams) => PollerLike, AppLink>; + delete: (resourceGroupName: string, appLinkName: string, options?: AppLinksDeleteOptionalParams) => PollerLike, void>; + get: (resourceGroupName: string, appLinkName: string, options?: AppLinksGetOptionalParams) => Promise; + listByResourceGroup: (resourceGroupName: string, options?: AppLinksListByResourceGroupOptionalParams) => PagedAsyncIterableIterator; + listBySubscription: (options?: AppLinksListBySubscriptionOptionalParams) => PagedAsyncIterableIterator; + update: (resourceGroupName: string, appLinkName: string, properties: AppLinkUpdate, options?: AppLinksUpdateOptionalParams) => PollerLike, AppLink>; +} + +// @public +export interface AppLinksUpdateOptionalParams extends OperationOptions { + updateIntervalInMs?: number; +} + +// @public +export interface AppLinkUpdate { + tags?: Record; +} + +// @public +export interface AvailableVersion extends ProxyResource { + properties?: AvailableVersionProperties; +} + +// @public +export interface AvailableVersionProperties { + fullyManagedVersions: FullyManagedVersions; + kubernetesVersion: string; + readonly provisioningState?: ProvisioningState; + selfManagedVersions: SelfManagedVersions; +} + +// @public +export interface AvailableVersionsListByLocationOptionalParams extends OperationOptions { + kubernetesVersion?: string; +} + +// @public +export interface AvailableVersionsOperations { + listByLocation: (location: string, options?: AvailableVersionsListByLocationOptionalParams) => PagedAsyncIterableIterator; +} + +// @public +export enum AzureClouds { + AZURE_CHINA_CLOUD = "AZURE_CHINA_CLOUD", + AZURE_PUBLIC_CLOUD = "AZURE_PUBLIC_CLOUD", + AZURE_US_GOVERNMENT = "AZURE_US_GOVERNMENT" +} + +// @public +export type AzureSupportedClouds = `${AzureClouds}`; + +// @public +export type ClusterType = string; + +// @public +export interface ConnectivityProfile { + eastWestGateway?: EastWestGatewayProfile; + privateConnect?: PrivateConnectProfile; +} + +// @public +export type ContinuablePage = TPage & { + continuationToken?: string; +}; + +// @public +export type CreatedByType = string; + +// @public +export interface EastWestGatewayProfile { + visibility: EastWestGatewayVisibility; +} + +// @public +export type EastWestGatewayVisibility = string; + +// @public +export interface ErrorAdditionalInfo { + readonly info?: any; + readonly type?: string; +} + +// @public +export interface ErrorDetail { + readonly additionalInfo?: ErrorAdditionalInfo[]; + readonly code?: string; + readonly details?: ErrorDetail[]; + readonly message?: string; + readonly target?: string; +} + +// @public +export interface ErrorResponse { + error?: ErrorDetail; +} + +// @public +export interface FullyManagedUpgradeProfile { + releaseChannel: UpgradeReleaseChannel; +} + +// @public +export interface FullyManagedVersions { + releaseChannels: ReleaseChannelInfo[]; +} + +// @public +export enum KnownActionType { + Internal = "Internal" +} + +// @public +export enum KnownClusterType { + AKS = "AKS" +} + +// @public +export enum KnownCreatedByType { + Application = "Application", + Key = "Key", + ManagedIdentity = "ManagedIdentity", + User = "User" +} + +// @public +export enum KnownEastWestGatewayVisibility { + External = "External", + Internal = "Internal" +} + +// @public +export enum KnownManagedServiceIdentityType { + None = "None", + SystemAssigned = "SystemAssigned", + SystemAssignedUserAssigned = "SystemAssigned,UserAssigned", + UserAssigned = "UserAssigned" +} + +// @public +export enum KnownOrigin { + System = "system", + User = "user", + UserSystem = "user,system" +} + +// @public +export enum KnownProvisioningState { + Accepted = "Accepted", + Canceled = "Canceled", + Deleting = "Deleting", + Failed = "Failed", + Provisioning = "Provisioning", + Succeeded = "Succeeded", + Updating = "Updating" +} + +// @public +export enum KnownUpgradeMode { + FullyManaged = "FullyManaged", + SelfManaged = "SelfManaged" +} + +// @public +export enum KnownUpgradeReleaseChannel { + Rapid = "Rapid", + Stable = "Stable" +} + +// @public +export enum KnownVersions { + V20250801Preview = "2025-08-01-preview" +} + +// @public +export interface ManagedServiceIdentity { + readonly principalId?: string; + readonly tenantId?: string; + type: ManagedServiceIdentityType; + userAssignedIdentities?: Record; +} + +// @public +export type ManagedServiceIdentityType = string; + +// @public +export interface Metadata { + resourceId: string; +} + +// @public +export interface MetricsProfile { + readonly metricsEndpoint?: string; +} + +// @public +export interface ObservabilityProfile { + metrics?: MetricsProfile; +} + +// @public +export interface Operation { + readonly actionType?: ActionType; + display?: OperationDisplay; + readonly isDataAction?: boolean; + readonly name?: string; + readonly origin?: Origin; +} + +// @public +export interface OperationDisplay { + readonly description?: string; + readonly operation?: string; + readonly provider?: string; + readonly resource?: string; +} + +// @public +export interface OperationsListOptionalParams extends OperationOptions { +} + +// @public +export interface OperationsOperations { + list: (options?: OperationsListOptionalParams) => PagedAsyncIterableIterator; +} + +// @public +export type Origin = string; + +// @public +export interface PagedAsyncIterableIterator { + [Symbol.asyncIterator](): PagedAsyncIterableIterator; + byPage: (settings?: TPageSettings) => AsyncIterableIterator>; + next(): Promise>; +} + +// @public +export interface PageSettings { + continuationToken?: string; +} + +// @public +export interface PrivateConnectProfile { + subnetResourceId: string; +} + +// @public +export type ProvisioningState = string; + +// @public +export interface ProxyResource extends Resource { +} + +// @public +export interface ReleaseChannelInfo { + releaseChannel: string; + version: string; +} + +// @public +export interface Resource { + readonly id?: string; + readonly name?: string; + readonly systemData?: SystemData; + readonly type?: string; +} + +// @public +export function restorePoller(client: AppLinkClient, serializedState: string, sourceOperation: (...args: any[]) => PollerLike, TResult>, options?: RestorePollerOptions): PollerLike, TResult>; + +// @public (undocumented) +export interface RestorePollerOptions extends OperationOptions { + abortSignal?: AbortSignalLike; + processResponseBody?: (result: TResponse) => Promise; + updateIntervalInMs?: number; +} + +// @public +export interface SelfManagedUpgradeProfile { + version: string; +} + +// @public +export interface SelfManagedVersions { + versions: VersionInfo[]; +} + +// @public +export interface SystemData { + createdAt?: Date; + createdBy?: string; + createdByType?: CreatedByType; + lastModifiedAt?: Date; + lastModifiedBy?: string; + lastModifiedByType?: CreatedByType; +} + +// @public +export interface TrackedResource extends Resource { + location: string; + tags?: Record; +} + +// @public +export interface UpgradeHistoriesListByAppLinkMemberOptionalParams extends OperationOptions { +} + +// @public +export interface UpgradeHistoriesOperations { + listByAppLinkMember: (resourceGroupName: string, appLinkName: string, appLinkMemberName: string, options?: UpgradeHistoriesListByAppLinkMemberOptionalParams) => PagedAsyncIterableIterator; +} + +// @public +export interface UpgradeHistory extends ProxyResource { + properties?: UpgradeHistoryProperties; +} + +// @public +export interface UpgradeHistoryProperties { + endTimestamp?: Date; + fromVersion: string; + initiatedBy: string; + readonly provisioningState?: ProvisioningState; + startTimestamp: Date; + toVersion: string; +} + +// @public +export type UpgradeMode = string; + +// @public +export interface UpgradeProfile { + fullyManagedUpgradeProfile?: FullyManagedUpgradeProfile; + mode: UpgradeMode; + selfManagedUpgradeProfile?: SelfManagedUpgradeProfile; +} + +// @public +export type UpgradeReleaseChannel = string; + +// @public +export interface UserAssignedIdentity { + readonly clientId?: string; + readonly principalId?: string; +} + +// @public +export interface VersionInfo { + upgrades: string[]; + version: string; +} + +// (No @packageDocumentation comment for this package) + +``` diff --git a/sdk/appnetwork/arm-appnetwork/sample.env b/sdk/appnetwork/arm-appnetwork/sample.env new file mode 100644 index 000000000000..508439fc7d62 --- /dev/null +++ b/sdk/appnetwork/arm-appnetwork/sample.env @@ -0,0 +1 @@ +# Feel free to add your own environment variables. \ No newline at end of file diff --git a/sdk/appnetwork/arm-appnetwork/samples-dev/appLinkMembersCreateOrUpdateSample.ts b/sdk/appnetwork/arm-appnetwork/samples-dev/appLinkMembersCreateOrUpdateSample.ts new file mode 100644 index 000000000000..cf896f238c30 --- /dev/null +++ b/sdk/appnetwork/arm-appnetwork/samples-dev/appLinkMembersCreateOrUpdateSample.ts @@ -0,0 +1,51 @@ +// Copyright (c) Microsoft Corporation. +// Licensed under the MIT License. + +import { AppLinkClient } from "@azure/arm-appnetwork"; +import { DefaultAzureCredential } from "@azure/identity"; + +/** + * This sample demonstrates how to create an AppLinkMember. + * + * @summary create an AppLinkMember. + * x-ms-original-file: 2025-08-01-preview/AppLinkMembers_CreateOrUpdate.json + */ +async function appLinkMembersCreateOrUpdate(): Promise { + const credential = new DefaultAzureCredential(); + const subscriptionId = "11809CA1-E126-4017-945E-AA795CD5C5A9"; + const client = new AppLinkClient(credential, subscriptionId); + const result = await client.appLinkMembers.createOrUpdate( + "test_rg", + "applink-test-01", + "member-01", + { + properties: { + clusterType: "AKS", + metadata: { + resourceId: + "/subscriptions/bc7e0da9-5e4c-4a91-9252-9658837006cf/resourcegroups/applink-rg/providers/Microsoft.ContainerService/managedClusters/applink-member1", + }, + upgradeProfile: { + mode: "FullyManaged", + fullyManagedUpgradeProfile: { releaseChannel: "Stable" }, + }, + connectivityProfile: { + privateConnect: { + subnetResourceId: + "/subscriptions/bc7e0da9-5e4c-4a91-9252-9658837006cf/resourceGroups/applink-vnet-rg/providers/Microsoft.Network/virtualNetworks/vnet1/subnets/subnet1", + }, + eastWestGateway: { visibility: "Internal" }, + }, + }, + tags: { key2913: "test_tag" }, + location: "westus2", + }, + ); + console.log(result); +} + +async function main(): Promise { + await appLinkMembersCreateOrUpdate(); +} + +main().catch(console.error); diff --git a/sdk/appnetwork/arm-appnetwork/samples-dev/appLinkMembersDeleteSample.ts b/sdk/appnetwork/arm-appnetwork/samples-dev/appLinkMembersDeleteSample.ts new file mode 100644 index 000000000000..bba15e5568a2 --- /dev/null +++ b/sdk/appnetwork/arm-appnetwork/samples-dev/appLinkMembersDeleteSample.ts @@ -0,0 +1,24 @@ +// Copyright (c) Microsoft Corporation. +// Licensed under the MIT License. + +import { AppLinkClient } from "@azure/arm-appnetwork"; +import { DefaultAzureCredential } from "@azure/identity"; + +/** + * This sample demonstrates how to delete an AppLinkMember. + * + * @summary delete an AppLinkMember. + * x-ms-original-file: 2025-08-01-preview/AppLinkMembers_Delete.json + */ +async function appLinkMembersDelete(): Promise { + const credential = new DefaultAzureCredential(); + const subscriptionId = "11809CA1-E126-4017-945E-AA795CD5C5A9"; + const client = new AppLinkClient(credential, subscriptionId); + await client.appLinkMembers.delete("test_rg", "applink-test-01", "member-01"); +} + +async function main(): Promise { + await appLinkMembersDelete(); +} + +main().catch(console.error); diff --git a/sdk/appnetwork/arm-appnetwork/samples-dev/appLinkMembersGetSample.ts b/sdk/appnetwork/arm-appnetwork/samples-dev/appLinkMembersGetSample.ts new file mode 100644 index 000000000000..df02e31d6d31 --- /dev/null +++ b/sdk/appnetwork/arm-appnetwork/samples-dev/appLinkMembersGetSample.ts @@ -0,0 +1,25 @@ +// Copyright (c) Microsoft Corporation. +// Licensed under the MIT License. + +import { AppLinkClient } from "@azure/arm-appnetwork"; +import { DefaultAzureCredential } from "@azure/identity"; + +/** + * This sample demonstrates how to get an AppLinkMember. + * + * @summary get an AppLinkMember. + * x-ms-original-file: 2025-08-01-preview/AppLinkMembers_Get.json + */ +async function appLinkMembersGet(): Promise { + const credential = new DefaultAzureCredential(); + const subscriptionId = "11809CA1-E126-4017-945E-AA795CD5C5A9"; + const client = new AppLinkClient(credential, subscriptionId); + const result = await client.appLinkMembers.get("test_rg", "applink-test-01", "member-01"); + console.log(result); +} + +async function main(): Promise { + await appLinkMembersGet(); +} + +main().catch(console.error); diff --git a/sdk/appnetwork/arm-appnetwork/samples-dev/appLinkMembersListByAppLinkSample.ts b/sdk/appnetwork/arm-appnetwork/samples-dev/appLinkMembersListByAppLinkSample.ts new file mode 100644 index 000000000000..96d697e6c170 --- /dev/null +++ b/sdk/appnetwork/arm-appnetwork/samples-dev/appLinkMembersListByAppLinkSample.ts @@ -0,0 +1,29 @@ +// Copyright (c) Microsoft Corporation. +// Licensed under the MIT License. + +import { AppLinkClient } from "@azure/arm-appnetwork"; +import { DefaultAzureCredential } from "@azure/identity"; + +/** + * This sample demonstrates how to list AppLinkMember resources by AppLink. + * + * @summary list AppLinkMember resources by AppLink. + * x-ms-original-file: 2025-08-01-preview/AppLinkMembers_ListByAppLink.json + */ +async function appLinkMembersListByAppLink(): Promise { + const credential = new DefaultAzureCredential(); + const subscriptionId = "11809CA1-E126-4017-945E-AA795CD5C5A9"; + const client = new AppLinkClient(credential, subscriptionId); + const resArray = new Array(); + for await (const item of client.appLinkMembers.listByAppLink("test_rg", "applink-test-01")) { + resArray.push(item); + } + + console.log(resArray); +} + +async function main(): Promise { + await appLinkMembersListByAppLink(); +} + +main().catch(console.error); diff --git a/sdk/appnetwork/arm-appnetwork/samples-dev/appLinkMembersUpdateSample.ts b/sdk/appnetwork/arm-appnetwork/samples-dev/appLinkMembersUpdateSample.ts new file mode 100644 index 000000000000..2e5841f1cc36 --- /dev/null +++ b/sdk/appnetwork/arm-appnetwork/samples-dev/appLinkMembersUpdateSample.ts @@ -0,0 +1,31 @@ +// Copyright (c) Microsoft Corporation. +// Licensed under the MIT License. + +import { AppLinkClient } from "@azure/arm-appnetwork"; +import { DefaultAzureCredential } from "@azure/identity"; + +/** + * This sample demonstrates how to update an AppLinkMember. + * + * @summary update an AppLinkMember. + * x-ms-original-file: 2025-08-01-preview/AppLinkMembers_Update.json + */ +async function appLinkMembersUpdate(): Promise { + const credential = new DefaultAzureCredential(); + const subscriptionId = "11809CA1-E126-4017-945E-AA795CD5C5A9"; + const client = new AppLinkClient(credential, subscriptionId); + const result = await client.appLinkMembers.update("test_rg", "applink-test-01", "member-01", { + tags: { key7952: "updated_tag_value" }, + properties: { + upgradeProfile: { mode: "SelfManaged", selfManagedUpgradeProfile: { version: "1.26" } }, + connectivityProfile: { eastWestGateway: { visibility: "Internal" } }, + }, + }); + console.log(result); +} + +async function main(): Promise { + await appLinkMembersUpdate(); +} + +main().catch(console.error); diff --git a/sdk/appnetwork/arm-appnetwork/samples-dev/appLinksCreateOrUpdateSample.ts b/sdk/appnetwork/arm-appnetwork/samples-dev/appLinksCreateOrUpdateSample.ts new file mode 100644 index 000000000000..024794e57fc2 --- /dev/null +++ b/sdk/appnetwork/arm-appnetwork/samples-dev/appLinksCreateOrUpdateSample.ts @@ -0,0 +1,30 @@ +// Copyright (c) Microsoft Corporation. +// Licensed under the MIT License. + +import { AppLinkClient } from "@azure/arm-appnetwork"; +import { DefaultAzureCredential } from "@azure/identity"; + +/** + * This sample demonstrates how to create an AppLink. + * + * @summary create an AppLink. + * x-ms-original-file: 2025-08-01-preview/AppLinks_CreateOrUpdate.json + */ +async function appLinksCreateOrUpdate(): Promise { + const credential = new DefaultAzureCredential(); + const subscriptionId = "11809CA1-E126-4017-945E-AA795CD5C5A9"; + const client = new AppLinkClient(credential, subscriptionId); + const result = await client.appLinks.createOrUpdate("test_rg", "applink-test-01", { + properties: {}, + identity: { type: "SystemAssigned" }, + tags: { key2913: "test_tag" }, + location: "westus2", + }); + console.log(result); +} + +async function main(): Promise { + await appLinksCreateOrUpdate(); +} + +main().catch(console.error); diff --git a/sdk/appnetwork/arm-appnetwork/samples-dev/appLinksDeleteSample.ts b/sdk/appnetwork/arm-appnetwork/samples-dev/appLinksDeleteSample.ts new file mode 100644 index 000000000000..224e7c2cf791 --- /dev/null +++ b/sdk/appnetwork/arm-appnetwork/samples-dev/appLinksDeleteSample.ts @@ -0,0 +1,24 @@ +// Copyright (c) Microsoft Corporation. +// Licensed under the MIT License. + +import { AppLinkClient } from "@azure/arm-appnetwork"; +import { DefaultAzureCredential } from "@azure/identity"; + +/** + * This sample demonstrates how to delete an AppLink. + * + * @summary delete an AppLink. + * x-ms-original-file: 2025-08-01-preview/AppLinks_Delete.json + */ +async function appLinksDelete(): Promise { + const credential = new DefaultAzureCredential(); + const subscriptionId = "11809CA1-E126-4017-945E-AA795CD5C5A9"; + const client = new AppLinkClient(credential, subscriptionId); + await client.appLinks.delete("test_rg", "applink-test-01"); +} + +async function main(): Promise { + await appLinksDelete(); +} + +main().catch(console.error); diff --git a/sdk/appnetwork/arm-appnetwork/samples-dev/appLinksGetSample.ts b/sdk/appnetwork/arm-appnetwork/samples-dev/appLinksGetSample.ts new file mode 100644 index 000000000000..3e8eee2891b3 --- /dev/null +++ b/sdk/appnetwork/arm-appnetwork/samples-dev/appLinksGetSample.ts @@ -0,0 +1,25 @@ +// Copyright (c) Microsoft Corporation. +// Licensed under the MIT License. + +import { AppLinkClient } from "@azure/arm-appnetwork"; +import { DefaultAzureCredential } from "@azure/identity"; + +/** + * This sample demonstrates how to get an AppLink. + * + * @summary get an AppLink. + * x-ms-original-file: 2025-08-01-preview/AppLinks_Get.json + */ +async function appLinksGet(): Promise { + const credential = new DefaultAzureCredential(); + const subscriptionId = "11809CA1-E126-4017-945E-AA795CD5C5A9"; + const client = new AppLinkClient(credential, subscriptionId); + const result = await client.appLinks.get("test_rg", "applink-test-01"); + console.log(result); +} + +async function main(): Promise { + await appLinksGet(); +} + +main().catch(console.error); diff --git a/sdk/appnetwork/arm-appnetwork/samples-dev/appLinksListByResourceGroupSample.ts b/sdk/appnetwork/arm-appnetwork/samples-dev/appLinksListByResourceGroupSample.ts new file mode 100644 index 000000000000..9e163256983b --- /dev/null +++ b/sdk/appnetwork/arm-appnetwork/samples-dev/appLinksListByResourceGroupSample.ts @@ -0,0 +1,29 @@ +// Copyright (c) Microsoft Corporation. +// Licensed under the MIT License. + +import { AppLinkClient } from "@azure/arm-appnetwork"; +import { DefaultAzureCredential } from "@azure/identity"; + +/** + * This sample demonstrates how to list AppLink resources by resource group. + * + * @summary list AppLink resources by resource group. + * x-ms-original-file: 2025-08-01-preview/AppLinks_ListByResourceGroup.json + */ +async function appLinksListByResourceGroup(): Promise { + const credential = new DefaultAzureCredential(); + const subscriptionId = "11809CA1-E126-4017-945E-AA795CD5C5A9"; + const client = new AppLinkClient(credential, subscriptionId); + const resArray = new Array(); + for await (const item of client.appLinks.listByResourceGroup("test_rg")) { + resArray.push(item); + } + + console.log(resArray); +} + +async function main(): Promise { + await appLinksListByResourceGroup(); +} + +main().catch(console.error); diff --git a/sdk/appnetwork/arm-appnetwork/samples-dev/appLinksListBySubscriptionSample.ts b/sdk/appnetwork/arm-appnetwork/samples-dev/appLinksListBySubscriptionSample.ts new file mode 100644 index 000000000000..dc9bbad4dfc6 --- /dev/null +++ b/sdk/appnetwork/arm-appnetwork/samples-dev/appLinksListBySubscriptionSample.ts @@ -0,0 +1,29 @@ +// Copyright (c) Microsoft Corporation. +// Licensed under the MIT License. + +import { AppLinkClient } from "@azure/arm-appnetwork"; +import { DefaultAzureCredential } from "@azure/identity"; + +/** + * This sample demonstrates how to list AppLink resources by subscription. + * + * @summary list AppLink resources by subscription. + * x-ms-original-file: 2025-08-01-preview/AppLinks_ListBySubscription.json + */ +async function appLinksListBySubscription(): Promise { + const credential = new DefaultAzureCredential(); + const subscriptionId = "11809CA1-E126-4017-945E-AA795CD5C5A9"; + const client = new AppLinkClient(credential, subscriptionId); + const resArray = new Array(); + for await (const item of client.appLinks.listBySubscription()) { + resArray.push(item); + } + + console.log(resArray); +} + +async function main(): Promise { + await appLinksListBySubscription(); +} + +main().catch(console.error); diff --git a/sdk/appnetwork/arm-appnetwork/samples-dev/appLinksUpdateSample.ts b/sdk/appnetwork/arm-appnetwork/samples-dev/appLinksUpdateSample.ts new file mode 100644 index 000000000000..5ebec00499d3 --- /dev/null +++ b/sdk/appnetwork/arm-appnetwork/samples-dev/appLinksUpdateSample.ts @@ -0,0 +1,27 @@ +// Copyright (c) Microsoft Corporation. +// Licensed under the MIT License. + +import { AppLinkClient } from "@azure/arm-appnetwork"; +import { DefaultAzureCredential } from "@azure/identity"; + +/** + * This sample demonstrates how to update an AppLink. + * + * @summary update an AppLink. + * x-ms-original-file: 2025-08-01-preview/AppLinks_Update.json + */ +async function appLinksUpdate(): Promise { + const credential = new DefaultAzureCredential(); + const subscriptionId = "11809CA1-E126-4017-945E-AA795CD5C5A9"; + const client = new AppLinkClient(credential, subscriptionId); + const result = await client.appLinks.update("test_rg", "applink-test-01", { + tags: { environment: "production", "cost-center": "platform" }, + }); + console.log(result); +} + +async function main(): Promise { + await appLinksUpdate(); +} + +main().catch(console.error); diff --git a/sdk/appnetwork/arm-appnetwork/samples-dev/availableVersionsListByLocationSample.ts b/sdk/appnetwork/arm-appnetwork/samples-dev/availableVersionsListByLocationSample.ts new file mode 100644 index 000000000000..57a9c61c493c --- /dev/null +++ b/sdk/appnetwork/arm-appnetwork/samples-dev/availableVersionsListByLocationSample.ts @@ -0,0 +1,50 @@ +// Copyright (c) Microsoft Corporation. +// Licensed under the MIT License. + +import { AppLinkClient } from "@azure/arm-appnetwork"; +import { DefaultAzureCredential } from "@azure/identity"; + +/** + * This sample demonstrates how to list AvailableVersion resources by location. + * + * @summary list AvailableVersion resources by location. + * x-ms-original-file: 2025-08-01-preview/AvailableVersions_ListByLocation.json + */ +async function availableVersionsListByLocation(): Promise { + const credential = new DefaultAzureCredential(); + const subscriptionId = "11809CA1-E126-4017-945E-AA795CD5C5A9"; + const client = new AppLinkClient(credential, subscriptionId); + const resArray = new Array(); + for await (const item of client.availableVersions.listByLocation("westus2")) { + resArray.push(item); + } + + console.log(resArray); +} + +/** + * This sample demonstrates how to list AvailableVersion resources by location. + * + * @summary list AvailableVersion resources by location. + * x-ms-original-file: 2025-08-01-preview/AvailableVersions_ListByLocationWithFilter.json + */ +async function availableVersionsListByLocationWithFilter(): Promise { + const credential = new DefaultAzureCredential(); + const subscriptionId = "11809CA1-E126-4017-945E-AA795CD5C5A9"; + const client = new AppLinkClient(credential, subscriptionId); + const resArray = new Array(); + for await (const item of client.availableVersions.listByLocation("westus2", { + kubernetesVersion: "1.28", + })) { + resArray.push(item); + } + + console.log(resArray); +} + +async function main(): Promise { + await availableVersionsListByLocation(); + await availableVersionsListByLocationWithFilter(); +} + +main().catch(console.error); diff --git a/sdk/appnetwork/arm-appnetwork/samples-dev/operationsListSample.ts b/sdk/appnetwork/arm-appnetwork/samples-dev/operationsListSample.ts new file mode 100644 index 000000000000..dfe1d96f3335 --- /dev/null +++ b/sdk/appnetwork/arm-appnetwork/samples-dev/operationsListSample.ts @@ -0,0 +1,29 @@ +// Copyright (c) Microsoft Corporation. +// Licensed under the MIT License. + +import { AppLinkClient } from "@azure/arm-appnetwork"; +import { DefaultAzureCredential } from "@azure/identity"; + +/** + * This sample demonstrates how to list the operations for the provider + * + * @summary list the operations for the provider + * x-ms-original-file: 2025-08-01-preview/Operations_List.json + */ +async function operationsList(): Promise { + const credential = new DefaultAzureCredential(); + const subscriptionId = "00000000-0000-0000-0000-000000000000"; + const client = new AppLinkClient(credential, subscriptionId); + const resArray = new Array(); + for await (const item of client.operations.list()) { + resArray.push(item); + } + + console.log(resArray); +} + +async function main(): Promise { + await operationsList(); +} + +main().catch(console.error); diff --git a/sdk/appnetwork/arm-appnetwork/samples-dev/upgradeHistoriesListByAppLinkMemberSample.ts b/sdk/appnetwork/arm-appnetwork/samples-dev/upgradeHistoriesListByAppLinkMemberSample.ts new file mode 100644 index 000000000000..1cd9af425219 --- /dev/null +++ b/sdk/appnetwork/arm-appnetwork/samples-dev/upgradeHistoriesListByAppLinkMemberSample.ts @@ -0,0 +1,33 @@ +// Copyright (c) Microsoft Corporation. +// Licensed under the MIT License. + +import { AppLinkClient } from "@azure/arm-appnetwork"; +import { DefaultAzureCredential } from "@azure/identity"; + +/** + * This sample demonstrates how to list UpgradeHistory resources by AppLinkMember. + * + * @summary list UpgradeHistory resources by AppLinkMember. + * x-ms-original-file: 2025-08-01-preview/UpgradeHistories_ListByAppLinkMember.json + */ +async function upgradeHistoriesListByAppLinkMember(): Promise { + const credential = new DefaultAzureCredential(); + const subscriptionId = "11809CA1-E126-4017-945E-AA795CD5C5A9"; + const client = new AppLinkClient(credential, subscriptionId); + const resArray = new Array(); + for await (const item of client.upgradeHistories.listByAppLinkMember( + "test_rg", + "applink-test-01", + "member-01", + )) { + resArray.push(item); + } + + console.log(resArray); +} + +async function main(): Promise { + await upgradeHistoriesListByAppLinkMember(); +} + +main().catch(console.error); diff --git a/sdk/appnetwork/arm-appnetwork/samples/v1-beta/javascript/README.md b/sdk/appnetwork/arm-appnetwork/samples/v1-beta/javascript/README.md new file mode 100644 index 000000000000..f0b6ae34186f --- /dev/null +++ b/sdk/appnetwork/arm-appnetwork/samples/v1-beta/javascript/README.md @@ -0,0 +1,76 @@ +# @azure/arm-appnetwork client library samples for JavaScript (Beta) + +These sample programs show how to use the JavaScript client libraries for @azure/arm-appnetwork in some common scenarios. + +| **File Name** | **Description** | +| ----------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------- | +| [appLinkMembersCreateOrUpdateSample.js][applinkmemberscreateorupdatesample] | create an AppLinkMember. x-ms-original-file: 2025-08-01-preview/AppLinkMembers_CreateOrUpdate.json | +| [appLinkMembersDeleteSample.js][applinkmembersdeletesample] | delete an AppLinkMember. x-ms-original-file: 2025-08-01-preview/AppLinkMembers_Delete.json | +| [appLinkMembersGetSample.js][applinkmembersgetsample] | get an AppLinkMember. x-ms-original-file: 2025-08-01-preview/AppLinkMembers_Get.json | +| [appLinkMembersListByAppLinkSample.js][applinkmemberslistbyapplinksample] | list AppLinkMember resources by AppLink. x-ms-original-file: 2025-08-01-preview/AppLinkMembers_ListByAppLink.json | +| [appLinkMembersUpdateSample.js][applinkmembersupdatesample] | update an AppLinkMember. x-ms-original-file: 2025-08-01-preview/AppLinkMembers_Update.json | +| [appLinksCreateOrUpdateSample.js][applinkscreateorupdatesample] | create an AppLink. x-ms-original-file: 2025-08-01-preview/AppLinks_CreateOrUpdate.json | +| [appLinksDeleteSample.js][applinksdeletesample] | delete an AppLink. x-ms-original-file: 2025-08-01-preview/AppLinks_Delete.json | +| [appLinksGetSample.js][applinksgetsample] | get an AppLink. x-ms-original-file: 2025-08-01-preview/AppLinks_Get.json | +| [appLinksListByResourceGroupSample.js][applinkslistbyresourcegroupsample] | list AppLink resources by resource group. x-ms-original-file: 2025-08-01-preview/AppLinks_ListByResourceGroup.json | +| [appLinksListBySubscriptionSample.js][applinkslistbysubscriptionsample] | list AppLink resources by subscription. x-ms-original-file: 2025-08-01-preview/AppLinks_ListBySubscription.json | +| [appLinksUpdateSample.js][applinksupdatesample] | update an AppLink. x-ms-original-file: 2025-08-01-preview/AppLinks_Update.json | +| [availableVersionsListByLocationSample.js][availableversionslistbylocationsample] | list AvailableVersion resources by location. x-ms-original-file: 2025-08-01-preview/AvailableVersions_ListByLocation.json | +| [operationsListSample.js][operationslistsample] | list the operations for the provider x-ms-original-file: 2025-08-01-preview/Operations_List.json | +| [upgradeHistoriesListByAppLinkMemberSample.js][upgradehistorieslistbyapplinkmembersample] | list UpgradeHistory resources by AppLinkMember. x-ms-original-file: 2025-08-01-preview/UpgradeHistories_ListByAppLinkMember.json | + +## Prerequisites + +The sample programs are compatible with [LTS versions of Node.js](https://github.com/nodejs/release#release-schedule). + +You need [an Azure subscription][freesub] to run these sample programs. + +Samples retrieve credentials to access the service endpoint from environment variables. Alternatively, edit the source code to include the appropriate credentials. See each individual sample for details on which environment variables/credentials it requires to function. + +Adapting the samples to run in the browser may require some additional consideration. For details, please see the [package README][package]. + +## Setup + +To run the samples using the published version of the package: + +1. Install the dependencies using `npm`: + +```bash +npm install +``` + +2. Edit the file `sample.env`, adding the correct credentials to access the Azure service and run the samples. Then rename the file from `sample.env` to just `.env`. The sample programs will read this file automatically. + +3. Run whichever samples you like (note that some samples may require additional setup, see the table above): + +```bash +node appLinkMembersCreateOrUpdateSample.js +``` + +Alternatively, run a single sample with the required environment variables set (setting up the `.env` file is not required if you do this), for example (cross-platform): + +```bash +node appLinkMembersCreateOrUpdateSample.js +``` + +## Next Steps + +Take a look at our [API Documentation][apiref] for more information about the APIs that are available in the clients. + +[applinkmemberscreateorupdatesample]: https://github.com/Azure/azure-sdk-for-js/blob/main/sdk/appnetwork/arm-appnetwork/samples/v1-beta/javascript/appLinkMembersCreateOrUpdateSample.js +[applinkmembersdeletesample]: https://github.com/Azure/azure-sdk-for-js/blob/main/sdk/appnetwork/arm-appnetwork/samples/v1-beta/javascript/appLinkMembersDeleteSample.js +[applinkmembersgetsample]: https://github.com/Azure/azure-sdk-for-js/blob/main/sdk/appnetwork/arm-appnetwork/samples/v1-beta/javascript/appLinkMembersGetSample.js +[applinkmemberslistbyapplinksample]: https://github.com/Azure/azure-sdk-for-js/blob/main/sdk/appnetwork/arm-appnetwork/samples/v1-beta/javascript/appLinkMembersListByAppLinkSample.js +[applinkmembersupdatesample]: https://github.com/Azure/azure-sdk-for-js/blob/main/sdk/appnetwork/arm-appnetwork/samples/v1-beta/javascript/appLinkMembersUpdateSample.js +[applinkscreateorupdatesample]: https://github.com/Azure/azure-sdk-for-js/blob/main/sdk/appnetwork/arm-appnetwork/samples/v1-beta/javascript/appLinksCreateOrUpdateSample.js +[applinksdeletesample]: https://github.com/Azure/azure-sdk-for-js/blob/main/sdk/appnetwork/arm-appnetwork/samples/v1-beta/javascript/appLinksDeleteSample.js +[applinksgetsample]: https://github.com/Azure/azure-sdk-for-js/blob/main/sdk/appnetwork/arm-appnetwork/samples/v1-beta/javascript/appLinksGetSample.js +[applinkslistbyresourcegroupsample]: https://github.com/Azure/azure-sdk-for-js/blob/main/sdk/appnetwork/arm-appnetwork/samples/v1-beta/javascript/appLinksListByResourceGroupSample.js +[applinkslistbysubscriptionsample]: https://github.com/Azure/azure-sdk-for-js/blob/main/sdk/appnetwork/arm-appnetwork/samples/v1-beta/javascript/appLinksListBySubscriptionSample.js +[applinksupdatesample]: https://github.com/Azure/azure-sdk-for-js/blob/main/sdk/appnetwork/arm-appnetwork/samples/v1-beta/javascript/appLinksUpdateSample.js +[availableversionslistbylocationsample]: https://github.com/Azure/azure-sdk-for-js/blob/main/sdk/appnetwork/arm-appnetwork/samples/v1-beta/javascript/availableVersionsListByLocationSample.js +[operationslistsample]: https://github.com/Azure/azure-sdk-for-js/blob/main/sdk/appnetwork/arm-appnetwork/samples/v1-beta/javascript/operationsListSample.js +[upgradehistorieslistbyapplinkmembersample]: https://github.com/Azure/azure-sdk-for-js/blob/main/sdk/appnetwork/arm-appnetwork/samples/v1-beta/javascript/upgradeHistoriesListByAppLinkMemberSample.js +[apiref]: https://learn.microsoft.com/javascript/api/@azure/arm-appnetwork?view=azure-node-preview +[freesub]: https://azure.microsoft.com/free/ +[package]: https://github.com/Azure/azure-sdk-for-js/tree/main/sdk/appnetwork/arm-appnetwork/README.md diff --git a/sdk/appnetwork/arm-appnetwork/samples/v1-beta/javascript/appLinkMembersCreateOrUpdateSample.js b/sdk/appnetwork/arm-appnetwork/samples/v1-beta/javascript/appLinkMembersCreateOrUpdateSample.js new file mode 100644 index 000000000000..6117f6626708 --- /dev/null +++ b/sdk/appnetwork/arm-appnetwork/samples/v1-beta/javascript/appLinkMembersCreateOrUpdateSample.js @@ -0,0 +1,51 @@ +// Copyright (c) Microsoft Corporation. +// Licensed under the MIT License. + +const { AppLinkClient } = require("@azure/arm-appnetwork"); +const { DefaultAzureCredential } = require("@azure/identity"); + +/** + * This sample demonstrates how to create an AppLinkMember. + * + * @summary create an AppLinkMember. + * x-ms-original-file: 2025-08-01-preview/AppLinkMembers_CreateOrUpdate.json + */ +async function appLinkMembersCreateOrUpdate() { + const credential = new DefaultAzureCredential(); + const subscriptionId = "11809CA1-E126-4017-945E-AA795CD5C5A9"; + const client = new AppLinkClient(credential, subscriptionId); + const result = await client.appLinkMembers.createOrUpdate( + "test_rg", + "applink-test-01", + "member-01", + { + properties: { + clusterType: "AKS", + metadata: { + resourceId: + "/subscriptions/bc7e0da9-5e4c-4a91-9252-9658837006cf/resourcegroups/applink-rg/providers/Microsoft.ContainerService/managedClusters/applink-member1", + }, + upgradeProfile: { + mode: "FullyManaged", + fullyManagedUpgradeProfile: { releaseChannel: "Stable" }, + }, + connectivityProfile: { + privateConnect: { + subnetResourceId: + "/subscriptions/bc7e0da9-5e4c-4a91-9252-9658837006cf/resourceGroups/applink-vnet-rg/providers/Microsoft.Network/virtualNetworks/vnet1/subnets/subnet1", + }, + eastWestGateway: { visibility: "Internal" }, + }, + }, + tags: { key2913: "test_tag" }, + location: "westus2", + }, + ); + console.log(result); +} + +async function main() { + await appLinkMembersCreateOrUpdate(); +} + +main().catch(console.error); diff --git a/sdk/appnetwork/arm-appnetwork/samples/v1-beta/javascript/appLinkMembersDeleteSample.js b/sdk/appnetwork/arm-appnetwork/samples/v1-beta/javascript/appLinkMembersDeleteSample.js new file mode 100644 index 000000000000..a0876ee54a9e --- /dev/null +++ b/sdk/appnetwork/arm-appnetwork/samples/v1-beta/javascript/appLinkMembersDeleteSample.js @@ -0,0 +1,24 @@ +// Copyright (c) Microsoft Corporation. +// Licensed under the MIT License. + +const { AppLinkClient } = require("@azure/arm-appnetwork"); +const { DefaultAzureCredential } = require("@azure/identity"); + +/** + * This sample demonstrates how to delete an AppLinkMember. + * + * @summary delete an AppLinkMember. + * x-ms-original-file: 2025-08-01-preview/AppLinkMembers_Delete.json + */ +async function appLinkMembersDelete() { + const credential = new DefaultAzureCredential(); + const subscriptionId = "11809CA1-E126-4017-945E-AA795CD5C5A9"; + const client = new AppLinkClient(credential, subscriptionId); + await client.appLinkMembers.delete("test_rg", "applink-test-01", "member-01"); +} + +async function main() { + await appLinkMembersDelete(); +} + +main().catch(console.error); diff --git a/sdk/appnetwork/arm-appnetwork/samples/v1-beta/javascript/appLinkMembersGetSample.js b/sdk/appnetwork/arm-appnetwork/samples/v1-beta/javascript/appLinkMembersGetSample.js new file mode 100644 index 000000000000..3f3eb20f0762 --- /dev/null +++ b/sdk/appnetwork/arm-appnetwork/samples/v1-beta/javascript/appLinkMembersGetSample.js @@ -0,0 +1,25 @@ +// Copyright (c) Microsoft Corporation. +// Licensed under the MIT License. + +const { AppLinkClient } = require("@azure/arm-appnetwork"); +const { DefaultAzureCredential } = require("@azure/identity"); + +/** + * This sample demonstrates how to get an AppLinkMember. + * + * @summary get an AppLinkMember. + * x-ms-original-file: 2025-08-01-preview/AppLinkMembers_Get.json + */ +async function appLinkMembersGet() { + const credential = new DefaultAzureCredential(); + const subscriptionId = "11809CA1-E126-4017-945E-AA795CD5C5A9"; + const client = new AppLinkClient(credential, subscriptionId); + const result = await client.appLinkMembers.get("test_rg", "applink-test-01", "member-01"); + console.log(result); +} + +async function main() { + await appLinkMembersGet(); +} + +main().catch(console.error); diff --git a/sdk/appnetwork/arm-appnetwork/samples/v1-beta/javascript/appLinkMembersListByAppLinkSample.js b/sdk/appnetwork/arm-appnetwork/samples/v1-beta/javascript/appLinkMembersListByAppLinkSample.js new file mode 100644 index 000000000000..cd747a9ed372 --- /dev/null +++ b/sdk/appnetwork/arm-appnetwork/samples/v1-beta/javascript/appLinkMembersListByAppLinkSample.js @@ -0,0 +1,29 @@ +// Copyright (c) Microsoft Corporation. +// Licensed under the MIT License. + +const { AppLinkClient } = require("@azure/arm-appnetwork"); +const { DefaultAzureCredential } = require("@azure/identity"); + +/** + * This sample demonstrates how to list AppLinkMember resources by AppLink. + * + * @summary list AppLinkMember resources by AppLink. + * x-ms-original-file: 2025-08-01-preview/AppLinkMembers_ListByAppLink.json + */ +async function appLinkMembersListByAppLink() { + const credential = new DefaultAzureCredential(); + const subscriptionId = "11809CA1-E126-4017-945E-AA795CD5C5A9"; + const client = new AppLinkClient(credential, subscriptionId); + const resArray = new Array(); + for await (const item of client.appLinkMembers.listByAppLink("test_rg", "applink-test-01")) { + resArray.push(item); + } + + console.log(resArray); +} + +async function main() { + await appLinkMembersListByAppLink(); +} + +main().catch(console.error); diff --git a/sdk/appnetwork/arm-appnetwork/samples/v1-beta/javascript/appLinkMembersUpdateSample.js b/sdk/appnetwork/arm-appnetwork/samples/v1-beta/javascript/appLinkMembersUpdateSample.js new file mode 100644 index 000000000000..a0dc6dbd687e --- /dev/null +++ b/sdk/appnetwork/arm-appnetwork/samples/v1-beta/javascript/appLinkMembersUpdateSample.js @@ -0,0 +1,31 @@ +// Copyright (c) Microsoft Corporation. +// Licensed under the MIT License. + +const { AppLinkClient } = require("@azure/arm-appnetwork"); +const { DefaultAzureCredential } = require("@azure/identity"); + +/** + * This sample demonstrates how to update an AppLinkMember. + * + * @summary update an AppLinkMember. + * x-ms-original-file: 2025-08-01-preview/AppLinkMembers_Update.json + */ +async function appLinkMembersUpdate() { + const credential = new DefaultAzureCredential(); + const subscriptionId = "11809CA1-E126-4017-945E-AA795CD5C5A9"; + const client = new AppLinkClient(credential, subscriptionId); + const result = await client.appLinkMembers.update("test_rg", "applink-test-01", "member-01", { + tags: { key7952: "updated_tag_value" }, + properties: { + upgradeProfile: { mode: "SelfManaged", selfManagedUpgradeProfile: { version: "1.26" } }, + connectivityProfile: { eastWestGateway: { visibility: "Internal" } }, + }, + }); + console.log(result); +} + +async function main() { + await appLinkMembersUpdate(); +} + +main().catch(console.error); diff --git a/sdk/appnetwork/arm-appnetwork/samples/v1-beta/javascript/appLinksCreateOrUpdateSample.js b/sdk/appnetwork/arm-appnetwork/samples/v1-beta/javascript/appLinksCreateOrUpdateSample.js new file mode 100644 index 000000000000..de963b6d639a --- /dev/null +++ b/sdk/appnetwork/arm-appnetwork/samples/v1-beta/javascript/appLinksCreateOrUpdateSample.js @@ -0,0 +1,30 @@ +// Copyright (c) Microsoft Corporation. +// Licensed under the MIT License. + +const { AppLinkClient } = require("@azure/arm-appnetwork"); +const { DefaultAzureCredential } = require("@azure/identity"); + +/** + * This sample demonstrates how to create an AppLink. + * + * @summary create an AppLink. + * x-ms-original-file: 2025-08-01-preview/AppLinks_CreateOrUpdate.json + */ +async function appLinksCreateOrUpdate() { + const credential = new DefaultAzureCredential(); + const subscriptionId = "11809CA1-E126-4017-945E-AA795CD5C5A9"; + const client = new AppLinkClient(credential, subscriptionId); + const result = await client.appLinks.createOrUpdate("test_rg", "applink-test-01", { + properties: {}, + identity: { type: "SystemAssigned" }, + tags: { key2913: "test_tag" }, + location: "westus2", + }); + console.log(result); +} + +async function main() { + await appLinksCreateOrUpdate(); +} + +main().catch(console.error); diff --git a/sdk/appnetwork/arm-appnetwork/samples/v1-beta/javascript/appLinksDeleteSample.js b/sdk/appnetwork/arm-appnetwork/samples/v1-beta/javascript/appLinksDeleteSample.js new file mode 100644 index 000000000000..11a43424f631 --- /dev/null +++ b/sdk/appnetwork/arm-appnetwork/samples/v1-beta/javascript/appLinksDeleteSample.js @@ -0,0 +1,24 @@ +// Copyright (c) Microsoft Corporation. +// Licensed under the MIT License. + +const { AppLinkClient } = require("@azure/arm-appnetwork"); +const { DefaultAzureCredential } = require("@azure/identity"); + +/** + * This sample demonstrates how to delete an AppLink. + * + * @summary delete an AppLink. + * x-ms-original-file: 2025-08-01-preview/AppLinks_Delete.json + */ +async function appLinksDelete() { + const credential = new DefaultAzureCredential(); + const subscriptionId = "11809CA1-E126-4017-945E-AA795CD5C5A9"; + const client = new AppLinkClient(credential, subscriptionId); + await client.appLinks.delete("test_rg", "applink-test-01"); +} + +async function main() { + await appLinksDelete(); +} + +main().catch(console.error); diff --git a/sdk/appnetwork/arm-appnetwork/samples/v1-beta/javascript/appLinksGetSample.js b/sdk/appnetwork/arm-appnetwork/samples/v1-beta/javascript/appLinksGetSample.js new file mode 100644 index 000000000000..cc3ce5af7bc6 --- /dev/null +++ b/sdk/appnetwork/arm-appnetwork/samples/v1-beta/javascript/appLinksGetSample.js @@ -0,0 +1,25 @@ +// Copyright (c) Microsoft Corporation. +// Licensed under the MIT License. + +const { AppLinkClient } = require("@azure/arm-appnetwork"); +const { DefaultAzureCredential } = require("@azure/identity"); + +/** + * This sample demonstrates how to get an AppLink. + * + * @summary get an AppLink. + * x-ms-original-file: 2025-08-01-preview/AppLinks_Get.json + */ +async function appLinksGet() { + const credential = new DefaultAzureCredential(); + const subscriptionId = "11809CA1-E126-4017-945E-AA795CD5C5A9"; + const client = new AppLinkClient(credential, subscriptionId); + const result = await client.appLinks.get("test_rg", "applink-test-01"); + console.log(result); +} + +async function main() { + await appLinksGet(); +} + +main().catch(console.error); diff --git a/sdk/appnetwork/arm-appnetwork/samples/v1-beta/javascript/appLinksListByResourceGroupSample.js b/sdk/appnetwork/arm-appnetwork/samples/v1-beta/javascript/appLinksListByResourceGroupSample.js new file mode 100644 index 000000000000..b6ff71eaa027 --- /dev/null +++ b/sdk/appnetwork/arm-appnetwork/samples/v1-beta/javascript/appLinksListByResourceGroupSample.js @@ -0,0 +1,29 @@ +// Copyright (c) Microsoft Corporation. +// Licensed under the MIT License. + +const { AppLinkClient } = require("@azure/arm-appnetwork"); +const { DefaultAzureCredential } = require("@azure/identity"); + +/** + * This sample demonstrates how to list AppLink resources by resource group. + * + * @summary list AppLink resources by resource group. + * x-ms-original-file: 2025-08-01-preview/AppLinks_ListByResourceGroup.json + */ +async function appLinksListByResourceGroup() { + const credential = new DefaultAzureCredential(); + const subscriptionId = "11809CA1-E126-4017-945E-AA795CD5C5A9"; + const client = new AppLinkClient(credential, subscriptionId); + const resArray = new Array(); + for await (const item of client.appLinks.listByResourceGroup("test_rg")) { + resArray.push(item); + } + + console.log(resArray); +} + +async function main() { + await appLinksListByResourceGroup(); +} + +main().catch(console.error); diff --git a/sdk/appnetwork/arm-appnetwork/samples/v1-beta/javascript/appLinksListBySubscriptionSample.js b/sdk/appnetwork/arm-appnetwork/samples/v1-beta/javascript/appLinksListBySubscriptionSample.js new file mode 100644 index 000000000000..4a707de173d4 --- /dev/null +++ b/sdk/appnetwork/arm-appnetwork/samples/v1-beta/javascript/appLinksListBySubscriptionSample.js @@ -0,0 +1,29 @@ +// Copyright (c) Microsoft Corporation. +// Licensed under the MIT License. + +const { AppLinkClient } = require("@azure/arm-appnetwork"); +const { DefaultAzureCredential } = require("@azure/identity"); + +/** + * This sample demonstrates how to list AppLink resources by subscription. + * + * @summary list AppLink resources by subscription. + * x-ms-original-file: 2025-08-01-preview/AppLinks_ListBySubscription.json + */ +async function appLinksListBySubscription() { + const credential = new DefaultAzureCredential(); + const subscriptionId = "11809CA1-E126-4017-945E-AA795CD5C5A9"; + const client = new AppLinkClient(credential, subscriptionId); + const resArray = new Array(); + for await (const item of client.appLinks.listBySubscription()) { + resArray.push(item); + } + + console.log(resArray); +} + +async function main() { + await appLinksListBySubscription(); +} + +main().catch(console.error); diff --git a/sdk/appnetwork/arm-appnetwork/samples/v1-beta/javascript/appLinksUpdateSample.js b/sdk/appnetwork/arm-appnetwork/samples/v1-beta/javascript/appLinksUpdateSample.js new file mode 100644 index 000000000000..36a16a2826d5 --- /dev/null +++ b/sdk/appnetwork/arm-appnetwork/samples/v1-beta/javascript/appLinksUpdateSample.js @@ -0,0 +1,27 @@ +// Copyright (c) Microsoft Corporation. +// Licensed under the MIT License. + +const { AppLinkClient } = require("@azure/arm-appnetwork"); +const { DefaultAzureCredential } = require("@azure/identity"); + +/** + * This sample demonstrates how to update an AppLink. + * + * @summary update an AppLink. + * x-ms-original-file: 2025-08-01-preview/AppLinks_Update.json + */ +async function appLinksUpdate() { + const credential = new DefaultAzureCredential(); + const subscriptionId = "11809CA1-E126-4017-945E-AA795CD5C5A9"; + const client = new AppLinkClient(credential, subscriptionId); + const result = await client.appLinks.update("test_rg", "applink-test-01", { + tags: { environment: "production", "cost-center": "platform" }, + }); + console.log(result); +} + +async function main() { + await appLinksUpdate(); +} + +main().catch(console.error); diff --git a/sdk/appnetwork/arm-appnetwork/samples/v1-beta/javascript/availableVersionsListByLocationSample.js b/sdk/appnetwork/arm-appnetwork/samples/v1-beta/javascript/availableVersionsListByLocationSample.js new file mode 100644 index 000000000000..faee91041e4e --- /dev/null +++ b/sdk/appnetwork/arm-appnetwork/samples/v1-beta/javascript/availableVersionsListByLocationSample.js @@ -0,0 +1,50 @@ +// Copyright (c) Microsoft Corporation. +// Licensed under the MIT License. + +const { AppLinkClient } = require("@azure/arm-appnetwork"); +const { DefaultAzureCredential } = require("@azure/identity"); + +/** + * This sample demonstrates how to list AvailableVersion resources by location. + * + * @summary list AvailableVersion resources by location. + * x-ms-original-file: 2025-08-01-preview/AvailableVersions_ListByLocation.json + */ +async function availableVersionsListByLocation() { + const credential = new DefaultAzureCredential(); + const subscriptionId = "11809CA1-E126-4017-945E-AA795CD5C5A9"; + const client = new AppLinkClient(credential, subscriptionId); + const resArray = new Array(); + for await (const item of client.availableVersions.listByLocation("westus2")) { + resArray.push(item); + } + + console.log(resArray); +} + +/** + * This sample demonstrates how to list AvailableVersion resources by location. + * + * @summary list AvailableVersion resources by location. + * x-ms-original-file: 2025-08-01-preview/AvailableVersions_ListByLocationWithFilter.json + */ +async function availableVersionsListByLocationWithFilter() { + const credential = new DefaultAzureCredential(); + const subscriptionId = "11809CA1-E126-4017-945E-AA795CD5C5A9"; + const client = new AppLinkClient(credential, subscriptionId); + const resArray = new Array(); + for await (const item of client.availableVersions.listByLocation("westus2", { + kubernetesVersion: "1.28", + })) { + resArray.push(item); + } + + console.log(resArray); +} + +async function main() { + await availableVersionsListByLocation(); + await availableVersionsListByLocationWithFilter(); +} + +main().catch(console.error); diff --git a/sdk/appnetwork/arm-appnetwork/samples/v1-beta/javascript/operationsListSample.js b/sdk/appnetwork/arm-appnetwork/samples/v1-beta/javascript/operationsListSample.js new file mode 100644 index 000000000000..51b27319c2b1 --- /dev/null +++ b/sdk/appnetwork/arm-appnetwork/samples/v1-beta/javascript/operationsListSample.js @@ -0,0 +1,29 @@ +// Copyright (c) Microsoft Corporation. +// Licensed under the MIT License. + +const { AppLinkClient } = require("@azure/arm-appnetwork"); +const { DefaultAzureCredential } = require("@azure/identity"); + +/** + * This sample demonstrates how to list the operations for the provider + * + * @summary list the operations for the provider + * x-ms-original-file: 2025-08-01-preview/Operations_List.json + */ +async function operationsList() { + const credential = new DefaultAzureCredential(); + const subscriptionId = "00000000-0000-0000-0000-000000000000"; + const client = new AppLinkClient(credential, subscriptionId); + const resArray = new Array(); + for await (const item of client.operations.list()) { + resArray.push(item); + } + + console.log(resArray); +} + +async function main() { + await operationsList(); +} + +main().catch(console.error); diff --git a/sdk/appnetwork/arm-appnetwork/samples/v1-beta/javascript/package.json b/sdk/appnetwork/arm-appnetwork/samples/v1-beta/javascript/package.json new file mode 100644 index 000000000000..29321479dfb4 --- /dev/null +++ b/sdk/appnetwork/arm-appnetwork/samples/v1-beta/javascript/package.json @@ -0,0 +1,36 @@ +{ + "name": "@azure-samples/arm-appnetwork-js-beta", + "private": true, + "version": "1.0.0", + "description": "@azure/arm-appnetwork client library samples for JavaScript (Beta)", + "engines": { + "node": ">=20.0.0" + }, + "repository": { + "type": "git", + "url": "git+https://github.com/Azure/azure-sdk-for-js.git", + "directory": "sdk/appnetwork/arm-appnetwork" + }, + "keywords": [ + "node", + "azure", + "cloud", + "typescript", + "browser", + "isomorphic" + ], + "author": "Microsoft Corporation", + "license": "MIT", + "bugs": { + "url": "https://github.com/Azure/azure-sdk-for-js/issues" + }, + "homepage": "https://github.com/Azure/azure-sdk-for-js/tree/main/sdk/appnetwork/arm-appnetwork", + "dependencies": { + "@azure/arm-appnetwork": "next", + "dotenv": "latest", + "@azure/identity": "^4.13.0" + }, + "devDependencies": { + "cross-env": "latest" + } +} diff --git a/sdk/appnetwork/arm-appnetwork/samples/v1-beta/javascript/sample.env b/sdk/appnetwork/arm-appnetwork/samples/v1-beta/javascript/sample.env new file mode 100644 index 000000000000..508439fc7d62 --- /dev/null +++ b/sdk/appnetwork/arm-appnetwork/samples/v1-beta/javascript/sample.env @@ -0,0 +1 @@ +# Feel free to add your own environment variables. \ No newline at end of file diff --git a/sdk/appnetwork/arm-appnetwork/samples/v1-beta/javascript/upgradeHistoriesListByAppLinkMemberSample.js b/sdk/appnetwork/arm-appnetwork/samples/v1-beta/javascript/upgradeHistoriesListByAppLinkMemberSample.js new file mode 100644 index 000000000000..faa45e073b2a --- /dev/null +++ b/sdk/appnetwork/arm-appnetwork/samples/v1-beta/javascript/upgradeHistoriesListByAppLinkMemberSample.js @@ -0,0 +1,33 @@ +// Copyright (c) Microsoft Corporation. +// Licensed under the MIT License. + +const { AppLinkClient } = require("@azure/arm-appnetwork"); +const { DefaultAzureCredential } = require("@azure/identity"); + +/** + * This sample demonstrates how to list UpgradeHistory resources by AppLinkMember. + * + * @summary list UpgradeHistory resources by AppLinkMember. + * x-ms-original-file: 2025-08-01-preview/UpgradeHistories_ListByAppLinkMember.json + */ +async function upgradeHistoriesListByAppLinkMember() { + const credential = new DefaultAzureCredential(); + const subscriptionId = "11809CA1-E126-4017-945E-AA795CD5C5A9"; + const client = new AppLinkClient(credential, subscriptionId); + const resArray = new Array(); + for await (const item of client.upgradeHistories.listByAppLinkMember( + "test_rg", + "applink-test-01", + "member-01", + )) { + resArray.push(item); + } + + console.log(resArray); +} + +async function main() { + await upgradeHistoriesListByAppLinkMember(); +} + +main().catch(console.error); diff --git a/sdk/appnetwork/arm-appnetwork/samples/v1-beta/typescript/README.md b/sdk/appnetwork/arm-appnetwork/samples/v1-beta/typescript/README.md new file mode 100644 index 000000000000..ab249bbde8b9 --- /dev/null +++ b/sdk/appnetwork/arm-appnetwork/samples/v1-beta/typescript/README.md @@ -0,0 +1,89 @@ +# @azure/arm-appnetwork client library samples for TypeScript (Beta) + +These sample programs show how to use the TypeScript client libraries for @azure/arm-appnetwork in some common scenarios. + +| **File Name** | **Description** | +| ----------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------- | +| [appLinkMembersCreateOrUpdateSample.ts][applinkmemberscreateorupdatesample] | create an AppLinkMember. x-ms-original-file: 2025-08-01-preview/AppLinkMembers_CreateOrUpdate.json | +| [appLinkMembersDeleteSample.ts][applinkmembersdeletesample] | delete an AppLinkMember. x-ms-original-file: 2025-08-01-preview/AppLinkMembers_Delete.json | +| [appLinkMembersGetSample.ts][applinkmembersgetsample] | get an AppLinkMember. x-ms-original-file: 2025-08-01-preview/AppLinkMembers_Get.json | +| [appLinkMembersListByAppLinkSample.ts][applinkmemberslistbyapplinksample] | list AppLinkMember resources by AppLink. x-ms-original-file: 2025-08-01-preview/AppLinkMembers_ListByAppLink.json | +| [appLinkMembersUpdateSample.ts][applinkmembersupdatesample] | update an AppLinkMember. x-ms-original-file: 2025-08-01-preview/AppLinkMembers_Update.json | +| [appLinksCreateOrUpdateSample.ts][applinkscreateorupdatesample] | create an AppLink. x-ms-original-file: 2025-08-01-preview/AppLinks_CreateOrUpdate.json | +| [appLinksDeleteSample.ts][applinksdeletesample] | delete an AppLink. x-ms-original-file: 2025-08-01-preview/AppLinks_Delete.json | +| [appLinksGetSample.ts][applinksgetsample] | get an AppLink. x-ms-original-file: 2025-08-01-preview/AppLinks_Get.json | +| [appLinksListByResourceGroupSample.ts][applinkslistbyresourcegroupsample] | list AppLink resources by resource group. x-ms-original-file: 2025-08-01-preview/AppLinks_ListByResourceGroup.json | +| [appLinksListBySubscriptionSample.ts][applinkslistbysubscriptionsample] | list AppLink resources by subscription. x-ms-original-file: 2025-08-01-preview/AppLinks_ListBySubscription.json | +| [appLinksUpdateSample.ts][applinksupdatesample] | update an AppLink. x-ms-original-file: 2025-08-01-preview/AppLinks_Update.json | +| [availableVersionsListByLocationSample.ts][availableversionslistbylocationsample] | list AvailableVersion resources by location. x-ms-original-file: 2025-08-01-preview/AvailableVersions_ListByLocation.json | +| [operationsListSample.ts][operationslistsample] | list the operations for the provider x-ms-original-file: 2025-08-01-preview/Operations_List.json | +| [upgradeHistoriesListByAppLinkMemberSample.ts][upgradehistorieslistbyapplinkmembersample] | list UpgradeHistory resources by AppLinkMember. x-ms-original-file: 2025-08-01-preview/UpgradeHistories_ListByAppLinkMember.json | + +## Prerequisites + +The sample programs are compatible with [LTS versions of Node.js](https://github.com/nodejs/release#release-schedule). + +Before running the samples in Node, they must be compiled to JavaScript using the TypeScript compiler. For more information on TypeScript, see the [TypeScript documentation][typescript]. Install the TypeScript compiler using: + +```bash +npm install -g typescript +``` + +You need [an Azure subscription][freesub] to run these sample programs. + +Samples retrieve credentials to access the service endpoint from environment variables. Alternatively, edit the source code to include the appropriate credentials. See each individual sample for details on which environment variables/credentials it requires to function. + +Adapting the samples to run in the browser may require some additional consideration. For details, please see the [package README][package]. + +## Setup + +To run the samples using the published version of the package: + +1. Install the dependencies using `npm`: + +```bash +npm install +``` + +2. Compile the samples: + +```bash +npm run build +``` + +3. Edit the file `sample.env`, adding the correct credentials to access the Azure service and run the samples. Then rename the file from `sample.env` to just `.env`. The sample programs will read this file automatically. + +4. Run whichever samples you like (note that some samples may require additional setup, see the table above): + +```bash +node dist/appLinkMembersCreateOrUpdateSample.js +``` + +Alternatively, run a single sample with the required environment variables set (setting up the `.env` file is not required if you do this), for example (cross-platform): + +```bash +node dist/appLinkMembersCreateOrUpdateSample.js +``` + +## Next Steps + +Take a look at our [API Documentation][apiref] for more information about the APIs that are available in the clients. + +[applinkmemberscreateorupdatesample]: https://github.com/Azure/azure-sdk-for-js/blob/main/sdk/appnetwork/arm-appnetwork/samples/v1-beta/typescript/src/appLinkMembersCreateOrUpdateSample.ts +[applinkmembersdeletesample]: https://github.com/Azure/azure-sdk-for-js/blob/main/sdk/appnetwork/arm-appnetwork/samples/v1-beta/typescript/src/appLinkMembersDeleteSample.ts +[applinkmembersgetsample]: https://github.com/Azure/azure-sdk-for-js/blob/main/sdk/appnetwork/arm-appnetwork/samples/v1-beta/typescript/src/appLinkMembersGetSample.ts +[applinkmemberslistbyapplinksample]: https://github.com/Azure/azure-sdk-for-js/blob/main/sdk/appnetwork/arm-appnetwork/samples/v1-beta/typescript/src/appLinkMembersListByAppLinkSample.ts +[applinkmembersupdatesample]: https://github.com/Azure/azure-sdk-for-js/blob/main/sdk/appnetwork/arm-appnetwork/samples/v1-beta/typescript/src/appLinkMembersUpdateSample.ts +[applinkscreateorupdatesample]: https://github.com/Azure/azure-sdk-for-js/blob/main/sdk/appnetwork/arm-appnetwork/samples/v1-beta/typescript/src/appLinksCreateOrUpdateSample.ts +[applinksdeletesample]: https://github.com/Azure/azure-sdk-for-js/blob/main/sdk/appnetwork/arm-appnetwork/samples/v1-beta/typescript/src/appLinksDeleteSample.ts +[applinksgetsample]: https://github.com/Azure/azure-sdk-for-js/blob/main/sdk/appnetwork/arm-appnetwork/samples/v1-beta/typescript/src/appLinksGetSample.ts +[applinkslistbyresourcegroupsample]: https://github.com/Azure/azure-sdk-for-js/blob/main/sdk/appnetwork/arm-appnetwork/samples/v1-beta/typescript/src/appLinksListByResourceGroupSample.ts +[applinkslistbysubscriptionsample]: https://github.com/Azure/azure-sdk-for-js/blob/main/sdk/appnetwork/arm-appnetwork/samples/v1-beta/typescript/src/appLinksListBySubscriptionSample.ts +[applinksupdatesample]: https://github.com/Azure/azure-sdk-for-js/blob/main/sdk/appnetwork/arm-appnetwork/samples/v1-beta/typescript/src/appLinksUpdateSample.ts +[availableversionslistbylocationsample]: https://github.com/Azure/azure-sdk-for-js/blob/main/sdk/appnetwork/arm-appnetwork/samples/v1-beta/typescript/src/availableVersionsListByLocationSample.ts +[operationslistsample]: https://github.com/Azure/azure-sdk-for-js/blob/main/sdk/appnetwork/arm-appnetwork/samples/v1-beta/typescript/src/operationsListSample.ts +[upgradehistorieslistbyapplinkmembersample]: https://github.com/Azure/azure-sdk-for-js/blob/main/sdk/appnetwork/arm-appnetwork/samples/v1-beta/typescript/src/upgradeHistoriesListByAppLinkMemberSample.ts +[apiref]: https://learn.microsoft.com/javascript/api/@azure/arm-appnetwork?view=azure-node-preview +[freesub]: https://azure.microsoft.com/free/ +[package]: https://github.com/Azure/azure-sdk-for-js/tree/main/sdk/appnetwork/arm-appnetwork/README.md +[typescript]: https://www.typescriptlang.org/docs/home.html diff --git a/sdk/appnetwork/arm-appnetwork/samples/v1-beta/typescript/package.json b/sdk/appnetwork/arm-appnetwork/samples/v1-beta/typescript/package.json new file mode 100644 index 000000000000..37b40bab7a9f --- /dev/null +++ b/sdk/appnetwork/arm-appnetwork/samples/v1-beta/typescript/package.json @@ -0,0 +1,43 @@ +{ + "name": "@azure-samples/arm-appnetwork-ts-beta", + "private": true, + "version": "1.0.0", + "description": "@azure/arm-appnetwork client library samples for TypeScript (Beta)", + "engines": { + "node": ">=20.0.0" + }, + "scripts": { + "build": "tsc", + "prebuild": "rimraf dist/" + }, + "repository": { + "type": "git", + "url": "git+https://github.com/Azure/azure-sdk-for-js.git", + "directory": "sdk/appnetwork/arm-appnetwork" + }, + "keywords": [ + "node", + "azure", + "cloud", + "typescript", + "browser", + "isomorphic" + ], + "author": "Microsoft Corporation", + "license": "MIT", + "bugs": { + "url": "https://github.com/Azure/azure-sdk-for-js/issues" + }, + "homepage": "https://github.com/Azure/azure-sdk-for-js/tree/main/sdk/appnetwork/arm-appnetwork", + "dependencies": { + "@azure/arm-appnetwork": "next", + "dotenv": "latest", + "@azure/identity": "^4.13.0" + }, + "devDependencies": { + "@types/node": "^20.0.0", + "cross-env": "latest", + "rimraf": "latest", + "typescript": "~5.9.3" + } +} diff --git a/sdk/appnetwork/arm-appnetwork/samples/v1-beta/typescript/sample.env b/sdk/appnetwork/arm-appnetwork/samples/v1-beta/typescript/sample.env new file mode 100644 index 000000000000..508439fc7d62 --- /dev/null +++ b/sdk/appnetwork/arm-appnetwork/samples/v1-beta/typescript/sample.env @@ -0,0 +1 @@ +# Feel free to add your own environment variables. \ No newline at end of file diff --git a/sdk/appnetwork/arm-appnetwork/samples/v1-beta/typescript/src/appLinkMembersCreateOrUpdateSample.ts b/sdk/appnetwork/arm-appnetwork/samples/v1-beta/typescript/src/appLinkMembersCreateOrUpdateSample.ts new file mode 100644 index 000000000000..cf896f238c30 --- /dev/null +++ b/sdk/appnetwork/arm-appnetwork/samples/v1-beta/typescript/src/appLinkMembersCreateOrUpdateSample.ts @@ -0,0 +1,51 @@ +// Copyright (c) Microsoft Corporation. +// Licensed under the MIT License. + +import { AppLinkClient } from "@azure/arm-appnetwork"; +import { DefaultAzureCredential } from "@azure/identity"; + +/** + * This sample demonstrates how to create an AppLinkMember. + * + * @summary create an AppLinkMember. + * x-ms-original-file: 2025-08-01-preview/AppLinkMembers_CreateOrUpdate.json + */ +async function appLinkMembersCreateOrUpdate(): Promise { + const credential = new DefaultAzureCredential(); + const subscriptionId = "11809CA1-E126-4017-945E-AA795CD5C5A9"; + const client = new AppLinkClient(credential, subscriptionId); + const result = await client.appLinkMembers.createOrUpdate( + "test_rg", + "applink-test-01", + "member-01", + { + properties: { + clusterType: "AKS", + metadata: { + resourceId: + "/subscriptions/bc7e0da9-5e4c-4a91-9252-9658837006cf/resourcegroups/applink-rg/providers/Microsoft.ContainerService/managedClusters/applink-member1", + }, + upgradeProfile: { + mode: "FullyManaged", + fullyManagedUpgradeProfile: { releaseChannel: "Stable" }, + }, + connectivityProfile: { + privateConnect: { + subnetResourceId: + "/subscriptions/bc7e0da9-5e4c-4a91-9252-9658837006cf/resourceGroups/applink-vnet-rg/providers/Microsoft.Network/virtualNetworks/vnet1/subnets/subnet1", + }, + eastWestGateway: { visibility: "Internal" }, + }, + }, + tags: { key2913: "test_tag" }, + location: "westus2", + }, + ); + console.log(result); +} + +async function main(): Promise { + await appLinkMembersCreateOrUpdate(); +} + +main().catch(console.error); diff --git a/sdk/appnetwork/arm-appnetwork/samples/v1-beta/typescript/src/appLinkMembersDeleteSample.ts b/sdk/appnetwork/arm-appnetwork/samples/v1-beta/typescript/src/appLinkMembersDeleteSample.ts new file mode 100644 index 000000000000..bba15e5568a2 --- /dev/null +++ b/sdk/appnetwork/arm-appnetwork/samples/v1-beta/typescript/src/appLinkMembersDeleteSample.ts @@ -0,0 +1,24 @@ +// Copyright (c) Microsoft Corporation. +// Licensed under the MIT License. + +import { AppLinkClient } from "@azure/arm-appnetwork"; +import { DefaultAzureCredential } from "@azure/identity"; + +/** + * This sample demonstrates how to delete an AppLinkMember. + * + * @summary delete an AppLinkMember. + * x-ms-original-file: 2025-08-01-preview/AppLinkMembers_Delete.json + */ +async function appLinkMembersDelete(): Promise { + const credential = new DefaultAzureCredential(); + const subscriptionId = "11809CA1-E126-4017-945E-AA795CD5C5A9"; + const client = new AppLinkClient(credential, subscriptionId); + await client.appLinkMembers.delete("test_rg", "applink-test-01", "member-01"); +} + +async function main(): Promise { + await appLinkMembersDelete(); +} + +main().catch(console.error); diff --git a/sdk/appnetwork/arm-appnetwork/samples/v1-beta/typescript/src/appLinkMembersGetSample.ts b/sdk/appnetwork/arm-appnetwork/samples/v1-beta/typescript/src/appLinkMembersGetSample.ts new file mode 100644 index 000000000000..df02e31d6d31 --- /dev/null +++ b/sdk/appnetwork/arm-appnetwork/samples/v1-beta/typescript/src/appLinkMembersGetSample.ts @@ -0,0 +1,25 @@ +// Copyright (c) Microsoft Corporation. +// Licensed under the MIT License. + +import { AppLinkClient } from "@azure/arm-appnetwork"; +import { DefaultAzureCredential } from "@azure/identity"; + +/** + * This sample demonstrates how to get an AppLinkMember. + * + * @summary get an AppLinkMember. + * x-ms-original-file: 2025-08-01-preview/AppLinkMembers_Get.json + */ +async function appLinkMembersGet(): Promise { + const credential = new DefaultAzureCredential(); + const subscriptionId = "11809CA1-E126-4017-945E-AA795CD5C5A9"; + const client = new AppLinkClient(credential, subscriptionId); + const result = await client.appLinkMembers.get("test_rg", "applink-test-01", "member-01"); + console.log(result); +} + +async function main(): Promise { + await appLinkMembersGet(); +} + +main().catch(console.error); diff --git a/sdk/appnetwork/arm-appnetwork/samples/v1-beta/typescript/src/appLinkMembersListByAppLinkSample.ts b/sdk/appnetwork/arm-appnetwork/samples/v1-beta/typescript/src/appLinkMembersListByAppLinkSample.ts new file mode 100644 index 000000000000..96d697e6c170 --- /dev/null +++ b/sdk/appnetwork/arm-appnetwork/samples/v1-beta/typescript/src/appLinkMembersListByAppLinkSample.ts @@ -0,0 +1,29 @@ +// Copyright (c) Microsoft Corporation. +// Licensed under the MIT License. + +import { AppLinkClient } from "@azure/arm-appnetwork"; +import { DefaultAzureCredential } from "@azure/identity"; + +/** + * This sample demonstrates how to list AppLinkMember resources by AppLink. + * + * @summary list AppLinkMember resources by AppLink. + * x-ms-original-file: 2025-08-01-preview/AppLinkMembers_ListByAppLink.json + */ +async function appLinkMembersListByAppLink(): Promise { + const credential = new DefaultAzureCredential(); + const subscriptionId = "11809CA1-E126-4017-945E-AA795CD5C5A9"; + const client = new AppLinkClient(credential, subscriptionId); + const resArray = new Array(); + for await (const item of client.appLinkMembers.listByAppLink("test_rg", "applink-test-01")) { + resArray.push(item); + } + + console.log(resArray); +} + +async function main(): Promise { + await appLinkMembersListByAppLink(); +} + +main().catch(console.error); diff --git a/sdk/appnetwork/arm-appnetwork/samples/v1-beta/typescript/src/appLinkMembersUpdateSample.ts b/sdk/appnetwork/arm-appnetwork/samples/v1-beta/typescript/src/appLinkMembersUpdateSample.ts new file mode 100644 index 000000000000..2e5841f1cc36 --- /dev/null +++ b/sdk/appnetwork/arm-appnetwork/samples/v1-beta/typescript/src/appLinkMembersUpdateSample.ts @@ -0,0 +1,31 @@ +// Copyright (c) Microsoft Corporation. +// Licensed under the MIT License. + +import { AppLinkClient } from "@azure/arm-appnetwork"; +import { DefaultAzureCredential } from "@azure/identity"; + +/** + * This sample demonstrates how to update an AppLinkMember. + * + * @summary update an AppLinkMember. + * x-ms-original-file: 2025-08-01-preview/AppLinkMembers_Update.json + */ +async function appLinkMembersUpdate(): Promise { + const credential = new DefaultAzureCredential(); + const subscriptionId = "11809CA1-E126-4017-945E-AA795CD5C5A9"; + const client = new AppLinkClient(credential, subscriptionId); + const result = await client.appLinkMembers.update("test_rg", "applink-test-01", "member-01", { + tags: { key7952: "updated_tag_value" }, + properties: { + upgradeProfile: { mode: "SelfManaged", selfManagedUpgradeProfile: { version: "1.26" } }, + connectivityProfile: { eastWestGateway: { visibility: "Internal" } }, + }, + }); + console.log(result); +} + +async function main(): Promise { + await appLinkMembersUpdate(); +} + +main().catch(console.error); diff --git a/sdk/appnetwork/arm-appnetwork/samples/v1-beta/typescript/src/appLinksCreateOrUpdateSample.ts b/sdk/appnetwork/arm-appnetwork/samples/v1-beta/typescript/src/appLinksCreateOrUpdateSample.ts new file mode 100644 index 000000000000..024794e57fc2 --- /dev/null +++ b/sdk/appnetwork/arm-appnetwork/samples/v1-beta/typescript/src/appLinksCreateOrUpdateSample.ts @@ -0,0 +1,30 @@ +// Copyright (c) Microsoft Corporation. +// Licensed under the MIT License. + +import { AppLinkClient } from "@azure/arm-appnetwork"; +import { DefaultAzureCredential } from "@azure/identity"; + +/** + * This sample demonstrates how to create an AppLink. + * + * @summary create an AppLink. + * x-ms-original-file: 2025-08-01-preview/AppLinks_CreateOrUpdate.json + */ +async function appLinksCreateOrUpdate(): Promise { + const credential = new DefaultAzureCredential(); + const subscriptionId = "11809CA1-E126-4017-945E-AA795CD5C5A9"; + const client = new AppLinkClient(credential, subscriptionId); + const result = await client.appLinks.createOrUpdate("test_rg", "applink-test-01", { + properties: {}, + identity: { type: "SystemAssigned" }, + tags: { key2913: "test_tag" }, + location: "westus2", + }); + console.log(result); +} + +async function main(): Promise { + await appLinksCreateOrUpdate(); +} + +main().catch(console.error); diff --git a/sdk/appnetwork/arm-appnetwork/samples/v1-beta/typescript/src/appLinksDeleteSample.ts b/sdk/appnetwork/arm-appnetwork/samples/v1-beta/typescript/src/appLinksDeleteSample.ts new file mode 100644 index 000000000000..224e7c2cf791 --- /dev/null +++ b/sdk/appnetwork/arm-appnetwork/samples/v1-beta/typescript/src/appLinksDeleteSample.ts @@ -0,0 +1,24 @@ +// Copyright (c) Microsoft Corporation. +// Licensed under the MIT License. + +import { AppLinkClient } from "@azure/arm-appnetwork"; +import { DefaultAzureCredential } from "@azure/identity"; + +/** + * This sample demonstrates how to delete an AppLink. + * + * @summary delete an AppLink. + * x-ms-original-file: 2025-08-01-preview/AppLinks_Delete.json + */ +async function appLinksDelete(): Promise { + const credential = new DefaultAzureCredential(); + const subscriptionId = "11809CA1-E126-4017-945E-AA795CD5C5A9"; + const client = new AppLinkClient(credential, subscriptionId); + await client.appLinks.delete("test_rg", "applink-test-01"); +} + +async function main(): Promise { + await appLinksDelete(); +} + +main().catch(console.error); diff --git a/sdk/appnetwork/arm-appnetwork/samples/v1-beta/typescript/src/appLinksGetSample.ts b/sdk/appnetwork/arm-appnetwork/samples/v1-beta/typescript/src/appLinksGetSample.ts new file mode 100644 index 000000000000..3e8eee2891b3 --- /dev/null +++ b/sdk/appnetwork/arm-appnetwork/samples/v1-beta/typescript/src/appLinksGetSample.ts @@ -0,0 +1,25 @@ +// Copyright (c) Microsoft Corporation. +// Licensed under the MIT License. + +import { AppLinkClient } from "@azure/arm-appnetwork"; +import { DefaultAzureCredential } from "@azure/identity"; + +/** + * This sample demonstrates how to get an AppLink. + * + * @summary get an AppLink. + * x-ms-original-file: 2025-08-01-preview/AppLinks_Get.json + */ +async function appLinksGet(): Promise { + const credential = new DefaultAzureCredential(); + const subscriptionId = "11809CA1-E126-4017-945E-AA795CD5C5A9"; + const client = new AppLinkClient(credential, subscriptionId); + const result = await client.appLinks.get("test_rg", "applink-test-01"); + console.log(result); +} + +async function main(): Promise { + await appLinksGet(); +} + +main().catch(console.error); diff --git a/sdk/appnetwork/arm-appnetwork/samples/v1-beta/typescript/src/appLinksListByResourceGroupSample.ts b/sdk/appnetwork/arm-appnetwork/samples/v1-beta/typescript/src/appLinksListByResourceGroupSample.ts new file mode 100644 index 000000000000..9e163256983b --- /dev/null +++ b/sdk/appnetwork/arm-appnetwork/samples/v1-beta/typescript/src/appLinksListByResourceGroupSample.ts @@ -0,0 +1,29 @@ +// Copyright (c) Microsoft Corporation. +// Licensed under the MIT License. + +import { AppLinkClient } from "@azure/arm-appnetwork"; +import { DefaultAzureCredential } from "@azure/identity"; + +/** + * This sample demonstrates how to list AppLink resources by resource group. + * + * @summary list AppLink resources by resource group. + * x-ms-original-file: 2025-08-01-preview/AppLinks_ListByResourceGroup.json + */ +async function appLinksListByResourceGroup(): Promise { + const credential = new DefaultAzureCredential(); + const subscriptionId = "11809CA1-E126-4017-945E-AA795CD5C5A9"; + const client = new AppLinkClient(credential, subscriptionId); + const resArray = new Array(); + for await (const item of client.appLinks.listByResourceGroup("test_rg")) { + resArray.push(item); + } + + console.log(resArray); +} + +async function main(): Promise { + await appLinksListByResourceGroup(); +} + +main().catch(console.error); diff --git a/sdk/appnetwork/arm-appnetwork/samples/v1-beta/typescript/src/appLinksListBySubscriptionSample.ts b/sdk/appnetwork/arm-appnetwork/samples/v1-beta/typescript/src/appLinksListBySubscriptionSample.ts new file mode 100644 index 000000000000..dc9bbad4dfc6 --- /dev/null +++ b/sdk/appnetwork/arm-appnetwork/samples/v1-beta/typescript/src/appLinksListBySubscriptionSample.ts @@ -0,0 +1,29 @@ +// Copyright (c) Microsoft Corporation. +// Licensed under the MIT License. + +import { AppLinkClient } from "@azure/arm-appnetwork"; +import { DefaultAzureCredential } from "@azure/identity"; + +/** + * This sample demonstrates how to list AppLink resources by subscription. + * + * @summary list AppLink resources by subscription. + * x-ms-original-file: 2025-08-01-preview/AppLinks_ListBySubscription.json + */ +async function appLinksListBySubscription(): Promise { + const credential = new DefaultAzureCredential(); + const subscriptionId = "11809CA1-E126-4017-945E-AA795CD5C5A9"; + const client = new AppLinkClient(credential, subscriptionId); + const resArray = new Array(); + for await (const item of client.appLinks.listBySubscription()) { + resArray.push(item); + } + + console.log(resArray); +} + +async function main(): Promise { + await appLinksListBySubscription(); +} + +main().catch(console.error); diff --git a/sdk/appnetwork/arm-appnetwork/samples/v1-beta/typescript/src/appLinksUpdateSample.ts b/sdk/appnetwork/arm-appnetwork/samples/v1-beta/typescript/src/appLinksUpdateSample.ts new file mode 100644 index 000000000000..5ebec00499d3 --- /dev/null +++ b/sdk/appnetwork/arm-appnetwork/samples/v1-beta/typescript/src/appLinksUpdateSample.ts @@ -0,0 +1,27 @@ +// Copyright (c) Microsoft Corporation. +// Licensed under the MIT License. + +import { AppLinkClient } from "@azure/arm-appnetwork"; +import { DefaultAzureCredential } from "@azure/identity"; + +/** + * This sample demonstrates how to update an AppLink. + * + * @summary update an AppLink. + * x-ms-original-file: 2025-08-01-preview/AppLinks_Update.json + */ +async function appLinksUpdate(): Promise { + const credential = new DefaultAzureCredential(); + const subscriptionId = "11809CA1-E126-4017-945E-AA795CD5C5A9"; + const client = new AppLinkClient(credential, subscriptionId); + const result = await client.appLinks.update("test_rg", "applink-test-01", { + tags: { environment: "production", "cost-center": "platform" }, + }); + console.log(result); +} + +async function main(): Promise { + await appLinksUpdate(); +} + +main().catch(console.error); diff --git a/sdk/appnetwork/arm-appnetwork/samples/v1-beta/typescript/src/availableVersionsListByLocationSample.ts b/sdk/appnetwork/arm-appnetwork/samples/v1-beta/typescript/src/availableVersionsListByLocationSample.ts new file mode 100644 index 000000000000..57a9c61c493c --- /dev/null +++ b/sdk/appnetwork/arm-appnetwork/samples/v1-beta/typescript/src/availableVersionsListByLocationSample.ts @@ -0,0 +1,50 @@ +// Copyright (c) Microsoft Corporation. +// Licensed under the MIT License. + +import { AppLinkClient } from "@azure/arm-appnetwork"; +import { DefaultAzureCredential } from "@azure/identity"; + +/** + * This sample demonstrates how to list AvailableVersion resources by location. + * + * @summary list AvailableVersion resources by location. + * x-ms-original-file: 2025-08-01-preview/AvailableVersions_ListByLocation.json + */ +async function availableVersionsListByLocation(): Promise { + const credential = new DefaultAzureCredential(); + const subscriptionId = "11809CA1-E126-4017-945E-AA795CD5C5A9"; + const client = new AppLinkClient(credential, subscriptionId); + const resArray = new Array(); + for await (const item of client.availableVersions.listByLocation("westus2")) { + resArray.push(item); + } + + console.log(resArray); +} + +/** + * This sample demonstrates how to list AvailableVersion resources by location. + * + * @summary list AvailableVersion resources by location. + * x-ms-original-file: 2025-08-01-preview/AvailableVersions_ListByLocationWithFilter.json + */ +async function availableVersionsListByLocationWithFilter(): Promise { + const credential = new DefaultAzureCredential(); + const subscriptionId = "11809CA1-E126-4017-945E-AA795CD5C5A9"; + const client = new AppLinkClient(credential, subscriptionId); + const resArray = new Array(); + for await (const item of client.availableVersions.listByLocation("westus2", { + kubernetesVersion: "1.28", + })) { + resArray.push(item); + } + + console.log(resArray); +} + +async function main(): Promise { + await availableVersionsListByLocation(); + await availableVersionsListByLocationWithFilter(); +} + +main().catch(console.error); diff --git a/sdk/appnetwork/arm-appnetwork/samples/v1-beta/typescript/src/operationsListSample.ts b/sdk/appnetwork/arm-appnetwork/samples/v1-beta/typescript/src/operationsListSample.ts new file mode 100644 index 000000000000..dfe1d96f3335 --- /dev/null +++ b/sdk/appnetwork/arm-appnetwork/samples/v1-beta/typescript/src/operationsListSample.ts @@ -0,0 +1,29 @@ +// Copyright (c) Microsoft Corporation. +// Licensed under the MIT License. + +import { AppLinkClient } from "@azure/arm-appnetwork"; +import { DefaultAzureCredential } from "@azure/identity"; + +/** + * This sample demonstrates how to list the operations for the provider + * + * @summary list the operations for the provider + * x-ms-original-file: 2025-08-01-preview/Operations_List.json + */ +async function operationsList(): Promise { + const credential = new DefaultAzureCredential(); + const subscriptionId = "00000000-0000-0000-0000-000000000000"; + const client = new AppLinkClient(credential, subscriptionId); + const resArray = new Array(); + for await (const item of client.operations.list()) { + resArray.push(item); + } + + console.log(resArray); +} + +async function main(): Promise { + await operationsList(); +} + +main().catch(console.error); diff --git a/sdk/appnetwork/arm-appnetwork/samples/v1-beta/typescript/src/upgradeHistoriesListByAppLinkMemberSample.ts b/sdk/appnetwork/arm-appnetwork/samples/v1-beta/typescript/src/upgradeHistoriesListByAppLinkMemberSample.ts new file mode 100644 index 000000000000..1cd9af425219 --- /dev/null +++ b/sdk/appnetwork/arm-appnetwork/samples/v1-beta/typescript/src/upgradeHistoriesListByAppLinkMemberSample.ts @@ -0,0 +1,33 @@ +// Copyright (c) Microsoft Corporation. +// Licensed under the MIT License. + +import { AppLinkClient } from "@azure/arm-appnetwork"; +import { DefaultAzureCredential } from "@azure/identity"; + +/** + * This sample demonstrates how to list UpgradeHistory resources by AppLinkMember. + * + * @summary list UpgradeHistory resources by AppLinkMember. + * x-ms-original-file: 2025-08-01-preview/UpgradeHistories_ListByAppLinkMember.json + */ +async function upgradeHistoriesListByAppLinkMember(): Promise { + const credential = new DefaultAzureCredential(); + const subscriptionId = "11809CA1-E126-4017-945E-AA795CD5C5A9"; + const client = new AppLinkClient(credential, subscriptionId); + const resArray = new Array(); + for await (const item of client.upgradeHistories.listByAppLinkMember( + "test_rg", + "applink-test-01", + "member-01", + )) { + resArray.push(item); + } + + console.log(resArray); +} + +async function main(): Promise { + await upgradeHistoriesListByAppLinkMember(); +} + +main().catch(console.error); diff --git a/sdk/appnetwork/arm-appnetwork/samples/v1-beta/typescript/tsconfig.json b/sdk/appnetwork/arm-appnetwork/samples/v1-beta/typescript/tsconfig.json new file mode 100644 index 000000000000..400db87cf648 --- /dev/null +++ b/sdk/appnetwork/arm-appnetwork/samples/v1-beta/typescript/tsconfig.json @@ -0,0 +1,20 @@ +{ + "compilerOptions": { + "target": "ES2023", + "module": "commonjs", + "lib": [], + "importHelpers": true, + "strict": true, + "noUnusedLocals": true, + "noUnusedParameters": true, + "noImplicitReturns": true, + "noFallthroughCasesInSwitch": true, + "moduleResolution": "node10", + "esModuleInterop": true, + "outDir": "./dist", + "resolveJsonModule": true + }, + "include": [ + "./src" + ] +} diff --git a/sdk/appnetwork/arm-appnetwork/src/api/appLinkContext.ts b/sdk/appnetwork/arm-appnetwork/src/api/appLinkContext.ts new file mode 100644 index 000000000000..91f16b3f6493 --- /dev/null +++ b/sdk/appnetwork/arm-appnetwork/src/api/appLinkContext.ts @@ -0,0 +1,50 @@ +// Copyright (c) Microsoft Corporation. +// Licensed under the MIT License. + +import { logger } from "../logger.js"; +import { KnownVersions } from "../models/models.js"; +import type { AzureSupportedClouds } from "../static-helpers/cloudSettingHelpers.js"; +import { getArmEndpoint } from "../static-helpers/cloudSettingHelpers.js"; +import type { Client, ClientOptions } from "@azure-rest/core-client"; +import { getClient } from "@azure-rest/core-client"; +import type { TokenCredential } from "@azure/core-auth"; + +export interface AppLinkContext extends Client { + /** The ID of the target subscription. The value must be an UUID. */ + subscriptionId: string; + /** The API version to use for this operation. */ + /** Known values of {@link KnownVersions} that the service accepts. */ + apiVersion?: string; +} + +/** Optional parameters for the client. */ +export interface AppLinkClientOptionalParams extends ClientOptions { + /** The API version to use for this operation. */ + /** Known values of {@link KnownVersions} that the service accepts. */ + apiVersion?: string; + /** Specifies the Azure cloud environment for the client. */ + cloudSetting?: AzureSupportedClouds; +} + +export function createAppLink( + credential: TokenCredential, + subscriptionId: string, + options: AppLinkClientOptionalParams = {}, +): AppLinkContext { + const endpointUrl = + options.endpoint ?? getArmEndpoint(options.cloudSetting) ?? "https://management.azure.com"; + const prefixFromOptions = options?.userAgentOptions?.userAgentPrefix; + const userAgentInfo = `azsdk-js-arm-appnetwork/1.0.0-beta.1`; + const userAgentPrefix = prefixFromOptions + ? `${prefixFromOptions} azsdk-js-api ${userAgentInfo}` + : `azsdk-js-api ${userAgentInfo}`; + const { apiVersion: _, ...updatedOptions } = { + ...options, + userAgentOptions: { userAgentPrefix }, + loggingOptions: { logger: options.loggingOptions?.logger ?? logger.info }, + credentials: { scopes: options.credentials?.scopes ?? [`${endpointUrl}/.default`] }, + }; + const clientContext = getClient(endpointUrl, credential, updatedOptions); + const apiVersion = options.apiVersion; + return { ...clientContext, apiVersion, subscriptionId } as AppLinkContext; +} diff --git a/sdk/appnetwork/arm-appnetwork/src/api/appLinkMembers/index.ts b/sdk/appnetwork/arm-appnetwork/src/api/appLinkMembers/index.ts new file mode 100644 index 000000000000..d8bf350fee9c --- /dev/null +++ b/sdk/appnetwork/arm-appnetwork/src/api/appLinkMembers/index.ts @@ -0,0 +1,11 @@ +// Copyright (c) Microsoft Corporation. +// Licensed under the MIT License. + +export { listByAppLink, $delete, update, createOrUpdate, get } from "./operations.js"; +export type { + AppLinkMembersListByAppLinkOptionalParams, + AppLinkMembersDeleteOptionalParams, + AppLinkMembersUpdateOptionalParams, + AppLinkMembersCreateOrUpdateOptionalParams, + AppLinkMembersGetOptionalParams, +} from "./options.js"; diff --git a/sdk/appnetwork/arm-appnetwork/src/api/appLinkMembers/operations.ts b/sdk/appnetwork/arm-appnetwork/src/api/appLinkMembers/operations.ts new file mode 100644 index 000000000000..6c6dcc107e40 --- /dev/null +++ b/sdk/appnetwork/arm-appnetwork/src/api/appLinkMembers/operations.ts @@ -0,0 +1,331 @@ +// Copyright (c) Microsoft Corporation. +// Licensed under the MIT License. + +import type { AppLinkContext as Client } from "../index.js"; +import type { + AppLinkMember, + AppLinkMemberUpdate, + _AppLinkMemberListResult, +} from "../../models/models.js"; +import { + errorResponseDeserializer, + appLinkMemberSerializer, + appLinkMemberDeserializer, + appLinkMemberUpdateSerializer, + _appLinkMemberListResultDeserializer, +} from "../../models/models.js"; +import type { PagedAsyncIterableIterator } from "../../static-helpers/pagingHelpers.js"; +import { buildPagedAsyncIterator } from "../../static-helpers/pagingHelpers.js"; +import { getLongRunningPoller } from "../../static-helpers/pollingHelpers.js"; +import { expandUrlTemplate } from "../../static-helpers/urlTemplate.js"; +import type { + AppLinkMembersListByAppLinkOptionalParams, + AppLinkMembersDeleteOptionalParams, + AppLinkMembersUpdateOptionalParams, + AppLinkMembersCreateOrUpdateOptionalParams, + AppLinkMembersGetOptionalParams, +} from "./options.js"; +import type { StreamableMethod, PathUncheckedResponse } from "@azure-rest/core-client"; +import { createRestError, operationOptionsToRequestParameters } from "@azure-rest/core-client"; +import type { PollerLike, OperationState } from "@azure/core-lro"; + +export function _listByAppLinkSend( + context: Client, + resourceGroupName: string, + appLinkName: string, + options: AppLinkMembersListByAppLinkOptionalParams = { requestOptions: {} }, +): StreamableMethod { + const path = expandUrlTemplate( + "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.AppLink/appLinks/{appLinkName}/appLinkMembers{?api%2Dversion}", + { + subscriptionId: context.subscriptionId, + resourceGroupName: resourceGroupName, + appLinkName: appLinkName, + "api%2Dversion": context.apiVersion ?? "2025-08-01-preview", + }, + { + allowReserved: options?.requestOptions?.skipUrlEncoding, + }, + ); + return context.path(path).get({ + ...operationOptionsToRequestParameters(options), + headers: { accept: "application/json", ...options.requestOptions?.headers }, + }); +} + +export async function _listByAppLinkDeserialize( + result: PathUncheckedResponse, +): Promise<_AppLinkMemberListResult> { + const expectedStatuses = ["200"]; + if (!expectedStatuses.includes(result.status)) { + const error = createRestError(result); + error.details = errorResponseDeserializer(result.body); + + throw error; + } + + return _appLinkMemberListResultDeserializer(result.body); +} + +/** List AppLinkMember resources by AppLink. */ +export function listByAppLink( + context: Client, + resourceGroupName: string, + appLinkName: string, + options: AppLinkMembersListByAppLinkOptionalParams = { requestOptions: {} }, +): PagedAsyncIterableIterator { + return buildPagedAsyncIterator( + context, + () => _listByAppLinkSend(context, resourceGroupName, appLinkName, options), + _listByAppLinkDeserialize, + ["200"], + { + itemName: "value", + nextLinkName: "nextLink", + apiVersion: context.apiVersion ?? "2025-08-01-preview", + }, + ); +} + +export function _$deleteSend( + context: Client, + resourceGroupName: string, + appLinkName: string, + appLinkMemberName: string, + options: AppLinkMembersDeleteOptionalParams = { requestOptions: {} }, +): StreamableMethod { + const path = expandUrlTemplate( + "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.AppLink/appLinks/{appLinkName}/appLinkMembers/{appLinkMemberName}{?api%2Dversion}", + { + subscriptionId: context.subscriptionId, + resourceGroupName: resourceGroupName, + appLinkName: appLinkName, + appLinkMemberName: appLinkMemberName, + "api%2Dversion": context.apiVersion ?? "2025-08-01-preview", + }, + { + allowReserved: options?.requestOptions?.skipUrlEncoding, + }, + ); + return context.path(path).delete({ ...operationOptionsToRequestParameters(options) }); +} + +export async function _$deleteDeserialize(result: PathUncheckedResponse): Promise { + const expectedStatuses = ["202", "204", "200"]; + if (!expectedStatuses.includes(result.status)) { + const error = createRestError(result); + error.details = errorResponseDeserializer(result.body); + + throw error; + } + + return; +} + +/** Delete an AppLinkMember. */ +/** + * @fixme delete is a reserved word that cannot be used as an operation name. + * Please add @clientName("clientName") or @clientName("", "javascript") + * to the operation to override the generated name. + */ +export function $delete( + context: Client, + resourceGroupName: string, + appLinkName: string, + appLinkMemberName: string, + options: AppLinkMembersDeleteOptionalParams = { requestOptions: {} }, +): PollerLike, void> { + return getLongRunningPoller(context, _$deleteDeserialize, ["202", "204", "200"], { + updateIntervalInMs: options?.updateIntervalInMs, + abortSignal: options?.abortSignal, + getInitialResponse: () => + _$deleteSend(context, resourceGroupName, appLinkName, appLinkMemberName, options), + resourceLocationConfig: "location", + apiVersion: context.apiVersion ?? "2025-08-01-preview", + }) as PollerLike, void>; +} + +export function _updateSend( + context: Client, + resourceGroupName: string, + appLinkName: string, + appLinkMemberName: string, + properties: AppLinkMemberUpdate, + options: AppLinkMembersUpdateOptionalParams = { requestOptions: {} }, +): StreamableMethod { + const path = expandUrlTemplate( + "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.AppLink/appLinks/{appLinkName}/appLinkMembers/{appLinkMemberName}{?api%2Dversion}", + { + subscriptionId: context.subscriptionId, + resourceGroupName: resourceGroupName, + appLinkName: appLinkName, + appLinkMemberName: appLinkMemberName, + "api%2Dversion": context.apiVersion ?? "2025-08-01-preview", + }, + { + allowReserved: options?.requestOptions?.skipUrlEncoding, + }, + ); + return context.path(path).patch({ + ...operationOptionsToRequestParameters(options), + contentType: "application/json", + headers: { accept: "application/json", ...options.requestOptions?.headers }, + body: appLinkMemberUpdateSerializer(properties), + }); +} + +export async function _updateDeserialize(result: PathUncheckedResponse): Promise { + const expectedStatuses = ["200", "202", "201"]; + if (!expectedStatuses.includes(result.status)) { + const error = createRestError(result); + error.details = errorResponseDeserializer(result.body); + + throw error; + } + + return appLinkMemberDeserializer(result.body); +} + +/** Update an AppLinkMember. */ +export function update( + context: Client, + resourceGroupName: string, + appLinkName: string, + appLinkMemberName: string, + properties: AppLinkMemberUpdate, + options: AppLinkMembersUpdateOptionalParams = { requestOptions: {} }, +): PollerLike, AppLinkMember> { + return getLongRunningPoller(context, _updateDeserialize, ["200", "202", "201"], { + updateIntervalInMs: options?.updateIntervalInMs, + abortSignal: options?.abortSignal, + getInitialResponse: () => + _updateSend(context, resourceGroupName, appLinkName, appLinkMemberName, properties, options), + resourceLocationConfig: "azure-async-operation", + apiVersion: context.apiVersion ?? "2025-08-01-preview", + }) as PollerLike, AppLinkMember>; +} + +export function _createOrUpdateSend( + context: Client, + resourceGroupName: string, + appLinkName: string, + appLinkMemberName: string, + resource: AppLinkMember, + options: AppLinkMembersCreateOrUpdateOptionalParams = { requestOptions: {} }, +): StreamableMethod { + const path = expandUrlTemplate( + "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.AppLink/appLinks/{appLinkName}/appLinkMembers/{appLinkMemberName}{?api%2Dversion}", + { + subscriptionId: context.subscriptionId, + resourceGroupName: resourceGroupName, + appLinkName: appLinkName, + appLinkMemberName: appLinkMemberName, + "api%2Dversion": context.apiVersion ?? "2025-08-01-preview", + }, + { + allowReserved: options?.requestOptions?.skipUrlEncoding, + }, + ); + return context.path(path).put({ + ...operationOptionsToRequestParameters(options), + contentType: "application/json", + headers: { accept: "application/json", ...options.requestOptions?.headers }, + body: appLinkMemberSerializer(resource), + }); +} + +export async function _createOrUpdateDeserialize( + result: PathUncheckedResponse, +): Promise { + const expectedStatuses = ["200", "201", "202"]; + if (!expectedStatuses.includes(result.status)) { + const error = createRestError(result); + error.details = errorResponseDeserializer(result.body); + + throw error; + } + + return appLinkMemberDeserializer(result.body); +} + +/** Create an AppLinkMember. */ +export function createOrUpdate( + context: Client, + resourceGroupName: string, + appLinkName: string, + appLinkMemberName: string, + resource: AppLinkMember, + options: AppLinkMembersCreateOrUpdateOptionalParams = { requestOptions: {} }, +): PollerLike, AppLinkMember> { + return getLongRunningPoller(context, _createOrUpdateDeserialize, ["200", "201", "202"], { + updateIntervalInMs: options?.updateIntervalInMs, + abortSignal: options?.abortSignal, + getInitialResponse: () => + _createOrUpdateSend( + context, + resourceGroupName, + appLinkName, + appLinkMemberName, + resource, + options, + ), + resourceLocationConfig: "azure-async-operation", + apiVersion: context.apiVersion ?? "2025-08-01-preview", + }) as PollerLike, AppLinkMember>; +} + +export function _getSend( + context: Client, + resourceGroupName: string, + appLinkName: string, + appLinkMemberName: string, + options: AppLinkMembersGetOptionalParams = { requestOptions: {} }, +): StreamableMethod { + const path = expandUrlTemplate( + "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.AppLink/appLinks/{appLinkName}/appLinkMembers/{appLinkMemberName}{?api%2Dversion}", + { + subscriptionId: context.subscriptionId, + resourceGroupName: resourceGroupName, + appLinkName: appLinkName, + appLinkMemberName: appLinkMemberName, + "api%2Dversion": context.apiVersion ?? "2025-08-01-preview", + }, + { + allowReserved: options?.requestOptions?.skipUrlEncoding, + }, + ); + return context.path(path).get({ + ...operationOptionsToRequestParameters(options), + headers: { accept: "application/json", ...options.requestOptions?.headers }, + }); +} + +export async function _getDeserialize(result: PathUncheckedResponse): Promise { + const expectedStatuses = ["200"]; + if (!expectedStatuses.includes(result.status)) { + const error = createRestError(result); + error.details = errorResponseDeserializer(result.body); + + throw error; + } + + return appLinkMemberDeserializer(result.body); +} + +/** Get an AppLinkMember. */ +export async function get( + context: Client, + resourceGroupName: string, + appLinkName: string, + appLinkMemberName: string, + options: AppLinkMembersGetOptionalParams = { requestOptions: {} }, +): Promise { + const result = await _getSend( + context, + resourceGroupName, + appLinkName, + appLinkMemberName, + options, + ); + return _getDeserialize(result); +} diff --git a/sdk/appnetwork/arm-appnetwork/src/api/appLinkMembers/options.ts b/sdk/appnetwork/arm-appnetwork/src/api/appLinkMembers/options.ts new file mode 100644 index 000000000000..c7cfdd685fdf --- /dev/null +++ b/sdk/appnetwork/arm-appnetwork/src/api/appLinkMembers/options.ts @@ -0,0 +1,28 @@ +// Copyright (c) Microsoft Corporation. +// Licensed under the MIT License. + +import type { OperationOptions } from "@azure-rest/core-client"; + +/** Optional parameters. */ +export interface AppLinkMembersListByAppLinkOptionalParams extends OperationOptions {} + +/** Optional parameters. */ +export interface AppLinkMembersDeleteOptionalParams extends OperationOptions { + /** Delay to wait until next poll, in milliseconds. */ + updateIntervalInMs?: number; +} + +/** Optional parameters. */ +export interface AppLinkMembersUpdateOptionalParams extends OperationOptions { + /** Delay to wait until next poll, in milliseconds. */ + updateIntervalInMs?: number; +} + +/** Optional parameters. */ +export interface AppLinkMembersCreateOrUpdateOptionalParams extends OperationOptions { + /** Delay to wait until next poll, in milliseconds. */ + updateIntervalInMs?: number; +} + +/** Optional parameters. */ +export interface AppLinkMembersGetOptionalParams extends OperationOptions {} diff --git a/sdk/appnetwork/arm-appnetwork/src/api/appLinks/index.ts b/sdk/appnetwork/arm-appnetwork/src/api/appLinks/index.ts new file mode 100644 index 000000000000..7ab6b228f868 --- /dev/null +++ b/sdk/appnetwork/arm-appnetwork/src/api/appLinks/index.ts @@ -0,0 +1,19 @@ +// Copyright (c) Microsoft Corporation. +// Licensed under the MIT License. + +export { + listBySubscription, + listByResourceGroup, + $delete, + update, + createOrUpdate, + get, +} from "./operations.js"; +export type { + AppLinksListBySubscriptionOptionalParams, + AppLinksListByResourceGroupOptionalParams, + AppLinksDeleteOptionalParams, + AppLinksUpdateOptionalParams, + AppLinksCreateOrUpdateOptionalParams, + AppLinksGetOptionalParams, +} from "./options.js"; diff --git a/sdk/appnetwork/arm-appnetwork/src/api/appLinks/operations.ts b/sdk/appnetwork/arm-appnetwork/src/api/appLinks/operations.ts new file mode 100644 index 000000000000..2fe8b5c7356d --- /dev/null +++ b/sdk/appnetwork/arm-appnetwork/src/api/appLinks/operations.ts @@ -0,0 +1,349 @@ +// Copyright (c) Microsoft Corporation. +// Licensed under the MIT License. + +import type { AppLinkContext as Client } from "../index.js"; +import type { AppLink, AppLinkUpdate, _AppLinkListResult } from "../../models/models.js"; +import { + errorResponseDeserializer, + appLinkSerializer, + appLinkDeserializer, + appLinkUpdateSerializer, + _appLinkListResultDeserializer, +} from "../../models/models.js"; +import type { PagedAsyncIterableIterator } from "../../static-helpers/pagingHelpers.js"; +import { buildPagedAsyncIterator } from "../../static-helpers/pagingHelpers.js"; +import { getLongRunningPoller } from "../../static-helpers/pollingHelpers.js"; +import { expandUrlTemplate } from "../../static-helpers/urlTemplate.js"; +import type { + AppLinksListBySubscriptionOptionalParams, + AppLinksListByResourceGroupOptionalParams, + AppLinksDeleteOptionalParams, + AppLinksUpdateOptionalParams, + AppLinksCreateOrUpdateOptionalParams, + AppLinksGetOptionalParams, +} from "./options.js"; +import type { StreamableMethod, PathUncheckedResponse } from "@azure-rest/core-client"; +import { createRestError, operationOptionsToRequestParameters } from "@azure-rest/core-client"; +import type { PollerLike, OperationState } from "@azure/core-lro"; + +export function _listBySubscriptionSend( + context: Client, + options: AppLinksListBySubscriptionOptionalParams = { requestOptions: {} }, +): StreamableMethod { + const path = expandUrlTemplate( + "/subscriptions/{subscriptionId}/providers/Microsoft.AppLink/appLinks{?api%2Dversion}", + { + subscriptionId: context.subscriptionId, + "api%2Dversion": context.apiVersion ?? "2025-08-01-preview", + }, + { + allowReserved: options?.requestOptions?.skipUrlEncoding, + }, + ); + return context.path(path).get({ + ...operationOptionsToRequestParameters(options), + headers: { accept: "application/json", ...options.requestOptions?.headers }, + }); +} + +export async function _listBySubscriptionDeserialize( + result: PathUncheckedResponse, +): Promise<_AppLinkListResult> { + const expectedStatuses = ["200"]; + if (!expectedStatuses.includes(result.status)) { + const error = createRestError(result); + error.details = errorResponseDeserializer(result.body); + + throw error; + } + + return _appLinkListResultDeserializer(result.body); +} + +/** List AppLink resources by subscription. */ +export function listBySubscription( + context: Client, + options: AppLinksListBySubscriptionOptionalParams = { requestOptions: {} }, +): PagedAsyncIterableIterator { + return buildPagedAsyncIterator( + context, + () => _listBySubscriptionSend(context, options), + _listBySubscriptionDeserialize, + ["200"], + { + itemName: "value", + nextLinkName: "nextLink", + apiVersion: context.apiVersion ?? "2025-08-01-preview", + }, + ); +} + +export function _listByResourceGroupSend( + context: Client, + resourceGroupName: string, + options: AppLinksListByResourceGroupOptionalParams = { requestOptions: {} }, +): StreamableMethod { + const path = expandUrlTemplate( + "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.AppLink/appLinks{?api%2Dversion}", + { + subscriptionId: context.subscriptionId, + resourceGroupName: resourceGroupName, + "api%2Dversion": context.apiVersion ?? "2025-08-01-preview", + }, + { + allowReserved: options?.requestOptions?.skipUrlEncoding, + }, + ); + return context.path(path).get({ + ...operationOptionsToRequestParameters(options), + headers: { accept: "application/json", ...options.requestOptions?.headers }, + }); +} + +export async function _listByResourceGroupDeserialize( + result: PathUncheckedResponse, +): Promise<_AppLinkListResult> { + const expectedStatuses = ["200"]; + if (!expectedStatuses.includes(result.status)) { + const error = createRestError(result); + error.details = errorResponseDeserializer(result.body); + + throw error; + } + + return _appLinkListResultDeserializer(result.body); +} + +/** List AppLink resources by resource group. */ +export function listByResourceGroup( + context: Client, + resourceGroupName: string, + options: AppLinksListByResourceGroupOptionalParams = { requestOptions: {} }, +): PagedAsyncIterableIterator { + return buildPagedAsyncIterator( + context, + () => _listByResourceGroupSend(context, resourceGroupName, options), + _listByResourceGroupDeserialize, + ["200"], + { + itemName: "value", + nextLinkName: "nextLink", + apiVersion: context.apiVersion ?? "2025-08-01-preview", + }, + ); +} + +export function _$deleteSend( + context: Client, + resourceGroupName: string, + appLinkName: string, + options: AppLinksDeleteOptionalParams = { requestOptions: {} }, +): StreamableMethod { + const path = expandUrlTemplate( + "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.AppLink/appLinks/{appLinkName}{?api%2Dversion}", + { + subscriptionId: context.subscriptionId, + resourceGroupName: resourceGroupName, + appLinkName: appLinkName, + "api%2Dversion": context.apiVersion ?? "2025-08-01-preview", + }, + { + allowReserved: options?.requestOptions?.skipUrlEncoding, + }, + ); + return context.path(path).delete({ ...operationOptionsToRequestParameters(options) }); +} + +export async function _$deleteDeserialize(result: PathUncheckedResponse): Promise { + const expectedStatuses = ["202", "204", "200"]; + if (!expectedStatuses.includes(result.status)) { + const error = createRestError(result); + error.details = errorResponseDeserializer(result.body); + + throw error; + } + + return; +} + +/** Delete an AppLink. */ +/** + * @fixme delete is a reserved word that cannot be used as an operation name. + * Please add @clientName("clientName") or @clientName("", "javascript") + * to the operation to override the generated name. + */ +export function $delete( + context: Client, + resourceGroupName: string, + appLinkName: string, + options: AppLinksDeleteOptionalParams = { requestOptions: {} }, +): PollerLike, void> { + return getLongRunningPoller(context, _$deleteDeserialize, ["202", "204", "200"], { + updateIntervalInMs: options?.updateIntervalInMs, + abortSignal: options?.abortSignal, + getInitialResponse: () => _$deleteSend(context, resourceGroupName, appLinkName, options), + resourceLocationConfig: "location", + apiVersion: context.apiVersion ?? "2025-08-01-preview", + }) as PollerLike, void>; +} + +export function _updateSend( + context: Client, + resourceGroupName: string, + appLinkName: string, + properties: AppLinkUpdate, + options: AppLinksUpdateOptionalParams = { requestOptions: {} }, +): StreamableMethod { + const path = expandUrlTemplate( + "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.AppLink/appLinks/{appLinkName}{?api%2Dversion}", + { + subscriptionId: context.subscriptionId, + resourceGroupName: resourceGroupName, + appLinkName: appLinkName, + "api%2Dversion": context.apiVersion ?? "2025-08-01-preview", + }, + { + allowReserved: options?.requestOptions?.skipUrlEncoding, + }, + ); + return context.path(path).patch({ + ...operationOptionsToRequestParameters(options), + contentType: "application/json", + headers: { accept: "application/json", ...options.requestOptions?.headers }, + body: appLinkUpdateSerializer(properties), + }); +} + +export async function _updateDeserialize(result: PathUncheckedResponse): Promise { + const expectedStatuses = ["200", "202", "201"]; + if (!expectedStatuses.includes(result.status)) { + const error = createRestError(result); + error.details = errorResponseDeserializer(result.body); + + throw error; + } + + return appLinkDeserializer(result.body); +} + +/** Update an AppLink. */ +export function update( + context: Client, + resourceGroupName: string, + appLinkName: string, + properties: AppLinkUpdate, + options: AppLinksUpdateOptionalParams = { requestOptions: {} }, +): PollerLike, AppLink> { + return getLongRunningPoller(context, _updateDeserialize, ["200", "202", "201"], { + updateIntervalInMs: options?.updateIntervalInMs, + abortSignal: options?.abortSignal, + getInitialResponse: () => + _updateSend(context, resourceGroupName, appLinkName, properties, options), + resourceLocationConfig: "azure-async-operation", + apiVersion: context.apiVersion ?? "2025-08-01-preview", + }) as PollerLike, AppLink>; +} + +export function _createOrUpdateSend( + context: Client, + resourceGroupName: string, + appLinkName: string, + resource: AppLink, + options: AppLinksCreateOrUpdateOptionalParams = { requestOptions: {} }, +): StreamableMethod { + const path = expandUrlTemplate( + "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.AppLink/appLinks/{appLinkName}{?api%2Dversion}", + { + subscriptionId: context.subscriptionId, + resourceGroupName: resourceGroupName, + appLinkName: appLinkName, + "api%2Dversion": context.apiVersion ?? "2025-08-01-preview", + }, + { + allowReserved: options?.requestOptions?.skipUrlEncoding, + }, + ); + return context.path(path).put({ + ...operationOptionsToRequestParameters(options), + contentType: "application/json", + headers: { accept: "application/json", ...options.requestOptions?.headers }, + body: appLinkSerializer(resource), + }); +} + +export async function _createOrUpdateDeserialize(result: PathUncheckedResponse): Promise { + const expectedStatuses = ["200", "201", "202"]; + if (!expectedStatuses.includes(result.status)) { + const error = createRestError(result); + error.details = errorResponseDeserializer(result.body); + + throw error; + } + + return appLinkDeserializer(result.body); +} + +/** Create an AppLink. */ +export function createOrUpdate( + context: Client, + resourceGroupName: string, + appLinkName: string, + resource: AppLink, + options: AppLinksCreateOrUpdateOptionalParams = { requestOptions: {} }, +): PollerLike, AppLink> { + return getLongRunningPoller(context, _createOrUpdateDeserialize, ["200", "201", "202"], { + updateIntervalInMs: options?.updateIntervalInMs, + abortSignal: options?.abortSignal, + getInitialResponse: () => + _createOrUpdateSend(context, resourceGroupName, appLinkName, resource, options), + resourceLocationConfig: "azure-async-operation", + apiVersion: context.apiVersion ?? "2025-08-01-preview", + }) as PollerLike, AppLink>; +} + +export function _getSend( + context: Client, + resourceGroupName: string, + appLinkName: string, + options: AppLinksGetOptionalParams = { requestOptions: {} }, +): StreamableMethod { + const path = expandUrlTemplate( + "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.AppLink/appLinks/{appLinkName}{?api%2Dversion}", + { + subscriptionId: context.subscriptionId, + resourceGroupName: resourceGroupName, + appLinkName: appLinkName, + "api%2Dversion": context.apiVersion ?? "2025-08-01-preview", + }, + { + allowReserved: options?.requestOptions?.skipUrlEncoding, + }, + ); + return context.path(path).get({ + ...operationOptionsToRequestParameters(options), + headers: { accept: "application/json", ...options.requestOptions?.headers }, + }); +} + +export async function _getDeserialize(result: PathUncheckedResponse): Promise { + const expectedStatuses = ["200"]; + if (!expectedStatuses.includes(result.status)) { + const error = createRestError(result); + error.details = errorResponseDeserializer(result.body); + + throw error; + } + + return appLinkDeserializer(result.body); +} + +/** Get an AppLink. */ +export async function get( + context: Client, + resourceGroupName: string, + appLinkName: string, + options: AppLinksGetOptionalParams = { requestOptions: {} }, +): Promise { + const result = await _getSend(context, resourceGroupName, appLinkName, options); + return _getDeserialize(result); +} diff --git a/sdk/appnetwork/arm-appnetwork/src/api/appLinks/options.ts b/sdk/appnetwork/arm-appnetwork/src/api/appLinks/options.ts new file mode 100644 index 000000000000..5a3989ce0aaf --- /dev/null +++ b/sdk/appnetwork/arm-appnetwork/src/api/appLinks/options.ts @@ -0,0 +1,31 @@ +// Copyright (c) Microsoft Corporation. +// Licensed under the MIT License. + +import type { OperationOptions } from "@azure-rest/core-client"; + +/** Optional parameters. */ +export interface AppLinksListBySubscriptionOptionalParams extends OperationOptions {} + +/** Optional parameters. */ +export interface AppLinksListByResourceGroupOptionalParams extends OperationOptions {} + +/** Optional parameters. */ +export interface AppLinksDeleteOptionalParams extends OperationOptions { + /** Delay to wait until next poll, in milliseconds. */ + updateIntervalInMs?: number; +} + +/** Optional parameters. */ +export interface AppLinksUpdateOptionalParams extends OperationOptions { + /** Delay to wait until next poll, in milliseconds. */ + updateIntervalInMs?: number; +} + +/** Optional parameters. */ +export interface AppLinksCreateOrUpdateOptionalParams extends OperationOptions { + /** Delay to wait until next poll, in milliseconds. */ + updateIntervalInMs?: number; +} + +/** Optional parameters. */ +export interface AppLinksGetOptionalParams extends OperationOptions {} diff --git a/sdk/appnetwork/arm-appnetwork/src/api/availableVersions/index.ts b/sdk/appnetwork/arm-appnetwork/src/api/availableVersions/index.ts new file mode 100644 index 000000000000..d8f342abdab6 --- /dev/null +++ b/sdk/appnetwork/arm-appnetwork/src/api/availableVersions/index.ts @@ -0,0 +1,5 @@ +// Copyright (c) Microsoft Corporation. +// Licensed under the MIT License. + +export { listByLocation } from "./operations.js"; +export type { AvailableVersionsListByLocationOptionalParams } from "./options.js"; diff --git a/sdk/appnetwork/arm-appnetwork/src/api/availableVersions/operations.ts b/sdk/appnetwork/arm-appnetwork/src/api/availableVersions/operations.ts new file mode 100644 index 000000000000..b00b1801d6bb --- /dev/null +++ b/sdk/appnetwork/arm-appnetwork/src/api/availableVersions/operations.ts @@ -0,0 +1,71 @@ +// Copyright (c) Microsoft Corporation. +// Licensed under the MIT License. + +import type { AppLinkContext as Client } from "../index.js"; +import type { _AvailableVersionListResult, AvailableVersion } from "../../models/models.js"; +import { + errorResponseDeserializer, + _availableVersionListResultDeserializer, +} from "../../models/models.js"; +import type { PagedAsyncIterableIterator } from "../../static-helpers/pagingHelpers.js"; +import { buildPagedAsyncIterator } from "../../static-helpers/pagingHelpers.js"; +import { expandUrlTemplate } from "../../static-helpers/urlTemplate.js"; +import type { AvailableVersionsListByLocationOptionalParams } from "./options.js"; +import type { StreamableMethod, PathUncheckedResponse } from "@azure-rest/core-client"; +import { createRestError, operationOptionsToRequestParameters } from "@azure-rest/core-client"; + +export function _listByLocationSend( + context: Client, + location: string, + options: AvailableVersionsListByLocationOptionalParams = { requestOptions: {} }, +): StreamableMethod { + const path = expandUrlTemplate( + "/subscriptions/{subscriptionId}/providers/Microsoft.AppLink/locations/{location}/availableVersions{?api%2Dversion,kubernetesVersion}", + { + subscriptionId: context.subscriptionId, + location: location, + "api%2Dversion": context.apiVersion ?? "2025-08-01-preview", + kubernetesVersion: options?.kubernetesVersion, + }, + { + allowReserved: options?.requestOptions?.skipUrlEncoding, + }, + ); + return context.path(path).get({ + ...operationOptionsToRequestParameters(options), + headers: { accept: "application/json", ...options.requestOptions?.headers }, + }); +} + +export async function _listByLocationDeserialize( + result: PathUncheckedResponse, +): Promise<_AvailableVersionListResult> { + const expectedStatuses = ["200"]; + if (!expectedStatuses.includes(result.status)) { + const error = createRestError(result); + error.details = errorResponseDeserializer(result.body); + + throw error; + } + + return _availableVersionListResultDeserializer(result.body); +} + +/** List AvailableVersion resources by location. */ +export function listByLocation( + context: Client, + location: string, + options: AvailableVersionsListByLocationOptionalParams = { requestOptions: {} }, +): PagedAsyncIterableIterator { + return buildPagedAsyncIterator( + context, + () => _listByLocationSend(context, location, options), + _listByLocationDeserialize, + ["200"], + { + itemName: "value", + nextLinkName: "nextLink", + apiVersion: context.apiVersion ?? "2025-08-01-preview", + }, + ); +} diff --git a/sdk/appnetwork/arm-appnetwork/src/api/availableVersions/options.ts b/sdk/appnetwork/arm-appnetwork/src/api/availableVersions/options.ts new file mode 100644 index 000000000000..cbf628ce8457 --- /dev/null +++ b/sdk/appnetwork/arm-appnetwork/src/api/availableVersions/options.ts @@ -0,0 +1,10 @@ +// Copyright (c) Microsoft Corporation. +// Licensed under the MIT License. + +import type { OperationOptions } from "@azure-rest/core-client"; + +/** Optional parameters. */ +export interface AvailableVersionsListByLocationOptionalParams extends OperationOptions { + /** Kubernetes version to filter profiles */ + kubernetesVersion?: string; +} diff --git a/sdk/appnetwork/arm-appnetwork/src/api/index.ts b/sdk/appnetwork/arm-appnetwork/src/api/index.ts new file mode 100644 index 000000000000..1df2d27c1d71 --- /dev/null +++ b/sdk/appnetwork/arm-appnetwork/src/api/index.ts @@ -0,0 +1,5 @@ +// Copyright (c) Microsoft Corporation. +// Licensed under the MIT License. + +export type { AppLinkContext, AppLinkClientOptionalParams } from "./appLinkContext.js"; +export { createAppLink } from "./appLinkContext.js"; diff --git a/sdk/appnetwork/arm-appnetwork/src/api/operations/index.ts b/sdk/appnetwork/arm-appnetwork/src/api/operations/index.ts new file mode 100644 index 000000000000..de883c05d2f1 --- /dev/null +++ b/sdk/appnetwork/arm-appnetwork/src/api/operations/index.ts @@ -0,0 +1,5 @@ +// Copyright (c) Microsoft Corporation. +// Licensed under the MIT License. + +export { list } from "./operations.js"; +export type { OperationsListOptionalParams } from "./options.js"; diff --git a/sdk/appnetwork/arm-appnetwork/src/api/operations/operations.ts b/sdk/appnetwork/arm-appnetwork/src/api/operations/operations.ts new file mode 100644 index 000000000000..192647294811 --- /dev/null +++ b/sdk/appnetwork/arm-appnetwork/src/api/operations/operations.ts @@ -0,0 +1,66 @@ +// Copyright (c) Microsoft Corporation. +// Licensed under the MIT License. + +import type { AppLinkContext as Client } from "../index.js"; +import type { _OperationListResult, Operation } from "../../models/models.js"; +import { + _operationListResultDeserializer, + errorResponseDeserializer, +} from "../../models/models.js"; +import type { PagedAsyncIterableIterator } from "../../static-helpers/pagingHelpers.js"; +import { buildPagedAsyncIterator } from "../../static-helpers/pagingHelpers.js"; +import { expandUrlTemplate } from "../../static-helpers/urlTemplate.js"; +import type { OperationsListOptionalParams } from "./options.js"; +import type { StreamableMethod, PathUncheckedResponse } from "@azure-rest/core-client"; +import { createRestError, operationOptionsToRequestParameters } from "@azure-rest/core-client"; + +export function _listSend( + context: Client, + options: OperationsListOptionalParams = { requestOptions: {} }, +): StreamableMethod { + const path = expandUrlTemplate( + "/providers/Microsoft.AppLink/operations{?api%2Dversion}", + { + "api%2Dversion": context.apiVersion ?? "2025-08-01-preview", + }, + { + allowReserved: options?.requestOptions?.skipUrlEncoding, + }, + ); + return context.path(path).get({ + ...operationOptionsToRequestParameters(options), + headers: { accept: "application/json", ...options.requestOptions?.headers }, + }); +} + +export async function _listDeserialize( + result: PathUncheckedResponse, +): Promise<_OperationListResult> { + const expectedStatuses = ["200"]; + if (!expectedStatuses.includes(result.status)) { + const error = createRestError(result); + error.details = errorResponseDeserializer(result.body); + + throw error; + } + + return _operationListResultDeserializer(result.body); +} + +/** List the operations for the provider */ +export function list( + context: Client, + options: OperationsListOptionalParams = { requestOptions: {} }, +): PagedAsyncIterableIterator { + return buildPagedAsyncIterator( + context, + () => _listSend(context, options), + _listDeserialize, + ["200"], + { + itemName: "value", + nextLinkName: "nextLink", + apiVersion: context.apiVersion ?? "2025-08-01-preview", + }, + ); +} diff --git a/sdk/appnetwork/arm-appnetwork/src/api/operations/options.ts b/sdk/appnetwork/arm-appnetwork/src/api/operations/options.ts new file mode 100644 index 000000000000..b9a3fd9758a3 --- /dev/null +++ b/sdk/appnetwork/arm-appnetwork/src/api/operations/options.ts @@ -0,0 +1,7 @@ +// Copyright (c) Microsoft Corporation. +// Licensed under the MIT License. + +import type { OperationOptions } from "@azure-rest/core-client"; + +/** Optional parameters. */ +export interface OperationsListOptionalParams extends OperationOptions {} diff --git a/sdk/appnetwork/arm-appnetwork/src/api/upgradeHistories/index.ts b/sdk/appnetwork/arm-appnetwork/src/api/upgradeHistories/index.ts new file mode 100644 index 000000000000..c9dee6b8c40d --- /dev/null +++ b/sdk/appnetwork/arm-appnetwork/src/api/upgradeHistories/index.ts @@ -0,0 +1,5 @@ +// Copyright (c) Microsoft Corporation. +// Licensed under the MIT License. + +export { listByAppLinkMember } from "./operations.js"; +export type { UpgradeHistoriesListByAppLinkMemberOptionalParams } from "./options.js"; diff --git a/sdk/appnetwork/arm-appnetwork/src/api/upgradeHistories/operations.ts b/sdk/appnetwork/arm-appnetwork/src/api/upgradeHistories/operations.ts new file mode 100644 index 000000000000..2a00ef533eef --- /dev/null +++ b/sdk/appnetwork/arm-appnetwork/src/api/upgradeHistories/operations.ts @@ -0,0 +1,77 @@ +// Copyright (c) Microsoft Corporation. +// Licensed under the MIT License. + +import type { AppLinkContext as Client } from "../index.js"; +import type { _UpgradeHistoryListResult, UpgradeHistory } from "../../models/models.js"; +import { + errorResponseDeserializer, + _upgradeHistoryListResultDeserializer, +} from "../../models/models.js"; +import type { PagedAsyncIterableIterator } from "../../static-helpers/pagingHelpers.js"; +import { buildPagedAsyncIterator } from "../../static-helpers/pagingHelpers.js"; +import { expandUrlTemplate } from "../../static-helpers/urlTemplate.js"; +import type { UpgradeHistoriesListByAppLinkMemberOptionalParams } from "./options.js"; +import type { StreamableMethod, PathUncheckedResponse } from "@azure-rest/core-client"; +import { createRestError, operationOptionsToRequestParameters } from "@azure-rest/core-client"; + +export function _listByAppLinkMemberSend( + context: Client, + resourceGroupName: string, + appLinkName: string, + appLinkMemberName: string, + options: UpgradeHistoriesListByAppLinkMemberOptionalParams = { requestOptions: {} }, +): StreamableMethod { + const path = expandUrlTemplate( + "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.AppLink/appLinks/{appLinkName}/appLinkMembers/{appLinkMemberName}/upgradeHistories{?api%2Dversion}", + { + subscriptionId: context.subscriptionId, + resourceGroupName: resourceGroupName, + appLinkName: appLinkName, + appLinkMemberName: appLinkMemberName, + "api%2Dversion": context.apiVersion ?? "2025-08-01-preview", + }, + { + allowReserved: options?.requestOptions?.skipUrlEncoding, + }, + ); + return context.path(path).get({ + ...operationOptionsToRequestParameters(options), + headers: { accept: "application/json", ...options.requestOptions?.headers }, + }); +} + +export async function _listByAppLinkMemberDeserialize( + result: PathUncheckedResponse, +): Promise<_UpgradeHistoryListResult> { + const expectedStatuses = ["200"]; + if (!expectedStatuses.includes(result.status)) { + const error = createRestError(result); + error.details = errorResponseDeserializer(result.body); + + throw error; + } + + return _upgradeHistoryListResultDeserializer(result.body); +} + +/** List UpgradeHistory resources by AppLinkMember. */ +export function listByAppLinkMember( + context: Client, + resourceGroupName: string, + appLinkName: string, + appLinkMemberName: string, + options: UpgradeHistoriesListByAppLinkMemberOptionalParams = { requestOptions: {} }, +): PagedAsyncIterableIterator { + return buildPagedAsyncIterator( + context, + () => + _listByAppLinkMemberSend(context, resourceGroupName, appLinkName, appLinkMemberName, options), + _listByAppLinkMemberDeserialize, + ["200"], + { + itemName: "value", + nextLinkName: "nextLink", + apiVersion: context.apiVersion ?? "2025-08-01-preview", + }, + ); +} diff --git a/sdk/appnetwork/arm-appnetwork/src/api/upgradeHistories/options.ts b/sdk/appnetwork/arm-appnetwork/src/api/upgradeHistories/options.ts new file mode 100644 index 000000000000..868b1ce2a3be --- /dev/null +++ b/sdk/appnetwork/arm-appnetwork/src/api/upgradeHistories/options.ts @@ -0,0 +1,7 @@ +// Copyright (c) Microsoft Corporation. +// Licensed under the MIT License. + +import type { OperationOptions } from "@azure-rest/core-client"; + +/** Optional parameters. */ +export interface UpgradeHistoriesListByAppLinkMemberOptionalParams extends OperationOptions {} diff --git a/sdk/appnetwork/arm-appnetwork/src/appLinkClient.ts b/sdk/appnetwork/arm-appnetwork/src/appLinkClient.ts new file mode 100644 index 000000000000..00c231ec2f4e --- /dev/null +++ b/sdk/appnetwork/arm-appnetwork/src/appLinkClient.ts @@ -0,0 +1,57 @@ +// Copyright (c) Microsoft Corporation. +// Licensed under the MIT License. + +import type { AppLinkContext, AppLinkClientOptionalParams } from "./api/index.js"; +import { createAppLink } from "./api/index.js"; +import type { AppLinkMembersOperations } from "./classic/appLinkMembers/index.js"; +import { _getAppLinkMembersOperations } from "./classic/appLinkMembers/index.js"; +import type { AppLinksOperations } from "./classic/appLinks/index.js"; +import { _getAppLinksOperations } from "./classic/appLinks/index.js"; +import type { AvailableVersionsOperations } from "./classic/availableVersions/index.js"; +import { _getAvailableVersionsOperations } from "./classic/availableVersions/index.js"; +import type { OperationsOperations } from "./classic/operations/index.js"; +import { _getOperationsOperations } from "./classic/operations/index.js"; +import type { UpgradeHistoriesOperations } from "./classic/upgradeHistories/index.js"; +import { _getUpgradeHistoriesOperations } from "./classic/upgradeHistories/index.js"; +import type { TokenCredential } from "@azure/core-auth"; +import type { Pipeline } from "@azure/core-rest-pipeline"; + +export type { AppLinkClientOptionalParams } from "./api/appLinkContext.js"; + +export class AppLinkClient { + private _client: AppLinkContext; + /** The pipeline used by this client to make requests */ + public readonly pipeline: Pipeline; + + constructor( + credential: TokenCredential, + subscriptionId: string, + options: AppLinkClientOptionalParams = {}, + ) { + const prefixFromOptions = options?.userAgentOptions?.userAgentPrefix; + const userAgentPrefix = prefixFromOptions + ? `${prefixFromOptions} azsdk-js-client` + : `azsdk-js-client`; + this._client = createAppLink(credential, subscriptionId, { + ...options, + userAgentOptions: { userAgentPrefix }, + }); + this.pipeline = this._client.pipeline; + this.availableVersions = _getAvailableVersionsOperations(this._client); + this.upgradeHistories = _getUpgradeHistoriesOperations(this._client); + this.appLinkMembers = _getAppLinkMembersOperations(this._client); + this.appLinks = _getAppLinksOperations(this._client); + this.operations = _getOperationsOperations(this._client); + } + + /** The operation groups for availableVersions */ + public readonly availableVersions: AvailableVersionsOperations; + /** The operation groups for upgradeHistories */ + public readonly upgradeHistories: UpgradeHistoriesOperations; + /** The operation groups for appLinkMembers */ + public readonly appLinkMembers: AppLinkMembersOperations; + /** The operation groups for appLinks */ + public readonly appLinks: AppLinksOperations; + /** The operation groups for operations */ + public readonly operations: OperationsOperations; +} diff --git a/sdk/appnetwork/arm-appnetwork/src/classic/appLinkMembers/index.ts b/sdk/appnetwork/arm-appnetwork/src/classic/appLinkMembers/index.ts new file mode 100644 index 000000000000..a46196281a75 --- /dev/null +++ b/sdk/appnetwork/arm-appnetwork/src/classic/appLinkMembers/index.ts @@ -0,0 +1,109 @@ +// Copyright (c) Microsoft Corporation. +// Licensed under the MIT License. + +import type { AppLinkContext } from "../../api/appLinkContext.js"; +import { + listByAppLink, + $delete, + update, + createOrUpdate, + get, +} from "../../api/appLinkMembers/operations.js"; +import type { + AppLinkMembersListByAppLinkOptionalParams, + AppLinkMembersDeleteOptionalParams, + AppLinkMembersUpdateOptionalParams, + AppLinkMembersCreateOrUpdateOptionalParams, + AppLinkMembersGetOptionalParams, +} from "../../api/appLinkMembers/options.js"; +import type { AppLinkMember, AppLinkMemberUpdate } from "../../models/models.js"; +import type { PagedAsyncIterableIterator } from "../../static-helpers/pagingHelpers.js"; +import type { PollerLike, OperationState } from "@azure/core-lro"; + +/** Interface representing a AppLinkMembers operations. */ +export interface AppLinkMembersOperations { + /** List AppLinkMember resources by AppLink. */ + listByAppLink: ( + resourceGroupName: string, + appLinkName: string, + options?: AppLinkMembersListByAppLinkOptionalParams, + ) => PagedAsyncIterableIterator; + /** Delete an AppLinkMember. */ + /** + * @fixme delete is a reserved word that cannot be used as an operation name. + * Please add @clientName("clientName") or @clientName("", "javascript") + * to the operation to override the generated name. + */ + delete: ( + resourceGroupName: string, + appLinkName: string, + appLinkMemberName: string, + options?: AppLinkMembersDeleteOptionalParams, + ) => PollerLike, void>; + /** Update an AppLinkMember. */ + update: ( + resourceGroupName: string, + appLinkName: string, + appLinkMemberName: string, + properties: AppLinkMemberUpdate, + options?: AppLinkMembersUpdateOptionalParams, + ) => PollerLike, AppLinkMember>; + /** Create an AppLinkMember. */ + createOrUpdate: ( + resourceGroupName: string, + appLinkName: string, + appLinkMemberName: string, + resource: AppLinkMember, + options?: AppLinkMembersCreateOrUpdateOptionalParams, + ) => PollerLike, AppLinkMember>; + /** Get an AppLinkMember. */ + get: ( + resourceGroupName: string, + appLinkName: string, + appLinkMemberName: string, + options?: AppLinkMembersGetOptionalParams, + ) => Promise; +} + +function _getAppLinkMembers(context: AppLinkContext) { + return { + listByAppLink: ( + resourceGroupName: string, + appLinkName: string, + options?: AppLinkMembersListByAppLinkOptionalParams, + ) => listByAppLink(context, resourceGroupName, appLinkName, options), + delete: ( + resourceGroupName: string, + appLinkName: string, + appLinkMemberName: string, + options?: AppLinkMembersDeleteOptionalParams, + ) => $delete(context, resourceGroupName, appLinkName, appLinkMemberName, options), + update: ( + resourceGroupName: string, + appLinkName: string, + appLinkMemberName: string, + properties: AppLinkMemberUpdate, + options?: AppLinkMembersUpdateOptionalParams, + ) => update(context, resourceGroupName, appLinkName, appLinkMemberName, properties, options), + createOrUpdate: ( + resourceGroupName: string, + appLinkName: string, + appLinkMemberName: string, + resource: AppLinkMember, + options?: AppLinkMembersCreateOrUpdateOptionalParams, + ) => + createOrUpdate(context, resourceGroupName, appLinkName, appLinkMemberName, resource, options), + get: ( + resourceGroupName: string, + appLinkName: string, + appLinkMemberName: string, + options?: AppLinkMembersGetOptionalParams, + ) => get(context, resourceGroupName, appLinkName, appLinkMemberName, options), + }; +} + +export function _getAppLinkMembersOperations(context: AppLinkContext): AppLinkMembersOperations { + return { + ..._getAppLinkMembers(context), + }; +} diff --git a/sdk/appnetwork/arm-appnetwork/src/classic/appLinks/index.ts b/sdk/appnetwork/arm-appnetwork/src/classic/appLinks/index.ts new file mode 100644 index 000000000000..4ee93aa6bebc --- /dev/null +++ b/sdk/appnetwork/arm-appnetwork/src/classic/appLinks/index.ts @@ -0,0 +1,103 @@ +// Copyright (c) Microsoft Corporation. +// Licensed under the MIT License. + +import type { AppLinkContext } from "../../api/appLinkContext.js"; +import { + listBySubscription, + listByResourceGroup, + $delete, + update, + createOrUpdate, + get, +} from "../../api/appLinks/operations.js"; +import type { + AppLinksListBySubscriptionOptionalParams, + AppLinksListByResourceGroupOptionalParams, + AppLinksDeleteOptionalParams, + AppLinksUpdateOptionalParams, + AppLinksCreateOrUpdateOptionalParams, + AppLinksGetOptionalParams, +} from "../../api/appLinks/options.js"; +import type { AppLink, AppLinkUpdate } from "../../models/models.js"; +import type { PagedAsyncIterableIterator } from "../../static-helpers/pagingHelpers.js"; +import type { PollerLike, OperationState } from "@azure/core-lro"; + +/** Interface representing a AppLinks operations. */ +export interface AppLinksOperations { + /** List AppLink resources by subscription. */ + listBySubscription: ( + options?: AppLinksListBySubscriptionOptionalParams, + ) => PagedAsyncIterableIterator; + /** List AppLink resources by resource group. */ + listByResourceGroup: ( + resourceGroupName: string, + options?: AppLinksListByResourceGroupOptionalParams, + ) => PagedAsyncIterableIterator; + /** Delete an AppLink. */ + /** + * @fixme delete is a reserved word that cannot be used as an operation name. + * Please add @clientName("clientName") or @clientName("", "javascript") + * to the operation to override the generated name. + */ + delete: ( + resourceGroupName: string, + appLinkName: string, + options?: AppLinksDeleteOptionalParams, + ) => PollerLike, void>; + /** Update an AppLink. */ + update: ( + resourceGroupName: string, + appLinkName: string, + properties: AppLinkUpdate, + options?: AppLinksUpdateOptionalParams, + ) => PollerLike, AppLink>; + /** Create an AppLink. */ + createOrUpdate: ( + resourceGroupName: string, + appLinkName: string, + resource: AppLink, + options?: AppLinksCreateOrUpdateOptionalParams, + ) => PollerLike, AppLink>; + /** Get an AppLink. */ + get: ( + resourceGroupName: string, + appLinkName: string, + options?: AppLinksGetOptionalParams, + ) => Promise; +} + +function _getAppLinks(context: AppLinkContext) { + return { + listBySubscription: (options?: AppLinksListBySubscriptionOptionalParams) => + listBySubscription(context, options), + listByResourceGroup: ( + resourceGroupName: string, + options?: AppLinksListByResourceGroupOptionalParams, + ) => listByResourceGroup(context, resourceGroupName, options), + delete: ( + resourceGroupName: string, + appLinkName: string, + options?: AppLinksDeleteOptionalParams, + ) => $delete(context, resourceGroupName, appLinkName, options), + update: ( + resourceGroupName: string, + appLinkName: string, + properties: AppLinkUpdate, + options?: AppLinksUpdateOptionalParams, + ) => update(context, resourceGroupName, appLinkName, properties, options), + createOrUpdate: ( + resourceGroupName: string, + appLinkName: string, + resource: AppLink, + options?: AppLinksCreateOrUpdateOptionalParams, + ) => createOrUpdate(context, resourceGroupName, appLinkName, resource, options), + get: (resourceGroupName: string, appLinkName: string, options?: AppLinksGetOptionalParams) => + get(context, resourceGroupName, appLinkName, options), + }; +} + +export function _getAppLinksOperations(context: AppLinkContext): AppLinksOperations { + return { + ..._getAppLinks(context), + }; +} diff --git a/sdk/appnetwork/arm-appnetwork/src/classic/availableVersions/index.ts b/sdk/appnetwork/arm-appnetwork/src/classic/availableVersions/index.ts new file mode 100644 index 000000000000..29110f8e3e54 --- /dev/null +++ b/sdk/appnetwork/arm-appnetwork/src/classic/availableVersions/index.ts @@ -0,0 +1,32 @@ +// Copyright (c) Microsoft Corporation. +// Licensed under the MIT License. + +import type { AppLinkContext } from "../../api/appLinkContext.js"; +import { listByLocation } from "../../api/availableVersions/operations.js"; +import type { AvailableVersionsListByLocationOptionalParams } from "../../api/availableVersions/options.js"; +import type { AvailableVersion } from "../../models/models.js"; +import type { PagedAsyncIterableIterator } from "../../static-helpers/pagingHelpers.js"; + +/** Interface representing a AvailableVersions operations. */ +export interface AvailableVersionsOperations { + /** List AvailableVersion resources by location. */ + listByLocation: ( + location: string, + options?: AvailableVersionsListByLocationOptionalParams, + ) => PagedAsyncIterableIterator; +} + +function _getAvailableVersions(context: AppLinkContext) { + return { + listByLocation: (location: string, options?: AvailableVersionsListByLocationOptionalParams) => + listByLocation(context, location, options), + }; +} + +export function _getAvailableVersionsOperations( + context: AppLinkContext, +): AvailableVersionsOperations { + return { + ..._getAvailableVersions(context), + }; +} diff --git a/sdk/appnetwork/arm-appnetwork/src/classic/index.ts b/sdk/appnetwork/arm-appnetwork/src/classic/index.ts new file mode 100644 index 000000000000..6795f3d3c3f6 --- /dev/null +++ b/sdk/appnetwork/arm-appnetwork/src/classic/index.ts @@ -0,0 +1,8 @@ +// Copyright (c) Microsoft Corporation. +// Licensed under the MIT License. + +export type { AppLinkMembersOperations } from "./appLinkMembers/index.js"; +export type { AppLinksOperations } from "./appLinks/index.js"; +export type { AvailableVersionsOperations } from "./availableVersions/index.js"; +export type { OperationsOperations } from "./operations/index.js"; +export type { UpgradeHistoriesOperations } from "./upgradeHistories/index.js"; diff --git a/sdk/appnetwork/arm-appnetwork/src/classic/operations/index.ts b/sdk/appnetwork/arm-appnetwork/src/classic/operations/index.ts new file mode 100644 index 000000000000..4c7862bad99c --- /dev/null +++ b/sdk/appnetwork/arm-appnetwork/src/classic/operations/index.ts @@ -0,0 +1,26 @@ +// Copyright (c) Microsoft Corporation. +// Licensed under the MIT License. + +import type { AppLinkContext } from "../../api/appLinkContext.js"; +import { list } from "../../api/operations/operations.js"; +import type { OperationsListOptionalParams } from "../../api/operations/options.js"; +import type { Operation } from "../../models/models.js"; +import type { PagedAsyncIterableIterator } from "../../static-helpers/pagingHelpers.js"; + +/** Interface representing a Operations operations. */ +export interface OperationsOperations { + /** List the operations for the provider */ + list: (options?: OperationsListOptionalParams) => PagedAsyncIterableIterator; +} + +function _getOperations(context: AppLinkContext) { + return { + list: (options?: OperationsListOptionalParams) => list(context, options), + }; +} + +export function _getOperationsOperations(context: AppLinkContext): OperationsOperations { + return { + ..._getOperations(context), + }; +} diff --git a/sdk/appnetwork/arm-appnetwork/src/classic/upgradeHistories/index.ts b/sdk/appnetwork/arm-appnetwork/src/classic/upgradeHistories/index.ts new file mode 100644 index 000000000000..77495eec4aa2 --- /dev/null +++ b/sdk/appnetwork/arm-appnetwork/src/classic/upgradeHistories/index.ts @@ -0,0 +1,38 @@ +// Copyright (c) Microsoft Corporation. +// Licensed under the MIT License. + +import type { AppLinkContext } from "../../api/appLinkContext.js"; +import { listByAppLinkMember } from "../../api/upgradeHistories/operations.js"; +import type { UpgradeHistoriesListByAppLinkMemberOptionalParams } from "../../api/upgradeHistories/options.js"; +import type { UpgradeHistory } from "../../models/models.js"; +import type { PagedAsyncIterableIterator } from "../../static-helpers/pagingHelpers.js"; + +/** Interface representing a UpgradeHistories operations. */ +export interface UpgradeHistoriesOperations { + /** List UpgradeHistory resources by AppLinkMember. */ + listByAppLinkMember: ( + resourceGroupName: string, + appLinkName: string, + appLinkMemberName: string, + options?: UpgradeHistoriesListByAppLinkMemberOptionalParams, + ) => PagedAsyncIterableIterator; +} + +function _getUpgradeHistories(context: AppLinkContext) { + return { + listByAppLinkMember: ( + resourceGroupName: string, + appLinkName: string, + appLinkMemberName: string, + options?: UpgradeHistoriesListByAppLinkMemberOptionalParams, + ) => listByAppLinkMember(context, resourceGroupName, appLinkName, appLinkMemberName, options), + }; +} + +export function _getUpgradeHistoriesOperations( + context: AppLinkContext, +): UpgradeHistoriesOperations { + return { + ..._getUpgradeHistories(context), + }; +} diff --git a/sdk/appnetwork/arm-appnetwork/src/index.ts b/sdk/appnetwork/arm-appnetwork/src/index.ts new file mode 100644 index 000000000000..13df7f521a0e --- /dev/null +++ b/sdk/appnetwork/arm-appnetwork/src/index.ts @@ -0,0 +1,101 @@ +// Copyright (c) Microsoft Corporation. +// Licensed under the MIT License. + +import type { AzureSupportedClouds } from "./static-helpers/cloudSettingHelpers.js"; +import { AzureClouds } from "./static-helpers/cloudSettingHelpers.js"; +import type { + PageSettings, + ContinuablePage, + PagedAsyncIterableIterator, +} from "./static-helpers/pagingHelpers.js"; + +export { AppLinkClient } from "./appLinkClient.js"; +export type { RestorePollerOptions } from "./restorePollerHelpers.js"; +export { restorePoller } from "./restorePollerHelpers.js"; +export type { + Operation, + OperationDisplay, + Origin, + ActionType, + ErrorResponse, + ErrorDetail, + ErrorAdditionalInfo, + AppLink, + AppLinkProperties, + ProvisioningState, + ManagedServiceIdentity, + ManagedServiceIdentityType, + UserAssignedIdentity, + TrackedResource, + Resource, + SystemData, + CreatedByType, + AppLinkUpdate, + AppLinkMember, + AppLinkMemberProperties, + ClusterType, + Metadata, + UpgradeProfile, + UpgradeMode, + FullyManagedUpgradeProfile, + UpgradeReleaseChannel, + SelfManagedUpgradeProfile, + ObservabilityProfile, + MetricsProfile, + ConnectivityProfile, + EastWestGatewayProfile, + EastWestGatewayVisibility, + PrivateConnectProfile, + AppLinkMemberUpdate, + AppLinkMemberUpdateProperties, + UpgradeHistory, + UpgradeHistoryProperties, + ProxyResource, + AvailableVersion, + AvailableVersionProperties, + FullyManagedVersions, + ReleaseChannelInfo, + SelfManagedVersions, + VersionInfo, +} from "./models/index.js"; +export { + KnownOrigin, + KnownActionType, + KnownProvisioningState, + KnownManagedServiceIdentityType, + KnownCreatedByType, + KnownClusterType, + KnownUpgradeMode, + KnownUpgradeReleaseChannel, + KnownEastWestGatewayVisibility, + KnownVersions, +} from "./models/index.js"; +export type { AppLinkClientOptionalParams } from "./api/index.js"; +export type { + AppLinkMembersListByAppLinkOptionalParams, + AppLinkMembersDeleteOptionalParams, + AppLinkMembersUpdateOptionalParams, + AppLinkMembersCreateOrUpdateOptionalParams, + AppLinkMembersGetOptionalParams, +} from "./api/appLinkMembers/index.js"; +export type { + AppLinksListBySubscriptionOptionalParams, + AppLinksListByResourceGroupOptionalParams, + AppLinksDeleteOptionalParams, + AppLinksUpdateOptionalParams, + AppLinksCreateOrUpdateOptionalParams, + AppLinksGetOptionalParams, +} from "./api/appLinks/index.js"; +export type { AvailableVersionsListByLocationOptionalParams } from "./api/availableVersions/index.js"; +export type { OperationsListOptionalParams } from "./api/operations/index.js"; +export type { UpgradeHistoriesListByAppLinkMemberOptionalParams } from "./api/upgradeHistories/index.js"; +export type { + AppLinkMembersOperations, + AppLinksOperations, + AvailableVersionsOperations, + OperationsOperations, + UpgradeHistoriesOperations, +} from "./classic/index.js"; +export type { PageSettings, ContinuablePage, PagedAsyncIterableIterator }; +export { AzureClouds }; +export type { AzureSupportedClouds }; diff --git a/sdk/appnetwork/arm-appnetwork/src/logger.ts b/sdk/appnetwork/arm-appnetwork/src/logger.ts new file mode 100644 index 000000000000..5bd3727c0a5c --- /dev/null +++ b/sdk/appnetwork/arm-appnetwork/src/logger.ts @@ -0,0 +1,5 @@ +// Copyright (c) Microsoft Corporation. +// Licensed under the MIT License. + +import { createClientLogger } from "@azure/logger"; +export const logger = createClientLogger("arm-appnetwork"); diff --git a/sdk/appnetwork/arm-appnetwork/src/models/index.ts b/sdk/appnetwork/arm-appnetwork/src/models/index.ts new file mode 100644 index 000000000000..1d9b3b4933f1 --- /dev/null +++ b/sdk/appnetwork/arm-appnetwork/src/models/index.ts @@ -0,0 +1,61 @@ +// Copyright (c) Microsoft Corporation. +// Licensed under the MIT License. + +export type { + Operation, + OperationDisplay, + Origin, + ActionType, + ErrorResponse, + ErrorDetail, + ErrorAdditionalInfo, + AppLink, + AppLinkProperties, + ProvisioningState, + ManagedServiceIdentity, + ManagedServiceIdentityType, + UserAssignedIdentity, + TrackedResource, + Resource, + SystemData, + CreatedByType, + AppLinkUpdate, + AppLinkMember, + AppLinkMemberProperties, + ClusterType, + Metadata, + UpgradeProfile, + UpgradeMode, + FullyManagedUpgradeProfile, + UpgradeReleaseChannel, + SelfManagedUpgradeProfile, + ObservabilityProfile, + MetricsProfile, + ConnectivityProfile, + EastWestGatewayProfile, + EastWestGatewayVisibility, + PrivateConnectProfile, + AppLinkMemberUpdate, + AppLinkMemberUpdateProperties, + UpgradeHistory, + UpgradeHistoryProperties, + ProxyResource, + AvailableVersion, + AvailableVersionProperties, + FullyManagedVersions, + ReleaseChannelInfo, + SelfManagedVersions, + VersionInfo, +} from "./models.js"; +export { + KnownOrigin, + KnownActionType, + KnownProvisioningState, + KnownManagedServiceIdentityType, + KnownCreatedByType, + KnownClusterType, + KnownUpgradeMode, + KnownUpgradeReleaseChannel, + KnownEastWestGatewayVisibility, + KnownVersions, +} from "./models.js"; diff --git a/sdk/appnetwork/arm-appnetwork/src/models/models.ts b/sdk/appnetwork/arm-appnetwork/src/models/models.ts new file mode 100644 index 000000000000..d0a04b536a4b --- /dev/null +++ b/sdk/appnetwork/arm-appnetwork/src/models/models.ts @@ -0,0 +1,1101 @@ +// Copyright (c) Microsoft Corporation. +// Licensed under the MIT License. + +/** + * This file contains only generated model types and their (de)serializers. + * Disable the following rules for internal models with '_' prefix and deserializers which require 'any' for raw JSON input. + */ +/* eslint-disable @typescript-eslint/naming-convention */ +/* eslint-disable @typescript-eslint/explicit-module-boundary-types */ +/** A list of REST API operations supported by an Azure Resource Provider. It contains an URL link to get the next set of results. */ +export interface _OperationListResult { + /** The Operation items on this page */ + value: Operation[]; + /** The link to the next page of items */ + nextLink?: string; +} + +export function _operationListResultDeserializer(item: any): _OperationListResult { + return { + value: operationArrayDeserializer(item["value"]), + nextLink: item["nextLink"], + }; +} + +export function operationArrayDeserializer(result: Array): any[] { + return result.map((item) => { + return operationDeserializer(item); + }); +} + +/** Details of a REST API operation, returned from the Resource Provider Operations API */ +export interface Operation { + /** The name of the operation, as per Resource-Based Access Control (RBAC). Examples: "Microsoft.Compute/virtualMachines/write", "Microsoft.Compute/virtualMachines/capture/action" */ + readonly name?: string; + /** Whether the operation applies to data-plane. This is "true" for data-plane operations and "false" for Azure Resource Manager/control-plane operations. */ + readonly isDataAction?: boolean; + /** Localized display information for this particular operation. */ + display?: OperationDisplay; + /** The intended executor of the operation; as in Resource Based Access Control (RBAC) and audit logs UX. Default value is "user,system" */ + readonly origin?: Origin; + /** Extensible enum. Indicates the action type. "Internal" refers to actions that are for internal only APIs. */ + readonly actionType?: ActionType; +} + +export function operationDeserializer(item: any): Operation { + return { + name: item["name"], + isDataAction: item["isDataAction"], + display: !item["display"] ? item["display"] : operationDisplayDeserializer(item["display"]), + origin: item["origin"], + actionType: item["actionType"], + }; +} + +/** Localized display information for an operation. */ +export interface OperationDisplay { + /** The localized friendly form of the resource provider name, e.g. "Microsoft Monitoring Insights" or "Microsoft Compute". */ + readonly provider?: string; + /** The localized friendly name of the resource type related to this operation. E.g. "Virtual Machines" or "Job Schedule Collections". */ + readonly resource?: string; + /** The concise, localized friendly name for the operation; suitable for dropdowns. E.g. "Create or Update Virtual Machine", "Restart Virtual Machine". */ + readonly operation?: string; + /** The short, localized friendly description of the operation; suitable for tool tips and detailed views. */ + readonly description?: string; +} + +export function operationDisplayDeserializer(item: any): OperationDisplay { + return { + provider: item["provider"], + resource: item["resource"], + operation: item["operation"], + description: item["description"], + }; +} + +/** The intended executor of the operation; as in Resource Based Access Control (RBAC) and audit logs UX. Default value is "user,system" */ +export enum KnownOrigin { + /** Indicates the operation is initiated by a user. */ + User = "user", + /** Indicates the operation is initiated by a system. */ + System = "system", + /** Indicates the operation is initiated by a user or system. */ + UserSystem = "user,system", +} + +/** + * The intended executor of the operation; as in Resource Based Access Control (RBAC) and audit logs UX. Default value is "user,system" \ + * {@link KnownOrigin} can be used interchangeably with Origin, + * this enum contains the known values that the service supports. + * ### Known values supported by the service + * **user**: Indicates the operation is initiated by a user. \ + * **system**: Indicates the operation is initiated by a system. \ + * **user,system**: Indicates the operation is initiated by a user or system. + */ +export type Origin = string; + +/** Extensible enum. Indicates the action type. "Internal" refers to actions that are for internal only APIs. */ +export enum KnownActionType { + /** Actions are for internal-only APIs. */ + Internal = "Internal", +} + +/** + * Extensible enum. Indicates the action type. "Internal" refers to actions that are for internal only APIs. \ + * {@link KnownActionType} can be used interchangeably with ActionType, + * this enum contains the known values that the service supports. + * ### Known values supported by the service + * **Internal**: Actions are for internal-only APIs. + */ +export type ActionType = string; + +/** Common error response for all Azure Resource Manager APIs to return error details for failed operations. */ +export interface ErrorResponse { + /** The error object. */ + error?: ErrorDetail; +} + +export function errorResponseDeserializer(item: any): ErrorResponse { + return { + error: !item["error"] ? item["error"] : errorDetailDeserializer(item["error"]), + }; +} + +/** The error detail. */ +export interface ErrorDetail { + /** The error code. */ + readonly code?: string; + /** The error message. */ + readonly message?: string; + /** The error target. */ + readonly target?: string; + /** The error details. */ + readonly details?: ErrorDetail[]; + /** The error additional info. */ + readonly additionalInfo?: ErrorAdditionalInfo[]; +} + +export function errorDetailDeserializer(item: any): ErrorDetail { + return { + code: item["code"], + message: item["message"], + target: item["target"], + details: !item["details"] ? item["details"] : errorDetailArrayDeserializer(item["details"]), + additionalInfo: !item["additionalInfo"] + ? item["additionalInfo"] + : errorAdditionalInfoArrayDeserializer(item["additionalInfo"]), + }; +} + +export function errorDetailArrayDeserializer(result: Array): any[] { + return result.map((item) => { + return errorDetailDeserializer(item); + }); +} + +export function errorAdditionalInfoArrayDeserializer(result: Array): any[] { + return result.map((item) => { + return errorAdditionalInfoDeserializer(item); + }); +} + +/** The resource management error additional info. */ +export interface ErrorAdditionalInfo { + /** The additional info type. */ + readonly type?: string; + /** The additional info. */ + readonly info?: any; +} + +export function errorAdditionalInfoDeserializer(item: any): ErrorAdditionalInfo { + return { + type: item["type"], + info: item["info"], + }; +} + +/** AppLink resource */ +export interface AppLink extends TrackedResource { + /** The resource-specific properties for this resource. */ + properties?: AppLinkProperties; + /** The managed service identities assigned to this resource. */ + identity?: ManagedServiceIdentity; +} + +export function appLinkSerializer(item: AppLink): any { + return { + tags: item["tags"], + location: item["location"], + properties: !item["properties"] + ? item["properties"] + : appLinkPropertiesSerializer(item["properties"]), + identity: !item["identity"] + ? item["identity"] + : managedServiceIdentitySerializer(item["identity"]), + }; +} + +export function appLinkDeserializer(item: any): AppLink { + return { + tags: !item["tags"] + ? item["tags"] + : Object.fromEntries(Object.entries(item["tags"]).map(([k, p]: [string, any]) => [k, p])), + location: item["location"], + id: item["id"], + name: item["name"], + type: item["type"], + systemData: !item["systemData"] + ? item["systemData"] + : systemDataDeserializer(item["systemData"]), + properties: !item["properties"] + ? item["properties"] + : appLinkPropertiesDeserializer(item["properties"]), + identity: !item["identity"] + ? item["identity"] + : managedServiceIdentityDeserializer(item["identity"]), + }; +} + +/** AppLink properties */ +export interface AppLinkProperties { + /** Provisioning state */ + readonly provisioningState?: ProvisioningState; +} + +export function appLinkPropertiesSerializer(item: AppLinkProperties): any { + return item; +} + +export function appLinkPropertiesDeserializer(item: any): AppLinkProperties { + return { + provisioningState: item["provisioningState"], + }; +} + +/** Provisioning state of the resource */ +export enum KnownProvisioningState { + /** Resource has been created. */ + Succeeded = "Succeeded", + /** Resource creation failed. */ + Failed = "Failed", + /** Resource creation was canceled. */ + Canceled = "Canceled", + /** Resource is getting provisioned. */ + Provisioning = "Provisioning", + /** Resource is Updating. */ + Updating = "Updating", + /** Resource is Deleting. */ + Deleting = "Deleting", + /** Resource has been Accepted. */ + Accepted = "Accepted", +} + +/** + * Provisioning state of the resource \ + * {@link KnownProvisioningState} can be used interchangeably with ProvisioningState, + * this enum contains the known values that the service supports. + * ### Known values supported by the service + * **Succeeded**: Resource has been created. \ + * **Failed**: Resource creation failed. \ + * **Canceled**: Resource creation was canceled. \ + * **Provisioning**: Resource is getting provisioned. \ + * **Updating**: Resource is Updating. \ + * **Deleting**: Resource is Deleting. \ + * **Accepted**: Resource has been Accepted. + */ +export type ProvisioningState = string; + +/** Managed service identity (system assigned and/or user assigned identities) */ +export interface ManagedServiceIdentity { + /** The service principal ID of the system assigned identity. This property will only be provided for a system assigned identity. */ + readonly principalId?: string; + /** The tenant ID of the system assigned identity. This property will only be provided for a system assigned identity. */ + readonly tenantId?: string; + /** The type of managed identity assigned to this resource. */ + type: ManagedServiceIdentityType; + /** The identities assigned to this resource by the user. */ + userAssignedIdentities?: Record; +} + +export function managedServiceIdentitySerializer(item: ManagedServiceIdentity): any { + return { type: item["type"], userAssignedIdentities: item["userAssignedIdentities"] }; +} + +export function managedServiceIdentityDeserializer(item: any): ManagedServiceIdentity { + return { + principalId: item["principalId"], + tenantId: item["tenantId"], + type: item["type"], + userAssignedIdentities: !item["userAssignedIdentities"] + ? item["userAssignedIdentities"] + : Object.fromEntries( + Object.entries(item["userAssignedIdentities"]).map(([k, p]: [string, any]) => [ + k, + !p ? p : userAssignedIdentityDeserializer(p), + ]), + ), + }; +} + +/** Type of managed service identity (where both SystemAssigned and UserAssigned types are allowed). */ +export enum KnownManagedServiceIdentityType { + /** No managed identity. */ + None = "None", + /** System assigned managed identity. */ + SystemAssigned = "SystemAssigned", + /** User assigned managed identity. */ + UserAssigned = "UserAssigned", + /** System and user assigned managed identity. */ + SystemAssignedUserAssigned = "SystemAssigned,UserAssigned", +} + +/** + * Type of managed service identity (where both SystemAssigned and UserAssigned types are allowed). \ + * {@link KnownManagedServiceIdentityType} can be used interchangeably with ManagedServiceIdentityType, + * this enum contains the known values that the service supports. + * ### Known values supported by the service + * **None**: No managed identity. \ + * **SystemAssigned**: System assigned managed identity. \ + * **UserAssigned**: User assigned managed identity. \ + * **SystemAssigned,UserAssigned**: System and user assigned managed identity. + */ +export type ManagedServiceIdentityType = string; + +/** User assigned identity properties */ +export interface UserAssignedIdentity { + /** The principal ID of the assigned identity. */ + readonly principalId?: string; + /** The client ID of the assigned identity. */ + readonly clientId?: string; +} + +export function userAssignedIdentitySerializer(item: UserAssignedIdentity): any { + return item; +} + +export function userAssignedIdentityDeserializer(item: any): UserAssignedIdentity { + return { + principalId: item["principalId"], + clientId: item["clientId"], + }; +} + +/** The resource model definition for an Azure Resource Manager tracked top level resource which has 'tags' and a 'location' */ +export interface TrackedResource extends Resource { + /** Resource tags. */ + tags?: Record; + /** The geo-location where the resource lives */ + location: string; +} + +export function trackedResourceSerializer(item: TrackedResource): any { + return { tags: item["tags"], location: item["location"] }; +} + +export function trackedResourceDeserializer(item: any): TrackedResource { + return { + id: item["id"], + name: item["name"], + type: item["type"], + systemData: !item["systemData"] + ? item["systemData"] + : systemDataDeserializer(item["systemData"]), + tags: !item["tags"] + ? item["tags"] + : Object.fromEntries(Object.entries(item["tags"]).map(([k, p]: [string, any]) => [k, p])), + location: item["location"], + }; +} + +/** Common fields that are returned in the response for all Azure Resource Manager resources */ +export interface Resource { + /** Fully qualified resource ID for the resource. Ex - /subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/{resourceProviderNamespace}/{resourceType}/{resourceName} */ + readonly id?: string; + /** The name of the resource */ + readonly name?: string; + /** The type of the resource. E.g. "Microsoft.Compute/virtualMachines" or "Microsoft.Storage/storageAccounts" */ + readonly type?: string; + /** Azure Resource Manager metadata containing createdBy and modifiedBy information. */ + readonly systemData?: SystemData; +} + +export function resourceSerializer(item: Resource): any { + return item; +} + +export function resourceDeserializer(item: any): Resource { + return { + id: item["id"], + name: item["name"], + type: item["type"], + systemData: !item["systemData"] + ? item["systemData"] + : systemDataDeserializer(item["systemData"]), + }; +} + +/** Metadata pertaining to creation and last modification of the resource. */ +export interface SystemData { + /** The identity that created the resource. */ + createdBy?: string; + /** The type of identity that created the resource. */ + createdByType?: CreatedByType; + /** The timestamp of resource creation (UTC). */ + createdAt?: Date; + /** The identity that last modified the resource. */ + lastModifiedBy?: string; + /** The type of identity that last modified the resource. */ + lastModifiedByType?: CreatedByType; + /** The timestamp of resource last modification (UTC) */ + lastModifiedAt?: Date; +} + +export function systemDataDeserializer(item: any): SystemData { + return { + createdBy: item["createdBy"], + createdByType: item["createdByType"], + createdAt: !item["createdAt"] ? item["createdAt"] : new Date(item["createdAt"]), + lastModifiedBy: item["lastModifiedBy"], + lastModifiedByType: item["lastModifiedByType"], + lastModifiedAt: !item["lastModifiedAt"] + ? item["lastModifiedAt"] + : new Date(item["lastModifiedAt"]), + }; +} + +/** The kind of entity that created the resource. */ +export enum KnownCreatedByType { + /** The entity was created by a user. */ + User = "User", + /** The entity was created by an application. */ + Application = "Application", + /** The entity was created by a managed identity. */ + ManagedIdentity = "ManagedIdentity", + /** The entity was created by a key. */ + Key = "Key", +} + +/** + * The kind of entity that created the resource. \ + * {@link KnownCreatedByType} can be used interchangeably with CreatedByType, + * this enum contains the known values that the service supports. + * ### Known values supported by the service + * **User**: The entity was created by a user. \ + * **Application**: The entity was created by an application. \ + * **ManagedIdentity**: The entity was created by a managed identity. \ + * **Key**: The entity was created by a key. + */ +export type CreatedByType = string; + +/** The type used for update operations of the AppLink. */ +export interface AppLinkUpdate { + /** Resource tags. */ + tags?: Record; +} + +export function appLinkUpdateSerializer(item: AppLinkUpdate): any { + return { tags: item["tags"] }; +} + +/** The response of a AppLink list operation. */ +export interface _AppLinkListResult { + /** The AppLink items on this page */ + value: AppLink[]; + /** The link to the next page of items */ + nextLink?: string; +} + +export function _appLinkListResultDeserializer(item: any): _AppLinkListResult { + return { + value: appLinkArrayDeserializer(item["value"]), + nextLink: item["nextLink"], + }; +} + +export function appLinkArraySerializer(result: Array): any[] { + return result.map((item) => { + return appLinkSerializer(item); + }); +} + +export function appLinkArrayDeserializer(result: Array): any[] { + return result.map((item) => { + return appLinkDeserializer(item); + }); +} + +/** AppLink Member resource */ +export interface AppLinkMember extends TrackedResource { + /** The resource-specific properties for this resource. */ + properties?: AppLinkMemberProperties; +} + +export function appLinkMemberSerializer(item: AppLinkMember): any { + return { + tags: item["tags"], + location: item["location"], + properties: !item["properties"] + ? item["properties"] + : appLinkMemberPropertiesSerializer(item["properties"]), + }; +} + +export function appLinkMemberDeserializer(item: any): AppLinkMember { + return { + tags: !item["tags"] + ? item["tags"] + : Object.fromEntries(Object.entries(item["tags"]).map(([k, p]: [string, any]) => [k, p])), + location: item["location"], + id: item["id"], + name: item["name"], + type: item["type"], + systemData: !item["systemData"] + ? item["systemData"] + : systemDataDeserializer(item["systemData"]), + properties: !item["properties"] + ? item["properties"] + : appLinkMemberPropertiesDeserializer(item["properties"]), + }; +} + +/** AppLink Member properties */ +export interface AppLinkMemberProperties { + /** Cluster type */ + clusterType?: ClusterType; + /** AppLink Member Metadata */ + metadata: Metadata; + /** Upgrade profile. */ + upgradeProfile?: UpgradeProfile; + /** Observability profile */ + observabilityProfile?: ObservabilityProfile; + /** Connectivity profile. */ + connectivityProfile?: ConnectivityProfile; + /** Provisioning state */ + readonly provisioningState?: ProvisioningState; +} + +export function appLinkMemberPropertiesSerializer(item: AppLinkMemberProperties): any { + return { + clusterType: item["clusterType"], + metadata: metadataSerializer(item["metadata"]), + upgradeProfile: !item["upgradeProfile"] + ? item["upgradeProfile"] + : upgradeProfileSerializer(item["upgradeProfile"]), + observabilityProfile: !item["observabilityProfile"] + ? item["observabilityProfile"] + : observabilityProfileSerializer(item["observabilityProfile"]), + connectivityProfile: !item["connectivityProfile"] + ? item["connectivityProfile"] + : connectivityProfileSerializer(item["connectivityProfile"]), + }; +} + +export function appLinkMemberPropertiesDeserializer(item: any): AppLinkMemberProperties { + return { + clusterType: item["clusterType"], + metadata: metadataDeserializer(item["metadata"]), + upgradeProfile: !item["upgradeProfile"] + ? item["upgradeProfile"] + : upgradeProfileDeserializer(item["upgradeProfile"]), + observabilityProfile: !item["observabilityProfile"] + ? item["observabilityProfile"] + : observabilityProfileDeserializer(item["observabilityProfile"]), + connectivityProfile: !item["connectivityProfile"] + ? item["connectivityProfile"] + : connectivityProfileDeserializer(item["connectivityProfile"]), + provisioningState: item["provisioningState"], + }; +} + +/** AppLinkMember cluster type */ +export enum KnownClusterType { + /** Azure Kubernetes Service */ + AKS = "AKS", +} + +/** + * AppLinkMember cluster type \ + * {@link KnownClusterType} can be used interchangeably with ClusterType, + * this enum contains the known values that the service supports. + * ### Known values supported by the service + * **AKS**: Azure Kubernetes Service + */ +export type ClusterType = string; + +/** AppLinkMember metadata */ +export interface Metadata { + /** Resource ID */ + resourceId: string; +} + +export function metadataSerializer(item: Metadata): any { + return { resourceId: item["resourceId"] }; +} + +export function metadataDeserializer(item: any): Metadata { + return { + resourceId: item["resourceId"], + }; +} + +/** AppLinkMember upgrade profile. */ +export interface UpgradeProfile { + /** Upgrade mode. */ + mode: UpgradeMode; + /** Fully managed upgrade profile. */ + fullyManagedUpgradeProfile?: FullyManagedUpgradeProfile; + /** Self managed upgrade profile. */ + selfManagedUpgradeProfile?: SelfManagedUpgradeProfile; +} + +export function upgradeProfileSerializer(item: UpgradeProfile): any { + return { + mode: item["mode"], + fullyManagedUpgradeProfile: !item["fullyManagedUpgradeProfile"] + ? item["fullyManagedUpgradeProfile"] + : fullyManagedUpgradeProfileSerializer(item["fullyManagedUpgradeProfile"]), + selfManagedUpgradeProfile: !item["selfManagedUpgradeProfile"] + ? item["selfManagedUpgradeProfile"] + : selfManagedUpgradeProfileSerializer(item["selfManagedUpgradeProfile"]), + }; +} + +export function upgradeProfileDeserializer(item: any): UpgradeProfile { + return { + mode: item["mode"], + fullyManagedUpgradeProfile: !item["fullyManagedUpgradeProfile"] + ? item["fullyManagedUpgradeProfile"] + : fullyManagedUpgradeProfileDeserializer(item["fullyManagedUpgradeProfile"]), + selfManagedUpgradeProfile: !item["selfManagedUpgradeProfile"] + ? item["selfManagedUpgradeProfile"] + : selfManagedUpgradeProfileDeserializer(item["selfManagedUpgradeProfile"]), + }; +} + +/** AppLinkMember upgrade mode */ +export enum KnownUpgradeMode { + /** Fully managed upgrade mode */ + FullyManaged = "FullyManaged", + /** Self managed upgrade mode */ + SelfManaged = "SelfManaged", +} + +/** + * AppLinkMember upgrade mode \ + * {@link KnownUpgradeMode} can be used interchangeably with UpgradeMode, + * this enum contains the known values that the service supports. + * ### Known values supported by the service + * **FullyManaged**: Fully managed upgrade mode \ + * **SelfManaged**: Self managed upgrade mode + */ +export type UpgradeMode = string; + +/** AppLinkMember fully managed upgrade profile */ +export interface FullyManagedUpgradeProfile { + /** Release channel */ + releaseChannel: UpgradeReleaseChannel; +} + +export function fullyManagedUpgradeProfileSerializer(item: FullyManagedUpgradeProfile): any { + return { releaseChannel: item["releaseChannel"] }; +} + +export function fullyManagedUpgradeProfileDeserializer(item: any): FullyManagedUpgradeProfile { + return { + releaseChannel: item["releaseChannel"], + }; +} + +/** AppLinkMember upgrade release channel */ +export enum KnownUpgradeReleaseChannel { + /** Rapid release channel */ + Rapid = "Rapid", + /** Stable release channel */ + Stable = "Stable", +} + +/** + * AppLinkMember upgrade release channel \ + * {@link KnownUpgradeReleaseChannel} can be used interchangeably with UpgradeReleaseChannel, + * this enum contains the known values that the service supports. + * ### Known values supported by the service + * **Rapid**: Rapid release channel \ + * **Stable**: Stable release channel + */ +export type UpgradeReleaseChannel = string; + +/** AppLinkMember self managed upgrade profile */ +export interface SelfManagedUpgradeProfile { + /** Istio version */ + version: string; +} + +export function selfManagedUpgradeProfileSerializer(item: SelfManagedUpgradeProfile): any { + return { version: item["version"] }; +} + +export function selfManagedUpgradeProfileDeserializer(item: any): SelfManagedUpgradeProfile { + return { + version: item["version"], + }; +} + +/** AppLinkMember observability profile */ +export interface ObservabilityProfile { + /** Metrics configuration */ + metrics?: MetricsProfile; +} + +export function observabilityProfileSerializer(item: ObservabilityProfile): any { + return { + metrics: !item["metrics"] ? item["metrics"] : metricsProfileSerializer(item["metrics"]), + }; +} + +export function observabilityProfileDeserializer(item: any): ObservabilityProfile { + return { + metrics: !item["metrics"] ? item["metrics"] : metricsProfileDeserializer(item["metrics"]), + }; +} + +/** AppLinkMember metrics profile */ +export interface MetricsProfile { + /** Metrics endpoint URL */ + readonly metricsEndpoint?: string; +} + +export function metricsProfileSerializer(item: MetricsProfile): any { + return item; +} + +export function metricsProfileDeserializer(item: any): MetricsProfile { + return { + metricsEndpoint: item["metricsEndpoint"], + }; +} + +/** AppLinkMember connectivity profile. */ +export interface ConnectivityProfile { + /** East-West gateway profile. */ + eastWestGateway?: EastWestGatewayProfile; + /** Private connect profile. */ + privateConnect?: PrivateConnectProfile; +} + +export function connectivityProfileSerializer(item: ConnectivityProfile): any { + return { + eastWestGateway: !item["eastWestGateway"] + ? item["eastWestGateway"] + : eastWestGatewayProfileSerializer(item["eastWestGateway"]), + privateConnect: !item["privateConnect"] + ? item["privateConnect"] + : privateConnectProfileSerializer(item["privateConnect"]), + }; +} + +export function connectivityProfileDeserializer(item: any): ConnectivityProfile { + return { + eastWestGateway: !item["eastWestGateway"] + ? item["eastWestGateway"] + : eastWestGatewayProfileDeserializer(item["eastWestGateway"]), + privateConnect: !item["privateConnect"] + ? item["privateConnect"] + : privateConnectProfileDeserializer(item["privateConnect"]), + }; +} + +/** AppLinkMember east-west gateway profile. */ +export interface EastWestGatewayProfile { + /** East-West gateway visibility. */ + visibility: EastWestGatewayVisibility; +} + +export function eastWestGatewayProfileSerializer(item: EastWestGatewayProfile): any { + return { visibility: item["visibility"] }; +} + +export function eastWestGatewayProfileDeserializer(item: any): EastWestGatewayProfile { + return { + visibility: item["visibility"], + }; +} + +/** East-West gateway visibility. */ +export enum KnownEastWestGatewayVisibility { + /** Use an internal load balancer for the east-west gateway. */ + Internal = "Internal", + /** Use an external load balancer for the east-west gateway. */ + External = "External", +} + +/** + * East-West gateway visibility. \ + * {@link KnownEastWestGatewayVisibility} can be used interchangeably with EastWestGatewayVisibility, + * this enum contains the known values that the service supports. + * ### Known values supported by the service + * **Internal**: Use an internal load balancer for the east-west gateway. \ + * **External**: Use an external load balancer for the east-west gateway. + */ +export type EastWestGatewayVisibility = string; + +/** AppLinkMember private connect profile. */ +export interface PrivateConnectProfile { + /** Delegated Subnet to AppLink. */ + subnetResourceId: string; +} + +export function privateConnectProfileSerializer(item: PrivateConnectProfile): any { + return { subnetResourceId: item["subnetResourceId"] }; +} + +export function privateConnectProfileDeserializer(item: any): PrivateConnectProfile { + return { + subnetResourceId: item["subnetResourceId"], + }; +} + +/** The type used for update operations of the AppLinkMember. */ +export interface AppLinkMemberUpdate { + /** Resource tags. */ + tags?: Record; + /** The resource-specific properties for this resource. */ + properties?: AppLinkMemberUpdateProperties; +} + +export function appLinkMemberUpdateSerializer(item: AppLinkMemberUpdate): any { + return { + tags: item["tags"], + properties: !item["properties"] + ? item["properties"] + : appLinkMemberUpdatePropertiesSerializer(item["properties"]), + }; +} + +/** The updatable properties of the AppLinkMember. */ +export interface AppLinkMemberUpdateProperties { + /** Upgrade profile. */ + upgradeProfile?: UpgradeProfile; + /** Observability profile */ + observabilityProfile?: ObservabilityProfile; + /** Connectivity profile. */ + connectivityProfile?: ConnectivityProfile; +} + +export function appLinkMemberUpdatePropertiesSerializer(item: AppLinkMemberUpdateProperties): any { + return { + upgradeProfile: !item["upgradeProfile"] + ? item["upgradeProfile"] + : upgradeProfileSerializer(item["upgradeProfile"]), + observabilityProfile: !item["observabilityProfile"] + ? item["observabilityProfile"] + : observabilityProfileSerializer(item["observabilityProfile"]), + connectivityProfile: !item["connectivityProfile"] + ? item["connectivityProfile"] + : connectivityProfileSerializer(item["connectivityProfile"]), + }; +} + +/** The response of a AppLinkMember list operation. */ +export interface _AppLinkMemberListResult { + /** The AppLinkMember items on this page */ + value: AppLinkMember[]; + /** The link to the next page of items */ + nextLink?: string; +} + +export function _appLinkMemberListResultDeserializer(item: any): _AppLinkMemberListResult { + return { + value: appLinkMemberArrayDeserializer(item["value"]), + nextLink: item["nextLink"], + }; +} + +export function appLinkMemberArraySerializer(result: Array): any[] { + return result.map((item) => { + return appLinkMemberSerializer(item); + }); +} + +export function appLinkMemberArrayDeserializer(result: Array): any[] { + return result.map((item) => { + return appLinkMemberDeserializer(item); + }); +} + +/** The response of a UpgradeHistory list operation. */ +export interface _UpgradeHistoryListResult { + /** The UpgradeHistory items on this page */ + value: UpgradeHistory[]; + /** The link to the next page of items */ + nextLink?: string; +} + +export function _upgradeHistoryListResultDeserializer(item: any): _UpgradeHistoryListResult { + return { + value: upgradeHistoryArrayDeserializer(item["value"]), + nextLink: item["nextLink"], + }; +} + +export function upgradeHistoryArrayDeserializer(result: Array): any[] { + return result.map((item) => { + return upgradeHistoryDeserializer(item); + }); +} + +/** AppLinkMember upgrade history */ +export interface UpgradeHistory extends ProxyResource { + /** The resource-specific properties for this resource. */ + properties?: UpgradeHistoryProperties; +} + +export function upgradeHistoryDeserializer(item: any): UpgradeHistory { + return { + id: item["id"], + name: item["name"], + type: item["type"], + systemData: !item["systemData"] + ? item["systemData"] + : systemDataDeserializer(item["systemData"]), + properties: !item["properties"] + ? item["properties"] + : upgradeHistoryPropertiesDeserializer(item["properties"]), + }; +} + +/** AppLinkMember upgrade history properties */ +export interface UpgradeHistoryProperties { + /** Start timestamp */ + startTimestamp: Date; + /** End timestamp */ + endTimestamp?: Date; + /** Upgrade initiator */ + initiatedBy: string; + /** Version upgraded from */ + fromVersion: string; + /** Version upgraded to */ + toVersion: string; + /** Provisioning state */ + readonly provisioningState?: ProvisioningState; +} + +export function upgradeHistoryPropertiesDeserializer(item: any): UpgradeHistoryProperties { + return { + startTimestamp: new Date(item["startTimestamp"]), + endTimestamp: !item["endTimestamp"] ? item["endTimestamp"] : new Date(item["endTimestamp"]), + initiatedBy: item["initiatedBy"], + fromVersion: item["fromVersion"], + toVersion: item["toVersion"], + provisioningState: item["provisioningState"], + }; +} + +/** The resource model definition for a Azure Resource Manager proxy resource. It will not have tags and a location */ +export interface ProxyResource extends Resource {} + +export function proxyResourceDeserializer(item: any): ProxyResource { + return { + id: item["id"], + name: item["name"], + type: item["type"], + systemData: !item["systemData"] + ? item["systemData"] + : systemDataDeserializer(item["systemData"]), + }; +} + +/** The response of a AvailableVersion list operation. */ +export interface _AvailableVersionListResult { + /** The AvailableVersion items on this page */ + value: AvailableVersion[]; + /** The link to the next page of items */ + nextLink?: string; +} + +export function _availableVersionListResultDeserializer(item: any): _AvailableVersionListResult { + return { + value: availableVersionArrayDeserializer(item["value"]), + nextLink: item["nextLink"], + }; +} + +export function availableVersionArrayDeserializer(result: Array): any[] { + return result.map((item) => { + return availableVersionDeserializer(item); + }); +} + +/** AppLink available version resource */ +export interface AvailableVersion extends ProxyResource { + /** The resource-specific properties for this resource. */ + properties?: AvailableVersionProperties; +} + +export function availableVersionDeserializer(item: any): AvailableVersion { + return { + id: item["id"], + name: item["name"], + type: item["type"], + systemData: !item["systemData"] + ? item["systemData"] + : systemDataDeserializer(item["systemData"]), + properties: !item["properties"] + ? item["properties"] + : availableVersionPropertiesDeserializer(item["properties"]), + }; +} + +/** AppLink available version properties */ +export interface AvailableVersionProperties { + /** Kubernetes version */ + kubernetesVersion: string; + /** Fully managed versions */ + fullyManagedVersions: FullyManagedVersions; + /** Self managed versions */ + selfManagedVersions: SelfManagedVersions; + /** Provisioning state */ + readonly provisioningState?: ProvisioningState; +} + +export function availableVersionPropertiesDeserializer(item: any): AvailableVersionProperties { + return { + kubernetesVersion: item["kubernetesVersion"], + fullyManagedVersions: fullyManagedVersionsDeserializer(item["fullyManagedVersions"]), + selfManagedVersions: selfManagedVersionsDeserializer(item["selfManagedVersions"]), + provisioningState: item["provisioningState"], + }; +} + +/** Fully managed versions */ +export interface FullyManagedVersions { + /** Release channels */ + releaseChannels: ReleaseChannelInfo[]; +} + +export function fullyManagedVersionsDeserializer(item: any): FullyManagedVersions { + return { + releaseChannels: releaseChannelInfoArrayDeserializer(item["releaseChannels"]), + }; +} + +export function releaseChannelInfoArrayDeserializer(result: Array): any[] { + return result.map((item) => { + return releaseChannelInfoDeserializer(item); + }); +} + +/** Release channel information */ +export interface ReleaseChannelInfo { + /** Release channel */ + releaseChannel: string; + /** Istio version behind release channel */ + version: string; +} + +export function releaseChannelInfoDeserializer(item: any): ReleaseChannelInfo { + return { + releaseChannel: item["releaseChannel"], + version: item["version"], + }; +} + +/** Self managed versions */ +export interface SelfManagedVersions { + /** Istio versions */ + versions: VersionInfo[]; +} + +export function selfManagedVersionsDeserializer(item: any): SelfManagedVersions { + return { + versions: versionInfoArrayDeserializer(item["versions"]), + }; +} + +export function versionInfoArrayDeserializer(result: Array): any[] { + return result.map((item) => { + return versionInfoDeserializer(item); + }); +} + +/** Version information */ +export interface VersionInfo { + /** Istio version */ + version: string; + /** Available upgrades */ + upgrades: string[]; +} + +export function versionInfoDeserializer(item: any): VersionInfo { + return { + version: item["version"], + upgrades: item["upgrades"].map((p: any) => { + return p; + }), + }; +} + +/** The available API versions. */ +export enum KnownVersions { + /** 2025-08-01-preview version */ + V20250801Preview = "2025-08-01-preview", +} diff --git a/sdk/appnetwork/arm-appnetwork/src/restorePollerHelpers.ts b/sdk/appnetwork/arm-appnetwork/src/restorePollerHelpers.ts new file mode 100644 index 000000000000..738252019063 --- /dev/null +++ b/sdk/appnetwork/arm-appnetwork/src/restorePollerHelpers.ts @@ -0,0 +1,173 @@ +// Copyright (c) Microsoft Corporation. +// Licensed under the MIT License. + +import type { AppLinkClient } from "./appLinkClient.js"; +import { + _$deleteDeserialize, + _updateDeserialize, + _createOrUpdateDeserialize, +} from "./api/appLinkMembers/operations.js"; +import { + _$deleteDeserialize as _$deleteDeserializeAppLinks, + _updateDeserialize as _updateDeserializeAppLinks, + _createOrUpdateDeserialize as _createOrUpdateDeserializeAppLinks, +} from "./api/appLinks/operations.js"; +import { getLongRunningPoller } from "./static-helpers/pollingHelpers.js"; +import type { OperationOptions, PathUncheckedResponse } from "@azure-rest/core-client"; +import type { AbortSignalLike } from "@azure/abort-controller"; +import type { PollerLike, OperationState, ResourceLocationConfig } from "@azure/core-lro"; +import { deserializeState } from "@azure/core-lro"; + +export interface RestorePollerOptions< + TResult, + TResponse extends PathUncheckedResponse = PathUncheckedResponse, +> extends OperationOptions { + /** Delay to wait until next poll, in milliseconds. */ + updateIntervalInMs?: number; + /** + * The signal which can be used to abort requests. + */ + abortSignal?: AbortSignalLike; + /** Deserialization function for raw response body */ + processResponseBody?: (result: TResponse) => Promise; +} + +/** + * Creates a poller from the serialized state of another poller. This can be + * useful when you want to create pollers on a different host or a poller + * needs to be constructed after the original one is not in scope. + */ +export function restorePoller( + client: AppLinkClient, + serializedState: string, + sourceOperation: (...args: any[]) => PollerLike, TResult>, + options?: RestorePollerOptions, +): PollerLike, TResult> { + const pollerConfig = deserializeState(serializedState).config; + const { initialRequestUrl, requestMethod, metadata } = pollerConfig; + if (!initialRequestUrl || !requestMethod) { + throw new Error( + `Invalid serialized state: ${serializedState} for sourceOperation ${sourceOperation?.name}`, + ); + } + const resourceLocationConfig = metadata?.["resourceLocationConfig"] as + | ResourceLocationConfig + | undefined; + const { deserializer, expectedStatuses = [] } = + getDeserializationHelper(initialRequestUrl, requestMethod) ?? {}; + const deserializeHelper = options?.processResponseBody ?? deserializer; + if (!deserializeHelper) { + throw new Error( + `Please ensure the operation is in this client! We can't find its deserializeHelper for ${sourceOperation?.name}.`, + ); + } + const apiVersion = getApiVersionFromUrl(initialRequestUrl); + return getLongRunningPoller( + (client as any)["_client"] ?? client, + deserializeHelper as (result: TResponse) => Promise, + expectedStatuses, + { + updateIntervalInMs: options?.updateIntervalInMs, + abortSignal: options?.abortSignal, + resourceLocationConfig, + restoreFrom: serializedState, + initialRequestUrl, + apiVersion, + }, + ); +} + +interface DeserializationHelper { + deserializer: (result: PathUncheckedResponse) => Promise; + expectedStatuses: string[]; +} + +const deserializeMap: Record = { + "DELETE /subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.AppLink/appLinks/{appLinkName}/appLinkMembers/{appLinkMemberName}": + { deserializer: _$deleteDeserialize, expectedStatuses: ["202", "204", "200"] }, + "PATCH /subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.AppLink/appLinks/{appLinkName}/appLinkMembers/{appLinkMemberName}": + { deserializer: _updateDeserialize, expectedStatuses: ["200", "202", "201"] }, + "PUT /subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.AppLink/appLinks/{appLinkName}/appLinkMembers/{appLinkMemberName}": + { deserializer: _createOrUpdateDeserialize, expectedStatuses: ["200", "201", "202"] }, + "DELETE /subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.AppLink/appLinks/{appLinkName}": + { deserializer: _$deleteDeserializeAppLinks, expectedStatuses: ["202", "204", "200"] }, + "PATCH /subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.AppLink/appLinks/{appLinkName}": + { deserializer: _updateDeserializeAppLinks, expectedStatuses: ["200", "202", "201"] }, + "PUT /subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.AppLink/appLinks/{appLinkName}": + { deserializer: _createOrUpdateDeserializeAppLinks, expectedStatuses: ["200", "201", "202"] }, +}; + +function getDeserializationHelper( + urlStr: string, + method: string, +): DeserializationHelper | undefined { + const path = new URL(urlStr).pathname; + const pathParts = path.split("/"); + + // Traverse list to match the longest candidate + // matchedLen: the length of candidate path + // matchedValue: the matched status code array + let matchedLen = -1, + matchedValue: DeserializationHelper | undefined; + + // Iterate the responseMap to find a match + for (const [key, value] of Object.entries(deserializeMap)) { + // Extracting the path from the map key which is in format + // GET /path/foo + if (!key.startsWith(method)) { + continue; + } + const candidatePath = getPathFromMapKey(key); + // Get each part of the url path + const candidateParts = candidatePath.split("/"); + + // track if we have found a match to return the values found. + let found = true; + for (let i = candidateParts.length - 1, j = pathParts.length - 1; i >= 1 && j >= 1; i--, j--) { + if (candidateParts[i]?.startsWith("{") && candidateParts[i]?.indexOf("}") !== -1) { + const start = candidateParts[i]!.indexOf("}") + 1, + end = candidateParts[i]?.length; + // If the current part of the candidate is a "template" part + // Try to use the suffix of pattern to match the path + // {guid} ==> $ + // {guid}:export ==> :export$ + const isMatched = new RegExp(`${candidateParts[i]?.slice(start, end)}`).test( + pathParts[j] || "", + ); + + if (!isMatched) { + found = false; + break; + } + continue; + } + + // If the candidate part is not a template and + // the parts don't match mark the candidate as not found + // to move on with the next candidate path. + if (candidateParts[i] !== pathParts[j]) { + found = false; + break; + } + } + + // We finished evaluating the current candidate parts + // Update the matched value if and only if we found the longer pattern + if (found && candidatePath.length > matchedLen) { + matchedLen = candidatePath.length; + matchedValue = value; + } + } + + return matchedValue; +} + +function getPathFromMapKey(mapKey: string): string { + const pathStart = mapKey.indexOf("/"); + return mapKey.slice(pathStart); +} + +function getApiVersionFromUrl(urlStr: string): string | undefined { + const url = new URL(urlStr); + return url.searchParams.get("api-version") ?? undefined; +} diff --git a/sdk/appnetwork/arm-appnetwork/src/static-helpers/cloudSettingHelpers.ts b/sdk/appnetwork/arm-appnetwork/src/static-helpers/cloudSettingHelpers.ts new file mode 100644 index 000000000000..613112c6e397 --- /dev/null +++ b/sdk/appnetwork/arm-appnetwork/src/static-helpers/cloudSettingHelpers.ts @@ -0,0 +1,42 @@ +// Copyright (c) Microsoft Corporation. +// Licensed under the MIT License. + +/** + * An enum to describe Azure Cloud environments. + * @enum {string} + */ +export enum AzureClouds { + /** Azure public cloud, which is the default cloud for Azure SDKs. */ + AZURE_PUBLIC_CLOUD = "AZURE_PUBLIC_CLOUD", + /** Azure China cloud */ + AZURE_CHINA_CLOUD = "AZURE_CHINA_CLOUD", + /** Azure US government cloud */ + AZURE_US_GOVERNMENT = "AZURE_US_GOVERNMENT", +} + +/** The supported values for cloud setting as a string literal type */ +export type AzureSupportedClouds = `${AzureClouds}`; + +/** + * Gets the Azure Resource Manager endpoint URL for the specified cloud setting. + * @param cloudSetting - The Azure cloud environment setting. Use one of the AzureClouds enum values. + * @returns The ARM endpoint URL for the specified cloud, or undefined if cloudSetting is undefined. + * @throws {Error} Throws an error if an unknown cloud setting is provided. + */ +export function getArmEndpoint(cloudSetting?: AzureSupportedClouds): string | undefined { + if (cloudSetting === undefined) { + return undefined; + } + const cloudEndpoints: Record = { + AZURE_CHINA_CLOUD: "https://management.chinacloudapi.cn/", + AZURE_US_GOVERNMENT: "https://management.usgovcloudapi.net/", + AZURE_PUBLIC_CLOUD: "https://management.azure.com/", + }; + if (cloudSetting in cloudEndpoints) { + return cloudEndpoints[cloudSetting]; + } else { + throw new Error( + `Unknown cloud setting: ${cloudSetting}. Please refer to the enum AzureClouds for possible values.`, + ); + } +} diff --git a/sdk/appnetwork/arm-appnetwork/src/static-helpers/pagingHelpers.ts b/sdk/appnetwork/arm-appnetwork/src/static-helpers/pagingHelpers.ts new file mode 100644 index 000000000000..9258ba95eda8 --- /dev/null +++ b/sdk/appnetwork/arm-appnetwork/src/static-helpers/pagingHelpers.ts @@ -0,0 +1,270 @@ +// Copyright (c) Microsoft Corporation. +// Licensed under the MIT License. + +import type { Client, PathUncheckedResponse } from "@azure-rest/core-client"; +import { createRestError } from "@azure-rest/core-client"; +import { RestError } from "@azure/core-rest-pipeline"; + +/** + * Options for the byPage method + */ +export interface PageSettings { + /** + * A reference to a specific page to start iterating from. + */ + continuationToken?: string; +} + +/** + * An interface that describes a page of results. + */ +export type ContinuablePage = TPage & { + /** + * The token that keeps track of where to continue the iterator + */ + continuationToken?: string; +}; + +/** + * An interface that allows async iterable iteration both to completion and by page. + */ +export interface PagedAsyncIterableIterator< + TElement, + TPage = TElement[], + TPageSettings extends PageSettings = PageSettings, +> { + /** + * The next method, part of the iteration protocol + */ + next(): Promise>; + /** + * The connection to the async iterator, part of the iteration protocol + */ + [Symbol.asyncIterator](): PagedAsyncIterableIterator; + /** + * Return an AsyncIterableIterator that works a page at a time + */ + byPage: (settings?: TPageSettings) => AsyncIterableIterator>; +} + +/** + * An interface that describes how to communicate with the service. + */ +export interface PagedResult< + TElement, + TPage = TElement[], + TPageSettings extends PageSettings = PageSettings, +> { + /** + * Link to the first page of results. + */ + firstPageLink?: string; + /** + * A method that returns a page of results. + */ + getPage: (pageLink?: string) => Promise<{ page: TPage; nextPageLink?: string } | undefined>; + /** + * a function to implement the `byPage` method on the paged async iterator. + */ + byPage?: (settings?: TPageSettings) => AsyncIterableIterator>; + + /** + * A function to extract elements from a page. + */ + toElements?: (page: TPage) => TElement[]; +} + +/** + * Options for the paging helper + */ +export interface BuildPagedAsyncIteratorOptions { + itemName?: string; + nextLinkName?: string; + nextLinkMethod?: "GET" | "POST"; + apiVersion?: string; +} + +/** + * Helper to paginate results in a generic way and return a PagedAsyncIterableIterator + */ +export function buildPagedAsyncIterator< + TElement, + TPage = TElement[], + TPageSettings extends PageSettings = PageSettings, + TResponse extends PathUncheckedResponse = PathUncheckedResponse, +>( + client: Client, + getInitialResponse: () => PromiseLike, + processResponseBody: (result: TResponse) => PromiseLike, + expectedStatuses: string[], + options: BuildPagedAsyncIteratorOptions = {}, +): PagedAsyncIterableIterator { + const itemName = options.itemName ?? "value"; + const nextLinkName = options.nextLinkName ?? "nextLink"; + const nextLinkMethod = options.nextLinkMethod ?? "GET"; + const apiVersion = options.apiVersion; + const pagedResult: PagedResult = { + getPage: async (pageLink?: string) => { + let result; + if (pageLink === undefined) { + result = await getInitialResponse(); + } else { + const resolvedPageLink = apiVersion ? addApiVersionToUrl(pageLink, apiVersion) : pageLink; + result = + nextLinkMethod === "POST" + ? await client.pathUnchecked(resolvedPageLink).post() + : await client.pathUnchecked(resolvedPageLink).get(); + } + checkPagingRequest(result, expectedStatuses); + const results = await processResponseBody(result as TResponse); + const nextLink = getNextLink(results, nextLinkName); + const values = getElements(results, itemName) as TPage; + return { + page: values, + nextPageLink: nextLink, + }; + }, + byPage: (settings?: TPageSettings) => { + const { continuationToken } = settings ?? {}; + return getPageAsyncIterator(pagedResult, { + pageLink: continuationToken, + }); + }, + }; + return getPagedAsyncIterator(pagedResult); +} + +/** + * returns an async iterator that iterates over results. It also has a `byPage` + * method that returns pages of items at once. + * + * @param pagedResult - an object that specifies how to get pages. + * @returns a paged async iterator that iterates over results. + */ + +function getPagedAsyncIterator< + TElement, + TPage = TElement[], + TPageSettings extends PageSettings = PageSettings, +>( + pagedResult: PagedResult, +): PagedAsyncIterableIterator { + const iter = getItemAsyncIterator(pagedResult); + return { + next() { + return iter.next(); + }, + [Symbol.asyncIterator]() { + return this; + }, + byPage: + pagedResult?.byPage ?? + ((settings?: TPageSettings) => { + const { continuationToken } = settings ?? {}; + return getPageAsyncIterator(pagedResult, { + pageLink: continuationToken, + }); + }), + }; +} + +async function* getItemAsyncIterator( + pagedResult: PagedResult, +): AsyncIterableIterator { + const pages = getPageAsyncIterator(pagedResult); + for await (const page of pages) { + yield* page as unknown as TElement[]; + } +} + +async function* getPageAsyncIterator( + pagedResult: PagedResult, + options: { + pageLink?: string; + } = {}, +): AsyncIterableIterator> { + const { pageLink } = options; + let response = await pagedResult.getPage(pageLink ?? pagedResult.firstPageLink); + if (!response) { + return; + } + let result = response.page as ContinuablePage; + result.continuationToken = response.nextPageLink; + yield result; + while (response.nextPageLink) { + response = await pagedResult.getPage(response.nextPageLink); + if (!response) { + return; + } + result = response.page as ContinuablePage; + result.continuationToken = response.nextPageLink; + yield result; + } +} + +/** + * Gets for the value of nextLink in the body + */ +function getNextLink(body: unknown, nextLinkName?: string): string | undefined { + if (!nextLinkName) { + return undefined; + } + + const nextLink = (body as Record)[nextLinkName]; + + if (typeof nextLink !== "string" && typeof nextLink !== "undefined" && nextLink !== null) { + throw new RestError( + `Body Property ${nextLinkName} should be a string or undefined or null but got ${typeof nextLink}`, + ); + } + + if (nextLink === null) { + return undefined; + } + + return nextLink; +} + +/** + * Gets the elements of the current request in the body. + */ +function getElements(body: unknown, itemName: string): T[] { + const value = (body as Record)[itemName] as T[]; + if (!Array.isArray(value)) { + throw new RestError( + `Couldn't paginate response\n Body doesn't contain an array property with name: ${itemName}`, + ); + } + + return value ?? []; +} + +/** + * Checks if a request failed + */ +function checkPagingRequest(response: PathUncheckedResponse, expectedStatuses: string[]): void { + if (!expectedStatuses.includes(response.status)) { + throw createRestError( + `Pagination failed with unexpected statusCode ${response.status}`, + response, + ); + } +} + +/** + * Adds the api-version query parameter on a URL if it's not present. + * @param url - the URL to modify + * @param apiVersion - the API version to set + * @returns - the URL with the api-version query parameter set + */ +function addApiVersionToUrl(url: string, apiVersion: string): string { + // The base URL is only used for parsing and won't appear in the returned URL + const urlObj = new URL(url, "https://microsoft.com"); + if (!urlObj.searchParams.get("api-version")) { + // Append one if there is no apiVersion + return `${url}${ + Array.from(urlObj.searchParams.keys()).length > 0 ? "&" : "?" + }api-version=${apiVersion}`; + } + return url; +} diff --git a/sdk/appnetwork/arm-appnetwork/src/static-helpers/pollingHelpers.ts b/sdk/appnetwork/arm-appnetwork/src/static-helpers/pollingHelpers.ts new file mode 100644 index 000000000000..8e36a866edcc --- /dev/null +++ b/sdk/appnetwork/arm-appnetwork/src/static-helpers/pollingHelpers.ts @@ -0,0 +1,150 @@ +// Copyright (c) Microsoft Corporation. +// Licensed under the MIT License. + +import type { + PollerLike, + OperationState, + ResourceLocationConfig, + RunningOperation, + OperationResponse, +} from "@azure/core-lro"; +import { createHttpPoller } from "@azure/core-lro"; + +import type { Client, PathUncheckedResponse } from "@azure-rest/core-client"; +import { createRestError } from "@azure-rest/core-client"; +import type { AbortSignalLike } from "@azure/abort-controller"; + +export interface GetLongRunningPollerOptions { + /** Delay to wait until next poll, in milliseconds. */ + updateIntervalInMs?: number; + /** + * The signal which can be used to abort requests. + */ + abortSignal?: AbortSignalLike; + /** + * The potential location of the result of the LRO if specified by the LRO extension in the swagger. + */ + resourceLocationConfig?: ResourceLocationConfig; + /** + * The original url of the LRO + * Should not be null when restoreFrom is set + */ + initialRequestUrl?: string; + /** + * A serialized poller which can be used to resume an existing paused Long-Running-Operation. + */ + restoreFrom?: string; + /** + * The function to get the initial response + */ + getInitialResponse?: () => PromiseLike; + /** + * The api-version of the LRO + */ + apiVersion?: string; +} +export function getLongRunningPoller( + client: Client, + processResponseBody: (result: TResponse) => Promise, + expectedStatuses: string[], + options: GetLongRunningPollerOptions, +): PollerLike, TResult> { + const { restoreFrom, getInitialResponse, apiVersion } = options; + if (!restoreFrom && !getInitialResponse) { + throw new Error("Either restoreFrom or getInitialResponse must be specified"); + } + let initialResponse: TResponse | undefined = undefined; + const pollAbortController = new AbortController(); + const poller: RunningOperation = { + sendInitialRequest: async () => { + if (!getInitialResponse) { + throw new Error("getInitialResponse is required when initializing a new poller"); + } + initialResponse = await getInitialResponse(); + return getLroResponse(initialResponse, expectedStatuses); + }, + sendPollRequest: async ( + path: string, + pollOptions?: { + abortSignal?: AbortSignalLike; + }, + ) => { + // The poll request would both listen to the user provided abort signal and the poller's own abort signal + function abortListener(): void { + pollAbortController.abort(); + } + const abortSignal = pollAbortController.signal; + if (options.abortSignal?.aborted) { + pollAbortController.abort(); + } else if (pollOptions?.abortSignal?.aborted) { + pollAbortController.abort(); + } else if (!abortSignal.aborted) { + options.abortSignal?.addEventListener("abort", abortListener, { + once: true, + }); + pollOptions?.abortSignal?.addEventListener("abort", abortListener, { + once: true, + }); + } + let response; + try { + const pollingPath = apiVersion ? addApiVersionToUrl(path, apiVersion) : path; + response = await client.pathUnchecked(pollingPath).get({ abortSignal }); + } finally { + options.abortSignal?.removeEventListener("abort", abortListener); + pollOptions?.abortSignal?.removeEventListener("abort", abortListener); + } + + return getLroResponse(response as TResponse, expectedStatuses); + }, + }; + return createHttpPoller(poller, { + intervalInMs: options?.updateIntervalInMs, + resourceLocationConfig: options?.resourceLocationConfig, + restoreFrom: options?.restoreFrom, + processResult: (result: unknown) => { + return processResponseBody(result as TResponse); + }, + }); +} +/** + * Converts a Rest Client response to a response that the LRO implementation understands + * @param response - a rest client http response + * @param deserializeFn - deserialize function to convert Rest response to modular output + * @returns - An LRO response that the LRO implementation understands + */ +function getLroResponse( + response: TResponse, + expectedStatuses: string[], +): OperationResponse { + if (!expectedStatuses.includes(response.status)) { + throw createRestError(response); + } + + return { + flatResponse: response, + rawResponse: { + ...response, + statusCode: Number.parseInt(response.status), + body: response.body, + }, + }; +} + +/** + * Adds the api-version query parameter on a URL if it's not present. + * @param url - the URL to modify + * @param apiVersion - the API version to set + * @returns - the URL with the api-version query parameter set + */ +function addApiVersionToUrl(url: string, apiVersion: string): string { + // The base URL is only used for parsing and won't appear in the returned URL + const urlObj = new URL(url, "https://microsoft.com"); + if (!urlObj.searchParams.get("api-version")) { + // Append one if there is no apiVersion + return `${url}${ + Array.from(urlObj.searchParams.keys()).length > 0 ? "&" : "?" + }api-version=${apiVersion}`; + } + return url; +} diff --git a/sdk/appnetwork/arm-appnetwork/src/static-helpers/urlTemplate.ts b/sdk/appnetwork/arm-appnetwork/src/static-helpers/urlTemplate.ts new file mode 100644 index 000000000000..e8af8cd3ab73 --- /dev/null +++ b/sdk/appnetwork/arm-appnetwork/src/static-helpers/urlTemplate.ts @@ -0,0 +1,227 @@ +// Copyright (c) Microsoft Corporation. +// Licensed under the MIT License. + +// --------------------- +// interfaces +// --------------------- +interface ValueOptions { + isFirst: boolean; // is first value in the expression + op?: string; // operator + varValue?: any; // variable value + varName?: string; // variable name + modifier?: string; // modifier e.g * + reserved?: boolean; // if true we'll keep reserved words with not encoding +} + +export interface UrlTemplateOptions { + // if set to true, reserved characters will not be encoded + allowReserved?: boolean; +} + +// --------------------- +// helpers +// --------------------- +function encodeComponent(val: string, reserved?: boolean, op?: string): string { + return (reserved ?? op === "+") || op === "#" + ? encodeReservedComponent(val) + : encodeRFC3986URIComponent(val); +} + +function encodeReservedComponent(str: string): string { + return str + .split(/(%[0-9A-Fa-f]{2})/g) + .map((part) => (!/%[0-9A-Fa-f]/.test(part) ? encodeURI(part) : part)) + .join(""); +} + +function encodeRFC3986URIComponent(str: string): string { + return encodeURIComponent(str).replace( + /[!'()*]/g, + (c) => `%${c.charCodeAt(0).toString(16).toUpperCase()}`, + ); +} + +function isDefined(val: any): boolean { + return val !== undefined && val !== null; +} + +function getNamedAndIfEmpty(op?: string): [boolean, string] { + return [!!op && [";", "?", "&"].includes(op), !!op && ["?", "&"].includes(op) ? "=" : ""]; +} + +function getFirstOrSep(op?: string, isFirst = false): string { + if (isFirst) { + return !op || op === "+" ? "" : op; + } else if (!op || op === "+" || op === "#") { + return ","; + } else if (op === "?") { + return "&"; + } else { + return op; + } +} + +function getExpandedValue(option: ValueOptions): string { + let isFirst = option.isFirst; + const { op, varName, varValue: value, reserved } = option; + const vals: string[] = []; + const [named, ifEmpty] = getNamedAndIfEmpty(op); + + if (Array.isArray(value)) { + for (const val of value.filter(isDefined)) { + // prepare the following parts: separator, varName, value + vals.push(`${getFirstOrSep(op, isFirst)}`); + if (named && varName) { + vals.push(`${encodeURIComponent(varName)}`); + if (val === "") { + vals.push(ifEmpty); + } else { + vals.push("="); + } + } + vals.push(encodeComponent(val, reserved, op)); + isFirst = false; + } + } else if (typeof value === "object") { + for (const key of Object.keys(value)) { + const val = value[key]; + if (!isDefined(val)) { + continue; + } + // prepare the following parts: separator, key, value + vals.push(`${getFirstOrSep(op, isFirst)}`); + if (key) { + vals.push(`${encodeURIComponent(key)}`); + if (named && val === "") { + vals.push(ifEmpty); + } else { + vals.push("="); + } + } + vals.push(encodeComponent(val, reserved, op)); + isFirst = false; + } + } + return vals.join(""); +} + +function getNonExpandedValue(option: ValueOptions): string | undefined { + const { op, varName, varValue: value, isFirst, reserved } = option; + const vals: string[] = []; + const first = getFirstOrSep(op, isFirst); + const [named, ifEmpty] = getNamedAndIfEmpty(op); + if (named && varName) { + vals.push(encodeComponent(varName, reserved, op)); + if (value === "") { + if (!ifEmpty) { + vals.push(ifEmpty); + } + return !vals.join("") ? undefined : `${first}${vals.join("")}`; + } + vals.push("="); + } + + const items = []; + if (Array.isArray(value)) { + for (const val of value.filter(isDefined)) { + items.push(encodeComponent(val, reserved, op)); + } + } else if (typeof value === "object") { + for (const key of Object.keys(value)) { + if (!isDefined(value[key])) { + continue; + } + items.push(encodeRFC3986URIComponent(key)); + items.push(encodeComponent(value[key], reserved, op)); + } + } + vals.push(items.join(",")); + return !vals.join(",") ? undefined : `${first}${vals.join("")}`; +} + +function getVarValue(option: ValueOptions): string | undefined { + const { op, varName, modifier, isFirst, reserved, varValue: value } = option; + + if (!isDefined(value)) { + return undefined; + } else if (["string", "number", "boolean"].includes(typeof value)) { + let val = value.toString(); + const [named, ifEmpty] = getNamedAndIfEmpty(op); + const vals: string[] = [getFirstOrSep(op, isFirst)]; + if (named && varName) { + // No need to encode varName considering it is already encoded + vals.push(varName); + if (val === "") { + vals.push(ifEmpty); + } else { + vals.push("="); + } + } + if (modifier && modifier !== "*") { + val = val.substring(0, parseInt(modifier, 10)); + } + vals.push(encodeComponent(val, reserved, op)); + return vals.join(""); + } else if (modifier === "*") { + return getExpandedValue(option); + } else { + return getNonExpandedValue(option); + } +} + +// --------------------------------------------------------------------------------------------------- +// This is an implementation of RFC 6570 URI Template: https://datatracker.ietf.org/doc/html/rfc6570. +// --------------------------------------------------------------------------------------------------- +export function expandUrlTemplate( + template: string, + context: Record, + option?: UrlTemplateOptions, +): string { + const result = template.replace(/\{([^{}]+)\}|([^{}]+)/g, (_, expr, text) => { + if (!expr) { + return encodeReservedComponent(text); + } + let op; + if (["+", "#", ".", "/", ";", "?", "&"].includes(expr[0])) { + op = expr[0]; + expr = expr.slice(1); + } + const varList = expr.split(/,/g); + const innerResult = []; + for (const varSpec of varList) { + const varMatch = /([^:*]*)(?::(\d+)|(\*))?/.exec(varSpec); + if (!varMatch || !varMatch[1]) { + continue; + } + const varValue = getVarValue({ + isFirst: innerResult.length === 0, + op, + varValue: context[varMatch[1]], + varName: varMatch[1], + modifier: varMatch[2] || varMatch[3], + reserved: option?.allowReserved, + }); + if (varValue) { + innerResult.push(varValue); + } + } + return innerResult.join(""); + }); + + return normalizeUnreserved(result); +} + +/** + * Normalize an expanded URI by decoding percent-encoded unreserved characters. + * RFC 3986 unreserved: "-" / "." / "~" + */ +function normalizeUnreserved(uri: string): string { + return uri.replace(/%([0-9A-Fa-f]{2})/g, (match, hex) => { + const char = String.fromCharCode(parseInt(hex, 16)); + // Decode only if it's unreserved + if (/[.~-]/.test(char)) { + return char; + } + return match; // leave other encodings intact + }); +} diff --git a/sdk/appnetwork/arm-appnetwork/test/public/sampleTest.spec.ts b/sdk/appnetwork/arm-appnetwork/test/public/sampleTest.spec.ts new file mode 100644 index 000000000000..02e40ba0c606 --- /dev/null +++ b/sdk/appnetwork/arm-appnetwork/test/public/sampleTest.spec.ts @@ -0,0 +1,28 @@ +// Copyright (c) Microsoft Corporation. +// Licensed under the MIT License. + +// import { Recorder } from "@azure-tools/test-recorder"; +// import { createRecorder } from "./utils/recordedClient.js"; +import { + assert, + // beforeEach, + // afterEach, + it, + describe, +} from "vitest"; + +describe("My test", () => { + // let recorder: Recorder; + + // beforeEach(async function(ctx) { + // recorder = await createRecorder(ctx); + // }); + + // afterEach(async function() { + // await recorder.stop(); + // }); + + it("sample test", async function () { + assert.equal(1, 1); + }); +}); diff --git a/sdk/appnetwork/arm-appnetwork/test/public/utils/recordedClient.ts b/sdk/appnetwork/arm-appnetwork/test/public/utils/recordedClient.ts new file mode 100644 index 000000000000..285e4643c45e --- /dev/null +++ b/sdk/appnetwork/arm-appnetwork/test/public/utils/recordedClient.ts @@ -0,0 +1,24 @@ +// Copyright (c) Microsoft Corporation. +// Licensed under the MIT License. + +import type { RecorderStartOptions, VitestTestContext } from "@azure-tools/test-recorder"; +import { Recorder } from "@azure-tools/test-recorder"; + +const replaceableVariables: Record = { + SUBSCRIPTION_ID: "azure_subscription_id", +}; + +const recorderEnvSetup: RecorderStartOptions = { + envSetupForPlayback: replaceableVariables, +}; + +/** + * creates the recorder and reads the environment variables from the `.env` file. + * Should be called first in the test suite to make sure environment variables are + * read before they are being used. + */ +export async function createRecorder(context: VitestTestContext): Promise { + const recorder = new Recorder(context); + await recorder.start(recorderEnvSetup); + return recorder; +} diff --git a/sdk/appnetwork/arm-appnetwork/test/snippets.spec.ts b/sdk/appnetwork/arm-appnetwork/test/snippets.spec.ts new file mode 100644 index 000000000000..777a5082029d --- /dev/null +++ b/sdk/appnetwork/arm-appnetwork/test/snippets.spec.ts @@ -0,0 +1,27 @@ +// Copyright (c) Microsoft Corporation. +// Licensed under the MIT License. + +import { AppLinkClient } from "../src/index.js"; +import { DefaultAzureCredential, InteractiveBrowserCredential } from "@azure/identity"; +import { setLogLevel } from "@azure/logger"; +import { describe, it } from "vitest"; + +describe("snippets", () => { + it("ReadmeSampleCreateClient_Node", async () => { + const subscriptionId = "00000000-0000-0000-0000-000000000000"; + const client = new AppLinkClient(new DefaultAzureCredential(), subscriptionId); + }); + + it("ReadmeSampleCreateClient_Browser", async () => { + const credential = new InteractiveBrowserCredential({ + tenantId: "", + clientId: "", + }); + const subscriptionId = "00000000-0000-0000-0000-000000000000"; + const client = new AppLinkClient(credential, subscriptionId); + }); + + it("SetLogLevel", async () => { + setLogLevel("info"); + }); +}); diff --git a/sdk/appnetwork/arm-appnetwork/tsconfig.browser.config.json b/sdk/appnetwork/arm-appnetwork/tsconfig.browser.config.json new file mode 100644 index 000000000000..48443e4f3526 --- /dev/null +++ b/sdk/appnetwork/arm-appnetwork/tsconfig.browser.config.json @@ -0,0 +1,10 @@ +{ + "extends": "../../../tsconfig.browser.base.json", + "compilerOptions": { + "paths": { + "@azure/arm-appnetwork": ["./dist/browser/index.d.ts"], + "@azure/arm-appnetwork/*": ["./dist/browser/*"], + "$internal/*": ["./dist/browser/*"] + } + } +} diff --git a/sdk/appnetwork/arm-appnetwork/tsconfig.json b/sdk/appnetwork/arm-appnetwork/tsconfig.json new file mode 100644 index 000000000000..0e57dbd186e5 --- /dev/null +++ b/sdk/appnetwork/arm-appnetwork/tsconfig.json @@ -0,0 +1,16 @@ +{ + "references": [ + { + "path": "./tsconfig.src.json" + }, + { + "path": "./tsconfig.samples.json" + }, + { + "path": "./tsconfig.test.json" + }, + { + "path": "./tsconfig.snippets.json" + } + ] +} diff --git a/sdk/appnetwork/arm-appnetwork/tsconfig.samples.json b/sdk/appnetwork/arm-appnetwork/tsconfig.samples.json new file mode 100644 index 000000000000..fafac0160b68 --- /dev/null +++ b/sdk/appnetwork/arm-appnetwork/tsconfig.samples.json @@ -0,0 +1,8 @@ +{ + "extends": "../../../tsconfig.samples.base.json", + "compilerOptions": { + "paths": { + "@azure/arm-appnetwork": ["./dist/esm"] + } + } +} diff --git a/sdk/appnetwork/arm-appnetwork/tsconfig.snippets.json b/sdk/appnetwork/arm-appnetwork/tsconfig.snippets.json new file mode 100644 index 000000000000..6f3148b5ed97 --- /dev/null +++ b/sdk/appnetwork/arm-appnetwork/tsconfig.snippets.json @@ -0,0 +1,3 @@ +{ + "extends": ["../../../tsconfig.snippets.base.json"] +} diff --git a/sdk/appnetwork/arm-appnetwork/tsconfig.src.json b/sdk/appnetwork/arm-appnetwork/tsconfig.src.json new file mode 100644 index 000000000000..bae70752dd38 --- /dev/null +++ b/sdk/appnetwork/arm-appnetwork/tsconfig.src.json @@ -0,0 +1,3 @@ +{ + "extends": "../../../tsconfig.lib.json" +} diff --git a/sdk/appnetwork/arm-appnetwork/tsconfig.test.json b/sdk/appnetwork/arm-appnetwork/tsconfig.test.json new file mode 100644 index 000000000000..42798ad68913 --- /dev/null +++ b/sdk/appnetwork/arm-appnetwork/tsconfig.test.json @@ -0,0 +1,14 @@ +{ + "references": [ + { + "path": "./tsconfig.test.node.json" + }, + { + "path": "./tsconfig.browser.config.json" + } + ], + "compilerOptions": { + "composite": true + }, + "files": [] +} diff --git a/sdk/appnetwork/arm-appnetwork/tsconfig.test.node.json b/sdk/appnetwork/arm-appnetwork/tsconfig.test.node.json new file mode 100644 index 000000000000..848e8bad6023 --- /dev/null +++ b/sdk/appnetwork/arm-appnetwork/tsconfig.test.node.json @@ -0,0 +1,10 @@ +{ + "extends": "../../../tsconfig.test.node.base.json", + "compilerOptions": { + "paths": { + "@azure/arm-appnetwork": ["./src/index.ts"], + "@azure/arm-appnetwork/*": ["./src/*"], + "$internal/*": ["./src/*"] + } + } +} diff --git a/sdk/appnetwork/arm-appnetwork/tsp-location.yaml b/sdk/appnetwork/arm-appnetwork/tsp-location.yaml new file mode 100644 index 000000000000..30d424b1485f --- /dev/null +++ b/sdk/appnetwork/arm-appnetwork/tsp-location.yaml @@ -0,0 +1,4 @@ +directory: specification/applink/AppLink.Management +commit: c3ea6c260efef4897cb0ea5cc2f570d85bd2041e +repo: Azure/azure-rest-api-specs +additionalDirectories: diff --git a/sdk/appnetwork/arm-appnetwork/vitest.browser.config.ts b/sdk/appnetwork/arm-appnetwork/vitest.browser.config.ts new file mode 100644 index 000000000000..72964f281efe --- /dev/null +++ b/sdk/appnetwork/arm-appnetwork/vitest.browser.config.ts @@ -0,0 +1,6 @@ +// Copyright (c) Microsoft Corporation. +// Licensed under the MIT License. + +import viteConfig from "../../../vitest.browser.shared.config.ts"; + +export default viteConfig; diff --git a/sdk/appnetwork/arm-appnetwork/vitest.config.ts b/sdk/appnetwork/arm-appnetwork/vitest.config.ts new file mode 100644 index 000000000000..0dfa15cc4498 --- /dev/null +++ b/sdk/appnetwork/arm-appnetwork/vitest.config.ts @@ -0,0 +1,6 @@ +// Copyright (c) Microsoft Corporation. +// Licensed under the MIT License. + +import viteConfig from "../../../vitest.shared.config.ts"; + +export default viteConfig; diff --git a/sdk/appnetwork/arm-appnetwork/vitest.esm.config.ts b/sdk/appnetwork/arm-appnetwork/vitest.esm.config.ts new file mode 100644 index 000000000000..5e9735e9b144 --- /dev/null +++ b/sdk/appnetwork/arm-appnetwork/vitest.esm.config.ts @@ -0,0 +1,8 @@ +// Copyright (c) Microsoft Corporation. +// Licensed under the MIT License. + +import { mergeConfig } from "vitest/config"; +import vitestConfig from "./vitest.config.ts"; +import vitestEsmConfig from "../../../vitest.esm.shared.config.ts"; + +export default mergeConfig(vitestConfig, vitestEsmConfig); diff --git a/sdk/appnetwork/arm-appnetwork/warp.config.yml b/sdk/appnetwork/arm-appnetwork/warp.config.yml new file mode 100644 index 000000000000..fffad954aa85 --- /dev/null +++ b/sdk/appnetwork/arm-appnetwork/warp.config.yml @@ -0,0 +1,29 @@ +# warp.config.yml — build configuration + +exports: + "./package.json": "./package.json" + ".": "./src/index.ts" + "./api": "./src/api/index.ts" + "./api/availableVersions": "src/api/availableVersions/index.ts" + "./api/upgradeHistories": "src/api/upgradeHistories/index.ts" + "./api/appLinkMembers": "src/api/appLinkMembers/index.ts" + "./api/appLinks": "src/api/appLinks/index.ts" + "./api/operations": "src/api/operations/index.ts" + "./models": "./src/models/index.ts" + +targets: + - name: browser + tsconfig: "../../../tsconfig.src.browser.json" + polyfillSuffix: "-browser" + + - name: react-native + tsconfig: "../../../tsconfig.src.react-native.json" + polyfillSuffix: "-react-native" + + - name: esm + condition: import + tsconfig: "../../../tsconfig.src.esm.json" + + - name: commonjs + condition: require + tsconfig: "../../../tsconfig.src.cjs.json" diff --git a/sdk/appnetwork/ci.mgmt.yml b/sdk/appnetwork/ci.mgmt.yml new file mode 100644 index 000000000000..925aaeeaf47f --- /dev/null +++ b/sdk/appnetwork/ci.mgmt.yml @@ -0,0 +1,35 @@ +# NOTE: Please refer to https://aka.ms/azsdk/engsys/ci-yaml before editing this file. + +trigger: + branches: + include: + - main + - feature/* + - release/* + - hotfix/* + exclude: + - feature/v4 + paths: + include: + - sdk/appnetwork/arm-appnetwork + - sdk/appnetwork/ci.mgmt.yml +pr: + branches: + include: + - main + - feature/* + - release/* + - hotfix/* + exclude: + - feature/v4 + paths: + include: + - sdk/appnetwork/arm-appnetwork + - sdk/appnetwork/ci.mgmt.yml +extends: + template: /eng/pipelines/templates/stages/archetype-sdk-client.yml + parameters: + ServiceDirectory: appnetwork + Artifacts: + - name: azure-arm-appnetwork + safeName: azurearmappnetwork