diff --git a/common/config/rush/common-versions.json b/common/config/rush/common-versions.json index 6998f9ce9fde..98ee83e5af85 100644 --- a/common/config/rush/common-versions.json +++ b/common/config/rush/common-versions.json @@ -69,9 +69,12 @@ // @azure/event-processor-host is on a much lower major version "@azure/ms-rest-nodeauth": ["^0.9.2"], // Idenity is moving from v1 to v2. Moving all packages to v2 is going to take a bit of time, in the mean time we could use v2 on the perf-identity tests. - "@azure/identity": ["2.0.0-beta.3", "^1.1.0"], + "@azure/identity": ["^2.0.0-beta.4", "2.0.0-beta.3", "^1.1.0"], + // App Config uses keyvault-secrets in a sample, switch to latest once the preview becomes GA // Issue #14771 tracks updating to these versions "@microsoft/api-extractor": ["7.13.2"], - "prettier": ["2.2.1"] + "prettier": ["2.2.1"], + // All packages should move to 1.0.0-preview.12 once core-rest-pipeline 1.1.0 GAs + "@azure/core-tracing": ["1.0.0-preview.11"] } } diff --git a/common/config/rush/pnpm-lock.yaml b/common/config/rush/pnpm-lock.yaml index 001264213125..6e5303ec974d 100644 --- a/common/config/rush/pnpm-lock.yaml +++ b/common/config/rush/pnpm-lock.yaml @@ -39,6 +39,8 @@ dependencies: '@rush-temp/eventgrid': file:projects/eventgrid.tgz '@rush-temp/eventhubs-checkpointstore-blob': file:projects/eventhubs-checkpointstore-blob.tgz '@rush-temp/identity': file:projects/identity.tgz + '@rush-temp/identity-cache-persistence': file:projects/identity-cache-persistence.tgz + '@rush-temp/identity-vscode': file:projects/identity-vscode.tgz '@rush-temp/iot-device-update': file:projects/iot-device-update.tgz '@rush-temp/iot-modelsrepository': file:projects/iot-modelsrepository.tgz '@rush-temp/keyvault-admin': file:projects/keyvault-admin.tgz @@ -436,30 +438,6 @@ packages: node: '>=8.0.0' resolution: integrity: sha512-eOHstXRBRntoqBLi3bugYBEHpYkm0JiET6y5+P1fz7dqYRFN6hJW8qMJQtYIzIbpXJfRJTJdoiOS5fDQhsez0A== - /@azure/identity/2.0.0-beta.3_debug@4.3.1: - dependencies: - '@azure/abort-controller': 1.0.4 - '@azure/core-http': 1.2.6 - '@azure/core-tracing': 1.0.0-preview.11 - '@azure/logger': 1.0.2 - '@azure/msal-browser': 2.9.0 - '@azure/msal-common': 4.0.3 - '@azure/msal-node': 1.1.0_debug@4.3.1 - '@types/stoppable': 1.1.1 - events: 3.3.0 - jws: 4.0.0 - open: 7.4.2 - qs: 6.10.1 - stoppable: 1.1.0 - tslib: 2.3.0 - uuid: 8.3.2 - dev: false - engines: - node: '>=8.0.0' - peerDependencies: - debug: '*' - resolution: - integrity: sha512-eOHstXRBRntoqBLi3bugYBEHpYkm0JiET6y5+P1fz7dqYRFN6hJW8qMJQtYIzIbpXJfRJTJdoiOS5fDQhsez0A== /@azure/keyvault-certificates/4.2.0: dependencies: '@azure/abort-controller': 1.0.4 @@ -612,6 +590,14 @@ packages: node: '>=0.8.0' resolution: integrity: sha512-Zyus+skNaVWL5fXfSjC17c94XZ95Z3a+bZc7YKkP26KT3Dj26jbfz2oT9KJxAT4XVtH/1WPY/fPFeEFTRvytJQ== + /@azure/msal-common/1.7.2: + dependencies: + debug: 4.3.1 + dev: false + engines: + node: '>=0.8.0' + resolution: + integrity: sha512-3/voCdFKONENX+5tMrNOBSrVJb6NbE7YB8vc4FZ/4ZbjpK7GVtq9Bu1MW+HZhrmsUzSF/joHx0ZIJDYIequ/jg== /@azure/msal-common/2.1.0: dependencies: debug: 4.3.1 @@ -636,6 +622,18 @@ packages: node: '>=0.8.0' resolution: integrity: sha512-jFqUWe83wVb6O8cNGGBFg2QlKvqM1ezUgJTEV7kIsAPX0RXhGFE4B1DLNt6hCnkTXDbw+KGW0zgxOEr4MJQwLw== + /@azure/msal-node-extensions/1.0.0-alpha.6: + dependencies: + '@azure/msal-common': 1.7.2 + bindings: 1.5.0 + keytar: 7.0.0 + nan: 2.14.2 + dev: false + engines: + node: '>=10' + requiresBuild: true + resolution: + integrity: sha512-fVufHc02C+daYOMAHBnE998abB4qUIeJ9gmTxmSelHhGfBGvvzMbCohCu4sTlSVDKUndF3yD/Nxvw/cEtpcZKg== /@azure/msal-node/1.0.0-beta.6: dependencies: '@azure/msal-common': 4.3.0 @@ -667,19 +665,6 @@ packages: node: 10 || 12 || 14 || 16 resolution: integrity: sha512-gMO9aZdWOzufp1PcdD5ID25DdS9eInxgeCqx4Tk8PVU6Z7RxJQhoMzS64cJhGdpYgeIQwKljtF0CLCcPFxew/w== - /@azure/msal-node/1.1.0_debug@4.3.1: - dependencies: - '@azure/msal-common': 4.3.0 - axios: 0.21.1_debug@4.3.1 - jsonwebtoken: 8.5.1 - uuid: 8.3.2 - dev: false - engines: - node: 10 || 12 || 14 || 16 - peerDependencies: - debug: '*' - resolution: - integrity: sha512-gMO9aZdWOzufp1PcdD5ID25DdS9eInxgeCqx4Tk8PVU6Z7RxJQhoMzS64cJhGdpYgeIQwKljtF0CLCcPFxew/w== /@babel/code-frame/7.12.11: dependencies: '@babel/highlight': 7.14.5 @@ -711,7 +696,7 @@ packages: '@babel/template': 7.14.5 '@babel/traverse': 7.14.5 '@babel/types': 7.14.5 - convert-source-map: 1.7.0 + convert-source-map: 1.8.0 debug: 4.3.1 gensync: 1.0.0-beta.2 json5: 2.2.0 @@ -977,7 +962,7 @@ packages: resolve: 1.17.0 semver: 7.3.5 source-map: 0.6.1 - typescript: 4.1.5 + typescript: 4.1.6 dev: false hasBin: true resolution: @@ -1062,22 +1047,28 @@ packages: node: '>=8.0.0' resolution: integrity: sha512-pKNxHe3AJ5T2N5G3AlT9gx6FyF5K2FS9ZNc+FipC+f1CpVF/EY+JHTJ749dnM2kWIgZTbDJFiGMuc0FYjNSCOg== + /@opentelemetry/api/0.20.0: + dev: false + engines: + node: '>=8.0.0' + resolution: + integrity: sha512-n06MtDYEc2H07S/NTvGMlxF2Ijp0YbNrI/rBgLcxpEh3hxOkPZA12gxlUoZkBHWCZYau2j3b/uL+QFpiQKOjSw== /@opentelemetry/api/1.0.0-rc.0: dev: false engines: node: '>=8.0.0' resolution: integrity: sha512-iXKByCMfrlO5S6Oh97BuM56tM2cIBB0XsL/vWF/AtJrJEKx4MC/Xdu0xDsGXMGcNWpqF7ujMsjjnp0+UHBwnDQ== - /@opentelemetry/context-async-hooks/0.19.0_@opentelemetry+api@1.0.0-rc.0: + /@opentelemetry/context-async-hooks/0.20.0_@opentelemetry+api@0.20.0: dependencies: - '@opentelemetry/api': 1.0.0-rc.0 + '@opentelemetry/api': 0.20.0 dev: false engines: node: '>=8.1.0' peerDependencies: - '@opentelemetry/api': ^1.0.0-rc.0 + '@opentelemetry/api': ^0.20.0 resolution: - integrity: sha512-+lkG1nw3XJMm5dkOlwa9tZ6PQOJmH8moMEXzty10PlmvTcJgIq+gW8iHIPLocNTkuKKh+B/vNDVURJOSarAJUg== + integrity: sha512-4cuTIPpufWRDdShtvT0c30/jHfO9eXzUh6tU087J8aO8J/hckyCIlN03eB7pfqPwQzLnWONGdHOpGjLSY7q4tg== /@opentelemetry/context-base/0.10.2: dev: false engines: @@ -1093,54 +1084,56 @@ packages: node: '>=8.5.0' resolution: integrity: sha512-WG8veOEd8xZHuBaOHddzWQg5yj794lrEPAe6W1qI0YkV7pyqYXvhJdCxOU5Lyo1SWzTAjI5xrCUQ9J2WlrqzYA== - /@opentelemetry/core/0.19.0_@opentelemetry+api@1.0.0-rc.0: + /@opentelemetry/core/0.20.0_@opentelemetry+api@0.20.0: dependencies: - '@opentelemetry/api': 1.0.0-rc.0 + '@opentelemetry/api': 0.20.0 + '@opentelemetry/semantic-conventions': 0.20.0 semver: 7.3.5 dev: false engines: node: '>=8.5.0' peerDependencies: - '@opentelemetry/api': ^1.0.0-rc.0 + '@opentelemetry/api': ^0.20.0 resolution: - integrity: sha512-t83FleVbHH6SWdUegclZbsnHn0OaHjq17Hd1zsJIRMM6WNuVzbXWA+3V6LCKXqUYyu3qwtZ/w45u/Nqfr5mEeQ== - /@opentelemetry/node/0.19.0_@opentelemetry+api@1.0.0-rc.0: + integrity: sha512-09zQqB4vp2jcyBnglA/TFklDQoVgWrFKtr9pDm0q3Oa1bD2Hwpq+JapBAw18YdMQsLNQM/qsXhFlS3gFDVEy4A== + /@opentelemetry/node/0.20.0_@opentelemetry+api@0.20.0: dependencies: - '@opentelemetry/api': 1.0.0-rc.0 - '@opentelemetry/context-async-hooks': 0.19.0_@opentelemetry+api@1.0.0-rc.0 - '@opentelemetry/core': 0.19.0_@opentelemetry+api@1.0.0-rc.0 - '@opentelemetry/propagator-b3': 0.19.0_@opentelemetry+api@1.0.0-rc.0 - '@opentelemetry/propagator-jaeger': 0.19.0_@opentelemetry+api@1.0.0-rc.0 - '@opentelemetry/tracing': 0.19.0_@opentelemetry+api@1.0.0-rc.0 + '@opentelemetry/api': 0.20.0 + '@opentelemetry/context-async-hooks': 0.20.0_@opentelemetry+api@0.20.0 + '@opentelemetry/core': 0.20.0_@opentelemetry+api@0.20.0 + '@opentelemetry/propagator-b3': 0.20.0_@opentelemetry+api@0.20.0 + '@opentelemetry/propagator-jaeger': 0.20.0_@opentelemetry+api@0.20.0 + '@opentelemetry/tracing': 0.20.0_@opentelemetry+api@0.20.0 semver: 7.3.5 dev: false engines: node: '>=8.0.0' peerDependencies: - '@opentelemetry/api': ^1.0.0-rc.0 + '@opentelemetry/api': ^0.20.0 resolution: - integrity: sha512-mfUw4pEHoF6RLfO36yY3gv8BxNX1sItb16HwY27ipRO92BUKRZyclWI5XgpgPkBjZ07bbPwmru+mBOBVyadtOQ== - /@opentelemetry/propagator-b3/0.19.0_@opentelemetry+api@1.0.0-rc.0: + integrity: sha512-MVwnH/AoHQTz1jOhJTYXoAoQD4CA/3L7QQkiiA93f6QGaWKIHjI/+3fUtA/GCfPR9Kf0sItQ/aag8KtCJClPCw== + /@opentelemetry/propagator-b3/0.20.0_@opentelemetry+api@0.20.0: dependencies: - '@opentelemetry/api': 1.0.0-rc.0 + '@opentelemetry/api': 0.20.0 + '@opentelemetry/core': 0.20.0_@opentelemetry+api@0.20.0 dev: false engines: node: '>=8.0.0' peerDependencies: - '@opentelemetry/api': ^1.0.0-rc.0 + '@opentelemetry/api': ^0.20.0 resolution: - integrity: sha512-/4ef5RA5xtzPAdtab9ml49DUd8I9mtLtUb3k3HfNYAy5RkJfJ5j4lpnUe0ZFPCOsonGyFHjtkN4s1j9MGHT5cQ== - /@opentelemetry/propagator-jaeger/0.19.0_@opentelemetry+api@1.0.0-rc.0: + integrity: sha512-TGI2D45oUVlbXVEWDedqxwO0WUtzchN/tuYghEHjRTNcVLLKT2ci9JwzHormC+ls98SYPDfvuzpB0+ParoexPQ== + /@opentelemetry/propagator-jaeger/0.20.0_@opentelemetry+api@0.20.0: dependencies: - '@opentelemetry/api': 1.0.0-rc.0 - '@opentelemetry/core': 0.19.0_@opentelemetry+api@1.0.0-rc.0 + '@opentelemetry/api': 0.20.0 + '@opentelemetry/core': 0.20.0_@opentelemetry+api@0.20.0 dev: false engines: node: '>=8.5.0' peerDependencies: - '@opentelemetry/api': ^1.0.0-rc.0 + '@opentelemetry/api': ^0.20.0 resolution: - integrity: sha512-y2HgU5JzBKIJvRnlhRdcnokWKe7doWlBK60bTWawMYhThproa5Pn4h7dOKSnvtcBljhugXqkfhI8nkg3Syzwyw== + integrity: sha512-6kdnd1ePADx4XDaFw4Ea47fdIZohhJbd30Fc4yvl0DO+RR5WEAiAho0IsoTj6L/qvOb/+LAfvjvdk2UOXgb/3Q== /@opentelemetry/resources/0.18.2: dependencies: '@opentelemetry/api': 0.18.1 @@ -1150,29 +1143,30 @@ packages: node: '>=8.0.0' resolution: integrity: sha512-EBPqFsreXgFaqkMmWCE8vh6pFhbWExRHSO24qSeGhxFmM5SQP/D1jJqMp/jVUSmrF97fPkMS0aEH5z7NOWdxQA== - /@opentelemetry/resources/0.19.0_@opentelemetry+api@1.0.0-rc.0: + /@opentelemetry/resources/0.20.0_@opentelemetry+api@0.20.0: dependencies: - '@opentelemetry/api': 1.0.0-rc.0 - '@opentelemetry/core': 0.19.0_@opentelemetry+api@1.0.0-rc.0 + '@opentelemetry/api': 0.20.0 + '@opentelemetry/core': 0.20.0_@opentelemetry+api@0.20.0 + '@opentelemetry/semantic-conventions': 0.20.0 dev: false engines: node: '>=8.0.0' peerDependencies: - '@opentelemetry/api': ^1.0.0-rc.0 + '@opentelemetry/api': ^0.20.0 resolution: - integrity: sha512-wrgclhxBH4ZO86u6veSXRtH3hv9q2kaQ1/cfstWun2y6YqjajpqAdyEHrlFWYyjr3t1ze0R68GjYQxPVWYURzg== + integrity: sha512-nnd3vIM+A9ih6kOVBc2CF5NkTYmdNci5aQ+A5lQjf3HqjEptcGubpg1J1Q84LSFVoITvuH2O6+GhPBrdxYBt8g== /@opentelemetry/semantic-conventions/0.18.2: dev: false engines: node: '>=8.0.0' resolution: integrity: sha512-+0P+PrP9qSFVaayNdek4P1OAGE+PEl2SsufuHDRmUpOY25Wzjo7Atyar56Trjc32jkNy4lID6ZFT6BahsR9P9A== - /@opentelemetry/semantic-conventions/0.19.0: + /@opentelemetry/semantic-conventions/0.20.0: dev: false engines: node: '>=8.0.0' resolution: - integrity: sha512-MMXhYEvNakvXC+oa5muX8KS2z+rsXLXwabjuzXcbJPH+rvo5XFNQ1c7svxb0B1xPpm4KT7fnH2DVfYqQzsCteQ== + integrity: sha512-x40C3vQMttFlnNEfhFwO49jHrY6AoWnntL35TCem3LINr/aw1W0hGhdKY/zweC64CBJEyiHumaae480rqF8eOA== /@opentelemetry/tracing/0.18.2: dependencies: '@opentelemetry/api': 0.18.1 @@ -1185,20 +1179,20 @@ packages: node: '>=8.0.0' resolution: integrity: sha512-IQSu+NwMhX8O9Wkjc4HjNqs/aKfkcInCE3dQuAOBBec/saLrM6jqd+Fa5QUzg03WMOqpDuZm5KTkr5+6DUrr0g== - /@opentelemetry/tracing/0.19.0_@opentelemetry+api@1.0.0-rc.0: + /@opentelemetry/tracing/0.20.0_@opentelemetry+api@0.20.0: dependencies: - '@opentelemetry/api': 1.0.0-rc.0 - '@opentelemetry/core': 0.19.0_@opentelemetry+api@1.0.0-rc.0 - '@opentelemetry/resources': 0.19.0_@opentelemetry+api@1.0.0-rc.0 - '@opentelemetry/semantic-conventions': 0.19.0 + '@opentelemetry/api': 0.20.0 + '@opentelemetry/core': 0.20.0_@opentelemetry+api@0.20.0 + '@opentelemetry/resources': 0.20.0_@opentelemetry+api@0.20.0 + '@opentelemetry/semantic-conventions': 0.20.0 lodash.merge: 4.6.2 dev: false engines: node: '>=8.0.0' peerDependencies: - '@opentelemetry/api': ^1.0.0-rc.0 + '@opentelemetry/api': ^0.20.0 resolution: - integrity: sha512-RUmPZLQi4+nlHwTFpHqU45TMW+osIraDtf0jcFKLacKltGIft65tVxIEVn1uF9N9eG7NZzjXLo3jsvCzpavJ8Q== + integrity: sha512-8ZIH0IBxIucgza0BFNiCCLByUsvu45Dm5k292RlO/E8Z1q/J7otJmh9r/EkaFb0ZSyjNdawmJ1CXnlU7+IQN1w== /@rollup/plugin-commonjs/11.0.2_rollup@1.32.1: dependencies: '@rollup/pluginutils': 3.1.0_rollup@1.32.1 @@ -1384,20 +1378,20 @@ packages: integrity: sha512-W98JrE0j2K78swW4ukqMleo8R7h/pFETjM2DQ90MF6XK2i4LO4W3gQ71Lt4w3bfm2EvVSyWHplECvB5sK22yFQ== /@types/chai-as-promised/7.1.4: dependencies: - '@types/chai': 4.2.18 + '@types/chai': 4.2.19 dev: false resolution: integrity: sha512-1y3L1cHePcIm5vXkh1DSGf/zQq5n5xDKG1fpCvf18+uOkpce0Z1ozNFPkyWsVswK7ntN1sZBw3oU6gmN+pDUcA== /@types/chai-string/1.4.2: dependencies: - '@types/chai': 4.2.18 + '@types/chai': 4.2.19 dev: false resolution: integrity: sha512-ld/1hV5qcPRGuwlPdvRfvM3Ka/iofOk2pH4VkasK4b1JJP1LjNmWWn0LsISf6RRzyhVOvs93rb9tM09e+UuF8Q== - /@types/chai/4.2.18: + /@types/chai/4.2.19: dev: false resolution: - integrity: sha512-rS27+EkB/RE1Iz3u0XtVL5q36MGDWbgYe7zWiodyKNUnthxY0rukK5V36eiUCtCisB7NN8zKYH6DO2M37qxFEQ== + integrity: sha512-jRJgpRBuY+7izT7/WNXP/LsMO9YonsstuL+xuvycDyESpoDoIAsMd7suwpB4h9oEWB+ZlPTqJJ8EHomzNhwTPQ== /@types/component-emitter/1.2.10: dev: false resolution: @@ -1486,12 +1480,12 @@ packages: dev: false resolution: integrity: sha1-7ihweulOEdK4J7y+UnC86n8+ce4= - /@types/jsonwebtoken/8.5.1: + /@types/jsonwebtoken/8.5.2: dependencies: '@types/node': 8.10.66 dev: false resolution: - integrity: sha512-rNAPdomlIUX0i0cg2+I+Q1wOUr531zHBQ+cV/28PJ39bSPKjahatZZ2LMuhiguETkCgLVzfruw/ZvNMNkKoSzw== + integrity: sha512-X8BOCkp+WJVNYCYIBugREtVZa4Y09Or9HDx6xqRZem5F8jJV8FuJgNessXyMuv9+U8pjnvdezASwU28uw+1scw== /@types/jws/3.2.3: dependencies: '@types/node': 8.10.66 @@ -1563,10 +1557,10 @@ packages: dev: false resolution: integrity: sha512-F0KIgDJfy2nA3zMLmWGKxcH2ZVEtCZXHHdOQs2gSaQ27+lNeEfGxzkIw90aXswATX7AZ33tahPbzy6KAfUreVw== - /@types/node/15.12.2: + /@types/node/15.12.4: dev: false resolution: - integrity: sha512-zjQ69G564OCIWIOHSXyQEEDpdpGl+G348RAKY0XXy9Z5kU9Vzv1GMNnkar/ZJ8dzXB3COzD9Mo9NtRZ4xfgUww== + integrity: sha512-zrNj1+yqYF4WskCMOHwN+w9iuD12+dGm0rQ35HLl9/Ouuq52cEtd0CH9qMgrdNmi5ejC1/V7vKEXYubB+65DkA== /@types/node/8.10.66: dev: false resolution: @@ -1593,7 +1587,7 @@ packages: integrity: sha512-ewFXqrQHlFsgc09MK5jP5iR7vumV/BYayNC6PgJO2LPe8vrnNFyjQjSppfEngITi0qvfKtzFvgKymGheFM9UOA== /@types/resolve/1.17.1: dependencies: - '@types/node': 15.12.2 + '@types/node': 8.10.66 dev: false resolution: integrity: sha512-yy7HuzQhj0dhGpD8RLXSZWEkLsV9ibvxvi6EiJ3bkqLAO1RGo0WbkWQiwpRlSFymTJRz0d3k5LM3kkx8ArDbLw== @@ -1642,12 +1636,12 @@ packages: dev: false resolution: integrity: sha512-eQ9qFW/fhfGJF8WKHGEHZEyVWfZxrT+6CLIJGBcZPfxUh/+BnEj+UCGYMlr9qZuX/2AltsvwrGqp0LhEW8D0zQ== - /@types/ws/7.4.4: + /@types/ws/7.4.5: dependencies: '@types/node': 8.10.66 dev: false resolution: - integrity: sha512-d/7W23JAXPodQNbOZNXvl2K+bqAQrCMwlh/nuQsPSQk6Fq0opHoPrUw43aHsvSbIiQPr8Of2hkFbnz1XBFVyZQ== + integrity: sha512-8mbDgtc8xpxDDem5Gwj76stBDJX35KQ3YBoayxlqUQcL5BZUthiqP/VQ4PQnLHqM4PmlbyO74t98eJpURO+gPA== /@types/xml2js/0.4.8: dependencies: '@types/node': 8.10.66 @@ -1661,13 +1655,13 @@ packages: optional: true resolution: integrity: sha512-A1b8SU4D10uoPjwb0lnHmmu8wZhR9d+9o2PKBQT2jU5YPTKsxac6M2qGAdY7VcL+dHHhARVUDmeg0rOrcd9EjA== - /@typescript-eslint/eslint-plugin/4.19.0_579c993deb6b0313d5d0f5c428bab62d: + /@typescript-eslint/eslint-plugin/4.19.0_32b60b6a5d7033b9e5296983f03a72ce: dependencies: - '@typescript-eslint/experimental-utils': 4.19.0_eslint@7.28.0+typescript@4.2.4 - '@typescript-eslint/parser': 4.19.0_eslint@7.28.0+typescript@4.2.4 + '@typescript-eslint/experimental-utils': 4.19.0_eslint@7.29.0+typescript@4.2.4 + '@typescript-eslint/parser': 4.19.0_eslint@7.29.0+typescript@4.2.4 '@typescript-eslint/scope-manager': 4.19.0 debug: 4.3.1 - eslint: 7.28.0 + eslint: 7.29.0 functional-red-black-tree: 1.0.1 lodash: 4.17.21 regexpp: 3.2.0 @@ -1686,13 +1680,13 @@ packages: optional: true resolution: integrity: sha512-CRQNQ0mC2Pa7VLwKFbrGVTArfdVDdefS+gTw0oC98vSI98IX5A8EVH4BzJ2FOB0YlCmm8Im36Elad/Jgtvveaw== - /@typescript-eslint/experimental-utils/4.19.0_eslint@7.28.0+typescript@4.2.4: + /@typescript-eslint/experimental-utils/4.19.0_eslint@7.29.0+typescript@4.2.4: dependencies: '@types/json-schema': 7.0.7 '@typescript-eslint/scope-manager': 4.19.0 '@typescript-eslint/types': 4.19.0 '@typescript-eslint/typescript-estree': 4.19.0_typescript@4.2.4 - eslint: 7.28.0 + eslint: 7.29.0 eslint-scope: 5.1.1 eslint-utils: 2.1.0 dev: false @@ -1703,13 +1697,13 @@ packages: typescript: '*' resolution: integrity: sha512-9/23F1nnyzbHKuoTqFN1iXwN3bvOm/PRIXSBR3qFAYotK/0LveEOHr5JT1WZSzcD6BESl8kPOG3OoDRKO84bHA== - /@typescript-eslint/parser/4.19.0_eslint@7.28.0+typescript@4.2.4: + /@typescript-eslint/parser/4.19.0_eslint@7.29.0+typescript@4.2.4: dependencies: '@typescript-eslint/scope-manager': 4.19.0 '@typescript-eslint/types': 4.19.0 '@typescript-eslint/typescript-estree': 4.19.0_typescript@4.2.4 debug: 4.3.1 - eslint: 7.28.0 + eslint: 7.29.0 typescript: 4.2.4 dev: false engines: @@ -1742,7 +1736,7 @@ packages: '@typescript-eslint/types': 4.19.0 '@typescript-eslint/visitor-keys': 4.19.0 debug: 4.3.1 - globby: 11.0.3 + globby: 11.0.4 is-glob: 4.0.1 semver: 7.3.5 tsutils: 3.21.0_typescript@4.2.4 @@ -1939,7 +1933,6 @@ packages: integrity: sha512-P009oYkeHyU742iSZJzZZywj4QRJdnTWffaKuJQLablCZ1uz6/cW4yaRgcDaoQ+uwOxxnt0gRUcwfsNP2ri0gw== /aproba/1.2.0: dev: false - optional: true resolution: integrity: sha512-Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw== /archy/1.0.0: @@ -1951,7 +1944,6 @@ packages: delegates: 1.0.0 readable-stream: 2.3.7 dev: false - optional: true resolution: integrity: sha512-5hYdAkZlcG8tOLujVDTgCT+uPX0VnpAH28gWsLfzpXYm7wP6mp5Q/gYyR7YQ0cKVJcXJnl3j2kpBan13PtQf6w== /arg/4.1.3: @@ -2236,6 +2228,12 @@ packages: node: '>=8' resolution: integrity: sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA== + /bindings/1.5.0: + dependencies: + file-uri-to-path: 1.0.0 + dev: false + resolution: + integrity: sha512-p2q/t/mhvuOj/UeLlV6566GD/guowlr0hHxClI0W9m7MWYkL1F0hLo+0Aexs9HSPCtR1SXQ0TD3MMKrXZajbiQ== /bl/4.1.0: dependencies: buffer: 5.7.1 @@ -2286,7 +2284,7 @@ packages: integrity: sha1-rrGvKN5sDXpqLOQK22j/GEIq8x8= /browserslist/4.16.6: dependencies: - caniuse-lite: 1.0.30001237 + caniuse-lite: 1.0.30001239 colorette: 1.2.2 electron-to-chromium: 1.3.752 escalade: 3.1.1 @@ -2370,10 +2368,10 @@ packages: node: '>=6' resolution: integrity: sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg== - /caniuse-lite/1.0.30001237: + /caniuse-lite/1.0.30001239: dev: false resolution: - integrity: sha512-pDHgRndit6p1NR2GhzMbQ6CkRrp4VKuSsqbcLeOQppYPKOYkKT/6ZvZDvKJUqcmtyWIAHuZq3SVS2vc1egCZzw== + integrity: sha512-cyBkXJDMeI4wthy8xJ2FvDU6+0dtcZSJW3voUF8+e9f1bBeuvyZfc3PNbkOETyhbR+dGCPzn9E7MA3iwzusOhQ== /caseless/0.12.0: dev: false resolution: @@ -2529,7 +2527,6 @@ packages: dev: false engines: node: '>=0.10.0' - optional: true resolution: integrity: sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c= /color-convert/1.9.3: @@ -2613,7 +2610,6 @@ packages: integrity: sha512-ZqRXc+tZukToSNmh5C2iWMSoV3X1YUcPbqEM4DkEG5tNQXrQUZCNVGGv3IuicnkMtPfGf3Xtp8WCXs295iQ1pQ== /console-control-strings/1.1.0: dev: false - optional: true resolution: integrity: sha1-PXz0Rk22RG6mRL9LOVB/mFEAjo4= /content-disposition/0.5.3: @@ -2630,12 +2626,12 @@ packages: node: '>= 0.6' resolution: integrity: sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA== - /convert-source-map/1.7.0: + /convert-source-map/1.8.0: dependencies: safe-buffer: 5.1.2 dev: false resolution: - integrity: sha512-4FJkXzKXEDB1snCFZlLP4gpC3JILicCpGbzG9f9G7tGqGCzETQ2hWPrcinA9oU4wtf2biUaEH5065UnMeR33oA== + integrity: sha512-+OQdjP49zViI/6i7nIJpA8rAl4sV/JdPfU9nZs3VqOwGIgizICvuN2ru6fMd+4llL0tar18UYJXfZ/TWtmhUjA== /cookie-signature/1.0.6: dev: false resolution: @@ -2658,11 +2654,11 @@ packages: requiresBuild: true resolution: integrity: sha512-Kb2wC0fvsWfQrgk8HU5lW6U/Lcs8+9aaYcy4ZFc6DDlo4nZ7n70dEgE5rtR0oG6ufKDUnrwfWL1mXR5ljDatrQ== - /core-js/3.14.0: + /core-js/3.15.0: dev: false requiresBuild: true resolution: - integrity: sha512-3s+ed8er9ahK+zJpp9ZtuVcDoFzHNiZsPbNAAE4KXgrRHbjSqqNN6xGSXq6bq7TZIbKj4NLrLb6bJ5i+vSVjHA== + integrity: sha512-GUbtPllXMYRzIgHNZ4dTYTcUemls2cni83Q4Q/TrFONHfhcg9oEGOtaGHfb0cpzec60P96UKPvMkjX1jET8rUw== /core-util-is/1.0.2: dev: false resolution: @@ -2837,7 +2833,6 @@ packages: dev: false engines: node: '>=8' - optional: true resolution: integrity: sha512-jOSne2qbyE+/r8G1VU+G/82LBs2Fs4LAsTiLSHOCOMZQl2OKZ6i8i4IyHemTe+/yIXOtTcRQMzPcgyhoFlqPkw== /deep-eql/3.0.1: @@ -2852,7 +2847,6 @@ packages: dev: false engines: node: '>=4.0.0' - optional: true resolution: integrity: sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA== /deep-freeze/0.0.1: @@ -2909,7 +2903,6 @@ packages: integrity: sha1-3zrhmayt+31ECqrgsp4icrJOxhk= /delegates/1.0.0: dev: false - optional: true resolution: integrity: sha1-hMbhWbgZBP3KWaDvRM2HDTElD5o= /depd/1.1.2: @@ -2927,7 +2920,6 @@ packages: engines: node: '>=0.10' hasBin: true - optional: true resolution: integrity: sha1-+hN8S9aY7fVc1c0CrFWfkaTEups= /di/0.0.1: @@ -3002,7 +2994,7 @@ packages: /downlevel-dts/0.4.0: dependencies: shelljs: 0.8.4 - typescript: 3.9.9 + typescript: 3.9.10 dev: false hasBin: true resolution: @@ -3175,9 +3167,9 @@ packages: source-map: 0.6.1 resolution: integrity: sha512-qFcX0XJkdg+PB3xjZZG/wKSuT1PnQWx57+TVSjIMmILd2yC/6ByYElPwJnslDsuWuSAp4AwJGumarAAmJch5Kw== - /eslint-config-prettier/7.2.0_eslint@7.28.0: + /eslint-config-prettier/7.2.0_eslint@7.29.0: dependencies: - eslint: 7.28.0 + eslint: 7.29.0 dev: false hasBin: true peerDependencies: @@ -3200,9 +3192,9 @@ packages: node: '>=4' resolution: integrity: sha512-ZXI9B8cxAJIH4nfkhTwcRTEAnrVfobYqwjWy/QMCZ8rHkZHFjf9yO4BzpiF9kCSfNlMG54eKigISHpX0+AaT4A== - /eslint-plugin-es/3.0.1_eslint@7.28.0: + /eslint-plugin-es/3.0.1_eslint@7.29.0: dependencies: - eslint: 7.28.0 + eslint: 7.29.0 eslint-utils: 2.1.0 regexpp: 3.2.0 dev: false @@ -3212,13 +3204,13 @@ packages: eslint: '>=4.19.1' resolution: integrity: sha512-GUmAsJaN4Fc7Gbtl8uOBlayo2DqhwWvEzykMHSCZHU3XdJ+NSzzZcVhXh3VxX5icqQ+oQdIEawXX8xkR3mIFmQ== - /eslint-plugin-import/2.23.4_eslint@7.28.0: + /eslint-plugin-import/2.23.4_eslint@7.29.0: dependencies: array-includes: 3.1.3 array.prototype.flat: 1.2.4 debug: 2.6.9 doctrine: 2.1.0 - eslint: 7.28.0 + eslint: 7.29.0 eslint-import-resolver-node: 0.3.4 eslint-module-utils: 2.6.1 find-up: 2.1.0 @@ -3243,10 +3235,10 @@ packages: node: '>=4.0.0' resolution: integrity: sha512-T9SmE/g6UV1uZo1oHAqOvL86XWl7Pl2EpRpnLI8g/bkJu+h7XBCB+1LnubRZ2CUQXj805vh4/CYZdnqtVaEo2Q== - /eslint-plugin-node/11.1.0_eslint@7.28.0: + /eslint-plugin-node/11.1.0_eslint@7.29.0: dependencies: - eslint: 7.28.0 - eslint-plugin-es: 3.0.1_eslint@7.28.0 + eslint: 7.29.0 + eslint-plugin-es: 3.0.1_eslint@7.29.0 eslint-utils: 2.1.0 ignore: 5.1.8 minimatch: 3.0.4 @@ -3301,7 +3293,7 @@ packages: node: '>=10' resolution: integrity: sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw== - /eslint/7.28.0: + /eslint/7.29.0: dependencies: '@babel/code-frame': 7.12.11 '@eslint/eslintrc': 0.4.2 @@ -3347,7 +3339,7 @@ packages: node: ^10.12.0 || >=12.0.0 hasBin: true resolution: - integrity: sha512-UMfH0VSjP0G4p3EWirscJEQ/cHqnT/iuH6oNZOB94nBjWbMnhGEPxsZm1eyIW0C/9jLI0Fow4W5DXLjEI7mn1g== + integrity: sha512-82G/JToB9qIy/ArBzIWG9xvvwL3R86AlCjtGw+A29OMZDqhTybz/MByORSukGxeI+YPCR4coYyITKk8BFH9nDA== /esm/3.2.25: dev: false engines: @@ -3456,7 +3448,6 @@ packages: dev: false engines: node: '>=6' - optional: true resolution: integrity: sha512-XYfuKMvj4O35f/pOXLObndIRvyQ+/+6AhODh+OKWj9S9498pHHn/IMszH+gt0fBCRWMNfk1ZSp5x3AifmnI2vg== /expand-tilde/2.0.2: @@ -3572,7 +3563,7 @@ packages: dependencies: '@babel/core': 7.14.6 '@babel/runtime': 7.14.6 - core-js: 3.14.0 + core-js: 3.15.0 debug: 4.3.1 glob-to-regexp: 0.4.1 is-subset: 0.1.1 @@ -3599,6 +3590,10 @@ packages: node: ^10.12.0 || >=12.0.0 resolution: integrity: sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg== + /file-uri-to-path/1.0.0: + dev: false + resolution: + integrity: sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw== /file-uri-to-path/2.0.0: dev: false engines: @@ -3850,7 +3845,6 @@ packages: strip-ansi: 3.0.1 wide-align: 1.1.3 dev: false - optional: true resolution: integrity: sha1-LANAXHU4w51+s3sxcCLjJfsBi/c= /gensync/1.0.0-beta.2: @@ -3916,7 +3910,6 @@ packages: integrity: sha1-Xv+OPmhNVprkyysSgmBOi6YhSfo= /github-from-package/0.0.0: dev: false - optional: true resolution: integrity: sha1-l/tdlr/eiXMxPyDoKI75oWf6ZM4= /glob-parent/5.1.2: @@ -3996,7 +3989,7 @@ packages: node: '>=8' resolution: integrity: sha512-74/FduwI/JaIrr1H8e71UbDE+5x7pIPs1C2rrwC52SszOo043CsWOZEMW7o2Y58xwm9b+0RBKDxY5n2sUpEFxA== - /globby/11.0.3: + /globby/11.0.4: dependencies: array-union: 2.1.0 dir-glob: 3.0.1 @@ -4008,7 +4001,7 @@ packages: engines: node: '>=10' resolution: - integrity: sha512-ffdmosjA807y7+lA1NM0jELARVmYul/715xiILEjo3hBLPTcirgQNnXECn5g3mtR8TOLCVbkfua1Hpen25/Xcg== + integrity: sha512-9O4MVG9ioZJ08ffbcyVYyLOJLk5JQ688pJ4eMGLpdWLHq/Wr1D9BlriLQyL0E+jbkuePVZXYFj47QM/v093wHg== /graceful-fs/4.2.6: dev: false resolution: @@ -4099,7 +4092,6 @@ packages: integrity: sha512-chXa79rL/UC2KlX17jo3vRGz0azaWEx5tGqZg5pO3NUyEJVB17dMruQlzCCOfUvElghKcm5194+BCRvi2Rv/Gw== /has-unicode/2.0.1: dev: false - optional: true resolution: integrity: sha1-4Ob+aijPUROIVeCG0Wkedx3iqLk= /has/1.0.3: @@ -4422,7 +4414,6 @@ packages: dev: false engines: node: '>=0.10.0' - optional: true resolution: integrity: sha1-754xOG8DGn8NZDr4L95QxFfvAMs= /is-fullwidth-code-point/2.0.0: @@ -4731,10 +4722,10 @@ packages: hasBin: true resolution: integrity: sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g== - /jsbi/3.1.4: + /jsbi/3.1.5: dev: false resolution: - integrity: sha512-52QRRFSsi9impURE8ZUbzAMCLjPm4THO7H2fcuIvaaeFTbSysvkodbQQXIVsNgq/ypDbq6dJiuGKL0vZ/i9hUg== + integrity: sha512-w2BY0VOYC1ahe+w6Qhl4SFoPvPsZ9NPHY4bwass+LCgU7RK3PBoVQlQ3G1s7vI8W3CYyJiEXcbKF7FIM/L8q3Q== /jsbn/0.1.1: dev: false resolution: @@ -5078,12 +5069,19 @@ packages: debug: '*' resolution: integrity: sha512-hbhRogUYIulfkBTZT7xoPrCYhRBnBoqbbL4fszWD0ReFGUxU+LYBr3dwKdAluaDQ/ynT9/7C+Lf7pPNW4gSx4Q== + /keytar/7.0.0: + dependencies: + node-addon-api: 3.2.1 + prebuild-install: 5.3.5 + dev: false + requiresBuild: true + resolution: + integrity: sha512-uvmdb5ZE2NgegcUDrmhutI9BUh+bTbt8+bwPliOMiLiWmrV76Tfg6DyI7Ud903a/4xlkJpKGnR0TyRpRyFOc3A== /keytar/7.7.0: dependencies: node-addon-api: 3.2.1 prebuild-install: 6.1.3 dev: false - optional: true requiresBuild: true resolution: integrity: sha512-YEY9HWqThQc5q5xbXbRwsZTh2PJ36OSYRjSv3NN2xf5s5dpLTjEZnC2YikR29OaVybf9nQ0dJ/80i40RS97t/A== @@ -5412,7 +5410,6 @@ packages: dev: false engines: node: '>=8' - optional: true resolution: integrity: sha512-wXqjST+SLt7R009ySCglWBCFpjUygmCIfD790/kVbiGmUgfYGuB14PiTd5DwVxSV4NcYHjzMkoj5LjQZwTQLEA== /min-document/2.19.0: @@ -5535,6 +5532,10 @@ packages: node: '>=0.8.0' resolution: integrity: sha512-8vW5/+irlcQQk87r8Qp3/kQEc552hr7FQLJ6GF5LLkqnwJDDxrswz6RYPiQhmiampymIs0PbHVZrNf8m+6DmgQ== + /nan/2.14.2: + dev: false + resolution: + integrity: sha512-M2ufzIiINKCuDfBSAUr1vWQ+vuVcA9kqx8JJUsbQi6yf1uGRyb7HfpdfUr5qLXf3B/t8dPvcjhKMmlfnP47EzQ== /nanoid/3.1.23: dev: false engines: @@ -5544,7 +5545,6 @@ packages: integrity: sha512-FiB0kzdP0FFVGDKlRLEQ1BgDzU87dy5NnzjeW9YZNt+/c3+q82EQDUwniSAUxp/F0gFNI1ZhKU1FqYsMuqZVnw== /napi-build-utils/1.0.2: dev: false - optional: true resolution: integrity: sha512-ONmRUqK7zj7DWX0D9ADe03wbwOBZxNAfF20PlGfCWQcD3+/MakShIHrMqx9YwPTfxDdF1zLeL+RGZiR9kGMLdg== /natural-compare/1.4.0: @@ -5600,7 +5600,6 @@ packages: dependencies: semver: 5.7.1 dev: false - optional: true resolution: integrity: sha512-g6bZh3YCKQRdwuO/tSZZYJAw622SjsRfJ2X0Iy4sSOHZ34/sPPdVBn8fev2tj7njzLwuqPw9uMtGsGkO5kIQvg== /node-abort-controller/1.2.1: @@ -5609,7 +5608,6 @@ packages: integrity: sha512-79PYeJuj6S9+yOHirR0JBLFOgjB6sQCir10uN6xRx25iD+ZD4ULqgRn3MwWBRaQGB0vEgReJzWwJo42T1R6YbQ== /node-addon-api/3.2.1: dev: false - optional: true resolution: integrity: sha512-mmcei9JghVNDYydghQmeDX8KoAm0FAiYyIcUt/N4nhyAipB17pllZQDOJD2fotxABnt4Mdz+dKTO7eftLg4d0A== /node-environment-flags/1.0.6: @@ -5629,6 +5627,10 @@ packages: dev: false resolution: integrity: sha512-uW7fodD6pyW2FZNZnp/Z3hvWKeEW1Y8R1+1CnErE8cXFXzl5blBOoVB41CvMer6P6Q0S5FXDwcHgFd1Wj0U9zg== + /noop-logger/0.1.1: + dev: false + resolution: + integrity: sha1-lKKxYzxPExdVMAfYlm/Q6EG2pMI= /normalize-package-data/2.5.0: dependencies: hosted-git-info: 2.8.9 @@ -5684,21 +5686,19 @@ packages: gauge: 2.7.4 set-blocking: 2.0.0 dev: false - optional: true resolution: integrity: sha512-2uUqazuKlTaSI/dC8AzicUck7+IrEaOnN/e0jd3Xtt1KcGpwx30v50mL7oPyr/h9bL3E4aZccVwpwP+5W9Vjkg== /number-is-nan/1.0.1: dev: false engines: node: '>=0.10.0' - optional: true resolution: integrity: sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0= /nyc/14.1.1: dependencies: archy: 1.0.0 caching-transform: 3.0.2 - convert-source-map: 1.7.0 + convert-source-map: 1.8.0 cp-file: 6.2.0 find-cache-dir: 2.1.0 find-up: 3.0.0 @@ -6095,6 +6095,29 @@ packages: node: '>=4' resolution: integrity: sha512-Nc3IT5yHzflTfbjgqWcCPpo7DaKy4FnpB0l/zCAW0Tc7jxAiuqSxHasntB3D7887LSrA93kDJ9IXovxJYxyLCA== + /prebuild-install/5.3.5: + dependencies: + detect-libc: 1.0.3 + expand-template: 2.0.3 + github-from-package: 0.0.0 + minimist: 1.2.5 + mkdirp: 0.5.5 + napi-build-utils: 1.0.2 + node-abi: 2.30.0 + noop-logger: 0.1.1 + npmlog: 4.1.2 + pump: 3.0.0 + rc: 1.2.8 + simple-get: 3.1.0 + tar-fs: 2.1.1 + tunnel-agent: 0.6.0 + which-pm-runs: 1.0.0 + dev: false + engines: + node: '>=6' + hasBin: true + resolution: + integrity: sha512-YmMO7dph9CYKi5IR/BzjOJlRzpxGGVo1EsLSUZ0mt/Mq0HWZIHOKHHcHdT69yG54C9m6i45GpItwRHpk0Py7Uw== /prebuild-install/6.1.3: dependencies: detect-libc: 1.0.3 @@ -6114,7 +6137,6 @@ packages: engines: node: '>=6' hasBin: true - optional: true resolution: integrity: sha512-iqqSR84tNYQUQHRXalSKdIaM8Ov1QxOVuBNWI7+BzZWv6Ih9k75wOnH1rGQ9WWTaaLkTpxWKIciOF0KyfM74+Q== /prelude-ls/1.1.2: @@ -6243,7 +6265,7 @@ packages: rimraf: 3.0.2 tar-fs: 2.1.1 unbzip2-stream: 1.4.3 - ws: 7.4.6 + ws: 7.5.0 dev: false engines: node: '>=10.18.1' @@ -6352,7 +6374,6 @@ packages: strip-json-comments: 2.0.1 dev: false hasBin: true - optional: true resolution: integrity: sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw== /read-pkg-up/3.0.0: @@ -6870,7 +6891,6 @@ packages: integrity: sha512-VUJ49FC8U1OxwZLxIbTTrDvLnf/6TDgxZcK8wxR8zs13xpx7xbG60ndBlhNrFi2EMuFRoeDoJO7wthSLq42EjA== /simple-concat/1.0.1: dev: false - optional: true resolution: integrity: sha512-cSFtAPtRhljv69IK0hTVZQ+OfE9nePi/rtJmw5UjHeVyVroEqJXP1sFztKUy1qU+xvz3u/sfYJLa947b7nAN2Q== /simple-get/3.1.0: @@ -6879,7 +6899,6 @@ packages: once: 1.4.0 simple-concat: 1.0.1 dev: false - optional: true resolution: integrity: sha512-bCR6cP+aTdScaQCnQKbPKtJOKDp/hj9EDLJo3Nw4y1QksqaovlW/bnptB6/c1e+qmNIDHRK+oXFDdEqBT8WzUA== /sinon/9.2.4: @@ -6987,7 +7006,7 @@ packages: dependencies: '@types/cookie': 0.4.0 '@types/cors': 2.8.10 - '@types/node': 15.12.2 + '@types/node': 15.12.4 accepts: 1.3.7 base64id: 2.0.0 debug: 4.3.1 @@ -7166,7 +7185,6 @@ packages: dev: false engines: node: '>=0.10.0' - optional: true resolution: integrity: sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M= /string-width/2.1.1: @@ -7598,20 +7616,20 @@ packages: hasBin: true resolution: integrity: sha512-MmQdgo/XenfZPvVLtKZOq9jQQvzaUAUpcKW8Z43x9B2fOm4S5g//tPtMweZUIP+SoBqrVPEIm+dJeQ9dfO0QdA== - /typescript/3.9.9: + /typescript/3.9.10: dev: false engines: node: '>=4.2.0' hasBin: true resolution: - integrity: sha512-kdMjTiekY+z/ubJCATUPlRDl39vXYiMV9iyeMuEuXZh2we6zz80uovNN2WlAxmmdE/Z/YQe+EbOEXB5RHEED3w== - /typescript/4.1.5: + integrity: sha512-w6fIxVE/H1PkLKcCPsFqKE7Kv7QUwhU8qQY2MueZXWx5cPZdwFupLgKK3vntcK98BtNHZtAF4LA/yl2a7k8R6Q== + /typescript/4.1.6: dev: false engines: node: '>=4.2.0' hasBin: true resolution: - integrity: sha512-6OSu9PTIzmn9TCDiovULTnET6BgXtDYL4Gg4szY+cGsc3JP1dQL8qvE8kShTRx1NIw4Q9IBHlwODjkjWEtMUyA== + integrity: sha512-pxnwLxeb/Z5SP80JDRzVjh58KsM6jZHRAOtTpS7sXLS4ogXNKC9ANxHHZqLLeVHZN35jCtI4JdmLLbLiC1kBow== /typescript/4.2.4: dev: false engines: @@ -7806,6 +7824,10 @@ packages: dev: false resolution: integrity: sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho= + /which-pm-runs/1.0.0: + dev: false + resolution: + integrity: sha1-Zws6+8VS4LVd9rd4DKdGFfI60cs= /which-typed-array/1.1.4: dependencies: available-typed-arrays: 1.0.4 @@ -7904,6 +7926,20 @@ packages: optional: true resolution: integrity: sha512-YmhHDO4MzaDLB+M9ym/mDA5z0naX8j7SIlT8f8z+I0VtzsRbekxEutHSme7NPS2qE8StCYQNUnfWdXta/Yu85A== + /ws/7.5.0: + dev: false + engines: + node: '>=8.3.0' + peerDependencies: + bufferutil: ^4.0.1 + utf-8-validate: ^5.0.2 + peerDependenciesMeta: + bufferutil: + optional: true + utf-8-validate: + optional: true + resolution: + integrity: sha512-6ezXvzOZupqKj4jUqbQ9tXuJNo+BR2gU8fFRk3XCP3e0G6WT414u5ELe6Y0vtp7kmSJ3F7YWObSNr1ESsgi4vw== /xhr-mock/2.5.1: dependencies: global: 4.4.0 @@ -7999,12 +8035,12 @@ packages: dev: false resolution: integrity: sha512-3lbsNRf/j+A4QuSZfDRA7HRSfWrzO0YjqTJd5kjAq37Zep1CEgaYmrH9Q3GwPiB9cHyd1Y1UwggGhJGoxipbzg== - /yargs-parser/20.2.7: + /yargs-parser/20.2.9: dev: false engines: node: '>=10' resolution: - integrity: sha512-FiNkvbeHzB/syOjIUxFDCnhSfzAL8R5vs40MgLFBorXACCOAEaWu0gRZl14vG8MR9AOJIZbmkjhusqBYZ3HTHw== + integrity: sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w== /yargs-unparser/1.6.0: dependencies: flat: 4.1.1 @@ -8038,7 +8074,7 @@ packages: require-directory: 2.1.1 string-width: 4.2.2 y18n: 5.0.8 - yargs-parser: 20.2.7 + yargs-parser: 20.2.9 dev: false engines: node: '>=10' @@ -8081,7 +8117,7 @@ packages: cross-env: 7.0.3 delay: 4.4.1 downlevel-dts: 0.4.0 - eslint: 7.28.0 + eslint: 7.29.0 karma: 6.3.4 karma-chrome-launcher: 3.1.0 karma-coverage: 2.0.3 @@ -8116,13 +8152,13 @@ packages: '@azure/core-rest-pipeline': 1.0.4 '@azure/identity': 1.3.0 '@microsoft/api-extractor': 7.13.2 - '@types/chai': 4.2.18 + '@types/chai': 4.2.19 '@types/mocha': 7.0.2 '@types/node': 8.10.66 chai: 4.3.4 cross-env: 7.0.3 dotenv: 8.6.0 - eslint: 7.28.0 + eslint: 7.29.0 karma: 6.3.4 karma-chrome-launcher: 3.1.0 karma-coverage: 2.0.3 @@ -8156,7 +8192,6 @@ packages: version: 0.0.0 file:projects/ai-anomaly-detector.tgz: dependencies: - '@azure/core-tracing': 1.0.0-preview.11 '@azure/identity': 1.3.0 '@microsoft/api-extractor': 7.7.11 '@rollup/plugin-commonjs': 11.0.2_rollup@1.32.1 @@ -8164,14 +8199,14 @@ packages: '@rollup/plugin-multi-entry': 3.0.1_rollup@1.32.1 '@rollup/plugin-node-resolve': 8.4.0_rollup@1.32.1 '@rollup/plugin-replace': 2.4.2_rollup@1.32.1 - '@types/chai': 4.2.18 + '@types/chai': 4.2.19 '@types/mocha': 7.0.2 '@types/node': 8.10.66 chai: 4.3.4 cross-env: 7.0.3 csv-parse: 4.16.0 dotenv: 8.6.0 - eslint: 7.28.0 + eslint: 7.29.0 inherits: 2.0.4 karma: 6.3.4 karma-chrome-launcher: 3.1.0 @@ -8201,7 +8236,7 @@ packages: dev: false name: '@rush-temp/ai-anomaly-detector' resolution: - integrity: sha512-GOknI4gRYMnDD0S243OOfEZ+fBKRUyboXYQXYAUwIlQKl4f5klKrOBJoCfiWSMytaniZyXIvZIskYYBhgsuvog== + integrity: sha512-UAqCxcDDBSZGFVOEnudBw/8NhxgecArsuqft804NK03x42otRc88mxgBvkl+CNnhfdowlmOcZMsIOduXGOqt4w== tarball: file:projects/ai-anomaly-detector.tgz version: 0.0.0 file:projects/ai-document-translator.tgz: @@ -8209,13 +8244,13 @@ packages: '@azure/core-rest-pipeline': 1.0.4 '@azure/identity': 1.3.0 '@microsoft/api-extractor': 7.13.2 - '@types/chai': 4.2.18 + '@types/chai': 4.2.19 '@types/mocha': 7.0.2 '@types/node': 8.10.66 chai: 4.3.4 cross-env: 7.0.3 dotenv: 8.6.0 - eslint: 7.28.0 + eslint: 7.29.0 karma: 6.3.4 karma-chrome-launcher: 3.1.0 karma-coverage: 2.0.3 @@ -8248,10 +8283,8 @@ packages: version: 0.0.0 file:projects/ai-form-recognizer.tgz: dependencies: - '@azure/core-tracing': 1.0.0-preview.11 - '@azure/identity': 2.0.0-beta.3 '@microsoft/api-extractor': 7.7.11 - '@types/chai': 4.2.18 + '@types/chai': 4.2.19 '@types/mocha': 7.0.2 '@types/node': 8.10.66 '@types/sinon': 9.0.11 @@ -8259,7 +8292,7 @@ packages: chai-as-promised: 7.1.1_chai@4.3.4 cross-env: 7.0.3 dotenv: 8.6.0 - eslint: 7.28.0 + eslint: 7.29.0 karma: 6.3.4 karma-chrome-launcher: 3.1.0 karma-coverage: 2.0.3 @@ -8287,15 +8320,14 @@ packages: dev: false name: '@rush-temp/ai-form-recognizer' resolution: - integrity: sha512-PE4K3pYykld39wlagDs2LhfGRwflCxOdxGdHWNhbPzSBpqYgmiXWyS+8r8QWxSKQVqDCsff3b7vN3x0BtuLD+g== + integrity: sha512-Srr3ktLMdIW3tZsNv7fS4ATz06mhYaWC760VUvo3d/p31RGT0DXFlKyL9TAOMEPMl8Qd4kUZB7yP0hgEHHRxXA== tarball: file:projects/ai-form-recognizer.tgz version: 0.0.0 file:projects/ai-metrics-advisor.tgz: dependencies: - '@azure/core-tracing': 1.0.0-preview.11 '@azure/identity': 1.3.0 '@microsoft/api-extractor': 7.7.11 - '@types/chai': 4.2.18 + '@types/chai': 4.2.19 '@types/mocha': 7.0.2 '@types/node': 8.10.66 '@types/sinon': 9.0.11 @@ -8303,7 +8335,7 @@ packages: chai-as-promised: 7.1.1_chai@4.3.4 cross-env: 7.0.3 dotenv: 8.6.0 - eslint: 7.28.0 + eslint: 7.29.0 karma: 6.3.4 karma-chrome-launcher: 3.1.0 karma-coverage: 2.0.3 @@ -8332,7 +8364,7 @@ packages: dev: false name: '@rush-temp/ai-metrics-advisor' resolution: - integrity: sha512-9wwCObjf/0zlhyHr7g5GH8+G884F3F8noVLWBGnG9dAncuiRPSN3I7i2b/hpnAlRbGt5++o50aUJ5Zeyhw6Cgg== + integrity: sha512-l8niJqS6qP7ELTJPG2ytZ4h7o2GVgby/RxIdw7SyeEbHw46Tif/LoIzU1EVuKLD1PqEm4D2UdG946JeyvGtL0A== tarball: file:projects/ai-metrics-advisor.tgz version: 0.0.0 file:projects/ai-text-analytics.tgz: @@ -8341,7 +8373,7 @@ packages: '@azure/core-tracing': 1.0.0-preview.11 '@azure/identity': 2.0.0-beta.3 '@microsoft/api-extractor': 7.7.11 - '@types/chai': 4.2.18 + '@types/chai': 4.2.19 '@types/chai-as-promised': 7.1.4 '@types/mocha': 7.0.2 '@types/node': 8.10.66 @@ -8350,7 +8382,7 @@ packages: chai-as-promised: 7.1.1_chai@4.3.4 cross-env: 7.0.3 dotenv: 8.6.0 - eslint: 7.28.0 + eslint: 7.29.0 karma: 6.3.4 karma-chrome-launcher: 3.1.0 karma-coverage: 2.0.3 @@ -8385,8 +8417,6 @@ packages: version: 0.0.0 file:projects/app-configuration.tgz: dependencies: - '@azure/core-tracing': 1.0.0-preview.11 - '@azure/identity': 2.0.0-beta.3 '@azure/keyvault-secrets': 4.2.0 '@microsoft/api-extractor': 7.7.11 '@rollup/plugin-commonjs': 11.0.2_rollup@1.32.1 @@ -8395,7 +8425,7 @@ packages: '@rollup/plugin-multi-entry': 3.0.1_rollup@1.32.1 '@rollup/plugin-node-resolve': 8.4.0_rollup@1.32.1 '@rollup/plugin-replace': 2.4.2_rollup@1.32.1 - '@types/chai': 4.2.18 + '@types/chai': 4.2.19 '@types/mocha': 7.0.2 '@types/node': 8.10.66 '@types/sinon': 9.0.11 @@ -8403,7 +8433,7 @@ packages: chai: 4.3.4 cross-env: 7.0.3 dotenv: 8.6.0 - eslint: 7.28.0 + eslint: 7.29.0 esm: 3.2.25 karma: 6.3.4 karma-chrome-launcher: 3.1.0 @@ -8435,7 +8465,7 @@ packages: dev: false name: '@rush-temp/app-configuration' resolution: - integrity: sha512-4Y/gFY7cxIWiTDNFxwPHq13jW5yOrhs/kXb7hqXt47VsNN2RtbICi0g7cxVDnPlR6z2Zs7aeXSa4TW5Ylhc4Jg== + integrity: sha512-hYJ2Lj/Ytr0bj0SwC6UlHWkmFFm7c0z9H5Caic14Cd9liyHs/6ae8yP+N+Rqd9PNV/JstbjHlcbtgpyH/hvZFA== tarball: file:projects/app-configuration.tgz version: 0.0.0 file:projects/attestation.tgz: @@ -8444,7 +8474,7 @@ packages: '@azure/core-tracing': 1.0.0-preview.11 '@azure/identity': 1.3.0 '@microsoft/api-extractor': 7.7.11 - '@types/chai': 4.2.18 + '@types/chai': 4.2.19 '@types/chai-as-promised': 7.1.4 '@types/mocha': 7.0.2 '@types/node': 8.10.66 @@ -8454,7 +8484,7 @@ packages: cross-env: 7.0.3 dotenv: 8.6.0 downlevel-dts: 0.4.0 - eslint: 7.28.0 + eslint: 7.29.0 esm: 3.2.25 inherits: 2.0.4 jsrsasign: 10.3.0 @@ -8497,14 +8527,13 @@ packages: dependencies: '@azure/communication-identity': 1.0.0 '@azure/communication-signaling': 1.0.0-beta.5 - '@azure/core-tracing': 1.0.0-preview.11 '@microsoft/api-extractor': 7.7.11 '@rollup/plugin-commonjs': 11.0.2_rollup@1.32.1 '@rollup/plugin-json': 4.1.0_rollup@1.32.1 '@rollup/plugin-multi-entry': 3.0.1_rollup@1.32.1 '@rollup/plugin-node-resolve': 8.4.0_rollup@1.32.1 '@rollup/plugin-replace': 2.4.2_rollup@1.32.1 - '@types/chai': 4.2.18 + '@types/chai': 4.2.19 '@types/mocha': 7.0.2 '@types/node': 8.10.66 '@types/sinon': 9.0.11 @@ -8512,7 +8541,7 @@ packages: chai: 4.3.4 cross-env: 7.0.3 dotenv: 8.6.0 - eslint: 7.28.0 + eslint: 7.29.0 events: 3.3.0 inherits: 2.0.4 karma: 6.3.4 @@ -8546,19 +8575,18 @@ packages: dev: false name: '@rush-temp/communication-chat' resolution: - integrity: sha512-ubGcvenOv8xFMNLLe3mDQVm2sU4z9939aPrZnu1ajCZL1GXBdcZoXnPIDFJ7/qEm5oRZbCZ7bhYRGMa2elil6g== + integrity: sha512-M48ACwIHKYHqfp3DLWqmPoLqgOdPLu1M5ew2gQh9riQdJuYKCkfwridZssYv1R+GrVRHIQgOGGV9LwPTXn9vRg== tarball: file:projects/communication-chat.tgz version: 0.0.0 file:projects/communication-common.tgz: dependencies: - '@azure/core-tracing': 1.0.0-preview.11 '@microsoft/api-extractor': 7.7.11 '@rollup/plugin-commonjs': 11.0.2_rollup@1.32.1 '@rollup/plugin-json': 4.1.0_rollup@1.32.1 '@rollup/plugin-multi-entry': 3.0.1_rollup@1.32.1 '@rollup/plugin-node-resolve': 8.4.0_rollup@1.32.1 '@rollup/plugin-replace': 2.4.2_rollup@1.32.1 - '@types/chai': 4.2.18 + '@types/chai': 4.2.19 '@types/chai-as-promised': 7.1.4 '@types/jwt-decode': 2.2.1 '@types/mocha': 7.0.2 @@ -8568,7 +8596,7 @@ packages: chai: 4.3.4 chai-as-promised: 7.1.1_chai@4.3.4 cross-env: 7.0.3 - eslint: 7.28.0 + eslint: 7.29.0 events: 3.3.0 inherits: 2.0.4 jwt-decode: 2.2.0 @@ -8600,19 +8628,18 @@ packages: dev: false name: '@rush-temp/communication-common' resolution: - integrity: sha512-m708g4feYifMJni1VLzBLbJEU1wzfw3pzB7ZvXbUAdgk4ikR+wkvD9j5TXlF37y59dF6ltRtY3fBZ4qoxXm7oA== + integrity: sha512-3r1o3XqYCECrYUxeVFLvgWACp8Hg2LBQw0eDflZDHWUsXmNyXdNJpnBHQuY8A/b5i7myuv7u0DUiBwGPg8gmTQ== tarball: file:projects/communication-common.tgz version: 0.0.0 file:projects/communication-identity.tgz: dependencies: - '@azure/core-tracing': 1.0.0-preview.11 '@microsoft/api-extractor': 7.7.11 '@rollup/plugin-commonjs': 11.0.2_rollup@1.32.1 '@rollup/plugin-json': 4.1.0_rollup@1.32.1 '@rollup/plugin-multi-entry': 3.0.1_rollup@1.32.1 '@rollup/plugin-node-resolve': 8.4.0_rollup@1.32.1 '@rollup/plugin-replace': 2.4.2_rollup@1.32.1 - '@types/chai': 4.2.18 + '@types/chai': 4.2.19 '@types/mocha': 7.0.2 '@types/node': 8.10.66 '@types/sinon': 9.0.11 @@ -8620,7 +8647,7 @@ packages: chai: 4.3.4 cross-env: 7.0.3 dotenv: 8.6.0 - eslint: 7.28.0 + eslint: 7.29.0 events: 3.3.0 inherits: 2.0.4 karma: 6.3.4 @@ -8653,20 +8680,19 @@ packages: dev: false name: '@rush-temp/communication-identity' resolution: - integrity: sha512-iRCXsinvg/D/ZeuNqYCN/8vT81D3ch5RpmIN2RdDRY6pSAADf4oM962yuRSwjHduvwD5G4SkfBNxGpKuNJyUAQ== + integrity: sha512-DU3BXq1v9EwcqeGfsIhi8ILI2Eacn/lzjpY+kT9lUeVWrWdrcKu+GqLU/Nwohx49C28DNqUAHNtwCmuW+pa3Xw== tarball: file:projects/communication-identity.tgz version: 0.0.0 file:projects/communication-network-traversal.tgz: dependencies: '@azure/communication-identity': 1.0.0 - '@azure/core-tracing': 1.0.0-preview.11 '@microsoft/api-extractor': 7.7.11 '@rollup/plugin-commonjs': 11.0.2_rollup@1.32.1 '@rollup/plugin-json': 4.1.0_rollup@1.32.1 '@rollup/plugin-multi-entry': 3.0.1_rollup@1.32.1 '@rollup/plugin-node-resolve': 8.4.0_rollup@1.32.1 '@rollup/plugin-replace': 2.4.2_rollup@1.32.1 - '@types/chai': 4.2.18 + '@types/chai': 4.2.19 '@types/mocha': 7.0.2 '@types/node': 8.10.66 '@types/sinon': 9.0.11 @@ -8674,7 +8700,7 @@ packages: chai: 4.3.4 cross-env: 7.0.3 dotenv: 8.6.0 - eslint: 7.28.0 + eslint: 7.29.0 events: 3.3.0 inherits: 2.0.4 karma: 6.3.4 @@ -8707,19 +8733,18 @@ packages: dev: false name: '@rush-temp/communication-network-traversal' resolution: - integrity: sha512-e4OQvoZW1wniyCZZwReejuCS5NLzQ6kqlF5jmbd68V5dAMw2p0I7T/uxx53dGVsAnql2osJLF7hFe9wQPiyN4A== + integrity: sha512-F1T6zU4yFjAaG3tkEUgBLRSMrMsmDvsuEWzSlJVYIrHfTZygDNR/eDQWAmjgF3TQwcn5btAEJFBNjripDSnkiQ== tarball: file:projects/communication-network-traversal.tgz version: 0.0.0 file:projects/communication-phone-numbers.tgz: dependencies: - '@azure/core-tracing': 1.0.0-preview.11 '@microsoft/api-extractor': 7.7.11 '@rollup/plugin-commonjs': 11.0.2_rollup@1.32.1 '@rollup/plugin-json': 4.1.0_rollup@1.32.1 '@rollup/plugin-multi-entry': 3.0.1_rollup@1.32.1 '@rollup/plugin-node-resolve': 8.4.0_rollup@1.32.1 '@rollup/plugin-replace': 2.4.2_rollup@1.32.1 - '@types/chai': 4.2.18 + '@types/chai': 4.2.19 '@types/mocha': 7.0.2 '@types/node': 8.10.66 '@types/sinon': 9.0.11 @@ -8727,7 +8752,7 @@ packages: chai: 4.3.4 cross-env: 7.0.3 dotenv: 8.6.0 - eslint: 7.28.0 + eslint: 7.29.0 events: 3.3.0 inherits: 2.0.4 karma: 6.3.4 @@ -8760,19 +8785,18 @@ packages: dev: false name: '@rush-temp/communication-phone-numbers' resolution: - integrity: sha512-rLZK5gAPEgmZNeMJ0wffFow/QRjAHn6IQSNk9zpUPKrga9lHD6CFZsvhbtkgsWTA2oS/wLbd5WdgiyILRr0b0Q== + integrity: sha512-flZAFiS2wvGEEBPwghkL7qsPkJGsNzAwFXteSh6ESKbZ+DeeRETVyCN5ItiL93I5PDZup3Iqfv8nR3tuuOWoRQ== tarball: file:projects/communication-phone-numbers.tgz version: 0.0.0 file:projects/communication-sms.tgz: dependencies: - '@azure/core-tracing': 1.0.0-preview.11 '@microsoft/api-extractor': 7.7.11 '@rollup/plugin-commonjs': 11.0.2_rollup@1.32.1 '@rollup/plugin-json': 4.1.0_rollup@1.32.1 '@rollup/plugin-multi-entry': 3.0.1_rollup@1.32.1 '@rollup/plugin-node-resolve': 8.4.0_rollup@1.32.1 '@rollup/plugin-replace': 2.4.2_rollup@1.32.1 - '@types/chai': 4.2.18 + '@types/chai': 4.2.19 '@types/mocha': 7.0.2 '@types/node': 8.10.66 '@types/sinon': 9.0.11 @@ -8780,7 +8804,7 @@ packages: chai: 4.3.4 cross-env: 7.0.3 dotenv: 8.6.0 - eslint: 7.28.0 + eslint: 7.29.0 events: 3.3.0 inherits: 2.0.4 karma: 6.3.4 @@ -8812,7 +8836,7 @@ packages: dev: false name: '@rush-temp/communication-sms' resolution: - integrity: sha512-+Kp99e9aleFfZ9dNecXvlvw33O8MSe4MJZZzq8c/JrI0F4tbr+qt2rv6sdNKp0bi4AZpR80nPtsxecOHjRjaIw== + integrity: sha512-zUaVWSyuQ9ddNUiWJ8XLHHJfIaRPnuXMxPN67Gve0Orx95YTyectyZmJSFK8qMUKuvcNsKP7cMg4hhhkejM8IA== tarball: file:projects/communication-sms.tgz version: 0.0.0 file:projects/confidential-ledger.tgz: @@ -8820,13 +8844,13 @@ packages: '@azure/core-rest-pipeline': 1.0.4 '@azure/identity': 1.3.0 '@microsoft/api-extractor': 7.13.2 - '@types/chai': 4.2.18 + '@types/chai': 4.2.19 '@types/mocha': 7.0.2 '@types/node': 8.10.66 chai: 4.3.4 cross-env: 7.0.3 dotenv: 8.6.0 - eslint: 7.28.0 + eslint: 7.29.0 karma: 6.3.4 karma-chrome-launcher: 3.1.0 karma-coverage: 2.0.3 @@ -8862,7 +8886,7 @@ packages: '@azure/core-tracing': 1.0.0-preview.11 '@azure/ms-rest-nodeauth': 3.0.10 '@microsoft/api-extractor': 7.7.11 - '@types/chai': 4.2.18 + '@types/chai': 4.2.19 '@types/chai-as-promised': 7.1.4 '@types/mocha': 7.0.2 '@types/node': 8.10.66 @@ -8870,7 +8894,7 @@ packages: chai-as-promised: 7.1.1_chai@4.3.4 cross-env: 7.0.3 dotenv: 8.6.0 - eslint: 7.28.0 + eslint: 7.29.0 inherits: 2.0.4 karma: 6.3.4 karma-chrome-launcher: 3.1.0 @@ -8898,7 +8922,7 @@ packages: dev: false name: '@rush-temp/container-registry' resolution: - integrity: sha512-EtCnuuPQBPDJdlInE2BVGrFIoEvplHQI0YhO5px+KPEgjLBAspIKyc5/htsLtIB6nsuXG4jjdXtUPf/qNYxdxQ== + integrity: sha512-DFt88tLfBmEUwAR8+6xpAupuO1aKe9m2Ajb5uNRjiDzQBA6GlFEG6+hV5ToyDt6pGxGOpFH+T60ij7pjEuUkqg== tarball: file:projects/container-registry.tgz version: 0.0.0 file:projects/core-amqp.tgz: @@ -8910,13 +8934,13 @@ packages: '@rollup/plugin-multi-entry': 3.0.1_rollup@1.32.1 '@rollup/plugin-node-resolve': 8.4.0_rollup@1.32.1 '@rollup/plugin-replace': 2.4.2_rollup@1.32.1 - '@types/chai': 4.2.18 + '@types/chai': 4.2.19 '@types/chai-as-promised': 7.1.4 '@types/debug': 4.1.5 '@types/mocha': 7.0.2 '@types/node': 8.10.66 '@types/sinon': 9.0.11 - '@types/ws': 7.4.4 + '@types/ws': 7.4.5 assert: 1.5.0 buffer: 5.7.1 chai: 4.3.4 @@ -8925,7 +8949,7 @@ packages: debug: 4.3.1 dotenv: 8.6.0 downlevel-dts: 0.4.0 - eslint: 7.28.0 + eslint: 7.29.0 events: 3.3.0 jssha: 3.2.0 karma: 6.3.4_debug@4.3.1 @@ -8951,7 +8975,7 @@ packages: typescript: 4.2.4 url: 0.11.0 util: 0.12.4 - ws: 7.4.6 + ws: 7.5.0 dev: false name: '@rush-temp/core-amqp' resolution: @@ -8961,7 +8985,7 @@ packages: file:projects/core-asynciterator-polyfill.tgz: dependencies: '@types/node': 8.10.66 - eslint: 7.28.0 + eslint: 7.29.0 prettier: 1.19.1 typedoc: 0.15.2 typescript: 4.2.4 @@ -8984,7 +9008,7 @@ packages: assert: 1.5.0 cross-env: 7.0.3 downlevel-dts: 0.4.0 - eslint: 7.28.0 + eslint: 7.29.0 inherits: 2.0.4 mocha: 7.2.0 mocha-junit-reporter: 1.23.3_mocha@7.2.0 @@ -9015,14 +9039,14 @@ packages: '@rollup/plugin-multi-entry': 3.0.1_rollup@1.32.1 '@rollup/plugin-node-resolve': 8.4.0_rollup@1.32.1 '@rollup/plugin-replace': 2.4.2_rollup@1.32.1 - '@types/chai': 4.2.18 + '@types/chai': 4.2.19 '@types/mocha': 7.0.2 '@types/node': 8.10.66 '@types/sinon': 9.0.11 chai: 4.3.4 cross-env: 7.0.3 downlevel-dts: 0.4.0 - eslint: 7.28.0 + eslint: 7.29.0 inherits: 2.0.4 karma: 6.3.4 karma-chrome-launcher: 3.1.0 @@ -9058,12 +9082,12 @@ packages: dependencies: '@azure/core-rest-pipeline': 1.0.4 '@microsoft/api-extractor': 7.13.2 - '@types/chai': 4.2.18 + '@types/chai': 4.2.19 '@types/mocha': 7.0.2 '@types/node': 8.10.66 chai: 4.3.4 cross-env: 7.0.3 - eslint: 7.28.0 + eslint: 7.29.0 inherits: 2.0.4 karma: 6.3.4 karma-chrome-launcher: 3.1.0 @@ -9100,7 +9124,7 @@ packages: '@rollup/plugin-multi-entry': 3.0.1_rollup@1.32.1 '@rollup/plugin-node-resolve': 8.4.0_rollup@1.32.1 '@rollup/plugin-replace': 2.4.2_rollup@1.32.1 - '@types/chai': 4.2.18 + '@types/chai': 4.2.19 '@types/mocha': 7.0.2 '@types/node': 8.10.66 '@types/sinon': 9.0.11 @@ -9108,7 +9132,7 @@ packages: chai: 4.3.4 cross-env: 7.0.3 downlevel-dts: 0.4.0 - eslint: 7.28.0 + eslint: 7.29.0 karma: 6.3.4 karma-chrome-launcher: 3.1.0 karma-coverage: 2.0.3 @@ -9139,7 +9163,6 @@ packages: version: 0.0.0 file:projects/core-http.tgz: dependencies: - '@azure/core-tracing': 1.0.0-preview.11 '@azure/logger-js': 1.3.2 '@microsoft/api-extractor': 7.7.11 '@rollup/plugin-commonjs': 11.0.2_rollup@1.32.1 @@ -9147,7 +9170,7 @@ packages: '@rollup/plugin-multi-entry': 3.0.1_rollup@1.32.1 '@rollup/plugin-node-resolve': 8.4.0_rollup@1.32.1 '@rollup/plugin-replace': 2.4.2_rollup@1.32.1 - '@types/chai': 4.2.18 + '@types/chai': 4.2.19 '@types/express': 4.17.12 '@types/glob': 7.1.3 '@types/mocha': 7.0.2 @@ -9162,7 +9185,7 @@ packages: chai: 4.3.4 cross-env: 7.0.3 downlevel-dts: 0.4.0 - eslint: 7.28.0 + eslint: 7.29.0 express: 4.17.1 fetch-mock: 9.11.0_node-fetch@2.6.1 form-data: 3.0.1 @@ -9203,24 +9226,23 @@ packages: dev: false name: '@rush-temp/core-http' resolution: - integrity: sha512-bK3vk+L+XzYgsDtIDSJaGK28O2uEWbaHqrrXnEzLc55vW8WotxDSJ4dugJAtmCOyc22BKmuYONA7YngGgT2AGA== + integrity: sha512-6X7ZmkgSI5TtG0bUativYtE4MCsHUzXSM9ZuiOaJkGAgpRctDHeS+EMzA6BgL3ASSu+jIySqhI6Eo1k4K8t81Q== tarball: file:projects/core-http.tgz version: 0.0.0 file:projects/core-lro.tgz: dependencies: - '@azure/core-tracing': 1.0.0-preview.11 '@microsoft/api-extractor': 7.7.11 '@rollup/plugin-commonjs': 11.0.2_rollup@1.32.1 '@rollup/plugin-multi-entry': 3.0.1_rollup@1.32.1 '@rollup/plugin-node-resolve': 8.4.0_rollup@1.32.1 '@rollup/plugin-replace': 2.4.2_rollup@1.32.1 - '@types/chai': 4.2.18 + '@types/chai': 4.2.19 '@types/mocha': 7.0.2 '@types/node': 8.10.66 assert: 1.5.0 chai: 4.3.4 cross-env: 7.0.3 - eslint: 7.28.0 + eslint: 7.29.0 events: 3.3.0 karma: 6.3.4 karma-chrome-launcher: 3.1.0 @@ -9252,13 +9274,13 @@ packages: dev: false name: '@rush-temp/core-lro' resolution: - integrity: sha512-ixIn6iLbTI8F8ArD5n6tJ0+nLntWWZFe5nNklaf30pHmafzK1pzpVs3xaSqTPLz53ZdUA5ZI27lCSnU01m3cIQ== + integrity: sha512-qGsbhY42+yb7/ZND4jJU68QDnFa1/q2Aw++lfViXx/wohdotqvkmY08PS6+ma9e62WFwrFjItZvQU/sw4yYvFQ== tarball: file:projects/core-lro.tgz version: 0.0.0 file:projects/core-paging.tgz: dependencies: '@types/node': 8.10.66 - eslint: 7.28.0 + eslint: 7.29.0 prettier: 1.19.1 rimraf: 3.0.2 typedoc: 0.15.2 @@ -9271,14 +9293,13 @@ packages: version: 0.0.0 file:projects/core-rest-pipeline.tgz: dependencies: - '@azure/core-tracing': 1.0.0-preview.11 '@microsoft/api-extractor': 7.7.11 '@rollup/plugin-commonjs': 11.0.2_rollup@1.32.1 '@rollup/plugin-json': 4.1.0_rollup@1.32.1 '@rollup/plugin-multi-entry': 3.0.1_rollup@1.32.1 '@rollup/plugin-node-resolve': 8.4.0_rollup@1.32.1 '@rollup/plugin-replace': 2.4.2_rollup@1.32.1 - '@types/chai': 4.2.18 + '@types/chai': 4.2.19 '@types/mocha': 7.0.2 '@types/node': 8.10.66 '@types/sinon': 9.0.11 @@ -9286,7 +9307,7 @@ packages: chai: 4.3.4 cross-env: 7.0.3 downlevel-dts: 0.4.0 - eslint: 7.28.0 + eslint: 7.29.0 form-data: 3.0.1 http-proxy-agent: 4.0.1 https-proxy-agent: 5.0.0 @@ -9320,14 +9341,13 @@ packages: dev: false name: '@rush-temp/core-rest-pipeline' resolution: - integrity: sha512-zojuz/HSp53v8H/nOSzpSDLTCo1p6cjkcVQ+F4bNKUJ6TPNNKlo7++PBthtyS8TT/rwXhpIAeKuke+RaifY1fA== + integrity: sha512-B30gNDjvYMKn9TTL3Li38tIe02Gn9y/2pz9MLrKoWFzITzyQwaht729dCk6oSYXfesN+LipPoM26kw5lkOQ0rg== tarball: file:projects/core-rest-pipeline.tgz version: 0.0.0 file:projects/core-tracing.tgz: dependencies: '@microsoft/api-extractor': 7.7.11 - '@opencensus/web-types': 0.0.7 - '@opentelemetry/api': 1.0.0-rc.0 + '@opentelemetry/api': 0.20.0 '@rollup/plugin-commonjs': 11.0.2_rollup@1.32.1 '@rollup/plugin-json': 4.1.0_rollup@1.32.1 '@rollup/plugin-multi-entry': 3.0.1_rollup@1.32.1 @@ -9338,8 +9358,19 @@ packages: '@types/sinon': 9.0.11 assert: 1.5.0 cross-env: 7.0.3 - eslint: 7.28.0 + eslint: 7.29.0 inherits: 2.0.4 + karma: 6.3.4 + karma-chrome-launcher: 3.1.0 + karma-coverage: 2.0.3 + karma-edge-launcher: 0.4.2_karma@6.3.4 + karma-env-preprocessor: 0.1.1 + karma-firefox-launcher: 1.3.0 + karma-ie-launcher: 1.0.0_karma@6.3.4 + karma-junit-reporter: 2.0.1_karma@6.3.4 + karma-mocha: 2.0.1 + karma-mocha-reporter: 2.2.5_karma@6.3.4 + karma-sourcemap-loader: 0.3.8 mocha: 7.2.0 mocha-junit-reporter: 1.23.3_mocha@7.2.0 prettier: 1.19.1 @@ -9356,7 +9387,7 @@ packages: dev: false name: '@rush-temp/core-tracing' resolution: - integrity: sha512-8DVpttwoStfTVGZM2XsYARGD6+Gi+DruU0I7WudAoHKzkfmpCuytc597UHeLsjtDZscuTIYYdrJXT8k5bXg/eQ== + integrity: sha512-YWHGTfZMkeR5xkd5N7cg8Cs8xqgn5CdqqL9A+TTh2CHdDZE6sK1wkzXrSqD3aO2PcWBQ2bXr0eSlgkR1a2JuQw== tarball: file:projects/core-tracing.tgz version: 0.0.0 file:projects/core-util.tgz: @@ -9367,14 +9398,14 @@ packages: '@rollup/plugin-multi-entry': 3.0.1_rollup@1.32.1 '@rollup/plugin-node-resolve': 8.4.0_rollup@1.32.1 '@rollup/plugin-replace': 2.4.2_rollup@1.32.1 - '@types/chai': 4.2.18 + '@types/chai': 4.2.19 '@types/mocha': 7.0.2 '@types/node': 8.10.66 '@types/sinon': 9.0.11 chai: 4.3.4 cross-env: 7.0.3 downlevel-dts: 0.4.0 - eslint: 7.28.0 + eslint: 7.29.0 inherits: 2.0.4 karma: 6.3.4 karma-chrome-launcher: 3.1.0 @@ -9414,7 +9445,7 @@ packages: '@rollup/plugin-multi-entry': 3.0.1_rollup@1.32.1 '@rollup/plugin-node-resolve': 8.4.0_rollup@1.32.1 '@rollup/plugin-replace': 2.4.2_rollup@1.32.1 - '@types/chai': 4.2.18 + '@types/chai': 4.2.19 '@types/mocha': 7.0.2 '@types/node': 8.10.66 '@types/sinon': 9.0.11 @@ -9422,7 +9453,7 @@ packages: chai: 4.3.4 cross-env: 7.0.3 downlevel-dts: 0.4.0 - eslint: 7.28.0 + eslint: 7.29.0 inherits: 2.0.4 karma: 6.3.4 karma-chrome-launcher: 3.1.0 @@ -9476,11 +9507,11 @@ packages: debug: 4.3.1 dotenv: 8.6.0 downlevel-dts: 0.4.0 - eslint: 7.28.0 + eslint: 7.29.0 esm: 3.2.25 execa: 3.4.0 fast-json-stable-stringify: 2.1.0 - jsbi: 3.1.4 + jsbi: 3.1.5 mocha: 7.2.0 mocha-junit-reporter: 1.23.3_mocha@7.2.0 node-abort-controller: 1.2.1 @@ -9519,7 +9550,7 @@ packages: '@rollup/plugin-multi-entry': 3.0.1_rollup@1.32.1 '@rollup/plugin-node-resolve': 8.4.0_rollup@1.32.1 '@rollup/plugin-replace': 2.4.2_rollup@1.32.1 - '@types/chai': 4.2.18 + '@types/chai': 4.2.19 '@types/mocha': 7.0.2 '@types/node': 8.10.66 '@types/sinon': 9.0.11 @@ -9528,7 +9559,7 @@ packages: cross-env: 7.0.3 dotenv: 8.6.0 downlevel-dts: 0.4.0 - eslint: 7.28.0 + eslint: 7.29.0 inherits: 2.0.4 karma: 6.3.4 karma-chrome-launcher: 3.1.0 @@ -9570,7 +9601,7 @@ packages: '@rollup/plugin-json': 4.1.0_rollup@1.32.1 '@rollup/plugin-multi-entry': 3.0.1_rollup@1.32.1 '@rollup/plugin-node-resolve': 8.4.0_rollup@1.32.1 - '@types/chai': 4.2.18 + '@types/chai': 4.2.19 '@types/chai-as-promised': 7.1.4 '@types/fs-extra': 8.1.1 '@types/minimist': 1.2.1 @@ -9582,7 +9613,7 @@ packages: chai-as-promised: 7.1.1_chai@4.3.4 chalk: 4.1.1 dotenv: 8.6.0 - eslint: 7.28.0 + eslint: 7.29.0 fs-extra: 8.1.0 minimist: 1.2.5 mocha: 7.2.0 @@ -9604,7 +9635,6 @@ packages: version: 0.0.0 file:projects/digital-twins-core.tgz: dependencies: - '@azure/core-tracing': 1.0.0-preview.11 '@azure/identity': 1.3.0 '@microsoft/api-extractor': 7.7.11 '@rollup/plugin-commonjs': 11.0.2_rollup@1.32.1 @@ -9612,7 +9642,7 @@ packages: '@rollup/plugin-multi-entry': 3.0.1_rollup@1.32.1 '@rollup/plugin-node-resolve': 8.4.0_rollup@1.32.1 '@rollup/plugin-replace': 2.4.2_rollup@1.32.1 - '@types/chai': 4.2.18 + '@types/chai': 4.2.19 '@types/mocha': 7.0.2 '@types/node': 8.10.66 '@types/sinon': 9.0.11 @@ -9620,7 +9650,7 @@ packages: chai: 4.3.4 cross-env: 7.0.3 dotenv: 8.6.0 - eslint: 7.28.0 + eslint: 7.29.0 inherits: 2.0.4 karma: 6.3.4 karma-chrome-launcher: 3.1.0 @@ -9654,26 +9684,26 @@ packages: dev: false name: '@rush-temp/digital-twins-core' resolution: - integrity: sha512-2bQLTapTbOHAdI5qLxuBzKVY98kKRYwhpYqLrXPosx/9cKUplfmDWgmHy+32m8lSnkTpaQgqrlIAWIx9UOJcDg== + integrity: sha512-ZDdMr3qllyTdU+WuhJSoEb3eVwuGddKn79fKcdajDoJMqde0PIFjAjMg61bR+iR4Ij2AfznBrvjl0DshNTgB9Q== tarball: file:projects/digital-twins-core.tgz version: 0.0.0 file:projects/eslint-plugin-azure-sdk.tgz: dependencies: - '@types/chai': 4.2.18 + '@types/chai': 4.2.19 '@types/eslint': 7.2.13 '@types/estree': 0.0.48 '@types/glob': 7.1.3 '@types/json-schema': 7.0.7 '@types/mocha': 7.0.2 '@types/node': 10.17.60 - '@typescript-eslint/eslint-plugin': 4.19.0_579c993deb6b0313d5d0f5c428bab62d - '@typescript-eslint/experimental-utils': 4.19.0_eslint@7.28.0+typescript@4.2.4 - '@typescript-eslint/parser': 4.19.0_eslint@7.28.0+typescript@4.2.4 + '@typescript-eslint/eslint-plugin': 4.19.0_32b60b6a5d7033b9e5296983f03a72ce + '@typescript-eslint/experimental-utils': 4.19.0_eslint@7.29.0+typescript@4.2.4 + '@typescript-eslint/parser': 4.19.0_eslint@7.29.0+typescript@4.2.4 '@typescript-eslint/typescript-estree': 4.19.0_typescript@4.2.4 chai: 4.3.4 - eslint: 7.28.0 - eslint-config-prettier: 7.2.0_eslint@7.28.0 - eslint-plugin-import: 2.23.4_eslint@7.28.0 + eslint: 7.29.0 + eslint-config-prettier: 7.2.0_eslint@7.29.0 + eslint-plugin-import: 2.23.4_eslint@7.29.0 eslint-plugin-no-only-tests: 2.6.0 eslint-plugin-promise: 4.3.1 eslint-plugin-tsdoc: 0.2.14 @@ -9695,7 +9725,6 @@ packages: version: 0.0.0 file:projects/event-hubs.tgz: dependencies: - '@azure/core-tracing': 1.0.0-preview.11 '@microsoft/api-extractor': 7.7.11 '@rollup/plugin-commonjs': 11.0.2_rollup@1.32.1 '@rollup/plugin-inject': 4.0.2_rollup@1.32.1 @@ -9704,7 +9733,7 @@ packages: '@rollup/plugin-node-resolve': 8.4.0_rollup@1.32.1 '@rollup/plugin-replace': 2.4.2_rollup@1.32.1 '@types/async-lock': 1.1.2 - '@types/chai': 4.2.18 + '@types/chai': 4.2.19 '@types/chai-as-promised': 7.1.4 '@types/chai-string': 1.4.2 '@types/debug': 4.1.5 @@ -9713,7 +9742,7 @@ packages: '@types/node': 8.10.66 '@types/sinon': 9.0.11 '@types/uuid': 8.3.0 - '@types/ws': 7.4.4 + '@types/ws': 7.4.5 assert: 1.5.0 buffer: 5.7.1 chai: 4.3.4 @@ -9723,7 +9752,7 @@ packages: debug: 4.3.1 dotenv: 8.6.0 downlevel-dts: 0.4.0 - eslint: 7.28.0 + eslint: 7.29.0 esm: 3.2.25 https-proxy-agent: 5.0.0 is-buffer: 2.0.5 @@ -9758,11 +9787,11 @@ packages: typedoc: 0.15.2 typescript: 4.2.4 uuid: 8.3.2 - ws: 7.4.6 + ws: 7.5.0 dev: false name: '@rush-temp/event-hubs' resolution: - integrity: sha512-hqSwpxNEfx0EqgIlkxvAhM9h9ocfi6rERq71QQGJZL7fOMIEVzI461Z+7pNt3+0Kk/q3j2ymAFkQk74NIc5mzA== + integrity: sha512-waVb3W/FR4mFFVJXs9lMDzAfshanVmja0vWAJggGYu+5fGnd3Cp61En1S10hP+VUHRSqFCvuSX0lJq/+BclbAw== tarball: file:projects/event-hubs.tgz version: 0.0.0 file:projects/event-processor-host.tgz: @@ -9776,14 +9805,14 @@ packages: '@rollup/plugin-node-resolve': 8.4.0_rollup@1.32.1 '@rollup/plugin-replace': 2.4.2_rollup@1.32.1 '@types/async-lock': 1.1.2 - '@types/chai': 4.2.18 + '@types/chai': 4.2.19 '@types/chai-as-promised': 7.1.4 '@types/chai-string': 1.4.2 '@types/debug': 4.1.5 '@types/mocha': 7.0.2 '@types/node': 8.10.66 '@types/uuid': 8.3.0 - '@types/ws': 7.4.4 + '@types/ws': 7.4.5 async-lock: 1.3.0 azure-storage: 2.10.4 chai: 4.3.4 @@ -9792,7 +9821,7 @@ packages: cross-env: 7.0.3 debug: 4.3.1 dotenv: 8.6.0 - eslint: 7.28.0 + eslint: 7.29.0 esm: 3.2.25 https-proxy-agent: 5.0.0 mocha: 7.2.0 @@ -9808,7 +9837,7 @@ packages: typedoc: 0.15.2 typescript: 4.2.4 uuid: 8.3.2 - ws: 7.4.6 + ws: 7.5.0 dev: false name: '@rush-temp/event-processor-host' resolution: @@ -9825,7 +9854,7 @@ packages: '@rollup/plugin-multi-entry': 3.0.1_rollup@1.32.1 '@rollup/plugin-node-resolve': 8.4.0_rollup@1.32.1 '@rollup/plugin-replace': 2.4.2_rollup@1.32.1 - '@types/chai': 4.2.18 + '@types/chai': 4.2.19 '@types/chai-as-promised': 7.1.4 '@types/mocha': 7.0.2 '@types/node': 8.10.66 @@ -9835,7 +9864,7 @@ packages: chai-as-promised: 7.1.1_chai@4.3.4 cross-env: 7.0.3 dotenv: 8.6.0 - eslint: 7.28.0 + eslint: 7.29.0 karma: 6.3.4 karma-chrome-launcher: 3.1.0 karma-coverage: 2.0.3 @@ -9881,7 +9910,7 @@ packages: '@rollup/plugin-multi-entry': 3.0.1_rollup@1.32.1 '@rollup/plugin-node-resolve': 8.4.0_rollup@1.32.1 '@rollup/plugin-replace': 2.4.2_rollup@1.32.1 - '@types/chai': 4.2.18 + '@types/chai': 4.2.19 '@types/chai-as-promised': 7.1.4 '@types/chai-string': 1.4.2 '@types/debug': 4.1.5 @@ -9894,7 +9923,7 @@ packages: cross-env: 7.0.3 debug: 4.3.1 dotenv: 8.6.0 - eslint: 7.28.0 + eslint: 7.29.0 esm: 3.2.25 events: 3.3.0 guid-typescript: 1.0.9 @@ -9931,9 +9960,75 @@ packages: integrity: sha512-kPDNdx4ZkZ5doODbROhFMQDIxyBwbahRK/NtXhvFHdcVBe+LNdSX2XgXVdzY36Ouwwr9/uWbnvlzHhgsG3l9xQ== tarball: file:projects/eventhubs-checkpointstore-blob.tgz version: 0.0.0 + file:projects/identity-cache-persistence.tgz: + dependencies: + '@azure/msal-node': 1.1.0 + '@azure/msal-node-extensions': 1.0.0-alpha.6 + '@microsoft/api-extractor': 7.7.11 + '@types/jws': 3.2.3 + '@types/mocha': 7.0.2 + '@types/node': 8.10.66 + '@types/qs': 6.9.6 + '@types/sinon': 9.0.11 + assert: 1.5.0 + cross-env: 7.0.3 + dotenv: 8.6.0 + eslint: 7.29.0 + inherits: 2.0.4 + keytar: 7.7.0 + mocha: 7.2.0 + mocha-junit-reporter: 1.23.3_mocha@7.2.0 + mock-fs: 4.14.0 + prettier: 1.19.1 + puppeteer: 3.3.0 + rimraf: 3.0.2 + rollup: 1.32.1 + sinon: 9.2.4 + tslib: 2.3.0 + typedoc: 0.15.2 + typescript: 4.2.4 + util: 0.12.4 + dev: false + name: '@rush-temp/identity-cache-persistence' + resolution: + integrity: sha512-4kcOh05iPn1Q/OPFhlcPgE8+2HNI/hTed17+qMabC68jt8SzX7c1Llhiu8uJfmrvyg/ws83dgWnd38dEYDDqEA== + tarball: file:projects/identity-cache-persistence.tgz + version: 0.0.0 + file:projects/identity-vscode.tgz: + dependencies: + '@microsoft/api-extractor': 7.7.11 + '@types/jws': 3.2.3 + '@types/mocha': 7.0.2 + '@types/node': 8.10.66 + '@types/qs': 6.9.6 + '@types/sinon': 9.0.11 + '@types/uuid': 8.3.0 + assert: 1.5.0 + cross-env: 7.0.3 + dotenv: 8.6.0 + eslint: 7.29.0 + inherits: 2.0.4 + keytar: 7.7.0 + mocha: 7.2.0 + mocha-junit-reporter: 1.23.3_mocha@7.2.0 + mock-fs: 4.14.0 + prettier: 1.19.1 + puppeteer: 3.3.0 + rimraf: 3.0.2 + rollup: 1.32.1 + sinon: 9.2.4 + tslib: 2.3.0 + typedoc: 0.15.2 + typescript: 4.2.4 + util: 0.12.4 + dev: false + name: '@rush-temp/identity-vscode' + resolution: + integrity: sha512-Vz1rlmfRj9+CsPGCuj2RxyXlemnz6MrZnch7WSmsMUe/OYljjtVDCiYycAub9HwqqGSIT9xiNgXOBDt+KZIgCA== + tarball: file:projects/identity-vscode.tgz + version: 0.0.0 file:projects/identity.tgz: dependencies: - '@azure/core-tracing': 1.0.0-preview.11 '@azure/msal-browser': 2.14.2 '@azure/msal-common': 4.3.0 '@azure/msal-node': 1.1.0 @@ -9948,7 +10043,7 @@ packages: assert: 1.5.0 cross-env: 7.0.3 dotenv: 8.6.0 - eslint: 7.28.0 + eslint: 7.29.0 events: 3.3.0 inherits: 2.0.4 jws: 4.0.0 @@ -9978,18 +10073,17 @@ packages: dev: false name: '@rush-temp/identity' resolution: - integrity: sha512-2H4J3QdHPuGaq/U642XgXcnHAl8JKjyAGkIX7HLykIvf5/6LQk8uFb+kp3DdlQVRU8rDKAcxu25bB9JWN9s7fw== + integrity: sha512-WhzQXtuVDAdYFtQtAqj9om+FireeOVVkgmVP/bZwh4vYueDup+Nlp6slAq9lMJz/auX80Y9LXy1VzErjNxWtsA== tarball: file:projects/identity.tgz version: 0.0.0 file:projects/iot-device-update.tgz: dependencies: - '@azure/core-tracing': 1.0.0-preview.11 '@microsoft/api-extractor': 7.7.11 '@types/node': 8.10.66 '@types/uuid': 8.3.0 cross-env: 7.0.3 dotenv: 8.6.0 - eslint: 7.28.0 + eslint: 7.29.0 mkdirp: 1.0.4 prettier: 1.19.1 rimraf: 3.0.2 @@ -10005,7 +10099,7 @@ packages: dev: false name: '@rush-temp/iot-device-update' resolution: - integrity: sha512-satKqBTPzyTeyC3KDD2fOauf6SpJzXevUwl2/qa9TRl6IBBFcgxJCAZgHv9SfvhiqgglqN6u+q3FXyU1s6cCmw== + integrity: sha512-6tJv5E6OLIpAoRhOoofXqsG5/QqEXSyXHRY0pPfegzAsUPd6Q9/nOCdnJdEcJefSzE8gtUotJVUr0wT3kFtW1w== tarball: file:projects/iot-device-update.tgz version: 0.0.0 file:projects/iot-modelsrepository.tgz: @@ -10018,13 +10112,13 @@ packages: '@rollup/plugin-multi-entry': 3.0.1_rollup@1.32.1 '@rollup/plugin-node-resolve': 8.4.0_rollup@1.32.1 '@rollup/plugin-replace': 2.4.2_rollup@1.32.1 - '@types/chai': 4.2.18 + '@types/chai': 4.2.19 '@types/mocha': 7.0.2 '@types/node': 8.10.66 '@types/sinon': 9.0.11 chai: 4.3.4 cross-env: 7.0.3 - eslint: 7.28.0 + eslint: 7.29.0 events: 3.3.0 inherits: 2.0.4 karma: 6.3.4 @@ -10062,8 +10156,6 @@ packages: version: 0.0.0 file:projects/keyvault-admin.tgz: dependencies: - '@azure/core-tracing': 1.0.0-preview.11 - '@azure/identity': 2.0.0-beta.3 '@azure/keyvault-keys': 4.2.1 '@microsoft/api-extractor': 7.7.11 '@rollup/plugin-commonjs': 11.0.2_rollup@1.32.1 @@ -10071,7 +10163,7 @@ packages: '@rollup/plugin-multi-entry': 3.0.1_rollup@1.32.1 '@rollup/plugin-node-resolve': 8.4.0_rollup@1.32.1 '@rollup/plugin-replace': 2.4.2_rollup@1.32.1 - '@types/chai': 4.2.18 + '@types/chai': 4.2.19 '@types/chai-as-promised': 7.1.4 '@types/mocha': 7.0.2 '@types/node': 8.10.66 @@ -10082,7 +10174,7 @@ packages: chai-as-promised: 7.1.1_chai@4.3.4 cross-env: 7.0.3 dotenv: 8.6.0 - eslint: 7.28.0 + eslint: 7.29.0 esm: 3.2.25 mocha: 7.2.0 mocha-junit-reporter: 1.23.3_mocha@7.2.0 @@ -10103,13 +10195,11 @@ packages: dev: false name: '@rush-temp/keyvault-admin' resolution: - integrity: sha512-gMC9p+W6CAB2lQWRyn5gMX5fPZxrqcfyeBhDpVE5EeJn4qIVqtGZbXU7ZHUGAwbXRRWSicr4HgTferuy51fXqQ== + integrity: sha512-pvrTD1Fp+QI8mhhePrtbSOrwrAtGzwdsrnWHphylLXk5ihA3CMCKTQgwiWKN5juadDQ7ikbdtgTnMDegyNq5dA== tarball: file:projects/keyvault-admin.tgz version: 0.0.0 file:projects/keyvault-certificates.tgz: dependencies: - '@azure/core-tracing': 1.0.0-preview.11 - '@azure/identity': 2.0.0-beta.3 '@azure/keyvault-secrets': 4.2.0 '@microsoft/api-extractor': 7.7.11 '@rollup/plugin-commonjs': 11.0.2_rollup@1.32.1 @@ -10117,7 +10207,7 @@ packages: '@rollup/plugin-multi-entry': 3.0.1_rollup@1.32.1 '@rollup/plugin-node-resolve': 8.4.0_rollup@1.32.1 '@rollup/plugin-replace': 2.4.2_rollup@1.32.1 - '@types/chai': 4.2.18 + '@types/chai': 4.2.19 '@types/mocha': 7.0.2 '@types/node': 8.10.66 '@types/query-string': 6.2.0 @@ -10126,7 +10216,7 @@ packages: chai: 4.3.4 cross-env: 7.0.3 dotenv: 8.6.0 - eslint: 7.28.0 + eslint: 7.29.0 esm: 3.2.25 karma: 6.3.4 karma-chrome-launcher: 3.1.0 @@ -10162,13 +10252,12 @@ packages: dev: false name: '@rush-temp/keyvault-certificates' resolution: - integrity: sha512-mOQOv05qCpNK+lLfPYUrip7aATQgbj8aAFGp1xwbpgkUAirK6WPdAoyXasmGwmN70OLX74vw5MfM0sfL77cvcQ== + integrity: sha512-DHF+8x775VowWkTR284qcDoRPR0ADBERVWkB4alQE6Qf8Xl8Wfg7QGSAZAzPjTgtw4vmZaHL9c9EzysyEQNqrA== tarball: file:projects/keyvault-certificates.tgz version: 0.0.0 file:projects/keyvault-common.tgz: dependencies: - '@azure/core-tracing': 1.0.0-preview.11 - eslint: 7.28.0 + eslint: 7.29.0 prettier: 1.19.1 rimraf: 3.0.2 tslib: 2.3.0 @@ -10176,20 +10265,18 @@ packages: dev: false name: '@rush-temp/keyvault-common' resolution: - integrity: sha512-s1nJxrKkSBSfYJvrOTJpGcF5HK0IKLlVW+SFhjVccKAVCDYjhvegZUhBdn97hL9D74wTybPcU3pmf0OQ5ZoDJw== + integrity: sha512-GRiP+Js7NDvQqLYkl8FpmDyaJbN+DdiHA97LxaNliDBYMb+9O9h5716lJYbtFAq0K4f5BcN1VWHlW0xIVfrYPg== tarball: file:projects/keyvault-common.tgz version: 0.0.0 file:projects/keyvault-keys.tgz: dependencies: - '@azure/core-tracing': 1.0.0-preview.11 - '@azure/identity': 2.0.0-beta.3 '@microsoft/api-extractor': 7.7.11 '@rollup/plugin-commonjs': 11.0.2_rollup@1.32.1 '@rollup/plugin-json': 4.1.0_rollup@1.32.1 '@rollup/plugin-multi-entry': 3.0.1_rollup@1.32.1 '@rollup/plugin-node-resolve': 8.4.0_rollup@1.32.1 '@rollup/plugin-replace': 2.4.2_rollup@1.32.1 - '@types/chai': 4.2.18 + '@types/chai': 4.2.19 '@types/chai-as-promised': 7.1.4 '@types/mocha': 7.0.2 '@types/node': 8.10.66 @@ -10200,7 +10287,7 @@ packages: chai-as-promised: 7.1.1_chai@4.3.4 cross-env: 7.0.3 dotenv: 8.6.0 - eslint: 7.28.0 + eslint: 7.29.0 esm: 3.2.25 karma: 6.3.4 karma-chrome-launcher: 3.1.0 @@ -10236,20 +10323,18 @@ packages: dev: false name: '@rush-temp/keyvault-keys' resolution: - integrity: sha512-O0gIAqRcHQfU0DyeOO4W+gykiQq48m1WlWTq0bsekJuT7GHKnyGYe0bBCvHwo6o8I4aomBY6L6zTNPOs9lN1DQ== + integrity: sha512-RgDNeqtWdvrmIBrwvvmV8S3LhGNTgxrEpNITdH3ELrzK25OQmDgbB+38oDqk9b8xCpbEAar7d1vyfsPYsubFiw== tarball: file:projects/keyvault-keys.tgz version: 0.0.0 file:projects/keyvault-secrets.tgz: dependencies: - '@azure/core-tracing': 1.0.0-preview.11 - '@azure/identity': 2.0.0-beta.3 '@microsoft/api-extractor': 7.7.11 '@rollup/plugin-commonjs': 11.0.2_rollup@1.32.1 '@rollup/plugin-json': 4.1.0_rollup@1.32.1 '@rollup/plugin-multi-entry': 3.0.1_rollup@1.32.1 '@rollup/plugin-node-resolve': 8.4.0_rollup@1.32.1 '@rollup/plugin-replace': 2.4.2_rollup@1.32.1 - '@types/chai': 4.2.18 + '@types/chai': 4.2.19 '@types/mocha': 7.0.2 '@types/node': 8.10.66 '@types/query-string': 6.2.0 @@ -10258,7 +10343,7 @@ packages: chai: 4.3.4 cross-env: 7.0.3 dotenv: 8.6.0 - eslint: 7.28.0 + eslint: 7.29.0 esm: 3.2.25 karma: 6.3.4 karma-chrome-launcher: 3.1.0 @@ -10294,7 +10379,7 @@ packages: dev: false name: '@rush-temp/keyvault-secrets' resolution: - integrity: sha512-B21xycEmaazY328U1vqyFw4taoWpa1PxXPJZuwJScce/tRnTU/DAh6XWlwCApNvL2i98HwnirRIwgVpJ+vdx5g== + integrity: sha512-W6y3Hbxq5NJm4gUSeJRCPrefdvdyKdGwwnX83QpXUyv0+/e2cjUNtLSPcubfwqp08+lA4CRkFxhC5SA1rtIMPw== tarball: file:projects/keyvault-secrets.tgz version: 0.0.0 file:projects/logger.tgz: @@ -10304,7 +10389,7 @@ packages: '@rollup/plugin-multi-entry': 3.0.1_rollup@1.32.1 '@rollup/plugin-node-resolve': 8.4.0_rollup@1.32.1 '@rollup/plugin-replace': 2.4.2_rollup@1.32.1 - '@types/chai': 4.2.18 + '@types/chai': 4.2.19 '@types/mocha': 7.0.2 '@types/node': 8.10.66 '@types/sinon': 9.0.11 @@ -10313,7 +10398,7 @@ packages: cross-env: 7.0.3 delay: 4.4.1 dotenv: 8.6.0 - eslint: 7.28.0 + eslint: 7.29.0 karma: 6.3.4 karma-chrome-launcher: 3.1.0 karma-coverage: 2.0.3 @@ -10347,9 +10432,8 @@ packages: version: 0.0.0 file:projects/mixedreality-authentication.tgz: dependencies: - '@azure/core-tracing': 1.0.0-preview.11 '@microsoft/api-extractor': 7.7.11 - '@types/chai': 4.2.18 + '@types/chai': 4.2.19 '@types/chai-as-promised': 7.1.4 '@types/mocha': 7.0.2 '@types/node': 8.10.66 @@ -10357,7 +10441,7 @@ packages: chai-as-promised: 7.1.1_chai@4.3.4 cross-env: 7.0.3 dotenv: 8.6.0 - eslint: 7.28.0 + eslint: 7.29.0 inherits: 2.0.4 karma: 6.3.4 karma-chrome-launcher: 3.1.0 @@ -10385,14 +10469,14 @@ packages: dev: false name: '@rush-temp/mixedreality-authentication' resolution: - integrity: sha512-KKDbeIwKMfnH0fHha63by8Y/365C+kIvl8RJk/HnK7mDTlfq/VfVQqXmVADW4IKDhdr/F4EKRCUqsRpViv7IaQ== + integrity: sha512-Wotv/XF90O+vucRT0Tq6IEdgaSlERZ2GU0DO6hx5h/tg6DTyjeJvZ1wCt0YdjT2lUb9IuWFOOevpO4vwQzQkUw== tarball: file:projects/mixedreality-authentication.tgz version: 0.0.0 file:projects/mock-hub.tgz: dependencies: '@types/node': 8.10.66 dotenv: 8.6.0 - eslint: 7.28.0 + eslint: 7.29.0 prettier: 1.19.1 rhea: 2.0.2 rimraf: 3.0.2 @@ -10414,8 +10498,8 @@ packages: '@opentelemetry/tracing': 0.18.2 '@types/mocha': 7.0.2 '@types/node': 10.17.60 - eslint: 7.28.0 - eslint-plugin-node: 11.1.0_eslint@7.28.0 + eslint: 7.29.0 + eslint-plugin-node: 11.1.0_eslint@7.29.0 execa: 3.4.0 mocha: 7.2.0 nock: 12.0.3 @@ -10436,13 +10520,12 @@ packages: version: 0.0.0 file:projects/monitor-query.tgz: dependencies: - '@azure/core-tracing': 1.0.0-preview.11 '@azure/identity': 1.3.0 '@microsoft/api-extractor': 7.7.11 - '@opentelemetry/api': 1.0.0-rc.0 - '@opentelemetry/node': 0.19.0_@opentelemetry+api@1.0.0-rc.0 + '@opentelemetry/api': 0.20.0 + '@opentelemetry/node': 0.20.0_@opentelemetry+api@0.20.0 '@opentelemetry/tracing': 0.18.2 - '@types/chai': 4.2.18 + '@types/chai': 4.2.19 '@types/chai-as-promised': 7.1.4 '@types/mocha': 7.0.2 '@types/node': 8.10.66 @@ -10451,7 +10534,7 @@ packages: cross-env: 7.0.3 dotenv: 8.6.0 downlevel-dts: 0.4.0 - eslint: 7.28.0 + eslint: 7.29.0 esm: 3.2.25 inherits: 2.0.4 karma: 6.3.4 @@ -10480,16 +10563,15 @@ packages: dev: false name: '@rush-temp/monitor-query' resolution: - integrity: sha512-1a+a+z8wd1qXLKUmKQ3D6piq6WY49sb0Rq/nGwS22Uiq1yJii9Gc0ENIn18/04KmJNT7Jdj/hHkgfM0/KhXKdg== + integrity: sha512-7tuRnoGWczKV3/cBlQljU7Uh3VsiKULIIA7IBVB2+NeZjo4QWWj0aJeKWFTlO4T4HAZyU2o1vWsjmTT8YbvpuA== tarball: file:projects/monitor-query.tgz version: 0.0.0 file:projects/perf-ai-form-recognizer.tgz: dependencies: '@azure/ai-form-recognizer': 3.1.0-beta.3 - '@azure/identity': 2.0.0-beta.3 '@types/node': 8.10.66 dotenv: 8.6.0 - eslint: 7.28.0 + eslint: 7.29.0 prettier: 1.19.1 rimraf: 3.0.2 ts-node: 9.1.1_typescript@4.2.4 @@ -10498,7 +10580,7 @@ packages: dev: false name: '@rush-temp/perf-ai-form-recognizer' resolution: - integrity: sha512-2yJhMmPYvcKmfy2o1DZed05GwUoLcZc4dI1WMNc7hObuSgmLAV5V6fnJZyu7d+rRYUMUALHBmsmlCWdSuNU+5Q== + integrity: sha512-Cdcpa3QsglrMNYbuwiDH70V1n9ID+ur65l/cTKce0RjsvZVAfKfxD3spUHJkg4AOOUdr+j+srPISWvFGobhr7A== tarball: file:projects/perf-ai-form-recognizer.tgz version: 0.0.0 file:projects/perf-ai-metrics-advisor.tgz: @@ -10506,7 +10588,7 @@ packages: '@azure/ai-metrics-advisor': 1.0.0-beta.3 '@types/node': 8.10.66 dotenv: 8.6.0 - eslint: 7.28.0 + eslint: 7.29.0 prettier: 1.19.1 rimraf: 3.0.2 ts-node: 9.1.1_typescript@4.2.4 @@ -10520,10 +10602,9 @@ packages: version: 0.0.0 file:projects/perf-ai-text-analytics.tgz: dependencies: - '@azure/identity': 2.0.0-beta.3 '@types/node': 8.10.66 dotenv: 8.6.0 - eslint: 7.28.0 + eslint: 7.29.0 prettier: 1.19.1 rimraf: 3.0.2 ts-node: 9.1.1_typescript@4.2.4 @@ -10532,14 +10613,14 @@ packages: dev: false name: '@rush-temp/perf-ai-text-analytics' resolution: - integrity: sha512-OjCVRfqezh/fSdMsibaqraqnO+kwkO/an50ZKzwY17IeXmxu0joRqr6T8WuYbrANjvmzb76/amWPYl9oLAwomQ== + integrity: sha512-Kvl28eIyB/TUFjHazX20V+clKd8zLCBx+Tb7zTU3Yp1kei9JNZfqMaDmDlCyfw1bmRLDslq5/xfo/NEMWks0wQ== tarball: file:projects/perf-ai-text-analytics.tgz version: 0.0.0 file:projects/perf-core-rest-pipeline.tgz: dependencies: '@types/uuid': 8.3.0 dotenv: 8.6.0 - eslint: 7.28.0 + eslint: 7.29.0 prettier: 1.19.1 rimraf: 3.0.2 ts-node: 9.1.1_typescript@4.2.4 @@ -10555,7 +10636,7 @@ packages: dependencies: '@types/node': 8.10.66 dotenv: 8.6.0 - eslint: 7.28.0 + eslint: 7.29.0 prettier: 1.19.1 rimraf: 3.0.2 ts-node: 9.1.1_typescript@4.2.4 @@ -10571,7 +10652,7 @@ packages: dependencies: '@types/uuid': 8.3.0 dotenv: 8.6.0 - eslint: 7.28.0 + eslint: 7.29.0 prettier: 1.19.1 rimraf: 3.0.2 ts-node: 9.1.1_typescript@4.2.4 @@ -10580,16 +10661,15 @@ packages: dev: false name: '@rush-temp/perf-identity' resolution: - integrity: sha512-0AGKpgyfSwfjXGgEfT+3JFmDLtwWSuYPjMoPgo0Cr6QKwleihOaC2Gkxlb5jgXuo412syQrJyQI2TTs8xhsVGA== + integrity: sha512-Xcm3bc1sQF3yp0wCcTZ3eSDf2o3DDxQvgPzy1Byjird4i3hf4PrhG0l0Z21Oy/OeVDHm50pELO38mJIosuxR7w== tarball: file:projects/perf-identity.tgz version: 0.0.0 file:projects/perf-keyvault-certificates.tgz: dependencies: - '@azure/identity': 2.0.0-beta.3 '@azure/keyvault-certificates': 4.2.0 '@types/uuid': 8.3.0 dotenv: 8.6.0 - eslint: 7.28.0 + eslint: 7.29.0 prettier: 1.19.1 rimraf: 3.0.2 ts-node: 9.1.1_typescript@4.2.4 @@ -10599,16 +10679,15 @@ packages: dev: false name: '@rush-temp/perf-keyvault-certificates' resolution: - integrity: sha512-4//pIdPhCj2R5lVDRuVpKsX0B7oJlL1o+HkZNounvtZIK82XIQpFgG6YaXqxlTUsUVbDyzOyM+FWBGZ0JneKow== + integrity: sha512-XpNksm//ffFe1xUNxcecC+XrTLkeLn/z5C/aihHKQibCk6taCoraSjhKd59NeC1nqch1S/ns/qd1rIQ0H92phQ== tarball: file:projects/perf-keyvault-certificates.tgz version: 0.0.0 file:projects/perf-keyvault-keys.tgz: dependencies: - '@azure/identity': 2.0.0-beta.3 '@azure/keyvault-keys': 4.2.1 '@types/uuid': 8.3.0 dotenv: 8.6.0 - eslint: 7.28.0 + eslint: 7.29.0 prettier: 1.19.1 rimraf: 3.0.2 ts-node: 9.1.1_typescript@4.2.4 @@ -10618,16 +10697,15 @@ packages: dev: false name: '@rush-temp/perf-keyvault-keys' resolution: - integrity: sha512-oxilWE4b/H49CSh5D1XEBp7RtB0E4HEwF5aZGw7ZnP6/gjuG+8KDpFayZZ/Z4C3+HPT2eDn85OlP4kol4feApQ== + integrity: sha512-VFoveWAzBYJEbJmaezcvRjNYSfxnXbs5rvXnxlAyb5CxxyuWgdVzTD6p0fq5UjUfHWZ20kdUFSvOKUp9EKEKBA== tarball: file:projects/perf-keyvault-keys.tgz version: 0.0.0 file:projects/perf-keyvault-secrets.tgz: dependencies: - '@azure/identity': 2.0.0-beta.3 '@azure/keyvault-secrets': 4.2.0 '@types/uuid': 8.3.0 dotenv: 8.6.0 - eslint: 7.28.0 + eslint: 7.29.0 prettier: 1.19.1 rimraf: 3.0.2 ts-node: 9.1.1_typescript@4.2.4 @@ -10637,15 +10715,14 @@ packages: dev: false name: '@rush-temp/perf-keyvault-secrets' resolution: - integrity: sha512-TE/BwyyUp0hpRF5B3u2jg3Oli+Ni6CVb2usjvY2MFXb2ZSvliNGvlMtRNlMGbh8QLQObSQ2bavzBi817tYdc5g== + integrity: sha512-AQw7amiRSQwUcEgs9E288A7yVM1JfIbTBHlNEIt+EvpsZ6MytQJDpSropVmoI7aJPC6XYfz3diprco9yLJ4ffA== tarball: file:projects/perf-keyvault-secrets.tgz version: 0.0.0 file:projects/perf-search-documents.tgz: dependencies: - '@azure/identity': 2.0.0-beta.3 '@types/node': 8.10.66 dotenv: 8.6.0 - eslint: 7.28.0 + eslint: 7.29.0 prettier: 1.19.1 rimraf: 3.0.2 ts-node: 9.1.1_typescript@4.2.4 @@ -10654,7 +10731,7 @@ packages: dev: false name: '@rush-temp/perf-search-documents' resolution: - integrity: sha512-8BV9jxnlf8zHN4PCmJbF7tWIdjn9cbPh5MEFHNu78+DFMvY0ckuCfTvdNvfyHvSEbl7BgZhuFiYJVIbYT8pdXA== + integrity: sha512-vTU34zY2iUB1V//n2VLEyqcrHX+FAUZG3qZp1zKn8Kxq4uDqS/j2Zgk+JE3KkhLvYSpfjZUIBYm5pAbBF5pwKA== tarball: file:projects/perf-search-documents.tgz version: 0.0.0 file:projects/perf-storage-blob.tgz: @@ -10664,7 +10741,7 @@ packages: '@types/node-fetch': 2.5.10 '@types/uuid': 8.3.0 dotenv: 8.6.0 - eslint: 7.28.0 + eslint: 7.29.0 node-fetch: 2.6.1 prettier: 1.19.1 rimraf: 3.0.2 @@ -10683,7 +10760,7 @@ packages: '@types/node': 8.10.66 '@types/uuid': 8.3.0 dotenv: 8.6.0 - eslint: 7.28.0 + eslint: 7.29.0 prettier: 1.19.1 rimraf: 3.0.2 ts-node: 9.1.1_typescript@4.2.4 @@ -10701,7 +10778,7 @@ packages: '@types/node': 8.10.66 '@types/uuid': 8.3.0 dotenv: 8.6.0 - eslint: 7.28.0 + eslint: 7.29.0 prettier: 1.19.1 rimraf: 3.0.2 ts-node: 9.1.1_typescript@4.2.4 @@ -10719,13 +10796,13 @@ packages: '@azure/core-rest-pipeline': 1.0.4 '@azure/identity': 1.3.0 '@microsoft/api-extractor': 7.13.2 - '@types/chai': 4.2.18 + '@types/chai': 4.2.19 '@types/mocha': 7.0.2 '@types/node': 8.10.66 chai: 4.3.4 cross-env: 7.0.3 dotenv: 8.6.0 - eslint: 7.28.0 + eslint: 7.29.0 karma: 6.3.4 karma-chrome-launcher: 3.1.0 karma-coverage: 2.0.3 @@ -10762,13 +10839,13 @@ packages: '@azure/core-rest-pipeline': 1.0.4 '@azure/identity': 1.3.0 '@microsoft/api-extractor': 7.13.2 - '@types/chai': 4.2.18 + '@types/chai': 4.2.19 '@types/mocha': 7.0.2 '@types/node': 8.10.66 chai: 4.3.4 cross-env: 7.0.3 dotenv: 8.6.0 - eslint: 7.28.0 + eslint: 7.29.0 karma: 6.3.4 karma-chrome-launcher: 3.1.0 karma-coverage: 2.0.3 @@ -10802,7 +10879,6 @@ packages: version: 0.0.0 file:projects/quantum-jobs.tgz: dependencies: - '@azure/core-tracing': 1.0.0-preview.11 '@azure/identity': 1.3.0 '@microsoft/api-extractor': 7.7.11 '@rollup/plugin-commonjs': 11.0.2_rollup@1.32.1 @@ -10810,14 +10886,14 @@ packages: '@rollup/plugin-multi-entry': 3.0.1_rollup@1.32.1 '@rollup/plugin-node-resolve': 8.4.0_rollup@1.32.1 '@rollup/plugin-replace': 2.4.2_rollup@1.32.1 - '@types/chai': 4.2.18 + '@types/chai': 4.2.19 '@types/mocha': 7.0.2 '@types/node': 8.10.66 '@types/sinon': 9.0.11 chai: 4.3.4 cross-env: 7.0.3 dotenv: 8.6.0 - eslint: 7.28.0 + eslint: 7.29.0 events: 3.3.0 inherits: 2.0.4 karma: 6.3.4 @@ -10851,13 +10927,11 @@ packages: dev: false name: '@rush-temp/quantum-jobs' resolution: - integrity: sha512-GaSMcSb2ZHuckwS3x3CRDCnmXsMe3tuU4VOu1TuG3DOo1g/G9AXe+4sTPQWSWkU/TjtROxj1qJ8E9JIMUc6D6w== + integrity: sha512-upn0yiRQfNXukzJK3UktrUiKGxVYOq83fsqT1AUnXtVKE/Skg7vF7GgPqXmZ7WZfYFfkZBTWvqTnPUD+ZXSsuQ== tarball: file:projects/quantum-jobs.tgz version: 0.0.0 file:projects/schema-registry-avro.tgz: dependencies: - '@azure/core-tracing': 1.0.0-preview.11 - '@azure/identity': 2.0.0-beta.3 '@microsoft/api-extractor': 7.7.11 '@rollup/plugin-commonjs': 11.0.2_rollup@1.32.1 '@rollup/plugin-inject': 4.0.2_rollup@1.32.1 @@ -10865,7 +10939,7 @@ packages: '@rollup/plugin-multi-entry': 3.0.1_rollup@1.32.1 '@rollup/plugin-node-resolve': 8.4.0_rollup@1.32.1 '@rollup/plugin-replace': 2.4.2_rollup@1.32.1 - '@types/chai': 4.2.18 + '@types/chai': 4.2.19 '@types/chai-as-promised': 7.1.4 '@types/mocha': 7.0.2 '@types/node': 8.10.66 @@ -10875,7 +10949,7 @@ packages: chai-as-promised: 7.1.1_chai@4.3.4 cross-env: 7.0.3 dotenv: 8.6.0 - eslint: 7.28.0 + eslint: 7.29.0 karma: 6.3.4 karma-chrome-launcher: 3.1.0 karma-coverage: 2.0.3 @@ -10907,20 +10981,18 @@ packages: dev: false name: '@rush-temp/schema-registry-avro' resolution: - integrity: sha512-ymBBc1Nl3VY49X7lmauhchRURR7Ma8QeLOHS3pWBxKRNMW+xnZiUDqdsvXOm3ZEFyyplnU59vBa8reQq2bg5kw== + integrity: sha512-YThr/Ltxi5X65AtKzecvNSoDN7p+74dXCgDLZN6h6+bhUN2GIyZvyNPwCUrG0MSeRvF1DC7HYvYwo00/2hFnMw== tarball: file:projects/schema-registry-avro.tgz version: 0.0.0 file:projects/schema-registry.tgz: dependencies: - '@azure/core-tracing': 1.0.0-preview.11 - '@azure/identity': 2.0.0-beta.3 '@microsoft/api-extractor': 7.7.11 '@rollup/plugin-commonjs': 11.0.2_rollup@1.32.1 '@rollup/plugin-json': 4.1.0_rollup@1.32.1 '@rollup/plugin-multi-entry': 3.0.1_rollup@1.32.1 '@rollup/plugin-node-resolve': 8.4.0_rollup@1.32.1 '@rollup/plugin-replace': 2.4.2_rollup@1.32.1 - '@types/chai': 4.2.18 + '@types/chai': 4.2.19 '@types/chai-as-promised': 7.1.4 '@types/mocha': 7.0.2 '@types/node': 8.10.66 @@ -10928,7 +11000,7 @@ packages: chai-as-promised: 7.1.1_chai@4.3.4 cross-env: 7.0.3 dotenv: 8.6.0 - eslint: 7.28.0 + eslint: 7.29.0 karma: 6.3.4 karma-chrome-launcher: 3.1.0 karma-coverage: 2.0.3 @@ -10959,26 +11031,25 @@ packages: dev: false name: '@rush-temp/schema-registry' resolution: - integrity: sha512-pL9/2K0oudjaq514sWx2J/C8IKe5F7Zvf9hHHeiaxdYWOS/Cv1H+bS5U4Z4QvRBwisEvQUKeKiKVlZphFEnkZw== + integrity: sha512-YT9wQqawJcplFXXt8QMZBzCTnMrtlMAzLZGpWw73hfhr94oPAjEFol54qJd3O7HL4ZAoeIUM8Lip1gGTgcqiYw== tarball: file:projects/schema-registry.tgz version: 0.0.0 file:projects/search-documents.tgz: dependencies: - '@azure/core-tracing': 1.0.0-preview.11 '@microsoft/api-extractor': 7.7.11 '@rollup/plugin-commonjs': 11.0.2_rollup@1.32.1 '@rollup/plugin-json': 4.1.0_rollup@1.32.1 '@rollup/plugin-multi-entry': 3.0.1_rollup@1.32.1 '@rollup/plugin-node-resolve': 8.4.0_rollup@1.32.1 '@rollup/plugin-replace': 2.4.2_rollup@1.32.1 - '@types/chai': 4.2.18 + '@types/chai': 4.2.19 '@types/mocha': 7.0.2 '@types/node': 8.10.66 '@types/sinon': 9.0.11 chai: 4.3.4 cross-env: 7.0.3 dotenv: 8.6.0 - eslint: 7.28.0 + eslint: 7.29.0 events: 3.3.0 inherits: 2.0.4 karma: 6.3.4 @@ -11013,13 +11084,11 @@ packages: dev: false name: '@rush-temp/search-documents' resolution: - integrity: sha512-4jXeLMPpLdf19WYQ9lr3t1WXmzSseDeFeH7vACxkihoaiEJF4Cl5frhhQeibTgMWgZl9eQs5YVaqV/EyzkX+SA== + integrity: sha512-RaYfwmjKEeuaRMKTLJvd1bhl3zRNKNXm8jMgbQCtAvbztsqMUa1nER1//BRRttdhZyocX6bTQwxoaWyurC9ySw== tarball: file:projects/search-documents.tgz version: 0.0.0 file:projects/service-bus.tgz: dependencies: - '@azure/core-tracing': 1.0.0-preview.11 - '@azure/identity': 2.0.0-beta.3_debug@4.3.1 '@microsoft/api-extractor': 7.7.11 '@rollup/plugin-commonjs': 11.0.2_rollup@1.32.1 '@rollup/plugin-inject': 4.0.2_rollup@1.32.1 @@ -11027,7 +11096,7 @@ packages: '@rollup/plugin-multi-entry': 3.0.1_rollup@1.32.1 '@rollup/plugin-node-resolve': 8.4.0_rollup@1.32.1 '@rollup/plugin-replace': 2.4.2_rollup@1.32.1 - '@types/chai': 4.2.18 + '@types/chai': 4.2.19 '@types/chai-as-promised': 7.1.4 '@types/debug': 4.1.5 '@types/glob': 7.1.3 @@ -11036,7 +11105,7 @@ packages: '@types/mocha': 7.0.2 '@types/node': 8.10.66 '@types/sinon': 9.0.11 - '@types/ws': 7.4.4 + '@types/ws': 7.4.5 assert: 1.5.0 buffer: 5.7.1 chai: 4.3.4 @@ -11047,7 +11116,7 @@ packages: delay: 4.4.1 dotenv: 8.6.0 downlevel-dts: 0.4.0 - eslint: 7.28.0 + eslint: 7.29.0 esm: 3.2.25 events: 3.3.0 glob: 7.1.7 @@ -11085,16 +11154,15 @@ packages: tslib: 2.3.0 typedoc: 0.15.2 typescript: 4.2.4 - ws: 7.4.6 + ws: 7.5.0 dev: false name: '@rush-temp/service-bus' resolution: - integrity: sha512-zrlAqdm69f3tOJf9Ik7n5vzZo+CxOMXgl3ai1QEc2f/yjPfh71MoTyFBSbaShxT0qlhU1KN1+VdiZgfcirknng== + integrity: sha512-nmjsnu4i71YU0BKjM5mWBOotfzNPx9n9qhFWxeRhQ1vRepucjY1e5e2opdyRuVM3jJabE/nJL1f0SU1lOeTwwA== tarball: file:projects/service-bus.tgz version: 0.0.0 file:projects/storage-blob-changefeed.tgz: dependencies: - '@azure/core-tracing': 1.0.0-preview.11 '@microsoft/api-extractor': 7.7.11 '@rollup/plugin-commonjs': 11.0.2_rollup@1.32.1 '@rollup/plugin-multi-entry': 3.0.1_rollup@1.32.1 @@ -11108,7 +11176,7 @@ packages: dotenv: 8.6.0 downlevel-dts: 0.4.0 es6-promise: 4.2.8 - eslint: 7.28.0 + eslint: 7.29.0 esm: 3.2.25 events: 3.3.0 inherits: 2.0.4 @@ -11146,14 +11214,12 @@ packages: dev: false name: '@rush-temp/storage-blob-changefeed' resolution: - integrity: sha512-7R3Bsnzf3Uebb5AHqb5fqVMLPIoNPB4SbcrF7gKCGavGvenf/CclmbD7Bz+A3ZY8wbv8vFADEh1cq4/TKmzIPQ== + integrity: sha512-TAYIp08XH6wUYN0Q7phk+InW7NcAf3Yc5iUEooKGwygVPjwyQJ1DwX5lRdHERwU5njCtdpK4plnV1H8l5GOFmQ== tarball: file:projects/storage-blob-changefeed.tgz version: 0.0.0 file:projects/storage-blob.tgz: dependencies: '@azure/core-rest-pipeline': 1.0.4 - '@azure/core-tracing': 1.0.0-preview.11 - '@azure/identity': 2.0.0-beta.3 '@microsoft/api-extractor': 7.7.11 '@rollup/plugin-commonjs': 11.0.2_rollup@1.32.1 '@rollup/plugin-json': 4.1.0_rollup@1.32.1 @@ -11168,7 +11234,7 @@ packages: dotenv: 8.6.0 downlevel-dts: 0.4.0 es6-promise: 4.2.8 - eslint: 7.28.0 + eslint: 7.29.0 esm: 3.2.25 events: 3.3.0 inherits: 2.0.4 @@ -11206,13 +11272,11 @@ packages: dev: false name: '@rush-temp/storage-blob' resolution: - integrity: sha512-Cfsjh8AyVanyzUOIy60gQixLKP0ufWc5aw9DrQbGPUoL5URRO1YBN2ENhSVhI3eqhp9CPoVwjFlx3ATJwGZByQ== + integrity: sha512-IoUxzovMJaRnbE5J0Cex9+20xg62IW1junKpaph1XELiwsT+RD/c6Ecim/aVDuX1lQuNykZfbMayUWw+4JQtfw== tarball: file:projects/storage-blob.tgz version: 0.0.0 file:projects/storage-file-datalake.tgz: dependencies: - '@azure/core-tracing': 1.0.0-preview.11 - '@azure/identity': 2.0.0-beta.3 '@microsoft/api-extractor': 7.7.11 '@rollup/plugin-commonjs': 11.0.2_rollup@1.32.1 '@rollup/plugin-json': 4.1.0_rollup@1.32.1 @@ -11227,7 +11291,7 @@ packages: dotenv: 8.6.0 downlevel-dts: 0.4.0 es6-promise: 4.2.8 - eslint: 7.28.0 + eslint: 7.29.0 esm: 3.2.25 events: 3.3.0 execa: 3.4.0 @@ -11266,12 +11330,11 @@ packages: dev: false name: '@rush-temp/storage-file-datalake' resolution: - integrity: sha512-cZ2msGKmv4SO7QRysUpX6K1QrWkWhOKEfh1gxyDSRViMQdNj3cDOuWddySfaT6yek1NNOP/rR2vX8DQeLP1pVg== + integrity: sha512-GSXIBdYBUFknYcqm0yyf0BQFERTz4Gp0wL68GrZzV+8R955SE1mrWaQHj/P0FdieF8OhtjkRpdqL7lLkV0h0wg== tarball: file:projects/storage-file-datalake.tgz version: 0.0.0 file:projects/storage-file-share.tgz: dependencies: - '@azure/core-tracing': 1.0.0-preview.11 '@microsoft/api-extractor': 7.7.11 '@rollup/plugin-commonjs': 11.0.2_rollup@1.32.1 '@rollup/plugin-multi-entry': 3.0.1_rollup@1.32.1 @@ -11284,7 +11347,7 @@ packages: dotenv: 8.6.0 downlevel-dts: 0.4.0 es6-promise: 4.2.8 - eslint: 7.28.0 + eslint: 7.29.0 esm: 3.2.25 events: 3.3.0 inherits: 2.0.4 @@ -11321,7 +11384,7 @@ packages: dev: false name: '@rush-temp/storage-file-share' resolution: - integrity: sha512-ulZXCFqZoQpyg1awS4AaoWUyWkKcV6BvbO2HJ/Uh1A6XSBb/64lOUuh3YXG1zo2Y0YhE/bRISzg8rBnWOvaiog== + integrity: sha512-j2TuqNfjmOV+hVI9t3sRto2kAX0tNEJGKRxgO3ZKWEBPKi2m9qiOqIoCw0cT4u7Hsri8WYckxBC+Fy9n0vXabg== tarball: file:projects/storage-file-share.tgz version: 0.0.0 file:projects/storage-internal-avro.tgz: @@ -11337,7 +11400,7 @@ packages: dotenv: 8.6.0 downlevel-dts: 0.4.0 es6-promise: 4.2.8 - eslint: 7.28.0 + eslint: 7.29.0 esm: 3.2.25 inherits: 2.0.4 karma: 6.3.4 @@ -11377,8 +11440,6 @@ packages: version: 0.0.0 file:projects/storage-queue.tgz: dependencies: - '@azure/core-tracing': 1.0.0-preview.11 - '@azure/identity': 2.0.0-beta.3 '@microsoft/api-extractor': 7.7.11 '@rollup/plugin-commonjs': 11.0.2_rollup@1.32.1 '@rollup/plugin-multi-entry': 3.0.1_rollup@1.32.1 @@ -11391,7 +11452,7 @@ packages: dotenv: 8.6.0 downlevel-dts: 0.4.0 es6-promise: 4.2.8 - eslint: 7.28.0 + eslint: 7.29.0 esm: 3.2.25 inherits: 2.0.4 karma: 6.3.4 @@ -11427,15 +11488,14 @@ packages: dev: false name: '@rush-temp/storage-queue' resolution: - integrity: sha512-+2Jxvir1OTWngF44vLgUGTKhKENyUPNue0H6nbyEdQO0HSgYgO6XXnCoDKuQFGPXfc1vIM7cq3Xk5kGmtdn65w== + integrity: sha512-GpLMmYAA4M3r4FAqNw06BFVyx8/be7iP+YuqBZF54QwowCpoUbU/NnBN4lCmTYg/QfbPxN3lfLTcw8xqUWqB2w== tarball: file:projects/storage-queue.tgz version: 0.0.0 file:projects/synapse-access-control.tgz: dependencies: - '@azure/core-tracing': 1.0.0-preview.11 '@microsoft/api-extractor': 7.7.11 '@rollup/plugin-commonjs': 11.0.2_rollup@1.32.1 - eslint: 7.28.0 + eslint: 7.29.0 rimraf: 3.0.2 rollup: 1.32.1 rollup-plugin-node-resolve: 3.4.0 @@ -11447,15 +11507,14 @@ packages: dev: false name: '@rush-temp/synapse-access-control' resolution: - integrity: sha512-/pxVblJixB3+8YzN4T0+mlULaw26tiIg4NdYqkO6XF3xZy7U+UgYwvMGIwGu/osFtWd5sb43Rp7V0MGzxp/VtA== + integrity: sha512-cTj+TIV66H+n36HhogXdHLPHo+qBWVx6/A3/c/tAa0YdMMGUNLrS7m2f2WcANDJivLHl38gkAY9Nzm5kWIg6Vg== tarball: file:projects/synapse-access-control.tgz version: 0.0.0 file:projects/synapse-artifacts.tgz: dependencies: - '@azure/core-tracing': 1.0.0-preview.11 '@microsoft/api-extractor': 7.7.11 '@rollup/plugin-commonjs': 11.0.2_rollup@1.32.1 - '@types/chai': 4.2.18 + '@types/chai': 4.2.19 '@types/chai-as-promised': 7.1.4 '@types/mocha': 7.0.2 '@types/node': 8.10.66 @@ -11464,7 +11523,7 @@ packages: chai-as-promised: 7.1.1_chai@4.3.4 cross-env: 7.0.3 dotenv: 8.6.0 - eslint: 7.28.0 + eslint: 7.29.0 karma: 6.3.4 karma-chrome-launcher: 3.1.0 karma-coverage: 2.0.3 @@ -11497,15 +11556,14 @@ packages: dev: false name: '@rush-temp/synapse-artifacts' resolution: - integrity: sha512-SMPNAmMY1Gf40sjr/Z7TAp47CV8rL4mYAheFBNhwj2Q8ivr9WSFeskIS9AuNb+sx5H/MKxI9s/0Ui1EZWVhh/Q== + integrity: sha512-wmrO52GPGKpUtaBRypEqdktg4lIsmTVxG3QsW5TeKk2hzID2BPW/WB2Q+yyiRmVAsbeqwBv90khanONpg2fOow== tarball: file:projects/synapse-artifacts.tgz version: 0.0.0 file:projects/synapse-managed-private-endpoints.tgz: dependencies: - '@azure/core-tracing': 1.0.0-preview.11 '@microsoft/api-extractor': 7.7.11 '@rollup/plugin-commonjs': 11.0.2_rollup@1.32.1 - eslint: 7.28.0 + eslint: 7.29.0 rimraf: 3.0.2 rollup: 1.32.1 rollup-plugin-node-resolve: 3.4.0 @@ -11517,15 +11575,14 @@ packages: dev: false name: '@rush-temp/synapse-managed-private-endpoints' resolution: - integrity: sha512-D3f9jhlAgzKk/Y/RyYB7FxIKi4IW9kJPcQ0/Yo/mF3vSbwQe1spj5D8VeTNdY/L0EeT1B847R08BOc7MadCHxw== + integrity: sha512-TxDjc/JaUiPvOTSomuZm5zbnZYGV7PHbmn6jACR/TKb174c/qA58bTOcsk5NgpJGYM5bsGICVLlc1zcme8mf6Q== tarball: file:projects/synapse-managed-private-endpoints.tgz version: 0.0.0 file:projects/synapse-monitoring.tgz: dependencies: - '@azure/core-tracing': 1.0.0-preview.11 '@microsoft/api-extractor': 7.7.11 '@rollup/plugin-commonjs': 11.0.2_rollup@1.32.1 - eslint: 7.28.0 + eslint: 7.29.0 rimraf: 3.0.2 rollup: 1.32.1 rollup-plugin-node-resolve: 3.4.0 @@ -11537,15 +11594,14 @@ packages: dev: false name: '@rush-temp/synapse-monitoring' resolution: - integrity: sha512-eOSS/v2N9ceVol7B16SV7mB/fCH8INh3r4IIu7p41uncKoQKbDrQ+yWcAlT5dsTZ5NZ31XVftACsbzYFImPhWg== + integrity: sha512-czBS9LdKdlhgQTikMWqNQJZrvH6lLWREePSMOrc14+a3a0m8AuqukIG9oP4ChtxMU460+uiP85SUIBD3m6DynA== tarball: file:projects/synapse-monitoring.tgz version: 0.0.0 file:projects/synapse-spark.tgz: dependencies: - '@azure/core-tracing': 1.0.0-preview.11 '@microsoft/api-extractor': 7.7.11 '@rollup/plugin-commonjs': 11.0.2_rollup@1.32.1 - eslint: 7.28.0 + eslint: 7.29.0 rimraf: 3.0.2 rollup: 1.32.1 rollup-plugin-node-resolve: 3.4.0 @@ -11557,14 +11613,13 @@ packages: dev: false name: '@rush-temp/synapse-spark' resolution: - integrity: sha512-jtEPP+8SwrlqkSVH3eX1FbywVcfw4JtkrIu18m1lE3xrBko+X8UnvhDitHCKZ/SLI4N7BgaYv9WrjZrvos9zrQ== + integrity: sha512-0EQSRYbZpxXr2lIJNnJBzLnxNtIg8vvKbZgP8m4BEY/Bh6zePj/040ofZb7oyjDTJ2GBG/6xGSXe6rWcQYbueQ== tarball: file:projects/synapse-spark.tgz version: 0.0.0 file:projects/template.tgz: dependencies: - '@azure/core-tracing': 1.0.0-preview.11 '@microsoft/api-extractor': 7.7.11 - '@types/chai': 4.2.18 + '@types/chai': 4.2.19 '@types/chai-as-promised': 7.1.4 '@types/mocha': 7.0.2 '@types/node': 8.10.66 @@ -11573,7 +11628,7 @@ packages: cross-env: 7.0.3 dotenv: 8.6.0 downlevel-dts: 0.4.0 - eslint: 7.28.0 + eslint: 7.29.0 esm: 3.2.25 inherits: 2.0.4 karma: 6.3.4 @@ -11602,7 +11657,7 @@ packages: dev: false name: '@rush-temp/template' resolution: - integrity: sha512-QFUihYe9zf/MLVpQVDyOPVMflgamzdQ+LTs8HNDGtnaWY4TTSJ98pY27DSsIA8YdgM38rehu8rCyNKnajf5cbg== + integrity: sha512-3fbGqkIaKqvCh8c+NNU0di1d3N/83L3/4VReIw0YOCpTSUOABqCeyJXuI4CrlcuvPjR4W8e+FS4bJU3WknmxJg== tarball: file:projects/template.tgz version: 0.0.0 file:projects/test-utils-perfstress.tgz: @@ -11610,7 +11665,7 @@ packages: '@types/minimist': 1.2.1 '@types/node': 8.10.66 '@types/node-fetch': 2.5.10 - eslint: 7.28.0 + eslint: 7.29.0 karma: 6.3.4 karma-chrome-launcher: 3.1.0 karma-coverage: 2.0.3 @@ -11629,12 +11684,11 @@ packages: version: 0.0.0 file:projects/test-utils-recorder.tgz: dependencies: - '@azure/core-tracing': 1.0.0-preview.11 '@rollup/plugin-commonjs': 11.0.2_rollup@1.32.1 '@rollup/plugin-multi-entry': 3.0.1_rollup@1.32.1 '@rollup/plugin-node-resolve': 8.4.0_rollup@1.32.1 '@rollup/plugin-replace': 2.4.2_rollup@1.32.1 - '@types/chai': 4.2.18 + '@types/chai': 4.2.19 '@types/fs-extra': 8.1.1 '@types/md5': 2.3.0 '@types/mocha': 7.0.2 @@ -11644,7 +11698,7 @@ packages: '@types/node': 8.10.66 chai: 4.3.4 dotenv: 8.6.0 - eslint: 7.28.0 + eslint: 7.29.0 fs-extra: 8.1.0 karma: 6.3.4 karma-chrome-launcher: 3.1.0 @@ -11681,19 +11735,19 @@ packages: dev: false name: '@rush-temp/test-utils-recorder' resolution: - integrity: sha512-Ue5C7FU0GJqkmO177LzZP2VxwZIKhTb3jEn0vSIabo/beh2yUAG8aIdgFhnQwn7+G4W1aR8cJNOsXhEjoF19Jg== + integrity: sha512-fGHrJYrVCdiA8F/jXpnMAdz1b/Xz68JAMfGSHwdiEki22yPna09NHn0kSceTlHuj4OGetNAxk0+ZeY7hhICaHA== tarball: file:projects/test-utils-recorder.tgz version: 0.0.0 file:projects/test-utils.tgz: dependencies: '@microsoft/api-extractor': 7.7.11 - '@types/chai': 4.2.18 + '@types/chai': 4.2.19 '@types/mocha': 7.0.2 '@types/node': 8.10.66 '@types/sinon': 9.0.11 chai: 4.3.4 chai-as-promised: 7.1.1_chai@4.3.4 - eslint: 7.28.0 + eslint: 7.29.0 karma: 6.3.4 karma-chrome-launcher: 3.1.0 karma-coverage: 2.0.3 @@ -11713,10 +11767,8 @@ packages: version: 0.0.0 file:projects/video-analyzer-edge.tgz: dependencies: - '@azure/core-tracing': 1.0.0-preview.11 '@microsoft/api-extractor': 7.7.11 - '@opentelemetry/api': 1.0.0-rc.0 - '@types/chai': 4.2.18 + '@types/chai': 4.2.19 '@types/chai-as-promised': 7.1.4 '@types/mocha': 7.0.2 '@types/node': 8.10.66 @@ -11725,7 +11777,7 @@ packages: chai-as-promised: 7.1.1_chai@4.3.4 cross-env: 7.0.3 dotenv: 8.6.0 - eslint: 7.28.0 + eslint: 7.29.0 events: 3.3.0 inherits: 2.0.4 karma: 6.3.4 @@ -11752,12 +11804,11 @@ packages: dev: false name: '@rush-temp/video-analyzer-edge' resolution: - integrity: sha512-kl5835YkIbgMiF6nnZOcK6Q9D1MF5BosgCptZKssBzaJOVZ6S9NXdKkZ4zpK8e20qm07TKeuiupoq4VN9AQqOA== + integrity: sha512-989HvDXIApeDGqoTNg6I8JUTUtpBn6pzLuYST0JYrKE7/2sJq7x1yp8CtKi+jeqhnG7aiDa9GjacpxgdrQbXEQ== tarball: file:projects/video-analyzer-edge.tgz version: 0.0.0 file:projects/web-pubsub-express.tgz: dependencies: - '@azure/core-tracing': 1.0.0-preview.11 '@azure/identity': 1.3.0 '@microsoft/api-extractor': 7.7.11 '@rollup/plugin-commonjs': 11.0.2_rollup@1.32.1 @@ -11765,10 +11816,10 @@ packages: '@rollup/plugin-multi-entry': 3.0.1_rollup@1.32.1 '@rollup/plugin-node-resolve': 8.4.0_rollup@1.32.1 '@rollup/plugin-replace': 2.4.2_rollup@1.32.1 - '@types/chai': 4.2.18 + '@types/chai': 4.2.19 '@types/express': 4.17.12 '@types/express-serve-static-core': 4.17.21 - '@types/jsonwebtoken': 8.5.1 + '@types/jsonwebtoken': 8.5.2 '@types/mocha': 7.0.2 '@types/node': 8.10.66 '@types/query-string': 6.2.0 @@ -11778,7 +11829,7 @@ packages: cloudevents: 4.0.2 cross-env: 7.0.3 dotenv: 8.6.0 - eslint: 7.28.0 + eslint: 7.29.0 esm: 3.2.25 jsonwebtoken: 8.5.1 karma: 6.3.4 @@ -11814,12 +11865,11 @@ packages: dev: false name: '@rush-temp/web-pubsub-express' resolution: - integrity: sha512-W0ULxg67MAQ8RTfSq2esPGEi6mqf92gCqdWl20upUEg0bGmDG4SNNjsx/KRJFZArvPzfrG3qmm4HGTlzgq5Cug== + integrity: sha512-Lr9G7CThq8ki5jg+j6J8n8kGVpRlCHDtlZWjahAwvL0Y+xHD0CdeHW5Ey95lTdtLQkRUm4LRXrgQezq9J81+XA== tarball: file:projects/web-pubsub-express.tgz version: 0.0.0 file:projects/web-pubsub.tgz: dependencies: - '@azure/core-tracing': 1.0.0-preview.11 '@azure/identity': 1.3.0 '@microsoft/api-extractor': 7.7.11 '@rollup/plugin-commonjs': 11.0.2_rollup@1.32.1 @@ -11827,7 +11877,7 @@ packages: '@rollup/plugin-multi-entry': 3.0.1_rollup@1.32.1 '@rollup/plugin-node-resolve': 8.4.0_rollup@1.32.1 '@rollup/plugin-replace': 2.4.2_rollup@1.32.1 - '@types/jsonwebtoken': 8.5.1 + '@types/jsonwebtoken': 8.5.2 '@types/mocha': 7.0.2 '@types/node': 8.10.66 '@types/query-string': 6.2.0 @@ -11836,7 +11886,7 @@ packages: chai: 4.3.4 cross-env: 7.0.3 dotenv: 8.6.0 - eslint: 7.28.0 + eslint: 7.29.0 esm: 3.2.25 jsonwebtoken: 8.5.1 karma: 6.3.4 @@ -11872,7 +11922,7 @@ packages: dev: false name: '@rush-temp/web-pubsub' resolution: - integrity: sha512-7AUtluOH0BIwZus4j+s3KNgdoU1B5xmPTBJbZN7zUvSlIUeHIIOwZtnp7/eb9/LNn5GYyBUD+Nf5+QGRscKm1g== + integrity: sha512-vR4Y02jE/bLss6v013XQnI7fHgUp+r4ENYXoaHKRAtNMixhfeobUozzrZuMQJjCTyh0ps8FxxEn3BB3It5SySQ== tarball: file:projects/web-pubsub.tgz version: 0.0.0 specifiers: @@ -11916,6 +11966,8 @@ specifiers: '@rush-temp/eventgrid': file:./projects/eventgrid.tgz '@rush-temp/eventhubs-checkpointstore-blob': file:./projects/eventhubs-checkpointstore-blob.tgz '@rush-temp/identity': file:./projects/identity.tgz + '@rush-temp/identity-cache-persistence': file:./projects/identity-cache-persistence.tgz + '@rush-temp/identity-vscode': file:./projects/identity-vscode.tgz '@rush-temp/iot-device-update': file:./projects/iot-device-update.tgz '@rush-temp/iot-modelsrepository': file:./projects/iot-modelsrepository.tgz '@rush-temp/keyvault-admin': file:./projects/keyvault-admin.tgz diff --git a/eng/common/README.md b/eng/common/README.md index b9867f0705e2..732688daadc0 100644 --- a/eng/common/README.md +++ b/eng/common/README.md @@ -1,3 +1,3 @@ # Common Engineering System -Updates under this directory should only be made in the `azure-sdk-tools` repo as any changes under this directory outside of that repo will end up getting overwritten with future updates. For information about making updates see [common engineering system docs](https://github.com/Azure/azure-sdk-tools/blob/master/doc/common/common_engsys.md) +Updates under this directory should only be made in the `azure-sdk-tools` repo as any changes under this directory outside of that repo will end up getting overwritten with future updates. For information about making updates see [common engineering system docs](https://github.com/Azure/azure-sdk-tools/blob/main/doc/common/common_engsys.md) diff --git a/eng/common/docgeneration/Generate-DocIndex.ps1 b/eng/common/docgeneration/Generate-DocIndex.ps1 index 82b3a75e4e53..cf9b5f06ff95 100644 --- a/eng/common/docgeneration/Generate-DocIndex.ps1 +++ b/eng/common/docgeneration/Generate-DocIndex.ps1 @@ -177,5 +177,5 @@ else { LogWarning "The function for 'GetGithubIoDocIndexFn' was not found.` Make sure it is present in eng/scripts/Language-Settings.ps1 and referenced in eng/common/scripts/common.ps1.` - See https://github.com/Azure/azure-sdk-tools/blob/master/doc/common/common_engsys.md#code-structure" + See https://github.com/Azure/azure-sdk-tools/blob/main/doc/common/common_engsys.md#code-structure" } diff --git a/eng/common/pipelines/templates/steps/check-spelling.yml b/eng/common/pipelines/templates/steps/check-spelling.yml index 3865a3f26ece..986d729fc30c 100644 --- a/eng/common/pipelines/templates/steps/check-spelling.yml +++ b/eng/common/pipelines/templates/steps/check-spelling.yml @@ -2,7 +2,7 @@ # and some ref (branch, tag, etc.) or commit hash. Only runs on PRs. # ContinueOnError - true: Pipeline warns on spelling error # false: Pipeline fails on spelling error -# TargetBranch - Target ref (e.g. master) to compare to create file change +# TargetBranch - Target ref (e.g. main) to compare to create file change # list. # CspellConfigPath - Path to cspell.json config location diff --git a/eng/common/pipelines/templates/steps/docs-metadata-release.yml b/eng/common/pipelines/templates/steps/docs-metadata-release.yml index b3c844422585..2f58b90d4d10 100644 --- a/eng/common/pipelines/templates/steps/docs-metadata-release.yml +++ b/eng/common/pipelines/templates/steps/docs-metadata-release.yml @@ -26,7 +26,7 @@ parameters: default: '' - name: PRBranchName type: string - default: 'master-rdme' + default: 'main-rdme' - name: PRLabels type: string default: 'auto-merge' diff --git a/eng/common/pipelines/templates/steps/eng-common-workflow-enforcer.yml b/eng/common/pipelines/templates/steps/eng-common-workflow-enforcer.yml index 0125e6cbacee..b68e1cd0c27a 100644 --- a/eng/common/pipelines/templates/steps/eng-common-workflow-enforcer.yml +++ b/eng/common/pipelines/templates/steps/eng-common-workflow-enforcer.yml @@ -16,7 +16,7 @@ steps: if (($LASTEXITCODE -eq 0) -and ($filesInCommonDir.Count -gt 0)) { Write-Host "##vso[task.LogIssue type=error;]Changes to files under 'eng/common' directory should not be made in this Repo`n${filesInCommonDir}" - Write-Host "##vso[task.LogIssue type=error;]Please follow workflow at https://github.com/Azure/azure-sdk-tools/blob/master/doc/common/common_engsys.md" + Write-Host "##vso[task.LogIssue type=error;]Please follow workflow at https://github.com/Azure/azure-sdk-tools/blob/main/doc/common/common_engsys.md" exit 1 } } diff --git a/eng/common/pipelines/templates/steps/install-pipeline-generation.yml b/eng/common/pipelines/templates/steps/install-pipeline-generation.yml index d0da703285f3..d368d52595b3 100644 --- a/eng/common/pipelines/templates/steps/install-pipeline-generation.yml +++ b/eng/common/pipelines/templates/steps/install-pipeline-generation.yml @@ -9,7 +9,7 @@ steps: - script: > dotnet tool install Azure.Sdk.Tools.PipelineGenerator - --version 1.0.2-dev.20210309.1 + --version 1.0.2-dev.20210621.4 --add-source https://pkgs.dev.azure.com/azure-sdk/public/_packaging/azure-sdk/nuget/v3/index.json --tool-path ${{parameters.ToolPath}} workingDirectory: $(Pipeline.Workspace)/pipeline-generator diff --git a/eng/common/pipelines/templates/steps/set-default-branch.yml b/eng/common/pipelines/templates/steps/set-default-branch.yml index e3eed4512d97..491edaa8b68d 100644 --- a/eng/common/pipelines/templates/steps/set-default-branch.yml +++ b/eng/common/pipelines/templates/steps/set-default-branch.yml @@ -5,8 +5,8 @@ steps: - pwsh: | $setDefaultBranch = (git remote show ${{ parameters.RemoteRepo }} | Out-String) -replace "(?ms).*HEAD branch: (\w+).*", '$1' if ($LASTEXITCODE -ne 0) { - Write-Host "Not able to fetch the default branch from git command. Set to master." - $setDefaultBranch = 'master' + Write-Host "Not able to fetch the default branch from git command. Set to main." + $setDefaultBranch = 'main' } Write-Host "Setting DefaultBranch=$setDefaultBranch" Write-Host "##vso[task.setvariable variable=DefaultBranch]$setDefaultBranch" diff --git a/eng/common/scripts/Create-APIReview.ps1 b/eng/common/scripts/Create-APIReview.ps1 index 8b9007253274..0ef5e0ba6818 100644 --- a/eng/common/scripts/Create-APIReview.ps1 +++ b/eng/common/scripts/Create-APIReview.ps1 @@ -71,7 +71,7 @@ else { Write-Host "The function for 'FindArtifactForApiReviewFn' was not found.` Make sure it is present in eng/scripts/Language-Settings.ps1 and referenced in eng/common/scripts/common.ps1.` - See https://github.com/Azure/azure-sdk-tools/blob/master/doc/common/common_engsys.md#code-structure" + See https://github.com/Azure/azure-sdk-tools/blob/main/doc/common/common_engsys.md#code-structure" exit(1) } @@ -104,7 +104,7 @@ if ($packages) Write-Host "Version: $($version)" Write-Host "SDK Type: $($pkgInfo.SdkType)" - # Run create review step only if build is triggered from master branch or if version is GA. + # Run create review step only if build is triggered from main branch or if version is GA. # This is to avoid invalidating review status by a build triggered from feature branch if ( ($SourceBranch -eq $DefaultBranch) -or (-not $version.IsPrerelease)) { diff --git a/eng/common/scripts/Package-Properties.ps1 b/eng/common/scripts/Package-Properties.ps1 index 3aadc8d58064..64698a181b7e 100644 --- a/eng/common/scripts/Package-Properties.ps1 +++ b/eng/common/scripts/Package-Properties.ps1 @@ -126,7 +126,7 @@ function Get-AllPkgProperties ([string]$ServiceDirectory = $null) return $pkgPropsResult } -# Given the metadata url under https://github.com/Azure/azure-sdk/tree/master/_data/releases/latest, +# Given the metadata url under https://github.com/Azure/azure-sdk/tree/main/_data/releases/latest, # the function will return the csv metadata back as part of response. function Get-CSVMetadata ([string]$MetadataUri=$MetadataUri) { @@ -143,7 +143,7 @@ function Get-PkgPropsForEntireService ($serviceDirectoryPath) { LogError "The function for '$GetPackageInfoFromRepoFn' was not found.` Make sure it is present in eng/scripts/Language-Settings.ps1 and referenced in eng/common/scripts/common.ps1.` - See https://github.com/Azure/azure-sdk-tools/blob/master/doc/common/common_engsys.md#code-structure" + See https://github.com/Azure/azure-sdk-tools/blob/main/doc/common/common_engsys.md#code-structure" } foreach ($directory in (Get-ChildItem $serviceDirectoryPath -Directory)) diff --git a/eng/common/scripts/Prepare-Release.ps1 b/eng/common/scripts/Prepare-Release.ps1 index eed113299a2e..95f175d3fdaf 100644 --- a/eng/common/scripts/Prepare-Release.ps1 +++ b/eng/common/scripts/Prepare-Release.ps1 @@ -180,7 +180,7 @@ else { LogError "The function 'SetPackageVersion' was not found.` Make sure it is present in eng/scripts/Language-Settings.ps1.` - See https://github.com/Azure/azure-sdk-tools/blob/master/doc/common/common_engsys.md#code-structure" + See https://github.com/Azure/azure-sdk-tools/blob/main/doc/common/common_engsys.md#code-structure" exit 1 } diff --git a/eng/common/scripts/Update-DocsMsPackages.ps1 b/eng/common/scripts/Update-DocsMsPackages.ps1 index 2d43127b2b14..4292200f3b6f 100644 --- a/eng/common/scripts/Update-DocsMsPackages.ps1 +++ b/eng/common/scripts/Update-DocsMsPackages.ps1 @@ -31,6 +31,6 @@ if ($UpdateDocsMsPackagesFn -and (Test-Path "Function:$UpdateDocsMsPackagesFn")) } else { LogError "The function for '$UpdateFn' was not found.` Make sure it is present in eng/scripts/Language-Settings.ps1 and referenced in eng/common/scripts/common.ps1.` - See https://github.com/Azure/azure-sdk-tools/blob/master/doc/common/common_engsys.md#code-structure" + See https://github.com/Azure/azure-sdk-tools/blob/main/doc/common/common_engsys.md#code-structure" exit 1 } diff --git a/eng/common/scripts/artifact-metadata-parsing.ps1 b/eng/common/scripts/artifact-metadata-parsing.ps1 index 2339155b359d..dc96ee917288 100644 --- a/eng/common/scripts/artifact-metadata-parsing.ps1 +++ b/eng/common/scripts/artifact-metadata-parsing.ps1 @@ -101,7 +101,7 @@ function RetrievePackages($artifactLocation) { { LogError "The function for '$GetPackageInfoFromPackageFileFn' was not found.` Make sure it is present in eng/scripts/Language-Settings.ps1 and referenced in eng/common/scripts/common.ps1.` - See https://github.com/Azure/azure-sdk-tools/blob/master/doc/common/common_engsys.md#code-structure" + See https://github.com/Azure/azure-sdk-tools/blob/main/doc/common/common_engsys.md#code-structure" } } diff --git a/eng/common/scripts/copy-docs-to-blobstorage.ps1 b/eng/common/scripts/copy-docs-to-blobstorage.ps1 index 7864e9680f1f..f037dcf51e4f 100644 --- a/eng/common/scripts/copy-docs-to-blobstorage.ps1 +++ b/eng/common/scripts/copy-docs-to-blobstorage.ps1 @@ -240,6 +240,6 @@ else { LogWarning "The function for '$PublishGithubIODocsFn' was not found.` Make sure it is present in eng/scripts/Language-Settings.ps1 and referenced in eng/common/scripts/common.ps1.` - See https://github.com/Azure/azure-sdk-tools/blob/master/doc/common/common_engsys.md#code-structure" + See https://github.com/Azure/azure-sdk-tools/blob/main/doc/common/common_engsys.md#code-structure" } diff --git a/eng/common/scripts/update-docs-metadata.ps1 b/eng/common/scripts/update-docs-metadata.ps1 index fc16fea9e552..6154afd51591 100644 --- a/eng/common/scripts/update-docs-metadata.ps1 +++ b/eng/common/scripts/update-docs-metadata.ps1 @@ -24,7 +24,7 @@ param ( . (Join-Path $PSScriptRoot common.ps1) -$releaseReplaceRegex = "(https://github.com/$RepoId/(?:blob|tree)/)master" +$releaseReplaceRegex = "(https://github.com/$RepoId/(?:blob|tree)/)main" function GetMetaData { if (Test-Path Variable:MetadataUri) { diff --git a/eng/pipelines/mgmt-ci.yml b/eng/pipelines/mgmt-ci.yml index 99f3a3ee0ec7..ca673f27b163 100644 --- a/eng/pipelines/mgmt-ci.yml +++ b/eng/pipelines/mgmt-ci.yml @@ -2,6 +2,7 @@ trigger: branches: include: - master + - main paths: include: - eng/pipelines/mgmt-pr.yml @@ -220,7 +221,7 @@ jobs: inputs: verbose: false - - script: 'gulp pack --base-reference=master --head-reference=master' + - script: 'gulp pack --base-reference=main --head-reference=main' displayName: 'gulp pack' - task: CopyFiles@2 diff --git a/eng/pipelines/templates/jobs/ci.yml b/eng/pipelines/templates/jobs/ci.yml index eec9b5624fc6..22ad61dda60e 100644 --- a/eng/pipelines/templates/jobs/ci.yml +++ b/eng/pipelines/templates/jobs/ci.yml @@ -33,7 +33,7 @@ jobs: - script: | echo "##vso[build.addbuildtag]Scheduled" displayName: "Tag scheduled builds" - condition: and(always(),and(eq(variables['Build.SourceBranchName'],'master'),eq(variables['Build.Reason'],'Schedule'))) + condition: and(always(),and(eq(variables['Build.SourceBranchName'],'main'),eq(variables['Build.Reason'],'Schedule'))) - template: ../steps/common.yml diff --git a/eng/pipelines/templates/stages/archetype-js-release.yml b/eng/pipelines/templates/stages/archetype-js-release.yml index 68f2a1d47c1c..dbf7947053b2 100644 --- a/eng/pipelines/templates/stages/archetype-js-release.yml +++ b/eng/pipelines/templates/stages/archetype-js-release.yml @@ -5,7 +5,6 @@ parameters: DependsOn: Build Registry: 'https://registry.npmjs.org/' PrivateRegistry: 'https://pkgs.dev.azure.com/azure-sdk/internal/_packaging/azure-sdk-for-js-pr/npm/registry/' - DocArtifact: 'documentation' TargetDocRepoOwner: '' TargetDocRepoName: '' ServiceDirectory: '' @@ -43,18 +42,13 @@ stages: PackageName: ${{artifact.name}} ServiceName: ${{parameters.ServiceDirectory}} ForRelease: true - - template: /eng/pipelines/templates/steps/stage-artifacts.yml - parameters: - SourceFolder: ${{parameters.ArtifactName}} - TargetFolder: ${{artifact.safeName}} - PackageName: ${{artifact.name}}-[0-9]*.[0-9]*.[0-9]*.tgz - pwsh: | - Get-ChildItem -Recurse $(Pipeline.Workspace)/${{artifact.safeName}} + Get-ChildItem -Recurse ${{parameters.ArtifactName}}/${{artifact.name}} workingDirectory: $(Pipeline.Workspace) displayName: Output Visible Artifacts - template: /eng/common/pipelines/templates/steps/create-tags-and-git-release.yml parameters: - ArtifactLocation: $(Pipeline.Workspace)/${{artifact.safeName}} + ArtifactLocation: $(Pipeline.Workspace)/${{parameters.ArtifactName}}/${{artifact.name}} PackageRepository: Npm ReleaseSha: $(Build.SourceVersion) RepoId: Azure/azure-sdk-for-js @@ -77,7 +71,7 @@ stages: steps: - checkout: self - script: | - export DETECTED_PACKAGE_NAME=`ls $(Pipeline.Workspace)/${{parameters.ArtifactName}}/${{artifact.name}}-[0-9]*[0-9]*.[0-9]*.tgz` + export DETECTED_PACKAGE_NAME=`ls $(Pipeline.Workspace)/${{parameters.ArtifactName}}/${{artifact.name}}/*.tgz` echo "##vso[task.setvariable variable=Package.Archive]$DETECTED_PACKAGE_NAME" displayName: Detecting package archive @@ -124,13 +118,8 @@ stages: deploy: steps: - checkout: self - - template: /eng/pipelines/templates/steps/stage-artifacts.yml - parameters: - SourceFolder: ${{parameters.ArtifactName}} - TargetFolder: ${{artifact.safeName}} - PackageName: ${{artifact.name}}-[0-9]*.[0-9]*.[0-9]*.tgz - pwsh: | - Get-ChildItem -Recurse $(Pipeline.Workspace)/${{artifact.safeName}} + Get-ChildItem -Recurse ${{parameters.ArtifactName}}/${{artifact.name}} workingDirectory: $(Pipeline.Workspace) displayName: Output Visible Artifacts - template: /eng/common/pipelines/templates/steps/get-pr-owners.yml @@ -139,7 +128,7 @@ stages: ServiceDirectory: ${{parameters.ServiceDirectory}} - template: /eng/common/pipelines/templates/steps/docs-metadata-release.yml parameters: - ArtifactLocation: $(Pipeline.Workspace)/${{artifact.safeName}} + ArtifactLocation: $(Pipeline.Workspace)/${{parameters.ArtifactName}}/${{artifact.name}} PackageRepository: NPM ReleaseSha: $(Build.SourceVersion) RepoId: Azure/azure-sdk-for-js @@ -171,30 +160,16 @@ stages: steps: - checkout: self - pwsh: | - $adjustedName = "${{artifact.name}}" -replace "^azure-", "" - Write-Host "##vso[task.setvariable variable=Documentation.Zip]$adjustedName" - displayName: Set Documentation File Name - - template: /eng/pipelines/templates/steps/stage-artifacts.yml - parameters: - SourceFolder: ${{parameters.ArtifactName}} - TargetFolder: ${{artifact.safeName}} - PackageName: ${{artifact.name}}-[0-9]*.[0-9]*.[0-9]*.tgz - - template: /eng/pipelines/templates/steps/stage-artifacts.yml - parameters: - SourceFolder: ${{parameters.DocArtifact}} - TargetFolder: ${{artifact.safeName}}/${{parameters.DocArtifact}} - PackageName: $(Documentation.Zip).zip - - pwsh: | - Get-ChildItem -Recurse $(Pipeline.Workspace)/${{artifact.safeName}} + Get-ChildItem -Recurse ${{parameters.ArtifactName}}/${{artifact.name}} workingDirectory: $(Pipeline.Workspace) displayName: Output Visible Artifacts - template: /eng/common/pipelines/templates/steps/publish-blobs.yml parameters: - FolderForUpload: '$(Pipeline.Workspace)/${{artifact.safeName}}' + FolderForUpload: '$(Pipeline.Workspace)/${{parameters.ArtifactName}}/${{artifact.name}}' BlobSASKey: '$(azure-sdk-docs-prod-sas)' BlobName: '$(azure-sdk-docs-prod-blob-name)' TargetLanguage: 'javascript' - ArtifactLocation: '$(Pipeline.Workspace)/${{artifact.safeName}}' + ArtifactLocation: '$(Pipeline.Workspace)/${{parameters.ArtifactName}}/${{artifact.name}}' # we override the regular script path because we have cloned the build tools repo as a separate artifact. ScriptPath: 'eng/common/scripts/copy-docs-to-blobstorage.ps1' @@ -260,7 +235,7 @@ stages: - ${{ each artifact in parameters.Artifacts }}: - ${{if ne(artifact.skipPublishDevFeed, 'true')}}: - pwsh: | - $detectedPackageName=Get-ChildItem $(Pipeline.Workspace)/${{parameters.ArtifactName}}/${{artifact.name}}-[0-9]*.[0-9]*.[0-9]*-alpha*.tgz + $detectedPackageName=Get-ChildItem $(Pipeline.Workspace)/${{parameters.ArtifactName}}/${{artifact.name}}/*.tgz echo "##vso[task.setvariable variable=Package.Archive]$detectedPackageName" if ('$(Build.Repository.Name)' -eq 'Azure/azure-sdk-for-js') { $npmToken="$(azure-sdk-npm-token)" diff --git a/eng/pipelines/templates/steps/build.yml b/eng/pipelines/templates/steps/build.yml index bf93bb86a022..2ff746ebc439 100644 --- a/eng/pipelines/templates/steps/build.yml +++ b/eng/pipelines/templates/steps/build.yml @@ -60,28 +60,25 @@ steps: Artifacts: ${{ parameters.Artifacts }} ArtifactPath: $(Build.SourcesDirectory)/sdk/${{ parameters.ServiceDirectory }} - # It's important for performance to pass "sdk" as "sourceFolder" rather than as a prefix in "contents". - # The task first enumerates all files under "sourceFolder", then matches them against the "contents" pattern. - - task: CopyFiles@2 - inputs: - sourceFolder: sdk - contents: | - **/$(coalesceResultFilter)/*.tgz - **/$(coalesceResultFilter)/browser/*.zip - targetFolder: $(Build.ArtifactStagingDirectory) - flattenFolders: true - displayName: "Copy packages" - - - template: /eng/common/pipelines/templates/steps/publish-artifact.yml - parameters: - ArtifactPath: '$(Build.ArtifactStagingDirectory)' - ArtifactName: 'packages' - - template: ../steps/generate-doc.yml parameters: ServiceDirectory: ${{parameters.ServiceDirectory}} + - pwsh: | + $artifacts = '${{ convertToJson(parameters.Artifacts) }}' | ConvertFrom-Json + foreach ($artifact in $artifacts) + { + $artifactName = $artifact.name + Write-Host "Copying $artifactName artifacts to $(Build.ArtifactStagingDirectory)/$artifactName" + New-Item -Type Directory -Name $artifactName -Path $(Build.ArtifactStagingDirectory) > $null + Copy-Item sdk/${{parameters.ServiceDirectory}}/**/$artifactName-*.tgz $(Build.ArtifactStagingDirectory)/$artifactName + Copy-Item sdk/${{parameters.ServiceDirectory}}/**/browser/$artifactName-*.zip $(Build.ArtifactStagingDirectory)/$artifactName + New-Item -Type Directory -Name documentation -Path $(Build.ArtifactStagingDirectory)/$artifactName > $null + Copy-Item $(Build.SourcesDirectory)/docGen/$artifactName.zip $(Build.ArtifactStagingDirectory)/$artifactName/documentation + } + displayName: 'Copy Packages' + - template: /eng/common/pipelines/templates/steps/publish-artifact.yml parameters: - ArtifactPath: '$(Build.ArtifactStagingDirectory)/Documentation' - ArtifactName: 'documentation' + ArtifactPath: '$(Build.ArtifactStagingDirectory)' + ArtifactName: 'packages' diff --git a/eng/pipelines/templates/steps/generate-doc.yml b/eng/pipelines/templates/steps/generate-doc.yml index ce402446d67e..01a5d3351311 100644 --- a/eng/pipelines/templates/steps/generate-doc.yml +++ b/eng/pipelines/templates/steps/generate-doc.yml @@ -16,5 +16,5 @@ steps: displayName: "Run Typedoc Docs" - pwsh: | - $(Build.SourcesDirectory)/eng/tools/compress-subfolders.ps1 "$(Build.SourcesDirectory)/docGen" "$(Build.ArtifactStagingDirectory)/Documentation" + $(Build.SourcesDirectory)/eng/tools/compress-subfolders.ps1 "$(Build.SourcesDirectory)/docGen" "$(Build.SourcesDirectory)/docGen" displayName: "Generate Typedoc Docs" diff --git a/eng/pipelines/templates/steps/stage-artifacts.yml b/eng/pipelines/templates/steps/stage-artifacts.yml deleted file mode 100644 index 16202994b855..000000000000 --- a/eng/pipelines/templates/steps/stage-artifacts.yml +++ /dev/null @@ -1,10 +0,0 @@ -parameters: - SourceFolder: '' # normally ${{parameters.ArtifactName}} - TargetFolder: '' # normally ${{artifact.safeName}} - PackageName: '' # normally ${{artifact.name}} - -steps: - - pwsh: | - New-Item -Type Directory -Name ${{parameters.TargetFolder}} -Path $(Pipeline.Workspace) - Copy-Item $(Pipeline.Workspace)/${{parameters.SourceFolder}}/${{parameters.PackageName}} $(Pipeline.Workspace)/${{parameters.TargetFolder}} - displayName: Stage artifacts diff --git a/eng/tools/generate-doc/index.js b/eng/tools/generate-doc/index.js index d8c93c3c7dc8..82a55b32f41c 100644 --- a/eng/tools/generate-doc/index.js +++ b/eng/tools/generate-doc/index.js @@ -31,6 +31,7 @@ const getChecks = async (dir, checks) => { checks.isClient = true; } checks.version = settings["version"]; + checks.packageName = settings["name"]; } if (fileName == "typedoc.json") { checks.typedocPresent = true; @@ -99,6 +100,7 @@ const executeTypedoc = async (exclusionList, inclusionList, generateIndexWithTem typedocPresent: false, isClient: false, version: "0", + packageName: "" }; eachPackagePath = path.join(eachServicePath, eachPackage); pathToAssets = eachPackagePath + "/assets"; @@ -108,23 +110,26 @@ const executeTypedoc = async (exclusionList, inclusionList, generateIndexWithTem console.log( "checks after walk: checks.isPrivate = " + - checks.isPrivate + - ", checks.srcPresent = " + - checks.srcPresent + - ", typedocPresent = " + - checks.typedocPresent + - ", isClient = " + - checks.isClient + - ", version = " + - checks.version + checks.isPrivate + + ", checks.srcPresent = " + + checks.srcPresent + + ", typedocPresent = " + + checks.typedocPresent + + ", isClient = " + + checks.isClient + + ", version = " + + checks.version + + ", packageName = " + + checks.packageName ); console.log("Path: " + eachPackagePath); if (!checks.isPrivate) { if ((argv.clientOnly && checks.isClient) || !argv.clientOnly) { if (checks.srcPresent) { + var artifactName = checks.packageName.replace("@", "").replace("/", "-"); if (argv.docGenOutput === "dg") { docOutputFolder = - "--out ../../../docGen/" + eachPackage + "/" + checks.version + " ./src"; + "--out ../../../docGen/" + artifactName + "/" + checks.version + " ./src"; } let typedocProcess; diff --git a/rush.json b/rush.json index 61ea3b71b0ce..eb5e506f2aeb 100644 --- a/rush.json +++ b/rush.json @@ -541,6 +541,16 @@ "projectFolder": "sdk/identity/identity", "versionPolicyName": "client" }, + { + "packageName": "@azure/identity-vscode", + "projectFolder": "sdk/identity/identity-vscode", + "versionPolicyName": "client" + }, + { + "packageName": "@azure/identity-cache-persistence", + "projectFolder": "sdk/identity/identity-cache-persistence", + "versionPolicyName": "client" + }, { "packageName": "@azure/keyvault-common", "projectFolder": "sdk/keyvault/keyvault-common", diff --git a/sdk/advisor/arm-advisor/README.md b/sdk/advisor/arm-advisor/README.md index 6e851c5fd17e..c78a674a386d 100644 --- a/sdk/advisor/arm-advisor/README.md +++ b/sdk/advisor/arm-advisor/README.md @@ -1,92 +1,101 @@ ## Azure AdvisorManagementClient SDK for JavaScript -This package contains an isomorphic SDK for AdvisorManagementClient. +This package contains an isomorphic SDK (runs both in Node.js and in browsers) for AdvisorManagementClient. ### Currently supported environments -- Node.js version 6.x.x or higher -- Browser JavaScript +- [LTS versions of Node.js](https://nodejs.org/about/releases/) +- Latest versions of Safari, Chrome, Edge, and Firefox. -### How to Install +### Prerequisites +You must have an [Azure subscription](https://azure.microsoft.com/free/). + +### How to install + +To use this SDK in your project, you will need to install two packages. +- `@azure/arm-advisor` that contains the client. +- `@azure/identity` that provides different mechanisms for the client to authenticate your requests using Azure Active Directory. + +Install both packages using the below command: ```bash -npm install @azure/arm-advisor +npm install --save @azure/arm-advisor @azure/identity ``` +> **Note**: You may have used either `@azure/ms-rest-nodeauth` or `@azure/ms-rest-browserauth` in the past. These packages are in maintenance mode receiving critical bug fixes, but no new features. +If you are on a [Node.js that has LTS status](https://nodejs.org/about/releases/), or are writing a client side browser application, we strongly encourage you to upgrade to `@azure/identity` which uses the latest versions of Azure Active Directory and MSAL APIs and provides more authentication options. + ### How to use -#### nodejs - Authentication, client creation and get recommendationMetadata as an example written in TypeScript. +- If you are writing a client side browser application, + - Follow the instructions in the section on Authenticating client side browser applications in [Azure Identity examples](https://aka.ms/azsdk/js/identity/examples) to register your application in the Microsoft identity platform and set the right permissions. + - Copy the client ID and tenant ID from the Overview section of your app registration in Azure portal and use it in the browser sample below. +- If you are writing a server side application, + - [Select a credential from `@azure/identity` based on the authentication method of your choice](https://aka.ms/azsdk/js/identity/examples) + - Complete the set up steps required by the credential if any. + - Use the credential you picked in the place of `DefaultAzureCredential` in the Node.js sample below. -##### Install @azure/ms-rest-nodeauth +In the below samples, we pass the credential and the Azure subscription id to instantiate the client. +Once the client is created, explore the operations on it either in your favorite editor or in our [API reference documentation](https://docs.microsoft.com/javascript/api) to get started. -- Please install minimum version of `"@azure/ms-rest-nodeauth": "^3.0.0"`. -```bash -npm install @azure/ms-rest-nodeauth@"^3.0.0" -``` +#### nodejs - Authentication, client creation, and get recommendationMetadata as an example written in JavaScript. ##### Sample code -```typescript -import * as msRest from "@azure/ms-rest-js"; -import * as msRestAzure from "@azure/ms-rest-azure-js"; -import * as msRestNodeAuth from "@azure/ms-rest-nodeauth"; -import { AdvisorManagementClient, AdvisorManagementModels, AdvisorManagementMappers } from "@azure/arm-advisor"; +```javascript +const { DefaultAzureCredential } = require("@azure/identity"); +const { AdvisorManagementClient } = require("@azure/arm-advisor"); const subscriptionId = process.env["AZURE_SUBSCRIPTION_ID"]; -msRestNodeAuth.interactiveLogin().then((creds) => { - const client = new AdvisorManagementClient(creds, subscriptionId); - const name = "testname"; - client.recommendationMetadata.get(name).then((result) => { - console.log("The result is:"); - console.log(result); - }); +// Use `DefaultAzureCredential` or any other credential of your choice based on https://aka.ms/azsdk/js/identity/examples +// Please note that you can also use credentials from the `@azure/ms-rest-nodeauth` package instead. +const creds = new DefaultAzureCredential(); +const client = new AdvisorManagementClient(creds, subscriptionId); +const name = "testname"; +client.recommendationMetadata.get(name).then((result) => { + console.log("The result is:"); + console.log(result); }).catch((err) => { + console.log("An error occurred:"); console.error(err); }); ``` -#### browser - Authentication, client creation and get recommendationMetadata as an example written in JavaScript. +#### browser - Authentication, client creation, and get recommendationMetadata as an example written in JavaScript. -##### Install @azure/ms-rest-browserauth - -```bash -npm install @azure/ms-rest-browserauth -``` +In browser applications, we recommend using the `InteractiveBrowserCredential` that interactively authenticates using the default system browser. + - See [Single-page application: App registration guide](https://docs.microsoft.com/azure/active-directory/develop/scenario-spa-app-registration) to configure your app registration for the browser. + - Note down the client Id from the previous step and use it in the browser sample below. ##### Sample code -See https://github.com/Azure/ms-rest-browserauth to learn how to authenticate to Azure in the browser. - - index.html + ```html @azure/arm-advisor sample - - + diff --git a/sdk/advisor/arm-advisor/package.json b/sdk/advisor/arm-advisor/package.json index a8157d573cae..f3dcccf69676 100644 --- a/sdk/advisor/arm-advisor/package.json +++ b/sdk/advisor/arm-advisor/package.json @@ -2,10 +2,11 @@ "name": "@azure/arm-advisor", "author": "Microsoft Corporation", "description": "AdvisorManagementClient Library with typescript type definitions for node.js and browser.", - "version": "2.0.0", + "version": "2.1.0", "dependencies": { - "@azure/ms-rest-azure-js": "^2.0.1", - "@azure/ms-rest-js": "^2.0.4", + "@azure/ms-rest-azure-js": "^2.1.0", + "@azure/ms-rest-js": "^2.2.0", + "@azure/core-auth": "^1.1.4", "tslib": "^1.10.0" }, "keywords": [ @@ -20,7 +21,7 @@ "module": "./esm/advisorManagementClient.js", "types": "./esm/advisorManagementClient.d.ts", "devDependencies": { - "typescript": "^3.5.3", + "typescript": "^3.6.0", "rollup": "^1.18.0", "rollup-plugin-node-resolve": "^5.2.0", "rollup-plugin-sourcemaps": "^0.4.2", diff --git a/sdk/advisor/arm-advisor/src/advisorManagementClient.ts b/sdk/advisor/arm-advisor/src/advisorManagementClient.ts index a1de4884947a..4b888955a6a0 100644 --- a/sdk/advisor/arm-advisor/src/advisorManagementClient.ts +++ b/sdk/advisor/arm-advisor/src/advisorManagementClient.ts @@ -9,6 +9,7 @@ */ import * as msRest from "@azure/ms-rest-js"; +import { TokenCredential } from "@azure/core-auth"; import * as Models from "./models"; import * as Mappers from "./models/mappers"; import * as operations from "./operations"; @@ -25,11 +26,16 @@ class AdvisorManagementClient extends AdvisorManagementClientContext { /** * Initializes a new instance of the AdvisorManagementClient class. - * @param credentials Credentials needed for the client to connect to Azure. + * @param credentials Credentials needed for the client to connect to Azure. Credentials + * implementing the TokenCredential interface from the @azure/identity package are recommended. For + * more information about these credentials, see + * {@link https://www.npmjs.com/package/@azure/identity}. Credentials implementing the + * ServiceClientCredentials interface from the older packages @azure/ms-rest-nodeauth and + * @azure/ms-rest-browserauth are also supported. * @param subscriptionId The Azure subscription ID. * @param [options] The parameter options */ - constructor(credentials: msRest.ServiceClientCredentials, subscriptionId: string, options?: Models.AdvisorManagementClientOptions) { + constructor(credentials: msRest.ServiceClientCredentials | TokenCredential, subscriptionId: string, options?: Models.AdvisorManagementClientOptions) { super(credentials, subscriptionId, options); this.recommendationMetadata = new operations.RecommendationMetadata(this); this.configurations = new operations.Configurations(this); diff --git a/sdk/advisor/arm-advisor/src/advisorManagementClientContext.ts b/sdk/advisor/arm-advisor/src/advisorManagementClientContext.ts index e75f0e19b91c..7c8e091f169e 100644 --- a/sdk/advisor/arm-advisor/src/advisorManagementClientContext.ts +++ b/sdk/advisor/arm-advisor/src/advisorManagementClientContext.ts @@ -10,23 +10,29 @@ import * as Models from "./models"; import * as msRest from "@azure/ms-rest-js"; +import { TokenCredential } from "@azure/core-auth"; import * as msRestAzure from "@azure/ms-rest-azure-js"; const packageName = "@azure/arm-advisor"; -const packageVersion = "2.0.0"; +const packageVersion = "2.1.0"; export class AdvisorManagementClientContext extends msRestAzure.AzureServiceClient { - credentials: msRest.ServiceClientCredentials; + credentials: msRest.ServiceClientCredentials | TokenCredential; subscriptionId: string; apiVersion?: string; /** * Initializes a new instance of the AdvisorManagementClient class. - * @param credentials Credentials needed for the client to connect to Azure. + * @param credentials Credentials needed for the client to connect to Azure. Credentials + * implementing the TokenCredential interface from the @azure/identity package are recommended. For + * more information about these credentials, see + * {@link https://www.npmjs.com/package/@azure/identity}. Credentials implementing the + * ServiceClientCredentials interface from the older packages @azure/ms-rest-nodeauth and + * @azure/ms-rest-browserauth are also supported. * @param subscriptionId The Azure subscription ID. * @param [options] The parameter options */ - constructor(credentials: msRest.ServiceClientCredentials, subscriptionId: string, options?: Models.AdvisorManagementClientOptions) { + constructor(credentials: msRest.ServiceClientCredentials | TokenCredential, subscriptionId: string, options?: Models.AdvisorManagementClientOptions) { if (credentials == undefined) { throw new Error('\'credentials\' cannot be null.'); } diff --git a/sdk/analysisservices/arm-analysisservices/README.md b/sdk/analysisservices/arm-analysisservices/README.md index 516548f59279..ea44175bbb2e 100644 --- a/sdk/analysisservices/arm-analysisservices/README.md +++ b/sdk/analysisservices/arm-analysisservices/README.md @@ -1,93 +1,103 @@ ## Azure AnalysisServicesManagementClient SDK for JavaScript -This package contains an isomorphic SDK for AnalysisServicesManagementClient. +This package contains an isomorphic SDK (runs both in Node.js and in browsers) for AnalysisServicesManagementClient. ### Currently supported environments -- Node.js version 6.x.x or higher -- Browser JavaScript +- [LTS versions of Node.js](https://nodejs.org/about/releases/) +- Latest versions of Safari, Chrome, Edge, and Firefox. -### How to Install +### Prerequisites -``` -npm install @azure/arm-analysisservices +You must have an [Azure subscription](https://azure.microsoft.com/free/). + +### How to install + +To use this SDK in your project, you will need to install two packages. +- `@azure/arm-analysisservices` that contains the client. +- `@azure/identity` that provides different mechanisms for the client to authenticate your requests using Azure Active Directory. + +Install both packages using the below command: +```bash +npm install --save @azure/arm-analysisservices @azure/identity ``` +> **Note**: You may have used either `@azure/ms-rest-nodeauth` or `@azure/ms-rest-browserauth` in the past. These packages are in maintenance mode receiving critical bug fixes, but no new features. +If you are on a [Node.js that has LTS status](https://nodejs.org/about/releases/), or are writing a client side browser application, we strongly encourage you to upgrade to `@azure/identity` which uses the latest versions of Azure Active Directory and MSAL APIs and provides more authentication options. + ### How to use -#### nodejs - Authentication, client creation and getDetails servers as an example written in TypeScript. +- If you are writing a client side browser application, + - Follow the instructions in the section on Authenticating client side browser applications in [Azure Identity examples](https://aka.ms/azsdk/js/identity/examples) to register your application in the Microsoft identity platform and set the right permissions. + - Copy the client ID and tenant ID from the Overview section of your app registration in Azure portal and use it in the browser sample below. +- If you are writing a server side application, + - [Select a credential from `@azure/identity` based on the authentication method of your choice](https://aka.ms/azsdk/js/identity/examples) + - Complete the set up steps required by the credential if any. + - Use the credential you picked in the place of `DefaultAzureCredential` in the Node.js sample below. -##### Install @azure/ms-rest-nodeauth +In the below samples, we pass the credential and the Azure subscription id to instantiate the client. +Once the client is created, explore the operations on it either in your favorite editor or in our [API reference documentation](https://docs.microsoft.com/javascript/api) to get started. -``` -npm install @azure/ms-rest-nodeauth -``` +#### nodejs - Authentication, client creation, and getDetails servers as an example written in JavaScript. ##### Sample code -```ts -import * as msRest from "@azure/ms-rest-js"; -import * as msRestAzure from "@azure/ms-rest-azure-js"; -import * as msRestNodeAuth from "@azure/ms-rest-nodeauth"; -import { AnalysisServicesManagementClient, AnalysisServicesManagementModels, AnalysisServicesManagementMappers } from "@azure/arm-analysisservices"; +```javascript +const { DefaultAzureCredential } = require("@azure/identity"); +const { AnalysisServicesManagementClient } = require("@azure/arm-analysisservices"); const subscriptionId = process.env["AZURE_SUBSCRIPTION_ID"]; -msRestNodeAuth.interactiveLogin().then((creds) => { - const client = new AnalysisServicesManagementClient(creds, subscriptionId); - const resourceGroupName = "testresourceGroupName"; - const serverName = "testserverName"; - client.servers.getDetails(resourceGroupName, serverName).then((result) => { - console.log("The result is:"); - console.log(result); - }); +// Use `DefaultAzureCredential` or any other credential of your choice based on https://aka.ms/azsdk/js/identity/examples +// Please note that you can also use credentials from the `@azure/ms-rest-nodeauth` package instead. +const creds = new DefaultAzureCredential(); +const client = new AnalysisServicesManagementClient(creds, subscriptionId); +const resourceGroupName = "testresourceGroupName"; +const serverName = "testserverName"; +client.servers.getDetails(resourceGroupName, serverName).then((result) => { + console.log("The result is:"); + console.log(result); }).catch((err) => { + console.log("An error occurred:"); console.error(err); }); ``` -#### browser - Authentication, client creation and getDetails servers as an example written in JavaScript. +#### browser - Authentication, client creation, and getDetails servers as an example written in JavaScript. -##### Install @azure/ms-rest-browserauth - -``` -npm install @azure/ms-rest-browserauth -``` +In browser applications, we recommend using the `InteractiveBrowserCredential` that interactively authenticates using the default system browser. + - See [Single-page application: App registration guide](https://docs.microsoft.com/azure/active-directory/develop/scenario-spa-app-registration) to configure your app registration for the browser. + - Note down the client Id from the previous step and use it in the browser sample below. ##### Sample code -See https://github.com/Azure/ms-rest-browserauth to learn how to authenticate to Azure in the browser. - - index.html + ```html @azure/arm-analysisservices sample - - + @@ -99,5 +109,4 @@ See https://github.com/Azure/ms-rest-browserauth to learn how to authenticate to - [Microsoft Azure SDK for Javascript](https://github.com/Azure/azure-sdk-for-js) - -![Impressions](https://azure-sdk-impressions.azurewebsites.net/api/impressions/azure-sdk-for-js%2Fsdk%2Fanalysisservices%2Farm-analysisservices%2FREADME.png) +![Impressions](https://azure-sdk-impressions.azurewebsites.net/api/impressions/azure-sdk-for-js/sdk/analysisservices/arm-analysisservices/README.png) diff --git a/sdk/analysisservices/arm-analysisservices/package.json b/sdk/analysisservices/arm-analysisservices/package.json index e5fe81a5b910..b035e8002de1 100644 --- a/sdk/analysisservices/arm-analysisservices/package.json +++ b/sdk/analysisservices/arm-analysisservices/package.json @@ -2,10 +2,11 @@ "name": "@azure/arm-analysisservices", "author": "Microsoft Corporation", "description": "AnalysisServicesManagementClient Library with typescript type definitions for node.js and browser.", - "version": "2.3.2", + "version": "2.4.0", "dependencies": { - "@azure/ms-rest-azure-js": "^1.1.0", - "@azure/ms-rest-js": "^1.1.0", + "@azure/ms-rest-azure-js": "^1.4.0", + "@azure/ms-rest-js": "^1.11.0", + "@azure/core-auth": "^1.1.4", "tslib": "^1.9.3" }, "keywords": [ @@ -20,7 +21,7 @@ "module": "./esm/analysisServicesManagementClient.js", "types": "./esm/analysisServicesManagementClient.d.ts", "devDependencies": { - "typescript": "^3.1.1", + "typescript": "^3.6.0", "rollup": "^0.66.2", "rollup-plugin-node-resolve": "^3.4.0", "uglify-js": "^3.4.9" diff --git a/sdk/analysisservices/arm-analysisservices/src/analysisServicesManagementClient.ts b/sdk/analysisservices/arm-analysisservices/src/analysisServicesManagementClient.ts index 2d67bb6378b1..5d6c4d23ace8 100644 --- a/sdk/analysisservices/arm-analysisservices/src/analysisServicesManagementClient.ts +++ b/sdk/analysisservices/arm-analysisservices/src/analysisServicesManagementClient.ts @@ -9,6 +9,7 @@ */ import * as msRest from "@azure/ms-rest-js"; +import { TokenCredential } from "@azure/core-auth"; import * as Models from "./models"; import * as Mappers from "./models/mappers"; import * as operations from "./operations"; @@ -22,12 +23,17 @@ class AnalysisServicesManagementClient extends AnalysisServicesManagementClientC /** * Initializes a new instance of the AnalysisServicesManagementClient class. - * @param credentials Credentials needed for the client to connect to Azure. + * @param credentials Credentials needed for the client to connect to Azure. Credentials + * implementing the TokenCredential interface from the @azure/identity package are recommended. For + * more information about these credentials, see + * {@link https://www.npmjs.com/package/@azure/identity}. Credentials implementing the + * ServiceClientCredentials interface from the older packages @azure/ms-rest-nodeauth and + * @azure/ms-rest-browserauth are also supported. * @param subscriptionId A unique identifier for a Microsoft Azure subscription. The subscription * ID forms part of the URI for every service call. * @param [options] The parameter options */ - constructor(credentials: msRest.ServiceClientCredentials, subscriptionId: string, options?: Models.AnalysisServicesManagementClientOptions) { + constructor(credentials: msRest.ServiceClientCredentials | TokenCredential, subscriptionId: string, options?: Models.AnalysisServicesManagementClientOptions) { super(credentials, subscriptionId, options); this.servers = new operations.Servers(this); this.operations = new operations.Operations(this); diff --git a/sdk/analysisservices/arm-analysisservices/src/analysisServicesManagementClientContext.ts b/sdk/analysisservices/arm-analysisservices/src/analysisServicesManagementClientContext.ts index e0ff9b6866ee..bc8d1b746e62 100644 --- a/sdk/analysisservices/arm-analysisservices/src/analysisServicesManagementClientContext.ts +++ b/sdk/analysisservices/arm-analysisservices/src/analysisServicesManagementClientContext.ts @@ -10,24 +10,30 @@ import * as Models from "./models"; import * as msRest from "@azure/ms-rest-js"; +import { TokenCredential } from "@azure/core-auth"; import * as msRestAzure from "@azure/ms-rest-azure-js"; const packageName = "@azure/arm-analysisservices"; -const packageVersion = "2.3.2"; +const packageVersion = "2.4.0"; export class AnalysisServicesManagementClientContext extends msRestAzure.AzureServiceClient { - credentials: msRest.ServiceClientCredentials; + credentials: msRest.ServiceClientCredentials | TokenCredential; subscriptionId: string; apiVersion?: string; /** * Initializes a new instance of the AnalysisServicesManagementClient class. - * @param credentials Credentials needed for the client to connect to Azure. + * @param credentials Credentials needed for the client to connect to Azure. Credentials + * implementing the TokenCredential interface from the @azure/identity package are recommended. For + * more information about these credentials, see + * {@link https://www.npmjs.com/package/@azure/identity}. Credentials implementing the + * ServiceClientCredentials interface from the older packages @azure/ms-rest-nodeauth and + * @azure/ms-rest-browserauth are also supported. * @param subscriptionId A unique identifier for a Microsoft Azure subscription. The subscription * ID forms part of the URI for every service call. * @param [options] The parameter options */ - constructor(credentials: msRest.ServiceClientCredentials, subscriptionId: string, options?: Models.AnalysisServicesManagementClientOptions) { + constructor(credentials: msRest.ServiceClientCredentials | TokenCredential, subscriptionId: string, options?: Models.AnalysisServicesManagementClientOptions) { if (credentials == undefined) { throw new Error('\'credentials\' cannot be null.'); } diff --git a/sdk/anomalydetector/ai-anomaly-detector/package.json b/sdk/anomalydetector/ai-anomaly-detector/package.json index b9d22d3755aa..92749f3efee9 100644 --- a/sdk/anomalydetector/ai-anomaly-detector/package.json +++ b/sdk/anomalydetector/ai-anomaly-detector/package.json @@ -67,7 +67,7 @@ "@azure/core-paging": "^1.1.1", "@azure/logger": "^1.0.0", "tslib": "^2.2.0", - "@azure/core-tracing": "1.0.0-preview.11" + "@azure/core-tracing": "1.0.0-preview.12" }, "devDependencies": { "@azure/dev-tool": "^1.0.0", diff --git a/sdk/apimanagement/arm-apimanagement/README.md b/sdk/apimanagement/arm-apimanagement/README.md index c72b1eb0a91b..8b269ab80915 100644 --- a/sdk/apimanagement/arm-apimanagement/README.md +++ b/sdk/apimanagement/arm-apimanagement/README.md @@ -1,103 +1,113 @@ ## Azure ApiManagementClient SDK for JavaScript -This package contains an isomorphic SDK for ApiManagementClient. +This package contains an isomorphic SDK (runs both in Node.js and in browsers) for ApiManagementClient. ### Currently supported environments -- Node.js version 6.x.x or higher -- Browser JavaScript +- [LTS versions of Node.js](https://nodejs.org/about/releases/) +- Latest versions of Safari, Chrome, Edge, and Firefox. -### How to Install +### Prerequisites +You must have an [Azure subscription](https://azure.microsoft.com/free/). + +### How to install + +To use this SDK in your project, you will need to install two packages. +- `@azure/arm-apimanagement` that contains the client. +- `@azure/identity` that provides different mechanisms for the client to authenticate your requests using Azure Active Directory. + +Install both packages using the below command: ```bash -npm install @azure/arm-apimanagement +npm install --save @azure/arm-apimanagement @azure/identity ``` +> **Note**: You may have used either `@azure/ms-rest-nodeauth` or `@azure/ms-rest-browserauth` in the past. These packages are in maintenance mode receiving critical bug fixes, but no new features. +If you are on a [Node.js that has LTS status](https://nodejs.org/about/releases/), or are writing a client side browser application, we strongly encourage you to upgrade to `@azure/identity` which uses the latest versions of Azure Active Directory and MSAL APIs and provides more authentication options. + ### How to use -#### nodejs - client creation and listByService api as an example written in TypeScript. +- If you are writing a client side browser application, + - Follow the instructions in the section on Authenticating client side browser applications in [Azure Identity examples](https://aka.ms/azsdk/js/identity/examples) to register your application in the Microsoft identity platform and set the right permissions. + - Copy the client ID and tenant ID from the Overview section of your app registration in Azure portal and use it in the browser sample below. +- If you are writing a server side application, + - [Select a credential from `@azure/identity` based on the authentication method of your choice](https://aka.ms/azsdk/js/identity/examples) + - Complete the set up steps required by the credential if any. + - Use the credential you picked in the place of `DefaultAzureCredential` in the Node.js sample below. -##### Install @azure/ms-rest-nodeauth +In the below samples, we pass the credential and the Azure subscription id to instantiate the client. +Once the client is created, explore the operations on it either in your favorite editor or in our [API reference documentation](https://docs.microsoft.com/javascript/api) to get started. -- Please install minimum version of `"@azure/ms-rest-nodeauth": "^3.0.0"`. -```bash -npm install @azure/ms-rest-nodeauth@"^3.0.0" -``` +#### nodejs - Authentication, client creation, and listByService api as an example written in JavaScript. ##### Sample code -While the below sample uses the interactive login, other authentication options can be found in the [README.md file of @azure/ms-rest-nodeauth](https://www.npmjs.com/package/@azure/ms-rest-nodeauth) package -```typescript -const msRestNodeAuth = require("@azure/ms-rest-nodeauth"); +```javascript +const { DefaultAzureCredential } = require("@azure/identity"); const { ApiManagementClient } = require("@azure/arm-apimanagement"); const subscriptionId = process.env["AZURE_SUBSCRIPTION_ID"]; -msRestNodeAuth.interactiveLogin().then((creds) => { - const client = new ApiManagementClient(creds, subscriptionId); - const resourceGroupName = "testresourceGroupName"; - const serviceName = "testserviceName"; - const filter = "testfilter"; - const top = 1; - const skip = 1; - const tags = "testtags"; - const expandApiVersionSet = true; - client.api.listByService(resourceGroupName, serviceName, filter, top, skip, tags, expandApiVersionSet).then((result) => { - console.log("The result is:"); - console.log(result); - }); +// Use `DefaultAzureCredential` or any other credential of your choice based on https://aka.ms/azsdk/js/identity/examples +// Please note that you can also use credentials from the `@azure/ms-rest-nodeauth` package instead. +const creds = new DefaultAzureCredential(); +const client = new ApiManagementClient(creds, subscriptionId); +const resourceGroupName = "testresourceGroupName"; +const serviceName = "testserviceName"; +const filter = "testfilter"; +const top = 1; +const skip = 1; +const tags = "testtags"; +const expandApiVersionSet = true; +client.api.listByService(resourceGroupName, serviceName, filter, top, skip, tags, expandApiVersionSet).then((result) => { + console.log("The result is:"); + console.log(result); }).catch((err) => { + console.log("An error occurred:"); console.error(err); }); ``` -#### browser - Authentication, client creation and listByService api as an example written in JavaScript. +#### browser - Authentication, client creation, and listByService api as an example written in JavaScript. -##### Install @azure/ms-rest-browserauth - -```bash -npm install @azure/ms-rest-browserauth -``` +In browser applications, we recommend using the `InteractiveBrowserCredential` that interactively authenticates using the default system browser. + - See [Single-page application: App registration guide](https://docs.microsoft.com/azure/active-directory/develop/scenario-spa-app-registration) to configure your app registration for the browser. + - Note down the client Id from the previous step and use it in the browser sample below. ##### Sample code -See https://github.com/Azure/ms-rest-browserauth to learn how to authenticate to Azure in the browser. - - index.html + ```html @azure/arm-apimanagement sample - - + diff --git a/sdk/apimanagement/arm-apimanagement/package.json b/sdk/apimanagement/arm-apimanagement/package.json index a998acb083b6..7d5af0afd50f 100644 --- a/sdk/apimanagement/arm-apimanagement/package.json +++ b/sdk/apimanagement/arm-apimanagement/package.json @@ -2,10 +2,11 @@ "name": "@azure/arm-apimanagement", "author": "Microsoft Corporation", "description": "ApiManagementClient Library with typescript type definitions for node.js and browser.", - "version": "7.0.0", + "version": "7.1.0", "dependencies": { - "@azure/ms-rest-azure-js": "^2.0.1", - "@azure/ms-rest-js": "^2.0.4", + "@azure/ms-rest-azure-js": "^2.1.0", + "@azure/ms-rest-js": "^2.2.0", + "@azure/core-auth": "^1.1.4", "tslib": "^1.10.0" }, "keywords": [ @@ -20,7 +21,7 @@ "module": "./esm/apiManagementClient.js", "types": "./esm/apiManagementClient.d.ts", "devDependencies": { - "typescript": "^3.5.3", + "typescript": "^3.6.0", "rollup": "^1.18.0", "rollup-plugin-node-resolve": "^5.2.0", "rollup-plugin-sourcemaps": "^0.4.2", diff --git a/sdk/apimanagement/arm-apimanagement/src/apiManagementClient.ts b/sdk/apimanagement/arm-apimanagement/src/apiManagementClient.ts index a94b91e45a04..43154573785a 100644 --- a/sdk/apimanagement/arm-apimanagement/src/apiManagementClient.ts +++ b/sdk/apimanagement/arm-apimanagement/src/apiManagementClient.ts @@ -8,6 +8,7 @@ */ import * as msRest from "@azure/ms-rest-js"; +import { TokenCredential } from "@azure/core-auth"; import * as Models from "./models"; import * as Mappers from "./models/mappers"; import * as operations from "./operations"; @@ -91,12 +92,17 @@ class ApiManagementClient extends ApiManagementClientContext { /** * Initializes a new instance of the ApiManagementClient class. - * @param credentials Credentials needed for the client to connect to Azure. + * @param credentials Credentials needed for the client to connect to Azure. Credentials + * implementing the TokenCredential interface from the @azure/identity package are recommended. For + * more information about these credentials, see + * {@link https://www.npmjs.com/package/@azure/identity}. Credentials implementing the + * ServiceClientCredentials interface from the older packages @azure/ms-rest-nodeauth and + * @azure/ms-rest-browserauth are also supported. * @param subscriptionId Subscription credentials which uniquely identify Microsoft Azure * subscription. The subscription ID forms part of the URI for every service call. * @param [options] The parameter options */ - constructor(credentials: msRest.ServiceClientCredentials, subscriptionId: string, options?: Models.ApiManagementClientOptions) { + constructor(credentials: msRest.ServiceClientCredentials | TokenCredential, subscriptionId: string, options?: Models.ApiManagementClientOptions) { super(credentials, subscriptionId, options); this.api = new operations.Api(this); this.apiRevision = new operations.ApiRevision(this); diff --git a/sdk/apimanagement/arm-apimanagement/src/apiManagementClientContext.ts b/sdk/apimanagement/arm-apimanagement/src/apiManagementClientContext.ts index ae754b309f13..1da942a85c47 100644 --- a/sdk/apimanagement/arm-apimanagement/src/apiManagementClientContext.ts +++ b/sdk/apimanagement/arm-apimanagement/src/apiManagementClientContext.ts @@ -9,24 +9,30 @@ import * as Models from "./models"; import * as msRest from "@azure/ms-rest-js"; +import { TokenCredential } from "@azure/core-auth"; import * as msRestAzure from "@azure/ms-rest-azure-js"; const packageName = "@azure/arm-apimanagement"; -const packageVersion = "7.0.0"; +const packageVersion = "7.1.0"; export class ApiManagementClientContext extends msRestAzure.AzureServiceClient { - credentials: msRest.ServiceClientCredentials; + credentials: msRest.ServiceClientCredentials | TokenCredential; apiVersion?: string; subscriptionId: string; /** * Initializes a new instance of the ApiManagementClient class. - * @param credentials Credentials needed for the client to connect to Azure. + * @param credentials Credentials needed for the client to connect to Azure. Credentials + * implementing the TokenCredential interface from the @azure/identity package are recommended. For + * more information about these credentials, see + * {@link https://www.npmjs.com/package/@azure/identity}. Credentials implementing the + * ServiceClientCredentials interface from the older packages @azure/ms-rest-nodeauth and + * @azure/ms-rest-browserauth are also supported. * @param subscriptionId Subscription credentials which uniquely identify Microsoft Azure * subscription. The subscription ID forms part of the URI for every service call. * @param [options] The parameter options */ - constructor(credentials: msRest.ServiceClientCredentials, subscriptionId: string, options?: Models.ApiManagementClientOptions) { + constructor(credentials: msRest.ServiceClientCredentials | TokenCredential, subscriptionId: string, options?: Models.ApiManagementClientOptions) { if (credentials == undefined) { throw new Error('\'credentials\' cannot be null.'); } diff --git a/sdk/appconfiguration/app-configuration/package.json b/sdk/appconfiguration/app-configuration/package.json index a8896b927af1..90c0dd71c775 100644 --- a/sdk/appconfiguration/app-configuration/package.json +++ b/sdk/appconfiguration/app-configuration/package.json @@ -90,13 +90,13 @@ "@azure/core-asynciterator-polyfill": "^1.0.0", "@azure/core-http": "^1.2.0", "@azure/core-paging": "^1.1.1", - "@azure/core-tracing": "1.0.0-preview.11", + "@azure/core-tracing": "1.0.0-preview.12", "tslib": "^2.2.0" }, "devDependencies": { "@azure/dev-tool": "^1.0.0", "@azure/eslint-plugin-azure-sdk": "^3.0.0", - "@azure/identity": "2.0.0-beta.3", + "@azure/identity": "2.0.0-beta.4", "@azure/keyvault-secrets": "^4.2.0", "@azure/test-utils-recorder": "^1.0.0", "@microsoft/api-extractor": "7.7.11", diff --git a/sdk/appconfiguration/arm-appconfiguration/README.md b/sdk/appconfiguration/arm-appconfiguration/README.md index 7b59569e1ed6..69b807098b23 100644 --- a/sdk/appconfiguration/arm-appconfiguration/README.md +++ b/sdk/appconfiguration/arm-appconfiguration/README.md @@ -1,92 +1,101 @@ ## Azure AppConfigurationManagementClient SDK for JavaScript -This package contains an isomorphic SDK for AppConfigurationManagementClient. +This package contains an isomorphic SDK (runs both in Node.js and in browsers) for AppConfigurationManagementClient. ### Currently supported environments -- Node.js version 6.x.x or higher -- Browser JavaScript +- [LTS versions of Node.js](https://nodejs.org/about/releases/) +- Latest versions of Safari, Chrome, Edge, and Firefox. -### How to Install +### Prerequisites +You must have an [Azure subscription](https://azure.microsoft.com/free/). + +### How to install + +To use this SDK in your project, you will need to install two packages. +- `@azure/arm-appconfiguration` that contains the client. +- `@azure/identity` that provides different mechanisms for the client to authenticate your requests using Azure Active Directory. + +Install both packages using the below command: ```bash -npm install @azure/arm-appconfiguration +npm install --save @azure/arm-appconfiguration @azure/identity ``` +> **Note**: You may have used either `@azure/ms-rest-nodeauth` or `@azure/ms-rest-browserauth` in the past. These packages are in maintenance mode receiving critical bug fixes, but no new features. +If you are on a [Node.js that has LTS status](https://nodejs.org/about/releases/), or are writing a client side browser application, we strongly encourage you to upgrade to `@azure/identity` which uses the latest versions of Azure Active Directory and MSAL APIs and provides more authentication options. + ### How to use -#### nodejs - Authentication, client creation and list configurationStores as an example written in TypeScript. +- If you are writing a client side browser application, + - Follow the instructions in the section on Authenticating client side browser applications in [Azure Identity examples](https://aka.ms/azsdk/js/identity/examples) to register your application in the Microsoft identity platform and set the right permissions. + - Copy the client ID and tenant ID from the Overview section of your app registration in Azure portal and use it in the browser sample below. +- If you are writing a server side application, + - [Select a credential from `@azure/identity` based on the authentication method of your choice](https://aka.ms/azsdk/js/identity/examples) + - Complete the set up steps required by the credential if any. + - Use the credential you picked in the place of `DefaultAzureCredential` in the Node.js sample below. -##### Install @azure/ms-rest-nodeauth +In the below samples, we pass the credential and the Azure subscription id to instantiate the client. +Once the client is created, explore the operations on it either in your favorite editor or in our [API reference documentation](https://docs.microsoft.com/javascript/api) to get started. -- Please install minimum version of `"@azure/ms-rest-nodeauth": "^3.0.0"`. -```bash -npm install @azure/ms-rest-nodeauth@"^3.0.0" -``` +#### nodejs - Authentication, client creation, and list configurationStores as an example written in JavaScript. ##### Sample code -```typescript -import * as msRest from "@azure/ms-rest-js"; -import * as msRestAzure from "@azure/ms-rest-azure-js"; -import * as msRestNodeAuth from "@azure/ms-rest-nodeauth"; -import { AppConfigurationManagementClient, AppConfigurationManagementModels, AppConfigurationManagementMappers } from "@azure/arm-appconfiguration"; +```javascript +const { DefaultAzureCredential } = require("@azure/identity"); +const { AppConfigurationManagementClient } = require("@azure/arm-appconfiguration"); const subscriptionId = process.env["AZURE_SUBSCRIPTION_ID"]; -msRestNodeAuth.interactiveLogin().then((creds) => { - const client = new AppConfigurationManagementClient(creds, subscriptionId); - const skipToken = "testskipToken"; - client.configurationStores.list(skipToken).then((result) => { - console.log("The result is:"); - console.log(result); - }); +// Use `DefaultAzureCredential` or any other credential of your choice based on https://aka.ms/azsdk/js/identity/examples +// Please note that you can also use credentials from the `@azure/ms-rest-nodeauth` package instead. +const creds = new DefaultAzureCredential(); +const client = new AppConfigurationManagementClient(creds, subscriptionId); +const skipToken = "testskipToken"; +client.configurationStores.list(skipToken).then((result) => { + console.log("The result is:"); + console.log(result); }).catch((err) => { + console.log("An error occurred:"); console.error(err); }); ``` -#### browser - Authentication, client creation and list configurationStores as an example written in JavaScript. +#### browser - Authentication, client creation, and list configurationStores as an example written in JavaScript. -##### Install @azure/ms-rest-browserauth - -```bash -npm install @azure/ms-rest-browserauth -``` +In browser applications, we recommend using the `InteractiveBrowserCredential` that interactively authenticates using the default system browser. + - See [Single-page application: App registration guide](https://docs.microsoft.com/azure/active-directory/develop/scenario-spa-app-registration) to configure your app registration for the browser. + - Note down the client Id from the previous step and use it in the browser sample below. ##### Sample code -See https://github.com/Azure/ms-rest-browserauth to learn how to authenticate to Azure in the browser. - - index.html + ```html @azure/arm-appconfiguration sample - - + diff --git a/sdk/appconfiguration/arm-appconfiguration/package.json b/sdk/appconfiguration/arm-appconfiguration/package.json index 26b7c0ec5092..6f81951910db 100644 --- a/sdk/appconfiguration/arm-appconfiguration/package.json +++ b/sdk/appconfiguration/arm-appconfiguration/package.json @@ -2,10 +2,11 @@ "name": "@azure/arm-appconfiguration", "author": "Microsoft Corporation", "description": "AppConfigurationManagementClient Library with typescript type definitions for node.js and browser.", - "version": "1.3.0", + "version": "1.4.0", "dependencies": { - "@azure/ms-rest-azure-js": "^2.0.1", - "@azure/ms-rest-js": "^2.0.4", + "@azure/ms-rest-azure-js": "^2.1.0", + "@azure/ms-rest-js": "^2.2.0", + "@azure/core-auth": "^1.1.4", "tslib": "^1.10.0" }, "keywords": [ @@ -20,7 +21,7 @@ "module": "./esm/appConfigurationManagementClient.js", "types": "./esm/appConfigurationManagementClient.d.ts", "devDependencies": { - "typescript": "^3.5.3", + "typescript": "^3.6.0", "rollup": "^1.18.0", "rollup-plugin-node-resolve": "^5.2.0", "rollup-plugin-sourcemaps": "^0.4.2", diff --git a/sdk/appconfiguration/arm-appconfiguration/src/appConfigurationManagementClient.ts b/sdk/appconfiguration/arm-appconfiguration/src/appConfigurationManagementClient.ts index bc7c2ccf0f9c..b58eabc6d21f 100644 --- a/sdk/appconfiguration/arm-appconfiguration/src/appConfigurationManagementClient.ts +++ b/sdk/appconfiguration/arm-appconfiguration/src/appConfigurationManagementClient.ts @@ -9,6 +9,7 @@ */ import * as msRest from "@azure/ms-rest-js"; +import { TokenCredential } from "@azure/core-auth"; import * as Models from "./models"; import * as Mappers from "./models/mappers"; import * as operations from "./operations"; @@ -24,11 +25,16 @@ class AppConfigurationManagementClient extends AppConfigurationManagementClientC /** * Initializes a new instance of the AppConfigurationManagementClient class. - * @param credentials Credentials needed for the client to connect to Azure. + * @param credentials Credentials needed for the client to connect to Azure. Credentials + * implementing the TokenCredential interface from the @azure/identity package are recommended. For + * more information about these credentials, see + * {@link https://www.npmjs.com/package/@azure/identity}. Credentials implementing the + * ServiceClientCredentials interface from the older packages @azure/ms-rest-nodeauth and + * @azure/ms-rest-browserauth are also supported. * @param subscriptionId The Microsoft Azure subscription ID. * @param [options] The parameter options */ - constructor(credentials: msRest.ServiceClientCredentials, subscriptionId: string, options?: Models.AppConfigurationManagementClientOptions) { + constructor(credentials: msRest.ServiceClientCredentials | TokenCredential, subscriptionId: string, options?: Models.AppConfigurationManagementClientOptions) { super(credentials, subscriptionId, options); this.configurationStores = new operations.ConfigurationStores(this); this.operations = new operations.Operations(this); diff --git a/sdk/appconfiguration/arm-appconfiguration/src/appConfigurationManagementClientContext.ts b/sdk/appconfiguration/arm-appconfiguration/src/appConfigurationManagementClientContext.ts index bacdf7ad3cfa..72641b89d50e 100644 --- a/sdk/appconfiguration/arm-appconfiguration/src/appConfigurationManagementClientContext.ts +++ b/sdk/appconfiguration/arm-appconfiguration/src/appConfigurationManagementClientContext.ts @@ -10,23 +10,29 @@ import * as Models from "./models"; import * as msRest from "@azure/ms-rest-js"; +import { TokenCredential } from "@azure/core-auth"; import * as msRestAzure from "@azure/ms-rest-azure-js"; const packageName = "@azure/arm-appconfiguration"; -const packageVersion = "1.3.0"; +const packageVersion = "1.4.0"; export class AppConfigurationManagementClientContext extends msRestAzure.AzureServiceClient { - credentials: msRest.ServiceClientCredentials; + credentials: msRest.ServiceClientCredentials | TokenCredential; subscriptionId: string; apiVersion?: string; /** * Initializes a new instance of the AppConfigurationManagementClient class. - * @param credentials Credentials needed for the client to connect to Azure. + * @param credentials Credentials needed for the client to connect to Azure. Credentials + * implementing the TokenCredential interface from the @azure/identity package are recommended. For + * more information about these credentials, see + * {@link https://www.npmjs.com/package/@azure/identity}. Credentials implementing the + * ServiceClientCredentials interface from the older packages @azure/ms-rest-nodeauth and + * @azure/ms-rest-browserauth are also supported. * @param subscriptionId The Microsoft Azure subscription ID. * @param [options] The parameter options */ - constructor(credentials: msRest.ServiceClientCredentials, subscriptionId: string, options?: Models.AppConfigurationManagementClientOptions) { + constructor(credentials: msRest.ServiceClientCredentials | TokenCredential, subscriptionId: string, options?: Models.AppConfigurationManagementClientOptions) { if (credentials == undefined) { throw new Error('\'credentials\' cannot be null.'); } diff --git a/sdk/applicationinsights/arm-appinsights/README.md b/sdk/applicationinsights/arm-appinsights/README.md index a81a6333908d..4b865a5e2981 100644 --- a/sdk/applicationinsights/arm-appinsights/README.md +++ b/sdk/applicationinsights/arm-appinsights/README.md @@ -1,90 +1,100 @@ ## Azure ApplicationInsightsManagementClient SDK for JavaScript -This package contains an isomorphic SDK for ApplicationInsightsManagementClient. +This package contains an isomorphic SDK (runs both in Node.js and in browsers) for ApplicationInsightsManagementClient. ### Currently supported environments -- Node.js version 6.x.x or higher -- Browser JavaScript +- [LTS versions of Node.js](https://nodejs.org/about/releases/) +- Latest versions of Safari, Chrome, Edge, and Firefox. -### How to Install +### Prerequisites +You must have an [Azure subscription](https://azure.microsoft.com/free/). + +### How to install + +To use this SDK in your project, you will need to install two packages. +- `@azure/arm-appinsights` that contains the client. +- `@azure/identity` that provides different mechanisms for the client to authenticate your requests using Azure Active Directory. + +Install both packages using the below command: ```bash -npm install @azure/arm-appinsights +npm install --save @azure/arm-appinsights @azure/identity ``` +> **Note**: You may have used either `@azure/ms-rest-nodeauth` or `@azure/ms-rest-browserauth` in the past. These packages are in maintenance mode receiving critical bug fixes, but no new features. +If you are on a [Node.js that has LTS status](https://nodejs.org/about/releases/), or are writing a client side browser application, we strongly encourage you to upgrade to `@azure/identity` which uses the latest versions of Azure Active Directory and MSAL APIs and provides more authentication options. + ### How to use -#### nodejs - Authentication, client creation and list operations as an example written in TypeScript. +- If you are writing a client side browser application, + - Follow the instructions in the section on Authenticating client side browser applications in [Azure Identity examples](https://aka.ms/azsdk/js/identity/examples) to register your application in the Microsoft identity platform and set the right permissions. + - Copy the client ID and tenant ID from the Overview section of your app registration in Azure portal and use it in the browser sample below. +- If you are writing a server side application, + - [Select a credential from `@azure/identity` based on the authentication method of your choice](https://aka.ms/azsdk/js/identity/examples) + - Complete the set up steps required by the credential if any. + - Use the credential you picked in the place of `DefaultAzureCredential` in the Node.js sample below. -##### Install @azure/ms-rest-nodeauth +In the below samples, we pass the credential and the Azure subscription id to instantiate the client. +Once the client is created, explore the operations on it either in your favorite editor or in our [API reference documentation](https://docs.microsoft.com/javascript/api) to get started. -- Please install minimum version of `"@azure/ms-rest-nodeauth": "^3.0.0"`. -```bash -npm install @azure/ms-rest-nodeauth@"^3.0.0" -``` +#### nodejs - Authentication, client creation, and list operations as an example written in JavaScript. ##### Sample code -```typescript -import * as msRest from "@azure/ms-rest-js"; -import * as msRestAzure from "@azure/ms-rest-azure-js"; -import * as msRestNodeAuth from "@azure/ms-rest-nodeauth"; -import { ApplicationInsightsManagementClient, ApplicationInsightsManagementModels, ApplicationInsightsManagementMappers } from "@azure/arm-appinsights"; +```javascript +const { DefaultAzureCredential } = require("@azure/identity"); +const { ApplicationInsightsManagementClient } = require("@azure/arm-appinsights"); const subscriptionId = process.env["AZURE_SUBSCRIPTION_ID"]; -msRestNodeAuth.interactiveLogin().then((creds) => { - const client = new ApplicationInsightsManagementClient(creds, subscriptionId); - client.operations.list().then((result) => { - console.log("The result is:"); - console.log(result); - }); +// Use `DefaultAzureCredential` or any other credential of your choice based on https://aka.ms/azsdk/js/identity/examples +// Please note that you can also use credentials from the `@azure/ms-rest-nodeauth` package instead. +const creds = new DefaultAzureCredential(); +const client = new ApplicationInsightsManagementClient(creds, subscriptionId); + +client.operations.list().then((result) => { + console.log("The result is:"); + console.log(result); }).catch((err) => { + console.log("An error occurred:"); console.error(err); }); ``` -#### browser - Authentication, client creation and list operations as an example written in JavaScript. - -##### Install @azure/ms-rest-browserauth +#### browser - Authentication, client creation, and list operations as an example written in JavaScript. -```bash -npm install @azure/ms-rest-browserauth -``` +In browser applications, we recommend using the `InteractiveBrowserCredential` that interactively authenticates using the default system browser. + - See [Single-page application: App registration guide](https://docs.microsoft.com/azure/active-directory/develop/scenario-spa-app-registration) to configure your app registration for the browser. + - Note down the client Id from the previous step and use it in the browser sample below. ##### Sample code -See https://github.com/Azure/ms-rest-browserauth to learn how to authenticate to Azure in the browser. - - index.html + ```html @azure/arm-appinsights sample - - + diff --git a/sdk/applicationinsights/arm-appinsights/package.json b/sdk/applicationinsights/arm-appinsights/package.json index 7c57385ff716..80a232e130be 100644 --- a/sdk/applicationinsights/arm-appinsights/package.json +++ b/sdk/applicationinsights/arm-appinsights/package.json @@ -2,10 +2,11 @@ "name": "@azure/arm-appinsights", "author": "Microsoft Corporation", "description": "ApplicationInsightsManagementClient Library with typescript type definitions for node.js and browser.", - "version": "3.0.0", + "version": "3.1.0", "dependencies": { - "@azure/ms-rest-azure-js": "^2.0.1", - "@azure/ms-rest-js": "^2.0.4", + "@azure/ms-rest-azure-js": "^2.1.0", + "@azure/ms-rest-js": "^2.2.0", + "@azure/core-auth": "^1.1.4", "tslib": "^1.10.0" }, "keywords": [ @@ -20,7 +21,7 @@ "module": "./esm/applicationInsightsManagementClient.js", "types": "./esm/applicationInsightsManagementClient.d.ts", "devDependencies": { - "typescript": "^3.5.3", + "typescript": "^3.6.0", "rollup": "^1.18.0", "rollup-plugin-node-resolve": "^5.2.0", "rollup-plugin-sourcemaps": "^0.4.2", diff --git a/sdk/applicationinsights/arm-appinsights/src/applicationInsightsManagementClient.ts b/sdk/applicationinsights/arm-appinsights/src/applicationInsightsManagementClient.ts index 129814529633..e001f89b1329 100644 --- a/sdk/applicationinsights/arm-appinsights/src/applicationInsightsManagementClient.ts +++ b/sdk/applicationinsights/arm-appinsights/src/applicationInsightsManagementClient.ts @@ -9,6 +9,7 @@ */ import * as msRest from "@azure/ms-rest-js"; +import { TokenCredential } from "@azure/core-auth"; import * as Models from "./models"; import * as Mappers from "./models/mappers"; import * as operations from "./operations"; @@ -39,11 +40,16 @@ class ApplicationInsightsManagementClient extends ApplicationInsightsManagementC /** * Initializes a new instance of the ApplicationInsightsManagementClient class. - * @param credentials Credentials needed for the client to connect to Azure. + * @param credentials Credentials needed for the client to connect to Azure. Credentials + * implementing the TokenCredential interface from the @azure/identity package are recommended. For + * more information about these credentials, see + * {@link https://www.npmjs.com/package/@azure/identity}. Credentials implementing the + * ServiceClientCredentials interface from the older packages @azure/ms-rest-nodeauth and + * @azure/ms-rest-browserauth are also supported. * @param subscriptionId The ID of the target subscription. * @param [options] The parameter options */ - constructor(credentials: msRest.ServiceClientCredentials, subscriptionId: string, options?: Models.ApplicationInsightsManagementClientOptions) { + constructor(credentials: msRest.ServiceClientCredentials | TokenCredential, subscriptionId: string, options?: Models.ApplicationInsightsManagementClientOptions) { super(credentials, subscriptionId, options); this.operations = new operations.Operations(this); this.annotations = new operations.Annotations(this); diff --git a/sdk/applicationinsights/arm-appinsights/src/applicationInsightsManagementClientContext.ts b/sdk/applicationinsights/arm-appinsights/src/applicationInsightsManagementClientContext.ts index 14021c83aee1..b3cc5d676aba 100644 --- a/sdk/applicationinsights/arm-appinsights/src/applicationInsightsManagementClientContext.ts +++ b/sdk/applicationinsights/arm-appinsights/src/applicationInsightsManagementClientContext.ts @@ -10,22 +10,28 @@ import * as Models from "./models"; import * as msRest from "@azure/ms-rest-js"; +import { TokenCredential } from "@azure/core-auth"; import * as msRestAzure from "@azure/ms-rest-azure-js"; const packageName = "@azure/arm-appinsights"; -const packageVersion = "3.0.0"; +const packageVersion = "3.1.0"; export class ApplicationInsightsManagementClientContext extends msRestAzure.AzureServiceClient { - credentials: msRest.ServiceClientCredentials; + credentials: msRest.ServiceClientCredentials | TokenCredential; subscriptionId: string; /** * Initializes a new instance of the ApplicationInsightsManagementClient class. - * @param credentials Credentials needed for the client to connect to Azure. + * @param credentials Credentials needed for the client to connect to Azure. Credentials + * implementing the TokenCredential interface from the @azure/identity package are recommended. For + * more information about these credentials, see + * {@link https://www.npmjs.com/package/@azure/identity}. Credentials implementing the + * ServiceClientCredentials interface from the older packages @azure/ms-rest-nodeauth and + * @azure/ms-rest-browserauth are also supported. * @param subscriptionId The ID of the target subscription. * @param [options] The parameter options */ - constructor(credentials: msRest.ServiceClientCredentials, subscriptionId: string, options?: Models.ApplicationInsightsManagementClientOptions) { + constructor(credentials: msRest.ServiceClientCredentials | TokenCredential, subscriptionId: string, options?: Models.ApplicationInsightsManagementClientOptions) { if (credentials == undefined) { throw new Error('\'credentials\' cannot be null.'); } diff --git a/sdk/appplatform/arm-appplatform/README.md b/sdk/appplatform/arm-appplatform/README.md index f05562f618da..c06e938283f7 100644 --- a/sdk/appplatform/arm-appplatform/README.md +++ b/sdk/appplatform/arm-appplatform/README.md @@ -1,93 +1,103 @@ ## Azure AppPlatformManagementClient SDK for JavaScript -This package contains an isomorphic SDK for AppPlatformManagementClient. +This package contains an isomorphic SDK (runs both in Node.js and in browsers) for AppPlatformManagementClient. ### Currently supported environments -- Node.js version 6.x.x or higher -- Browser JavaScript +- [LTS versions of Node.js](https://nodejs.org/about/releases/) +- Latest versions of Safari, Chrome, Edge, and Firefox. -### How to Install +### Prerequisites +You must have an [Azure subscription](https://azure.microsoft.com/free/). + +### How to install + +To use this SDK in your project, you will need to install two packages. +- `@azure/arm-appplatform` that contains the client. +- `@azure/identity` that provides different mechanisms for the client to authenticate your requests using Azure Active Directory. + +Install both packages using the below command: ```bash -npm install @azure/arm-appplatform +npm install --save @azure/arm-appplatform @azure/identity ``` +> **Note**: You may have used either `@azure/ms-rest-nodeauth` or `@azure/ms-rest-browserauth` in the past. These packages are in maintenance mode receiving critical bug fixes, but no new features. +If you are on a [Node.js that has LTS status](https://nodejs.org/about/releases/), or are writing a client side browser application, we strongly encourage you to upgrade to `@azure/identity` which uses the latest versions of Azure Active Directory and MSAL APIs and provides more authentication options. + ### How to use -#### nodejs - client creation and get services as an example written in TypeScript. +- If you are writing a client side browser application, + - Follow the instructions in the section on Authenticating client side browser applications in [Azure Identity examples](https://aka.ms/azsdk/js/identity/examples) to register your application in the Microsoft identity platform and set the right permissions. + - Copy the client ID and tenant ID from the Overview section of your app registration in Azure portal and use it in the browser sample below. +- If you are writing a server side application, + - [Select a credential from `@azure/identity` based on the authentication method of your choice](https://aka.ms/azsdk/js/identity/examples) + - Complete the set up steps required by the credential if any. + - Use the credential you picked in the place of `DefaultAzureCredential` in the Node.js sample below. -##### Install @azure/ms-rest-nodeauth +In the below samples, we pass the credential and the Azure subscription id to instantiate the client. +Once the client is created, explore the operations on it either in your favorite editor or in our [API reference documentation](https://docs.microsoft.com/javascript/api) to get started. -- Please install minimum version of `"@azure/ms-rest-nodeauth": "^3.0.0"`. -```bash -npm install @azure/ms-rest-nodeauth@"^3.0.0" -``` +#### nodejs - Authentication, client creation, and get services as an example written in JavaScript. ##### Sample code -While the below sample uses the interactive login, other authentication options can be found in the [README.md file of @azure/ms-rest-nodeauth](https://www.npmjs.com/package/@azure/ms-rest-nodeauth) package -```typescript -const msRestNodeAuth = require("@azure/ms-rest-nodeauth"); +```javascript +const { DefaultAzureCredential } = require("@azure/identity"); const { AppPlatformManagementClient } = require("@azure/arm-appplatform"); const subscriptionId = process.env["AZURE_SUBSCRIPTION_ID"]; -msRestNodeAuth.interactiveLogin().then((creds) => { - const client = new AppPlatformManagementClient(creds, subscriptionId); - const resourceGroupName = "testresourceGroupName"; - const serviceName = "testserviceName"; - client.services.get(resourceGroupName, serviceName).then((result) => { - console.log("The result is:"); - console.log(result); - }); +// Use `DefaultAzureCredential` or any other credential of your choice based on https://aka.ms/azsdk/js/identity/examples +// Please note that you can also use credentials from the `@azure/ms-rest-nodeauth` package instead. +const creds = new DefaultAzureCredential(); +const client = new AppPlatformManagementClient(creds, subscriptionId); +const resourceGroupName = "testresourceGroupName"; +const serviceName = "testserviceName"; +client.services.get(resourceGroupName, serviceName).then((result) => { + console.log("The result is:"); + console.log(result); }).catch((err) => { + console.log("An error occurred:"); console.error(err); }); ``` -#### browser - Authentication, client creation and get services as an example written in JavaScript. +#### browser - Authentication, client creation, and get services as an example written in JavaScript. -##### Install @azure/ms-rest-browserauth - -```bash -npm install @azure/ms-rest-browserauth -``` +In browser applications, we recommend using the `InteractiveBrowserCredential` that interactively authenticates using the default system browser. + - See [Single-page application: App registration guide](https://docs.microsoft.com/azure/active-directory/develop/scenario-spa-app-registration) to configure your app registration for the browser. + - Note down the client Id from the previous step and use it in the browser sample below. ##### Sample code -See https://github.com/Azure/ms-rest-browserauth to learn how to authenticate to Azure in the browser. - - index.html + ```html @azure/arm-appplatform sample - - + diff --git a/sdk/appplatform/arm-appplatform/package.json b/sdk/appplatform/arm-appplatform/package.json index ebab866401ae..a06921a62ed4 100644 --- a/sdk/appplatform/arm-appplatform/package.json +++ b/sdk/appplatform/arm-appplatform/package.json @@ -2,10 +2,11 @@ "name": "@azure/arm-appplatform", "author": "Microsoft Corporation", "description": "AppPlatformManagementClient Library with typescript type definitions for node.js and browser.", - "version": "1.2.0", + "version": "1.3.0", "dependencies": { - "@azure/ms-rest-azure-js": "^2.0.1", - "@azure/ms-rest-js": "^2.0.4", + "@azure/ms-rest-azure-js": "^2.1.0", + "@azure/ms-rest-js": "^2.2.0", + "@azure/core-auth": "^1.1.4", "tslib": "^1.10.0" }, "keywords": [ @@ -20,7 +21,7 @@ "module": "./esm/appPlatformManagementClient.js", "types": "./esm/appPlatformManagementClient.d.ts", "devDependencies": { - "typescript": "^3.5.3", + "typescript": "^3.6.0", "rollup": "^1.18.0", "rollup-plugin-node-resolve": "^5.2.0", "rollup-plugin-sourcemaps": "^0.4.2", diff --git a/sdk/appplatform/arm-appplatform/src/appPlatformManagementClient.ts b/sdk/appplatform/arm-appplatform/src/appPlatformManagementClient.ts index e9bef8750f6f..a942c7ed14c8 100644 --- a/sdk/appplatform/arm-appplatform/src/appPlatformManagementClient.ts +++ b/sdk/appplatform/arm-appplatform/src/appPlatformManagementClient.ts @@ -8,6 +8,7 @@ */ import * as msRest from "@azure/ms-rest-js"; +import { TokenCredential } from "@azure/core-auth"; import * as Models from "./models"; import * as Mappers from "./models/mappers"; import * as operations from "./operations"; @@ -30,12 +31,17 @@ class AppPlatformManagementClient extends AppPlatformManagementClientContext { /** * Initializes a new instance of the AppPlatformManagementClient class. - * @param credentials Credentials needed for the client to connect to Azure. + * @param credentials Credentials needed for the client to connect to Azure. Credentials + * implementing the TokenCredential interface from the @azure/identity package are recommended. For + * more information about these credentials, see + * {@link https://www.npmjs.com/package/@azure/identity}. Credentials implementing the + * ServiceClientCredentials interface from the older packages @azure/ms-rest-nodeauth and + * @azure/ms-rest-browserauth are also supported. * @param subscriptionId Gets subscription ID which uniquely identify the Microsoft Azure * subscription. The subscription ID forms part of the URI for every service call. * @param [options] The parameter options */ - constructor(credentials: msRest.ServiceClientCredentials, subscriptionId: string, options?: Models.AppPlatformManagementClientOptions) { + constructor(credentials: msRest.ServiceClientCredentials | TokenCredential, subscriptionId: string, options?: Models.AppPlatformManagementClientOptions) { super(credentials, subscriptionId, options); this.services = new operations.Services(this); this.configServers = new operations.ConfigServers(this); diff --git a/sdk/appplatform/arm-appplatform/src/appPlatformManagementClientContext.ts b/sdk/appplatform/arm-appplatform/src/appPlatformManagementClientContext.ts index 6e107e7e50bf..1c6af685d8ac 100644 --- a/sdk/appplatform/arm-appplatform/src/appPlatformManagementClientContext.ts +++ b/sdk/appplatform/arm-appplatform/src/appPlatformManagementClientContext.ts @@ -9,24 +9,30 @@ import * as Models from "./models"; import * as msRest from "@azure/ms-rest-js"; +import { TokenCredential } from "@azure/core-auth"; import * as msRestAzure from "@azure/ms-rest-azure-js"; const packageName = "@azure/arm-appplatform"; -const packageVersion = "1.2.0"; +const packageVersion = "1.3.0"; export class AppPlatformManagementClientContext extends msRestAzure.AzureServiceClient { - credentials: msRest.ServiceClientCredentials; + credentials: msRest.ServiceClientCredentials | TokenCredential; apiVersion?: string; subscriptionId: string; /** * Initializes a new instance of the AppPlatformManagementClient class. - * @param credentials Credentials needed for the client to connect to Azure. + * @param credentials Credentials needed for the client to connect to Azure. Credentials + * implementing the TokenCredential interface from the @azure/identity package are recommended. For + * more information about these credentials, see + * {@link https://www.npmjs.com/package/@azure/identity}. Credentials implementing the + * ServiceClientCredentials interface from the older packages @azure/ms-rest-nodeauth and + * @azure/ms-rest-browserauth are also supported. * @param subscriptionId Gets subscription ID which uniquely identify the Microsoft Azure * subscription. The subscription ID forms part of the URI for every service call. * @param [options] The parameter options */ - constructor(credentials: msRest.ServiceClientCredentials, subscriptionId: string, options?: Models.AppPlatformManagementClientOptions) { + constructor(credentials: msRest.ServiceClientCredentials | TokenCredential, subscriptionId: string, options?: Models.AppPlatformManagementClientOptions) { if (credentials == undefined) { throw new Error('\'credentials\' cannot be null.'); } diff --git a/sdk/appservice/arm-appservice-profile-2019-03-01-hybrid/README.md b/sdk/appservice/arm-appservice-profile-2019-03-01-hybrid/README.md index 3ffb61bd731e..26137bf2bd28 100644 --- a/sdk/appservice/arm-appservice-profile-2019-03-01-hybrid/README.md +++ b/sdk/appservice/arm-appservice-profile-2019-03-01-hybrid/README.md @@ -1,89 +1,100 @@ ## Azure WebSiteManagementClient SDK for JavaScript -This package contains an isomorphic SDK for WebSiteManagementClient. +This package contains an isomorphic SDK (runs both in Node.js and in browsers) for WebSiteManagementClient. ### Currently supported environments -- Node.js version 6.x.x or higher -- Browser JavaScript +- [LTS versions of Node.js](https://nodejs.org/about/releases/) +- Latest versions of Safari, Chrome, Edge, and Firefox. -### How to Install +### Prerequisites +You must have an [Azure subscription](https://azure.microsoft.com/free/). + +### How to install + +To use this SDK in your project, you will need to install two packages. +- `@azure/arm-appservice-profile-2019-03-01-hybrid` that contains the client. +- `@azure/identity` that provides different mechanisms for the client to authenticate your requests using Azure Active Directory. + +Install both packages using the below command: ```bash -npm install @azure/arm-appservice-profile-2019-03-01-hybrid +npm install --save @azure/arm-appservice-profile-2019-03-01-hybrid @azure/identity ``` +> **Note**: You may have used either `@azure/ms-rest-nodeauth` or `@azure/ms-rest-browserauth` in the past. These packages are in maintenance mode receiving critical bug fixes, but no new features. +If you are on a [Node.js that has LTS status](https://nodejs.org/about/releases/), or are writing a client side browser application, we strongly encourage you to upgrade to `@azure/identity` which uses the latest versions of Azure Active Directory and MSAL APIs and provides more authentication options. + ### How to use -#### nodejs - Authentication, client creation and list certificates as an example written in TypeScript. +- If you are writing a client side browser application, + - Follow the instructions in the section on Authenticating client side browser applications in [Azure Identity examples](https://aka.ms/azsdk/js/identity/examples) to register your application in the Microsoft identity platform and set the right permissions. + - Copy the client ID and tenant ID from the Overview section of your app registration in Azure portal and use it in the browser sample below. +- If you are writing a server side application, + - [Select a credential from `@azure/identity` based on the authentication method of your choice](https://aka.ms/azsdk/js/identity/examples) + - Complete the set up steps required by the credential if any. + - Use the credential you picked in the place of `DefaultAzureCredential` in the Node.js sample below. -##### Install @azure/ms-rest-nodeauth +In the below samples, we pass the credential and the Azure subscription id to instantiate the client. +Once the client is created, explore the operations on it either in your favorite editor or in our [API reference documentation](https://docs.microsoft.com/javascript/api) to get started. -```bash -npm install @azure/ms-rest-nodeauth -``` +#### nodejs - Authentication, client creation, and list certificates as an example written in JavaScript. ##### Sample code -```typescript -import * as msRest from "@azure/ms-rest-js"; -import * as msRestAzure from "@azure/ms-rest-azure-js"; -import * as msRestNodeAuth from "@azure/ms-rest-nodeauth"; -import { WebSiteManagementClient, WebSiteManagementModels, WebSiteManagementMappers } from "@azure/arm-appservice-profile-2019-03-01-hybrid"; +```javascript +const { DefaultAzureCredential } = require("@azure/identity"); +const { WebSiteManagementClient } = require("@azure/arm-appservice-profile-2019-03-01-hybrid"); const subscriptionId = process.env["AZURE_SUBSCRIPTION_ID"]; -msRestNodeAuth.interactiveLogin().then((creds) => { - const client = new WebSiteManagementClient(creds, subscriptionId); - client.certificates.list().then((result) => { - console.log("The result is:"); - console.log(result); - }); +// Use `DefaultAzureCredential` or any other credential of your choice based on https://aka.ms/azsdk/js/identity/examples +// Please note that you can also use credentials from the `@azure/ms-rest-nodeauth` package instead. +const creds = new DefaultAzureCredential(); +const client = new WebSiteManagementClient(creds, subscriptionId); + +client.certificates.list().then((result) => { + console.log("The result is:"); + console.log(result); }).catch((err) => { + console.log("An error occurred:"); console.error(err); }); ``` -#### browser - Authentication, client creation and list certificates as an example written in JavaScript. +#### browser - Authentication, client creation, and list certificates as an example written in JavaScript. -##### Install @azure/ms-rest-browserauth - -```bash -npm install @azure/ms-rest-browserauth -``` +In browser applications, we recommend using the `InteractiveBrowserCredential` that interactively authenticates using the default system browser. + - See [Single-page application: App registration guide](https://docs.microsoft.com/azure/active-directory/develop/scenario-spa-app-registration) to configure your app registration for the browser. + - Note down the client Id from the previous step and use it in the browser sample below. ##### Sample code -See https://github.com/Azure/ms-rest-browserauth to learn how to authenticate to Azure in the browser. - - index.html + ```html @azure/arm-appservice-profile-2019-03-01-hybrid sample - - + @@ -95,5 +106,4 @@ See https://github.com/Azure/ms-rest-browserauth to learn how to authenticate to - [Microsoft Azure SDK for Javascript](https://github.com/Azure/azure-sdk-for-js) - -![Impressions](https://azure-sdk-impressions.azurewebsites.net/api/impressions/azure-sdk-for-js%2Fsdk%2Fappservice%2Farm-appservice-profile-2019-03-01-hybrid%2FREADME.png) +![Impressions](https://azure-sdk-impressions.azurewebsites.net/api/impressions/azure-sdk-for-js/sdk/appservice/arm-appservice-profile-2019-03-01-hybrid/README.png) diff --git a/sdk/appservice/arm-appservice-profile-2019-03-01-hybrid/package.json b/sdk/appservice/arm-appservice-profile-2019-03-01-hybrid/package.json index 703c41e0442c..952a9bb98d08 100644 --- a/sdk/appservice/arm-appservice-profile-2019-03-01-hybrid/package.json +++ b/sdk/appservice/arm-appservice-profile-2019-03-01-hybrid/package.json @@ -2,10 +2,11 @@ "name": "@azure/arm-appservice-profile-2019-03-01-hybrid", "author": "Microsoft Corporation", "description": "WebSiteManagementClient Library with typescript type definitions for node.js and browser.", - "version": "1.0.0", + "version": "1.1.0", "dependencies": { - "@azure/ms-rest-azure-js": "^1.3.2", - "@azure/ms-rest-js": "^1.8.1", + "@azure/ms-rest-azure-js": "^1.4.0", + "@azure/ms-rest-js": "^1.11.0", + "@azure/core-auth": "^1.1.4", "tslib": "^1.9.3" }, "keywords": [ @@ -20,7 +21,7 @@ "module": "./esm/webSiteManagementClient.js", "types": "./esm/webSiteManagementClient.d.ts", "devDependencies": { - "typescript": "^3.1.1", + "typescript": "^3.6.0", "rollup": "^0.66.2", "rollup-plugin-node-resolve": "^3.4.0", "rollup-plugin-sourcemaps": "^0.4.2", diff --git a/sdk/appservice/arm-appservice-profile-2019-03-01-hybrid/src/webSiteManagementClient.ts b/sdk/appservice/arm-appservice-profile-2019-03-01-hybrid/src/webSiteManagementClient.ts index 0d35a9177b82..0d640ce71d6e 100644 --- a/sdk/appservice/arm-appservice-profile-2019-03-01-hybrid/src/webSiteManagementClient.ts +++ b/sdk/appservice/arm-appservice-profile-2019-03-01-hybrid/src/webSiteManagementClient.ts @@ -9,6 +9,7 @@ */ import * as msRest from "@azure/ms-rest-js"; +import { TokenCredential } from "@azure/core-auth"; import * as Models from "./models"; import * as Mappers from "./models/mappers"; import * as Parameters from "./models/parameters"; @@ -26,12 +27,17 @@ class WebSiteManagementClient extends WebSiteManagementClientContext { /** * Initializes a new instance of the WebSiteManagementClient class. - * @param credentials Credentials needed for the client to connect to Azure. + * @param credentials Credentials needed for the client to connect to Azure. Credentials + * implementing the TokenCredential interface from the @azure/identity package are recommended. For + * more information about these credentials, see + * {@link https://www.npmjs.com/package/@azure/identity}. Credentials implementing the + * ServiceClientCredentials interface from the older packages @azure/ms-rest-nodeauth and + * @azure/ms-rest-browserauth are also supported. * @param subscriptionId Your Azure subscription ID. This is a GUID-formatted string (e.g. * 00000000-0000-0000-0000-000000000000). * @param [options] The parameter options */ - constructor(credentials: msRest.ServiceClientCredentials, subscriptionId: string, options?: Models.WebSiteManagementClientOptions) { + constructor(credentials: msRest.ServiceClientCredentials | TokenCredential, subscriptionId: string, options?: Models.WebSiteManagementClientOptions) { super(credentials, subscriptionId, options); this.certificates = new operations.Certificates(this); this.webApps = new operations.WebApps(this); diff --git a/sdk/appservice/arm-appservice-profile-2019-03-01-hybrid/src/webSiteManagementClientContext.ts b/sdk/appservice/arm-appservice-profile-2019-03-01-hybrid/src/webSiteManagementClientContext.ts index 009c37bd2c6b..b8db44f5ff74 100644 --- a/sdk/appservice/arm-appservice-profile-2019-03-01-hybrid/src/webSiteManagementClientContext.ts +++ b/sdk/appservice/arm-appservice-profile-2019-03-01-hybrid/src/webSiteManagementClientContext.ts @@ -10,24 +10,30 @@ import * as Models from "./models"; import * as msRest from "@azure/ms-rest-js"; +import { TokenCredential } from "@azure/core-auth"; import * as msRestAzure from "@azure/ms-rest-azure-js"; const packageName = "@azure/arm-appservice-profile-2019-03-01-hybrid"; -const packageVersion = "1.0.0"; +const packageVersion = "1.1.0"; export class WebSiteManagementClientContext extends msRestAzure.AzureServiceClient { - credentials: msRest.ServiceClientCredentials; + credentials: msRest.ServiceClientCredentials | TokenCredential; subscriptionId: string; apiVersion?: string; /** * Initializes a new instance of the WebSiteManagementClient class. - * @param credentials Credentials needed for the client to connect to Azure. + * @param credentials Credentials needed for the client to connect to Azure. Credentials + * implementing the TokenCredential interface from the @azure/identity package are recommended. For + * more information about these credentials, see + * {@link https://www.npmjs.com/package/@azure/identity}. Credentials implementing the + * ServiceClientCredentials interface from the older packages @azure/ms-rest-nodeauth and + * @azure/ms-rest-browserauth are also supported. * @param subscriptionId Your Azure subscription ID. This is a GUID-formatted string (e.g. * 00000000-0000-0000-0000-000000000000). * @param [options] The parameter options */ - constructor(credentials: msRest.ServiceClientCredentials, subscriptionId: string, options?: Models.WebSiteManagementClientOptions) { + constructor(credentials: msRest.ServiceClientCredentials | TokenCredential, subscriptionId: string, options?: Models.WebSiteManagementClientOptions) { if (credentials == undefined) { throw new Error('\'credentials\' cannot be null.'); } diff --git a/sdk/appservice/arm-appservice-profile-2020-09-01-hybrid/README.md b/sdk/appservice/arm-appservice-profile-2020-09-01-hybrid/README.md index c423f466f6e1..aa27aa0db8b6 100644 --- a/sdk/appservice/arm-appservice-profile-2020-09-01-hybrid/README.md +++ b/sdk/appservice/arm-appservice-profile-2020-09-01-hybrid/README.md @@ -1,90 +1,100 @@ ## Azure WebSiteManagementClient SDK for JavaScript -This package contains an isomorphic SDK for WebSiteManagementClient. +This package contains an isomorphic SDK (runs both in Node.js and in browsers) for WebSiteManagementClient. ### Currently supported environments -- Node.js version 6.x.x or higher -- Browser JavaScript +- [LTS versions of Node.js](https://nodejs.org/about/releases/) +- Latest versions of Safari, Chrome, Edge, and Firefox. -### How to Install +### Prerequisites +You must have an [Azure subscription](https://azure.microsoft.com/free/). + +### How to install + +To use this SDK in your project, you will need to install two packages. +- `@azure/arm-appservice-profile-2020-09-01-hybrid` that contains the client. +- `@azure/identity` that provides different mechanisms for the client to authenticate your requests using Azure Active Directory. + +Install both packages using the below command: ```bash -npm install @azure/arm-appservice-profile-2020-09-01-hybrid +npm install --save @azure/arm-appservice-profile-2020-09-01-hybrid @azure/identity ``` +> **Note**: You may have used either `@azure/ms-rest-nodeauth` or `@azure/ms-rest-browserauth` in the past. These packages are in maintenance mode receiving critical bug fixes, but no new features. +If you are on a [Node.js that has LTS status](https://nodejs.org/about/releases/), or are writing a client side browser application, we strongly encourage you to upgrade to `@azure/identity` which uses the latest versions of Azure Active Directory and MSAL APIs and provides more authentication options. + ### How to use -#### nodejs - Authentication, client creation and list certificates as an example written in TypeScript. +- If you are writing a client side browser application, + - Follow the instructions in the section on Authenticating client side browser applications in [Azure Identity examples](https://aka.ms/azsdk/js/identity/examples) to register your application in the Microsoft identity platform and set the right permissions. + - Copy the client ID and tenant ID from the Overview section of your app registration in Azure portal and use it in the browser sample below. +- If you are writing a server side application, + - [Select a credential from `@azure/identity` based on the authentication method of your choice](https://aka.ms/azsdk/js/identity/examples) + - Complete the set up steps required by the credential if any. + - Use the credential you picked in the place of `DefaultAzureCredential` in the Node.js sample below. -##### Install @azure/ms-rest-nodeauth +In the below samples, we pass the credential and the Azure subscription id to instantiate the client. +Once the client is created, explore the operations on it either in your favorite editor or in our [API reference documentation](https://docs.microsoft.com/javascript/api) to get started. -- Please install minimum version of `"@azure/ms-rest-nodeauth": "^3.0.0"`. -```bash -npm install @azure/ms-rest-nodeauth@"^3.0.0" -``` +#### nodejs - Authentication, client creation, and list certificates as an example written in JavaScript. ##### Sample code -```typescript -import * as msRest from "@azure/ms-rest-js"; -import * as msRestAzure from "@azure/ms-rest-azure-js"; -import * as msRestNodeAuth from "@azure/ms-rest-nodeauth"; -import { WebSiteManagementClient, WebSiteManagementModels, WebSiteManagementMappers } from "@azure/arm-appservice-profile-2020-09-01-hybrid"; +```javascript +const { DefaultAzureCredential } = require("@azure/identity"); +const { WebSiteManagementClient } = require("@azure/arm-appservice-profile-2020-09-01-hybrid"); const subscriptionId = process.env["AZURE_SUBSCRIPTION_ID"]; -msRestNodeAuth.interactiveLogin().then((creds) => { - const client = new WebSiteManagementClient(creds, subscriptionId); - client.certificates.list().then((result) => { - console.log("The result is:"); - console.log(result); - }); +// Use `DefaultAzureCredential` or any other credential of your choice based on https://aka.ms/azsdk/js/identity/examples +// Please note that you can also use credentials from the `@azure/ms-rest-nodeauth` package instead. +const creds = new DefaultAzureCredential(); +const client = new WebSiteManagementClient(creds, subscriptionId); + +client.certificates.list().then((result) => { + console.log("The result is:"); + console.log(result); }).catch((err) => { + console.log("An error occurred:"); console.error(err); }); ``` -#### browser - Authentication, client creation and list certificates as an example written in JavaScript. - -##### Install @azure/ms-rest-browserauth +#### browser - Authentication, client creation, and list certificates as an example written in JavaScript. -```bash -npm install @azure/ms-rest-browserauth -``` +In browser applications, we recommend using the `InteractiveBrowserCredential` that interactively authenticates using the default system browser. + - See [Single-page application: App registration guide](https://docs.microsoft.com/azure/active-directory/develop/scenario-spa-app-registration) to configure your app registration for the browser. + - Note down the client Id from the previous step and use it in the browser sample below. ##### Sample code -See https://github.com/Azure/ms-rest-browserauth to learn how to authenticate to Azure in the browser. - - index.html + ```html @azure/arm-appservice-profile-2020-09-01-hybrid sample - - + diff --git a/sdk/appservice/arm-appservice-profile-2020-09-01-hybrid/package.json b/sdk/appservice/arm-appservice-profile-2020-09-01-hybrid/package.json index c9d9463cfb6f..277da139be4d 100644 --- a/sdk/appservice/arm-appservice-profile-2020-09-01-hybrid/package.json +++ b/sdk/appservice/arm-appservice-profile-2020-09-01-hybrid/package.json @@ -2,10 +2,11 @@ "name": "@azure/arm-appservice-profile-2020-09-01-hybrid", "author": "Microsoft Corporation", "description": "WebSiteManagementClient Library with typescript type definitions for node.js and browser.", - "version": "1.0.0", + "version": "1.1.0", "dependencies": { - "@azure/ms-rest-azure-js": "^2.0.1", - "@azure/ms-rest-js": "^2.0.4", + "@azure/ms-rest-azure-js": "^2.1.0", + "@azure/ms-rest-js": "^2.2.0", + "@azure/core-auth": "^1.1.4", "tslib": "^1.10.0" }, "keywords": [ @@ -20,7 +21,7 @@ "module": "./esm/webSiteManagementClient.js", "types": "./esm/webSiteManagementClient.d.ts", "devDependencies": { - "typescript": "^3.5.3", + "typescript": "^3.6.0", "rollup": "^1.18.0", "rollup-plugin-node-resolve": "^5.2.0", "rollup-plugin-sourcemaps": "^0.4.2", diff --git a/sdk/appservice/arm-appservice-profile-2020-09-01-hybrid/src/webSiteManagementClient.ts b/sdk/appservice/arm-appservice-profile-2020-09-01-hybrid/src/webSiteManagementClient.ts index 0d35a9177b82..0d640ce71d6e 100644 --- a/sdk/appservice/arm-appservice-profile-2020-09-01-hybrid/src/webSiteManagementClient.ts +++ b/sdk/appservice/arm-appservice-profile-2020-09-01-hybrid/src/webSiteManagementClient.ts @@ -9,6 +9,7 @@ */ import * as msRest from "@azure/ms-rest-js"; +import { TokenCredential } from "@azure/core-auth"; import * as Models from "./models"; import * as Mappers from "./models/mappers"; import * as Parameters from "./models/parameters"; @@ -26,12 +27,17 @@ class WebSiteManagementClient extends WebSiteManagementClientContext { /** * Initializes a new instance of the WebSiteManagementClient class. - * @param credentials Credentials needed for the client to connect to Azure. + * @param credentials Credentials needed for the client to connect to Azure. Credentials + * implementing the TokenCredential interface from the @azure/identity package are recommended. For + * more information about these credentials, see + * {@link https://www.npmjs.com/package/@azure/identity}. Credentials implementing the + * ServiceClientCredentials interface from the older packages @azure/ms-rest-nodeauth and + * @azure/ms-rest-browserauth are also supported. * @param subscriptionId Your Azure subscription ID. This is a GUID-formatted string (e.g. * 00000000-0000-0000-0000-000000000000). * @param [options] The parameter options */ - constructor(credentials: msRest.ServiceClientCredentials, subscriptionId: string, options?: Models.WebSiteManagementClientOptions) { + constructor(credentials: msRest.ServiceClientCredentials | TokenCredential, subscriptionId: string, options?: Models.WebSiteManagementClientOptions) { super(credentials, subscriptionId, options); this.certificates = new operations.Certificates(this); this.webApps = new operations.WebApps(this); diff --git a/sdk/appservice/arm-appservice-profile-2020-09-01-hybrid/src/webSiteManagementClientContext.ts b/sdk/appservice/arm-appservice-profile-2020-09-01-hybrid/src/webSiteManagementClientContext.ts index ffc50ad7fc59..76232c9ebc0b 100644 --- a/sdk/appservice/arm-appservice-profile-2020-09-01-hybrid/src/webSiteManagementClientContext.ts +++ b/sdk/appservice/arm-appservice-profile-2020-09-01-hybrid/src/webSiteManagementClientContext.ts @@ -10,24 +10,30 @@ import * as Models from "./models"; import * as msRest from "@azure/ms-rest-js"; +import { TokenCredential } from "@azure/core-auth"; import * as msRestAzure from "@azure/ms-rest-azure-js"; const packageName = "@azure/arm-appservice-profile-2020-09-01-hybrid"; -const packageVersion = "1.0.0"; +const packageVersion = "1.1.0"; export class WebSiteManagementClientContext extends msRestAzure.AzureServiceClient { - credentials: msRest.ServiceClientCredentials; + credentials: msRest.ServiceClientCredentials | TokenCredential; subscriptionId: string; apiVersion?: string; /** * Initializes a new instance of the WebSiteManagementClient class. - * @param credentials Credentials needed for the client to connect to Azure. + * @param credentials Credentials needed for the client to connect to Azure. Credentials + * implementing the TokenCredential interface from the @azure/identity package are recommended. For + * more information about these credentials, see + * {@link https://www.npmjs.com/package/@azure/identity}. Credentials implementing the + * ServiceClientCredentials interface from the older packages @azure/ms-rest-nodeauth and + * @azure/ms-rest-browserauth are also supported. * @param subscriptionId Your Azure subscription ID. This is a GUID-formatted string (e.g. * 00000000-0000-0000-0000-000000000000). * @param [options] The parameter options */ - constructor(credentials: msRest.ServiceClientCredentials, subscriptionId: string, options?: Models.WebSiteManagementClientOptions) { + constructor(credentials: msRest.ServiceClientCredentials | TokenCredential, subscriptionId: string, options?: Models.WebSiteManagementClientOptions) { if (credentials == undefined) { throw new Error('\'credentials\' cannot be null.'); } diff --git a/sdk/attestation/arm-attestation/README.md b/sdk/attestation/arm-attestation/README.md index 08a634ff796d..e26c14c75674 100644 --- a/sdk/attestation/arm-attestation/README.md +++ b/sdk/attestation/arm-attestation/README.md @@ -1,90 +1,100 @@ ## Azure AttestationManagementClient SDK for JavaScript -This package contains an isomorphic SDK for AttestationManagementClient. +This package contains an isomorphic SDK (runs both in Node.js and in browsers) for AttestationManagementClient. ### Currently supported environments -- Node.js version 6.x.x or higher -- Browser JavaScript +- [LTS versions of Node.js](https://nodejs.org/about/releases/) +- Latest versions of Safari, Chrome, Edge, and Firefox. -### How to Install +### Prerequisites +You must have an [Azure subscription](https://azure.microsoft.com/free/). + +### How to install + +To use this SDK in your project, you will need to install two packages. +- `@azure/arm-attestation` that contains the client. +- `@azure/identity` that provides different mechanisms for the client to authenticate your requests using Azure Active Directory. + +Install both packages using the below command: ```bash -npm install @azure/arm-attestation +npm install --save @azure/arm-attestation @azure/identity ``` +> **Note**: You may have used either `@azure/ms-rest-nodeauth` or `@azure/ms-rest-browserauth` in the past. These packages are in maintenance mode receiving critical bug fixes, but no new features. +If you are on a [Node.js that has LTS status](https://nodejs.org/about/releases/), or are writing a client side browser application, we strongly encourage you to upgrade to `@azure/identity` which uses the latest versions of Azure Active Directory and MSAL APIs and provides more authentication options. + ### How to use -#### nodejs - Authentication, client creation and list operations as an example written in TypeScript. +- If you are writing a client side browser application, + - Follow the instructions in the section on Authenticating client side browser applications in [Azure Identity examples](https://aka.ms/azsdk/js/identity/examples) to register your application in the Microsoft identity platform and set the right permissions. + - Copy the client ID and tenant ID from the Overview section of your app registration in Azure portal and use it in the browser sample below. +- If you are writing a server side application, + - [Select a credential from `@azure/identity` based on the authentication method of your choice](https://aka.ms/azsdk/js/identity/examples) + - Complete the set up steps required by the credential if any. + - Use the credential you picked in the place of `DefaultAzureCredential` in the Node.js sample below. -##### Install @azure/ms-rest-nodeauth +In the below samples, we pass the credential and the Azure subscription id to instantiate the client. +Once the client is created, explore the operations on it either in your favorite editor or in our [API reference documentation](https://docs.microsoft.com/javascript/api) to get started. -- Please install minimum version of `"@azure/ms-rest-nodeauth": "^3.0.0"`. -```bash -npm install @azure/ms-rest-nodeauth@"^3.0.0" -``` +#### nodejs - Authentication, client creation, and list operations as an example written in JavaScript. ##### Sample code -```typescript -import * as msRest from "@azure/ms-rest-js"; -import * as msRestAzure from "@azure/ms-rest-azure-js"; -import * as msRestNodeAuth from "@azure/ms-rest-nodeauth"; -import { AttestationManagementClient, AttestationManagementModels, AttestationManagementMappers } from "@azure/arm-attestation"; +```javascript +const { DefaultAzureCredential } = require("@azure/identity"); +const { AttestationManagementClient } = require("@azure/arm-attestation"); const subscriptionId = process.env["AZURE_SUBSCRIPTION_ID"]; -msRestNodeAuth.interactiveLogin().then((creds) => { - const client = new AttestationManagementClient(creds, subscriptionId); - client.operations.list().then((result) => { - console.log("The result is:"); - console.log(result); - }); +// Use `DefaultAzureCredential` or any other credential of your choice based on https://aka.ms/azsdk/js/identity/examples +// Please note that you can also use credentials from the `@azure/ms-rest-nodeauth` package instead. +const creds = new DefaultAzureCredential(); +const client = new AttestationManagementClient(creds, subscriptionId); + +client.operations.list().then((result) => { + console.log("The result is:"); + console.log(result); }).catch((err) => { + console.log("An error occurred:"); console.error(err); }); ``` -#### browser - Authentication, client creation and list operations as an example written in JavaScript. - -##### Install @azure/ms-rest-browserauth +#### browser - Authentication, client creation, and list operations as an example written in JavaScript. -```bash -npm install @azure/ms-rest-browserauth -``` +In browser applications, we recommend using the `InteractiveBrowserCredential` that interactively authenticates using the default system browser. + - See [Single-page application: App registration guide](https://docs.microsoft.com/azure/active-directory/develop/scenario-spa-app-registration) to configure your app registration for the browser. + - Note down the client Id from the previous step and use it in the browser sample below. ##### Sample code -See https://github.com/Azure/ms-rest-browserauth to learn how to authenticate to Azure in the browser. - - index.html + ```html @azure/arm-attestation sample - - + diff --git a/sdk/attestation/arm-attestation/package.json b/sdk/attestation/arm-attestation/package.json index 109eab318b34..ac8a0e7a0ae4 100644 --- a/sdk/attestation/arm-attestation/package.json +++ b/sdk/attestation/arm-attestation/package.json @@ -2,10 +2,11 @@ "name": "@azure/arm-attestation", "author": "Microsoft Corporation", "description": "AttestationManagementClient Library with typescript type definitions for node.js and browser.", - "version": "1.0.0", + "version": "1.1.0", "dependencies": { - "@azure/ms-rest-azure-js": "^2.0.1", - "@azure/ms-rest-js": "^2.0.4", + "@azure/ms-rest-azure-js": "^2.1.0", + "@azure/ms-rest-js": "^2.2.0", + "@azure/core-auth": "^1.1.4", "tslib": "^1.10.0" }, "keywords": [ @@ -20,7 +21,7 @@ "module": "./esm/attestationManagementClient.js", "types": "./esm/attestationManagementClient.d.ts", "devDependencies": { - "typescript": "^3.5.3", + "typescript": "^3.6.0", "rollup": "^1.18.0", "rollup-plugin-node-resolve": "^5.2.0", "rollup-plugin-sourcemaps": "^0.4.2", diff --git a/sdk/attestation/arm-attestation/src/attestationManagementClient.ts b/sdk/attestation/arm-attestation/src/attestationManagementClient.ts index 1657aee1b92f..ab2f54efb640 100644 --- a/sdk/attestation/arm-attestation/src/attestationManagementClient.ts +++ b/sdk/attestation/arm-attestation/src/attestationManagementClient.ts @@ -9,6 +9,7 @@ */ import * as msRest from "@azure/ms-rest-js"; +import { TokenCredential } from "@azure/core-auth"; import * as Models from "./models"; import * as Mappers from "./models/mappers"; import * as operations from "./operations"; @@ -22,11 +23,16 @@ class AttestationManagementClient extends AttestationManagementClientContext { /** * Initializes a new instance of the AttestationManagementClient class. - * @param credentials Credentials needed for the client to connect to Azure. + * @param credentials Credentials needed for the client to connect to Azure. Credentials + * implementing the TokenCredential interface from the @azure/identity package are recommended. For + * more information about these credentials, see + * {@link https://www.npmjs.com/package/@azure/identity}. Credentials implementing the + * ServiceClientCredentials interface from the older packages @azure/ms-rest-nodeauth and + * @azure/ms-rest-browserauth are also supported. * @param subscriptionId The ID of the target subscription. * @param [options] The parameter options */ - constructor(credentials: msRest.ServiceClientCredentials, subscriptionId: string, options?: Models.AttestationManagementClientOptions) { + constructor(credentials: msRest.ServiceClientCredentials | TokenCredential, subscriptionId: string, options?: Models.AttestationManagementClientOptions) { super(credentials, subscriptionId, options); this.operations = new operations.Operations(this); this.attestationProviders = new operations.AttestationProviders(this); diff --git a/sdk/attestation/arm-attestation/src/attestationManagementClientContext.ts b/sdk/attestation/arm-attestation/src/attestationManagementClientContext.ts index c07885699d86..c094c4cfbaa1 100644 --- a/sdk/attestation/arm-attestation/src/attestationManagementClientContext.ts +++ b/sdk/attestation/arm-attestation/src/attestationManagementClientContext.ts @@ -10,23 +10,29 @@ import * as Models from "./models"; import * as msRest from "@azure/ms-rest-js"; +import { TokenCredential } from "@azure/core-auth"; import * as msRestAzure from "@azure/ms-rest-azure-js"; const packageName = "@azure/arm-attestation"; -const packageVersion = "1.0.0"; +const packageVersion = "1.1.0"; export class AttestationManagementClientContext extends msRestAzure.AzureServiceClient { - credentials: msRest.ServiceClientCredentials; + credentials: msRest.ServiceClientCredentials | TokenCredential; apiVersion?: string; subscriptionId: string; /** * Initializes a new instance of the AttestationManagementClient class. - * @param credentials Credentials needed for the client to connect to Azure. + * @param credentials Credentials needed for the client to connect to Azure. Credentials + * implementing the TokenCredential interface from the @azure/identity package are recommended. For + * more information about these credentials, see + * {@link https://www.npmjs.com/package/@azure/identity}. Credentials implementing the + * ServiceClientCredentials interface from the older packages @azure/ms-rest-nodeauth and + * @azure/ms-rest-browserauth are also supported. * @param subscriptionId The ID of the target subscription. * @param [options] The parameter options */ - constructor(credentials: msRest.ServiceClientCredentials, subscriptionId: string, options?: Models.AttestationManagementClientOptions) { + constructor(credentials: msRest.ServiceClientCredentials | TokenCredential, subscriptionId: string, options?: Models.AttestationManagementClientOptions) { if (credentials == undefined) { throw new Error('\'credentials\' cannot be null.'); } diff --git a/sdk/authorization/arm-authorization-profile-2019-03-01-hybrid/README.md b/sdk/authorization/arm-authorization-profile-2019-03-01-hybrid/README.md index 1c27e64535b1..09b24f40d9bc 100644 --- a/sdk/authorization/arm-authorization-profile-2019-03-01-hybrid/README.md +++ b/sdk/authorization/arm-authorization-profile-2019-03-01-hybrid/README.md @@ -1,91 +1,101 @@ ## Azure AuthorizationManagementClient SDK for JavaScript -This package contains an isomorphic SDK for AuthorizationManagementClient. +This package contains an isomorphic SDK (runs both in Node.js and in browsers) for AuthorizationManagementClient. ### Currently supported environments -- Node.js version 6.x.x or higher -- Browser JavaScript +- [LTS versions of Node.js](https://nodejs.org/about/releases/) +- Latest versions of Safari, Chrome, Edge, and Firefox. -### How to Install +### Prerequisites +You must have an [Azure subscription](https://azure.microsoft.com/free/). + +### How to install + +To use this SDK in your project, you will need to install two packages. +- `@azure/arm-authorization-profile-2019-03-01-hybrid` that contains the client. +- `@azure/identity` that provides different mechanisms for the client to authenticate your requests using Azure Active Directory. + +Install both packages using the below command: ```bash -npm install @azure/arm-authorization-profile-2019-03-01-hybrid +npm install --save @azure/arm-authorization-profile-2019-03-01-hybrid @azure/identity ``` +> **Note**: You may have used either `@azure/ms-rest-nodeauth` or `@azure/ms-rest-browserauth` in the past. These packages are in maintenance mode receiving critical bug fixes, but no new features. +If you are on a [Node.js that has LTS status](https://nodejs.org/about/releases/), or are writing a client side browser application, we strongly encourage you to upgrade to `@azure/identity` which uses the latest versions of Azure Active Directory and MSAL APIs and provides more authentication options. + ### How to use -#### nodejs - Authentication, client creation and listForResourceGroup permissions as an example written in TypeScript. +- If you are writing a client side browser application, + - Follow the instructions in the section on Authenticating client side browser applications in [Azure Identity examples](https://aka.ms/azsdk/js/identity/examples) to register your application in the Microsoft identity platform and set the right permissions. + - Copy the client ID and tenant ID from the Overview section of your app registration in Azure portal and use it in the browser sample below. +- If you are writing a server side application, + - [Select a credential from `@azure/identity` based on the authentication method of your choice](https://aka.ms/azsdk/js/identity/examples) + - Complete the set up steps required by the credential if any. + - Use the credential you picked in the place of `DefaultAzureCredential` in the Node.js sample below. -##### Install @azure/ms-rest-nodeauth +In the below samples, we pass the credential and the Azure subscription id to instantiate the client. +Once the client is created, explore the operations on it either in your favorite editor or in our [API reference documentation](https://docs.microsoft.com/javascript/api) to get started. -```bash -npm install @azure/ms-rest-nodeauth -``` +#### nodejs - Authentication, client creation, and listForResourceGroup permissions as an example written in JavaScript. ##### Sample code -```typescript -import * as msRest from "@azure/ms-rest-js"; -import * as msRestAzure from "@azure/ms-rest-azure-js"; -import * as msRestNodeAuth from "@azure/ms-rest-nodeauth"; -import { AuthorizationManagementClient, AuthorizationManagementModels, AuthorizationManagementMappers } from "@azure/arm-authorization-profile-2019-03-01-hybrid"; +```javascript +const { DefaultAzureCredential } = require("@azure/identity"); +const { AuthorizationManagementClient } = require("@azure/arm-authorization-profile-2019-03-01-hybrid"); const subscriptionId = process.env["AZURE_SUBSCRIPTION_ID"]; -msRestNodeAuth.interactiveLogin().then((creds) => { - const client = new AuthorizationManagementClient(creds, subscriptionId); - const resourceGroupName = "testresourceGroupName"; - client.permissions.listForResourceGroup(resourceGroupName).then((result) => { - console.log("The result is:"); - console.log(result); - }); +// Use `DefaultAzureCredential` or any other credential of your choice based on https://aka.ms/azsdk/js/identity/examples +// Please note that you can also use credentials from the `@azure/ms-rest-nodeauth` package instead. +const creds = new DefaultAzureCredential(); +const client = new AuthorizationManagementClient(creds, subscriptionId); +const resourceGroupName = "testresourceGroupName"; +client.permissions.listForResourceGroup(resourceGroupName).then((result) => { + console.log("The result is:"); + console.log(result); }).catch((err) => { + console.log("An error occurred:"); console.error(err); }); ``` -#### browser - Authentication, client creation and listForResourceGroup permissions as an example written in JavaScript. +#### browser - Authentication, client creation, and listForResourceGroup permissions as an example written in JavaScript. -##### Install @azure/ms-rest-browserauth - -```bash -npm install @azure/ms-rest-browserauth -``` +In browser applications, we recommend using the `InteractiveBrowserCredential` that interactively authenticates using the default system browser. + - See [Single-page application: App registration guide](https://docs.microsoft.com/azure/active-directory/develop/scenario-spa-app-registration) to configure your app registration for the browser. + - Note down the client Id from the previous step and use it in the browser sample below. ##### Sample code -See https://github.com/Azure/ms-rest-browserauth to learn how to authenticate to Azure in the browser. - - index.html + ```html @azure/arm-authorization-profile-2019-03-01-hybrid sample - - + @@ -97,5 +107,4 @@ See https://github.com/Azure/ms-rest-browserauth to learn how to authenticate to - [Microsoft Azure SDK for Javascript](https://github.com/Azure/azure-sdk-for-js) - -![Impressions](https://azure-sdk-impressions.azurewebsites.net/api/impressions/azure-sdk-for-js%2Fsdk%2Fauthorization%2Farm-authorization-profile-2019-03-01-hybrid%2FREADME.png) +![Impressions](https://azure-sdk-impressions.azurewebsites.net/api/impressions/azure-sdk-for-js/sdk/authorization/arm-authorization-profile-2019-03-01-hybrid/README.png) diff --git a/sdk/authorization/arm-authorization-profile-2019-03-01-hybrid/package.json b/sdk/authorization/arm-authorization-profile-2019-03-01-hybrid/package.json index 91c633edea0b..87781da4466f 100644 --- a/sdk/authorization/arm-authorization-profile-2019-03-01-hybrid/package.json +++ b/sdk/authorization/arm-authorization-profile-2019-03-01-hybrid/package.json @@ -2,10 +2,11 @@ "name": "@azure/arm-authorization-profile-2019-03-01-hybrid", "author": "Microsoft Corporation", "description": "AuthorizationManagementClient Library with typescript type definitions for node.js and browser.", - "version": "1.0.0", + "version": "1.1.0", "dependencies": { - "@azure/ms-rest-azure-js": "^1.3.2", - "@azure/ms-rest-js": "^1.8.1", + "@azure/ms-rest-azure-js": "^1.4.0", + "@azure/ms-rest-js": "^1.11.0", + "@azure/core-auth": "^1.1.4", "tslib": "^1.9.3" }, "keywords": [ @@ -21,7 +22,7 @@ "module": "./esm/authorizationManagementClient.js", "types": "./esm/authorizationManagementClient.d.ts", "devDependencies": { - "typescript": "^3.1.1", + "typescript": "^3.6.0", "rollup": "^0.66.2", "rollup-plugin-node-resolve": "^3.4.0", "rollup-plugin-sourcemaps": "^0.4.2", diff --git a/sdk/authorization/arm-authorization-profile-2019-03-01-hybrid/src/authorizationManagementClient.ts b/sdk/authorization/arm-authorization-profile-2019-03-01-hybrid/src/authorizationManagementClient.ts index 2c27b1a41c0c..3f9befd01c0e 100644 --- a/sdk/authorization/arm-authorization-profile-2019-03-01-hybrid/src/authorizationManagementClient.ts +++ b/sdk/authorization/arm-authorization-profile-2019-03-01-hybrid/src/authorizationManagementClient.ts @@ -9,6 +9,7 @@ */ import * as msRest from "@azure/ms-rest-js"; +import { TokenCredential } from "@azure/core-auth"; import * as Models from "./models"; import * as Mappers from "./models/mappers"; import * as operations from "./operations"; @@ -25,11 +26,16 @@ class AuthorizationManagementClient extends AuthorizationManagementClientContext /** * Initializes a new instance of the AuthorizationManagementClient class. - * @param credentials Credentials needed for the client to connect to Azure. + * @param credentials Credentials needed for the client to connect to Azure. Credentials + * implementing the TokenCredential interface from the @azure/identity package are recommended. For + * more information about these credentials, see + * {@link https://www.npmjs.com/package/@azure/identity}. Credentials implementing the + * ServiceClientCredentials interface from the older packages @azure/ms-rest-nodeauth and + * @azure/ms-rest-browserauth are also supported. * @param subscriptionId The ID of the target subscription. * @param [options] The parameter options */ - constructor(credentials: msRest.ServiceClientCredentials, subscriptionId: string, options?: Models.AuthorizationManagementClientOptions) { + constructor(credentials: msRest.ServiceClientCredentials | TokenCredential, subscriptionId: string, options?: Models.AuthorizationManagementClientOptions) { super(credentials, subscriptionId, options); this.permissions = new operations.Permissions(this); this.providerOperationsMetadata = new operations.ProviderOperationsMetadataOperations(this); diff --git a/sdk/authorization/arm-authorization-profile-2019-03-01-hybrid/src/authorizationManagementClientContext.ts b/sdk/authorization/arm-authorization-profile-2019-03-01-hybrid/src/authorizationManagementClientContext.ts index 06325eb70e3c..1e7113ab7019 100644 --- a/sdk/authorization/arm-authorization-profile-2019-03-01-hybrid/src/authorizationManagementClientContext.ts +++ b/sdk/authorization/arm-authorization-profile-2019-03-01-hybrid/src/authorizationManagementClientContext.ts @@ -10,23 +10,29 @@ import * as Models from "./models"; import * as msRest from "@azure/ms-rest-js"; +import { TokenCredential } from "@azure/core-auth"; import * as msRestAzure from "@azure/ms-rest-azure-js"; const packageName = "@azure/arm-authorization-profile-2019-03-01-hybrid"; -const packageVersion = "1.0.0"; +const packageVersion = "1.1.0"; export class AuthorizationManagementClientContext extends msRestAzure.AzureServiceClient { - credentials: msRest.ServiceClientCredentials; + credentials: msRest.ServiceClientCredentials | TokenCredential; subscriptionId: string; apiVersion?: string; /** * Initializes a new instance of the AuthorizationManagementClient class. - * @param credentials Credentials needed for the client to connect to Azure. + * @param credentials Credentials needed for the client to connect to Azure. Credentials + * implementing the TokenCredential interface from the @azure/identity package are recommended. For + * more information about these credentials, see + * {@link https://www.npmjs.com/package/@azure/identity}. Credentials implementing the + * ServiceClientCredentials interface from the older packages @azure/ms-rest-nodeauth and + * @azure/ms-rest-browserauth are also supported. * @param subscriptionId The ID of the target subscription. * @param [options] The parameter options */ - constructor(credentials: msRest.ServiceClientCredentials, subscriptionId: string, options?: Models.AuthorizationManagementClientOptions) { + constructor(credentials: msRest.ServiceClientCredentials | TokenCredential, subscriptionId: string, options?: Models.AuthorizationManagementClientOptions) { if (credentials == undefined) { throw new Error('\'credentials\' cannot be null.'); } diff --git a/sdk/authorization/arm-authorization-profile-2020-09-01-hybrid/README.md b/sdk/authorization/arm-authorization-profile-2020-09-01-hybrid/README.md index f4515cf204e2..de209d61a2e6 100644 --- a/sdk/authorization/arm-authorization-profile-2020-09-01-hybrid/README.md +++ b/sdk/authorization/arm-authorization-profile-2020-09-01-hybrid/README.md @@ -1,92 +1,101 @@ ## Azure AuthorizationManagementClient SDK for JavaScript -This package contains an isomorphic SDK for AuthorizationManagementClient. +This package contains an isomorphic SDK (runs both in Node.js and in browsers) for AuthorizationManagementClient. ### Currently supported environments -- Node.js version 6.x.x or higher -- Browser JavaScript +- [LTS versions of Node.js](https://nodejs.org/about/releases/) +- Latest versions of Safari, Chrome, Edge, and Firefox. -### How to Install +### Prerequisites +You must have an [Azure subscription](https://azure.microsoft.com/free/). + +### How to install + +To use this SDK in your project, you will need to install two packages. +- `@azure/arm-authorization-profile-2020-09-01-hybrid` that contains the client. +- `@azure/identity` that provides different mechanisms for the client to authenticate your requests using Azure Active Directory. + +Install both packages using the below command: ```bash -npm install @azure/arm-authorization-profile-2020-09-01-hybrid +npm install --save @azure/arm-authorization-profile-2020-09-01-hybrid @azure/identity ``` +> **Note**: You may have used either `@azure/ms-rest-nodeauth` or `@azure/ms-rest-browserauth` in the past. These packages are in maintenance mode receiving critical bug fixes, but no new features. +If you are on a [Node.js that has LTS status](https://nodejs.org/about/releases/), or are writing a client side browser application, we strongly encourage you to upgrade to `@azure/identity` which uses the latest versions of Azure Active Directory and MSAL APIs and provides more authentication options. + ### How to use -#### nodejs - Authentication, client creation and listForResourceGroup permissions as an example written in TypeScript. +- If you are writing a client side browser application, + - Follow the instructions in the section on Authenticating client side browser applications in [Azure Identity examples](https://aka.ms/azsdk/js/identity/examples) to register your application in the Microsoft identity platform and set the right permissions. + - Copy the client ID and tenant ID from the Overview section of your app registration in Azure portal and use it in the browser sample below. +- If you are writing a server side application, + - [Select a credential from `@azure/identity` based on the authentication method of your choice](https://aka.ms/azsdk/js/identity/examples) + - Complete the set up steps required by the credential if any. + - Use the credential you picked in the place of `DefaultAzureCredential` in the Node.js sample below. -##### Install @azure/ms-rest-nodeauth +In the below samples, we pass the credential and the Azure subscription id to instantiate the client. +Once the client is created, explore the operations on it either in your favorite editor or in our [API reference documentation](https://docs.microsoft.com/javascript/api) to get started. -- Please install minimum version of `"@azure/ms-rest-nodeauth": "^3.0.0"`. -```bash -npm install @azure/ms-rest-nodeauth@"^3.0.0" -``` +#### nodejs - Authentication, client creation, and listForResourceGroup permissions as an example written in JavaScript. ##### Sample code -```typescript -import * as msRest from "@azure/ms-rest-js"; -import * as msRestAzure from "@azure/ms-rest-azure-js"; -import * as msRestNodeAuth from "@azure/ms-rest-nodeauth"; -import { AuthorizationManagementClient, AuthorizationManagementModels, AuthorizationManagementMappers } from "@azure/arm-authorization-profile-2020-09-01-hybrid"; +```javascript +const { DefaultAzureCredential } = require("@azure/identity"); +const { AuthorizationManagementClient } = require("@azure/arm-authorization-profile-2020-09-01-hybrid"); const subscriptionId = process.env["AZURE_SUBSCRIPTION_ID"]; -msRestNodeAuth.interactiveLogin().then((creds) => { - const client = new AuthorizationManagementClient(creds, subscriptionId); - const resourceGroupName = "testresourceGroupName"; - client.permissions.listForResourceGroup(resourceGroupName).then((result) => { - console.log("The result is:"); - console.log(result); - }); +// Use `DefaultAzureCredential` or any other credential of your choice based on https://aka.ms/azsdk/js/identity/examples +// Please note that you can also use credentials from the `@azure/ms-rest-nodeauth` package instead. +const creds = new DefaultAzureCredential(); +const client = new AuthorizationManagementClient(creds, subscriptionId); +const resourceGroupName = "testresourceGroupName"; +client.permissions.listForResourceGroup(resourceGroupName).then((result) => { + console.log("The result is:"); + console.log(result); }).catch((err) => { + console.log("An error occurred:"); console.error(err); }); ``` -#### browser - Authentication, client creation and listForResourceGroup permissions as an example written in JavaScript. +#### browser - Authentication, client creation, and listForResourceGroup permissions as an example written in JavaScript. -##### Install @azure/ms-rest-browserauth - -```bash -npm install @azure/ms-rest-browserauth -``` +In browser applications, we recommend using the `InteractiveBrowserCredential` that interactively authenticates using the default system browser. + - See [Single-page application: App registration guide](https://docs.microsoft.com/azure/active-directory/develop/scenario-spa-app-registration) to configure your app registration for the browser. + - Note down the client Id from the previous step and use it in the browser sample below. ##### Sample code -See https://github.com/Azure/ms-rest-browserauth to learn how to authenticate to Azure in the browser. - - index.html + ```html @azure/arm-authorization-profile-2020-09-01-hybrid sample - - + diff --git a/sdk/authorization/arm-authorization-profile-2020-09-01-hybrid/package.json b/sdk/authorization/arm-authorization-profile-2020-09-01-hybrid/package.json index 7e57bafabb39..0a37484339f3 100644 --- a/sdk/authorization/arm-authorization-profile-2020-09-01-hybrid/package.json +++ b/sdk/authorization/arm-authorization-profile-2020-09-01-hybrid/package.json @@ -2,10 +2,11 @@ "name": "@azure/arm-authorization-profile-2020-09-01-hybrid", "author": "Microsoft Corporation", "description": "AuthorizationManagementClient Library with typescript type definitions for node.js and browser.", - "version": "1.0.0", + "version": "1.1.0", "dependencies": { - "@azure/ms-rest-azure-js": "^2.0.1", - "@azure/ms-rest-js": "^2.0.4", + "@azure/ms-rest-azure-js": "^2.1.0", + "@azure/ms-rest-js": "^2.2.0", + "@azure/core-auth": "^1.1.4", "tslib": "^1.10.0" }, "keywords": [ @@ -20,7 +21,7 @@ "module": "./esm/authorizationManagementClient.js", "types": "./esm/authorizationManagementClient.d.ts", "devDependencies": { - "typescript": "^3.5.3", + "typescript": "^3.6.0", "rollup": "^1.18.0", "rollup-plugin-node-resolve": "^5.2.0", "rollup-plugin-sourcemaps": "^0.4.2", diff --git a/sdk/authorization/arm-authorization-profile-2020-09-01-hybrid/src/authorizationManagementClient.ts b/sdk/authorization/arm-authorization-profile-2020-09-01-hybrid/src/authorizationManagementClient.ts index a1aded5211b9..2164fe797036 100644 --- a/sdk/authorization/arm-authorization-profile-2020-09-01-hybrid/src/authorizationManagementClient.ts +++ b/sdk/authorization/arm-authorization-profile-2020-09-01-hybrid/src/authorizationManagementClient.ts @@ -9,6 +9,7 @@ */ import * as msRest from "@azure/ms-rest-js"; +import { TokenCredential } from "@azure/core-auth"; import * as Models from "./models"; import * as Mappers from "./models/mappers"; import * as operations from "./operations"; @@ -25,11 +26,16 @@ class AuthorizationManagementClient extends AuthorizationManagementClientContext /** * Initializes a new instance of the AuthorizationManagementClient class. - * @param credentials Credentials needed for the client to connect to Azure. + * @param credentials Credentials needed for the client to connect to Azure. Credentials + * implementing the TokenCredential interface from the @azure/identity package are recommended. For + * more information about these credentials, see + * {@link https://www.npmjs.com/package/@azure/identity}. Credentials implementing the + * ServiceClientCredentials interface from the older packages @azure/ms-rest-nodeauth and + * @azure/ms-rest-browserauth are also supported. * @param subscriptionId The ID of the target subscription. * @param [options] The parameter options */ - constructor(credentials: msRest.ServiceClientCredentials, subscriptionId: string, options?: Models.AuthorizationManagementClientOptions) { + constructor(credentials: msRest.ServiceClientCredentials | TokenCredential, subscriptionId: string, options?: Models.AuthorizationManagementClientOptions) { super(credentials, subscriptionId, options); this.permissions = new operations.Permissions(this); this.roleDefinitions = new operations.RoleDefinitions(this); diff --git a/sdk/authorization/arm-authorization-profile-2020-09-01-hybrid/src/authorizationManagementClientContext.ts b/sdk/authorization/arm-authorization-profile-2020-09-01-hybrid/src/authorizationManagementClientContext.ts index a3a07b227f8b..624b843cabad 100644 --- a/sdk/authorization/arm-authorization-profile-2020-09-01-hybrid/src/authorizationManagementClientContext.ts +++ b/sdk/authorization/arm-authorization-profile-2020-09-01-hybrid/src/authorizationManagementClientContext.ts @@ -10,23 +10,29 @@ import * as Models from "./models"; import * as msRest from "@azure/ms-rest-js"; +import { TokenCredential } from "@azure/core-auth"; import * as msRestAzure from "@azure/ms-rest-azure-js"; const packageName = "@azure/arm-authorization-profile-2020-09-01-hybrid"; -const packageVersion = "1.0.0"; +const packageVersion = "1.1.0"; export class AuthorizationManagementClientContext extends msRestAzure.AzureServiceClient { - credentials: msRest.ServiceClientCredentials; + credentials: msRest.ServiceClientCredentials | TokenCredential; subscriptionId: string; apiVersion?: string; /** * Initializes a new instance of the AuthorizationManagementClient class. - * @param credentials Credentials needed for the client to connect to Azure. + * @param credentials Credentials needed for the client to connect to Azure. Credentials + * implementing the TokenCredential interface from the @azure/identity package are recommended. For + * more information about these credentials, see + * {@link https://www.npmjs.com/package/@azure/identity}. Credentials implementing the + * ServiceClientCredentials interface from the older packages @azure/ms-rest-nodeauth and + * @azure/ms-rest-browserauth are also supported. * @param subscriptionId The ID of the target subscription. * @param [options] The parameter options */ - constructor(credentials: msRest.ServiceClientCredentials, subscriptionId: string, options?: Models.AuthorizationManagementClientOptions) { + constructor(credentials: msRest.ServiceClientCredentials | TokenCredential, subscriptionId: string, options?: Models.AuthorizationManagementClientOptions) { if (credentials == undefined) { throw new Error('\'credentials\' cannot be null.'); } diff --git a/sdk/authorization/arm-authorization/README.md b/sdk/authorization/arm-authorization/README.md index 00b867f0df83..97a2b1e7248b 100644 --- a/sdk/authorization/arm-authorization/README.md +++ b/sdk/authorization/arm-authorization/README.md @@ -1,61 +1,74 @@ ## Azure AuthorizationManagementClient SDK for JavaScript -This package contains an isomorphic SDK for AuthorizationManagementClient. +This package contains an isomorphic SDK (runs both in Node.js and in browsers) for AuthorizationManagementClient. ### Currently supported environments -- Node.js version 6.x.x or higher -- Browser JavaScript +- [LTS versions of Node.js](https://nodejs.org/about/releases/) +- Latest versions of Safari, Chrome, Edge, and Firefox. -### How to Install +### Prerequisites +You must have an [Azure subscription](https://azure.microsoft.com/free/). + +### How to install + +To use this SDK in your project, you will need to install two packages. +- `@azure/arm-authorization` that contains the client. +- `@azure/identity` that provides different mechanisms for the client to authenticate your requests using Azure Active Directory. + +Install both packages using the below command: ```bash -npm install @azure/arm-authorization +npm install --save @azure/arm-authorization @azure/identity ``` +> **Note**: You may have used either `@azure/ms-rest-nodeauth` or `@azure/ms-rest-browserauth` in the past. These packages are in maintenance mode receiving critical bug fixes, but no new features. +If you are on a [Node.js that has LTS status](https://nodejs.org/about/releases/), or are writing a client side browser application, we strongly encourage you to upgrade to `@azure/identity` which uses the latest versions of Azure Active Directory and MSAL APIs and provides more authentication options. + ### How to use -#### nodejs - Authentication, client creation and list classicAdministrators as an example written in TypeScript. +- If you are writing a client side browser application, + - Follow the instructions in the section on Authenticating client side browser applications in [Azure Identity examples](https://aka.ms/azsdk/js/identity/examples) to register your application in the Microsoft identity platform and set the right permissions. + - Copy the client ID and tenant ID from the Overview section of your app registration in Azure portal and use it in the browser sample below. +- If you are writing a server side application, + - [Select a credential from `@azure/identity` based on the authentication method of your choice](https://aka.ms/azsdk/js/identity/examples) + - Complete the set up steps required by the credential if any. + - Use the credential you picked in the place of `DefaultAzureCredential` in the Node.js sample below. -##### Install @azure/ms-rest-nodeauth +In the below samples, we pass the credential and the Azure subscription id to instantiate the client. +Once the client is created, explore the operations on it either in your favorite editor or in our [API reference documentation](https://docs.microsoft.com/javascript/api) to get started. -```bash -npm install @azure/ms-rest-nodeauth -``` +#### nodejs - Authentication, client creation, and list classicAdministrators as an example written in JavaScript. ##### Sample code ```javascript +const { DefaultAzureCredential } = require("@azure/identity"); const { AuthorizationManagementClient } = require("@azure/arm-authorization"); -const { interactiveLogin } = require("@azure/ms-rest-nodeauth"); - const subscriptionId = process.env["AZURE_SUBSCRIPTION_ID"]; -interactiveLogin() - .then((creds) => { - const client = new AuthorizationManagementClient(creds, subscriptionId); - client.classicAdministrators.list().then((result) => { - console.log("The result is:"); - console.log(result); - }); - }) - .catch((err) => { - console.error(err); - }); +// Use `DefaultAzureCredential` or any other credential of your choice based on https://aka.ms/azsdk/js/identity/examples +// Please note that you can also use credentials from the `@azure/ms-rest-nodeauth` package instead. +const creds = new DefaultAzureCredential(); +const client = new AuthorizationManagementClient(creds, subscriptionId); + +client.classicAdministrators.list().then((result) => { + console.log("The result is:"); + console.log(result); +}).catch((err) => { + console.log("An error occurred:"); + console.error(err); +}); ``` -#### browser - Authentication, client creation and list classicAdministrators as an example written in JavaScript. +#### browser - Authentication, client creation, and list classicAdministrators as an example written in JavaScript. -##### Install @azure/ms-rest-browserauth - -```bash -npm install @azure/ms-rest-browserauth -``` +In browser applications, we recommend using the `InteractiveBrowserCredential` that interactively authenticates using the default system browser. + - See [Single-page application: App registration guide](https://docs.microsoft.com/azure/active-directory/develop/scenario-spa-app-registration) to configure your app registration for the browser. + - Note down the client Id from the previous step and use it in the browser sample below. ##### Sample code -See https://github.com/Azure/ms-rest-browserauth to learn how to authenticate to Azure in the browser. - - index.html ```html @@ -63,35 +76,25 @@ See https://github.com/Azure/ms-rest-browserauth to learn how to authenticate to @azure/arm-authorization sample - - + @@ -103,4 +106,4 @@ See https://github.com/Azure/ms-rest-browserauth to learn how to authenticate to - [Microsoft Azure SDK for Javascript](https://github.com/Azure/azure-sdk-for-js) -![Impressions](https://azure-sdk-impressions.azurewebsites.net/api/impressions/azure-sdk-for-js%2Fsdk%2Fauthorization%2Farm-authorization%2FREADME.png) +![Impressions](https://azure-sdk-impressions.azurewebsites.net/api/impressions/azure-sdk-for-js/sdk/authorization/arm-authorization/README.png) diff --git a/sdk/authorization/arm-authorization/package.json b/sdk/authorization/arm-authorization/package.json index e8c1c708f434..88d8e11426ec 100644 --- a/sdk/authorization/arm-authorization/package.json +++ b/sdk/authorization/arm-authorization/package.json @@ -2,10 +2,11 @@ "name": "@azure/arm-authorization", "author": "Microsoft Corporation", "description": "AuthorizationManagementClient Library with typescript type definitions for node.js and browser.", - "version": "8.3.3", + "version": "8.4.0", "dependencies": { - "@azure/ms-rest-azure-js": "^2.0.0", - "@azure/ms-rest-js": "^2.0.3", + "@azure/ms-rest-azure-js": "^2.1.0", + "@azure/ms-rest-js": "^2.2.0", + "@azure/core-auth": "^1.1.4", "tslib": "^1.9.3" }, "keywords": [ @@ -20,7 +21,7 @@ "module": "./esm/authorizationManagementClient.js", "types": "./esm/authorizationManagementClient.d.ts", "devDependencies": { - "typescript": "^3.1.1", + "typescript": "^3.6.0", "rollup": "^0.66.2", "rollup-plugin-node-resolve": "^3.4.0", "rollup-plugin-sourcemaps": "^0.4.2", diff --git a/sdk/authorization/arm-authorization/src/authorizationManagementClient.ts b/sdk/authorization/arm-authorization/src/authorizationManagementClient.ts index 38d6e007d768..b970948c40cb 100644 --- a/sdk/authorization/arm-authorization/src/authorizationManagementClient.ts +++ b/sdk/authorization/arm-authorization/src/authorizationManagementClient.ts @@ -9,6 +9,7 @@ */ import * as msRest from "@azure/ms-rest-js"; +import { TokenCredential } from "@azure/core-auth"; import * as Models from "./models"; import * as Mappers from "./models/mappers"; import * as operations from "./operations"; @@ -27,11 +28,16 @@ class AuthorizationManagementClient extends AuthorizationManagementClientContext /** * Initializes a new instance of the AuthorizationManagementClient class. - * @param credentials Credentials needed for the client to connect to Azure. + * @param credentials Credentials needed for the client to connect to Azure. Credentials + * implementing the TokenCredential interface from the @azure/identity package are recommended. For + * more information about these credentials, see + * {@link https://www.npmjs.com/package/@azure/identity}. Credentials implementing the + * ServiceClientCredentials interface from the older packages @azure/ms-rest-nodeauth and + * @azure/ms-rest-browserauth are also supported. * @param subscriptionId The ID of the target subscription. * @param [options] The parameter options */ - constructor(credentials: msRest.ServiceClientCredentials, subscriptionId: string, options?: Models.AuthorizationManagementClientOptions) { + constructor(credentials: msRest.ServiceClientCredentials | TokenCredential, subscriptionId: string, options?: Models.AuthorizationManagementClientOptions) { super(credentials, subscriptionId, options); this.classicAdministrators = new operations.ClassicAdministrators(this); this.globalAdministrator = new operations.GlobalAdministrator(this); diff --git a/sdk/authorization/arm-authorization/src/authorizationManagementClientContext.ts b/sdk/authorization/arm-authorization/src/authorizationManagementClientContext.ts index 2b1aabd7fe6c..d81273824f92 100644 --- a/sdk/authorization/arm-authorization/src/authorizationManagementClientContext.ts +++ b/sdk/authorization/arm-authorization/src/authorizationManagementClientContext.ts @@ -10,22 +10,28 @@ import * as Models from "./models"; import * as msRest from "@azure/ms-rest-js"; +import { TokenCredential } from "@azure/core-auth"; import * as msRestAzure from "@azure/ms-rest-azure-js"; const packageName = "@azure/arm-authorization"; -const packageVersion = "8.3.3"; +const packageVersion = "8.4.0"; export class AuthorizationManagementClientContext extends msRestAzure.AzureServiceClient { - credentials: msRest.ServiceClientCredentials; + credentials: msRest.ServiceClientCredentials | TokenCredential; subscriptionId: string; /** * Initializes a new instance of the AuthorizationManagementClient class. - * @param credentials Credentials needed for the client to connect to Azure. + * @param credentials Credentials needed for the client to connect to Azure. Credentials + * implementing the TokenCredential interface from the @azure/identity package are recommended. For + * more information about these credentials, see + * {@link https://www.npmjs.com/package/@azure/identity}. Credentials implementing the + * ServiceClientCredentials interface from the older packages @azure/ms-rest-nodeauth and + * @azure/ms-rest-browserauth are also supported. * @param subscriptionId The ID of the target subscription. * @param [options] The parameter options */ - constructor(credentials: msRest.ServiceClientCredentials, subscriptionId: string, options?: Models.AuthorizationManagementClientOptions) { + constructor(credentials: msRest.ServiceClientCredentials | TokenCredential, subscriptionId: string, options?: Models.AuthorizationManagementClientOptions) { if (credentials == undefined) { throw new Error('\'credentials\' cannot be null.'); } diff --git a/sdk/automation/arm-automation/README.md b/sdk/automation/arm-automation/README.md index 50b1d40caaa1..d7548d60e4c8 100644 --- a/sdk/automation/arm-automation/README.md +++ b/sdk/automation/arm-automation/README.md @@ -1,94 +1,103 @@ ## Azure AutomationClient SDK for JavaScript -This package contains an isomorphic SDK for AutomationClient. +This package contains an isomorphic SDK (runs both in Node.js and in browsers) for AutomationClient. ### Currently supported environments -- Node.js version 6.x.x or higher -- Browser JavaScript +- [LTS versions of Node.js](https://nodejs.org/about/releases/) +- Latest versions of Safari, Chrome, Edge, and Firefox. -### How to Install +### Prerequisites +You must have an [Azure subscription](https://azure.microsoft.com/free/). + +### How to install + +To use this SDK in your project, you will need to install two packages. +- `@azure/arm-automation` that contains the client. +- `@azure/identity` that provides different mechanisms for the client to authenticate your requests using Azure Active Directory. + +Install both packages using the below command: ```bash -npm install @azure/arm-automation +npm install --save @azure/arm-automation @azure/identity ``` +> **Note**: You may have used either `@azure/ms-rest-nodeauth` or `@azure/ms-rest-browserauth` in the past. These packages are in maintenance mode receiving critical bug fixes, but no new features. +If you are on a [Node.js that has LTS status](https://nodejs.org/about/releases/), or are writing a client side browser application, we strongly encourage you to upgrade to `@azure/identity` which uses the latest versions of Azure Active Directory and MSAL APIs and provides more authentication options. + ### How to use -#### nodejs - Authentication, client creation and get automationAccount as an example written in TypeScript. +- If you are writing a client side browser application, + - Follow the instructions in the section on Authenticating client side browser applications in [Azure Identity examples](https://aka.ms/azsdk/js/identity/examples) to register your application in the Microsoft identity platform and set the right permissions. + - Copy the client ID and tenant ID from the Overview section of your app registration in Azure portal and use it in the browser sample below. +- If you are writing a server side application, + - [Select a credential from `@azure/identity` based on the authentication method of your choice](https://aka.ms/azsdk/js/identity/examples) + - Complete the set up steps required by the credential if any. + - Use the credential you picked in the place of `DefaultAzureCredential` in the Node.js sample below. -##### Install @azure/ms-rest-nodeauth +In the below samples, we pass the credential and the Azure subscription id to instantiate the client. +Once the client is created, explore the operations on it either in your favorite editor or in our [API reference documentation](https://docs.microsoft.com/javascript/api) to get started. -- Please install minimum version of `"@azure/ms-rest-nodeauth": "^3.0.0"`. -```bash -npm install @azure/ms-rest-nodeauth@"^3.0.0" -``` +#### nodejs - Authentication, client creation, and get automationAccount as an example written in JavaScript. ##### Sample code -```typescript -import * as msRest from "@azure/ms-rest-js"; -import * as msRestAzure from "@azure/ms-rest-azure-js"; -import * as msRestNodeAuth from "@azure/ms-rest-nodeauth"; -import { AutomationClient, AutomationModels, AutomationMappers } from "@azure/arm-automation"; +```javascript +const { DefaultAzureCredential } = require("@azure/identity"); +const { AutomationClient } = require("@azure/arm-automation"); const subscriptionId = process.env["AZURE_SUBSCRIPTION_ID"]; -msRestNodeAuth.interactiveLogin().then((creds) => { - const client = new AutomationClient(creds, subscriptionId); - const resourceGroupName = "testresourceGroupName"; - const automationAccountName = "testautomationAccountName"; - client.automationAccount.get(resourceGroupName, automationAccountName).then((result) => { - console.log("The result is:"); - console.log(result); - }); +// Use `DefaultAzureCredential` or any other credential of your choice based on https://aka.ms/azsdk/js/identity/examples +// Please note that you can also use credentials from the `@azure/ms-rest-nodeauth` package instead. +const creds = new DefaultAzureCredential(); +const client = new AutomationClient(creds, subscriptionId); +const resourceGroupName = "testresourceGroupName"; +const automationAccountName = "testautomationAccountName"; +client.automationAccount.get(resourceGroupName, automationAccountName).then((result) => { + console.log("The result is:"); + console.log(result); }).catch((err) => { + console.log("An error occurred:"); console.error(err); }); ``` -#### browser - Authentication, client creation and get automationAccount as an example written in JavaScript. +#### browser - Authentication, client creation, and get automationAccount as an example written in JavaScript. -##### Install @azure/ms-rest-browserauth - -```bash -npm install @azure/ms-rest-browserauth -``` +In browser applications, we recommend using the `InteractiveBrowserCredential` that interactively authenticates using the default system browser. + - See [Single-page application: App registration guide](https://docs.microsoft.com/azure/active-directory/develop/scenario-spa-app-registration) to configure your app registration for the browser. + - Note down the client Id from the previous step and use it in the browser sample below. ##### Sample code -See https://github.com/Azure/ms-rest-browserauth to learn how to authenticate to Azure in the browser. - - index.html + ```html @azure/arm-automation sample - - + diff --git a/sdk/automation/arm-automation/package.json b/sdk/automation/arm-automation/package.json index 3c834e3fe06c..91183c924834 100644 --- a/sdk/automation/arm-automation/package.json +++ b/sdk/automation/arm-automation/package.json @@ -2,10 +2,11 @@ "name": "@azure/arm-automation", "author": "Microsoft Corporation", "description": "AutomationClient Library with typescript type definitions for node.js and browser.", - "version": "10.0.0", + "version": "10.1.0", "dependencies": { - "@azure/ms-rest-azure-js": "^2.0.1", - "@azure/ms-rest-js": "^2.0.4", + "@azure/ms-rest-azure-js": "^2.1.0", + "@azure/ms-rest-js": "^2.2.0", + "@azure/core-auth": "^1.1.4", "tslib": "^1.10.0" }, "keywords": [ @@ -20,7 +21,7 @@ "module": "./esm/automationClient.js", "types": "./esm/automationClient.d.ts", "devDependencies": { - "typescript": "^3.5.3", + "typescript": "^3.6.0", "rollup": "^1.18.0", "rollup-plugin-node-resolve": "^5.2.0", "rollup-plugin-sourcemaps": "^0.4.2", diff --git a/sdk/automation/arm-automation/src/automationClient.ts b/sdk/automation/arm-automation/src/automationClient.ts index 4290b4b4a1c7..20f3495cf384 100644 --- a/sdk/automation/arm-automation/src/automationClient.ts +++ b/sdk/automation/arm-automation/src/automationClient.ts @@ -9,6 +9,7 @@ */ import * as msRest from "@azure/ms-rest-js"; +import { TokenCredential } from "@azure/core-auth"; import * as Models from "./models"; import * as Mappers from "./models/mappers"; import * as operations from "./operations"; @@ -61,14 +62,19 @@ class AutomationClient extends AutomationClientContext { /** * Initializes a new instance of the AutomationClient class. - * @param credentials Credentials needed for the client to connect to Azure. + * @param credentials Credentials needed for the client to connect to Azure. Credentials + * implementing the TokenCredential interface from the @azure/identity package are recommended. For + * more information about these credentials, see + * {@link https://www.npmjs.com/package/@azure/identity}. Credentials implementing the + * ServiceClientCredentials interface from the older packages @azure/ms-rest-nodeauth and + * @azure/ms-rest-browserauth are also supported. * @param subscriptionId Gets subscription credentials which uniquely identify Microsoft Azure * subscription. The subscription ID forms part of the URI for every service call. * @param countType1 The type of counts to retrieve. Possible values include: 'status', * 'nodeconfiguration' * @param [options] The parameter options */ - constructor(credentials: msRest.ServiceClientCredentials, subscriptionId: string, countType1: Models.CountType, options?: Models.AutomationClientOptions) { + constructor(credentials: msRest.ServiceClientCredentials | TokenCredential, subscriptionId: string, countType1: Models.CountType, options?: Models.AutomationClientOptions) { super(credentials, subscriptionId, countType1, options); this.automationAccount = new operations.AutomationAccountOperations(this); this.operations = new operations.Operations(this); diff --git a/sdk/automation/arm-automation/src/automationClientContext.ts b/sdk/automation/arm-automation/src/automationClientContext.ts index 52193c535a17..b686a363373a 100644 --- a/sdk/automation/arm-automation/src/automationClientContext.ts +++ b/sdk/automation/arm-automation/src/automationClientContext.ts @@ -10,26 +10,32 @@ import * as Models from "./models"; import * as msRest from "@azure/ms-rest-js"; +import { TokenCredential } from "@azure/core-auth"; import * as msRestAzure from "@azure/ms-rest-azure-js"; const packageName = "@azure/arm-automation"; -const packageVersion = "10.0.0"; +const packageVersion = "10.1.0"; export class AutomationClientContext extends msRestAzure.AzureServiceClient { - credentials: msRest.ServiceClientCredentials; + credentials: msRest.ServiceClientCredentials | TokenCredential; subscriptionId: string; countType1: Models.CountType; /** * Initializes a new instance of the AutomationClient class. - * @param credentials Credentials needed for the client to connect to Azure. + * @param credentials Credentials needed for the client to connect to Azure. Credentials + * implementing the TokenCredential interface from the @azure/identity package are recommended. For + * more information about these credentials, see + * {@link https://www.npmjs.com/package/@azure/identity}. Credentials implementing the + * ServiceClientCredentials interface from the older packages @azure/ms-rest-nodeauth and + * @azure/ms-rest-browserauth are also supported. * @param subscriptionId Gets subscription credentials which uniquely identify Microsoft Azure * subscription. The subscription ID forms part of the URI for every service call. * @param countType1 The type of counts to retrieve. Possible values include: 'status', * 'nodeconfiguration' * @param [options] The parameter options */ - constructor(credentials: msRest.ServiceClientCredentials, subscriptionId: string, countType1: Models.CountType, options?: Models.AutomationClientOptions) { + constructor(credentials: msRest.ServiceClientCredentials | TokenCredential, subscriptionId: string, countType1: Models.CountType, options?: Models.AutomationClientOptions) { if (credentials == undefined) { throw new Error('\'credentials\' cannot be null.'); } diff --git a/sdk/avs/arm-avs/README.md b/sdk/avs/arm-avs/README.md index 73c2aae29485..63a73a5aafa8 100644 --- a/sdk/avs/arm-avs/README.md +++ b/sdk/avs/arm-avs/README.md @@ -1,90 +1,100 @@ ## Azure AvsClient SDK for JavaScript -This package contains an isomorphic SDK for AvsClient. +This package contains an isomorphic SDK (runs both in Node.js and in browsers) for AvsClient. ### Currently supported environments -- Node.js version 6.x.x or higher -- Browser JavaScript +- [LTS versions of Node.js](https://nodejs.org/about/releases/) +- Latest versions of Safari, Chrome, Edge, and Firefox. -### How to Install +### Prerequisites +You must have an [Azure subscription](https://azure.microsoft.com/free/). + +### How to install + +To use this SDK in your project, you will need to install two packages. +- `@azure/arm-avs` that contains the client. +- `@azure/identity` that provides different mechanisms for the client to authenticate your requests using Azure Active Directory. + +Install both packages using the below command: ```bash -npm install @azure/arm-avs +npm install --save @azure/arm-avs @azure/identity ``` +> **Note**: You may have used either `@azure/ms-rest-nodeauth` or `@azure/ms-rest-browserauth` in the past. These packages are in maintenance mode receiving critical bug fixes, but no new features. +If you are on a [Node.js that has LTS status](https://nodejs.org/about/releases/), or are writing a client side browser application, we strongly encourage you to upgrade to `@azure/identity` which uses the latest versions of Azure Active Directory and MSAL APIs and provides more authentication options. + ### How to use -#### nodejs - Authentication, client creation and list operations as an example written in TypeScript. +- If you are writing a client side browser application, + - Follow the instructions in the section on Authenticating client side browser applications in [Azure Identity examples](https://aka.ms/azsdk/js/identity/examples) to register your application in the Microsoft identity platform and set the right permissions. + - Copy the client ID and tenant ID from the Overview section of your app registration in Azure portal and use it in the browser sample below. +- If you are writing a server side application, + - [Select a credential from `@azure/identity` based on the authentication method of your choice](https://aka.ms/azsdk/js/identity/examples) + - Complete the set up steps required by the credential if any. + - Use the credential you picked in the place of `DefaultAzureCredential` in the Node.js sample below. -##### Install @azure/ms-rest-nodeauth +In the below samples, we pass the credential and the Azure subscription id to instantiate the client. +Once the client is created, explore the operations on it either in your favorite editor or in our [API reference documentation](https://docs.microsoft.com/javascript/api) to get started. -- Please install minimum version of `"@azure/ms-rest-nodeauth": "^3.0.0"`. -```bash -npm install @azure/ms-rest-nodeauth@"^3.0.0" -``` +#### nodejs - Authentication, client creation, and list operations as an example written in JavaScript. ##### Sample code -```typescript -import * as msRest from "@azure/ms-rest-js"; -import * as msRestAzure from "@azure/ms-rest-azure-js"; -import * as msRestNodeAuth from "@azure/ms-rest-nodeauth"; -import { AvsClient, AvsModels, AvsMappers } from "@azure/arm-avs"; +```javascript +const { DefaultAzureCredential } = require("@azure/identity"); +const { AvsClient } = require("@azure/arm-avs"); const subscriptionId = process.env["AZURE_SUBSCRIPTION_ID"]; -msRestNodeAuth.interactiveLogin().then((creds) => { - const client = new AvsClient(creds, subscriptionId); - client.operations.list().then((result) => { - console.log("The result is:"); - console.log(result); - }); +// Use `DefaultAzureCredential` or any other credential of your choice based on https://aka.ms/azsdk/js/identity/examples +// Please note that you can also use credentials from the `@azure/ms-rest-nodeauth` package instead. +const creds = new DefaultAzureCredential(); +const client = new AvsClient(creds, subscriptionId); + +client.operations.list().then((result) => { + console.log("The result is:"); + console.log(result); }).catch((err) => { + console.log("An error occurred:"); console.error(err); }); ``` -#### browser - Authentication, client creation and list operations as an example written in JavaScript. - -##### Install @azure/ms-rest-browserauth +#### browser - Authentication, client creation, and list operations as an example written in JavaScript. -```bash -npm install @azure/ms-rest-browserauth -``` +In browser applications, we recommend using the `InteractiveBrowserCredential` that interactively authenticates using the default system browser. + - See [Single-page application: App registration guide](https://docs.microsoft.com/azure/active-directory/develop/scenario-spa-app-registration) to configure your app registration for the browser. + - Note down the client Id from the previous step and use it in the browser sample below. ##### Sample code -See https://github.com/Azure/ms-rest-browserauth to learn how to authenticate to Azure in the browser. - - index.html + ```html @azure/arm-avs sample - - + diff --git a/sdk/avs/arm-avs/package.json b/sdk/avs/arm-avs/package.json index 521973d8e7d5..9c5754bc7f3c 100644 --- a/sdk/avs/arm-avs/package.json +++ b/sdk/avs/arm-avs/package.json @@ -2,10 +2,11 @@ "name": "@azure/arm-avs", "author": "Microsoft Corporation", "description": "AvsClient Library with typescript type definitions for node.js and browser.", - "version": "1.0.0", + "version": "1.1.0", "dependencies": { - "@azure/ms-rest-azure-js": "^2.0.1", - "@azure/ms-rest-js": "^2.0.4", + "@azure/ms-rest-azure-js": "^2.1.0", + "@azure/ms-rest-js": "^2.2.0", + "@azure/core-auth": "^1.1.4", "tslib": "^1.10.0" }, "keywords": [ @@ -20,7 +21,7 @@ "module": "./esm/avsClient.js", "types": "./esm/avsClient.d.ts", "devDependencies": { - "typescript": "^3.5.3", + "typescript": "^3.6.0", "rollup": "^1.18.0", "rollup-plugin-node-resolve": "^5.2.0", "rollup-plugin-sourcemaps": "^0.4.2", diff --git a/sdk/avs/arm-avs/src/avsClient.ts b/sdk/avs/arm-avs/src/avsClient.ts index ddc844d84920..3b2edc265a44 100644 --- a/sdk/avs/arm-avs/src/avsClient.ts +++ b/sdk/avs/arm-avs/src/avsClient.ts @@ -9,6 +9,7 @@ */ import * as msRest from "@azure/ms-rest-js"; +import { TokenCredential } from "@azure/core-auth"; import * as Models from "./models"; import * as Mappers from "./models/mappers"; import * as operations from "./operations"; @@ -26,11 +27,16 @@ class AvsClient extends AvsClientContext { /** * Initializes a new instance of the AvsClient class. - * @param credentials Credentials needed for the client to connect to Azure. + * @param credentials Credentials needed for the client to connect to Azure. Credentials + * implementing the TokenCredential interface from the @azure/identity package are recommended. For + * more information about these credentials, see + * {@link https://www.npmjs.com/package/@azure/identity}. Credentials implementing the + * ServiceClientCredentials interface from the older packages @azure/ms-rest-nodeauth and + * @azure/ms-rest-browserauth are also supported. * @param subscriptionId The ID of the target subscription. * @param [options] The parameter options */ - constructor(credentials: msRest.ServiceClientCredentials, subscriptionId: string, options?: Models.AvsClientOptions) { + constructor(credentials: msRest.ServiceClientCredentials | TokenCredential, subscriptionId: string, options?: Models.AvsClientOptions) { super(credentials, subscriptionId, options); this.operations = new operations.Operations(this); this.locations = new operations.Locations(this); diff --git a/sdk/avs/arm-avs/src/avsClientContext.ts b/sdk/avs/arm-avs/src/avsClientContext.ts index 3acb23a12a89..03dceb2252d3 100644 --- a/sdk/avs/arm-avs/src/avsClientContext.ts +++ b/sdk/avs/arm-avs/src/avsClientContext.ts @@ -10,23 +10,29 @@ import * as Models from "./models"; import * as msRest from "@azure/ms-rest-js"; +import { TokenCredential } from "@azure/core-auth"; import * as msRestAzure from "@azure/ms-rest-azure-js"; const packageName = "@azure/arm-avs"; -const packageVersion = "1.0.0"; +const packageVersion = "1.1.0"; export class AvsClientContext extends msRestAzure.AzureServiceClient { - credentials: msRest.ServiceClientCredentials; + credentials: msRest.ServiceClientCredentials | TokenCredential; apiVersion?: string; subscriptionId: string; /** * Initializes a new instance of the AvsClient class. - * @param credentials Credentials needed for the client to connect to Azure. + * @param credentials Credentials needed for the client to connect to Azure. Credentials + * implementing the TokenCredential interface from the @azure/identity package are recommended. For + * more information about these credentials, see + * {@link https://www.npmjs.com/package/@azure/identity}. Credentials implementing the + * ServiceClientCredentials interface from the older packages @azure/ms-rest-nodeauth and + * @azure/ms-rest-browserauth are also supported. * @param subscriptionId The ID of the target subscription. * @param [options] The parameter options */ - constructor(credentials: msRest.ServiceClientCredentials, subscriptionId: string, options?: Models.AvsClientOptions) { + constructor(credentials: msRest.ServiceClientCredentials | TokenCredential, subscriptionId: string, options?: Models.AvsClientOptions) { if (credentials == undefined) { throw new Error('\'credentials\' cannot be null.'); } diff --git a/sdk/azurestack/arm-azurestack/README.md b/sdk/azurestack/arm-azurestack/README.md index 65e5624b65d3..2ccdfc94ebd0 100644 --- a/sdk/azurestack/arm-azurestack/README.md +++ b/sdk/azurestack/arm-azurestack/README.md @@ -1,90 +1,100 @@ ## Azure AzureStackManagementClient SDK for JavaScript -This package contains an isomorphic SDK for AzureStackManagementClient. +This package contains an isomorphic SDK (runs both in Node.js and in browsers) for AzureStackManagementClient. ### Currently supported environments -- Node.js version 6.x.x or higher -- Browser JavaScript +- [LTS versions of Node.js](https://nodejs.org/about/releases/) +- Latest versions of Safari, Chrome, Edge, and Firefox. -### How to Install +### Prerequisites +You must have an [Azure subscription](https://azure.microsoft.com/free/). + +### How to install + +To use this SDK in your project, you will need to install two packages. +- `@azure/arm-azurestack` that contains the client. +- `@azure/identity` that provides different mechanisms for the client to authenticate your requests using Azure Active Directory. + +Install both packages using the below command: ```bash -npm install @azure/arm-azurestack +npm install --save @azure/arm-azurestack @azure/identity ``` +> **Note**: You may have used either `@azure/ms-rest-nodeauth` or `@azure/ms-rest-browserauth` in the past. These packages are in maintenance mode receiving critical bug fixes, but no new features. +If you are on a [Node.js that has LTS status](https://nodejs.org/about/releases/), or are writing a client side browser application, we strongly encourage you to upgrade to `@azure/identity` which uses the latest versions of Azure Active Directory and MSAL APIs and provides more authentication options. + ### How to use -#### nodejs - Authentication, client creation and list operations as an example written in TypeScript. +- If you are writing a client side browser application, + - Follow the instructions in the section on Authenticating client side browser applications in [Azure Identity examples](https://aka.ms/azsdk/js/identity/examples) to register your application in the Microsoft identity platform and set the right permissions. + - Copy the client ID and tenant ID from the Overview section of your app registration in Azure portal and use it in the browser sample below. +- If you are writing a server side application, + - [Select a credential from `@azure/identity` based on the authentication method of your choice](https://aka.ms/azsdk/js/identity/examples) + - Complete the set up steps required by the credential if any. + - Use the credential you picked in the place of `DefaultAzureCredential` in the Node.js sample below. -##### Install @azure/ms-rest-nodeauth +In the below samples, we pass the credential and the Azure subscription id to instantiate the client. +Once the client is created, explore the operations on it either in your favorite editor or in our [API reference documentation](https://docs.microsoft.com/javascript/api) to get started. -- Please install minimum version of `"@azure/ms-rest-nodeauth": "^3.0.0"`. -```bash -npm install @azure/ms-rest-nodeauth@"^3.0.0" -``` +#### nodejs - Authentication, client creation, and list operations as an example written in JavaScript. ##### Sample code -```typescript -import * as msRest from "@azure/ms-rest-js"; -import * as msRestAzure from "@azure/ms-rest-azure-js"; -import * as msRestNodeAuth from "@azure/ms-rest-nodeauth"; -import { AzureStackManagementClient, AzureStackManagementModels, AzureStackManagementMappers } from "@azure/arm-azurestack"; +```javascript +const { DefaultAzureCredential } = require("@azure/identity"); +const { AzureStackManagementClient } = require("@azure/arm-azurestack"); const subscriptionId = process.env["AZURE_SUBSCRIPTION_ID"]; -msRestNodeAuth.interactiveLogin().then((creds) => { - const client = new AzureStackManagementClient(creds, subscriptionId); - client.operations.list().then((result) => { - console.log("The result is:"); - console.log(result); - }); +// Use `DefaultAzureCredential` or any other credential of your choice based on https://aka.ms/azsdk/js/identity/examples +// Please note that you can also use credentials from the `@azure/ms-rest-nodeauth` package instead. +const creds = new DefaultAzureCredential(); +const client = new AzureStackManagementClient(creds, subscriptionId); + +client.operations.list().then((result) => { + console.log("The result is:"); + console.log(result); }).catch((err) => { + console.log("An error occurred:"); console.error(err); }); ``` -#### browser - Authentication, client creation and list operations as an example written in JavaScript. - -##### Install @azure/ms-rest-browserauth +#### browser - Authentication, client creation, and list operations as an example written in JavaScript. -```bash -npm install @azure/ms-rest-browserauth -``` +In browser applications, we recommend using the `InteractiveBrowserCredential` that interactively authenticates using the default system browser. + - See [Single-page application: App registration guide](https://docs.microsoft.com/azure/active-directory/develop/scenario-spa-app-registration) to configure your app registration for the browser. + - Note down the client Id from the previous step and use it in the browser sample below. ##### Sample code -See https://github.com/Azure/ms-rest-browserauth to learn how to authenticate to Azure in the browser. - - index.html + ```html @azure/arm-azurestack sample - - + diff --git a/sdk/azurestack/arm-azurestack/package.json b/sdk/azurestack/arm-azurestack/package.json index 10036d2a7aec..8e8e7384f0d9 100644 --- a/sdk/azurestack/arm-azurestack/package.json +++ b/sdk/azurestack/arm-azurestack/package.json @@ -2,10 +2,11 @@ "name": "@azure/arm-azurestack", "author": "Microsoft Corporation", "description": "AzureStackManagementClient Library with typescript type definitions for node.js and browser.", - "version": "2.0.0", + "version": "2.1.0", "dependencies": { - "@azure/ms-rest-azure-js": "^2.0.1", - "@azure/ms-rest-js": "^2.0.4", + "@azure/ms-rest-azure-js": "^2.1.0", + "@azure/ms-rest-js": "^2.2.0", + "@azure/core-auth": "^1.1.4", "tslib": "^1.10.0" }, "keywords": [ @@ -20,7 +21,7 @@ "module": "./esm/azureStackManagementClient.js", "types": "./esm/azureStackManagementClient.d.ts", "devDependencies": { - "typescript": "^3.5.3", + "typescript": "^3.6.0", "rollup": "^1.18.0", "rollup-plugin-node-resolve": "^5.2.0", "rollup-plugin-sourcemaps": "^0.4.2", diff --git a/sdk/azurestack/arm-azurestack/src/azureStackManagementClient.ts b/sdk/azurestack/arm-azurestack/src/azureStackManagementClient.ts index 04f21ebf7bfd..1e8337f77e14 100644 --- a/sdk/azurestack/arm-azurestack/src/azureStackManagementClient.ts +++ b/sdk/azurestack/arm-azurestack/src/azureStackManagementClient.ts @@ -9,6 +9,7 @@ */ import * as msRest from "@azure/ms-rest-js"; +import { TokenCredential } from "@azure/core-auth"; import * as Models from "./models"; import * as Mappers from "./models/mappers"; import * as operations from "./operations"; @@ -24,12 +25,17 @@ class AzureStackManagementClient extends AzureStackManagementClientContext { /** * Initializes a new instance of the AzureStackManagementClient class. - * @param credentials Credentials needed for the client to connect to Azure. + * @param credentials Credentials needed for the client to connect to Azure. Credentials + * implementing the TokenCredential interface from the @azure/identity package are recommended. For + * more information about these credentials, see + * {@link https://www.npmjs.com/package/@azure/identity}. Credentials implementing the + * ServiceClientCredentials interface from the older packages @azure/ms-rest-nodeauth and + * @azure/ms-rest-browserauth are also supported. * @param subscriptionId Subscription credentials that uniquely identify Microsoft Azure * subscription. The subscription ID forms part of the URI for every service call. * @param [options] The parameter options */ - constructor(credentials: msRest.ServiceClientCredentials, subscriptionId: string, options?: Models.AzureStackManagementClientOptions) { + constructor(credentials: msRest.ServiceClientCredentials | TokenCredential, subscriptionId: string, options?: Models.AzureStackManagementClientOptions) { super(credentials, subscriptionId, options); this.operations = new operations.Operations(this); this.products = new operations.Products(this); diff --git a/sdk/azurestack/arm-azurestack/src/azureStackManagementClientContext.ts b/sdk/azurestack/arm-azurestack/src/azureStackManagementClientContext.ts index 1af43d53f712..156bc37d3bc5 100644 --- a/sdk/azurestack/arm-azurestack/src/azureStackManagementClientContext.ts +++ b/sdk/azurestack/arm-azurestack/src/azureStackManagementClientContext.ts @@ -10,24 +10,30 @@ import * as Models from "./models"; import * as msRest from "@azure/ms-rest-js"; +import { TokenCredential } from "@azure/core-auth"; import * as msRestAzure from "@azure/ms-rest-azure-js"; const packageName = "@azure/arm-azurestack"; -const packageVersion = "2.0.0"; +const packageVersion = "2.1.0"; export class AzureStackManagementClientContext extends msRestAzure.AzureServiceClient { - credentials: msRest.ServiceClientCredentials; + credentials: msRest.ServiceClientCredentials | TokenCredential; subscriptionId: string; apiVersion?: string; /** * Initializes a new instance of the AzureStackManagementClient class. - * @param credentials Credentials needed for the client to connect to Azure. + * @param credentials Credentials needed for the client to connect to Azure. Credentials + * implementing the TokenCredential interface from the @azure/identity package are recommended. For + * more information about these credentials, see + * {@link https://www.npmjs.com/package/@azure/identity}. Credentials implementing the + * ServiceClientCredentials interface from the older packages @azure/ms-rest-nodeauth and + * @azure/ms-rest-browserauth are also supported. * @param subscriptionId Subscription credentials that uniquely identify Microsoft Azure * subscription. The subscription ID forms part of the URI for every service call. * @param [options] The parameter options */ - constructor(credentials: msRest.ServiceClientCredentials, subscriptionId: string, options?: Models.AzureStackManagementClientOptions) { + constructor(credentials: msRest.ServiceClientCredentials | TokenCredential, subscriptionId: string, options?: Models.AzureStackManagementClientOptions) { if (credentials == undefined) { throw new Error('\'credentials\' cannot be null.'); } diff --git a/sdk/azurestackhci/arm-azurestackhci/README.md b/sdk/azurestackhci/arm-azurestackhci/README.md index 54ed8d33c65a..13116bde073e 100644 --- a/sdk/azurestackhci/arm-azurestackhci/README.md +++ b/sdk/azurestackhci/arm-azurestackhci/README.md @@ -1,90 +1,100 @@ ## Azure AzureStackHCIClient SDK for JavaScript -This package contains an isomorphic SDK for AzureStackHCIClient. +This package contains an isomorphic SDK (runs both in Node.js and in browsers) for AzureStackHCIClient. ### Currently supported environments -- Node.js version 6.x.x or higher -- Browser JavaScript +- [LTS versions of Node.js](https://nodejs.org/about/releases/) +- Latest versions of Safari, Chrome, Edge, and Firefox. -### How to Install +### Prerequisites +You must have an [Azure subscription](https://azure.microsoft.com/free/). + +### How to install + +To use this SDK in your project, you will need to install two packages. +- `@azure/arm-azurestackhci` that contains the client. +- `@azure/identity` that provides different mechanisms for the client to authenticate your requests using Azure Active Directory. + +Install both packages using the below command: ```bash -npm install @azure/arm-azurestackhci +npm install --save @azure/arm-azurestackhci @azure/identity ``` +> **Note**: You may have used either `@azure/ms-rest-nodeauth` or `@azure/ms-rest-browserauth` in the past. These packages are in maintenance mode receiving critical bug fixes, but no new features. +If you are on a [Node.js that has LTS status](https://nodejs.org/about/releases/), or are writing a client side browser application, we strongly encourage you to upgrade to `@azure/identity` which uses the latest versions of Azure Active Directory and MSAL APIs and provides more authentication options. + ### How to use -#### nodejs - Authentication, client creation and list operations as an example written in TypeScript. +- If you are writing a client side browser application, + - Follow the instructions in the section on Authenticating client side browser applications in [Azure Identity examples](https://aka.ms/azsdk/js/identity/examples) to register your application in the Microsoft identity platform and set the right permissions. + - Copy the client ID and tenant ID from the Overview section of your app registration in Azure portal and use it in the browser sample below. +- If you are writing a server side application, + - [Select a credential from `@azure/identity` based on the authentication method of your choice](https://aka.ms/azsdk/js/identity/examples) + - Complete the set up steps required by the credential if any. + - Use the credential you picked in the place of `DefaultAzureCredential` in the Node.js sample below. -##### Install @azure/ms-rest-nodeauth +In the below samples, we pass the credential and the Azure subscription id to instantiate the client. +Once the client is created, explore the operations on it either in your favorite editor or in our [API reference documentation](https://docs.microsoft.com/javascript/api) to get started. -- Please install minimum version of `"@azure/ms-rest-nodeauth": "^3.0.0"`. -```bash -npm install @azure/ms-rest-nodeauth@"^3.0.0" -``` +#### nodejs - Authentication, client creation, and list operations as an example written in JavaScript. ##### Sample code -```typescript -import * as msRest from "@azure/ms-rest-js"; -import * as msRestAzure from "@azure/ms-rest-azure-js"; -import * as msRestNodeAuth from "@azure/ms-rest-nodeauth"; -import { AzureStackHCIClient, AzureStackHCIModels, AzureStackHCIMappers } from "@azure/arm-azurestackhci"; +```javascript +const { DefaultAzureCredential } = require("@azure/identity"); +const { AzureStackHCIClient } = require("@azure/arm-azurestackhci"); const subscriptionId = process.env["AZURE_SUBSCRIPTION_ID"]; -msRestNodeAuth.interactiveLogin().then((creds) => { - const client = new AzureStackHCIClient(creds, subscriptionId); - client.operations.list().then((result) => { - console.log("The result is:"); - console.log(result); - }); +// Use `DefaultAzureCredential` or any other credential of your choice based on https://aka.ms/azsdk/js/identity/examples +// Please note that you can also use credentials from the `@azure/ms-rest-nodeauth` package instead. +const creds = new DefaultAzureCredential(); +const client = new AzureStackHCIClient(creds, subscriptionId); + +client.operations.list().then((result) => { + console.log("The result is:"); + console.log(result); }).catch((err) => { + console.log("An error occurred:"); console.error(err); }); ``` -#### browser - Authentication, client creation and list operations as an example written in JavaScript. - -##### Install @azure/ms-rest-browserauth +#### browser - Authentication, client creation, and list operations as an example written in JavaScript. -```bash -npm install @azure/ms-rest-browserauth -``` +In browser applications, we recommend using the `InteractiveBrowserCredential` that interactively authenticates using the default system browser. + - See [Single-page application: App registration guide](https://docs.microsoft.com/azure/active-directory/develop/scenario-spa-app-registration) to configure your app registration for the browser. + - Note down the client Id from the previous step and use it in the browser sample below. ##### Sample code -See https://github.com/Azure/ms-rest-browserauth to learn how to authenticate to Azure in the browser. - - index.html + ```html @azure/arm-azurestackhci sample - - + diff --git a/sdk/azurestackhci/arm-azurestackhci/package.json b/sdk/azurestackhci/arm-azurestackhci/package.json index 95df5ac728c2..1406e3a30a9a 100644 --- a/sdk/azurestackhci/arm-azurestackhci/package.json +++ b/sdk/azurestackhci/arm-azurestackhci/package.json @@ -2,10 +2,11 @@ "name": "@azure/arm-azurestackhci", "author": "Microsoft Corporation", "description": "AzureStackHCIClient Library with typescript type definitions for node.js and browser.", - "version": "1.0.0", + "version": "1.1.0", "dependencies": { - "@azure/ms-rest-azure-js": "^2.0.1", - "@azure/ms-rest-js": "^2.0.4", + "@azure/ms-rest-azure-js": "^2.1.0", + "@azure/ms-rest-js": "^2.2.0", + "@azure/core-auth": "^1.1.4", "tslib": "^1.10.0" }, "keywords": [ @@ -20,7 +21,7 @@ "module": "./esm/azureStackHCIClient.js", "types": "./esm/azureStackHCIClient.d.ts", "devDependencies": { - "typescript": "^3.5.3", + "typescript": "^3.6.0", "rollup": "^1.18.0", "rollup-plugin-node-resolve": "^5.2.0", "rollup-plugin-sourcemaps": "^0.4.2", diff --git a/sdk/azurestackhci/arm-azurestackhci/src/azureStackHCIClient.ts b/sdk/azurestackhci/arm-azurestackhci/src/azureStackHCIClient.ts index 1d411dcbd664..d4f586397e73 100644 --- a/sdk/azurestackhci/arm-azurestackhci/src/azureStackHCIClient.ts +++ b/sdk/azurestackhci/arm-azurestackhci/src/azureStackHCIClient.ts @@ -9,6 +9,7 @@ */ import * as msRest from "@azure/ms-rest-js"; +import { TokenCredential } from "@azure/core-auth"; import * as Models from "./models"; import * as Mappers from "./models/mappers"; import * as operations from "./operations"; @@ -22,11 +23,16 @@ class AzureStackHCIClient extends AzureStackHCIClientContext { /** * Initializes a new instance of the AzureStackHCIClient class. - * @param credentials Credentials needed for the client to connect to Azure. + * @param credentials Credentials needed for the client to connect to Azure. Credentials + * implementing the TokenCredential interface from the @azure/identity package are recommended. For + * more information about these credentials, see + * {@link https://www.npmjs.com/package/@azure/identity}. Credentials implementing the + * ServiceClientCredentials interface from the older packages @azure/ms-rest-nodeauth and + * @azure/ms-rest-browserauth are also supported. * @param subscriptionId The ID of the target subscription. * @param [options] The parameter options */ - constructor(credentials: msRest.ServiceClientCredentials, subscriptionId: string, options?: Models.AzureStackHCIClientOptions) { + constructor(credentials: msRest.ServiceClientCredentials | TokenCredential, subscriptionId: string, options?: Models.AzureStackHCIClientOptions) { super(credentials, subscriptionId, options); this.operations = new operations.Operations(this); this.clusters = new operations.Clusters(this); diff --git a/sdk/azurestackhci/arm-azurestackhci/src/azureStackHCIClientContext.ts b/sdk/azurestackhci/arm-azurestackhci/src/azureStackHCIClientContext.ts index b820335844ca..6a541775ad3f 100644 --- a/sdk/azurestackhci/arm-azurestackhci/src/azureStackHCIClientContext.ts +++ b/sdk/azurestackhci/arm-azurestackhci/src/azureStackHCIClientContext.ts @@ -10,23 +10,29 @@ import * as Models from "./models"; import * as msRest from "@azure/ms-rest-js"; +import { TokenCredential } from "@azure/core-auth"; import * as msRestAzure from "@azure/ms-rest-azure-js"; const packageName = "@azure/arm-azurestackhci"; -const packageVersion = "1.0.0"; +const packageVersion = "1.1.0"; export class AzureStackHCIClientContext extends msRestAzure.AzureServiceClient { - credentials: msRest.ServiceClientCredentials; + credentials: msRest.ServiceClientCredentials | TokenCredential; apiVersion?: string; subscriptionId: string; /** * Initializes a new instance of the AzureStackHCIClient class. - * @param credentials Credentials needed for the client to connect to Azure. + * @param credentials Credentials needed for the client to connect to Azure. Credentials + * implementing the TokenCredential interface from the @azure/identity package are recommended. For + * more information about these credentials, see + * {@link https://www.npmjs.com/package/@azure/identity}. Credentials implementing the + * ServiceClientCredentials interface from the older packages @azure/ms-rest-nodeauth and + * @azure/ms-rest-browserauth are also supported. * @param subscriptionId The ID of the target subscription. * @param [options] The parameter options */ - constructor(credentials: msRest.ServiceClientCredentials, subscriptionId: string, options?: Models.AzureStackHCIClientOptions) { + constructor(credentials: msRest.ServiceClientCredentials | TokenCredential, subscriptionId: string, options?: Models.AzureStackHCIClientOptions) { if (credentials == undefined) { throw new Error('\'credentials\' cannot be null.'); } diff --git a/sdk/batch/arm-batch/README.md b/sdk/batch/arm-batch/README.md index 9347522bf353..7b0d748b036c 100644 --- a/sdk/batch/arm-batch/README.md +++ b/sdk/batch/arm-batch/README.md @@ -1,94 +1,103 @@ ## Azure BatchManagementClient SDK for JavaScript -This package contains an isomorphic SDK for BatchManagementClient. +This package contains an isomorphic SDK (runs both in Node.js and in browsers) for BatchManagementClient. ### Currently supported environments -- Node.js version 6.x.x or higher -- Browser JavaScript +- [LTS versions of Node.js](https://nodejs.org/about/releases/) +- Latest versions of Safari, Chrome, Edge, and Firefox. -### How to Install +### Prerequisites +You must have an [Azure subscription](https://azure.microsoft.com/free/). + +### How to install + +To use this SDK in your project, you will need to install two packages. +- `@azure/arm-batch` that contains the client. +- `@azure/identity` that provides different mechanisms for the client to authenticate your requests using Azure Active Directory. + +Install both packages using the below command: ```bash -npm install @azure/arm-batch +npm install --save @azure/arm-batch @azure/identity ``` +> **Note**: You may have used either `@azure/ms-rest-nodeauth` or `@azure/ms-rest-browserauth` in the past. These packages are in maintenance mode receiving critical bug fixes, but no new features. +If you are on a [Node.js that has LTS status](https://nodejs.org/about/releases/), or are writing a client side browser application, we strongly encourage you to upgrade to `@azure/identity` which uses the latest versions of Azure Active Directory and MSAL APIs and provides more authentication options. + ### How to use -#### nodejs - Authentication, client creation and get batchAccount as an example written in TypeScript. +- If you are writing a client side browser application, + - Follow the instructions in the section on Authenticating client side browser applications in [Azure Identity examples](https://aka.ms/azsdk/js/identity/examples) to register your application in the Microsoft identity platform and set the right permissions. + - Copy the client ID and tenant ID from the Overview section of your app registration in Azure portal and use it in the browser sample below. +- If you are writing a server side application, + - [Select a credential from `@azure/identity` based on the authentication method of your choice](https://aka.ms/azsdk/js/identity/examples) + - Complete the set up steps required by the credential if any. + - Use the credential you picked in the place of `DefaultAzureCredential` in the Node.js sample below. -##### Install @azure/ms-rest-nodeauth +In the below samples, we pass the credential and the Azure subscription id to instantiate the client. +Once the client is created, explore the operations on it either in your favorite editor or in our [API reference documentation](https://docs.microsoft.com/javascript/api) to get started. -- Please install minimum version of `"@azure/ms-rest-nodeauth": "^3.0.0"`. -```bash -npm install @azure/ms-rest-nodeauth@"^3.0.0" -``` +#### nodejs - Authentication, client creation, and get batchAccount as an example written in JavaScript. ##### Sample code -```typescript -import * as msRest from "@azure/ms-rest-js"; -import * as msRestAzure from "@azure/ms-rest-azure-js"; -import * as msRestNodeAuth from "@azure/ms-rest-nodeauth"; -import { BatchManagementClient, BatchManagementModels, BatchManagementMappers } from "@azure/arm-batch"; +```javascript +const { DefaultAzureCredential } = require("@azure/identity"); +const { BatchManagementClient } = require("@azure/arm-batch"); const subscriptionId = process.env["AZURE_SUBSCRIPTION_ID"]; -msRestNodeAuth.interactiveLogin().then((creds) => { - const client = new BatchManagementClient(creds, subscriptionId); - const resourceGroupName = "testresourceGroupName"; - const accountName = "testaccountName"; - client.batchAccount.get(resourceGroupName, accountName).then((result) => { - console.log("The result is:"); - console.log(result); - }); +// Use `DefaultAzureCredential` or any other credential of your choice based on https://aka.ms/azsdk/js/identity/examples +// Please note that you can also use credentials from the `@azure/ms-rest-nodeauth` package instead. +const creds = new DefaultAzureCredential(); +const client = new BatchManagementClient(creds, subscriptionId); +const resourceGroupName = "testresourceGroupName"; +const accountName = "testaccountName"; +client.batchAccount.get(resourceGroupName, accountName).then((result) => { + console.log("The result is:"); + console.log(result); }).catch((err) => { + console.log("An error occurred:"); console.error(err); }); ``` -#### browser - Authentication, client creation and get batchAccount as an example written in JavaScript. +#### browser - Authentication, client creation, and get batchAccount as an example written in JavaScript. -##### Install @azure/ms-rest-browserauth - -```bash -npm install @azure/ms-rest-browserauth -``` +In browser applications, we recommend using the `InteractiveBrowserCredential` that interactively authenticates using the default system browser. + - See [Single-page application: App registration guide](https://docs.microsoft.com/azure/active-directory/develop/scenario-spa-app-registration) to configure your app registration for the browser. + - Note down the client Id from the previous step and use it in the browser sample below. ##### Sample code -See https://github.com/Azure/ms-rest-browserauth to learn how to authenticate to Azure in the browser. - - index.html + ```html @azure/arm-batch sample - - + @@ -100,4 +109,4 @@ See https://github.com/Azure/ms-rest-browserauth to learn how to authenticate to - [Microsoft Azure SDK for Javascript](https://github.com/Azure/azure-sdk-for-js) -![Impressions](https://azure-sdk-impressions.azurewebsites.net/api/impressions/azure-sdk-for-js/sdk/README.png) +![Impressions](https://azure-sdk-impressions.azurewebsites.net/api/impressions/azure-sdk-for-js/sdk/batch/arm-batch/README.png) diff --git a/sdk/batch/arm-batch/package.json b/sdk/batch/arm-batch/package.json index de26495de767..25147b040606 100644 --- a/sdk/batch/arm-batch/package.json +++ b/sdk/batch/arm-batch/package.json @@ -2,10 +2,11 @@ "name": "@azure/arm-batch", "author": "Microsoft Corporation", "description": "BatchManagementClient Library with typescript type definitions for node.js and browser.", - "version": "5.0.0", + "version": "5.1.0", "dependencies": { - "@azure/ms-rest-azure-js": "^2.0.1", - "@azure/ms-rest-js": "^2.0.4", + "@azure/ms-rest-azure-js": "^2.1.0", + "@azure/ms-rest-js": "^2.2.0", + "@azure/core-auth": "^1.1.4", "tslib": "^2.0.0" }, "keywords": [ @@ -31,7 +32,7 @@ "rollup-plugin-sourcemaps": "^0.4.2", "esm": "^3.2.25", "ts-node": "^8.3.0", - "typescript": "~3.9.3", + "typescript": "^3.6.0", "uglify-js": "^3.4.9" }, "homepage": "https://github.com/Azure/azure-sdk-for-js", diff --git a/sdk/batch/arm-batch/src/batchManagementClient.ts b/sdk/batch/arm-batch/src/batchManagementClient.ts index e5c88e5186c8..f59a410fc6ff 100644 --- a/sdk/batch/arm-batch/src/batchManagementClient.ts +++ b/sdk/batch/arm-batch/src/batchManagementClient.ts @@ -9,6 +9,7 @@ */ import * as msRest from "@azure/ms-rest-js"; +import { TokenCredential } from "@azure/core-auth"; import * as Models from "./models"; import * as Mappers from "./models/mappers"; import * as operations from "./operations"; @@ -29,12 +30,17 @@ class BatchManagementClient extends BatchManagementClientContext { /** * Initializes a new instance of the BatchManagementClient class. - * @param credentials Credentials needed for the client to connect to Azure. + * @param credentials Credentials needed for the client to connect to Azure. Credentials + * implementing the TokenCredential interface from the @azure/identity package are recommended. For + * more information about these credentials, see + * {@link https://www.npmjs.com/package/@azure/identity}. Credentials implementing the + * ServiceClientCredentials interface from the older packages @azure/ms-rest-nodeauth and + * @azure/ms-rest-browserauth are also supported. * @param subscriptionId The Azure subscription ID. This is a GUID-formatted string (e.g. * 00000000-0000-0000-0000-000000000000) * @param [options] The parameter options */ - constructor(credentials: msRest.ServiceClientCredentials, subscriptionId: string, options?: Models.BatchManagementClientOptions) { + constructor(credentials: msRest.ServiceClientCredentials | TokenCredential, subscriptionId: string, options?: Models.BatchManagementClientOptions) { super(credentials, subscriptionId, options); this.batchAccount = new operations.BatchAccountOperations(this); this.applicationPackage = new operations.ApplicationPackageOperations(this); diff --git a/sdk/batch/arm-batch/src/batchManagementClientContext.ts b/sdk/batch/arm-batch/src/batchManagementClientContext.ts index 239857a63782..c24d567fca56 100644 --- a/sdk/batch/arm-batch/src/batchManagementClientContext.ts +++ b/sdk/batch/arm-batch/src/batchManagementClientContext.ts @@ -10,24 +10,30 @@ import * as Models from "./models"; import * as msRest from "@azure/ms-rest-js"; +import { TokenCredential } from "@azure/core-auth"; import * as msRestAzure from "@azure/ms-rest-azure-js"; const packageName = "@azure/arm-batch"; -const packageVersion = "5.0.0"; +const packageVersion = "5.1.0"; export class BatchManagementClientContext extends msRestAzure.AzureServiceClient { - credentials: msRest.ServiceClientCredentials; + credentials: msRest.ServiceClientCredentials | TokenCredential; subscriptionId: string; apiVersion?: string; /** * Initializes a new instance of the BatchManagementClient class. - * @param credentials Credentials needed for the client to connect to Azure. + * @param credentials Credentials needed for the client to connect to Azure. Credentials + * implementing the TokenCredential interface from the @azure/identity package are recommended. For + * more information about these credentials, see + * {@link https://www.npmjs.com/package/@azure/identity}. Credentials implementing the + * ServiceClientCredentials interface from the older packages @azure/ms-rest-nodeauth and + * @azure/ms-rest-browserauth are also supported. * @param subscriptionId The Azure subscription ID. This is a GUID-formatted string (e.g. * 00000000-0000-0000-0000-000000000000) * @param [options] The parameter options */ - constructor(credentials: msRest.ServiceClientCredentials, subscriptionId: string, options?: Models.BatchManagementClientOptions) { + constructor(credentials: msRest.ServiceClientCredentials | TokenCredential, subscriptionId: string, options?: Models.BatchManagementClientOptions) { if (credentials == undefined) { throw new Error('\'credentials\' cannot be null.'); } diff --git a/sdk/batchai/arm-batchai/README.md b/sdk/batchai/arm-batchai/README.md index ce22680e07c2..8347ce03ac77 100644 --- a/sdk/batchai/arm-batchai/README.md +++ b/sdk/batchai/arm-batchai/README.md @@ -1,89 +1,100 @@ ## Azure BatchAIManagementClient SDK for JavaScript -This package contains an isomorphic SDK for BatchAIManagementClient. +This package contains an isomorphic SDK (runs both in Node.js and in browsers) for BatchAIManagementClient. ### Currently supported environments -- Node.js version 6.x.x or higher -- Browser JavaScript +- [LTS versions of Node.js](https://nodejs.org/about/releases/) +- Latest versions of Safari, Chrome, Edge, and Firefox. -### How to Install +### Prerequisites -``` -npm install @azure/arm-batchai +You must have an [Azure subscription](https://azure.microsoft.com/free/). + +### How to install + +To use this SDK in your project, you will need to install two packages. +- `@azure/arm-batchai` that contains the client. +- `@azure/identity` that provides different mechanisms for the client to authenticate your requests using Azure Active Directory. + +Install both packages using the below command: +```bash +npm install --save @azure/arm-batchai @azure/identity ``` +> **Note**: You may have used either `@azure/ms-rest-nodeauth` or `@azure/ms-rest-browserauth` in the past. These packages are in maintenance mode receiving critical bug fixes, but no new features. +If you are on a [Node.js that has LTS status](https://nodejs.org/about/releases/), or are writing a client side browser application, we strongly encourage you to upgrade to `@azure/identity` which uses the latest versions of Azure Active Directory and MSAL APIs and provides more authentication options. + ### How to use -#### nodejs - Authentication, client creation and list operations as an example written in TypeScript. +- If you are writing a client side browser application, + - Follow the instructions in the section on Authenticating client side browser applications in [Azure Identity examples](https://aka.ms/azsdk/js/identity/examples) to register your application in the Microsoft identity platform and set the right permissions. + - Copy the client ID and tenant ID from the Overview section of your app registration in Azure portal and use it in the browser sample below. +- If you are writing a server side application, + - [Select a credential from `@azure/identity` based on the authentication method of your choice](https://aka.ms/azsdk/js/identity/examples) + - Complete the set up steps required by the credential if any. + - Use the credential you picked in the place of `DefaultAzureCredential` in the Node.js sample below. -##### Install @azure/ms-rest-nodeauth +In the below samples, we pass the credential and the Azure subscription id to instantiate the client. +Once the client is created, explore the operations on it either in your favorite editor or in our [API reference documentation](https://docs.microsoft.com/javascript/api) to get started. -``` -npm install @azure/ms-rest-nodeauth -``` +#### nodejs - Authentication, client creation, and list operations as an example written in JavaScript. ##### Sample code -```ts -import * as msRest from "@azure/ms-rest-js"; -import * as msRestAzure from "@azure/ms-rest-azure-js"; -import * as msRestNodeAuth from "@azure/ms-rest-nodeauth"; -import { BatchAIManagementClient, BatchAIManagementModels, BatchAIManagementMappers } from "@azure/arm-batchai"; +```javascript +const { DefaultAzureCredential } = require("@azure/identity"); +const { BatchAIManagementClient } = require("@azure/arm-batchai"); const subscriptionId = process.env["AZURE_SUBSCRIPTION_ID"]; -msRestNodeAuth.interactiveLogin().then((creds) => { - const client = new BatchAIManagementClient(creds, subscriptionId); - client.operations.list().then((result) => { - console.log("The result is:"); - console.log(result); - }); +// Use `DefaultAzureCredential` or any other credential of your choice based on https://aka.ms/azsdk/js/identity/examples +// Please note that you can also use credentials from the `@azure/ms-rest-nodeauth` package instead. +const creds = new DefaultAzureCredential(); +const client = new BatchAIManagementClient(creds, subscriptionId); + +client.operations.list().then((result) => { + console.log("The result is:"); + console.log(result); }).catch((err) => { + console.log("An error occurred:"); console.error(err); }); ``` -#### browser - Authentication, client creation and list operations as an example written in JavaScript. - -##### Install @azure/ms-rest-browserauth +#### browser - Authentication, client creation, and list operations as an example written in JavaScript. -``` -npm install @azure/ms-rest-browserauth -``` +In browser applications, we recommend using the `InteractiveBrowserCredential` that interactively authenticates using the default system browser. + - See [Single-page application: App registration guide](https://docs.microsoft.com/azure/active-directory/develop/scenario-spa-app-registration) to configure your app registration for the browser. + - Note down the client Id from the previous step and use it in the browser sample below. ##### Sample code -See https://github.com/Azure/ms-rest-browserauth to learn how to authenticate to Azure in the browser. - - index.html + ```html @azure/arm-batchai sample - - + @@ -95,5 +106,4 @@ See https://github.com/Azure/ms-rest-browserauth to learn how to authenticate to - [Microsoft Azure SDK for Javascript](https://github.com/Azure/azure-sdk-for-js) - -![Impressions](https://azure-sdk-impressions.azurewebsites.net/api/impressions/azure-sdk-for-js%2Fsdk%2Fbatchai%2Farm-batchai%2FREADME.png) +![Impressions](https://azure-sdk-impressions.azurewebsites.net/api/impressions/azure-sdk-for-js/sdk/batchai/arm-batchai/README.png) diff --git a/sdk/batchai/arm-batchai/package.json b/sdk/batchai/arm-batchai/package.json index 89788a2a1fff..e33f70db0f1b 100644 --- a/sdk/batchai/arm-batchai/package.json +++ b/sdk/batchai/arm-batchai/package.json @@ -2,10 +2,11 @@ "name": "@azure/arm-batchai", "author": "Microsoft Corporation", "description": "BatchAIManagementClient Library with typescript type definitions for node.js and browser.", - "version": "2.1.0", + "version": "2.2.0", "dependencies": { - "@azure/ms-rest-azure-js": "^1.1.0", - "@azure/ms-rest-js": "^1.1.0", + "@azure/ms-rest-azure-js": "^1.4.0", + "@azure/ms-rest-js": "^1.11.0", + "@azure/core-auth": "^1.1.4", "tslib": "^1.9.3" }, "keywords": [ @@ -20,7 +21,7 @@ "module": "./esm/batchAIManagementClient.js", "types": "./esm/batchAIManagementClient.d.ts", "devDependencies": { - "typescript": "^3.1.1", + "typescript": "^3.6.0", "rollup": "^0.66.2", "rollup-plugin-node-resolve": "^3.4.0", "uglify-js": "^3.4.9" diff --git a/sdk/batchai/arm-batchai/src/batchAIManagementClient.ts b/sdk/batchai/arm-batchai/src/batchAIManagementClient.ts index c9af5d391f4d..aa440f6ece90 100644 --- a/sdk/batchai/arm-batchai/src/batchAIManagementClient.ts +++ b/sdk/batchai/arm-batchai/src/batchAIManagementClient.ts @@ -9,6 +9,7 @@ */ import * as msRest from "@azure/ms-rest-js"; +import { TokenCredential } from "@azure/core-auth"; import * as Models from "./models"; import * as Mappers from "./models/mappers"; import * as operations from "./operations"; @@ -27,11 +28,16 @@ class BatchAIManagementClient extends BatchAIManagementClientContext { /** * Initializes a new instance of the BatchAIManagementClient class. - * @param credentials Credentials needed for the client to connect to Azure. + * @param credentials Credentials needed for the client to connect to Azure. Credentials + * implementing the TokenCredential interface from the @azure/identity package are recommended. For + * more information about these credentials, see + * {@link https://www.npmjs.com/package/@azure/identity}. Credentials implementing the + * ServiceClientCredentials interface from the older packages @azure/ms-rest-nodeauth and + * @azure/ms-rest-browserauth are also supported. * @param subscriptionId The subscriptionID for the Azure user. * @param [options] The parameter options */ - constructor(credentials: msRest.ServiceClientCredentials, subscriptionId: string, options?: Models.BatchAIManagementClientOptions) { + constructor(credentials: msRest.ServiceClientCredentials | TokenCredential, subscriptionId: string, options?: Models.BatchAIManagementClientOptions) { super(credentials, subscriptionId, options); this.operations = new operations.Operations(this); this.usages = new operations.Usages(this); diff --git a/sdk/batchai/arm-batchai/src/batchAIManagementClientContext.ts b/sdk/batchai/arm-batchai/src/batchAIManagementClientContext.ts index ceeed0225f70..4631f2020a19 100644 --- a/sdk/batchai/arm-batchai/src/batchAIManagementClientContext.ts +++ b/sdk/batchai/arm-batchai/src/batchAIManagementClientContext.ts @@ -10,23 +10,29 @@ import * as Models from "./models"; import * as msRest from "@azure/ms-rest-js"; +import { TokenCredential } from "@azure/core-auth"; import * as msRestAzure from "@azure/ms-rest-azure-js"; const packageName = "@azure/arm-batchai"; -const packageVersion = "0.1.0"; +const packageVersion = "2.2.0"; export class BatchAIManagementClientContext extends msRestAzure.AzureServiceClient { - credentials: msRest.ServiceClientCredentials; + credentials: msRest.ServiceClientCredentials | TokenCredential; subscriptionId: string; apiVersion?: string; /** * Initializes a new instance of the BatchAIManagementClient class. - * @param credentials Credentials needed for the client to connect to Azure. + * @param credentials Credentials needed for the client to connect to Azure. Credentials + * implementing the TokenCredential interface from the @azure/identity package are recommended. For + * more information about these credentials, see + * {@link https://www.npmjs.com/package/@azure/identity}. Credentials implementing the + * ServiceClientCredentials interface from the older packages @azure/ms-rest-nodeauth and + * @azure/ms-rest-browserauth are also supported. * @param subscriptionId The subscriptionID for the Azure user. * @param [options] The parameter options */ - constructor(credentials: msRest.ServiceClientCredentials, subscriptionId: string, options?: Models.BatchAIManagementClientOptions) { + constructor(credentials: msRest.ServiceClientCredentials | TokenCredential, subscriptionId: string, options?: Models.BatchAIManagementClientOptions) { if (credentials == undefined) { throw new Error('\'credentials\' cannot be null.'); } diff --git a/sdk/billing/arm-billing/README.md b/sdk/billing/arm-billing/README.md index cd8267dc6804..1dcfe1a033a9 100644 --- a/sdk/billing/arm-billing/README.md +++ b/sdk/billing/arm-billing/README.md @@ -1,96 +1,101 @@ ## Azure BillingManagementClient SDK for JavaScript -This package contains an isomorphic SDK for BillingManagementClient. - -For more information about Billing: -* [Azure documentation](https://docs.microsoft.com/azure/cost-management-billing/) -* [SDK reference documentation](https://docs.microsoft.com/javascript/api/overview/azure/billing?view=azure-node-latest) +This package contains an isomorphic SDK (runs both in Node.js and in browsers) for BillingManagementClient. ### Currently supported environments -- Node.js version 6.x.x or higher -- Browser JavaScript +- [LTS versions of Node.js](https://nodejs.org/about/releases/) +- Latest versions of Safari, Chrome, Edge, and Firefox. + +### Prerequisites + +You must have an [Azure subscription](https://azure.microsoft.com/free/). -### How to Install +### How to install +To use this SDK in your project, you will need to install two packages. +- `@azure/arm-billing` that contains the client. +- `@azure/identity` that provides different mechanisms for the client to authenticate your requests using Azure Active Directory. + +Install both packages using the below command: ```bash -npm install @azure/arm-billing +npm install --save @azure/arm-billing @azure/identity ``` +> **Note**: You may have used either `@azure/ms-rest-nodeauth` or `@azure/ms-rest-browserauth` in the past. These packages are in maintenance mode receiving critical bug fixes, but no new features. +If you are on a [Node.js that has LTS status](https://nodejs.org/about/releases/), or are writing a client side browser application, we strongly encourage you to upgrade to `@azure/identity` which uses the latest versions of Azure Active Directory and MSAL APIs and provides more authentication options. + ### How to use -#### nodejs - Authentication, client creation and list billingAccounts as an example written in TypeScript. +- If you are writing a client side browser application, + - Follow the instructions in the section on Authenticating client side browser applications in [Azure Identity examples](https://aka.ms/azsdk/js/identity/examples) to register your application in the Microsoft identity platform and set the right permissions. + - Copy the client ID and tenant ID from the Overview section of your app registration in Azure portal and use it in the browser sample below. +- If you are writing a server side application, + - [Select a credential from `@azure/identity` based on the authentication method of your choice](https://aka.ms/azsdk/js/identity/examples) + - Complete the set up steps required by the credential if any. + - Use the credential you picked in the place of `DefaultAzureCredential` in the Node.js sample below. -##### Install @azure/ms-rest-nodeauth +In the below samples, we pass the credential and the Azure subscription id to instantiate the client. +Once the client is created, explore the operations on it either in your favorite editor or in our [API reference documentation](https://docs.microsoft.com/javascript/api) to get started. -- Please install minimum version of `"@azure/ms-rest-nodeauth": "^3.0.0"`. -```bash -npm install @azure/ms-rest-nodeauth@"^3.0.0" -``` +#### nodejs - Authentication, client creation, and list billingAccounts as an example written in JavaScript. ##### Sample code -```typescript -import * as msRest from "@azure/ms-rest-js"; -import * as msRestAzure from "@azure/ms-rest-azure-js"; -import * as msRestNodeAuth from "@azure/ms-rest-nodeauth"; -import { BillingManagementClient, BillingManagementModels, BillingManagementMappers } from "@azure/arm-billing"; +```javascript +const { DefaultAzureCredential } = require("@azure/identity"); +const { BillingManagementClient } = require("@azure/arm-billing"); const subscriptionId = process.env["AZURE_SUBSCRIPTION_ID"]; -msRestNodeAuth.interactiveLogin().then((creds) => { - const client = new BillingManagementClient(creds, subscriptionId); - const expand = "testexpand"; - client.billingAccounts.list(expand).then((result) => { - console.log("The result is:"); - console.log(result); - }); +// Use `DefaultAzureCredential` or any other credential of your choice based on https://aka.ms/azsdk/js/identity/examples +// Please note that you can also use credentials from the `@azure/ms-rest-nodeauth` package instead. +const creds = new DefaultAzureCredential(); +const client = new BillingManagementClient(creds, subscriptionId); +const expand = "testexpand"; +client.billingAccounts.list(expand).then((result) => { + console.log("The result is:"); + console.log(result); }).catch((err) => { + console.log("An error occurred:"); console.error(err); }); ``` -#### browser - Authentication, client creation and list billingAccounts as an example written in JavaScript. - -##### Install @azure/ms-rest-browserauth +#### browser - Authentication, client creation, and list billingAccounts as an example written in JavaScript. -```bash -npm install @azure/ms-rest-browserauth -``` +In browser applications, we recommend using the `InteractiveBrowserCredential` that interactively authenticates using the default system browser. + - See [Single-page application: App registration guide](https://docs.microsoft.com/azure/active-directory/develop/scenario-spa-app-registration) to configure your app registration for the browser. + - Note down the client Id from the previous step and use it in the browser sample below. ##### Sample code -See https://github.com/Azure/ms-rest-browserauth to learn how to authenticate to Azure in the browser. - - index.html + ```html @azure/arm-billing sample - - + diff --git a/sdk/billing/arm-billing/package.json b/sdk/billing/arm-billing/package.json index 2c12635400d2..60c50b6e29f5 100644 --- a/sdk/billing/arm-billing/package.json +++ b/sdk/billing/arm-billing/package.json @@ -2,10 +2,11 @@ "name": "@azure/arm-billing", "author": "Microsoft Corporation", "description": "BillingManagementClient Library with typescript type definitions for node.js and browser.", - "version": "3.0.0", + "version": "3.1.0", "dependencies": { - "@azure/ms-rest-azure-js": "^2.0.1", - "@azure/ms-rest-js": "^2.0.4", + "@azure/ms-rest-azure-js": "^2.1.0", + "@azure/ms-rest-js": "^2.2.0", + "@azure/core-auth": "^1.1.4", "tslib": "^1.10.0" }, "keywords": [ @@ -20,7 +21,7 @@ "module": "./esm/billingManagementClient.js", "types": "./esm/billingManagementClient.d.ts", "devDependencies": { - "typescript": "^3.5.3", + "typescript": "^3.6.0", "rollup": "^1.18.0", "rollup-plugin-node-resolve": "^5.2.0", "rollup-plugin-sourcemaps": "^0.4.2", diff --git a/sdk/billing/arm-billing/src/billingManagementClient.ts b/sdk/billing/arm-billing/src/billingManagementClient.ts index 2ff7dd105b67..a0d1edb23aad 100644 --- a/sdk/billing/arm-billing/src/billingManagementClient.ts +++ b/sdk/billing/arm-billing/src/billingManagementClient.ts @@ -9,6 +9,7 @@ */ import * as msRest from "@azure/ms-rest-js"; +import { TokenCredential } from "@azure/core-auth"; import * as Models from "./models"; import * as Mappers from "./models/mappers"; import * as operations from "./operations"; @@ -40,11 +41,16 @@ class BillingManagementClient extends BillingManagementClientContext { /** * Initializes a new instance of the BillingManagementClient class. - * @param credentials Credentials needed for the client to connect to Azure. + * @param credentials Credentials needed for the client to connect to Azure. Credentials + * implementing the TokenCredential interface from the @azure/identity package are recommended. For + * more information about these credentials, see + * {@link https://www.npmjs.com/package/@azure/identity}. Credentials implementing the + * ServiceClientCredentials interface from the older packages @azure/ms-rest-nodeauth and + * @azure/ms-rest-browserauth are also supported. * @param subscriptionId The ID that uniquely identifies an Azure subscription. * @param [options] The parameter options */ - constructor(credentials: msRest.ServiceClientCredentials, subscriptionId: string, options?: Models.BillingManagementClientOptions) { + constructor(credentials: msRest.ServiceClientCredentials | TokenCredential, subscriptionId: string, options?: Models.BillingManagementClientOptions) { super(credentials, subscriptionId, options); this.billingAccounts = new operations.BillingAccounts(this); this.address = new operations.Address(this); diff --git a/sdk/billing/arm-billing/src/billingManagementClientContext.ts b/sdk/billing/arm-billing/src/billingManagementClientContext.ts index 66679df82359..224c429cd9b4 100644 --- a/sdk/billing/arm-billing/src/billingManagementClientContext.ts +++ b/sdk/billing/arm-billing/src/billingManagementClientContext.ts @@ -10,22 +10,28 @@ import * as Models from "./models"; import * as msRest from "@azure/ms-rest-js"; +import { TokenCredential } from "@azure/core-auth"; import * as msRestAzure from "@azure/ms-rest-azure-js"; const packageName = "@azure/arm-billing"; -const packageVersion = "3.0.0"; +const packageVersion = "3.1.0"; export class BillingManagementClientContext extends msRestAzure.AzureServiceClient { - credentials: msRest.ServiceClientCredentials; + credentials: msRest.ServiceClientCredentials | TokenCredential; subscriptionId: string; /** * Initializes a new instance of the BillingManagementClient class. - * @param credentials Credentials needed for the client to connect to Azure. + * @param credentials Credentials needed for the client to connect to Azure. Credentials + * implementing the TokenCredential interface from the @azure/identity package are recommended. For + * more information about these credentials, see + * {@link https://www.npmjs.com/package/@azure/identity}. Credentials implementing the + * ServiceClientCredentials interface from the older packages @azure/ms-rest-nodeauth and + * @azure/ms-rest-browserauth are also supported. * @param subscriptionId The ID that uniquely identifies an Azure subscription. * @param [options] The parameter options */ - constructor(credentials: msRest.ServiceClientCredentials, subscriptionId: string, options?: Models.BillingManagementClientOptions) { + constructor(credentials: msRest.ServiceClientCredentials | TokenCredential, subscriptionId: string, options?: Models.BillingManagementClientOptions) { if (credentials == undefined) { throw new Error('\'credentials\' cannot be null.'); } diff --git a/sdk/botservice/arm-botservice/README.md b/sdk/botservice/arm-botservice/README.md index 100ad8188bdd..0ee386505106 100644 --- a/sdk/botservice/arm-botservice/README.md +++ b/sdk/botservice/arm-botservice/README.md @@ -1,94 +1,103 @@ ## Azure AzureBotService SDK for JavaScript -This package contains an isomorphic SDK for AzureBotService. +This package contains an isomorphic SDK (runs both in Node.js and in browsers) for AzureBotService. ### Currently supported environments -- Node.js version 6.x.x or higher -- Browser JavaScript +- [LTS versions of Node.js](https://nodejs.org/about/releases/) +- Latest versions of Safari, Chrome, Edge, and Firefox. -### How to Install +### Prerequisites +You must have an [Azure subscription](https://azure.microsoft.com/free/). + +### How to install + +To use this SDK in your project, you will need to install two packages. +- `@azure/arm-botservice` that contains the client. +- `@azure/identity` that provides different mechanisms for the client to authenticate your requests using Azure Active Directory. + +Install both packages using the below command: ```bash -npm install @azure/arm-botservice +npm install --save @azure/arm-botservice @azure/identity ``` +> **Note**: You may have used either `@azure/ms-rest-nodeauth` or `@azure/ms-rest-browserauth` in the past. These packages are in maintenance mode receiving critical bug fixes, but no new features. +If you are on a [Node.js that has LTS status](https://nodejs.org/about/releases/), or are writing a client side browser application, we strongly encourage you to upgrade to `@azure/identity` which uses the latest versions of Azure Active Directory and MSAL APIs and provides more authentication options. + ### How to use -#### nodejs - Authentication, client creation and get bots as an example written in TypeScript. +- If you are writing a client side browser application, + - Follow the instructions in the section on Authenticating client side browser applications in [Azure Identity examples](https://aka.ms/azsdk/js/identity/examples) to register your application in the Microsoft identity platform and set the right permissions. + - Copy the client ID and tenant ID from the Overview section of your app registration in Azure portal and use it in the browser sample below. +- If you are writing a server side application, + - [Select a credential from `@azure/identity` based on the authentication method of your choice](https://aka.ms/azsdk/js/identity/examples) + - Complete the set up steps required by the credential if any. + - Use the credential you picked in the place of `DefaultAzureCredential` in the Node.js sample below. -##### Install @azure/ms-rest-nodeauth +In the below samples, we pass the credential and the Azure subscription id to instantiate the client. +Once the client is created, explore the operations on it either in your favorite editor or in our [API reference documentation](https://docs.microsoft.com/javascript/api) to get started. -- Please install minimum version of `"@azure/ms-rest-nodeauth": "^3.0.0"`. -```bash -npm install @azure/ms-rest-nodeauth@"^3.0.0" -``` +#### nodejs - Authentication, client creation, and get bots as an example written in JavaScript. ##### Sample code -```typescript -import * as msRest from "@azure/ms-rest-js"; -import * as msRestAzure from "@azure/ms-rest-azure-js"; -import * as msRestNodeAuth from "@azure/ms-rest-nodeauth"; -import { AzureBotService, AzureBotServiceModels, AzureBotServiceMappers } from "@azure/arm-botservice"; +```javascript +const { DefaultAzureCredential } = require("@azure/identity"); +const { AzureBotService } = require("@azure/arm-botservice"); const subscriptionId = process.env["AZURE_SUBSCRIPTION_ID"]; -msRestNodeAuth.interactiveLogin().then((creds) => { - const client = new AzureBotService(creds, subscriptionId); - const resourceGroupName = "testresourceGroupName"; - const resourceName = "testresourceName"; - client.bots.get(resourceGroupName, resourceName).then((result) => { - console.log("The result is:"); - console.log(result); - }); +// Use `DefaultAzureCredential` or any other credential of your choice based on https://aka.ms/azsdk/js/identity/examples +// Please note that you can also use credentials from the `@azure/ms-rest-nodeauth` package instead. +const creds = new DefaultAzureCredential(); +const client = new AzureBotService(creds, subscriptionId); +const resourceGroupName = "testresourceGroupName"; +const resourceName = "testresourceName"; +client.bots.get(resourceGroupName, resourceName).then((result) => { + console.log("The result is:"); + console.log(result); }).catch((err) => { + console.log("An error occurred:"); console.error(err); }); ``` -#### browser - Authentication, client creation and get bots as an example written in JavaScript. +#### browser - Authentication, client creation, and get bots as an example written in JavaScript. -##### Install @azure/ms-rest-browserauth - -```bash -npm install @azure/ms-rest-browserauth -``` +In browser applications, we recommend using the `InteractiveBrowserCredential` that interactively authenticates using the default system browser. + - See [Single-page application: App registration guide](https://docs.microsoft.com/azure/active-directory/develop/scenario-spa-app-registration) to configure your app registration for the browser. + - Note down the client Id from the previous step and use it in the browser sample below. ##### Sample code -See https://github.com/Azure/ms-rest-browserauth to learn how to authenticate to Azure in the browser. - - index.html + ```html @azure/arm-botservice sample - - + diff --git a/sdk/botservice/arm-botservice/package.json b/sdk/botservice/arm-botservice/package.json index eb0922905502..e68418ca9547 100644 --- a/sdk/botservice/arm-botservice/package.json +++ b/sdk/botservice/arm-botservice/package.json @@ -2,10 +2,11 @@ "name": "@azure/arm-botservice", "author": "Microsoft Corporation", "description": "AzureBotService Library with typescript type definitions for node.js and browser.", - "version": "2.0.0", + "version": "2.1.0", "dependencies": { - "@azure/ms-rest-azure-js": "^2.0.1", - "@azure/ms-rest-js": "^2.0.4", + "@azure/ms-rest-azure-js": "^2.1.0", + "@azure/ms-rest-js": "^2.2.0", + "@azure/core-auth": "^1.1.4", "tslib": "^1.10.0" }, "keywords": [ @@ -20,7 +21,7 @@ "module": "./esm/azureBotService.js", "types": "./esm/azureBotService.d.ts", "devDependencies": { - "typescript": "^3.5.3", + "typescript": "^3.6.0", "rollup": "^1.18.0", "rollup-plugin-node-resolve": "^5.2.0", "rollup-plugin-sourcemaps": "^0.4.2", diff --git a/sdk/botservice/arm-botservice/src/azureBotService.ts b/sdk/botservice/arm-botservice/src/azureBotService.ts index f2e3696d217a..771e3e36fec4 100644 --- a/sdk/botservice/arm-botservice/src/azureBotService.ts +++ b/sdk/botservice/arm-botservice/src/azureBotService.ts @@ -9,6 +9,7 @@ */ import * as msRest from "@azure/ms-rest-js"; +import { TokenCredential } from "@azure/core-auth"; import * as Models from "./models"; import * as Mappers from "./models/mappers"; import * as operations from "./operations"; @@ -25,11 +26,16 @@ class AzureBotService extends AzureBotServiceContext { /** * Initializes a new instance of the AzureBotService class. - * @param credentials Credentials needed for the client to connect to Azure. + * @param credentials Credentials needed for the client to connect to Azure. Credentials + * implementing the TokenCredential interface from the @azure/identity package are recommended. For + * more information about these credentials, see + * {@link https://www.npmjs.com/package/@azure/identity}. Credentials implementing the + * ServiceClientCredentials interface from the older packages @azure/ms-rest-nodeauth and + * @azure/ms-rest-browserauth are also supported. * @param subscriptionId Azure Subscription ID. * @param [options] The parameter options */ - constructor(credentials: msRest.ServiceClientCredentials, subscriptionId: string, options?: Models.AzureBotServiceOptions) { + constructor(credentials: msRest.ServiceClientCredentials | TokenCredential, subscriptionId: string, options?: Models.AzureBotServiceOptions) { super(credentials, subscriptionId, options); this.bots = new operations.Bots(this); this.channels = new operations.Channels(this); diff --git a/sdk/botservice/arm-botservice/src/azureBotServiceContext.ts b/sdk/botservice/arm-botservice/src/azureBotServiceContext.ts index ffc9d3c8d4f9..3261b8039599 100644 --- a/sdk/botservice/arm-botservice/src/azureBotServiceContext.ts +++ b/sdk/botservice/arm-botservice/src/azureBotServiceContext.ts @@ -10,23 +10,29 @@ import * as Models from "./models"; import * as msRest from "@azure/ms-rest-js"; +import { TokenCredential } from "@azure/core-auth"; import * as msRestAzure from "@azure/ms-rest-azure-js"; const packageName = "@azure/arm-botservice"; -const packageVersion = "2.0.0"; +const packageVersion = "2.1.0"; export class AzureBotServiceContext extends msRestAzure.AzureServiceClient { - credentials: msRest.ServiceClientCredentials; + credentials: msRest.ServiceClientCredentials | TokenCredential; subscriptionId: string; apiVersion?: string; /** * Initializes a new instance of the AzureBotService class. - * @param credentials Credentials needed for the client to connect to Azure. + * @param credentials Credentials needed for the client to connect to Azure. Credentials + * implementing the TokenCredential interface from the @azure/identity package are recommended. For + * more information about these credentials, see + * {@link https://www.npmjs.com/package/@azure/identity}. Credentials implementing the + * ServiceClientCredentials interface from the older packages @azure/ms-rest-nodeauth and + * @azure/ms-rest-browserauth are also supported. * @param subscriptionId Azure Subscription ID. * @param [options] The parameter options */ - constructor(credentials: msRest.ServiceClientCredentials, subscriptionId: string, options?: Models.AzureBotServiceOptions) { + constructor(credentials: msRest.ServiceClientCredentials | TokenCredential, subscriptionId: string, options?: Models.AzureBotServiceOptions) { if (credentials == undefined) { throw new Error('\'credentials\' cannot be null.'); } diff --git a/sdk/cdn/arm-cdn/README.md b/sdk/cdn/arm-cdn/README.md index 403572708c34..52e45367f756 100644 --- a/sdk/cdn/arm-cdn/README.md +++ b/sdk/cdn/arm-cdn/README.md @@ -1,90 +1,100 @@ ## Azure CdnManagementClient SDK for JavaScript -This package contains an isomorphic SDK for CdnManagementClient. +This package contains an isomorphic SDK (runs both in Node.js and in browsers) for CdnManagementClient. ### Currently supported environments -- Node.js version 6.x.x or higher -- Browser JavaScript +- [LTS versions of Node.js](https://nodejs.org/about/releases/) +- Latest versions of Safari, Chrome, Edge, and Firefox. -### How to Install +### Prerequisites +You must have an [Azure subscription](https://azure.microsoft.com/free/). + +### How to install + +To use this SDK in your project, you will need to install two packages. +- `@azure/arm-cdn` that contains the client. +- `@azure/identity` that provides different mechanisms for the client to authenticate your requests using Azure Active Directory. + +Install both packages using the below command: ```bash -npm install @azure/arm-cdn +npm install --save @azure/arm-cdn @azure/identity ``` +> **Note**: You may have used either `@azure/ms-rest-nodeauth` or `@azure/ms-rest-browserauth` in the past. These packages are in maintenance mode receiving critical bug fixes, but no new features. +If you are on a [Node.js that has LTS status](https://nodejs.org/about/releases/), or are writing a client side browser application, we strongly encourage you to upgrade to `@azure/identity` which uses the latest versions of Azure Active Directory and MSAL APIs and provides more authentication options. + ### How to use -#### nodejs - Authentication, client creation and list profiles as an example written in TypeScript. +- If you are writing a client side browser application, + - Follow the instructions in the section on Authenticating client side browser applications in [Azure Identity examples](https://aka.ms/azsdk/js/identity/examples) to register your application in the Microsoft identity platform and set the right permissions. + - Copy the client ID and tenant ID from the Overview section of your app registration in Azure portal and use it in the browser sample below. +- If you are writing a server side application, + - [Select a credential from `@azure/identity` based on the authentication method of your choice](https://aka.ms/azsdk/js/identity/examples) + - Complete the set up steps required by the credential if any. + - Use the credential you picked in the place of `DefaultAzureCredential` in the Node.js sample below. -##### Install @azure/ms-rest-nodeauth +In the below samples, we pass the credential and the Azure subscription id to instantiate the client. +Once the client is created, explore the operations on it either in your favorite editor or in our [API reference documentation](https://docs.microsoft.com/javascript/api) to get started. -- Please install minimum version of `"@azure/ms-rest-nodeauth": "^3.0.0"`. -```bash -npm install @azure/ms-rest-nodeauth@"^3.0.0" -``` +#### nodejs - Authentication, client creation, and list profiles as an example written in JavaScript. ##### Sample code -```typescript -import * as msRest from "@azure/ms-rest-js"; -import * as msRestAzure from "@azure/ms-rest-azure-js"; -import * as msRestNodeAuth from "@azure/ms-rest-nodeauth"; -import { CdnManagementClient, CdnManagementModels, CdnManagementMappers } from "@azure/arm-cdn"; +```javascript +const { DefaultAzureCredential } = require("@azure/identity"); +const { CdnManagementClient } = require("@azure/arm-cdn"); const subscriptionId = process.env["AZURE_SUBSCRIPTION_ID"]; -msRestNodeAuth.interactiveLogin().then((creds) => { - const client = new CdnManagementClient(creds, subscriptionId); - client.profiles.list().then((result) => { - console.log("The result is:"); - console.log(result); - }); +// Use `DefaultAzureCredential` or any other credential of your choice based on https://aka.ms/azsdk/js/identity/examples +// Please note that you can also use credentials from the `@azure/ms-rest-nodeauth` package instead. +const creds = new DefaultAzureCredential(); +const client = new CdnManagementClient(creds, subscriptionId); + +client.profiles.list().then((result) => { + console.log("The result is:"); + console.log(result); }).catch((err) => { + console.log("An error occurred:"); console.error(err); }); ``` -#### browser - Authentication, client creation and list profiles as an example written in JavaScript. - -##### Install @azure/ms-rest-browserauth +#### browser - Authentication, client creation, and list profiles as an example written in JavaScript. -```bash -npm install @azure/ms-rest-browserauth -``` +In browser applications, we recommend using the `InteractiveBrowserCredential` that interactively authenticates using the default system browser. + - See [Single-page application: App registration guide](https://docs.microsoft.com/azure/active-directory/develop/scenario-spa-app-registration) to configure your app registration for the browser. + - Note down the client Id from the previous step and use it in the browser sample below. ##### Sample code -See https://github.com/Azure/ms-rest-browserauth to learn how to authenticate to Azure in the browser. - - index.html + ```html @azure/arm-cdn sample - - + diff --git a/sdk/cdn/arm-cdn/package.json b/sdk/cdn/arm-cdn/package.json index cb200703ce7e..d9a34566a5e9 100644 --- a/sdk/cdn/arm-cdn/package.json +++ b/sdk/cdn/arm-cdn/package.json @@ -2,10 +2,11 @@ "name": "@azure/arm-cdn", "author": "Microsoft Corporation", "description": "CdnManagementClient Library with typescript type definitions for node.js and browser.", - "version": "5.2.0", + "version": "5.3.0", "dependencies": { - "@azure/ms-rest-azure-js": "^2.0.1", - "@azure/ms-rest-js": "^2.0.4", + "@azure/ms-rest-azure-js": "^2.1.0", + "@azure/ms-rest-js": "^2.2.0", + "@azure/core-auth": "^1.1.4", "tslib": "^1.10.0" }, "keywords": [ @@ -20,7 +21,7 @@ "module": "./esm/cdnManagementClient.js", "types": "./esm/cdnManagementClient.d.ts", "devDependencies": { - "typescript": "^3.5.3", + "typescript": "^3.6.0", "rollup": "^1.18.0", "rollup-plugin-node-resolve": "^5.2.0", "rollup-plugin-sourcemaps": "^0.4.2", diff --git a/sdk/cdn/arm-cdn/src/cdnManagementClient.ts b/sdk/cdn/arm-cdn/src/cdnManagementClient.ts index d2eb2d60b2d4..bb34c2fcd2af 100644 --- a/sdk/cdn/arm-cdn/src/cdnManagementClient.ts +++ b/sdk/cdn/arm-cdn/src/cdnManagementClient.ts @@ -9,6 +9,7 @@ */ import * as msRest from "@azure/ms-rest-js"; +import { TokenCredential } from "@azure/core-auth"; import * as Models from "./models"; import * as Mappers from "./models/mappers"; import * as Parameters from "./models/parameters"; @@ -31,11 +32,16 @@ class CdnManagementClient extends CdnManagementClientContext { /** * Initializes a new instance of the CdnManagementClient class. - * @param credentials Credentials needed for the client to connect to Azure. + * @param credentials Credentials needed for the client to connect to Azure. Credentials + * implementing the TokenCredential interface from the @azure/identity package are recommended. For + * more information about these credentials, see + * {@link https://www.npmjs.com/package/@azure/identity}. Credentials implementing the + * ServiceClientCredentials interface from the older packages @azure/ms-rest-nodeauth and + * @azure/ms-rest-browserauth are also supported. * @param subscriptionId Azure Subscription ID. * @param [options] The parameter options */ - constructor(credentials: msRest.ServiceClientCredentials, subscriptionId: string, options?: Models.CdnManagementClientOptions) { + constructor(credentials: msRest.ServiceClientCredentials | TokenCredential, subscriptionId: string, options?: Models.CdnManagementClientOptions) { super(credentials, subscriptionId, options); this.profiles = new operations.Profiles(this); this.endpoints = new operations.Endpoints(this); diff --git a/sdk/cdn/arm-cdn/src/cdnManagementClientContext.ts b/sdk/cdn/arm-cdn/src/cdnManagementClientContext.ts index 9caddabff417..bca3d4ca420a 100644 --- a/sdk/cdn/arm-cdn/src/cdnManagementClientContext.ts +++ b/sdk/cdn/arm-cdn/src/cdnManagementClientContext.ts @@ -10,23 +10,29 @@ import * as Models from "./models"; import * as msRest from "@azure/ms-rest-js"; +import { TokenCredential } from "@azure/core-auth"; import * as msRestAzure from "@azure/ms-rest-azure-js"; const packageName = "@azure/arm-cdn"; -const packageVersion = "5.2.0"; +const packageVersion = "5.3.0"; export class CdnManagementClientContext extends msRestAzure.AzureServiceClient { - credentials: msRest.ServiceClientCredentials; + credentials: msRest.ServiceClientCredentials | TokenCredential; subscriptionId: string; apiVersion?: string; /** * Initializes a new instance of the CdnManagementClient class. - * @param credentials Credentials needed for the client to connect to Azure. + * @param credentials Credentials needed for the client to connect to Azure. Credentials + * implementing the TokenCredential interface from the @azure/identity package are recommended. For + * more information about these credentials, see + * {@link https://www.npmjs.com/package/@azure/identity}. Credentials implementing the + * ServiceClientCredentials interface from the older packages @azure/ms-rest-nodeauth and + * @azure/ms-rest-browserauth are also supported. * @param subscriptionId Azure Subscription ID. * @param [options] The parameter options */ - constructor(credentials: msRest.ServiceClientCredentials, subscriptionId: string, options?: Models.CdnManagementClientOptions) { + constructor(credentials: msRest.ServiceClientCredentials | TokenCredential, subscriptionId: string, options?: Models.CdnManagementClientOptions) { if (credentials == undefined) { throw new Error('\'credentials\' cannot be null.'); } diff --git a/sdk/changeanalysis/arm-changeanalysis/README.md b/sdk/changeanalysis/arm-changeanalysis/README.md index 166d262ef482..ee3668c3ea89 100644 --- a/sdk/changeanalysis/arm-changeanalysis/README.md +++ b/sdk/changeanalysis/arm-changeanalysis/README.md @@ -1,91 +1,101 @@ ## Azure AzureChangeAnalysisManagementClient SDK for JavaScript -This package contains an isomorphic SDK for AzureChangeAnalysisManagementClient. +This package contains an isomorphic SDK (runs both in Node.js and in browsers) for AzureChangeAnalysisManagementClient. ### Currently supported environments -- Node.js version 6.x.x or higher -- Browser JavaScript +- [LTS versions of Node.js](https://nodejs.org/about/releases/) +- Latest versions of Safari, Chrome, Edge, and Firefox. -### How to Install +### Prerequisites +You must have an [Azure subscription](https://azure.microsoft.com/free/). + +### How to install + +To use this SDK in your project, you will need to install two packages. +- `@azure/arm-changeanalysis` that contains the client. +- `@azure/identity` that provides different mechanisms for the client to authenticate your requests using Azure Active Directory. + +Install both packages using the below command: ```bash -npm install @azure/arm-changeanalysis +npm install --save @azure/arm-changeanalysis @azure/identity ``` +> **Note**: You may have used either `@azure/ms-rest-nodeauth` or `@azure/ms-rest-browserauth` in the past. These packages are in maintenance mode receiving critical bug fixes, but no new features. +If you are on a [Node.js that has LTS status](https://nodejs.org/about/releases/), or are writing a client side browser application, we strongly encourage you to upgrade to `@azure/identity` which uses the latest versions of Azure Active Directory and MSAL APIs and provides more authentication options. + ### How to use -#### nodejs - client creation and list operations as an example written in TypeScript. +- If you are writing a client side browser application, + - Follow the instructions in the section on Authenticating client side browser applications in [Azure Identity examples](https://aka.ms/azsdk/js/identity/examples) to register your application in the Microsoft identity platform and set the right permissions. + - Copy the client ID and tenant ID from the Overview section of your app registration in Azure portal and use it in the browser sample below. +- If you are writing a server side application, + - [Select a credential from `@azure/identity` based on the authentication method of your choice](https://aka.ms/azsdk/js/identity/examples) + - Complete the set up steps required by the credential if any. + - Use the credential you picked in the place of `DefaultAzureCredential` in the Node.js sample below. -##### Install @azure/ms-rest-nodeauth +In the below samples, we pass the credential and the Azure subscription id to instantiate the client. +Once the client is created, explore the operations on it either in your favorite editor or in our [API reference documentation](https://docs.microsoft.com/javascript/api) to get started. -- Please install minimum version of `"@azure/ms-rest-nodeauth": "^3.0.0"`. -```bash -npm install @azure/ms-rest-nodeauth@"^3.0.0" -``` +#### nodejs - Authentication, client creation, and list operations as an example written in JavaScript. ##### Sample code -While the below sample uses the interactive login, other authentication options can be found in the [README.md file of @azure/ms-rest-nodeauth](https://www.npmjs.com/package/@azure/ms-rest-nodeauth) package -```typescript -const msRestNodeAuth = require("@azure/ms-rest-nodeauth"); +```javascript +const { DefaultAzureCredential } = require("@azure/identity"); const { AzureChangeAnalysisManagementClient } = require("@azure/arm-changeanalysis"); const subscriptionId = process.env["AZURE_SUBSCRIPTION_ID"]; -msRestNodeAuth.interactiveLogin().then((creds) => { - const client = new AzureChangeAnalysisManagementClient(creds, subscriptionId); - const skipToken = "testskipToken"; - client.operations.list(skipToken).then((result) => { - console.log("The result is:"); - console.log(result); - }); +// Use `DefaultAzureCredential` or any other credential of your choice based on https://aka.ms/azsdk/js/identity/examples +// Please note that you can also use credentials from the `@azure/ms-rest-nodeauth` package instead. +const creds = new DefaultAzureCredential(); +const client = new AzureChangeAnalysisManagementClient(creds, subscriptionId); +const skipToken = "testskipToken"; +client.operations.list(skipToken).then((result) => { + console.log("The result is:"); + console.log(result); }).catch((err) => { + console.log("An error occurred:"); console.error(err); }); ``` -#### browser - Authentication, client creation and list operations as an example written in JavaScript. +#### browser - Authentication, client creation, and list operations as an example written in JavaScript. -##### Install @azure/ms-rest-browserauth - -```bash -npm install @azure/ms-rest-browserauth -``` +In browser applications, we recommend using the `InteractiveBrowserCredential` that interactively authenticates using the default system browser. + - See [Single-page application: App registration guide](https://docs.microsoft.com/azure/active-directory/develop/scenario-spa-app-registration) to configure your app registration for the browser. + - Note down the client Id from the previous step and use it in the browser sample below. ##### Sample code -See https://github.com/Azure/ms-rest-browserauth to learn how to authenticate to Azure in the browser. - - index.html + ```html @azure/arm-changeanalysis sample - - + diff --git a/sdk/changeanalysis/arm-changeanalysis/package.json b/sdk/changeanalysis/arm-changeanalysis/package.json index 69961f1bdfaf..9a81486953c0 100644 --- a/sdk/changeanalysis/arm-changeanalysis/package.json +++ b/sdk/changeanalysis/arm-changeanalysis/package.json @@ -2,10 +2,11 @@ "name": "@azure/arm-changeanalysis", "author": "Microsoft Corporation", "description": "AzureChangeAnalysisManagementClient Library with typescript type definitions for node.js and browser.", - "version": "1.0.0", + "version": "1.1.0", "dependencies": { - "@azure/ms-rest-azure-js": "^2.0.1", - "@azure/ms-rest-js": "^2.0.4", + "@azure/ms-rest-azure-js": "^2.1.0", + "@azure/ms-rest-js": "^2.2.0", + "@azure/core-auth": "^1.1.4", "tslib": "^1.10.0" }, "keywords": [ @@ -20,7 +21,7 @@ "module": "./esm/azureChangeAnalysisManagementClient.js", "types": "./esm/azureChangeAnalysisManagementClient.d.ts", "devDependencies": { - "typescript": "^3.5.3", + "typescript": "^3.6.0", "rollup": "^1.18.0", "rollup-plugin-node-resolve": "^5.2.0", "rollup-plugin-sourcemaps": "^0.4.2", diff --git a/sdk/changeanalysis/arm-changeanalysis/src/azureChangeAnalysisManagementClient.ts b/sdk/changeanalysis/arm-changeanalysis/src/azureChangeAnalysisManagementClient.ts index 342ec995b7e8..e3b4a848a93c 100644 --- a/sdk/changeanalysis/arm-changeanalysis/src/azureChangeAnalysisManagementClient.ts +++ b/sdk/changeanalysis/arm-changeanalysis/src/azureChangeAnalysisManagementClient.ts @@ -8,6 +8,7 @@ */ import * as msRest from "@azure/ms-rest-js"; +import { TokenCredential } from "@azure/core-auth"; import * as Models from "./models"; import * as Mappers from "./models/mappers"; import * as operations from "./operations"; @@ -22,11 +23,16 @@ class AzureChangeAnalysisManagementClient extends AzureChangeAnalysisManagementC /** * Initializes a new instance of the AzureChangeAnalysisManagementClient class. - * @param credentials Credentials needed for the client to connect to Azure. + * @param credentials Credentials needed for the client to connect to Azure. Credentials + * implementing the TokenCredential interface from the @azure/identity package are recommended. For + * more information about these credentials, see + * {@link https://www.npmjs.com/package/@azure/identity}. Credentials implementing the + * ServiceClientCredentials interface from the older packages @azure/ms-rest-nodeauth and + * @azure/ms-rest-browserauth are also supported. * @param subscriptionId The ID of the target subscription. * @param [options] The parameter options */ - constructor(credentials: msRest.ServiceClientCredentials, subscriptionId: string, options?: Models.AzureChangeAnalysisManagementClientOptions) { + constructor(credentials: msRest.ServiceClientCredentials | TokenCredential, subscriptionId: string, options?: Models.AzureChangeAnalysisManagementClientOptions) { super(credentials, subscriptionId, options); this.operations = new operations.Operations(this); this.resourceChanges = new operations.ResourceChanges(this); diff --git a/sdk/changeanalysis/arm-changeanalysis/src/azureChangeAnalysisManagementClientContext.ts b/sdk/changeanalysis/arm-changeanalysis/src/azureChangeAnalysisManagementClientContext.ts index 2b91db73d014..ad921482493d 100644 --- a/sdk/changeanalysis/arm-changeanalysis/src/azureChangeAnalysisManagementClientContext.ts +++ b/sdk/changeanalysis/arm-changeanalysis/src/azureChangeAnalysisManagementClientContext.ts @@ -9,23 +9,29 @@ import * as Models from "./models"; import * as msRest from "@azure/ms-rest-js"; +import { TokenCredential } from "@azure/core-auth"; import * as msRestAzure from "@azure/ms-rest-azure-js"; const packageName = "@azure/arm-changeanalysis"; -const packageVersion = "1.0.0"; +const packageVersion = "1.1.0"; export class AzureChangeAnalysisManagementClientContext extends msRestAzure.AzureServiceClient { - credentials: msRest.ServiceClientCredentials; + credentials: msRest.ServiceClientCredentials | TokenCredential; subscriptionId: string; apiVersion?: string; /** * Initializes a new instance of the AzureChangeAnalysisManagementClient class. - * @param credentials Credentials needed for the client to connect to Azure. + * @param credentials Credentials needed for the client to connect to Azure. Credentials + * implementing the TokenCredential interface from the @azure/identity package are recommended. For + * more information about these credentials, see + * {@link https://www.npmjs.com/package/@azure/identity}. Credentials implementing the + * ServiceClientCredentials interface from the older packages @azure/ms-rest-nodeauth and + * @azure/ms-rest-browserauth are also supported. * @param subscriptionId The ID of the target subscription. * @param [options] The parameter options */ - constructor(credentials: msRest.ServiceClientCredentials, subscriptionId: string, options?: Models.AzureChangeAnalysisManagementClientOptions) { + constructor(credentials: msRest.ServiceClientCredentials | TokenCredential, subscriptionId: string, options?: Models.AzureChangeAnalysisManagementClientOptions) { if (credentials == undefined) { throw new Error('\'credentials\' cannot be null.'); } diff --git a/sdk/commerce/arm-commerce-profile-2020-09-01-hybrid/README.md b/sdk/commerce/arm-commerce-profile-2020-09-01-hybrid/README.md index e719b827a97c..52b700638226 100644 --- a/sdk/commerce/arm-commerce-profile-2020-09-01-hybrid/README.md +++ b/sdk/commerce/arm-commerce-profile-2020-09-01-hybrid/README.md @@ -1,100 +1,109 @@ ## Azure UsageManagementClient SDK for JavaScript -This package contains an isomorphic SDK for UsageManagementClient. +This package contains an isomorphic SDK (runs both in Node.js and in browsers) for UsageManagementClient. ### Currently supported environments -- Node.js version 6.x.x or higher -- Browser JavaScript +- [LTS versions of Node.js](https://nodejs.org/about/releases/) +- Latest versions of Safari, Chrome, Edge, and Firefox. -### How to Install +### Prerequisites +You must have an [Azure subscription](https://azure.microsoft.com/free/). + +### How to install + +To use this SDK in your project, you will need to install two packages. +- `@azure/arm-commerce-profile-2020-09-01-hybrid` that contains the client. +- `@azure/identity` that provides different mechanisms for the client to authenticate your requests using Azure Active Directory. + +Install both packages using the below command: ```bash -npm install @azure/arm-commerce-profile-2020-09-01-hybrid +npm install --save @azure/arm-commerce-profile-2020-09-01-hybrid @azure/identity ``` +> **Note**: You may have used either `@azure/ms-rest-nodeauth` or `@azure/ms-rest-browserauth` in the past. These packages are in maintenance mode receiving critical bug fixes, but no new features. +If you are on a [Node.js that has LTS status](https://nodejs.org/about/releases/), or are writing a client side browser application, we strongly encourage you to upgrade to `@azure/identity` which uses the latest versions of Azure Active Directory and MSAL APIs and provides more authentication options. + ### How to use -#### nodejs - Authentication, client creation and list usageAggregates as an example written in TypeScript. +- If you are writing a client side browser application, + - Follow the instructions in the section on Authenticating client side browser applications in [Azure Identity examples](https://aka.ms/azsdk/js/identity/examples) to register your application in the Microsoft identity platform and set the right permissions. + - Copy the client ID and tenant ID from the Overview section of your app registration in Azure portal and use it in the browser sample below. +- If you are writing a server side application, + - [Select a credential from `@azure/identity` based on the authentication method of your choice](https://aka.ms/azsdk/js/identity/examples) + - Complete the set up steps required by the credential if any. + - Use the credential you picked in the place of `DefaultAzureCredential` in the Node.js sample below. -##### Install @azure/ms-rest-nodeauth +In the below samples, we pass the credential and the Azure subscription id to instantiate the client. +Once the client is created, explore the operations on it either in your favorite editor or in our [API reference documentation](https://docs.microsoft.com/javascript/api) to get started. -- Please install minimum version of `"@azure/ms-rest-nodeauth": "^3.0.0"`. -```bash -npm install @azure/ms-rest-nodeauth@"^3.0.0" -``` +#### nodejs - Authentication, client creation, and list usageAggregates as an example written in JavaScript. ##### Sample code -```typescript -import * as msRest from "@azure/ms-rest-js"; -import * as msRestAzure from "@azure/ms-rest-azure-js"; -import * as msRestNodeAuth from "@azure/ms-rest-nodeauth"; -import { UsageManagementClient, UsageManagementModels, UsageManagementMappers } from "@azure/arm-commerce-profile-2020-09-01-hybrid"; +```javascript +const { DefaultAzureCredential } = require("@azure/identity"); +const { UsageManagementClient } = require("@azure/arm-commerce-profile-2020-09-01-hybrid"); const subscriptionId = process.env["AZURE_SUBSCRIPTION_ID"]; -msRestNodeAuth.interactiveLogin().then((creds) => { - const client = new UsageManagementClient(creds, subscriptionId); - const reportedStartTime = new Date().toISOString(); - const reportedEndTime = new Date().toISOString(); - const showDetails = true; - const aggregationGranularity = "Daily"; - const continuationToken = "testcontinuationToken"; - client.usageAggregates.list(reportedStartTime, reportedEndTime, showDetails, aggregationGranularity, continuationToken).then((result) => { - console.log("The result is:"); - console.log(result); - }); +// Use `DefaultAzureCredential` or any other credential of your choice based on https://aka.ms/azsdk/js/identity/examples +// Please note that you can also use credentials from the `@azure/ms-rest-nodeauth` package instead. +const creds = new DefaultAzureCredential(); +const client = new UsageManagementClient(creds, subscriptionId); +const reportedStartTime = new Date().toISOString(); +const reportedEndTime = new Date().toISOString(); +const showDetails = true; +const aggregationGranularity = "Daily"; +const continuationToken = "testcontinuationToken"; +client.usageAggregates.list(reportedStartTime, reportedEndTime, showDetails, aggregationGranularity, continuationToken).then((result) => { + console.log("The result is:"); + console.log(result); }).catch((err) => { + console.log("An error occurred:"); console.error(err); }); ``` -#### browser - Authentication, client creation and list usageAggregates as an example written in JavaScript. +#### browser - Authentication, client creation, and list usageAggregates as an example written in JavaScript. -##### Install @azure/ms-rest-browserauth - -```bash -npm install @azure/ms-rest-browserauth -``` +In browser applications, we recommend using the `InteractiveBrowserCredential` that interactively authenticates using the default system browser. + - See [Single-page application: App registration guide](https://docs.microsoft.com/azure/active-directory/develop/scenario-spa-app-registration) to configure your app registration for the browser. + - Note down the client Id from the previous step and use it in the browser sample below. ##### Sample code -See https://github.com/Azure/ms-rest-browserauth to learn how to authenticate to Azure in the browser. - - index.html + ```html @azure/arm-commerce-profile-2020-09-01-hybrid sample - - + diff --git a/sdk/commerce/arm-commerce-profile-2020-09-01-hybrid/package.json b/sdk/commerce/arm-commerce-profile-2020-09-01-hybrid/package.json index 10e0e9e4a945..5dc45d4a25f4 100644 --- a/sdk/commerce/arm-commerce-profile-2020-09-01-hybrid/package.json +++ b/sdk/commerce/arm-commerce-profile-2020-09-01-hybrid/package.json @@ -2,10 +2,11 @@ "name": "@azure/arm-commerce-profile-2020-09-01-hybrid", "author": "Microsoft Corporation", "description": "UsageManagementClient Library with typescript type definitions for node.js and browser.", - "version": "1.0.0", + "version": "1.1.0", "dependencies": { - "@azure/ms-rest-azure-js": "^2.0.1", - "@azure/ms-rest-js": "^2.0.4", + "@azure/ms-rest-azure-js": "^2.1.0", + "@azure/ms-rest-js": "^2.2.0", + "@azure/core-auth": "^1.1.4", "tslib": "^1.10.0" }, "keywords": [ @@ -20,7 +21,7 @@ "module": "./esm/usageManagementClient.js", "types": "./esm/usageManagementClient.d.ts", "devDependencies": { - "typescript": "^3.5.3", + "typescript": "^3.6.0", "rollup": "^1.18.0", "rollup-plugin-node-resolve": "^5.2.0", "rollup-plugin-sourcemaps": "^0.4.2", diff --git a/sdk/commerce/arm-commerce-profile-2020-09-01-hybrid/src/usageManagementClient.ts b/sdk/commerce/arm-commerce-profile-2020-09-01-hybrid/src/usageManagementClient.ts index 14140e6bff74..dcd1922bb0cd 100644 --- a/sdk/commerce/arm-commerce-profile-2020-09-01-hybrid/src/usageManagementClient.ts +++ b/sdk/commerce/arm-commerce-profile-2020-09-01-hybrid/src/usageManagementClient.ts @@ -9,6 +9,7 @@ */ import * as msRest from "@azure/ms-rest-js"; +import { TokenCredential } from "@azure/core-auth"; import * as Models from "./models"; import * as Mappers from "./models/mappers"; import * as operations from "./operations"; @@ -22,12 +23,17 @@ class UsageManagementClient extends UsageManagementClientContext { /** * Initializes a new instance of the UsageManagementClient class. - * @param credentials Credentials needed for the client to connect to Azure. + * @param credentials Credentials needed for the client to connect to Azure. Credentials + * implementing the TokenCredential interface from the @azure/identity package are recommended. For + * more information about these credentials, see + * {@link https://www.npmjs.com/package/@azure/identity}. Credentials implementing the + * ServiceClientCredentials interface from the older packages @azure/ms-rest-nodeauth and + * @azure/ms-rest-browserauth are also supported. * @param subscriptionId It uniquely identifies Microsoft Azure subscription. The subscription ID * forms part of the URI for every service call. * @param [options] The parameter options */ - constructor(credentials: msRest.ServiceClientCredentials, subscriptionId: string, options?: Models.UsageManagementClientOptions) { + constructor(credentials: msRest.ServiceClientCredentials | TokenCredential, subscriptionId: string, options?: Models.UsageManagementClientOptions) { super(credentials, subscriptionId, options); this.usageAggregates = new operations.UsageAggregates(this); this.rateCard = new operations.RateCard(this); diff --git a/sdk/commerce/arm-commerce-profile-2020-09-01-hybrid/src/usageManagementClientContext.ts b/sdk/commerce/arm-commerce-profile-2020-09-01-hybrid/src/usageManagementClientContext.ts index f1b3432104d8..3ce8b7086378 100644 --- a/sdk/commerce/arm-commerce-profile-2020-09-01-hybrid/src/usageManagementClientContext.ts +++ b/sdk/commerce/arm-commerce-profile-2020-09-01-hybrid/src/usageManagementClientContext.ts @@ -10,24 +10,30 @@ import * as Models from "./models"; import * as msRest from "@azure/ms-rest-js"; +import { TokenCredential } from "@azure/core-auth"; import * as msRestAzure from "@azure/ms-rest-azure-js"; const packageName = "@azure/arm-commerce-profile-2020-09-01-hybrid"; -const packageVersion = "1.0.0"; +const packageVersion = "1.1.0"; export class UsageManagementClientContext extends msRestAzure.AzureServiceClient { - credentials: msRest.ServiceClientCredentials; + credentials: msRest.ServiceClientCredentials | TokenCredential; subscriptionId: string; apiVersion?: string; /** * Initializes a new instance of the UsageManagementClient class. - * @param credentials Credentials needed for the client to connect to Azure. + * @param credentials Credentials needed for the client to connect to Azure. Credentials + * implementing the TokenCredential interface from the @azure/identity package are recommended. For + * more information about these credentials, see + * {@link https://www.npmjs.com/package/@azure/identity}. Credentials implementing the + * ServiceClientCredentials interface from the older packages @azure/ms-rest-nodeauth and + * @azure/ms-rest-browserauth are also supported. * @param subscriptionId It uniquely identifies Microsoft Azure subscription. The subscription ID * forms part of the URI for every service call. * @param [options] The parameter options */ - constructor(credentials: msRest.ServiceClientCredentials, subscriptionId: string, options?: Models.UsageManagementClientOptions) { + constructor(credentials: msRest.ServiceClientCredentials | TokenCredential, subscriptionId: string, options?: Models.UsageManagementClientOptions) { if (credentials == undefined) { throw new Error('\'credentials\' cannot be null.'); } diff --git a/sdk/commerce/arm-commerce/README.md b/sdk/commerce/arm-commerce/README.md index 328e15132f6a..1179d4d83ce4 100644 --- a/sdk/commerce/arm-commerce/README.md +++ b/sdk/commerce/arm-commerce/README.md @@ -1,99 +1,109 @@ ## Azure UsageManagementClient SDK for JavaScript -This package contains an isomorphic SDK for UsageManagementClient. +This package contains an isomorphic SDK (runs both in Node.js and in browsers) for UsageManagementClient. ### Currently supported environments -- Node.js version 6.x.x or higher -- Browser JavaScript +- [LTS versions of Node.js](https://nodejs.org/about/releases/) +- Latest versions of Safari, Chrome, Edge, and Firefox. -### How to Install +### Prerequisites +You must have an [Azure subscription](https://azure.microsoft.com/free/). + +### How to install + +To use this SDK in your project, you will need to install two packages. +- `@azure/arm-commerce` that contains the client. +- `@azure/identity` that provides different mechanisms for the client to authenticate your requests using Azure Active Directory. + +Install both packages using the below command: ```bash -npm install @azure/arm-commerce +npm install --save @azure/arm-commerce @azure/identity ``` +> **Note**: You may have used either `@azure/ms-rest-nodeauth` or `@azure/ms-rest-browserauth` in the past. These packages are in maintenance mode receiving critical bug fixes, but no new features. +If you are on a [Node.js that has LTS status](https://nodejs.org/about/releases/), or are writing a client side browser application, we strongly encourage you to upgrade to `@azure/identity` which uses the latest versions of Azure Active Directory and MSAL APIs and provides more authentication options. + ### How to use -#### nodejs - Authentication, client creation and list usageAggregates as an example written in TypeScript. +- If you are writing a client side browser application, + - Follow the instructions in the section on Authenticating client side browser applications in [Azure Identity examples](https://aka.ms/azsdk/js/identity/examples) to register your application in the Microsoft identity platform and set the right permissions. + - Copy the client ID and tenant ID from the Overview section of your app registration in Azure portal and use it in the browser sample below. +- If you are writing a server side application, + - [Select a credential from `@azure/identity` based on the authentication method of your choice](https://aka.ms/azsdk/js/identity/examples) + - Complete the set up steps required by the credential if any. + - Use the credential you picked in the place of `DefaultAzureCredential` in the Node.js sample below. -##### Install @azure/ms-rest-nodeauth +In the below samples, we pass the credential and the Azure subscription id to instantiate the client. +Once the client is created, explore the operations on it either in your favorite editor or in our [API reference documentation](https://docs.microsoft.com/javascript/api) to get started. -```bash -npm install @azure/ms-rest-nodeauth -``` +#### nodejs - Authentication, client creation, and list usageAggregates as an example written in JavaScript. ##### Sample code -```typescript -import * as msRest from "@azure/ms-rest-js"; -import * as msRestAzure from "@azure/ms-rest-azure-js"; -import * as msRestNodeAuth from "@azure/ms-rest-nodeauth"; -import { UsageManagementClient, UsageManagementModels, UsageManagementMappers } from "@azure/arm-commerce"; +```javascript +const { DefaultAzureCredential } = require("@azure/identity"); +const { UsageManagementClient } = require("@azure/arm-commerce"); const subscriptionId = process.env["AZURE_SUBSCRIPTION_ID"]; -msRestNodeAuth.interactiveLogin().then((creds) => { - const client = new UsageManagementClient(creds, subscriptionId); - const reportedStartTime = new Date().toISOString(); - const reportedEndTime = new Date().toISOString(); - const showDetails = true; - const aggregationGranularity = "Daily"; - const continuationToken = "testcontinuationToken"; - client.usageAggregates.list(reportedStartTime, reportedEndTime, showDetails, aggregationGranularity, continuationToken).then((result) => { - console.log("The result is:"); - console.log(result); - }); +// Use `DefaultAzureCredential` or any other credential of your choice based on https://aka.ms/azsdk/js/identity/examples +// Please note that you can also use credentials from the `@azure/ms-rest-nodeauth` package instead. +const creds = new DefaultAzureCredential(); +const client = new UsageManagementClient(creds, subscriptionId); +const reportedStartTime = new Date().toISOString(); +const reportedEndTime = new Date().toISOString(); +const showDetails = true; +const aggregationGranularity = "Daily"; +const continuationToken = "testcontinuationToken"; +client.usageAggregates.list(reportedStartTime, reportedEndTime, showDetails, aggregationGranularity, continuationToken).then((result) => { + console.log("The result is:"); + console.log(result); }).catch((err) => { + console.log("An error occurred:"); console.error(err); }); ``` -#### browser - Authentication, client creation and list usageAggregates as an example written in JavaScript. +#### browser - Authentication, client creation, and list usageAggregates as an example written in JavaScript. -##### Install @azure/ms-rest-browserauth - -```bash -npm install @azure/ms-rest-browserauth -``` +In browser applications, we recommend using the `InteractiveBrowserCredential` that interactively authenticates using the default system browser. + - See [Single-page application: App registration guide](https://docs.microsoft.com/azure/active-directory/develop/scenario-spa-app-registration) to configure your app registration for the browser. + - Note down the client Id from the previous step and use it in the browser sample below. ##### Sample code -See https://github.com/Azure/ms-rest-browserauth to learn how to authenticate to Azure in the browser. - - index.html + ```html @azure/arm-commerce sample - - + @@ -105,5 +115,4 @@ See https://github.com/Azure/ms-rest-browserauth to learn how to authenticate to - [Microsoft Azure SDK for Javascript](https://github.com/Azure/azure-sdk-for-js) - -![Impressions](https://azure-sdk-impressions.azurewebsites.net/api/impressions/azure-sdk-for-js%2Fsdk%2Fcommerce%2Farm-commerce%2FREADME.png) +![Impressions](https://azure-sdk-impressions.azurewebsites.net/api/impressions/azure-sdk-for-js/sdk/commerce/arm-commerce/README.png) diff --git a/sdk/commerce/arm-commerce/package.json b/sdk/commerce/arm-commerce/package.json index d626b9efb1f8..286ef12b9e29 100644 --- a/sdk/commerce/arm-commerce/package.json +++ b/sdk/commerce/arm-commerce/package.json @@ -2,10 +2,11 @@ "name": "@azure/arm-commerce", "author": "Microsoft Corporation", "description": "UsageManagementClient Library with typescript type definitions for node.js and browser.", - "version": "2.1.1", + "version": "2.2.0", "dependencies": { - "@azure/ms-rest-azure-js": "^1.2.0", - "@azure/ms-rest-js": "^1.2.0", + "@azure/ms-rest-azure-js": "^1.4.0", + "@azure/ms-rest-js": "^1.11.0", + "@azure/core-auth": "^1.1.4", "tslib": "^1.9.3" }, "keywords": [ @@ -20,7 +21,7 @@ "module": "./esm/usageManagementClient.js", "types": "./esm/usageManagementClient.d.ts", "devDependencies": { - "typescript": "^3.1.1", + "typescript": "^3.6.0", "rollup": "^0.66.2", "rollup-plugin-node-resolve": "^3.4.0", "rollup-plugin-sourcemaps": "^0.4.2", diff --git a/sdk/commerce/arm-commerce/src/usageManagementClient.ts b/sdk/commerce/arm-commerce/src/usageManagementClient.ts index 14140e6bff74..dcd1922bb0cd 100644 --- a/sdk/commerce/arm-commerce/src/usageManagementClient.ts +++ b/sdk/commerce/arm-commerce/src/usageManagementClient.ts @@ -9,6 +9,7 @@ */ import * as msRest from "@azure/ms-rest-js"; +import { TokenCredential } from "@azure/core-auth"; import * as Models from "./models"; import * as Mappers from "./models/mappers"; import * as operations from "./operations"; @@ -22,12 +23,17 @@ class UsageManagementClient extends UsageManagementClientContext { /** * Initializes a new instance of the UsageManagementClient class. - * @param credentials Credentials needed for the client to connect to Azure. + * @param credentials Credentials needed for the client to connect to Azure. Credentials + * implementing the TokenCredential interface from the @azure/identity package are recommended. For + * more information about these credentials, see + * {@link https://www.npmjs.com/package/@azure/identity}. Credentials implementing the + * ServiceClientCredentials interface from the older packages @azure/ms-rest-nodeauth and + * @azure/ms-rest-browserauth are also supported. * @param subscriptionId It uniquely identifies Microsoft Azure subscription. The subscription ID * forms part of the URI for every service call. * @param [options] The parameter options */ - constructor(credentials: msRest.ServiceClientCredentials, subscriptionId: string, options?: Models.UsageManagementClientOptions) { + constructor(credentials: msRest.ServiceClientCredentials | TokenCredential, subscriptionId: string, options?: Models.UsageManagementClientOptions) { super(credentials, subscriptionId, options); this.usageAggregates = new operations.UsageAggregates(this); this.rateCard = new operations.RateCard(this); diff --git a/sdk/commerce/arm-commerce/src/usageManagementClientContext.ts b/sdk/commerce/arm-commerce/src/usageManagementClientContext.ts index f2995a21ee7e..5e9e2eca1fbc 100644 --- a/sdk/commerce/arm-commerce/src/usageManagementClientContext.ts +++ b/sdk/commerce/arm-commerce/src/usageManagementClientContext.ts @@ -10,24 +10,30 @@ import * as Models from "./models"; import * as msRest from "@azure/ms-rest-js"; +import { TokenCredential } from "@azure/core-auth"; import * as msRestAzure from "@azure/ms-rest-azure-js"; const packageName = "@azure/arm-commerce"; -const packageVersion = "2.1.1"; +const packageVersion = "2.2.0"; export class UsageManagementClientContext extends msRestAzure.AzureServiceClient { - credentials: msRest.ServiceClientCredentials; + credentials: msRest.ServiceClientCredentials | TokenCredential; subscriptionId: string; apiVersion?: string; /** * Initializes a new instance of the UsageManagementClient class. - * @param credentials Credentials needed for the client to connect to Azure. + * @param credentials Credentials needed for the client to connect to Azure. Credentials + * implementing the TokenCredential interface from the @azure/identity package are recommended. For + * more information about these credentials, see + * {@link https://www.npmjs.com/package/@azure/identity}. Credentials implementing the + * ServiceClientCredentials interface from the older packages @azure/ms-rest-nodeauth and + * @azure/ms-rest-browserauth are also supported. * @param subscriptionId It uniquely identifies Microsoft Azure subscription. The subscription ID * forms part of the URI for every service call. * @param [options] The parameter options */ - constructor(credentials: msRest.ServiceClientCredentials, subscriptionId: string, options?: Models.UsageManagementClientOptions) { + constructor(credentials: msRest.ServiceClientCredentials | TokenCredential, subscriptionId: string, options?: Models.UsageManagementClientOptions) { if (credentials == undefined) { throw new Error('\'credentials\' cannot be null.'); } diff --git a/sdk/communication/arm-communication/README.md b/sdk/communication/arm-communication/README.md index 6de5fb8a12ba..15ddebb729bf 100644 --- a/sdk/communication/arm-communication/README.md +++ b/sdk/communication/arm-communication/README.md @@ -1,89 +1,100 @@ ## Azure CommunicationServiceManagementClient SDK for JavaScript -This package contains an isomorphic SDK for CommunicationServiceManagementClient. +This package contains an isomorphic SDK (runs both in Node.js and in browsers) for CommunicationServiceManagementClient. ### Currently supported environments -- Node.js version 6.x.x or higher -- Browser JavaScript +- [LTS versions of Node.js](https://nodejs.org/about/releases/) +- Latest versions of Safari, Chrome, Edge, and Firefox. -### How to Install +### Prerequisites +You must have an [Azure subscription](https://azure.microsoft.com/free/). + +### How to install + +To use this SDK in your project, you will need to install two packages. +- `@azure/arm-communication` that contains the client. +- `@azure/identity` that provides different mechanisms for the client to authenticate your requests using Azure Active Directory. + +Install both packages using the below command: ```bash -npm install @azure/arm-communication +npm install --save @azure/arm-communication @azure/identity ``` +> **Note**: You may have used either `@azure/ms-rest-nodeauth` or `@azure/ms-rest-browserauth` in the past. These packages are in maintenance mode receiving critical bug fixes, but no new features. +If you are on a [Node.js that has LTS status](https://nodejs.org/about/releases/), or are writing a client side browser application, we strongly encourage you to upgrade to `@azure/identity` which uses the latest versions of Azure Active Directory and MSAL APIs and provides more authentication options. + ### How to use -#### nodejs - client creation and list operations as an example written in TypeScript. +- If you are writing a client side browser application, + - Follow the instructions in the section on Authenticating client side browser applications in [Azure Identity examples](https://aka.ms/azsdk/js/identity/examples) to register your application in the Microsoft identity platform and set the right permissions. + - Copy the client ID and tenant ID from the Overview section of your app registration in Azure portal and use it in the browser sample below. +- If you are writing a server side application, + - [Select a credential from `@azure/identity` based on the authentication method of your choice](https://aka.ms/azsdk/js/identity/examples) + - Complete the set up steps required by the credential if any. + - Use the credential you picked in the place of `DefaultAzureCredential` in the Node.js sample below. -##### Install @azure/ms-rest-nodeauth +In the below samples, we pass the credential and the Azure subscription id to instantiate the client. +Once the client is created, explore the operations on it either in your favorite editor or in our [API reference documentation](https://docs.microsoft.com/javascript/api) to get started. -- Please install minimum version of `"@azure/ms-rest-nodeauth": "^3.0.0"`. -```bash -npm install @azure/ms-rest-nodeauth@"^3.0.0" -``` +#### nodejs - Authentication, client creation, and list operations as an example written in JavaScript. ##### Sample code -While the below sample uses the interactive login, other authentication options can be found in the [README.md file of @azure/ms-rest-nodeauth](https://www.npmjs.com/package/@azure/ms-rest-nodeauth) package -```typescript -const msRestNodeAuth = require("@azure/ms-rest-nodeauth"); +```javascript +const { DefaultAzureCredential } = require("@azure/identity"); const { CommunicationServiceManagementClient } = require("@azure/arm-communication"); const subscriptionId = process.env["AZURE_SUBSCRIPTION_ID"]; -msRestNodeAuth.interactiveLogin().then((creds) => { - const client = new CommunicationServiceManagementClient(creds, subscriptionId); - client.operations.list().then((result) => { - console.log("The result is:"); - console.log(result); - }); +// Use `DefaultAzureCredential` or any other credential of your choice based on https://aka.ms/azsdk/js/identity/examples +// Please note that you can also use credentials from the `@azure/ms-rest-nodeauth` package instead. +const creds = new DefaultAzureCredential(); +const client = new CommunicationServiceManagementClient(creds, subscriptionId); + +client.operations.list().then((result) => { + console.log("The result is:"); + console.log(result); }).catch((err) => { + console.log("An error occurred:"); console.error(err); }); ``` -#### browser - Authentication, client creation and list operations as an example written in JavaScript. - -##### Install @azure/ms-rest-browserauth +#### browser - Authentication, client creation, and list operations as an example written in JavaScript. -```bash -npm install @azure/ms-rest-browserauth -``` +In browser applications, we recommend using the `InteractiveBrowserCredential` that interactively authenticates using the default system browser. + - See [Single-page application: App registration guide](https://docs.microsoft.com/azure/active-directory/develop/scenario-spa-app-registration) to configure your app registration for the browser. + - Note down the client Id from the previous step and use it in the browser sample below. ##### Sample code -See https://github.com/Azure/ms-rest-browserauth to learn how to authenticate to Azure in the browser. - - index.html + ```html @azure/arm-communication sample - - + diff --git a/sdk/communication/arm-communication/package.json b/sdk/communication/arm-communication/package.json index e2098d0bff19..fd787d7dbae8 100644 --- a/sdk/communication/arm-communication/package.json +++ b/sdk/communication/arm-communication/package.json @@ -2,10 +2,11 @@ "name": "@azure/arm-communication", "author": "Microsoft Corporation", "description": "CommunicationServiceManagementClient Library with typescript type definitions for node.js and browser.", - "version": "2.0.0", + "version": "2.1.0", "dependencies": { - "@azure/ms-rest-azure-js": "^2.0.1", - "@azure/ms-rest-js": "^2.0.4", + "@azure/ms-rest-azure-js": "^2.1.0", + "@azure/ms-rest-js": "^2.2.0", + "@azure/core-auth": "^1.1.4", "tslib": "^1.10.0" }, "keywords": [ @@ -20,7 +21,7 @@ "module": "./esm/communicationServiceManagementClient.js", "types": "./esm/communicationServiceManagementClient.d.ts", "devDependencies": { - "typescript": "^3.5.3", + "typescript": "^3.6.0", "rollup": "^1.18.0", "rollup-plugin-node-resolve": "^5.2.0", "rollup-plugin-sourcemaps": "^0.4.2", diff --git a/sdk/communication/arm-communication/src/communicationServiceManagementClient.ts b/sdk/communication/arm-communication/src/communicationServiceManagementClient.ts index 4e5cad89ba86..fc437ea41185 100644 --- a/sdk/communication/arm-communication/src/communicationServiceManagementClient.ts +++ b/sdk/communication/arm-communication/src/communicationServiceManagementClient.ts @@ -8,6 +8,7 @@ */ import * as msRest from "@azure/ms-rest-js"; +import { TokenCredential } from "@azure/core-auth"; import * as Models from "./models"; import * as Mappers from "./models/mappers"; import * as operations from "./operations"; @@ -22,11 +23,16 @@ class CommunicationServiceManagementClient extends CommunicationServiceManagemen /** * Initializes a new instance of the CommunicationServiceManagementClient class. - * @param credentials Credentials needed for the client to connect to Azure. + * @param credentials Credentials needed for the client to connect to Azure. Credentials + * implementing the TokenCredential interface from the @azure/identity package are recommended. For + * more information about these credentials, see + * {@link https://www.npmjs.com/package/@azure/identity}. Credentials implementing the + * ServiceClientCredentials interface from the older packages @azure/ms-rest-nodeauth and + * @azure/ms-rest-browserauth are also supported. * @param subscriptionId The ID of the target subscription. * @param [options] The parameter options */ - constructor(credentials: msRest.ServiceClientCredentials, subscriptionId: string, options?: Models.CommunicationServiceManagementClientOptions) { + constructor(credentials: msRest.ServiceClientCredentials | TokenCredential, subscriptionId: string, options?: Models.CommunicationServiceManagementClientOptions) { super(credentials, subscriptionId, options); this.operations = new operations.Operations(this); this.communicationService = new operations.CommunicationService(this); diff --git a/sdk/communication/arm-communication/src/communicationServiceManagementClientContext.ts b/sdk/communication/arm-communication/src/communicationServiceManagementClientContext.ts index ffb1a34ea68c..ff2a71850cb3 100644 --- a/sdk/communication/arm-communication/src/communicationServiceManagementClientContext.ts +++ b/sdk/communication/arm-communication/src/communicationServiceManagementClientContext.ts @@ -9,23 +9,29 @@ import * as Models from "./models"; import * as msRest from "@azure/ms-rest-js"; +import { TokenCredential } from "@azure/core-auth"; import * as msRestAzure from "@azure/ms-rest-azure-js"; const packageName = "@azure/arm-communication"; -const packageVersion = "2.0.0"; +const packageVersion = "2.1.0"; export class CommunicationServiceManagementClientContext extends msRestAzure.AzureServiceClient { - credentials: msRest.ServiceClientCredentials; + credentials: msRest.ServiceClientCredentials | TokenCredential; subscriptionId: string; apiVersion?: string; /** * Initializes a new instance of the CommunicationServiceManagementClient class. - * @param credentials Credentials needed for the client to connect to Azure. + * @param credentials Credentials needed for the client to connect to Azure. Credentials + * implementing the TokenCredential interface from the @azure/identity package are recommended. For + * more information about these credentials, see + * {@link https://www.npmjs.com/package/@azure/identity}. Credentials implementing the + * ServiceClientCredentials interface from the older packages @azure/ms-rest-nodeauth and + * @azure/ms-rest-browserauth are also supported. * @param subscriptionId The ID of the target subscription. * @param [options] The parameter options */ - constructor(credentials: msRest.ServiceClientCredentials, subscriptionId: string, options?: Models.CommunicationServiceManagementClientOptions) { + constructor(credentials: msRest.ServiceClientCredentials | TokenCredential, subscriptionId: string, options?: Models.CommunicationServiceManagementClientOptions) { if (credentials == undefined) { throw new Error('\'credentials\' cannot be null.'); } diff --git a/sdk/communication/communication-chat/package.json b/sdk/communication/communication-chat/package.json index 2c68cb6223fa..d646a102ae89 100644 --- a/sdk/communication/communication-chat/package.json +++ b/sdk/communication/communication-chat/package.json @@ -69,7 +69,7 @@ "@azure/communication-signaling": "1.0.0-beta.5", "@azure/core-auth": "^1.3.0", "@azure/core-http": "^1.2.0", - "@azure/core-tracing": "1.0.0-preview.11", + "@azure/core-tracing": "1.0.0-preview.12", "@azure/logger": "^1.0.0", "events": "^3.0.0", "tslib": "^2.2.0", diff --git a/sdk/communication/communication-common/package.json b/sdk/communication/communication-common/package.json index 63a61506ce99..92b999b32e86 100644 --- a/sdk/communication/communication-common/package.json +++ b/sdk/communication/communication-common/package.json @@ -66,7 +66,7 @@ "@azure/abort-controller": "^1.0.0", "@azure/core-auth": "^1.3.0", "@azure/core-http": "^1.2.0", - "@azure/core-tracing": "1.0.0-preview.11", + "@azure/core-tracing": "1.0.0-preview.12", "events": "^3.0.0", "jwt-decode": "~2.2.0", "tslib": "^2.2.0" diff --git a/sdk/communication/communication-common/src/credential/communicationAccessKeyCredentialPolicy.ts b/sdk/communication/communication-common/src/credential/communicationAccessKeyCredentialPolicy.ts index 502017abec82..1e28dae030b0 100644 --- a/sdk/communication/communication-common/src/credential/communicationAccessKeyCredentialPolicy.ts +++ b/sdk/communication/communication-common/src/credential/communicationAccessKeyCredentialPolicy.ts @@ -58,7 +58,7 @@ class CommunicationAccessKeyCredentialPolicy extends BaseRequestPolicy { const verb = webResource.method.toUpperCase(); const utcNow = new Date().toUTCString(); const contentHash = await shaHash(webResource.body || ""); - const dateHeader = isNode ? "date" : "x-ms-date"; + const dateHeader = "x-ms-date"; const signedHeaders = `${dateHeader};host;x-ms-content-sha256`; const url = URLBuilder.parse(webResource.url); diff --git a/sdk/communication/communication-identity/package.json b/sdk/communication/communication-identity/package.json index 8cbfa80e95de..70ffa5434c30 100644 --- a/sdk/communication/communication-identity/package.json +++ b/sdk/communication/communication-identity/package.json @@ -79,7 +79,7 @@ "@azure/core-http": "^1.2.0", "@azure/core-lro": "^1.0.2", "@azure/core-paging": "^1.1.1", - "@azure/core-tracing": "1.0.0-preview.11", + "@azure/core-tracing": "1.0.0-preview.12", "@azure/logger": "^1.0.0", "events": "^3.0.0", "tslib": "^2.2.0" diff --git a/sdk/communication/communication-identity/test/public/communicationIdentityClient.mocked.spec.ts b/sdk/communication/communication-identity/test/public/communicationIdentityClient.mocked.spec.ts index a83e1412484d..4817709b686d 100644 --- a/sdk/communication/communication-identity/test/public/communicationIdentityClient.mocked.spec.ts +++ b/sdk/communication/communication-identity/test/public/communicationIdentityClient.mocked.spec.ts @@ -13,7 +13,7 @@ import { TestCommunicationIdentityClient } from "./utils/testCommunicationIdenti import { exchangeTeamsTokenHttpClient, getTokenHttpClient } from "./utils/mockHttpClients"; describe("CommunicationIdentityClient [Mocked]", () => { - const dateHeader = isNode ? "date" : "x-ms-date"; + const dateHeader = "x-ms-date"; const user: CommunicationUserIdentifier = { communicationUserId: "ACS_ID" }; afterEach(() => { diff --git a/sdk/communication/communication-network-traversal/package.json b/sdk/communication/communication-network-traversal/package.json index c6ebebe4e203..7b3076ccc711 100644 --- a/sdk/communication/communication-network-traversal/package.json +++ b/sdk/communication/communication-network-traversal/package.json @@ -77,7 +77,7 @@ "@azure/communication-common": "^1.0.0", "@azure/core-auth": "^1.3.0", "@azure/core-http": "^1.2.0", - "@azure/core-tracing": "1.0.0-preview.11", + "@azure/core-tracing": "1.0.0-preview.12", "@azure/logger": "^1.0.0", "events": "^3.0.0", "tslib": "^2.2.0" diff --git a/sdk/communication/communication-phone-numbers/package.json b/sdk/communication/communication-phone-numbers/package.json index 4c4d7611e0ed..94b1226c93c6 100644 --- a/sdk/communication/communication-phone-numbers/package.json +++ b/sdk/communication/communication-phone-numbers/package.json @@ -67,7 +67,7 @@ "@azure/core-http": "^1.2.0", "@azure/core-lro": "^1.0.2", "@azure/core-paging": "^1.1.1", - "@azure/core-tracing": "1.0.0-preview.11", + "@azure/core-tracing": "1.0.0-preview.12", "@azure/logger": "^1.0.0", "events": "^3.0.0", "tslib": "^2.2.0" diff --git a/sdk/communication/communication-phone-numbers/recordings/browsers/phonenumbersclient__get_phone_number/recording_can_get_a_purchased_phone_number.json b/sdk/communication/communication-phone-numbers/recordings/browsers/phonenumbersclient__get_phone_number/recording_can_get_a_purchased_phone_number.json index 46ae9f72f3a4..eed58ef6f638 100644 --- a/sdk/communication/communication-phone-numbers/recordings/browsers/phonenumbersclient__get_phone_number/recording_can_get_a_purchased_phone_number.json +++ b/sdk/communication/communication-phone-numbers/recordings/browsers/phonenumbersclient__get_phone_number/recording_can_get_a_purchased_phone_number.json @@ -8,17 +8,17 @@ }, "requestBody": null, "status": 200, - "response": "{\"id\":\"14155550100\",\"phoneNumber\":\"+14155550100\",\"countryCode\":\"US\",\"phoneNumberType\":\"tollFree\",\"capabilities\":{\"calling\":\"none\",\"sms\":\"outbound\"},\"assignmentType\":\"application\",\"purchaseDate\":\"2021-03-09T15:01:55.0949003+00:00\",\"cost\":{\"amount\":2.0,\"currencyCode\":\"USD\",\"billingFrequency\":\"monthly\"}}", + "response": "{\"id\":\"14155550100\",\"phoneNumber\":\"+14155550100\",\"countryCode\":\"US\",\"phoneNumberType\":\"tollFree\",\"capabilities\":{\"calling\":\"none\",\"sms\":\"outbound\"},\"assignmentType\":\"application\",\"purchaseDate\":\"2021-03-09T15:03:04.7513808+00:00\",\"cost\":{\"amount\":2.0,\"currencyCode\":\"USD\",\"billingFrequency\":\"monthly\"}}", "responseHeaders": { "api-supported-versions": "2021-03-07", "content-type": "application/json; charset=utf-8", - "date": "Tue, 01 Jun 2021 16:13:17 GMT", - "ms-cv": "6ChZTTXvHEeRtFNpl7OP3w.0", + "date": "Fri, 18 Jun 2021 16:38:55 GMT", + "ms-cv": "R4GWZrAg1UCUw0Vf0xqNBw.0", "request-context": "appId=", "status": "200", - "x-azure-ref": "0nFy2YAAAAAAGsRbCOzR3R5TAhHzDcrp5WVZSMzBFREdFMDMyMQA5ZmM3YjUxOS1hOGNjLTRmODktOTM1ZS1jOTE0OGFlMDllODE=", + "x-azure-ref": "0H8zMYAAAAADvV2KoWrgAR5NAw11afSD9WVZSMzBFREdFMDMxMAA5ZmM3YjUxOS1hOGNjLTRmODktOTM1ZS1jOTE0OGFlMDllODE=", "x-cache": "CONFIG_NOCACHE", - "x-processing-time": "1074ms" + "x-processing-time": "1105ms" } } ], @@ -26,5 +26,5 @@ "uniqueName": {}, "newDate": {} }, - "hash": "9b48c99747b8d694d1693146c9f46244" + "hash": "6ae4c43f2e4aa30856ac043ba5656ee5" } \ No newline at end of file diff --git a/sdk/communication/communication-phone-numbers/recordings/browsers/phonenumbersclient__get_phone_number/recording_errors_if_phone_number_not_found.json b/sdk/communication/communication-phone-numbers/recordings/browsers/phonenumbersclient__get_phone_number/recording_errors_if_phone_number_not_found.json index 292b25d5e716..7095aa78f56a 100644 --- a/sdk/communication/communication-phone-numbers/recordings/browsers/phonenumbersclient__get_phone_number/recording_errors_if_phone_number_not_found.json +++ b/sdk/communication/communication-phone-numbers/recordings/browsers/phonenumbersclient__get_phone_number/recording_errors_if_phone_number_not_found.json @@ -8,17 +8,17 @@ }, "requestBody": null, "status": 404, - "response": "{\"error\":{\"code\":\"PhoneNumberNotFound\",\"message\":\"The specified phone number +14155550100 cannot be found.\",\"target\":\"phonenumber\"}}", + "response": "{\"error\":{\"code\":\"NotFound\",\"message\":\"Input phoneNumber +14155550100 cannot be found.\",\"target\":\"phonenumber\"}}", "responseHeaders": { "api-supported-versions": "2021-03-07", "content-type": "application/json", - "date": "Tue, 01 Jun 2021 16:13:18 GMT", - "ms-cv": "2r+SvqDDbEi2+zhSjnrAWw.0", + "date": "Fri, 18 Jun 2021 16:38:56 GMT", + "ms-cv": "9bMvqBAnQkejBpqaGzO5Sw.0", "request-context": "appId=", "status": "404", - "x-azure-ref": "0nVy2YAAAAAB1mBqGyi+VT6YBwebKoRwJWVZSMzBFREdFMDMyMQA5ZmM3YjUxOS1hOGNjLTRmODktOTM1ZS1jOTE0OGFlMDllODE=", + "x-azure-ref": "0IMzMYAAAAAAysZHi4x8YR63Eg1oivYSlWVZSMzBFREdFMDMxMAA5ZmM3YjUxOS1hOGNjLTRmODktOTM1ZS1jOTE0OGFlMDllODE=", "x-cache": "CONFIG_NOCACHE", - "x-processing-time": "952ms" + "x-processing-time": "375ms" } } ], @@ -26,5 +26,5 @@ "uniqueName": {}, "newDate": {} }, - "hash": "90e064cb005516c2fa1918bdcded2120" + "hash": "6f59980391ba29cbfe24ed7a38b9500d" } \ No newline at end of file diff --git a/sdk/communication/communication-phone-numbers/recordings/browsers/phonenumbersclient__get_phone_number_aad/recording_can_get_a_purchased_phone_number.json b/sdk/communication/communication-phone-numbers/recordings/browsers/phonenumbersclient__get_phone_number_aad/recording_can_get_a_purchased_phone_number.json index c0f4b523411d..25096db9b3df 100644 --- a/sdk/communication/communication-phone-numbers/recordings/browsers/phonenumbersclient__get_phone_number_aad/recording_can_get_a_purchased_phone_number.json +++ b/sdk/communication/communication-phone-numbers/recordings/browsers/phonenumbersclient__get_phone_number_aad/recording_can_get_a_purchased_phone_number.json @@ -4,23 +4,23 @@ "method": "POST", "url": "https://endpoint/SomeTenantId/oauth2/v2.0/token", "query": {}, - "requestBody": "response_type=token&grant_type=client_credentials&client_id=SomeClientId&client_secret=SomeClientSecret&scope=https%3A%2F%2Fcommunication.azure.com%2F%2F.default", + "requestBody": "response_type=token&grant_type=client_credentials&client_id=SomeClientId&client_secret=SomeClientSecret&scope=https%3A%2F%2Fsanitized%2F", "status": 200, "response": "{\"token_type\":\"Bearer\",\"expires_in\":86399,\"ext_expires_in\":86399,\"access_token\":\"access_token\"}", "responseHeaders": { "cache-control": "no-store, no-cache", "content-length": "1327", "content-type": "application/json; charset=utf-8", - "date": "Tue, 01 Jun 2021 16:13:10 GMT", + "date": "Fri, 18 Jun 2021 16:38:52 GMT", "expires": "-1", "nel": "{\"report_to\":\"network-errors\",\"max_age\":86400,\"success_fraction\":0.001,\"failure_fraction\":1.0}", "p3p": "CP=\"DSP CUR OTPi IND OTRi ONL FIN\"", "pragma": "no-cache", "referrer-policy": "strict-origin-when-cross-origin", - "report-to": "{\"group\":\"network-errors\",\"max_age\":86400,\"endpoints\":[{\"url\":\"https://endpoint/api/report?catId=GW+estsfd+chi\"}]}", + "report-to": "{\"group\":\"network-errors\",\"max_age\":86400,\"endpoints\":[{\"url\":\"https://endpoint/api/report?catId=GW+estsfd+est\"}]}", "strict-transport-security": "max-age=31536000; includeSubDomains", "x-content-type-options": "nosniff", - "x-ms-ests-server": "2.1.11722.26 - NCUS ProdSlices", + "x-ms-ests-server": "2.1.11829.4 - WUS2 ProdSlices", "x-ms-request-id": "sanitized" } }, @@ -32,17 +32,17 @@ }, "requestBody": null, "status": 200, - "response": "{\"id\":\"14155550100\",\"phoneNumber\":\"+14155550100\",\"countryCode\":\"US\",\"phoneNumberType\":\"tollFree\",\"capabilities\":{\"calling\":\"none\",\"sms\":\"outbound\"},\"assignmentType\":\"application\",\"purchaseDate\":\"2021-03-09T15:01:55.0949003+00:00\",\"cost\":{\"amount\":2.0,\"currencyCode\":\"USD\",\"billingFrequency\":\"monthly\"}}", + "response": "{\"id\":\"14155550100\",\"phoneNumber\":\"+14155550100\",\"countryCode\":\"US\",\"phoneNumberType\":\"tollFree\",\"capabilities\":{\"calling\":\"none\",\"sms\":\"outbound\"},\"assignmentType\":\"application\",\"purchaseDate\":\"2021-03-09T15:03:04.7513808+00:00\",\"cost\":{\"amount\":2.0,\"currencyCode\":\"USD\",\"billingFrequency\":\"monthly\"}}", "responseHeaders": { "api-supported-versions": "2021-03-07", "content-type": "application/json; charset=utf-8", - "date": "Tue, 01 Jun 2021 16:13:15 GMT", - "ms-cv": "UoiZEntyqU+5422iYmwaJw.0", + "date": "Fri, 18 Jun 2021 16:38:53 GMT", + "ms-cv": "X7KoivmRI0ORvOvQiRe5Yw.0", "request-context": "appId=", "status": "200", - "x-azure-ref": "0lly2YAAAAACjlj+c38MrR56259OJBCz9WVZSMzBFREdFMDMyMQA5ZmM3YjUxOS1hOGNjLTRmODktOTM1ZS1jOTE0OGFlMDllODE=", + "x-azure-ref": "0HczMYAAAAADurcVbQQZMT6IQ1w5A9EM3WVZSMzBFREdFMDMxMAA5ZmM3YjUxOS1hOGNjLTRmODktOTM1ZS1jOTE0OGFlMDllODE=", "x-cache": "CONFIG_NOCACHE", - "x-processing-time": "4870ms" + "x-processing-time": "1050ms" } } ], @@ -50,5 +50,5 @@ "uniqueName": {}, "newDate": {} }, - "hash": "9b48c99747b8d694d1693146c9f46244" + "hash": "6ae4c43f2e4aa30856ac043ba5656ee5" } \ No newline at end of file diff --git a/sdk/communication/communication-phone-numbers/recordings/browsers/phonenumbersclient__get_phone_number_aad/recording_errors_if_phone_number_not_found.json b/sdk/communication/communication-phone-numbers/recordings/browsers/phonenumbersclient__get_phone_number_aad/recording_errors_if_phone_number_not_found.json index 10b783aa51e1..1bf17e39b33d 100644 --- a/sdk/communication/communication-phone-numbers/recordings/browsers/phonenumbersclient__get_phone_number_aad/recording_errors_if_phone_number_not_found.json +++ b/sdk/communication/communication-phone-numbers/recordings/browsers/phonenumbersclient__get_phone_number_aad/recording_errors_if_phone_number_not_found.json @@ -4,23 +4,23 @@ "method": "POST", "url": "https://endpoint/SomeTenantId/oauth2/v2.0/token", "query": {}, - "requestBody": "response_type=token&grant_type=client_credentials&client_id=SomeClientId&client_secret=SomeClientSecret&scope=https%3A%2F%2Fcommunication.azure.com%2F%2F.default", + "requestBody": "response_type=token&grant_type=client_credentials&client_id=SomeClientId&client_secret=SomeClientSecret&scope=https%3A%2F%2Fsanitized%2F", "status": 200, "response": "{\"token_type\":\"Bearer\",\"expires_in\":86399,\"ext_expires_in\":86399,\"access_token\":\"access_token\"}", "responseHeaders": { "cache-control": "no-store, no-cache", "content-length": "1327", "content-type": "application/json; charset=utf-8", - "date": "Tue, 01 Jun 2021 16:13:15 GMT", + "date": "Fri, 18 Jun 2021 16:38:54 GMT", "expires": "-1", "nel": "{\"report_to\":\"network-errors\",\"max_age\":86400,\"success_fraction\":0.001,\"failure_fraction\":1.0}", "p3p": "CP=\"DSP CUR OTPi IND OTRi ONL FIN\"", "pragma": "no-cache", "referrer-policy": "strict-origin-when-cross-origin", - "report-to": "{\"group\":\"network-errors\",\"max_age\":86400,\"endpoints\":[{\"url\":\"https://endpoint/api/report?catId=GW+estsfd+chi\"}]}", + "report-to": "{\"group\":\"network-errors\",\"max_age\":86400,\"endpoints\":[{\"url\":\"https://endpoint/api/report?catId=GW+estsfd+est\"}]}", "strict-transport-security": "max-age=31536000; includeSubDomains", "x-content-type-options": "nosniff", - "x-ms-ests-server": "2.1.11722.26 - SCUS ProdSlices", + "x-ms-ests-server": "2.1.11829.4 - WUS2 ProdSlices", "x-ms-request-id": "sanitized" } }, @@ -32,17 +32,17 @@ }, "requestBody": null, "status": 404, - "response": "{\"error\":{\"code\":\"PhoneNumberNotFound\",\"message\":\"The specified phone number +14155550100 cannot be found.\",\"target\":\"phonenumber\"}}", + "response": "{\"error\":{\"code\":\"NotFound\",\"message\":\"Input phoneNumber +14155550100 cannot be found.\",\"target\":\"phonenumber\"}}", "responseHeaders": { "api-supported-versions": "2021-03-07", "content-type": "application/json", - "date": "Tue, 01 Jun 2021 16:13:16 GMT", - "ms-cv": "dry4h3yhHkSyYFJ+91SzcQ.0", + "date": "Fri, 18 Jun 2021 16:38:54 GMT", + "ms-cv": "RJENxzbm60KRcH6zKkveOQ.0", "request-context": "appId=", "status": "404", - "x-azure-ref": "0nFy2YAAAAACWQNDhSRKpSrTiqZ4jEkq5WVZSMzBFREdFMDMyMQA5ZmM3YjUxOS1hOGNjLTRmODktOTM1ZS1jOTE0OGFlMDllODE=", + "x-azure-ref": "0HszMYAAAAABTQe7SBlVDQrRXkRelezQPWVZSMzBFREdFMDMxMAA5ZmM3YjUxOS1hOGNjLTRmODktOTM1ZS1jOTE0OGFlMDllODE=", "x-cache": "CONFIG_NOCACHE", - "x-processing-time": "452ms" + "x-processing-time": "343ms" } } ], @@ -50,5 +50,5 @@ "uniqueName": {}, "newDate": {} }, - "hash": "90e064cb005516c2fa1918bdcded2120" + "hash": "6f59980391ba29cbfe24ed7a38b9500d" } \ No newline at end of file diff --git a/sdk/communication/communication-phone-numbers/recordings/browsers/phonenumbersclient__lists/recording_can_list_all_purchased_phone_numbers.json b/sdk/communication/communication-phone-numbers/recordings/browsers/phonenumbersclient__lists/recording_can_list_all_purchased_phone_numbers.json index 9c80c0277f1a..f42666e8f8c0 100644 --- a/sdk/communication/communication-phone-numbers/recordings/browsers/phonenumbersclient__lists/recording_can_list_all_purchased_phone_numbers.json +++ b/sdk/communication/communication-phone-numbers/recordings/browsers/phonenumbersclient__lists/recording_can_list_all_purchased_phone_numbers.json @@ -9,17 +9,17 @@ }, "requestBody": null, "status": 200, - "response": "{\"phoneNumbers\":[{\"id\":\"14155550100\",\"phoneNumber\":\"+14155550100\",\"countryCode\":\"US\",\"phoneNumberType\":\"geographic\",\"capabilities\":{\"calling\":\"inbound+outbound\",\"sms\":\"none\"},\"assignmentType\":\"application\",\"purchaseDate\":\"2021-04-14T00:23:52.1861991+00:00\",\"cost\":{\"amount\":1.0,\"currencyCode\":\"USD\",\"billingFrequency\":\"monthly\"}},{\"id\":\"14155550100\",\"phoneNumber\":\"+14155550100\",\"countryCode\":\"US\",\"phoneNumberType\":\"geographic\",\"capabilities\":{\"calling\":\"outbound\",\"sms\":\"none\"},\"assignmentType\":\"application\",\"purchaseDate\":\"2021-04-06T23:27:52.858607+00:00\",\"cost\":{\"amount\":1.0,\"currencyCode\":\"USD\",\"billingFrequency\":\"monthly\"}},{\"id\":\"14155550100\",\"phoneNumber\":\"+14155550100\",\"countryCode\":\"US\",\"phoneNumberType\":\"tollFree\",\"capabilities\":{\"calling\":\"none\",\"sms\":\"outbound\"},\"assignmentType\":\"application\",\"purchaseDate\":\"2021-05-25T00:03:06.2985305+00:00\",\"cost\":{\"amount\":2.0,\"currencyCode\":\"USD\",\"billingFrequency\":\"monthly\"}},{\"id\":\"14155550100\",\"phoneNumber\":\"+14155550100\",\"countryCode\":\"US\",\"phoneNumberType\":\"tollFree\",\"capabilities\":{\"calling\":\"none\",\"sms\":\"outbound\"},\"assignmentType\":\"application\",\"purchaseDate\":\"2021-05-24T23:39:11.2079613+00:00\",\"cost\":{\"amount\":2.0,\"currencyCode\":\"USD\",\"billingFrequency\":\"monthly\"}},{\"id\":\"14155550100\",\"phoneNumber\":\"+14155550100\",\"countryCode\":\"US\",\"phoneNumberType\":\"tollFree\",\"capabilities\":{\"calling\":\"inbound\",\"sms\":\"inbound+outbound\"},\"assignmentType\":\"application\",\"purchaseDate\":\"2021-05-26T23:18:22.4715623+00:00\",\"cost\":{\"amount\":2.0,\"currencyCode\":\"USD\",\"billingFrequency\":\"monthly\"}},{\"id\":\"14155550100\",\"phoneNumber\":\"+14155550100\",\"countryCode\":\"US\",\"phoneNumberType\":\"tollFree\",\"capabilities\":{\"calling\":\"inbound\",\"sms\":\"inbound+outbound\"},\"assignmentType\":\"application\",\"purchaseDate\":\"2021-05-27T03:05:50.816041+00:00\",\"cost\":{\"amount\":2.0,\"currencyCode\":\"USD\",\"billingFrequency\":\"monthly\"}},{\"id\":\"14155550100\",\"phoneNumber\":\"+14155550100\",\"countryCode\":\"US\",\"phoneNumberType\":\"tollFree\",\"capabilities\":{\"calling\":\"inbound\",\"sms\":\"inbound+outbound\"},\"assignmentType\":\"application\",\"purchaseDate\":\"2021-02-10T17:52:41.818335+00:00\",\"cost\":{\"amount\":2.0,\"currencyCode\":\"USD\",\"billingFrequency\":\"monthly\"}},{\"id\":\"14155550100\",\"phoneNumber\":\"+14155550100\",\"countryCode\":\"US\",\"phoneNumberType\":\"tollFree\",\"capabilities\":{\"calling\":\"none\",\"sms\":\"inbound+outbound\"},\"assignmentType\":\"application\",\"purchaseDate\":\"2021-02-10T18:01:46.4199999+00:00\",\"cost\":{\"amount\":2.0,\"currencyCode\":\"USD\",\"billingFrequency\":\"monthly\"}},{\"id\":\"14155550100\",\"phoneNumber\":\"+14155550100\",\"countryCode\":\"US\",\"phoneNumberType\":\"tollFree\",\"capabilities\":{\"calling\":\"none\",\"sms\":\"outbound\"},\"assignmentType\":\"application\",\"purchaseDate\":\"2021-03-09T15:01:55.0949003+00:00\",\"cost\":{\"amount\":2.0,\"currencyCode\":\"USD\",\"billingFrequency\":\"monthly\"}},{\"id\":\"14155550100\",\"phoneNumber\":\"+14155550100\",\"countryCode\":\"US\",\"phoneNumberType\":\"tollFree\",\"capabilities\":{\"calling\":\"outbound\",\"sms\":\"outbound\"},\"assignmentType\":\"application\",\"purchaseDate\":\"2021-03-09T15:03:04.7513808+00:00\",\"cost\":{\"amount\":2.0,\"currencyCode\":\"USD\",\"billingFrequency\":\"monthly\"}},{\"id\":\"14155550100\",\"phoneNumber\":\"+14155550100\",\"countryCode\":\"US\",\"phoneNumberType\":\"tollFree\",\"capabilities\":{\"calling\":\"outbound\",\"sms\":\"inbound+outbound\"},\"assignmentType\":\"application\",\"purchaseDate\":\"2000-01-01T00:00:00+00:00\",\"cost\":{\"amount\":2.0,\"currencyCode\":\"USD\",\"billingFrequency\":\"monthly\"}}]}", + "response": "{\"phoneNumbers\":[{\"id\":\"14155550100\",\"phoneNumber\":\"+14155550100\",\"countryCode\":\"US\",\"phoneNumberType\":\"geographic\",\"capabilities\":{\"calling\":\"inbound+outbound\",\"sms\":\"none\"},\"assignmentType\":\"application\",\"purchaseDate\":\"2021-04-14T00:23:52.1861991+00:00\",\"cost\":{\"amount\":1.0,\"currencyCode\":\"USD\",\"billingFrequency\":\"monthly\"}},{\"id\":\"14155550100\",\"phoneNumber\":\"+14155550100\",\"countryCode\":\"US\",\"phoneNumberType\":\"geographic\",\"capabilities\":{\"calling\":\"outbound\",\"sms\":\"none\"},\"assignmentType\":\"application\",\"purchaseDate\":\"2021-04-06T23:27:52.858607+00:00\",\"cost\":{\"amount\":1.0,\"currencyCode\":\"USD\",\"billingFrequency\":\"monthly\"}},{\"id\":\"14155550100\",\"phoneNumber\":\"+14155550100\",\"countryCode\":\"US\",\"phoneNumberType\":\"tollFree\",\"capabilities\":{\"calling\":\"none\",\"sms\":\"outbound\"},\"assignmentType\":\"application\",\"purchaseDate\":\"2021-05-25T00:03:06.2985305+00:00\",\"cost\":{\"amount\":2.0,\"currencyCode\":\"USD\",\"billingFrequency\":\"monthly\"}},{\"id\":\"14155550100\",\"phoneNumber\":\"+14155550100\",\"countryCode\":\"US\",\"phoneNumberType\":\"tollFree\",\"capabilities\":{\"calling\":\"none\",\"sms\":\"outbound\"},\"assignmentType\":\"application\",\"purchaseDate\":\"2021-05-24T23:39:11.2079613+00:00\",\"cost\":{\"amount\":2.0,\"currencyCode\":\"USD\",\"billingFrequency\":\"monthly\"}},{\"id\":\"14155550100\",\"phoneNumber\":\"+14155550100\",\"countryCode\":\"US\",\"phoneNumberType\":\"tollFree\",\"capabilities\":{\"calling\":\"inbound\",\"sms\":\"inbound+outbound\"},\"assignmentType\":\"application\",\"purchaseDate\":\"2021-05-26T23:18:22.4715623+00:00\",\"cost\":{\"amount\":2.0,\"currencyCode\":\"USD\",\"billingFrequency\":\"monthly\"}},{\"id\":\"14155550100\",\"phoneNumber\":\"+14155550100\",\"countryCode\":\"US\",\"phoneNumberType\":\"tollFree\",\"capabilities\":{\"calling\":\"inbound\",\"sms\":\"inbound+outbound\"},\"assignmentType\":\"application\",\"purchaseDate\":\"2021-05-27T03:05:50.816041+00:00\",\"cost\":{\"amount\":2.0,\"currencyCode\":\"USD\",\"billingFrequency\":\"monthly\"}},{\"id\":\"14155550100\",\"phoneNumber\":\"+14155550100\",\"countryCode\":\"US\",\"phoneNumberType\":\"tollFree\",\"capabilities\":{\"calling\":\"outbound\",\"sms\":\"outbound\"},\"assignmentType\":\"application\",\"purchaseDate\":\"2021-02-10T17:52:41.818335+00:00\",\"cost\":{\"amount\":2.0,\"currencyCode\":\"USD\",\"billingFrequency\":\"monthly\"}},{\"id\":\"14155550100\",\"phoneNumber\":\"+14155550100\",\"countryCode\":\"US\",\"phoneNumberType\":\"tollFree\",\"capabilities\":{\"calling\":\"none\",\"sms\":\"inbound+outbound\"},\"assignmentType\":\"application\",\"purchaseDate\":\"2021-02-10T18:01:46.4199999+00:00\",\"cost\":{\"amount\":2.0,\"currencyCode\":\"USD\",\"billingFrequency\":\"monthly\"}},{\"id\":\"14155550100\",\"phoneNumber\":\"+14155550100\",\"countryCode\":\"US\",\"phoneNumberType\":\"tollFree\",\"capabilities\":{\"calling\":\"none\",\"sms\":\"outbound\"},\"assignmentType\":\"application\",\"purchaseDate\":\"2021-03-09T15:01:55.0949003+00:00\",\"cost\":{\"amount\":2.0,\"currencyCode\":\"USD\",\"billingFrequency\":\"monthly\"}},{\"id\":\"14155550100\",\"phoneNumber\":\"+14155550100\",\"countryCode\":\"US\",\"phoneNumberType\":\"tollFree\",\"capabilities\":{\"calling\":\"none\",\"sms\":\"outbound\"},\"assignmentType\":\"application\",\"purchaseDate\":\"2021-03-09T15:03:04.7513808+00:00\",\"cost\":{\"amount\":2.0,\"currencyCode\":\"USD\",\"billingFrequency\":\"monthly\"}},{\"id\":\"14155550100\",\"phoneNumber\":\"+14155550100\",\"countryCode\":\"US\",\"phoneNumberType\":\"tollFree\",\"capabilities\":{\"calling\":\"outbound\",\"sms\":\"inbound+outbound\"},\"assignmentType\":\"application\",\"purchaseDate\":\"2000-01-01T00:00:00+00:00\",\"cost\":{\"amount\":2.0,\"currencyCode\":\"USD\",\"billingFrequency\":\"monthly\"}}]}", "responseHeaders": { "api-supported-versions": "2021-03-07", "content-type": "application/json; charset=utf-8", - "date": "Tue, 01 Jun 2021 16:13:22 GMT", - "ms-cv": "UTybx4M+kU60+C+v6I4S8A.0", + "date": "Fri, 18 Jun 2021 16:38:59 GMT", + "ms-cv": "ev0eI8vIb02Mw9Bk1YS5Wg.0", "request-context": "appId=", "status": "200", - "x-azure-ref": "0oFy2YAAAAADZn/nxyhIKRKhGg11jftIDWVZSMzBFREdFMDMyMQA5ZmM3YjUxOS1hOGNjLTRmODktOTM1ZS1jOTE0OGFlMDllODE=", + "x-azure-ref": "0IszMYAAAAABZJmgvc8ANT4lgye/4RsscWVZSMzBFREdFMDMxMAA5ZmM3YjUxOS1hOGNjLTRmODktOTM1ZS1jOTE0OGFlMDllODE=", "x-cache": "CONFIG_NOCACHE", - "x-processing-time": "1394ms" + "x-processing-time": "1582ms" } } ], @@ -27,5 +27,5 @@ "uniqueName": {}, "newDate": {} }, - "hash": "b5b5bc3aa53df9cf7b960ec1c7c85595" + "hash": "eca17e433a83b791fc096978816d8e48" } \ No newline at end of file diff --git a/sdk/communication/communication-phone-numbers/recordings/browsers/phonenumbersclient__lists_aad/recording_can_list_all_purchased_phone_numbers.json b/sdk/communication/communication-phone-numbers/recordings/browsers/phonenumbersclient__lists_aad/recording_can_list_all_purchased_phone_numbers.json index c603d598e8bd..a3c0e27c1d7f 100644 --- a/sdk/communication/communication-phone-numbers/recordings/browsers/phonenumbersclient__lists_aad/recording_can_list_all_purchased_phone_numbers.json +++ b/sdk/communication/communication-phone-numbers/recordings/browsers/phonenumbersclient__lists_aad/recording_can_list_all_purchased_phone_numbers.json @@ -4,23 +4,23 @@ "method": "POST", "url": "https://endpoint/SomeTenantId/oauth2/v2.0/token", "query": {}, - "requestBody": "response_type=token&grant_type=client_credentials&client_id=SomeClientId&client_secret=SomeClientSecret&scope=https%3A%2F%2Fcommunication.azure.com%2F%2F.default", + "requestBody": "response_type=token&grant_type=client_credentials&client_id=SomeClientId&client_secret=SomeClientSecret&scope=https%3A%2F%2Fsanitized%2F", "status": 200, "response": "{\"token_type\":\"Bearer\",\"expires_in\":86399,\"ext_expires_in\":86399,\"access_token\":\"access_token\"}", "responseHeaders": { "cache-control": "no-store, no-cache", "content-length": "1327", "content-type": "application/json; charset=utf-8", - "date": "Tue, 01 Jun 2021 16:13:18 GMT", + "date": "Fri, 18 Jun 2021 16:38:56 GMT", "expires": "-1", "nel": "{\"report_to\":\"network-errors\",\"max_age\":86400,\"success_fraction\":0.001,\"failure_fraction\":1.0}", "p3p": "CP=\"DSP CUR OTPi IND OTRi ONL FIN\"", "pragma": "no-cache", "referrer-policy": "strict-origin-when-cross-origin", - "report-to": "{\"group\":\"network-errors\",\"max_age\":86400,\"endpoints\":[{\"url\":\"https://endpoint/api/report?catId=GW+estsfd+chi\"}]}", + "report-to": "{\"group\":\"network-errors\",\"max_age\":86400,\"endpoints\":[{\"url\":\"https://endpoint/api/report?catId=GW+estsfd+est\"}]}", "strict-transport-security": "max-age=31536000; includeSubDomains", "x-content-type-options": "nosniff", - "x-ms-ests-server": "2.1.11722.26 - NCUS ProdSlices", + "x-ms-ests-server": "2.1.11829.4 - WUS2 ProdSlices", "x-ms-request-id": "sanitized" } }, @@ -33,17 +33,17 @@ }, "requestBody": null, "status": 200, - "response": "{\"phoneNumbers\":[{\"id\":\"14155550100\",\"phoneNumber\":\"+14155550100\",\"countryCode\":\"US\",\"phoneNumberType\":\"geographic\",\"capabilities\":{\"calling\":\"inbound+outbound\",\"sms\":\"none\"},\"assignmentType\":\"application\",\"purchaseDate\":\"2021-04-14T00:23:52.1861991+00:00\",\"cost\":{\"amount\":1.0,\"currencyCode\":\"USD\",\"billingFrequency\":\"monthly\"}},{\"id\":\"14155550100\",\"phoneNumber\":\"+14155550100\",\"countryCode\":\"US\",\"phoneNumberType\":\"geographic\",\"capabilities\":{\"calling\":\"outbound\",\"sms\":\"none\"},\"assignmentType\":\"application\",\"purchaseDate\":\"2021-04-06T23:27:52.858607+00:00\",\"cost\":{\"amount\":1.0,\"currencyCode\":\"USD\",\"billingFrequency\":\"monthly\"}},{\"id\":\"14155550100\",\"phoneNumber\":\"+14155550100\",\"countryCode\":\"US\",\"phoneNumberType\":\"tollFree\",\"capabilities\":{\"calling\":\"none\",\"sms\":\"outbound\"},\"assignmentType\":\"application\",\"purchaseDate\":\"2021-05-25T00:03:06.2985305+00:00\",\"cost\":{\"amount\":2.0,\"currencyCode\":\"USD\",\"billingFrequency\":\"monthly\"}},{\"id\":\"14155550100\",\"phoneNumber\":\"+14155550100\",\"countryCode\":\"US\",\"phoneNumberType\":\"tollFree\",\"capabilities\":{\"calling\":\"none\",\"sms\":\"outbound\"},\"assignmentType\":\"application\",\"purchaseDate\":\"2021-05-24T23:39:11.2079613+00:00\",\"cost\":{\"amount\":2.0,\"currencyCode\":\"USD\",\"billingFrequency\":\"monthly\"}},{\"id\":\"14155550100\",\"phoneNumber\":\"+14155550100\",\"countryCode\":\"US\",\"phoneNumberType\":\"tollFree\",\"capabilities\":{\"calling\":\"inbound\",\"sms\":\"inbound+outbound\"},\"assignmentType\":\"application\",\"purchaseDate\":\"2021-05-26T23:18:22.4715623+00:00\",\"cost\":{\"amount\":2.0,\"currencyCode\":\"USD\",\"billingFrequency\":\"monthly\"}},{\"id\":\"14155550100\",\"phoneNumber\":\"+14155550100\",\"countryCode\":\"US\",\"phoneNumberType\":\"tollFree\",\"capabilities\":{\"calling\":\"inbound\",\"sms\":\"inbound+outbound\"},\"assignmentType\":\"application\",\"purchaseDate\":\"2021-05-27T03:05:50.816041+00:00\",\"cost\":{\"amount\":2.0,\"currencyCode\":\"USD\",\"billingFrequency\":\"monthly\"}},{\"id\":\"14155550100\",\"phoneNumber\":\"+14155550100\",\"countryCode\":\"US\",\"phoneNumberType\":\"tollFree\",\"capabilities\":{\"calling\":\"inbound\",\"sms\":\"inbound+outbound\"},\"assignmentType\":\"application\",\"purchaseDate\":\"2021-02-10T17:52:41.818335+00:00\",\"cost\":{\"amount\":2.0,\"currencyCode\":\"USD\",\"billingFrequency\":\"monthly\"}},{\"id\":\"14155550100\",\"phoneNumber\":\"+14155550100\",\"countryCode\":\"US\",\"phoneNumberType\":\"tollFree\",\"capabilities\":{\"calling\":\"none\",\"sms\":\"inbound+outbound\"},\"assignmentType\":\"application\",\"purchaseDate\":\"2021-02-10T18:01:46.4199999+00:00\",\"cost\":{\"amount\":2.0,\"currencyCode\":\"USD\",\"billingFrequency\":\"monthly\"}},{\"id\":\"14155550100\",\"phoneNumber\":\"+14155550100\",\"countryCode\":\"US\",\"phoneNumberType\":\"tollFree\",\"capabilities\":{\"calling\":\"none\",\"sms\":\"outbound\"},\"assignmentType\":\"application\",\"purchaseDate\":\"2021-03-09T15:01:55.0949003+00:00\",\"cost\":{\"amount\":2.0,\"currencyCode\":\"USD\",\"billingFrequency\":\"monthly\"}},{\"id\":\"14155550100\",\"phoneNumber\":\"+14155550100\",\"countryCode\":\"US\",\"phoneNumberType\":\"tollFree\",\"capabilities\":{\"calling\":\"outbound\",\"sms\":\"outbound\"},\"assignmentType\":\"application\",\"purchaseDate\":\"2021-03-09T15:03:04.7513808+00:00\",\"cost\":{\"amount\":2.0,\"currencyCode\":\"USD\",\"billingFrequency\":\"monthly\"}},{\"id\":\"14155550100\",\"phoneNumber\":\"+14155550100\",\"countryCode\":\"US\",\"phoneNumberType\":\"tollFree\",\"capabilities\":{\"calling\":\"outbound\",\"sms\":\"inbound+outbound\"},\"assignmentType\":\"application\",\"purchaseDate\":\"2000-01-01T00:00:00+00:00\",\"cost\":{\"amount\":2.0,\"currencyCode\":\"USD\",\"billingFrequency\":\"monthly\"}}]}", + "response": "{\"phoneNumbers\":[{\"id\":\"14155550100\",\"phoneNumber\":\"+14155550100\",\"countryCode\":\"US\",\"phoneNumberType\":\"geographic\",\"capabilities\":{\"calling\":\"inbound+outbound\",\"sms\":\"none\"},\"assignmentType\":\"application\",\"purchaseDate\":\"2021-04-14T00:23:52.1861991+00:00\",\"cost\":{\"amount\":1.0,\"currencyCode\":\"USD\",\"billingFrequency\":\"monthly\"}},{\"id\":\"14155550100\",\"phoneNumber\":\"+14155550100\",\"countryCode\":\"US\",\"phoneNumberType\":\"geographic\",\"capabilities\":{\"calling\":\"outbound\",\"sms\":\"none\"},\"assignmentType\":\"application\",\"purchaseDate\":\"2021-04-06T23:27:52.858607+00:00\",\"cost\":{\"amount\":1.0,\"currencyCode\":\"USD\",\"billingFrequency\":\"monthly\"}},{\"id\":\"14155550100\",\"phoneNumber\":\"+14155550100\",\"countryCode\":\"US\",\"phoneNumberType\":\"tollFree\",\"capabilities\":{\"calling\":\"none\",\"sms\":\"outbound\"},\"assignmentType\":\"application\",\"purchaseDate\":\"2021-05-25T00:03:06.2985305+00:00\",\"cost\":{\"amount\":2.0,\"currencyCode\":\"USD\",\"billingFrequency\":\"monthly\"}},{\"id\":\"14155550100\",\"phoneNumber\":\"+14155550100\",\"countryCode\":\"US\",\"phoneNumberType\":\"tollFree\",\"capabilities\":{\"calling\":\"none\",\"sms\":\"outbound\"},\"assignmentType\":\"application\",\"purchaseDate\":\"2021-05-24T23:39:11.2079613+00:00\",\"cost\":{\"amount\":2.0,\"currencyCode\":\"USD\",\"billingFrequency\":\"monthly\"}},{\"id\":\"14155550100\",\"phoneNumber\":\"+14155550100\",\"countryCode\":\"US\",\"phoneNumberType\":\"tollFree\",\"capabilities\":{\"calling\":\"inbound\",\"sms\":\"inbound+outbound\"},\"assignmentType\":\"application\",\"purchaseDate\":\"2021-05-26T23:18:22.4715623+00:00\",\"cost\":{\"amount\":2.0,\"currencyCode\":\"USD\",\"billingFrequency\":\"monthly\"}},{\"id\":\"14155550100\",\"phoneNumber\":\"+14155550100\",\"countryCode\":\"US\",\"phoneNumberType\":\"tollFree\",\"capabilities\":{\"calling\":\"inbound\",\"sms\":\"inbound+outbound\"},\"assignmentType\":\"application\",\"purchaseDate\":\"2021-05-27T03:05:50.816041+00:00\",\"cost\":{\"amount\":2.0,\"currencyCode\":\"USD\",\"billingFrequency\":\"monthly\"}},{\"id\":\"14155550100\",\"phoneNumber\":\"+14155550100\",\"countryCode\":\"US\",\"phoneNumberType\":\"tollFree\",\"capabilities\":{\"calling\":\"outbound\",\"sms\":\"outbound\"},\"assignmentType\":\"application\",\"purchaseDate\":\"2021-02-10T17:52:41.818335+00:00\",\"cost\":{\"amount\":2.0,\"currencyCode\":\"USD\",\"billingFrequency\":\"monthly\"}},{\"id\":\"14155550100\",\"phoneNumber\":\"+14155550100\",\"countryCode\":\"US\",\"phoneNumberType\":\"tollFree\",\"capabilities\":{\"calling\":\"none\",\"sms\":\"inbound+outbound\"},\"assignmentType\":\"application\",\"purchaseDate\":\"2021-02-10T18:01:46.4199999+00:00\",\"cost\":{\"amount\":2.0,\"currencyCode\":\"USD\",\"billingFrequency\":\"monthly\"}},{\"id\":\"14155550100\",\"phoneNumber\":\"+14155550100\",\"countryCode\":\"US\",\"phoneNumberType\":\"tollFree\",\"capabilities\":{\"calling\":\"none\",\"sms\":\"outbound\"},\"assignmentType\":\"application\",\"purchaseDate\":\"2021-03-09T15:01:55.0949003+00:00\",\"cost\":{\"amount\":2.0,\"currencyCode\":\"USD\",\"billingFrequency\":\"monthly\"}},{\"id\":\"14155550100\",\"phoneNumber\":\"+14155550100\",\"countryCode\":\"US\",\"phoneNumberType\":\"tollFree\",\"capabilities\":{\"calling\":\"none\",\"sms\":\"outbound\"},\"assignmentType\":\"application\",\"purchaseDate\":\"2021-03-09T15:03:04.7513808+00:00\",\"cost\":{\"amount\":2.0,\"currencyCode\":\"USD\",\"billingFrequency\":\"monthly\"}},{\"id\":\"14155550100\",\"phoneNumber\":\"+14155550100\",\"countryCode\":\"US\",\"phoneNumberType\":\"tollFree\",\"capabilities\":{\"calling\":\"outbound\",\"sms\":\"inbound+outbound\"},\"assignmentType\":\"application\",\"purchaseDate\":\"2000-01-01T00:00:00+00:00\",\"cost\":{\"amount\":2.0,\"currencyCode\":\"USD\",\"billingFrequency\":\"monthly\"}}]}", "responseHeaders": { "api-supported-versions": "2021-03-07", "content-type": "application/json; charset=utf-8", - "date": "Tue, 01 Jun 2021 16:13:20 GMT", - "ms-cv": "/9cT9XOY6k6orVd9bq4o4A.0", + "date": "Fri, 18 Jun 2021 16:38:57 GMT", + "ms-cv": "gro5f7D8/kKMSt1bnqv7Kw.0", "request-context": "appId=", "status": "200", - "x-azure-ref": "0nly2YAAAAADt4S/YqLxXQJLFzTP4wym1WVZSMzBFREdFMDMyMQA5ZmM3YjUxOS1hOGNjLTRmODktOTM1ZS1jOTE0OGFlMDllODE=", + "x-azure-ref": "0IczMYAAAAAC5ABiSWvh6RqeE1fy7j4F8WVZSMzBFREdFMDMxMAA5ZmM3YjUxOS1hOGNjLTRmODktOTM1ZS1jOTE0OGFlMDllODE=", "x-cache": "CONFIG_NOCACHE", - "x-processing-time": "1837ms" + "x-processing-time": "1427ms" } } ], @@ -51,5 +51,5 @@ "uniqueName": {}, "newDate": {} }, - "hash": "b5b5bc3aa53df9cf7b960ec1c7c85595" + "hash": "eca17e433a83b791fc096978816d8e48" } \ No newline at end of file diff --git a/sdk/communication/communication-phone-numbers/recordings/browsers/phonenumbersclient__lro__purchase_and_release/recording_can_purchase_and_release_a_phone_number.json b/sdk/communication/communication-phone-numbers/recordings/browsers/phonenumbersclient__lro__purchase_and_release/recording_can_purchase_and_release_a_phone_number.json index 4aecd1f27551..f7a084fb8859 100644 --- a/sdk/communication/communication-phone-numbers/recordings/browsers/phonenumbersclient__lro__purchase_and_release/recording_can_purchase_and_release_a_phone_number.json +++ b/sdk/communication/communication-phone-numbers/recordings/browsers/phonenumbersclient__lro__purchase_and_release/recording_can_purchase_and_release_a_phone_number.json @@ -13,17 +13,17 @@ "access-control-expose-headers": "Location,Operation-Location,operation-id,search-id", "api-supported-versions": "2021-03-07", "content-length": "0", - "date": "Tue, 01 Jun 2021 16:14:17 GMT", + "date": "Fri, 18 Jun 2021 16:39:53 GMT", "location": "/availablePhoneNumbers/searchResults/sanitized?api-version=2021-03-07", - "ms-cv": "x4AjC3qOhEWieMXVN5h0Ww.0", + "ms-cv": "57s/f5hy40anKMY/Gvb1Qw.0", "operation-id": "search_sanitized", "operation-location": "/phoneNumbers/operations/search_sanitized?api-version=2021-03-07", "request-context": "appId=", "search-id": "sanitized", "status": "202", - "x-azure-ref": "02Fy2YAAAAACA3heNf19pQaODAAg681IRWVZSMzBFREdFMDMyMQA5ZmM3YjUxOS1hOGNjLTRmODktOTM1ZS1jOTE0OGFlMDllODE=", + "x-azure-ref": "0V8zMYAAAAABseXURYwRfS5FRoa1Bhg5jWVZSMzBFREdFMDMxMAA5ZmM3YjUxOS1hOGNjLTRmODktOTM1ZS1jOTE0OGFlMDllODE=", "x-cache": "CONFIG_NOCACHE", - "x-processing-time": "2018ms" + "x-processing-time": "1740ms" } }, { @@ -34,19 +34,19 @@ }, "requestBody": null, "status": 200, - "response": "{\"status\":\"notStarted\",\"resourceLocation\":\"/availablePhoneNumbers/searchResults/sanitized?api-version=2021-03-07\",\"createdDateTime\":\"2021-06-01T16:14:18.1389714+00:00\",\"id\":\"search_sanitized\",\"operationType\":\"search\",\"lastActionDateTime\":\"0001-01-01T00:00:00+00:00\"}", + "response": "{\"status\":\"notStarted\",\"resourceLocation\":\"/availablePhoneNumbers/searchResults/sanitized?api-version=2021-03-07\",\"createdDateTime\":\"2021-06-18T16:39:53.1151841+00:00\",\"id\":\"search_sanitized\",\"operationType\":\"search\",\"lastActionDateTime\":\"0001-01-01T00:00:00+00:00\"}", "responseHeaders": { "access-control-expose-headers": "Location", "api-supported-versions": "2021-03-07", "content-type": "application/json; charset=utf-8", - "date": "Tue, 01 Jun 2021 16:14:18 GMT", + "date": "Fri, 18 Jun 2021 16:39:54 GMT", "location": "/availablePhoneNumbers/searchResults/sanitized?api-version=2021-03-07", - "ms-cv": "WTYd7qwOL0y84VxxPv4GEw.0", + "ms-cv": "gErObopvEUWXV59PpEoaNg.0", "request-context": "appId=", "status": "200", - "x-azure-ref": "02ly2YAAAAABHufyAKCdJS7S/+O0AaFacWVZSMzBFREdFMDMyMQA5ZmM3YjUxOS1hOGNjLTRmODktOTM1ZS1jOTE0OGFlMDllODE=", + "x-azure-ref": "0WczMYAAAAAA0u6Og8d2LRphi7e0bdmrEWVZSMzBFREdFMDMxMAA5ZmM3YjUxOS1hOGNjLTRmODktOTM1ZS1jOTE0OGFlMDllODE=", "x-cache": "CONFIG_NOCACHE", - "x-processing-time": "356ms" + "x-processing-time": "628ms" } }, { @@ -57,19 +57,19 @@ }, "requestBody": null, "status": 200, - "response": "{\"status\":\"succeeded\",\"resourceLocation\":\"/availablePhoneNumbers/searchResults/sanitized?api-version=2021-03-07\",\"createdDateTime\":\"2021-06-01T16:14:18.1389714+00:00\",\"id\":\"search_sanitized\",\"operationType\":\"search\",\"lastActionDateTime\":\"0001-01-01T00:00:00+00:00\"}", + "response": "{\"status\":\"succeeded\",\"resourceLocation\":\"/availablePhoneNumbers/searchResults/sanitized?api-version=2021-03-07\",\"createdDateTime\":\"2021-06-18T16:39:53.1151841+00:00\",\"id\":\"search_sanitized\",\"operationType\":\"search\",\"lastActionDateTime\":\"0001-01-01T00:00:00+00:00\"}", "responseHeaders": { "access-control-expose-headers": "Location", "api-supported-versions": "2021-03-07", "content-type": "application/json; charset=utf-8", - "date": "Tue, 01 Jun 2021 16:14:20 GMT", + "date": "Fri, 18 Jun 2021 16:39:56 GMT", "location": "/availablePhoneNumbers/searchResults/sanitized?api-version=2021-03-07", - "ms-cv": "wrcTacu1gkSUyJqQZ70agQ.0", + "ms-cv": "56hyq7kfTEq3db0TaI8nxw.0", "request-context": "appId=", "status": "200", - "x-azure-ref": "03Fy2YAAAAAB2X5ELZPfDQIwIRTL9nSQ4WVZSMzBFREdFMDMyMQA5ZmM3YjUxOS1hOGNjLTRmODktOTM1ZS1jOTE0OGFlMDllODE=", + "x-azure-ref": "0XMzMYAAAAABAqO0qMtdTRJCcuMrhZJVSWVZSMzBFREdFMDMxMAA5ZmM3YjUxOS1hOGNjLTRmODktOTM1ZS1jOTE0OGFlMDllODE=", "x-cache": "CONFIG_NOCACHE", - "x-processing-time": "331ms" + "x-processing-time": "367ms" } }, { @@ -80,17 +80,17 @@ }, "requestBody": null, "status": 200, - "response": "{\"searchId\":\"sanitized\",\"phoneNumbers\":[\"+14155550100\"],\"phoneNumberType\":\"tollFree\",\"assignmentType\":\"application\",\"capabilities\":{\"calling\":\"none\",\"sms\":\"inbound+outbound\"},\"cost\":{\"amount\":2.0,\"currencyCode\":\"USD\",\"billingFrequency\":\"monthly\"},\"searchExpiresBy\":\"2021-06-01T16:30:20.5719924+00:00\"}", + "response": "{\"searchId\":\"sanitized\",\"phoneNumbers\":[\"+14155550100\"],\"phoneNumberType\":\"tollFree\",\"assignmentType\":\"application\",\"capabilities\":{\"calling\":\"none\",\"sms\":\"inbound+outbound\"},\"cost\":{\"amount\":2.0,\"currencyCode\":\"USD\",\"billingFrequency\":\"monthly\"},\"searchExpiresBy\":\"2021-06-18T16:55:55.1811708+00:00\"}", "responseHeaders": { "api-supported-versions": "2021-03-07", "content-type": "application/json; charset=utf-8", - "date": "Tue, 01 Jun 2021 16:14:23 GMT", - "ms-cv": "xrys6b8RcEOgkkTHJrd6bg.0", + "date": "Fri, 18 Jun 2021 16:39:59 GMT", + "ms-cv": "r8OA3p+8zEOjP4bSG8EHtA.0", "request-context": "appId=", "status": "200", - "x-azure-ref": "031y2YAAAAABC9o/zvAvuQodaE9njVYnpWVZSMzBFREdFMDMyMQA5ZmM3YjUxOS1hOGNjLTRmODktOTM1ZS1jOTE0OGFlMDllODE=", + "x-azure-ref": "0XszMYAAAAABqD1AX/+JzQpZG/q3yIZWwWVZSMzBFREdFMDMxMAA5ZmM3YjUxOS1hOGNjLTRmODktOTM1ZS1jOTE0OGFlMDllODE=", "x-cache": "CONFIG_NOCACHE", - "x-processing-time": "756ms" + "x-processing-time": "885ms" } }, { @@ -106,16 +106,16 @@ "access-control-expose-headers": "Operation-Location,operation-id,purchase-id", "api-supported-versions": "2021-03-07", "content-length": "0", - "date": "Tue, 01 Jun 2021 16:14:26 GMT", - "ms-cv": "UpdtTM5eNkKqjbHhI0YIfQ.0", + "date": "Fri, 18 Jun 2021 16:40:03 GMT", + "ms-cv": "1CDST4G+T0GSJj0apgWmHg.0", "operation-id": "purchase_sanitized", "operation-location": "/phoneNumbers/operations/purchase_sanitized?api-version=2021-03-07", "purchase-id": "sanitized", "request-context": "appId=", "status": "202", - "x-azure-ref": "04ly2YAAAAACgoloGOD6fTLCUxevsMGD+WVZSMzBFREdFMDMyMQA5ZmM3YjUxOS1hOGNjLTRmODktOTM1ZS1jOTE0OGFlMDllODE=", + "x-azure-ref": "0YczMYAAAAADtUqa7DCvJRq+d+tHcTDTFWVZSMzBFREdFMDMxMAA5ZmM3YjUxOS1hOGNjLTRmODktOTM1ZS1jOTE0OGFlMDllODE=", "x-cache": "CONFIG_NOCACHE", - "x-processing-time": "1671ms" + "x-processing-time": "2178ms" } }, { @@ -126,17 +126,17 @@ }, "requestBody": null, "status": 200, - "response": "{\"status\":\"running\",\"resourceLocation\":null,\"createdDateTime\":\"2021-06-01T16:14:18.1389714+00:00\",\"id\":\"purchase_sanitized\",\"operationType\":\"purchase\",\"lastActionDateTime\":\"0001-01-01T00:00:00+00:00\"}", + "response": "{\"status\":\"running\",\"resourceLocation\":null,\"createdDateTime\":\"2021-06-18T16:39:53.1151841+00:00\",\"id\":\"purchase_sanitized\",\"operationType\":\"purchase\",\"lastActionDateTime\":\"0001-01-01T00:00:00+00:00\"}", "responseHeaders": { "api-supported-versions": "2021-03-07", "content-type": "application/json; charset=utf-8", - "date": "Tue, 01 Jun 2021 16:14:27 GMT", - "ms-cv": "N4/RXFwg7EK9/O2JUVJC+Q.0", + "date": "Fri, 18 Jun 2021 16:40:04 GMT", + "ms-cv": "H5s/w7ueyEqZ+cZT8LMMLQ.0", "request-context": "appId=", "status": "200", - "x-azure-ref": "041y2YAAAAABxoOPdl8swRrOLP5AfhYflWVZSMzBFREdFMDMyMQA5ZmM3YjUxOS1hOGNjLTRmODktOTM1ZS1jOTE0OGFlMDllODE=", + "x-azure-ref": "0Y8zMYAAAAABm+PIqHj77QpTr4fqXyycDWVZSMzBFREdFMDMxMAA5ZmM3YjUxOS1hOGNjLTRmODktOTM1ZS1jOTE0OGFlMDllODE=", "x-cache": "CONFIG_NOCACHE", - "x-processing-time": "335ms" + "x-processing-time": "364ms" } }, { @@ -147,17 +147,17 @@ }, "requestBody": null, "status": 200, - "response": "{\"status\":\"running\",\"resourceLocation\":null,\"createdDateTime\":\"2021-06-01T16:14:18.1389714+00:00\",\"id\":\"purchase_sanitized\",\"operationType\":\"purchase\",\"lastActionDateTime\":\"0001-01-01T00:00:00+00:00\"}", + "response": "{\"status\":\"notStarted\",\"resourceLocation\":null,\"createdDateTime\":\"2021-06-18T16:39:53.1151841+00:00\",\"id\":\"purchase_sanitized\",\"operationType\":\"purchase\",\"lastActionDateTime\":\"0001-01-01T00:00:00+00:00\"}", "responseHeaders": { "api-supported-versions": "2021-03-07", "content-type": "application/json; charset=utf-8", - "date": "Tue, 01 Jun 2021 16:14:29 GMT", - "ms-cv": "hTYqXfkDA06xv1GB7OSalw.0", + "date": "Fri, 18 Jun 2021 16:40:06 GMT", + "ms-cv": "MJ1LCbWxBU6Kw+9z4qXKsg.0", "request-context": "appId=", "status": "200", - "x-azure-ref": "05ly2YAAAAADoU5BMbhgKTaZe+785ko3BWVZSMzBFREdFMDMyMQA5ZmM3YjUxOS1hOGNjLTRmODktOTM1ZS1jOTE0OGFlMDllODE=", + "x-azure-ref": "0ZszMYAAAAACpmThvAKq9RYgNK48ohX7gWVZSMzBFREdFMDMxMAA5ZmM3YjUxOS1hOGNjLTRmODktOTM1ZS1jOTE0OGFlMDllODE=", "x-cache": "CONFIG_NOCACHE", - "x-processing-time": "337ms" + "x-processing-time": "416ms" } }, { @@ -168,17 +168,17 @@ }, "requestBody": null, "status": 200, - "response": "{\"status\":\"notStarted\",\"resourceLocation\":null,\"createdDateTime\":\"2021-06-01T16:14:18.1389714+00:00\",\"id\":\"purchase_sanitized\",\"operationType\":\"purchase\",\"lastActionDateTime\":\"0001-01-01T00:00:00+00:00\"}", + "response": "{\"status\":\"notStarted\",\"resourceLocation\":null,\"createdDateTime\":\"2021-06-18T16:39:53.1151841+00:00\",\"id\":\"purchase_sanitized\",\"operationType\":\"purchase\",\"lastActionDateTime\":\"0001-01-01T00:00:00+00:00\"}", "responseHeaders": { "api-supported-versions": "2021-03-07", "content-type": "application/json; charset=utf-8", - "date": "Tue, 01 Jun 2021 16:14:32 GMT", - "ms-cv": "K4TT7n5rlEyf5Gzy4ynxEA.0", + "date": "Fri, 18 Jun 2021 16:40:09 GMT", + "ms-cv": "jU0AE7k1OUO4jmtTc3hGlQ.0", "request-context": "appId=", "status": "200", - "x-azure-ref": "06Fy2YAAAAACZNLYun50aSL3ctCZWzf2cWVZSMzBFREdFMDMyMQA5ZmM3YjUxOS1hOGNjLTRmODktOTM1ZS1jOTE0OGFlMDllODE=", + "x-azure-ref": "0aMzMYAAAAAAuYBF5YTKARLX+0SzKKkk9WVZSMzBFREdFMDMxMAA5ZmM3YjUxOS1hOGNjLTRmODktOTM1ZS1jOTE0OGFlMDllODE=", "x-cache": "CONFIG_NOCACHE", - "x-processing-time": "336ms" + "x-processing-time": "615ms" } }, { @@ -189,17 +189,17 @@ }, "requestBody": null, "status": 200, - "response": "{\"status\":\"notStarted\",\"resourceLocation\":null,\"createdDateTime\":\"2021-06-01T16:14:18.1389714+00:00\",\"id\":\"purchase_sanitized\",\"operationType\":\"purchase\",\"lastActionDateTime\":\"0001-01-01T00:00:00+00:00\"}", + "response": "{\"status\":\"notStarted\",\"resourceLocation\":null,\"createdDateTime\":\"2021-06-18T16:39:53.1151841+00:00\",\"id\":\"purchase_sanitized\",\"operationType\":\"purchase\",\"lastActionDateTime\":\"0001-01-01T00:00:00+00:00\"}", "responseHeaders": { "api-supported-versions": "2021-03-07", "content-type": "application/json; charset=utf-8", - "date": "Tue, 01 Jun 2021 16:14:34 GMT", - "ms-cv": "eecySp2cZEu/zlH3/EFjKw.0", + "date": "Fri, 18 Jun 2021 16:40:11 GMT", + "ms-cv": "iKzxKh7ywE6rlYMC/LuvAQ.0", "request-context": "appId=", "status": "200", - "x-azure-ref": "061y2YAAAAADXJcnCxqmjQrPKUde9f1b2WVZSMzBFREdFMDMyMQA5ZmM3YjUxOS1hOGNjLTRmODktOTM1ZS1jOTE0OGFlMDllODE=", + "x-azure-ref": "0a8zMYAAAAACGT1mOMP5GSIFT6C0g3L+nWVZSMzBFREdFMDMxMAA5ZmM3YjUxOS1hOGNjLTRmODktOTM1ZS1jOTE0OGFlMDllODE=", "x-cache": "CONFIG_NOCACHE", - "x-processing-time": "351ms" + "x-processing-time": "384ms" } }, { @@ -210,17 +210,17 @@ }, "requestBody": null, "status": 200, - "response": "{\"status\":\"notStarted\",\"resourceLocation\":null,\"createdDateTime\":\"2021-06-01T16:14:18.1389714+00:00\",\"id\":\"purchase_sanitized\",\"operationType\":\"purchase\",\"lastActionDateTime\":\"0001-01-01T00:00:00+00:00\"}", + "response": "{\"status\":\"notStarted\",\"resourceLocation\":null,\"createdDateTime\":\"2021-06-18T16:39:53.1151841+00:00\",\"id\":\"purchase_sanitized\",\"operationType\":\"purchase\",\"lastActionDateTime\":\"0001-01-01T00:00:00+00:00\"}", "responseHeaders": { "api-supported-versions": "2021-03-07", "content-type": "application/json; charset=utf-8", - "date": "Tue, 01 Jun 2021 16:14:37 GMT", - "ms-cv": "4nbPV4KJgEqnyqxPw+bgKQ.0", + "date": "Fri, 18 Jun 2021 16:40:14 GMT", + "ms-cv": "mKQuQSF6KEeiZTiCM/2hJw.0", "request-context": "appId=", "status": "200", - "x-azure-ref": "07Vy2YAAAAAD6r3sZmi2pR7lja9mjrD5qWVZSMzBFREdFMDMyMQA5ZmM3YjUxOS1hOGNjLTRmODktOTM1ZS1jOTE0OGFlMDllODE=", + "x-azure-ref": "0bczMYAAAAAAIZw5rlCDeQIKcvjMLSr7WWVZSMzBFREdFMDMxMAA5ZmM3YjUxOS1hOGNjLTRmODktOTM1ZS1jOTE0OGFlMDllODE=", "x-cache": "CONFIG_NOCACHE", - "x-processing-time": "335ms" + "x-processing-time": "388ms" } }, { @@ -231,17 +231,17 @@ }, "requestBody": null, "status": 200, - "response": "{\"status\":\"notStarted\",\"resourceLocation\":null,\"createdDateTime\":\"2021-06-01T16:14:18.1389714+00:00\",\"id\":\"purchase_sanitized\",\"operationType\":\"purchase\",\"lastActionDateTime\":\"0001-01-01T00:00:00+00:00\"}", + "response": "{\"status\":\"notStarted\",\"resourceLocation\":null,\"createdDateTime\":\"2021-06-18T16:39:53.1151841+00:00\",\"id\":\"purchase_sanitized\",\"operationType\":\"purchase\",\"lastActionDateTime\":\"0001-01-01T00:00:00+00:00\"}", "responseHeaders": { "api-supported-versions": "2021-03-07", "content-type": "application/json; charset=utf-8", - "date": "Tue, 01 Jun 2021 16:14:40 GMT", - "ms-cv": "aS94SZh1P0SmIRpxpVy65Q.0", + "date": "Fri, 18 Jun 2021 16:40:16 GMT", + "ms-cv": "h4Y6zQQAyEGGPAyu6dAJgQ.0", "request-context": "appId=", "status": "200", - "x-azure-ref": "071y2YAAAAADJbgSAxCu2R7z7+Lus0qUFWVZSMzBFREdFMDMyMQA5ZmM3YjUxOS1hOGNjLTRmODktOTM1ZS1jOTE0OGFlMDllODE=", + "x-azure-ref": "0cMzMYAAAAAAfrusJvEzfQYKLqJedlS3QWVZSMzBFREdFMDMxMAA5ZmM3YjUxOS1hOGNjLTRmODktOTM1ZS1jOTE0OGFlMDllODE=", "x-cache": "CONFIG_NOCACHE", - "x-processing-time": "611ms" + "x-processing-time": "680ms" } }, { @@ -252,17 +252,17 @@ }, "requestBody": null, "status": 200, - "response": "{\"status\":\"notStarted\",\"resourceLocation\":null,\"createdDateTime\":\"2021-06-01T16:14:18.1389714+00:00\",\"id\":\"purchase_sanitized\",\"operationType\":\"purchase\",\"lastActionDateTime\":\"0001-01-01T00:00:00+00:00\"}", + "response": "{\"status\":\"notStarted\",\"resourceLocation\":null,\"createdDateTime\":\"2021-06-18T16:39:53.1151841+00:00\",\"id\":\"purchase_sanitized\",\"operationType\":\"purchase\",\"lastActionDateTime\":\"0001-01-01T00:00:00+00:00\"}", "responseHeaders": { "api-supported-versions": "2021-03-07", "content-type": "application/json; charset=utf-8", - "date": "Tue, 01 Jun 2021 16:14:42 GMT", - "ms-cv": "c8DfVMH7B0a8rdaCAxdbRA.0", + "date": "Fri, 18 Jun 2021 16:40:19 GMT", + "ms-cv": "oSqwLQQZt0WKjsXkSjyAgg.0", "request-context": "appId=", "status": "200", - "x-azure-ref": "08ly2YAAAAAChdSECKB5dQLw+j8G5GZYZWVZSMzBFREdFMDMyMQA5ZmM3YjUxOS1hOGNjLTRmODktOTM1ZS1jOTE0OGFlMDllODE=", + "x-azure-ref": "0c8zMYAAAAAC0Im3BYXAxQrFIjItzP6pnWVZSMzBFREdFMDMxMAA5ZmM3YjUxOS1hOGNjLTRmODktOTM1ZS1jOTE0OGFlMDllODE=", "x-cache": "CONFIG_NOCACHE", - "x-processing-time": "383ms" + "x-processing-time": "543ms" } }, { @@ -273,38 +273,17 @@ }, "requestBody": null, "status": 200, - "response": "{\"status\":\"notStarted\",\"resourceLocation\":null,\"createdDateTime\":\"2021-06-01T16:14:18.1389714+00:00\",\"id\":\"purchase_sanitized\",\"operationType\":\"purchase\",\"lastActionDateTime\":\"0001-01-01T00:00:00+00:00\"}", + "response": "{\"status\":\"succeeded\",\"resourceLocation\":null,\"createdDateTime\":\"2021-06-18T16:39:53.1151841+00:00\",\"id\":\"purchase_sanitized\",\"operationType\":\"purchase\",\"lastActionDateTime\":\"0001-01-01T00:00:00+00:00\"}", "responseHeaders": { "api-supported-versions": "2021-03-07", "content-type": "application/json; charset=utf-8", - "date": "Tue, 01 Jun 2021 16:14:45 GMT", - "ms-cv": "WwI+TTXJaka5kT4KJPKOWA.0", + "date": "Fri, 18 Jun 2021 16:40:22 GMT", + "ms-cv": "twqfxXio60yo/ZkN5gkjPA.0", "request-context": "appId=", "status": "200", - "x-azure-ref": "09Fy2YAAAAAC2J4m4ApT5QYK6xuqqsJECWVZSMzBFREdFMDMyMQA5ZmM3YjUxOS1hOGNjLTRmODktOTM1ZS1jOTE0OGFlMDllODE=", + "x-azure-ref": "0dczMYAAAAAC7CMIxXGpCTY0m33BnvvCrWVZSMzBFREdFMDMxMAA5ZmM3YjUxOS1hOGNjLTRmODktOTM1ZS1jOTE0OGFlMDllODE=", "x-cache": "CONFIG_NOCACHE", - "x-processing-time": "346ms" - } - }, - { - "method": "GET", - "url": "https://endpoint/phoneNumbers/operations/purchase_sanitized", - "query": { - "api-version": "2021-03-07" - }, - "requestBody": null, - "status": 200, - "response": "{\"status\":\"succeeded\",\"resourceLocation\":null,\"createdDateTime\":\"2021-06-01T16:14:18.1389714+00:00\",\"id\":\"purchase_sanitized\",\"operationType\":\"purchase\",\"lastActionDateTime\":\"0001-01-01T00:00:00+00:00\"}", - "responseHeaders": { - "api-supported-versions": "2021-03-07", - "content-type": "application/json; charset=utf-8", - "date": "Tue, 01 Jun 2021 16:14:48 GMT", - "ms-cv": "Mw7veKvC1UGhawQf9GlBTg.0", - "request-context": "appId=", - "status": "200", - "x-azure-ref": "091y2YAAAAABd5a7Am3CITo8/+g2Ex+xeWVZSMzBFREdFMDMyMQA5ZmM3YjUxOS1hOGNjLTRmODktOTM1ZS1jOTE0OGFlMDllODE=", - "x-cache": "CONFIG_NOCACHE", - "x-processing-time": "1367ms" + "x-processing-time": "634ms" } }, { @@ -315,17 +294,17 @@ }, "requestBody": null, "status": 200, - "response": "{\"id\":\"14155550100\",\"phoneNumber\":\"+14155550100\",\"countryCode\":\"US\",\"phoneNumberType\":\"tollFree\",\"capabilities\":{\"calling\":\"none\",\"sms\":\"inbound+outbound\"},\"assignmentType\":\"application\",\"purchaseDate\":\"2021-06-01T16:14:44.4901882+00:00\",\"cost\":{\"amount\":2.0,\"currencyCode\":\"USD\",\"billingFrequency\":\"monthly\"}}", + "response": "{\"id\":\"14155550100\",\"phoneNumber\":\"+14155550100\",\"countryCode\":\"US\",\"phoneNumberType\":\"tollFree\",\"capabilities\":{\"calling\":\"none\",\"sms\":\"inbound+outbound\"},\"assignmentType\":\"application\",\"purchaseDate\":\"2021-06-18T16:40:19.3249552+00:00\",\"cost\":{\"amount\":2.0,\"currencyCode\":\"USD\",\"billingFrequency\":\"monthly\"}}", "responseHeaders": { "api-supported-versions": "2021-03-07", "content-type": "application/json; charset=utf-8", - "date": "Tue, 01 Jun 2021 16:14:53 GMT", - "ms-cv": "0CrfcOCua0uPO1qZz6ZovA.0", + "date": "Fri, 18 Jun 2021 16:40:28 GMT", + "ms-cv": "FTiIZg9yREObXl9yQsf/Rg.0", "request-context": "appId=", "status": "200", - "x-azure-ref": "0/Fy2YAAAAAAyhVx02lbQS4cjmCe1YqRlWVZSMzBFREdFMDMyMQA5ZmM3YjUxOS1hOGNjLTRmODktOTM1ZS1jOTE0OGFlMDllODE=", + "x-azure-ref": "0eszMYAAAAABRXW9KfNf4RYJ48hh3sX/6WVZSMzBFREdFMDMxMAA5ZmM3YjUxOS1hOGNjLTRmODktOTM1ZS1jOTE0OGFlMDllODE=", "x-cache": "CONFIG_NOCACHE", - "x-processing-time": "1093ms" + "x-processing-time": "2385ms" } }, { @@ -341,37 +320,16 @@ "access-control-expose-headers": "Operation-Location,operation-id,release-id", "api-supported-versions": "2021-03-07", "content-length": "0", - "date": "Tue, 01 Jun 2021 16:14:54 GMT", - "ms-cv": "1eL3kmnVeUqDWwcGUQAJlQ.0", + "date": "Fri, 18 Jun 2021 16:40:29 GMT", + "ms-cv": "68LsZHlN2ki23H22wLDXtw.0", "operation-id": "release_sanitized", "operation-location": "/phoneNumbers/operations/release_sanitized?api-version=2021-03-07", "release-id": "sanitized", "request-context": "appId=", "status": "202", - "x-azure-ref": "0/Vy2YAAAAACWEYkqvHDcQ4rXKmuj574+WVZSMzBFREdFMDMyMQA5ZmM3YjUxOS1hOGNjLTRmODktOTM1ZS1jOTE0OGFlMDllODE=", - "x-cache": "CONFIG_NOCACHE", - "x-processing-time": "1065ms" - } - }, - { - "method": "GET", - "url": "https://endpoint/phoneNumbers/operations/release_sanitized", - "query": { - "api-version": "2021-03-07" - }, - "requestBody": null, - "status": 200, - "response": "{\"status\":\"running\",\"resourceLocation\":null,\"createdDateTime\":\"2021-06-01T16:14:54.1894372+00:00\",\"id\":\"release_sanitized\",\"operationType\":\"releasePhoneNumber\",\"lastActionDateTime\":\"0001-01-01T00:00:00+00:00\"}", - "responseHeaders": { - "api-supported-versions": "2021-03-07", - "content-type": "application/json; charset=utf-8", - "date": "Tue, 01 Jun 2021 16:14:55 GMT", - "ms-cv": "kb0a/FAJeUWSylnqHelb7Q.0", - "request-context": "appId=", - "status": "200", - "x-azure-ref": "0/ly2YAAAAAC0kNrAMIxhS7ghe4Z8O8yEWVZSMzBFREdFMDMyMQA5ZmM3YjUxOS1hOGNjLTRmODktOTM1ZS1jOTE0OGFlMDllODE=", + "x-azure-ref": "0fMzMYAAAAAAxQ4bzDZipTYKAyvQxiXr4WVZSMzBFREdFMDMxMAA5ZmM3YjUxOS1hOGNjLTRmODktOTM1ZS1jOTE0OGFlMDllODE=", "x-cache": "CONFIG_NOCACHE", - "x-processing-time": "397ms" + "x-processing-time": "1329ms" } }, { @@ -382,17 +340,17 @@ }, "requestBody": null, "status": 200, - "response": "{\"status\":\"running\",\"resourceLocation\":null,\"createdDateTime\":\"2021-06-01T16:14:54.1894372+00:00\",\"id\":\"release_sanitized\",\"operationType\":\"releasePhoneNumber\",\"lastActionDateTime\":\"0001-01-01T00:00:00+00:00\"}", + "response": "{\"status\":\"running\",\"resourceLocation\":null,\"createdDateTime\":\"2021-06-18T16:40:29.5428606+00:00\",\"id\":\"release_sanitized\",\"operationType\":\"releasePhoneNumber\",\"lastActionDateTime\":\"0001-01-01T00:00:00+00:00\"}", "responseHeaders": { "api-supported-versions": "2021-03-07", "content-type": "application/json; charset=utf-8", - "date": "Tue, 01 Jun 2021 16:14:57 GMT", - "ms-cv": "Vi6L/YHmzU2UGl9mVInfsg.0", + "date": "Fri, 18 Jun 2021 16:40:30 GMT", + "ms-cv": "w8/68MBd2EiZyWWw5Azc3A.0", "request-context": "appId=", "status": "200", - "x-azure-ref": "0AV22YAAAAADPEjlU9H//SKIxzdyhGO8QWVZSMzBFREdFMDMyMQA5ZmM3YjUxOS1hOGNjLTRmODktOTM1ZS1jOTE0OGFlMDllODE=", + "x-azure-ref": "0fszMYAAAAAD92dxiY2KmS4uNPY39WI82WVZSMzBFREdFMDMxMAA5ZmM3YjUxOS1hOGNjLTRmODktOTM1ZS1jOTE0OGFlMDllODE=", "x-cache": "CONFIG_NOCACHE", - "x-processing-time": "283ms" + "x-processing-time": "421ms" } }, { @@ -403,17 +361,17 @@ }, "requestBody": null, "status": 200, - "response": "{\"status\":\"running\",\"resourceLocation\":null,\"createdDateTime\":\"2021-06-01T16:14:54.1894372+00:00\",\"id\":\"release_sanitized\",\"operationType\":\"releasePhoneNumber\",\"lastActionDateTime\":\"0001-01-01T00:00:00+00:00\"}", + "response": "{\"status\":\"running\",\"resourceLocation\":null,\"createdDateTime\":\"2021-06-18T16:40:29.5428606+00:00\",\"id\":\"release_sanitized\",\"operationType\":\"releasePhoneNumber\",\"lastActionDateTime\":\"0001-01-01T00:00:00+00:00\"}", "responseHeaders": { "api-supported-versions": "2021-03-07", "content-type": "application/json; charset=utf-8", - "date": "Tue, 01 Jun 2021 16:14:59 GMT", - "ms-cv": "+pjTHMyKr0KejJ1UtROxdw.0", + "date": "Fri, 18 Jun 2021 16:40:32 GMT", + "ms-cv": "rEaGIDZ0qE6E1+je7QPJAA.0", "request-context": "appId=", "status": "200", - "x-azure-ref": "0A122YAAAAABPh+Ce1ZV/SpsDfq3eBnDFWVZSMzBFREdFMDMyMQA5ZmM3YjUxOS1hOGNjLTRmODktOTM1ZS1jOTE0OGFlMDllODE=", + "x-azure-ref": "0gMzMYAAAAAAa1yS2I1w7QJwx5LEXf5ifWVZSMzBFREdFMDMxMAA5ZmM3YjUxOS1hOGNjLTRmODktOTM1ZS1jOTE0OGFlMDllODE=", "x-cache": "CONFIG_NOCACHE", - "x-processing-time": "286ms" + "x-processing-time": "316ms" } }, { @@ -424,17 +382,17 @@ }, "requestBody": null, "status": 200, - "response": "{\"status\":\"running\",\"resourceLocation\":null,\"createdDateTime\":\"2021-06-01T16:14:54.1894372+00:00\",\"id\":\"release_sanitized\",\"operationType\":\"releasePhoneNumber\",\"lastActionDateTime\":\"0001-01-01T00:00:00+00:00\"}", + "response": "{\"status\":\"running\",\"resourceLocation\":null,\"createdDateTime\":\"2021-06-18T16:40:29.5428606+00:00\",\"id\":\"release_sanitized\",\"operationType\":\"releasePhoneNumber\",\"lastActionDateTime\":\"0001-01-01T00:00:00+00:00\"}", "responseHeaders": { "api-supported-versions": "2021-03-07", "content-type": "application/json; charset=utf-8", - "date": "Tue, 01 Jun 2021 16:15:02 GMT", - "ms-cv": "NcyNORO5gU6c60LFhrWmGQ.0", + "date": "Fri, 18 Jun 2021 16:40:35 GMT", + "ms-cv": "D6Sbrpgr7EC5Lpq+s6MMlg.0", "request-context": "appId=", "status": "200", - "x-azure-ref": "0Bl22YAAAAABzNK8Gty4zSLHYFpeT0zKtWVZSMzBFREdFMDMyMQA5ZmM3YjUxOS1hOGNjLTRmODktOTM1ZS1jOTE0OGFlMDllODE=", + "x-azure-ref": "0g8zMYAAAAAD38WRkFGyNS6rfOWLZAfhXWVZSMzBFREdFMDMxMAA5ZmM3YjUxOS1hOGNjLTRmODktOTM1ZS1jOTE0OGFlMDllODE=", "x-cache": "CONFIG_NOCACHE", - "x-processing-time": "288ms" + "x-processing-time": "348ms" } }, { @@ -445,17 +403,17 @@ }, "requestBody": null, "status": 200, - "response": "{\"status\":\"succeeded\",\"resourceLocation\":null,\"createdDateTime\":\"2021-06-01T16:14:54.1894372+00:00\",\"id\":\"release_sanitized\",\"operationType\":\"releasePhoneNumber\",\"lastActionDateTime\":\"0001-01-01T00:00:00+00:00\"}", + "response": "{\"status\":\"succeeded\",\"resourceLocation\":null,\"createdDateTime\":\"2021-06-18T16:40:29.5428606+00:00\",\"id\":\"release_sanitized\",\"operationType\":\"releasePhoneNumber\",\"lastActionDateTime\":\"0001-01-01T00:00:00+00:00\"}", "responseHeaders": { "api-supported-versions": "2021-03-07", "content-type": "application/json; charset=utf-8", - "date": "Tue, 01 Jun 2021 16:15:04 GMT", - "ms-cv": "IMWiMgFOkE+7c9MKZYnxUA.0", + "date": "Fri, 18 Jun 2021 16:40:37 GMT", + "ms-cv": "aVA3m72hO0+Mwb+jXv+D9Q.0", "request-context": "appId=", "status": "200", - "x-azure-ref": "0CF22YAAAAAClCoAO6e0OT7my2xESnXxJWVZSMzBFREdFMDMyMQA5ZmM3YjUxOS1hOGNjLTRmODktOTM1ZS1jOTE0OGFlMDllODE=", + "x-azure-ref": "0hczMYAAAAADIO5qsadWaSIWQ4T4KkjCgWVZSMzBFREdFMDMxMAA5ZmM3YjUxOS1hOGNjLTRmODktOTM1ZS1jOTE0OGFlMDllODE=", "x-cache": "CONFIG_NOCACHE", - "x-processing-time": "342ms" + "x-processing-time": "307ms" } } ], @@ -463,5 +421,5 @@ "uniqueName": {}, "newDate": {} }, - "hash": "fa44f3995964677cea8445a9b6dfd114" + "hash": "416927590c0eb89a1bcfcaeaaa937d51" } \ No newline at end of file diff --git a/sdk/communication/communication-phone-numbers/recordings/browsers/phonenumbersclient__lro__purchase_and_release_aad/recording_can_purchase_and_release_a_phone_number.json b/sdk/communication/communication-phone-numbers/recordings/browsers/phonenumbersclient__lro__purchase_and_release_aad/recording_can_purchase_and_release_a_phone_number.json index dd14b8e04e8f..6d0db3b9d5bf 100644 --- a/sdk/communication/communication-phone-numbers/recordings/browsers/phonenumbersclient__lro__purchase_and_release_aad/recording_can_purchase_and_release_a_phone_number.json +++ b/sdk/communication/communication-phone-numbers/recordings/browsers/phonenumbersclient__lro__purchase_and_release_aad/recording_can_purchase_and_release_a_phone_number.json @@ -4,23 +4,23 @@ "method": "POST", "url": "https://endpoint/SomeTenantId/oauth2/v2.0/token", "query": {}, - "requestBody": "response_type=token&grant_type=client_credentials&client_id=SomeClientId&client_secret=SomeClientSecret&scope=https%3A%2F%2Fcommunication.azure.com%2F%2F.default", + "requestBody": "response_type=token&grant_type=client_credentials&client_id=SomeClientId&client_secret=SomeClientSecret&scope=https%3A%2F%2Fsanitized%2F", "status": 200, "response": "{\"token_type\":\"Bearer\",\"expires_in\":86399,\"ext_expires_in\":86399,\"access_token\":\"access_token\"}", "responseHeaders": { "cache-control": "no-store, no-cache", "content-length": "1327", "content-type": "application/json; charset=utf-8", - "date": "Tue, 01 Jun 2021 16:13:21 GMT", + "date": "Fri, 18 Jun 2021 16:39:00 GMT", "expires": "-1", "nel": "{\"report_to\":\"network-errors\",\"max_age\":86400,\"success_fraction\":0.001,\"failure_fraction\":1.0}", "p3p": "CP=\"DSP CUR OTPi IND OTRi ONL FIN\"", "pragma": "no-cache", "referrer-policy": "strict-origin-when-cross-origin", - "report-to": "{\"group\":\"network-errors\",\"max_age\":86400,\"endpoints\":[{\"url\":\"https://endpoint/api/report?catId=GW+estsfd+chi\"}]}", + "report-to": "{\"group\":\"network-errors\",\"max_age\":86400,\"endpoints\":[{\"url\":\"https://endpoint/api/report?catId=GW+estsfd+est\"}]}", "strict-transport-security": "max-age=31536000; includeSubDomains", "x-content-type-options": "nosniff", - "x-ms-ests-server": "2.1.11722.26 - SCUS ProdSlices", + "x-ms-ests-server": "2.1.11829.4 - EUS ProdSlices", "x-ms-request-id": "sanitized" } }, @@ -37,17 +37,17 @@ "access-control-expose-headers": "Location,Operation-Location,operation-id,search-id", "api-supported-versions": "2021-03-07", "content-length": "0", - "date": "Tue, 01 Jun 2021 16:13:24 GMT", + "date": "Fri, 18 Jun 2021 16:39:01 GMT", "location": "/availablePhoneNumbers/searchResults/sanitized?api-version=2021-03-07", - "ms-cv": "qNhaJikjN0iFJq9cbeA5Tg.0", + "ms-cv": "JsYlaRO4SEmfcsfq2ca3tw.0", "operation-id": "search_sanitized", "operation-location": "/phoneNumbers/operations/search_sanitized?api-version=2021-03-07", "request-context": "appId=", "search-id": "sanitized", "status": "202", - "x-azure-ref": "0oly2YAAAAACGNOIpKcvHSIZPAmgMfSKeWVZSMzBFREdFMDMyMQA5ZmM3YjUxOS1hOGNjLTRmODktOTM1ZS1jOTE0OGFlMDllODE=", + "x-azure-ref": "0JMzMYAAAAADl4CINcT8MQoe8fgMIE4SlWVZSMzBFREdFMDMxMAA5ZmM3YjUxOS1hOGNjLTRmODktOTM1ZS1jOTE0OGFlMDllODE=", "x-cache": "CONFIG_NOCACHE", - "x-processing-time": "2473ms" + "x-processing-time": "1633ms" } }, { @@ -58,19 +58,19 @@ }, "requestBody": null, "status": 200, - "response": "{\"status\":\"notStarted\",\"resourceLocation\":\"/availablePhoneNumbers/searchResults/sanitized?api-version=2021-03-07\",\"createdDateTime\":\"2021-06-01T16:13:24.2919684+00:00\",\"id\":\"search_sanitized\",\"operationType\":\"search\",\"lastActionDateTime\":\"0001-01-01T00:00:00+00:00\"}", + "response": "{\"status\":\"notStarted\",\"resourceLocation\":\"/availablePhoneNumbers/searchResults/sanitized?api-version=2021-03-07\",\"createdDateTime\":\"2021-06-18T16:39:01.7862614+00:00\",\"id\":\"search_sanitized\",\"operationType\":\"search\",\"lastActionDateTime\":\"0001-01-01T00:00:00+00:00\"}", "responseHeaders": { "access-control-expose-headers": "Location", "api-supported-versions": "2021-03-07", "content-type": "application/json; charset=utf-8", - "date": "Tue, 01 Jun 2021 16:13:25 GMT", + "date": "Fri, 18 Jun 2021 16:39:02 GMT", "location": "/availablePhoneNumbers/searchResults/sanitized?api-version=2021-03-07", - "ms-cv": "rhNnxJvxsUCnfvG0uprrKQ.0", + "ms-cv": "3/gFcGL3VE+T3vC3eQmuAg.0", "request-context": "appId=", "status": "200", - "x-azure-ref": "0pFy2YAAAAAB72OTtMyCmQr8dJVV8zY0qWVZSMzBFREdFMDMyMQA5ZmM3YjUxOS1hOGNjLTRmODktOTM1ZS1jOTE0OGFlMDllODE=", + "x-azure-ref": "0JszMYAAAAACH0zIs6VnlR4KKuMnpHy2ZWVZSMzBFREdFMDMxMAA5ZmM3YjUxOS1hOGNjLTRmODktOTM1ZS1jOTE0OGFlMDllODE=", "x-cache": "CONFIG_NOCACHE", - "x-processing-time": "355ms" + "x-processing-time": "349ms" } }, { @@ -81,19 +81,19 @@ }, "requestBody": null, "status": 200, - "response": "{\"status\":\"succeeded\",\"resourceLocation\":\"/availablePhoneNumbers/searchResults/sanitized?api-version=2021-03-07\",\"createdDateTime\":\"2021-06-01T16:13:24.2919684+00:00\",\"id\":\"search_sanitized\",\"operationType\":\"search\",\"lastActionDateTime\":\"0001-01-01T00:00:00+00:00\"}", + "response": "{\"status\":\"succeeded\",\"resourceLocation\":\"/availablePhoneNumbers/searchResults/sanitized?api-version=2021-03-07\",\"createdDateTime\":\"2021-06-18T16:39:01.7862614+00:00\",\"id\":\"search_sanitized\",\"operationType\":\"search\",\"lastActionDateTime\":\"0001-01-01T00:00:00+00:00\"}", "responseHeaders": { "access-control-expose-headers": "Location", "api-supported-versions": "2021-03-07", "content-type": "application/json; charset=utf-8", - "date": "Tue, 01 Jun 2021 16:13:27 GMT", + "date": "Fri, 18 Jun 2021 16:39:04 GMT", "location": "/availablePhoneNumbers/searchResults/sanitized?api-version=2021-03-07", - "ms-cv": "MiDnggRx2U6WbmXE6Nl/Gg.0", + "ms-cv": "HLFjkcE5CEexGXGU6bgi+g.0", "request-context": "appId=", "status": "200", - "x-azure-ref": "0p1y2YAAAAABpnr/sgZo7Tp01GNyFWAcuWVZSMzBFREdFMDMyMQA5ZmM3YjUxOS1hOGNjLTRmODktOTM1ZS1jOTE0OGFlMDllODE=", + "x-azure-ref": "0KMzMYAAAAAD6NQpBPZ8yTq1GgoKFDgWbWVZSMzBFREdFMDMxMAA5ZmM3YjUxOS1hOGNjLTRmODktOTM1ZS1jOTE0OGFlMDllODE=", "x-cache": "CONFIG_NOCACHE", - "x-processing-time": "332ms" + "x-processing-time": "358ms" } }, { @@ -104,17 +104,17 @@ }, "requestBody": null, "status": 200, - "response": "{\"searchId\":\"sanitized\",\"phoneNumbers\":[\"+14155550100\"],\"phoneNumberType\":\"tollFree\",\"assignmentType\":\"application\",\"capabilities\":{\"calling\":\"none\",\"sms\":\"inbound+outbound\"},\"cost\":{\"amount\":2.0,\"currencyCode\":\"USD\",\"billingFrequency\":\"monthly\"},\"searchExpiresBy\":\"2021-06-01T16:29:26.6554035+00:00\"}", + "response": "{\"searchId\":\"sanitized\",\"phoneNumbers\":[\"+14155550100\"],\"phoneNumberType\":\"tollFree\",\"assignmentType\":\"application\",\"capabilities\":{\"calling\":\"none\",\"sms\":\"inbound+outbound\"},\"cost\":{\"amount\":2.0,\"currencyCode\":\"USD\",\"billingFrequency\":\"monthly\"},\"searchExpiresBy\":\"2021-06-18T16:55:03.3952323+00:00\"}", "responseHeaders": { "api-supported-versions": "2021-03-07", "content-type": "application/json; charset=utf-8", - "date": "Tue, 01 Jun 2021 16:13:30 GMT", - "ms-cv": "EJmp74VyV0WHh9SGGuru9w.0", + "date": "Fri, 18 Jun 2021 16:39:07 GMT", + "ms-cv": "PJG/XK29UEOCwLImjhKkMQ.0", "request-context": "appId=", "status": "200", - "x-azure-ref": "0qVy2YAAAAABphl/yodM1RqBYoRHSAMT1WVZSMzBFREdFMDMyMQA5ZmM3YjUxOS1hOGNjLTRmODktOTM1ZS1jOTE0OGFlMDllODE=", + "x-azure-ref": "0K8zMYAAAAADa5lZoB+TsSaan+Hu12hZ+WVZSMzBFREdFMDMxMAA5ZmM3YjUxOS1hOGNjLTRmODktOTM1ZS1jOTE0OGFlMDllODE=", "x-cache": "CONFIG_NOCACHE", - "x-processing-time": "662ms" + "x-processing-time": "782ms" } }, { @@ -130,16 +130,16 @@ "access-control-expose-headers": "Operation-Location,operation-id,purchase-id", "api-supported-versions": "2021-03-07", "content-length": "0", - "date": "Tue, 01 Jun 2021 16:13:34 GMT", - "ms-cv": "mfeGtczkTEisDpTrJLq2kA.0", + "date": "Fri, 18 Jun 2021 16:39:10 GMT", + "ms-cv": "+ymU6BbRdUmCBEVvSMBuzQ.0", "operation-id": "purchase_sanitized", "operation-location": "/phoneNumbers/operations/purchase_sanitized?api-version=2021-03-07", "purchase-id": "sanitized", "request-context": "appId=", "status": "202", - "x-azure-ref": "0rFy2YAAAAADYCpihEAOjQK8DDWsrwv90WVZSMzBFREdFMDMyMQA5ZmM3YjUxOS1hOGNjLTRmODktOTM1ZS1jOTE0OGFlMDllODE=", + "x-azure-ref": "0LczMYAAAAAAmug57kVcnSaRjQZkWyc/jWVZSMzBFREdFMDMxMAA5ZmM3YjUxOS1hOGNjLTRmODktOTM1ZS1jOTE0OGFlMDllODE=", "x-cache": "CONFIG_NOCACHE", - "x-processing-time": "2654ms" + "x-processing-time": "1594ms" } }, { @@ -150,17 +150,17 @@ }, "requestBody": null, "status": 200, - "response": "{\"status\":\"running\",\"resourceLocation\":null,\"createdDateTime\":\"2021-06-01T16:13:24.2919684+00:00\",\"id\":\"purchase_sanitized\",\"operationType\":\"purchase\",\"lastActionDateTime\":\"0001-01-01T00:00:00+00:00\"}", + "response": "{\"status\":\"running\",\"resourceLocation\":null,\"createdDateTime\":\"2021-06-18T16:39:01.7862614+00:00\",\"id\":\"purchase_sanitized\",\"operationType\":\"purchase\",\"lastActionDateTime\":\"0001-01-01T00:00:00+00:00\"}", "responseHeaders": { "api-supported-versions": "2021-03-07", "content-type": "application/json; charset=utf-8", - "date": "Tue, 01 Jun 2021 16:13:35 GMT", - "ms-cv": "SRB33ZT88EybuUSxrN0paA.0", + "date": "Fri, 18 Jun 2021 16:39:11 GMT", + "ms-cv": "dWgwVu5qW0CGpl7BWk+tYg.0", "request-context": "appId=", "status": "200", - "x-azure-ref": "0r1y2YAAAAACqYJ1VlFMZRoeOUZJDB4bAWVZSMzBFREdFMDMyMQA5ZmM3YjUxOS1hOGNjLTRmODktOTM1ZS1jOTE0OGFlMDllODE=", + "x-azure-ref": "0L8zMYAAAAADl4Lh1gXMiTZhzo4RkE3Q3WVZSMzBFREdFMDMxMAA5ZmM3YjUxOS1hOGNjLTRmODktOTM1ZS1jOTE0OGFlMDllODE=", "x-cache": "CONFIG_NOCACHE", - "x-processing-time": "339ms" + "x-processing-time": "452ms" } }, { @@ -171,17 +171,17 @@ }, "requestBody": null, "status": 200, - "response": "{\"status\":\"running\",\"resourceLocation\":null,\"createdDateTime\":\"2021-06-01T16:13:24.2919684+00:00\",\"id\":\"purchase_sanitized\",\"operationType\":\"purchase\",\"lastActionDateTime\":\"0001-01-01T00:00:00+00:00\"}", + "response": "{\"status\":\"notStarted\",\"resourceLocation\":null,\"createdDateTime\":\"2021-06-18T16:39:01.7862614+00:00\",\"id\":\"purchase_sanitized\",\"operationType\":\"purchase\",\"lastActionDateTime\":\"0001-01-01T00:00:00+00:00\"}", "responseHeaders": { "api-supported-versions": "2021-03-07", "content-type": "application/json; charset=utf-8", - "date": "Tue, 01 Jun 2021 16:13:37 GMT", - "ms-cv": "gsmckL4+FEaTNS/jQXbVtw.0", + "date": "Fri, 18 Jun 2021 16:39:13 GMT", + "ms-cv": "FuzKJulbsEmumXvcHokbYQ.0", "request-context": "appId=", "status": "200", - "x-azure-ref": "0sVy2YAAAAAA9YrSL2ymvTK4LYdDFWbfyWVZSMzBFREdFMDMyMQA5ZmM3YjUxOS1hOGNjLTRmODktOTM1ZS1jOTE0OGFlMDllODE=", + "x-azure-ref": "0MszMYAAAAABAnRCK5sfcSbH/SPW1GXKiWVZSMzBFREdFMDMxMAA5ZmM3YjUxOS1hOGNjLTRmODktOTM1ZS1jOTE0OGFlMDllODE=", "x-cache": "CONFIG_NOCACHE", - "x-processing-time": "349ms" + "x-processing-time": "434ms" } }, { @@ -192,17 +192,17 @@ }, "requestBody": null, "status": 200, - "response": "{\"status\":\"notStarted\",\"resourceLocation\":null,\"createdDateTime\":\"2021-06-01T16:13:24.2919684+00:00\",\"id\":\"purchase_sanitized\",\"operationType\":\"purchase\",\"lastActionDateTime\":\"0001-01-01T00:00:00+00:00\"}", + "response": "{\"status\":\"notStarted\",\"resourceLocation\":null,\"createdDateTime\":\"2021-06-18T16:39:01.7862614+00:00\",\"id\":\"purchase_sanitized\",\"operationType\":\"purchase\",\"lastActionDateTime\":\"0001-01-01T00:00:00+00:00\"}", "responseHeaders": { "api-supported-versions": "2021-03-07", "content-type": "application/json; charset=utf-8", - "date": "Tue, 01 Jun 2021 16:13:40 GMT", - "ms-cv": "vkZF/2v2jkSWLKJgvV+XSg.0", + "date": "Fri, 18 Jun 2021 16:39:16 GMT", + "ms-cv": "sy0V7yHT902T4DgEv7Pdow.0", "request-context": "appId=", "status": "200", - "x-azure-ref": "0s1y2YAAAAAAnv8VW2b3URYNWoJKJ+9WBWVZSMzBFREdFMDMyMQA5ZmM3YjUxOS1hOGNjLTRmODktOTM1ZS1jOTE0OGFlMDllODE=", + "x-azure-ref": "0NMzMYAAAAABmNURB2qdoRKuiM0Wuubr6WVZSMzBFREdFMDMxMAA5ZmM3YjUxOS1hOGNjLTRmODktOTM1ZS1jOTE0OGFlMDllODE=", "x-cache": "CONFIG_NOCACHE", - "x-processing-time": "345ms" + "x-processing-time": "663ms" } }, { @@ -213,17 +213,17 @@ }, "requestBody": null, "status": 200, - "response": "{\"status\":\"notStarted\",\"resourceLocation\":null,\"createdDateTime\":\"2021-06-01T16:13:24.2919684+00:00\",\"id\":\"purchase_sanitized\",\"operationType\":\"purchase\",\"lastActionDateTime\":\"0001-01-01T00:00:00+00:00\"}", + "response": "{\"status\":\"notStarted\",\"resourceLocation\":null,\"createdDateTime\":\"2021-06-18T16:39:01.7862614+00:00\",\"id\":\"purchase_sanitized\",\"operationType\":\"purchase\",\"lastActionDateTime\":\"0001-01-01T00:00:00+00:00\"}", "responseHeaders": { "api-supported-versions": "2021-03-07", "content-type": "application/json; charset=utf-8", - "date": "Tue, 01 Jun 2021 16:13:42 GMT", - "ms-cv": "nQ5dYEoJfE6/Y55jY2llXg.0", + "date": "Fri, 18 Jun 2021 16:39:19 GMT", + "ms-cv": "5qU2JujD4kOIYkW1iWY/FA.0", "request-context": "appId=", "status": "200", - "x-azure-ref": "0tly2YAAAAAC6bYzhrloZRqQHVGYjqALKWVZSMzBFREdFMDMyMQA5ZmM3YjUxOS1hOGNjLTRmODktOTM1ZS1jOTE0OGFlMDllODE=", + "x-azure-ref": "0N8zMYAAAAABVAkr8nTo7RpaIkYZwYVRcWVZSMzBFREdFMDMxMAA5ZmM3YjUxOS1hOGNjLTRmODktOTM1ZS1jOTE0OGFlMDllODE=", "x-cache": "CONFIG_NOCACHE", - "x-processing-time": "328ms" + "x-processing-time": "417ms" } }, { @@ -234,17 +234,17 @@ }, "requestBody": null, "status": 200, - "response": "{\"status\":\"notStarted\",\"resourceLocation\":null,\"createdDateTime\":\"2021-06-01T16:13:24.2919684+00:00\",\"id\":\"purchase_sanitized\",\"operationType\":\"purchase\",\"lastActionDateTime\":\"0001-01-01T00:00:00+00:00\"}", + "response": "{\"status\":\"notStarted\",\"resourceLocation\":null,\"createdDateTime\":\"2021-06-18T16:39:01.7862614+00:00\",\"id\":\"purchase_sanitized\",\"operationType\":\"purchase\",\"lastActionDateTime\":\"0001-01-01T00:00:00+00:00\"}", "responseHeaders": { "api-supported-versions": "2021-03-07", "content-type": "application/json; charset=utf-8", - "date": "Tue, 01 Jun 2021 16:13:44 GMT", - "ms-cv": "tuM7P/EQ30Wr3eoCoU1IEg.0", + "date": "Fri, 18 Jun 2021 16:39:21 GMT", + "ms-cv": "klYBj98SvUKPTyNxB7BDkg.0", "request-context": "appId=", "status": "200", - "x-azure-ref": "0uFy2YAAAAABnmt2Sf+laRJBrRfGdhPCXWVZSMzBFREdFMDMyMQA5ZmM3YjUxOS1hOGNjLTRmODktOTM1ZS1jOTE0OGFlMDllODE=", + "x-azure-ref": "0OczMYAAAAADrHAVeS7+hQLIOrMCXmkKdWVZSMzBFREdFMDMxMAA5ZmM3YjUxOS1hOGNjLTRmODktOTM1ZS1jOTE0OGFlMDllODE=", "x-cache": "CONFIG_NOCACHE", - "x-processing-time": "337ms" + "x-processing-time": "804ms" } }, { @@ -255,17 +255,17 @@ }, "requestBody": null, "status": 200, - "response": "{\"status\":\"notStarted\",\"resourceLocation\":null,\"createdDateTime\":\"2021-06-01T16:13:24.2919684+00:00\",\"id\":\"purchase_sanitized\",\"operationType\":\"purchase\",\"lastActionDateTime\":\"0001-01-01T00:00:00+00:00\"}", + "response": "{\"status\":\"notStarted\",\"resourceLocation\":null,\"createdDateTime\":\"2021-06-18T16:39:01.7862614+00:00\",\"id\":\"purchase_sanitized\",\"operationType\":\"purchase\",\"lastActionDateTime\":\"0001-01-01T00:00:00+00:00\"}", "responseHeaders": { "api-supported-versions": "2021-03-07", "content-type": "application/json; charset=utf-8", - "date": "Tue, 01 Jun 2021 16:13:47 GMT", - "ms-cv": "CYmQc/b+ik2o57Ag/LbwMg.0", + "date": "Fri, 18 Jun 2021 16:39:24 GMT", + "ms-cv": "HENZcQRpDEaRHT2g+GdqRQ.0", "request-context": "appId=", "status": "200", - "x-azure-ref": "0u1y2YAAAAAD7pHRVK1ZDRJusGE56XqR9WVZSMzBFREdFMDMyMQA5ZmM3YjUxOS1hOGNjLTRmODktOTM1ZS1jOTE0OGFlMDllODE=", + "x-azure-ref": "0PMzMYAAAAABEXsmpXughQr9qqIETq/C0WVZSMzBFREdFMDMxMAA5ZmM3YjUxOS1hOGNjLTRmODktOTM1ZS1jOTE0OGFlMDllODE=", "x-cache": "CONFIG_NOCACHE", - "x-processing-time": "740ms" + "x-processing-time": "394ms" } }, { @@ -276,17 +276,17 @@ }, "requestBody": null, "status": 200, - "response": "{\"status\":\"notStarted\",\"resourceLocation\":null,\"createdDateTime\":\"2021-06-01T16:13:24.2919684+00:00\",\"id\":\"purchase_sanitized\",\"operationType\":\"purchase\",\"lastActionDateTime\":\"0001-01-01T00:00:00+00:00\"}", + "response": "{\"status\":\"notStarted\",\"resourceLocation\":null,\"createdDateTime\":\"2021-06-18T16:39:01.7862614+00:00\",\"id\":\"purchase_sanitized\",\"operationType\":\"purchase\",\"lastActionDateTime\":\"0001-01-01T00:00:00+00:00\"}", "responseHeaders": { "api-supported-versions": "2021-03-07", "content-type": "application/json; charset=utf-8", - "date": "Tue, 01 Jun 2021 16:13:50 GMT", - "ms-cv": "15dekCbT20W4EEgv8t/X5g.0", + "date": "Fri, 18 Jun 2021 16:39:26 GMT", + "ms-cv": "M4Qv46JQaEKPEup5RsyoCQ.0", "request-context": "appId=", "status": "200", - "x-azure-ref": "0vVy2YAAAAADPSPG74mb0SplJQTzP6XfkWVZSMzBFREdFMDMyMQA5ZmM3YjUxOS1hOGNjLTRmODktOTM1ZS1jOTE0OGFlMDllODE=", + "x-azure-ref": "0P8zMYAAAAABC4hfrfOy0R43BU0ii5UoeWVZSMzBFREdFMDMxMAA5ZmM3YjUxOS1hOGNjLTRmODktOTM1ZS1jOTE0OGFlMDllODE=", "x-cache": "CONFIG_NOCACHE", - "x-processing-time": "459ms" + "x-processing-time": "412ms" } }, { @@ -297,105 +297,84 @@ }, "requestBody": null, "status": 200, - "response": "{\"status\":\"notStarted\",\"resourceLocation\":null,\"createdDateTime\":\"2021-06-01T16:13:24.2919684+00:00\",\"id\":\"purchase_sanitized\",\"operationType\":\"purchase\",\"lastActionDateTime\":\"0001-01-01T00:00:00+00:00\"}", + "response": "{\"status\":\"succeeded\",\"resourceLocation\":null,\"createdDateTime\":\"2021-06-18T16:39:01.7862614+00:00\",\"id\":\"purchase_sanitized\",\"operationType\":\"purchase\",\"lastActionDateTime\":\"0001-01-01T00:00:00+00:00\"}", "responseHeaders": { "api-supported-versions": "2021-03-07", "content-type": "application/json; charset=utf-8", - "date": "Tue, 01 Jun 2021 16:13:52 GMT", - "ms-cv": "62DDEO0rBU2xgTyFR9sYAA.0", + "date": "Fri, 18 Jun 2021 16:39:29 GMT", + "ms-cv": "L6Ns+ZzZ20S3cc/J9jT9Vw.0", "request-context": "appId=", "status": "200", - "x-azure-ref": "0wFy2YAAAAABDhqKXVAFbTIWycSSYPqP6WVZSMzBFREdFMDMyMQA5ZmM3YjUxOS1hOGNjLTRmODktOTM1ZS1jOTE0OGFlMDllODE=", + "x-azure-ref": "0QczMYAAAAABlut55ZA1jRZfQP/ojMlLvWVZSMzBFREdFMDMxMAA5ZmM3YjUxOS1hOGNjLTRmODktOTM1ZS1jOTE0OGFlMDllODE=", "x-cache": "CONFIG_NOCACHE", - "x-processing-time": "428ms" + "x-processing-time": "693ms" } }, { "method": "GET", - "url": "https://endpoint/phoneNumbers/operations/purchase_sanitized", + "url": "https://endpoint/phoneNumbers/%2B14155550100", "query": { "api-version": "2021-03-07" }, "requestBody": null, "status": 200, - "response": "{\"status\":\"notStarted\",\"resourceLocation\":null,\"createdDateTime\":\"2021-06-01T16:13:24.2919684+00:00\",\"id\":\"purchase_sanitized\",\"operationType\":\"purchase\",\"lastActionDateTime\":\"0001-01-01T00:00:00+00:00\"}", + "response": "{\"id\":\"14155550100\",\"phoneNumber\":\"+14155550100\",\"countryCode\":\"US\",\"phoneNumberType\":\"tollFree\",\"capabilities\":{\"calling\":\"none\",\"sms\":\"inbound+outbound\"},\"assignmentType\":\"application\",\"purchaseDate\":\"2021-06-18T16:39:25.8583623+00:00\",\"cost\":{\"amount\":2.0,\"currencyCode\":\"USD\",\"billingFrequency\":\"monthly\"}}", "responseHeaders": { "api-supported-versions": "2021-03-07", "content-type": "application/json; charset=utf-8", - "date": "Tue, 01 Jun 2021 16:13:54 GMT", - "ms-cv": "DQR2zNw2RUehwyG5EII3EQ.0", + "date": "Fri, 18 Jun 2021 16:39:34 GMT", + "ms-cv": "6UVBO64m906Dr+AsvBHh0g.0", "request-context": "appId=", "status": "200", - "x-azure-ref": "0wly2YAAAAADaUUN6nsClS4Lo1btlPailWVZSMzBFREdFMDMyMQA5ZmM3YjUxOS1hOGNjLTRmODktOTM1ZS1jOTE0OGFlMDllODE=", + "x-azure-ref": "0RszMYAAAAADVjKrAbW9wQpA/z/b/jwHaWVZSMzBFREdFMDMxMAA5ZmM3YjUxOS1hOGNjLTRmODktOTM1ZS1jOTE0OGFlMDllODE=", "x-cache": "CONFIG_NOCACHE", - "x-processing-time": "343ms" + "x-processing-time": "1250ms" } }, { - "method": "GET", - "url": "https://endpoint/phoneNumbers/operations/purchase_sanitized", + "method": "DELETE", + "url": "https://endpoint/phoneNumbers/%2B14155550100", "query": { "api-version": "2021-03-07" }, "requestBody": null, - "status": 200, - "response": "{\"status\":\"succeeded\",\"resourceLocation\":null,\"createdDateTime\":\"2021-06-01T16:13:24.2919684+00:00\",\"id\":\"purchase_sanitized\",\"operationType\":\"purchase\",\"lastActionDateTime\":\"0001-01-01T00:00:00+00:00\"}", + "status": 202, + "response": "", "responseHeaders": { + "access-control-expose-headers": "Operation-Location,operation-id,release-id", "api-supported-versions": "2021-03-07", - "content-type": "application/json; charset=utf-8", - "date": "Tue, 01 Jun 2021 16:13:57 GMT", - "ms-cv": "2TUsfo29UE2VyaOuI+7EHA.0", + "content-length": "0", + "date": "Fri, 18 Jun 2021 16:39:36 GMT", + "ms-cv": "rKfdKRXDHEy/Ye1/iNq2ZA.0", + "operation-id": "release_sanitized", + "operation-location": "/phoneNumbers/operations/release_sanitized?api-version=2021-03-07", + "release-id": "sanitized", "request-context": "appId=", - "status": "200", - "x-azure-ref": "0xVy2YAAAAAAsESdKjLaORrxkZ7+ld2lfWVZSMzBFREdFMDMyMQA5ZmM3YjUxOS1hOGNjLTRmODktOTM1ZS1jOTE0OGFlMDllODE=", + "status": "202", + "x-azure-ref": "0R8zMYAAAAACm7AskygTVQ6IHXYGCLx4eWVZSMzBFREdFMDMxMAA5ZmM3YjUxOS1hOGNjLTRmODktOTM1ZS1jOTE0OGFlMDllODE=", "x-cache": "CONFIG_NOCACHE", - "x-processing-time": "343ms" + "x-processing-time": "1437ms" } }, { "method": "GET", - "url": "https://endpoint/phoneNumbers/%2B14155550100", + "url": "https://endpoint/phoneNumbers/operations/release_sanitized", "query": { "api-version": "2021-03-07" }, "requestBody": null, "status": 200, - "response": "{\"id\":\"14155550100\",\"phoneNumber\":\"+14155550100\",\"countryCode\":\"US\",\"phoneNumberType\":\"tollFree\",\"capabilities\":{\"calling\":\"none\",\"sms\":\"inbound+outbound\"},\"assignmentType\":\"application\",\"purchaseDate\":\"2021-06-01T16:13:54.2335149+00:00\",\"cost\":{\"amount\":2.0,\"currencyCode\":\"USD\",\"billingFrequency\":\"monthly\"}}", + "response": "{\"status\":\"notStarted\",\"resourceLocation\":null,\"createdDateTime\":\"2021-06-18T16:39:36.7719624+00:00\",\"id\":\"release_sanitized\",\"operationType\":\"releasePhoneNumber\",\"lastActionDateTime\":\"0001-01-01T00:00:00+00:00\"}", "responseHeaders": { "api-supported-versions": "2021-03-07", "content-type": "application/json; charset=utf-8", - "date": "Tue, 01 Jun 2021 16:14:02 GMT", - "ms-cv": "Q9RqhRf2rEmU+dp/QMRqkg.0", + "date": "Fri, 18 Jun 2021 16:39:36 GMT", + "ms-cv": "/RFouUS2+kOYiZhO2k+CKw.0", "request-context": "appId=", "status": "200", - "x-azure-ref": "0yVy2YAAAAAD6JDmd3dE3RZJnwogpX3RyWVZSMzBFREdFMDMyMQA5ZmM3YjUxOS1hOGNjLTRmODktOTM1ZS1jOTE0OGFlMDllODE=", - "x-cache": "CONFIG_NOCACHE", - "x-processing-time": "1296ms" - } - }, - { - "method": "DELETE", - "url": "https://endpoint/phoneNumbers/%2B14155550100", - "query": { - "api-version": "2021-03-07" - }, - "requestBody": null, - "status": 202, - "response": "", - "responseHeaders": { - "access-control-expose-headers": "Operation-Location,operation-id,release-id", - "api-supported-versions": "2021-03-07", - "content-length": "0", - "date": "Tue, 01 Jun 2021 16:14:03 GMT", - "ms-cv": "1rK16Wn8xUiAgj2TWrqg8Q.0", - "operation-id": "release_sanitized", - "operation-location": "/phoneNumbers/operations/release_sanitized?api-version=2021-03-07", - "release-id": "sanitized", - "request-context": "appId=", - "status": "202", - "x-azure-ref": "0yly2YAAAAABJ1joOrrrDQYtQ6Ykq+eiSWVZSMzBFREdFMDMyMQA5ZmM3YjUxOS1hOGNjLTRmODktOTM1ZS1jOTE0OGFlMDllODE=", + "x-azure-ref": "0SczMYAAAAADF58LrzSzASK7OMGDY2OsEWVZSMzBFREdFMDMxMAA5ZmM3YjUxOS1hOGNjLTRmODktOTM1ZS1jOTE0OGFlMDllODE=", "x-cache": "CONFIG_NOCACHE", - "x-processing-time": "1510ms" + "x-processing-time": "378ms" } }, { @@ -406,17 +385,17 @@ }, "requestBody": null, "status": 200, - "response": "{\"status\":\"notStarted\",\"resourceLocation\":null,\"createdDateTime\":\"2021-06-01T16:14:03.9464053+00:00\",\"id\":\"release_sanitized\",\"operationType\":\"releasePhoneNumber\",\"lastActionDateTime\":\"0001-01-01T00:00:00+00:00\"}", + "response": "{\"status\":\"running\",\"resourceLocation\":null,\"createdDateTime\":\"2021-06-18T16:39:36.7719624+00:00\",\"id\":\"release_sanitized\",\"operationType\":\"releasePhoneNumber\",\"lastActionDateTime\":\"0001-01-01T00:00:00+00:00\"}", "responseHeaders": { "api-supported-versions": "2021-03-07", "content-type": "application/json; charset=utf-8", - "date": "Tue, 01 Jun 2021 16:14:04 GMT", - "ms-cv": "lKCfYAkP9EmdMNAZWLHmAA.0", + "date": "Fri, 18 Jun 2021 16:39:40 GMT", + "ms-cv": "6VaISi5veke/E6jpd3YyMg.0", "request-context": "appId=", "status": "200", - "x-azure-ref": "0zFy2YAAAAADGWtQN0eMMTLQdJmqMC04/WVZSMzBFREdFMDMyMQA5ZmM3YjUxOS1hOGNjLTRmODktOTM1ZS1jOTE0OGFlMDllODE=", + "x-azure-ref": "0S8zMYAAAAAARcbw4zLIkRKuAeAxizAkyWVZSMzBFREdFMDMxMAA5ZmM3YjUxOS1hOGNjLTRmODktOTM1ZS1jOTE0OGFlMDllODE=", "x-cache": "CONFIG_NOCACHE", - "x-processing-time": "622ms" + "x-processing-time": "319ms" } }, { @@ -427,17 +406,17 @@ }, "requestBody": null, "status": 200, - "response": "{\"status\":\"running\",\"resourceLocation\":null,\"createdDateTime\":\"2021-06-01T16:14:03.9464053+00:00\",\"id\":\"release_sanitized\",\"operationType\":\"releasePhoneNumber\",\"lastActionDateTime\":\"0001-01-01T00:00:00+00:00\"}", + "response": "{\"status\":\"running\",\"resourceLocation\":null,\"createdDateTime\":\"2021-06-18T16:39:36.7719624+00:00\",\"id\":\"release_sanitized\",\"operationType\":\"releasePhoneNumber\",\"lastActionDateTime\":\"0001-01-01T00:00:00+00:00\"}", "responseHeaders": { "api-supported-versions": "2021-03-07", "content-type": "application/json; charset=utf-8", - "date": "Tue, 01 Jun 2021 16:14:06 GMT", - "ms-cv": "8rXSKPktu0WO7UNsoBd94A.0", + "date": "Fri, 18 Jun 2021 16:39:42 GMT", + "ms-cv": "Etw/nePLx0eVKisAwn6WHQ.0", "request-context": "appId=", "status": "200", - "x-azure-ref": "0z1y2YAAAAACtivPCBpiiQqqdCx8EbHXiWVZSMzBFREdFMDMyMQA5ZmM3YjUxOS1hOGNjLTRmODktOTM1ZS1jOTE0OGFlMDllODE=", + "x-azure-ref": "0TszMYAAAAACMbP9Kq2SYTr2eP3pBZAgnWVZSMzBFREdFMDMxMAA5ZmM3YjUxOS1hOGNjLTRmODktOTM1ZS1jOTE0OGFlMDllODE=", "x-cache": "CONFIG_NOCACHE", - "x-processing-time": "282ms" + "x-processing-time": "334ms" } }, { @@ -448,17 +427,17 @@ }, "requestBody": null, "status": 200, - "response": "{\"status\":\"running\",\"resourceLocation\":null,\"createdDateTime\":\"2021-06-01T16:14:03.9464053+00:00\",\"id\":\"release_sanitized\",\"operationType\":\"releasePhoneNumber\",\"lastActionDateTime\":\"0001-01-01T00:00:00+00:00\"}", + "response": "{\"status\":\"running\",\"resourceLocation\":null,\"createdDateTime\":\"2021-06-18T16:39:36.7719624+00:00\",\"id\":\"release_sanitized\",\"operationType\":\"releasePhoneNumber\",\"lastActionDateTime\":\"0001-01-01T00:00:00+00:00\"}", "responseHeaders": { "api-supported-versions": "2021-03-07", "content-type": "application/json; charset=utf-8", - "date": "Tue, 01 Jun 2021 16:14:09 GMT", - "ms-cv": "CwQY1En1gkqRQvnUAVs9pw.0", + "date": "Fri, 18 Jun 2021 16:39:44 GMT", + "ms-cv": "ILxK20odD0WMSbEhor7Buw.0", "request-context": "appId=", "status": "200", - "x-azure-ref": "00Vy2YAAAAAAZQFr2p96NSLE21P63hI8iWVZSMzBFREdFMDMyMQA5ZmM3YjUxOS1hOGNjLTRmODktOTM1ZS1jOTE0OGFlMDllODE=", + "x-azure-ref": "0UMzMYAAAAACJ2YnuleR4R5V7kcIeAgbnWVZSMzBFREdFMDMxMAA5ZmM3YjUxOS1hOGNjLTRmODktOTM1ZS1jOTE0OGFlMDllODE=", "x-cache": "CONFIG_NOCACHE", - "x-processing-time": "512ms" + "x-processing-time": "333ms" } }, { @@ -469,17 +448,17 @@ }, "requestBody": null, "status": 200, - "response": "{\"status\":\"succeeded\",\"resourceLocation\":null,\"createdDateTime\":\"2021-06-01T16:14:03.9464053+00:00\",\"id\":\"release_sanitized\",\"operationType\":\"releasePhoneNumber\",\"lastActionDateTime\":\"0001-01-01T00:00:00+00:00\"}", + "response": "{\"status\":\"succeeded\",\"resourceLocation\":null,\"createdDateTime\":\"2021-06-18T16:39:36.7719624+00:00\",\"id\":\"release_sanitized\",\"operationType\":\"releasePhoneNumber\",\"lastActionDateTime\":\"0001-01-01T00:00:00+00:00\"}", "responseHeaders": { "api-supported-versions": "2021-03-07", "content-type": "application/json; charset=utf-8", - "date": "Tue, 01 Jun 2021 16:14:11 GMT", - "ms-cv": "giBW71y60UW6Sx28C+jPFQ.0", + "date": "Fri, 18 Jun 2021 16:39:47 GMT", + "ms-cv": "zHHzh1CO+EK65oEpXsLaAg.0", "request-context": "appId=", "status": "200", - "x-azure-ref": "01Fy2YAAAAACpspsKYLvjSaJZXS3rTspQWVZSMzBFREdFMDMyMQA5ZmM3YjUxOS1hOGNjLTRmODktOTM1ZS1jOTE0OGFlMDllODE=", + "x-azure-ref": "0U8zMYAAAAAAur+f/DbyuRKcEggsmRPSYWVZSMzBFREdFMDMxMAA5ZmM3YjUxOS1hOGNjLTRmODktOTM1ZS1jOTE0OGFlMDllODE=", "x-cache": "CONFIG_NOCACHE", - "x-processing-time": "332ms" + "x-processing-time": "308ms" } } ], @@ -487,5 +466,5 @@ "uniqueName": {}, "newDate": {} }, - "hash": "fa44f3995964677cea8445a9b6dfd114" + "hash": "416927590c0eb89a1bcfcaeaaa937d51" } \ No newline at end of file diff --git a/sdk/communication/communication-phone-numbers/recordings/browsers/phonenumbersclient__lro__search/recording_can_search_for_1_available_phone_number_by_default.json b/sdk/communication/communication-phone-numbers/recordings/browsers/phonenumbersclient__lro__search/recording_can_search_for_1_available_phone_number_by_default.json index cba49d729caf..6bd912c335b1 100644 --- a/sdk/communication/communication-phone-numbers/recordings/browsers/phonenumbersclient__lro__search/recording_can_search_for_1_available_phone_number_by_default.json +++ b/sdk/communication/communication-phone-numbers/recordings/browsers/phonenumbersclient__lro__search/recording_can_search_for_1_available_phone_number_by_default.json @@ -13,17 +13,17 @@ "access-control-expose-headers": "Location,Operation-Location,operation-id,search-id", "api-supported-versions": "2021-03-07", "content-length": "0", - "date": "Tue, 01 Jun 2021 16:15:22 GMT", + "date": "Fri, 18 Jun 2021 16:40:55 GMT", "location": "/availablePhoneNumbers/searchResults/sanitized?api-version=2021-03-07", - "ms-cv": "lWRWCoActkCLH3si46Pp4g.0", + "ms-cv": "/rVl2dQlYEWN6rWbpD4dZg.0", "operation-id": "search_sanitized", "operation-location": "/phoneNumbers/operations/search_sanitized?api-version=2021-03-07", "request-context": "appId=", "search-id": "sanitized", "status": "202", - "x-azure-ref": "0GF22YAAAAABp7tjCyodzTZ/DU2GAAm5sWVZSMzBFREdFMDMyMQA5ZmM3YjUxOS1hOGNjLTRmODktOTM1ZS1jOTE0OGFlMDllODE=", + "x-azure-ref": "0lszMYAAAAAD6DZk5C8dxSY9p8/lzH/lCWVZSMzBFREdFMDMxMAA5ZmM3YjUxOS1hOGNjLTRmODktOTM1ZS1jOTE0OGFlMDllODE=", "x-cache": "CONFIG_NOCACHE", - "x-processing-time": "2061ms" + "x-processing-time": "2114ms" } }, { @@ -34,19 +34,19 @@ }, "requestBody": null, "status": 200, - "response": "{\"status\":\"notStarted\",\"resourceLocation\":\"/availablePhoneNumbers/searchResults/sanitized?api-version=2021-03-07\",\"createdDateTime\":\"2021-06-01T16:15:22.3286246+00:00\",\"id\":\"search_sanitized\",\"operationType\":\"search\",\"lastActionDateTime\":\"0001-01-01T00:00:00+00:00\"}", + "response": "{\"status\":\"notStarted\",\"resourceLocation\":\"/availablePhoneNumbers/searchResults/sanitized?api-version=2021-03-07\",\"createdDateTime\":\"2021-06-18T16:40:56.0363557+00:00\",\"id\":\"search_sanitized\",\"operationType\":\"search\",\"lastActionDateTime\":\"0001-01-01T00:00:00+00:00\"}", "responseHeaders": { "access-control-expose-headers": "Location", "api-supported-versions": "2021-03-07", "content-type": "application/json; charset=utf-8", - "date": "Tue, 01 Jun 2021 16:15:22 GMT", + "date": "Fri, 18 Jun 2021 16:40:56 GMT", "location": "/availablePhoneNumbers/searchResults/sanitized?api-version=2021-03-07", - "ms-cv": "Yi3DLbjozE+8BvNx59qQJQ.0", + "ms-cv": "H1VFmar+vkS8wvw2SNQC+Q.0", "request-context": "appId=", "status": "200", - "x-azure-ref": "0Gl22YAAAAADYpnA1caGpSppF5PHe2+fAWVZSMzBFREdFMDMyMQA5ZmM3YjUxOS1hOGNjLTRmODktOTM1ZS1jOTE0OGFlMDllODE=", + "x-azure-ref": "0mMzMYAAAAAD3PhFgvWDUS4dabm2PZvB0WVZSMzBFREdFMDMxMAA5ZmM3YjUxOS1hOGNjLTRmODktOTM1ZS1jOTE0OGFlMDllODE=", "x-cache": "CONFIG_NOCACHE", - "x-processing-time": "347ms" + "x-processing-time": "381ms" } }, { @@ -57,19 +57,19 @@ }, "requestBody": null, "status": 200, - "response": "{\"status\":\"succeeded\",\"resourceLocation\":\"/availablePhoneNumbers/searchResults/sanitized?api-version=2021-03-07\",\"createdDateTime\":\"2021-06-01T16:15:22.3286246+00:00\",\"id\":\"search_sanitized\",\"operationType\":\"search\",\"lastActionDateTime\":\"0001-01-01T00:00:00+00:00\"}", + "response": "{\"status\":\"succeeded\",\"resourceLocation\":\"/availablePhoneNumbers/searchResults/sanitized?api-version=2021-03-07\",\"createdDateTime\":\"2021-06-18T16:40:56.0363557+00:00\",\"id\":\"search_sanitized\",\"operationType\":\"search\",\"lastActionDateTime\":\"0001-01-01T00:00:00+00:00\"}", "responseHeaders": { "access-control-expose-headers": "Location", "api-supported-versions": "2021-03-07", "content-type": "application/json; charset=utf-8", - "date": "Tue, 01 Jun 2021 16:15:25 GMT", + "date": "Fri, 18 Jun 2021 16:40:58 GMT", "location": "/availablePhoneNumbers/searchResults/sanitized?api-version=2021-03-07", - "ms-cv": "usyn7yJfYESuB+J9T50+Bw.0", + "ms-cv": "25alJz+EBEWiNh/vQeb96g.0", "request-context": "appId=", "status": "200", - "x-azure-ref": "0HV22YAAAAAA7ohcRXRaBSL+KhUN1WSouWVZSMzBFREdFMDMyMQA5ZmM3YjUxOS1hOGNjLTRmODktOTM1ZS1jOTE0OGFlMDllODE=", + "x-azure-ref": "0mszMYAAAAAAYDOsp+QyhT7CHSp8nim/6WVZSMzBFREdFMDMxMAA5ZmM3YjUxOS1hOGNjLTRmODktOTM1ZS1jOTE0OGFlMDllODE=", "x-cache": "CONFIG_NOCACHE", - "x-processing-time": "338ms" + "x-processing-time": "418ms" } }, { @@ -80,17 +80,17 @@ }, "requestBody": null, "status": 200, - "response": "{\"searchId\":\"sanitized\",\"phoneNumbers\":[\"+14155550100\"],\"phoneNumberType\":\"tollFree\",\"assignmentType\":\"application\",\"capabilities\":{\"calling\":\"outbound\",\"sms\":\"none\"},\"cost\":{\"amount\":2.0,\"currencyCode\":\"USD\",\"billingFrequency\":\"monthly\"},\"searchExpiresBy\":\"2021-06-01T16:31:24.3085493+00:00\"}", + "response": "{\"searchId\":\"sanitized\",\"phoneNumbers\":[\"+14155550100\"],\"phoneNumberType\":\"tollFree\",\"assignmentType\":\"application\",\"capabilities\":{\"calling\":\"outbound\",\"sms\":\"none\"},\"cost\":{\"amount\":2.0,\"currencyCode\":\"USD\",\"billingFrequency\":\"monthly\"},\"searchExpiresBy\":\"2021-06-18T16:56:57.5740076+00:00\"}", "responseHeaders": { "api-supported-versions": "2021-03-07", "content-type": "application/json; charset=utf-8", - "date": "Tue, 01 Jun 2021 16:15:27 GMT", - "ms-cv": "xaFHL0q0NE6/DnbED2+7pQ.0", + "date": "Fri, 18 Jun 2021 16:41:01 GMT", + "ms-cv": "bSmbaaFlW0S6eTgonFUysg.0", "request-context": "appId=", "status": "200", - "x-azure-ref": "0H122YAAAAAC8ml30p6vlRqx785JYD4AmWVZSMzBFREdFMDMyMQA5ZmM3YjUxOS1hOGNjLTRmODktOTM1ZS1jOTE0OGFlMDllODE=", + "x-azure-ref": "0nczMYAAAAADLECAt5/yXSLyp9tRT8VEKWVZSMzBFREdFMDMxMAA5ZmM3YjUxOS1hOGNjLTRmODktOTM1ZS1jOTE0OGFlMDllODE=", "x-cache": "CONFIG_NOCACHE", - "x-processing-time": "884ms" + "x-processing-time": "1039ms" } } ], @@ -98,5 +98,5 @@ "uniqueName": {}, "newDate": {} }, - "hash": "6fc2d9523d9988e48e74d4517b232cb1" + "hash": "9442c43ae11a0869c2b1a10b96165777" } \ No newline at end of file diff --git a/sdk/communication/communication-phone-numbers/recordings/browsers/phonenumbersclient__lro__search/recording_throws_on_invalid_search_request.json b/sdk/communication/communication-phone-numbers/recordings/browsers/phonenumbersclient__lro__search/recording_throws_on_invalid_search_request.json index c962153f1b91..890264ff45ee 100644 --- a/sdk/communication/communication-phone-numbers/recordings/browsers/phonenumbersclient__lro__search/recording_throws_on_invalid_search_request.json +++ b/sdk/communication/communication-phone-numbers/recordings/browsers/phonenumbersclient__lro__search/recording_throws_on_invalid_search_request.json @@ -12,13 +12,13 @@ "responseHeaders": { "api-supported-versions": "2021-03-07", "content-type": "application/json", - "date": "Tue, 01 Jun 2021 16:15:31 GMT", - "ms-cv": "D8mBUIfXZ0OHrP4SXSq/OQ.0", + "date": "Fri, 18 Jun 2021 16:41:05 GMT", + "ms-cv": "6UNU0hmm5EWgilZGg36oEg.0", "request-context": "appId=", "status": "400", - "x-azure-ref": "0Il22YAAAAABTZ31Vei09TqNojP38iXqbWVZSMzBFREdFMDMyMQA5ZmM3YjUxOS1hOGNjLTRmODktOTM1ZS1jOTE0OGFlMDllODE=", + "x-azure-ref": "0oMzMYAAAAAAT+jpuH2jeT7dub0MLmKf8WVZSMzBFREdFMDMxMAA5ZmM3YjUxOS1hOGNjLTRmODktOTM1ZS1jOTE0OGFlMDllODE=", "x-cache": "CONFIG_NOCACHE", - "x-processing-time": "1707ms" + "x-processing-time": "1332ms" } } ], @@ -26,5 +26,5 @@ "uniqueName": {}, "newDate": {} }, - "hash": "0a8d65017395f38f7d477e7592233ac0" + "hash": "182bac91e121262aabae40506fbaf691" } \ No newline at end of file diff --git a/sdk/communication/communication-phone-numbers/recordings/browsers/phonenumbersclient__lro__search_aad/recording_can_search_for_1_available_phone_number_by_default.json b/sdk/communication/communication-phone-numbers/recordings/browsers/phonenumbersclient__lro__search_aad/recording_can_search_for_1_available_phone_number_by_default.json index 384c99b73501..dc8322d8571d 100644 --- a/sdk/communication/communication-phone-numbers/recordings/browsers/phonenumbersclient__lro__search_aad/recording_can_search_for_1_available_phone_number_by_default.json +++ b/sdk/communication/communication-phone-numbers/recordings/browsers/phonenumbersclient__lro__search_aad/recording_can_search_for_1_available_phone_number_by_default.json @@ -4,23 +4,23 @@ "method": "POST", "url": "https://endpoint/SomeTenantId/oauth2/v2.0/token", "query": {}, - "requestBody": "response_type=token&grant_type=client_credentials&client_id=SomeClientId&client_secret=SomeClientSecret&scope=https%3A%2F%2Fcommunication.azure.com%2F%2F.default", + "requestBody": "response_type=token&grant_type=client_credentials&client_id=SomeClientId&client_secret=SomeClientSecret&scope=https%3A%2F%2Fsanitized%2F", "status": 200, "response": "{\"token_type\":\"Bearer\",\"expires_in\":86399,\"ext_expires_in\":86399,\"access_token\":\"access_token\"}", "responseHeaders": { "cache-control": "no-store, no-cache", "content-length": "1327", "content-type": "application/json; charset=utf-8", - "date": "Tue, 01 Jun 2021 16:15:08 GMT", + "date": "Fri, 18 Jun 2021 16:40:41 GMT", "expires": "-1", "nel": "{\"report_to\":\"network-errors\",\"max_age\":86400,\"success_fraction\":0.001,\"failure_fraction\":1.0}", "p3p": "CP=\"DSP CUR OTPi IND OTRi ONL FIN\"", "pragma": "no-cache", "referrer-policy": "strict-origin-when-cross-origin", - "report-to": "{\"group\":\"network-errors\",\"max_age\":86400,\"endpoints\":[{\"url\":\"https://endpoint/api/report?catId=GW+estsfd+chi\"}]}", + "report-to": "{\"group\":\"network-errors\",\"max_age\":86400,\"endpoints\":[{\"url\":\"https://endpoint/api/report?catId=GW+estsfd+est\"}]}", "strict-transport-security": "max-age=31536000; includeSubDomains", "x-content-type-options": "nosniff", - "x-ms-ests-server": "2.1.11722.26 - EUS ProdSlices", + "x-ms-ests-server": "2.1.11829.4 - EUS ProdSlices", "x-ms-request-id": "sanitized" } }, @@ -37,17 +37,17 @@ "access-control-expose-headers": "Location,Operation-Location,operation-id,search-id", "api-supported-versions": "2021-03-07", "content-length": "0", - "date": "Tue, 01 Jun 2021 16:15:10 GMT", + "date": "Fri, 18 Jun 2021 16:40:44 GMT", "location": "/availablePhoneNumbers/searchResults/sanitized?api-version=2021-03-07", - "ms-cv": "Wivt8LoldEaKWkj493TqVA.0", + "ms-cv": "s1OE1j8mokiHpItyl6zlWA.0", "operation-id": "search_sanitized", "operation-location": "/phoneNumbers/operations/search_sanitized?api-version=2021-03-07", "request-context": "appId=", "search-id": "sanitized", "status": "202", - "x-azure-ref": "0DF22YAAAAAB07+ikZYWmTYgTwQLRU4pqWVZSMzBFREdFMDMyMQA5ZmM3YjUxOS1hOGNjLTRmODktOTM1ZS1jOTE0OGFlMDllODE=", + "x-azure-ref": "0iszMYAAAAAAzzfgmwWw1QpULSO9yxg6zWVZSMzBFREdFMDMxMAA5ZmM3YjUxOS1hOGNjLTRmODktOTM1ZS1jOTE0OGFlMDllODE=", "x-cache": "CONFIG_NOCACHE", - "x-processing-time": "1742ms" + "x-processing-time": "2162ms" } }, { @@ -58,19 +58,19 @@ }, "requestBody": null, "status": 200, - "response": "{\"status\":\"notStarted\",\"resourceLocation\":\"/availablePhoneNumbers/searchResults/sanitized?api-version=2021-03-07\",\"createdDateTime\":\"2021-06-01T16:15:10.3041624+00:00\",\"id\":\"search_sanitized\",\"operationType\":\"search\",\"lastActionDateTime\":\"0001-01-01T00:00:00+00:00\"}", + "response": "{\"status\":\"notStarted\",\"resourceLocation\":\"/availablePhoneNumbers/searchResults/sanitized?api-version=2021-03-07\",\"createdDateTime\":\"2021-06-18T16:40:44.1498283+00:00\",\"id\":\"search_sanitized\",\"operationType\":\"search\",\"lastActionDateTime\":\"0001-01-01T00:00:00+00:00\"}", "responseHeaders": { "access-control-expose-headers": "Location", "api-supported-versions": "2021-03-07", "content-type": "application/json; charset=utf-8", - "date": "Tue, 01 Jun 2021 16:15:10 GMT", + "date": "Fri, 18 Jun 2021 16:40:44 GMT", "location": "/availablePhoneNumbers/searchResults/sanitized?api-version=2021-03-07", - "ms-cv": "n7rQjRwJF0KMho+k+xya2w.0", + "ms-cv": "abTNcM4oGE6aQwl3aHra+Q.0", "request-context": "appId=", "status": "200", - "x-azure-ref": "0Dl22YAAAAADmJV/WN+riQolnxZsLxecTWVZSMzBFREdFMDMyMQA5ZmM3YjUxOS1hOGNjLTRmODktOTM1ZS1jOTE0OGFlMDllODE=", + "x-azure-ref": "0jMzMYAAAAABFblSs8MXPSYjmURtVlIxvWVZSMzBFREdFMDMxMAA5ZmM3YjUxOS1hOGNjLTRmODktOTM1ZS1jOTE0OGFlMDllODE=", "x-cache": "CONFIG_NOCACHE", - "x-processing-time": "360ms" + "x-processing-time": "364ms" } }, { @@ -81,19 +81,19 @@ }, "requestBody": null, "status": 200, - "response": "{\"status\":\"succeeded\",\"resourceLocation\":\"/availablePhoneNumbers/searchResults/sanitized?api-version=2021-03-07\",\"createdDateTime\":\"2021-06-01T16:15:10.3041624+00:00\",\"id\":\"search_sanitized\",\"operationType\":\"search\",\"lastActionDateTime\":\"0001-01-01T00:00:00+00:00\"}", + "response": "{\"status\":\"succeeded\",\"resourceLocation\":\"/availablePhoneNumbers/searchResults/sanitized?api-version=2021-03-07\",\"createdDateTime\":\"2021-06-18T16:40:44.1498283+00:00\",\"id\":\"search_sanitized\",\"operationType\":\"search\",\"lastActionDateTime\":\"0001-01-01T00:00:00+00:00\"}", "responseHeaders": { "access-control-expose-headers": "Location", "api-supported-versions": "2021-03-07", "content-type": "application/json; charset=utf-8", - "date": "Tue, 01 Jun 2021 16:15:13 GMT", + "date": "Fri, 18 Jun 2021 16:40:46 GMT", "location": "/availablePhoneNumbers/searchResults/sanitized?api-version=2021-03-07", - "ms-cv": "yHiMzbmK20a2dW6FI1EX8g.0", + "ms-cv": "0GWTDBa8nU+qTdfHUajV/w.0", "request-context": "appId=", "status": "200", - "x-azure-ref": "0EV22YAAAAAD1u7fvdu04TJQM6hrHqH1VWVZSMzBFREdFMDMyMQA5ZmM3YjUxOS1hOGNjLTRmODktOTM1ZS1jOTE0OGFlMDllODE=", + "x-azure-ref": "0j8zMYAAAAADxJeUF4o4lS6iZpaUCxTzIWVZSMzBFREdFMDMxMAA5ZmM3YjUxOS1hOGNjLTRmODktOTM1ZS1jOTE0OGFlMDllODE=", "x-cache": "CONFIG_NOCACHE", - "x-processing-time": "335ms" + "x-processing-time": "421ms" } }, { @@ -104,17 +104,17 @@ }, "requestBody": null, "status": 200, - "response": "{\"searchId\":\"sanitized\",\"phoneNumbers\":[\"+14155550100\"],\"phoneNumberType\":\"tollFree\",\"assignmentType\":\"application\",\"capabilities\":{\"calling\":\"outbound\",\"sms\":\"none\"},\"cost\":{\"amount\":2.0,\"currencyCode\":\"USD\",\"billingFrequency\":\"monthly\"},\"searchExpiresBy\":\"2021-06-01T16:31:12.3600957+00:00\"}", + "response": "{\"searchId\":\"sanitized\",\"phoneNumbers\":[\"+14155550100\"],\"phoneNumberType\":\"tollFree\",\"assignmentType\":\"application\",\"capabilities\":{\"calling\":\"outbound\",\"sms\":\"none\"},\"cost\":{\"amount\":2.0,\"currencyCode\":\"USD\",\"billingFrequency\":\"monthly\"},\"searchExpiresBy\":\"2021-06-18T16:56:46.1994694+00:00\"}", "responseHeaders": { "api-supported-versions": "2021-03-07", "content-type": "application/json; charset=utf-8", - "date": "Tue, 01 Jun 2021 16:15:16 GMT", - "ms-cv": "Al+eGVH+5EyEP4BhoM2tFQ.0", + "date": "Fri, 18 Jun 2021 16:40:49 GMT", + "ms-cv": "W9Ld6j3tNEmp6sPul6+17Q.0", "request-context": "appId=", "status": "200", - "x-azure-ref": "0E122YAAAAAD1liehfHOnRqbXfApMshLSWVZSMzBFREdFMDMyMQA5ZmM3YjUxOS1hOGNjLTRmODktOTM1ZS1jOTE0OGFlMDllODE=", + "x-azure-ref": "0kczMYAAAAADtiuA9adtnSL+tx0saTZm7WVZSMzBFREdFMDMxMAA5ZmM3YjUxOS1hOGNjLTRmODktOTM1ZS1jOTE0OGFlMDllODE=", "x-cache": "CONFIG_NOCACHE", - "x-processing-time": "1762ms" + "x-processing-time": "865ms" } } ], @@ -122,5 +122,5 @@ "uniqueName": {}, "newDate": {} }, - "hash": "6fc2d9523d9988e48e74d4517b232cb1" + "hash": "9442c43ae11a0869c2b1a10b96165777" } \ No newline at end of file diff --git a/sdk/communication/communication-phone-numbers/recordings/browsers/phonenumbersclient__lro__search_aad/recording_throws_on_invalid_search_request.json b/sdk/communication/communication-phone-numbers/recordings/browsers/phonenumbersclient__lro__search_aad/recording_throws_on_invalid_search_request.json index 6f91c3fd64bb..ebdcc0489874 100644 --- a/sdk/communication/communication-phone-numbers/recordings/browsers/phonenumbersclient__lro__search_aad/recording_throws_on_invalid_search_request.json +++ b/sdk/communication/communication-phone-numbers/recordings/browsers/phonenumbersclient__lro__search_aad/recording_throws_on_invalid_search_request.json @@ -4,23 +4,23 @@ "method": "POST", "url": "https://endpoint/SomeTenantId/oauth2/v2.0/token", "query": {}, - "requestBody": "response_type=token&grant_type=client_credentials&client_id=SomeClientId&client_secret=SomeClientSecret&scope=https%3A%2F%2Fcommunication.azure.com%2F%2F.default", + "requestBody": "response_type=token&grant_type=client_credentials&client_id=SomeClientId&client_secret=SomeClientSecret&scope=https%3A%2F%2Fsanitized%2F", "status": 200, "response": "{\"token_type\":\"Bearer\",\"expires_in\":86399,\"ext_expires_in\":86399,\"access_token\":\"access_token\"}", "responseHeaders": { "cache-control": "no-store, no-cache", "content-length": "1327", "content-type": "application/json; charset=utf-8", - "date": "Tue, 01 Jun 2021 16:15:19 GMT", + "date": "Fri, 18 Jun 2021 16:40:52 GMT", "expires": "-1", "nel": "{\"report_to\":\"network-errors\",\"max_age\":86400,\"success_fraction\":0.001,\"failure_fraction\":1.0}", "p3p": "CP=\"DSP CUR OTPi IND OTRi ONL FIN\"", "pragma": "no-cache", "referrer-policy": "strict-origin-when-cross-origin", - "report-to": "{\"group\":\"network-errors\",\"max_age\":86400,\"endpoints\":[{\"url\":\"https://endpoint/api/report?catId=GW+estsfd+chi\"}]}", + "report-to": "{\"group\":\"network-errors\",\"max_age\":86400,\"endpoints\":[{\"url\":\"https://endpoint/api/report?catId=GW+estsfd+est\"}]}", "strict-transport-security": "max-age=31536000; includeSubDomains", "x-content-type-options": "nosniff", - "x-ms-ests-server": "2.1.11722.26 - EUS ProdSlices", + "x-ms-ests-server": "2.1.11829.4 - WUS2 ProdSlices", "x-ms-request-id": "sanitized" } }, @@ -36,13 +36,13 @@ "responseHeaders": { "api-supported-versions": "2021-03-07", "content-type": "application/json", - "date": "Tue, 01 Jun 2021 16:15:20 GMT", - "ms-cv": "oHIWgAVztUC7M+1WhM2+1A.0", + "date": "Fri, 18 Jun 2021 16:40:53 GMT", + "ms-cv": "gMwSo0Qh5kCpm5hZPN83hw.0", "request-context": "appId=", "status": "400", - "x-azure-ref": "0F122YAAAAACW4XtHMykAS40QMghTHN3VWVZSMzBFREdFMDMyMQA5ZmM3YjUxOS1hOGNjLTRmODktOTM1ZS1jOTE0OGFlMDllODE=", + "x-azure-ref": "0lMzMYAAAAAAO+8UKIBgVT4yt5q+Wl95IWVZSMzBFREdFMDMxMAA5ZmM3YjUxOS1hOGNjLTRmODktOTM1ZS1jOTE0OGFlMDllODE=", "x-cache": "CONFIG_NOCACHE", - "x-processing-time": "1120ms" + "x-processing-time": "1507ms" } } ], @@ -50,5 +50,5 @@ "uniqueName": {}, "newDate": {} }, - "hash": "0a8d65017395f38f7d477e7592233ac0" + "hash": "182bac91e121262aabae40506fbaf691" } \ No newline at end of file diff --git a/sdk/communication/communication-phone-numbers/recordings/browsers/phonenumbersclient__lro__update/recording_can_update_a_phone_numbers_capabilities.json b/sdk/communication/communication-phone-numbers/recordings/browsers/phonenumbersclient__lro__update/recording_can_update_a_phone_numbers_capabilities.json index 126053c7fb12..494c174340e4 100644 --- a/sdk/communication/communication-phone-numbers/recordings/browsers/phonenumbersclient__lro__update/recording_can_update_a_phone_numbers_capabilities.json +++ b/sdk/communication/communication-phone-numbers/recordings/browsers/phonenumbersclient__lro__update/recording_can_update_a_phone_numbers_capabilities.json @@ -14,16 +14,16 @@ "api-supported-versions": "2021-03-07", "capabilities-id": "sanitized", "content-type": "application/json; charset=utf-8", - "date": "Tue, 01 Jun 2021 16:15:55 GMT", + "date": "Fri, 18 Jun 2021 16:41:26 GMT", "location": "/phoneNumbers/+14155550100?api-version=2021-03-07", - "ms-cv": "0jXv0yuGtEmT1eH1/AZ+NQ.0", + "ms-cv": "g7QIT4MTvEaCTIwqy/9kGw.0", "operation-id": "capabilities_sanitized", "operation-location": "/phoneNumbers/operations/capabilities_sanitized?api-version=2021-03-07", "request-context": "appId=", "status": "202", - "x-azure-ref": "0Ol22YAAAAAByS8J5XnGWTLHbkF2I8olZWVZSMzBFREdFMDMyMQA5ZmM3YjUxOS1hOGNjLTRmODktOTM1ZS1jOTE0OGFlMDllODE=", + "x-azure-ref": "0tMzMYAAAAADUA6rQgNKmSKflNjvHwTLfWVZSMzBFREdFMDMxMAA5ZmM3YjUxOS1hOGNjLTRmODktOTM1ZS1jOTE0OGFlMDllODE=", "x-cache": "CONFIG_NOCACHE", - "x-processing-time": "1584ms" + "x-processing-time": "1690ms" } }, { @@ -34,19 +34,19 @@ }, "requestBody": null, "status": 200, - "response": "{\"status\":\"notStarted\",\"resourceLocation\":\"/phoneNumbers/+14155550100?api-version=2021-03-07\",\"createdDateTime\":\"2021-06-01T16:15:55.4470086+00:00\",\"id\":\"capabilities_sanitized\",\"operationType\":\"updatePhoneNumberCapabilities\",\"lastActionDateTime\":\"0001-01-01T00:00:00+00:00\"}", + "response": "{\"status\":\"notStarted\",\"resourceLocation\":\"/phoneNumbers/+14155550100?api-version=2021-03-07\",\"createdDateTime\":\"2021-06-18T16:41:26.098649+00:00\",\"id\":\"capabilities_sanitized\",\"operationType\":\"updatePhoneNumberCapabilities\",\"lastActionDateTime\":\"0001-01-01T00:00:00+00:00\"}", "responseHeaders": { "access-control-expose-headers": "Location", "api-supported-versions": "2021-03-07", "content-type": "application/json; charset=utf-8", - "date": "Tue, 01 Jun 2021 16:15:55 GMT", + "date": "Fri, 18 Jun 2021 16:41:26 GMT", "location": "/phoneNumbers/+14155550100?api-version=2021-03-07", - "ms-cv": "Y1oFbYvXKk6nJdexNK2FwQ.0", + "ms-cv": "rK6mePe6BkWZ25ODJWWaCg.0", "request-context": "appId=", "status": "200", - "x-azure-ref": "0O122YAAAAAApG+8LoAsaRYeu7dWZpVAHWVZSMzBFREdFMDMyMQA5ZmM3YjUxOS1hOGNjLTRmODktOTM1ZS1jOTE0OGFlMDllODE=", + "x-azure-ref": "0tszMYAAAAAAeZ33w8MDfT46VSHQ0dDBQWVZSMzBFREdFMDMxMAA5ZmM3YjUxOS1hOGNjLTRmODktOTM1ZS1jOTE0OGFlMDllODE=", "x-cache": "CONFIG_NOCACHE", - "x-processing-time": "690ms" + "x-processing-time": "304ms" } }, { @@ -57,19 +57,19 @@ }, "requestBody": null, "status": 200, - "response": "{\"status\":\"running\",\"resourceLocation\":\"/phoneNumbers/+14155550100?api-version=2021-03-07\",\"createdDateTime\":\"2021-06-01T16:15:55.4470086+00:00\",\"id\":\"capabilities_sanitized\",\"operationType\":\"updatePhoneNumberCapabilities\",\"lastActionDateTime\":\"0001-01-01T00:00:00+00:00\"}", + "response": "{\"status\":\"running\",\"resourceLocation\":\"/phoneNumbers/+14155550100?api-version=2021-03-07\",\"createdDateTime\":\"2021-06-18T16:41:26.098649+00:00\",\"id\":\"capabilities_sanitized\",\"operationType\":\"updatePhoneNumberCapabilities\",\"lastActionDateTime\":\"0001-01-01T00:00:00+00:00\"}", "responseHeaders": { "access-control-expose-headers": "Location", "api-supported-versions": "2021-03-07", "content-type": "application/json; charset=utf-8", - "date": "Tue, 01 Jun 2021 16:15:58 GMT", + "date": "Fri, 18 Jun 2021 16:41:29 GMT", "location": "/phoneNumbers/+14155550100?api-version=2021-03-07", - "ms-cv": "HBojhsVrnkOca0wc0blbew.0", + "ms-cv": "KrmyNeWG/0aFeUSkJSZHxQ.0", "request-context": "appId=", "status": "200", - "x-azure-ref": "0Pl22YAAAAAAJ+zc5JDdOQJmetqRODVpuWVZSMzBFREdFMDMyMQA5ZmM3YjUxOS1hOGNjLTRmODktOTM1ZS1jOTE0OGFlMDllODE=", + "x-azure-ref": "0uMzMYAAAAAB7wP0xWw82TIc7VO69C0NGWVZSMzBFREdFMDMxMAA5ZmM3YjUxOS1hOGNjLTRmODktOTM1ZS1jOTE0OGFlMDllODE=", "x-cache": "CONFIG_NOCACHE", - "x-processing-time": "481ms" + "x-processing-time": "337ms" } }, { @@ -80,19 +80,19 @@ }, "requestBody": null, "status": 200, - "response": "{\"status\":\"running\",\"resourceLocation\":\"/phoneNumbers/+14155550100?api-version=2021-03-07\",\"createdDateTime\":\"2021-06-01T16:15:55.4470086+00:00\",\"id\":\"capabilities_sanitized\",\"operationType\":\"updatePhoneNumberCapabilities\",\"lastActionDateTime\":\"0001-01-01T00:00:00+00:00\"}", + "response": "{\"status\":\"running\",\"resourceLocation\":\"/phoneNumbers/+14155550100?api-version=2021-03-07\",\"createdDateTime\":\"2021-06-18T16:41:26.098649+00:00\",\"id\":\"capabilities_sanitized\",\"operationType\":\"updatePhoneNumberCapabilities\",\"lastActionDateTime\":\"0001-01-01T00:00:00+00:00\"}", "responseHeaders": { "access-control-expose-headers": "Location", "api-supported-versions": "2021-03-07", "content-type": "application/json; charset=utf-8", - "date": "Tue, 01 Jun 2021 16:16:00 GMT", + "date": "Fri, 18 Jun 2021 16:41:31 GMT", "location": "/phoneNumbers/+14155550100?api-version=2021-03-07", - "ms-cv": "0NUF4/igkkuUxZyDV/Amsw.0", + "ms-cv": "M93aXOZk70m978IoP/ZnHQ.0", "request-context": "appId=", "status": "200", - "x-azure-ref": "0QV22YAAAAABGElHhvyuyQKSnDvfMhRhFWVZSMzBFREdFMDMyMQA5ZmM3YjUxOS1hOGNjLTRmODktOTM1ZS1jOTE0OGFlMDllODE=", + "x-azure-ref": "0u8zMYAAAAACIq4fMXFeiTpfVgZSk7P+bWVZSMzBFREdFMDMxMAA5ZmM3YjUxOS1hOGNjLTRmODktOTM1ZS1jOTE0OGFlMDllODE=", "x-cache": "CONFIG_NOCACHE", - "x-processing-time": "309ms" + "x-processing-time": "307ms" } }, { @@ -103,19 +103,19 @@ }, "requestBody": null, "status": 200, - "response": "{\"status\":\"running\",\"resourceLocation\":\"/phoneNumbers/+14155550100?api-version=2021-03-07\",\"createdDateTime\":\"2021-06-01T16:15:55.4470086+00:00\",\"id\":\"capabilities_sanitized\",\"operationType\":\"updatePhoneNumberCapabilities\",\"lastActionDateTime\":\"0001-01-01T00:00:00+00:00\"}", + "response": "{\"status\":\"running\",\"resourceLocation\":\"/phoneNumbers/+14155550100?api-version=2021-03-07\",\"createdDateTime\":\"2021-06-18T16:41:26.098649+00:00\",\"id\":\"capabilities_sanitized\",\"operationType\":\"updatePhoneNumberCapabilities\",\"lastActionDateTime\":\"0001-01-01T00:00:00+00:00\"}", "responseHeaders": { "access-control-expose-headers": "Location", "api-supported-versions": "2021-03-07", "content-type": "application/json; charset=utf-8", - "date": "Tue, 01 Jun 2021 16:16:02 GMT", + "date": "Fri, 18 Jun 2021 16:41:33 GMT", "location": "/phoneNumbers/+14155550100?api-version=2021-03-07", - "ms-cv": "aKHJaesJmEe0fdv2VWjrNQ.0", + "ms-cv": "B/sVkdJsUEW2W2cnLyYXDA.0", "request-context": "appId=", "status": "200", - "x-azure-ref": "0Q122YAAAAADOSj7JEbaUS4rPpv9ME7PtWVZSMzBFREdFMDMyMQA5ZmM3YjUxOS1hOGNjLTRmODktOTM1ZS1jOTE0OGFlMDllODE=", + "x-azure-ref": "0vczMYAAAAAAu3z+5dNlsT4zPb3kwYPkoWVZSMzBFREdFMDMxMAA5ZmM3YjUxOS1hOGNjLTRmODktOTM1ZS1jOTE0OGFlMDllODE=", "x-cache": "CONFIG_NOCACHE", - "x-processing-time": "295ms" + "x-processing-time": "330ms" } }, { @@ -126,42 +126,19 @@ }, "requestBody": null, "status": 200, - "response": "{\"status\":\"running\",\"resourceLocation\":\"/phoneNumbers/+14155550100?api-version=2021-03-07\",\"createdDateTime\":\"2021-06-01T16:15:55.4470086+00:00\",\"id\":\"capabilities_sanitized\",\"operationType\":\"updatePhoneNumberCapabilities\",\"lastActionDateTime\":\"0001-01-01T00:00:00+00:00\"}", + "response": "{\"status\":\"succeeded\",\"resourceLocation\":\"/phoneNumbers/+14155550100?api-version=2021-03-07\",\"createdDateTime\":\"2021-06-18T16:41:26.098649+00:00\",\"id\":\"capabilities_sanitized\",\"operationType\":\"updatePhoneNumberCapabilities\",\"lastActionDateTime\":\"0001-01-01T00:00:00+00:00\"}", "responseHeaders": { "access-control-expose-headers": "Location", "api-supported-versions": "2021-03-07", "content-type": "application/json; charset=utf-8", - "date": "Tue, 01 Jun 2021 16:16:05 GMT", + "date": "Fri, 18 Jun 2021 16:41:36 GMT", "location": "/phoneNumbers/+14155550100?api-version=2021-03-07", - "ms-cv": "MIxwxCa9CEOwo4zASJ959g.0", + "ms-cv": "V2tmOWicUUec8GWXCc0xUw.0", "request-context": "appId=", "status": "200", - "x-azure-ref": "0RV22YAAAAABbU8wTKCVIQoFOUjU3/oOMWVZSMzBFREdFMDMyMQA5ZmM3YjUxOS1hOGNjLTRmODktOTM1ZS1jOTE0OGFlMDllODE=", + "x-azure-ref": "0wMzMYAAAAACcJ8pWoFdUTrNUHjq3NcKCWVZSMzBFREdFMDMxOAA5ZmM3YjUxOS1hOGNjLTRmODktOTM1ZS1jOTE0OGFlMDllODE=", "x-cache": "CONFIG_NOCACHE", - "x-processing-time": "334ms" - } - }, - { - "method": "GET", - "url": "https://endpoint/phoneNumbers/operations/capabilities_sanitized", - "query": { - "api-version": "2021-03-07" - }, - "requestBody": null, - "status": 200, - "response": "{\"status\":\"succeeded\",\"resourceLocation\":\"/phoneNumbers/+14155550100?api-version=2021-03-07\",\"createdDateTime\":\"2021-06-01T16:15:55.4470086+00:00\",\"id\":\"capabilities_sanitized\",\"operationType\":\"updatePhoneNumberCapabilities\",\"lastActionDateTime\":\"0001-01-01T00:00:00+00:00\"}", - "responseHeaders": { - "access-control-expose-headers": "Location", - "api-supported-versions": "2021-03-07", - "content-type": "application/json; charset=utf-8", - "date": "Tue, 01 Jun 2021 16:16:07 GMT", - "location": "/phoneNumbers/+14155550100?api-version=2021-03-07", - "ms-cv": "/3eK9QRNuEW6c8MJSHnytg.0", - "request-context": "appId=", - "status": "200", - "x-azure-ref": "0SF22YAAAAACxfCv2IA6qRLx8M4UcVMiWWVZSMzBFREdFMDMyMQA5ZmM3YjUxOS1hOGNjLTRmODktOTM1ZS1jOTE0OGFlMDllODE=", - "x-cache": "CONFIG_NOCACHE", - "x-processing-time": "285ms" + "x-processing-time": "678ms" } }, { @@ -172,17 +149,17 @@ }, "requestBody": null, "status": 200, - "response": "{\"id\":\"14155550100\",\"phoneNumber\":\"+14155550100\",\"countryCode\":\"US\",\"phoneNumberType\":\"tollFree\",\"capabilities\":{\"calling\":\"none\",\"sms\":\"outbound\"},\"assignmentType\":\"application\",\"purchaseDate\":\"2021-03-09T15:01:55.0949003+00:00\",\"cost\":{\"amount\":2.0,\"currencyCode\":\"USD\",\"billingFrequency\":\"monthly\"}}", + "response": "{\"id\":\"14155550100\",\"phoneNumber\":\"+14155550100\",\"countryCode\":\"US\",\"phoneNumberType\":\"tollFree\",\"capabilities\":{\"calling\":\"none\",\"sms\":\"outbound\"},\"assignmentType\":\"application\",\"purchaseDate\":\"2021-03-09T15:03:04.7513808+00:00\",\"cost\":{\"amount\":2.0,\"currencyCode\":\"USD\",\"billingFrequency\":\"monthly\"}}", "responseHeaders": { "api-supported-versions": "2021-03-07", "content-type": "application/json; charset=utf-8", - "date": "Tue, 01 Jun 2021 16:16:11 GMT", - "ms-cv": "LPgeQK18c0ayVIkCek63iA.0", + "date": "Fri, 18 Jun 2021 16:41:40 GMT", + "ms-cv": "qoqNs+bDA02+4hi5lLniKg.0", "request-context": "appId=", "status": "200", - "x-azure-ref": "0Sl22YAAAAAAHs2DK/8pVRI9uIN1cVreEWVZSMzBFREdFMDMyMQA5ZmM3YjUxOS1hOGNjLTRmODktOTM1ZS1jOTE0OGFlMDllODE=", + "x-azure-ref": "0w8zMYAAAAABgXo1pkAM6TrPHA4fkSJhFWVZSMzBFREdFMDMxOAA5ZmM3YjUxOS1hOGNjLTRmODktOTM1ZS1jOTE0OGFlMDllODE=", "x-cache": "CONFIG_NOCACHE", - "x-processing-time": "1191ms" + "x-processing-time": "2200ms" } } ], @@ -190,5 +167,5 @@ "uniqueName": {}, "newDate": {} }, - "hash": "bc0d3c040f4257989e64826eb468a2d3" + "hash": "b1d336b2900ec126a1a01a0cde95ad4d" } \ No newline at end of file diff --git a/sdk/communication/communication-phone-numbers/recordings/browsers/phonenumbersclient__lro__update/recording_update_throws_when_phone_number_isnt_owned.json b/sdk/communication/communication-phone-numbers/recordings/browsers/phonenumbersclient__lro__update/recording_update_throws_when_phone_number_isnt_owned.json index 24924585d231..0a86c03f8a62 100644 --- a/sdk/communication/communication-phone-numbers/recordings/browsers/phonenumbersclient__lro__update/recording_update_throws_when_phone_number_isnt_owned.json +++ b/sdk/communication/communication-phone-numbers/recordings/browsers/phonenumbersclient__lro__update/recording_update_throws_when_phone_number_isnt_owned.json @@ -8,17 +8,17 @@ }, "requestBody": "{\"calling\":\"none\",\"sms\":\"outbound\"}", "status": 404, - "response": "", + "response": "{\"error\":{\"code\":\"InternalError\",\"message\":\"The server encountered an internal error.\"}}", "responseHeaders": { "api-supported-versions": "2021-03-07", - "content-length": "0", - "date": "Tue, 01 Jun 2021 16:16:14 GMT", - "ms-cv": "CLxQWORZA0S02B6whk9RLA.0", + "content-type": "application/json", + "date": "Fri, 18 Jun 2021 16:41:43 GMT", + "ms-cv": "8+4Hy1+iXkC4kB6Qe2VKtg.0", "request-context": "appId=", "status": "404", - "x-azure-ref": "0TV22YAAAAACjKkP8z6SxRLkrVvhRqZnOWVZSMzBFREdFMDMyMQA5ZmM3YjUxOS1hOGNjLTRmODktOTM1ZS1jOTE0OGFlMDllODE=", + "x-azure-ref": "0x8zMYAAAAADfEfTkkMGsSbyOgxzuT2oZWVZSMzBFREdFMDMxOAA5ZmM3YjUxOS1hOGNjLTRmODktOTM1ZS1jOTE0OGFlMDllODE=", "x-cache": "CONFIG_NOCACHE", - "x-processing-time": "284ms" + "x-processing-time": "461ms" } } ], @@ -26,5 +26,5 @@ "uniqueName": {}, "newDate": {} }, - "hash": "1b01834067bf928c6bbe8df5701149c4" + "hash": "94c6d18150d845a6914ed056b481f079" } \ No newline at end of file diff --git a/sdk/communication/communication-phone-numbers/recordings/browsers/phonenumbersclient__lro__update_aad/recording_can_update_a_phone_numbers_capabilities.json b/sdk/communication/communication-phone-numbers/recordings/browsers/phonenumbersclient__lro__update_aad/recording_can_update_a_phone_numbers_capabilities.json index f50e26dcd5f0..a4b240259cc3 100644 --- a/sdk/communication/communication-phone-numbers/recordings/browsers/phonenumbersclient__lro__update_aad/recording_can_update_a_phone_numbers_capabilities.json +++ b/sdk/communication/communication-phone-numbers/recordings/browsers/phonenumbersclient__lro__update_aad/recording_can_update_a_phone_numbers_capabilities.json @@ -4,14 +4,14 @@ "method": "POST", "url": "https://endpoint/SomeTenantId/oauth2/v2.0/token", "query": {}, - "requestBody": "response_type=token&grant_type=client_credentials&client_id=SomeClientId&client_secret=SomeClientSecret&scope=https%3A%2F%2Fcommunication.azure.com%2F%2F.default", + "requestBody": "response_type=token&grant_type=client_credentials&client_id=SomeClientId&client_secret=SomeClientSecret&scope=https%3A%2F%2Fsanitized%2F", "status": 200, "response": "{\"token_type\":\"Bearer\",\"expires_in\":86399,\"ext_expires_in\":86399,\"access_token\":\"access_token\"}", "responseHeaders": { "cache-control": "no-store, no-cache", "content-length": "1327", "content-type": "application/json; charset=utf-8", - "date": "Tue, 01 Jun 2021 16:15:31 GMT", + "date": "Fri, 18 Jun 2021 16:41:06 GMT", "expires": "-1", "nel": "{\"report_to\":\"network-errors\",\"max_age\":86400,\"success_fraction\":0.001,\"failure_fraction\":1.0}", "p3p": "CP=\"DSP CUR OTPi IND OTRi ONL FIN\"", @@ -20,7 +20,7 @@ "report-to": "{\"group\":\"network-errors\",\"max_age\":86400,\"endpoints\":[{\"url\":\"https://endpoint/api/report?catId=GW+estsfd+chi\"}]}", "strict-transport-security": "max-age=31536000; includeSubDomains", "x-content-type-options": "nosniff", - "x-ms-ests-server": "2.1.11722.26 - WUS2 ProdSlices", + "x-ms-ests-server": "2.1.11829.4 - SCUS ProdSlices", "x-ms-request-id": "sanitized" } }, @@ -38,16 +38,16 @@ "api-supported-versions": "2021-03-07", "capabilities-id": "sanitized", "content-type": "application/json; charset=utf-8", - "date": "Tue, 01 Jun 2021 16:15:33 GMT", + "date": "Fri, 18 Jun 2021 16:41:07 GMT", "location": "/phoneNumbers/+14155550100?api-version=2021-03-07", - "ms-cv": "hlvtxDls9UCIES6eZIa+AQ.0", + "ms-cv": "B/FwPMZLq0mk9U9FuoSFGA.0", "operation-id": "capabilities_sanitized", "operation-location": "/phoneNumbers/operations/capabilities_sanitized?api-version=2021-03-07", "request-context": "appId=", "status": "202", - "x-azure-ref": "0JF22YAAAAADU7eshr5RMQLO6NjCIG6yHWVZSMzBFREdFMDMyMQA5ZmM3YjUxOS1hOGNjLTRmODktOTM1ZS1jOTE0OGFlMDllODE=", + "x-azure-ref": "0oszMYAAAAAApOCOXxug5SqxBgwCh2VR0WVZSMzBFREdFMDMxMAA5ZmM3YjUxOS1hOGNjLTRmODktOTM1ZS1jOTE0OGFlMDllODE=", "x-cache": "CONFIG_NOCACHE", - "x-processing-time": "2062ms" + "x-processing-time": "1763ms" } }, { @@ -58,42 +58,19 @@ }, "requestBody": null, "status": 200, - "response": "{\"status\":\"notStarted\",\"resourceLocation\":\"/phoneNumbers/+14155550100?api-version=2021-03-07\",\"createdDateTime\":\"2021-06-01T16:15:34.1612403+00:00\",\"id\":\"capabilities_sanitized\",\"operationType\":\"updatePhoneNumberCapabilities\",\"lastActionDateTime\":\"0001-01-01T00:00:00+00:00\"}", + "response": "{\"status\":\"running\",\"resourceLocation\":\"/phoneNumbers/+14155550100?api-version=2021-03-07\",\"createdDateTime\":\"2021-06-18T16:41:07.8993673+00:00\",\"id\":\"capabilities_sanitized\",\"operationType\":\"updatePhoneNumberCapabilities\",\"lastActionDateTime\":\"0001-01-01T00:00:00+00:00\"}", "responseHeaders": { "access-control-expose-headers": "Location", "api-supported-versions": "2021-03-07", "content-type": "application/json; charset=utf-8", - "date": "Tue, 01 Jun 2021 16:15:34 GMT", + "date": "Fri, 18 Jun 2021 16:41:07 GMT", "location": "/phoneNumbers/+14155550100?api-version=2021-03-07", - "ms-cv": "A/4fTVc2Q0Gj0g8NNnP0Ug.0", + "ms-cv": "R0A/iCTJ90qFSR0eaiXTvA.0", "request-context": "appId=", "status": "200", - "x-azure-ref": "0Jl22YAAAAAAVNnFQ1uuWTr1g3JZm8Ou0WVZSMzBFREdFMDMyMQA5ZmM3YjUxOS1hOGNjLTRmODktOTM1ZS1jOTE0OGFlMDllODE=", + "x-azure-ref": "0pMzMYAAAAACTiBonKwPhRIeZ3Wk2vGrvWVZSMzBFREdFMDMxMAA5ZmM3YjUxOS1hOGNjLTRmODktOTM1ZS1jOTE0OGFlMDllODE=", "x-cache": "CONFIG_NOCACHE", - "x-processing-time": "323ms" - } - }, - { - "method": "GET", - "url": "https://endpoint/phoneNumbers/operations/capabilities_sanitized", - "query": { - "api-version": "2021-03-07" - }, - "requestBody": null, - "status": 200, - "response": "{\"status\":\"running\",\"resourceLocation\":\"/phoneNumbers/+14155550100?api-version=2021-03-07\",\"createdDateTime\":\"2021-06-01T16:15:34.1612403+00:00\",\"id\":\"capabilities_sanitized\",\"operationType\":\"updatePhoneNumberCapabilities\",\"lastActionDateTime\":\"0001-01-01T00:00:00+00:00\"}", - "responseHeaders": { - "access-control-expose-headers": "Location", - "api-supported-versions": "2021-03-07", - "content-type": "application/json; charset=utf-8", - "date": "Tue, 01 Jun 2021 16:15:36 GMT", - "location": "/phoneNumbers/+14155550100?api-version=2021-03-07", - "ms-cv": "r2PWSZacUESU40CN1q//Uw.0", - "request-context": "appId=", - "status": "200", - "x-azure-ref": "0KF22YAAAAAAuQXhL5P8lT70UqVH2YQ5DWVZSMzBFREdFMDMyMQA5ZmM3YjUxOS1hOGNjLTRmODktOTM1ZS1jOTE0OGFlMDllODE=", - "x-cache": "CONFIG_NOCACHE", - "x-processing-time": "325ms" + "x-processing-time": "306ms" } }, { @@ -104,19 +81,19 @@ }, "requestBody": null, "status": 200, - "response": "{\"status\":\"running\",\"resourceLocation\":\"/phoneNumbers/+14155550100?api-version=2021-03-07\",\"createdDateTime\":\"2021-06-01T16:15:34.1612403+00:00\",\"id\":\"capabilities_sanitized\",\"operationType\":\"updatePhoneNumberCapabilities\",\"lastActionDateTime\":\"0001-01-01T00:00:00+00:00\"}", + "response": "{\"status\":\"running\",\"resourceLocation\":\"/phoneNumbers/+14155550100?api-version=2021-03-07\",\"createdDateTime\":\"2021-06-18T16:41:07.8993673+00:00\",\"id\":\"capabilities_sanitized\",\"operationType\":\"updatePhoneNumberCapabilities\",\"lastActionDateTime\":\"0001-01-01T00:00:00+00:00\"}", "responseHeaders": { "access-control-expose-headers": "Location", "api-supported-versions": "2021-03-07", "content-type": "application/json; charset=utf-8", - "date": "Tue, 01 Jun 2021 16:15:38 GMT", + "date": "Fri, 18 Jun 2021 16:41:10 GMT", "location": "/phoneNumbers/+14155550100?api-version=2021-03-07", - "ms-cv": "yZY+I0kEKUWDQjO7Nyr0FQ.0", + "ms-cv": "adxl2J4nREOzAwC78DZcpg.0", "request-context": "appId=", "status": "200", - "x-azure-ref": "0K122YAAAAAD5z9wuqaVfRaJC7k4OA3WQWVZSMzBFREdFMDMyMQA5ZmM3YjUxOS1hOGNjLTRmODktOTM1ZS1jOTE0OGFlMDllODE=", + "x-azure-ref": "0pszMYAAAAADxpvqKPpm5Q6G2Ctk4BligWVZSMzBFREdFMDMxMAA5ZmM3YjUxOS1hOGNjLTRmODktOTM1ZS1jOTE0OGFlMDllODE=", "x-cache": "CONFIG_NOCACHE", - "x-processing-time": "374ms" + "x-processing-time": "426ms" } }, { @@ -127,19 +104,19 @@ }, "requestBody": null, "status": 200, - "response": "{\"status\":\"running\",\"resourceLocation\":\"/phoneNumbers/+14155550100?api-version=2021-03-07\",\"createdDateTime\":\"2021-06-01T16:15:34.1612403+00:00\",\"id\":\"capabilities_sanitized\",\"operationType\":\"updatePhoneNumberCapabilities\",\"lastActionDateTime\":\"0001-01-01T00:00:00+00:00\"}", + "response": "{\"status\":\"running\",\"resourceLocation\":\"/phoneNumbers/+14155550100?api-version=2021-03-07\",\"createdDateTime\":\"2021-06-18T16:41:07.8993673+00:00\",\"id\":\"capabilities_sanitized\",\"operationType\":\"updatePhoneNumberCapabilities\",\"lastActionDateTime\":\"0001-01-01T00:00:00+00:00\"}", "responseHeaders": { "access-control-expose-headers": "Location", "api-supported-versions": "2021-03-07", "content-type": "application/json; charset=utf-8", - "date": "Tue, 01 Jun 2021 16:15:41 GMT", + "date": "Fri, 18 Jun 2021 16:41:12 GMT", "location": "/phoneNumbers/+14155550100?api-version=2021-03-07", - "ms-cv": "FFLNcENNMker8F4eZvhK+g.0", + "ms-cv": "ASqKWl2us0COydY85Hy72w.0", "request-context": "appId=", "status": "200", - "x-azure-ref": "0LV22YAAAAAB0DYIWWMn4SbAV1LOpbqXyWVZSMzBFREdFMDMyMQA5ZmM3YjUxOS1hOGNjLTRmODktOTM1ZS1jOTE0OGFlMDllODE=", + "x-azure-ref": "0qczMYAAAAADbQc0bjkGEToRogPx8W2IuWVZSMzBFREdFMDMxMAA5ZmM3YjUxOS1hOGNjLTRmODktOTM1ZS1jOTE0OGFlMDllODE=", "x-cache": "CONFIG_NOCACHE", - "x-processing-time": "450ms" + "x-processing-time": "300ms" } }, { @@ -150,19 +127,19 @@ }, "requestBody": null, "status": 200, - "response": "{\"status\":\"running\",\"resourceLocation\":\"/phoneNumbers/+14155550100?api-version=2021-03-07\",\"createdDateTime\":\"2021-06-01T16:15:34.1612403+00:00\",\"id\":\"capabilities_sanitized\",\"operationType\":\"updatePhoneNumberCapabilities\",\"lastActionDateTime\":\"0001-01-01T00:00:00+00:00\"}", + "response": "{\"status\":\"running\",\"resourceLocation\":\"/phoneNumbers/+14155550100?api-version=2021-03-07\",\"createdDateTime\":\"2021-06-18T16:41:07.8993673+00:00\",\"id\":\"capabilities_sanitized\",\"operationType\":\"updatePhoneNumberCapabilities\",\"lastActionDateTime\":\"0001-01-01T00:00:00+00:00\"}", "responseHeaders": { "access-control-expose-headers": "Location", "api-supported-versions": "2021-03-07", "content-type": "application/json; charset=utf-8", - "date": "Tue, 01 Jun 2021 16:15:44 GMT", + "date": "Fri, 18 Jun 2021 16:41:15 GMT", "location": "/phoneNumbers/+14155550100?api-version=2021-03-07", - "ms-cv": "mUn2H6g2tkSgoDJo8Aa7zw.0", + "ms-cv": "LYb6x8VpDUueaZ80DI7PQw.0", "request-context": "appId=", "status": "200", - "x-azure-ref": "0MF22YAAAAAC+cqm4dfs3TJ1xOCG2LHBFWVZSMzBFREdFMDMyMQA5ZmM3YjUxOS1hOGNjLTRmODktOTM1ZS1jOTE0OGFlMDllODE=", + "x-azure-ref": "0q8zMYAAAAAAno3sNc1+nTbLMHkOUXz/7WVZSMzBFREdFMDMxMAA5ZmM3YjUxOS1hOGNjLTRmODktOTM1ZS1jOTE0OGFlMDllODE=", "x-cache": "CONFIG_NOCACHE", - "x-processing-time": "1457ms" + "x-processing-time": "323ms" } }, { @@ -173,19 +150,19 @@ }, "requestBody": null, "status": 200, - "response": "{\"status\":\"succeeded\",\"resourceLocation\":\"/phoneNumbers/+14155550100?api-version=2021-03-07\",\"createdDateTime\":\"2021-06-01T16:15:34.1612403+00:00\",\"id\":\"capabilities_sanitized\",\"operationType\":\"updatePhoneNumberCapabilities\",\"lastActionDateTime\":\"0001-01-01T00:00:00+00:00\"}", + "response": "{\"status\":\"succeeded\",\"resourceLocation\":\"/phoneNumbers/+14155550100?api-version=2021-03-07\",\"createdDateTime\":\"2021-06-18T16:41:07.8993673+00:00\",\"id\":\"capabilities_sanitized\",\"operationType\":\"updatePhoneNumberCapabilities\",\"lastActionDateTime\":\"0001-01-01T00:00:00+00:00\"}", "responseHeaders": { "access-control-expose-headers": "Location", "api-supported-versions": "2021-03-07", "content-type": "application/json; charset=utf-8", - "date": "Tue, 01 Jun 2021 16:15:47 GMT", + "date": "Fri, 18 Jun 2021 16:41:17 GMT", "location": "/phoneNumbers/+14155550100?api-version=2021-03-07", - "ms-cv": "58R3VH1sb0q3QLsOwbi5SA.0", + "ms-cv": "qmbQMyUsq0eTqXRHcjUVgg.0", "request-context": "appId=", "status": "200", - "x-azure-ref": "0M122YAAAAABGnaoMInRFSZXQVWge5H/nWVZSMzBFREdFMDMyMQA5ZmM3YjUxOS1hOGNjLTRmODktOTM1ZS1jOTE0OGFlMDllODE=", + "x-azure-ref": "0rszMYAAAAADUm9CQ6ZaoSrBX1GLM3+GkWVZSMzBFREdFMDMxMAA5ZmM3YjUxOS1hOGNjLTRmODktOTM1ZS1jOTE0OGFlMDllODE=", "x-cache": "CONFIG_NOCACHE", - "x-processing-time": "442ms" + "x-processing-time": "410ms" } }, { @@ -196,17 +173,17 @@ }, "requestBody": null, "status": 200, - "response": "{\"id\":\"14155550100\",\"phoneNumber\":\"+14155550100\",\"countryCode\":\"US\",\"phoneNumberType\":\"tollFree\",\"capabilities\":{\"calling\":\"none\",\"sms\":\"outbound\"},\"assignmentType\":\"application\",\"purchaseDate\":\"2021-03-09T15:01:55.0949003+00:00\",\"cost\":{\"amount\":2.0,\"currencyCode\":\"USD\",\"billingFrequency\":\"monthly\"}}", + "response": "{\"id\":\"14155550100\",\"phoneNumber\":\"+14155550100\",\"countryCode\":\"US\",\"phoneNumberType\":\"tollFree\",\"capabilities\":{\"calling\":\"none\",\"sms\":\"outbound\"},\"assignmentType\":\"application\",\"purchaseDate\":\"2021-03-09T15:03:04.7513808+00:00\",\"cost\":{\"amount\":2.0,\"currencyCode\":\"USD\",\"billingFrequency\":\"monthly\"}}", "responseHeaders": { "api-supported-versions": "2021-03-07", "content-type": "application/json; charset=utf-8", - "date": "Tue, 01 Jun 2021 16:15:50 GMT", - "ms-cv": "svnTsGxlyEOVTQ9lz+B8Fw.0", + "date": "Fri, 18 Jun 2021 16:41:21 GMT", + "ms-cv": "7v1ieyrUq0q8CJGIjC53Hg.0", "request-context": "appId=", "status": "200", - "x-azure-ref": "0Nl22YAAAAAD0cwUYC+GdSoGhyjkK64ZqWVZSMzBFREdFMDMyMQA5ZmM3YjUxOS1hOGNjLTRmODktOTM1ZS1jOTE0OGFlMDllODE=", + "x-azure-ref": "0sMzMYAAAAACnmJ9NLyfEQ5aIH7sOaDeYWVZSMzBFREdFMDMxMAA5ZmM3YjUxOS1hOGNjLTRmODktOTM1ZS1jOTE0OGFlMDllODE=", "x-cache": "CONFIG_NOCACHE", - "x-processing-time": "1333ms" + "x-processing-time": "1256ms" } } ], @@ -214,5 +191,5 @@ "uniqueName": {}, "newDate": {} }, - "hash": "bc0d3c040f4257989e64826eb468a2d3" + "hash": "b1d336b2900ec126a1a01a0cde95ad4d" } \ No newline at end of file diff --git a/sdk/communication/communication-phone-numbers/recordings/browsers/phonenumbersclient__lro__update_aad/recording_update_throws_when_phone_number_isnt_owned.json b/sdk/communication/communication-phone-numbers/recordings/browsers/phonenumbersclient__lro__update_aad/recording_update_throws_when_phone_number_isnt_owned.json index 4c99e380cf6f..5681787874ac 100644 --- a/sdk/communication/communication-phone-numbers/recordings/browsers/phonenumbersclient__lro__update_aad/recording_update_throws_when_phone_number_isnt_owned.json +++ b/sdk/communication/communication-phone-numbers/recordings/browsers/phonenumbersclient__lro__update_aad/recording_update_throws_when_phone_number_isnt_owned.json @@ -4,14 +4,14 @@ "method": "POST", "url": "https://endpoint/SomeTenantId/oauth2/v2.0/token", "query": {}, - "requestBody": "response_type=token&grant_type=client_credentials&client_id=SomeClientId&client_secret=SomeClientSecret&scope=https%3A%2F%2Fcommunication.azure.com%2F%2F.default", + "requestBody": "response_type=token&grant_type=client_credentials&client_id=SomeClientId&client_secret=SomeClientSecret&scope=https%3A%2F%2Fsanitized%2F", "status": 200, "response": "{\"token_type\":\"Bearer\",\"expires_in\":86399,\"ext_expires_in\":86399,\"access_token\":\"access_token\"}", "responseHeaders": { "cache-control": "no-store, no-cache", "content-length": "1327", "content-type": "application/json; charset=utf-8", - "date": "Tue, 01 Jun 2021 16:15:53 GMT", + "date": "Fri, 18 Jun 2021 16:41:23 GMT", "expires": "-1", "nel": "{\"report_to\":\"network-errors\",\"max_age\":86400,\"success_fraction\":0.001,\"failure_fraction\":1.0}", "p3p": "CP=\"DSP CUR OTPi IND OTRi ONL FIN\"", @@ -20,7 +20,7 @@ "report-to": "{\"group\":\"network-errors\",\"max_age\":86400,\"endpoints\":[{\"url\":\"https://endpoint/api/report?catId=GW+estsfd+chi\"}]}", "strict-transport-security": "max-age=31536000; includeSubDomains", "x-content-type-options": "nosniff", - "x-ms-ests-server": "2.1.11722.26 - EUS ProdSlices", + "x-ms-ests-server": "2.1.11829.4 - EUS ProdSlices", "x-ms-request-id": "sanitized" } }, @@ -32,17 +32,17 @@ }, "requestBody": "{\"calling\":\"none\",\"sms\":\"outbound\"}", "status": 404, - "response": "", + "response": "{\"error\":{\"code\":\"InternalError\",\"message\":\"The server encountered an internal error.\"}}", "responseHeaders": { "api-supported-versions": "2021-03-07", - "content-length": "0", - "date": "Tue, 01 Jun 2021 16:15:53 GMT", - "ms-cv": "T0NOysEXYUes/clnSchzuw.0", + "content-type": "application/json", + "date": "Fri, 18 Jun 2021 16:41:24 GMT", + "ms-cv": "BPux1vYFaEyEyvflEmvGdQ.0", "request-context": "appId=", "status": "404", - "x-azure-ref": "0OV22YAAAAACn1GqJ/fUFQIjoihsSslFAWVZSMzBFREdFMDMyMQA5ZmM3YjUxOS1hOGNjLTRmODktOTM1ZS1jOTE0OGFlMDllODE=", + "x-azure-ref": "0tMzMYAAAAABb6TsNmY77SKjStG8wAKUZWVZSMzBFREdFMDMxMAA5ZmM3YjUxOS1hOGNjLTRmODktOTM1ZS1jOTE0OGFlMDllODE=", "x-cache": "CONFIG_NOCACHE", - "x-processing-time": "446ms" + "x-processing-time": "481ms" } } ], @@ -50,5 +50,5 @@ "uniqueName": {}, "newDate": {} }, - "hash": "1b01834067bf928c6bbe8df5701149c4" + "hash": "94c6d18150d845a6914ed056b481f079" } \ No newline at end of file diff --git a/sdk/communication/communication-phone-numbers/recordings/node/phonenumbersclient__get_phone_number/recording_can_get_a_purchased_phone_number.js b/sdk/communication/communication-phone-numbers/recordings/node/phonenumbersclient__get_phone_number/recording_can_get_a_purchased_phone_number.js index 6a78804982e2..197ecbc74d8b 100644 --- a/sdk/communication/communication-phone-numbers/recordings/node/phonenumbersclient__get_phone_number/recording_can_get_a_purchased_phone_number.js +++ b/sdk/communication/communication-phone-numbers/recordings/node/phonenumbersclient__get_phone_number/recording_can_get_a_purchased_phone_number.js @@ -1,13 +1,13 @@ let nock = require('nock'); -module.exports.hash = "8c038731046781a9e29a78b4d4a229af"; +module.exports.hash = "c277fc9e40dbe9b6a340b0fd4b58a391"; module.exports.testInfo = {"uniqueName":{},"newDate":{}} nock('https://endpoint', {"encodedQueryParams":false}) .get('/phoneNumbers/%2B14155550100') .query(true) - .reply(200, {"id":"14155550100","phoneNumber":"+14155550100","countryCode":"US","phoneNumberType":"tollFree","capabilities":{"calling":"none","sms":"inbound+outbound"},"assignmentType":"application","purchaseDate":"2021-03-09T15:01:55.0949003+00:00","cost":{"amount":2,"currencyCode":"USD","billingFrequency":"monthly"}}, [ + .reply(200, {"id":"14155550100","phoneNumber":"+14155550100","countryCode":"US","phoneNumberType":"tollFree","capabilities":{"calling":"none","sms":"outbound"},"assignmentType":"application","purchaseDate":"2021-03-09T15:03:04.7513808+00:00","cost":{"amount":2,"currencyCode":"USD","billingFrequency":"monthly"}}, [ 'Transfer-Encoding', 'chunked', 'Content-Type', @@ -15,15 +15,15 @@ nock('https://endpoint', {"encodedQueryParams":false}) 'Request-Context', 'appId=', 'MS-CV', - 'olq7Da4IwEuplq58lOuV1A.0', + 'avMtrDgfgUexccUBmHHr/A.0', 'api-supported-versions', '2021-03-07', 'X-Processing-Time', - '1236ms', + '1984ms', 'X-Cache', 'CONFIG_NOCACHE', 'X-Azure-Ref', - '0w1i2YAAAAACwDvYWNgBhR71O/bYG13H6WVZSMzBFREdFMDMxOAA5ZmM3YjUxOS1hOGNjLTRmODktOTM1ZS1jOTE0OGFlMDllODE=', + '0asvMYAAAAACoUwqyuTBjTrkMNZtKF6tZWVZSMzBFREdFMDQxMgA5ZmM3YjUxOS1hOGNjLTRmODktOTM1ZS1jOTE0OGFlMDllODE=', 'Date', - 'Tue, 01 Jun 2021 15:56:52 GMT' + 'Fri, 18 Jun 2021 16:35:56 GMT' ]); diff --git a/sdk/communication/communication-phone-numbers/recordings/node/phonenumbersclient__get_phone_number/recording_errors_if_phone_number_not_found.js b/sdk/communication/communication-phone-numbers/recordings/node/phonenumbersclient__get_phone_number/recording_errors_if_phone_number_not_found.js index a61e9c534da9..442d3eba0820 100644 --- a/sdk/communication/communication-phone-numbers/recordings/node/phonenumbersclient__get_phone_number/recording_errors_if_phone_number_not_found.js +++ b/sdk/communication/communication-phone-numbers/recordings/node/phonenumbersclient__get_phone_number/recording_errors_if_phone_number_not_found.js @@ -1,13 +1,13 @@ let nock = require('nock'); -module.exports.hash = "9db468d876f027cff1a56c0b2ccac1a5"; +module.exports.hash = "72d3da66787ce7ec1b5bd2e51979dcaa"; module.exports.testInfo = {"uniqueName":{},"newDate":{}} nock('https://endpoint', {"encodedQueryParams":false}) .get('/phoneNumbers/%2B14155550100') .query(true) - .reply(404, {"error":{"code":"PhoneNumberNotFound","message":"The specified phone number +14155550100 cannot be found.","target":"phonenumber"}}, [ + .reply(404, {"error":{"code":"NotFound","message":"Input phoneNumber +14155550100 cannot be found.","target":"phonenumber"}}, [ 'Transfer-Encoding', 'chunked', 'Content-Type', @@ -15,15 +15,15 @@ nock('https://endpoint', {"encodedQueryParams":false}) 'Request-Context', 'appId=', 'MS-CV', - 'iHCcarEEpkiclAyzF4xJhg.0', + 'AZ8qSl3bbUOTHzj9Jcll4Q.0', 'api-supported-versions', '2021-03-07', 'X-Processing-Time', - '345ms', + '539ms', 'X-Cache', 'CONFIG_NOCACHE', 'X-Azure-Ref', - '0xVi2YAAAAAC4ob71ReBlQYzjbDLSxmjbWVZSMzBFREdFMDMxOAA5ZmM3YjUxOS1hOGNjLTRmODktOTM1ZS1jOTE0OGFlMDllODE=', + '0bcvMYAAAAAB+AlTO8wGzRbUJewscu6gCWVZSMzBFREdFMDQwNwA5ZmM3YjUxOS1hOGNjLTRmODktOTM1ZS1jOTE0OGFlMDllODE=', 'Date', - 'Tue, 01 Jun 2021 15:56:52 GMT' + 'Fri, 18 Jun 2021 16:35:57 GMT' ]); diff --git a/sdk/communication/communication-phone-numbers/recordings/node/phonenumbersclient__get_phone_number_aad/recording_can_get_a_purchased_phone_number.js b/sdk/communication/communication-phone-numbers/recordings/node/phonenumbersclient__get_phone_number_aad/recording_can_get_a_purchased_phone_number.js index d7b1a250c522..222d668d89b1 100644 --- a/sdk/communication/communication-phone-numbers/recordings/node/phonenumbersclient__get_phone_number_aad/recording_can_get_a_purchased_phone_number.js +++ b/sdk/communication/communication-phone-numbers/recordings/node/phonenumbersclient__get_phone_number_aad/recording_can_get_a_purchased_phone_number.js @@ -1,6 +1,6 @@ let nock = require('nock'); -module.exports.hash = "8c038731046781a9e29a78b4d4a229af"; +module.exports.hash = "c277fc9e40dbe9b6a340b0fd4b58a391"; module.exports.testInfo = {"uniqueName":{},"newDate":{}} @@ -25,24 +25,24 @@ nock('https://endpoint', {"encodedQueryParams":false}) 'x-ms-request-id', 'sanitized', 'x-ms-ests-server', - '2.1.11722.21 - SCUS ProdSlices', + '2.1.11829.4 - NCUS ProdSlices', 'Set-Cookie', - 'fpc=AtoRK8gNCytBsgelMsPAEVw; expires=Thu, 01-Jul-2021 15:56:42 GMT; path=/; secure; HttpOnly; SameSite=None', + 'fpc=Akx-rKIenedChRbNwm0wEmg; expires=Sun, 18-Jul-2021 16:35:50 GMT; path=/; secure; HttpOnly; SameSite=None', 'Set-Cookie', - 'esctx=AQABAAAAAAD--DLA3VO7QrddgJg7Wevr8PQYpFdsowHS04Y6tyD9N5KHDqIFRzHIA_S3ie5MlZJAUExByi7iPai-P4L6muavxtTwfdifo_nJOLEumFQk_sC-wGRQshOunMsHSORt7PZMPysF0Kbnd4gXMUEPMpPEXf5VGFoU6hMUMvG0S49bfAeHIZz4BGEOxrs-jdxpWiMgAA; domain=.login.microsoftonline.com; path=/; secure; HttpOnly; SameSite=None', + 'esctx=AQABAAAAAAD--DLA3VO7QrddgJg7WevrUP5rFdyppgto6T8-nEb-weSXa06T3sZE0rV4WBtoC_dTrep1oqXIpsRCNXtWIukOmPj92Gt26VyOLN6XE-XKvJ7XcQE59_vz-dNlkBc_J8VZ7GjgG7S6CjdxulZVzMzMlDdkM2yRKeusNVCWgiDqTSO48fqvon-NDB76qnBZdyogAA; domain=.login.microsoftonline.com; path=/; secure; HttpOnly; SameSite=None', 'Set-Cookie', 'x-ms-gateway-slice=estsfd; path=/; secure; samesite=none; httponly', 'Set-Cookie', 'stsservicecookie=estsfd; path=/; secure; samesite=none; httponly', 'Date', - 'Tue, 01 Jun 2021 15:56:42 GMT', + 'Fri, 18 Jun 2021 16:35:50 GMT', 'Content-Length', '980' ]); nock('https://endpoint', {"encodedQueryParams":false}) .get('/SomeTenantId/v2.0/.well-known/openid-configuration') - .reply(200, {"token_endpoint":"https://login.microsoftonline.com/SomeTenantId/oauth2/v2.0/token","token_endpoint_auth_methods_supported":["client_secret_post","private_key_jwt","client_secret_basic"],"jwks_uri":"https://login.microsoftonline.com/SomeTenantId/discovery/v2.0/keys","response_modes_supported":["query","fragment","form_post"],"subject_types_supported":["pairwise"],"id_token_signing_alg_values_supported":["RS256"],"response_types_supported":["code","id_token","code id_token","id_token token"],"scopes_supported":["openid","profile","email","offline_access"],"issuer":"https://login.microsoftonline.com/SomeTenantId/v2.0","request_uri_parameter_supported":false,"userinfo_endpoint":"https://graph.microsoft.com/oidc/userinfo","authorization_endpoint":"https://login.microsoftonline.com/SomeTenantId/oauth2/v2.0/authorize","device_authorization_endpoint":"https://login.microsoftonline.com/SomeTenantId/oauth2/v2.0/devicecode","http_logout_supported":false,"frontchannel_logout_supported":false,"end_session_endpoint":"https://login.microsoftonline.com/SomeTenantId/oauth2/v2.0/logout","claims_supported":["sub","iss","cloud_instance_name","cloud_instance_host_name","cloud_graph_host_name","msgraph_host","aud","exp","iat","auth_time","acr","nonce","preferred_username","name","tid","ver","at_hash","c_hash","email"],"tenant_region_scope":"WW","cloud_instance_name":"microsoftonline.com","cloud_graph_host_name":"graph.windows.net","msgraph_host":"graph.microsoft.com","rbac_url":"https://pas.windows.net"}, [ + .reply(200, {"token_endpoint":"https://login.microsoftonline.com/SomeTenantId/oauth2/v2.0/token","token_endpoint_auth_methods_supported":["client_secret_post","private_key_jwt","client_secret_basic"],"jwks_uri":"https://login.microsoftonline.com/SomeTenantId/discovery/v2.0/keys","response_modes_supported":["query","fragment","form_post"],"subject_types_supported":["pairwise"],"id_token_signing_alg_values_supported":["RS256"],"response_types_supported":["code","id_token","code id_token","id_token token"],"scopes_supported":["openid","profile","email","offline_access"],"issuer":"https://login.microsoftonline.com/SomeTenantId/v2.0","request_uri_parameter_supported":false,"userinfo_endpoint":"https://graph.microsoft.com/oidc/userinfo","authorization_endpoint":"https://login.microsoftonline.com/SomeTenantId/oauth2/v2.0/authorize","device_authorization_endpoint":"https://login.microsoftonline.com/SomeTenantId/oauth2/v2.0/devicecode","http_logout_supported":false,"frontchannel_logout_supported":false,"end_session_endpoint":"https://login.microsoftonline.com/SomeTenantId/oauth2/v2.0/logout","claims_supported":["sub","iss","cloud_instance_name","cloud_instance_host_name","cloud_graph_host_name","msgraph_host","aud","exp","iat","auth_time","acr","nonce","preferred_username","name","tid","ver","at_hash","c_hash","email"],"kerberos_endpoint":"https://login.microsoftonline.com/SomeTenantId/kerberos","tenant_region_scope":"WW","cloud_instance_name":"microsoftonline.com","cloud_graph_host_name":"graph.windows.net","msgraph_host":"graph.microsoft.com","rbac_url":"https://pas.windows.net"}, [ 'Cache-Control', 'max-age=86400, private', 'Content-Type', @@ -60,23 +60,23 @@ nock('https://endpoint', {"encodedQueryParams":false}) 'x-ms-request-id', 'sanitized', 'x-ms-ests-server', - '2.1.11722.26 - SCUS ProdSlices', + '2.1.11829.4 - NCUS ProdSlices', 'Set-Cookie', - 'fpc=AtoRK8gNCytBsgelMsPAEVw; expires=Thu, 01-Jul-2021 15:56:42 GMT; path=/; secure; HttpOnly; SameSite=None', + 'fpc=Akx-rKIenedChRbNwm0wEmg; expires=Sun, 18-Jul-2021 16:35:50 GMT; path=/; secure; HttpOnly; SameSite=None', 'Set-Cookie', - 'esctx=AQABAAAAAAD--DLA3VO7QrddgJg7WevrQ_AIHhJRmi45G1N0mOSc91sNhh01hILUsXIBdK3Tj_CQnardwqBuFCki9NGYp_IZWHiAqYhLbNClAniRygOSLTF-pE8YgCcrk6M0gG6nExH1L0oqA6jpowXt30C4YA7baFnqwgKA-hbQO9fvqfm9xr-EN0KwIMqKrMjyJxyJaD0gAA; domain=.login.microsoftonline.com; path=/; secure; HttpOnly; SameSite=None', + 'esctx=AQABAAAAAAD--DLA3VO7QrddgJg7Wevr-b_WLBcSGjYlr0c9ILgUCAhxmoTuW9ANnvF1jvK4yIU6kvPeEZFJEwqFquJGp1ev-2w7nImXRUY5U6GdZumMW_KTH7UkZ2Z7jEfg1wvr6ckWSTsfXUaxiIuFT_DHYmkmbqt740_YXWVtpF5Sixv0NI4uFhfxCVw1-fcltiwag1EgAA; domain=.login.microsoftonline.com; path=/; secure; HttpOnly; SameSite=None', 'Set-Cookie', 'x-ms-gateway-slice=estsfd; path=/; secure; samesite=none; httponly', 'Set-Cookie', 'stsservicecookie=estsfd; path=/; secure; samesite=none; httponly', 'Date', - 'Tue, 01 Jun 2021 15:56:42 GMT', + 'Fri, 18 Jun 2021 16:35:50 GMT', 'Content-Length', - '1651' + '1753' ]); nock('https://endpoint', {"encodedQueryParams":false}) - .post('/SomeTenantId/oauth2/v2.0/token', "client_id=SomeClientId&scope=https%3A%2F%2Fcommunication.azure.com%2F%2F.default%20openid%20profile%20offline_access&grant_type=client_credentials&client-request-id=sanitized&client_secret=SomeClientSecret") + .post('/SomeTenantId/oauth2/v2.0/token', "client_id=SomeClientId&scope=https%3A%2F%2Fsanitized%2F&grant_type=client_credentials&x-client-SKU=msal.js.node&x-client-VER=1.1.0&x-client-OS=win32&x-client-CPU=x64&x-ms-lib-capability=retry-after, h429&x-client-current-telemetry=2|771,0|,&x-client-last-telemetry=2|0|||0,0&client-request-id=sanitized&client_secret=SomeClientSecret") .reply(200, {"token_type":"Bearer","expires_in":86399,"ext_expires_in":86399,"access_token":"access_token"}, [ 'Cache-Control', 'no-store, no-cache', @@ -95,17 +95,17 @@ nock('https://endpoint', {"encodedQueryParams":false}) 'x-ms-request-id', 'sanitized', 'x-ms-ests-server', - '2.1.11722.26 - EUS ProdSlices', + '2.1.11829.4 - SCUS ProdSlices', 'x-ms-clitelem', '1,0,0,,', 'Set-Cookie', - 'fpc=AtoRK8gNCytBsgelMsPAEVxWyo4SAQAAALlPSNgOAAAA; expires=Thu, 01-Jul-2021 15:56:42 GMT; path=/; secure; HttpOnly; SameSite=None', + 'fpc=Akx-rKIenedChRbNwm0wEmhWyo4SAQAAAGbCXtgOAAAA; expires=Sun, 18-Jul-2021 16:35:51 GMT; path=/; secure; HttpOnly; SameSite=None', 'Set-Cookie', 'x-ms-gateway-slice=estsfd; path=/; secure; samesite=none; httponly', 'Set-Cookie', 'stsservicecookie=estsfd; path=/; secure; samesite=none; httponly', 'Date', - 'Tue, 01 Jun 2021 15:56:42 GMT', + 'Fri, 18 Jun 2021 16:35:51 GMT', 'Content-Length', '1327' ]); @@ -113,7 +113,7 @@ nock('https://endpoint', {"encodedQueryParams":false}) nock('https://endpoint', {"encodedQueryParams":false}) .get('/phoneNumbers/%2B14155550100') .query(true) - .reply(200, {"id":"14155550100","phoneNumber":"+14155550100","countryCode":"US","phoneNumberType":"tollFree","capabilities":{"calling":"none","sms":"inbound+outbound"},"assignmentType":"application","purchaseDate":"2021-03-09T15:01:55.0949003+00:00","cost":{"amount":2,"currencyCode":"USD","billingFrequency":"monthly"}}, [ + .reply(200, {"id":"14155550100","phoneNumber":"+14155550100","countryCode":"US","phoneNumberType":"tollFree","capabilities":{"calling":"none","sms":"outbound"},"assignmentType":"application","purchaseDate":"2021-03-09T15:03:04.7513808+00:00","cost":{"amount":2,"currencyCode":"USD","billingFrequency":"monthly"}}, [ 'Transfer-Encoding', 'chunked', 'Content-Type', @@ -121,15 +121,15 @@ nock('https://endpoint', {"encodedQueryParams":false}) 'Request-Context', 'appId=', 'MS-CV', - 'iFDJ7sWMOE61WCbwMH2sOQ.0', + '0/oqhO7TbE6ufoLEkR1wNg.0', 'api-supported-versions', '2021-03-07', 'X-Processing-Time', - '7302ms', + '2125ms', 'X-Cache', 'CONFIG_NOCACHE', 'X-Azure-Ref', - '0uli2YAAAAAA8JGja/66xT7IHX8Lm8WMrWVZSMzBFREdFMDQyMQA5ZmM3YjUxOS1hOGNjLTRmODktOTM1ZS1jOTE0OGFlMDllODE=', + '0Z8vMYAAAAAAfP6LIwgfUQI0EYqw1q7UYWVZSMzBFREdFMDQwNwA5ZmM3YjUxOS1hOGNjLTRmODktOTM1ZS1jOTE0OGFlMDllODE=', 'Date', - 'Tue, 01 Jun 2021 15:56:49 GMT' + 'Fri, 18 Jun 2021 16:35:53 GMT' ]); diff --git a/sdk/communication/communication-phone-numbers/recordings/node/phonenumbersclient__get_phone_number_aad/recording_errors_if_phone_number_not_found.js b/sdk/communication/communication-phone-numbers/recordings/node/phonenumbersclient__get_phone_number_aad/recording_errors_if_phone_number_not_found.js index dcc80b115816..5148bcd26851 100644 --- a/sdk/communication/communication-phone-numbers/recordings/node/phonenumbersclient__get_phone_number_aad/recording_errors_if_phone_number_not_found.js +++ b/sdk/communication/communication-phone-numbers/recordings/node/phonenumbersclient__get_phone_number_aad/recording_errors_if_phone_number_not_found.js @@ -1,6 +1,6 @@ let nock = require('nock'); -module.exports.hash = "9db468d876f027cff1a56c0b2ccac1a5"; +module.exports.hash = "72d3da66787ce7ec1b5bd2e51979dcaa"; module.exports.testInfo = {"uniqueName":{},"newDate":{}} @@ -25,24 +25,24 @@ nock('https://endpoint', {"encodedQueryParams":false}) 'x-ms-request-id', 'sanitized', 'x-ms-ests-server', - '2.1.11722.21 - EUS ProdSlices', + '2.1.11829.4 - NCUS ProdSlices', 'Set-Cookie', - 'fpc=AtoRK8gNCytBsgelMsPAEVxWyo4SAQAAALlPSNgOAAAA; expires=Thu, 01-Jul-2021 15:56:50 GMT; path=/; secure; HttpOnly; SameSite=None', + 'fpc=Akx-rKIenedChRbNwm0wEmhWyo4SAQAAAGbCXtgOAAAA; expires=Sun, 18-Jul-2021 16:35:53 GMT; path=/; secure; HttpOnly; SameSite=None', 'Set-Cookie', - 'esctx=AQABAAAAAAD--DLA3VO7QrddgJg7Wevrwyherwr3PetcWM38RupvIQ3jt-26FVx_ZdGWwqu4C3XS9yRmf1F27LFwfMFytlmQAjhXi799PpkZ0N_UFjBLcdjJeBaEv9IdxefkD-ksZf0tk8wivE-su4xvVAmTlh2EATlnHvMCD3MUaKQCaa3OhoD80KzreyVXIJVTW4pmh2MgAA; domain=.login.microsoftonline.com; path=/; secure; HttpOnly; SameSite=None', + 'esctx=AQABAAAAAAD--DLA3VO7QrddgJg7Wevrnfjf2K7DTXof3wGZvv9ZDysn28V48vQHNugP3J7CwDDWrA9aVOdUKTmA1GIfqxaJDk8Ic3F0gFEoH6J5gEP_heNhVzVe7UcV_DIQWsozfpwznmPRER9se7CpOMt-nz5O2vw3LiDuo7X1w3AhtIxg2nfOIg52UwoRcfJKqAj-T_ogAA; domain=.login.microsoftonline.com; path=/; secure; HttpOnly; SameSite=None', 'Set-Cookie', 'x-ms-gateway-slice=estsfd; path=/; secure; samesite=none; httponly', 'Set-Cookie', 'stsservicecookie=estsfd; path=/; secure; samesite=none; httponly', 'Date', - 'Tue, 01 Jun 2021 15:56:50 GMT', + 'Fri, 18 Jun 2021 16:35:53 GMT', 'Content-Length', '980' ]); nock('https://endpoint', {"encodedQueryParams":false}) .get('/SomeTenantId/v2.0/.well-known/openid-configuration') - .reply(200, {"token_endpoint":"https://login.microsoftonline.com/SomeTenantId/oauth2/v2.0/token","token_endpoint_auth_methods_supported":["client_secret_post","private_key_jwt","client_secret_basic"],"jwks_uri":"https://login.microsoftonline.com/SomeTenantId/discovery/v2.0/keys","response_modes_supported":["query","fragment","form_post"],"subject_types_supported":["pairwise"],"id_token_signing_alg_values_supported":["RS256"],"response_types_supported":["code","id_token","code id_token","id_token token"],"scopes_supported":["openid","profile","email","offline_access"],"issuer":"https://login.microsoftonline.com/SomeTenantId/v2.0","request_uri_parameter_supported":false,"userinfo_endpoint":"https://graph.microsoft.com/oidc/userinfo","authorization_endpoint":"https://login.microsoftonline.com/SomeTenantId/oauth2/v2.0/authorize","device_authorization_endpoint":"https://login.microsoftonline.com/SomeTenantId/oauth2/v2.0/devicecode","http_logout_supported":false,"frontchannel_logout_supported":false,"end_session_endpoint":"https://login.microsoftonline.com/SomeTenantId/oauth2/v2.0/logout","claims_supported":["sub","iss","cloud_instance_name","cloud_instance_host_name","cloud_graph_host_name","msgraph_host","aud","exp","iat","auth_time","acr","nonce","preferred_username","name","tid","ver","at_hash","c_hash","email"],"tenant_region_scope":"WW","cloud_instance_name":"microsoftonline.com","cloud_graph_host_name":"graph.windows.net","msgraph_host":"graph.microsoft.com","rbac_url":"https://pas.windows.net"}, [ + .reply(200, {"token_endpoint":"https://login.microsoftonline.com/SomeTenantId/oauth2/v2.0/token","token_endpoint_auth_methods_supported":["client_secret_post","private_key_jwt","client_secret_basic"],"jwks_uri":"https://login.microsoftonline.com/SomeTenantId/discovery/v2.0/keys","response_modes_supported":["query","fragment","form_post"],"subject_types_supported":["pairwise"],"id_token_signing_alg_values_supported":["RS256"],"response_types_supported":["code","id_token","code id_token","id_token token"],"scopes_supported":["openid","profile","email","offline_access"],"issuer":"https://login.microsoftonline.com/SomeTenantId/v2.0","request_uri_parameter_supported":false,"userinfo_endpoint":"https://graph.microsoft.com/oidc/userinfo","authorization_endpoint":"https://login.microsoftonline.com/SomeTenantId/oauth2/v2.0/authorize","device_authorization_endpoint":"https://login.microsoftonline.com/SomeTenantId/oauth2/v2.0/devicecode","http_logout_supported":false,"frontchannel_logout_supported":false,"end_session_endpoint":"https://login.microsoftonline.com/SomeTenantId/oauth2/v2.0/logout","claims_supported":["sub","iss","cloud_instance_name","cloud_instance_host_name","cloud_graph_host_name","msgraph_host","aud","exp","iat","auth_time","acr","nonce","preferred_username","name","tid","ver","at_hash","c_hash","email"],"kerberos_endpoint":"https://login.microsoftonline.com/SomeTenantId/kerberos","tenant_region_scope":"WW","cloud_instance_name":"microsoftonline.com","cloud_graph_host_name":"graph.windows.net","msgraph_host":"graph.microsoft.com","rbac_url":"https://pas.windows.net"}, [ 'Cache-Control', 'max-age=86400, private', 'Content-Type', @@ -60,23 +60,23 @@ nock('https://endpoint', {"encodedQueryParams":false}) 'x-ms-request-id', 'sanitized', 'x-ms-ests-server', - '2.1.11722.26 - NCUS ProdSlices', + '2.1.11829.4 - NCUS ProdSlices', 'Set-Cookie', - 'fpc=AtoRK8gNCytBsgelMsPAEVxWyo4SAQAAALlPSNgOAAAA; expires=Thu, 01-Jul-2021 15:56:50 GMT; path=/; secure; HttpOnly; SameSite=None', + 'fpc=Akx-rKIenedChRbNwm0wEmhWyo4SAQAAAGbCXtgOAAAA; expires=Sun, 18-Jul-2021 16:35:54 GMT; path=/; secure; HttpOnly; SameSite=None', 'Set-Cookie', - 'esctx=AQABAAAAAAD--DLA3VO7QrddgJg7WevrTKRNrPew_Z0UX6g6rt73MV7hV-8WuWYWBrqQ3n94TjLrZi25r0OoQE0CuFeDI0tePqCDRyaR0tuoFAZ5-iDo0cyBInUc2xk8_dEHxGQL0rrt-Spw0iPoakhZ7--XI8GmOMIDfk-Uoj1qbEtwod5EsJVAXqsWcHNzz11vARJmTk0gAA; domain=.login.microsoftonline.com; path=/; secure; HttpOnly; SameSite=None', + 'esctx=AQABAAAAAAD--DLA3VO7QrddgJg7WevrU3HrRnd8zj66-dWn9DMNrlFDX_fB141Hp8zV3JEKxpOPpfZjzeRLGKwAejBu7fhvyXr1Y-86P5tHdMjHh_ruBln6Dj9av0kHW79L-qIF71xgXVXJpb5UwKkQQdhMd85_Oq3n-NZvK6tFI6VlC3_jjniY3TkKqQNwFz22cGwUXkIgAA; domain=.login.microsoftonline.com; path=/; secure; HttpOnly; SameSite=None', 'Set-Cookie', 'x-ms-gateway-slice=estsfd; path=/; secure; samesite=none; httponly', 'Set-Cookie', 'stsservicecookie=estsfd; path=/; secure; samesite=none; httponly', 'Date', - 'Tue, 01 Jun 2021 15:56:50 GMT', + 'Fri, 18 Jun 2021 16:35:53 GMT', 'Content-Length', - '1651' + '1753' ]); nock('https://endpoint', {"encodedQueryParams":false}) - .post('/SomeTenantId/oauth2/v2.0/token', "client_id=SomeClientId&scope=https%3A%2F%2Fcommunication.azure.com%2F%2F.default%20openid%20profile%20offline_access&grant_type=client_credentials&client-request-id=sanitized&client_secret=SomeClientSecret") + .post('/SomeTenantId/oauth2/v2.0/token', "client_id=SomeClientId&scope=https%3A%2F%2Fsanitized%2F&grant_type=client_credentials&x-client-SKU=msal.js.node&x-client-VER=1.1.0&x-client-OS=win32&x-client-CPU=x64&x-ms-lib-capability=retry-after, h429&x-client-current-telemetry=2|771,0|,&x-client-last-telemetry=2|0|||0,0&client-request-id=sanitized&client_secret=SomeClientSecret") .reply(200, {"token_type":"Bearer","expires_in":86399,"ext_expires_in":86399,"access_token":"access_token"}, [ 'Cache-Control', 'no-store, no-cache', @@ -95,17 +95,17 @@ nock('https://endpoint', {"encodedQueryParams":false}) 'x-ms-request-id', 'sanitized', 'x-ms-ests-server', - '2.1.11722.26 - EUS ProdSlices', + '2.1.11829.4 - NCUS ProdSlices', 'x-ms-clitelem', '1,0,0,,', 'Set-Cookie', - 'fpc=AtoRK8gNCytBsgelMsPAEVxWyo4SAgAAALlPSNgOAAAA; expires=Thu, 01-Jul-2021 15:56:50 GMT; path=/; secure; HttpOnly; SameSite=None', + 'fpc=Akx-rKIenedChRbNwm0wEmhWyo4SAgAAAGbCXtgOAAAA; expires=Sun, 18-Jul-2021 16:35:54 GMT; path=/; secure; HttpOnly; SameSite=None', 'Set-Cookie', 'x-ms-gateway-slice=estsfd; path=/; secure; samesite=none; httponly', 'Set-Cookie', 'stsservicecookie=estsfd; path=/; secure; samesite=none; httponly', 'Date', - 'Tue, 01 Jun 2021 15:56:50 GMT', + 'Fri, 18 Jun 2021 16:35:54 GMT', 'Content-Length', '1327' ]); @@ -113,7 +113,7 @@ nock('https://endpoint', {"encodedQueryParams":false}) nock('https://endpoint', {"encodedQueryParams":false}) .get('/phoneNumbers/%2B14155550100') .query(true) - .reply(404, {"error":{"code":"PhoneNumberNotFound","message":"The specified phone number +14155550100 cannot be found.","target":"phonenumber"}}, [ + .reply(404, {"error":{"code":"NotFound","message":"Input phoneNumber +14155550100 cannot be found.","target":"phonenumber"}}, [ 'Transfer-Encoding', 'chunked', 'Content-Type', @@ -121,15 +121,15 @@ nock('https://endpoint', {"encodedQueryParams":false}) 'Request-Context', 'appId=', 'MS-CV', - '5yk9p4TWLUqOwzMX5IuPiA.0', + 'QzR59mUqFkSbodgsmrnmxQ.0', 'api-supported-versions', '2021-03-07', 'X-Processing-Time', - '950ms', + '351ms', 'X-Cache', 'CONFIG_NOCACHE', 'X-Azure-Ref', - '0wli2YAAAAADOTk79dFXdQoLL7hJPmgr3WVZSMzBFREdFMDQxMgA5ZmM3YjUxOS1hOGNjLTRmODktOTM1ZS1jOTE0OGFlMDllODE=', + '0asvMYAAAAADnaDVouiPgR7+UuwybRNbjWVZSMzBFREdFMDQwOAA5ZmM3YjUxOS1hOGNjLTRmODktOTM1ZS1jOTE0OGFlMDllODE=', 'Date', - 'Tue, 01 Jun 2021 15:56:51 GMT' + 'Fri, 18 Jun 2021 16:35:54 GMT' ]); diff --git a/sdk/communication/communication-phone-numbers/recordings/node/phonenumbersclient__lists/recording_can_list_all_purchased_phone_numbers.js b/sdk/communication/communication-phone-numbers/recordings/node/phonenumbersclient__lists/recording_can_list_all_purchased_phone_numbers.js index ab14d1294c7c..dbd063adf362 100644 --- a/sdk/communication/communication-phone-numbers/recordings/node/phonenumbersclient__lists/recording_can_list_all_purchased_phone_numbers.js +++ b/sdk/communication/communication-phone-numbers/recordings/node/phonenumbersclient__lists/recording_can_list_all_purchased_phone_numbers.js @@ -1,13 +1,13 @@ let nock = require('nock'); -module.exports.hash = "abe2e819f7fadb19bc1a53535c53a6a0"; +module.exports.hash = "43b58e99c6ce1c8d4df4f3bcbd767346"; module.exports.testInfo = {"uniqueName":{},"newDate":{}} nock('https://endpoint', {"encodedQueryParams":false}) .get('/phoneNumbers') .query(true) - .reply(200, {"phoneNumbers":[{"id":"14155550100","phoneNumber":"+14155550100","countryCode":"US","phoneNumberType":"geographic","capabilities":{"calling":"inbound+outbound","sms":"none"},"assignmentType":"application","purchaseDate":"2021-04-14T00:23:52.1861991+00:00","cost":{"amount":1,"currencyCode":"USD","billingFrequency":"monthly"}},{"id":"14155550100","phoneNumber":"+14155550100","countryCode":"US","phoneNumberType":"geographic","capabilities":{"calling":"outbound","sms":"none"},"assignmentType":"application","purchaseDate":"2021-04-06T23:27:52.858607+00:00","cost":{"amount":1,"currencyCode":"USD","billingFrequency":"monthly"}},{"id":"14155550100","phoneNumber":"+14155550100","countryCode":"US","phoneNumberType":"tollFree","capabilities":{"calling":"none","sms":"outbound"},"assignmentType":"application","purchaseDate":"2021-05-25T00:03:06.2985305+00:00","cost":{"amount":2,"currencyCode":"USD","billingFrequency":"monthly"}},{"id":"14155550100","phoneNumber":"+14155550100","countryCode":"US","phoneNumberType":"tollFree","capabilities":{"calling":"none","sms":"outbound"},"assignmentType":"application","purchaseDate":"2021-05-24T23:39:11.2079613+00:00","cost":{"amount":2,"currencyCode":"USD","billingFrequency":"monthly"}},{"id":"14155550100","phoneNumber":"+14155550100","countryCode":"US","phoneNumberType":"tollFree","capabilities":{"calling":"inbound","sms":"inbound+outbound"},"assignmentType":"application","purchaseDate":"2021-05-26T23:18:22.4715623+00:00","cost":{"amount":2,"currencyCode":"USD","billingFrequency":"monthly"}},{"id":"14155550100","phoneNumber":"+14155550100","countryCode":"US","phoneNumberType":"tollFree","capabilities":{"calling":"inbound","sms":"inbound+outbound"},"assignmentType":"application","purchaseDate":"2021-05-27T03:05:50.816041+00:00","cost":{"amount":2,"currencyCode":"USD","billingFrequency":"monthly"}},{"id":"14155550100","phoneNumber":"+14155550100","countryCode":"US","phoneNumberType":"tollFree","capabilities":{"calling":"inbound","sms":"inbound+outbound"},"assignmentType":"application","purchaseDate":"2021-02-10T17:52:41.818335+00:00","cost":{"amount":2,"currencyCode":"USD","billingFrequency":"monthly"}},{"id":"14155550100","phoneNumber":"+14155550100","countryCode":"US","phoneNumberType":"tollFree","capabilities":{"calling":"none","sms":"inbound+outbound"},"assignmentType":"application","purchaseDate":"2021-02-10T18:01:46.4199999+00:00","cost":{"amount":2,"currencyCode":"USD","billingFrequency":"monthly"}},{"id":"14155550100","phoneNumber":"+14155550100","countryCode":"US","phoneNumberType":"tollFree","capabilities":{"calling":"none","sms":"inbound+outbound"},"assignmentType":"application","purchaseDate":"2021-03-09T15:01:55.0949003+00:00","cost":{"amount":2,"currencyCode":"USD","billingFrequency":"monthly"}},{"id":"14155550100","phoneNumber":"+14155550100","countryCode":"US","phoneNumberType":"tollFree","capabilities":{"calling":"outbound","sms":"outbound"},"assignmentType":"application","purchaseDate":"2021-03-09T15:03:04.7513808+00:00","cost":{"amount":2,"currencyCode":"USD","billingFrequency":"monthly"}},{"id":"14155550100","phoneNumber":"+14155550100","countryCode":"US","phoneNumberType":"tollFree","capabilities":{"calling":"outbound","sms":"inbound+outbound"},"assignmentType":"application","purchaseDate":"2000-01-01T00:00:00+00:00","cost":{"amount":2,"currencyCode":"USD","billingFrequency":"monthly"}}]}, [ + .reply(200, {"phoneNumbers":[{"id":"14155550100","phoneNumber":"+14155550100","countryCode":"US","phoneNumberType":"geographic","capabilities":{"calling":"inbound+outbound","sms":"none"},"assignmentType":"application","purchaseDate":"2021-04-14T00:23:52.1861991+00:00","cost":{"amount":1,"currencyCode":"USD","billingFrequency":"monthly"}},{"id":"14155550100","phoneNumber":"+14155550100","countryCode":"US","phoneNumberType":"geographic","capabilities":{"calling":"outbound","sms":"none"},"assignmentType":"application","purchaseDate":"2021-04-06T23:27:52.858607+00:00","cost":{"amount":1,"currencyCode":"USD","billingFrequency":"monthly"}},{"id":"14155550100","phoneNumber":"+14155550100","countryCode":"US","phoneNumberType":"tollFree","capabilities":{"calling":"none","sms":"outbound"},"assignmentType":"application","purchaseDate":"2021-05-25T00:03:06.2985305+00:00","cost":{"amount":2,"currencyCode":"USD","billingFrequency":"monthly"}},{"id":"14155550100","phoneNumber":"+14155550100","countryCode":"US","phoneNumberType":"tollFree","capabilities":{"calling":"none","sms":"outbound"},"assignmentType":"application","purchaseDate":"2021-05-24T23:39:11.2079613+00:00","cost":{"amount":2,"currencyCode":"USD","billingFrequency":"monthly"}},{"id":"14155550100","phoneNumber":"+14155550100","countryCode":"US","phoneNumberType":"tollFree","capabilities":{"calling":"inbound","sms":"inbound+outbound"},"assignmentType":"application","purchaseDate":"2021-05-26T23:18:22.4715623+00:00","cost":{"amount":2,"currencyCode":"USD","billingFrequency":"monthly"}},{"id":"14155550100","phoneNumber":"+14155550100","countryCode":"US","phoneNumberType":"tollFree","capabilities":{"calling":"inbound","sms":"inbound+outbound"},"assignmentType":"application","purchaseDate":"2021-05-27T03:05:50.816041+00:00","cost":{"amount":2,"currencyCode":"USD","billingFrequency":"monthly"}},{"id":"14155550100","phoneNumber":"+14155550100","countryCode":"US","phoneNumberType":"tollFree","capabilities":{"calling":"outbound","sms":"outbound"},"assignmentType":"application","purchaseDate":"2021-02-10T17:52:41.818335+00:00","cost":{"amount":2,"currencyCode":"USD","billingFrequency":"monthly"}},{"id":"14155550100","phoneNumber":"+14155550100","countryCode":"US","phoneNumberType":"tollFree","capabilities":{"calling":"none","sms":"inbound+outbound"},"assignmentType":"application","purchaseDate":"2021-02-10T18:01:46.4199999+00:00","cost":{"amount":2,"currencyCode":"USD","billingFrequency":"monthly"}},{"id":"14155550100","phoneNumber":"+14155550100","countryCode":"US","phoneNumberType":"tollFree","capabilities":{"calling":"none","sms":"outbound"},"assignmentType":"application","purchaseDate":"2021-03-09T15:01:55.0949003+00:00","cost":{"amount":2,"currencyCode":"USD","billingFrequency":"monthly"}},{"id":"14155550100","phoneNumber":"+14155550100","countryCode":"US","phoneNumberType":"tollFree","capabilities":{"calling":"none","sms":"outbound"},"assignmentType":"application","purchaseDate":"2021-03-09T15:03:04.7513808+00:00","cost":{"amount":2,"currencyCode":"USD","billingFrequency":"monthly"}},{"id":"14155550100","phoneNumber":"+14155550100","countryCode":"US","phoneNumberType":"tollFree","capabilities":{"calling":"outbound","sms":"inbound+outbound"},"assignmentType":"application","purchaseDate":"2000-01-01T00:00:00+00:00","cost":{"amount":2,"currencyCode":"USD","billingFrequency":"monthly"}}]}, [ 'Transfer-Encoding', 'chunked', 'Content-Type', @@ -15,15 +15,15 @@ nock('https://endpoint', {"encodedQueryParams":false}) 'Request-Context', 'appId=', 'MS-CV', - 'cjAYMqMxbUKz6ep3e3bnbQ.0', + 'kM9OuVzFn0KXEbCP8o/0Rw.0', 'api-supported-versions', '2021-03-07', 'X-Processing-Time', - '1589ms', + '2142ms', 'X-Cache', 'CONFIG_NOCACHE', 'X-Azure-Ref', - '0yFi2YAAAAADzJmFN0024S5PTfeT4cVtrWVZSMzBFREdFMDMxNgA5ZmM3YjUxOS1hOGNjLTRmODktOTM1ZS1jOTE0OGFlMDllODE=', + '0csvMYAAAAACjDu27xlBWSo+EhXJjLdP3WVZSMzBFREdFMDMwNwA5ZmM3YjUxOS1hOGNjLTRmODktOTM1ZS1jOTE0OGFlMDllODE=', 'Date', - 'Tue, 01 Jun 2021 15:56:57 GMT' + 'Fri, 18 Jun 2021 16:36:04 GMT' ]); diff --git a/sdk/communication/communication-phone-numbers/recordings/node/phonenumbersclient__lists_aad/recording_can_list_all_purchased_phone_numbers.js b/sdk/communication/communication-phone-numbers/recordings/node/phonenumbersclient__lists_aad/recording_can_list_all_purchased_phone_numbers.js index 92e49459a898..f00f4a355543 100644 --- a/sdk/communication/communication-phone-numbers/recordings/node/phonenumbersclient__lists_aad/recording_can_list_all_purchased_phone_numbers.js +++ b/sdk/communication/communication-phone-numbers/recordings/node/phonenumbersclient__lists_aad/recording_can_list_all_purchased_phone_numbers.js @@ -1,6 +1,6 @@ let nock = require('nock'); -module.exports.hash = "abe2e819f7fadb19bc1a53535c53a6a0"; +module.exports.hash = "43b58e99c6ce1c8d4df4f3bcbd767346"; module.exports.testInfo = {"uniqueName":{},"newDate":{}} @@ -25,26 +25,28 @@ nock('https://endpoint', {"encodedQueryParams":false}) 'x-ms-request-id', 'sanitized', 'x-ms-ests-server', - '2.1.11722.21 - WUS2 ProdSlices', + '2.1.11829.4 - WUS2 ProdSlices', 'Set-Cookie', - 'fpc=AtoRK8gNCytBsgelMsPAEVxWyo4SAgAAALlPSNgOAAAA; expires=Thu, 01-Jul-2021 15:56:53 GMT; path=/; secure; HttpOnly; SameSite=None', + 'fpc=Akx-rKIenedChRbNwm0wEmhWyo4SAgAAAGbCXtgOAAAA; expires=Sun, 18-Jul-2021 16:35:58 GMT; path=/; secure; HttpOnly; SameSite=None', 'Set-Cookie', - 'esctx=AQABAAAAAAD--DLA3VO7QrddgJg7Wevrmb6byl4EvAHuSIWwOrJU-06UDUeR8IYOiPKHTeH7l_Ps8mkrHv6csI0sg4h2xuMkHfFsCNflpn-ModolO2SMtt6jtdt8C9ZX051M0PNBQ27xTPOT3AKq3HSeMStgDCMEqiQnED8UrYiwOPBdRy_CVq2UI0OUeYHNQOeWKbdT3h0gAA; domain=.login.microsoftonline.com; path=/; secure; HttpOnly; SameSite=None', + 'esctx=AQABAAAAAAD--DLA3VO7QrddgJg7WevrVJFqZCjOekoTs62J6jyvtagwjZGc9kiRS5ML98fmH3DaqGk8SAuApx2yuycv_g9i4wruWn-ZtCXPlUVHIJ1eLtGrZwtsBYfBneqtLOJjgxAu7ybvQ3uF6VTChCDAg2HUQmvFa_HXsg2obM3-5IxrCSkHbRZj9mROuYRB_rNY1i0gAA; domain=.login.microsoftonline.com; path=/; secure; HttpOnly; SameSite=None', 'Set-Cookie', 'x-ms-gateway-slice=estsfd; path=/; secure; samesite=none; httponly', 'Set-Cookie', 'stsservicecookie=estsfd; path=/; secure; samesite=none; httponly', 'Date', - 'Tue, 01 Jun 2021 15:56:53 GMT', + 'Fri, 18 Jun 2021 16:35:58 GMT', 'Content-Length', '980' ]); nock('https://endpoint', {"encodedQueryParams":false}) .get('/SomeTenantId/v2.0/.well-known/openid-configuration') - .reply(200, {"token_endpoint":"https://login.microsoftonline.com/SomeTenantId/oauth2/v2.0/token","token_endpoint_auth_methods_supported":["client_secret_post","private_key_jwt","client_secret_basic"],"jwks_uri":"https://login.microsoftonline.com/SomeTenantId/discovery/v2.0/keys","response_modes_supported":["query","fragment","form_post"],"subject_types_supported":["pairwise"],"id_token_signing_alg_values_supported":["RS256"],"response_types_supported":["code","id_token","code id_token","id_token token"],"scopes_supported":["openid","profile","email","offline_access"],"issuer":"https://login.microsoftonline.com/SomeTenantId/v2.0","request_uri_parameter_supported":false,"userinfo_endpoint":"https://graph.microsoft.com/oidc/userinfo","authorization_endpoint":"https://login.microsoftonline.com/SomeTenantId/oauth2/v2.0/authorize","device_authorization_endpoint":"https://login.microsoftonline.com/SomeTenantId/oauth2/v2.0/devicecode","http_logout_supported":false,"frontchannel_logout_supported":false,"end_session_endpoint":"https://login.microsoftonline.com/SomeTenantId/oauth2/v2.0/logout","claims_supported":["sub","iss","cloud_instance_name","cloud_instance_host_name","cloud_graph_host_name","msgraph_host","aud","exp","iat","auth_time","acr","nonce","preferred_username","name","tid","ver","at_hash","c_hash","email"],"tenant_region_scope":"WW","cloud_instance_name":"microsoftonline.com","cloud_graph_host_name":"graph.windows.net","msgraph_host":"graph.microsoft.com","rbac_url":"https://pas.windows.net"}, [ + .reply(200, {"token_endpoint":"https://login.microsoftonline.com/SomeTenantId/oauth2/v2.0/token","token_endpoint_auth_methods_supported":["client_secret_post","private_key_jwt","client_secret_basic"],"jwks_uri":"https://login.microsoftonline.com/SomeTenantId/discovery/v2.0/keys","response_modes_supported":["query","fragment","form_post"],"subject_types_supported":["pairwise"],"id_token_signing_alg_values_supported":["RS256"],"response_types_supported":["code","id_token","code id_token","id_token token"],"scopes_supported":["openid","profile","email","offline_access"],"issuer":"https://login.microsoftonline.com/SomeTenantId/v2.0","request_uri_parameter_supported":false,"userinfo_endpoint":"https://graph.microsoft.com/oidc/userinfo","authorization_endpoint":"https://login.microsoftonline.com/SomeTenantId/oauth2/v2.0/authorize","device_authorization_endpoint":"https://login.microsoftonline.com/SomeTenantId/oauth2/v2.0/devicecode","http_logout_supported":false,"frontchannel_logout_supported":false,"end_session_endpoint":"https://login.microsoftonline.com/SomeTenantId/oauth2/v2.0/logout","claims_supported":["sub","iss","cloud_instance_name","cloud_instance_host_name","cloud_graph_host_name","msgraph_host","aud","exp","iat","auth_time","acr","nonce","preferred_username","name","tid","ver","at_hash","c_hash","email"],"kerberos_endpoint":"https://login.microsoftonline.com/SomeTenantId/kerberos","tenant_region_scope":"WW","cloud_instance_name":"microsoftonline.com","cloud_graph_host_name":"graph.windows.net","msgraph_host":"graph.microsoft.com","rbac_url":"https://pas.windows.net"}, [ 'Cache-Control', 'max-age=86400, private', + 'Content-Length', + '1753', 'Content-Type', 'application/json; charset=utf-8', 'Strict-Transport-Security', @@ -60,28 +62,28 @@ nock('https://endpoint', {"encodedQueryParams":false}) 'x-ms-request-id', 'sanitized', 'x-ms-ests-server', - '2.1.11722.26 - SCUS ProdSlices', + '2.1.11829.4 - EUS ProdSlices', 'Set-Cookie', - 'fpc=AtoRK8gNCytBsgelMsPAEVxWyo4SAgAAALlPSNgOAAAA; expires=Thu, 01-Jul-2021 15:56:53 GMT; path=/; secure; HttpOnly; SameSite=None', + 'fpc=Akx-rKIenedChRbNwm0wEmhWyo4SAgAAAGbCXtgOAAAA; expires=Sun, 18-Jul-2021 16:35:58 GMT; path=/; secure; HttpOnly; SameSite=None', 'Set-Cookie', - 'esctx=AQABAAAAAAD--DLA3VO7QrddgJg7WevrXjmLnAR6El3MybADvo96oyQhgMp0RveMEgLTpjc9JLa6yKw_7DtIvdpUTwhnxsw9cuE_eGvv57bK4s2nx9wKx4tz7-uic-pYokK5u6CzorNW47wS90qfnNuGZAM-vRpk4QLJcTgdKtrSsQPYPYV20QCHR60y6yv33sSMyC5GgRwgAA; domain=.login.microsoftonline.com; path=/; secure; HttpOnly; SameSite=None', + 'esctx=AQABAAAAAAD--DLA3VO7QrddgJg7WevrtwhQ4NKfzT2yS98l0eCa_oJeQ2fQc-vbWwFsFasT32GBrzUX7189gsbyg6bm89aJpKXXO5WjLeGSy14xemL81Bt8FlAjQeDA3tOGqe-f6L-8XsEU9rUuWKyOXXnPQi3nzjxkJawJE8v4b2VC2jybqJ659US6pyUSYHDq0I7e1nAgAA; domain=.login.microsoftonline.com; path=/; secure; HttpOnly; SameSite=None', 'Set-Cookie', 'x-ms-gateway-slice=estsfd; path=/; secure; samesite=none; httponly', 'Set-Cookie', 'stsservicecookie=estsfd; path=/; secure; samesite=none; httponly', 'Date', - 'Tue, 01 Jun 2021 15:56:53 GMT', - 'Content-Length', - '1651' + 'Fri, 18 Jun 2021 16:35:58 GMT' ]); nock('https://endpoint', {"encodedQueryParams":false}) - .post('/SomeTenantId/oauth2/v2.0/token', "client_id=SomeClientId&scope=https%3A%2F%2Fcommunication.azure.com%2F%2F.default%20openid%20profile%20offline_access&grant_type=client_credentials&client-request-id=sanitized&client_secret=SomeClientSecret") + .post('/SomeTenantId/oauth2/v2.0/token', "client_id=SomeClientId&scope=https%3A%2F%2Fsanitized%2F&grant_type=client_credentials&x-client-SKU=msal.js.node&x-client-VER=1.1.0&x-client-OS=win32&x-client-CPU=x64&x-ms-lib-capability=retry-after, h429&x-client-current-telemetry=2|771,0|,&x-client-last-telemetry=2|0|||0,0&client-request-id=sanitized&client_secret=SomeClientSecret") .reply(200, {"token_type":"Bearer","expires_in":86399,"ext_expires_in":86399,"access_token":"access_token"}, [ 'Cache-Control', 'no-store, no-cache', 'Pragma', 'no-cache', + 'Content-Length', + '1327', 'Content-Type', 'application/json; charset=utf-8', 'Expires', @@ -95,25 +97,23 @@ nock('https://endpoint', {"encodedQueryParams":false}) 'x-ms-request-id', 'sanitized', 'x-ms-ests-server', - '2.1.11722.26 - EUS ProdSlices', + '2.1.11829.4 - NCUS ProdSlices', 'x-ms-clitelem', '1,0,0,,', 'Set-Cookie', - 'fpc=AtoRK8gNCytBsgelMsPAEVxWyo4SAgAAALlPSNgOAAAA; expires=Thu, 01-Jul-2021 15:56:54 GMT; path=/; secure; HttpOnly; SameSite=None', + 'fpc=Akx-rKIenedChRbNwm0wEmhWyo4SAgAAAGbCXtgOAAAA; expires=Sun, 18-Jul-2021 16:35:58 GMT; path=/; secure; HttpOnly; SameSite=None', 'Set-Cookie', 'x-ms-gateway-slice=estsfd; path=/; secure; samesite=none; httponly', 'Set-Cookie', 'stsservicecookie=estsfd; path=/; secure; samesite=none; httponly', 'Date', - 'Tue, 01 Jun 2021 15:56:54 GMT', - 'Content-Length', - '1327' + 'Fri, 18 Jun 2021 16:35:58 GMT' ]); nock('https://endpoint', {"encodedQueryParams":false}) .get('/phoneNumbers') .query(true) - .reply(200, {"phoneNumbers":[{"id":"14155550100","phoneNumber":"+14155550100","countryCode":"US","phoneNumberType":"geographic","capabilities":{"calling":"inbound+outbound","sms":"none"},"assignmentType":"application","purchaseDate":"2021-04-14T00:23:52.1861991+00:00","cost":{"amount":1,"currencyCode":"USD","billingFrequency":"monthly"}},{"id":"14155550100","phoneNumber":"+14155550100","countryCode":"US","phoneNumberType":"geographic","capabilities":{"calling":"outbound","sms":"none"},"assignmentType":"application","purchaseDate":"2021-04-06T23:27:52.858607+00:00","cost":{"amount":1,"currencyCode":"USD","billingFrequency":"monthly"}},{"id":"14155550100","phoneNumber":"+14155550100","countryCode":"US","phoneNumberType":"tollFree","capabilities":{"calling":"none","sms":"outbound"},"assignmentType":"application","purchaseDate":"2021-05-25T00:03:06.2985305+00:00","cost":{"amount":2,"currencyCode":"USD","billingFrequency":"monthly"}},{"id":"14155550100","phoneNumber":"+14155550100","countryCode":"US","phoneNumberType":"tollFree","capabilities":{"calling":"none","sms":"outbound"},"assignmentType":"application","purchaseDate":"2021-05-24T23:39:11.2079613+00:00","cost":{"amount":2,"currencyCode":"USD","billingFrequency":"monthly"}},{"id":"14155550100","phoneNumber":"+14155550100","countryCode":"US","phoneNumberType":"tollFree","capabilities":{"calling":"inbound","sms":"inbound+outbound"},"assignmentType":"application","purchaseDate":"2021-05-26T23:18:22.4715623+00:00","cost":{"amount":2,"currencyCode":"USD","billingFrequency":"monthly"}},{"id":"14155550100","phoneNumber":"+14155550100","countryCode":"US","phoneNumberType":"tollFree","capabilities":{"calling":"inbound","sms":"inbound+outbound"},"assignmentType":"application","purchaseDate":"2021-05-27T03:05:50.816041+00:00","cost":{"amount":2,"currencyCode":"USD","billingFrequency":"monthly"}},{"id":"14155550100","phoneNumber":"+14155550100","countryCode":"US","phoneNumberType":"tollFree","capabilities":{"calling":"inbound","sms":"inbound+outbound"},"assignmentType":"application","purchaseDate":"2021-02-10T17:52:41.818335+00:00","cost":{"amount":2,"currencyCode":"USD","billingFrequency":"monthly"}},{"id":"14155550100","phoneNumber":"+14155550100","countryCode":"US","phoneNumberType":"tollFree","capabilities":{"calling":"none","sms":"inbound+outbound"},"assignmentType":"application","purchaseDate":"2021-02-10T18:01:46.4199999+00:00","cost":{"amount":2,"currencyCode":"USD","billingFrequency":"monthly"}},{"id":"14155550100","phoneNumber":"+14155550100","countryCode":"US","phoneNumberType":"tollFree","capabilities":{"calling":"none","sms":"inbound+outbound"},"assignmentType":"application","purchaseDate":"2021-03-09T15:01:55.0949003+00:00","cost":{"amount":2,"currencyCode":"USD","billingFrequency":"monthly"}},{"id":"14155550100","phoneNumber":"+14155550100","countryCode":"US","phoneNumberType":"tollFree","capabilities":{"calling":"outbound","sms":"outbound"},"assignmentType":"application","purchaseDate":"2021-03-09T15:03:04.7513808+00:00","cost":{"amount":2,"currencyCode":"USD","billingFrequency":"monthly"}},{"id":"14155550100","phoneNumber":"+14155550100","countryCode":"US","phoneNumberType":"tollFree","capabilities":{"calling":"outbound","sms":"inbound+outbound"},"assignmentType":"application","purchaseDate":"2000-01-01T00:00:00+00:00","cost":{"amount":2,"currencyCode":"USD","billingFrequency":"monthly"}}]}, [ + .reply(200, {"phoneNumbers":[{"id":"14155550100","phoneNumber":"+14155550100","countryCode":"US","phoneNumberType":"geographic","capabilities":{"calling":"inbound+outbound","sms":"none"},"assignmentType":"application","purchaseDate":"2021-04-14T00:23:52.1861991+00:00","cost":{"amount":1,"currencyCode":"USD","billingFrequency":"monthly"}},{"id":"14155550100","phoneNumber":"+14155550100","countryCode":"US","phoneNumberType":"geographic","capabilities":{"calling":"outbound","sms":"none"},"assignmentType":"application","purchaseDate":"2021-04-06T23:27:52.858607+00:00","cost":{"amount":1,"currencyCode":"USD","billingFrequency":"monthly"}},{"id":"14155550100","phoneNumber":"+14155550100","countryCode":"US","phoneNumberType":"tollFree","capabilities":{"calling":"none","sms":"outbound"},"assignmentType":"application","purchaseDate":"2021-05-25T00:03:06.2985305+00:00","cost":{"amount":2,"currencyCode":"USD","billingFrequency":"monthly"}},{"id":"14155550100","phoneNumber":"+14155550100","countryCode":"US","phoneNumberType":"tollFree","capabilities":{"calling":"none","sms":"outbound"},"assignmentType":"application","purchaseDate":"2021-05-24T23:39:11.2079613+00:00","cost":{"amount":2,"currencyCode":"USD","billingFrequency":"monthly"}},{"id":"14155550100","phoneNumber":"+14155550100","countryCode":"US","phoneNumberType":"tollFree","capabilities":{"calling":"inbound","sms":"inbound+outbound"},"assignmentType":"application","purchaseDate":"2021-05-26T23:18:22.4715623+00:00","cost":{"amount":2,"currencyCode":"USD","billingFrequency":"monthly"}},{"id":"14155550100","phoneNumber":"+14155550100","countryCode":"US","phoneNumberType":"tollFree","capabilities":{"calling":"inbound","sms":"inbound+outbound"},"assignmentType":"application","purchaseDate":"2021-05-27T03:05:50.816041+00:00","cost":{"amount":2,"currencyCode":"USD","billingFrequency":"monthly"}},{"id":"14155550100","phoneNumber":"+14155550100","countryCode":"US","phoneNumberType":"tollFree","capabilities":{"calling":"outbound","sms":"outbound"},"assignmentType":"application","purchaseDate":"2021-02-10T17:52:41.818335+00:00","cost":{"amount":2,"currencyCode":"USD","billingFrequency":"monthly"}},{"id":"14155550100","phoneNumber":"+14155550100","countryCode":"US","phoneNumberType":"tollFree","capabilities":{"calling":"none","sms":"inbound+outbound"},"assignmentType":"application","purchaseDate":"2021-02-10T18:01:46.4199999+00:00","cost":{"amount":2,"currencyCode":"USD","billingFrequency":"monthly"}},{"id":"14155550100","phoneNumber":"+14155550100","countryCode":"US","phoneNumberType":"tollFree","capabilities":{"calling":"none","sms":"outbound"},"assignmentType":"application","purchaseDate":"2021-03-09T15:01:55.0949003+00:00","cost":{"amount":2,"currencyCode":"USD","billingFrequency":"monthly"}},{"id":"14155550100","phoneNumber":"+14155550100","countryCode":"US","phoneNumberType":"tollFree","capabilities":{"calling":"none","sms":"outbound"},"assignmentType":"application","purchaseDate":"2021-03-09T15:03:04.7513808+00:00","cost":{"amount":2,"currencyCode":"USD","billingFrequency":"monthly"}},{"id":"14155550100","phoneNumber":"+14155550100","countryCode":"US","phoneNumberType":"tollFree","capabilities":{"calling":"outbound","sms":"inbound+outbound"},"assignmentType":"application","purchaseDate":"2000-01-01T00:00:00+00:00","cost":{"amount":2,"currencyCode":"USD","billingFrequency":"monthly"}}]}, [ 'Transfer-Encoding', 'chunked', 'Content-Type', @@ -121,15 +121,15 @@ nock('https://endpoint', {"encodedQueryParams":false}) 'Request-Context', 'appId=', 'MS-CV', - '/quyVzeSOESA+FBltAje4w.0', + 'NBvvSQa3A0CvjJlgAjMgdA.0', 'api-supported-versions', '2021-03-07', 'X-Processing-Time', - '1819ms', + '2628ms', 'X-Cache', 'CONFIG_NOCACHE', 'X-Azure-Ref', - '0xli2YAAAAAAT6IjKzaFaSbVoOJo3K5aZWVZSMzBFREdFMDMxNwA5ZmM3YjUxOS1hOGNjLTRmODktOTM1ZS1jOTE0OGFlMDllODE=', + '0b8vMYAAAAABxlFqyNE3CT4vwaNDMrViqWVZSMzBFREdFMDQxOQA5ZmM3YjUxOS1hOGNjLTRmODktOTM1ZS1jOTE0OGFlMDllODE=', 'Date', - 'Tue, 01 Jun 2021 15:56:55 GMT' + 'Fri, 18 Jun 2021 16:36:02 GMT' ]); diff --git a/sdk/communication/communication-phone-numbers/recordings/node/phonenumbersclient__lro__purchase_and_release/recording_can_purchase_and_release_a_phone_number.js b/sdk/communication/communication-phone-numbers/recordings/node/phonenumbersclient__lro__purchase_and_release/recording_can_purchase_and_release_a_phone_number.js index 61aa9c7c4493..4a84c81c558d 100644 --- a/sdk/communication/communication-phone-numbers/recordings/node/phonenumbersclient__lro__purchase_and_release/recording_can_purchase_and_release_a_phone_number.js +++ b/sdk/communication/communication-phone-numbers/recordings/node/phonenumbersclient__lro__purchase_and_release/recording_can_purchase_and_release_a_phone_number.js @@ -1,6 +1,6 @@ let nock = require('nock'); -module.exports.hash = "5b6afe760ef7a0d2145b0dd4fd19d7ff"; +module.exports.hash = "24cf17e5a184ecc379d3cf483e2ba7f3"; module.exports.testInfo = {"uniqueName":{},"newDate":{}} @@ -15,7 +15,7 @@ nock('https://endpoint', {"encodedQueryParams":false}) 'Request-Context', 'appId=', 'MS-CV', - 'FLvEw029BU2btreSnceLwQ.0', + 'DieGANRAa0WmwFcbtKuzEg.0', 'Operation-Location', '/phoneNumbers/operations/search_sanitized?api-version=2021-03-07', 'operation-id', @@ -25,13 +25,13 @@ nock('https://endpoint', {"encodedQueryParams":false}) 'api-supported-versions', '2021-03-07', 'X-Processing-Time', - '1919ms', + '2161ms', 'X-Cache', 'CONFIG_NOCACHE', 'X-Azure-Ref', - '0/1i2YAAAAACyywQxltI8RJKl8hb9Tt4QWVZSMzBFREdFMDQwOAA5ZmM3YjUxOS1hOGNjLTRmODktOTM1ZS1jOTE0OGFlMDllODE=', + '0psvMYAAAAAAtYidbFB2uSafOHC7ZZ8tjWVZSMzBFREdFMDQwOQA5ZmM3YjUxOS1hOGNjLTRmODktOTM1ZS1jOTE0OGFlMDllODE=', 'Date', - 'Tue, 01 Jun 2021 15:57:52 GMT', + 'Fri, 18 Jun 2021 16:36:56 GMT', 'Content-Length', '0' ]); @@ -39,7 +39,7 @@ nock('https://endpoint', {"encodedQueryParams":false}) nock('https://endpoint', {"encodedQueryParams":false}) .get('/phoneNumbers/operations/search_sanitized') .query(true) - .reply(200, {"status":"notStarted","resourceLocation":"/availablePhoneNumbers/searchResults/sanitized?api-version=2021-03-07","createdDateTime":"2021-06-01T15:57:52.7430147+00:00","id":"search_sanitized","operationType":"search","lastActionDateTime":"0001-01-01T00:00:00+00:00"}, [ + .reply(200, {"status":"notStarted","resourceLocation":"/availablePhoneNumbers/searchResults/sanitized?api-version=2021-03-07","createdDateTime":"2021-06-18T16:36:56.7155171+00:00","id":"search_sanitized","operationType":"search","lastActionDateTime":"0001-01-01T00:00:00+00:00"}, [ 'Transfer-Encoding', 'chunked', 'Content-Type', @@ -51,23 +51,23 @@ nock('https://endpoint', {"encodedQueryParams":false}) 'Request-Context', 'appId=', 'MS-CV', - '88BoN1DDa0yYVwkcxFPWpA.0', + '1T/zZ5bS50CtzJ9fRSh69A.0', 'api-supported-versions', '2021-03-07', 'X-Processing-Time', - '402ms', + '344ms', 'X-Cache', 'CONFIG_NOCACHE', 'X-Azure-Ref', - '0AVm2YAAAAAA0hDroit6nRIcHELD5rf40WVZSMzBFREdFMDQwOAA5ZmM3YjUxOS1hOGNjLTRmODktOTM1ZS1jOTE0OGFlMDllODE=', + '0qcvMYAAAAABzz0FuCvqdRa6b42prNckkWVZSMzBFREdFMDQwOQA5ZmM3YjUxOS1hOGNjLTRmODktOTM1ZS1jOTE0OGFlMDllODE=', 'Date', - 'Tue, 01 Jun 2021 15:57:52 GMT' + 'Fri, 18 Jun 2021 16:36:56 GMT' ]); nock('https://endpoint', {"encodedQueryParams":false}) .get('/phoneNumbers/operations/search_sanitized') .query(true) - .reply(200, {"status":"succeeded","resourceLocation":"/availablePhoneNumbers/searchResults/sanitized?api-version=2021-03-07","createdDateTime":"2021-06-01T15:57:52.7430147+00:00","id":"search_sanitized","operationType":"search","lastActionDateTime":"0001-01-01T00:00:00+00:00"}, [ + .reply(200, {"status":"succeeded","resourceLocation":"/availablePhoneNumbers/searchResults/sanitized?api-version=2021-03-07","createdDateTime":"2021-06-18T16:36:56.7155171+00:00","id":"search_sanitized","operationType":"search","lastActionDateTime":"0001-01-01T00:00:00+00:00"}, [ 'Transfer-Encoding', 'chunked', 'Content-Type', @@ -79,23 +79,23 @@ nock('https://endpoint', {"encodedQueryParams":false}) 'Request-Context', 'appId=', 'MS-CV', - 'wdEMMPNMYkG1v/6xek6KjQ.0', + 'wQtY6/dRSUGJ9hR2n+E+Sw.0', 'api-supported-versions', '2021-03-07', 'X-Processing-Time', - '381ms', + '352ms', 'X-Cache', 'CONFIG_NOCACHE', 'X-Azure-Ref', - '0A1m2YAAAAACmdVKAbl+NSYxnzAqNsIYnWVZSMzBFREdFMDQwOAA5ZmM3YjUxOS1hOGNjLTRmODktOTM1ZS1jOTE0OGFlMDllODE=', + '0q8vMYAAAAAC6iI69oqKuQ65TsFjEsRC7WVZSMzBFREdFMDQwOQA5ZmM3YjUxOS1hOGNjLTRmODktOTM1ZS1jOTE0OGFlMDllODE=', 'Date', - 'Tue, 01 Jun 2021 15:57:53 GMT' + 'Fri, 18 Jun 2021 16:36:59 GMT' ]); nock('https://endpoint', {"encodedQueryParams":false}) .get('/availablePhoneNumbers/searchResults/sanitized') .query(true) - .reply(200, {"searchId":"sanitized","phoneNumbers":["+14155550100"],"phoneNumberType":"tollFree","assignmentType":"application","capabilities":{"calling":"none","sms":"inbound+outbound"},"cost":{"amount":2,"currencyCode":"USD","billingFrequency":"monthly"},"searchExpiresBy":"2021-06-01T16:13:54.5394538+00:00"}, [ + .reply(200, {"searchId":"sanitized","phoneNumbers":["+14155550100"],"phoneNumberType":"tollFree","assignmentType":"application","capabilities":{"calling":"none","sms":"inbound+outbound"},"cost":{"amount":2,"currencyCode":"USD","billingFrequency":"monthly"},"searchExpiresBy":"2021-06-18T16:52:58.2705202+00:00"}, [ 'Transfer-Encoding', 'chunked', 'Content-Type', @@ -103,17 +103,17 @@ nock('https://endpoint', {"encodedQueryParams":false}) 'Request-Context', 'appId=', 'MS-CV', - '2NL42cg4Wku+EMTPWuQwqA.0', + 'VCqmhgsvCk+aRkMdXwkX7w.0', 'api-supported-versions', '2021-03-07', 'X-Processing-Time', - '819ms', + '811ms', 'X-Cache', 'CONFIG_NOCACHE', 'X-Azure-Ref', - '0Blm2YAAAAACpbPDIDenwQ5rZqnrH5//LWVZSMzBFREdFMDQwOAA5ZmM3YjUxOS1hOGNjLTRmODktOTM1ZS1jOTE0OGFlMDllODE=', + '0rsvMYAAAAADzUisO3hqzRJdIiy3VTuMCWVZSMzBFREdFMDQwOQA5ZmM3YjUxOS1hOGNjLTRmODktOTM1ZS1jOTE0OGFlMDllODE=', 'Date', - 'Tue, 01 Jun 2021 15:57:54 GMT' + 'Fri, 18 Jun 2021 16:37:02 GMT' ]); nock('https://endpoint', {"encodedQueryParams":false}) @@ -125,7 +125,7 @@ nock('https://endpoint', {"encodedQueryParams":false}) 'Request-Context', 'appId=', 'MS-CV', - 'iXNzZyUtEUm/KN847boecg.0', + 'gwNsT0DPMki6FAs+Qv/8WQ.0', 'Operation-Location', '/phoneNumbers/operations/purchase_sanitized?api-version=2021-03-07', 'operation-id', @@ -135,13 +135,13 @@ nock('https://endpoint', {"encodedQueryParams":false}) 'api-supported-versions', '2021-03-07', 'X-Processing-Time', - '1881ms', + '1693ms', 'X-Cache', 'CONFIG_NOCACHE', 'X-Azure-Ref', - '0CFm2YAAAAAA2acgAGSulSoJtzDCgsVnUWVZSMzBFREdFMDQwOAA5ZmM3YjUxOS1hOGNjLTRmODktOTM1ZS1jOTE0OGFlMDllODE=', + '0scvMYAAAAADRjDFPBEUmRooJwSnVQ0WAWVZSMzBFREdFMDQwOQA5ZmM3YjUxOS1hOGNjLTRmODktOTM1ZS1jOTE0OGFlMDllODE=', 'Date', - 'Tue, 01 Jun 2021 15:57:55 GMT', + 'Fri, 18 Jun 2021 16:37:06 GMT', 'Content-Length', '0' ]); @@ -149,7 +149,7 @@ nock('https://endpoint', {"encodedQueryParams":false}) nock('https://endpoint', {"encodedQueryParams":false}) .get('/phoneNumbers/operations/purchase_sanitized') .query(true) - .reply(200, {"status":"running","resourceLocation":null,"createdDateTime":"2021-06-01T15:57:52.7430147+00:00","id":"purchase_sanitized","operationType":"purchase","lastActionDateTime":"0001-01-01T00:00:00+00:00"}, [ + .reply(200, {"status":"running","resourceLocation":null,"createdDateTime":"2021-06-18T16:36:56.7155171+00:00","id":"purchase_sanitized","operationType":"purchase","lastActionDateTime":"0001-01-01T00:00:00+00:00"}, [ 'Transfer-Encoding', 'chunked', 'Content-Type', @@ -157,23 +157,23 @@ nock('https://endpoint', {"encodedQueryParams":false}) 'Request-Context', 'appId=', 'MS-CV', - 'gyPmVQFGfkmhXXyEgv9bkg.0', + 'eOcBORrJVk6iXVtDgQ8UWQ.0', 'api-supported-versions', '2021-03-07', 'X-Processing-Time', - '361ms', + '370ms', 'X-Cache', 'CONFIG_NOCACHE', 'X-Azure-Ref', - '0Clm2YAAAAAD1X1RMo/WhTpZIJhqu6KwgWVZSMzBFREdFMDQwOAA5ZmM3YjUxOS1hOGNjLTRmODktOTM1ZS1jOTE0OGFlMDllODE=', + '0s8vMYAAAAAAuVx6vEF44RqQcws6Rg4PfWVZSMzBFREdFMDQwOQA5ZmM3YjUxOS1hOGNjLTRmODktOTM1ZS1jOTE0OGFlMDllODE=', 'Date', - 'Tue, 01 Jun 2021 15:57:56 GMT' + 'Fri, 18 Jun 2021 16:37:06 GMT' ]); nock('https://endpoint', {"encodedQueryParams":false}) .get('/phoneNumbers/operations/purchase_sanitized') .query(true) - .reply(200, {"status":"running","resourceLocation":null,"createdDateTime":"2021-06-01T15:57:52.7430147+00:00","id":"purchase_sanitized","operationType":"purchase","lastActionDateTime":"0001-01-01T00:00:00+00:00"}, [ + .reply(200, {"status":"notStarted","resourceLocation":null,"createdDateTime":"2021-06-18T16:36:56.7155171+00:00","id":"purchase_sanitized","operationType":"purchase","lastActionDateTime":"0001-01-01T00:00:00+00:00"}, [ 'Transfer-Encoding', 'chunked', 'Content-Type', @@ -181,23 +181,23 @@ nock('https://endpoint', {"encodedQueryParams":false}) 'Request-Context', 'appId=', 'MS-CV', - 'VI3JbCOGvkyw3MuusQ+FdA.0', + 'WgbUm76zZEGJSf3/C31j0w.0', 'api-supported-versions', '2021-03-07', 'X-Processing-Time', - '368ms', + '350ms', 'X-Cache', 'CONFIG_NOCACHE', 'X-Azure-Ref', - '0DVm2YAAAAAB9vt/b65n9T4+qtTCJzi4oWVZSMzBFREdFMDQwOAA5ZmM3YjUxOS1hOGNjLTRmODktOTM1ZS1jOTE0OGFlMDllODE=', + '0tcvMYAAAAABjbyg+HIN/Q6EMFRvbgtAhWVZSMzBFREdFMDQwOQA5ZmM3YjUxOS1hOGNjLTRmODktOTM1ZS1jOTE0OGFlMDllODE=', 'Date', - 'Tue, 01 Jun 2021 15:57:57 GMT' + 'Fri, 18 Jun 2021 16:37:09 GMT' ]); nock('https://endpoint', {"encodedQueryParams":false}) .get('/phoneNumbers/operations/purchase_sanitized') .query(true) - .reply(200, {"status":"notStarted","resourceLocation":null,"createdDateTime":"2021-06-01T15:57:52.7430147+00:00","id":"purchase_sanitized","operationType":"purchase","lastActionDateTime":"0001-01-01T00:00:00+00:00"}, [ + .reply(200, {"status":"notStarted","resourceLocation":null,"createdDateTime":"2021-06-18T16:36:56.7155171+00:00","id":"purchase_sanitized","operationType":"purchase","lastActionDateTime":"0001-01-01T00:00:00+00:00"}, [ 'Transfer-Encoding', 'chunked', 'Content-Type', @@ -205,23 +205,23 @@ nock('https://endpoint', {"encodedQueryParams":false}) 'Request-Context', 'appId=', 'MS-CV', - 'KEC9IEx1PkC96uMBzJnr+A.0', + 'lWHEF2MUCk6MeQHuewgCtg.0', 'api-supported-versions', '2021-03-07', 'X-Processing-Time', - '355ms', + '365ms', 'X-Cache', 'CONFIG_NOCACHE', 'X-Azure-Ref', - '0D1m2YAAAAACb7L/5fWUBTJFmesZbgireWVZSMzBFREdFMDQwOAA5ZmM3YjUxOS1hOGNjLTRmODktOTM1ZS1jOTE0OGFlMDllODE=', + '0uMvMYAAAAABiJEbbi0wfQbcQO4pOfx0JWVZSMzBFREdFMDQwOQA5ZmM3YjUxOS1hOGNjLTRmODktOTM1ZS1jOTE0OGFlMDllODE=', 'Date', - 'Tue, 01 Jun 2021 15:57:58 GMT' + 'Fri, 18 Jun 2021 16:37:11 GMT' ]); nock('https://endpoint', {"encodedQueryParams":false}) .get('/phoneNumbers/operations/purchase_sanitized') .query(true) - .reply(200, {"status":"notStarted","resourceLocation":null,"createdDateTime":"2021-06-01T15:57:52.7430147+00:00","id":"purchase_sanitized","operationType":"purchase","lastActionDateTime":"0001-01-01T00:00:00+00:00"}, [ + .reply(200, {"status":"notStarted","resourceLocation":null,"createdDateTime":"2021-06-18T16:36:56.7155171+00:00","id":"purchase_sanitized","operationType":"purchase","lastActionDateTime":"0001-01-01T00:00:00+00:00"}, [ 'Transfer-Encoding', 'chunked', 'Content-Type', @@ -229,23 +229,23 @@ nock('https://endpoint', {"encodedQueryParams":false}) 'Request-Context', 'appId=', 'MS-CV', - 'DBIyKSL1sU2/yKWCy8mcHw.0', + 'EKsQNa4vsUqaRR2IbgRXBQ.0', 'api-supported-versions', '2021-03-07', 'X-Processing-Time', - '378ms', + '354ms', 'X-Cache', 'CONFIG_NOCACHE', 'X-Azure-Ref', - '0Elm2YAAAAACjgrSXajmzQoPGlbcvAb/kWVZSMzBFREdFMDQwOAA5ZmM3YjUxOS1hOGNjLTRmODktOTM1ZS1jOTE0OGFlMDllODE=', + '0usvMYAAAAADHKdY6tdPpSrATSu3njonxWVZSMzBFREdFMDQwOQA5ZmM3YjUxOS1hOGNjLTRmODktOTM1ZS1jOTE0OGFlMDllODE=', 'Date', - 'Tue, 01 Jun 2021 15:57:59 GMT' + 'Fri, 18 Jun 2021 16:37:14 GMT' ]); nock('https://endpoint', {"encodedQueryParams":false}) .get('/phoneNumbers/operations/purchase_sanitized') .query(true) - .reply(200, {"status":"notStarted","resourceLocation":null,"createdDateTime":"2021-06-01T15:57:52.7430147+00:00","id":"purchase_sanitized","operationType":"purchase","lastActionDateTime":"0001-01-01T00:00:00+00:00"}, [ + .reply(200, {"status":"notStarted","resourceLocation":null,"createdDateTime":"2021-06-18T16:36:56.7155171+00:00","id":"purchase_sanitized","operationType":"purchase","lastActionDateTime":"0001-01-01T00:00:00+00:00"}, [ 'Transfer-Encoding', 'chunked', 'Content-Type', @@ -253,23 +253,23 @@ nock('https://endpoint', {"encodedQueryParams":false}) 'Request-Context', 'appId=', 'MS-CV', - 'dlb2FUnzW0yOUbD1Ah/ctQ.0', + 'n81KbP5enkOgkSoWcSYK0g.0', 'api-supported-versions', '2021-03-07', 'X-Processing-Time', - '381ms', + '347ms', 'X-Cache', 'CONFIG_NOCACHE', 'X-Azure-Ref', - '0FFm2YAAAAADd77ZrL3RtSI07U6bsZP7fWVZSMzBFREdFMDQwOAA5ZmM3YjUxOS1hOGNjLTRmODktOTM1ZS1jOTE0OGFlMDllODE=', + '0vMvMYAAAAAD0y9QuyONwQZy4IyfEMzfJWVZSMzBFREdFMDQwOQA5ZmM3YjUxOS1hOGNjLTRmODktOTM1ZS1jOTE0OGFlMDllODE=', 'Date', - 'Tue, 01 Jun 2021 15:58:00 GMT' + 'Fri, 18 Jun 2021 16:37:16 GMT' ]); nock('https://endpoint', {"encodedQueryParams":false}) .get('/phoneNumbers/operations/purchase_sanitized') .query(true) - .reply(200, {"status":"notStarted","resourceLocation":null,"createdDateTime":"2021-06-01T15:57:52.7430147+00:00","id":"purchase_sanitized","operationType":"purchase","lastActionDateTime":"0001-01-01T00:00:00+00:00"}, [ + .reply(200, {"status":"notStarted","resourceLocation":null,"createdDateTime":"2021-06-18T16:36:56.7155171+00:00","id":"purchase_sanitized","operationType":"purchase","lastActionDateTime":"0001-01-01T00:00:00+00:00"}, [ 'Transfer-Encoding', 'chunked', 'Content-Type', @@ -277,23 +277,23 @@ nock('https://endpoint', {"encodedQueryParams":false}) 'Request-Context', 'appId=', 'MS-CV', - 'iuxorzOhO0mrKndGJU4Svg.0', + 'W/aNNWNGuUa9qLnnFqiQSg.0', 'api-supported-versions', '2021-03-07', 'X-Processing-Time', - '345ms', + '399ms', 'X-Cache', 'CONFIG_NOCACHE', 'X-Azure-Ref', - '0Flm2YAAAAAB8FWbDWOxNSroh+6oPUeOPWVZSMzBFREdFMDQwOAA5ZmM3YjUxOS1hOGNjLTRmODktOTM1ZS1jOTE0OGFlMDllODE=', + '0v8vMYAAAAADtXdXdnoT2QbbxRB5wUQLVWVZSMzBFREdFMDQwOQA5ZmM3YjUxOS1hOGNjLTRmODktOTM1ZS1jOTE0OGFlMDllODE=', 'Date', - 'Tue, 01 Jun 2021 15:58:01 GMT' + 'Fri, 18 Jun 2021 16:37:19 GMT' ]); nock('https://endpoint', {"encodedQueryParams":false}) .get('/phoneNumbers/operations/purchase_sanitized') .query(true) - .reply(200, {"status":"notStarted","resourceLocation":null,"createdDateTime":"2021-06-01T15:57:52.7430147+00:00","id":"purchase_sanitized","operationType":"purchase","lastActionDateTime":"0001-01-01T00:00:00+00:00"}, [ + .reply(200, {"status":"succeeded","resourceLocation":null,"createdDateTime":"2021-06-18T16:36:56.7155171+00:00","id":"purchase_sanitized","operationType":"purchase","lastActionDateTime":"0001-01-01T00:00:00+00:00"}, [ 'Transfer-Encoding', 'chunked', 'Content-Type', @@ -301,71 +301,23 @@ nock('https://endpoint', {"encodedQueryParams":false}) 'Request-Context', 'appId=', 'MS-CV', - 'E/XuZHjVg0W5pEZBmXTsAQ.0', + 'd1sltkFiNkSn/EFbRAVnvw.0', 'api-supported-versions', '2021-03-07', 'X-Processing-Time', - '398ms', + '366ms', 'X-Cache', 'CONFIG_NOCACHE', 'X-Azure-Ref', - '0GVm2YAAAAAC+NFti/1mkRpM6bhUpeC3VWVZSMzBFREdFMDQwOAA5ZmM3YjUxOS1hOGNjLTRmODktOTM1ZS1jOTE0OGFlMDllODE=', + '0wcvMYAAAAADUM9XeWSfHQKKJ74M20jcoWVZSMzBFREdFMDQwOQA5ZmM3YjUxOS1hOGNjLTRmODktOTM1ZS1jOTE0OGFlMDllODE=', 'Date', - 'Tue, 01 Jun 2021 15:58:02 GMT' -]); - -nock('https://endpoint', {"encodedQueryParams":false}) - .get('/phoneNumbers/operations/purchase_sanitized') - .query(true) - .reply(200, {"status":"notStarted","resourceLocation":null,"createdDateTime":"2021-06-01T15:57:52.7430147+00:00","id":"purchase_sanitized","operationType":"purchase","lastActionDateTime":"0001-01-01T00:00:00+00:00"}, [ - 'Transfer-Encoding', - 'chunked', - 'Content-Type', - 'application/json; charset=utf-8', - 'Request-Context', - 'appId=', - 'MS-CV', - 'PnzKsb2xwEyPjThV8LdZCA.0', - 'api-supported-versions', - '2021-03-07', - 'X-Processing-Time', - '449ms', - 'X-Cache', - 'CONFIG_NOCACHE', - 'X-Azure-Ref', - '0G1m2YAAAAAATOtp8iCIKR4wxZH46ZiWGWVZSMzBFREdFMDQwOAA5ZmM3YjUxOS1hOGNjLTRmODktOTM1ZS1jOTE0OGFlMDllODE=', - 'Date', - 'Tue, 01 Jun 2021 15:58:03 GMT' -]); - -nock('https://endpoint', {"encodedQueryParams":false}) - .get('/phoneNumbers/operations/purchase_sanitized') - .query(true) - .reply(200, {"status":"succeeded","resourceLocation":null,"createdDateTime":"2021-06-01T15:57:52.7430147+00:00","id":"purchase_sanitized","operationType":"purchase","lastActionDateTime":"0001-01-01T00:00:00+00:00"}, [ - 'Transfer-Encoding', - 'chunked', - 'Content-Type', - 'application/json; charset=utf-8', - 'Request-Context', - 'appId=', - 'MS-CV', - 'my4pCCqy6kmRWFuimc8pZg.0', - 'api-supported-versions', - '2021-03-07', - 'X-Processing-Time', - '339ms', - 'X-Cache', - 'CONFIG_NOCACHE', - 'X-Azure-Ref', - '0Hlm2YAAAAADI94AZ15dyTpIVQHKmzBNMWVZSMzBFREdFMDQwOAA5ZmM3YjUxOS1hOGNjLTRmODktOTM1ZS1jOTE0OGFlMDllODE=', - 'Date', - 'Tue, 01 Jun 2021 15:58:04 GMT' + 'Fri, 18 Jun 2021 16:37:21 GMT' ]); nock('https://endpoint', {"encodedQueryParams":false}) .get('/phoneNumbers/%2B14155550100') .query(true) - .reply(200, {"id":"14155550100","phoneNumber":"+14155550100","countryCode":"US","phoneNumberType":"tollFree","capabilities":{"calling":"none","sms":"inbound+outbound"},"assignmentType":"application","purchaseDate":"2021-06-01T15:58:19.4862785+00:00","cost":{"amount":2,"currencyCode":"USD","billingFrequency":"monthly"}}, [ + .reply(200, {"id":"14155550100","phoneNumber":"+14155550100","countryCode":"US","phoneNumberType":"tollFree","capabilities":{"calling":"none","sms":"inbound+outbound"},"assignmentType":"application","purchaseDate":"2021-06-18T16:37:20.3026265+00:00","cost":{"amount":2,"currencyCode":"USD","billingFrequency":"monthly"}}, [ 'Transfer-Encoding', 'chunked', 'Content-Type', @@ -373,17 +325,17 @@ nock('https://endpoint', {"encodedQueryParams":false}) 'Request-Context', 'appId=', 'MS-CV', - '8PlkZTw44k6h5kwGe89CjA.0', + 'atpOGnc/u0apvAmrMCAh4w.0', 'api-supported-versions', '2021-03-07', 'X-Processing-Time', - '969ms', + '1645ms', 'X-Cache', 'CONFIG_NOCACHE', 'X-Azure-Ref', - '0Ilm2YAAAAABPQ/rqgDQ0TaX9It8iO0cIWVZSMzBFREdFMDQwOAA5ZmM3YjUxOS1hOGNjLTRmODktOTM1ZS1jOTE0OGFlMDllODE=', + '0xsvMYAAAAABRhOWGBIkwSLkkzxhGiSPtWVZSMzBFREdFMDQwOQA5ZmM3YjUxOS1hOGNjLTRmODktOTM1ZS1jOTE0OGFlMDllODE=', 'Date', - 'Tue, 01 Jun 2021 15:58:05 GMT' + 'Fri, 18 Jun 2021 16:37:27 GMT' ]); nock('https://endpoint', {"encodedQueryParams":false}) @@ -395,7 +347,7 @@ nock('https://endpoint', {"encodedQueryParams":false}) 'Request-Context', 'appId=', 'MS-CV', - 'jMTssUPyf0qiNTw7Q6PcAQ.0', + 'WTZqSK4nREOgYUY8mteyOg.0', 'Operation-Location', '/phoneNumbers/operations/release_sanitized?api-version=2021-03-07', 'operation-id', @@ -405,13 +357,13 @@ nock('https://endpoint', {"encodedQueryParams":false}) 'api-supported-versions', '2021-03-07', 'X-Processing-Time', - '1115ms', + '898ms', 'X-Cache', 'CONFIG_NOCACHE', 'X-Azure-Ref', - '0I1m2YAAAAABNP40PPFHOQ7qWLU8Y6tP/WVZSMzBFREdFMDQwOAA5ZmM3YjUxOS1hOGNjLTRmODktOTM1ZS1jOTE0OGFlMDllODE=', + '0x8vMYAAAAACipTCHnOdhRb2+E9uYdl7DWVZSMzBFREdFMDQwOQA5ZmM3YjUxOS1hOGNjLTRmODktOTM1ZS1jOTE0OGFlMDllODE=', 'Date', - 'Tue, 01 Jun 2021 15:58:06 GMT', + 'Fri, 18 Jun 2021 16:37:28 GMT', 'Content-Length', '0' ]); @@ -419,31 +371,7 @@ nock('https://endpoint', {"encodedQueryParams":false}) nock('https://endpoint', {"encodedQueryParams":false}) .get('/phoneNumbers/operations/release_sanitized') .query(true) - .reply(200, {"status":"notStarted","resourceLocation":null,"createdDateTime":"2021-06-01T15:58:28.1397279+00:00","id":"release_sanitized","operationType":"releasePhoneNumber","lastActionDateTime":"0001-01-01T00:00:00+00:00"}, [ - 'Transfer-Encoding', - 'chunked', - 'Content-Type', - 'application/json; charset=utf-8', - 'Request-Context', - 'appId=', - 'MS-CV', - 'M76a9ifx4UqOjueerFG/uA.0', - 'api-supported-versions', - '2021-03-07', - 'X-Processing-Time', - '289ms', - 'X-Cache', - 'CONFIG_NOCACHE', - 'X-Azure-Ref', - '0JFm2YAAAAACQ4W1nwiP/RpxzZXtxnhsYWVZSMzBFREdFMDQwOAA5ZmM3YjUxOS1hOGNjLTRmODktOTM1ZS1jOTE0OGFlMDllODE=', - 'Date', - 'Tue, 01 Jun 2021 15:58:07 GMT' -]); - -nock('https://endpoint', {"encodedQueryParams":false}) - .get('/phoneNumbers/operations/release_sanitized') - .query(true) - .reply(200, {"status":"running","resourceLocation":null,"createdDateTime":"2021-06-01T15:58:28.1397279+00:00","id":"release_sanitized","operationType":"releasePhoneNumber","lastActionDateTime":"0001-01-01T00:00:00+00:00"}, [ + .reply(200, {"status":"notStarted","resourceLocation":null,"createdDateTime":"2021-06-18T16:37:28.2952621+00:00","id":"release_sanitized","operationType":"releasePhoneNumber","lastActionDateTime":"0001-01-01T00:00:00+00:00"}, [ 'Transfer-Encoding', 'chunked', 'Content-Type', @@ -451,23 +379,23 @@ nock('https://endpoint', {"encodedQueryParams":false}) 'Request-Context', 'appId=', 'MS-CV', - 'ES0IiedtvEmSBRe01VLEBw.0', + 'BdyZE9us80aVO9qDcDR35w.0', 'api-supported-versions', '2021-03-07', 'X-Processing-Time', - '305ms', + '366ms', 'X-Cache', 'CONFIG_NOCACHE', 'X-Azure-Ref', - '0J1m2YAAAAAArqyd8BbNtT43F0j3/sBrrWVZSMzBFREdFMDQwOAA5ZmM3YjUxOS1hOGNjLTRmODktOTM1ZS1jOTE0OGFlMDllODE=', + '0yMvMYAAAAAClDzOmiOgQTJMw3HOmgVf6WVZSMzBFREdFMDQwOQA5ZmM3YjUxOS1hOGNjLTRmODktOTM1ZS1jOTE0OGFlMDllODE=', 'Date', - 'Tue, 01 Jun 2021 15:58:08 GMT' + 'Fri, 18 Jun 2021 16:37:28 GMT' ]); nock('https://endpoint', {"encodedQueryParams":false}) .get('/phoneNumbers/operations/release_sanitized') .query(true) - .reply(200, {"status":"running","resourceLocation":null,"createdDateTime":"2021-06-01T15:58:28.1397279+00:00","id":"release_sanitized","operationType":"releasePhoneNumber","lastActionDateTime":"0001-01-01T00:00:00+00:00"}, [ + .reply(200, {"status":"running","resourceLocation":null,"createdDateTime":"2021-06-18T16:37:28.2952621+00:00","id":"release_sanitized","operationType":"releasePhoneNumber","lastActionDateTime":"0001-01-01T00:00:00+00:00"}, [ 'Transfer-Encoding', 'chunked', 'Content-Type', @@ -475,23 +403,23 @@ nock('https://endpoint', {"encodedQueryParams":false}) 'Request-Context', 'appId=', 'MS-CV', - 'GQspO9IHcUKWzJtf93uLew.0', + '4j8IUPXIJ0KdlC1TJf2q7w.0', 'api-supported-versions', '2021-03-07', 'X-Processing-Time', - '292ms', + '344ms', 'X-Cache', 'CONFIG_NOCACHE', 'X-Azure-Ref', - '0KVm2YAAAAAAmVaqYO0WiRJCGhHUO3l3vWVZSMzBFREdFMDQwOAA5ZmM3YjUxOS1hOGNjLTRmODktOTM1ZS1jOTE0OGFlMDllODE=', + '0y8vMYAAAAACRqh6EWKYcQ4nTtapCKTiaWVZSMzBFREdFMDQwOQA5ZmM3YjUxOS1hOGNjLTRmODktOTM1ZS1jOTE0OGFlMDllODE=', 'Date', - 'Tue, 01 Jun 2021 15:58:09 GMT' + 'Fri, 18 Jun 2021 16:37:30 GMT' ]); nock('https://endpoint', {"encodedQueryParams":false}) .get('/phoneNumbers/operations/release_sanitized') .query(true) - .reply(200, {"status":"running","resourceLocation":null,"createdDateTime":"2021-06-01T15:58:28.1397279+00:00","id":"release_sanitized","operationType":"releasePhoneNumber","lastActionDateTime":"0001-01-01T00:00:00+00:00"}, [ + .reply(200, {"status":"running","resourceLocation":null,"createdDateTime":"2021-06-18T16:37:28.2952621+00:00","id":"release_sanitized","operationType":"releasePhoneNumber","lastActionDateTime":"0001-01-01T00:00:00+00:00"}, [ 'Transfer-Encoding', 'chunked', 'Content-Type', @@ -499,23 +427,23 @@ nock('https://endpoint', {"encodedQueryParams":false}) 'Request-Context', 'appId=', 'MS-CV', - 'dcnP9ahoX0KVIMjFI9wojQ.0', + '05zAtU0w7ESebe/UGsONng.0', 'api-supported-versions', '2021-03-07', 'X-Processing-Time', - '286ms', + '300ms', 'X-Cache', 'CONFIG_NOCACHE', 'X-Azure-Ref', - '0K1m2YAAAAAAeNbES2xajRIglazztyrWOWVZSMzBFREdFMDQwOAA5ZmM3YjUxOS1hOGNjLTRmODktOTM1ZS1jOTE0OGFlMDllODE=', + '0zcvMYAAAAACN65igcqQ5R7kLLUePmo0AWVZSMzBFREdFMDQwOQA5ZmM3YjUxOS1hOGNjLTRmODktOTM1ZS1jOTE0OGFlMDllODE=', 'Date', - 'Tue, 01 Jun 2021 15:58:10 GMT' + 'Fri, 18 Jun 2021 16:37:33 GMT' ]); nock('https://endpoint', {"encodedQueryParams":false}) .get('/phoneNumbers/operations/release_sanitized') .query(true) - .reply(200, {"status":"succeeded","resourceLocation":null,"createdDateTime":"2021-06-01T15:58:28.1397279+00:00","id":"release_sanitized","operationType":"releasePhoneNumber","lastActionDateTime":"0001-01-01T00:00:00+00:00"}, [ + .reply(200, {"status":"succeeded","resourceLocation":null,"createdDateTime":"2021-06-18T16:37:28.2952621+00:00","id":"release_sanitized","operationType":"releasePhoneNumber","lastActionDateTime":"0001-01-01T00:00:00+00:00"}, [ 'Transfer-Encoding', 'chunked', 'Content-Type', @@ -523,15 +451,15 @@ nock('https://endpoint', {"encodedQueryParams":false}) 'Request-Context', 'appId=', 'MS-CV', - 'm7X5MakuYkmPOw4cO3mPTw.0', + 'aXMIop8aOEubCbValAmYSg.0', 'api-supported-versions', '2021-03-07', 'X-Processing-Time', - '296ms', + '457ms', 'X-Cache', 'CONFIG_NOCACHE', 'X-Azure-Ref', - '0Llm2YAAAAACTJFJumsMvRYlmUp2eX+vNWVZSMzBFREdFMDQwOAA5ZmM3YjUxOS1hOGNjLTRmODktOTM1ZS1jOTE0OGFlMDllODE=', + '00MvMYAAAAADyOD26hk30Rp3tgszNU4EPWVZSMzBFREdFMDQwOQA5ZmM3YjUxOS1hOGNjLTRmODktOTM1ZS1jOTE0OGFlMDllODE=', 'Date', - 'Tue, 01 Jun 2021 15:58:11 GMT' + 'Fri, 18 Jun 2021 16:37:35 GMT' ]); diff --git a/sdk/communication/communication-phone-numbers/recordings/node/phonenumbersclient__lro__purchase_and_release_aad/recording_can_purchase_and_release_a_phone_number.js b/sdk/communication/communication-phone-numbers/recordings/node/phonenumbersclient__lro__purchase_and_release_aad/recording_can_purchase_and_release_a_phone_number.js index 0d2657644643..ae0679bc6d36 100644 --- a/sdk/communication/communication-phone-numbers/recordings/node/phonenumbersclient__lro__purchase_and_release_aad/recording_can_purchase_and_release_a_phone_number.js +++ b/sdk/communication/communication-phone-numbers/recordings/node/phonenumbersclient__lro__purchase_and_release_aad/recording_can_purchase_and_release_a_phone_number.js @@ -1,6 +1,6 @@ let nock = require('nock'); -module.exports.hash = "5b6afe760ef7a0d2145b0dd4fd19d7ff"; +module.exports.hash = "24cf17e5a184ecc379d3cf483e2ba7f3"; module.exports.testInfo = {"uniqueName":{},"newDate":{}} @@ -10,8 +10,6 @@ nock('https://endpoint', {"encodedQueryParams":false}) .reply(200, {"tenant_discovery_endpoint":"https://login.microsoftonline.com/SomeTenantId/v2.0/.well-known/openid-configuration","api-version":"1.1","metadata":[{"preferred_network":"login.microsoftonline.com","preferred_cache":"login.windows.net","aliases":["login.microsoftonline.com","login.windows.net","login.microsoft.com","sts.windows.net"]},{"preferred_network":"login.partner.microsoftonline.cn","preferred_cache":"login.partner.microsoftonline.cn","aliases":["login.partner.microsoftonline.cn","login.chinacloudapi.cn"]},{"preferred_network":"login.microsoftonline.de","preferred_cache":"login.microsoftonline.de","aliases":["login.microsoftonline.de"]},{"preferred_network":"login.microsoftonline.us","preferred_cache":"login.microsoftonline.us","aliases":["login.microsoftonline.us","login.usgovcloudapi.net"]},{"preferred_network":"login-us.microsoftonline.com","preferred_cache":"login-us.microsoftonline.com","aliases":["login-us.microsoftonline.com"]}]}, [ 'Cache-Control', 'max-age=86400, private', - 'Content-Length', - '980', 'Content-Type', 'application/json; charset=utf-8', 'Strict-Transport-Security', @@ -27,22 +25,24 @@ nock('https://endpoint', {"encodedQueryParams":false}) 'x-ms-request-id', 'sanitized', 'x-ms-ests-server', - '2.1.11722.21 - SCUS ProdSlices', + '2.1.11829.4 - WUS2 ProdSlices', 'Set-Cookie', - 'fpc=AtoRK8gNCytBsgelMsPAEVxWyo4SAgAAALlPSNgOAAAA; expires=Thu, 01-Jul-2021 15:56:58 GMT; path=/; secure; HttpOnly; SameSite=None', + 'fpc=Akx-rKIenedChRbNwm0wEmhWyo4SAgAAAGbCXtgOAAAA; expires=Sun, 18-Jul-2021 16:36:04 GMT; path=/; secure; HttpOnly; SameSite=None', 'Set-Cookie', - 'esctx=AQABAAAAAAD--DLA3VO7QrddgJg7Wevr1VBlTEYVdYsFvnGijYbG8p-tJbfAe1Ibfuk0T4Bzdr4UfyyD1-O3MVq2_gBU6lVBH0AD5TPNGWRSjhEZ-PtowI2u9BR8ZHL6eZ-v6H6ik593RumP1vKo6nwUoQ9YM5BSXRoNStXXcPMduBM0sO7AQK2giCwhNXHgt2qm26VPh8YgAA; domain=.login.microsoftonline.com; path=/; secure; HttpOnly; SameSite=None', + 'esctx=AQABAAAAAAD--DLA3VO7QrddgJg7WevrWA4TVTVJ--yV-tAaRKSw82dQmlRZrksVnk1wIMoEy4eFe6yyeOum9TXxGrscjBsZRVVQ4JhONBgQ-RGH_8p-epdAGxxjwaiT36ngO5jm9CdDDMM22ThkyoB54Kxs7ETEdqDUFX5VrF1mFJbj8r0AznXWIyNQwDE_xsob-j7n2OggAA; domain=.login.microsoftonline.com; path=/; secure; HttpOnly; SameSite=None', 'Set-Cookie', 'x-ms-gateway-slice=estsfd; path=/; secure; samesite=none; httponly', 'Set-Cookie', 'stsservicecookie=estsfd; path=/; secure; samesite=none; httponly', 'Date', - 'Tue, 01 Jun 2021 15:56:58 GMT' + 'Fri, 18 Jun 2021 16:36:04 GMT', + 'Content-Length', + '980' ]); nock('https://endpoint', {"encodedQueryParams":false}) .get('/SomeTenantId/v2.0/.well-known/openid-configuration') - .reply(200, {"token_endpoint":"https://login.microsoftonline.com/SomeTenantId/oauth2/v2.0/token","token_endpoint_auth_methods_supported":["client_secret_post","private_key_jwt","client_secret_basic"],"jwks_uri":"https://login.microsoftonline.com/SomeTenantId/discovery/v2.0/keys","response_modes_supported":["query","fragment","form_post"],"subject_types_supported":["pairwise"],"id_token_signing_alg_values_supported":["RS256"],"response_types_supported":["code","id_token","code id_token","id_token token"],"scopes_supported":["openid","profile","email","offline_access"],"issuer":"https://login.microsoftonline.com/SomeTenantId/v2.0","request_uri_parameter_supported":false,"userinfo_endpoint":"https://graph.microsoft.com/oidc/userinfo","authorization_endpoint":"https://login.microsoftonline.com/SomeTenantId/oauth2/v2.0/authorize","device_authorization_endpoint":"https://login.microsoftonline.com/SomeTenantId/oauth2/v2.0/devicecode","http_logout_supported":false,"frontchannel_logout_supported":false,"end_session_endpoint":"https://login.microsoftonline.com/SomeTenantId/oauth2/v2.0/logout","claims_supported":["sub","iss","cloud_instance_name","cloud_instance_host_name","cloud_graph_host_name","msgraph_host","aud","exp","iat","auth_time","acr","nonce","preferred_username","name","tid","ver","at_hash","c_hash","email"],"tenant_region_scope":"WW","cloud_instance_name":"microsoftonline.com","cloud_graph_host_name":"graph.windows.net","msgraph_host":"graph.microsoft.com","rbac_url":"https://pas.windows.net"}, [ + .reply(200, {"token_endpoint":"https://login.microsoftonline.com/SomeTenantId/oauth2/v2.0/token","token_endpoint_auth_methods_supported":["client_secret_post","private_key_jwt","client_secret_basic"],"jwks_uri":"https://login.microsoftonline.com/SomeTenantId/discovery/v2.0/keys","response_modes_supported":["query","fragment","form_post"],"subject_types_supported":["pairwise"],"id_token_signing_alg_values_supported":["RS256"],"response_types_supported":["code","id_token","code id_token","id_token token"],"scopes_supported":["openid","profile","email","offline_access"],"issuer":"https://login.microsoftonline.com/SomeTenantId/v2.0","request_uri_parameter_supported":false,"userinfo_endpoint":"https://graph.microsoft.com/oidc/userinfo","authorization_endpoint":"https://login.microsoftonline.com/SomeTenantId/oauth2/v2.0/authorize","device_authorization_endpoint":"https://login.microsoftonline.com/SomeTenantId/oauth2/v2.0/devicecode","http_logout_supported":false,"frontchannel_logout_supported":false,"end_session_endpoint":"https://login.microsoftonline.com/SomeTenantId/oauth2/v2.0/logout","claims_supported":["sub","iss","cloud_instance_name","cloud_instance_host_name","cloud_graph_host_name","msgraph_host","aud","exp","iat","auth_time","acr","nonce","preferred_username","name","tid","ver","at_hash","c_hash","email"],"kerberos_endpoint":"https://login.microsoftonline.com/SomeTenantId/kerberos","tenant_region_scope":"WW","cloud_instance_name":"microsoftonline.com","cloud_graph_host_name":"graph.windows.net","msgraph_host":"graph.microsoft.com","rbac_url":"https://pas.windows.net"}, [ 'Cache-Control', 'max-age=86400, private', 'Content-Type', @@ -60,23 +60,23 @@ nock('https://endpoint', {"encodedQueryParams":false}) 'x-ms-request-id', 'sanitized', 'x-ms-ests-server', - '2.1.11722.26 - WUS2 ProdSlices', + '2.1.11829.4 - SCUS ProdSlices', 'Set-Cookie', - 'fpc=AtoRK8gNCytBsgelMsPAEVxWyo4SAgAAALlPSNgOAAAA; expires=Thu, 01-Jul-2021 15:56:58 GMT; path=/; secure; HttpOnly; SameSite=None', + 'fpc=Akx-rKIenedChRbNwm0wEmhWyo4SAgAAAGbCXtgOAAAA; expires=Sun, 18-Jul-2021 16:36:05 GMT; path=/; secure; HttpOnly; SameSite=None', 'Set-Cookie', - 'esctx=AQABAAAAAAD--DLA3VO7QrddgJg7WevrNlyd1bz9nvJhSlmuPq-dJ7oTHXfYqmO-HwT--eL3j4kIqejYvse5AtBuiy0Z46TBCmBObxzho_tJgP_NnyWImLME1b0QJoLKpUXQRR6pI4u_bi37LcaRYzXQDg7ZBkiXjLsfwUwLZwjpB2b3TDlMby_XWtX5Mh8LjeRgCNWsDFsgAA; domain=.login.microsoftonline.com; path=/; secure; HttpOnly; SameSite=None', + 'esctx=AQABAAAAAAD--DLA3VO7QrddgJg7WevrWUfqJo6CJ7-tp8l1uQZdnbH5Hg3QtJJ3YV6l5FSvSrts7dc0Mtw98QKHGHX-hHDUihskQhI24tjh274XbYTBtohP00omgTX1ZCid6oA_zJjD0B8nq-HcHlOiO6tKY4uRG25JG0O9S7-TxPEjctoxvthAaT2RJXZhVFrPxlzo2z4gAA; domain=.login.microsoftonline.com; path=/; secure; HttpOnly; SameSite=None', 'Set-Cookie', 'x-ms-gateway-slice=estsfd; path=/; secure; samesite=none; httponly', 'Set-Cookie', 'stsservicecookie=estsfd; path=/; secure; samesite=none; httponly', 'Date', - 'Tue, 01 Jun 2021 15:56:58 GMT', + 'Fri, 18 Jun 2021 16:36:04 GMT', 'Content-Length', - '1651' + '1753' ]); nock('https://endpoint', {"encodedQueryParams":false}) - .post('/SomeTenantId/oauth2/v2.0/token', "client_id=SomeClientId&scope=https%3A%2F%2Fcommunication.azure.com%2F%2F.default%20openid%20profile%20offline_access&grant_type=client_credentials&client-request-id=sanitized&client_secret=SomeClientSecret") + .post('/SomeTenantId/oauth2/v2.0/token', "client_id=SomeClientId&scope=https%3A%2F%2Fsanitized%2F&grant_type=client_credentials&x-client-SKU=msal.js.node&x-client-VER=1.1.0&x-client-OS=win32&x-client-CPU=x64&x-ms-lib-capability=retry-after, h429&x-client-current-telemetry=2|771,0|,&x-client-last-telemetry=2|0|||0,0&client-request-id=sanitized&client_secret=SomeClientSecret") .reply(200, {"token_type":"Bearer","expires_in":86399,"ext_expires_in":86399,"access_token":"access_token"}, [ 'Cache-Control', 'no-store, no-cache', @@ -95,17 +95,17 @@ nock('https://endpoint', {"encodedQueryParams":false}) 'x-ms-request-id', 'sanitized', 'x-ms-ests-server', - '2.1.11722.26 - SCUS ProdSlices', + '2.1.11829.4 - NCUS ProdSlices', 'x-ms-clitelem', '1,0,0,,', 'Set-Cookie', - 'fpc=AtoRK8gNCytBsgelMsPAEVxWyo4SAwAAALlPSNgOAAAA; expires=Thu, 01-Jul-2021 15:56:58 GMT; path=/; secure; HttpOnly; SameSite=None', + 'fpc=Akx-rKIenedChRbNwm0wEmhWyo4SAwAAAGbCXtgOAAAA; expires=Sun, 18-Jul-2021 16:36:05 GMT; path=/; secure; HttpOnly; SameSite=None', 'Set-Cookie', 'x-ms-gateway-slice=estsfd; path=/; secure; samesite=none; httponly', 'Set-Cookie', 'stsservicecookie=estsfd; path=/; secure; samesite=none; httponly', 'Date', - 'Tue, 01 Jun 2021 15:56:58 GMT', + 'Fri, 18 Jun 2021 16:36:05 GMT', 'Content-Length', '1327' ]); @@ -121,7 +121,7 @@ nock('https://endpoint', {"encodedQueryParams":false}) 'Request-Context', 'appId=', 'MS-CV', - 'TJzSmfJoskiLffWsT42DYA.0', + 'MCw5jaxsc0OKKIdsD/rFKA.0', 'Operation-Location', '/phoneNumbers/operations/search_sanitized?api-version=2021-03-07', 'operation-id', @@ -131,13 +131,13 @@ nock('https://endpoint', {"encodedQueryParams":false}) 'api-supported-versions', '2021-03-07', 'X-Processing-Time', - '2668ms', + '2804ms', 'X-Cache', 'CONFIG_NOCACHE', 'X-Azure-Ref', - '0yli2YAAAAACMvo7fBkEkQrzPoJwr36dhWVZSMzBFREdFMDMxMgA5ZmM3YjUxOS1hOGNjLTRmODktOTM1ZS1jOTE0OGFlMDllODE=', + '0dcvMYAAAAAAf9JYYxgNPRKbq+nb9n31RWVZSMzBFREdFMDQwOQA5ZmM3YjUxOS1hOGNjLTRmODktOTM1ZS1jOTE0OGFlMDllODE=', 'Date', - 'Tue, 01 Jun 2021 15:57:01 GMT', + 'Fri, 18 Jun 2021 16:36:08 GMT', 'Content-Length', '0' ]); @@ -145,7 +145,7 @@ nock('https://endpoint', {"encodedQueryParams":false}) nock('https://endpoint', {"encodedQueryParams":false}) .get('/phoneNumbers/operations/search_sanitized') .query(true) - .reply(200, {"status":"notStarted","resourceLocation":"/availablePhoneNumbers/searchResults/sanitized?api-version=2021-03-07","createdDateTime":"2021-06-01T15:57:00.9955753+00:00","id":"search_sanitized","operationType":"search","lastActionDateTime":"0001-01-01T00:00:00+00:00"}, [ + .reply(200, {"status":"notStarted","resourceLocation":"/availablePhoneNumbers/searchResults/sanitized?api-version=2021-03-07","createdDateTime":"2021-06-18T16:36:07.8086229+00:00","id":"search_sanitized","operationType":"search","lastActionDateTime":"0001-01-01T00:00:00+00:00"}, [ 'Transfer-Encoding', 'chunked', 'Content-Type', @@ -157,23 +157,23 @@ nock('https://endpoint', {"encodedQueryParams":false}) 'Request-Context', 'appId=', 'MS-CV', - 'Ap1V/tUgm0WHmZU0Ln54Zg.0', + 'CigSHtcSJ06zyHQ11V6dbQ.0', 'api-supported-versions', '2021-03-07', 'X-Processing-Time', - '397ms', + '569ms', 'X-Cache', 'CONFIG_NOCACHE', 'X-Azure-Ref', - '0zVi2YAAAAAC17jxolXNFTZRNH/2pBI6hWVZSMzBFREdFMDMxMgA5ZmM3YjUxOS1hOGNjLTRmODktOTM1ZS1jOTE0OGFlMDllODE=', + '0eMvMYAAAAABIMnGIbChPTYPe2kzfIyR9WVZSMzBFREdFMDQwOQA5ZmM3YjUxOS1hOGNjLTRmODktOTM1ZS1jOTE0OGFlMDllODE=', 'Date', - 'Tue, 01 Jun 2021 15:57:01 GMT' + 'Fri, 18 Jun 2021 16:36:08 GMT' ]); nock('https://endpoint', {"encodedQueryParams":false}) .get('/phoneNumbers/operations/search_sanitized') .query(true) - .reply(200, {"status":"succeeded","resourceLocation":"/availablePhoneNumbers/searchResults/sanitized?api-version=2021-03-07","createdDateTime":"2021-06-01T15:57:00.9955753+00:00","id":"search_sanitized","operationType":"search","lastActionDateTime":"0001-01-01T00:00:00+00:00"}, [ + .reply(200, {"status":"succeeded","resourceLocation":"/availablePhoneNumbers/searchResults/sanitized?api-version=2021-03-07","createdDateTime":"2021-06-18T16:36:07.8086229+00:00","id":"search_sanitized","operationType":"search","lastActionDateTime":"0001-01-01T00:00:00+00:00"}, [ 'Transfer-Encoding', 'chunked', 'Content-Type', @@ -185,23 +185,23 @@ nock('https://endpoint', {"encodedQueryParams":false}) 'Request-Context', 'appId=', 'MS-CV', - 'm6qcQ+jP3UaJHH73jR1swA.0', + '2iKmajM+XUaK0rHac9hVyg.0', 'api-supported-versions', '2021-03-07', 'X-Processing-Time', - '451ms', + '357ms', 'X-Cache', 'CONFIG_NOCACHE', 'X-Azure-Ref', - '0z1i2YAAAAADX8Vo73J4/RqfyOlsSaJTNWVZSMzBFREdFMDMxMgA5ZmM3YjUxOS1hOGNjLTRmODktOTM1ZS1jOTE0OGFlMDllODE=', + '0esvMYAAAAAA86FWamU90QqkDHK5oQzyGWVZSMzBFREdFMDQwOQA5ZmM3YjUxOS1hOGNjLTRmODktOTM1ZS1jOTE0OGFlMDllODE=', 'Date', - 'Tue, 01 Jun 2021 15:57:02 GMT' + 'Fri, 18 Jun 2021 16:36:11 GMT' ]); nock('https://endpoint', {"encodedQueryParams":false}) .get('/availablePhoneNumbers/searchResults/sanitized') .query(true) - .reply(200, {"searchId":"sanitized","phoneNumbers":["+14155550100"],"phoneNumberType":"tollFree","assignmentType":"application","capabilities":{"calling":"none","sms":"inbound+outbound"},"cost":{"amount":2,"currencyCode":"USD","billingFrequency":"monthly"},"searchExpiresBy":"2021-06-01T16:13:02.5226656+00:00"}, [ + .reply(200, {"searchId":"sanitized","phoneNumbers":["+14155550100"],"phoneNumberType":"tollFree","assignmentType":"application","capabilities":{"calling":"none","sms":"inbound+outbound"},"cost":{"amount":2,"currencyCode":"USD","billingFrequency":"monthly"},"searchExpiresBy":"2021-06-18T16:52:09.6164096+00:00"}, [ 'Transfer-Encoding', 'chunked', 'Content-Type', @@ -209,17 +209,17 @@ nock('https://endpoint', {"encodedQueryParams":false}) 'Request-Context', 'appId=', 'MS-CV', - 'LpLZN9h4mkitnAtt+SOv5w.0', + 'ApF14udBC0yfrcC1FqW77Q.0', 'api-supported-versions', '2021-03-07', 'X-Processing-Time', - '684ms', + '924ms', 'X-Cache', 'CONFIG_NOCACHE', 'X-Azure-Ref', - '00li2YAAAAADOQlvM9hJfR7FiuFyjvPZ+WVZSMzBFREdFMDMxMgA5ZmM3YjUxOS1hOGNjLTRmODktOTM1ZS1jOTE0OGFlMDllODE=', + '0fcvMYAAAAACP0u5xWy5GT46rTuMAMSikWVZSMzBFREdFMDQwOQA5ZmM3YjUxOS1hOGNjLTRmODktOTM1ZS1jOTE0OGFlMDllODE=', 'Date', - 'Tue, 01 Jun 2021 15:57:03 GMT' + 'Fri, 18 Jun 2021 16:36:14 GMT' ]); nock('https://endpoint', {"encodedQueryParams":false}) @@ -231,7 +231,7 @@ nock('https://endpoint', {"encodedQueryParams":false}) 'Request-Context', 'appId=', 'MS-CV', - 'rbI7uWm8AUOb9fQuW7dERQ.0', + 'Ijj8faEWRUWp3xbyTZ+mhQ.0', 'Operation-Location', '/phoneNumbers/operations/purchase_sanitized?api-version=2021-03-07', 'operation-id', @@ -241,13 +241,13 @@ nock('https://endpoint', {"encodedQueryParams":false}) 'api-supported-versions', '2021-03-07', 'X-Processing-Time', - '1880ms', + '1862ms', 'X-Cache', 'CONFIG_NOCACHE', 'X-Azure-Ref', - '01Vi2YAAAAAD6cllVxVeNQZLojX6beXDcWVZSMzBFREdFMDMxMgA5ZmM3YjUxOS1hOGNjLTRmODktOTM1ZS1jOTE0OGFlMDllODE=', + '0gMvMYAAAAAB24pCALPnWTJxkK7MTldEZWVZSMzBFREdFMDQwOQA5ZmM3YjUxOS1hOGNjLTRmODktOTM1ZS1jOTE0OGFlMDllODE=', 'Date', - 'Tue, 01 Jun 2021 15:57:04 GMT', + 'Fri, 18 Jun 2021 16:36:18 GMT', 'Content-Length', '0' ]); @@ -255,7 +255,7 @@ nock('https://endpoint', {"encodedQueryParams":false}) nock('https://endpoint', {"encodedQueryParams":false}) .get('/phoneNumbers/operations/purchase_sanitized') .query(true) - .reply(200, {"status":"running","resourceLocation":null,"createdDateTime":"2021-06-01T15:57:00.9955753+00:00","id":"purchase_sanitized","operationType":"purchase","lastActionDateTime":"0001-01-01T00:00:00+00:00"}, [ + .reply(200, {"status":"running","resourceLocation":null,"createdDateTime":"2021-06-18T16:36:07.8086229+00:00","id":"purchase_sanitized","operationType":"purchase","lastActionDateTime":"0001-01-01T00:00:00+00:00"}, [ 'Transfer-Encoding', 'chunked', 'Content-Type', @@ -263,23 +263,23 @@ nock('https://endpoint', {"encodedQueryParams":false}) 'Request-Context', 'appId=', 'MS-CV', - 'rzuqG/7s8k2TYWky2nd0Tw.0', + '5OuM8uL8Xk64AQMf33n5pQ.0', 'api-supported-versions', '2021-03-07', 'X-Processing-Time', - '386ms', + '379ms', 'X-Cache', 'CONFIG_NOCACHE', 'X-Azure-Ref', - '01li2YAAAAACvQBD/qnwJR6AIF6thrPSlWVZSMzBFREdFMDMxMgA5ZmM3YjUxOS1hOGNjLTRmODktOTM1ZS1jOTE0OGFlMDllODE=', + '0gsvMYAAAAAB3vCaS82geSI0b3IFTK411WVZSMzBFREdFMDQwOQA5ZmM3YjUxOS1hOGNjLTRmODktOTM1ZS1jOTE0OGFlMDllODE=', 'Date', - 'Tue, 01 Jun 2021 15:57:05 GMT' + 'Fri, 18 Jun 2021 16:36:18 GMT' ]); nock('https://endpoint', {"encodedQueryParams":false}) .get('/phoneNumbers/operations/purchase_sanitized') .query(true) - .reply(200, {"status":"running","resourceLocation":null,"createdDateTime":"2021-06-01T15:57:00.9955753+00:00","id":"purchase_sanitized","operationType":"purchase","lastActionDateTime":"0001-01-01T00:00:00+00:00"}, [ + .reply(200, {"status":"notStarted","resourceLocation":null,"createdDateTime":"2021-06-18T16:36:07.8086229+00:00","id":"purchase_sanitized","operationType":"purchase","lastActionDateTime":"0001-01-01T00:00:00+00:00"}, [ 'Transfer-Encoding', 'chunked', 'Content-Type', @@ -287,23 +287,23 @@ nock('https://endpoint', {"encodedQueryParams":false}) 'Request-Context', 'appId=', 'MS-CV', - 'x/anJLWK0ki6l0rsM9ytBg.0', + '0qJeHyB9CU2OsQbAhf9FKg.0', 'api-supported-versions', '2021-03-07', 'X-Processing-Time', - '448ms', + '590ms', 'X-Cache', 'CONFIG_NOCACHE', 'X-Azure-Ref', - '02Vi2YAAAAADZ9yLpCHcETrS8eNagxB4uWVZSMzBFREdFMDMxMgA5ZmM3YjUxOS1hOGNjLTRmODktOTM1ZS1jOTE0OGFlMDllODE=', + '0hMvMYAAAAACJbAgwjlDXR59x/3KHHbGTWVZSMzBFREdFMDQwOQA5ZmM3YjUxOS1hOGNjLTRmODktOTM1ZS1jOTE0OGFlMDllODE=', 'Date', - 'Tue, 01 Jun 2021 15:57:06 GMT' + 'Fri, 18 Jun 2021 16:36:21 GMT' ]); nock('https://endpoint', {"encodedQueryParams":false}) .get('/phoneNumbers/operations/purchase_sanitized') .query(true) - .reply(200, {"status":"notStarted","resourceLocation":null,"createdDateTime":"2021-06-01T15:57:00.9955753+00:00","id":"purchase_sanitized","operationType":"purchase","lastActionDateTime":"0001-01-01T00:00:00+00:00"}, [ + .reply(200, {"status":"notStarted","resourceLocation":null,"createdDateTime":"2021-06-18T16:36:07.8086229+00:00","id":"purchase_sanitized","operationType":"purchase","lastActionDateTime":"0001-01-01T00:00:00+00:00"}, [ 'Transfer-Encoding', 'chunked', 'Content-Type', @@ -311,23 +311,23 @@ nock('https://endpoint', {"encodedQueryParams":false}) 'Request-Context', 'appId=', 'MS-CV', - 'JoVIil8EKUud4lUgJCcZxg.0', + 'xX1s5HSj8kixxn15HyHtTw.0', 'api-supported-versions', '2021-03-07', 'X-Processing-Time', - '373ms', + '432ms', 'X-Cache', 'CONFIG_NOCACHE', 'X-Azure-Ref', - '021i2YAAAAADA+fwEC2SEQ5PhyGymivLrWVZSMzBFREdFMDMxMgA5ZmM3YjUxOS1hOGNjLTRmODktOTM1ZS1jOTE0OGFlMDllODE=', + '0h8vMYAAAAAD8AUDDixgdQLaGr2hrH+PpWVZSMzBFREdFMDQwOQA5ZmM3YjUxOS1hOGNjLTRmODktOTM1ZS1jOTE0OGFlMDllODE=', 'Date', - 'Tue, 01 Jun 2021 15:57:07 GMT' + 'Fri, 18 Jun 2021 16:36:23 GMT' ]); nock('https://endpoint', {"encodedQueryParams":false}) .get('/phoneNumbers/operations/purchase_sanitized') .query(true) - .reply(200, {"status":"notStarted","resourceLocation":null,"createdDateTime":"2021-06-01T15:57:00.9955753+00:00","id":"purchase_sanitized","operationType":"purchase","lastActionDateTime":"0001-01-01T00:00:00+00:00"}, [ + .reply(200, {"status":"notStarted","resourceLocation":null,"createdDateTime":"2021-06-18T16:36:07.8086229+00:00","id":"purchase_sanitized","operationType":"purchase","lastActionDateTime":"0001-01-01T00:00:00+00:00"}, [ 'Transfer-Encoding', 'chunked', 'Content-Type', @@ -335,23 +335,23 @@ nock('https://endpoint', {"encodedQueryParams":false}) 'Request-Context', 'appId=', 'MS-CV', - 'gj78CoR4OU6h6I8ZgI1ZmA.0', + 'eY9D/SqXJUm4JWXTVepS8Q.0', 'api-supported-versions', '2021-03-07', 'X-Processing-Time', - '603ms', + '379ms', 'X-Cache', 'CONFIG_NOCACHE', 'X-Azure-Ref', - '03li2YAAAAABTcvdrjFCzTaAi3LSuLOMdWVZSMzBFREdFMDMxMgA5ZmM3YjUxOS1hOGNjLTRmODktOTM1ZS1jOTE0OGFlMDllODE=', + '0icvMYAAAAABxjdOXjcJZQYQKS4Shn+8JWVZSMzBFREdFMDQwOQA5ZmM3YjUxOS1hOGNjLTRmODktOTM1ZS1jOTE0OGFlMDllODE=', 'Date', - 'Tue, 01 Jun 2021 15:57:08 GMT' + 'Fri, 18 Jun 2021 16:36:26 GMT' ]); nock('https://endpoint', {"encodedQueryParams":false}) .get('/phoneNumbers/operations/purchase_sanitized') .query(true) - .reply(200, {"status":"notStarted","resourceLocation":null,"createdDateTime":"2021-06-01T15:57:00.9955753+00:00","id":"purchase_sanitized","operationType":"purchase","lastActionDateTime":"0001-01-01T00:00:00+00:00"}, [ + .reply(200, {"status":"notStarted","resourceLocation":null,"createdDateTime":"2021-06-18T16:36:07.8086229+00:00","id":"purchase_sanitized","operationType":"purchase","lastActionDateTime":"0001-01-01T00:00:00+00:00"}, [ 'Transfer-Encoding', 'chunked', 'Content-Type', @@ -359,23 +359,23 @@ nock('https://endpoint', {"encodedQueryParams":false}) 'Request-Context', 'appId=', 'MS-CV', - 'uW7f1tXH1U+dOzsTPUpIhg.0', + '+HLcTPqDY06YvTkZfL+uQg.0', 'api-supported-versions', '2021-03-07', 'X-Processing-Time', - '387ms', + '388ms', 'X-Cache', 'CONFIG_NOCACHE', 'X-Azure-Ref', - '04Fi2YAAAAACp1khBTDucTYBa9ZM5KkrIWVZSMzBFREdFMDMxMgA5ZmM3YjUxOS1hOGNjLTRmODktOTM1ZS1jOTE0OGFlMDllODE=', + '0jMvMYAAAAAAQV17OMRsgR6xULrUZhpO5WVZSMzBFREdFMDQwOQA5ZmM3YjUxOS1hOGNjLTRmODktOTM1ZS1jOTE0OGFlMDllODE=', 'Date', - 'Tue, 01 Jun 2021 15:57:09 GMT' + 'Fri, 18 Jun 2021 16:36:28 GMT' ]); nock('https://endpoint', {"encodedQueryParams":false}) .get('/phoneNumbers/operations/purchase_sanitized') .query(true) - .reply(200, {"status":"notStarted","resourceLocation":null,"createdDateTime":"2021-06-01T15:57:00.9955753+00:00","id":"purchase_sanitized","operationType":"purchase","lastActionDateTime":"0001-01-01T00:00:00+00:00"}, [ + .reply(200, {"status":"notStarted","resourceLocation":null,"createdDateTime":"2021-06-18T16:36:07.8086229+00:00","id":"purchase_sanitized","operationType":"purchase","lastActionDateTime":"0001-01-01T00:00:00+00:00"}, [ 'Transfer-Encoding', 'chunked', 'Content-Type', @@ -383,23 +383,23 @@ nock('https://endpoint', {"encodedQueryParams":false}) 'Request-Context', 'appId=', 'MS-CV', - 'Ek1TA1dTW0m1lVGKQWTLRg.0', + 'asqsJTp/Ck66+WDunA9Wlw.0', 'api-supported-versions', '2021-03-07', 'X-Processing-Time', - '672ms', + '359ms', 'X-Cache', 'CONFIG_NOCACHE', 'X-Azure-Ref', - '041i2YAAAAAADmUXeU5JrQbtv+ofTyujQWVZSMzBFREdFMDMxMgA5ZmM3YjUxOS1hOGNjLTRmODktOTM1ZS1jOTE0OGFlMDllODE=', + '0jsvMYAAAAADjiRBQweHjTb9hGK5JynmwWVZSMzBFREdFMDQwOQA5ZmM3YjUxOS1hOGNjLTRmODktOTM1ZS1jOTE0OGFlMDllODE=', 'Date', - 'Tue, 01 Jun 2021 15:57:10 GMT' + 'Fri, 18 Jun 2021 16:36:30 GMT' ]); nock('https://endpoint', {"encodedQueryParams":false}) .get('/phoneNumbers/operations/purchase_sanitized') .query(true) - .reply(200, {"status":"notStarted","resourceLocation":null,"createdDateTime":"2021-06-01T15:57:00.9955753+00:00","id":"purchase_sanitized","operationType":"purchase","lastActionDateTime":"0001-01-01T00:00:00+00:00"}, [ + .reply(200, {"status":"notStarted","resourceLocation":null,"createdDateTime":"2021-06-18T16:36:07.8086229+00:00","id":"purchase_sanitized","operationType":"purchase","lastActionDateTime":"0001-01-01T00:00:00+00:00"}, [ 'Transfer-Encoding', 'chunked', 'Content-Type', @@ -407,23 +407,23 @@ nock('https://endpoint', {"encodedQueryParams":false}) 'Request-Context', 'appId=', 'MS-CV', - '33L4rG8Jd0SzYMMkR/juMQ.0', + 'iqSaEKWk/0aTV1f+80JQ5g.0', 'api-supported-versions', '2021-03-07', 'X-Processing-Time', - '729ms', + '577ms', 'X-Cache', 'CONFIG_NOCACHE', 'X-Azure-Ref', - '05li2YAAAAAAEhsH50DQIQLRdZLiZaeigWVZSMzBFREdFMDMxMgA5ZmM3YjUxOS1hOGNjLTRmODktOTM1ZS1jOTE0OGFlMDllODE=', + '0kcvMYAAAAADWIoF679ZKTK9BiKrK5mumWVZSMzBFREdFMDQwOQA5ZmM3YjUxOS1hOGNjLTRmODktOTM1ZS1jOTE0OGFlMDllODE=', 'Date', - 'Tue, 01 Jun 2021 15:57:11 GMT' + 'Fri, 18 Jun 2021 16:36:33 GMT' ]); nock('https://endpoint', {"encodedQueryParams":false}) .get('/phoneNumbers/operations/purchase_sanitized') .query(true) - .reply(200, {"status":"succeeded","resourceLocation":null,"createdDateTime":"2021-06-01T15:57:00.9955753+00:00","id":"purchase_sanitized","operationType":"purchase","lastActionDateTime":"0001-01-01T00:00:00+00:00"}, [ + .reply(200, {"status":"succeeded","resourceLocation":null,"createdDateTime":"2021-06-18T16:36:07.8086229+00:00","id":"purchase_sanitized","operationType":"purchase","lastActionDateTime":"0001-01-01T00:00:00+00:00"}, [ 'Transfer-Encoding', 'chunked', 'Content-Type', @@ -431,23 +431,23 @@ nock('https://endpoint', {"encodedQueryParams":false}) 'Request-Context', 'appId=', 'MS-CV', - '0ihd+d1SRUyZkgDeYXcssQ.0', + '8V/chfNreUCOKu5ASrFGdw.0', 'api-supported-versions', '2021-03-07', 'X-Processing-Time', - '692ms', + '373ms', 'X-Cache', 'CONFIG_NOCACHE', 'X-Azure-Ref', - '06Fi2YAAAAABJme+tg2heRrPFJ/svPTxSWVZSMzBFREdFMDMxMgA5ZmM3YjUxOS1hOGNjLTRmODktOTM1ZS1jOTE0OGFlMDllODE=', + '0k8vMYAAAAAADVch+A5aOSrao/RG66cK2WVZSMzBFREdFMDQwOQA5ZmM3YjUxOS1hOGNjLTRmODktOTM1ZS1jOTE0OGFlMDllODE=', 'Date', - 'Tue, 01 Jun 2021 15:57:12 GMT' + 'Fri, 18 Jun 2021 16:36:35 GMT' ]); nock('https://endpoint', {"encodedQueryParams":false}) .get('/phoneNumbers/%2B14155550100') .query(true) - .reply(200, {"id":"14155550100","phoneNumber":"+14155550100","countryCode":"US","phoneNumberType":"tollFree","capabilities":{"calling":"none","sms":"inbound+outbound"},"assignmentType":"application","purchaseDate":"2021-06-01T15:57:27.6669826+00:00","cost":{"amount":2,"currencyCode":"USD","billingFrequency":"monthly"}}, [ + .reply(200, {"id":"14155550100","phoneNumber":"+14155550100","countryCode":"US","phoneNumberType":"tollFree","capabilities":{"calling":"none","sms":"inbound+outbound"},"assignmentType":"application","purchaseDate":"2021-06-18T16:36:33.156404+00:00","cost":{"amount":2,"currencyCode":"USD","billingFrequency":"monthly"}}, [ 'Transfer-Encoding', 'chunked', 'Content-Type', @@ -455,17 +455,17 @@ nock('https://endpoint', {"encodedQueryParams":false}) 'Request-Context', 'appId=', 'MS-CV', - 'PmXjXtFZCEusd71L2afsZA.0', + 'JZ4SOp+HVE6fmkxRQ+FdWw.0', 'api-supported-versions', '2021-03-07', 'X-Processing-Time', - '1105ms', + '1384ms', 'X-Cache', 'CONFIG_NOCACHE', 'X-Azure-Ref', - '07Vi2YAAAAAAPcZHK/POaR6dyKg5eMKLtWVZSMzBFREdFMDMxMgA5ZmM3YjUxOS1hOGNjLTRmODktOTM1ZS1jOTE0OGFlMDllODE=', + '0mMvMYAAAAAAGkDyRTGvaRLdWYYDdRkKBWVZSMzBFREdFMDQwOQA5ZmM3YjUxOS1hOGNjLTRmODktOTM1ZS1jOTE0OGFlMDllODE=', 'Date', - 'Tue, 01 Jun 2021 15:57:13 GMT' + 'Fri, 18 Jun 2021 16:36:41 GMT' ]); nock('https://endpoint', {"encodedQueryParams":false}) @@ -477,7 +477,7 @@ nock('https://endpoint', {"encodedQueryParams":false}) 'Request-Context', 'appId=', 'MS-CV', - 'Nsgyp/U1F0id/x0STSwsGA.0', + 'xOeRAOQsL0KQKUSRWqRzKA.0', 'Operation-Location', '/phoneNumbers/operations/release_sanitized?api-version=2021-03-07', 'operation-id', @@ -487,13 +487,13 @@ nock('https://endpoint', {"encodedQueryParams":false}) 'api-supported-versions', '2021-03-07', 'X-Processing-Time', - '1507ms', + '1052ms', 'X-Cache', 'CONFIG_NOCACHE', 'X-Azure-Ref', - '07li2YAAAAACHvS8YEezYQoz5lydnwvmEWVZSMzBFREdFMDMxMgA5ZmM3YjUxOS1hOGNjLTRmODktOTM1ZS1jOTE0OGFlMDllODE=', + '0mcvMYAAAAAC1AH9pxpUJQ45YpADcvLLuWVZSMzBFREdFMDQwOQA5ZmM3YjUxOS1hOGNjLTRmODktOTM1ZS1jOTE0OGFlMDllODE=', 'Date', - 'Tue, 01 Jun 2021 15:57:14 GMT', + 'Fri, 18 Jun 2021 16:36:42 GMT', 'Content-Length', '0' ]); @@ -501,7 +501,31 @@ nock('https://endpoint', {"encodedQueryParams":false}) nock('https://endpoint', {"encodedQueryParams":false}) .get('/phoneNumbers/operations/release_sanitized') .query(true) - .reply(200, {"status":"running","resourceLocation":null,"createdDateTime":"2021-06-01T15:57:35.7085025+00:00","id":"release_sanitized","operationType":"releasePhoneNumber","lastActionDateTime":"0001-01-01T00:00:00+00:00"}, [ + .reply(200, {"status":"running","resourceLocation":null,"createdDateTime":"2021-06-18T16:36:42.286569+00:00","id":"release_sanitized","operationType":"releasePhoneNumber","lastActionDateTime":"0001-01-01T00:00:00+00:00"}, [ + 'Transfer-Encoding', + 'chunked', + 'Content-Type', + 'application/json; charset=utf-8', + 'Request-Context', + 'appId=', + 'MS-CV', + 'V+bSK7fs9UKnasknwxKm/w.0', + 'api-supported-versions', + '2021-03-07', + 'X-Processing-Time', + '294ms', + 'X-Cache', + 'CONFIG_NOCACHE', + 'X-Azure-Ref', + '0msvMYAAAAAAWZl8/zoSoRobIkdZ5DNbVWVZSMzBFREdFMDQwOQA5ZmM3YjUxOS1hOGNjLTRmODktOTM1ZS1jOTE0OGFlMDllODE=', + 'Date', + 'Fri, 18 Jun 2021 16:36:42 GMT' +]); + +nock('https://endpoint', {"encodedQueryParams":false}) + .get('/phoneNumbers/operations/release_sanitized') + .query(true) + .reply(200, {"status":"running","resourceLocation":null,"createdDateTime":"2021-06-18T16:36:42.286569+00:00","id":"release_sanitized","operationType":"releasePhoneNumber","lastActionDateTime":"0001-01-01T00:00:00+00:00"}, [ 'Transfer-Encoding', 'chunked', 'Content-Type', @@ -509,23 +533,23 @@ nock('https://endpoint', {"encodedQueryParams":false}) 'Request-Context', 'appId=', 'MS-CV', - 'GM4vHzUqtkSExZif9ZQpKg.0', + 'OFXGT/BLFESM9xOZweSqug.0', 'api-supported-versions', '2021-03-07', 'X-Processing-Time', - '370ms', + '310ms', 'X-Cache', 'CONFIG_NOCACHE', 'X-Azure-Ref', - '08Fi2YAAAAADUZNsYXiO/Rbvm3elvPs3iWVZSMzBFREdFMDMxMgA5ZmM3YjUxOS1hOGNjLTRmODktOTM1ZS1jOTE0OGFlMDllODE=', + '0ncvMYAAAAAD4ClT0E8MaQosaL4JpA738WVZSMzBFREdFMDQwOQA5ZmM3YjUxOS1hOGNjLTRmODktOTM1ZS1jOTE0OGFlMDllODE=', 'Date', - 'Tue, 01 Jun 2021 15:57:15 GMT' + 'Fri, 18 Jun 2021 16:36:45 GMT' ]); nock('https://endpoint', {"encodedQueryParams":false}) .get('/phoneNumbers/operations/release_sanitized') .query(true) - .reply(200, {"status":"running","resourceLocation":null,"createdDateTime":"2021-06-01T15:57:35.7085025+00:00","id":"release_sanitized","operationType":"releasePhoneNumber","lastActionDateTime":"0001-01-01T00:00:00+00:00"}, [ + .reply(200, {"status":"running","resourceLocation":null,"createdDateTime":"2021-06-18T16:36:42.286569+00:00","id":"release_sanitized","operationType":"releasePhoneNumber","lastActionDateTime":"0001-01-01T00:00:00+00:00"}, [ 'Transfer-Encoding', 'chunked', 'Content-Type', @@ -533,23 +557,23 @@ nock('https://endpoint', {"encodedQueryParams":false}) 'Request-Context', 'appId=', 'MS-CV', - 'kQL1fHVVLkG9Zog/i4y99w.0', + 'n/OyEPhqWkSJSv9+9jSMpQ.0', 'api-supported-versions', '2021-03-07', 'X-Processing-Time', - '3865ms', + '491ms', 'X-Cache', 'CONFIG_NOCACHE', 'X-Azure-Ref', - '08li2YAAAAAAvIDRX/nqNTrmiJd9JgoP3WVZSMzBFREdFMDMxMgA5ZmM3YjUxOS1hOGNjLTRmODktOTM1ZS1jOTE0OGFlMDllODE=', + '0n8vMYAAAAAAy88rNBfegSpb+NyFYKkg6WVZSMzBFREdFMDQwOQA5ZmM3YjUxOS1hOGNjLTRmODktOTM1ZS1jOTE0OGFlMDllODE=', 'Date', - 'Tue, 01 Jun 2021 15:57:16 GMT' + 'Fri, 18 Jun 2021 16:36:47 GMT' ]); nock('https://endpoint', {"encodedQueryParams":false}) .get('/phoneNumbers/operations/release_sanitized') .query(true) - .reply(200, {"status":"succeeded","resourceLocation":null,"createdDateTime":"2021-06-01T15:57:35.7085025+00:00","id":"release_sanitized","operationType":"releasePhoneNumber","lastActionDateTime":"0001-01-01T00:00:00+00:00"}, [ + .reply(200, {"status":"succeeded","resourceLocation":null,"createdDateTime":"2021-06-18T16:36:42.286569+00:00","id":"release_sanitized","operationType":"releasePhoneNumber","lastActionDateTime":"0001-01-01T00:00:00+00:00"}, [ 'Transfer-Encoding', 'chunked', 'Content-Type', @@ -557,15 +581,15 @@ nock('https://endpoint', {"encodedQueryParams":false}) 'Request-Context', 'appId=', 'MS-CV', - 'lkWcKyZykU+VEIN8GsBauQ.0', + '4K25XunquEaJ9P6alt4kqg.0', 'api-supported-versions', '2021-03-07', 'X-Processing-Time', - '2260ms', + '296ms', 'X-Cache', 'CONFIG_NOCACHE', 'X-Azure-Ref', - '0+Fi2YAAAAAD4z1WA+05dSba3hrwduFjgWVZSMzBFREdFMDMxMgA5ZmM3YjUxOS1hOGNjLTRmODktOTM1ZS1jOTE0OGFlMDllODE=', + '0osvMYAAAAABnZayl7tXrT7iETkScwtYRWVZSMzBFREdFMDQwOQA5ZmM3YjUxOS1hOGNjLTRmODktOTM1ZS1jOTE0OGFlMDllODE=', 'Date', - 'Tue, 01 Jun 2021 15:57:17 GMT' + 'Fri, 18 Jun 2021 16:36:50 GMT' ]); diff --git a/sdk/communication/communication-phone-numbers/recordings/node/phonenumbersclient__lro__search/recording_can_search_for_1_available_phone_number_by_default.js b/sdk/communication/communication-phone-numbers/recordings/node/phonenumbersclient__lro__search/recording_can_search_for_1_available_phone_number_by_default.js index bd5609b31861..099e1d01364b 100644 --- a/sdk/communication/communication-phone-numbers/recordings/node/phonenumbersclient__lro__search/recording_can_search_for_1_available_phone_number_by_default.js +++ b/sdk/communication/communication-phone-numbers/recordings/node/phonenumbersclient__lro__search/recording_can_search_for_1_available_phone_number_by_default.js @@ -1,6 +1,6 @@ let nock = require('nock'); -module.exports.hash = "f76a45252c41cb8825081d8f3c86bb35"; +module.exports.hash = "54fc9ee98e5f24aed78d2ab61a21b45d"; module.exports.testInfo = {"uniqueName":{},"newDate":{}} @@ -15,7 +15,7 @@ nock('https://endpoint', {"encodedQueryParams":false}) 'Request-Context', 'appId=', 'MS-CV', - 'l78/KijTj0CkZbD6DuLGYA.0', + 'WXU0FowMukeSmU0otcpQpA.0', 'Operation-Location', '/phoneNumbers/operations/search_sanitized?api-version=2021-03-07', 'operation-id', @@ -25,13 +25,13 @@ nock('https://endpoint', {"encodedQueryParams":false}) 'api-supported-versions', '2021-03-07', 'X-Processing-Time', - '2332ms', + '2387ms', 'X-Cache', 'CONFIG_NOCACHE', 'X-Azure-Ref', - '0QVm2YAAAAADmp+5cdpBiTIzXEtlL1VYNWVZSMzBFREdFMDMyMQA5ZmM3YjUxOS1hOGNjLTRmODktOTM1ZS1jOTE0OGFlMDllODE=', + '04svMYAAAAAA5FFbmfg9KTb5JC40Efg1iWVZSMzBFREdFMDMyMAA5ZmM3YjUxOS1hOGNjLTRmODktOTM1ZS1jOTE0OGFlMDllODE=', 'Date', - 'Tue, 01 Jun 2021 15:59:00 GMT', + 'Fri, 18 Jun 2021 16:37:56 GMT', 'Content-Length', '0' ]); @@ -39,7 +39,7 @@ nock('https://endpoint', {"encodedQueryParams":false}) nock('https://endpoint', {"encodedQueryParams":false}) .get('/phoneNumbers/operations/search_sanitized') .query(true) - .reply(200, {"status":"notStarted","resourceLocation":"/availablePhoneNumbers/searchResults/sanitized?api-version=2021-03-07","createdDateTime":"2021-06-01T15:58:59.6143975+00:00","id":"search_sanitized","operationType":"search","lastActionDateTime":"0001-01-01T00:00:00+00:00"}, [ + .reply(200, {"status":"notStarted","resourceLocation":"/availablePhoneNumbers/searchResults/sanitized?api-version=2021-03-07","createdDateTime":"2021-06-18T16:37:56.5914269+00:00","id":"search_sanitized","operationType":"search","lastActionDateTime":"0001-01-01T00:00:00+00:00"}, [ 'Transfer-Encoding', 'chunked', 'Content-Type', @@ -51,23 +51,23 @@ nock('https://endpoint', {"encodedQueryParams":false}) 'Request-Context', 'appId=', 'MS-CV', - 'CbnAj5r0+kezHxfOjoblAw.0', + 'RAbU/uvvv0OpAOf6kA922w.0', 'api-supported-versions', '2021-03-07', 'X-Processing-Time', - '377ms', + '615ms', 'X-Cache', 'CONFIG_NOCACHE', 'X-Azure-Ref', - '0RFm2YAAAAAAOlby80ufYTpzIWKnVv6xFWVZSMzBFREdFMDMyMQA5ZmM3YjUxOS1hOGNjLTRmODktOTM1ZS1jOTE0OGFlMDllODE=', + '05cvMYAAAAACr56b98+JERopbN28ZjuVlWVZSMzBFREdFMDMyMAA5ZmM3YjUxOS1hOGNjLTRmODktOTM1ZS1jOTE0OGFlMDllODE=', 'Date', - 'Tue, 01 Jun 2021 15:59:00 GMT' + 'Fri, 18 Jun 2021 16:37:57 GMT' ]); nock('https://endpoint', {"encodedQueryParams":false}) .get('/phoneNumbers/operations/search_sanitized') .query(true) - .reply(200, {"status":"succeeded","resourceLocation":"/availablePhoneNumbers/searchResults/sanitized?api-version=2021-03-07","createdDateTime":"2021-06-01T15:58:59.6143975+00:00","id":"search_sanitized","operationType":"search","lastActionDateTime":"0001-01-01T00:00:00+00:00"}, [ + .reply(200, {"status":"succeeded","resourceLocation":"/availablePhoneNumbers/searchResults/sanitized?api-version=2021-03-07","createdDateTime":"2021-06-18T16:37:56.5914269+00:00","id":"search_sanitized","operationType":"search","lastActionDateTime":"0001-01-01T00:00:00+00:00"}, [ 'Transfer-Encoding', 'chunked', 'Content-Type', @@ -79,23 +79,23 @@ nock('https://endpoint', {"encodedQueryParams":false}) 'Request-Context', 'appId=', 'MS-CV', - 'Iyd4lTRBbU+vfnoEVDy/xA.0', + 'hMOpri8/y02V1tUBaGflvg.0', 'api-supported-versions', '2021-03-07', 'X-Processing-Time', - '390ms', + '363ms', 'X-Cache', 'CONFIG_NOCACHE', 'X-Azure-Ref', - '0Rlm2YAAAAACLI0G8AWOwRasVEVTfrW43WVZSMzBFREdFMDMyMQA5ZmM3YjUxOS1hOGNjLTRmODktOTM1ZS1jOTE0OGFlMDllODE=', + '058vMYAAAAAAII6T1XHFNQry51VLFnrftWVZSMzBFREdFMDMyMAA5ZmM3YjUxOS1hOGNjLTRmODktOTM1ZS1jOTE0OGFlMDllODE=', 'Date', - 'Tue, 01 Jun 2021 15:59:02 GMT' + 'Fri, 18 Jun 2021 16:37:59 GMT' ]); nock('https://endpoint', {"encodedQueryParams":false}) .get('/availablePhoneNumbers/searchResults/sanitized') .query(true) - .reply(200, {"searchId":"sanitized","phoneNumbers":["+14155550100"],"phoneNumberType":"tollFree","assignmentType":"application","capabilities":{"calling":"outbound","sms":"none"},"cost":{"amount":2,"currencyCode":"USD","billingFrequency":"monthly"},"searchExpiresBy":"2021-06-01T16:15:01.7257558+00:00"}, [ + .reply(200, {"searchId":"sanitized","phoneNumbers":["+14155550100"],"phoneNumberType":"tollFree","assignmentType":"application","capabilities":{"calling":"outbound","sms":"none"},"cost":{"amount":2,"currencyCode":"USD","billingFrequency":"monthly"},"searchExpiresBy":"2021-06-18T16:53:58.7981179+00:00"}, [ 'Transfer-Encoding', 'chunked', 'Content-Type', @@ -103,15 +103,15 @@ nock('https://endpoint', {"encodedQueryParams":false}) 'Request-Context', 'appId=', 'MS-CV', - '8ofmiOuEEk+vNIVqtfmMiw.0', + 'kHkM6d/VTEefTQAIEzY5yw.0', 'api-supported-versions', '2021-03-07', 'X-Processing-Time', - '837ms', + '802ms', 'X-Cache', 'CONFIG_NOCACHE', 'X-Azure-Ref', - '0SFm2YAAAAADmiyy9U6OeT6qEAz4oMaU+WVZSMzBFREdFMDMyMQA5ZmM3YjUxOS1hOGNjLTRmODktOTM1ZS1jOTE0OGFlMDllODE=', + '06svMYAAAAAA62ZdvDyhITKTYBWXedyjeWVZSMzBFREdFMDMyMAA5ZmM3YjUxOS1hOGNjLTRmODktOTM1ZS1jOTE0OGFlMDllODE=', 'Date', - 'Tue, 01 Jun 2021 15:59:05 GMT' + 'Fri, 18 Jun 2021 16:38:02 GMT' ]); diff --git a/sdk/communication/communication-phone-numbers/recordings/node/phonenumbersclient__lro__search/recording_throws_on_invalid_search_request.js b/sdk/communication/communication-phone-numbers/recordings/node/phonenumbersclient__lro__search/recording_throws_on_invalid_search_request.js index 0ce55b53c590..736a15e1a076 100644 --- a/sdk/communication/communication-phone-numbers/recordings/node/phonenumbersclient__lro__search/recording_throws_on_invalid_search_request.js +++ b/sdk/communication/communication-phone-numbers/recordings/node/phonenumbersclient__lro__search/recording_throws_on_invalid_search_request.js @@ -1,6 +1,6 @@ let nock = require('nock'); -module.exports.hash = "762f6deafb4b1dcf3df7b9c9b10d521b"; +module.exports.hash = "c2062ea5f2048a6c30795f545cbe7db3"; module.exports.testInfo = {"uniqueName":{},"newDate":{}} @@ -15,15 +15,15 @@ nock('https://endpoint', {"encodedQueryParams":false}) 'Request-Context', 'appId=', 'MS-CV', - 'Lxe8VXgtdECePdz4k2+OsQ.0', + '6h62eGZKf0y3cvasS5Kvag.0', 'api-supported-versions', '2021-03-07', 'X-Processing-Time', - '1033ms', + '1940ms', 'X-Cache', 'CONFIG_NOCACHE', 'X-Azure-Ref', - '0S1m2YAAAAABQDwGYqogrSo+iSEKdCtx1WVZSMzBFREdFMDQyMQA5ZmM3YjUxOS1hOGNjLTRmODktOTM1ZS1jOTE0OGFlMDllODE=', + '07cvMYAAAAACRMlGwBt7bTLnOHBy0AY/LWVZSMzBFREdFMDQyMQA5ZmM3YjUxOS1hOGNjLTRmODktOTM1ZS1jOTE0OGFlMDllODE=', 'Date', - 'Tue, 01 Jun 2021 15:59:08 GMT' + 'Fri, 18 Jun 2021 16:38:07 GMT' ]); diff --git a/sdk/communication/communication-phone-numbers/recordings/node/phonenumbersclient__lro__search_aad/recording_can_search_for_1_available_phone_number_by_default.js b/sdk/communication/communication-phone-numbers/recordings/node/phonenumbersclient__lro__search_aad/recording_can_search_for_1_available_phone_number_by_default.js index c1fa41efacc4..915c9042170b 100644 --- a/sdk/communication/communication-phone-numbers/recordings/node/phonenumbersclient__lro__search_aad/recording_can_search_for_1_available_phone_number_by_default.js +++ b/sdk/communication/communication-phone-numbers/recordings/node/phonenumbersclient__lro__search_aad/recording_can_search_for_1_available_phone_number_by_default.js @@ -1,6 +1,6 @@ let nock = require('nock'); -module.exports.hash = "f76a45252c41cb8825081d8f3c86bb35"; +module.exports.hash = "54fc9ee98e5f24aed78d2ab61a21b45d"; module.exports.testInfo = {"uniqueName":{},"newDate":{}} @@ -25,24 +25,24 @@ nock('https://endpoint', {"encodedQueryParams":false}) 'x-ms-request-id', 'sanitized', 'x-ms-ests-server', - '2.1.11722.21 - WUS2 ProdSlices', + '2.1.11829.4 - NCUS ProdSlices', 'Set-Cookie', - 'fpc=AtoRK8gNCytBsgelMsPAEVxWyo4SAwAAALlPSNgOAAAA; expires=Thu, 01-Jul-2021 15:58:42 GMT; path=/; secure; HttpOnly; SameSite=None', + 'fpc=Akx-rKIenedChRbNwm0wEmhWyo4SAwAAAGbCXtgOAAAA; expires=Sun, 18-Jul-2021 16:37:40 GMT; path=/; secure; HttpOnly; SameSite=None', 'Set-Cookie', - 'esctx=AQABAAAAAAD--DLA3VO7QrddgJg7WevraGbc4njBZuToWvIbAoRUYKFnPaSvOJSgFwtQJTsqWCa3GSuHDgmzlKe42ndiijgGrXhy1H_DB9UawCIdrb8ZGdR6JBbO0uF637_4RataXiLVQW6qAJEiAvqAHXcTv0qb9O61cNgcU30aT_IO9XPdJInjvxXqN8PyjTYfNk3eFlwgAA; domain=.login.microsoftonline.com; path=/; secure; HttpOnly; SameSite=None', + 'esctx=AQABAAAAAAD--DLA3VO7QrddgJg7WevrgdMc9h8KJ75v5G-v0HfiAzyi9ITWARQgp4lxHUQkfumoATegsBqc-K4292CZAKSivejnGE7g3nl6416xV1tXqPsY_A0-jvw80cscWA4HNMI73QJNnFtXtfjz9jBuma8n4r6wAYZXDpXluY4TBm8VnALNoJlrU3LGv7yCUEpV0-kgAA; domain=.login.microsoftonline.com; path=/; secure; HttpOnly; SameSite=None', 'Set-Cookie', 'x-ms-gateway-slice=estsfd; path=/; secure; samesite=none; httponly', 'Set-Cookie', 'stsservicecookie=estsfd; path=/; secure; samesite=none; httponly', 'Date', - 'Tue, 01 Jun 2021 15:58:42 GMT', + 'Fri, 18 Jun 2021 16:37:40 GMT', 'Content-Length', '980' ]); nock('https://endpoint', {"encodedQueryParams":false}) .get('/SomeTenantId/v2.0/.well-known/openid-configuration') - .reply(200, {"token_endpoint":"https://login.microsoftonline.com/SomeTenantId/oauth2/v2.0/token","token_endpoint_auth_methods_supported":["client_secret_post","private_key_jwt","client_secret_basic"],"jwks_uri":"https://login.microsoftonline.com/SomeTenantId/discovery/v2.0/keys","response_modes_supported":["query","fragment","form_post"],"subject_types_supported":["pairwise"],"id_token_signing_alg_values_supported":["RS256"],"response_types_supported":["code","id_token","code id_token","id_token token"],"scopes_supported":["openid","profile","email","offline_access"],"issuer":"https://login.microsoftonline.com/SomeTenantId/v2.0","request_uri_parameter_supported":false,"userinfo_endpoint":"https://graph.microsoft.com/oidc/userinfo","authorization_endpoint":"https://login.microsoftonline.com/SomeTenantId/oauth2/v2.0/authorize","device_authorization_endpoint":"https://login.microsoftonline.com/SomeTenantId/oauth2/v2.0/devicecode","http_logout_supported":false,"frontchannel_logout_supported":false,"end_session_endpoint":"https://login.microsoftonline.com/SomeTenantId/oauth2/v2.0/logout","claims_supported":["sub","iss","cloud_instance_name","cloud_instance_host_name","cloud_graph_host_name","msgraph_host","aud","exp","iat","auth_time","acr","nonce","preferred_username","name","tid","ver","at_hash","c_hash","email"],"tenant_region_scope":"WW","cloud_instance_name":"microsoftonline.com","cloud_graph_host_name":"graph.windows.net","msgraph_host":"graph.microsoft.com","rbac_url":"https://pas.windows.net"}, [ + .reply(200, {"token_endpoint":"https://login.microsoftonline.com/SomeTenantId/oauth2/v2.0/token","token_endpoint_auth_methods_supported":["client_secret_post","private_key_jwt","client_secret_basic"],"jwks_uri":"https://login.microsoftonline.com/SomeTenantId/discovery/v2.0/keys","response_modes_supported":["query","fragment","form_post"],"subject_types_supported":["pairwise"],"id_token_signing_alg_values_supported":["RS256"],"response_types_supported":["code","id_token","code id_token","id_token token"],"scopes_supported":["openid","profile","email","offline_access"],"issuer":"https://login.microsoftonline.com/SomeTenantId/v2.0","request_uri_parameter_supported":false,"userinfo_endpoint":"https://graph.microsoft.com/oidc/userinfo","authorization_endpoint":"https://login.microsoftonline.com/SomeTenantId/oauth2/v2.0/authorize","device_authorization_endpoint":"https://login.microsoftonline.com/SomeTenantId/oauth2/v2.0/devicecode","http_logout_supported":false,"frontchannel_logout_supported":false,"end_session_endpoint":"https://login.microsoftonline.com/SomeTenantId/oauth2/v2.0/logout","claims_supported":["sub","iss","cloud_instance_name","cloud_instance_host_name","cloud_graph_host_name","msgraph_host","aud","exp","iat","auth_time","acr","nonce","preferred_username","name","tid","ver","at_hash","c_hash","email"],"kerberos_endpoint":"https://login.microsoftonline.com/SomeTenantId/kerberos","tenant_region_scope":"WW","cloud_instance_name":"microsoftonline.com","cloud_graph_host_name":"graph.windows.net","msgraph_host":"graph.microsoft.com","rbac_url":"https://pas.windows.net"}, [ 'Cache-Control', 'max-age=86400, private', 'Content-Type', @@ -60,28 +60,30 @@ nock('https://endpoint', {"encodedQueryParams":false}) 'x-ms-request-id', 'sanitized', 'x-ms-ests-server', - '2.1.11722.26 - EUS ProdSlices', + '2.1.11829.4 - SCUS ProdSlices', 'Set-Cookie', - 'fpc=AtoRK8gNCytBsgelMsPAEVxWyo4SAwAAALlPSNgOAAAA; expires=Thu, 01-Jul-2021 15:58:42 GMT; path=/; secure; HttpOnly; SameSite=None', + 'fpc=Akx-rKIenedChRbNwm0wEmhWyo4SAwAAAGbCXtgOAAAA; expires=Sun, 18-Jul-2021 16:37:40 GMT; path=/; secure; HttpOnly; SameSite=None', 'Set-Cookie', - 'esctx=AQABAAAAAAD--DLA3VO7QrddgJg7WevrFf34oSaittwxALtxlBB0Kg1uS81_g-xnrXWMl6if7ekeryVnOSkcOZyRXtxcmmqMRwSEPfeaPQyjLeqM2DqMF-XKTNoV4320rIiQKNK-pMBuRiTY7eT8b_4TAbtxtsJiNesQtENStrywlH3pO2C_avlcgwDWduLjfI0v9a0XixogAA; domain=.login.microsoftonline.com; path=/; secure; HttpOnly; SameSite=None', + 'esctx=AQABAAAAAAD--DLA3VO7QrddgJg7WevrW22qCpT7bKjAbHGZJFmKj9DnCWNKxHdeUYm_3KsgbvfYAsil4TNZiydAav9xli9RtLswD_5Cdxy8PBuYe8U7A7p42jrFeI7tqkD7i8Z9F0GWLD7Hvsm4AIC7b-U0Wzb8sr6Pf2oEF8w9cr3bGavWNN5dZN5W1AX39qk-aJqU3eMgAA; domain=.login.microsoftonline.com; path=/; secure; HttpOnly; SameSite=None', 'Set-Cookie', 'x-ms-gateway-slice=estsfd; path=/; secure; samesite=none; httponly', 'Set-Cookie', 'stsservicecookie=estsfd; path=/; secure; samesite=none; httponly', 'Date', - 'Tue, 01 Jun 2021 15:58:42 GMT', + 'Fri, 18 Jun 2021 16:37:40 GMT', 'Content-Length', - '1651' + '1753' ]); nock('https://endpoint', {"encodedQueryParams":false}) - .post('/SomeTenantId/oauth2/v2.0/token', "client_id=SomeClientId&scope=https%3A%2F%2Fcommunication.azure.com%2F%2F.default%20openid%20profile%20offline_access&grant_type=client_credentials&client-request-id=sanitized&client_secret=SomeClientSecret") + .post('/SomeTenantId/oauth2/v2.0/token', "client_id=SomeClientId&scope=https%3A%2F%2Fsanitized%2F&grant_type=client_credentials&x-client-SKU=msal.js.node&x-client-VER=1.1.0&x-client-OS=win32&x-client-CPU=x64&x-ms-lib-capability=retry-after, h429&x-client-current-telemetry=2|771,0|,&x-client-last-telemetry=2|0|||0,0&client-request-id=sanitized&client_secret=SomeClientSecret") .reply(200, {"token_type":"Bearer","expires_in":86399,"ext_expires_in":86399,"access_token":"access_token"}, [ 'Cache-Control', 'no-store, no-cache', 'Pragma', 'no-cache', + 'Content-Length', + '1327', 'Content-Type', 'application/json; charset=utf-8', 'Expires', @@ -95,19 +97,17 @@ nock('https://endpoint', {"encodedQueryParams":false}) 'x-ms-request-id', 'sanitized', 'x-ms-ests-server', - '2.1.11722.26 - SCUS ProdSlices', + '2.1.11829.4 - WUS2 ProdSlices', 'x-ms-clitelem', '1,0,0,,', 'Set-Cookie', - 'fpc=AtoRK8gNCytBsgelMsPAEVxWyo4SBAAAALlPSNgOAAAA; expires=Thu, 01-Jul-2021 15:58:42 GMT; path=/; secure; HttpOnly; SameSite=None', + 'fpc=Akx-rKIenedChRbNwm0wEmhWyo4SBAAAAGbCXtgOAAAA; expires=Sun, 18-Jul-2021 16:37:41 GMT; path=/; secure; HttpOnly; SameSite=None', 'Set-Cookie', 'x-ms-gateway-slice=estsfd; path=/; secure; samesite=none; httponly', 'Set-Cookie', 'stsservicecookie=estsfd; path=/; secure; samesite=none; httponly', 'Date', - 'Tue, 01 Jun 2021 15:58:42 GMT', - 'Content-Length', - '1327' + 'Fri, 18 Jun 2021 16:37:41 GMT' ]); nock('https://endpoint', {"encodedQueryParams":false}) @@ -121,7 +121,7 @@ nock('https://endpoint', {"encodedQueryParams":false}) 'Request-Context', 'appId=', 'MS-CV', - 'ZcSC+9iKykCWPf+xE59pRA.0', + 'I/lcNC72+0WVuF3L0JY0KA.0', 'Operation-Location', '/phoneNumbers/operations/search_sanitized?api-version=2021-03-07', 'operation-id', @@ -131,13 +131,13 @@ nock('https://endpoint', {"encodedQueryParams":false}) 'api-supported-versions', '2021-03-07', 'X-Processing-Time', - '2267ms', + '1669ms', 'X-Cache', 'CONFIG_NOCACHE', 'X-Azure-Ref', - '0M1m2YAAAAABNO7P4GXZPQLmjSuDz9AutWVZSMzBFREdFMDMxNgA5ZmM3YjUxOS1hOGNjLTRmODktOTM1ZS1jOTE0OGFlMDllODE=', + '01cvMYAAAAADpWh/Xzy5XRpGEG7edZf+LWVZSMzBFREdFMDMxMQA5ZmM3YjUxOS1hOGNjLTRmODktOTM1ZS1jOTE0OGFlMDllODE=', 'Date', - 'Tue, 01 Jun 2021 15:58:44 GMT', + 'Fri, 18 Jun 2021 16:37:43 GMT', 'Content-Length', '0' ]); @@ -145,7 +145,7 @@ nock('https://endpoint', {"encodedQueryParams":false}) nock('https://endpoint', {"encodedQueryParams":false}) .get('/phoneNumbers/operations/search_sanitized') .query(true) - .reply(200, {"status":"notStarted","resourceLocation":"/availablePhoneNumbers/searchResults/sanitized?api-version=2021-03-07","createdDateTime":"2021-06-01T15:58:45.1779544+00:00","id":"search_sanitized","operationType":"search","lastActionDateTime":"0001-01-01T00:00:00+00:00"}, [ + .reply(200, {"status":"notStarted","resourceLocation":"/availablePhoneNumbers/searchResults/sanitized?api-version=2021-03-07","createdDateTime":"2021-06-18T16:37:42.865191+00:00","id":"search_sanitized","operationType":"search","lastActionDateTime":"0001-01-01T00:00:00+00:00"}, [ 'Transfer-Encoding', 'chunked', 'Content-Type', @@ -157,23 +157,23 @@ nock('https://endpoint', {"encodedQueryParams":false}) 'Request-Context', 'appId=', 'MS-CV', - 'oW9HISo5MUy628W+WlMdgw.0', + 'y/qGANY9oUSFi+fB/Gy6Eg.0', 'api-supported-versions', '2021-03-07', 'X-Processing-Time', - '509ms', + '350ms', 'X-Cache', 'CONFIG_NOCACHE', 'X-Azure-Ref', - '0NVm2YAAAAAA7vFCTwrczTJ715o9f5HOdWVZSMzBFREdFMDMxNgA5ZmM3YjUxOS1hOGNjLTRmODktOTM1ZS1jOTE0OGFlMDllODE=', + '018vMYAAAAAAOpbIZaMegSJF4vNZCWs55WVZSMzBFREdFMDMxMQA5ZmM3YjUxOS1hOGNjLTRmODktOTM1ZS1jOTE0OGFlMDllODE=', 'Date', - 'Tue, 01 Jun 2021 15:58:45 GMT' + 'Fri, 18 Jun 2021 16:37:43 GMT' ]); nock('https://endpoint', {"encodedQueryParams":false}) .get('/phoneNumbers/operations/search_sanitized') .query(true) - .reply(200, {"status":"succeeded","resourceLocation":"/availablePhoneNumbers/searchResults/sanitized?api-version=2021-03-07","createdDateTime":"2021-06-01T15:58:45.1779544+00:00","id":"search_sanitized","operationType":"search","lastActionDateTime":"0001-01-01T00:00:00+00:00"}, [ + .reply(200, {"status":"succeeded","resourceLocation":"/availablePhoneNumbers/searchResults/sanitized?api-version=2021-03-07","createdDateTime":"2021-06-18T16:37:42.865191+00:00","id":"search_sanitized","operationType":"search","lastActionDateTime":"0001-01-01T00:00:00+00:00"}, [ 'Transfer-Encoding', 'chunked', 'Content-Type', @@ -185,23 +185,23 @@ nock('https://endpoint', {"encodedQueryParams":false}) 'Request-Context', 'appId=', 'MS-CV', - 'nfK8OJfRP0GmBUryuZfNHw.0', + '8Q8/LwRwXkC1CN+EG45FJA.0', 'api-supported-versions', '2021-03-07', 'X-Processing-Time', - '385ms', + '377ms', 'X-Cache', 'CONFIG_NOCACHE', 'X-Azure-Ref', - '0OFm2YAAAAABRw2fvHLVDQZ7bIFoprpglWVZSMzBFREdFMDMxNgA5ZmM3YjUxOS1hOGNjLTRmODktOTM1ZS1jOTE0OGFlMDllODE=', + '02cvMYAAAAAAceSSo4hfGSbkqg3TS5kSyWVZSMzBFREdFMDMxMQA5ZmM3YjUxOS1hOGNjLTRmODktOTM1ZS1jOTE0OGFlMDllODE=', 'Date', - 'Tue, 01 Jun 2021 15:58:47 GMT' + 'Fri, 18 Jun 2021 16:37:46 GMT' ]); nock('https://endpoint', {"encodedQueryParams":false}) .get('/availablePhoneNumbers/searchResults/sanitized') .query(true) - .reply(200, {"searchId":"sanitized","phoneNumbers":["+14155550100"],"phoneNumberType":"tollFree","assignmentType":"application","capabilities":{"calling":"outbound","sms":"none"},"cost":{"amount":2,"currencyCode":"USD","billingFrequency":"monthly"},"searchExpiresBy":"2021-06-01T16:14:48.1312872+00:00"}, [ + .reply(200, {"searchId":"sanitized","phoneNumbers":["+14155550100"],"phoneNumberType":"tollFree","assignmentType":"application","capabilities":{"calling":"outbound","sms":"none"},"cost":{"amount":2,"currencyCode":"USD","billingFrequency":"monthly"},"searchExpiresBy":"2021-06-18T16:53:44.3704025+00:00"}, [ 'Transfer-Encoding', 'chunked', 'Content-Type', @@ -209,15 +209,15 @@ nock('https://endpoint', {"encodedQueryParams":false}) 'Request-Context', 'appId=', 'MS-CV', - 'VfbbdjPAnU+Gw0tSanUk1g.0', + 'Krt+hD2Sz069yZ5HDUQujg.0', 'api-supported-versions', '2021-03-07', 'X-Processing-Time', - '739ms', + '744ms', 'X-Cache', 'CONFIG_NOCACHE', 'X-Azure-Ref', - '0Olm2YAAAAABhmeTsSwkvTYiaJ9j/dqCvWVZSMzBFREdFMDMxNgA5ZmM3YjUxOS1hOGNjLTRmODktOTM1ZS1jOTE0OGFlMDllODE=', + '03MvMYAAAAABFqfoSHW+WTpKiwB5vRTiOWVZSMzBFREdFMDMxMQA5ZmM3YjUxOS1hOGNjLTRmODktOTM1ZS1jOTE0OGFlMDllODE=', 'Date', - 'Tue, 01 Jun 2021 15:58:50 GMT' + 'Fri, 18 Jun 2021 16:37:48 GMT' ]); diff --git a/sdk/communication/communication-phone-numbers/recordings/node/phonenumbersclient__lro__search_aad/recording_throws_on_invalid_search_request.js b/sdk/communication/communication-phone-numbers/recordings/node/phonenumbersclient__lro__search_aad/recording_throws_on_invalid_search_request.js index 6e99c63416dd..3c1b0f147f5a 100644 --- a/sdk/communication/communication-phone-numbers/recordings/node/phonenumbersclient__lro__search_aad/recording_throws_on_invalid_search_request.js +++ b/sdk/communication/communication-phone-numbers/recordings/node/phonenumbersclient__lro__search_aad/recording_throws_on_invalid_search_request.js @@ -1,6 +1,6 @@ let nock = require('nock'); -module.exports.hash = "762f6deafb4b1dcf3df7b9c9b10d521b"; +module.exports.hash = "c2062ea5f2048a6c30795f545cbe7db3"; module.exports.testInfo = {"uniqueName":{},"newDate":{}} @@ -25,24 +25,24 @@ nock('https://endpoint', {"encodedQueryParams":false}) 'x-ms-request-id', 'sanitized', 'x-ms-ests-server', - '2.1.11722.21 - WUS2 ProdSlices', + '2.1.11829.4 - SCUS ProdSlices', 'Set-Cookie', - 'fpc=AtoRK8gNCytBsgelMsPAEVxWyo4SBAAAALlPSNgOAAAA; expires=Thu, 01-Jul-2021 15:58:53 GMT; path=/; secure; HttpOnly; SameSite=None', + 'fpc=Akx-rKIenedChRbNwm0wEmhWyo4SBAAAAGbCXtgOAAAA; expires=Sun, 18-Jul-2021 16:37:51 GMT; path=/; secure; HttpOnly; SameSite=None', 'Set-Cookie', - 'esctx=AQABAAAAAAD--DLA3VO7QrddgJg7WevrJs4k13CFamT3NSGl_mC8dv0ZpbmUZ21WPabwEMt3N5nfiumJAieFKB6LXo-dRuxpGLR5iUldzSzJST24ymwsnZm4PNsWQPq-pW2LF-_q5HLJqisZZfCJjKezTvkzcAkFMbOCBAsKOvWfYkhYTSzed4PRvhgKAR2yJwlzvwnl4lwgAA; domain=.login.microsoftonline.com; path=/; secure; HttpOnly; SameSite=None', + 'esctx=AQABAAAAAAD--DLA3VO7QrddgJg7WevrxNJRycxIR1EL2MFv93WAsUIdcWznq33KPLLkZEpk6meUe_8mtj4OGh1u2njff47_PKVFdiJlswUAPoZNUk-lhxOZ4SVRIzm4IInaoUr11XFYKFtmG2Gia1HugFPcfVGu3N201BpSPH5UAYCY8BbLGPvK-XxnGZ6qqAUcjCZ6sSQgAA; domain=.login.microsoftonline.com; path=/; secure; HttpOnly; SameSite=None', 'Set-Cookie', 'x-ms-gateway-slice=estsfd; path=/; secure; samesite=none; httponly', 'Set-Cookie', 'stsservicecookie=estsfd; path=/; secure; samesite=none; httponly', 'Date', - 'Tue, 01 Jun 2021 15:58:53 GMT', + 'Fri, 18 Jun 2021 16:37:50 GMT', 'Content-Length', '980' ]); nock('https://endpoint', {"encodedQueryParams":false}) .get('/SomeTenantId/v2.0/.well-known/openid-configuration') - .reply(200, {"token_endpoint":"https://login.microsoftonline.com/SomeTenantId/oauth2/v2.0/token","token_endpoint_auth_methods_supported":["client_secret_post","private_key_jwt","client_secret_basic"],"jwks_uri":"https://login.microsoftonline.com/SomeTenantId/discovery/v2.0/keys","response_modes_supported":["query","fragment","form_post"],"subject_types_supported":["pairwise"],"id_token_signing_alg_values_supported":["RS256"],"response_types_supported":["code","id_token","code id_token","id_token token"],"scopes_supported":["openid","profile","email","offline_access"],"issuer":"https://login.microsoftonline.com/SomeTenantId/v2.0","request_uri_parameter_supported":false,"userinfo_endpoint":"https://graph.microsoft.com/oidc/userinfo","authorization_endpoint":"https://login.microsoftonline.com/SomeTenantId/oauth2/v2.0/authorize","device_authorization_endpoint":"https://login.microsoftonline.com/SomeTenantId/oauth2/v2.0/devicecode","http_logout_supported":false,"frontchannel_logout_supported":false,"end_session_endpoint":"https://login.microsoftonline.com/SomeTenantId/oauth2/v2.0/logout","claims_supported":["sub","iss","cloud_instance_name","cloud_instance_host_name","cloud_graph_host_name","msgraph_host","aud","exp","iat","auth_time","acr","nonce","preferred_username","name","tid","ver","at_hash","c_hash","email"],"tenant_region_scope":"WW","cloud_instance_name":"microsoftonline.com","cloud_graph_host_name":"graph.windows.net","msgraph_host":"graph.microsoft.com","rbac_url":"https://pas.windows.net"}, [ + .reply(200, {"token_endpoint":"https://login.microsoftonline.com/SomeTenantId/oauth2/v2.0/token","token_endpoint_auth_methods_supported":["client_secret_post","private_key_jwt","client_secret_basic"],"jwks_uri":"https://login.microsoftonline.com/SomeTenantId/discovery/v2.0/keys","response_modes_supported":["query","fragment","form_post"],"subject_types_supported":["pairwise"],"id_token_signing_alg_values_supported":["RS256"],"response_types_supported":["code","id_token","code id_token","id_token token"],"scopes_supported":["openid","profile","email","offline_access"],"issuer":"https://login.microsoftonline.com/SomeTenantId/v2.0","request_uri_parameter_supported":false,"userinfo_endpoint":"https://graph.microsoft.com/oidc/userinfo","authorization_endpoint":"https://login.microsoftonline.com/SomeTenantId/oauth2/v2.0/authorize","device_authorization_endpoint":"https://login.microsoftonline.com/SomeTenantId/oauth2/v2.0/devicecode","http_logout_supported":false,"frontchannel_logout_supported":false,"end_session_endpoint":"https://login.microsoftonline.com/SomeTenantId/oauth2/v2.0/logout","claims_supported":["sub","iss","cloud_instance_name","cloud_instance_host_name","cloud_graph_host_name","msgraph_host","aud","exp","iat","auth_time","acr","nonce","preferred_username","name","tid","ver","at_hash","c_hash","email"],"kerberos_endpoint":"https://login.microsoftonline.com/SomeTenantId/kerberos","tenant_region_scope":"WW","cloud_instance_name":"microsoftonline.com","cloud_graph_host_name":"graph.windows.net","msgraph_host":"graph.microsoft.com","rbac_url":"https://pas.windows.net"}, [ 'Cache-Control', 'max-age=86400, private', 'Content-Type', @@ -60,23 +60,23 @@ nock('https://endpoint', {"encodedQueryParams":false}) 'x-ms-request-id', 'sanitized', 'x-ms-ests-server', - '2.1.11722.26 - EUS ProdSlices', + '2.1.11829.4 - NCUS ProdSlices', 'Set-Cookie', - 'fpc=AtoRK8gNCytBsgelMsPAEVxWyo4SBAAAALlPSNgOAAAA; expires=Thu, 01-Jul-2021 15:58:53 GMT; path=/; secure; HttpOnly; SameSite=None', + 'fpc=Akx-rKIenedChRbNwm0wEmhWyo4SBAAAAGbCXtgOAAAA; expires=Sun, 18-Jul-2021 16:37:51 GMT; path=/; secure; HttpOnly; SameSite=None', 'Set-Cookie', - 'esctx=AQABAAAAAAD--DLA3VO7QrddgJg7WevrELDBizGHwxj5d2lV8T1TM8lwa5NS2eSoNCQMqolvJ2DItLIJZc-2-dsCPMgnAda32kNiu4m0_MAX2tFvpj4Hzc5Imlfb25DZIlr6PatP25oFGSk1C6UZy2TPTVFf5JTgQMDxHCfsprs_GfPJF9a2iSLGnF4EBbQK9NB3yyLEucsgAA; domain=.login.microsoftonline.com; path=/; secure; HttpOnly; SameSite=None', + 'esctx=AQABAAAAAAD--DLA3VO7QrddgJg7WevrjRrwfd7JZZMY774lJvDeEU0o9RONVjoJCCYqbLtQxnN4MA4J9BxvQlBCbnro_OvXTcqxBA4b8uegZ5YlLnI7WWatMPtjPujYEE-JlBHf1fLaiZjRt0J7Shtq9pxv8xJaFtz_lOsLZD2o-x2lsBsGkpgSZwfK1xfGZ9cer-XzEHQgAA; domain=.login.microsoftonline.com; path=/; secure; HttpOnly; SameSite=None', 'Set-Cookie', 'x-ms-gateway-slice=estsfd; path=/; secure; samesite=none; httponly', 'Set-Cookie', 'stsservicecookie=estsfd; path=/; secure; samesite=none; httponly', 'Date', - 'Tue, 01 Jun 2021 15:58:53 GMT', + 'Fri, 18 Jun 2021 16:37:51 GMT', 'Content-Length', - '1651' + '1753' ]); nock('https://endpoint', {"encodedQueryParams":false}) - .post('/SomeTenantId/oauth2/v2.0/token', "client_id=SomeClientId&scope=https%3A%2F%2Fcommunication.azure.com%2F%2F.default%20openid%20profile%20offline_access&grant_type=client_credentials&client-request-id=sanitized&client_secret=SomeClientSecret") + .post('/SomeTenantId/oauth2/v2.0/token', "client_id=SomeClientId&scope=https%3A%2F%2Fsanitized%2F&grant_type=client_credentials&x-client-SKU=msal.js.node&x-client-VER=1.1.0&x-client-OS=win32&x-client-CPU=x64&x-ms-lib-capability=retry-after, h429&x-client-current-telemetry=2|771,0|,&x-client-last-telemetry=2|0|||0,0&client-request-id=sanitized&client_secret=SomeClientSecret") .reply(200, {"token_type":"Bearer","expires_in":86399,"ext_expires_in":86399,"access_token":"access_token"}, [ 'Cache-Control', 'no-store, no-cache', @@ -95,17 +95,17 @@ nock('https://endpoint', {"encodedQueryParams":false}) 'x-ms-request-id', 'sanitized', 'x-ms-ests-server', - '2.1.11722.26 - WUS2 ProdSlices', + '2.1.11829.4 - WUS2 ProdSlices', 'x-ms-clitelem', '1,0,0,,', 'Set-Cookie', - 'fpc=AtoRK8gNCytBsgelMsPAEVxWyo4SBQAAALlPSNgOAAAA; expires=Thu, 01-Jul-2021 15:58:53 GMT; path=/; secure; HttpOnly; SameSite=None', + 'fpc=Akx-rKIenedChRbNwm0wEmhWyo4SBAAAAGbCXtgOAAAA; expires=Sun, 18-Jul-2021 16:37:51 GMT; path=/; secure; HttpOnly; SameSite=None', 'Set-Cookie', 'x-ms-gateway-slice=estsfd; path=/; secure; samesite=none; httponly', 'Set-Cookie', 'stsservicecookie=estsfd; path=/; secure; samesite=none; httponly', 'Date', - 'Tue, 01 Jun 2021 15:58:53 GMT', + 'Fri, 18 Jun 2021 16:37:51 GMT', 'Content-Length', '1327' ]); @@ -121,15 +121,15 @@ nock('https://endpoint', {"encodedQueryParams":false}) 'Request-Context', 'appId=', 'MS-CV', - 'yvR2BaQK20aM/y4RJiPC2A.0', + 'WkgNKq8tNEOophFF/SODkA.0', 'api-supported-versions', '2021-03-07', 'X-Processing-Time', - '3453ms', + '2002ms', 'X-Cache', 'CONFIG_NOCACHE', 'X-Azure-Ref', - '0PVm2YAAAAAAZQPk1nuhZS7ZV+qoGJHZ2WVZSMzBFREdFMDQxNAA5ZmM3YjUxOS1hOGNjLTRmODktOTM1ZS1jOTE0OGFlMDllODE=', + '04MvMYAAAAAAz+Djd8HsRQ4LIYv4ZVh/WWVZSMzBFREdFMDMxOQA5ZmM3YjUxOS1hOGNjLTRmODktOTM1ZS1jOTE0OGFlMDllODE=', 'Date', - 'Tue, 01 Jun 2021 15:58:57 GMT' + 'Fri, 18 Jun 2021 16:37:53 GMT' ]); diff --git a/sdk/communication/communication-phone-numbers/recordings/node/phonenumbersclient__lro__update/recording_can_update_a_phone_numbers_capabilities.js b/sdk/communication/communication-phone-numbers/recordings/node/phonenumbersclient__lro__update/recording_can_update_a_phone_numbers_capabilities.js index 1d9e716f7ac6..ebbb8bef9550 100644 --- a/sdk/communication/communication-phone-numbers/recordings/node/phonenumbersclient__lro__update/recording_can_update_a_phone_numbers_capabilities.js +++ b/sdk/communication/communication-phone-numbers/recordings/node/phonenumbersclient__lro__update/recording_can_update_a_phone_numbers_capabilities.js @@ -1,6 +1,6 @@ let nock = require('nock'); -module.exports.hash = "d283ef4ee7ab0823ebb4f6397922c643"; +module.exports.hash = "c712c9c77d67bd041a87c0cfd72c611f"; module.exports.testInfo = {"uniqueName":{},"newDate":{}} @@ -19,7 +19,7 @@ nock('https://endpoint', {"encodedQueryParams":false}) 'Request-Context', 'appId=', 'MS-CV', - 'ZNng7olGG0q3e0Ep/Lvl3w.0', + 'I99VikQapUCozl5S/WyOtw.0', 'Operation-Location', '/phoneNumbers/operations/capabilities_sanitized?api-version=2021-03-07', 'operation-id', @@ -29,19 +29,19 @@ nock('https://endpoint', {"encodedQueryParams":false}) 'api-supported-versions', '2021-03-07', 'X-Processing-Time', - '2022ms', + '1785ms', 'X-Cache', 'CONFIG_NOCACHE', 'X-Azure-Ref', - '0XVm2YAAAAABiHHm0keUdSKduK2gG+RepWVZSMzBFREdFMDMxNwA5ZmM3YjUxOS1hOGNjLTRmODktOTM1ZS1jOTE0OGFlMDllODE=', + '0A8zMYAAAAAB3ggB+vQgHTpdUTovnM/l3WVZSMzBFREdFMDQxNQA5ZmM3YjUxOS1hOGNjLTRmODktOTM1ZS1jOTE0OGFlMDllODE=', 'Date', - 'Tue, 01 Jun 2021 15:59:26 GMT' + 'Fri, 18 Jun 2021 16:38:28 GMT' ]); nock('https://endpoint', {"encodedQueryParams":false}) .get('/phoneNumbers/operations/capabilities_sanitized') .query(true) - .reply(200, {"status":"running","resourceLocation":"/phoneNumbers/+14155550100?api-version=2021-03-07","createdDateTime":"2021-06-01T15:59:26.9785389+00:00","id":"capabilities_sanitized","operationType":"updatePhoneNumberCapabilities","lastActionDateTime":"0001-01-01T00:00:00+00:00"}, [ + .reply(200, {"status":"running","resourceLocation":"/phoneNumbers/+14155550100?api-version=2021-03-07","createdDateTime":"2021-06-18T16:38:28.5782722+00:00","id":"capabilities_sanitized","operationType":"updatePhoneNumberCapabilities","lastActionDateTime":"0001-01-01T00:00:00+00:00"}, [ 'Transfer-Encoding', 'chunked', 'Content-Type', @@ -53,23 +53,23 @@ nock('https://endpoint', {"encodedQueryParams":false}) 'Request-Context', 'appId=', 'MS-CV', - 'v6D9Bli9OkuYgMyivF/5Ug.0', + 'jqhrRy/v5ECHH4kHTR89aw.0', 'api-supported-versions', '2021-03-07', 'X-Processing-Time', - '318ms', + '391ms', 'X-Cache', 'CONFIG_NOCACHE', 'X-Azure-Ref', - '0X1m2YAAAAACVkAZmPGJAT6Scq806HEHZWVZSMzBFREdFMDMxNwA5ZmM3YjUxOS1hOGNjLTRmODktOTM1ZS1jOTE0OGFlMDllODE=', + '0BMzMYAAAAACnEkLQqM1SQ4u8ASmgNGrbWVZSMzBFREdFMDQxNQA5ZmM3YjUxOS1hOGNjLTRmODktOTM1ZS1jOTE0OGFlMDllODE=', 'Date', - 'Tue, 01 Jun 2021 15:59:27 GMT' + 'Fri, 18 Jun 2021 16:38:28 GMT' ]); nock('https://endpoint', {"encodedQueryParams":false}) .get('/phoneNumbers/operations/capabilities_sanitized') .query(true) - .reply(200, {"status":"running","resourceLocation":"/phoneNumbers/+14155550100?api-version=2021-03-07","createdDateTime":"2021-06-01T15:59:26.9785389+00:00","id":"capabilities_sanitized","operationType":"updatePhoneNumberCapabilities","lastActionDateTime":"0001-01-01T00:00:00+00:00"}, [ + .reply(200, {"status":"running","resourceLocation":"/phoneNumbers/+14155550100?api-version=2021-03-07","createdDateTime":"2021-06-18T16:38:28.5782722+00:00","id":"capabilities_sanitized","operationType":"updatePhoneNumberCapabilities","lastActionDateTime":"0001-01-01T00:00:00+00:00"}, [ 'Transfer-Encoding', 'chunked', 'Content-Type', @@ -81,23 +81,23 @@ nock('https://endpoint', {"encodedQueryParams":false}) 'Request-Context', 'appId=', 'MS-CV', - 'PrrOv5kQU0yiX0CP7s21yQ.0', + 'nq3C7t8F+UOL/4yGWj8NIg.0', 'api-supported-versions', '2021-03-07', 'X-Processing-Time', - '324ms', + '298ms', 'X-Cache', 'CONFIG_NOCACHE', 'X-Azure-Ref', - '0YVm2YAAAAACThWXxs+1pQZU/GmsXaYS7WVZSMzBFREdFMDMxNwA5ZmM3YjUxOS1hOGNjLTRmODktOTM1ZS1jOTE0OGFlMDllODE=', + '0B8zMYAAAAACJyLQn5ajbS7RH4GQNWKltWVZSMzBFREdFMDQxNQA5ZmM3YjUxOS1hOGNjLTRmODktOTM1ZS1jOTE0OGFlMDllODE=', 'Date', - 'Tue, 01 Jun 2021 15:59:29 GMT' + 'Fri, 18 Jun 2021 16:38:31 GMT' ]); nock('https://endpoint', {"encodedQueryParams":false}) .get('/phoneNumbers/operations/capabilities_sanitized') .query(true) - .reply(200, {"status":"running","resourceLocation":"/phoneNumbers/+14155550100?api-version=2021-03-07","createdDateTime":"2021-06-01T15:59:26.9785389+00:00","id":"capabilities_sanitized","operationType":"updatePhoneNumberCapabilities","lastActionDateTime":"0001-01-01T00:00:00+00:00"}, [ + .reply(200, {"status":"running","resourceLocation":"/phoneNumbers/+14155550100?api-version=2021-03-07","createdDateTime":"2021-06-18T16:38:28.5782722+00:00","id":"capabilities_sanitized","operationType":"updatePhoneNumberCapabilities","lastActionDateTime":"0001-01-01T00:00:00+00:00"}, [ 'Transfer-Encoding', 'chunked', 'Content-Type', @@ -109,23 +109,23 @@ nock('https://endpoint', {"encodedQueryParams":false}) 'Request-Context', 'appId=', 'MS-CV', - 'FRe0z8D7Uk253pGHfnQKDA.0', + 'jXXTRhZlrUCMOdmQpWppFg.0', 'api-supported-versions', '2021-03-07', 'X-Processing-Time', - '326ms', + '304ms', 'X-Cache', 'CONFIG_NOCACHE', 'X-Azure-Ref', - '0ZFm2YAAAAAAjDcqiPACOTryCiOuREeBzWVZSMzBFREdFMDMxNwA5ZmM3YjUxOS1hOGNjLTRmODktOTM1ZS1jOTE0OGFlMDllODE=', + '0CczMYAAAAAB3VvNfPGagSoG0bGVhlzeZWVZSMzBFREdFMDQxNQA5ZmM3YjUxOS1hOGNjLTRmODktOTM1ZS1jOTE0OGFlMDllODE=', 'Date', - 'Tue, 01 Jun 2021 15:59:31 GMT' + 'Fri, 18 Jun 2021 16:38:33 GMT' ]); nock('https://endpoint', {"encodedQueryParams":false}) .get('/phoneNumbers/operations/capabilities_sanitized') .query(true) - .reply(200, {"status":"running","resourceLocation":"/phoneNumbers/+14155550100?api-version=2021-03-07","createdDateTime":"2021-06-01T15:59:26.9785389+00:00","id":"capabilities_sanitized","operationType":"updatePhoneNumberCapabilities","lastActionDateTime":"0001-01-01T00:00:00+00:00"}, [ + .reply(200, {"status":"running","resourceLocation":"/phoneNumbers/+14155550100?api-version=2021-03-07","createdDateTime":"2021-06-18T16:38:28.5782722+00:00","id":"capabilities_sanitized","operationType":"updatePhoneNumberCapabilities","lastActionDateTime":"0001-01-01T00:00:00+00:00"}, [ 'Transfer-Encoding', 'chunked', 'Content-Type', @@ -137,23 +137,23 @@ nock('https://endpoint', {"encodedQueryParams":false}) 'Request-Context', 'appId=', 'MS-CV', - 'jtqtFnGE6EyuGByegQdfnQ.0', + 'gfq27MjhO06jUEOjSLl5PQ.0', 'api-supported-versions', '2021-03-07', 'X-Processing-Time', - '325ms', + '297ms', 'X-Cache', 'CONFIG_NOCACHE', 'X-Azure-Ref', - '0Zlm2YAAAAAAYC+tttu42RYIUM3KQb69OWVZSMzBFREdFMDMxNwA5ZmM3YjUxOS1hOGNjLTRmODktOTM1ZS1jOTE0OGFlMDllODE=', + '0DMzMYAAAAACWu1aerjVCRYGLexL5MS8SWVZSMzBFREdFMDQxNQA5ZmM3YjUxOS1hOGNjLTRmODktOTM1ZS1jOTE0OGFlMDllODE=', 'Date', - 'Tue, 01 Jun 2021 15:59:34 GMT' + 'Fri, 18 Jun 2021 16:38:35 GMT' ]); nock('https://endpoint', {"encodedQueryParams":false}) .get('/phoneNumbers/operations/capabilities_sanitized') .query(true) - .reply(200, {"status":"succeeded","resourceLocation":"/phoneNumbers/+14155550100?api-version=2021-03-07","createdDateTime":"2021-06-01T15:59:26.9785389+00:00","id":"capabilities_sanitized","operationType":"updatePhoneNumberCapabilities","lastActionDateTime":"0001-01-01T00:00:00+00:00"}, [ + .reply(200, {"status":"succeeded","resourceLocation":"/phoneNumbers/+14155550100?api-version=2021-03-07","createdDateTime":"2021-06-18T16:38:28.5782722+00:00","id":"capabilities_sanitized","operationType":"updatePhoneNumberCapabilities","lastActionDateTime":"0001-01-01T00:00:00+00:00"}, [ 'Transfer-Encoding', 'chunked', 'Content-Type', @@ -165,23 +165,23 @@ nock('https://endpoint', {"encodedQueryParams":false}) 'Request-Context', 'appId=', 'MS-CV', - '4V6cApOZaE2aD4p59tuqpg.0', + 'ibRBzJvoFky4Uh8URmmGEg.0', 'api-supported-versions', '2021-03-07', 'X-Processing-Time', - '341ms', + '294ms', 'X-Cache', 'CONFIG_NOCACHE', 'X-Azure-Ref', - '0aFm2YAAAAABVp/CH69/BR5rKJgQOvQxPWVZSMzBFREdFMDMxNwA5ZmM3YjUxOS1hOGNjLTRmODktOTM1ZS1jOTE0OGFlMDllODE=', + '0DszMYAAAAACwoYCPkDb5SaTcKFXPUFtHWVZSMzBFREdFMDQxNQA5ZmM3YjUxOS1hOGNjLTRmODktOTM1ZS1jOTE0OGFlMDllODE=', 'Date', - 'Tue, 01 Jun 2021 15:59:36 GMT' + 'Fri, 18 Jun 2021 16:38:38 GMT' ]); nock('https://endpoint', {"encodedQueryParams":false}) .get('/phoneNumbers/+14155550100') .query(true) - .reply(200, {"id":"14155550100","phoneNumber":"+14155550100","countryCode":"US","phoneNumberType":"tollFree","capabilities":{"calling":"none","sms":"outbound"},"assignmentType":"application","purchaseDate":"2021-03-09T15:01:55.0949003+00:00","cost":{"amount":2,"currencyCode":"USD","billingFrequency":"monthly"}}, [ + .reply(200, {"id":"14155550100","phoneNumber":"+14155550100","countryCode":"US","phoneNumberType":"tollFree","capabilities":{"calling":"none","sms":"outbound"},"assignmentType":"application","purchaseDate":"2021-03-09T15:03:04.7513808+00:00","cost":{"amount":2,"currencyCode":"USD","billingFrequency":"monthly"}}, [ 'Transfer-Encoding', 'chunked', 'Content-Type', @@ -189,15 +189,15 @@ nock('https://endpoint', {"encodedQueryParams":false}) 'Request-Context', 'appId=', 'MS-CV', - 'WgQQDptpKUew5zLIo+4U8A.0', + 'aXFNE3dQS0Wr+aC0R3a9GA.0', 'api-supported-versions', '2021-03-07', 'X-Processing-Time', - '1442ms', + '1153ms', 'X-Cache', 'CONFIG_NOCACHE', 'X-Azure-Ref', - '0a1m2YAAAAAAMiBKwlXTSRoiEMBzb6i7EWVZSMzBFREdFMDMxNwA5ZmM3YjUxOS1hOGNjLTRmODktOTM1ZS1jOTE0OGFlMDllODE=', + '0EMzMYAAAAACfhh7GaNiZSJXoebTY7IjOWVZSMzBFREdFMDQxNQA5ZmM3YjUxOS1hOGNjLTRmODktOTM1ZS1jOTE0OGFlMDllODE=', 'Date', - 'Tue, 01 Jun 2021 15:59:39 GMT' + 'Fri, 18 Jun 2021 16:38:41 GMT' ]); diff --git a/sdk/communication/communication-phone-numbers/recordings/node/phonenumbersclient__lro__update/recording_update_throws_when_phone_number_isnt_owned.js b/sdk/communication/communication-phone-numbers/recordings/node/phonenumbersclient__lro__update/recording_update_throws_when_phone_number_isnt_owned.js index 152e3cb9ee2f..7e178fb2a2fe 100644 --- a/sdk/communication/communication-phone-numbers/recordings/node/phonenumbersclient__lro__update/recording_update_throws_when_phone_number_isnt_owned.js +++ b/sdk/communication/communication-phone-numbers/recordings/node/phonenumbersclient__lro__update/recording_update_throws_when_phone_number_isnt_owned.js @@ -1,27 +1,29 @@ let nock = require('nock'); -module.exports.hash = "a029440b94d74f4bb37d8021fa55d003"; +module.exports.hash = "9d22e91b3c0859e19eebf021b89a898f"; module.exports.testInfo = {"uniqueName":{},"newDate":{}} nock('https://endpoint', {"encodedQueryParams":false}) .patch('/phoneNumbers/%2B14155550100/capabilities', {"calling":"none","sms":"outbound"}) .query(true) - .reply(404, "", [ + .reply(404, {"error":{"code":"InternalError","message":"The server encountered an internal error."}}, [ + 'Transfer-Encoding', + 'chunked', + 'Content-Type', + 'application/json', 'Request-Context', 'appId=', 'MS-CV', - 'A1uTBbq3nk2rB2RHx2xxiQ.0', + 'QdMD7Y75oUuEz/OnGua9RA.0', 'api-supported-versions', '2021-03-07', 'X-Processing-Time', - '277ms', + '301ms', 'X-Cache', 'CONFIG_NOCACHE', 'X-Azure-Ref', - '0blm2YAAAAAApYfcZTdxvQ4um59ELvNWHWVZSMzBFREdFMDMxNAA5ZmM3YjUxOS1hOGNjLTRmODktOTM1ZS1jOTE0OGFlMDllODE=', + '0FMzMYAAAAAAJQcr/2q+HTrABQAGhIAtoWVZSMzBFREdFMDQxNQA5ZmM3YjUxOS1hOGNjLTRmODktOTM1ZS1jOTE0OGFlMDllODE=', 'Date', - 'Tue, 01 Jun 2021 15:59:42 GMT', - 'Content-Length', - '0' + 'Fri, 18 Jun 2021 16:38:43 GMT' ]); diff --git a/sdk/communication/communication-phone-numbers/recordings/node/phonenumbersclient__lro__update_aad/recording_can_update_a_phone_numbers_capabilities.js b/sdk/communication/communication-phone-numbers/recordings/node/phonenumbersclient__lro__update_aad/recording_can_update_a_phone_numbers_capabilities.js index c4f071a6151f..b8c0d8bada6b 100644 --- a/sdk/communication/communication-phone-numbers/recordings/node/phonenumbersclient__lro__update_aad/recording_can_update_a_phone_numbers_capabilities.js +++ b/sdk/communication/communication-phone-numbers/recordings/node/phonenumbersclient__lro__update_aad/recording_can_update_a_phone_numbers_capabilities.js @@ -1,6 +1,6 @@ let nock = require('nock'); -module.exports.hash = "d283ef4ee7ab0823ebb4f6397922c643"; +module.exports.hash = "c712c9c77d67bd041a87c0cfd72c611f"; module.exports.testInfo = {"uniqueName":{},"newDate":{}} @@ -10,6 +10,8 @@ nock('https://endpoint', {"encodedQueryParams":false}) .reply(200, {"tenant_discovery_endpoint":"https://login.microsoftonline.com/SomeTenantId/v2.0/.well-known/openid-configuration","api-version":"1.1","metadata":[{"preferred_network":"login.microsoftonline.com","preferred_cache":"login.windows.net","aliases":["login.microsoftonline.com","login.windows.net","login.microsoft.com","sts.windows.net"]},{"preferred_network":"login.partner.microsoftonline.cn","preferred_cache":"login.partner.microsoftonline.cn","aliases":["login.partner.microsoftonline.cn","login.chinacloudapi.cn"]},{"preferred_network":"login.microsoftonline.de","preferred_cache":"login.microsoftonline.de","aliases":["login.microsoftonline.de"]},{"preferred_network":"login.microsoftonline.us","preferred_cache":"login.microsoftonline.us","aliases":["login.microsoftonline.us","login.usgovcloudapi.net"]},{"preferred_network":"login-us.microsoftonline.com","preferred_cache":"login-us.microsoftonline.com","aliases":["login-us.microsoftonline.com"]}]}, [ 'Cache-Control', 'max-age=86400, private', + 'Content-Length', + '980', 'Content-Type', 'application/json; charset=utf-8', 'Strict-Transport-Security', @@ -25,24 +27,22 @@ nock('https://endpoint', {"encodedQueryParams":false}) 'x-ms-request-id', 'sanitized', 'x-ms-ests-server', - '2.1.11722.21 - EUS ProdSlices', + '2.1.11829.4 - NCUS ProdSlices', 'Set-Cookie', - 'fpc=AtoRK8gNCytBsgelMsPAEVxWyo4SBQAAALlPSNgOAAAA; expires=Thu, 01-Jul-2021 15:59:09 GMT; path=/; secure; HttpOnly; SameSite=None', + 'fpc=Akx-rKIenedChRbNwm0wEmhWyo4SBAAAAGbCXtgOAAAA; expires=Sun, 18-Jul-2021 16:38:07 GMT; path=/; secure; HttpOnly; SameSite=None', 'Set-Cookie', - 'esctx=AQABAAAAAAD--DLA3VO7QrddgJg7Wevrwoi2iwp2FqJTHHrEUb8OOxFK3AbrYkK1dz-2DieHdOv8zEtAdSha35VOoqy12mEvulJHPar7a1DxT8fTcMg8mtrdwN_UucjHwT6boS4bzHvCQbDu3fHGOyahGU7sEVAFAB4UKRTdmf3jYaS5weC5mkeLfPkgPVB0BtixLvw710EgAA; domain=.login.microsoftonline.com; path=/; secure; HttpOnly; SameSite=None', + 'esctx=AQABAAAAAAD--DLA3VO7QrddgJg7WevrQLLp2GiTlCwtak-vNuGKhmWT9ZIfsNIQkbygbgi26gc8MELamdFQ22t9rtt8XZAAXxr637cxo2RyRd6kpKU1jGYSMm_wPZRqtT1U4W1Vw9GnMSOaJKEpUrV-b55ME6yBwZY4p_w5ORdsdVyGou5Zc_mC6pWxtApCMXxrPsTrUmUgAA; domain=.login.microsoftonline.com; path=/; secure; HttpOnly; SameSite=None', 'Set-Cookie', 'x-ms-gateway-slice=estsfd; path=/; secure; samesite=none; httponly', 'Set-Cookie', 'stsservicecookie=estsfd; path=/; secure; samesite=none; httponly', 'Date', - 'Tue, 01 Jun 2021 15:59:09 GMT', - 'Content-Length', - '980' + 'Fri, 18 Jun 2021 16:38:07 GMT' ]); nock('https://endpoint', {"encodedQueryParams":false}) .get('/SomeTenantId/v2.0/.well-known/openid-configuration') - .reply(200, {"token_endpoint":"https://login.microsoftonline.com/SomeTenantId/oauth2/v2.0/token","token_endpoint_auth_methods_supported":["client_secret_post","private_key_jwt","client_secret_basic"],"jwks_uri":"https://login.microsoftonline.com/SomeTenantId/discovery/v2.0/keys","response_modes_supported":["query","fragment","form_post"],"subject_types_supported":["pairwise"],"id_token_signing_alg_values_supported":["RS256"],"response_types_supported":["code","id_token","code id_token","id_token token"],"scopes_supported":["openid","profile","email","offline_access"],"issuer":"https://login.microsoftonline.com/SomeTenantId/v2.0","request_uri_parameter_supported":false,"userinfo_endpoint":"https://graph.microsoft.com/oidc/userinfo","authorization_endpoint":"https://login.microsoftonline.com/SomeTenantId/oauth2/v2.0/authorize","device_authorization_endpoint":"https://login.microsoftonline.com/SomeTenantId/oauth2/v2.0/devicecode","http_logout_supported":false,"frontchannel_logout_supported":false,"end_session_endpoint":"https://login.microsoftonline.com/SomeTenantId/oauth2/v2.0/logout","claims_supported":["sub","iss","cloud_instance_name","cloud_instance_host_name","cloud_graph_host_name","msgraph_host","aud","exp","iat","auth_time","acr","nonce","preferred_username","name","tid","ver","at_hash","c_hash","email"],"tenant_region_scope":"WW","cloud_instance_name":"microsoftonline.com","cloud_graph_host_name":"graph.windows.net","msgraph_host":"graph.microsoft.com","rbac_url":"https://pas.windows.net"}, [ + .reply(200, {"token_endpoint":"https://login.microsoftonline.com/SomeTenantId/oauth2/v2.0/token","token_endpoint_auth_methods_supported":["client_secret_post","private_key_jwt","client_secret_basic"],"jwks_uri":"https://login.microsoftonline.com/SomeTenantId/discovery/v2.0/keys","response_modes_supported":["query","fragment","form_post"],"subject_types_supported":["pairwise"],"id_token_signing_alg_values_supported":["RS256"],"response_types_supported":["code","id_token","code id_token","id_token token"],"scopes_supported":["openid","profile","email","offline_access"],"issuer":"https://login.microsoftonline.com/SomeTenantId/v2.0","request_uri_parameter_supported":false,"userinfo_endpoint":"https://graph.microsoft.com/oidc/userinfo","authorization_endpoint":"https://login.microsoftonline.com/SomeTenantId/oauth2/v2.0/authorize","device_authorization_endpoint":"https://login.microsoftonline.com/SomeTenantId/oauth2/v2.0/devicecode","http_logout_supported":false,"frontchannel_logout_supported":false,"end_session_endpoint":"https://login.microsoftonline.com/SomeTenantId/oauth2/v2.0/logout","claims_supported":["sub","iss","cloud_instance_name","cloud_instance_host_name","cloud_graph_host_name","msgraph_host","aud","exp","iat","auth_time","acr","nonce","preferred_username","name","tid","ver","at_hash","c_hash","email"],"kerberos_endpoint":"https://login.microsoftonline.com/SomeTenantId/kerberos","tenant_region_scope":"WW","cloud_instance_name":"microsoftonline.com","cloud_graph_host_name":"graph.windows.net","msgraph_host":"graph.microsoft.com","rbac_url":"https://pas.windows.net"}, [ 'Cache-Control', 'max-age=86400, private', 'Content-Type', @@ -60,23 +60,23 @@ nock('https://endpoint', {"encodedQueryParams":false}) 'x-ms-request-id', 'sanitized', 'x-ms-ests-server', - '2.1.11722.26 - SCUS ProdSlices', + '2.1.11829.4 - NCUS ProdSlices', 'Set-Cookie', - 'fpc=AtoRK8gNCytBsgelMsPAEVxWyo4SBQAAALlPSNgOAAAA; expires=Thu, 01-Jul-2021 15:59:09 GMT; path=/; secure; HttpOnly; SameSite=None', + 'fpc=Akx-rKIenedChRbNwm0wEmhWyo4SBAAAAGbCXtgOAAAA; expires=Sun, 18-Jul-2021 16:38:07 GMT; path=/; secure; HttpOnly; SameSite=None', 'Set-Cookie', - 'esctx=AQABAAAAAAD--DLA3VO7QrddgJg7Wevrd7SWgSyhEUyUws6pob7eZZzvfiahwd95DoOxxmqhu5IlJVpiIC8x6SanJm07cPYBWqyBbz0gvohetw-NsCDoWMIylitQgueaR-CY3Y3kqJ9Xqa_3kTGIl6H0lpOnLhr4NdKLMLq3AlBV_ZJ__JTLJhY2sH9e7y4sSVjOBahUh68gAA; domain=.login.microsoftonline.com; path=/; secure; HttpOnly; SameSite=None', + 'esctx=AQABAAAAAAD--DLA3VO7QrddgJg7WevrTEfa8rKIDDZeYvLoB0YlDO8TzsLnWieJkJV3_UF2de8aVvdGVXP2hlOM4NCA_XNt4O3w2sTpyt_lJ0UH3nv7ta6TStCzpKYarA77vR7339ebPVGkB1GuhzglpAEI4PbKUoxSIHS5GSK6cWT_1IsM21cJtNlh_XHK3jzt8Fvt_q4gAA; domain=.login.microsoftonline.com; path=/; secure; HttpOnly; SameSite=None', 'Set-Cookie', 'x-ms-gateway-slice=estsfd; path=/; secure; samesite=none; httponly', 'Set-Cookie', 'stsservicecookie=estsfd; path=/; secure; samesite=none; httponly', 'Date', - 'Tue, 01 Jun 2021 15:59:09 GMT', + 'Fri, 18 Jun 2021 16:38:07 GMT', 'Content-Length', - '1651' + '1753' ]); nock('https://endpoint', {"encodedQueryParams":false}) - .post('/SomeTenantId/oauth2/v2.0/token', "client_id=SomeClientId&scope=https%3A%2F%2Fcommunication.azure.com%2F%2F.default%20openid%20profile%20offline_access&grant_type=client_credentials&client-request-id=sanitized&client_secret=SomeClientSecret") + .post('/SomeTenantId/oauth2/v2.0/token', "client_id=SomeClientId&scope=https%3A%2F%2Fsanitized%2F&grant_type=client_credentials&x-client-SKU=msal.js.node&x-client-VER=1.1.0&x-client-OS=win32&x-client-CPU=x64&x-ms-lib-capability=retry-after, h429&x-client-current-telemetry=2|771,0|,&x-client-last-telemetry=2|0|||0,0&client-request-id=sanitized&client_secret=SomeClientSecret") .reply(200, {"token_type":"Bearer","expires_in":86399,"ext_expires_in":86399,"access_token":"access_token"}, [ 'Cache-Control', 'no-store, no-cache', @@ -95,17 +95,17 @@ nock('https://endpoint', {"encodedQueryParams":false}) 'x-ms-request-id', 'sanitized', 'x-ms-ests-server', - '2.1.11722.26 - WUS2 ProdSlices', + '2.1.11829.4 - EUS ProdSlices', 'x-ms-clitelem', '1,0,0,,', 'Set-Cookie', - 'fpc=AtoRK8gNCytBsgelMsPAEVxWyo4SBgAAALlPSNgOAAAA; expires=Thu, 01-Jul-2021 15:59:09 GMT; path=/; secure; HttpOnly; SameSite=None', + 'fpc=Akx-rKIenedChRbNwm0wEmhWyo4SBQAAAGbCXtgOAAAA; expires=Sun, 18-Jul-2021 16:38:07 GMT; path=/; secure; HttpOnly; SameSite=None', 'Set-Cookie', 'x-ms-gateway-slice=estsfd; path=/; secure; samesite=none; httponly', 'Set-Cookie', 'stsservicecookie=estsfd; path=/; secure; samesite=none; httponly', 'Date', - 'Tue, 01 Jun 2021 15:59:09 GMT', + 'Fri, 18 Jun 2021 16:38:07 GMT', 'Content-Length', '1327' ]); @@ -125,7 +125,7 @@ nock('https://endpoint', {"encodedQueryParams":false}) 'Request-Context', 'appId=', 'MS-CV', - 'TLxm0aJrKE6R5971NCZYfA.0', + 'tggij5FFtUiiWqfEdemqDA.0', 'Operation-Location', '/phoneNumbers/operations/capabilities_sanitized?api-version=2021-03-07', 'operation-id', @@ -135,19 +135,47 @@ nock('https://endpoint', {"encodedQueryParams":false}) 'api-supported-versions', '2021-03-07', 'X-Processing-Time', - '1702ms', + '2254ms', + 'X-Cache', + 'CONFIG_NOCACHE', + 'X-Azure-Ref', + '078vMYAAAAACb4UfzFLE7S52RpLriak1wWVZSMzBFREdFMDMxMQA5ZmM3YjUxOS1hOGNjLTRmODktOTM1ZS1jOTE0OGFlMDllODE=', + 'Date', + 'Fri, 18 Jun 2021 16:38:09 GMT' +]); + +nock('https://endpoint', {"encodedQueryParams":false}) + .get('/phoneNumbers/operations/capabilities_sanitized') + .query(true) + .reply(200, {"status":"running","resourceLocation":"/phoneNumbers/+14155550100?api-version=2021-03-07","createdDateTime":"2021-06-18T16:38:09.7065242+00:00","id":"capabilities_sanitized","operationType":"updatePhoneNumberCapabilities","lastActionDateTime":"0001-01-01T00:00:00+00:00"}, [ + 'Transfer-Encoding', + 'chunked', + 'Content-Type', + 'application/json; charset=utf-8', + 'Location', + '/phoneNumbers/+14155550100?api-version=2021-03-07', + 'Access-Control-Expose-Headers', + 'Location', + 'Request-Context', + 'appId=', + 'MS-CV', + 'Iu8y07y+GUGEs3Go8s53Jg.0', + 'api-supported-versions', + '2021-03-07', + 'X-Processing-Time', + '433ms', 'X-Cache', 'CONFIG_NOCACHE', 'X-Azure-Ref', - '0TVm2YAAAAAAXrPYkZtVdSZpgTLVCSPPBWVZSMzBFREdFMDQwOQA5ZmM3YjUxOS1hOGNjLTRmODktOTM1ZS1jOTE0OGFlMDllODE=', + '08svMYAAAAAC+cW6hXAp8Q6albT3fzJeqWVZSMzBFREdFMDMxMQA5ZmM3YjUxOS1hOGNjLTRmODktOTM1ZS1jOTE0OGFlMDllODE=', 'Date', - 'Tue, 01 Jun 2021 15:59:11 GMT' + 'Fri, 18 Jun 2021 16:38:10 GMT' ]); nock('https://endpoint', {"encodedQueryParams":false}) .get('/phoneNumbers/operations/capabilities_sanitized') .query(true) - .reply(200, {"status":"notStarted","resourceLocation":"/phoneNumbers/+14155550100?api-version=2021-03-07","createdDateTime":"2021-06-01T15:59:11.1185548+00:00","id":"capabilities_sanitized","operationType":"updatePhoneNumberCapabilities","lastActionDateTime":"0001-01-01T00:00:00+00:00"}, [ + .reply(200, {"status":"running","resourceLocation":"/phoneNumbers/+14155550100?api-version=2021-03-07","createdDateTime":"2021-06-18T16:38:09.7065242+00:00","id":"capabilities_sanitized","operationType":"updatePhoneNumberCapabilities","lastActionDateTime":"0001-01-01T00:00:00+00:00"}, [ 'Transfer-Encoding', 'chunked', 'Content-Type', @@ -159,23 +187,23 @@ nock('https://endpoint', {"encodedQueryParams":false}) 'Request-Context', 'appId=', 'MS-CV', - 'p5alFMGbYkK1mRdo1eg3AA.0', + 'oXomvaAW0EC5u9BA5m9VQA.0', 'api-supported-versions', '2021-03-07', 'X-Processing-Time', - '316ms', + '308ms', 'X-Cache', 'CONFIG_NOCACHE', 'X-Azure-Ref', - '0T1m2YAAAAABd5rH+gIATQ6Ba3JP+wrKEWVZSMzBFREdFMDQwOQA5ZmM3YjUxOS1hOGNjLTRmODktOTM1ZS1jOTE0OGFlMDllODE=', + '09MvMYAAAAAAloP2DIGrTSqPQXbTozxtTWVZSMzBFREdFMDMxMQA5ZmM3YjUxOS1hOGNjLTRmODktOTM1ZS1jOTE0OGFlMDllODE=', 'Date', - 'Tue, 01 Jun 2021 15:59:11 GMT' + 'Fri, 18 Jun 2021 16:38:12 GMT' ]); nock('https://endpoint', {"encodedQueryParams":false}) .get('/phoneNumbers/operations/capabilities_sanitized') .query(true) - .reply(200, {"status":"running","resourceLocation":"/phoneNumbers/+14155550100?api-version=2021-03-07","createdDateTime":"2021-06-01T15:59:11.1185548+00:00","id":"capabilities_sanitized","operationType":"updatePhoneNumberCapabilities","lastActionDateTime":"0001-01-01T00:00:00+00:00"}, [ + .reply(200, {"status":"running","resourceLocation":"/phoneNumbers/+14155550100?api-version=2021-03-07","createdDateTime":"2021-06-18T16:38:09.7065242+00:00","id":"capabilities_sanitized","operationType":"updatePhoneNumberCapabilities","lastActionDateTime":"0001-01-01T00:00:00+00:00"}, [ 'Transfer-Encoding', 'chunked', 'Content-Type', @@ -187,23 +215,23 @@ nock('https://endpoint', {"encodedQueryParams":false}) 'Request-Context', 'appId=', 'MS-CV', - 'ojjnbYg5QECEkWpBFMBBpg.0', + 'L2/xcxMI+kSoohQJafrAKg.0', 'api-supported-versions', '2021-03-07', 'X-Processing-Time', - '552ms', + '304ms', 'X-Cache', 'CONFIG_NOCACHE', 'X-Azure-Ref', - '0UVm2YAAAAAClePrdyMnHSKNG8NcIC+FsWVZSMzBFREdFMDQwOQA5ZmM3YjUxOS1hOGNjLTRmODktOTM1ZS1jOTE0OGFlMDllODE=', + '098vMYAAAAADttYVy9qodS47hqHRreS0fWVZSMzBFREdFMDMxMQA5ZmM3YjUxOS1hOGNjLTRmODktOTM1ZS1jOTE0OGFlMDllODE=', 'Date', - 'Tue, 01 Jun 2021 15:59:14 GMT' + 'Fri, 18 Jun 2021 16:38:15 GMT' ]); nock('https://endpoint', {"encodedQueryParams":false}) .get('/phoneNumbers/operations/capabilities_sanitized') .query(true) - .reply(200, {"status":"running","resourceLocation":"/phoneNumbers/+14155550100?api-version=2021-03-07","createdDateTime":"2021-06-01T15:59:11.1185548+00:00","id":"capabilities_sanitized","operationType":"updatePhoneNumberCapabilities","lastActionDateTime":"0001-01-01T00:00:00+00:00"}, [ + .reply(200, {"status":"running","resourceLocation":"/phoneNumbers/+14155550100?api-version=2021-03-07","createdDateTime":"2021-06-18T16:38:09.7065242+00:00","id":"capabilities_sanitized","operationType":"updatePhoneNumberCapabilities","lastActionDateTime":"0001-01-01T00:00:00+00:00"}, [ 'Transfer-Encoding', 'chunked', 'Content-Type', @@ -215,23 +243,23 @@ nock('https://endpoint', {"encodedQueryParams":false}) 'Request-Context', 'appId=', 'MS-CV', - 'iwPUuQmXdEiumaQ6CCMVBg.0', + 'h15uC+rPcE6AU1DsMIQ8Tg.0', 'api-supported-versions', '2021-03-07', 'X-Processing-Time', - '316ms', + '302ms', 'X-Cache', 'CONFIG_NOCACHE', 'X-Azure-Ref', - '0VFm2YAAAAACBGWfOkI30RKGUZLlnuHnoWVZSMzBFREdFMDQwOQA5ZmM3YjUxOS1hOGNjLTRmODktOTM1ZS1jOTE0OGFlMDllODE=', + '0+cvMYAAAAAAY3DoyNBV5R6GtWaWImU4sWVZSMzBFREdFMDMxMQA5ZmM3YjUxOS1hOGNjLTRmODktOTM1ZS1jOTE0OGFlMDllODE=', 'Date', - 'Tue, 01 Jun 2021 15:59:16 GMT' + 'Fri, 18 Jun 2021 16:38:17 GMT' ]); nock('https://endpoint', {"encodedQueryParams":false}) .get('/phoneNumbers/operations/capabilities_sanitized') .query(true) - .reply(200, {"status":"succeeded","resourceLocation":"/phoneNumbers/+14155550100?api-version=2021-03-07","createdDateTime":"2021-06-01T15:59:11.1185548+00:00","id":"capabilities_sanitized","operationType":"updatePhoneNumberCapabilities","lastActionDateTime":"0001-01-01T00:00:00+00:00"}, [ + .reply(200, {"status":"succeeded","resourceLocation":"/phoneNumbers/+14155550100?api-version=2021-03-07","createdDateTime":"2021-06-18T16:38:09.7065242+00:00","id":"capabilities_sanitized","operationType":"updatePhoneNumberCapabilities","lastActionDateTime":"0001-01-01T00:00:00+00:00"}, [ 'Transfer-Encoding', 'chunked', 'Content-Type', @@ -243,23 +271,23 @@ nock('https://endpoint', {"encodedQueryParams":false}) 'Request-Context', 'appId=', 'MS-CV', - 'HJmsVjC11UOr39yEjf5MjQ.0', + 'hqUA5kh2nUWKf4M2F6690Q.0', 'api-supported-versions', '2021-03-07', 'X-Processing-Time', - '344ms', + '307ms', 'X-Cache', 'CONFIG_NOCACHE', 'X-Azure-Ref', - '0Vlm2YAAAAAAUc9mEODOCRKVWtX/kWHqDWVZSMzBFREdFMDQwOQA5ZmM3YjUxOS1hOGNjLTRmODktOTM1ZS1jOTE0OGFlMDllODE=', + '0+8vMYAAAAAA1VptBHeVSSoUjTtzXGppkWVZSMzBFREdFMDMxMQA5ZmM3YjUxOS1hOGNjLTRmODktOTM1ZS1jOTE0OGFlMDllODE=', 'Date', - 'Tue, 01 Jun 2021 15:59:18 GMT' + 'Fri, 18 Jun 2021 16:38:19 GMT' ]); nock('https://endpoint', {"encodedQueryParams":false}) .get('/phoneNumbers/+14155550100') .query(true) - .reply(200, {"id":"14155550100","phoneNumber":"+14155550100","countryCode":"US","phoneNumberType":"tollFree","capabilities":{"calling":"none","sms":"outbound"},"assignmentType":"application","purchaseDate":"2021-03-09T15:01:55.0949003+00:00","cost":{"amount":2,"currencyCode":"USD","billingFrequency":"monthly"}}, [ + .reply(200, {"id":"14155550100","phoneNumber":"+14155550100","countryCode":"US","phoneNumberType":"tollFree","capabilities":{"calling":"none","sms":"outbound"},"assignmentType":"application","purchaseDate":"2021-03-09T15:03:04.7513808+00:00","cost":{"amount":2,"currencyCode":"USD","billingFrequency":"monthly"}}, [ 'Transfer-Encoding', 'chunked', 'Content-Type', @@ -267,15 +295,15 @@ nock('https://endpoint', {"encodedQueryParams":false}) 'Request-Context', 'appId=', 'MS-CV', - 'FTy6B6yfT0OP+gqD8eKi0w.0', + 'Jy4qSxQn40GQyH3yYwUhlg.0', 'api-supported-versions', '2021-03-07', 'X-Processing-Time', - '1021ms', + '1346ms', 'X-Cache', 'CONFIG_NOCACHE', 'X-Azure-Ref', - '0WVm2YAAAAADI8N6jcD4MSoSSO5GBzfiNWVZSMzBFREdFMDQwOQA5ZmM3YjUxOS1hOGNjLTRmODktOTM1ZS1jOTE0OGFlMDllODE=', + '0/svMYAAAAADzyRudf9A8TrBjhM4bNAEQWVZSMzBFREdFMDMxMQA5ZmM3YjUxOS1hOGNjLTRmODktOTM1ZS1jOTE0OGFlMDllODE=', 'Date', - 'Tue, 01 Jun 2021 15:59:21 GMT' + 'Fri, 18 Jun 2021 16:38:23 GMT' ]); diff --git a/sdk/communication/communication-phone-numbers/recordings/node/phonenumbersclient__lro__update_aad/recording_update_throws_when_phone_number_isnt_owned.js b/sdk/communication/communication-phone-numbers/recordings/node/phonenumbersclient__lro__update_aad/recording_update_throws_when_phone_number_isnt_owned.js index 9a4802debde4..4c1a127dc915 100644 --- a/sdk/communication/communication-phone-numbers/recordings/node/phonenumbersclient__lro__update_aad/recording_update_throws_when_phone_number_isnt_owned.js +++ b/sdk/communication/communication-phone-numbers/recordings/node/phonenumbersclient__lro__update_aad/recording_update_throws_when_phone_number_isnt_owned.js @@ -1,6 +1,6 @@ let nock = require('nock'); -module.exports.hash = "a029440b94d74f4bb37d8021fa55d003"; +module.exports.hash = "9d22e91b3c0859e19eebf021b89a898f"; module.exports.testInfo = {"uniqueName":{},"newDate":{}} @@ -25,24 +25,24 @@ nock('https://endpoint', {"encodedQueryParams":false}) 'x-ms-request-id', 'sanitized', 'x-ms-ests-server', - '2.1.11722.21 - WUS2 ProdSlices', + '2.1.11829.4 - EUS ProdSlices', 'Set-Cookie', - 'fpc=AtoRK8gNCytBsgelMsPAEVxWyo4SBgAAALlPSNgOAAAA; expires=Thu, 01-Jul-2021 15:59:24 GMT; path=/; secure; HttpOnly; SameSite=None', + 'fpc=Akx-rKIenedChRbNwm0wEmhWyo4SBQAAAGbCXtgOAAAA; expires=Sun, 18-Jul-2021 16:38:25 GMT; path=/; secure; HttpOnly; SameSite=None', 'Set-Cookie', - 'esctx=AQABAAAAAAD--DLA3VO7QrddgJg7Wevr7TnBck8pxKJmCT4YxyorRwpqVuhN2c8uaM5mifipybCge_mRADKP1R6UJlQP4Srq1DYxNUhyDkkV5-BSG0vLqwiJyyk7hTkUY2yk5L4Dbn39JxlnnsM4-cLDRof47CtRjKvEax-4NdxQ1F843TBaAnuxY6bjNTHWxi4J1v_riuAgAA; domain=.login.microsoftonline.com; path=/; secure; HttpOnly; SameSite=None', + 'esctx=AQABAAAAAAD--DLA3VO7QrddgJg7WevrE8dretEml899GRHl-N341VdqX3sFB_f-YrQAn6-DKWoBTUZaLK8OfSFA8Faf8B9_CsSrDrKBhe4wpA3tNswfsJS5AVbNzlIQfIHjvXCROLQ2tkf1JsXQwE3t1PE_7GhroiN11nTDwu6j_FzsfKhehlHulvgsv-LgzuMN8XZ36YogAA; domain=.login.microsoftonline.com; path=/; secure; HttpOnly; SameSite=None', 'Set-Cookie', 'x-ms-gateway-slice=estsfd; path=/; secure; samesite=none; httponly', 'Set-Cookie', 'stsservicecookie=estsfd; path=/; secure; samesite=none; httponly', 'Date', - 'Tue, 01 Jun 2021 15:59:24 GMT', + 'Fri, 18 Jun 2021 16:38:25 GMT', 'Content-Length', '980' ]); nock('https://endpoint', {"encodedQueryParams":false}) .get('/SomeTenantId/v2.0/.well-known/openid-configuration') - .reply(200, {"token_endpoint":"https://login.microsoftonline.com/SomeTenantId/oauth2/v2.0/token","token_endpoint_auth_methods_supported":["client_secret_post","private_key_jwt","client_secret_basic"],"jwks_uri":"https://login.microsoftonline.com/SomeTenantId/discovery/v2.0/keys","response_modes_supported":["query","fragment","form_post"],"subject_types_supported":["pairwise"],"id_token_signing_alg_values_supported":["RS256"],"response_types_supported":["code","id_token","code id_token","id_token token"],"scopes_supported":["openid","profile","email","offline_access"],"issuer":"https://login.microsoftonline.com/SomeTenantId/v2.0","request_uri_parameter_supported":false,"userinfo_endpoint":"https://graph.microsoft.com/oidc/userinfo","authorization_endpoint":"https://login.microsoftonline.com/SomeTenantId/oauth2/v2.0/authorize","device_authorization_endpoint":"https://login.microsoftonline.com/SomeTenantId/oauth2/v2.0/devicecode","http_logout_supported":false,"frontchannel_logout_supported":false,"end_session_endpoint":"https://login.microsoftonline.com/SomeTenantId/oauth2/v2.0/logout","claims_supported":["sub","iss","cloud_instance_name","cloud_instance_host_name","cloud_graph_host_name","msgraph_host","aud","exp","iat","auth_time","acr","nonce","preferred_username","name","tid","ver","at_hash","c_hash","email"],"tenant_region_scope":"WW","cloud_instance_name":"microsoftonline.com","cloud_graph_host_name":"graph.windows.net","msgraph_host":"graph.microsoft.com","rbac_url":"https://pas.windows.net"}, [ + .reply(200, {"token_endpoint":"https://login.microsoftonline.com/SomeTenantId/oauth2/v2.0/token","token_endpoint_auth_methods_supported":["client_secret_post","private_key_jwt","client_secret_basic"],"jwks_uri":"https://login.microsoftonline.com/SomeTenantId/discovery/v2.0/keys","response_modes_supported":["query","fragment","form_post"],"subject_types_supported":["pairwise"],"id_token_signing_alg_values_supported":["RS256"],"response_types_supported":["code","id_token","code id_token","id_token token"],"scopes_supported":["openid","profile","email","offline_access"],"issuer":"https://login.microsoftonline.com/SomeTenantId/v2.0","request_uri_parameter_supported":false,"userinfo_endpoint":"https://graph.microsoft.com/oidc/userinfo","authorization_endpoint":"https://login.microsoftonline.com/SomeTenantId/oauth2/v2.0/authorize","device_authorization_endpoint":"https://login.microsoftonline.com/SomeTenantId/oauth2/v2.0/devicecode","http_logout_supported":false,"frontchannel_logout_supported":false,"end_session_endpoint":"https://login.microsoftonline.com/SomeTenantId/oauth2/v2.0/logout","claims_supported":["sub","iss","cloud_instance_name","cloud_instance_host_name","cloud_graph_host_name","msgraph_host","aud","exp","iat","auth_time","acr","nonce","preferred_username","name","tid","ver","at_hash","c_hash","email"],"kerberos_endpoint":"https://login.microsoftonline.com/SomeTenantId/kerberos","tenant_region_scope":"WW","cloud_instance_name":"microsoftonline.com","cloud_graph_host_name":"graph.windows.net","msgraph_host":"graph.microsoft.com","rbac_url":"https://pas.windows.net"}, [ 'Cache-Control', 'max-age=86400, private', 'Content-Type', @@ -60,28 +60,30 @@ nock('https://endpoint', {"encodedQueryParams":false}) 'x-ms-request-id', 'sanitized', 'x-ms-ests-server', - '2.1.11722.26 - SCUS ProdSlices', + '2.1.11829.4 - NCUS ProdSlices', 'Set-Cookie', - 'fpc=AtoRK8gNCytBsgelMsPAEVxWyo4SBgAAALlPSNgOAAAA; expires=Thu, 01-Jul-2021 15:59:24 GMT; path=/; secure; HttpOnly; SameSite=None', + 'fpc=Akx-rKIenedChRbNwm0wEmhWyo4SBQAAAGbCXtgOAAAA; expires=Sun, 18-Jul-2021 16:38:25 GMT; path=/; secure; HttpOnly; SameSite=None', 'Set-Cookie', - 'esctx=AQABAAAAAAD--DLA3VO7QrddgJg7Wevr5erknc1cq2HiqJ1ikxgqep9Eve5MZR9MQXljQPwQ7pV6mv-BeP2pMJKZm2MuV8MjkfK8c72w7aknetj7AfIEeVO6UseONgb_xszpvL8L4BjbC1nalYgXEJRKN5heKfJwmzcaN44ig-FF04QeVlAxmjwZPTBqYEt7goI6F5O9QtYgAA; domain=.login.microsoftonline.com; path=/; secure; HttpOnly; SameSite=None', + 'esctx=AQABAAAAAAD--DLA3VO7QrddgJg7WevrfKsrZEh5TYxNLB6-bIyRz80-dst8wyjToCRTCX5lpnvJRMtL9l4PSQUmUZ2epK96OsQYzyKzCXQbd6avpa0OMsO731PZW6c7Ek8-h_iIIge8ziHuoI3ltL2ecPZMGjChpwp5zPLvfjje716FV25dh3FpwIVDouAILfBNZSUx6BMgAA; domain=.login.microsoftonline.com; path=/; secure; HttpOnly; SameSite=None', 'Set-Cookie', 'x-ms-gateway-slice=estsfd; path=/; secure; samesite=none; httponly', 'Set-Cookie', 'stsservicecookie=estsfd; path=/; secure; samesite=none; httponly', 'Date', - 'Tue, 01 Jun 2021 15:59:24 GMT', + 'Fri, 18 Jun 2021 16:38:25 GMT', 'Content-Length', - '1651' + '1753' ]); nock('https://endpoint', {"encodedQueryParams":false}) - .post('/SomeTenantId/oauth2/v2.0/token', "client_id=SomeClientId&scope=https%3A%2F%2Fcommunication.azure.com%2F%2F.default%20openid%20profile%20offline_access&grant_type=client_credentials&client-request-id=sanitized&client_secret=SomeClientSecret") + .post('/SomeTenantId/oauth2/v2.0/token', "client_id=SomeClientId&scope=https%3A%2F%2Fsanitized%2F&grant_type=client_credentials&x-client-SKU=msal.js.node&x-client-VER=1.1.0&x-client-OS=win32&x-client-CPU=x64&x-ms-lib-capability=retry-after, h429&x-client-current-telemetry=2|771,0|,&x-client-last-telemetry=2|0|||0,0&client-request-id=sanitized&client_secret=SomeClientSecret") .reply(200, {"token_type":"Bearer","expires_in":86399,"ext_expires_in":86399,"access_token":"access_token"}, [ 'Cache-Control', 'no-store, no-cache', 'Pragma', 'no-cache', + 'Content-Length', + '1327', 'Content-Type', 'application/json; charset=utf-8', 'Expires', @@ -95,39 +97,39 @@ nock('https://endpoint', {"encodedQueryParams":false}) 'x-ms-request-id', 'sanitized', 'x-ms-ests-server', - '2.1.11722.26 - WUS2 ProdSlices', + '2.1.11829.4 - WUS2 ProdSlices', 'x-ms-clitelem', '1,0,0,,', 'Set-Cookie', - 'fpc=AtoRK8gNCytBsgelMsPAEVxWyo4SBgAAALlPSNgOAAAA; expires=Thu, 01-Jul-2021 15:59:24 GMT; path=/; secure; HttpOnly; SameSite=None', + 'fpc=Akx-rKIenedChRbNwm0wEmhWyo4SBgAAAGbCXtgOAAAA; expires=Sun, 18-Jul-2021 16:38:26 GMT; path=/; secure; HttpOnly; SameSite=None', 'Set-Cookie', 'x-ms-gateway-slice=estsfd; path=/; secure; samesite=none; httponly', 'Set-Cookie', 'stsservicecookie=estsfd; path=/; secure; samesite=none; httponly', 'Date', - 'Tue, 01 Jun 2021 15:59:24 GMT', - 'Content-Length', - '1327' + 'Fri, 18 Jun 2021 16:38:25 GMT' ]); nock('https://endpoint', {"encodedQueryParams":false}) .patch('/phoneNumbers/%2B14155550100/capabilities', {"calling":"none","sms":"outbound"}) .query(true) - .reply(404, "", [ + .reply(404, {"error":{"code":"InternalError","message":"The server encountered an internal error."}}, [ + 'Transfer-Encoding', + 'chunked', + 'Content-Type', + 'application/json', 'Request-Context', 'appId=', 'MS-CV', - 'i4XGcpfr/0SW7kuxkulw9g.0', + 'ON3o+UzWtUiWFeOM/BghGA.0', 'api-supported-versions', '2021-03-07', 'X-Processing-Time', - '327ms', + '442ms', 'X-Cache', 'CONFIG_NOCACHE', 'X-Azure-Ref', - '0XFm2YAAAAADhsEI3RfgsSreBUV32r4ZAWVZSMzBFREdFMDMxMwA5ZmM3YjUxOS1hOGNjLTRmODktOTM1ZS1jOTE0OGFlMDllODE=', + '0AszMYAAAAABDyph1+u3WQandjyKyumqTWVZSMzBFREdFMDQxNwA5ZmM3YjUxOS1hOGNjLTRmODktOTM1ZS1jOTE0OGFlMDllODE=', 'Date', - 'Tue, 01 Jun 2021 15:59:25 GMT', - 'Content-Length', - '0' + 'Fri, 18 Jun 2021 16:38:26 GMT' ]); diff --git a/sdk/communication/communication-phone-numbers/test/internal/headers.spec.ts b/sdk/communication/communication-phone-numbers/test/internal/headers.spec.ts index 82ce3fc08dcb..8f90bfe44959 100644 --- a/sdk/communication/communication-phone-numbers/test/internal/headers.spec.ts +++ b/sdk/communication/communication-phone-numbers/test/internal/headers.spec.ts @@ -48,7 +48,7 @@ describe("PhoneNumbersClient - headers", function() { }); it("sets date header", function() { - const dateHeader = isNode ? "date" : "x-ms-date"; + const dateHeader = "x-ms-date"; assert.typeOf(request.headers.get(dateHeader), "string"); }); diff --git a/sdk/communication/communication-phone-numbers/test/public/get.spec.ts b/sdk/communication/communication-phone-numbers/test/public/get.spec.ts index fd8480e90990..d1e770135138 100644 --- a/sdk/communication/communication-phone-numbers/test/public/get.spec.ts +++ b/sdk/communication/communication-phone-numbers/test/public/get.spec.ts @@ -37,11 +37,8 @@ matrix([[true, false]], async function(useAad) { try { await client.getPurchasedPhoneNumber(fake); } catch (error) { - assert.strictEqual(error.code, "PhoneNumberNotFound"); - assert.strictEqual( - error.message, - "The specified phone number +14155550100 cannot be found." - ); + assert.strictEqual(error.code, "NotFound"); + assert.strictEqual(error.message, "Input phoneNumber +14155550100 cannot be found."); } }); }); diff --git a/sdk/communication/communication-sms/package.json b/sdk/communication/communication-sms/package.json index c34ffd1ffe60..6ddf7b497368 100644 --- a/sdk/communication/communication-sms/package.json +++ b/sdk/communication/communication-sms/package.json @@ -69,7 +69,7 @@ "@azure/communication-common": "^1.0.0", "@azure/core-auth": "^1.3.0", "@azure/core-http": "^1.2.0", - "@azure/core-tracing": "1.0.0-preview.11", + "@azure/core-tracing": "1.0.0-preview.12", "@azure/logger": "^1.0.0", "events": "^3.0.0", "tslib": "^2.2.0" diff --git a/sdk/communication/communication-sms/test/public/smsClient.mocked.spec.ts b/sdk/communication/communication-sms/test/public/smsClient.mocked.spec.ts index b20e288cd1a9..56dd6e75b526 100644 --- a/sdk/communication/communication-sms/test/public/smsClient.mocked.spec.ts +++ b/sdk/communication/communication-sms/test/public/smsClient.mocked.spec.ts @@ -15,7 +15,7 @@ const TEST_NUMBER = "+14255550123"; describe("[mocked] SmsClient", async () => { const baseUri = "https://contoso.api.fake:443"; const connectionString = `endpoint=${baseUri};accesskey=banana`; - const dateHeader = isNode ? "date" : "x-ms-date"; + const dateHeader = "x-ms-date"; let sendRequestSpy: sinon.SinonSpy; const mockHttpClient: HttpClient = new MockHttpClient(TEST_NUMBER); diff --git a/sdk/compute/arm-compute-profile-2019-03-01-hybrid/README.md b/sdk/compute/arm-compute-profile-2019-03-01-hybrid/README.md index c9a2b4280963..a826f14d137a 100644 --- a/sdk/compute/arm-compute-profile-2019-03-01-hybrid/README.md +++ b/sdk/compute/arm-compute-profile-2019-03-01-hybrid/README.md @@ -1,89 +1,100 @@ ## Azure ComputeManagementClient SDK for JavaScript -This package contains an isomorphic SDK for ComputeManagementClient. +This package contains an isomorphic SDK (runs both in Node.js and in browsers) for ComputeManagementClient. ### Currently supported environments -- Node.js version 6.x.x or higher -- Browser JavaScript +- [LTS versions of Node.js](https://nodejs.org/about/releases/) +- Latest versions of Safari, Chrome, Edge, and Firefox. -### How to Install +### Prerequisites +You must have an [Azure subscription](https://azure.microsoft.com/free/). + +### How to install + +To use this SDK in your project, you will need to install two packages. +- `@azure/arm-compute-profile-2019-03-01-hybrid` that contains the client. +- `@azure/identity` that provides different mechanisms for the client to authenticate your requests using Azure Active Directory. + +Install both packages using the below command: ```bash -npm install @azure/arm-compute-profile-2019-03-01-hybrid +npm install --save @azure/arm-compute-profile-2019-03-01-hybrid @azure/identity ``` +> **Note**: You may have used either `@azure/ms-rest-nodeauth` or `@azure/ms-rest-browserauth` in the past. These packages are in maintenance mode receiving critical bug fixes, but no new features. +If you are on a [Node.js that has LTS status](https://nodejs.org/about/releases/), or are writing a client side browser application, we strongly encourage you to upgrade to `@azure/identity` which uses the latest versions of Azure Active Directory and MSAL APIs and provides more authentication options. + ### How to use -#### nodejs - Authentication, client creation and list operations as an example written in TypeScript. +- If you are writing a client side browser application, + - Follow the instructions in the section on Authenticating client side browser applications in [Azure Identity examples](https://aka.ms/azsdk/js/identity/examples) to register your application in the Microsoft identity platform and set the right permissions. + - Copy the client ID and tenant ID from the Overview section of your app registration in Azure portal and use it in the browser sample below. +- If you are writing a server side application, + - [Select a credential from `@azure/identity` based on the authentication method of your choice](https://aka.ms/azsdk/js/identity/examples) + - Complete the set up steps required by the credential if any. + - Use the credential you picked in the place of `DefaultAzureCredential` in the Node.js sample below. -##### Install @azure/ms-rest-nodeauth +In the below samples, we pass the credential and the Azure subscription id to instantiate the client. +Once the client is created, explore the operations on it either in your favorite editor or in our [API reference documentation](https://docs.microsoft.com/javascript/api) to get started. -```bash -npm install @azure/ms-rest-nodeauth -``` +#### nodejs - Authentication, client creation, and list operations as an example written in JavaScript. ##### Sample code -```typescript -import * as msRest from "@azure/ms-rest-js"; -import * as msRestAzure from "@azure/ms-rest-azure-js"; -import * as msRestNodeAuth from "@azure/ms-rest-nodeauth"; -import { ComputeManagementClient, ComputeManagementModels, ComputeManagementMappers } from "@azure/arm-compute-profile-2019-03-01-hybrid"; +```javascript +const { DefaultAzureCredential } = require("@azure/identity"); +const { ComputeManagementClient } = require("@azure/arm-compute-profile-2019-03-01-hybrid"); const subscriptionId = process.env["AZURE_SUBSCRIPTION_ID"]; -msRestNodeAuth.interactiveLogin().then((creds) => { - const client = new ComputeManagementClient(creds, subscriptionId); - client.operations.list().then((result) => { - console.log("The result is:"); - console.log(result); - }); +// Use `DefaultAzureCredential` or any other credential of your choice based on https://aka.ms/azsdk/js/identity/examples +// Please note that you can also use credentials from the `@azure/ms-rest-nodeauth` package instead. +const creds = new DefaultAzureCredential(); +const client = new ComputeManagementClient(creds, subscriptionId); + +client.operations.list().then((result) => { + console.log("The result is:"); + console.log(result); }).catch((err) => { + console.log("An error occurred:"); console.error(err); }); ``` -#### browser - Authentication, client creation and list operations as an example written in JavaScript. +#### browser - Authentication, client creation, and list operations as an example written in JavaScript. -##### Install @azure/ms-rest-browserauth - -```bash -npm install @azure/ms-rest-browserauth -``` +In browser applications, we recommend using the `InteractiveBrowserCredential` that interactively authenticates using the default system browser. + - See [Single-page application: App registration guide](https://docs.microsoft.com/azure/active-directory/develop/scenario-spa-app-registration) to configure your app registration for the browser. + - Note down the client Id from the previous step and use it in the browser sample below. ##### Sample code -See https://github.com/Azure/ms-rest-browserauth to learn how to authenticate to Azure in the browser. - - index.html + ```html @azure/arm-compute-profile-2019-03-01-hybrid sample - - + @@ -95,5 +106,4 @@ See https://github.com/Azure/ms-rest-browserauth to learn how to authenticate to - [Microsoft Azure SDK for Javascript](https://github.com/Azure/azure-sdk-for-js) - -![Impressions](https://azure-sdk-impressions.azurewebsites.net/api/impressions/azure-sdk-for-js%2Fsdk%2Fcompute%2Farm-compute-profile-2019-03-01-hybrid%2FREADME.png) +![Impressions](https://azure-sdk-impressions.azurewebsites.net/api/impressions/azure-sdk-for-js/sdk/compute/arm-compute-profile-2019-03-01-hybrid/README.png) diff --git a/sdk/compute/arm-compute-profile-2019-03-01-hybrid/package.json b/sdk/compute/arm-compute-profile-2019-03-01-hybrid/package.json index 2ad22338fb2d..196ec72599b6 100644 --- a/sdk/compute/arm-compute-profile-2019-03-01-hybrid/package.json +++ b/sdk/compute/arm-compute-profile-2019-03-01-hybrid/package.json @@ -2,10 +2,11 @@ "name": "@azure/arm-compute-profile-2019-03-01-hybrid", "author": "Microsoft Corporation", "description": "ComputeManagementClient Library with typescript type definitions for node.js and browser.", - "version": "1.0.0", + "version": "1.1.0", "dependencies": { - "@azure/ms-rest-azure-js": "^1.3.2", - "@azure/ms-rest-js": "^1.8.1", + "@azure/ms-rest-azure-js": "^1.4.0", + "@azure/ms-rest-js": "^1.11.0", + "@azure/core-auth": "^1.1.4", "tslib": "^1.9.3" }, "keywords": [ @@ -21,7 +22,7 @@ "module": "./esm/computeManagementClient.js", "types": "./esm/computeManagementClient.d.ts", "devDependencies": { - "typescript": "^3.1.1", + "typescript": "^3.6.0", "rollup": "^0.66.2", "rollup-plugin-node-resolve": "^3.4.0", "rollup-plugin-sourcemaps": "^0.4.2", diff --git a/sdk/compute/arm-compute-profile-2019-03-01-hybrid/src/computeManagementClient.ts b/sdk/compute/arm-compute-profile-2019-03-01-hybrid/src/computeManagementClient.ts index 7717ff363ef5..70faef5380b9 100644 --- a/sdk/compute/arm-compute-profile-2019-03-01-hybrid/src/computeManagementClient.ts +++ b/sdk/compute/arm-compute-profile-2019-03-01-hybrid/src/computeManagementClient.ts @@ -9,6 +9,7 @@ */ import * as msRest from "@azure/ms-rest-js"; +import { TokenCredential } from "@azure/core-auth"; import * as Models from "./models"; import * as Mappers from "./models/mappers"; import * as operations from "./operations"; @@ -36,12 +37,17 @@ class ComputeManagementClient extends ComputeManagementClientContext { /** * Initializes a new instance of the ComputeManagementClient class. - * @param credentials Credentials needed for the client to connect to Azure. + * @param credentials Credentials needed for the client to connect to Azure. Credentials + * implementing the TokenCredential interface from the @azure/identity package are recommended. For + * more information about these credentials, see + * {@link https://www.npmjs.com/package/@azure/identity}. Credentials implementing the + * ServiceClientCredentials interface from the older packages @azure/ms-rest-nodeauth and + * @azure/ms-rest-browserauth are also supported. * @param subscriptionId Subscription credentials which uniquely identify Microsoft Azure * subscription. The subscription ID forms part of the URI for every service call. * @param [options] The parameter options */ - constructor(credentials: msRest.ServiceClientCredentials, subscriptionId: string, options?: Models.ComputeManagementClientOptions) { + constructor(credentials: msRest.ServiceClientCredentials | TokenCredential, subscriptionId: string, options?: Models.ComputeManagementClientOptions) { super(credentials, subscriptionId, options); this.operations = new operations.Operations(this); this.availabilitySets = new operations.AvailabilitySets(this); diff --git a/sdk/compute/arm-compute-profile-2019-03-01-hybrid/src/computeManagementClientContext.ts b/sdk/compute/arm-compute-profile-2019-03-01-hybrid/src/computeManagementClientContext.ts index cb5d78ac19ed..a730670ee6b3 100644 --- a/sdk/compute/arm-compute-profile-2019-03-01-hybrid/src/computeManagementClientContext.ts +++ b/sdk/compute/arm-compute-profile-2019-03-01-hybrid/src/computeManagementClientContext.ts @@ -10,23 +10,29 @@ import * as Models from "./models"; import * as msRest from "@azure/ms-rest-js"; +import { TokenCredential } from "@azure/core-auth"; import * as msRestAzure from "@azure/ms-rest-azure-js"; const packageName = "@azure/arm-compute-profile-2019-03-01-hybrid"; -const packageVersion = "1.0.0"; +const packageVersion = "1.1.0"; export class ComputeManagementClientContext extends msRestAzure.AzureServiceClient { - credentials: msRest.ServiceClientCredentials; + credentials: msRest.ServiceClientCredentials | TokenCredential; subscriptionId: string; /** * Initializes a new instance of the ComputeManagementClient class. - * @param credentials Credentials needed for the client to connect to Azure. + * @param credentials Credentials needed for the client to connect to Azure. Credentials + * implementing the TokenCredential interface from the @azure/identity package are recommended. For + * more information about these credentials, see + * {@link https://www.npmjs.com/package/@azure/identity}. Credentials implementing the + * ServiceClientCredentials interface from the older packages @azure/ms-rest-nodeauth and + * @azure/ms-rest-browserauth are also supported. * @param subscriptionId Subscription credentials which uniquely identify Microsoft Azure * subscription. The subscription ID forms part of the URI for every service call. * @param [options] The parameter options */ - constructor(credentials: msRest.ServiceClientCredentials, subscriptionId: string, options?: Models.ComputeManagementClientOptions) { + constructor(credentials: msRest.ServiceClientCredentials | TokenCredential, subscriptionId: string, options?: Models.ComputeManagementClientOptions) { if (credentials == undefined) { throw new Error('\'credentials\' cannot be null.'); } diff --git a/sdk/compute/arm-compute-profile-2020-09-01-hybrid/README.md b/sdk/compute/arm-compute-profile-2020-09-01-hybrid/README.md index 0e725eab0838..7369c32125c9 100644 --- a/sdk/compute/arm-compute-profile-2020-09-01-hybrid/README.md +++ b/sdk/compute/arm-compute-profile-2020-09-01-hybrid/README.md @@ -1,90 +1,100 @@ ## Azure ComputeManagementClient SDK for JavaScript -This package contains an isomorphic SDK for ComputeManagementClient. +This package contains an isomorphic SDK (runs both in Node.js and in browsers) for ComputeManagementClient. ### Currently supported environments -- Node.js version 6.x.x or higher -- Browser JavaScript +- [LTS versions of Node.js](https://nodejs.org/about/releases/) +- Latest versions of Safari, Chrome, Edge, and Firefox. -### How to Install +### Prerequisites +You must have an [Azure subscription](https://azure.microsoft.com/free/). + +### How to install + +To use this SDK in your project, you will need to install two packages. +- `@azure/arm-compute-profile-2020-09-01-hybrid` that contains the client. +- `@azure/identity` that provides different mechanisms for the client to authenticate your requests using Azure Active Directory. + +Install both packages using the below command: ```bash -npm install @azure/arm-compute-profile-2020-09-01-hybrid +npm install --save @azure/arm-compute-profile-2020-09-01-hybrid @azure/identity ``` +> **Note**: You may have used either `@azure/ms-rest-nodeauth` or `@azure/ms-rest-browserauth` in the past. These packages are in maintenance mode receiving critical bug fixes, but no new features. +If you are on a [Node.js that has LTS status](https://nodejs.org/about/releases/), or are writing a client side browser application, we strongly encourage you to upgrade to `@azure/identity` which uses the latest versions of Azure Active Directory and MSAL APIs and provides more authentication options. + ### How to use -#### nodejs - Authentication, client creation and list operations as an example written in TypeScript. +- If you are writing a client side browser application, + - Follow the instructions in the section on Authenticating client side browser applications in [Azure Identity examples](https://aka.ms/azsdk/js/identity/examples) to register your application in the Microsoft identity platform and set the right permissions. + - Copy the client ID and tenant ID from the Overview section of your app registration in Azure portal and use it in the browser sample below. +- If you are writing a server side application, + - [Select a credential from `@azure/identity` based on the authentication method of your choice](https://aka.ms/azsdk/js/identity/examples) + - Complete the set up steps required by the credential if any. + - Use the credential you picked in the place of `DefaultAzureCredential` in the Node.js sample below. -##### Install @azure/ms-rest-nodeauth +In the below samples, we pass the credential and the Azure subscription id to instantiate the client. +Once the client is created, explore the operations on it either in your favorite editor or in our [API reference documentation](https://docs.microsoft.com/javascript/api) to get started. -- Please install minimum version of `"@azure/ms-rest-nodeauth": "^3.0.0"`. -```bash -npm install @azure/ms-rest-nodeauth@"^3.0.0" -``` +#### nodejs - Authentication, client creation, and list operations as an example written in JavaScript. ##### Sample code -```typescript -import * as msRest from "@azure/ms-rest-js"; -import * as msRestAzure from "@azure/ms-rest-azure-js"; -import * as msRestNodeAuth from "@azure/ms-rest-nodeauth"; -import { ComputeManagementClient, ComputeManagementModels, ComputeManagementMappers } from "@azure/arm-compute-profile-2020-09-01-hybrid"; +```javascript +const { DefaultAzureCredential } = require("@azure/identity"); +const { ComputeManagementClient } = require("@azure/arm-compute-profile-2020-09-01-hybrid"); const subscriptionId = process.env["AZURE_SUBSCRIPTION_ID"]; -msRestNodeAuth.interactiveLogin().then((creds) => { - const client = new ComputeManagementClient(creds, subscriptionId); - client.operations.list().then((result) => { - console.log("The result is:"); - console.log(result); - }); +// Use `DefaultAzureCredential` or any other credential of your choice based on https://aka.ms/azsdk/js/identity/examples +// Please note that you can also use credentials from the `@azure/ms-rest-nodeauth` package instead. +const creds = new DefaultAzureCredential(); +const client = new ComputeManagementClient(creds, subscriptionId); + +client.operations.list().then((result) => { + console.log("The result is:"); + console.log(result); }).catch((err) => { + console.log("An error occurred:"); console.error(err); }); ``` -#### browser - Authentication, client creation and list operations as an example written in JavaScript. - -##### Install @azure/ms-rest-browserauth +#### browser - Authentication, client creation, and list operations as an example written in JavaScript. -```bash -npm install @azure/ms-rest-browserauth -``` +In browser applications, we recommend using the `InteractiveBrowserCredential` that interactively authenticates using the default system browser. + - See [Single-page application: App registration guide](https://docs.microsoft.com/azure/active-directory/develop/scenario-spa-app-registration) to configure your app registration for the browser. + - Note down the client Id from the previous step and use it in the browser sample below. ##### Sample code -See https://github.com/Azure/ms-rest-browserauth to learn how to authenticate to Azure in the browser. - - index.html + ```html @azure/arm-compute-profile-2020-09-01-hybrid sample - - + diff --git a/sdk/compute/arm-compute-profile-2020-09-01-hybrid/package.json b/sdk/compute/arm-compute-profile-2020-09-01-hybrid/package.json index 199abcf82637..70f0b176486a 100644 --- a/sdk/compute/arm-compute-profile-2020-09-01-hybrid/package.json +++ b/sdk/compute/arm-compute-profile-2020-09-01-hybrid/package.json @@ -2,10 +2,11 @@ "name": "@azure/arm-compute-profile-2020-09-01-hybrid", "author": "Microsoft Corporation", "description": "ComputeManagementClient Library with typescript type definitions for node.js and browser.", - "version": "1.0.0", + "version": "1.1.0", "dependencies": { - "@azure/ms-rest-azure-js": "^2.0.1", - "@azure/ms-rest-js": "^2.0.4", + "@azure/ms-rest-azure-js": "^2.1.0", + "@azure/ms-rest-js": "^2.2.0", + "@azure/core-auth": "^1.1.4", "tslib": "^1.10.0" }, "keywords": [ @@ -20,7 +21,7 @@ "module": "./esm/computeManagementClient.js", "types": "./esm/computeManagementClient.d.ts", "devDependencies": { - "typescript": "^3.5.3", + "typescript": "^3.6.0", "rollup": "^1.18.0", "rollup-plugin-node-resolve": "^5.2.0", "rollup-plugin-sourcemaps": "^0.4.2", diff --git a/sdk/compute/arm-compute-profile-2020-09-01-hybrid/src/computeManagementClient.ts b/sdk/compute/arm-compute-profile-2020-09-01-hybrid/src/computeManagementClient.ts index 9ae1d6a5cf1f..6ae60a09db8b 100644 --- a/sdk/compute/arm-compute-profile-2020-09-01-hybrid/src/computeManagementClient.ts +++ b/sdk/compute/arm-compute-profile-2020-09-01-hybrid/src/computeManagementClient.ts @@ -9,6 +9,7 @@ */ import * as msRest from "@azure/ms-rest-js"; +import { TokenCredential } from "@azure/core-auth"; import * as Models from "./models"; import * as Mappers from "./models/mappers"; import * as operations from "./operations"; @@ -42,12 +43,17 @@ class ComputeManagementClient extends ComputeManagementClientContext { /** * Initializes a new instance of the ComputeManagementClient class. - * @param credentials Credentials needed for the client to connect to Azure. + * @param credentials Credentials needed for the client to connect to Azure. Credentials + * implementing the TokenCredential interface from the @azure/identity package are recommended. For + * more information about these credentials, see + * {@link https://www.npmjs.com/package/@azure/identity}. Credentials implementing the + * ServiceClientCredentials interface from the older packages @azure/ms-rest-nodeauth and + * @azure/ms-rest-browserauth are also supported. * @param subscriptionId Subscription credentials which uniquely identify Microsoft Azure * subscription. The subscription ID forms part of the URI for every service call. * @param [options] The parameter options */ - constructor(credentials: msRest.ServiceClientCredentials, subscriptionId: string, options?: Models.ComputeManagementClientOptions) { + constructor(credentials: msRest.ServiceClientCredentials | TokenCredential, subscriptionId: string, options?: Models.ComputeManagementClientOptions) { super(credentials, subscriptionId, options); this.operations = new operations.Operations(this); this.availabilitySets = new operations.AvailabilitySets(this); diff --git a/sdk/compute/arm-compute-profile-2020-09-01-hybrid/src/computeManagementClientContext.ts b/sdk/compute/arm-compute-profile-2020-09-01-hybrid/src/computeManagementClientContext.ts index b85d0e4ded9e..325e1c725f7e 100644 --- a/sdk/compute/arm-compute-profile-2020-09-01-hybrid/src/computeManagementClientContext.ts +++ b/sdk/compute/arm-compute-profile-2020-09-01-hybrid/src/computeManagementClientContext.ts @@ -10,23 +10,29 @@ import * as Models from "./models"; import * as msRest from "@azure/ms-rest-js"; +import { TokenCredential } from "@azure/core-auth"; import * as msRestAzure from "@azure/ms-rest-azure-js"; const packageName = "@azure/arm-compute-profile-2020-09-01-hybrid"; -const packageVersion = "1.0.0"; +const packageVersion = "1.1.0"; export class ComputeManagementClientContext extends msRestAzure.AzureServiceClient { - credentials: msRest.ServiceClientCredentials; + credentials: msRest.ServiceClientCredentials | TokenCredential; subscriptionId: string; /** * Initializes a new instance of the ComputeManagementClient class. - * @param credentials Credentials needed for the client to connect to Azure. + * @param credentials Credentials needed for the client to connect to Azure. Credentials + * implementing the TokenCredential interface from the @azure/identity package are recommended. For + * more information about these credentials, see + * {@link https://www.npmjs.com/package/@azure/identity}. Credentials implementing the + * ServiceClientCredentials interface from the older packages @azure/ms-rest-nodeauth and + * @azure/ms-rest-browserauth are also supported. * @param subscriptionId Subscription credentials which uniquely identify Microsoft Azure * subscription. The subscription ID forms part of the URI for every service call. * @param [options] The parameter options */ - constructor(credentials: msRest.ServiceClientCredentials, subscriptionId: string, options?: Models.ComputeManagementClientOptions) { + constructor(credentials: msRest.ServiceClientCredentials | TokenCredential, subscriptionId: string, options?: Models.ComputeManagementClientOptions) { if (credentials == undefined) { throw new Error('\'credentials\' cannot be null.'); } diff --git a/sdk/confluent/arm-confluent/README.md b/sdk/confluent/arm-confluent/README.md index 9ca2a62fcf35..41008e2f9e0c 100644 --- a/sdk/confluent/arm-confluent/README.md +++ b/sdk/confluent/arm-confluent/README.md @@ -1,89 +1,100 @@ ## Azure ConfluentManagementClient SDK for JavaScript -This package contains an isomorphic SDK for ConfluentManagementClient. +This package contains an isomorphic SDK (runs both in Node.js and in browsers) for ConfluentManagementClient. ### Currently supported environments -- Node.js version 6.x.x or higher -- Browser JavaScript +- [LTS versions of Node.js](https://nodejs.org/about/releases/) +- Latest versions of Safari, Chrome, Edge, and Firefox. -### How to Install +### Prerequisites +You must have an [Azure subscription](https://azure.microsoft.com/free/). + +### How to install + +To use this SDK in your project, you will need to install two packages. +- `@azure/arm-confluent` that contains the client. +- `@azure/identity` that provides different mechanisms for the client to authenticate your requests using Azure Active Directory. + +Install both packages using the below command: ```bash -npm install @azure/arm-confluent +npm install --save @azure/arm-confluent @azure/identity ``` +> **Note**: You may have used either `@azure/ms-rest-nodeauth` or `@azure/ms-rest-browserauth` in the past. These packages are in maintenance mode receiving critical bug fixes, but no new features. +If you are on a [Node.js that has LTS status](https://nodejs.org/about/releases/), or are writing a client side browser application, we strongly encourage you to upgrade to `@azure/identity` which uses the latest versions of Azure Active Directory and MSAL APIs and provides more authentication options. + ### How to use -#### nodejs - client creation and list marketplaceAgreements as an example written in TypeScript. +- If you are writing a client side browser application, + - Follow the instructions in the section on Authenticating client side browser applications in [Azure Identity examples](https://aka.ms/azsdk/js/identity/examples) to register your application in the Microsoft identity platform and set the right permissions. + - Copy the client ID and tenant ID from the Overview section of your app registration in Azure portal and use it in the browser sample below. +- If you are writing a server side application, + - [Select a credential from `@azure/identity` based on the authentication method of your choice](https://aka.ms/azsdk/js/identity/examples) + - Complete the set up steps required by the credential if any. + - Use the credential you picked in the place of `DefaultAzureCredential` in the Node.js sample below. -##### Install @azure/ms-rest-nodeauth +In the below samples, we pass the credential and the Azure subscription id to instantiate the client. +Once the client is created, explore the operations on it either in your favorite editor or in our [API reference documentation](https://docs.microsoft.com/javascript/api) to get started. -- Please install minimum version of `"@azure/ms-rest-nodeauth": "^3.0.0"`. -```bash -npm install @azure/ms-rest-nodeauth@"^3.0.0" -``` +#### nodejs - Authentication, client creation, and list marketplaceAgreements as an example written in JavaScript. ##### Sample code -While the below sample uses the interactive login, other authentication options can be found in the [README.md file of @azure/ms-rest-nodeauth](https://www.npmjs.com/package/@azure/ms-rest-nodeauth) package -```typescript -const msRestNodeAuth = require("@azure/ms-rest-nodeauth"); +```javascript +const { DefaultAzureCredential } = require("@azure/identity"); const { ConfluentManagementClient } = require("@azure/arm-confluent"); const subscriptionId = process.env["AZURE_SUBSCRIPTION_ID"]; -msRestNodeAuth.interactiveLogin().then((creds) => { - const client = new ConfluentManagementClient(creds, subscriptionId); - client.marketplaceAgreements.list().then((result) => { - console.log("The result is:"); - console.log(result); - }); +// Use `DefaultAzureCredential` or any other credential of your choice based on https://aka.ms/azsdk/js/identity/examples +// Please note that you can also use credentials from the `@azure/ms-rest-nodeauth` package instead. +const creds = new DefaultAzureCredential(); +const client = new ConfluentManagementClient(creds, subscriptionId); + +client.marketplaceAgreements.list().then((result) => { + console.log("The result is:"); + console.log(result); }).catch((err) => { + console.log("An error occurred:"); console.error(err); }); ``` -#### browser - Authentication, client creation and list marketplaceAgreements as an example written in JavaScript. - -##### Install @azure/ms-rest-browserauth +#### browser - Authentication, client creation, and list marketplaceAgreements as an example written in JavaScript. -```bash -npm install @azure/ms-rest-browserauth -``` +In browser applications, we recommend using the `InteractiveBrowserCredential` that interactively authenticates using the default system browser. + - See [Single-page application: App registration guide](https://docs.microsoft.com/azure/active-directory/develop/scenario-spa-app-registration) to configure your app registration for the browser. + - Note down the client Id from the previous step and use it in the browser sample below. ##### Sample code -See https://github.com/Azure/ms-rest-browserauth to learn how to authenticate to Azure in the browser. - - index.html + ```html @azure/arm-confluent sample - - + diff --git a/sdk/confluent/arm-confluent/package.json b/sdk/confluent/arm-confluent/package.json index 948efd97df24..c162f30e8f5e 100644 --- a/sdk/confluent/arm-confluent/package.json +++ b/sdk/confluent/arm-confluent/package.json @@ -2,10 +2,11 @@ "name": "@azure/arm-confluent", "author": "Microsoft Corporation", "description": "ConfluentManagementClient Library with typescript type definitions for node.js and browser.", - "version": "2.0.0", + "version": "2.1.0", "dependencies": { - "@azure/ms-rest-azure-js": "^2.0.1", - "@azure/ms-rest-js": "^2.0.4", + "@azure/ms-rest-azure-js": "^2.1.0", + "@azure/ms-rest-js": "^2.2.0", + "@azure/core-auth": "^1.1.4", "tslib": "^1.10.0" }, "keywords": [ @@ -20,7 +21,7 @@ "module": "./esm/confluentManagementClient.js", "types": "./esm/confluentManagementClient.d.ts", "devDependencies": { - "typescript": "^3.5.3", + "typescript": "^3.6.0", "rollup": "^1.18.0", "rollup-plugin-node-resolve": "^5.2.0", "rollup-plugin-sourcemaps": "^0.4.2", diff --git a/sdk/confluent/arm-confluent/src/confluentManagementClient.ts b/sdk/confluent/arm-confluent/src/confluentManagementClient.ts index 60039d7957d1..fc7af6cbdb46 100644 --- a/sdk/confluent/arm-confluent/src/confluentManagementClient.ts +++ b/sdk/confluent/arm-confluent/src/confluentManagementClient.ts @@ -8,6 +8,7 @@ */ import * as msRest from "@azure/ms-rest-js"; +import { TokenCredential } from "@azure/core-auth"; import * as Models from "./models"; import * as Mappers from "./models/mappers"; import * as operations from "./operations"; @@ -22,12 +23,17 @@ class ConfluentManagementClient extends ConfluentManagementClientContext { /** * Initializes a new instance of the ConfluentManagementClient class. - * @param credentials Credentials needed for the client to connect to Azure. + * @param credentials Credentials needed for the client to connect to Azure. Credentials + * implementing the TokenCredential interface from the @azure/identity package are recommended. For + * more information about these credentials, see + * {@link https://www.npmjs.com/package/@azure/identity}. Credentials implementing the + * ServiceClientCredentials interface from the older packages @azure/ms-rest-nodeauth and + * @azure/ms-rest-browserauth are also supported. * @param subscriptionId Microsoft Azure subscription id * @param [options] The parameter options */ constructor( - credentials: msRest.ServiceClientCredentials, + credentials: msRest.ServiceClientCredentials | TokenCredential, subscriptionId: string, options?: Models.ConfluentManagementClientOptions ) { diff --git a/sdk/confluent/arm-confluent/src/confluentManagementClientContext.ts b/sdk/confluent/arm-confluent/src/confluentManagementClientContext.ts index 8714f2bdeebd..e40c2e8002a2 100644 --- a/sdk/confluent/arm-confluent/src/confluentManagementClientContext.ts +++ b/sdk/confluent/arm-confluent/src/confluentManagementClientContext.ts @@ -9,24 +9,30 @@ import * as Models from "./models"; import * as msRest from "@azure/ms-rest-js"; +import { TokenCredential } from "@azure/core-auth"; import * as msRestAzure from "@azure/ms-rest-azure-js"; const packageName = "@azure/arm-confluent"; -const packageVersion = "2.0.0"; +const packageVersion = "2.1.0"; export class ConfluentManagementClientContext extends msRestAzure.AzureServiceClient { - credentials: msRest.ServiceClientCredentials; + credentials: msRest.ServiceClientCredentials | TokenCredential; apiVersion?: string; subscriptionId: string; /** * Initializes a new instance of the ConfluentManagementClient class. - * @param credentials Credentials needed for the client to connect to Azure. + * @param credentials Credentials needed for the client to connect to Azure. Credentials + * implementing the TokenCredential interface from the @azure/identity package are recommended. For + * more information about these credentials, see + * {@link https://www.npmjs.com/package/@azure/identity}. Credentials implementing the + * ServiceClientCredentials interface from the older packages @azure/ms-rest-nodeauth and + * @azure/ms-rest-browserauth are also supported. * @param subscriptionId Microsoft Azure subscription id * @param [options] The parameter options */ constructor( - credentials: msRest.ServiceClientCredentials, + credentials: msRest.ServiceClientCredentials | TokenCredential, subscriptionId: string, options?: Models.ConfluentManagementClientOptions ) { diff --git a/sdk/consumption/arm-consumption/README.md b/sdk/consumption/arm-consumption/README.md index de366b0db722..f89dec55ae63 100644 --- a/sdk/consumption/arm-consumption/README.md +++ b/sdk/consumption/arm-consumption/README.md @@ -1,70 +1,78 @@ ## Azure ConsumptionManagementClient SDK for JavaScript -This package contains an isomorphic SDK for ConsumptionManagementClient. +This package contains an isomorphic SDK (runs both in Node.js and in browsers) for ConsumptionManagementClient. ### Currently supported environments -- Node.js version 6.x.x or higher -- Browser JavaScript +- [LTS versions of Node.js](https://nodejs.org/about/releases/) +- Latest versions of Safari, Chrome, Edge, and Firefox. -### How to Install +### Prerequisites +You must have an [Azure subscription](https://azure.microsoft.com/free/). + +### How to install + +To use this SDK in your project, you will need to install two packages. +- `@azure/arm-consumption` that contains the client. +- `@azure/identity` that provides different mechanisms for the client to authenticate your requests using Azure Active Directory. + +Install both packages using the below command: ```bash -npm install @azure/arm-consumption +npm install --save @azure/arm-consumption @azure/identity ``` -### How to use +> **Note**: You may have used either `@azure/ms-rest-nodeauth` or `@azure/ms-rest-browserauth` in the past. These packages are in maintenance mode receiving critical bug fixes, but no new features. +If you are on a [Node.js that has LTS status](https://nodejs.org/about/releases/), or are writing a client side browser application, we strongly encourage you to upgrade to `@azure/identity` which uses the latest versions of Azure Active Directory and MSAL APIs and provides more authentication options. -#### nodejs - client creation and list usageDetails as an example written in TypeScript. +### How to use -##### Install @azure/ms-rest-nodeauth +- If you are writing a client side browser application, + - Follow the instructions in the section on Authenticating client side browser applications in [Azure Identity examples](https://aka.ms/azsdk/js/identity/examples) to register your application in the Microsoft identity platform and set the right permissions. + - Copy the client ID and tenant ID from the Overview section of your app registration in Azure portal and use it in the browser sample below. +- If you are writing a server side application, + - [Select a credential from `@azure/identity` based on the authentication method of your choice](https://aka.ms/azsdk/js/identity/examples) + - Complete the set up steps required by the credential if any. + - Use the credential you picked in the place of `DefaultAzureCredential` in the Node.js sample below. -- Please install minimum version of `"@azure/ms-rest-nodeauth": "^3.0.0"`. +In the below samples, we pass the credential and the Azure subscription id to instantiate the client. +Once the client is created, explore the operations on it either in your favorite editor or in our [API reference documentation](https://docs.microsoft.com/javascript/api) to get started. -```bash -npm install @azure/ms-rest-nodeauth@"^3.0.0" -``` +#### nodejs - Authentication, client creation, and list usageDetails as an example written in JavaScript. ##### Sample code -While the below sample uses the interactive login, other authentication options can be found in the [README.md file of @azure/ms-rest-nodeauth](https://www.npmjs.com/package/@azure/ms-rest-nodeauth) package - -```typescript -const msRestNodeAuth = require("@azure/ms-rest-nodeauth"); +```javascript +const { DefaultAzureCredential } = require("@azure/identity"); const { ConsumptionManagementClient } = require("@azure/arm-consumption"); const subscriptionId = process.env["AZURE_SUBSCRIPTION_ID"]; -msRestNodeAuth - .interactiveLogin() - .then((creds) => { - const client = new ConsumptionManagementClient(creds, subscriptionId); - const expand = "testexpand"; - const filter = "testfilter"; - const skiptoken = "testskiptoken"; - const top = 1; - const apply = "testapply"; - client.usageDetails.list(expand, filter, skiptoken, top, apply).then((result) => { - console.log("The result is:"); - console.log(result); - }); - }) - .catch((err) => { - console.error(err); - }); +// Use `DefaultAzureCredential` or any other credential of your choice based on https://aka.ms/azsdk/js/identity/examples +// Please note that you can also use credentials from the `@azure/ms-rest-nodeauth` package instead. +const creds = new DefaultAzureCredential(); +const client = new ConsumptionManagementClient(creds, subscriptionId); +const expand = "testexpand"; +const filter = "testfilter"; +const skiptoken = "testskiptoken"; +const top = 1; +const apply = "testapply"; +client.usageDetails.list(expand, filter, skiptoken, top, apply).then((result) => { + console.log("The result is:"); + console.log(result); +}).catch((err) => { + console.log("An error occurred:"); + console.error(err); +}); ``` -#### browser - Authentication, client creation and list usageDetails as an example written in JavaScript. - -##### Install @azure/ms-rest-browserauth +#### browser - Authentication, client creation, and list usageDetails as an example written in JavaScript. -```bash -npm install @azure/ms-rest-browserauth -``` +In browser applications, we recommend using the `InteractiveBrowserCredential` that interactively authenticates using the default system browser. + - See [Single-page application: App registration guide](https://docs.microsoft.com/azure/active-directory/develop/scenario-spa-app-registration) to configure your app registration for the browser. + - Note down the client Id from the previous step and use it in the browser sample below. ##### Sample code -See https://github.com/Azure/ms-rest-browserauth to learn how to authenticate to Azure in the browser. - - index.html ```html @@ -72,40 +80,30 @@ See https://github.com/Azure/ms-rest-browserauth to learn how to authenticate to @azure/arm-consumption sample - - + diff --git a/sdk/consumption/arm-consumption/package.json b/sdk/consumption/arm-consumption/package.json index 0630b1c7652d..d1928028ae1c 100644 --- a/sdk/consumption/arm-consumption/package.json +++ b/sdk/consumption/arm-consumption/package.json @@ -2,10 +2,11 @@ "name": "@azure/arm-consumption", "author": "Microsoft Corporation", "description": "ConsumptionManagementClient Library with typescript type definitions for node.js and browser.", - "version": "7.0.0", + "version": "7.1.0", "dependencies": { - "@azure/ms-rest-azure-js": "^2.0.1", - "@azure/ms-rest-js": "^2.0.4", + "@azure/ms-rest-azure-js": "^2.1.0", + "@azure/ms-rest-js": "^2.2.0", + "@azure/core-auth": "^1.1.4", "tslib": "^1.10.0" }, "keywords": [ @@ -20,7 +21,7 @@ "module": "./esm/consumptionManagementClient.js", "types": "./esm/consumptionManagementClient.d.ts", "devDependencies": { - "typescript": "^3.5.3", + "typescript": "^3.6.0", "rollup": "^1.18.0", "rollup-plugin-node-resolve": "^5.2.0", "rollup-plugin-sourcemaps": "^0.4.2", diff --git a/sdk/consumption/arm-consumption/src/consumptionManagementClient.ts b/sdk/consumption/arm-consumption/src/consumptionManagementClient.ts index b22a01878ab6..d9b9c1705ca0 100644 --- a/sdk/consumption/arm-consumption/src/consumptionManagementClient.ts +++ b/sdk/consumption/arm-consumption/src/consumptionManagementClient.ts @@ -8,6 +8,7 @@ */ import * as msRest from "@azure/ms-rest-js"; +import { TokenCredential } from "@azure/core-auth"; import * as Models from "./models"; import * as Mappers from "./models/mappers"; import * as operations from "./operations"; @@ -32,12 +33,17 @@ class ConsumptionManagementClient extends ConsumptionManagementClientContext { /** * Initializes a new instance of the ConsumptionManagementClient class. - * @param credentials Credentials needed for the client to connect to Azure. + * @param credentials Credentials needed for the client to connect to Azure. Credentials + * implementing the TokenCredential interface from the @azure/identity package are recommended. For + * more information about these credentials, see + * {@link https://www.npmjs.com/package/@azure/identity}. Credentials implementing the + * ServiceClientCredentials interface from the older packages @azure/ms-rest-nodeauth and + * @azure/ms-rest-browserauth are also supported. * @param subscriptionId Azure Subscription ID. * @param [options] The parameter options */ constructor( - credentials: msRest.ServiceClientCredentials, + credentials: msRest.ServiceClientCredentials | TokenCredential, subscriptionId: string, options?: Models.ConsumptionManagementClientOptions ) { diff --git a/sdk/consumption/arm-consumption/src/consumptionManagementClientContext.ts b/sdk/consumption/arm-consumption/src/consumptionManagementClientContext.ts index 3a780eadfee0..072c5c28af97 100644 --- a/sdk/consumption/arm-consumption/src/consumptionManagementClientContext.ts +++ b/sdk/consumption/arm-consumption/src/consumptionManagementClientContext.ts @@ -9,24 +9,30 @@ import * as Models from "./models"; import * as msRest from "@azure/ms-rest-js"; +import { TokenCredential } from "@azure/core-auth"; import * as msRestAzure from "@azure/ms-rest-azure-js"; const packageName = "@azure/arm-consumption"; -const packageVersion = "7.0.0"; +const packageVersion = "7.1.0"; export class ConsumptionManagementClientContext extends msRestAzure.AzureServiceClient { - credentials: msRest.ServiceClientCredentials; + credentials: msRest.ServiceClientCredentials | TokenCredential; apiVersion?: string; subscriptionId: string; /** * Initializes a new instance of the ConsumptionManagementClient class. - * @param credentials Credentials needed for the client to connect to Azure. + * @param credentials Credentials needed for the client to connect to Azure. Credentials + * implementing the TokenCredential interface from the @azure/identity package are recommended. For + * more information about these credentials, see + * {@link https://www.npmjs.com/package/@azure/identity}. Credentials implementing the + * ServiceClientCredentials interface from the older packages @azure/ms-rest-nodeauth and + * @azure/ms-rest-browserauth are also supported. * @param subscriptionId Azure Subscription ID. * @param [options] The parameter options */ constructor( - credentials: msRest.ServiceClientCredentials, + credentials: msRest.ServiceClientCredentials | TokenCredential, subscriptionId: string, options?: Models.ConsumptionManagementClientOptions ) { diff --git a/sdk/containerinstance/arm-containerinstance/README.md b/sdk/containerinstance/arm-containerinstance/README.md index 8dc6a1b42563..3cd6f8bf240c 100644 --- a/sdk/containerinstance/arm-containerinstance/README.md +++ b/sdk/containerinstance/arm-containerinstance/README.md @@ -1,89 +1,100 @@ ## Azure ContainerInstanceManagementClient SDK for JavaScript -This package contains an isomorphic SDK for ContainerInstanceManagementClient. +This package contains an isomorphic SDK (runs both in Node.js and in browsers) for ContainerInstanceManagementClient. ### Currently supported environments -- Node.js version 6.x.x or higher -- Browser JavaScript +- [LTS versions of Node.js](https://nodejs.org/about/releases/) +- Latest versions of Safari, Chrome, Edge, and Firefox. -### How to Install +### Prerequisites +You must have an [Azure subscription](https://azure.microsoft.com/free/). + +### How to install + +To use this SDK in your project, you will need to install two packages. +- `@azure/arm-containerinstance` that contains the client. +- `@azure/identity` that provides different mechanisms for the client to authenticate your requests using Azure Active Directory. + +Install both packages using the below command: ```bash -npm install @azure/arm-containerinstance +npm install --save @azure/arm-containerinstance @azure/identity ``` +> **Note**: You may have used either `@azure/ms-rest-nodeauth` or `@azure/ms-rest-browserauth` in the past. These packages are in maintenance mode receiving critical bug fixes, but no new features. +If you are on a [Node.js that has LTS status](https://nodejs.org/about/releases/), or are writing a client side browser application, we strongly encourage you to upgrade to `@azure/identity` which uses the latest versions of Azure Active Directory and MSAL APIs and provides more authentication options. + ### How to use -#### nodejs - client creation and list containerGroups as an example written in TypeScript. +- If you are writing a client side browser application, + - Follow the instructions in the section on Authenticating client side browser applications in [Azure Identity examples](https://aka.ms/azsdk/js/identity/examples) to register your application in the Microsoft identity platform and set the right permissions. + - Copy the client ID and tenant ID from the Overview section of your app registration in Azure portal and use it in the browser sample below. +- If you are writing a server side application, + - [Select a credential from `@azure/identity` based on the authentication method of your choice](https://aka.ms/azsdk/js/identity/examples) + - Complete the set up steps required by the credential if any. + - Use the credential you picked in the place of `DefaultAzureCredential` in the Node.js sample below. -##### Install @azure/ms-rest-nodeauth +In the below samples, we pass the credential and the Azure subscription id to instantiate the client. +Once the client is created, explore the operations on it either in your favorite editor or in our [API reference documentation](https://docs.microsoft.com/javascript/api) to get started. -- Please install minimum version of `"@azure/ms-rest-nodeauth": "^3.0.0"`. -```bash -npm install @azure/ms-rest-nodeauth@"^3.0.0" -``` +#### nodejs - Authentication, client creation, and list containerGroups as an example written in JavaScript. ##### Sample code -While the below sample uses the interactive login, other authentication options can be found in the [README.md file of @azure/ms-rest-nodeauth](https://www.npmjs.com/package/@azure/ms-rest-nodeauth) package -```typescript -const msRestNodeAuth = require("@azure/ms-rest-nodeauth"); +```javascript +const { DefaultAzureCredential } = require("@azure/identity"); const { ContainerInstanceManagementClient } = require("@azure/arm-containerinstance"); const subscriptionId = process.env["AZURE_SUBSCRIPTION_ID"]; -msRestNodeAuth.interactiveLogin().then((creds) => { - const client = new ContainerInstanceManagementClient(creds, subscriptionId); - client.containerGroups.list().then((result) => { - console.log("The result is:"); - console.log(result); - }); +// Use `DefaultAzureCredential` or any other credential of your choice based on https://aka.ms/azsdk/js/identity/examples +// Please note that you can also use credentials from the `@azure/ms-rest-nodeauth` package instead. +const creds = new DefaultAzureCredential(); +const client = new ContainerInstanceManagementClient(creds, subscriptionId); + +client.containerGroups.list().then((result) => { + console.log("The result is:"); + console.log(result); }).catch((err) => { + console.log("An error occurred:"); console.error(err); }); ``` -#### browser - Authentication, client creation and list containerGroups as an example written in JavaScript. - -##### Install @azure/ms-rest-browserauth +#### browser - Authentication, client creation, and list containerGroups as an example written in JavaScript. -```bash -npm install @azure/ms-rest-browserauth -``` +In browser applications, we recommend using the `InteractiveBrowserCredential` that interactively authenticates using the default system browser. + - See [Single-page application: App registration guide](https://docs.microsoft.com/azure/active-directory/develop/scenario-spa-app-registration) to configure your app registration for the browser. + - Note down the client Id from the previous step and use it in the browser sample below. ##### Sample code -See https://github.com/Azure/ms-rest-browserauth to learn how to authenticate to Azure in the browser. - - index.html + ```html @azure/arm-containerinstance sample - - + diff --git a/sdk/containerinstance/arm-containerinstance/package.json b/sdk/containerinstance/arm-containerinstance/package.json index d838e3794d2d..79fcc23fb81d 100644 --- a/sdk/containerinstance/arm-containerinstance/package.json +++ b/sdk/containerinstance/arm-containerinstance/package.json @@ -2,10 +2,11 @@ "name": "@azure/arm-containerinstance", "author": "Microsoft Corporation", "description": "ContainerInstanceManagementClient Library with typescript type definitions for node.js and browser.", - "version": "6.1.0", + "version": "6.2.0", "dependencies": { - "@azure/ms-rest-azure-js": "^2.0.1", - "@azure/ms-rest-js": "^2.0.4", + "@azure/ms-rest-azure-js": "^2.1.0", + "@azure/ms-rest-js": "^2.2.0", + "@azure/core-auth": "^1.1.4", "tslib": "^1.10.0" }, "keywords": [ @@ -20,7 +21,7 @@ "module": "./esm/containerInstanceManagementClient.js", "types": "./esm/containerInstanceManagementClient.d.ts", "devDependencies": { - "typescript": "^3.5.3", + "typescript": "^3.6.0", "rollup": "^1.18.0", "rollup-plugin-node-resolve": "^5.2.0", "rollup-plugin-sourcemaps": "^0.4.2", diff --git a/sdk/containerinstance/arm-containerinstance/src/containerInstanceManagementClient.ts b/sdk/containerinstance/arm-containerinstance/src/containerInstanceManagementClient.ts index 0fb60a54b53e..fd8bb11807b4 100644 --- a/sdk/containerinstance/arm-containerinstance/src/containerInstanceManagementClient.ts +++ b/sdk/containerinstance/arm-containerinstance/src/containerInstanceManagementClient.ts @@ -8,6 +8,7 @@ */ import * as msRest from "@azure/ms-rest-js"; +import { TokenCredential } from "@azure/core-auth"; import * as Models from "./models"; import * as Mappers from "./models/mappers"; import * as operations from "./operations"; @@ -23,12 +24,17 @@ class ContainerInstanceManagementClient extends ContainerInstanceManagementClien /** * Initializes a new instance of the ContainerInstanceManagementClient class. - * @param credentials Credentials needed for the client to connect to Azure. + * @param credentials Credentials needed for the client to connect to Azure. Credentials + * implementing the TokenCredential interface from the @azure/identity package are recommended. For + * more information about these credentials, see + * {@link https://www.npmjs.com/package/@azure/identity}. Credentials implementing the + * ServiceClientCredentials interface from the older packages @azure/ms-rest-nodeauth and + * @azure/ms-rest-browserauth are also supported. * @param subscriptionId Subscription credentials which uniquely identify Microsoft Azure * subscription. The subscription ID forms part of the URI for every service call. * @param [options] The parameter options */ - constructor(credentials: msRest.ServiceClientCredentials, subscriptionId: string, options?: Models.ContainerInstanceManagementClientOptions) { + constructor(credentials: msRest.ServiceClientCredentials | TokenCredential, subscriptionId: string, options?: Models.ContainerInstanceManagementClientOptions) { super(credentials, subscriptionId, options); this.containerGroups = new operations.ContainerGroups(this); this.operations = new operations.Operations(this); diff --git a/sdk/containerinstance/arm-containerinstance/src/containerInstanceManagementClientContext.ts b/sdk/containerinstance/arm-containerinstance/src/containerInstanceManagementClientContext.ts index c86399f5c7ea..dac70a4356bd 100644 --- a/sdk/containerinstance/arm-containerinstance/src/containerInstanceManagementClientContext.ts +++ b/sdk/containerinstance/arm-containerinstance/src/containerInstanceManagementClientContext.ts @@ -9,24 +9,30 @@ import * as Models from "./models"; import * as msRest from "@azure/ms-rest-js"; +import { TokenCredential } from "@azure/core-auth"; import * as msRestAzure from "@azure/ms-rest-azure-js"; const packageName = "@azure/arm-containerinstance"; -const packageVersion = "6.1.0"; +const packageVersion = "6.2.0"; export class ContainerInstanceManagementClientContext extends msRestAzure.AzureServiceClient { - credentials: msRest.ServiceClientCredentials; + credentials: msRest.ServiceClientCredentials | TokenCredential; subscriptionId: string; apiVersion?: string; /** * Initializes a new instance of the ContainerInstanceManagementClient class. - * @param credentials Credentials needed for the client to connect to Azure. + * @param credentials Credentials needed for the client to connect to Azure. Credentials + * implementing the TokenCredential interface from the @azure/identity package are recommended. For + * more information about these credentials, see + * {@link https://www.npmjs.com/package/@azure/identity}. Credentials implementing the + * ServiceClientCredentials interface from the older packages @azure/ms-rest-nodeauth and + * @azure/ms-rest-browserauth are also supported. * @param subscriptionId Subscription credentials which uniquely identify Microsoft Azure * subscription. The subscription ID forms part of the URI for every service call. * @param [options] The parameter options */ - constructor(credentials: msRest.ServiceClientCredentials, subscriptionId: string, options?: Models.ContainerInstanceManagementClientOptions) { + constructor(credentials: msRest.ServiceClientCredentials | TokenCredential, subscriptionId: string, options?: Models.ContainerInstanceManagementClientOptions) { if (credentials == undefined) { throw new Error('\'credentials\' cannot be null.'); } diff --git a/sdk/containerregistry/arm-containerregistry/README.md b/sdk/containerregistry/arm-containerregistry/README.md index 2afe51005264..f4fd8ab3ba79 100644 --- a/sdk/containerregistry/arm-containerregistry/README.md +++ b/sdk/containerregistry/arm-containerregistry/README.md @@ -1,96 +1,105 @@ ## Azure ContainerRegistryManagementClient SDK for JavaScript -This package contains an isomorphic SDK for ContainerRegistryManagementClient. +This package contains an isomorphic SDK (runs both in Node.js and in browsers) for ContainerRegistryManagementClient. ### Currently supported environments -- Node.js version 6.x.x or higher -- Browser JavaScript +- [LTS versions of Node.js](https://nodejs.org/about/releases/) +- Latest versions of Safari, Chrome, Edge, and Firefox. -### How to Install +### Prerequisites +You must have an [Azure subscription](https://azure.microsoft.com/free/). + +### How to install + +To use this SDK in your project, you will need to install two packages. +- `@azure/arm-containerregistry` that contains the client. +- `@azure/identity` that provides different mechanisms for the client to authenticate your requests using Azure Active Directory. + +Install both packages using the below command: ```bash -npm install @azure/arm-containerregistry +npm install --save @azure/arm-containerregistry @azure/identity ``` +> **Note**: You may have used either `@azure/ms-rest-nodeauth` or `@azure/ms-rest-browserauth` in the past. These packages are in maintenance mode receiving critical bug fixes, but no new features. +If you are on a [Node.js that has LTS status](https://nodejs.org/about/releases/), or are writing a client side browser application, we strongly encourage you to upgrade to `@azure/identity` which uses the latest versions of Azure Active Directory and MSAL APIs and provides more authentication options. + ### How to use -#### nodejs - Authentication, client creation and get exportPipelines as an example written in TypeScript. +- If you are writing a client side browser application, + - Follow the instructions in the section on Authenticating client side browser applications in [Azure Identity examples](https://aka.ms/azsdk/js/identity/examples) to register your application in the Microsoft identity platform and set the right permissions. + - Copy the client ID and tenant ID from the Overview section of your app registration in Azure portal and use it in the browser sample below. +- If you are writing a server side application, + - [Select a credential from `@azure/identity` based on the authentication method of your choice](https://aka.ms/azsdk/js/identity/examples) + - Complete the set up steps required by the credential if any. + - Use the credential you picked in the place of `DefaultAzureCredential` in the Node.js sample below. -##### Install @azure/ms-rest-nodeauth +In the below samples, we pass the credential and the Azure subscription id to instantiate the client. +Once the client is created, explore the operations on it either in your favorite editor or in our [API reference documentation](https://docs.microsoft.com/javascript/api) to get started. -- Please install minimum version of `"@azure/ms-rest-nodeauth": "^3.0.0"`. -```bash -npm install @azure/ms-rest-nodeauth@"^3.0.0" -``` +#### nodejs - Authentication, client creation, and get exportPipelines as an example written in JavaScript. ##### Sample code -```typescript -import * as msRest from "@azure/ms-rest-js"; -import * as msRestAzure from "@azure/ms-rest-azure-js"; -import * as msRestNodeAuth from "@azure/ms-rest-nodeauth"; -import { ContainerRegistryManagementClient, ContainerRegistryManagementModels, ContainerRegistryManagementMappers } from "@azure/arm-containerregistry"; +```javascript +const { DefaultAzureCredential } = require("@azure/identity"); +const { ContainerRegistryManagementClient } = require("@azure/arm-containerregistry"); const subscriptionId = process.env["AZURE_SUBSCRIPTION_ID"]; -msRestNodeAuth.interactiveLogin().then((creds) => { - const client = new ContainerRegistryManagementClient(creds, subscriptionId); - const resourceGroupName = "testresourceGroupName"; - const registryName = "testregistryName"; - const exportPipelineName = "testexportPipelineName"; - client.exportPipelines.get(resourceGroupName, registryName, exportPipelineName).then((result) => { - console.log("The result is:"); - console.log(result); - }); +// Use `DefaultAzureCredential` or any other credential of your choice based on https://aka.ms/azsdk/js/identity/examples +// Please note that you can also use credentials from the `@azure/ms-rest-nodeauth` package instead. +const creds = new DefaultAzureCredential(); +const client = new ContainerRegistryManagementClient(creds, subscriptionId); +const resourceGroupName = "testresourceGroupName"; +const registryName = "testregistryName"; +const exportPipelineName = "testexportPipelineName"; +client.exportPipelines.get(resourceGroupName, registryName, exportPipelineName).then((result) => { + console.log("The result is:"); + console.log(result); }).catch((err) => { + console.log("An error occurred:"); console.error(err); }); ``` -#### browser - Authentication, client creation and get exportPipelines as an example written in JavaScript. +#### browser - Authentication, client creation, and get exportPipelines as an example written in JavaScript. -##### Install @azure/ms-rest-browserauth - -```bash -npm install @azure/ms-rest-browserauth -``` +In browser applications, we recommend using the `InteractiveBrowserCredential` that interactively authenticates using the default system browser. + - See [Single-page application: App registration guide](https://docs.microsoft.com/azure/active-directory/develop/scenario-spa-app-registration) to configure your app registration for the browser. + - Note down the client Id from the previous step and use it in the browser sample below. ##### Sample code -See https://github.com/Azure/ms-rest-browserauth to learn how to authenticate to Azure in the browser. - - index.html + ```html @azure/arm-containerregistry sample - - + diff --git a/sdk/containerregistry/arm-containerregistry/package.json b/sdk/containerregistry/arm-containerregistry/package.json index f97ea35d7d71..fb2c5594ce96 100644 --- a/sdk/containerregistry/arm-containerregistry/package.json +++ b/sdk/containerregistry/arm-containerregistry/package.json @@ -2,10 +2,11 @@ "name": "@azure/arm-containerregistry", "author": "Microsoft Corporation", "description": "ContainerRegistryManagementClient Library with typescript type definitions for node.js and browser.", - "version": "8.0.0", + "version": "8.1.0", "dependencies": { - "@azure/ms-rest-azure-js": "^2.0.1", - "@azure/ms-rest-js": "^2.0.4", + "@azure/ms-rest-azure-js": "^2.1.0", + "@azure/ms-rest-js": "^2.2.0", + "@azure/core-auth": "^1.1.4", "tslib": "^1.10.0" }, "keywords": [ @@ -20,7 +21,7 @@ "module": "./esm/containerRegistryManagementClient.js", "types": "./esm/containerRegistryManagementClient.d.ts", "devDependencies": { - "typescript": "^3.5.3", + "typescript": "^3.6.0", "rollup": "^1.18.0", "rollup-plugin-node-resolve": "^5.2.0", "rollup-plugin-sourcemaps": "^0.4.2", diff --git a/sdk/containerregistry/arm-containerregistry/src/containerRegistryManagementClient.ts b/sdk/containerregistry/arm-containerregistry/src/containerRegistryManagementClient.ts index 19afb901c50b..0a3143427278 100644 --- a/sdk/containerregistry/arm-containerregistry/src/containerRegistryManagementClient.ts +++ b/sdk/containerregistry/arm-containerregistry/src/containerRegistryManagementClient.ts @@ -9,6 +9,7 @@ */ import * as msRest from "@azure/ms-rest-js"; +import { TokenCredential } from "@azure/core-auth"; import * as Models from "./models"; import * as Mappers from "./models/mappers"; import * as operations from "./operations"; @@ -34,11 +35,16 @@ class ContainerRegistryManagementClient extends ContainerRegistryManagementClien /** * Initializes a new instance of the ContainerRegistryManagementClient class. - * @param credentials Credentials needed for the client to connect to Azure. + * @param credentials Credentials needed for the client to connect to Azure. Credentials + * implementing the TokenCredential interface from the @azure/identity package are recommended. For + * more information about these credentials, see + * {@link https://www.npmjs.com/package/@azure/identity}. Credentials implementing the + * ServiceClientCredentials interface from the older packages @azure/ms-rest-nodeauth and + * @azure/ms-rest-browserauth are also supported. * @param subscriptionId The Microsoft Azure subscription ID. * @param [options] The parameter options */ - constructor(credentials: msRest.ServiceClientCredentials, subscriptionId: string, options?: Models.ContainerRegistryManagementClientOptions) { + constructor(credentials: msRest.ServiceClientCredentials | TokenCredential, subscriptionId: string, options?: Models.ContainerRegistryManagementClientOptions) { super(credentials, subscriptionId, options); this.exportPipelines = new operations.ExportPipelines(this); this.registries = new operations.Registries(this); diff --git a/sdk/containerregistry/arm-containerregistry/src/containerRegistryManagementClientContext.ts b/sdk/containerregistry/arm-containerregistry/src/containerRegistryManagementClientContext.ts index a0016e0583e5..9ad2845a5a15 100644 --- a/sdk/containerregistry/arm-containerregistry/src/containerRegistryManagementClientContext.ts +++ b/sdk/containerregistry/arm-containerregistry/src/containerRegistryManagementClientContext.ts @@ -10,22 +10,28 @@ import * as Models from "./models"; import * as msRest from "@azure/ms-rest-js"; +import { TokenCredential } from "@azure/core-auth"; import * as msRestAzure from "@azure/ms-rest-azure-js"; const packageName = "@azure/arm-containerregistry"; -const packageVersion = "8.0.0"; +const packageVersion = "8.1.0"; export class ContainerRegistryManagementClientContext extends msRestAzure.AzureServiceClient { - credentials: msRest.ServiceClientCredentials; + credentials: msRest.ServiceClientCredentials | TokenCredential; subscriptionId: string; /** * Initializes a new instance of the ContainerRegistryManagementClient class. - * @param credentials Credentials needed for the client to connect to Azure. + * @param credentials Credentials needed for the client to connect to Azure. Credentials + * implementing the TokenCredential interface from the @azure/identity package are recommended. For + * more information about these credentials, see + * {@link https://www.npmjs.com/package/@azure/identity}. Credentials implementing the + * ServiceClientCredentials interface from the older packages @azure/ms-rest-nodeauth and + * @azure/ms-rest-browserauth are also supported. * @param subscriptionId The Microsoft Azure subscription ID. * @param [options] The parameter options */ - constructor(credentials: msRest.ServiceClientCredentials, subscriptionId: string, options?: Models.ContainerRegistryManagementClientOptions) { + constructor(credentials: msRest.ServiceClientCredentials | TokenCredential, subscriptionId: string, options?: Models.ContainerRegistryManagementClientOptions) { if (credentials == undefined) { throw new Error('\'credentials\' cannot be null.'); } diff --git a/sdk/containerservice/arm-containerservice/README.md b/sdk/containerservice/arm-containerservice/README.md index ba129c1f3b94..6d058275a4f2 100644 --- a/sdk/containerservice/arm-containerservice/README.md +++ b/sdk/containerservice/arm-containerservice/README.md @@ -1,89 +1,97 @@ ## Azure ContainerServiceClient SDK for JavaScript -This package contains an isomorphic SDK for ContainerServiceClient. +This package contains an isomorphic SDK (runs both in node.js and in browsers) for ContainerServiceClient. ### Currently supported environments -- Node.js version 6.x.x or higher -- Browser JavaScript +- [LTS versions of Node.js](https://nodejs.org/about/releases/) +- Latest versions of Safari, Chrome, Edge and Firefox. -### How to Install +### Prerequisites +You must have an [Azure subscription](https://azure.microsoft.com/free/). + +### How to install + +To use this SDK in your project, you will need to install two packages. +- `@azure/arm-containerservice` that contains the client. +- `@azure/identity` that provides different mechanisms for the client to authenticate your requests using Azure Active Directory. + +Install both packages using the below command: ```bash -npm install @azure/arm-containerservice +npm install --save @azure/arm-containerservice @azure/identity ``` +> **Note**: You may have used either `@azure/ms-rest-nodeauth` or `@azure/ms-rest-browserauth` in the past. These packages are in maintenance mode receiving critical bug fixes, but no new features. +If you are on a [Node.js that has LTS status](https://nodejs.org/about/releases/), or are writing a client side browser application, we strongly encourage you to upgrade to `@azure/identity` which uses the latest versions of Azure Active Directory and MSAL APIs and provides more authentication options. ### How to use -#### nodejs - client creation and list operations as an example written in TypeScript. +- If you are writing a client side browser application, + - Follow the instructions in the section on Authenticating client side browser applications in [Azure Identity examples](https://aka.ms/azsdk/js/identity/examples) to register your application in the Microsoft identity platform and set the right permissions. + - Copy the client ID and tenant ID from the Overview section of your app registration in Azure portal and use it in the browser sample below. +- If you are writing a server side application, + - [Select a credential from `@azure/identity` based on the authentication method of your choice](https://aka.ms/azsdk/js/identity/examples) + - Complete the set up steps required by the credential if any. + - Use the credential you picked in the place of `DefaultAzureCredential` in the Node.js sample below. -##### Install @azure/ms-rest-nodeauth - -- Please install minimum version of `"@azure/ms-rest-nodeauth": "^3.0.0"`. -```bash -npm install @azure/ms-rest-nodeauth@"^3.0.0" -``` +In the below samples, we pass the credential and the Azure subscription id to instantiate the client. +Once the client is created, explore the operations on it either in your favorite editor or in our [API reference documentation](https://docs.microsoft.com/javascript/api) to get started. +#### nodejs - Authentication, client creation, and list operations as an example written in JavaScript. ##### Sample code -While the below sample uses the interactive login, other authentication options can be found in the [README.md file of @azure/ms-rest-nodeauth](https://www.npmjs.com/package/@azure/ms-rest-nodeauth) package -```typescript -const msRestNodeAuth = require("@azure/ms-rest-nodeauth"); +```javascript +const { DefaultAzureCredential } = require("@azure/identity"); const { ContainerServiceClient } = require("@azure/arm-containerservice"); const subscriptionId = process.env["AZURE_SUBSCRIPTION_ID"]; -msRestNodeAuth.interactiveLogin().then((creds) => { - const client = new ContainerServiceClient(creds, subscriptionId); - client.operations.list().then((result) => { - console.log("The result is:"); - console.log(result); - }); +// Use `DefaultAzureCredential` or any other credential of your choice based on https://aka.ms/azsdk/js/identity/examples +// Please note that you can also use credentials from the `@azure/ms-rest-nodeauth` package instead. +const creds = new DefaultAzureCredential(); +const client = new ContainerServiceClient(creds, subscriptionId); +client.operations.list().then((result) => { + console.log("The result is:"); + console.log(result); }).catch((err) => { + console.log("An error occurred:"); console.error(err); }); ``` -#### browser - Authentication, client creation and list operations as an example written in JavaScript. +#### browser - Authentication, client creation, and list operations as an example written in JavaScript. -##### Install @azure/ms-rest-browserauth - -```bash -npm install @azure/ms-rest-browserauth -``` +In browser applications, we recommend using the `InteractiveBrowserCredential` that interactively authenticates using the default system browser. + - See [Single-page application: App registration guide](https://docs.microsoft.com/azure/active-directory/develop/scenario-spa-app-registration) to configure your app registration for the browser. + - Note down the client Id from the previous step and use it in the browser sample below. ##### Sample code -See https://github.com/Azure/ms-rest-browserauth to learn how to authenticate to Azure in the browser. - - index.html + ```html @azure/arm-containerservice sample - - + diff --git a/sdk/containerservice/arm-containerservice/package.json b/sdk/containerservice/arm-containerservice/package.json index abdfbf9dae1d..77ccc2090831 100644 --- a/sdk/containerservice/arm-containerservice/package.json +++ b/sdk/containerservice/arm-containerservice/package.json @@ -2,10 +2,11 @@ "name": "@azure/arm-containerservice", "author": "Microsoft Corporation", "description": "ContainerServiceClient Library with typescript type definitions for node.js and browser.", - "version": "13.2.0", + "version": "13.3.0", "dependencies": { - "@azure/ms-rest-azure-js": "^2.0.1", - "@azure/ms-rest-js": "^2.0.4", + "@azure/ms-rest-azure-js": "^2.1.0", + "@azure/ms-rest-js": "^2.2.0", + "@azure/core-auth": "^1.1.4", "tslib": "^1.10.0" }, "keywords": [ @@ -20,7 +21,7 @@ "module": "./esm/containerServiceClient.js", "types": "./esm/containerServiceClient.d.ts", "devDependencies": { - "typescript": "^3.5.3", + "typescript": "^3.6.0", "rollup": "^1.18.0", "rollup-plugin-node-resolve": "^5.2.0", "rollup-plugin-sourcemaps": "^0.4.2", diff --git a/sdk/containerservice/arm-containerservice/src/containerServiceClient.ts b/sdk/containerservice/arm-containerservice/src/containerServiceClient.ts index 6997e3ab5ce7..244f833d630c 100644 --- a/sdk/containerservice/arm-containerservice/src/containerServiceClient.ts +++ b/sdk/containerservice/arm-containerservice/src/containerServiceClient.ts @@ -8,6 +8,7 @@ */ import * as msRest from "@azure/ms-rest-js"; +import { TokenCredential } from "@azure/core-auth"; import * as Models from "./models"; import * as Mappers from "./models/mappers"; import * as operations from "./operations"; @@ -26,12 +27,17 @@ class ContainerServiceClient extends ContainerServiceClientContext { /** * Initializes a new instance of the ContainerServiceClient class. - * @param credentials Credentials needed for the client to connect to Azure. + * @param credentials Credentials needed for the client to connect to Azure. Credentials + * implementing the TokenCredential interface from the @azure/identity package are recommended. For + * more information about these credentials, see + * {@link https://www.npmjs.com/package/@azure/identity}. Credentials implementing the + * ServiceClientCredentials interface from the older packages @azure/ms-rest-nodeauth and + * @azure/ms-rest-browserauth are also supported. * @param subscriptionId Subscription credentials which uniquely identify Microsoft Azure * subscription. The subscription ID forms part of the URI for every service call. * @param [options] The parameter options */ - constructor(credentials: msRest.ServiceClientCredentials, subscriptionId: string, options?: Models.ContainerServiceClientOptions) { + constructor(credentials: msRest.ServiceClientCredentials | TokenCredential, subscriptionId: string, options?: Models.ContainerServiceClientOptions) { super(credentials, subscriptionId, options); this.operations = new operations.Operations(this); this.managedClusters = new operations.ManagedClusters(this); diff --git a/sdk/containerservice/arm-containerservice/src/containerServiceClientContext.ts b/sdk/containerservice/arm-containerservice/src/containerServiceClientContext.ts index 5e6112ec9cca..c27fe0506e3f 100644 --- a/sdk/containerservice/arm-containerservice/src/containerServiceClientContext.ts +++ b/sdk/containerservice/arm-containerservice/src/containerServiceClientContext.ts @@ -10,23 +10,29 @@ import * as Models from "./models"; import * as msRest from "@azure/ms-rest-js"; import * as msRestAzure from "@azure/ms-rest-azure-js"; +import { TokenCredential } from "@azure/core-auth"; const packageName = "@azure/arm-containerservice"; -const packageVersion = "13.2.0"; +const packageVersion = "13.3.0"; export class ContainerServiceClientContext extends msRestAzure.AzureServiceClient { - credentials: msRest.ServiceClientCredentials; + credentials: msRest.ServiceClientCredentials | TokenCredential; subscriptionId: string; apiVersion?: string; /** * Initializes a new instance of the ContainerServiceClient class. - * @param credentials Credentials needed for the client to connect to Azure. + * @param credentials Credentials needed for the client to connect to Azure. Credentials + * implementing the TokenCredential interface from the @azure/identity package are recommended. For + * more information about these credentials, see + * {@link https://www.npmjs.com/package/@azure/identity}. Credentials implementing the + * ServiceClientCredentials interface from the older packages @azure/ms-rest-nodeauth and + * @azure/ms-rest-browserauth are also supported. * @param subscriptionId Subscription credentials which uniquely identify Microsoft Azure * subscription. The subscription ID forms part of the URI for every service call. * @param [options] The parameter options */ - constructor(credentials: msRest.ServiceClientCredentials, subscriptionId: string, options?: Models.ContainerServiceClientOptions) { + constructor(credentials: msRest.ServiceClientCredentials | TokenCredential, subscriptionId: string, options?: Models.ContainerServiceClientOptions) { if (credentials == undefined) { throw new Error('\'credentials\' cannot be null.'); } @@ -44,7 +50,7 @@ export class ContainerServiceClientContext extends msRestAzure.AzureServiceClien super(credentials, options); - this.apiVersion = '2021-03-01'; + this.apiVersion = '2021-05-01'; this.acceptLanguage = 'en-US'; this.longRunningOperationRetryTimeout = 30; this.baseUri = options.baseUri || this.baseUri || "https://management.azure.com"; diff --git a/sdk/containerservice/arm-containerservice/src/models/index.ts b/sdk/containerservice/arm-containerservice/src/models/index.ts index 05b5f0887ffd..4993897868f3 100644 --- a/sdk/containerservice/arm-containerservice/src/models/index.ts +++ b/sdk/containerservice/arm-containerservice/src/models/index.ts @@ -12,21 +12,21 @@ import * as msRest from "@azure/ms-rest-js"; export { BaseResource, CloudError }; /** - * Describes the properties of a Compute Operation value. + * Describes the properties of a Operation value. */ export interface OperationValue { /** - * The origin of the compute operation. + * The origin of the operation. * **NOTE: This property will not be serialized. It can only be populated by the server.** */ readonly origin?: string; /** - * The name of the compute operation. + * The name of the operation. * **NOTE: This property will not be serialized. It can only be populated by the server.** */ readonly name?: string; /** - * The display name of the compute operation. + * The display name of the operation. * **NOTE: This property will not be serialized. It can only be populated by the server.** */ readonly operation?: string; @@ -210,7 +210,12 @@ export interface ContainerServiceMasterProfile { */ export interface AgentPoolUpgradeSettings { /** - * Count or percentage of additional nodes to be added during upgrade. If empty uses AKS default + * The maximum number or percentage of nodes that are surged during upgrade. This can either be + * set to an integer (e.g. '5') or a percentage (e.g. '50%'). If a percentage is specified, it is + * the percentage of the total agent pool size at the time of the upgrade. For percentages, + * fractional nodes are rounded up. If not specified, the default is 1. For more information, + * including best practices, see: + * https://docs.microsoft.com/azure/aks/upgrade-cluster#customize-node-surge-upgrade */ maxSurge?: string; } @@ -226,35 +231,46 @@ export interface PowerState { } /** - * Kubelet configurations of agent nodes. + * See [AKS custom node + * configuration](https://docs.microsoft.com/azure/aks/custom-node-configuration) for more details. + * @summary Kubelet configurations of agent nodes. */ export interface KubeletConfig { /** - * CPU Manager policy to use. + * The CPU Manager policy to use. The default is 'none'. See [Kubernetes CPU management + * policies](https://kubernetes.io/docs/tasks/administer-cluster/cpu-management-policies/#cpu-management-policies) + * for more information. Allowed values are 'none' and 'static'. */ cpuManagerPolicy?: string; /** - * Enable CPU CFS quota enforcement for containers that specify CPU limits. + * If CPU CFS quota enforcement is enabled for containers that specify CPU limits. The default is + * true. */ cpuCfsQuota?: boolean; /** - * Sets CPU CFS quota period value. + * The CPU CFS quota period value. The default is '100ms.' Valid values are a sequence of decimal + * numbers with an optional fraction and a unit suffix. For example: '300ms', '2h45m'. Supported + * units are 'ns', 'us', 'ms', 's', 'm', and 'h'. */ cpuCfsQuotaPeriod?: string; /** - * The percent of disk usage after which image garbage collection is always run. + * The percent of disk usage after which image garbage collection is always run. To disable image + * garbage collection, set to 100. The default is 85% */ imageGcHighThreshold?: number; /** - * The percent of disk usage before which image garbage collection is never run. + * The percent of disk usage before which image garbage collection is never run. This cannot be + * set higher than imageGcHighThreshold. The default is 80% */ imageGcLowThreshold?: number; /** - * Topology Manager policy to use. + * The Topology Manager policy to use. For more information see [Kubernetes Topology + * Manager](https://kubernetes.io/docs/tasks/administer-cluster/topology-manager). The default is + * 'none'. Allowed values are 'none', 'best-effort', 'restricted', and 'single-numa-node'. */ topologyManagerPolicy?: string; /** - * Allowlist of unsafe sysctls or unsafe sysctl patterns (ending in `*`). + * Allowed list of unsafe sysctls or unsafe sysctl patterns (ending in `*`). */ allowedUnsafeSysctls?: string[]; /** @@ -395,7 +411,9 @@ export interface SysctlConfig { } /** - * OS configurations of Linux agent nodes. + * See [AKS custom node + * configuration](https://docs.microsoft.com/azure/aks/custom-node-configuration) for more details. + * @summary OS configurations of Linux agent nodes. */ export interface LinuxOSConfig { /** @@ -403,15 +421,20 @@ export interface LinuxOSConfig { */ sysctls?: SysctlConfig; /** - * Transparent Huge Page enabled configuration. + * Whether transparent hugepages are enabled. Valid values are 'always', 'madvise', and 'never'. + * The default is 'always'. For more information see [Transparent + * Hugepages](https://www.kernel.org/doc/html/latest/admin-guide/mm/transhuge.html#admin-guide-transhuge). */ transparentHugePageEnabled?: string; /** - * Transparent Huge Page defrag configuration. + * Whether the kernel should make aggressive use of memory compaction to make more hugepages + * available. Valid values are 'always', 'defer', 'defer+madvise', 'madvise' and 'never'. The + * default is 'madvise'. For more information see [Transparent + * Hugepages](https://www.kernel.org/doc/html/latest/admin-guide/mm/transhuge.html#admin-guide-transhuge). */ transparentHugePageDefrag?: string; /** - * SwapFileSizeMB specifies size in MB of a swap file will be created on each node. + * The size in MB of a swap file that will be created on each node. */ swapFileSizeMB?: number; } @@ -422,97 +445,57 @@ export interface LinuxOSConfig { export interface ManagedClusterAgentPoolProfileProperties { /** * Number of agents (VMs) to host docker containers. Allowed values must be in the range of 0 to - * 100 (inclusive) for user pools and in the range of 1 to 100 (inclusive) for system pools. The - * default value is 1. + * 1000 (inclusive) for user pools and in the range of 1 to 1000 (inclusive) for system pools. + * The default value is 1. */ count?: number; /** - * Size of agent VMs. Possible values include: 'Standard_A1', 'Standard_A10', 'Standard_A11', - * 'Standard_A1_v2', 'Standard_A2', 'Standard_A2_v2', 'Standard_A2m_v2', 'Standard_A3', - * 'Standard_A4', 'Standard_A4_v2', 'Standard_A4m_v2', 'Standard_A5', 'Standard_A6', - * 'Standard_A7', 'Standard_A8', 'Standard_A8_v2', 'Standard_A8m_v2', 'Standard_A9', - * 'Standard_B2ms', 'Standard_B2s', 'Standard_B4ms', 'Standard_B8ms', 'Standard_D1', - * 'Standard_D11', 'Standard_D11_v2', 'Standard_D11_v2_Promo', 'Standard_D12', 'Standard_D12_v2', - * 'Standard_D12_v2_Promo', 'Standard_D13', 'Standard_D13_v2', 'Standard_D13_v2_Promo', - * 'Standard_D14', 'Standard_D14_v2', 'Standard_D14_v2_Promo', 'Standard_D15_v2', - * 'Standard_D16_v3', 'Standard_D16s_v3', 'Standard_D1_v2', 'Standard_D2', 'Standard_D2_v2', - * 'Standard_D2_v2_Promo', 'Standard_D2_v3', 'Standard_D2s_v3', 'Standard_D3', 'Standard_D32_v3', - * 'Standard_D32s_v3', 'Standard_D3_v2', 'Standard_D3_v2_Promo', 'Standard_D4', 'Standard_D4_v2', - * 'Standard_D4_v2_Promo', 'Standard_D4_v3', 'Standard_D4s_v3', 'Standard_D5_v2', - * 'Standard_D5_v2_Promo', 'Standard_D64_v3', 'Standard_D64s_v3', 'Standard_D8_v3', - * 'Standard_D8s_v3', 'Standard_DS1', 'Standard_DS11', 'Standard_DS11_v2', - * 'Standard_DS11_v2_Promo', 'Standard_DS12', 'Standard_DS12_v2', 'Standard_DS12_v2_Promo', - * 'Standard_DS13', 'Standard_DS13-2_v2', 'Standard_DS13-4_v2', 'Standard_DS13_v2', - * 'Standard_DS13_v2_Promo', 'Standard_DS14', 'Standard_DS14-4_v2', 'Standard_DS14-8_v2', - * 'Standard_DS14_v2', 'Standard_DS14_v2_Promo', 'Standard_DS15_v2', 'Standard_DS1_v2', - * 'Standard_DS2', 'Standard_DS2_v2', 'Standard_DS2_v2_Promo', 'Standard_DS3', 'Standard_DS3_v2', - * 'Standard_DS3_v2_Promo', 'Standard_DS4', 'Standard_DS4_v2', 'Standard_DS4_v2_Promo', - * 'Standard_DS5_v2', 'Standard_DS5_v2_Promo', 'Standard_E16_v3', 'Standard_E16s_v3', - * 'Standard_E2_v3', 'Standard_E2s_v3', 'Standard_E32-16s_v3', 'Standard_E32-8s_v3', - * 'Standard_E32_v3', 'Standard_E32s_v3', 'Standard_E4_v3', 'Standard_E4s_v3', - * 'Standard_E64-16s_v3', 'Standard_E64-32s_v3', 'Standard_E64_v3', 'Standard_E64s_v3', - * 'Standard_E8_v3', 'Standard_E8s_v3', 'Standard_F1', 'Standard_F16', 'Standard_F16s', - * 'Standard_F16s_v2', 'Standard_F1s', 'Standard_F2', 'Standard_F2s', 'Standard_F2s_v2', - * 'Standard_F32s_v2', 'Standard_F4', 'Standard_F4s', 'Standard_F4s_v2', 'Standard_F64s_v2', - * 'Standard_F72s_v2', 'Standard_F8', 'Standard_F8s', 'Standard_F8s_v2', 'Standard_G1', - * 'Standard_G2', 'Standard_G3', 'Standard_G4', 'Standard_G5', 'Standard_GS1', 'Standard_GS2', - * 'Standard_GS3', 'Standard_GS4', 'Standard_GS4-4', 'Standard_GS4-8', 'Standard_GS5', - * 'Standard_GS5-16', 'Standard_GS5-8', 'Standard_H16', 'Standard_H16m', 'Standard_H16mr', - * 'Standard_H16r', 'Standard_H8', 'Standard_H8m', 'Standard_L16s', 'Standard_L32s', - * 'Standard_L4s', 'Standard_L8s', 'Standard_M128-32ms', 'Standard_M128-64ms', 'Standard_M128ms', - * 'Standard_M128s', 'Standard_M64-16ms', 'Standard_M64-32ms', 'Standard_M64ms', 'Standard_M64s', - * 'Standard_NC12', 'Standard_NC12s_v2', 'Standard_NC12s_v3', 'Standard_NC24', 'Standard_NC24r', - * 'Standard_NC24rs_v2', 'Standard_NC24rs_v3', 'Standard_NC24s_v2', 'Standard_NC24s_v3', - * 'Standard_NC6', 'Standard_NC6s_v2', 'Standard_NC6s_v3', 'Standard_ND12s', 'Standard_ND24rs', - * 'Standard_ND24s', 'Standard_ND6s', 'Standard_NV12', 'Standard_NV24', 'Standard_NV6' - */ - vmSize?: ContainerServiceVMSizeTypes; - /** - * OS Disk Size in GB to be used to specify the disk size for every machine in this master/agent - * pool. If you specify 0, it will apply the default osDisk size according to the vmSize - * specified. + * The size of the agent pool VMs. VM size availability varies by region. If a node contains + * insufficient compute resources (memory, cpu, etc) pods might fail to run correctly. For more + * details on restricted VM sizes, see: https://docs.microsoft.com/azure/aks/quotas-skus-regions */ + vmSize?: string; osDiskSizeGB?: number; /** - * OS disk type to be used for machines in a given agent pool. Allowed values are 'Ephemeral' and - * 'Managed'. Defaults to 'Managed'. May not be changed after creation. Possible values include: - * 'Managed', 'Ephemeral' + * Possible values include: 'Managed', 'Ephemeral' */ osDiskType?: OSDiskType; /** - * KubeletDiskType determines the placement of emptyDir volumes, container runtime data root, and - * Kubelet ephemeral storage. Currently allows one value, OS, resulting in Kubelet using the OS - * disk for data. Possible values include: 'OS', 'Temporary' + * Possible values include: 'OS', 'Temporary' */ kubeletDiskType?: KubeletDiskType; /** - * VNet SubnetID specifies the VNet's subnet identifier for nodes and maybe pods + * The ID of the subnet which agent pool nodes and optionally pods will join on startup. If this + * is not specified, a VNET and subnet will be generated and used. If no podSubnetID is + * specified, this applies to nodes and pods, otherwise it applies to just nodes. This is of the + * form: + * /subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/virtualNetworks/{virtualNetworkName}/subnets/{subnetName} */ vnetSubnetID?: string; /** - * Pod SubnetID specifies the VNet's subnet identifier for pods. + * The ID of the subnet which pods will join when launched. If omitted, pod IPs are statically + * assigned on the node subnet (see vnetSubnetID for more details). This is of the form: + * /subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/virtualNetworks/{virtualNetworkName}/subnets/{subnetName} */ podSubnetID?: string; /** - * Maximum number of pods that can run on a node. + * The maximum number of pods that can run on a node. */ maxPods?: number; /** - * OsType to be used to specify os type. Choose from Linux and Windows. Default to Linux. * Possible values include: 'Linux', 'Windows'. Default value: 'Linux'. */ osType?: OSType; /** - * OsSKU to be used to specify os sku. Choose from Ubuntu(default) and CBLMariner for Linux - * OSType. Not applicable to Windows OSType. Possible values include: 'Ubuntu', 'CBLMariner' + * Possible values include: 'Ubuntu', 'CBLMariner' */ osSKU?: OSSKU; /** - * Maximum number of nodes for auto-scaling + * The maximum number of nodes for auto-scaling */ maxCount?: number; /** - * Minimum number of nodes for auto-scaling + * The minimum number of nodes for auto-scaling */ minCount?: number; /** @@ -520,20 +503,24 @@ export interface ManagedClusterAgentPoolProfileProperties { */ enableAutoScaling?: boolean; /** - * AgentPoolType represents types of an agent pool. Possible values include: - * 'VirtualMachineScaleSets', 'AvailabilitySet' + * Possible values include: 'VirtualMachineScaleSets', 'AvailabilitySet' */ type?: AgentPoolType; /** - * AgentPoolMode represents mode of an agent pool. Possible values include: 'System', 'User' + * Possible values include: 'System', 'User' */ mode?: AgentPoolMode; /** - * Version of orchestrator specified when creating the managed cluster. + * The version of Kubernetes running on the Agent Pool. As a best practice, you should upgrade + * all node pools in an AKS cluster to the same Kubernetes version. The node pool version must + * have the same major version as the control plane. The node pool minor version must be within + * two minor versions of the control plane version. The node pool version cannot be greater than + * the control plane version. For more information see [upgrading a node + * pool](https://docs.microsoft.com/azure/aks/use-multiple-node-pools#upgrade-a-node-pool). */ orchestratorVersion?: string; /** - * Version of node image + * The version of node image * **NOTE: This property will not be serialized. It can only be populated by the server.** */ readonly nodeImageVersion?: string; @@ -542,7 +529,7 @@ export interface ManagedClusterAgentPoolProfileProperties { */ upgradeSettings?: AgentPoolUpgradeSettings; /** - * The current deployment or provisioning state, which only appears in the response. + * The current deployment or provisioning state. * **NOTE: This property will not be serialized. It can only be populated by the server.** */ readonly provisioningState?: string; @@ -552,44 +539,53 @@ export interface ManagedClusterAgentPoolProfileProperties { */ readonly powerState?: PowerState; /** - * Availability zones for nodes. Must use VirtualMachineScaleSets AgentPoolType. + * The list of Availability zones to use for nodes. This can only be specified if the + * AgentPoolType property is 'VirtualMachineScaleSets'. */ availabilityZones?: string[]; /** - * Enable public IP for nodes + * Whether each node is allocated its own public IP. Some scenarios may require nodes in a node + * pool to receive their own dedicated public IP addresses. A common scenario is for gaming + * workloads, where a console needs to make a direct connection to a cloud virtual machine to + * minimize hops. For more information see [assigning a public IP per + * node](https://docs.microsoft.com/azure/aks/use-multiple-node-pools#assign-a-public-ip-per-node-for-your-node-pools). + * The default is false. */ enableNodePublicIP?: boolean; /** - * Public IP Prefix ID. VM nodes use IPs assigned from this Public IP Prefix. + * The public IP prefix ID which VM nodes should use IPs from. This is of the form: + * /subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/publicIPPrefixes/{publicIPPrefixName} */ nodePublicIPPrefixID?: string; /** - * ScaleSetPriority to be used to specify virtual machine scale set priority. Default to regular. - * Possible values include: 'Spot', 'Regular'. Default value: 'Regular'. + * The Virtual Machine Scale Set priority. If not specified, the default is 'Regular'. Possible + * values include: 'Spot', 'Regular'. Default value: 'Regular'. */ scaleSetPriority?: ScaleSetPriority; /** - * ScaleSetEvictionPolicy to be used to specify eviction policy for Spot virtual machine scale - * set. Default to Delete. Possible values include: 'Delete', 'Deallocate'. Default value: - * 'Delete'. + * The Virtual Machine Scale Set eviction policy to use. This cannot be specified unless the + * scaleSetPriority is 'Spot'. If not specified, the default is 'Delete'. Possible values + * include: 'Delete', 'Deallocate'. Default value: 'Delete'. */ scaleSetEvictionPolicy?: ScaleSetEvictionPolicy; /** - * SpotMaxPrice to be used to specify the maximum price you are willing to pay in US Dollars. - * Possible values are any decimal value greater than zero or -1 which indicates default price to - * be up-to on-demand. + * The max price (in US Dollars) you are willing to pay for spot instances. Possible values are + * any decimal value greater than zero or -1 which indicates default price to be up-to on-demand. + * Possible values are any decimal value greater than zero or -1 which indicates the willingness + * to pay any on-demand price. For more details on spot pricing, see [spot VMs + * pricing](https://docs.microsoft.com/azure/virtual-machines/spot-vms#pricing) */ spotMaxPrice?: number; /** - * Agent pool tags to be persisted on the agent pool virtual machine scale set. + * The tags to be persisted on the agent pool virtual machine scale set. */ tags?: { [propertyName: string]: string }; /** - * Agent pool node labels to be persisted across all nodes in agent pool. + * The node labels to be persisted across all nodes in agent pool. */ nodeLabels?: { [propertyName: string]: string }; /** - * Taints added to new nodes during node pool create and scale. For example, + * The taints added to new nodes during node pool create and scale. For example, * key=value:NoSchedule. */ nodeTaints?: string[]; @@ -598,25 +594,32 @@ export interface ManagedClusterAgentPoolProfileProperties { */ proximityPlacementGroupID?: string; /** - * KubeletConfig specifies the configuration of kubelet on agent nodes. + * The Kubelet configuration on the agent pool nodes. */ kubeletConfig?: KubeletConfig; /** - * LinuxOSConfig specifies the OS configuration of linux agent nodes. + * The OS configuration of Linux agent nodes. */ linuxOSConfig?: LinuxOSConfig; /** - * Whether to enable EncryptionAtHost + * Whether to enable host based OS and data drive encryption. This is only supported on certain + * VM sizes and in certain Azure regions. For more information, see: + * https://docs.microsoft.com/azure/aks/enable-host-encryption */ enableEncryptionAtHost?: boolean; /** - * Whether to use FIPS enabled OS + * Whether to enable UltraSSD + */ + enableUltraSSD?: boolean; + /** + * Whether to use a FIPS-enabled OS. See [Add a FIPS-enabled node + * pool](https://docs.microsoft.com/azure/aks/use-multiple-node-pools#add-a-fips-enabled-node-pool-preview) + * for more details. */ enableFIPS?: boolean; /** * GPUInstanceProfile to be used to specify GPU MIG instance profile for supported GPU VM SKU. - * Supported values are MIG1g, MIG2g, MIG3g, MIG4g and MIG7g. Possible values include: 'MIG1g', - * 'MIG2g', 'MIG3g', 'MIG4g', 'MIG7g' + * Possible values include: 'MIG1g', 'MIG2g', 'MIG3g', 'MIG4g', 'MIG7g' */ gpuInstanceProfile?: GPUInstanceProfile; } @@ -627,6 +630,7 @@ export interface ManagedClusterAgentPoolProfileProperties { export interface ManagedClusterAgentPoolProfile extends ManagedClusterAgentPoolProfileProperties { /** * Unique name of the agent pool profile in the context of the subscription and resource group. + * Windows agent pool names must be 6 characters or less. */ name: string; } @@ -637,97 +641,57 @@ export interface ManagedClusterAgentPoolProfile extends ManagedClusterAgentPoolP export interface AgentPool extends SubResource { /** * Number of agents (VMs) to host docker containers. Allowed values must be in the range of 0 to - * 100 (inclusive) for user pools and in the range of 1 to 100 (inclusive) for system pools. The - * default value is 1. + * 1000 (inclusive) for user pools and in the range of 1 to 1000 (inclusive) for system pools. + * The default value is 1. */ count?: number; /** - * Size of agent VMs. Possible values include: 'Standard_A1', 'Standard_A10', 'Standard_A11', - * 'Standard_A1_v2', 'Standard_A2', 'Standard_A2_v2', 'Standard_A2m_v2', 'Standard_A3', - * 'Standard_A4', 'Standard_A4_v2', 'Standard_A4m_v2', 'Standard_A5', 'Standard_A6', - * 'Standard_A7', 'Standard_A8', 'Standard_A8_v2', 'Standard_A8m_v2', 'Standard_A9', - * 'Standard_B2ms', 'Standard_B2s', 'Standard_B4ms', 'Standard_B8ms', 'Standard_D1', - * 'Standard_D11', 'Standard_D11_v2', 'Standard_D11_v2_Promo', 'Standard_D12', 'Standard_D12_v2', - * 'Standard_D12_v2_Promo', 'Standard_D13', 'Standard_D13_v2', 'Standard_D13_v2_Promo', - * 'Standard_D14', 'Standard_D14_v2', 'Standard_D14_v2_Promo', 'Standard_D15_v2', - * 'Standard_D16_v3', 'Standard_D16s_v3', 'Standard_D1_v2', 'Standard_D2', 'Standard_D2_v2', - * 'Standard_D2_v2_Promo', 'Standard_D2_v3', 'Standard_D2s_v3', 'Standard_D3', 'Standard_D32_v3', - * 'Standard_D32s_v3', 'Standard_D3_v2', 'Standard_D3_v2_Promo', 'Standard_D4', 'Standard_D4_v2', - * 'Standard_D4_v2_Promo', 'Standard_D4_v3', 'Standard_D4s_v3', 'Standard_D5_v2', - * 'Standard_D5_v2_Promo', 'Standard_D64_v3', 'Standard_D64s_v3', 'Standard_D8_v3', - * 'Standard_D8s_v3', 'Standard_DS1', 'Standard_DS11', 'Standard_DS11_v2', - * 'Standard_DS11_v2_Promo', 'Standard_DS12', 'Standard_DS12_v2', 'Standard_DS12_v2_Promo', - * 'Standard_DS13', 'Standard_DS13-2_v2', 'Standard_DS13-4_v2', 'Standard_DS13_v2', - * 'Standard_DS13_v2_Promo', 'Standard_DS14', 'Standard_DS14-4_v2', 'Standard_DS14-8_v2', - * 'Standard_DS14_v2', 'Standard_DS14_v2_Promo', 'Standard_DS15_v2', 'Standard_DS1_v2', - * 'Standard_DS2', 'Standard_DS2_v2', 'Standard_DS2_v2_Promo', 'Standard_DS3', 'Standard_DS3_v2', - * 'Standard_DS3_v2_Promo', 'Standard_DS4', 'Standard_DS4_v2', 'Standard_DS4_v2_Promo', - * 'Standard_DS5_v2', 'Standard_DS5_v2_Promo', 'Standard_E16_v3', 'Standard_E16s_v3', - * 'Standard_E2_v3', 'Standard_E2s_v3', 'Standard_E32-16s_v3', 'Standard_E32-8s_v3', - * 'Standard_E32_v3', 'Standard_E32s_v3', 'Standard_E4_v3', 'Standard_E4s_v3', - * 'Standard_E64-16s_v3', 'Standard_E64-32s_v3', 'Standard_E64_v3', 'Standard_E64s_v3', - * 'Standard_E8_v3', 'Standard_E8s_v3', 'Standard_F1', 'Standard_F16', 'Standard_F16s', - * 'Standard_F16s_v2', 'Standard_F1s', 'Standard_F2', 'Standard_F2s', 'Standard_F2s_v2', - * 'Standard_F32s_v2', 'Standard_F4', 'Standard_F4s', 'Standard_F4s_v2', 'Standard_F64s_v2', - * 'Standard_F72s_v2', 'Standard_F8', 'Standard_F8s', 'Standard_F8s_v2', 'Standard_G1', - * 'Standard_G2', 'Standard_G3', 'Standard_G4', 'Standard_G5', 'Standard_GS1', 'Standard_GS2', - * 'Standard_GS3', 'Standard_GS4', 'Standard_GS4-4', 'Standard_GS4-8', 'Standard_GS5', - * 'Standard_GS5-16', 'Standard_GS5-8', 'Standard_H16', 'Standard_H16m', 'Standard_H16mr', - * 'Standard_H16r', 'Standard_H8', 'Standard_H8m', 'Standard_L16s', 'Standard_L32s', - * 'Standard_L4s', 'Standard_L8s', 'Standard_M128-32ms', 'Standard_M128-64ms', 'Standard_M128ms', - * 'Standard_M128s', 'Standard_M64-16ms', 'Standard_M64-32ms', 'Standard_M64ms', 'Standard_M64s', - * 'Standard_NC12', 'Standard_NC12s_v2', 'Standard_NC12s_v3', 'Standard_NC24', 'Standard_NC24r', - * 'Standard_NC24rs_v2', 'Standard_NC24rs_v3', 'Standard_NC24s_v2', 'Standard_NC24s_v3', - * 'Standard_NC6', 'Standard_NC6s_v2', 'Standard_NC6s_v3', 'Standard_ND12s', 'Standard_ND24rs', - * 'Standard_ND24s', 'Standard_ND6s', 'Standard_NV12', 'Standard_NV24', 'Standard_NV6' - */ - vmSize?: ContainerServiceVMSizeTypes; - /** - * OS Disk Size in GB to be used to specify the disk size for every machine in this master/agent - * pool. If you specify 0, it will apply the default osDisk size according to the vmSize - * specified. + * The size of the agent pool VMs. VM size availability varies by region. If a node contains + * insufficient compute resources (memory, cpu, etc) pods might fail to run correctly. For more + * details on restricted VM sizes, see: https://docs.microsoft.com/azure/aks/quotas-skus-regions */ + vmSize?: string; osDiskSizeGB?: number; /** - * OS disk type to be used for machines in a given agent pool. Allowed values are 'Ephemeral' and - * 'Managed'. Defaults to 'Managed'. May not be changed after creation. Possible values include: - * 'Managed', 'Ephemeral' + * Possible values include: 'Managed', 'Ephemeral' */ osDiskType?: OSDiskType; /** - * KubeletDiskType determines the placement of emptyDir volumes, container runtime data root, and - * Kubelet ephemeral storage. Currently allows one value, OS, resulting in Kubelet using the OS - * disk for data. Possible values include: 'OS', 'Temporary' + * Possible values include: 'OS', 'Temporary' */ kubeletDiskType?: KubeletDiskType; /** - * VNet SubnetID specifies the VNet's subnet identifier for nodes and maybe pods + * The ID of the subnet which agent pool nodes and optionally pods will join on startup. If this + * is not specified, a VNET and subnet will be generated and used. If no podSubnetID is + * specified, this applies to nodes and pods, otherwise it applies to just nodes. This is of the + * form: + * /subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/virtualNetworks/{virtualNetworkName}/subnets/{subnetName} */ vnetSubnetID?: string; /** - * Pod SubnetID specifies the VNet's subnet identifier for pods. + * The ID of the subnet which pods will join when launched. If omitted, pod IPs are statically + * assigned on the node subnet (see vnetSubnetID for more details). This is of the form: + * /subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/virtualNetworks/{virtualNetworkName}/subnets/{subnetName} */ podSubnetID?: string; /** - * Maximum number of pods that can run on a node. + * The maximum number of pods that can run on a node. */ maxPods?: number; /** - * OsType to be used to specify os type. Choose from Linux and Windows. Default to Linux. * Possible values include: 'Linux', 'Windows'. Default value: 'Linux'. */ osType?: OSType; /** - * OsSKU to be used to specify os sku. Choose from Ubuntu(default) and CBLMariner for Linux - * OSType. Not applicable to Windows OSType. Possible values include: 'Ubuntu', 'CBLMariner' + * Possible values include: 'Ubuntu', 'CBLMariner' */ osSKU?: OSSKU; /** - * Maximum number of nodes for auto-scaling + * The maximum number of nodes for auto-scaling */ maxCount?: number; /** - * Minimum number of nodes for auto-scaling + * The minimum number of nodes for auto-scaling */ minCount?: number; /** @@ -735,20 +699,24 @@ export interface AgentPool extends SubResource { */ enableAutoScaling?: boolean; /** - * AgentPoolType represents types of an agent pool. Possible values include: - * 'VirtualMachineScaleSets', 'AvailabilitySet' + * Possible values include: 'VirtualMachineScaleSets', 'AvailabilitySet' */ agentPoolType?: AgentPoolType; /** - * AgentPoolMode represents mode of an agent pool. Possible values include: 'System', 'User' + * Possible values include: 'System', 'User' */ mode?: AgentPoolMode; /** - * Version of orchestrator specified when creating the managed cluster. + * The version of Kubernetes running on the Agent Pool. As a best practice, you should upgrade + * all node pools in an AKS cluster to the same Kubernetes version. The node pool version must + * have the same major version as the control plane. The node pool minor version must be within + * two minor versions of the control plane version. The node pool version cannot be greater than + * the control plane version. For more information see [upgrading a node + * pool](https://docs.microsoft.com/azure/aks/use-multiple-node-pools#upgrade-a-node-pool). */ orchestratorVersion?: string; /** - * Version of node image + * The version of node image * **NOTE: This property will not be serialized. It can only be populated by the server.** */ readonly nodeImageVersion?: string; @@ -757,7 +725,7 @@ export interface AgentPool extends SubResource { */ upgradeSettings?: AgentPoolUpgradeSettings; /** - * The current deployment or provisioning state, which only appears in the response. + * The current deployment or provisioning state. * **NOTE: This property will not be serialized. It can only be populated by the server.** */ readonly provisioningState?: string; @@ -767,44 +735,53 @@ export interface AgentPool extends SubResource { */ readonly powerState?: PowerState; /** - * Availability zones for nodes. Must use VirtualMachineScaleSets AgentPoolType. + * The list of Availability zones to use for nodes. This can only be specified if the + * AgentPoolType property is 'VirtualMachineScaleSets'. */ availabilityZones?: string[]; /** - * Enable public IP for nodes + * Whether each node is allocated its own public IP. Some scenarios may require nodes in a node + * pool to receive their own dedicated public IP addresses. A common scenario is for gaming + * workloads, where a console needs to make a direct connection to a cloud virtual machine to + * minimize hops. For more information see [assigning a public IP per + * node](https://docs.microsoft.com/azure/aks/use-multiple-node-pools#assign-a-public-ip-per-node-for-your-node-pools). + * The default is false. */ enableNodePublicIP?: boolean; /** - * Public IP Prefix ID. VM nodes use IPs assigned from this Public IP Prefix. + * The public IP prefix ID which VM nodes should use IPs from. This is of the form: + * /subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/publicIPPrefixes/{publicIPPrefixName} */ nodePublicIPPrefixID?: string; /** - * ScaleSetPriority to be used to specify virtual machine scale set priority. Default to regular. - * Possible values include: 'Spot', 'Regular'. Default value: 'Regular'. + * The Virtual Machine Scale Set priority. If not specified, the default is 'Regular'. Possible + * values include: 'Spot', 'Regular'. Default value: 'Regular'. */ scaleSetPriority?: ScaleSetPriority; /** - * ScaleSetEvictionPolicy to be used to specify eviction policy for Spot virtual machine scale - * set. Default to Delete. Possible values include: 'Delete', 'Deallocate'. Default value: - * 'Delete'. + * The Virtual Machine Scale Set eviction policy to use. This cannot be specified unless the + * scaleSetPriority is 'Spot'. If not specified, the default is 'Delete'. Possible values + * include: 'Delete', 'Deallocate'. Default value: 'Delete'. */ scaleSetEvictionPolicy?: ScaleSetEvictionPolicy; /** - * SpotMaxPrice to be used to specify the maximum price you are willing to pay in US Dollars. - * Possible values are any decimal value greater than zero or -1 which indicates default price to - * be up-to on-demand. + * The max price (in US Dollars) you are willing to pay for spot instances. Possible values are + * any decimal value greater than zero or -1 which indicates default price to be up-to on-demand. + * Possible values are any decimal value greater than zero or -1 which indicates the willingness + * to pay any on-demand price. For more details on spot pricing, see [spot VMs + * pricing](https://docs.microsoft.com/azure/virtual-machines/spot-vms#pricing) */ spotMaxPrice?: number; /** - * Agent pool tags to be persisted on the agent pool virtual machine scale set. + * The tags to be persisted on the agent pool virtual machine scale set. */ tags?: { [propertyName: string]: string }; /** - * Agent pool node labels to be persisted across all nodes in agent pool. + * The node labels to be persisted across all nodes in agent pool. */ nodeLabels?: { [propertyName: string]: string }; /** - * Taints added to new nodes during node pool create and scale. For example, + * The taints added to new nodes during node pool create and scale. For example, * key=value:NoSchedule. */ nodeTaints?: string[]; @@ -813,35 +790,42 @@ export interface AgentPool extends SubResource { */ proximityPlacementGroupID?: string; /** - * KubeletConfig specifies the configuration of kubelet on agent nodes. + * The Kubelet configuration on the agent pool nodes. */ kubeletConfig?: KubeletConfig; /** - * LinuxOSConfig specifies the OS configuration of linux agent nodes. + * The OS configuration of Linux agent nodes. */ linuxOSConfig?: LinuxOSConfig; /** - * Whether to enable EncryptionAtHost + * Whether to enable host based OS and data drive encryption. This is only supported on certain + * VM sizes and in certain Azure regions. For more information, see: + * https://docs.microsoft.com/azure/aks/enable-host-encryption */ enableEncryptionAtHost?: boolean; /** - * Whether to use FIPS enabled OS + * Whether to enable UltraSSD + */ + enableUltraSSD?: boolean; + /** + * Whether to use a FIPS-enabled OS. See [Add a FIPS-enabled node + * pool](https://docs.microsoft.com/azure/aks/use-multiple-node-pools#add-a-fips-enabled-node-pool-preview) + * for more details. */ enableFIPS?: boolean; /** * GPUInstanceProfile to be used to specify GPU MIG instance profile for supported GPU VM SKU. - * Supported values are MIG1g, MIG2g, MIG3g, MIG4g and MIG7g. Possible values include: 'MIG1g', - * 'MIG2g', 'MIG3g', 'MIG4g', 'MIG7g' + * Possible values include: 'MIG1g', 'MIG2g', 'MIG3g', 'MIG4g', 'MIG7g' */ gpuInstanceProfile?: GPUInstanceProfile; } /** - * Profile for Windows VMs in the container service cluster. + * Profile for Windows VMs in the managed cluster. */ export interface ManagedClusterWindowsProfile { /** - * Specifies the name of the administrator account.

**restriction:** Cannot end in "." + * Specifies the name of the administrator account.

**Restriction:** Cannot end in "." *

**Disallowed values:** "administrator", "admin", "user", "user1", "test", "user2", * "test1", "user3", "admin1", "1", "123", "a", "actuser", "adm", "admin2", "aspnet", "backup", * "console", "david", "guest", "john", "owner", "root", "server", "sql", "support", @@ -859,12 +843,14 @@ export interface ManagedClusterWindowsProfile { */ adminPassword?: string; /** - * The licenseType to use for Windows VMs. Windows_Server is used to enable Azure Hybrid User - * Benefits for Windows VMs. Possible values include: 'None', 'Windows_Server' + * The license type to use for Windows VMs. See [Azure Hybrid User + * Benefits](https://azure.microsoft.com/pricing/hybrid-benefit/faq/) for more details. Possible + * values include: 'None', 'Windows_Server' */ licenseType?: LicenseType; /** - * Whether to enable CSI proxy. + * Whether to enable CSI proxy. For more details on CSI proxy, see the [CSI proxy GitHub + * repo](https://github.com/kubernetes-csi/csi-proxy). */ enableCSIProxy?: boolean; } @@ -885,8 +871,8 @@ export interface ContainerServiceSshPublicKey { */ export interface ContainerServiceSshConfiguration { /** - * The list of SSH public keys used to authenticate with Linux-based VMs. Only expect one key - * specified. + * The list of SSH public keys used to authenticate with Linux-based VMs. A maximum of 1 key may + * be specified. */ publicKeys: ContainerServiceSshPublicKey[]; } @@ -900,7 +886,7 @@ export interface ContainerServiceLinuxProfile { */ adminUsername: string; /** - * SSH configuration for Linux-based VMs running on Azure. + * The SSH configuration for Linux-based VMs running on Azure. */ ssh: ContainerServiceSshConfiguration; } @@ -910,8 +896,9 @@ export interface ContainerServiceLinuxProfile { */ export interface ManagedClusterLoadBalancerProfileManagedOutboundIPs { /** - * Desired number of outbound IP created/managed by Azure for the cluster load balancer. Allowed - * values must be in the range of 1 to 100 (inclusive). The default value is 1. Default value: 1. + * The desired number of outbound IPs created/managed by Azure for the cluster load balancer. + * Allowed values must be in the range of 1 to 100 (inclusive). The default value is 1. Default + * value: 1. */ count?: number; } @@ -967,13 +954,13 @@ export interface ManagedClusterLoadBalancerProfile { */ effectiveOutboundIPs?: ResourceReference[]; /** - * Desired number of allocated SNAT ports per VM. Allowed values must be in the range of 0 to + * The desired number of allocated SNAT ports per VM. Allowed values are in the range of 0 to * 64000 (inclusive). The default value is 0 which results in Azure dynamically allocating ports. * Default value: 0. */ allocatedOutboundPorts?: number; /** - * Desired outbound flow idle timeout in minutes. Allowed values must be in the range of 4 to 120 + * Desired outbound flow idle timeout in minutes. Allowed values are in the range of 4 to 120 * (inclusive). The default value is 30 minutes. Default value: 30. */ idleTimeoutInMinutes?: number; @@ -984,18 +971,18 @@ export interface ManagedClusterLoadBalancerProfile { */ export interface ContainerServiceNetworkProfile { /** - * Network plugin used for building Kubernetes network. Possible values include: 'azure', + * Network plugin used for building the Kubernetes network. Possible values include: 'azure', * 'kubenet'. Default value: 'kubenet'. */ networkPlugin?: NetworkPlugin; /** - * Network policy used for building Kubernetes network. Possible values include: 'calico', + * Network policy used for building the Kubernetes network. Possible values include: 'calico', * 'azure' */ networkPolicy?: NetworkPolicy; /** - * Network mode used for building Kubernetes network. Possible values include: 'transparent', - * 'bridge' + * The network mode Azure CNI is configured with. This cannot be specified if networkPlugin is + * anything other than 'azure'. Possible values include: 'transparent', 'bridge' */ networkMode?: NetworkMode; /** @@ -1019,12 +1006,16 @@ export interface ContainerServiceNetworkProfile { */ dockerBridgeCidr?: string; /** - * The outbound (egress) routing method. Possible values include: 'loadBalancer', - * 'userDefinedRouting'. Default value: 'loadBalancer'. + * The outbound (egress) routing method. This can only be set at cluster creation time and cannot + * be changed later. For more information see [egress outbound + * type](https://docs.microsoft.com/azure/aks/egress-outboundtype). Possible values include: + * 'loadBalancer', 'userDefinedRouting'. Default value: 'loadBalancer'. */ outboundType?: OutboundType; /** - * The load balancer sku for the managed cluster. Possible values include: 'standard', 'basic' + * The load balancer sku for the managed cluster. The default is 'standard'. See [Azure Load + * Balancer SKUs](https://docs.microsoft.com/azure/load-balancer/skus) for more information about + * the differences between load balancer SKUs. Possible values include: 'standard', 'basic' */ loadBalancerSku?: LoadBalancerSku; /** @@ -1047,7 +1038,7 @@ export interface SystemData { */ createdByType?: CreatedByType; /** - * The timestamp of resource creation (UTC). + * The UTC timestamp of resource creation. */ createdAt?: Date; /** @@ -1070,18 +1061,22 @@ export interface SystemData { */ export interface TimeInWeek { /** - * A day in a week. Possible values include: 'Sunday', 'Monday', 'Tuesday', 'Wednesday', + * The day of the week. Possible values include: 'Sunday', 'Monday', 'Tuesday', 'Wednesday', * 'Thursday', 'Friday', 'Saturday' */ day?: WeekDay; /** - * hour slots in a day. + * A list of hours in the day used to identify a time range. Each integer hour represents a time + * range beginning at 0m after the hour ending at the next hour (non-inclusive). 0 corresponds to + * 00:00 UTC, 23 corresponds to 23:00 UTC. Specifying [0, 1] means the 00:00 - 02:00 UTC time + * range. */ hourSlots?: number[]; } /** - * The time span with start and end properties. + * For example, between 2021-05-25T13:00:00Z and 2021-05-25T14:00:00Z. + * @summary A time range. */ export interface TimeSpan { /** @@ -1095,16 +1090,21 @@ export interface TimeSpan { } /** - * maintenance configuration. + * See [planned maintenance](https://docs.microsoft.com/azure/aks/planned-maintenance) for more + * information about planned maintenance. + * @summary Planned maintenance configuration, used to configure when updates can be deployed to a + * Managed Cluster. */ export interface MaintenanceConfiguration extends SubResource { /** - * The system meta data relating to this resource. + * The system metadata relating to this resource. * **NOTE: This property will not be serialized. It can only be populated by the server.** */ readonly systemData?: SystemData; /** - * Weekday time slots allowed to upgrade. + * Time slots during the week when planned maintenance is allowed to proceed. If two array + * entries specify the same day of the week, the applied configuration is the union of times in + * both entries. */ timeInWeek?: TimeInWeek[]; /** @@ -1114,15 +1114,15 @@ export interface MaintenanceConfiguration extends SubResource { } /** - * run command request + * A run command request */ export interface RunCommandRequest { /** - * command to run. + * The command to run. */ command: string; /** - * base64 encoded zip file, contains files required by the command + * A base64 encoded zip file containing the files required by the command. */ context?: string; /** @@ -1136,7 +1136,7 @@ export interface RunCommandRequest { */ export interface RunCommandResult { /** - * command id. + * The command id. * **NOTE: This property will not be serialized. It can only be populated by the server.** */ readonly id?: string; @@ -1146,27 +1146,27 @@ export interface RunCommandResult { */ readonly provisioningState?: string; /** - * exit code of the command + * The exit code of the command * **NOTE: This property will not be serialized. It can only be populated by the server.** */ readonly exitCode?: number; /** - * time when the command started. + * The time when the command started. * **NOTE: This property will not be serialized. It can only be populated by the server.** */ readonly startedAt?: Date; /** - * time when the command finished. + * The time when the command finished. * **NOTE: This property will not be serialized. It can only be populated by the server.** */ readonly finishedAt?: Date; /** - * command output. + * The command output. * **NOTE: This property will not be serialized. It can only be populated by the server.** */ readonly logs?: string; /** - * explain why provisioningState is set to failed (if so). + * An explanation of why provisioningState is set to failed (if so). * **NOTE: This property will not be serialized. It can only be populated by the server.** */ readonly reason?: string; @@ -1198,19 +1198,19 @@ export interface ContainerServiceDiagnosticsProfile { } /** - * An interface representing UserAssignedIdentity. + * Details about a user assigned identity. */ export interface UserAssignedIdentity { /** - * The resource id of the user assigned identity. + * The resource ID of the user assigned identity. */ resourceId?: string; /** - * The client id of the user assigned identity. + * The client ID of the user assigned identity. */ clientId?: string; /** - * The object id of the user assigned identity. + * The object ID of the user assigned identity. */ objectId?: string; } @@ -1251,23 +1251,23 @@ export interface ManagedClusterPodIdentityProvisioningInfo { } /** - * An interface representing ManagedClusterPodIdentity. + * Details about the pod identity assigned to the Managed Cluster. */ export interface ManagedClusterPodIdentity { /** - * Name of the pod identity. + * The name of the pod identity. */ name: string; /** - * Namespace of the pod identity. + * The namespace of the pod identity. */ namespace: string; /** - * Binding selector to use for the AzureIdentityBinding resource. + * The binding selector to use for the AzureIdentityBinding resource. */ bindingSelector?: string; /** - * Information of the user assigned identity. + * The user assigned identity details. */ identity: UserAssignedIdentity; /** @@ -1283,25 +1283,32 @@ export interface ManagedClusterPodIdentity { } /** - * An interface representing ManagedClusterPodIdentityException. + * See [disable AAD Pod Identity for a specific + * Pod/Application](https://azure.github.io/aad-pod-identity/docs/configure/application_exception/) + * for more details. + * @summary A pod identity exception, which allows pods with certain labels to access the Azure + * Instance Metadata Service (IMDS) endpoint without being intercepted by the node-managed identity + * (NMI) server. */ export interface ManagedClusterPodIdentityException { /** - * Name of the pod identity exception. + * The name of the pod identity exception. */ name: string; /** - * Namespace of the pod identity exception. + * The namespace of the pod identity exception. */ namespace: string; /** - * Pod labels to match. + * The pod labels to match. */ podLabels: { [propertyName: string]: string }; } /** - * An interface representing ManagedClusterPodIdentityProfile. + * See [use AAD pod identity](https://docs.microsoft.com/azure/aks/use-azure-ad-pod-identity) for + * more details on pod identity integration. + * @summary The pod identity profile of the Managed Cluster. */ export interface ManagedClusterPodIdentityProfile { /** @@ -1309,21 +1316,26 @@ export interface ManagedClusterPodIdentityProfile { */ enabled?: boolean; /** - * Customer consent for enabling AAD pod identity addon in cluster using Kubenet network plugin. + * Whether pod identity is allowed to run on clusters with Kubenet networking. Running in Kubenet + * is disabled by default due to the security related nature of AAD Pod Identity and the risks of + * IP spoofing. See [using Kubenet network plugin with AAD Pod + * Identity](https://docs.microsoft.com/azure/aks/use-azure-ad-pod-identity#using-kubenet-network-plugin-with-azure-active-directory-pod-managed-identities) + * for more information. */ allowNetworkPluginKubenet?: boolean; /** - * User assigned pod identity settings. + * The pod identities to use in the cluster. */ userAssignedIdentities?: ManagedClusterPodIdentity[]; /** - * User assigned pod identity exception settings. + * The pod identity exceptions to allow. */ userAssignedIdentityExceptions?: ManagedClusterPodIdentityException[]; } /** - * AADProfile specifies attributes for Azure Active Directory integration. + * For more details see [managed AAD on AKS](https://docs.microsoft.com/azure/aks/managed-aad). + * @summary AADProfile specifies attributes for Azure Active Directory integration. */ export interface ManagedClusterAADProfile { /** @@ -1335,7 +1347,7 @@ export interface ManagedClusterAADProfile { */ enableAzureRBAC?: boolean; /** - * AAD group object IDs that will have admin role of the cluster. + * The list of AAD group object IDs that will have admin role of the cluster. */ adminGroupObjectIDs?: string[]; /** @@ -1362,8 +1374,10 @@ export interface ManagedClusterAADProfile { */ export interface ManagedClusterAutoUpgradeProfile { /** - * upgrade channel for auto upgrade. Possible values include: 'rapid', 'stable', 'patch', - * 'node-image', 'none' + * The upgrade channel for auto upgrade. The default is 'none'. For more information see [setting + * the AKS cluster auto-upgrade + * channel](https://docs.microsoft.com/azure/aks/upgrade-cluster#set-auto-upgrade-channel). + * Possible values include: 'rapid', 'stable', 'patch', 'node-image', 'none' */ upgradeChannel?: UpgradeChannel; } @@ -1372,25 +1386,101 @@ export interface ManagedClusterAutoUpgradeProfile { * Parameters to be applied to the cluster-autoscaler when enabled */ export interface ManagedClusterPropertiesAutoScalerProfile { + /** + * Detects similar node pools and balances the number of nodes between them. Valid values are + * 'true' and 'false' + */ balanceSimilarNodeGroups?: string; /** - * Possible values include: 'least-waste', 'most-pods', 'priority', 'random' + * The expander to use when scaling up. If not specified, the default is 'random'. See + * [expanders](https://github.com/kubernetes/autoscaler/blob/master/cluster-autoscaler/FAQ.md#what-are-expanders) + * for more information. Possible values include: 'least-waste', 'most-pods', 'priority', + * 'random' */ expander?: Expander; + /** + * The maximum number of empty nodes that can be deleted at the same time. This must be a + * positive integer. The default is 10. + */ maxEmptyBulkDelete?: string; + /** + * The maximum number of seconds the cluster autoscaler waits for pod termination when trying to + * scale down a node. The default is 600. + */ maxGracefulTerminationSec?: string; + /** + * The maximum time the autoscaler waits for a node to be provisioned. The default is '15m'. + * Values must be an integer followed by an 'm'. No unit of time other than minutes (m) is + * supported. + */ maxNodeProvisionTime?: string; + /** + * The maximum percentage of unready nodes in the cluster. After this percentage is exceeded, + * cluster autoscaler halts operations. The default is 45. The maximum is 100 and the minimum is + * 0. + */ maxTotalUnreadyPercentage?: string; + /** + * Ignore unscheduled pods before they're a certain age. For scenarios like burst/batch scale + * where you don't want CA to act before the kubernetes scheduler could schedule all the pods, + * you can tell CA to ignore unscheduled pods before they're a certain age. The default is '0s'. + * Values must be an integer followed by a unit ('s' for seconds, 'm' for minutes, 'h' for hours, + * etc). + */ newPodScaleUpDelay?: string; + /** + * The number of allowed unready nodes, irrespective of max-total-unready-percentage. This must + * be an integer. The default is 3. + */ okTotalUnreadyCount?: string; + /** + * How often cluster is reevaluated for scale up or down. The default is '10'. Values must be an + * integer number of seconds. + */ scanInterval?: string; + /** + * How long after scale up that scale down evaluation resumes. The default is '10m'. Values must + * be an integer followed by an 'm'. No unit of time other than minutes (m) is supported. + */ scaleDownDelayAfterAdd?: string; + /** + * How long after node deletion that scale down evaluation resumes. The default is the + * scan-interval. Values must be an integer followed by an 'm'. No unit of time other than + * minutes (m) is supported. + */ scaleDownDelayAfterDelete?: string; + /** + * How long after scale down failure that scale down evaluation resumes. The default is '3m'. + * Values must be an integer followed by an 'm'. No unit of time other than minutes (m) is + * supported. + */ scaleDownDelayAfterFailure?: string; + /** + * How long a node should be unneeded before it is eligible for scale down. The default is '10m'. + * Values must be an integer followed by an 'm'. No unit of time other than minutes (m) is + * supported. + */ scaleDownUnneededTime?: string; + /** + * How long an unready node should be unneeded before it is eligible for scale down. The default + * is '20m'. Values must be an integer followed by an 'm'. No unit of time other than minutes (m) + * is supported. + */ scaleDownUnreadyTime?: string; + /** + * Node utilization level, defined as sum of requested resources divided by capacity, below which + * a node can be considered for scale down. The default is '0.5'. + */ scaleDownUtilizationThreshold?: string; + /** + * If cluster autoscaler will skip deleting nodes with pods with local storage, for example, + * EmptyDir or HostPath. The default is true. + */ skipNodesWithLocalStorage?: string; + /** + * If cluster autoscaler will skip deleting nodes with pods from kube-system (except for + * DaemonSet or mirror pods). The default is true. + */ skipNodesWithSystemPods?: string; } @@ -1399,17 +1489,29 @@ export interface ManagedClusterPropertiesAutoScalerProfile { */ export interface ManagedClusterAPIServerAccessProfile { /** - * Authorized IP Ranges to kubernetes API server. + * The IP ranges authorized to access the Kubernetes API server. IP ranges are specified in CIDR + * format, e.g. 137.117.106.88/29. This feature is not compatible with clusters that use Public + * IP Per Node, or clusters that are using a Basic Load Balancer. For more information see [API + * server authorized IP + * ranges](https://docs.microsoft.com/azure/aks/api-server-authorized-ip-ranges). */ authorizedIPRanges?: string[]; /** - * Whether to create the cluster as a private cluster or not. + * Whether to create the cluster as a private cluster or not. For more details, see [Creating a + * private AKS cluster](https://docs.microsoft.com/azure/aks/private-clusters). */ enablePrivateCluster?: boolean; /** - * Private dns zone mode for private cluster. + * The private DNS zone mode for the cluster. The default is System. For more details see + * [configure private DNS + * zone](https://docs.microsoft.com/azure/aks/private-clusters#configure-private-dns-zone). + * Allowed values are 'system' and 'none'. */ privateDNSZone?: string; + /** + * Whether to create additional public FQDN for private cluster or not. + */ + enablePrivateClusterPublicFQDN?: boolean; } /** @@ -1439,7 +1541,7 @@ export interface PrivateLinkResource { */ groupId?: string; /** - * RequiredMembers of the resource + * The RequiredMembers of the resource */ requiredMembers?: string[]; /** @@ -1450,19 +1552,19 @@ export interface PrivateLinkResource { } /** - * Configurations for provisioning the cluster with HTTP proxy servers. + * Cluster HTTP proxy configuration. */ export interface ManagedClusterHTTPProxyConfig { /** - * HTTP proxy server endpoint to use. + * The HTTP proxy server endpoint to use. */ httpProxy?: string; /** - * HTTPS proxy server endpoint to use. + * The HTTPS proxy server endpoint to use. */ httpsProxy?: string; /** - * Endpoints that should not go through proxy. + * The endpoints that should not go through proxy. */ noProxy?: string[]; /** @@ -1502,32 +1604,32 @@ export interface ManagedClusterIdentity { */ readonly tenantId?: string; /** - * The type of identity used for the managed cluster. Type 'SystemAssigned' will use an - * implicitly created identity in master components and an auto-created user assigned identity in - * MC_ resource group in agent nodes. Type 'None' will not use MSI for the managed cluster, - * service principal will be used instead. Possible values include: 'SystemAssigned', - * 'UserAssigned', 'None' + * The type of identity used for the managed cluster. For more information see [use managed + * identities in AKS](https://docs.microsoft.com/azure/aks/use-managed-identity). Possible values + * include: 'SystemAssigned', 'UserAssigned', 'None' */ type?: ResourceIdentityType; /** * The user identity associated with the managed cluster. This identity will be used in control - * plane and only one user assigned identity is allowed. The user identity dictionary key - * references will be ARM resource ids in the form: + * plane. Only one user assigned identity is allowed. The keys must be ARM resource IDs in the + * form: * '/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ManagedIdentity/userAssignedIdentities/{identityName}'. */ userAssignedIdentities?: { [propertyName: string]: ManagedClusterIdentityUserAssignedIdentitiesValue }; } /** - * An interface representing ManagedClusterSKU. + * The SKU of a Managed Cluster. */ export interface ManagedClusterSKU { /** - * Name of a managed cluster SKU. Possible values include: 'Basic' + * The name of a managed cluster SKU. Possible values include: 'Basic' */ name?: ManagedClusterSKUName; /** - * Tier of a managed cluster SKU. Possible values include: 'Paid', 'Free' + * The tier of a managed cluster SKU. If not specified, the default is 'Free'. See [uptime + * SLA](https://docs.microsoft.com/azure/aks/uptime-sla) for more details. Possible values + * include: 'Paid', 'Free' */ tier?: ManagedClusterSKUTier; } @@ -1551,12 +1653,12 @@ export interface ExtendedLocation { */ export interface ManagedCluster extends Resource { /** - * The current deployment or provisioning state, which only appears in the response. + * The current provisioning state. * **NOTE: This property will not be serialized. It can only be populated by the server.** */ readonly provisioningState?: string; /** - * Represents the Power State of the cluster + * The Power State of the cluster. * **NOTE: This property will not be serialized. It can only be populated by the server.** */ readonly powerState?: PowerState; @@ -1566,42 +1668,52 @@ export interface ManagedCluster extends Resource { */ readonly maxAgentPools?: number; /** - * Version of Kubernetes specified when creating the managed cluster. + * The version of Kubernetes the Managed Cluster is running. When you upgrade a supported AKS + * cluster, Kubernetes minor versions cannot be skipped. All upgrades must be performed + * sequentially by major version number. For example, upgrades between 1.14.x -> 1.15.x or 1.15.x + * -> 1.16.x are allowed, however 1.14.x -> 1.16.x is not allowed. See [upgrading an AKS + * cluster](https://docs.microsoft.com/azure/aks/upgrade-cluster) for more details. */ kubernetesVersion?: string; /** - * DNS prefix specified when creating the managed cluster. + * The DNS prefix of the Managed Cluster. This cannot be updated once the Managed Cluster has + * been created. */ dnsPrefix?: string; /** - * FQDN subdomain specified when creating private cluster with custom private dns zone. + * The FQDN subdomain of the private cluster with custom private dns zone. This cannot be updated + * once the Managed Cluster has been created. */ fqdnSubdomain?: string; /** - * FQDN for the master pool. + * The FQDN of the master pool. * **NOTE: This property will not be serialized. It can only be populated by the server.** */ readonly fqdn?: string; /** - * FQDN of private cluster. + * The FQDN of private cluster. * **NOTE: This property will not be serialized. It can only be populated by the server.** */ readonly privateFQDN?: string; /** - * FQDN for the master pool which used by proxy config. + * The special FQDN used by the Azure Portal to access the Managed Cluster. This FQDN is for use + * only by the Azure Portal and should not be used by other clients. The Azure Portal requires + * certain Cross-Origin Resource Sharing (CORS) headers to be sent in some responses, which + * Kubernetes APIServer doesn't handle by default. This special FQDN supports CORS, allowing the + * Azure Portal to function properly. * **NOTE: This property will not be serialized. It can only be populated by the server.** */ readonly azurePortalFQDN?: string; /** - * Properties of the agent pool. + * The agent pool properties. */ agentPoolProfiles?: ManagedClusterAgentPoolProfile[]; /** - * Profile for Linux VMs in the container service cluster. + * The profile for Linux VMs in the Managed Cluster. */ linuxProfile?: ContainerServiceLinuxProfile; /** - * Profile for Windows VMs in the container service cluster. + * The profile for Windows VMs in the Managed Cluster. */ windowsProfile?: ManagedClusterWindowsProfile; /** @@ -1610,15 +1722,17 @@ export interface ManagedCluster extends Resource { */ servicePrincipalProfile?: ManagedClusterServicePrincipalProfile; /** - * Profile of managed cluster add-on. + * The profile of managed cluster add-on. */ addonProfiles?: { [propertyName: string]: ManagedClusterAddonProfile }; /** - * Profile of managed cluster pod identity. + * The pod identity profile of the Managed Cluster. See [use AAD pod + * identity](https://docs.microsoft.com/azure/aks/use-azure-ad-pod-identity) for more details on + * AAD pod identity integration. */ podIdentityProfile?: ManagedClusterPodIdentityProfile; /** - * Name of the resource group containing agent pool nodes. + * The name of the resource group containing agent pool nodes. */ nodeResourceGroup?: string; /** @@ -1631,15 +1745,15 @@ export interface ManagedCluster extends Resource { */ enablePodSecurityPolicy?: boolean; /** - * Profile of network configuration. + * The network configuration profile. */ networkProfile?: ContainerServiceNetworkProfile; /** - * Profile of Azure Active Directory configuration. + * The Azure Active Directory configuration. */ aadProfile?: ManagedClusterAADProfile; /** - * Profile of auto upgrade configuration. + * The auto upgrade configuration. */ autoUpgradeProfile?: ManagedClusterAutoUpgradeProfile; /** @@ -1647,11 +1761,13 @@ export interface ManagedCluster extends Resource { */ autoScalerProfile?: ManagedClusterPropertiesAutoScalerProfile; /** - * Access profile for managed cluster API server. + * The access profile for managed cluster API server. */ apiServerAccessProfile?: ManagedClusterAPIServerAccessProfile; /** - * ResourceId of the disk encryption set to use for enabling encryption at rest. + * The Resource ID of the disk encryption set to use for enabling encryption at rest. This is of + * the form: + * '/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Compute/diskEncryptionSets/{encryptionSetName}' */ diskEncryptionSetID?: string; /** @@ -1663,8 +1779,10 @@ export interface ManagedCluster extends Resource { */ privateLinkResources?: PrivateLinkResource[]; /** - * If set to true, getting static credential will be disabled for this cluster. Expected to only - * be used for AAD clusters. + * If local accounts should be disabled on the Managed Cluster. If set to true, getting static + * credentials will be disabled for this cluster. This must only be used on Managed Clusters that + * are AAD enabled. For more details see [disable local + * accounts](https://docs.microsoft.com/azure/aks/managed-aad#disable-local-accounts-preview). */ disableLocalAccounts?: boolean; /** @@ -1700,11 +1818,11 @@ export interface ManagedClusterAccessProfile extends Resource { */ export interface ManagedClusterPoolUpgradeProfileUpgradesItem { /** - * Kubernetes version (major, minor, patch). + * The Kubernetes version (major.minor.patch). */ kubernetesVersion?: string; /** - * Whether Kubernetes version is currently in preview. + * Whether the Kubernetes version is currently in preview. */ isPreview?: boolean; } @@ -1714,15 +1832,14 @@ export interface ManagedClusterPoolUpgradeProfileUpgradesItem { */ export interface ManagedClusterPoolUpgradeProfile { /** - * Kubernetes version (major, minor, patch). + * The Kubernetes version (major.minor.patch). */ kubernetesVersion: string; /** - * Pool name. + * The Agent Pool name. */ name?: string; /** - * OsType to be used to specify os type. Choose from Linux and Windows. Default to Linux. * Possible values include: 'Linux', 'Windows'. Default value: 'Linux'. */ osType: OSType; @@ -1737,17 +1854,17 @@ export interface ManagedClusterPoolUpgradeProfile { */ export interface ManagedClusterUpgradeProfile { /** - * Id of upgrade profile. + * The ID of the upgrade profile. * **NOTE: This property will not be serialized. It can only be populated by the server.** */ readonly id?: string; /** - * Name of upgrade profile. + * The name of the upgrade profile. * **NOTE: This property will not be serialized. It can only be populated by the server.** */ readonly name?: string; /** - * Type of upgrade profile. + * The type of the upgrade profile. * **NOTE: This property will not be serialized. It can only be populated by the server.** */ readonly type?: string; @@ -1766,11 +1883,11 @@ export interface ManagedClusterUpgradeProfile { */ export interface AgentPoolUpgradeProfilePropertiesUpgradesItem { /** - * Kubernetes version (major, minor, patch). + * The Kubernetes version (major.minor.patch). */ kubernetesVersion?: string; /** - * Whether Kubernetes version is currently in preview. + * Whether the Kubernetes version is currently in preview. */ isPreview?: boolean; } @@ -1780,26 +1897,25 @@ export interface AgentPoolUpgradeProfilePropertiesUpgradesItem { */ export interface AgentPoolUpgradeProfile { /** - * Id of the agent pool upgrade profile. + * The ID of the agent pool upgrade profile. * **NOTE: This property will not be serialized. It can only be populated by the server.** */ readonly id?: string; /** - * Name of the agent pool upgrade profile. + * The name of the agent pool upgrade profile. * **NOTE: This property will not be serialized. It can only be populated by the server.** */ readonly name?: string; /** - * Type of the agent pool upgrade profile. + * The type of the agent pool upgrade profile. * **NOTE: This property will not be serialized. It can only be populated by the server.** */ readonly type?: string; /** - * Kubernetes version (major, minor, patch). + * The Kubernetes version (major.minor.patch). */ kubernetesVersion: string; /** - * OsType to be used to specify os type. Choose from Linux and Windows. Default to Linux. * Possible values include: 'Linux', 'Windows'. Default value: 'Linux'. */ osType: OSType; @@ -1808,7 +1924,7 @@ export interface AgentPoolUpgradeProfile { */ upgrades?: AgentPoolUpgradeProfilePropertiesUpgradesItem[]; /** - * LatestNodeImageVersion is the latest AKS supported node image version. + * The latest AKS supported node image version. */ latestNodeImageVersion?: string; } @@ -1822,7 +1938,7 @@ export interface AgentPoolAvailableVersionsPropertiesAgentPoolVersionsItem { */ default?: boolean; /** - * Kubernetes version (major, minor, patch). + * The Kubernetes version (major.minor.patch). */ kubernetesVersion?: string; /** @@ -1836,17 +1952,17 @@ export interface AgentPoolAvailableVersionsPropertiesAgentPoolVersionsItem { */ export interface AgentPoolAvailableVersions { /** - * Id of the agent pool available versions. + * The ID of the agent pool version list. * **NOTE: This property will not be serialized. It can only be populated by the server.** */ readonly id?: string; /** - * Name of the agent pool available versions. + * The name of the agent pool version list. * **NOTE: This property will not be serialized. It can only be populated by the server.** */ readonly name?: string; /** - * Type of the agent pool available versions. + * Type of the agent pool version list. * **NOTE: This property will not be serialized. It can only be populated by the server.** */ readonly type?: string; @@ -1873,7 +1989,7 @@ export interface CredentialResult { } /** - * The list of credential result response. + * The list credential result response. */ export interface CredentialResults { /** @@ -1888,7 +2004,7 @@ export interface CredentialResults { */ export interface PrivateEndpoint { /** - * The resource Id for private endpoint + * The resource ID of the private endpoint */ id?: string; } @@ -1969,11 +2085,11 @@ export interface PrivateLinkResourcesListResult { */ export interface OSOptionProperty { /** - * OS type. + * The OS type. */ osType: string; /** - * Whether FIPS image is enabled. + * Whether the image is FIPS-enabled. */ enableFipsImage: boolean; } @@ -1983,36 +2099,117 @@ export interface OSOptionProperty { */ export interface OSOptionProfile { /** - * Id of the OS option profile. + * The ID of the OS option resource. * **NOTE: This property will not be serialized. It can only be populated by the server.** */ readonly id?: string; /** - * Name of the OS option profile. + * The name of the OS option resource. * **NOTE: This property will not be serialized. It can only be populated by the server.** */ readonly name?: string; /** - * Type of the OS option profile. + * The type of the OS option resource. * **NOTE: This property will not be serialized. It can only be populated by the server.** */ readonly type?: string; /** - * The list of OS option properties. + * The list of OS options. */ osOptionPropertyList: OSOptionProperty[]; } +/** + * connect information from the AKS agent nodes to a single endpoint. + */ +export interface EndpointDetail { + /** + * An IP Address that Domain Name currently resolves to. + */ + ipAddress?: string; + /** + * The port an endpoint is connected to. + */ + port?: number; + /** + * The protocol used for connection + */ + protocol?: string; + /** + * Description of the detail + */ + description?: string; +} + +/** + * A domain name that AKS agent nodes are reaching at. + */ +export interface EndpointDependency { + /** + * The domain name of the dependency. + */ + domainName?: string; + /** + * The Ports and Protocols used when connecting to domainName. + */ + endpointDetails?: EndpointDetail[]; +} + +/** + * Egress endpoints which AKS agent nodes connect to for common purpose. + */ +export interface OutboundEnvironmentEndpoint { + /** + * The category of endpoints accessed by the AKS agent node, e.g. azure-resource-management, + * apiserver, etc. + */ + category?: string; + /** + * The endpoints that AKS agent nodes connect to + */ + endpoints?: EndpointDependency[]; +} + /** * Optional Parameters. */ export interface ManagedClustersGetOSOptionsOptionalParams extends msRest.RequestOptionsBase { /** - * resource type for which the OS options needs to be returned + * The resource type for which the OS options needs to be returned */ resourceType?: string; } +/** + * Optional Parameters. + */ +export interface ManagedClustersListClusterAdminCredentialsOptionalParams extends msRest.RequestOptionsBase { + /** + * server fqdn type for credentials to be returned + */ + serverFqdn?: string; +} + +/** + * Optional Parameters. + */ +export interface ManagedClustersListClusterUserCredentialsOptionalParams extends msRest.RequestOptionsBase { + /** + * server fqdn type for credentials to be returned + */ + serverFqdn?: string; +} + +/** + * Optional Parameters. + */ +export interface ManagedClustersListClusterMonitoringUserCredentialsOptionalParams extends msRest.RequestOptionsBase { + /** + * server fqdn type for credentials to be returned + */ + serverFqdn?: string; +} + /** * An interface representing ContainerServiceClientOptions. */ @@ -2022,7 +2219,7 @@ export interface ContainerServiceClientOptions extends AzureServiceClientOptions /** * @interface - * The List Compute Operation operation response. + * The List Operation response. * @extends Array */ export interface OperationListResult extends Array { @@ -2041,6 +2238,19 @@ export interface ManagedClusterListResult extends Array { readonly nextLink?: string; } +/** + * @interface + * Collection of OutboundEnvironmentEndpoint + * @extends Array + */ +export interface OutboundEnvironmentEndpointCollection extends Array { + /** + * Link to next page of resources. + * **NOTE: This property will not be serialized. It can only be populated by the server.** + */ + readonly nextLink?: string; +} + /** * @interface * The response from the List maintenance configurations operation. @@ -2617,6 +2827,26 @@ export type ManagedClustersGetCommandResultResponse = RunCommandResult & { }; }; +/** + * Contains response data for the listOutboundNetworkDependenciesEndpoints operation. + */ +export type ManagedClustersListOutboundNetworkDependenciesEndpointsResponse = OutboundEnvironmentEndpointCollection & { + /** + * The underlying HTTP response. + */ + _response: msRest.HttpResponse & { + /** + * The response body as text (string format) + */ + bodyAsText: string; + + /** + * The response body as parsed JSON or XML + */ + parsedBody: OutboundEnvironmentEndpointCollection; + }; +}; + /** * Contains response data for the beginCreateOrUpdate operation. */ @@ -2717,6 +2947,26 @@ export type ManagedClustersListByResourceGroupNextResponse = ManagedClusterListR }; }; +/** + * Contains response data for the listOutboundNetworkDependenciesEndpointsNext operation. + */ +export type ManagedClustersListOutboundNetworkDependenciesEndpointsNextResponse = OutboundEnvironmentEndpointCollection & { + /** + * The underlying HTTP response. + */ + _response: msRest.HttpResponse & { + /** + * The response body as text (string format) + */ + bodyAsText: string; + + /** + * The response body as parsed JSON or XML + */ + parsedBody: OutboundEnvironmentEndpointCollection; + }; +}; + /** * Contains response data for the listByManagedCluster operation. */ diff --git a/sdk/containerservice/arm-containerservice/src/models/managedClustersMappers.ts b/sdk/containerservice/arm-containerservice/src/models/managedClustersMappers.ts index b70e98f63d94..460ff2b14d4f 100644 --- a/sdk/containerservice/arm-containerservice/src/models/managedClustersMappers.ts +++ b/sdk/containerservice/arm-containerservice/src/models/managedClustersMappers.ts @@ -17,6 +17,8 @@ export { ContainerServiceSshPublicKey, CredentialResult, CredentialResults, + EndpointDependency, + EndpointDetail, ExtendedLocation, KubeletConfig, LinuxOSConfig, @@ -52,6 +54,8 @@ export { ManagedClusterWindowsProfile, OSOptionProfile, OSOptionProperty, + OutboundEnvironmentEndpoint, + OutboundEnvironmentEndpointCollection, PowerState, PrivateEndpoint, PrivateEndpointConnection, diff --git a/sdk/containerservice/arm-containerservice/src/models/mappers.ts b/sdk/containerservice/arm-containerservice/src/models/mappers.ts index fa40f16ca8d0..7389bda7b752 100644 --- a/sdk/containerservice/arm-containerservice/src/models/mappers.ts +++ b/sdk/containerservice/arm-containerservice/src/models/mappers.ts @@ -814,6 +814,12 @@ export const ManagedClusterAgentPoolProfileProperties: msRest.CompositeMapper = name: "Boolean" } }, + enableUltraSSD: { + serializedName: "enableUltraSSD", + type: { + name: "Boolean" + } + }, enableFIPS: { serializedName: "enableFIPS", type: { @@ -1086,6 +1092,12 @@ export const AgentPool: msRest.CompositeMapper = { name: "Boolean" } }, + enableUltraSSD: { + serializedName: "properties.enableUltraSSD", + type: { + name: "Boolean" + } + }, enableFIPS: { serializedName: "properties.enableFIPS", type: { @@ -2148,6 +2160,12 @@ export const ManagedClusterAPIServerAccessProfile: msRest.CompositeMapper = { type: { name: "String" } + }, + enablePrivateClusterPublicFQDN: { + serializedName: "enablePrivateClusterPublicFQDN", + type: { + name: "Boolean" + } } } } @@ -3152,6 +3170,96 @@ export const OSOptionProfile: msRest.CompositeMapper = { } }; +export const EndpointDetail: msRest.CompositeMapper = { + serializedName: "EndpointDetail", + type: { + name: "Composite", + className: "EndpointDetail", + modelProperties: { + ipAddress: { + serializedName: "ipAddress", + type: { + name: "String" + } + }, + port: { + serializedName: "port", + type: { + name: "Number" + } + }, + protocol: { + serializedName: "protocol", + type: { + name: "String" + } + }, + description: { + serializedName: "description", + type: { + name: "String" + } + } + } + } +}; + +export const EndpointDependency: msRest.CompositeMapper = { + serializedName: "EndpointDependency", + type: { + name: "Composite", + className: "EndpointDependency", + modelProperties: { + domainName: { + serializedName: "domainName", + type: { + name: "String" + } + }, + endpointDetails: { + serializedName: "endpointDetails", + type: { + name: "Sequence", + element: { + type: { + name: "Composite", + className: "EndpointDetail" + } + } + } + } + } + } +}; + +export const OutboundEnvironmentEndpoint: msRest.CompositeMapper = { + serializedName: "OutboundEnvironmentEndpoint", + type: { + name: "Composite", + className: "OutboundEnvironmentEndpoint", + modelProperties: { + category: { + serializedName: "category", + type: { + name: "String" + } + }, + endpoints: { + serializedName: "endpoints", + type: { + name: "Sequence", + element: { + type: { + name: "Composite", + className: "EndpointDependency" + } + } + } + } + } + } +}; + export const OperationListResult: msRest.CompositeMapper = { serializedName: "OperationListResult", type: { @@ -3204,6 +3312,36 @@ export const ManagedClusterListResult: msRest.CompositeMapper = { } }; +export const OutboundEnvironmentEndpointCollection: msRest.CompositeMapper = { + serializedName: "OutboundEnvironmentEndpointCollection", + type: { + name: "Composite", + className: "OutboundEnvironmentEndpointCollection", + modelProperties: { + value: { + required: true, + serializedName: "", + type: { + name: "Sequence", + element: { + type: { + name: "Composite", + className: "OutboundEnvironmentEndpoint" + } + } + } + }, + nextLink: { + readOnly: true, + serializedName: "nextLink", + type: { + name: "String" + } + } + } + } +}; + export const MaintenanceConfigurationListResult: msRest.CompositeMapper = { serializedName: "MaintenanceConfigurationListResult", type: { diff --git a/sdk/containerservice/arm-containerservice/src/models/parameters.ts b/sdk/containerservice/arm-containerservice/src/models/parameters.ts index f90a18426fdb..7378c0055826 100644 --- a/sdk/containerservice/arm-containerservice/src/models/parameters.ts +++ b/sdk/containerservice/arm-containerservice/src/models/parameters.ts @@ -140,6 +140,18 @@ export const roleName: msRest.OperationURLParameter = { } } }; +export const serverFqdn: msRest.OperationQueryParameter = { + parameterPath: [ + "options", + "serverFqdn" + ], + mapper: { + serializedName: "server-fqdn", + type: { + name: "String" + } + } +}; export const subscriptionId: msRest.OperationURLParameter = { parameterPath: "subscriptionId", mapper: { diff --git a/sdk/containerservice/arm-containerservice/src/operations/agentPools.ts b/sdk/containerservice/arm-containerservice/src/operations/agentPools.ts index 4b67fcdc8b5f..278c0b66d5f1 100644 --- a/sdk/containerservice/arm-containerservice/src/operations/agentPools.ts +++ b/sdk/containerservice/arm-containerservice/src/operations/agentPools.ts @@ -27,8 +27,6 @@ export class AgentPools { } /** - * Gets a list of agent pools in the specified managed cluster. The operation returns properties of - * each agent pool. * @summary Gets a list of agent pools in the specified managed cluster. * @param resourceGroupName The name of the resource group. * @param resourceName The name of the managed cluster resource. @@ -61,8 +59,7 @@ export class AgentPools { } /** - * Gets the details of the agent pool by managed cluster and resource group. - * @summary Gets the agent pool. + * @summary Gets the specified managed cluster agent pool. * @param resourceGroupName The name of the resource group. * @param resourceName The name of the managed cluster resource. * @param agentPoolName The name of the agent pool. @@ -98,12 +95,11 @@ export class AgentPools { } /** - * Creates or updates an agent pool in the specified managed cluster. - * @summary Creates or updates an agent pool. + * @summary Creates or updates an agent pool in the specified managed cluster. * @param resourceGroupName The name of the resource group. * @param resourceName The name of the managed cluster resource. * @param agentPoolName The name of the agent pool. - * @param parameters Parameters supplied to the Create or Update an agent pool operation. + * @param parameters The agent pool to create or update. * @param [options] The optional parameters * @returns Promise */ @@ -113,8 +109,7 @@ export class AgentPools { } /** - * Deletes the agent pool in the specified managed cluster. - * @summary Deletes an agent pool. + * @summary Deletes an agent pool in the specified managed cluster. * @param resourceGroupName The name of the resource group. * @param resourceName The name of the managed cluster resource. * @param agentPoolName The name of the agent pool. @@ -127,9 +122,7 @@ export class AgentPools { } /** - * Gets the details of the upgrade profile for an agent pool with a specified resource group and - * managed cluster name. - * @summary Gets upgrade profile for an agent pool. + * @summary Gets the upgrade profile for an agent pool. * @param resourceGroupName The name of the resource group. * @param resourceName The name of the managed cluster resource. * @param agentPoolName The name of the agent pool. @@ -165,8 +158,10 @@ export class AgentPools { } /** - * Gets a list of supported versions for the specified agent pool. - * @summary Gets a list of supported versions for the specified agent pool. + * See [supported Kubernetes + * versions](https://docs.microsoft.com/azure/aks/supported-kubernetes-versions) for more details + * about the version lifecycle. + * @summary Gets a list of supported Kubernetes versions for the specified agent pool. * @param resourceGroupName The name of the resource group. * @param resourceName The name of the managed cluster resource. * @param [options] The optional parameters @@ -198,8 +193,10 @@ export class AgentPools { } /** - * Upgrade node image version of an agent pool to the latest. - * @summary Upgrade node image version of an agent pool to the latest. + * Upgrading the node image version of an agent pool applies the newest OS and runtime updates to + * the nodes. AKS provides one new image per week with the latest updates. For more details on node + * image versions, see: https://docs.microsoft.com/azure/aks/node-image-upgrade + * @summary Upgrades the node image version of an agent pool to the latest. * @param resourceGroupName The name of the resource group. * @param resourceName The name of the managed cluster resource. * @param agentPoolName The name of the agent pool. @@ -212,12 +209,11 @@ export class AgentPools { } /** - * Creates or updates an agent pool in the specified managed cluster. - * @summary Creates or updates an agent pool. + * @summary Creates or updates an agent pool in the specified managed cluster. * @param resourceGroupName The name of the resource group. * @param resourceName The name of the managed cluster resource. * @param agentPoolName The name of the agent pool. - * @param parameters Parameters supplied to the Create or Update an agent pool operation. + * @param parameters The agent pool to create or update. * @param [options] The optional parameters * @returns Promise */ @@ -235,8 +231,7 @@ export class AgentPools { } /** - * Deletes the agent pool in the specified managed cluster. - * @summary Deletes an agent pool. + * @summary Deletes an agent pool in the specified managed cluster. * @param resourceGroupName The name of the resource group. * @param resourceName The name of the managed cluster resource. * @param agentPoolName The name of the agent pool. @@ -256,8 +251,10 @@ export class AgentPools { } /** - * Upgrade node image version of an agent pool to the latest. - * @summary Upgrade node image version of an agent pool to the latest. + * Upgrading the node image version of an agent pool applies the newest OS and runtime updates to + * the nodes. AKS provides one new image per week with the latest updates. For more details on node + * image versions, see: https://docs.microsoft.com/azure/aks/node-image-upgrade + * @summary Upgrades the node image version of an agent pool to the latest. * @param resourceGroupName The name of the resource group. * @param resourceName The name of the managed cluster resource. * @param agentPoolName The name of the agent pool. @@ -277,8 +274,6 @@ export class AgentPools { } /** - * Gets a list of agent pools in the specified managed cluster. The operation returns properties of - * each agent pool. * @summary Gets a list of agent pools in the specified managed cluster. * @param nextPageLink The NextLink from the previous successful call to List operation. * @param [options] The optional parameters diff --git a/sdk/containerservice/arm-containerservice/src/operations/maintenanceConfigurations.ts b/sdk/containerservice/arm-containerservice/src/operations/maintenanceConfigurations.ts index f0b524fa8e0c..c7ca09097d63 100644 --- a/sdk/containerservice/arm-containerservice/src/operations/maintenanceConfigurations.ts +++ b/sdk/containerservice/arm-containerservice/src/operations/maintenanceConfigurations.ts @@ -26,8 +26,6 @@ export class MaintenanceConfigurations { } /** - * Gets a list of maintenance configurations in the specified managed cluster. The operation - * returns properties of each maintenance configuration. * @summary Gets a list of maintenance configurations in the specified managed cluster. * @param resourceGroupName The name of the resource group. * @param resourceName The name of the managed cluster resource. @@ -60,8 +58,7 @@ export class MaintenanceConfigurations { } /** - * Gets the details of maintenance configurations by managed cluster and resource group. - * @summary Gets the maintenance configuration. + * @summary Gets the specified maintenance configuration of a managed cluster. * @param resourceGroupName The name of the resource group. * @param resourceName The name of the managed cluster resource. * @param configName The name of the maintenance configuration. @@ -97,13 +94,11 @@ export class MaintenanceConfigurations { } /** - * Creates or updates a maintenance configuration in the specified managed cluster. - * @summary Creates or updates a maintenance configurations. + * @summary Creates or updates a maintenance configuration in the specified managed cluster. * @param resourceGroupName The name of the resource group. * @param resourceName The name of the managed cluster resource. * @param configName The name of the maintenance configuration. - * @param parameters Parameters supplied to the Create or Update a default maintenance - * configuration. + * @param parameters The maintenance configuration to create or update. * @param [options] The optional parameters * @returns Promise */ @@ -112,8 +107,7 @@ export class MaintenanceConfigurations { * @param resourceGroupName The name of the resource group. * @param resourceName The name of the managed cluster resource. * @param configName The name of the maintenance configuration. - * @param parameters Parameters supplied to the Create or Update a default maintenance - * configuration. + * @param parameters The maintenance configuration to create or update. * @param callback The callback */ createOrUpdate(resourceGroupName: string, resourceName: string, configName: string, parameters: Models.MaintenanceConfiguration, callback: msRest.ServiceCallback): void; @@ -121,8 +115,7 @@ export class MaintenanceConfigurations { * @param resourceGroupName The name of the resource group. * @param resourceName The name of the managed cluster resource. * @param configName The name of the maintenance configuration. - * @param parameters Parameters supplied to the Create or Update a default maintenance - * configuration. + * @param parameters The maintenance configuration to create or update. * @param options The optional parameters * @param callback The callback */ @@ -141,7 +134,6 @@ export class MaintenanceConfigurations { } /** - * Deletes the maintenance configuration in the specified managed cluster. * @summary Deletes a maintenance configuration. * @param resourceGroupName The name of the resource group. * @param resourceName The name of the managed cluster resource. @@ -178,8 +170,6 @@ export class MaintenanceConfigurations { } /** - * Gets a list of maintenance configurations in the specified managed cluster. The operation - * returns properties of each maintenance configuration. * @summary Gets a list of maintenance configurations in the specified managed cluster. * @param nextPageLink The NextLink from the previous successful call to List operation. * @param [options] The optional parameters diff --git a/sdk/containerservice/arm-containerservice/src/operations/managedClusters.ts b/sdk/containerservice/arm-containerservice/src/operations/managedClusters.ts index 22152b4b1c28..68ec82bfc1b3 100644 --- a/sdk/containerservice/arm-containerservice/src/operations/managedClusters.ts +++ b/sdk/containerservice/arm-containerservice/src/operations/managedClusters.ts @@ -27,7 +27,6 @@ export class ManagedClusters { } /** - * Gets supported OS options in the specified subscription. * @summary Gets supported OS options in the specified subscription. * @param location The name of a supported Azure region. * @param [options] The optional parameters @@ -56,8 +55,6 @@ export class ManagedClusters { } /** - * Gets a list of managed clusters in the specified subscription. The operation returns properties - * of each managed cluster. * @summary Gets a list of managed clusters in the specified subscription. * @param [options] The optional parameters * @returns Promise @@ -82,8 +79,6 @@ export class ManagedClusters { } /** - * Lists managed clusters in the specified subscription and resource group. The operation returns - * properties of each managed cluster. * @summary Lists managed clusters in the specified subscription and resource group. * @param resourceGroupName The name of the resource group. * @param [options] The optional parameters @@ -112,9 +107,7 @@ export class ManagedClusters { } /** - * Gets the details of the upgrade profile for a managed cluster with a specified resource group - * and name. - * @summary Gets upgrade profile for a managed cluster. + * @summary Gets the upgrade profile of a managed cluster. * @param resourceGroupName The name of the resource group. * @param resourceName The name of the managed cluster resource. * @param [options] The optional parameters @@ -146,11 +139,10 @@ export class ManagedClusters { } /** - * Gets the accessProfile for the specified role name of the managed cluster with a specified - * resource group and name. **WARNING**: This API will be deprecated. Instead use - * [ListClusterUserCredentials](https://docs.microsoft.com/en-us/rest/api/aks/managedclusters/listclusterusercredentials) + * **WARNING**: This API will be deprecated. Instead use + * [ListClusterUserCredentials](https://docs.microsoft.com/rest/api/aks/managedclusters/listclusterusercredentials) * or - * [ListClusterAdminCredentials](https://docs.microsoft.com/en-us/rest/api/aks/managedclusters/listclusteradmincredentials) + * [ListClusterAdminCredentials](https://docs.microsoft.com/rest/api/aks/managedclusters/listclusteradmincredentials) * . * @summary Gets an access profile of a managed cluster. * @param resourceGroupName The name of the resource group. @@ -191,14 +183,13 @@ export class ManagedClusters { } /** - * Gets cluster admin credential of the managed cluster with a specified resource group and name. - * @summary Gets cluster admin credential of a managed cluster. + * @summary Lists the admin credentials of a managed cluster. * @param resourceGroupName The name of the resource group. * @param resourceName The name of the managed cluster resource. * @param [options] The optional parameters * @returns Promise */ - listClusterAdminCredentials(resourceGroupName: string, resourceName: string, options?: msRest.RequestOptionsBase): Promise; + listClusterAdminCredentials(resourceGroupName: string, resourceName: string, options?: Models.ManagedClustersListClusterAdminCredentialsOptionalParams): Promise; /** * @param resourceGroupName The name of the resource group. * @param resourceName The name of the managed cluster resource. @@ -211,8 +202,8 @@ export class ManagedClusters { * @param options The optional parameters * @param callback The callback */ - listClusterAdminCredentials(resourceGroupName: string, resourceName: string, options: msRest.RequestOptionsBase, callback: msRest.ServiceCallback): void; - listClusterAdminCredentials(resourceGroupName: string, resourceName: string, options?: msRest.RequestOptionsBase | msRest.ServiceCallback, callback?: msRest.ServiceCallback): Promise { + listClusterAdminCredentials(resourceGroupName: string, resourceName: string, options: Models.ManagedClustersListClusterAdminCredentialsOptionalParams, callback: msRest.ServiceCallback): void; + listClusterAdminCredentials(resourceGroupName: string, resourceName: string, options?: Models.ManagedClustersListClusterAdminCredentialsOptionalParams | msRest.ServiceCallback, callback?: msRest.ServiceCallback): Promise { return this.client.sendOperationRequest( { resourceGroupName, @@ -224,14 +215,13 @@ export class ManagedClusters { } /** - * Gets cluster user credential of the managed cluster with a specified resource group and name. - * @summary Gets cluster user credential of a managed cluster. + * @summary Lists the user credentials of a managed cluster. * @param resourceGroupName The name of the resource group. * @param resourceName The name of the managed cluster resource. * @param [options] The optional parameters * @returns Promise */ - listClusterUserCredentials(resourceGroupName: string, resourceName: string, options?: msRest.RequestOptionsBase): Promise; + listClusterUserCredentials(resourceGroupName: string, resourceName: string, options?: Models.ManagedClustersListClusterUserCredentialsOptionalParams): Promise; /** * @param resourceGroupName The name of the resource group. * @param resourceName The name of the managed cluster resource. @@ -244,8 +234,8 @@ export class ManagedClusters { * @param options The optional parameters * @param callback The callback */ - listClusterUserCredentials(resourceGroupName: string, resourceName: string, options: msRest.RequestOptionsBase, callback: msRest.ServiceCallback): void; - listClusterUserCredentials(resourceGroupName: string, resourceName: string, options?: msRest.RequestOptionsBase | msRest.ServiceCallback, callback?: msRest.ServiceCallback): Promise { + listClusterUserCredentials(resourceGroupName: string, resourceName: string, options: Models.ManagedClustersListClusterUserCredentialsOptionalParams, callback: msRest.ServiceCallback): void; + listClusterUserCredentials(resourceGroupName: string, resourceName: string, options?: Models.ManagedClustersListClusterUserCredentialsOptionalParams | msRest.ServiceCallback, callback?: msRest.ServiceCallback): Promise { return this.client.sendOperationRequest( { resourceGroupName, @@ -257,15 +247,13 @@ export class ManagedClusters { } /** - * Gets cluster monitoring user credential of the managed cluster with a specified resource group - * and name. - * @summary Gets cluster monitoring user credential of a managed cluster. + * @summary Lists the cluster monitoring user credentials of a managed cluster. * @param resourceGroupName The name of the resource group. * @param resourceName The name of the managed cluster resource. * @param [options] The optional parameters * @returns Promise */ - listClusterMonitoringUserCredentials(resourceGroupName: string, resourceName: string, options?: msRest.RequestOptionsBase): Promise; + listClusterMonitoringUserCredentials(resourceGroupName: string, resourceName: string, options?: Models.ManagedClustersListClusterMonitoringUserCredentialsOptionalParams): Promise; /** * @param resourceGroupName The name of the resource group. * @param resourceName The name of the managed cluster resource. @@ -278,8 +266,8 @@ export class ManagedClusters { * @param options The optional parameters * @param callback The callback */ - listClusterMonitoringUserCredentials(resourceGroupName: string, resourceName: string, options: msRest.RequestOptionsBase, callback: msRest.ServiceCallback): void; - listClusterMonitoringUserCredentials(resourceGroupName: string, resourceName: string, options?: msRest.RequestOptionsBase | msRest.ServiceCallback, callback?: msRest.ServiceCallback): Promise { + listClusterMonitoringUserCredentials(resourceGroupName: string, resourceName: string, options: Models.ManagedClustersListClusterMonitoringUserCredentialsOptionalParams, callback: msRest.ServiceCallback): void; + listClusterMonitoringUserCredentials(resourceGroupName: string, resourceName: string, options?: Models.ManagedClustersListClusterMonitoringUserCredentialsOptionalParams | msRest.ServiceCallback, callback?: msRest.ServiceCallback): Promise { return this.client.sendOperationRequest( { resourceGroupName, @@ -291,7 +279,6 @@ export class ManagedClusters { } /** - * Gets the details of the managed cluster with a specified resource group and name. * @summary Gets a managed cluster. * @param resourceGroupName The name of the resource group. * @param resourceName The name of the managed cluster resource. @@ -324,12 +311,10 @@ export class ManagedClusters { } /** - * Creates or updates a managed cluster with the specified configuration for agents and Kubernetes - * version. * @summary Creates or updates a managed cluster. * @param resourceGroupName The name of the resource group. * @param resourceName The name of the managed cluster resource. - * @param parameters Parameters supplied to the Create or Update a Managed Cluster operation. + * @param parameters The managed cluster to create or update. * @param [options] The optional parameters * @returns Promise */ @@ -339,7 +324,6 @@ export class ManagedClusters { } /** - * Updates a managed cluster with the specified tags. * @summary Updates tags on a managed cluster. * @param resourceGroupName The name of the resource group. * @param resourceName The name of the managed cluster resource. @@ -353,7 +337,6 @@ export class ManagedClusters { } /** - * Deletes the managed cluster with a specified resource group and name. * @summary Deletes a managed cluster. * @param resourceGroupName The name of the resource group. * @param resourceName The name of the managed cluster resource. @@ -366,12 +349,11 @@ export class ManagedClusters { } /** - * Update the service principal Profile for a managed cluster. - * @summary Reset Service Principal Profile of a managed cluster. + * This action cannot be performed on a cluster that is not using a service principal + * @summary Reset the Service Principal Profile of a managed cluster. * @param resourceGroupName The name of the resource group. * @param resourceName The name of the managed cluster resource. - * @param parameters Parameters supplied to the Reset Service Principal Profile operation for a - * Managed Cluster. + * @param parameters The service principal profile to set on the managed cluster. * @param [options] The optional parameters * @returns Promise */ @@ -381,11 +363,10 @@ export class ManagedClusters { } /** - * Update the AAD Profile for a managed cluster. - * @summary Reset AAD Profile of a managed cluster. + * @summary Reset the AAD Profile of a managed cluster. * @param resourceGroupName The name of the resource group. * @param resourceName The name of the managed cluster resource. - * @param parameters Parameters supplied to the Reset AAD Profile operation for a Managed Cluster. + * @param parameters The AAD profile to set on the Managed Cluster * @param [options] The optional parameters * @returns Promise */ @@ -395,8 +376,9 @@ export class ManagedClusters { } /** - * Rotate certificates of a managed cluster. - * @summary Rotate certificates of a managed cluster. + * See [Certificate rotation](https://docs.microsoft.com/azure/aks/certificate-rotation) for more + * details about rotating managed cluster certificates. + * @summary Rotates the certificates of a managed cluster. * @param resourceGroupName The name of the resource group. * @param resourceName The name of the managed cluster resource. * @param [options] The optional parameters @@ -408,8 +390,12 @@ export class ManagedClusters { } /** - * Stops a Running Managed Cluster - * @summary Stop Managed Cluster + * This can only be performed on Azure Virtual Machine Scale set backed clusters. Stopping a + * cluster stops the control plane and agent nodes entirely, while maintaining all object and + * cluster state. A cluster does not accrue charges while it is stopped. See [stopping a + * cluster](https://docs.microsoft.com/azure/aks/start-stop-cluster) for more details about + * stopping a cluster. + * @summary Stops a Managed Cluster * @param resourceGroupName The name of the resource group. * @param resourceName The name of the managed cluster resource. * @param [options] The optional parameters @@ -421,8 +407,9 @@ export class ManagedClusters { } /** - * Starts a Stopped Managed Cluster - * @summary Start Managed Cluster + * See [starting a cluster](https://docs.microsoft.com/azure/aks/start-stop-cluster) for more + * details about starting a cluster. + * @summary Starts a previously stopped Managed Cluster * @param resourceGroupName The name of the resource group. * @param resourceName The name of the managed cluster resource. * @param [options] The optional parameters @@ -434,12 +421,13 @@ export class ManagedClusters { } /** - * Submit a command to run against managed kubernetes service, it will create a pod to run the - * command. - * @summary Run Command against Managed Kubernetes Service + * AKS will create a pod to run the command. This is primarily useful for private clusters. For + * more information see [AKS Run + * Command](https://docs.microsoft.com/azure/aks/private-clusters#aks-run-command-preview). + * @summary Submits a command to run against the Managed Cluster. * @param resourceGroupName The name of the resource group. * @param resourceName The name of the managed cluster resource. - * @param requestPayload Parameters supplied to the RunCommand operation. + * @param requestPayload The run command request * @param [options] The optional parameters * @returns Promise */ @@ -449,11 +437,10 @@ export class ManagedClusters { } /** - * Get command result from previous runCommand invoke. - * @summary Get command result. + * @summary Gets the results of a command which has been run on the Managed Cluster. * @param resourceGroupName The name of the resource group. * @param resourceName The name of the managed cluster resource. - * @param commandId Id of the command request. + * @param commandId Id of the command. * @param [options] The optional parameters * @returns Promise */ @@ -461,14 +448,14 @@ export class ManagedClusters { /** * @param resourceGroupName The name of the resource group. * @param resourceName The name of the managed cluster resource. - * @param commandId Id of the command request. + * @param commandId Id of the command. * @param callback The callback */ getCommandResult(resourceGroupName: string, resourceName: string, commandId: string, callback: msRest.ServiceCallback): void; /** * @param resourceGroupName The name of the resource group. * @param resourceName The name of the managed cluster resource. - * @param commandId Id of the command request. + * @param commandId Id of the command. * @param options The optional parameters * @param callback The callback */ @@ -486,12 +473,45 @@ export class ManagedClusters { } /** - * Creates or updates a managed cluster with the specified configuration for agents and Kubernetes - * version. + * Gets a list of egress endpoints (network endpoints of all outbound dependencies) in the + * specified managed cluster. The operation returns properties of each egress endpoint. + * @summary Gets a list of egress endpoints (network endpoints of all outbound dependencies) in the + * specified managed cluster. + * @param resourceGroupName The name of the resource group. + * @param resourceName The name of the managed cluster resource. + * @param [options] The optional parameters + * @returns Promise + */ + listOutboundNetworkDependenciesEndpoints(resourceGroupName: string, resourceName: string, options?: msRest.RequestOptionsBase): Promise; + /** + * @param resourceGroupName The name of the resource group. + * @param resourceName The name of the managed cluster resource. + * @param callback The callback + */ + listOutboundNetworkDependenciesEndpoints(resourceGroupName: string, resourceName: string, callback: msRest.ServiceCallback): void; + /** + * @param resourceGroupName The name of the resource group. + * @param resourceName The name of the managed cluster resource. + * @param options The optional parameters + * @param callback The callback + */ + listOutboundNetworkDependenciesEndpoints(resourceGroupName: string, resourceName: string, options: msRest.RequestOptionsBase, callback: msRest.ServiceCallback): void; + listOutboundNetworkDependenciesEndpoints(resourceGroupName: string, resourceName: string, options?: msRest.RequestOptionsBase | msRest.ServiceCallback, callback?: msRest.ServiceCallback): Promise { + return this.client.sendOperationRequest( + { + resourceGroupName, + resourceName, + options + }, + listOutboundNetworkDependenciesEndpointsOperationSpec, + callback) as Promise; + } + + /** * @summary Creates or updates a managed cluster. * @param resourceGroupName The name of the resource group. * @param resourceName The name of the managed cluster resource. - * @param parameters Parameters supplied to the Create or Update a Managed Cluster operation. + * @param parameters The managed cluster to create or update. * @param [options] The optional parameters * @returns Promise */ @@ -508,7 +528,6 @@ export class ManagedClusters { } /** - * Updates a managed cluster with the specified tags. * @summary Updates tags on a managed cluster. * @param resourceGroupName The name of the resource group. * @param resourceName The name of the managed cluster resource. @@ -529,7 +548,6 @@ export class ManagedClusters { } /** - * Deletes the managed cluster with a specified resource group and name. * @summary Deletes a managed cluster. * @param resourceGroupName The name of the resource group. * @param resourceName The name of the managed cluster resource. @@ -548,12 +566,11 @@ export class ManagedClusters { } /** - * Update the service principal Profile for a managed cluster. - * @summary Reset Service Principal Profile of a managed cluster. + * This action cannot be performed on a cluster that is not using a service principal + * @summary Reset the Service Principal Profile of a managed cluster. * @param resourceGroupName The name of the resource group. * @param resourceName The name of the managed cluster resource. - * @param parameters Parameters supplied to the Reset Service Principal Profile operation for a - * Managed Cluster. + * @param parameters The service principal profile to set on the managed cluster. * @param [options] The optional parameters * @returns Promise */ @@ -570,11 +587,10 @@ export class ManagedClusters { } /** - * Update the AAD Profile for a managed cluster. - * @summary Reset AAD Profile of a managed cluster. + * @summary Reset the AAD Profile of a managed cluster. * @param resourceGroupName The name of the resource group. * @param resourceName The name of the managed cluster resource. - * @param parameters Parameters supplied to the Reset AAD Profile operation for a Managed Cluster. + * @param parameters The AAD profile to set on the Managed Cluster * @param [options] The optional parameters * @returns Promise */ @@ -591,8 +607,9 @@ export class ManagedClusters { } /** - * Rotate certificates of a managed cluster. - * @summary Rotate certificates of a managed cluster. + * See [Certificate rotation](https://docs.microsoft.com/azure/aks/certificate-rotation) for more + * details about rotating managed cluster certificates. + * @summary Rotates the certificates of a managed cluster. * @param resourceGroupName The name of the resource group. * @param resourceName The name of the managed cluster resource. * @param [options] The optional parameters @@ -610,8 +627,12 @@ export class ManagedClusters { } /** - * Stops a Running Managed Cluster - * @summary Stop Managed Cluster + * This can only be performed on Azure Virtual Machine Scale set backed clusters. Stopping a + * cluster stops the control plane and agent nodes entirely, while maintaining all object and + * cluster state. A cluster does not accrue charges while it is stopped. See [stopping a + * cluster](https://docs.microsoft.com/azure/aks/start-stop-cluster) for more details about + * stopping a cluster. + * @summary Stops a Managed Cluster * @param resourceGroupName The name of the resource group. * @param resourceName The name of the managed cluster resource. * @param [options] The optional parameters @@ -629,8 +650,9 @@ export class ManagedClusters { } /** - * Starts a Stopped Managed Cluster - * @summary Start Managed Cluster + * See [starting a cluster](https://docs.microsoft.com/azure/aks/start-stop-cluster) for more + * details about starting a cluster. + * @summary Starts a previously stopped Managed Cluster * @param resourceGroupName The name of the resource group. * @param resourceName The name of the managed cluster resource. * @param [options] The optional parameters @@ -648,12 +670,13 @@ export class ManagedClusters { } /** - * Submit a command to run against managed kubernetes service, it will create a pod to run the - * command. - * @summary Run Command against Managed Kubernetes Service + * AKS will create a pod to run the command. This is primarily useful for private clusters. For + * more information see [AKS Run + * Command](https://docs.microsoft.com/azure/aks/private-clusters#aks-run-command-preview). + * @summary Submits a command to run against the Managed Cluster. * @param resourceGroupName The name of the resource group. * @param resourceName The name of the managed cluster resource. - * @param requestPayload Parameters supplied to the RunCommand operation. + * @param requestPayload The run command request * @param [options] The optional parameters * @returns Promise */ @@ -670,8 +693,6 @@ export class ManagedClusters { } /** - * Gets a list of managed clusters in the specified subscription. The operation returns properties - * of each managed cluster. * @summary Gets a list of managed clusters in the specified subscription. * @param nextPageLink The NextLink from the previous successful call to List operation. * @param [options] The optional parameters @@ -700,8 +721,6 @@ export class ManagedClusters { } /** - * Lists managed clusters in the specified subscription and resource group. The operation returns - * properties of each managed cluster. * @summary Lists managed clusters in the specified subscription and resource group. * @param nextPageLink The NextLink from the previous successful call to List operation. * @param [options] The optional parameters @@ -728,6 +747,37 @@ export class ManagedClusters { listByResourceGroupNextOperationSpec, callback) as Promise; } + + /** + * Gets a list of egress endpoints (network endpoints of all outbound dependencies) in the + * specified managed cluster. The operation returns properties of each egress endpoint. + * @summary Gets a list of egress endpoints (network endpoints of all outbound dependencies) in the + * specified managed cluster. + * @param nextPageLink The NextLink from the previous successful call to List operation. + * @param [options] The optional parameters + * @returns Promise + */ + listOutboundNetworkDependenciesEndpointsNext(nextPageLink: string, options?: msRest.RequestOptionsBase): Promise; + /** + * @param nextPageLink The NextLink from the previous successful call to List operation. + * @param callback The callback + */ + listOutboundNetworkDependenciesEndpointsNext(nextPageLink: string, callback: msRest.ServiceCallback): void; + /** + * @param nextPageLink The NextLink from the previous successful call to List operation. + * @param options The optional parameters + * @param callback The callback + */ + listOutboundNetworkDependenciesEndpointsNext(nextPageLink: string, options: msRest.RequestOptionsBase, callback: msRest.ServiceCallback): void; + listOutboundNetworkDependenciesEndpointsNext(nextPageLink: string, options?: msRest.RequestOptionsBase | msRest.ServiceCallback, callback?: msRest.ServiceCallback): Promise { + return this.client.sendOperationRequest( + { + nextPageLink, + options + }, + listOutboundNetworkDependenciesEndpointsNextOperationSpec, + callback) as Promise; + } } // Operation Specifications @@ -864,7 +914,8 @@ const listClusterAdminCredentialsOperationSpec: msRest.OperationSpec = { Parameters.resourceName ], queryParameters: [ - Parameters.apiVersion + Parameters.apiVersion, + Parameters.serverFqdn ], headerParameters: [ Parameters.acceptLanguage @@ -889,7 +940,8 @@ const listClusterUserCredentialsOperationSpec: msRest.OperationSpec = { Parameters.resourceName ], queryParameters: [ - Parameters.apiVersion + Parameters.apiVersion, + Parameters.serverFqdn ], headerParameters: [ Parameters.acceptLanguage @@ -914,7 +966,8 @@ const listClusterMonitoringUserCredentialsOperationSpec: msRest.OperationSpec = Parameters.resourceName ], queryParameters: [ - Parameters.apiVersion + Parameters.apiVersion, + Parameters.serverFqdn ], headerParameters: [ Parameters.acceptLanguage @@ -982,6 +1035,31 @@ const getCommandResultOperationSpec: msRest.OperationSpec = { serializer }; +const listOutboundNetworkDependenciesEndpointsOperationSpec: msRest.OperationSpec = { + httpMethod: "GET", + path: "subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ContainerService/managedClusters/{resourceName}/outboundNetworkDependenciesEndpoints", + urlParameters: [ + Parameters.subscriptionId, + Parameters.resourceGroupName, + Parameters.resourceName + ], + queryParameters: [ + Parameters.apiVersion + ], + headerParameters: [ + Parameters.acceptLanguage + ], + responses: { + 200: { + bodyMapper: Mappers.OutboundEnvironmentEndpointCollection + }, + default: { + bodyMapper: Mappers.CloudError + } + }, + serializer +}; + const beginCreateOrUpdateOperationSpec: msRest.OperationSpec = { httpMethod: "PUT", path: "subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ContainerService/managedClusters/{resourceName}", @@ -1287,3 +1365,27 @@ const listByResourceGroupNextOperationSpec: msRest.OperationSpec = { }, serializer }; + +const listOutboundNetworkDependenciesEndpointsNextOperationSpec: msRest.OperationSpec = { + httpMethod: "GET", + baseUrl: "https://management.azure.com", + path: "{nextLink}", + urlParameters: [ + Parameters.nextPageLink + ], + queryParameters: [ + Parameters.apiVersion + ], + headerParameters: [ + Parameters.acceptLanguage + ], + responses: { + 200: { + bodyMapper: Mappers.OutboundEnvironmentEndpointCollection + }, + default: { + bodyMapper: Mappers.CloudError + } + }, + serializer +}; diff --git a/sdk/containerservice/arm-containerservice/src/operations/operations.ts b/sdk/containerservice/arm-containerservice/src/operations/operations.ts index 2d8bd37661b9..3896ec570e0a 100644 --- a/sdk/containerservice/arm-containerservice/src/operations/operations.ts +++ b/sdk/containerservice/arm-containerservice/src/operations/operations.ts @@ -26,7 +26,7 @@ export class Operations { } /** - * Gets a list of compute operations. + * @summary Gets a list of operations. * @param [options] The optional parameters * @returns Promise */ diff --git a/sdk/containerservice/arm-containerservice/src/operations/privateEndpointConnections.ts b/sdk/containerservice/arm-containerservice/src/operations/privateEndpointConnections.ts index 4da23b229813..92a92ab579d8 100644 --- a/sdk/containerservice/arm-containerservice/src/operations/privateEndpointConnections.ts +++ b/sdk/containerservice/arm-containerservice/src/operations/privateEndpointConnections.ts @@ -27,8 +27,7 @@ export class PrivateEndpointConnections { } /** - * Gets a list of private endpoint connections in the specified managed cluster. The operation - * returns properties of each private endpoint connection. + * To learn more about private clusters, see: https://docs.microsoft.com/azure/aks/private-clusters * @summary Gets a list of private endpoint connections in the specified managed cluster. * @param resourceGroupName The name of the resource group. * @param resourceName The name of the managed cluster resource. @@ -61,8 +60,8 @@ export class PrivateEndpointConnections { } /** - * Gets the details of the private endpoint connection by managed cluster and resource group. - * @summary Gets the private endpoint connection. + * To learn more about private clusters, see: https://docs.microsoft.com/azure/aks/private-clusters + * @summary Gets the specified private endpoint connection. * @param resourceGroupName The name of the resource group. * @param resourceName The name of the managed cluster resource. * @param privateEndpointConnectionName The name of the private endpoint connection. @@ -98,12 +97,11 @@ export class PrivateEndpointConnections { } /** - * Updates a private endpoint connection in the specified managed cluster. * @summary Updates a private endpoint connection. * @param resourceGroupName The name of the resource group. * @param resourceName The name of the managed cluster resource. * @param privateEndpointConnectionName The name of the private endpoint connection. - * @param parameters Parameters supplied to the Update a private endpoint connection operation. + * @param parameters The updated private endpoint connection. * @param [options] The optional parameters * @returns Promise */ @@ -112,7 +110,7 @@ export class PrivateEndpointConnections { * @param resourceGroupName The name of the resource group. * @param resourceName The name of the managed cluster resource. * @param privateEndpointConnectionName The name of the private endpoint connection. - * @param parameters Parameters supplied to the Update a private endpoint connection operation. + * @param parameters The updated private endpoint connection. * @param callback The callback */ update(resourceGroupName: string, resourceName: string, privateEndpointConnectionName: string, parameters: Models.PrivateEndpointConnection, callback: msRest.ServiceCallback): void; @@ -120,7 +118,7 @@ export class PrivateEndpointConnections { * @param resourceGroupName The name of the resource group. * @param resourceName The name of the managed cluster resource. * @param privateEndpointConnectionName The name of the private endpoint connection. - * @param parameters Parameters supplied to the Update a private endpoint connection operation. + * @param parameters The updated private endpoint connection. * @param options The optional parameters * @param callback The callback */ @@ -139,7 +137,6 @@ export class PrivateEndpointConnections { } /** - * Deletes the private endpoint connection in the specified managed cluster. * @summary Deletes a private endpoint connection. * @param resourceGroupName The name of the resource group. * @param resourceName The name of the managed cluster resource. @@ -153,7 +150,6 @@ export class PrivateEndpointConnections { } /** - * Deletes the private endpoint connection in the specified managed cluster. * @summary Deletes a private endpoint connection. * @param resourceGroupName The name of the resource group. * @param resourceName The name of the managed cluster resource. diff --git a/sdk/containerservice/arm-containerservice/src/operations/privateLinkResources.ts b/sdk/containerservice/arm-containerservice/src/operations/privateLinkResources.ts index 652594840b00..8e11daf85799 100644 --- a/sdk/containerservice/arm-containerservice/src/operations/privateLinkResources.ts +++ b/sdk/containerservice/arm-containerservice/src/operations/privateLinkResources.ts @@ -26,8 +26,7 @@ export class PrivateLinkResources { } /** - * Gets a list of private link resources in the specified managed cluster. The operation returns - * properties of each private link resource. + * To learn more about private clusters, see: https://docs.microsoft.com/azure/aks/private-clusters * @summary Gets a list of private link resources in the specified managed cluster. * @param resourceGroupName The name of the resource group. * @param resourceName The name of the managed cluster resource. diff --git a/sdk/containerservice/arm-containerservice/src/operations/resolvePrivateLinkServiceId.ts b/sdk/containerservice/arm-containerservice/src/operations/resolvePrivateLinkServiceId.ts index c23d10a99b32..9c977d767807 100644 --- a/sdk/containerservice/arm-containerservice/src/operations/resolvePrivateLinkServiceId.ts +++ b/sdk/containerservice/arm-containerservice/src/operations/resolvePrivateLinkServiceId.ts @@ -26,12 +26,10 @@ export class ResolvePrivateLinkServiceId { } /** - * Gets the private link service ID the specified managed cluster. * @summary Gets the private link service ID for the specified managed cluster. * @param resourceGroupName The name of the resource group. * @param resourceName The name of the managed cluster resource. - * @param parameters Parameters (name, groupId) supplied in order to resolve a private link service - * ID. + * @param parameters Parameters required in order to resolve a private link service ID. * @param [options] The optional parameters * @returns Promise */ @@ -39,16 +37,14 @@ export class ResolvePrivateLinkServiceId { /** * @param resourceGroupName The name of the resource group. * @param resourceName The name of the managed cluster resource. - * @param parameters Parameters (name, groupId) supplied in order to resolve a private link service - * ID. + * @param parameters Parameters required in order to resolve a private link service ID. * @param callback The callback */ pOST(resourceGroupName: string, resourceName: string, parameters: Models.PrivateLinkResource, callback: msRest.ServiceCallback): void; /** * @param resourceGroupName The name of the resource group. * @param resourceName The name of the managed cluster resource. - * @param parameters Parameters (name, groupId) supplied in order to resolve a private link service - * ID. + * @param parameters Parameters required in order to resolve a private link service ID. * @param options The optional parameters * @param callback The callback */ diff --git a/sdk/core/README.md b/sdk/core/README.md index 2b274d599379..b4cd153f0554 100644 --- a/sdk/core/README.md +++ b/sdk/core/README.md @@ -122,14 +122,14 @@ Client libraries have preliminary support for [OpenTelemetry](https://openteleme Each client library internally does the work to create a new OpenTelemetry `Span` for each service operation, making sure to end the `Span` after the result is returned back to the consumer. Many clients use a helper method called [createSpan](https://github.com/Azure/azure-sdk-for-js/blob/master/sdk/textanalytics/ai-text-analytics/src/tracing.ts) to create the new `Span`. -When `tracingOptions.spanOptions.parent` is set on an operation, a default request policy will automatically create a span for each HTTP request that is issued. +When `tracingOptions.tracingContext` is set on an operation, a default request policy will automatically create a span for each HTTP request that is issued. -Consumers are expected to pass in the `SpanContext` of the parent `Span` when calling an operation, such as: +Consumers are expected to pass in the `Context` of the parent `Span` when calling an operation, such as: ```ts const result = await blobClient.download(undefined, undefined, { tracingOptions: { - spanOptions: { parent: rootSpan.context() }, + tracingContext: activeContext }, }); ``` diff --git a/sdk/core/core-http/package.json b/sdk/core/core-http/package.json index 32904218700d..0744f4a118b2 100644 --- a/sdk/core/core-http/package.json +++ b/sdk/core/core-http/package.json @@ -129,7 +129,7 @@ "@azure/abort-controller": "^1.0.0", "@azure/core-asynciterator-polyfill": "^1.0.0", "@azure/core-auth": "^1.3.0", - "@azure/core-tracing": "1.0.0-preview.11", + "@azure/core-tracing": "1.0.0-preview.12", "@azure/logger": "^1.0.0", "@types/node-fetch": "^2.5.0", "@types/tunnel": "^0.0.1", diff --git a/sdk/core/core-http/src/policies/tracingPolicy.ts b/sdk/core/core-http/src/policies/tracingPolicy.ts index d53599233e0a..660ebd4684d6 100644 --- a/sdk/core/core-http/src/policies/tracingPolicy.ts +++ b/sdk/core/core-http/src/policies/tracingPolicy.ts @@ -76,7 +76,7 @@ export class TracingPolicy extends BaseRequestPolicy { try { // set headers - const spanContext = span.context(); + const spanContext = span.spanContext(); const traceParentHeader = getTraceParentHeader(spanContext); if (traceParentHeader) { request.headers.set("traceparent", traceParentHeader); diff --git a/sdk/core/core-http/test/policies/tracingPolicyTests.ts b/sdk/core/core-http/test/policies/tracingPolicyTests.ts index 19821736d7b6..1e871fef7538 100644 --- a/sdk/core/core-http/test/policies/tracingPolicyTests.ts +++ b/sdk/core/core-http/test/policies/tracingPolicyTests.ts @@ -12,7 +12,6 @@ import { import { setTracer, NoOpTracer, - NoOpSpan, SpanOptions, SpanContext, TraceFlags, @@ -20,24 +19,42 @@ import { setSpan, context, SpanStatusCode, - SpanStatus + SpanStatus, + Span, + SpanAttributes, + SpanAttributeValue, + Tracer } from "@azure/core-tracing"; import { tracingPolicy } from "../../src/policies/tracingPolicy"; -class MockSpan extends NoOpSpan { +class MockSpan implements Span { private _endCalled = false; private _status: SpanStatus = { code: SpanStatusCode.UNSET }; - private _attributes: { [s: string]: unknown } = {}; + private _attributes: SpanAttributes = {}; constructor( private traceId: string, private spanId: string, private flags: TraceFlags, private state: string - ) { - super(); + ) {} + + addEvent(): this { + throw new Error("Not implemented."); + } + + isRecording(): boolean { + return true; + } + + recordException(): void { + throw new Error("Not implemented."); + } + + updateName(): this { + throw new Error("Not implemented."); } didEnd(): boolean { @@ -57,7 +74,12 @@ class MockSpan extends NoOpSpan { return this; } - setAttribute(key: string, value: unknown) { + setAttributes(attributes: SpanAttributes): this { + this._attributes = attributes; + return this; + } + + setAttribute(key: string, value: SpanAttributeValue) { this._attributes[key] = value; return this; } @@ -66,7 +88,7 @@ class MockSpan extends NoOpSpan { return this._attributes[key]; } - context(): SpanContext { + spanContext(): SpanContext { const state = this.state; const traceState = { @@ -95,7 +117,7 @@ class MockSpan extends NoOpSpan { } } -class MockTracer extends NoOpTracer { +class MockTracer implements Tracer { private spans: MockSpan[] = []; private _startSpanCalled = false; @@ -104,9 +126,7 @@ class MockTracer extends NoOpTracer { private spanId = "", private flags = TraceFlags.NONE, private state = "" - ) { - super(); - } + ) {} getStartedSpans(): MockSpan[] { return this.spans; diff --git a/sdk/core/core-lro/package.json b/sdk/core/core-lro/package.json index a24195811e8b..1ce6fba36af4 100644 --- a/sdk/core/core-lro/package.json +++ b/sdk/core/core-lro/package.json @@ -96,12 +96,12 @@ "sideEffects": false, "dependencies": { "@azure/abort-controller": "^1.0.0", - "@azure/core-http": "^1.2.0", - "@azure/core-tracing": "1.0.0-preview.11", + "@azure/core-tracing": "1.0.0-preview.12", "events": "^3.0.0", "tslib": "^2.2.0" }, "devDependencies": { + "@azure/core-http": "^1.2.0", "@azure/eslint-plugin-azure-sdk": "^3.0.0", "@azure/dev-tool": "^1.0.0", "@microsoft/api-extractor": "7.7.11", diff --git a/sdk/core/core-lro/rollup.base.config.js b/sdk/core/core-lro/rollup.base.config.js index de7479d0e117..7b7888881008 100644 --- a/sdk/core/core-lro/rollup.base.config.js +++ b/sdk/core/core-lro/rollup.base.config.js @@ -27,6 +27,7 @@ const banner = [ ].join("\n"); const depNames = Object.keys(pkg.dependencies); +const devDepNames = Object.keys(pkg.devDependencies); const production = process.env.NODE_ENV === "production"; export function nodeConfig(test = false) { @@ -59,6 +60,9 @@ export function nodeConfig(test = false) { baseConfig.input = ["dist-esm/test/*.test.js"]; baseConfig.plugins.unshift(multiEntry({ exports: false })); + // mark devdeps as external + baseConfig.external.push(...devDepNames); + // different output file baseConfig.output.file = "dist-test/index.node.js"; @@ -85,9 +89,6 @@ export function browserConfig(test = false) { banner: banner, format: "umd", name: "azurecorelro", - globals: { - "@azure/core-http": "Azure.Core.HTTP" - }, sourcemap: true }, preserveSymlinks: false, diff --git a/sdk/core/core-rest-pipeline/package.json b/sdk/core/core-rest-pipeline/package.json index 75e7e6aa5e6c..fb00f11b74a9 100644 --- a/sdk/core/core-rest-pipeline/package.json +++ b/sdk/core/core-rest-pipeline/package.json @@ -93,7 +93,7 @@ "dependencies": { "@azure/abort-controller": "^1.0.0", "@azure/core-auth": "^1.3.0", - "@azure/core-tracing": "1.0.0-preview.11", + "@azure/core-tracing": "1.0.0-preview.12", "@azure/logger": "^1.0.0", "form-data": "^3.0.0", "tslib": "^2.2.0", diff --git a/sdk/core/core-rest-pipeline/src/policies/tracingPolicy.ts b/sdk/core/core-rest-pipeline/src/policies/tracingPolicy.ts index 3ada95732249..fd6125a05201 100644 --- a/sdk/core/core-rest-pipeline/src/policies/tracingPolicy.ts +++ b/sdk/core/core-rest-pipeline/src/policies/tracingPolicy.ts @@ -77,7 +77,7 @@ export function tracingPolicy(options: TracingPolicyOptions = {}): PipelinePolic try { // set headers - const spanContext = span.context(); + const spanContext = span.spanContext(); const traceParentHeader = getTraceParentHeader(spanContext); if (traceParentHeader) { request.headers.set("traceparent", traceParentHeader); diff --git a/sdk/core/core-rest-pipeline/test/tracingPolicy.spec.ts b/sdk/core/core-rest-pipeline/test/tracingPolicy.spec.ts index 034d47b93208..5643463b7b56 100644 --- a/sdk/core/core-rest-pipeline/test/tracingPolicy.spec.ts +++ b/sdk/core/core-rest-pipeline/test/tracingPolicy.spec.ts @@ -66,7 +66,7 @@ class MockSpan extends NoOpSpan { return this._attributes[key]; } - context(): SpanContext { + spanContext(): SpanContext { const state = this.state; const traceState = { diff --git a/sdk/core/core-tracing/package.json b/sdk/core/core-tracing/package.json index 7056b43d6425..db31dc5281ed 100644 --- a/sdk/core/core-tracing/package.json +++ b/sdk/core/core-tracing/package.json @@ -60,7 +60,7 @@ "homepage": "https://github.com/Azure/azure-sdk-for-js/blob/master/sdk/core/core-tracing/README.md", "sideEffects": false, "dependencies": { - "@opentelemetry/api": "1.0.0-rc.0", + "@opentelemetry/api": "0.20.0", "tslib": "^2.2.0" }, "devDependencies": { diff --git a/sdk/core/core-tracing/review/core-tracing.api.md b/sdk/core/core-tracing/review/core-tracing.api.md index 32e6bd900d86..824fbba74ab5 100644 --- a/sdk/core/core-tracing/review/core-tracing.api.md +++ b/sdk/core/core-tracing/review/core-tracing.api.md @@ -81,25 +81,19 @@ export type HrTime = [number, number]; // @public export interface Link { attributes?: SpanAttributes; - context: LinkContext; + context: SpanContext; } -// @public -export type LinkContext = { - traceId: string; - spanId: string; -}; - // @public export class NoOpSpan implements Span { addEvent(_name: string, _attributes?: SpanAttributes): this; - context(): SpanContext; end(_endTime?: number): void; isRecording(): boolean; recordException(_exception: Exception, _time?: TimeInput): void; setAttribute(_key: string, _value: unknown): this; setAttributes(_attributes: SpanAttributes): this; setStatus(_status: SpanStatus): this; + spanContext(): SpanContext; updateName(_name: string): this; } @@ -129,13 +123,13 @@ export function setTracer(tracer: Tracer): void; // @public export interface Span { addEvent(name: string, attributesOrStartTime?: SpanAttributes | TimeInput, startTime?: TimeInput): this; - context(): SpanContext; end(endTime?: TimeInput): void; isRecording(): boolean; recordException(exception: Exception, time?: TimeInput): void; setAttribute(key: string, value: SpanAttributeValue): this; setAttributes(attributes: SpanAttributes): this; setStatus(status: SpanStatus): this; + spanContext(): SpanContext; updateName(name: string): this; } @@ -200,7 +194,6 @@ export enum SpanStatusCode { export class TestSpan extends NoOpSpan { constructor(parentTracer: Tracer, name: string, context: SpanContext, kind: SpanKind, parentSpanId?: string, startTime?: TimeInput); readonly attributes: SpanAttributes; - context(): SpanContext; end(_endTime?: number): void; endCalled: boolean; isRecording(): boolean; @@ -210,6 +203,7 @@ export class TestSpan extends NoOpSpan { setAttribute(key: string, value: SpanAttributeValue): this; setAttributes(attributes: SpanAttributes): this; setStatus(status: SpanStatus): this; + spanContext(): SpanContext; readonly startTime: TimeInput; status: SpanStatus; tracer(): Tracer; diff --git a/sdk/core/core-tracing/src/index.ts b/sdk/core/core-tracing/src/index.ts index 179a319278ba..46efb7f36c34 100644 --- a/sdk/core/core-tracing/src/index.ts +++ b/sdk/core/core-tracing/src/index.ts @@ -23,7 +23,6 @@ export { getSpanContext, HrTime, Link, - LinkContext, OperationTracingOptions, setSpan, setSpanContext, diff --git a/sdk/core/core-tracing/src/interfaces.ts b/sdk/core/core-tracing/src/interfaces.ts index ed9cc191ae13..cfab37fa8a55 100644 --- a/sdk/core/core-tracing/src/interfaces.ts +++ b/sdk/core/core-tracing/src/interfaces.ts @@ -1,13 +1,7 @@ // Copyright (c) Microsoft Corporation. // Licensed under the MIT license. -import { - context as otContext, - getSpan as otGetSpan, - getSpanContext as otGetSpanContext, - setSpan as otSetSpan, - setSpanContext as otSetSpanContext -} from "@opentelemetry/api"; +import { context as otContext, trace as otTrace } from "@opentelemetry/api"; /** * A Tracer. @@ -178,7 +172,7 @@ export interface ExceptionWithName { * @param context - context to get span from */ export function getSpan(context: Context): Span | undefined { - return otGetSpan(context); + return otTrace.getSpan(context); } /** @@ -188,7 +182,7 @@ export function getSpan(context: Context): Span | undefined { * @param span - span to set active */ export function setSpan(context: Context, span: Span): Context { - return otSetSpan(context, span); + return otTrace.setSpan(context, span); } /** @@ -199,7 +193,7 @@ export function setSpan(context: Context, span: Span): Context { * @param spanContext - span context to be wrapped */ export function setSpanContext(context: Context, spanContext: SpanContext): Context { - return otSetSpanContext(context, spanContext); + return otTrace.setSpanContext(context, spanContext); } /** @@ -208,7 +202,7 @@ export function setSpanContext(context: Context, spanContext: SpanContext): Cont * @param context - context to get values from */ export function getSpanContext(context: Context): SpanContext | undefined { - return otGetSpanContext(context); + return otTrace.getSpanContext(context); } /** @@ -260,7 +254,7 @@ export interface Span { * * @returns the SpanContext object associated with this Span. */ - context(): SpanContext; + spanContext(): SpanContext; /** * Sets an attribute to the span. * @@ -388,20 +382,12 @@ export interface SpanContext { traceState?: TraceState; } -/** - * Context for the linked span. - */ -export type LinkContext = { - traceId: string; - spanId: string; -}; - /** * Used to specify a span that is linked to another. */ export interface Link { - /** The {@link LinkContext} of a linked span. */ - context: LinkContext; + /** The {@link SpanContext} of a linked span. */ + context: SpanContext; /** A set of {@link SpanAttributes} on the link. */ attributes?: SpanAttributes; diff --git a/sdk/core/core-tracing/src/tracers/noop/noOpSpan.ts b/sdk/core/core-tracing/src/tracers/noop/noOpSpan.ts index 55f442111b02..93e8ee94f182 100644 --- a/sdk/core/core-tracing/src/tracers/noop/noOpSpan.ts +++ b/sdk/core/core-tracing/src/tracers/noop/noOpSpan.ts @@ -18,7 +18,7 @@ export class NoOpSpan implements Span { /** * Returns the SpanContext associated with this Span. */ - context(): SpanContext { + spanContext(): SpanContext { return { spanId: "", traceId: "", diff --git a/sdk/core/core-tracing/src/tracers/test/testSpan.ts b/sdk/core/core-tracing/src/tracers/test/testSpan.ts index 50f11fd584a5..9cd23cd73351 100644 --- a/sdk/core/core-tracing/src/tracers/test/testSpan.ts +++ b/sdk/core/core-tracing/src/tracers/test/testSpan.ts @@ -96,7 +96,7 @@ export class TestSpan extends NoOpSpan { /** * Returns the SpanContext associated with this Span. */ - context(): SpanContext { + spanContext(): SpanContext { return this._context; } diff --git a/sdk/core/core-tracing/src/tracers/test/testTracer.ts b/sdk/core/core-tracing/src/tracers/test/testTracer.ts index 99bbcd282755..fe85831fa610 100644 --- a/sdk/core/core-tracing/src/tracers/test/testTracer.ts +++ b/sdk/core/core-tracing/src/tracers/test/testTracer.ts @@ -88,14 +88,14 @@ export class TestTracer extends NoOpTracer { */ getSpanGraph(traceId: string): SpanGraph { const traceSpans = this.knownSpans.filter((span) => { - return span.context().traceId === traceId; + return span.spanContext().traceId === traceId; }); const roots: SpanGraphNode[] = []; const nodeMap: Map = new Map(); for (const span of traceSpans) { - const spanId = span.context().spanId; + const spanId = span.spanContext().spanId; const node: SpanGraphNode = { name: span.name, children: [] diff --git a/sdk/core/core-tracing/src/utils/cache.ts b/sdk/core/core-tracing/src/utils/cache.ts index 0b53650f9a22..92defea17019 100644 --- a/sdk/core/core-tracing/src/utils/cache.ts +++ b/sdk/core/core-tracing/src/utils/cache.ts @@ -4,17 +4,13 @@ import { Tracer } from "../interfaces"; import { getGlobalObject } from "./global"; -// V1 = OpenTelemetry 0.1 -// V2 = OpenTelemetry 0.2 -// V3 = OpenTelemetry 0.6.1 -// V4 = OpenTelemetry 1.0.0-rc.0 -const GLOBAL_TRACER_VERSION = 4; -// preview5 shipped with @azure/core-tracing.tracerCache -// and didn't have smart detection for collisions -const GLOBAL_TRACER_SYMBOL = Symbol.for("@azure/core-tracing.tracerCache3"); +// tracerCache will be updated when a new incompatible version of OTel is +// shipped in core-tracing. +// tracerCache3 - OpenTelemetry 1.0.0-rc.1 +// tracerCache4 - OpenTelemetry 0.20.0 +const GLOBAL_TRACER_SYMBOL = Symbol.for(`@azure/core-tracing.tracerCache4`); export interface TracerCache { - version: number; tracer?: Tracer; } @@ -22,31 +18,13 @@ let cache: TracerCache; function loadTracerCache(): void { const globalObj = getGlobalObject(); - const existingCache: TracerCache = globalObj[GLOBAL_TRACER_SYMBOL]; - let setGlobalCache = true; - if (existingCache) { - if (existingCache.version === GLOBAL_TRACER_VERSION) { - cache = existingCache; - } else { - setGlobalCache = false; - if (existingCache.tracer) { - throw new Error( - `Two incompatible versions of @azure/core-tracing have been loaded. - This library is ${GLOBAL_TRACER_VERSION}, existing is ${existingCache.version}.` - ); - } - } - } - if (!cache) { - cache = { - tracer: undefined, - version: GLOBAL_TRACER_VERSION + if (!globalObj[GLOBAL_TRACER_SYMBOL]) { + globalObj[GLOBAL_TRACER_SYMBOL] = { + tracer: undefined }; } - if (setGlobalCache) { - globalObj[GLOBAL_TRACER_SYMBOL] = cache; - } + cache = globalObj[GLOBAL_TRACER_SYMBOL]; } export function getCache(): TracerCache { diff --git a/sdk/core/core-tracing/test/cache.spec.ts b/sdk/core/core-tracing/test/cache.spec.ts new file mode 100644 index 000000000000..6bde9dda7291 --- /dev/null +++ b/sdk/core/core-tracing/test/cache.spec.ts @@ -0,0 +1,28 @@ +// Copyright (c) Microsoft Corporation. +// Licensed under the MIT license. + +import assert from "assert"; +import * as fs from "fs"; +import { Context } from "mocha"; +import * as path from "path"; + +const validOpenTelemetryVersions = ["0.20.0"]; + +describe("cache", () => { + it("ensure current @opentelemetry/api has been validated", function(this: Context) { + if (!fs) { + this.skip(); + } + // This test ensures that we make a conscious and deliberate decision whether two tracers are compatible. + // When upgrading our @opentelemetry/api version, if the changes to the _tracer_ are incompatible we should + // Update GLOBAL_TRACER_SYMBOL to be unique by incrementing the version and remove the existing entries in `validOpenTelemetryVersions`. Otherwise we can share a tracer cache. + // When finished, you can add this version to the `validOpenTelemetryVersions` array. + const packageJson = JSON.parse( + fs.readFileSync(path.join(__dirname, "../package.json"), { encoding: "utf8" }) + ); + assert.ok( + validOpenTelemetryVersions.includes(packageJson["dependencies"]["@opentelemetry/api"]), + "Detected new version of @opentelemetry/api. Please ensure compatibility with current versions or bump the cache version to ensure uniqueness, then add it to the `validOpenTelemetryVersions` list." + ); + }); +}); diff --git a/sdk/core/core-tracing/test/createSpan.spec.ts b/sdk/core/core-tracing/test/createSpan.spec.ts index 8379548cfd73..74baa0a00499 100644 --- a/sdk/core/core-tracing/test/createSpan.spec.ts +++ b/sdk/core/core-tracing/test/createSpan.spec.ts @@ -10,7 +10,7 @@ import { context as otContext, getSpanContext, Context -} from "@opentelemetry/api"; +} from "../src/interfaces"; import { setTracer } from "../src/tracerProxy"; import { TestTracer } from "../src/tracers/test/testTracer"; @@ -197,7 +197,7 @@ describe("createSpan", () => { assert.notDeepEqual(parentContext, otContext.active(), "new child context should be created"); assert.equal( getSpanContext(parentContext!)?.spanId, - span.context().spanId, + span.spanContext().spanId, "context returned in the updated options should point to our newly created span" ); } @@ -212,7 +212,7 @@ describe("createSpan", () => { assert.ok(updatedOptions.tracingOptions.tracingContext); assert.equal( getSpanContext(updatedOptions.tracingOptions.tracingContext!)?.spanId, - childSpan.context().spanId + childSpan.spanContext().spanId ); }); }); diff --git a/sdk/core/core-tracing/test/interfaces.spec.ts b/sdk/core/core-tracing/test/interfaces.spec.ts index 70555fddc7a6..822086c2c29b 100644 --- a/sdk/core/core-tracing/test/interfaces.spec.ts +++ b/sdk/core/core-tracing/test/interfaces.spec.ts @@ -31,6 +31,7 @@ describe("interface compatibility", () => { links: [ { context: { + traceFlags: coreTracing.TraceFlags.NONE, spanId: "", traceId: "" } @@ -53,7 +54,8 @@ describe("interface compatibility", () => { { context: { spanId: "spanId", - traceId: "traceId" + traceId: "traceId", + traceFlags: coreTracing.TraceFlags.NONE }, attributes: { hello2: "world2" diff --git a/sdk/customer-insights/arm-customerinsights/README.md b/sdk/customer-insights/arm-customerinsights/README.md index 4c0674371b16..fca618f3fd17 100644 --- a/sdk/customer-insights/arm-customerinsights/README.md +++ b/sdk/customer-insights/arm-customerinsights/README.md @@ -1,89 +1,100 @@ ## Azure CustomerInsightsManagementClient SDK for JavaScript -This package contains an isomorphic SDK for CustomerInsightsManagementClient. +This package contains an isomorphic SDK (runs both in Node.js and in browsers) for CustomerInsightsManagementClient. ### Currently supported environments -- Node.js version 6.x.x or higher -- Browser JavaScript +- [LTS versions of Node.js](https://nodejs.org/about/releases/) +- Latest versions of Safari, Chrome, Edge, and Firefox. -### How to Install +### Prerequisites -``` -npm install @azure/arm-customerinsights +You must have an [Azure subscription](https://azure.microsoft.com/free/). + +### How to install + +To use this SDK in your project, you will need to install two packages. +- `@azure/arm-customerinsights` that contains the client. +- `@azure/identity` that provides different mechanisms for the client to authenticate your requests using Azure Active Directory. + +Install both packages using the below command: +```bash +npm install --save @azure/arm-customerinsights @azure/identity ``` +> **Note**: You may have used either `@azure/ms-rest-nodeauth` or `@azure/ms-rest-browserauth` in the past. These packages are in maintenance mode receiving critical bug fixes, but no new features. +If you are on a [Node.js that has LTS status](https://nodejs.org/about/releases/), or are writing a client side browser application, we strongly encourage you to upgrade to `@azure/identity` which uses the latest versions of Azure Active Directory and MSAL APIs and provides more authentication options. + ### How to use -#### nodejs - Authentication, client creation and list operations as an example written in TypeScript. +- If you are writing a client side browser application, + - Follow the instructions in the section on Authenticating client side browser applications in [Azure Identity examples](https://aka.ms/azsdk/js/identity/examples) to register your application in the Microsoft identity platform and set the right permissions. + - Copy the client ID and tenant ID from the Overview section of your app registration in Azure portal and use it in the browser sample below. +- If you are writing a server side application, + - [Select a credential from `@azure/identity` based on the authentication method of your choice](https://aka.ms/azsdk/js/identity/examples) + - Complete the set up steps required by the credential if any. + - Use the credential you picked in the place of `DefaultAzureCredential` in the Node.js sample below. -##### Install @azure/ms-rest-nodeauth +In the below samples, we pass the credential and the Azure subscription id to instantiate the client. +Once the client is created, explore the operations on it either in your favorite editor or in our [API reference documentation](https://docs.microsoft.com/javascript/api) to get started. -``` -npm install @azure/ms-rest-nodeauth -``` +#### nodejs - Authentication, client creation, and list operations as an example written in JavaScript. ##### Sample code -```ts -import * as msRest from "@azure/ms-rest-js"; -import * as msRestAzure from "@azure/ms-rest-azure-js"; -import * as msRestNodeAuth from "@azure/ms-rest-nodeauth"; -import { CustomerInsightsManagementClient, CustomerInsightsManagementModels, CustomerInsightsManagementMappers } from "@azure/arm-customerinsights"; +```javascript +const { DefaultAzureCredential } = require("@azure/identity"); +const { CustomerInsightsManagementClient } = require("@azure/arm-customerinsights"); const subscriptionId = process.env["AZURE_SUBSCRIPTION_ID"]; -msRestNodeAuth.interactiveLogin().then((creds) => { - const client = new CustomerInsightsManagementClient(creds, subscriptionId); - client.operations.list().then((result) => { - console.log("The result is:"); - console.log(result); - }); +// Use `DefaultAzureCredential` or any other credential of your choice based on https://aka.ms/azsdk/js/identity/examples +// Please note that you can also use credentials from the `@azure/ms-rest-nodeauth` package instead. +const creds = new DefaultAzureCredential(); +const client = new CustomerInsightsManagementClient(creds, subscriptionId); + +client.operations.list().then((result) => { + console.log("The result is:"); + console.log(result); }).catch((err) => { + console.log("An error occurred:"); console.error(err); }); ``` -#### browser - Authentication, client creation and list operations as an example written in JavaScript. - -##### Install @azure/ms-rest-browserauth +#### browser - Authentication, client creation, and list operations as an example written in JavaScript. -``` -npm install @azure/ms-rest-browserauth -``` +In browser applications, we recommend using the `InteractiveBrowserCredential` that interactively authenticates using the default system browser. + - See [Single-page application: App registration guide](https://docs.microsoft.com/azure/active-directory/develop/scenario-spa-app-registration) to configure your app registration for the browser. + - Note down the client Id from the previous step and use it in the browser sample below. ##### Sample code -See https://github.com/Azure/ms-rest-browserauth to learn how to authenticate to Azure in the browser. - - index.html + ```html @azure/arm-customerinsights sample - - + @@ -95,5 +106,4 @@ See https://github.com/Azure/ms-rest-browserauth to learn how to authenticate to - [Microsoft Azure SDK for Javascript](https://github.com/Azure/azure-sdk-for-js) - -![Impressions](https://azure-sdk-impressions.azurewebsites.net/api/impressions/azure-sdk-for-js%2Fsdk%2Fcustomer-insights%2Farm-customerinsights%2FREADME.png) +![Impressions](https://azure-sdk-impressions.azurewebsites.net/api/impressions/azure-sdk-for-js/sdk/customer-insights/arm-customerinsights/README.png) diff --git a/sdk/customer-insights/arm-customerinsights/package.json b/sdk/customer-insights/arm-customerinsights/package.json index 8da0aaac415b..89b51667d0dc 100644 --- a/sdk/customer-insights/arm-customerinsights/package.json +++ b/sdk/customer-insights/arm-customerinsights/package.json @@ -2,10 +2,11 @@ "name": "@azure/arm-customerinsights", "author": "Microsoft Corporation", "description": "CustomerInsightsManagementClient Library with typescript type definitions for node.js and browser.", - "version": "3.1.0", + "version": "3.2.0", "dependencies": { - "@azure/ms-rest-azure-js": "^1.1.0", - "@azure/ms-rest-js": "^1.1.0", + "@azure/ms-rest-azure-js": "^1.4.0", + "@azure/ms-rest-js": "^1.11.0", + "@azure/core-auth": "^1.1.4", "tslib": "^1.9.3" }, "keywords": [ @@ -20,7 +21,7 @@ "module": "./esm/customerInsightsManagementClient.js", "types": "./esm/customerInsightsManagementClient.d.ts", "devDependencies": { - "typescript": "^3.1.1", + "typescript": "^3.6.0", "rollup": "^0.66.2", "rollup-plugin-node-resolve": "^3.4.0", "uglify-js": "^3.4.9" diff --git a/sdk/customer-insights/arm-customerinsights/src/customerInsightsManagementClient.ts b/sdk/customer-insights/arm-customerinsights/src/customerInsightsManagementClient.ts index 756b2eaa4155..6222dfec17cc 100644 --- a/sdk/customer-insights/arm-customerinsights/src/customerInsightsManagementClient.ts +++ b/sdk/customer-insights/arm-customerinsights/src/customerInsightsManagementClient.ts @@ -9,6 +9,7 @@ */ import * as msRest from "@azure/ms-rest-js"; +import { TokenCredential } from "@azure/core-auth"; import * as Models from "./models"; import * as Mappers from "./models/mappers"; import * as operations from "./operations"; @@ -37,12 +38,17 @@ class CustomerInsightsManagementClient extends CustomerInsightsManagementClientC /** * Initializes a new instance of the CustomerInsightsManagementClient class. - * @param credentials Credentials needed for the client to connect to Azure. + * @param credentials Credentials needed for the client to connect to Azure. Credentials + * implementing the TokenCredential interface from the @azure/identity package are recommended. For + * more information about these credentials, see + * {@link https://www.npmjs.com/package/@azure/identity}. Credentials implementing the + * ServiceClientCredentials interface from the older packages @azure/ms-rest-nodeauth and + * @azure/ms-rest-browserauth are also supported. * @param subscriptionId Gets subscription credentials which uniquely identify Microsoft Azure * subscription. The subscription ID forms part of the URI for every service call. * @param [options] The parameter options */ - constructor(credentials: msRest.ServiceClientCredentials, subscriptionId: string, options?: Models.CustomerInsightsManagementClientOptions) { + constructor(credentials: msRest.ServiceClientCredentials | TokenCredential, subscriptionId: string, options?: Models.CustomerInsightsManagementClientOptions) { super(credentials, subscriptionId, options); this.operations = new operations.Operations(this); this.hubs = new operations.Hubs(this); diff --git a/sdk/customer-insights/arm-customerinsights/src/customerInsightsManagementClientContext.ts b/sdk/customer-insights/arm-customerinsights/src/customerInsightsManagementClientContext.ts index 90b220dba9bb..056ca9a3d8fd 100644 --- a/sdk/customer-insights/arm-customerinsights/src/customerInsightsManagementClientContext.ts +++ b/sdk/customer-insights/arm-customerinsights/src/customerInsightsManagementClientContext.ts @@ -10,24 +10,30 @@ import * as Models from "./models"; import * as msRest from "@azure/ms-rest-js"; +import { TokenCredential } from "@azure/core-auth"; import * as msRestAzure from "@azure/ms-rest-azure-js"; const packageName = "@azure/arm-customerinsights"; -const packageVersion = "0.1.0"; +const packageVersion = "3.2.0"; export class CustomerInsightsManagementClientContext extends msRestAzure.AzureServiceClient { - credentials: msRest.ServiceClientCredentials; + credentials: msRest.ServiceClientCredentials | TokenCredential; subscriptionId: string; apiVersion?: string; /** * Initializes a new instance of the CustomerInsightsManagementClient class. - * @param credentials Credentials needed for the client to connect to Azure. + * @param credentials Credentials needed for the client to connect to Azure. Credentials + * implementing the TokenCredential interface from the @azure/identity package are recommended. For + * more information about these credentials, see + * {@link https://www.npmjs.com/package/@azure/identity}. Credentials implementing the + * ServiceClientCredentials interface from the older packages @azure/ms-rest-nodeauth and + * @azure/ms-rest-browserauth are also supported. * @param subscriptionId Gets subscription credentials which uniquely identify Microsoft Azure * subscription. The subscription ID forms part of the URI for every service call. * @param [options] The parameter options */ - constructor(credentials: msRest.ServiceClientCredentials, subscriptionId: string, options?: Models.CustomerInsightsManagementClientOptions) { + constructor(credentials: msRest.ServiceClientCredentials | TokenCredential, subscriptionId: string, options?: Models.CustomerInsightsManagementClientOptions) { if (credentials == undefined) { throw new Error('\'credentials\' cannot be null.'); } diff --git a/sdk/databox/arm-databox/README.md b/sdk/databox/arm-databox/README.md index 4a3b8f3d1504..da15b9671dab 100644 --- a/sdk/databox/arm-databox/README.md +++ b/sdk/databox/arm-databox/README.md @@ -1,90 +1,100 @@ ## Azure DataBoxManagementClient SDK for JavaScript -This package contains an isomorphic SDK for DataBoxManagementClient. +This package contains an isomorphic SDK (runs both in Node.js and in browsers) for DataBoxManagementClient. ### Currently supported environments -- Node.js version 6.x.x or higher -- Browser JavaScript +- [LTS versions of Node.js](https://nodejs.org/about/releases/) +- Latest versions of Safari, Chrome, Edge, and Firefox. -### How to Install +### Prerequisites +You must have an [Azure subscription](https://azure.microsoft.com/free/). + +### How to install + +To use this SDK in your project, you will need to install two packages. +- `@azure/arm-databox` that contains the client. +- `@azure/identity` that provides different mechanisms for the client to authenticate your requests using Azure Active Directory. + +Install both packages using the below command: ```bash -npm install @azure/arm-databox +npm install --save @azure/arm-databox @azure/identity ``` +> **Note**: You may have used either `@azure/ms-rest-nodeauth` or `@azure/ms-rest-browserauth` in the past. These packages are in maintenance mode receiving critical bug fixes, but no new features. +If you are on a [Node.js that has LTS status](https://nodejs.org/about/releases/), or are writing a client side browser application, we strongly encourage you to upgrade to `@azure/identity` which uses the latest versions of Azure Active Directory and MSAL APIs and provides more authentication options. + ### How to use -#### nodejs - Authentication, client creation and list operations as an example written in TypeScript. +- If you are writing a client side browser application, + - Follow the instructions in the section on Authenticating client side browser applications in [Azure Identity examples](https://aka.ms/azsdk/js/identity/examples) to register your application in the Microsoft identity platform and set the right permissions. + - Copy the client ID and tenant ID from the Overview section of your app registration in Azure portal and use it in the browser sample below. +- If you are writing a server side application, + - [Select a credential from `@azure/identity` based on the authentication method of your choice](https://aka.ms/azsdk/js/identity/examples) + - Complete the set up steps required by the credential if any. + - Use the credential you picked in the place of `DefaultAzureCredential` in the Node.js sample below. -##### Install @azure/ms-rest-nodeauth +In the below samples, we pass the credential and the Azure subscription id to instantiate the client. +Once the client is created, explore the operations on it either in your favorite editor or in our [API reference documentation](https://docs.microsoft.com/javascript/api) to get started. -- Please install minimum version of `"@azure/ms-rest-nodeauth": "^3.0.0"`. -```bash -npm install @azure/ms-rest-nodeauth@"^3.0.0" -``` +#### nodejs - Authentication, client creation, and list operations as an example written in JavaScript. ##### Sample code -```typescript -import * as msRest from "@azure/ms-rest-js"; -import * as msRestAzure from "@azure/ms-rest-azure-js"; -import * as msRestNodeAuth from "@azure/ms-rest-nodeauth"; -import { DataBoxManagementClient, DataBoxManagementModels, DataBoxManagementMappers } from "@azure/arm-databox"; +```javascript +const { DefaultAzureCredential } = require("@azure/identity"); +const { DataBoxManagementClient } = require("@azure/arm-databox"); const subscriptionId = process.env["AZURE_SUBSCRIPTION_ID"]; -msRestNodeAuth.interactiveLogin().then((creds) => { - const client = new DataBoxManagementClient(creds, subscriptionId); - client.operations.list().then((result) => { - console.log("The result is:"); - console.log(result); - }); +// Use `DefaultAzureCredential` or any other credential of your choice based on https://aka.ms/azsdk/js/identity/examples +// Please note that you can also use credentials from the `@azure/ms-rest-nodeauth` package instead. +const creds = new DefaultAzureCredential(); +const client = new DataBoxManagementClient(creds, subscriptionId); + +client.operations.list().then((result) => { + console.log("The result is:"); + console.log(result); }).catch((err) => { + console.log("An error occurred:"); console.error(err); }); ``` -#### browser - Authentication, client creation and list operations as an example written in JavaScript. - -##### Install @azure/ms-rest-browserauth +#### browser - Authentication, client creation, and list operations as an example written in JavaScript. -```bash -npm install @azure/ms-rest-browserauth -``` +In browser applications, we recommend using the `InteractiveBrowserCredential` that interactively authenticates using the default system browser. + - See [Single-page application: App registration guide](https://docs.microsoft.com/azure/active-directory/develop/scenario-spa-app-registration) to configure your app registration for the browser. + - Note down the client Id from the previous step and use it in the browser sample below. ##### Sample code -See https://github.com/Azure/ms-rest-browserauth to learn how to authenticate to Azure in the browser. - - index.html + ```html @azure/arm-databox sample - - + diff --git a/sdk/databox/arm-databox/package.json b/sdk/databox/arm-databox/package.json index 4609f88a04ca..b36129702a4b 100644 --- a/sdk/databox/arm-databox/package.json +++ b/sdk/databox/arm-databox/package.json @@ -2,10 +2,11 @@ "name": "@azure/arm-databox", "author": "Microsoft Corporation", "description": "DataBoxManagementClient Library with typescript type definitions for node.js and browser.", - "version": "4.0.0", + "version": "4.1.0", "dependencies": { - "@azure/ms-rest-azure-js": "^2.0.1", - "@azure/ms-rest-js": "^2.0.4", + "@azure/ms-rest-azure-js": "^2.1.0", + "@azure/ms-rest-js": "^2.2.0", + "@azure/core-auth": "^1.1.4", "tslib": "^1.10.0" }, "keywords": [ @@ -20,7 +21,7 @@ "module": "./esm/dataBoxManagementClient.js", "types": "./esm/dataBoxManagementClient.d.ts", "devDependencies": { - "typescript": "^3.5.3", + "typescript": "^3.6.0", "rollup": "^1.18.0", "rollup-plugin-node-resolve": "^5.2.0", "rollup-plugin-sourcemaps": "^0.4.2", diff --git a/sdk/databox/arm-databox/src/dataBoxManagementClient.ts b/sdk/databox/arm-databox/src/dataBoxManagementClient.ts index f602142b81a6..ef58e9ba9067 100644 --- a/sdk/databox/arm-databox/src/dataBoxManagementClient.ts +++ b/sdk/databox/arm-databox/src/dataBoxManagementClient.ts @@ -9,6 +9,7 @@ */ import * as msRest from "@azure/ms-rest-js"; +import { TokenCredential } from "@azure/core-auth"; import * as Models from "./models"; import * as Mappers from "./models/mappers"; import * as operations from "./operations"; @@ -23,11 +24,16 @@ class DataBoxManagementClient extends DataBoxManagementClientContext { /** * Initializes a new instance of the DataBoxManagementClient class. - * @param credentials Credentials needed for the client to connect to Azure. + * @param credentials Credentials needed for the client to connect to Azure. Credentials + * implementing the TokenCredential interface from the @azure/identity package are recommended. For + * more information about these credentials, see + * {@link https://www.npmjs.com/package/@azure/identity}. Credentials implementing the + * ServiceClientCredentials interface from the older packages @azure/ms-rest-nodeauth and + * @azure/ms-rest-browserauth are also supported. * @param subscriptionId The Subscription Id * @param [options] The parameter options */ - constructor(credentials: msRest.ServiceClientCredentials, subscriptionId: string, options?: Models.DataBoxManagementClientOptions) { + constructor(credentials: msRest.ServiceClientCredentials | TokenCredential, subscriptionId: string, options?: Models.DataBoxManagementClientOptions) { super(credentials, subscriptionId, options); this.operations = new operations.Operations(this); this.jobs = new operations.Jobs(this); diff --git a/sdk/databox/arm-databox/src/dataBoxManagementClientContext.ts b/sdk/databox/arm-databox/src/dataBoxManagementClientContext.ts index c96e85eca2a9..dd8008144963 100644 --- a/sdk/databox/arm-databox/src/dataBoxManagementClientContext.ts +++ b/sdk/databox/arm-databox/src/dataBoxManagementClientContext.ts @@ -10,23 +10,29 @@ import * as Models from "./models"; import * as msRest from "@azure/ms-rest-js"; +import { TokenCredential } from "@azure/core-auth"; import * as msRestAzure from "@azure/ms-rest-azure-js"; const packageName = "@azure/arm-databox"; -const packageVersion = "4.0.0"; +const packageVersion = "4.1.0"; export class DataBoxManagementClientContext extends msRestAzure.AzureServiceClient { - credentials: msRest.ServiceClientCredentials; + credentials: msRest.ServiceClientCredentials | TokenCredential; apiVersion?: string; subscriptionId: string; /** * Initializes a new instance of the DataBoxManagementClient class. - * @param credentials Credentials needed for the client to connect to Azure. + * @param credentials Credentials needed for the client to connect to Azure. Credentials + * implementing the TokenCredential interface from the @azure/identity package are recommended. For + * more information about these credentials, see + * {@link https://www.npmjs.com/package/@azure/identity}. Credentials implementing the + * ServiceClientCredentials interface from the older packages @azure/ms-rest-nodeauth and + * @azure/ms-rest-browserauth are also supported. * @param subscriptionId The Subscription Id * @param [options] The parameter options */ - constructor(credentials: msRest.ServiceClientCredentials, subscriptionId: string, options?: Models.DataBoxManagementClientOptions) { + constructor(credentials: msRest.ServiceClientCredentials | TokenCredential, subscriptionId: string, options?: Models.DataBoxManagementClientOptions) { if (credentials == undefined) { throw new Error('\'credentials\' cannot be null.'); } diff --git a/sdk/databoxedge/arm-databoxedge-profile-2020-09-01-hybrid/README.md b/sdk/databoxedge/arm-databoxedge-profile-2020-09-01-hybrid/README.md index de4e81764af3..ce1d3af84c2d 100644 --- a/sdk/databoxedge/arm-databoxedge-profile-2020-09-01-hybrid/README.md +++ b/sdk/databoxedge/arm-databoxedge-profile-2020-09-01-hybrid/README.md @@ -1,90 +1,100 @@ ## Azure DataBoxEdgeManagementClient SDK for JavaScript -This package contains an isomorphic SDK for DataBoxEdgeManagementClient. +This package contains an isomorphic SDK (runs both in Node.js and in browsers) for DataBoxEdgeManagementClient. ### Currently supported environments -- Node.js version 6.x.x or higher -- Browser JavaScript +- [LTS versions of Node.js](https://nodejs.org/about/releases/) +- Latest versions of Safari, Chrome, Edge, and Firefox. -### How to Install +### Prerequisites +You must have an [Azure subscription](https://azure.microsoft.com/free/). + +### How to install + +To use this SDK in your project, you will need to install two packages. +- `@azure/arm-databoxedge-profile-2020-09-01-hybrid` that contains the client. +- `@azure/identity` that provides different mechanisms for the client to authenticate your requests using Azure Active Directory. + +Install both packages using the below command: ```bash -npm install @azure/arm-databoxedge-profile-2020-09-01-hybrid +npm install --save @azure/arm-databoxedge-profile-2020-09-01-hybrid @azure/identity ``` +> **Note**: You may have used either `@azure/ms-rest-nodeauth` or `@azure/ms-rest-browserauth` in the past. These packages are in maintenance mode receiving critical bug fixes, but no new features. +If you are on a [Node.js that has LTS status](https://nodejs.org/about/releases/), or are writing a client side browser application, we strongly encourage you to upgrade to `@azure/identity` which uses the latest versions of Azure Active Directory and MSAL APIs and provides more authentication options. + ### How to use -#### nodejs - Authentication, client creation and list operations as an example written in TypeScript. +- If you are writing a client side browser application, + - Follow the instructions in the section on Authenticating client side browser applications in [Azure Identity examples](https://aka.ms/azsdk/js/identity/examples) to register your application in the Microsoft identity platform and set the right permissions. + - Copy the client ID and tenant ID from the Overview section of your app registration in Azure portal and use it in the browser sample below. +- If you are writing a server side application, + - [Select a credential from `@azure/identity` based on the authentication method of your choice](https://aka.ms/azsdk/js/identity/examples) + - Complete the set up steps required by the credential if any. + - Use the credential you picked in the place of `DefaultAzureCredential` in the Node.js sample below. -##### Install @azure/ms-rest-nodeauth +In the below samples, we pass the credential and the Azure subscription id to instantiate the client. +Once the client is created, explore the operations on it either in your favorite editor or in our [API reference documentation](https://docs.microsoft.com/javascript/api) to get started. -- Please install minimum version of `"@azure/ms-rest-nodeauth": "^3.0.0"`. -```bash -npm install @azure/ms-rest-nodeauth@"^3.0.0" -``` +#### nodejs - Authentication, client creation, and list operations as an example written in JavaScript. ##### Sample code -```typescript -import * as msRest from "@azure/ms-rest-js"; -import * as msRestAzure from "@azure/ms-rest-azure-js"; -import * as msRestNodeAuth from "@azure/ms-rest-nodeauth"; -import { DataBoxEdgeManagementClient, DataBoxEdgeManagementModels, DataBoxEdgeManagementMappers } from "@azure/arm-databoxedge-profile-2020-09-01-hybrid"; +```javascript +const { DefaultAzureCredential } = require("@azure/identity"); +const { DataBoxEdgeManagementClient } = require("@azure/arm-databoxedge-profile-2020-09-01-hybrid"); const subscriptionId = process.env["AZURE_SUBSCRIPTION_ID"]; -msRestNodeAuth.interactiveLogin().then((creds) => { - const client = new DataBoxEdgeManagementClient(creds, subscriptionId); - client.operations.list().then((result) => { - console.log("The result is:"); - console.log(result); - }); +// Use `DefaultAzureCredential` or any other credential of your choice based on https://aka.ms/azsdk/js/identity/examples +// Please note that you can also use credentials from the `@azure/ms-rest-nodeauth` package instead. +const creds = new DefaultAzureCredential(); +const client = new DataBoxEdgeManagementClient(creds, subscriptionId); + +client.operations.list().then((result) => { + console.log("The result is:"); + console.log(result); }).catch((err) => { + console.log("An error occurred:"); console.error(err); }); ``` -#### browser - Authentication, client creation and list operations as an example written in JavaScript. - -##### Install @azure/ms-rest-browserauth +#### browser - Authentication, client creation, and list operations as an example written in JavaScript. -```bash -npm install @azure/ms-rest-browserauth -``` +In browser applications, we recommend using the `InteractiveBrowserCredential` that interactively authenticates using the default system browser. + - See [Single-page application: App registration guide](https://docs.microsoft.com/azure/active-directory/develop/scenario-spa-app-registration) to configure your app registration for the browser. + - Note down the client Id from the previous step and use it in the browser sample below. ##### Sample code -See https://github.com/Azure/ms-rest-browserauth to learn how to authenticate to Azure in the browser. - - index.html + ```html @azure/arm-databoxedge-profile-2020-09-01-hybrid sample - - + diff --git a/sdk/databoxedge/arm-databoxedge-profile-2020-09-01-hybrid/package.json b/sdk/databoxedge/arm-databoxedge-profile-2020-09-01-hybrid/package.json index b2dfc62b4175..b3376a9cd60b 100644 --- a/sdk/databoxedge/arm-databoxedge-profile-2020-09-01-hybrid/package.json +++ b/sdk/databoxedge/arm-databoxedge-profile-2020-09-01-hybrid/package.json @@ -2,10 +2,11 @@ "name": "@azure/arm-databoxedge-profile-2020-09-01-hybrid", "author": "Microsoft Corporation", "description": "DataBoxEdgeManagementClient Library with typescript type definitions for node.js and browser.", - "version": "1.0.0", + "version": "1.1.0", "dependencies": { - "@azure/ms-rest-azure-js": "^2.0.1", - "@azure/ms-rest-js": "^2.0.4", + "@azure/ms-rest-azure-js": "^2.1.0", + "@azure/ms-rest-js": "^2.2.0", + "@azure/core-auth": "^1.1.4", "tslib": "^1.10.0" }, "keywords": [ @@ -20,7 +21,7 @@ "module": "./esm/dataBoxEdgeManagementClient.js", "types": "./esm/dataBoxEdgeManagementClient.d.ts", "devDependencies": { - "typescript": "^3.5.3", + "typescript": "^3.6.0", "rollup": "^1.18.0", "rollup-plugin-node-resolve": "^5.2.0", "rollup-plugin-sourcemaps": "^0.4.2", diff --git a/sdk/databoxedge/arm-databoxedge-profile-2020-09-01-hybrid/src/dataBoxEdgeManagementClient.ts b/sdk/databoxedge/arm-databoxedge-profile-2020-09-01-hybrid/src/dataBoxEdgeManagementClient.ts index eb7d557efa73..5c59037970dc 100644 --- a/sdk/databoxedge/arm-databoxedge-profile-2020-09-01-hybrid/src/dataBoxEdgeManagementClient.ts +++ b/sdk/databoxedge/arm-databoxedge-profile-2020-09-01-hybrid/src/dataBoxEdgeManagementClient.ts @@ -9,6 +9,7 @@ */ import * as msRest from "@azure/ms-rest-js"; +import { TokenCredential } from "@azure/core-auth"; import * as Models from "./models"; import * as Mappers from "./models/mappers"; import * as operations from "./operations"; @@ -36,11 +37,16 @@ class DataBoxEdgeManagementClient extends DataBoxEdgeManagementClientContext { /** * Initializes a new instance of the DataBoxEdgeManagementClient class. - * @param credentials Credentials needed for the client to connect to Azure. + * @param credentials Credentials needed for the client to connect to Azure. Credentials + * implementing the TokenCredential interface from the @azure/identity package are recommended. For + * more information about these credentials, see + * {@link https://www.npmjs.com/package/@azure/identity}. Credentials implementing the + * ServiceClientCredentials interface from the older packages @azure/ms-rest-nodeauth and + * @azure/ms-rest-browserauth are also supported. * @param subscriptionId The subscription ID. * @param [options] The parameter options */ - constructor(credentials: msRest.ServiceClientCredentials, subscriptionId: string, options?: Models.DataBoxEdgeManagementClientOptions) { + constructor(credentials: msRest.ServiceClientCredentials | TokenCredential, subscriptionId: string, options?: Models.DataBoxEdgeManagementClientOptions) { super(credentials, subscriptionId, options); this.operations = new operations.Operations(this); this.devices = new operations.Devices(this); diff --git a/sdk/databoxedge/arm-databoxedge-profile-2020-09-01-hybrid/src/dataBoxEdgeManagementClientContext.ts b/sdk/databoxedge/arm-databoxedge-profile-2020-09-01-hybrid/src/dataBoxEdgeManagementClientContext.ts index fe065c028fa0..5c2a8b6738ca 100644 --- a/sdk/databoxedge/arm-databoxedge-profile-2020-09-01-hybrid/src/dataBoxEdgeManagementClientContext.ts +++ b/sdk/databoxedge/arm-databoxedge-profile-2020-09-01-hybrid/src/dataBoxEdgeManagementClientContext.ts @@ -10,23 +10,29 @@ import * as Models from "./models"; import * as msRest from "@azure/ms-rest-js"; +import { TokenCredential } from "@azure/core-auth"; import * as msRestAzure from "@azure/ms-rest-azure-js"; const packageName = "@azure/arm-databoxedge-profile-2020-09-01-hybrid"; -const packageVersion = "1.0.0"; +const packageVersion = "1.1.0"; export class DataBoxEdgeManagementClientContext extends msRestAzure.AzureServiceClient { - credentials: msRest.ServiceClientCredentials; + credentials: msRest.ServiceClientCredentials | TokenCredential; apiVersion?: string; subscriptionId: string; /** * Initializes a new instance of the DataBoxEdgeManagementClient class. - * @param credentials Credentials needed for the client to connect to Azure. + * @param credentials Credentials needed for the client to connect to Azure. Credentials + * implementing the TokenCredential interface from the @azure/identity package are recommended. For + * more information about these credentials, see + * {@link https://www.npmjs.com/package/@azure/identity}. Credentials implementing the + * ServiceClientCredentials interface from the older packages @azure/ms-rest-nodeauth and + * @azure/ms-rest-browserauth are also supported. * @param subscriptionId The subscription ID. * @param [options] The parameter options */ - constructor(credentials: msRest.ServiceClientCredentials, subscriptionId: string, options?: Models.DataBoxEdgeManagementClientOptions) { + constructor(credentials: msRest.ServiceClientCredentials | TokenCredential, subscriptionId: string, options?: Models.DataBoxEdgeManagementClientOptions) { if (credentials == undefined) { throw new Error('\'credentials\' cannot be null.'); } diff --git a/sdk/databoxedge/arm-databoxedge/README.md b/sdk/databoxedge/arm-databoxedge/README.md index a577fd2649c4..53816f7385fa 100644 --- a/sdk/databoxedge/arm-databoxedge/README.md +++ b/sdk/databoxedge/arm-databoxedge/README.md @@ -1,90 +1,100 @@ ## Azure DataBoxEdgeManagementClient SDK for JavaScript -This package contains an isomorphic SDK for DataBoxEdgeManagementClient. +This package contains an isomorphic SDK (runs both in Node.js and in browsers) for DataBoxEdgeManagementClient. ### Currently supported environments -- Node.js version 6.x.x or higher -- Browser JavaScript +- [LTS versions of Node.js](https://nodejs.org/about/releases/) +- Latest versions of Safari, Chrome, Edge, and Firefox. -### How to Install +### Prerequisites +You must have an [Azure subscription](https://azure.microsoft.com/free/). + +### How to install + +To use this SDK in your project, you will need to install two packages. +- `@azure/arm-databoxedge` that contains the client. +- `@azure/identity` that provides different mechanisms for the client to authenticate your requests using Azure Active Directory. + +Install both packages using the below command: ```bash -npm install @azure/arm-databoxedge +npm install --save @azure/arm-databoxedge @azure/identity ``` +> **Note**: You may have used either `@azure/ms-rest-nodeauth` or `@azure/ms-rest-browserauth` in the past. These packages are in maintenance mode receiving critical bug fixes, but no new features. +If you are on a [Node.js that has LTS status](https://nodejs.org/about/releases/), or are writing a client side browser application, we strongly encourage you to upgrade to `@azure/identity` which uses the latest versions of Azure Active Directory and MSAL APIs and provides more authentication options. + ### How to use -#### nodejs - Authentication, client creation and list operations as an example written in TypeScript. +- If you are writing a client side browser application, + - Follow the instructions in the section on Authenticating client side browser applications in [Azure Identity examples](https://aka.ms/azsdk/js/identity/examples) to register your application in the Microsoft identity platform and set the right permissions. + - Copy the client ID and tenant ID from the Overview section of your app registration in Azure portal and use it in the browser sample below. +- If you are writing a server side application, + - [Select a credential from `@azure/identity` based on the authentication method of your choice](https://aka.ms/azsdk/js/identity/examples) + - Complete the set up steps required by the credential if any. + - Use the credential you picked in the place of `DefaultAzureCredential` in the Node.js sample below. -##### Install @azure/ms-rest-nodeauth +In the below samples, we pass the credential and the Azure subscription id to instantiate the client. +Once the client is created, explore the operations on it either in your favorite editor or in our [API reference documentation](https://docs.microsoft.com/javascript/api) to get started. -- Please install minimum version of `"@azure/ms-rest-nodeauth": "^3.0.0"`. -```bash -npm install @azure/ms-rest-nodeauth@"^3.0.0" -``` +#### nodejs - Authentication, client creation, and list operations as an example written in JavaScript. ##### Sample code -```typescript -import * as msRest from "@azure/ms-rest-js"; -import * as msRestAzure from "@azure/ms-rest-azure-js"; -import * as msRestNodeAuth from "@azure/ms-rest-nodeauth"; -import { DataBoxEdgeManagementClient, DataBoxEdgeManagementModels, DataBoxEdgeManagementMappers } from "@azure/arm-databoxedge"; +```javascript +const { DefaultAzureCredential } = require("@azure/identity"); +const { DataBoxEdgeManagementClient } = require("@azure/arm-databoxedge"); const subscriptionId = process.env["AZURE_SUBSCRIPTION_ID"]; -msRestNodeAuth.interactiveLogin().then((creds) => { - const client = new DataBoxEdgeManagementClient(creds, subscriptionId); - client.operations.list().then((result) => { - console.log("The result is:"); - console.log(result); - }); +// Use `DefaultAzureCredential` or any other credential of your choice based on https://aka.ms/azsdk/js/identity/examples +// Please note that you can also use credentials from the `@azure/ms-rest-nodeauth` package instead. +const creds = new DefaultAzureCredential(); +const client = new DataBoxEdgeManagementClient(creds, subscriptionId); + +client.operations.list().then((result) => { + console.log("The result is:"); + console.log(result); }).catch((err) => { + console.log("An error occurred:"); console.error(err); }); ``` -#### browser - Authentication, client creation and list operations as an example written in JavaScript. - -##### Install @azure/ms-rest-browserauth +#### browser - Authentication, client creation, and list operations as an example written in JavaScript. -```bash -npm install @azure/ms-rest-browserauth -``` +In browser applications, we recommend using the `InteractiveBrowserCredential` that interactively authenticates using the default system browser. + - See [Single-page application: App registration guide](https://docs.microsoft.com/azure/active-directory/develop/scenario-spa-app-registration) to configure your app registration for the browser. + - Note down the client Id from the previous step and use it in the browser sample below. ##### Sample code -See https://github.com/Azure/ms-rest-browserauth to learn how to authenticate to Azure in the browser. - - index.html + ```html @azure/arm-databoxedge sample - - + diff --git a/sdk/databoxedge/arm-databoxedge/package.json b/sdk/databoxedge/arm-databoxedge/package.json index db93e4ac2bfd..2015769b0aa7 100644 --- a/sdk/databoxedge/arm-databoxedge/package.json +++ b/sdk/databoxedge/arm-databoxedge/package.json @@ -2,10 +2,11 @@ "name": "@azure/arm-databoxedge", "author": "Microsoft Corporation", "description": "DataBoxEdgeManagementClient Library with typescript type definitions for node.js and browser.", - "version": "1.0.0", + "version": "1.1.0", "dependencies": { - "@azure/ms-rest-azure-js": "^2.0.1", - "@azure/ms-rest-js": "^2.0.4", + "@azure/ms-rest-azure-js": "^2.1.0", + "@azure/ms-rest-js": "^2.2.0", + "@azure/core-auth": "^1.1.4", "tslib": "^1.10.0" }, "keywords": [ @@ -20,7 +21,7 @@ "module": "./esm/dataBoxEdgeManagementClient.js", "types": "./esm/dataBoxEdgeManagementClient.d.ts", "devDependencies": { - "typescript": "^3.5.3", + "typescript": "^3.6.0", "rollup": "^1.18.0", "rollup-plugin-node-resolve": "^5.2.0", "rollup-plugin-sourcemaps": "^0.4.2", diff --git a/sdk/databoxedge/arm-databoxedge/src/dataBoxEdgeManagementClient.ts b/sdk/databoxedge/arm-databoxedge/src/dataBoxEdgeManagementClient.ts index eb7d557efa73..5c59037970dc 100644 --- a/sdk/databoxedge/arm-databoxedge/src/dataBoxEdgeManagementClient.ts +++ b/sdk/databoxedge/arm-databoxedge/src/dataBoxEdgeManagementClient.ts @@ -9,6 +9,7 @@ */ import * as msRest from "@azure/ms-rest-js"; +import { TokenCredential } from "@azure/core-auth"; import * as Models from "./models"; import * as Mappers from "./models/mappers"; import * as operations from "./operations"; @@ -36,11 +37,16 @@ class DataBoxEdgeManagementClient extends DataBoxEdgeManagementClientContext { /** * Initializes a new instance of the DataBoxEdgeManagementClient class. - * @param credentials Credentials needed for the client to connect to Azure. + * @param credentials Credentials needed for the client to connect to Azure. Credentials + * implementing the TokenCredential interface from the @azure/identity package are recommended. For + * more information about these credentials, see + * {@link https://www.npmjs.com/package/@azure/identity}. Credentials implementing the + * ServiceClientCredentials interface from the older packages @azure/ms-rest-nodeauth and + * @azure/ms-rest-browserauth are also supported. * @param subscriptionId The subscription ID. * @param [options] The parameter options */ - constructor(credentials: msRest.ServiceClientCredentials, subscriptionId: string, options?: Models.DataBoxEdgeManagementClientOptions) { + constructor(credentials: msRest.ServiceClientCredentials | TokenCredential, subscriptionId: string, options?: Models.DataBoxEdgeManagementClientOptions) { super(credentials, subscriptionId, options); this.operations = new operations.Operations(this); this.devices = new operations.Devices(this); diff --git a/sdk/databoxedge/arm-databoxedge/src/dataBoxEdgeManagementClientContext.ts b/sdk/databoxedge/arm-databoxedge/src/dataBoxEdgeManagementClientContext.ts index 64e905bd34e6..de420a60aa07 100644 --- a/sdk/databoxedge/arm-databoxedge/src/dataBoxEdgeManagementClientContext.ts +++ b/sdk/databoxedge/arm-databoxedge/src/dataBoxEdgeManagementClientContext.ts @@ -10,23 +10,29 @@ import * as Models from "./models"; import * as msRest from "@azure/ms-rest-js"; +import { TokenCredential } from "@azure/core-auth"; import * as msRestAzure from "@azure/ms-rest-azure-js"; const packageName = "@azure/arm-databoxedge"; -const packageVersion = "1.0.0"; +const packageVersion = "1.1.0"; export class DataBoxEdgeManagementClientContext extends msRestAzure.AzureServiceClient { - credentials: msRest.ServiceClientCredentials; + credentials: msRest.ServiceClientCredentials | TokenCredential; apiVersion?: string; subscriptionId: string; /** * Initializes a new instance of the DataBoxEdgeManagementClient class. - * @param credentials Credentials needed for the client to connect to Azure. + * @param credentials Credentials needed for the client to connect to Azure. Credentials + * implementing the TokenCredential interface from the @azure/identity package are recommended. For + * more information about these credentials, see + * {@link https://www.npmjs.com/package/@azure/identity}. Credentials implementing the + * ServiceClientCredentials interface from the older packages @azure/ms-rest-nodeauth and + * @azure/ms-rest-browserauth are also supported. * @param subscriptionId The subscription ID. * @param [options] The parameter options */ - constructor(credentials: msRest.ServiceClientCredentials, subscriptionId: string, options?: Models.DataBoxEdgeManagementClientOptions) { + constructor(credentials: msRest.ServiceClientCredentials | TokenCredential, subscriptionId: string, options?: Models.DataBoxEdgeManagementClientOptions) { if (credentials == undefined) { throw new Error('\'credentials\' cannot be null.'); } diff --git a/sdk/datacatalog/arm-datacatalog/README.md b/sdk/datacatalog/arm-datacatalog/README.md index f8e46fc91566..bfe24b08786b 100644 --- a/sdk/datacatalog/arm-datacatalog/README.md +++ b/sdk/datacatalog/arm-datacatalog/README.md @@ -1,89 +1,100 @@ ## Azure DataCatalogRestClient SDK for JavaScript -This package contains an isomorphic SDK for DataCatalogRestClient. +This package contains an isomorphic SDK (runs both in Node.js and in browsers) for DataCatalogRestClient. ### Currently supported environments -- Node.js version 6.x.x or higher -- Browser JavaScript +- [LTS versions of Node.js](https://nodejs.org/about/releases/) +- Latest versions of Safari, Chrome, Edge, and Firefox. -### How to Install +### Prerequisites -``` -npm install @azure/arm-datacatalog +You must have an [Azure subscription](https://azure.microsoft.com/free/). + +### How to install + +To use this SDK in your project, you will need to install two packages. +- `@azure/arm-datacatalog` that contains the client. +- `@azure/identity` that provides different mechanisms for the client to authenticate your requests using Azure Active Directory. + +Install both packages using the below command: +```bash +npm install --save @azure/arm-datacatalog @azure/identity ``` +> **Note**: You may have used either `@azure/ms-rest-nodeauth` or `@azure/ms-rest-browserauth` in the past. These packages are in maintenance mode receiving critical bug fixes, but no new features. +If you are on a [Node.js that has LTS status](https://nodejs.org/about/releases/), or are writing a client side browser application, we strongly encourage you to upgrade to `@azure/identity` which uses the latest versions of Azure Active Directory and MSAL APIs and provides more authentication options. + ### How to use -#### nodejs - Authentication, client creation and list aDCOperations as an example written in TypeScript. +- If you are writing a client side browser application, + - Follow the instructions in the section on Authenticating client side browser applications in [Azure Identity examples](https://aka.ms/azsdk/js/identity/examples) to register your application in the Microsoft identity platform and set the right permissions. + - Copy the client ID and tenant ID from the Overview section of your app registration in Azure portal and use it in the browser sample below. +- If you are writing a server side application, + - [Select a credential from `@azure/identity` based on the authentication method of your choice](https://aka.ms/azsdk/js/identity/examples) + - Complete the set up steps required by the credential if any. + - Use the credential you picked in the place of `DefaultAzureCredential` in the Node.js sample below. -##### Install @azure/ms-rest-nodeauth +In the below samples, we pass the credential and the Azure subscription id to instantiate the client. +Once the client is created, explore the operations on it either in your favorite editor or in our [API reference documentation](https://docs.microsoft.com/javascript/api) to get started. -``` -npm install @azure/ms-rest-nodeauth -``` +#### nodejs - Authentication, client creation, and list aDCOperations as an example written in JavaScript. ##### Sample code -```ts -import * as msRest from "@azure/ms-rest-js"; -import * as msRestAzure from "@azure/ms-rest-azure-js"; -import * as msRestNodeAuth from "@azure/ms-rest-nodeauth"; -import { DataCatalogRestClient, DataCatalogRestModels, DataCatalogRestMappers } from "@azure/arm-datacatalog"; +```javascript +const { DefaultAzureCredential } = require("@azure/identity"); +const { DataCatalogRestClient } = require("@azure/arm-datacatalog"); const subscriptionId = process.env["AZURE_SUBSCRIPTION_ID"]; -msRestNodeAuth.interactiveLogin().then((creds) => { - const client = new DataCatalogRestClient(creds, subscriptionId); - client.aDCOperations.list().then((result) => { - console.log("The result is:"); - console.log(result); - }); +// Use `DefaultAzureCredential` or any other credential of your choice based on https://aka.ms/azsdk/js/identity/examples +// Please note that you can also use credentials from the `@azure/ms-rest-nodeauth` package instead. +const creds = new DefaultAzureCredential(); +const client = new DataCatalogRestClient(creds, subscriptionId); + +client.aDCOperations.list().then((result) => { + console.log("The result is:"); + console.log(result); }).catch((err) => { + console.log("An error occurred:"); console.error(err); }); ``` -#### browser - Authentication, client creation and list aDCOperations as an example written in JavaScript. - -##### Install @azure/ms-rest-browserauth +#### browser - Authentication, client creation, and list aDCOperations as an example written in JavaScript. -``` -npm install @azure/ms-rest-browserauth -``` +In browser applications, we recommend using the `InteractiveBrowserCredential` that interactively authenticates using the default system browser. + - See [Single-page application: App registration guide](https://docs.microsoft.com/azure/active-directory/develop/scenario-spa-app-registration) to configure your app registration for the browser. + - Note down the client Id from the previous step and use it in the browser sample below. ##### Sample code -See https://github.com/Azure/ms-rest-browserauth to learn how to authenticate to Azure in the browser. - - index.html + ```html @azure/arm-datacatalog sample - - + @@ -95,5 +106,4 @@ See https://github.com/Azure/ms-rest-browserauth to learn how to authenticate to - [Microsoft Azure SDK for Javascript](https://github.com/Azure/azure-sdk-for-js) - -![Impressions](https://azure-sdk-impressions.azurewebsites.net/api/impressions/azure-sdk-for-js%2Fsdk%2Fdatacatalog%2Farm-datacatalog%2FREADME.png) +![Impressions](https://azure-sdk-impressions.azurewebsites.net/api/impressions/azure-sdk-for-js/sdk/datacatalog/arm-datacatalog/README.png) diff --git a/sdk/datacatalog/arm-datacatalog/package.json b/sdk/datacatalog/arm-datacatalog/package.json index a6156ca2efa3..ddfea4198254 100644 --- a/sdk/datacatalog/arm-datacatalog/package.json +++ b/sdk/datacatalog/arm-datacatalog/package.json @@ -2,10 +2,11 @@ "name": "@azure/arm-datacatalog", "author": "Microsoft Corporation", "description": "DataCatalogRestClient Library with typescript type definitions for node.js and browser.", - "version": "1.1.0", + "version": "1.2.0", "dependencies": { - "@azure/ms-rest-azure-js": "^1.1.0", - "@azure/ms-rest-js": "^1.1.0", + "@azure/ms-rest-azure-js": "^1.4.0", + "@azure/ms-rest-js": "^1.11.0", + "@azure/core-auth": "^1.1.4", "tslib": "^1.9.3" }, "keywords": [ @@ -20,7 +21,7 @@ "module": "./esm/dataCatalogRestClient.js", "types": "./esm/dataCatalogRestClient.d.ts", "devDependencies": { - "typescript": "^3.1.1", + "typescript": "^3.6.0", "rollup": "^0.66.2", "rollup-plugin-node-resolve": "^3.4.0", "uglify-js": "^3.4.9" diff --git a/sdk/datacatalog/arm-datacatalog/src/dataCatalogRestClient.ts b/sdk/datacatalog/arm-datacatalog/src/dataCatalogRestClient.ts index 4aa9c94fa9ea..81ff23bff504 100644 --- a/sdk/datacatalog/arm-datacatalog/src/dataCatalogRestClient.ts +++ b/sdk/datacatalog/arm-datacatalog/src/dataCatalogRestClient.ts @@ -9,6 +9,7 @@ */ import * as msRest from "@azure/ms-rest-js"; +import { TokenCredential } from "@azure/core-auth"; import * as Models from "./models"; import * as Mappers from "./models/mappers"; import * as operations from "./operations"; @@ -22,13 +23,18 @@ class DataCatalogRestClient extends DataCatalogRestClientContext { /** * Initializes a new instance of the DataCatalogRestClient class. - * @param credentials Credentials needed for the client to connect to Azure. + * @param credentials Credentials needed for the client to connect to Azure. Credentials + * implementing the TokenCredential interface from the @azure/identity package are recommended. For + * more information about these credentials, see + * {@link https://www.npmjs.com/package/@azure/identity}. Credentials implementing the + * ServiceClientCredentials interface from the older packages @azure/ms-rest-nodeauth and + * @azure/ms-rest-browserauth are also supported. * @param subscriptionId Gets subscription credentials which uniquely identify the Microsoft Azure * subscription. The subscription ID forms part of the URI for every service call. * @param catalogName The name of the data catlog in the specified subscription and resource group. * @param [options] The parameter options */ - constructor(credentials: msRest.ServiceClientCredentials, subscriptionId: string, catalogName: string, options?: Models.DataCatalogRestClientOptions) { + constructor(credentials: msRest.ServiceClientCredentials | TokenCredential, subscriptionId: string, catalogName: string, options?: Models.DataCatalogRestClientOptions) { super(credentials, subscriptionId, catalogName, options); this.aDCOperations = new operations.ADCOperations(this); this.aDCCatalogs = new operations.ADCCatalogs(this); diff --git a/sdk/datacatalog/arm-datacatalog/src/dataCatalogRestClientContext.ts b/sdk/datacatalog/arm-datacatalog/src/dataCatalogRestClientContext.ts index 625a2fd045b7..80b966832bdc 100644 --- a/sdk/datacatalog/arm-datacatalog/src/dataCatalogRestClientContext.ts +++ b/sdk/datacatalog/arm-datacatalog/src/dataCatalogRestClientContext.ts @@ -10,26 +10,32 @@ import * as Models from "./models"; import * as msRest from "@azure/ms-rest-js"; +import { TokenCredential } from "@azure/core-auth"; import * as msRestAzure from "@azure/ms-rest-azure-js"; const packageName = "@azure/arm-datacatalog"; -const packageVersion = "0.1.0"; +const packageVersion = "1.2.0"; export class DataCatalogRestClientContext extends msRestAzure.AzureServiceClient { - credentials: msRest.ServiceClientCredentials; + credentials: msRest.ServiceClientCredentials | TokenCredential; subscriptionId: string; apiVersion?: string; catalogName: string; /** * Initializes a new instance of the DataCatalogRestClient class. - * @param credentials Credentials needed for the client to connect to Azure. + * @param credentials Credentials needed for the client to connect to Azure. Credentials + * implementing the TokenCredential interface from the @azure/identity package are recommended. For + * more information about these credentials, see + * {@link https://www.npmjs.com/package/@azure/identity}. Credentials implementing the + * ServiceClientCredentials interface from the older packages @azure/ms-rest-nodeauth and + * @azure/ms-rest-browserauth are also supported. * @param subscriptionId Gets subscription credentials which uniquely identify the Microsoft Azure * subscription. The subscription ID forms part of the URI for every service call. * @param catalogName The name of the data catlog in the specified subscription and resource group. * @param [options] The parameter options */ - constructor(credentials: msRest.ServiceClientCredentials, subscriptionId: string, catalogName: string, options?: Models.DataCatalogRestClientOptions) { + constructor(credentials: msRest.ServiceClientCredentials | TokenCredential, subscriptionId: string, catalogName: string, options?: Models.DataCatalogRestClientOptions) { if (credentials == undefined) { throw new Error('\'credentials\' cannot be null.'); } diff --git a/sdk/datadog/arm-datadog/README.md b/sdk/datadog/arm-datadog/README.md index a20955120dc4..3896344cab4d 100644 --- a/sdk/datadog/arm-datadog/README.md +++ b/sdk/datadog/arm-datadog/README.md @@ -1,89 +1,100 @@ ## Azure MicrosoftDatadogClient SDK for JavaScript -This package contains an isomorphic SDK for MicrosoftDatadogClient. +This package contains an isomorphic SDK (runs both in Node.js and in browsers) for MicrosoftDatadogClient. ### Currently supported environments -- Node.js version 6.x.x or higher -- Browser JavaScript +- [LTS versions of Node.js](https://nodejs.org/about/releases/) +- Latest versions of Safari, Chrome, Edge, and Firefox. -### How to Install +### Prerequisites +You must have an [Azure subscription](https://azure.microsoft.com/free/). + +### How to install + +To use this SDK in your project, you will need to install two packages. +- `@azure/arm-datadog` that contains the client. +- `@azure/identity` that provides different mechanisms for the client to authenticate your requests using Azure Active Directory. + +Install both packages using the below command: ```bash -npm install @azure/arm-datadog +npm install --save @azure/arm-datadog @azure/identity ``` +> **Note**: You may have used either `@azure/ms-rest-nodeauth` or `@azure/ms-rest-browserauth` in the past. These packages are in maintenance mode receiving critical bug fixes, but no new features. +If you are on a [Node.js that has LTS status](https://nodejs.org/about/releases/), or are writing a client side browser application, we strongly encourage you to upgrade to `@azure/identity` which uses the latest versions of Azure Active Directory and MSAL APIs and provides more authentication options. + ### How to use -#### nodejs - client creation and list marketplaceAgreements as an example written in TypeScript. +- If you are writing a client side browser application, + - Follow the instructions in the section on Authenticating client side browser applications in [Azure Identity examples](https://aka.ms/azsdk/js/identity/examples) to register your application in the Microsoft identity platform and set the right permissions. + - Copy the client ID and tenant ID from the Overview section of your app registration in Azure portal and use it in the browser sample below. +- If you are writing a server side application, + - [Select a credential from `@azure/identity` based on the authentication method of your choice](https://aka.ms/azsdk/js/identity/examples) + - Complete the set up steps required by the credential if any. + - Use the credential you picked in the place of `DefaultAzureCredential` in the Node.js sample below. -##### Install @azure/ms-rest-nodeauth +In the below samples, we pass the credential and the Azure subscription id to instantiate the client. +Once the client is created, explore the operations on it either in your favorite editor or in our [API reference documentation](https://docs.microsoft.com/javascript/api) to get started. -- Please install minimum version of `"@azure/ms-rest-nodeauth": "^3.0.0"`. -```bash -npm install @azure/ms-rest-nodeauth@"^3.0.0" -``` +#### nodejs - Authentication, client creation, and list marketplaceAgreements as an example written in JavaScript. ##### Sample code -While the below sample uses the interactive login, other authentication options can be found in the [README.md file of @azure/ms-rest-nodeauth](https://www.npmjs.com/package/@azure/ms-rest-nodeauth) package -```typescript -const msRestNodeAuth = require("@azure/ms-rest-nodeauth"); +```javascript +const { DefaultAzureCredential } = require("@azure/identity"); const { MicrosoftDatadogClient } = require("@azure/arm-datadog"); const subscriptionId = process.env["AZURE_SUBSCRIPTION_ID"]; -msRestNodeAuth.interactiveLogin().then((creds) => { - const client = new MicrosoftDatadogClient(creds, subscriptionId); - client.marketplaceAgreements.list().then((result) => { - console.log("The result is:"); - console.log(result); - }); +// Use `DefaultAzureCredential` or any other credential of your choice based on https://aka.ms/azsdk/js/identity/examples +// Please note that you can also use credentials from the `@azure/ms-rest-nodeauth` package instead. +const creds = new DefaultAzureCredential(); +const client = new MicrosoftDatadogClient(creds, subscriptionId); + +client.marketplaceAgreements.list().then((result) => { + console.log("The result is:"); + console.log(result); }).catch((err) => { + console.log("An error occurred:"); console.error(err); }); ``` -#### browser - Authentication, client creation and list marketplaceAgreements as an example written in JavaScript. - -##### Install @azure/ms-rest-browserauth +#### browser - Authentication, client creation, and list marketplaceAgreements as an example written in JavaScript. -```bash -npm install @azure/ms-rest-browserauth -``` +In browser applications, we recommend using the `InteractiveBrowserCredential` that interactively authenticates using the default system browser. + - See [Single-page application: App registration guide](https://docs.microsoft.com/azure/active-directory/develop/scenario-spa-app-registration) to configure your app registration for the browser. + - Note down the client Id from the previous step and use it in the browser sample below. ##### Sample code -See https://github.com/Azure/ms-rest-browserauth to learn how to authenticate to Azure in the browser. - - index.html + ```html @azure/arm-datadog sample - - + diff --git a/sdk/datadog/arm-datadog/package.json b/sdk/datadog/arm-datadog/package.json index b82c25bf66fd..b72d38cfd121 100644 --- a/sdk/datadog/arm-datadog/package.json +++ b/sdk/datadog/arm-datadog/package.json @@ -2,10 +2,11 @@ "name": "@azure/arm-datadog", "author": "Microsoft Corporation", "description": "MicrosoftDatadogClient Library with typescript type definitions for node.js and browser.", - "version": "2.0.0", + "version": "2.1.0", "dependencies": { - "@azure/ms-rest-azure-js": "^2.0.1", - "@azure/ms-rest-js": "^2.0.4", + "@azure/ms-rest-azure-js": "^2.1.0", + "@azure/ms-rest-js": "^2.2.0", + "@azure/core-auth": "^1.1.4", "tslib": "^1.10.0" }, "keywords": [ @@ -20,7 +21,7 @@ "module": "./esm/microsoftDatadogClient.js", "types": "./esm/microsoftDatadogClient.d.ts", "devDependencies": { - "typescript": "^3.5.3", + "typescript": "^3.6.0", "rollup": "^1.18.0", "rollup-plugin-node-resolve": "^5.2.0", "rollup-plugin-sourcemaps": "^0.4.2", diff --git a/sdk/datadog/arm-datadog/src/microsoftDatadogClient.ts b/sdk/datadog/arm-datadog/src/microsoftDatadogClient.ts index 5098f57e6721..2bf92969c7a8 100644 --- a/sdk/datadog/arm-datadog/src/microsoftDatadogClient.ts +++ b/sdk/datadog/arm-datadog/src/microsoftDatadogClient.ts @@ -8,6 +8,7 @@ */ import * as msRest from "@azure/ms-rest-js"; +import { TokenCredential } from "@azure/core-auth"; import * as Models from "./models"; import * as Mappers from "./models/mappers"; import * as operations from "./operations"; @@ -24,11 +25,16 @@ class MicrosoftDatadogClient extends MicrosoftDatadogClientContext { /** * Initializes a new instance of the MicrosoftDatadogClient class. - * @param credentials Credentials needed for the client to connect to Azure. + * @param credentials Credentials needed for the client to connect to Azure. Credentials + * implementing the TokenCredential interface from the @azure/identity package are recommended. For + * more information about these credentials, see + * {@link https://www.npmjs.com/package/@azure/identity}. Credentials implementing the + * ServiceClientCredentials interface from the older packages @azure/ms-rest-nodeauth and + * @azure/ms-rest-browserauth are also supported. * @param subscriptionId The ID of the target subscription. * @param [options] The parameter options */ - constructor(credentials: msRest.ServiceClientCredentials, subscriptionId: string, options?: Models.MicrosoftDatadogClientOptions) { + constructor(credentials: msRest.ServiceClientCredentials | TokenCredential, subscriptionId: string, options?: Models.MicrosoftDatadogClientOptions) { super(credentials, subscriptionId, options); this.marketplaceAgreements = new operations.MarketplaceAgreements(this); this.monitors = new operations.Monitors(this); diff --git a/sdk/datadog/arm-datadog/src/microsoftDatadogClientContext.ts b/sdk/datadog/arm-datadog/src/microsoftDatadogClientContext.ts index 6c3e2a613997..098cb8df85c7 100644 --- a/sdk/datadog/arm-datadog/src/microsoftDatadogClientContext.ts +++ b/sdk/datadog/arm-datadog/src/microsoftDatadogClientContext.ts @@ -9,24 +9,30 @@ import * as Models from "./models"; import * as msRest from "@azure/ms-rest-js"; +import { TokenCredential } from "@azure/core-auth"; import * as msRestAzure from "@azure/ms-rest-azure-js"; const packageName = "@azure/arm-datadog"; -const packageVersion = "2.0.0"; +const packageVersion = "2.1.0"; export class MicrosoftDatadogClientContext extends msRestAzure.AzureServiceClient { - credentials: msRest.ServiceClientCredentials; + credentials: msRest.ServiceClientCredentials | TokenCredential; apiVersion?: string; subscriptionId: string; /** * Initializes a new instance of the MicrosoftDatadogClient class. - * @param credentials Credentials needed for the client to connect to Azure. + * @param credentials Credentials needed for the client to connect to Azure. Credentials + * implementing the TokenCredential interface from the @azure/identity package are recommended. For + * more information about these credentials, see + * {@link https://www.npmjs.com/package/@azure/identity}. Credentials implementing the + * ServiceClientCredentials interface from the older packages @azure/ms-rest-nodeauth and + * @azure/ms-rest-browserauth are also supported. * @param subscriptionId The ID of the target subscription. * @param [options] The parameter options */ constructor( - credentials: msRest.ServiceClientCredentials, + credentials: msRest.ServiceClientCredentials | TokenCredential, subscriptionId: string, options?: Models.MicrosoftDatadogClientOptions ) { diff --git a/sdk/datalake-analytics/arm-datalake-analytics/README.md b/sdk/datalake-analytics/arm-datalake-analytics/README.md index 79c4361896d1..d6f15d764fac 100644 --- a/sdk/datalake-analytics/arm-datalake-analytics/README.md +++ b/sdk/datalake-analytics/arm-datalake-analytics/README.md @@ -1,101 +1,111 @@ ## Azure DataLakeAnalyticsAccountManagementClient SDK for JavaScript -This package contains an isomorphic SDK for DataLakeAnalyticsAccountManagementClient. +This package contains an isomorphic SDK (runs both in Node.js and in browsers) for DataLakeAnalyticsAccountManagementClient. ### Currently supported environments -- Node.js version 6.x.x or higher -- Browser JavaScript +- [LTS versions of Node.js](https://nodejs.org/about/releases/) +- Latest versions of Safari, Chrome, Edge, and Firefox. -### How to Install +### Prerequisites +You must have an [Azure subscription](https://azure.microsoft.com/free/). + +### How to install + +To use this SDK in your project, you will need to install two packages. +- `@azure/arm-datalake-analytics` that contains the client. +- `@azure/identity` that provides different mechanisms for the client to authenticate your requests using Azure Active Directory. + +Install both packages using the below command: ```bash -npm install @azure/arm-datalake-analytics +npm install --save @azure/arm-datalake-analytics @azure/identity ``` +> **Note**: You may have used either `@azure/ms-rest-nodeauth` or `@azure/ms-rest-browserauth` in the past. These packages are in maintenance mode receiving critical bug fixes, but no new features. +If you are on a [Node.js that has LTS status](https://nodejs.org/about/releases/), or are writing a client side browser application, we strongly encourage you to upgrade to `@azure/identity` which uses the latest versions of Azure Active Directory and MSAL APIs and provides more authentication options. + ### How to use -#### nodejs - client creation and list accounts as an example written in TypeScript. +- If you are writing a client side browser application, + - Follow the instructions in the section on Authenticating client side browser applications in [Azure Identity examples](https://aka.ms/azsdk/js/identity/examples) to register your application in the Microsoft identity platform and set the right permissions. + - Copy the client ID and tenant ID from the Overview section of your app registration in Azure portal and use it in the browser sample below. +- If you are writing a server side application, + - [Select a credential from `@azure/identity` based on the authentication method of your choice](https://aka.ms/azsdk/js/identity/examples) + - Complete the set up steps required by the credential if any. + - Use the credential you picked in the place of `DefaultAzureCredential` in the Node.js sample below. -##### Install @azure/ms-rest-nodeauth +In the below samples, we pass the credential and the Azure subscription id to instantiate the client. +Once the client is created, explore the operations on it either in your favorite editor or in our [API reference documentation](https://docs.microsoft.com/javascript/api) to get started. -- Please install minimum version of `"@azure/ms-rest-nodeauth": "^3.0.0"`. -```bash -npm install @azure/ms-rest-nodeauth@"^3.0.0" -``` +#### nodejs - Authentication, client creation, and list accounts as an example written in JavaScript. ##### Sample code -While the below sample uses the interactive login, other authentication options can be found in the [README.md file of @azure/ms-rest-nodeauth](https://www.npmjs.com/package/@azure/ms-rest-nodeauth) package -```typescript -const msRestNodeAuth = require("@azure/ms-rest-nodeauth"); +```javascript +const { DefaultAzureCredential } = require("@azure/identity"); const { DataLakeAnalyticsAccountManagementClient } = require("@azure/arm-datalake-analytics"); const subscriptionId = process.env["AZURE_SUBSCRIPTION_ID"]; -msRestNodeAuth.interactiveLogin().then((creds) => { - const client = new DataLakeAnalyticsAccountManagementClient(creds, subscriptionId); - const filter = "testfilter"; - const top = 1; - const skip = 1; - const select = "testselect"; - const orderby = "testorderby"; - const count = true; - client.accounts.list(filter, top, skip, select, orderby, count).then((result) => { - console.log("The result is:"); - console.log(result); - }); +// Use `DefaultAzureCredential` or any other credential of your choice based on https://aka.ms/azsdk/js/identity/examples +// Please note that you can also use credentials from the `@azure/ms-rest-nodeauth` package instead. +const creds = new DefaultAzureCredential(); +const client = new DataLakeAnalyticsAccountManagementClient(creds, subscriptionId); +const filter = "testfilter"; +const top = 1; +const skip = 1; +const select = "testselect"; +const orderby = "testorderby"; +const count = true; +client.accounts.list(filter, top, skip, select, orderby, count).then((result) => { + console.log("The result is:"); + console.log(result); }).catch((err) => { + console.log("An error occurred:"); console.error(err); }); ``` -#### browser - Authentication, client creation and list accounts as an example written in JavaScript. +#### browser - Authentication, client creation, and list accounts as an example written in JavaScript. -##### Install @azure/ms-rest-browserauth - -```bash -npm install @azure/ms-rest-browserauth -``` +In browser applications, we recommend using the `InteractiveBrowserCredential` that interactively authenticates using the default system browser. + - See [Single-page application: App registration guide](https://docs.microsoft.com/azure/active-directory/develop/scenario-spa-app-registration) to configure your app registration for the browser. + - Note down the client Id from the previous step and use it in the browser sample below. ##### Sample code -See https://github.com/Azure/ms-rest-browserauth to learn how to authenticate to Azure in the browser. - - index.html + ```html @azure/arm-datalake-analytics sample - - + diff --git a/sdk/datalake-analytics/arm-datalake-analytics/package.json b/sdk/datalake-analytics/arm-datalake-analytics/package.json index bc834bc3ef9e..2b5c2dc3b789 100644 --- a/sdk/datalake-analytics/arm-datalake-analytics/package.json +++ b/sdk/datalake-analytics/arm-datalake-analytics/package.json @@ -2,10 +2,11 @@ "name": "@azure/arm-datalake-analytics", "author": "Microsoft Corporation", "description": "DataLakeAnalyticsAccountManagementClient Library with typescript type definitions for node.js and browser.", - "version": "1.0.0", + "version": "1.1.0", "dependencies": { - "@azure/ms-rest-azure-js": "^2.0.1", - "@azure/ms-rest-js": "^2.0.4", + "@azure/ms-rest-azure-js": "^2.1.0", + "@azure/ms-rest-js": "^2.2.0", + "@azure/core-auth": "^1.1.4", "tslib": "^1.10.0" }, "keywords": [ @@ -20,7 +21,7 @@ "module": "./esm/dataLakeAnalyticsAccountManagementClient.js", "types": "./esm/dataLakeAnalyticsAccountManagementClient.d.ts", "devDependencies": { - "typescript": "^3.5.3", + "typescript": "^3.6.0", "rollup": "^1.18.0", "rollup-plugin-node-resolve": "^5.2.0", "rollup-plugin-sourcemaps": "^0.4.2", diff --git a/sdk/datalake-analytics/arm-datalake-analytics/src/dataLakeAnalyticsAccountManagementClient.ts b/sdk/datalake-analytics/arm-datalake-analytics/src/dataLakeAnalyticsAccountManagementClient.ts index a91597e62ced..9f5e7ff53f1e 100644 --- a/sdk/datalake-analytics/arm-datalake-analytics/src/dataLakeAnalyticsAccountManagementClient.ts +++ b/sdk/datalake-analytics/arm-datalake-analytics/src/dataLakeAnalyticsAccountManagementClient.ts @@ -8,6 +8,7 @@ */ import * as msRest from "@azure/ms-rest-js"; +import { TokenCredential } from "@azure/core-auth"; import * as Models from "./models"; import * as Mappers from "./models/mappers"; import * as operations from "./operations"; @@ -26,12 +27,17 @@ class DataLakeAnalyticsAccountManagementClient extends DataLakeAnalyticsAccountM /** * Initializes a new instance of the DataLakeAnalyticsAccountManagementClient class. - * @param credentials Credentials needed for the client to connect to Azure. + * @param credentials Credentials needed for the client to connect to Azure. Credentials + * implementing the TokenCredential interface from the @azure/identity package are recommended. For + * more information about these credentials, see + * {@link https://www.npmjs.com/package/@azure/identity}. Credentials implementing the + * ServiceClientCredentials interface from the older packages @azure/ms-rest-nodeauth and + * @azure/ms-rest-browserauth are also supported. * @param subscriptionId Get subscription credentials which uniquely identify Microsoft Azure * subscription. The subscription ID forms part of the URI for every service call. * @param [options] The parameter options */ - constructor(credentials: msRest.ServiceClientCredentials, subscriptionId: string, options?: Models.DataLakeAnalyticsAccountManagementClientOptions) { + constructor(credentials: msRest.ServiceClientCredentials | TokenCredential, subscriptionId: string, options?: Models.DataLakeAnalyticsAccountManagementClientOptions) { super(credentials, subscriptionId, options); this.accounts = new operations.Accounts(this); this.dataLakeStoreAccounts = new operations.DataLakeStoreAccounts(this); diff --git a/sdk/datalake-analytics/arm-datalake-analytics/src/dataLakeAnalyticsAccountManagementClientContext.ts b/sdk/datalake-analytics/arm-datalake-analytics/src/dataLakeAnalyticsAccountManagementClientContext.ts index 4e527da3fa69..748544f2f1e7 100644 --- a/sdk/datalake-analytics/arm-datalake-analytics/src/dataLakeAnalyticsAccountManagementClientContext.ts +++ b/sdk/datalake-analytics/arm-datalake-analytics/src/dataLakeAnalyticsAccountManagementClientContext.ts @@ -9,24 +9,30 @@ import * as Models from "./models"; import * as msRest from "@azure/ms-rest-js"; +import { TokenCredential } from "@azure/core-auth"; import * as msRestAzure from "@azure/ms-rest-azure-js"; const packageName = "@azure/arm-datalake-analytics"; -const packageVersion = "1.0.0"; +const packageVersion = "1.1.0"; export class DataLakeAnalyticsAccountManagementClientContext extends msRestAzure.AzureServiceClient { - credentials: msRest.ServiceClientCredentials; + credentials: msRest.ServiceClientCredentials | TokenCredential; subscriptionId: string; apiVersion?: string; /** * Initializes a new instance of the DataLakeAnalyticsAccountManagementClient class. - * @param credentials Credentials needed for the client to connect to Azure. + * @param credentials Credentials needed for the client to connect to Azure. Credentials + * implementing the TokenCredential interface from the @azure/identity package are recommended. For + * more information about these credentials, see + * {@link https://www.npmjs.com/package/@azure/identity}. Credentials implementing the + * ServiceClientCredentials interface from the older packages @azure/ms-rest-nodeauth and + * @azure/ms-rest-browserauth are also supported. * @param subscriptionId Get subscription credentials which uniquely identify Microsoft Azure * subscription. The subscription ID forms part of the URI for every service call. * @param [options] The parameter options */ - constructor(credentials: msRest.ServiceClientCredentials, subscriptionId: string, options?: Models.DataLakeAnalyticsAccountManagementClientOptions) { + constructor(credentials: msRest.ServiceClientCredentials | TokenCredential, subscriptionId: string, options?: Models.DataLakeAnalyticsAccountManagementClientOptions) { if (credentials == undefined) { throw new Error('\'credentials\' cannot be null.'); } diff --git a/sdk/datamigration/arm-datamigration/README.md b/sdk/datamigration/arm-datamigration/README.md index d6b3a84c59a5..6868b32fb3ef 100644 --- a/sdk/datamigration/arm-datamigration/README.md +++ b/sdk/datamigration/arm-datamigration/README.md @@ -1,90 +1,100 @@ ## Azure DataMigrationServiceClient SDK for JavaScript -This package contains an isomorphic SDK for DataMigrationServiceClient. +This package contains an isomorphic SDK (runs both in Node.js and in browsers) for DataMigrationServiceClient. ### Currently supported environments -- Node.js version 6.x.x or higher -- Browser JavaScript +- [LTS versions of Node.js](https://nodejs.org/about/releases/) +- Latest versions of Safari, Chrome, Edge, and Firefox. -### How to Install +### Prerequisites +You must have an [Azure subscription](https://azure.microsoft.com/free/). + +### How to install + +To use this SDK in your project, you will need to install two packages. +- `@azure/arm-datamigration` that contains the client. +- `@azure/identity` that provides different mechanisms for the client to authenticate your requests using Azure Active Directory. + +Install both packages using the below command: ```bash -npm install @azure/arm-datamigration +npm install --save @azure/arm-datamigration @azure/identity ``` +> **Note**: You may have used either `@azure/ms-rest-nodeauth` or `@azure/ms-rest-browserauth` in the past. These packages are in maintenance mode receiving critical bug fixes, but no new features. +If you are on a [Node.js that has LTS status](https://nodejs.org/about/releases/), or are writing a client side browser application, we strongly encourage you to upgrade to `@azure/identity` which uses the latest versions of Azure Active Directory and MSAL APIs and provides more authentication options. + ### How to use -#### nodejs - Authentication, client creation and listSkus resourceSkus as an example written in TypeScript. +- If you are writing a client side browser application, + - Follow the instructions in the section on Authenticating client side browser applications in [Azure Identity examples](https://aka.ms/azsdk/js/identity/examples) to register your application in the Microsoft identity platform and set the right permissions. + - Copy the client ID and tenant ID from the Overview section of your app registration in Azure portal and use it in the browser sample below. +- If you are writing a server side application, + - [Select a credential from `@azure/identity` based on the authentication method of your choice](https://aka.ms/azsdk/js/identity/examples) + - Complete the set up steps required by the credential if any. + - Use the credential you picked in the place of `DefaultAzureCredential` in the Node.js sample below. -##### Install @azure/ms-rest-nodeauth +In the below samples, we pass the credential and the Azure subscription id to instantiate the client. +Once the client is created, explore the operations on it either in your favorite editor or in our [API reference documentation](https://docs.microsoft.com/javascript/api) to get started. -- Please install minimum version of `"@azure/ms-rest-nodeauth": "^3.0.0"`. -```bash -npm install @azure/ms-rest-nodeauth@"^3.0.0" -``` +#### nodejs - Authentication, client creation, and listSkus resourceSkus as an example written in JavaScript. ##### Sample code -```typescript -import * as msRest from "@azure/ms-rest-js"; -import * as msRestAzure from "@azure/ms-rest-azure-js"; -import * as msRestNodeAuth from "@azure/ms-rest-nodeauth"; -import { DataMigrationServiceClient, DataMigrationServiceModels, DataMigrationServiceMappers } from "@azure/arm-datamigration"; +```javascript +const { DefaultAzureCredential } = require("@azure/identity"); +const { DataMigrationServiceClient } = require("@azure/arm-datamigration"); const subscriptionId = process.env["AZURE_SUBSCRIPTION_ID"]; -msRestNodeAuth.interactiveLogin().then((creds) => { - const client = new DataMigrationServiceClient(creds, subscriptionId); - client.resourceSkus.listSkus().then((result) => { - console.log("The result is:"); - console.log(result); - }); +// Use `DefaultAzureCredential` or any other credential of your choice based on https://aka.ms/azsdk/js/identity/examples +// Please note that you can also use credentials from the `@azure/ms-rest-nodeauth` package instead. +const creds = new DefaultAzureCredential(); +const client = new DataMigrationServiceClient(creds, subscriptionId); + +client.resourceSkus.listSkus().then((result) => { + console.log("The result is:"); + console.log(result); }).catch((err) => { + console.log("An error occurred:"); console.error(err); }); ``` -#### browser - Authentication, client creation and listSkus resourceSkus as an example written in JavaScript. - -##### Install @azure/ms-rest-browserauth +#### browser - Authentication, client creation, and listSkus resourceSkus as an example written in JavaScript. -```bash -npm install @azure/ms-rest-browserauth -``` +In browser applications, we recommend using the `InteractiveBrowserCredential` that interactively authenticates using the default system browser. + - See [Single-page application: App registration guide](https://docs.microsoft.com/azure/active-directory/develop/scenario-spa-app-registration) to configure your app registration for the browser. + - Note down the client Id from the previous step and use it in the browser sample below. ##### Sample code -See https://github.com/Azure/ms-rest-browserauth to learn how to authenticate to Azure in the browser. - - index.html + ```html @azure/arm-datamigration sample - - + @@ -96,4 +106,4 @@ See https://github.com/Azure/ms-rest-browserauth to learn how to authenticate to - [Microsoft Azure SDK for Javascript](https://github.com/Azure/azure-sdk-for-js) -![Impressions](https://azure-sdk-impressions.azurewebsites.net/api/impressions/azure-sdk-for-js%2Fsdk%2Fdatamigration%2Farm-datamigration%2FREADME.png) +![Impressions](https://azure-sdk-impressions.azurewebsites.net/api/impressions/azure-sdk-for-js/sdk/datamigration/arm-datamigration/README.png) diff --git a/sdk/datamigration/arm-datamigration/package.json b/sdk/datamigration/arm-datamigration/package.json index f3836232e42b..a43508d985e7 100644 --- a/sdk/datamigration/arm-datamigration/package.json +++ b/sdk/datamigration/arm-datamigration/package.json @@ -2,10 +2,11 @@ "name": "@azure/arm-datamigration", "author": "Microsoft Corporation", "description": "DataMigrationServiceClient Library with typescript type definitions for node.js and browser.", - "version": "2.0.0", + "version": "2.1.0", "dependencies": { - "@azure/ms-rest-azure-js": "^2.0.1", - "@azure/ms-rest-js": "^2.0.4", + "@azure/ms-rest-azure-js": "^2.1.0", + "@azure/ms-rest-js": "^2.2.0", + "@azure/core-auth": "^1.1.4", "tslib": "^1.10.0" }, "keywords": [ @@ -20,7 +21,7 @@ "module": "./esm/dataMigrationServiceClient.js", "types": "./esm/dataMigrationServiceClient.d.ts", "devDependencies": { - "typescript": "^3.5.3", + "typescript": "^3.6.0", "rollup": "^1.18.0", "rollup-plugin-node-resolve": "^5.2.0", "rollup-plugin-sourcemaps": "^0.4.2", diff --git a/sdk/datamigration/arm-datamigration/src/dataMigrationServiceClient.ts b/sdk/datamigration/arm-datamigration/src/dataMigrationServiceClient.ts index 62d5230fee13..25396551b380 100644 --- a/sdk/datamigration/arm-datamigration/src/dataMigrationServiceClient.ts +++ b/sdk/datamigration/arm-datamigration/src/dataMigrationServiceClient.ts @@ -9,6 +9,7 @@ */ import * as msRest from "@azure/ms-rest-js"; +import { TokenCredential } from "@azure/core-auth"; import * as Models from "./models"; import * as Mappers from "./models/mappers"; import * as operations from "./operations"; @@ -28,11 +29,16 @@ class DataMigrationServiceClient extends DataMigrationServiceClientContext { /** * Initializes a new instance of the DataMigrationServiceClient class. - * @param credentials Credentials needed for the client to connect to Azure. + * @param credentials Credentials needed for the client to connect to Azure. Credentials + * implementing the TokenCredential interface from the @azure/identity package are recommended. For + * more information about these credentials, see + * {@link https://www.npmjs.com/package/@azure/identity}. Credentials implementing the + * ServiceClientCredentials interface from the older packages @azure/ms-rest-nodeauth and + * @azure/ms-rest-browserauth are also supported. * @param subscriptionId Identifier of the subscription * @param [options] The parameter options */ - constructor(credentials: msRest.ServiceClientCredentials, subscriptionId: string, options?: Models.DataMigrationServiceClientOptions) { + constructor(credentials: msRest.ServiceClientCredentials | TokenCredential, subscriptionId: string, options?: Models.DataMigrationServiceClientOptions) { super(credentials, subscriptionId, options); this.resourceSkus = new operations.ResourceSkus(this); this.services = new operations.Services(this); diff --git a/sdk/datamigration/arm-datamigration/src/dataMigrationServiceClientContext.ts b/sdk/datamigration/arm-datamigration/src/dataMigrationServiceClientContext.ts index 6a0937753ff2..69901d9c9581 100644 --- a/sdk/datamigration/arm-datamigration/src/dataMigrationServiceClientContext.ts +++ b/sdk/datamigration/arm-datamigration/src/dataMigrationServiceClientContext.ts @@ -10,23 +10,29 @@ import * as Models from "./models"; import * as msRest from "@azure/ms-rest-js"; +import { TokenCredential } from "@azure/core-auth"; import * as msRestAzure from "@azure/ms-rest-azure-js"; const packageName = "@azure/arm-datamigration"; -const packageVersion = "1.0.1"; +const packageVersion = "2.1.0"; export class DataMigrationServiceClientContext extends msRestAzure.AzureServiceClient { - credentials: msRest.ServiceClientCredentials; + credentials: msRest.ServiceClientCredentials | TokenCredential; apiVersion?: string; subscriptionId: string; /** * Initializes a new instance of the DataMigrationServiceClient class. - * @param credentials Credentials needed for the client to connect to Azure. + * @param credentials Credentials needed for the client to connect to Azure. Credentials + * implementing the TokenCredential interface from the @azure/identity package are recommended. For + * more information about these credentials, see + * {@link https://www.npmjs.com/package/@azure/identity}. Credentials implementing the + * ServiceClientCredentials interface from the older packages @azure/ms-rest-nodeauth and + * @azure/ms-rest-browserauth are also supported. * @param subscriptionId Identifier of the subscription * @param [options] The parameter options */ - constructor(credentials: msRest.ServiceClientCredentials, subscriptionId: string, options?: Models.DataMigrationServiceClientOptions) { + constructor(credentials: msRest.ServiceClientCredentials | TokenCredential, subscriptionId: string, options?: Models.DataMigrationServiceClientOptions) { if (credentials == undefined) { throw new Error('\'credentials\' cannot be null.'); } diff --git a/sdk/deploymentmanager/arm-deploymentmanager/README.md b/sdk/deploymentmanager/arm-deploymentmanager/README.md index a3a985772bf3..1e3949dc85e0 100644 --- a/sdk/deploymentmanager/arm-deploymentmanager/README.md +++ b/sdk/deploymentmanager/arm-deploymentmanager/README.md @@ -1,94 +1,103 @@ ## Azure AzureDeploymentManager SDK for JavaScript -This package contains an isomorphic SDK for AzureDeploymentManager. +This package contains an isomorphic SDK (runs both in Node.js and in browsers) for AzureDeploymentManager. ### Currently supported environments -- Node.js version 6.x.x or higher -- Browser JavaScript +- [LTS versions of Node.js](https://nodejs.org/about/releases/) +- Latest versions of Safari, Chrome, Edge, and Firefox. -### How to Install +### Prerequisites +You must have an [Azure subscription](https://azure.microsoft.com/free/). + +### How to install + +To use this SDK in your project, you will need to install two packages. +- `@azure/arm-deploymentmanager` that contains the client. +- `@azure/identity` that provides different mechanisms for the client to authenticate your requests using Azure Active Directory. + +Install both packages using the below command: ```bash -npm install @azure/arm-deploymentmanager +npm install --save @azure/arm-deploymentmanager @azure/identity ``` +> **Note**: You may have used either `@azure/ms-rest-nodeauth` or `@azure/ms-rest-browserauth` in the past. These packages are in maintenance mode receiving critical bug fixes, but no new features. +If you are on a [Node.js that has LTS status](https://nodejs.org/about/releases/), or are writing a client side browser application, we strongly encourage you to upgrade to `@azure/identity` which uses the latest versions of Azure Active Directory and MSAL APIs and provides more authentication options. + ### How to use -#### nodejs - Authentication, client creation and get serviceTopologies as an example written in TypeScript. +- If you are writing a client side browser application, + - Follow the instructions in the section on Authenticating client side browser applications in [Azure Identity examples](https://aka.ms/azsdk/js/identity/examples) to register your application in the Microsoft identity platform and set the right permissions. + - Copy the client ID and tenant ID from the Overview section of your app registration in Azure portal and use it in the browser sample below. +- If you are writing a server side application, + - [Select a credential from `@azure/identity` based on the authentication method of your choice](https://aka.ms/azsdk/js/identity/examples) + - Complete the set up steps required by the credential if any. + - Use the credential you picked in the place of `DefaultAzureCredential` in the Node.js sample below. -##### Install @azure/ms-rest-nodeauth +In the below samples, we pass the credential and the Azure subscription id to instantiate the client. +Once the client is created, explore the operations on it either in your favorite editor or in our [API reference documentation](https://docs.microsoft.com/javascript/api) to get started. -- Please install minimum version of `"@azure/ms-rest-nodeauth": "^3.0.0"`. -```bash -npm install @azure/ms-rest-nodeauth@"^3.0.0" -``` +#### nodejs - Authentication, client creation, and get serviceTopologies as an example written in JavaScript. ##### Sample code -```typescript -import * as msRest from "@azure/ms-rest-js"; -import * as msRestAzure from "@azure/ms-rest-azure-js"; -import * as msRestNodeAuth from "@azure/ms-rest-nodeauth"; -import { AzureDeploymentManager, AzureDeploymentManagerModels, AzureDeploymentManagerMappers } from "@azure/arm-deploymentmanager"; +```javascript +const { DefaultAzureCredential } = require("@azure/identity"); +const { AzureDeploymentManager } = require("@azure/arm-deploymentmanager"); const subscriptionId = process.env["AZURE_SUBSCRIPTION_ID"]; -msRestNodeAuth.interactiveLogin().then((creds) => { - const client = new AzureDeploymentManager(creds, subscriptionId); - const resourceGroupName = "testresourceGroupName"; - const serviceTopologyName = "testserviceTopologyName"; - client.serviceTopologies.get(resourceGroupName, serviceTopologyName).then((result) => { - console.log("The result is:"); - console.log(result); - }); +// Use `DefaultAzureCredential` or any other credential of your choice based on https://aka.ms/azsdk/js/identity/examples +// Please note that you can also use credentials from the `@azure/ms-rest-nodeauth` package instead. +const creds = new DefaultAzureCredential(); +const client = new AzureDeploymentManager(creds, subscriptionId); +const resourceGroupName = "testresourceGroupName"; +const serviceTopologyName = "testserviceTopologyName"; +client.serviceTopologies.get(resourceGroupName, serviceTopologyName).then((result) => { + console.log("The result is:"); + console.log(result); }).catch((err) => { + console.log("An error occurred:"); console.error(err); }); ``` -#### browser - Authentication, client creation and get serviceTopologies as an example written in JavaScript. +#### browser - Authentication, client creation, and get serviceTopologies as an example written in JavaScript. -##### Install @azure/ms-rest-browserauth - -```bash -npm install @azure/ms-rest-browserauth -``` +In browser applications, we recommend using the `InteractiveBrowserCredential` that interactively authenticates using the default system browser. + - See [Single-page application: App registration guide](https://docs.microsoft.com/azure/active-directory/develop/scenario-spa-app-registration) to configure your app registration for the browser. + - Note down the client Id from the previous step and use it in the browser sample below. ##### Sample code -See https://github.com/Azure/ms-rest-browserauth to learn how to authenticate to Azure in the browser. - - index.html + ```html @azure/arm-deploymentmanager sample - - + diff --git a/sdk/deploymentmanager/arm-deploymentmanager/package.json b/sdk/deploymentmanager/arm-deploymentmanager/package.json index 9f1b9483e37f..90ff4f703456 100644 --- a/sdk/deploymentmanager/arm-deploymentmanager/package.json +++ b/sdk/deploymentmanager/arm-deploymentmanager/package.json @@ -2,10 +2,11 @@ "name": "@azure/arm-deploymentmanager", "author": "Microsoft Corporation", "description": "AzureDeploymentManager Library with typescript type definitions for node.js and browser.", - "version": "3.0.0", + "version": "3.1.0", "dependencies": { - "@azure/ms-rest-azure-js": "^2.0.1", - "@azure/ms-rest-js": "^2.0.4", + "@azure/ms-rest-azure-js": "^2.1.0", + "@azure/ms-rest-js": "^2.2.0", + "@azure/core-auth": "^1.1.4", "tslib": "^1.10.0" }, "keywords": [ @@ -20,7 +21,7 @@ "module": "./esm/azureDeploymentManager.js", "types": "./esm/azureDeploymentManager.d.ts", "devDependencies": { - "typescript": "^3.5.3", + "typescript": "^3.6.0", "rollup": "^1.18.0", "rollup-plugin-node-resolve": "^5.2.0", "rollup-plugin-sourcemaps": "^0.4.2", diff --git a/sdk/deploymentmanager/arm-deploymentmanager/src/azureDeploymentManager.ts b/sdk/deploymentmanager/arm-deploymentmanager/src/azureDeploymentManager.ts index f948ddd290cd..d45c245be8ee 100644 --- a/sdk/deploymentmanager/arm-deploymentmanager/src/azureDeploymentManager.ts +++ b/sdk/deploymentmanager/arm-deploymentmanager/src/azureDeploymentManager.ts @@ -9,6 +9,7 @@ */ import * as msRest from "@azure/ms-rest-js"; +import { TokenCredential } from "@azure/core-auth"; import * as Models from "./models"; import * as Mappers from "./models/mappers"; import * as operations from "./operations"; @@ -27,12 +28,17 @@ class AzureDeploymentManager extends AzureDeploymentManagerContext { /** * Initializes a new instance of the AzureDeploymentManager class. - * @param credentials Credentials needed for the client to connect to Azure. + * @param credentials Credentials needed for the client to connect to Azure. Credentials + * implementing the TokenCredential interface from the @azure/identity package are recommended. For + * more information about these credentials, see + * {@link https://www.npmjs.com/package/@azure/identity}. Credentials implementing the + * ServiceClientCredentials interface from the older packages @azure/ms-rest-nodeauth and + * @azure/ms-rest-browserauth are also supported. * @param subscriptionId Subscription credentials which uniquely identify Microsoft Azure * subscription. The subscription ID forms part of the URI for every service call. * @param [options] The parameter options */ - constructor(credentials: msRest.ServiceClientCredentials, subscriptionId: string, options?: Models.AzureDeploymentManagerOptions) { + constructor(credentials: msRest.ServiceClientCredentials | TokenCredential, subscriptionId: string, options?: Models.AzureDeploymentManagerOptions) { super(credentials, subscriptionId, options); this.serviceTopologies = new operations.ServiceTopologies(this); this.services = new operations.Services(this); diff --git a/sdk/deploymentmanager/arm-deploymentmanager/src/azureDeploymentManagerContext.ts b/sdk/deploymentmanager/arm-deploymentmanager/src/azureDeploymentManagerContext.ts index 397f56cb3595..fb0ea8f030d6 100644 --- a/sdk/deploymentmanager/arm-deploymentmanager/src/azureDeploymentManagerContext.ts +++ b/sdk/deploymentmanager/arm-deploymentmanager/src/azureDeploymentManagerContext.ts @@ -10,24 +10,30 @@ import * as Models from "./models"; import * as msRest from "@azure/ms-rest-js"; +import { TokenCredential } from "@azure/core-auth"; import * as msRestAzure from "@azure/ms-rest-azure-js"; const packageName = "@azure/arm-deploymentmanager"; -const packageVersion = "3.0.0"; +const packageVersion = "3.1.0"; export class AzureDeploymentManagerContext extends msRestAzure.AzureServiceClient { - credentials: msRest.ServiceClientCredentials; + credentials: msRest.ServiceClientCredentials | TokenCredential; subscriptionId: string; apiVersion?: string; /** * Initializes a new instance of the AzureDeploymentManager class. - * @param credentials Credentials needed for the client to connect to Azure. + * @param credentials Credentials needed for the client to connect to Azure. Credentials + * implementing the TokenCredential interface from the @azure/identity package are recommended. For + * more information about these credentials, see + * {@link https://www.npmjs.com/package/@azure/identity}. Credentials implementing the + * ServiceClientCredentials interface from the older packages @azure/ms-rest-nodeauth and + * @azure/ms-rest-browserauth are also supported. * @param subscriptionId Subscription credentials which uniquely identify Microsoft Azure * subscription. The subscription ID forms part of the URI for every service call. * @param [options] The parameter options */ - constructor(credentials: msRest.ServiceClientCredentials, subscriptionId: string, options?: Models.AzureDeploymentManagerOptions) { + constructor(credentials: msRest.ServiceClientCredentials | TokenCredential, subscriptionId: string, options?: Models.AzureDeploymentManagerOptions) { if (credentials == undefined) { throw new Error('\'credentials\' cannot be null.'); } diff --git a/sdk/deviceprovisioningservices/arm-deviceprovisioningservices/README.md b/sdk/deviceprovisioningservices/arm-deviceprovisioningservices/README.md index a3ee467ae318..4338b81b9f77 100644 --- a/sdk/deviceprovisioningservices/arm-deviceprovisioningservices/README.md +++ b/sdk/deviceprovisioningservices/arm-deviceprovisioningservices/README.md @@ -1,89 +1,100 @@ ## Azure IotDpsClient SDK for JavaScript -This package contains an isomorphic SDK for IotDpsClient. +This package contains an isomorphic SDK (runs both in Node.js and in browsers) for IotDpsClient. ### Currently supported environments -- Node.js version 6.x.x or higher -- Browser JavaScript +- [LTS versions of Node.js](https://nodejs.org/about/releases/) +- Latest versions of Safari, Chrome, Edge, and Firefox. -### How to Install +### Prerequisites -``` -npm install @azure/arm-deviceprovisioningservices +You must have an [Azure subscription](https://azure.microsoft.com/free/). + +### How to install + +To use this SDK in your project, you will need to install two packages. +- `@azure/arm-deviceprovisioningservices` that contains the client. +- `@azure/identity` that provides different mechanisms for the client to authenticate your requests using Azure Active Directory. + +Install both packages using the below command: +```bash +npm install --save @azure/arm-deviceprovisioningservices @azure/identity ``` +> **Note**: You may have used either `@azure/ms-rest-nodeauth` or `@azure/ms-rest-browserauth` in the past. These packages are in maintenance mode receiving critical bug fixes, but no new features. +If you are on a [Node.js that has LTS status](https://nodejs.org/about/releases/), or are writing a client side browser application, we strongly encourage you to upgrade to `@azure/identity` which uses the latest versions of Azure Active Directory and MSAL APIs and provides more authentication options. + ### How to use -#### nodejs - Authentication, client creation and list operations as an example written in TypeScript. +- If you are writing a client side browser application, + - Follow the instructions in the section on Authenticating client side browser applications in [Azure Identity examples](https://aka.ms/azsdk/js/identity/examples) to register your application in the Microsoft identity platform and set the right permissions. + - Copy the client ID and tenant ID from the Overview section of your app registration in Azure portal and use it in the browser sample below. +- If you are writing a server side application, + - [Select a credential from `@azure/identity` based on the authentication method of your choice](https://aka.ms/azsdk/js/identity/examples) + - Complete the set up steps required by the credential if any. + - Use the credential you picked in the place of `DefaultAzureCredential` in the Node.js sample below. -##### Install @azure/ms-rest-nodeauth +In the below samples, we pass the credential and the Azure subscription id to instantiate the client. +Once the client is created, explore the operations on it either in your favorite editor or in our [API reference documentation](https://docs.microsoft.com/javascript/api) to get started. -``` -npm install @azure/ms-rest-nodeauth -``` +#### nodejs - Authentication, client creation, and list operations as an example written in JavaScript. ##### Sample code -```ts -import * as msRest from "@azure/ms-rest-js"; -import * as msRestAzure from "@azure/ms-rest-azure-js"; -import * as msRestNodeAuth from "@azure/ms-rest-nodeauth"; -import { IotDpsClient, IotDpsModels, IotDpsMappers } from "@azure/arm-deviceprovisioningservices"; +```javascript +const { DefaultAzureCredential } = require("@azure/identity"); +const { IotDpsClient } = require("@azure/arm-deviceprovisioningservices"); const subscriptionId = process.env["AZURE_SUBSCRIPTION_ID"]; -msRestNodeAuth.interactiveLogin().then((creds) => { - const client = new IotDpsClient(creds, subscriptionId); - client.operations.list().then((result) => { - console.log("The result is:"); - console.log(result); - }); +// Use `DefaultAzureCredential` or any other credential of your choice based on https://aka.ms/azsdk/js/identity/examples +// Please note that you can also use credentials from the `@azure/ms-rest-nodeauth` package instead. +const creds = new DefaultAzureCredential(); +const client = new IotDpsClient(creds, subscriptionId); + +client.operations.list().then((result) => { + console.log("The result is:"); + console.log(result); }).catch((err) => { + console.log("An error occurred:"); console.error(err); }); ``` -#### browser - Authentication, client creation and list operations as an example written in JavaScript. - -##### Install @azure/ms-rest-browserauth +#### browser - Authentication, client creation, and list operations as an example written in JavaScript. -``` -npm install @azure/ms-rest-browserauth -``` +In browser applications, we recommend using the `InteractiveBrowserCredential` that interactively authenticates using the default system browser. + - See [Single-page application: App registration guide](https://docs.microsoft.com/azure/active-directory/develop/scenario-spa-app-registration) to configure your app registration for the browser. + - Note down the client Id from the previous step and use it in the browser sample below. ##### Sample code -See https://github.com/Azure/ms-rest-browserauth to learn how to authenticate to Azure in the browser. - - index.html + ```html @azure/arm-deviceprovisioningservices sample - - + @@ -95,5 +106,4 @@ See https://github.com/Azure/ms-rest-browserauth to learn how to authenticate to - [Microsoft Azure SDK for Javascript](https://github.com/Azure/azure-sdk-for-js) - -![Impressions](https://azure-sdk-impressions.azurewebsites.net/api/impressions/azure-sdk-for-js%2Fsdk%2Fdeviceprovisioningservices%2Farm-deviceprovisioningservices%2FREADME.png) +![Impressions](https://azure-sdk-impressions.azurewebsites.net/api/impressions/azure-sdk-for-js/sdk/deviceprovisioningservices/arm-deviceprovisioningservices/README.png) diff --git a/sdk/deviceprovisioningservices/arm-deviceprovisioningservices/package.json b/sdk/deviceprovisioningservices/arm-deviceprovisioningservices/package.json index a1f070d5456d..bbca9abf56cb 100644 --- a/sdk/deviceprovisioningservices/arm-deviceprovisioningservices/package.json +++ b/sdk/deviceprovisioningservices/arm-deviceprovisioningservices/package.json @@ -2,10 +2,11 @@ "name": "@azure/arm-deviceprovisioningservices", "author": "Microsoft Corporation", "description": "IotDpsClient Library with typescript type definitions for node.js and browser.", - "version": "2.1.0", + "version": "2.2.0", "dependencies": { - "@azure/ms-rest-azure-js": "^1.1.0", - "@azure/ms-rest-js": "^1.1.0", + "@azure/ms-rest-azure-js": "^1.4.0", + "@azure/ms-rest-js": "^1.11.0", + "@azure/core-auth": "^1.1.4", "tslib": "^1.9.3" }, "keywords": [ @@ -20,7 +21,7 @@ "module": "./esm/iotDpsClient.js", "types": "./esm/iotDpsClient.d.ts", "devDependencies": { - "typescript": "^3.1.1", + "typescript": "^3.6.0", "rollup": "^0.66.2", "rollup-plugin-node-resolve": "^3.4.0", "uglify-js": "^3.4.9" diff --git a/sdk/deviceprovisioningservices/arm-deviceprovisioningservices/src/iotDpsClient.ts b/sdk/deviceprovisioningservices/arm-deviceprovisioningservices/src/iotDpsClient.ts index b5b09d14c58d..12a7443f5b95 100644 --- a/sdk/deviceprovisioningservices/arm-deviceprovisioningservices/src/iotDpsClient.ts +++ b/sdk/deviceprovisioningservices/arm-deviceprovisioningservices/src/iotDpsClient.ts @@ -9,6 +9,7 @@ */ import * as msRest from "@azure/ms-rest-js"; +import { TokenCredential } from "@azure/core-auth"; import * as Models from "./models"; import * as Mappers from "./models/mappers"; import * as operations from "./operations"; @@ -23,11 +24,16 @@ class IotDpsClient extends IotDpsClientContext { /** * Initializes a new instance of the IotDpsClient class. - * @param credentials Credentials needed for the client to connect to Azure. + * @param credentials Credentials needed for the client to connect to Azure. Credentials + * implementing the TokenCredential interface from the @azure/identity package are recommended. For + * more information about these credentials, see + * {@link https://www.npmjs.com/package/@azure/identity}. Credentials implementing the + * ServiceClientCredentials interface from the older packages @azure/ms-rest-nodeauth and + * @azure/ms-rest-browserauth are also supported. * @param subscriptionId The subscription identifier. * @param [options] The parameter options */ - constructor(credentials: msRest.ServiceClientCredentials, subscriptionId: string, options?: Models.IotDpsClientOptions) { + constructor(credentials: msRest.ServiceClientCredentials | TokenCredential, subscriptionId: string, options?: Models.IotDpsClientOptions) { super(credentials, subscriptionId, options); this.operations = new operations.Operations(this); this.dpsCertificate = new operations.DpsCertificate(this); diff --git a/sdk/deviceprovisioningservices/arm-deviceprovisioningservices/src/iotDpsClientContext.ts b/sdk/deviceprovisioningservices/arm-deviceprovisioningservices/src/iotDpsClientContext.ts index 48146b6d20a3..c331f7277b8e 100644 --- a/sdk/deviceprovisioningservices/arm-deviceprovisioningservices/src/iotDpsClientContext.ts +++ b/sdk/deviceprovisioningservices/arm-deviceprovisioningservices/src/iotDpsClientContext.ts @@ -10,23 +10,29 @@ import * as Models from "./models"; import * as msRest from "@azure/ms-rest-js"; +import { TokenCredential } from "@azure/core-auth"; import * as msRestAzure from "@azure/ms-rest-azure-js"; const packageName = "@azure/arm-deviceprovisioningservices"; -const packageVersion = "0.1.0"; +const packageVersion = "2.2.0"; export class IotDpsClientContext extends msRestAzure.AzureServiceClient { - credentials: msRest.ServiceClientCredentials; + credentials: msRest.ServiceClientCredentials | TokenCredential; subscriptionId: string; apiVersion?: string; /** * Initializes a new instance of the IotDpsClient class. - * @param credentials Credentials needed for the client to connect to Azure. + * @param credentials Credentials needed for the client to connect to Azure. Credentials + * implementing the TokenCredential interface from the @azure/identity package are recommended. For + * more information about these credentials, see + * {@link https://www.npmjs.com/package/@azure/identity}. Credentials implementing the + * ServiceClientCredentials interface from the older packages @azure/ms-rest-nodeauth and + * @azure/ms-rest-browserauth are also supported. * @param subscriptionId The subscription identifier. * @param [options] The parameter options */ - constructor(credentials: msRest.ServiceClientCredentials, subscriptionId: string, options?: Models.IotDpsClientOptions) { + constructor(credentials: msRest.ServiceClientCredentials | TokenCredential, subscriptionId: string, options?: Models.IotDpsClientOptions) { if (credentials == undefined) { throw new Error('\'credentials\' cannot be null.'); } diff --git a/sdk/deviceupdate/iot-device-update/package.json b/sdk/deviceupdate/iot-device-update/package.json index 8b64b1bad739..c17a477d4259 100644 --- a/sdk/deviceupdate/iot-device-update/package.json +++ b/sdk/deviceupdate/iot-device-update/package.json @@ -7,7 +7,7 @@ "dependencies": { "@azure/core-http": "^1.2.0", "@azure/core-paging": "^1.1.1", - "@azure/core-tracing": "1.0.0-preview.11", + "@azure/core-tracing": "1.0.0-preview.12", "tslib": "^2.2.0" }, "keywords": [ diff --git a/sdk/devspaces/arm-devspaces/README.md b/sdk/devspaces/arm-devspaces/README.md index 5f5f691cba70..1f4b6113bdda 100644 --- a/sdk/devspaces/arm-devspaces/README.md +++ b/sdk/devspaces/arm-devspaces/README.md @@ -1,93 +1,103 @@ ## Azure DevSpacesManagementClient SDK for JavaScript -This package contains an isomorphic SDK for DevSpacesManagementClient. +This package contains an isomorphic SDK (runs both in Node.js and in browsers) for DevSpacesManagementClient. ### Currently supported environments -- Node.js version 6.x.x or higher -- Browser JavaScript +- [LTS versions of Node.js](https://nodejs.org/about/releases/) +- Latest versions of Safari, Chrome, Edge, and Firefox. -### How to Install +### Prerequisites -``` -npm install @azure/arm-devspaces +You must have an [Azure subscription](https://azure.microsoft.com/free/). + +### How to install + +To use this SDK in your project, you will need to install two packages. +- `@azure/arm-devspaces` that contains the client. +- `@azure/identity` that provides different mechanisms for the client to authenticate your requests using Azure Active Directory. + +Install both packages using the below command: +```bash +npm install --save @azure/arm-devspaces @azure/identity ``` +> **Note**: You may have used either `@azure/ms-rest-nodeauth` or `@azure/ms-rest-browserauth` in the past. These packages are in maintenance mode receiving critical bug fixes, but no new features. +If you are on a [Node.js that has LTS status](https://nodejs.org/about/releases/), or are writing a client side browser application, we strongly encourage you to upgrade to `@azure/identity` which uses the latest versions of Azure Active Directory and MSAL APIs and provides more authentication options. + ### How to use -#### nodejs - Authentication, client creation and get controllers as an example written in TypeScript. +- If you are writing a client side browser application, + - Follow the instructions in the section on Authenticating client side browser applications in [Azure Identity examples](https://aka.ms/azsdk/js/identity/examples) to register your application in the Microsoft identity platform and set the right permissions. + - Copy the client ID and tenant ID from the Overview section of your app registration in Azure portal and use it in the browser sample below. +- If you are writing a server side application, + - [Select a credential from `@azure/identity` based on the authentication method of your choice](https://aka.ms/azsdk/js/identity/examples) + - Complete the set up steps required by the credential if any. + - Use the credential you picked in the place of `DefaultAzureCredential` in the Node.js sample below. -##### Install @azure/ms-rest-nodeauth +In the below samples, we pass the credential and the Azure subscription id to instantiate the client. +Once the client is created, explore the operations on it either in your favorite editor or in our [API reference documentation](https://docs.microsoft.com/javascript/api) to get started. -``` -npm install @azure/ms-rest-nodeauth -``` +#### nodejs - Authentication, client creation, and get controllers as an example written in JavaScript. ##### Sample code -```ts -import * as msRest from "@azure/ms-rest-js"; -import * as msRestAzure from "@azure/ms-rest-azure-js"; -import * as msRestNodeAuth from "@azure/ms-rest-nodeauth"; -import { DevSpacesManagementClient, DevSpacesManagementModels, DevSpacesManagementMappers } from "@azure/arm-devspaces"; +```javascript +const { DefaultAzureCredential } = require("@azure/identity"); +const { DevSpacesManagementClient } = require("@azure/arm-devspaces"); const subscriptionId = process.env["AZURE_SUBSCRIPTION_ID"]; -msRestNodeAuth.interactiveLogin().then((creds) => { - const client = new DevSpacesManagementClient(creds, subscriptionId); - const resourceGroupName = "testresourceGroupName"; - const name = "testname"; - client.controllers.get(resourceGroupName, name).then((result) => { - console.log("The result is:"); - console.log(result); - }); +// Use `DefaultAzureCredential` or any other credential of your choice based on https://aka.ms/azsdk/js/identity/examples +// Please note that you can also use credentials from the `@azure/ms-rest-nodeauth` package instead. +const creds = new DefaultAzureCredential(); +const client = new DevSpacesManagementClient(creds, subscriptionId); +const resourceGroupName = "testresourceGroupName"; +const name = "testname"; +client.controllers.get(resourceGroupName, name).then((result) => { + console.log("The result is:"); + console.log(result); }).catch((err) => { + console.log("An error occurred:"); console.error(err); }); ``` -#### browser - Authentication, client creation and get controllers as an example written in JavaScript. +#### browser - Authentication, client creation, and get controllers as an example written in JavaScript. -##### Install @azure/ms-rest-browserauth - -``` -npm install @azure/ms-rest-browserauth -``` +In browser applications, we recommend using the `InteractiveBrowserCredential` that interactively authenticates using the default system browser. + - See [Single-page application: App registration guide](https://docs.microsoft.com/azure/active-directory/develop/scenario-spa-app-registration) to configure your app registration for the browser. + - Note down the client Id from the previous step and use it in the browser sample below. ##### Sample code -See https://github.com/Azure/ms-rest-browserauth to learn how to authenticate to Azure in the browser. - - index.html + ```html @azure/arm-devspaces sample - - + @@ -99,5 +109,4 @@ See https://github.com/Azure/ms-rest-browserauth to learn how to authenticate to - [Microsoft Azure SDK for Javascript](https://github.com/Azure/azure-sdk-for-js) - -![Impressions](https://azure-sdk-impressions.azurewebsites.net/api/impressions/azure-sdk-for-js%2Fsdk%2Fdevspaces%2Farm-devspaces%2FREADME.png) +![Impressions](https://azure-sdk-impressions.azurewebsites.net/api/impressions/azure-sdk-for-js/sdk/devspaces/arm-devspaces/README.png) diff --git a/sdk/devspaces/arm-devspaces/package.json b/sdk/devspaces/arm-devspaces/package.json index 186018c67a51..f03e14c74c35 100644 --- a/sdk/devspaces/arm-devspaces/package.json +++ b/sdk/devspaces/arm-devspaces/package.json @@ -2,10 +2,11 @@ "name": "@azure/arm-devspaces", "author": "Microsoft Corporation", "description": "DevSpacesManagementClient Library with typescript type definitions for node.js and browser.", - "version": "1.1.0", + "version": "1.2.0", "dependencies": { - "@azure/ms-rest-azure-js": "^1.1.0", - "@azure/ms-rest-js": "^1.1.0", + "@azure/ms-rest-azure-js": "^1.4.0", + "@azure/ms-rest-js": "^1.11.0", + "@azure/core-auth": "^1.1.4", "tslib": "^1.9.3" }, "keywords": [ @@ -20,7 +21,7 @@ "module": "./esm/devSpacesManagementClient.js", "types": "./esm/devSpacesManagementClient.d.ts", "devDependencies": { - "typescript": "^3.1.1", + "typescript": "^3.6.0", "rollup": "^0.66.2", "rollup-plugin-node-resolve": "^3.4.0", "uglify-js": "^3.4.9" diff --git a/sdk/devspaces/arm-devspaces/src/devSpacesManagementClient.ts b/sdk/devspaces/arm-devspaces/src/devSpacesManagementClient.ts index be116e003310..e01c000e3052 100644 --- a/sdk/devspaces/arm-devspaces/src/devSpacesManagementClient.ts +++ b/sdk/devspaces/arm-devspaces/src/devSpacesManagementClient.ts @@ -9,6 +9,7 @@ */ import * as msRest from "@azure/ms-rest-js"; +import { TokenCredential } from "@azure/core-auth"; import * as Models from "./models"; import * as Mappers from "./models/mappers"; import * as operations from "./operations"; @@ -23,11 +24,16 @@ class DevSpacesManagementClient extends DevSpacesManagementClientContext { /** * Initializes a new instance of the DevSpacesManagementClient class. - * @param credentials Credentials needed for the client to connect to Azure. + * @param credentials Credentials needed for the client to connect to Azure. Credentials + * implementing the TokenCredential interface from the @azure/identity package are recommended. For + * more information about these credentials, see + * {@link https://www.npmjs.com/package/@azure/identity}. Credentials implementing the + * ServiceClientCredentials interface from the older packages @azure/ms-rest-nodeauth and + * @azure/ms-rest-browserauth are also supported. * @param subscriptionId Azure subscription ID. * @param [options] The parameter options */ - constructor(credentials: msRest.ServiceClientCredentials, subscriptionId: string, options?: Models.DevSpacesManagementClientOptions) { + constructor(credentials: msRest.ServiceClientCredentials | TokenCredential, subscriptionId: string, options?: Models.DevSpacesManagementClientOptions) { super(credentials, subscriptionId, options); this.containerHostMappings = new operations.ContainerHostMappings(this); this.controllers = new operations.Controllers(this); diff --git a/sdk/devspaces/arm-devspaces/src/devSpacesManagementClientContext.ts b/sdk/devspaces/arm-devspaces/src/devSpacesManagementClientContext.ts index 1369a6260a07..b2b8060c0769 100644 --- a/sdk/devspaces/arm-devspaces/src/devSpacesManagementClientContext.ts +++ b/sdk/devspaces/arm-devspaces/src/devSpacesManagementClientContext.ts @@ -10,23 +10,29 @@ import * as Models from "./models"; import * as msRest from "@azure/ms-rest-js"; +import { TokenCredential } from "@azure/core-auth"; import * as msRestAzure from "@azure/ms-rest-azure-js"; const packageName = "@azure/arm-devspaces"; -const packageVersion = "0.1.0"; +const packageVersion = "1.2.0"; export class DevSpacesManagementClientContext extends msRestAzure.AzureServiceClient { - credentials: msRest.ServiceClientCredentials; + credentials: msRest.ServiceClientCredentials | TokenCredential; subscriptionId: string; apiVersion?: string; /** * Initializes a new instance of the DevSpacesManagementClient class. - * @param credentials Credentials needed for the client to connect to Azure. + * @param credentials Credentials needed for the client to connect to Azure. Credentials + * implementing the TokenCredential interface from the @azure/identity package are recommended. For + * more information about these credentials, see + * {@link https://www.npmjs.com/package/@azure/identity}. Credentials implementing the + * ServiceClientCredentials interface from the older packages @azure/ms-rest-nodeauth and + * @azure/ms-rest-browserauth are also supported. * @param subscriptionId Azure subscription ID. * @param [options] The parameter options */ - constructor(credentials: msRest.ServiceClientCredentials, subscriptionId: string, options?: Models.DevSpacesManagementClientOptions) { + constructor(credentials: msRest.ServiceClientCredentials | TokenCredential, subscriptionId: string, options?: Models.DevSpacesManagementClientOptions) { if (credentials == undefined) { throw new Error('\'credentials\' cannot be null.'); } diff --git a/sdk/devtestlabs/arm-devtestlabs/README.md b/sdk/devtestlabs/arm-devtestlabs/README.md index f00489748b4a..884a722c47aa 100644 --- a/sdk/devtestlabs/arm-devtestlabs/README.md +++ b/sdk/devtestlabs/arm-devtestlabs/README.md @@ -1,89 +1,100 @@ ## Azure DevTestLabsClient SDK for JavaScript -This package contains an isomorphic SDK for DevTestLabsClient. +This package contains an isomorphic SDK (runs both in Node.js and in browsers) for DevTestLabsClient. ### Currently supported environments -- Node.js version 6.x.x or higher -- Browser JavaScript +- [LTS versions of Node.js](https://nodejs.org/about/releases/) +- Latest versions of Safari, Chrome, Edge, and Firefox. -### How to Install +### Prerequisites +You must have an [Azure subscription](https://azure.microsoft.com/free/). + +### How to install + +To use this SDK in your project, you will need to install two packages. +- `@azure/arm-devtestlabs` that contains the client. +- `@azure/identity` that provides different mechanisms for the client to authenticate your requests using Azure Active Directory. + +Install both packages using the below command: ```bash -npm install @azure/arm-devtestlabs +npm install --save @azure/arm-devtestlabs @azure/identity ``` +> **Note**: You may have used either `@azure/ms-rest-nodeauth` or `@azure/ms-rest-browserauth` in the past. These packages are in maintenance mode receiving critical bug fixes, but no new features. +If you are on a [Node.js that has LTS status](https://nodejs.org/about/releases/), or are writing a client side browser application, we strongly encourage you to upgrade to `@azure/identity` which uses the latest versions of Azure Active Directory and MSAL APIs and provides more authentication options. + ### How to use -#### nodejs - Authentication, client creation and list providerOperations as an example written in TypeScript. +- If you are writing a client side browser application, + - Follow the instructions in the section on Authenticating client side browser applications in [Azure Identity examples](https://aka.ms/azsdk/js/identity/examples) to register your application in the Microsoft identity platform and set the right permissions. + - Copy the client ID and tenant ID from the Overview section of your app registration in Azure portal and use it in the browser sample below. +- If you are writing a server side application, + - [Select a credential from `@azure/identity` based on the authentication method of your choice](https://aka.ms/azsdk/js/identity/examples) + - Complete the set up steps required by the credential if any. + - Use the credential you picked in the place of `DefaultAzureCredential` in the Node.js sample below. -##### Install @azure/ms-rest-nodeauth +In the below samples, we pass the credential and the Azure subscription id to instantiate the client. +Once the client is created, explore the operations on it either in your favorite editor or in our [API reference documentation](https://docs.microsoft.com/javascript/api) to get started. -```bash -npm install @azure/ms-rest-nodeauth -``` +#### nodejs - Authentication, client creation, and list providerOperations as an example written in JavaScript. ##### Sample code -```typescript -import * as msRest from "@azure/ms-rest-js"; -import * as msRestAzure from "@azure/ms-rest-azure-js"; -import * as msRestNodeAuth from "@azure/ms-rest-nodeauth"; -import { DevTestLabsClient, DevTestLabsModels, DevTestLabsMappers } from "@azure/arm-devtestlabs"; +```javascript +const { DefaultAzureCredential } = require("@azure/identity"); +const { DevTestLabsClient } = require("@azure/arm-devtestlabs"); const subscriptionId = process.env["AZURE_SUBSCRIPTION_ID"]; -msRestNodeAuth.interactiveLogin().then((creds) => { - const client = new DevTestLabsClient(creds, subscriptionId); - client.providerOperations.list().then((result) => { - console.log("The result is:"); - console.log(result); - }); +// Use `DefaultAzureCredential` or any other credential of your choice based on https://aka.ms/azsdk/js/identity/examples +// Please note that you can also use credentials from the `@azure/ms-rest-nodeauth` package instead. +const creds = new DefaultAzureCredential(); +const client = new DevTestLabsClient(creds, subscriptionId); + +client.providerOperations.list().then((result) => { + console.log("The result is:"); + console.log(result); }).catch((err) => { + console.log("An error occurred:"); console.error(err); }); ``` -#### browser - Authentication, client creation and list providerOperations as an example written in JavaScript. +#### browser - Authentication, client creation, and list providerOperations as an example written in JavaScript. -##### Install @azure/ms-rest-browserauth - -```bash -npm install @azure/ms-rest-browserauth -``` +In browser applications, we recommend using the `InteractiveBrowserCredential` that interactively authenticates using the default system browser. + - See [Single-page application: App registration guide](https://docs.microsoft.com/azure/active-directory/develop/scenario-spa-app-registration) to configure your app registration for the browser. + - Note down the client Id from the previous step and use it in the browser sample below. ##### Sample code -See https://github.com/Azure/ms-rest-browserauth to learn how to authenticate to Azure in the browser. - - index.html + ```html @azure/arm-devtestlabs sample - - + @@ -95,5 +106,4 @@ See https://github.com/Azure/ms-rest-browserauth to learn how to authenticate to - [Microsoft Azure SDK for Javascript](https://github.com/Azure/azure-sdk-for-js) - -![Impressions](https://azure-sdk-impressions.azurewebsites.net/api/impressions/azure-sdk-for-js%2Fsdk%2Fdevtestlabs%2Farm-devtestlabs%2FREADME.png) +![Impressions](https://azure-sdk-impressions.azurewebsites.net/api/impressions/azure-sdk-for-js/sdk/devtestlabs/arm-devtestlabs/README.png) diff --git a/sdk/devtestlabs/arm-devtestlabs/package.json b/sdk/devtestlabs/arm-devtestlabs/package.json index bbe78efddd6d..28853c7a5ef9 100644 --- a/sdk/devtestlabs/arm-devtestlabs/package.json +++ b/sdk/devtestlabs/arm-devtestlabs/package.json @@ -2,10 +2,11 @@ "name": "@azure/arm-devtestlabs", "author": "Microsoft Corporation", "description": "DevTestLabsClient Library with typescript type definitions for node.js and browser.", - "version": "3.2.0", + "version": "3.3.0", "dependencies": { - "@azure/ms-rest-azure-js": "^1.3.1", - "@azure/ms-rest-js": "^1.2.6", + "@azure/ms-rest-azure-js": "^1.4.0", + "@azure/ms-rest-js": "^1.11.0", + "@azure/core-auth": "^1.1.4", "tslib": "^1.9.3" }, "keywords": [ @@ -20,7 +21,7 @@ "module": "./esm/devTestLabsClient.js", "types": "./esm/devTestLabsClient.d.ts", "devDependencies": { - "typescript": "^3.1.1", + "typescript": "^3.6.0", "rollup": "^0.66.2", "rollup-plugin-node-resolve": "^3.4.0", "rollup-plugin-sourcemaps": "^0.4.2", diff --git a/sdk/devtestlabs/arm-devtestlabs/src/devTestLabsClient.ts b/sdk/devtestlabs/arm-devtestlabs/src/devTestLabsClient.ts index 3661410b1c1e..d65f2ffacb1f 100644 --- a/sdk/devtestlabs/arm-devtestlabs/src/devTestLabsClient.ts +++ b/sdk/devtestlabs/arm-devtestlabs/src/devTestLabsClient.ts @@ -9,6 +9,7 @@ */ import * as msRest from "@azure/ms-rest-js"; +import { TokenCredential } from "@azure/core-auth"; import * as Models from "./models"; import * as Mappers from "./models/mappers"; import * as operations from "./operations"; @@ -45,11 +46,16 @@ class DevTestLabsClient extends DevTestLabsClientContext { /** * Initializes a new instance of the DevTestLabsClient class. - * @param credentials Credentials needed for the client to connect to Azure. + * @param credentials Credentials needed for the client to connect to Azure. Credentials + * implementing the TokenCredential interface from the @azure/identity package are recommended. For + * more information about these credentials, see + * {@link https://www.npmjs.com/package/@azure/identity}. Credentials implementing the + * ServiceClientCredentials interface from the older packages @azure/ms-rest-nodeauth and + * @azure/ms-rest-browserauth are also supported. * @param subscriptionId The subscription ID. * @param [options] The parameter options */ - constructor(credentials: msRest.ServiceClientCredentials, subscriptionId: string, options?: Models.DevTestLabsClientOptions) { + constructor(credentials: msRest.ServiceClientCredentials | TokenCredential, subscriptionId: string, options?: Models.DevTestLabsClientOptions) { super(credentials, subscriptionId, options); this.providerOperations = new operations.ProviderOperations(this); this.labs = new operations.Labs(this); diff --git a/sdk/devtestlabs/arm-devtestlabs/src/devTestLabsClientContext.ts b/sdk/devtestlabs/arm-devtestlabs/src/devTestLabsClientContext.ts index 4ea49aa18b6a..b0b4ead147db 100644 --- a/sdk/devtestlabs/arm-devtestlabs/src/devTestLabsClientContext.ts +++ b/sdk/devtestlabs/arm-devtestlabs/src/devTestLabsClientContext.ts @@ -10,23 +10,29 @@ import * as Models from "./models"; import * as msRest from "@azure/ms-rest-js"; +import { TokenCredential } from "@azure/core-auth"; import * as msRestAzure from "@azure/ms-rest-azure-js"; const packageName = "@azure/arm-devtestlabs"; -const packageVersion = "1.0.0"; +const packageVersion = "3.3.0"; export class DevTestLabsClientContext extends msRestAzure.AzureServiceClient { - credentials: msRest.ServiceClientCredentials; + credentials: msRest.ServiceClientCredentials | TokenCredential; apiVersion?: string; subscriptionId: string; /** * Initializes a new instance of the DevTestLabsClient class. - * @param credentials Credentials needed for the client to connect to Azure. + * @param credentials Credentials needed for the client to connect to Azure. Credentials + * implementing the TokenCredential interface from the @azure/identity package are recommended. For + * more information about these credentials, see + * {@link https://www.npmjs.com/package/@azure/identity}. Credentials implementing the + * ServiceClientCredentials interface from the older packages @azure/ms-rest-nodeauth and + * @azure/ms-rest-browserauth are also supported. * @param subscriptionId The subscription ID. * @param [options] The parameter options */ - constructor(credentials: msRest.ServiceClientCredentials, subscriptionId: string, options?: Models.DevTestLabsClientOptions) { + constructor(credentials: msRest.ServiceClientCredentials | TokenCredential, subscriptionId: string, options?: Models.DevTestLabsClientOptions) { if (credentials == undefined) { throw new Error('\'credentials\' cannot be null.'); } diff --git a/sdk/digitaltwins/arm-digitaltwins/README.md b/sdk/digitaltwins/arm-digitaltwins/README.md index 0f74fb4e79d7..48d9191e17e0 100644 --- a/sdk/digitaltwins/arm-digitaltwins/README.md +++ b/sdk/digitaltwins/arm-digitaltwins/README.md @@ -1,93 +1,103 @@ ## Azure AzureDigitalTwinsManagementClient SDK for JavaScript -This package contains an isomorphic SDK for AzureDigitalTwinsManagementClient. +This package contains an isomorphic SDK (runs both in Node.js and in browsers) for AzureDigitalTwinsManagementClient. ### Currently supported environments -- Node.js version 6.x.x or higher -- Browser JavaScript +- [LTS versions of Node.js](https://nodejs.org/about/releases/) +- Latest versions of Safari, Chrome, Edge, and Firefox. -### How to Install +### Prerequisites +You must have an [Azure subscription](https://azure.microsoft.com/free/). + +### How to install + +To use this SDK in your project, you will need to install two packages. +- `@azure/arm-digitaltwins` that contains the client. +- `@azure/identity` that provides different mechanisms for the client to authenticate your requests using Azure Active Directory. + +Install both packages using the below command: ```bash -npm install @azure/arm-digitaltwins +npm install --save @azure/arm-digitaltwins @azure/identity ``` +> **Note**: You may have used either `@azure/ms-rest-nodeauth` or `@azure/ms-rest-browserauth` in the past. These packages are in maintenance mode receiving critical bug fixes, but no new features. +If you are on a [Node.js that has LTS status](https://nodejs.org/about/releases/), or are writing a client side browser application, we strongly encourage you to upgrade to `@azure/identity` which uses the latest versions of Azure Active Directory and MSAL APIs and provides more authentication options. + ### How to use -#### nodejs - client creation and get digitalTwins as an example written in TypeScript. +- If you are writing a client side browser application, + - Follow the instructions in the section on Authenticating client side browser applications in [Azure Identity examples](https://aka.ms/azsdk/js/identity/examples) to register your application in the Microsoft identity platform and set the right permissions. + - Copy the client ID and tenant ID from the Overview section of your app registration in Azure portal and use it in the browser sample below. +- If you are writing a server side application, + - [Select a credential from `@azure/identity` based on the authentication method of your choice](https://aka.ms/azsdk/js/identity/examples) + - Complete the set up steps required by the credential if any. + - Use the credential you picked in the place of `DefaultAzureCredential` in the Node.js sample below. -##### Install @azure/ms-rest-nodeauth +In the below samples, we pass the credential and the Azure subscription id to instantiate the client. +Once the client is created, explore the operations on it either in your favorite editor or in our [API reference documentation](https://docs.microsoft.com/javascript/api) to get started. -- Please install minimum version of `"@azure/ms-rest-nodeauth": "^3.0.0"`. -```bash -npm install @azure/ms-rest-nodeauth@"^3.0.0" -``` +#### nodejs - Authentication, client creation, and get digitalTwins as an example written in JavaScript. ##### Sample code -While the below sample uses the interactive login, other authentication options can be found in the [README.md file of @azure/ms-rest-nodeauth](https://www.npmjs.com/package/@azure/ms-rest-nodeauth) package -```typescript -const msRestNodeAuth = require("@azure/ms-rest-nodeauth"); +```javascript +const { DefaultAzureCredential } = require("@azure/identity"); const { AzureDigitalTwinsManagementClient } = require("@azure/arm-digitaltwins"); const subscriptionId = process.env["AZURE_SUBSCRIPTION_ID"]; -msRestNodeAuth.interactiveLogin().then((creds) => { - const client = new AzureDigitalTwinsManagementClient(creds, subscriptionId); - const resourceGroupName = "testresourceGroupName"; - const resourceName = "testresourceName"; - client.digitalTwins.get(resourceGroupName, resourceName).then((result) => { - console.log("The result is:"); - console.log(result); - }); +// Use `DefaultAzureCredential` or any other credential of your choice based on https://aka.ms/azsdk/js/identity/examples +// Please note that you can also use credentials from the `@azure/ms-rest-nodeauth` package instead. +const creds = new DefaultAzureCredential(); +const client = new AzureDigitalTwinsManagementClient(creds, subscriptionId); +const resourceGroupName = "testresourceGroupName"; +const resourceName = "testresourceName"; +client.digitalTwins.get(resourceGroupName, resourceName).then((result) => { + console.log("The result is:"); + console.log(result); }).catch((err) => { + console.log("An error occurred:"); console.error(err); }); ``` -#### browser - Authentication, client creation and get digitalTwins as an example written in JavaScript. +#### browser - Authentication, client creation, and get digitalTwins as an example written in JavaScript. -##### Install @azure/ms-rest-browserauth - -```bash -npm install @azure/ms-rest-browserauth -``` +In browser applications, we recommend using the `InteractiveBrowserCredential` that interactively authenticates using the default system browser. + - See [Single-page application: App registration guide](https://docs.microsoft.com/azure/active-directory/develop/scenario-spa-app-registration) to configure your app registration for the browser. + - Note down the client Id from the previous step and use it in the browser sample below. ##### Sample code -See https://github.com/Azure/ms-rest-browserauth to learn how to authenticate to Azure in the browser. - - index.html + ```html @azure/arm-digitaltwins sample - - + diff --git a/sdk/digitaltwins/arm-digitaltwins/package.json b/sdk/digitaltwins/arm-digitaltwins/package.json index dd9176307257..6aacd298921d 100644 --- a/sdk/digitaltwins/arm-digitaltwins/package.json +++ b/sdk/digitaltwins/arm-digitaltwins/package.json @@ -2,10 +2,11 @@ "name": "@azure/arm-digitaltwins", "author": "Microsoft Corporation", "description": "AzureDigitalTwinsManagementClient Library with typescript type definitions for node.js and browser.", - "version": "2.0.0", + "version": "2.1.0", "dependencies": { - "@azure/ms-rest-azure-js": "^2.0.1", - "@azure/ms-rest-js": "^2.0.4", + "@azure/ms-rest-azure-js": "^2.1.0", + "@azure/ms-rest-js": "^2.2.0", + "@azure/core-auth": "^1.1.4", "tslib": "^1.10.0" }, "keywords": [ @@ -20,7 +21,7 @@ "module": "./esm/azureDigitalTwinsManagementClient.js", "types": "./esm/azureDigitalTwinsManagementClient.d.ts", "devDependencies": { - "typescript": "^3.5.3", + "typescript": "^3.6.0", "rollup": "^1.18.0", "rollup-plugin-node-resolve": "^5.2.0", "rollup-plugin-sourcemaps": "^0.4.2", diff --git a/sdk/digitaltwins/arm-digitaltwins/src/azureDigitalTwinsManagementClient.ts b/sdk/digitaltwins/arm-digitaltwins/src/azureDigitalTwinsManagementClient.ts index a2c8ab2fc8ab..9a9bf51be733 100644 --- a/sdk/digitaltwins/arm-digitaltwins/src/azureDigitalTwinsManagementClient.ts +++ b/sdk/digitaltwins/arm-digitaltwins/src/azureDigitalTwinsManagementClient.ts @@ -8,6 +8,7 @@ */ import * as msRest from "@azure/ms-rest-js"; +import { TokenCredential } from "@azure/core-auth"; import * as Models from "./models"; import * as Mappers from "./models/mappers"; import * as operations from "./operations"; @@ -24,11 +25,16 @@ class AzureDigitalTwinsManagementClient extends AzureDigitalTwinsManagementClien /** * Initializes a new instance of the AzureDigitalTwinsManagementClient class. - * @param credentials Credentials needed for the client to connect to Azure. + * @param credentials Credentials needed for the client to connect to Azure. Credentials + * implementing the TokenCredential interface from the @azure/identity package are recommended. For + * more information about these credentials, see + * {@link https://www.npmjs.com/package/@azure/identity}. Credentials implementing the + * ServiceClientCredentials interface from the older packages @azure/ms-rest-nodeauth and + * @azure/ms-rest-browserauth are also supported. * @param subscriptionId The subscription identifier. * @param [options] The parameter options */ - constructor(credentials: msRest.ServiceClientCredentials, subscriptionId: string, options?: Models.AzureDigitalTwinsManagementClientOptions) { + constructor(credentials: msRest.ServiceClientCredentials | TokenCredential, subscriptionId: string, options?: Models.AzureDigitalTwinsManagementClientOptions) { super(credentials, subscriptionId, options); this.digitalTwins = new operations.DigitalTwins(this); this.digitalTwinsEndpoint = new operations.DigitalTwinsEndpoint(this); diff --git a/sdk/digitaltwins/arm-digitaltwins/src/azureDigitalTwinsManagementClientContext.ts b/sdk/digitaltwins/arm-digitaltwins/src/azureDigitalTwinsManagementClientContext.ts index be8bdb2c9c96..ee784856c160 100644 --- a/sdk/digitaltwins/arm-digitaltwins/src/azureDigitalTwinsManagementClientContext.ts +++ b/sdk/digitaltwins/arm-digitaltwins/src/azureDigitalTwinsManagementClientContext.ts @@ -9,23 +9,29 @@ import * as Models from "./models"; import * as msRest from "@azure/ms-rest-js"; +import { TokenCredential } from "@azure/core-auth"; import * as msRestAzure from "@azure/ms-rest-azure-js"; const packageName = "@azure/arm-digitaltwins"; -const packageVersion = "2.0.0"; +const packageVersion = "2.1.0"; export class AzureDigitalTwinsManagementClientContext extends msRestAzure.AzureServiceClient { - credentials: msRest.ServiceClientCredentials; + credentials: msRest.ServiceClientCredentials | TokenCredential; subscriptionId: string; apiVersion?: string; /** * Initializes a new instance of the AzureDigitalTwinsManagementClient class. - * @param credentials Credentials needed for the client to connect to Azure. + * @param credentials Credentials needed for the client to connect to Azure. Credentials + * implementing the TokenCredential interface from the @azure/identity package are recommended. For + * more information about these credentials, see + * {@link https://www.npmjs.com/package/@azure/identity}. Credentials implementing the + * ServiceClientCredentials interface from the older packages @azure/ms-rest-nodeauth and + * @azure/ms-rest-browserauth are also supported. * @param subscriptionId The subscription identifier. * @param [options] The parameter options */ - constructor(credentials: msRest.ServiceClientCredentials, subscriptionId: string, options?: Models.AzureDigitalTwinsManagementClientOptions) { + constructor(credentials: msRest.ServiceClientCredentials | TokenCredential, subscriptionId: string, options?: Models.AzureDigitalTwinsManagementClientOptions) { if (credentials == undefined) { throw new Error('\'credentials\' cannot be null.'); } diff --git a/sdk/digitaltwins/digital-twins-core/package.json b/sdk/digitaltwins/digital-twins-core/package.json index dad7d08c63a3..c4591955c1e0 100644 --- a/sdk/digitaltwins/digital-twins-core/package.json +++ b/sdk/digitaltwins/digital-twins-core/package.json @@ -68,7 +68,7 @@ "dependencies": { "@azure/core-http": "^1.2.0", "@azure/core-paging": "^1.1.1", - "@azure/core-tracing": "1.0.0-preview.11", + "@azure/core-tracing": "1.0.0-preview.12", "@azure/logger": "^1.0.0", "tslib": "^2.2.0" }, diff --git a/sdk/dns/arm-dns-profile-2019-03-01-hybrid/README.md b/sdk/dns/arm-dns-profile-2019-03-01-hybrid/README.md index 76c4e0b8ac49..2154ff925b42 100644 --- a/sdk/dns/arm-dns-profile-2019-03-01-hybrid/README.md +++ b/sdk/dns/arm-dns-profile-2019-03-01-hybrid/README.md @@ -1,97 +1,107 @@ ## Azure DnsManagementClient SDK for JavaScript -This package contains an isomorphic SDK for DnsManagementClient. +This package contains an isomorphic SDK (runs both in Node.js and in browsers) for DnsManagementClient. ### Currently supported environments -- Node.js version 6.x.x or higher -- Browser JavaScript +- [LTS versions of Node.js](https://nodejs.org/about/releases/) +- Latest versions of Safari, Chrome, Edge, and Firefox. -### How to Install +### Prerequisites +You must have an [Azure subscription](https://azure.microsoft.com/free/). + +### How to install + +To use this SDK in your project, you will need to install two packages. +- `@azure/arm-dns-profile-2019-03-01-hybrid` that contains the client. +- `@azure/identity` that provides different mechanisms for the client to authenticate your requests using Azure Active Directory. + +Install both packages using the below command: ```bash -npm install @azure/arm-dns-profile-2019-03-01-hybrid +npm install --save @azure/arm-dns-profile-2019-03-01-hybrid @azure/identity ``` +> **Note**: You may have used either `@azure/ms-rest-nodeauth` or `@azure/ms-rest-browserauth` in the past. These packages are in maintenance mode receiving critical bug fixes, but no new features. +If you are on a [Node.js that has LTS status](https://nodejs.org/about/releases/), or are writing a client side browser application, we strongly encourage you to upgrade to `@azure/identity` which uses the latest versions of Azure Active Directory and MSAL APIs and provides more authentication options. + ### How to use -#### nodejs - Authentication, client creation and get recordSets as an example written in TypeScript. +- If you are writing a client side browser application, + - Follow the instructions in the section on Authenticating client side browser applications in [Azure Identity examples](https://aka.ms/azsdk/js/identity/examples) to register your application in the Microsoft identity platform and set the right permissions. + - Copy the client ID and tenant ID from the Overview section of your app registration in Azure portal and use it in the browser sample below. +- If you are writing a server side application, + - [Select a credential from `@azure/identity` based on the authentication method of your choice](https://aka.ms/azsdk/js/identity/examples) + - Complete the set up steps required by the credential if any. + - Use the credential you picked in the place of `DefaultAzureCredential` in the Node.js sample below. -##### Install @azure/ms-rest-nodeauth +In the below samples, we pass the credential and the Azure subscription id to instantiate the client. +Once the client is created, explore the operations on it either in your favorite editor or in our [API reference documentation](https://docs.microsoft.com/javascript/api) to get started. -```bash -npm install @azure/ms-rest-nodeauth -``` +#### nodejs - Authentication, client creation, and get recordSets as an example written in JavaScript. ##### Sample code -```typescript -import * as msRest from "@azure/ms-rest-js"; -import * as msRestAzure from "@azure/ms-rest-azure-js"; -import * as msRestNodeAuth from "@azure/ms-rest-nodeauth"; -import { DnsManagementClient, DnsManagementModels, DnsManagementMappers } from "@azure/arm-dns-profile-2019-03-01-hybrid"; +```javascript +const { DefaultAzureCredential } = require("@azure/identity"); +const { DnsManagementClient } = require("@azure/arm-dns-profile-2019-03-01-hybrid"); const subscriptionId = process.env["AZURE_SUBSCRIPTION_ID"]; -msRestNodeAuth.interactiveLogin().then((creds) => { - const client = new DnsManagementClient(creds, subscriptionId); - const resourceGroupName = "testresourceGroupName"; - const zoneName = "testzoneName"; - const relativeRecordSetName = "testrelativeRecordSetName"; - const recordType = "A"; - client.recordSets.get(resourceGroupName, zoneName, relativeRecordSetName, recordType).then((result) => { - console.log("The result is:"); - console.log(result); - }); +// Use `DefaultAzureCredential` or any other credential of your choice based on https://aka.ms/azsdk/js/identity/examples +// Please note that you can also use credentials from the `@azure/ms-rest-nodeauth` package instead. +const creds = new DefaultAzureCredential(); +const client = new DnsManagementClient(creds, subscriptionId); +const resourceGroupName = "testresourceGroupName"; +const zoneName = "testzoneName"; +const relativeRecordSetName = "testrelativeRecordSetName"; +const recordType = "A"; +client.recordSets.get(resourceGroupName, zoneName, relativeRecordSetName, recordType).then((result) => { + console.log("The result is:"); + console.log(result); }).catch((err) => { + console.log("An error occurred:"); console.error(err); }); ``` -#### browser - Authentication, client creation and get recordSets as an example written in JavaScript. +#### browser - Authentication, client creation, and get recordSets as an example written in JavaScript. -##### Install @azure/ms-rest-browserauth - -```bash -npm install @azure/ms-rest-browserauth -``` +In browser applications, we recommend using the `InteractiveBrowserCredential` that interactively authenticates using the default system browser. + - See [Single-page application: App registration guide](https://docs.microsoft.com/azure/active-directory/develop/scenario-spa-app-registration) to configure your app registration for the browser. + - Note down the client Id from the previous step and use it in the browser sample below. ##### Sample code -See https://github.com/Azure/ms-rest-browserauth to learn how to authenticate to Azure in the browser. - - index.html + ```html @azure/arm-dns-profile-2019-03-01-hybrid sample - - + @@ -103,5 +113,4 @@ See https://github.com/Azure/ms-rest-browserauth to learn how to authenticate to - [Microsoft Azure SDK for Javascript](https://github.com/Azure/azure-sdk-for-js) - -![Impressions](https://azure-sdk-impressions.azurewebsites.net/api/impressions/azure-sdk-for-js%2Fsdk%2Fdns%2Farm-dns-profile-2019-03-01-hybrid%2FREADME.png) +![Impressions](https://azure-sdk-impressions.azurewebsites.net/api/impressions/azure-sdk-for-js/sdk/dns/arm-dns-profile-2019-03-01-hybrid/README.png) diff --git a/sdk/dns/arm-dns-profile-2019-03-01-hybrid/package.json b/sdk/dns/arm-dns-profile-2019-03-01-hybrid/package.json index dbd3f9650f7e..b56a0ef5a27f 100644 --- a/sdk/dns/arm-dns-profile-2019-03-01-hybrid/package.json +++ b/sdk/dns/arm-dns-profile-2019-03-01-hybrid/package.json @@ -2,10 +2,11 @@ "name": "@azure/arm-dns-profile-2019-03-01-hybrid", "author": "Microsoft Corporation", "description": "DnsManagementClient Library with typescript type definitions for node.js and browser.", - "version": "1.0.0", + "version": "1.1.0", "dependencies": { - "@azure/ms-rest-azure-js": "^1.3.2", - "@azure/ms-rest-js": "^1.8.1", + "@azure/ms-rest-azure-js": "^1.4.0", + "@azure/ms-rest-js": "^1.11.0", + "@azure/core-auth": "^1.1.4", "tslib": "^1.9.3" }, "keywords": [ @@ -21,7 +22,7 @@ "module": "./esm/dnsManagementClient.js", "types": "./esm/dnsManagementClient.d.ts", "devDependencies": { - "typescript": "^3.1.1", + "typescript": "^3.6.0", "rollup": "^0.66.2", "rollup-plugin-node-resolve": "^3.4.0", "rollup-plugin-sourcemaps": "^0.4.2", diff --git a/sdk/dns/arm-dns-profile-2019-03-01-hybrid/src/dnsManagementClient.ts b/sdk/dns/arm-dns-profile-2019-03-01-hybrid/src/dnsManagementClient.ts index 3e6f9a758eea..422ab30a3daf 100644 --- a/sdk/dns/arm-dns-profile-2019-03-01-hybrid/src/dnsManagementClient.ts +++ b/sdk/dns/arm-dns-profile-2019-03-01-hybrid/src/dnsManagementClient.ts @@ -9,6 +9,7 @@ */ import * as msRest from "@azure/ms-rest-js"; +import { TokenCredential } from "@azure/core-auth"; import * as Models from "./models"; import * as Mappers from "./models/mappers"; import * as operations from "./operations"; @@ -22,11 +23,16 @@ class DnsManagementClient extends DnsManagementClientContext { /** * Initializes a new instance of the DnsManagementClient class. - * @param credentials Credentials needed for the client to connect to Azure. + * @param credentials Credentials needed for the client to connect to Azure. Credentials + * implementing the TokenCredential interface from the @azure/identity package are recommended. For + * more information about these credentials, see + * {@link https://www.npmjs.com/package/@azure/identity}. Credentials implementing the + * ServiceClientCredentials interface from the older packages @azure/ms-rest-nodeauth and + * @azure/ms-rest-browserauth are also supported. * @param subscriptionId The ID of the target subscription. * @param [options] The parameter options */ - constructor(credentials: msRest.ServiceClientCredentials, subscriptionId: string, options?: Models.DnsManagementClientOptions) { + constructor(credentials: msRest.ServiceClientCredentials | TokenCredential, subscriptionId: string, options?: Models.DnsManagementClientOptions) { super(credentials, subscriptionId, options); this.recordSets = new operations.RecordSets(this); this.zones = new operations.Zones(this); diff --git a/sdk/dns/arm-dns-profile-2019-03-01-hybrid/src/dnsManagementClientContext.ts b/sdk/dns/arm-dns-profile-2019-03-01-hybrid/src/dnsManagementClientContext.ts index 19ef9e342abf..b7213d730aaa 100644 --- a/sdk/dns/arm-dns-profile-2019-03-01-hybrid/src/dnsManagementClientContext.ts +++ b/sdk/dns/arm-dns-profile-2019-03-01-hybrid/src/dnsManagementClientContext.ts @@ -10,23 +10,29 @@ import * as Models from "./models"; import * as msRest from "@azure/ms-rest-js"; +import { TokenCredential } from "@azure/core-auth"; import * as msRestAzure from "@azure/ms-rest-azure-js"; const packageName = "@azure/arm-dns-profile-2019-03-01-hybrid"; -const packageVersion = "1.0.0"; +const packageVersion = "1.1.0"; export class DnsManagementClientContext extends msRestAzure.AzureServiceClient { - credentials: msRest.ServiceClientCredentials; + credentials: msRest.ServiceClientCredentials | TokenCredential; subscriptionId: string; apiVersion?: string; /** * Initializes a new instance of the DnsManagementClient class. - * @param credentials Credentials needed for the client to connect to Azure. + * @param credentials Credentials needed for the client to connect to Azure. Credentials + * implementing the TokenCredential interface from the @azure/identity package are recommended. For + * more information about these credentials, see + * {@link https://www.npmjs.com/package/@azure/identity}. Credentials implementing the + * ServiceClientCredentials interface from the older packages @azure/ms-rest-nodeauth and + * @azure/ms-rest-browserauth are also supported. * @param subscriptionId The ID of the target subscription. * @param [options] The parameter options */ - constructor(credentials: msRest.ServiceClientCredentials, subscriptionId: string, options?: Models.DnsManagementClientOptions) { + constructor(credentials: msRest.ServiceClientCredentials | TokenCredential, subscriptionId: string, options?: Models.DnsManagementClientOptions) { if (credentials == undefined) { throw new Error('\'credentials\' cannot be null.'); } diff --git a/sdk/dns/arm-dns-profile-2020-09-01-hybrid/README.md b/sdk/dns/arm-dns-profile-2020-09-01-hybrid/README.md index 5c7f88c4d415..dc171426c710 100644 --- a/sdk/dns/arm-dns-profile-2020-09-01-hybrid/README.md +++ b/sdk/dns/arm-dns-profile-2020-09-01-hybrid/README.md @@ -1,98 +1,107 @@ ## Azure DnsManagementClient SDK for JavaScript -This package contains an isomorphic SDK for DnsManagementClient. +This package contains an isomorphic SDK (runs both in Node.js and in browsers) for DnsManagementClient. ### Currently supported environments -- Node.js version 6.x.x or higher -- Browser JavaScript +- [LTS versions of Node.js](https://nodejs.org/about/releases/) +- Latest versions of Safari, Chrome, Edge, and Firefox. -### How to Install +### Prerequisites +You must have an [Azure subscription](https://azure.microsoft.com/free/). + +### How to install + +To use this SDK in your project, you will need to install two packages. +- `@azure/arm-dns-profile-2020-09-01-hybrid` that contains the client. +- `@azure/identity` that provides different mechanisms for the client to authenticate your requests using Azure Active Directory. + +Install both packages using the below command: ```bash -npm install @azure/arm-dns-profile-2020-09-01-hybrid +npm install --save @azure/arm-dns-profile-2020-09-01-hybrid @azure/identity ``` +> **Note**: You may have used either `@azure/ms-rest-nodeauth` or `@azure/ms-rest-browserauth` in the past. These packages are in maintenance mode receiving critical bug fixes, but no new features. +If you are on a [Node.js that has LTS status](https://nodejs.org/about/releases/), or are writing a client side browser application, we strongly encourage you to upgrade to `@azure/identity` which uses the latest versions of Azure Active Directory and MSAL APIs and provides more authentication options. + ### How to use -#### nodejs - Authentication, client creation and get recordSets as an example written in TypeScript. +- If you are writing a client side browser application, + - Follow the instructions in the section on Authenticating client side browser applications in [Azure Identity examples](https://aka.ms/azsdk/js/identity/examples) to register your application in the Microsoft identity platform and set the right permissions. + - Copy the client ID and tenant ID from the Overview section of your app registration in Azure portal and use it in the browser sample below. +- If you are writing a server side application, + - [Select a credential from `@azure/identity` based on the authentication method of your choice](https://aka.ms/azsdk/js/identity/examples) + - Complete the set up steps required by the credential if any. + - Use the credential you picked in the place of `DefaultAzureCredential` in the Node.js sample below. -##### Install @azure/ms-rest-nodeauth +In the below samples, we pass the credential and the Azure subscription id to instantiate the client. +Once the client is created, explore the operations on it either in your favorite editor or in our [API reference documentation](https://docs.microsoft.com/javascript/api) to get started. -- Please install minimum version of `"@azure/ms-rest-nodeauth": "^3.0.0"`. -```bash -npm install @azure/ms-rest-nodeauth@"^3.0.0" -``` +#### nodejs - Authentication, client creation, and get recordSets as an example written in JavaScript. ##### Sample code -```typescript -import * as msRest from "@azure/ms-rest-js"; -import * as msRestAzure from "@azure/ms-rest-azure-js"; -import * as msRestNodeAuth from "@azure/ms-rest-nodeauth"; -import { DnsManagementClient, DnsManagementModels, DnsManagementMappers } from "@azure/arm-dns-profile-2020-09-01-hybrid"; +```javascript +const { DefaultAzureCredential } = require("@azure/identity"); +const { DnsManagementClient } = require("@azure/arm-dns-profile-2020-09-01-hybrid"); const subscriptionId = process.env["AZURE_SUBSCRIPTION_ID"]; -msRestNodeAuth.interactiveLogin().then((creds) => { - const client = new DnsManagementClient(creds, subscriptionId); - const resourceGroupName = "testresourceGroupName"; - const zoneName = "testzoneName"; - const relativeRecordSetName = "testrelativeRecordSetName"; - const recordType = "A"; - client.recordSets.get(resourceGroupName, zoneName, relativeRecordSetName, recordType).then((result) => { - console.log("The result is:"); - console.log(result); - }); +// Use `DefaultAzureCredential` or any other credential of your choice based on https://aka.ms/azsdk/js/identity/examples +// Please note that you can also use credentials from the `@azure/ms-rest-nodeauth` package instead. +const creds = new DefaultAzureCredential(); +const client = new DnsManagementClient(creds, subscriptionId); +const resourceGroupName = "testresourceGroupName"; +const zoneName = "testzoneName"; +const relativeRecordSetName = "testrelativeRecordSetName"; +const recordType = "A"; +client.recordSets.get(resourceGroupName, zoneName, relativeRecordSetName, recordType).then((result) => { + console.log("The result is:"); + console.log(result); }).catch((err) => { + console.log("An error occurred:"); console.error(err); }); ``` -#### browser - Authentication, client creation and get recordSets as an example written in JavaScript. +#### browser - Authentication, client creation, and get recordSets as an example written in JavaScript. -##### Install @azure/ms-rest-browserauth - -```bash -npm install @azure/ms-rest-browserauth -``` +In browser applications, we recommend using the `InteractiveBrowserCredential` that interactively authenticates using the default system browser. + - See [Single-page application: App registration guide](https://docs.microsoft.com/azure/active-directory/develop/scenario-spa-app-registration) to configure your app registration for the browser. + - Note down the client Id from the previous step and use it in the browser sample below. ##### Sample code -See https://github.com/Azure/ms-rest-browserauth to learn how to authenticate to Azure in the browser. - - index.html + ```html @azure/arm-dns-profile-2020-09-01-hybrid sample - - + diff --git a/sdk/dns/arm-dns-profile-2020-09-01-hybrid/package.json b/sdk/dns/arm-dns-profile-2020-09-01-hybrid/package.json index cf5528d17c64..5a483aeed58a 100644 --- a/sdk/dns/arm-dns-profile-2020-09-01-hybrid/package.json +++ b/sdk/dns/arm-dns-profile-2020-09-01-hybrid/package.json @@ -2,10 +2,11 @@ "name": "@azure/arm-dns-profile-2020-09-01-hybrid", "author": "Microsoft Corporation", "description": "DnsManagementClient Library with typescript type definitions for node.js and browser.", - "version": "1.0.0", + "version": "1.1.0", "dependencies": { - "@azure/ms-rest-azure-js": "^2.0.1", - "@azure/ms-rest-js": "^2.0.4", + "@azure/ms-rest-azure-js": "^2.1.0", + "@azure/ms-rest-js": "^2.2.0", + "@azure/core-auth": "^1.1.4", "tslib": "^1.10.0" }, "keywords": [ @@ -20,7 +21,7 @@ "module": "./esm/dnsManagementClient.js", "types": "./esm/dnsManagementClient.d.ts", "devDependencies": { - "typescript": "^3.5.3", + "typescript": "^3.6.0", "rollup": "^1.18.0", "rollup-plugin-node-resolve": "^5.2.0", "rollup-plugin-sourcemaps": "^0.4.2", diff --git a/sdk/dns/arm-dns-profile-2020-09-01-hybrid/src/dnsManagementClient.ts b/sdk/dns/arm-dns-profile-2020-09-01-hybrid/src/dnsManagementClient.ts index 3e6f9a758eea..422ab30a3daf 100644 --- a/sdk/dns/arm-dns-profile-2020-09-01-hybrid/src/dnsManagementClient.ts +++ b/sdk/dns/arm-dns-profile-2020-09-01-hybrid/src/dnsManagementClient.ts @@ -9,6 +9,7 @@ */ import * as msRest from "@azure/ms-rest-js"; +import { TokenCredential } from "@azure/core-auth"; import * as Models from "./models"; import * as Mappers from "./models/mappers"; import * as operations from "./operations"; @@ -22,11 +23,16 @@ class DnsManagementClient extends DnsManagementClientContext { /** * Initializes a new instance of the DnsManagementClient class. - * @param credentials Credentials needed for the client to connect to Azure. + * @param credentials Credentials needed for the client to connect to Azure. Credentials + * implementing the TokenCredential interface from the @azure/identity package are recommended. For + * more information about these credentials, see + * {@link https://www.npmjs.com/package/@azure/identity}. Credentials implementing the + * ServiceClientCredentials interface from the older packages @azure/ms-rest-nodeauth and + * @azure/ms-rest-browserauth are also supported. * @param subscriptionId The ID of the target subscription. * @param [options] The parameter options */ - constructor(credentials: msRest.ServiceClientCredentials, subscriptionId: string, options?: Models.DnsManagementClientOptions) { + constructor(credentials: msRest.ServiceClientCredentials | TokenCredential, subscriptionId: string, options?: Models.DnsManagementClientOptions) { super(credentials, subscriptionId, options); this.recordSets = new operations.RecordSets(this); this.zones = new operations.Zones(this); diff --git a/sdk/dns/arm-dns-profile-2020-09-01-hybrid/src/dnsManagementClientContext.ts b/sdk/dns/arm-dns-profile-2020-09-01-hybrid/src/dnsManagementClientContext.ts index fd9507aacb1c..be7bd08f580f 100644 --- a/sdk/dns/arm-dns-profile-2020-09-01-hybrid/src/dnsManagementClientContext.ts +++ b/sdk/dns/arm-dns-profile-2020-09-01-hybrid/src/dnsManagementClientContext.ts @@ -10,23 +10,29 @@ import * as Models from "./models"; import * as msRest from "@azure/ms-rest-js"; +import { TokenCredential } from "@azure/core-auth"; import * as msRestAzure from "@azure/ms-rest-azure-js"; const packageName = "@azure/arm-dns-profile-2020-09-01-hybrid"; -const packageVersion = "1.0.0"; +const packageVersion = "1.1.0"; export class DnsManagementClientContext extends msRestAzure.AzureServiceClient { - credentials: msRest.ServiceClientCredentials; + credentials: msRest.ServiceClientCredentials | TokenCredential; subscriptionId: string; apiVersion?: string; /** * Initializes a new instance of the DnsManagementClient class. - * @param credentials Credentials needed for the client to connect to Azure. + * @param credentials Credentials needed for the client to connect to Azure. Credentials + * implementing the TokenCredential interface from the @azure/identity package are recommended. For + * more information about these credentials, see + * {@link https://www.npmjs.com/package/@azure/identity}. Credentials implementing the + * ServiceClientCredentials interface from the older packages @azure/ms-rest-nodeauth and + * @azure/ms-rest-browserauth are also supported. * @param subscriptionId The ID of the target subscription. * @param [options] The parameter options */ - constructor(credentials: msRest.ServiceClientCredentials, subscriptionId: string, options?: Models.DnsManagementClientOptions) { + constructor(credentials: msRest.ServiceClientCredentials | TokenCredential, subscriptionId: string, options?: Models.DnsManagementClientOptions) { if (credentials == undefined) { throw new Error('\'credentials\' cannot be null.'); } diff --git a/sdk/dns/arm-dns/README.md b/sdk/dns/arm-dns/README.md index a298c815d4ab..806e1ac8583a 100644 --- a/sdk/dns/arm-dns/README.md +++ b/sdk/dns/arm-dns/README.md @@ -1,98 +1,107 @@ ## Azure DnsManagementClient SDK for JavaScript -This package contains an isomorphic SDK for DnsManagementClient. +This package contains an isomorphic SDK (runs both in Node.js and in browsers) for DnsManagementClient. ### Currently supported environments -- Node.js version 6.x.x or higher -- Browser JavaScript +- [LTS versions of Node.js](https://nodejs.org/about/releases/) +- Latest versions of Safari, Chrome, Edge, and Firefox. -### How to Install +### Prerequisites +You must have an [Azure subscription](https://azure.microsoft.com/free/). + +### How to install + +To use this SDK in your project, you will need to install two packages. +- `@azure/arm-dns` that contains the client. +- `@azure/identity` that provides different mechanisms for the client to authenticate your requests using Azure Active Directory. + +Install both packages using the below command: ```bash -npm install @azure/arm-dns +npm install --save @azure/arm-dns @azure/identity ``` +> **Note**: You may have used either `@azure/ms-rest-nodeauth` or `@azure/ms-rest-browserauth` in the past. These packages are in maintenance mode receiving critical bug fixes, but no new features. +If you are on a [Node.js that has LTS status](https://nodejs.org/about/releases/), or are writing a client side browser application, we strongly encourage you to upgrade to `@azure/identity` which uses the latest versions of Azure Active Directory and MSAL APIs and provides more authentication options. + ### How to use -#### nodejs - Authentication, client creation and get recordSets as an example written in TypeScript. +- If you are writing a client side browser application, + - Follow the instructions in the section on Authenticating client side browser applications in [Azure Identity examples](https://aka.ms/azsdk/js/identity/examples) to register your application in the Microsoft identity platform and set the right permissions. + - Copy the client ID and tenant ID from the Overview section of your app registration in Azure portal and use it in the browser sample below. +- If you are writing a server side application, + - [Select a credential from `@azure/identity` based on the authentication method of your choice](https://aka.ms/azsdk/js/identity/examples) + - Complete the set up steps required by the credential if any. + - Use the credential you picked in the place of `DefaultAzureCredential` in the Node.js sample below. -##### Install @azure/ms-rest-nodeauth +In the below samples, we pass the credential and the Azure subscription id to instantiate the client. +Once the client is created, explore the operations on it either in your favorite editor or in our [API reference documentation](https://docs.microsoft.com/javascript/api) to get started. -- Please install minimum version of `"@azure/ms-rest-nodeauth": "^3.0.0"`. -```bash -npm install @azure/ms-rest-nodeauth@"^3.0.0" -``` +#### nodejs - Authentication, client creation, and get recordSets as an example written in JavaScript. ##### Sample code -```typescript -import * as msRest from "@azure/ms-rest-js"; -import * as msRestAzure from "@azure/ms-rest-azure-js"; -import * as msRestNodeAuth from "@azure/ms-rest-nodeauth"; -import { DnsManagementClient, DnsManagementModels, DnsManagementMappers } from "@azure/arm-dns"; +```javascript +const { DefaultAzureCredential } = require("@azure/identity"); +const { DnsManagementClient } = require("@azure/arm-dns"); const subscriptionId = process.env["AZURE_SUBSCRIPTION_ID"]; -msRestNodeAuth.interactiveLogin().then((creds) => { - const client = new DnsManagementClient(creds, subscriptionId); - const resourceGroupName = "testresourceGroupName"; - const zoneName = "testzoneName"; - const relativeRecordSetName = "testrelativeRecordSetName"; - const recordType = "A"; - client.recordSets.get(resourceGroupName, zoneName, relativeRecordSetName, recordType).then((result) => { - console.log("The result is:"); - console.log(result); - }); +// Use `DefaultAzureCredential` or any other credential of your choice based on https://aka.ms/azsdk/js/identity/examples +// Please note that you can also use credentials from the `@azure/ms-rest-nodeauth` package instead. +const creds = new DefaultAzureCredential(); +const client = new DnsManagementClient(creds, subscriptionId); +const resourceGroupName = "testresourceGroupName"; +const zoneName = "testzoneName"; +const relativeRecordSetName = "testrelativeRecordSetName"; +const recordType = "A"; +client.recordSets.get(resourceGroupName, zoneName, relativeRecordSetName, recordType).then((result) => { + console.log("The result is:"); + console.log(result); }).catch((err) => { + console.log("An error occurred:"); console.error(err); }); ``` -#### browser - Authentication, client creation and get recordSets as an example written in JavaScript. +#### browser - Authentication, client creation, and get recordSets as an example written in JavaScript. -##### Install @azure/ms-rest-browserauth - -```bash -npm install @azure/ms-rest-browserauth -``` +In browser applications, we recommend using the `InteractiveBrowserCredential` that interactively authenticates using the default system browser. + - See [Single-page application: App registration guide](https://docs.microsoft.com/azure/active-directory/develop/scenario-spa-app-registration) to configure your app registration for the browser. + - Note down the client Id from the previous step and use it in the browser sample below. ##### Sample code -See https://github.com/Azure/ms-rest-browserauth to learn how to authenticate to Azure in the browser. - - index.html + ```html @azure/arm-dns sample - - + diff --git a/sdk/dns/arm-dns/package.json b/sdk/dns/arm-dns/package.json index e98d95a3c239..eb6cee0c9b59 100644 --- a/sdk/dns/arm-dns/package.json +++ b/sdk/dns/arm-dns/package.json @@ -2,10 +2,11 @@ "name": "@azure/arm-dns", "author": "Microsoft Corporation", "description": "DnsManagementClient Library with typescript type definitions for node.js and browser.", - "version": "4.0.0", + "version": "4.1.0", "dependencies": { - "@azure/ms-rest-azure-js": "^2.0.1", - "@azure/ms-rest-js": "^2.0.4", + "@azure/ms-rest-azure-js": "^2.1.0", + "@azure/ms-rest-js": "^2.2.0", + "@azure/core-auth": "^1.1.4", "tslib": "^1.10.0" }, "keywords": [ @@ -20,7 +21,7 @@ "module": "./esm/dnsManagementClient.js", "types": "./esm/dnsManagementClient.d.ts", "devDependencies": { - "typescript": "^3.5.3", + "typescript": "^3.6.0", "rollup": "^1.18.0", "rollup-plugin-node-resolve": "^5.2.0", "rollup-plugin-sourcemaps": "^0.4.2", diff --git a/sdk/dns/arm-dns/src/dnsManagementClient.ts b/sdk/dns/arm-dns/src/dnsManagementClient.ts index c2142deb6643..5a7d85c07575 100644 --- a/sdk/dns/arm-dns/src/dnsManagementClient.ts +++ b/sdk/dns/arm-dns/src/dnsManagementClient.ts @@ -9,6 +9,7 @@ */ import * as msRest from "@azure/ms-rest-js"; +import { TokenCredential } from "@azure/core-auth"; import * as Models from "./models"; import * as Mappers from "./models/mappers"; import * as operations from "./operations"; @@ -23,12 +24,17 @@ class DnsManagementClient extends DnsManagementClientContext { /** * Initializes a new instance of the DnsManagementClient class. - * @param credentials Credentials needed for the client to connect to Azure. + * @param credentials Credentials needed for the client to connect to Azure. Credentials + * implementing the TokenCredential interface from the @azure/identity package are recommended. For + * more information about these credentials, see + * {@link https://www.npmjs.com/package/@azure/identity}. Credentials implementing the + * ServiceClientCredentials interface from the older packages @azure/ms-rest-nodeauth and + * @azure/ms-rest-browserauth are also supported. * @param subscriptionId Specifies the Azure subscription ID, which uniquely identifies the * Microsoft Azure subscription. * @param [options] The parameter options */ - constructor(credentials: msRest.ServiceClientCredentials, subscriptionId: string, options?: Models.DnsManagementClientOptions) { + constructor(credentials: msRest.ServiceClientCredentials | TokenCredential, subscriptionId: string, options?: Models.DnsManagementClientOptions) { super(credentials, subscriptionId, options); this.recordSets = new operations.RecordSets(this); this.zones = new operations.Zones(this); diff --git a/sdk/dns/arm-dns/src/dnsManagementClientContext.ts b/sdk/dns/arm-dns/src/dnsManagementClientContext.ts index f4deb26940ab..f11d7d427648 100644 --- a/sdk/dns/arm-dns/src/dnsManagementClientContext.ts +++ b/sdk/dns/arm-dns/src/dnsManagementClientContext.ts @@ -10,24 +10,30 @@ import * as Models from "./models"; import * as msRest from "@azure/ms-rest-js"; +import { TokenCredential } from "@azure/core-auth"; import * as msRestAzure from "@azure/ms-rest-azure-js"; const packageName = "@azure/arm-dns"; -const packageVersion = "4.0.0"; +const packageVersion = "4.1.0"; export class DnsManagementClientContext extends msRestAzure.AzureServiceClient { - credentials: msRest.ServiceClientCredentials; + credentials: msRest.ServiceClientCredentials | TokenCredential; subscriptionId: string; apiVersion?: string; /** * Initializes a new instance of the DnsManagementClient class. - * @param credentials Credentials needed for the client to connect to Azure. + * @param credentials Credentials needed for the client to connect to Azure. Credentials + * implementing the TokenCredential interface from the @azure/identity package are recommended. For + * more information about these credentials, see + * {@link https://www.npmjs.com/package/@azure/identity}. Credentials implementing the + * ServiceClientCredentials interface from the older packages @azure/ms-rest-nodeauth and + * @azure/ms-rest-browserauth are also supported. * @param subscriptionId Specifies the Azure subscription ID, which uniquely identifies the * Microsoft Azure subscription. * @param [options] The parameter options */ - constructor(credentials: msRest.ServiceClientCredentials, subscriptionId: string, options?: Models.DnsManagementClientOptions) { + constructor(credentials: msRest.ServiceClientCredentials | TokenCredential, subscriptionId: string, options?: Models.DnsManagementClientOptions) { if (credentials == undefined) { throw new Error('\'credentials\' cannot be null.'); } diff --git a/sdk/domainservices/arm-domainservices/README.md b/sdk/domainservices/arm-domainservices/README.md index 40c93925e577..49b77e9cb854 100644 --- a/sdk/domainservices/arm-domainservices/README.md +++ b/sdk/domainservices/arm-domainservices/README.md @@ -1,89 +1,100 @@ ## Azure DomainservicesManagementClient SDK for JavaScript -This package contains an isomorphic SDK for DomainservicesManagementClient. +This package contains an isomorphic SDK (runs both in Node.js and in browsers) for DomainservicesManagementClient. ### Currently supported environments -- Node.js version 6.x.x or higher -- Browser JavaScript +- [LTS versions of Node.js](https://nodejs.org/about/releases/) +- Latest versions of Safari, Chrome, Edge, and Firefox. -### How to Install +### Prerequisites -``` -npm install @azure/arm-domainservices +You must have an [Azure subscription](https://azure.microsoft.com/free/). + +### How to install + +To use this SDK in your project, you will need to install two packages. +- `@azure/arm-domainservices` that contains the client. +- `@azure/identity` that provides different mechanisms for the client to authenticate your requests using Azure Active Directory. + +Install both packages using the below command: +```bash +npm install --save @azure/arm-domainservices @azure/identity ``` +> **Note**: You may have used either `@azure/ms-rest-nodeauth` or `@azure/ms-rest-browserauth` in the past. These packages are in maintenance mode receiving critical bug fixes, but no new features. +If you are on a [Node.js that has LTS status](https://nodejs.org/about/releases/), or are writing a client side browser application, we strongly encourage you to upgrade to `@azure/identity` which uses the latest versions of Azure Active Directory and MSAL APIs and provides more authentication options. + ### How to use -#### nodejs - Authentication, client creation and list domainServiceOperations as an example written in TypeScript. +- If you are writing a client side browser application, + - Follow the instructions in the section on Authenticating client side browser applications in [Azure Identity examples](https://aka.ms/azsdk/js/identity/examples) to register your application in the Microsoft identity platform and set the right permissions. + - Copy the client ID and tenant ID from the Overview section of your app registration in Azure portal and use it in the browser sample below. +- If you are writing a server side application, + - [Select a credential from `@azure/identity` based on the authentication method of your choice](https://aka.ms/azsdk/js/identity/examples) + - Complete the set up steps required by the credential if any. + - Use the credential you picked in the place of `DefaultAzureCredential` in the Node.js sample below. -##### Install @azure/ms-rest-nodeauth +In the below samples, we pass the credential and the Azure subscription id to instantiate the client. +Once the client is created, explore the operations on it either in your favorite editor or in our [API reference documentation](https://docs.microsoft.com/javascript/api) to get started. -``` -npm install @azure/ms-rest-nodeauth -``` +#### nodejs - Authentication, client creation, and list domainServiceOperations as an example written in JavaScript. ##### Sample code -```ts -import * as msRest from "@azure/ms-rest-js"; -import * as msRestAzure from "@azure/ms-rest-azure-js"; -import * as msRestNodeAuth from "@azure/ms-rest-nodeauth"; -import { DomainservicesManagementClient, DomainservicesManagementModels, DomainservicesManagementMappers } from "@azure/arm-domainservices"; +```javascript +const { DefaultAzureCredential } = require("@azure/identity"); +const { DomainservicesManagementClient } = require("@azure/arm-domainservices"); const subscriptionId = process.env["AZURE_SUBSCRIPTION_ID"]; -msRestNodeAuth.interactiveLogin().then((creds) => { - const client = new DomainservicesManagementClient(creds, subscriptionId); - client.domainServiceOperations.list().then((result) => { - console.log("The result is:"); - console.log(result); - }); +// Use `DefaultAzureCredential` or any other credential of your choice based on https://aka.ms/azsdk/js/identity/examples +// Please note that you can also use credentials from the `@azure/ms-rest-nodeauth` package instead. +const creds = new DefaultAzureCredential(); +const client = new DomainservicesManagementClient(creds, subscriptionId); + +client.domainServiceOperations.list().then((result) => { + console.log("The result is:"); + console.log(result); }).catch((err) => { + console.log("An error occurred:"); console.error(err); }); ``` -#### browser - Authentication, client creation and list domainServiceOperations as an example written in JavaScript. - -##### Install @azure/ms-rest-browserauth +#### browser - Authentication, client creation, and list domainServiceOperations as an example written in JavaScript. -``` -npm install @azure/ms-rest-browserauth -``` +In browser applications, we recommend using the `InteractiveBrowserCredential` that interactively authenticates using the default system browser. + - See [Single-page application: App registration guide](https://docs.microsoft.com/azure/active-directory/develop/scenario-spa-app-registration) to configure your app registration for the browser. + - Note down the client Id from the previous step and use it in the browser sample below. ##### Sample code -See https://github.com/Azure/ms-rest-browserauth to learn how to authenticate to Azure in the browser. - - index.html + ```html @azure/arm-domainservices sample - - + @@ -95,5 +106,4 @@ See https://github.com/Azure/ms-rest-browserauth to learn how to authenticate to - [Microsoft Azure SDK for Javascript](https://github.com/Azure/azure-sdk-for-js) - -![Impressions](https://azure-sdk-impressions.azurewebsites.net/api/impressions/azure-sdk-for-js%2Fsdk%2Fdomainservices%2Farm-domainservices%2FREADME.png) +![Impressions](https://azure-sdk-impressions.azurewebsites.net/api/impressions/azure-sdk-for-js/sdk/domainservices/arm-domainservices/README.png) diff --git a/sdk/domainservices/arm-domainservices/package.json b/sdk/domainservices/arm-domainservices/package.json index 6ed59f03b209..26d00ac128ec 100644 --- a/sdk/domainservices/arm-domainservices/package.json +++ b/sdk/domainservices/arm-domainservices/package.json @@ -2,10 +2,11 @@ "name": "@azure/arm-domainservices", "author": "Microsoft Corporation", "description": "DomainservicesManagementClient Library with typescript type definitions for node.js and browser.", - "version": "3.1.0", + "version": "3.2.0", "dependencies": { - "@azure/ms-rest-azure-js": "^1.1.0", - "@azure/ms-rest-js": "^1.1.0", + "@azure/ms-rest-azure-js": "^1.4.0", + "@azure/ms-rest-js": "^1.11.0", + "@azure/core-auth": "^1.1.4", "tslib": "^1.9.3" }, "keywords": [ @@ -20,7 +21,7 @@ "module": "./esm/domainservicesManagementClient.js", "types": "./esm/domainservicesManagementClient.d.ts", "devDependencies": { - "typescript": "^3.1.1", + "typescript": "^3.6.0", "rollup": "^0.66.2", "rollup-plugin-node-resolve": "^3.4.0", "uglify-js": "^3.4.9" diff --git a/sdk/domainservices/arm-domainservices/src/domainservicesManagementClient.ts b/sdk/domainservices/arm-domainservices/src/domainservicesManagementClient.ts index 99e64b1dd67b..0bb81ecbda52 100644 --- a/sdk/domainservices/arm-domainservices/src/domainservicesManagementClient.ts +++ b/sdk/domainservices/arm-domainservices/src/domainservicesManagementClient.ts @@ -9,6 +9,7 @@ */ import * as msRest from "@azure/ms-rest-js"; +import { TokenCredential } from "@azure/core-auth"; import * as Models from "./models"; import * as Mappers from "./models/mappers"; import * as operations from "./operations"; @@ -22,12 +23,17 @@ class DomainservicesManagementClient extends DomainservicesManagementClientConte /** * Initializes a new instance of the DomainservicesManagementClient class. - * @param credentials Credentials needed for the client to connect to Azure. + * @param credentials Credentials needed for the client to connect to Azure. Credentials + * implementing the TokenCredential interface from the @azure/identity package are recommended. For + * more information about these credentials, see + * {@link https://www.npmjs.com/package/@azure/identity}. Credentials implementing the + * ServiceClientCredentials interface from the older packages @azure/ms-rest-nodeauth and + * @azure/ms-rest-browserauth are also supported. * @param subscriptionId Gets subscription credentials which uniquely identify the Microsoft Azure * subscription. The subscription ID forms part of the URI for every service call. * @param [options] The parameter options */ - constructor(credentials: msRest.ServiceClientCredentials, subscriptionId: string, options?: Models.DomainservicesManagementClientOptions) { + constructor(credentials: msRest.ServiceClientCredentials | TokenCredential, subscriptionId: string, options?: Models.DomainservicesManagementClientOptions) { super(credentials, subscriptionId, options); this.domainServiceOperations = new operations.DomainServiceOperations(this); this.domainServices = new operations.DomainServices(this); diff --git a/sdk/domainservices/arm-domainservices/src/domainservicesManagementClientContext.ts b/sdk/domainservices/arm-domainservices/src/domainservicesManagementClientContext.ts index 83b1b9c3eecd..70778dd9f58f 100644 --- a/sdk/domainservices/arm-domainservices/src/domainservicesManagementClientContext.ts +++ b/sdk/domainservices/arm-domainservices/src/domainservicesManagementClientContext.ts @@ -10,24 +10,30 @@ import * as Models from "./models"; import * as msRest from "@azure/ms-rest-js"; +import { TokenCredential } from "@azure/core-auth"; import * as msRestAzure from "@azure/ms-rest-azure-js"; const packageName = "@azure/arm-domainservices"; -const packageVersion = "0.1.0"; +const packageVersion = "3.2.0"; export class DomainservicesManagementClientContext extends msRestAzure.AzureServiceClient { - credentials: msRest.ServiceClientCredentials; + credentials: msRest.ServiceClientCredentials | TokenCredential; subscriptionId: string; apiVersion?: string; /** * Initializes a new instance of the DomainservicesManagementClient class. - * @param credentials Credentials needed for the client to connect to Azure. + * @param credentials Credentials needed for the client to connect to Azure. Credentials + * implementing the TokenCredential interface from the @azure/identity package are recommended. For + * more information about these credentials, see + * {@link https://www.npmjs.com/package/@azure/identity}. Credentials implementing the + * ServiceClientCredentials interface from the older packages @azure/ms-rest-nodeauth and + * @azure/ms-rest-browserauth are also supported. * @param subscriptionId Gets subscription credentials which uniquely identify the Microsoft Azure * subscription. The subscription ID forms part of the URI for every service call. * @param [options] The parameter options */ - constructor(credentials: msRest.ServiceClientCredentials, subscriptionId: string, options?: Models.DomainservicesManagementClientOptions) { + constructor(credentials: msRest.ServiceClientCredentials | TokenCredential, subscriptionId: string, options?: Models.DomainservicesManagementClientOptions) { if (credentials == undefined) { throw new Error('\'credentials\' cannot be null.'); } diff --git a/sdk/eventhub/event-hubs/package.json b/sdk/eventhub/event-hubs/package.json index 1beca2b6736a..bfe648207a9b 100644 --- a/sdk/eventhub/event-hubs/package.json +++ b/sdk/eventhub/event-hubs/package.json @@ -93,7 +93,7 @@ "@azure/core-amqp": "^3.0.0", "@azure/core-asynciterator-polyfill": "^1.0.0", "@azure/core-auth": "^1.3.0", - "@azure/core-tracing": "1.0.0-preview.11", + "@azure/core-tracing": "1.0.0-preview.12", "@azure/logger": "^1.0.0", "buffer": "^5.2.1", "is-buffer": "^2.0.3", diff --git a/sdk/eventhub/event-hubs/src/diagnostics/instrumentEventData.ts b/sdk/eventhub/event-hubs/src/diagnostics/instrumentEventData.ts index d9175b5b2374..0b05dbfe00a5 100644 --- a/sdk/eventhub/event-hubs/src/diagnostics/instrumentEventData.ts +++ b/sdk/eventhub/event-hubs/src/diagnostics/instrumentEventData.ts @@ -25,7 +25,7 @@ export function instrumentEventData(eventData: EventData, span: Span): EventData // create a copy so the original isn't modified eventData = { ...eventData, properties: { ...eventData.properties } }; - const traceParent = getTraceParentHeader(span.context()); + const traceParent = getTraceParentHeader(span.spanContext()); if (traceParent) { eventData.properties![TRACEPARENT_PROPERTY] = traceParent; } diff --git a/sdk/eventhub/event-hubs/src/diagnostics/tracing.ts b/sdk/eventhub/event-hubs/src/diagnostics/tracing.ts index 3b7b1f0126a9..f81680a136f5 100644 --- a/sdk/eventhub/event-hubs/src/diagnostics/tracing.ts +++ b/sdk/eventhub/event-hubs/src/diagnostics/tracing.ts @@ -131,5 +131,5 @@ function isSpan(possibleSpan: Span | SpanContext | undefined): possibleSpan is S } const x = possibleSpan as Span; - return typeof x.context === "function"; + return typeof x.spanContext === "function"; } diff --git a/sdk/eventhub/event-hubs/src/eventDataBatch.ts b/sdk/eventhub/event-hubs/src/eventDataBatch.ts index bd3dda412e46..9d1e17821126 100644 --- a/sdk/eventhub/event-hubs/src/eventDataBatch.ts +++ b/sdk/eventhub/event-hubs/src/eventDataBatch.ts @@ -296,7 +296,7 @@ export class EventDataBatchImpl implements EventDataBatch { if (!previouslyInstrumented) { const { span: messageSpan } = createMessageSpan(options, this._context.config); eventData = instrumentEventData(eventData, messageSpan); - spanContext = messageSpan.context(); + spanContext = messageSpan.spanContext(); messageSpan.end(); } diff --git a/sdk/eventhub/event-hubs/test/internal/diagnostics/messageSpan.spec.ts b/sdk/eventhub/event-hubs/test/internal/diagnostics/messageSpan.spec.ts index 0a4e3271be42..4951d2c067bf 100644 --- a/sdk/eventhub/event-hubs/test/internal/diagnostics/messageSpan.spec.ts +++ b/sdk/eventhub/event-hubs/test/internal/diagnostics/messageSpan.spec.ts @@ -29,8 +29,8 @@ describe("#createMessageSpan()", () => { ); should.exist(span); - should.exist(span.context().spanId); - should.exist(span.context().traceId); + should.exist(span.spanContext().spanId); + should.exist(span.spanContext().traceId); should.equal((span as any).name, "Azure.EventHubs.message"); assert.deepStrictEqual((span as any).attributes, { diff --git a/sdk/eventhub/event-hubs/test/internal/partitionPump.spec.ts b/sdk/eventhub/event-hubs/test/internal/partitionPump.spec.ts index e30b7aa115c9..e3b0d5a02344 100644 --- a/sdk/eventhub/event-hubs/test/internal/partitionPump.spec.ts +++ b/sdk/eventhub/event-hubs/test/internal/partitionPump.spec.ts @@ -41,7 +41,7 @@ describe("PartitionPump", () => { } it("basic span properties are set", async () => { - const fakeParentSpanContext = setSpanContext(context.active(), new NoOpSpan().context()); + const fakeParentSpanContext = setSpanContext(context.active(), new NoOpSpan().spanContext()); const { tracer, resetTracer } = setTracerForTest(new TestTracer2()); await createProcessingSpan([], eventHubProperties, { @@ -94,11 +94,11 @@ describe("PartitionPump", () => { tracer.spanOptions!.links!.length.should.equal(3 - 1); // the test tracer just hands out a string integer that just gets // incremented - tracer.spanOptions!.links![0]!.context.traceId.should.equal(firstEvent.context().traceId); + tracer.spanOptions!.links![0]!.context.traceId.should.equal(firstEvent.spanContext().traceId); (tracer.spanOptions!.links![0]!.attributes!.enqueuedTime as number).should.equal( requiredEventProperties.enqueuedTimeUtc.getTime() ); - tracer.spanOptions!.links![1]!.context.traceId.should.equal(thirdEvent.context().traceId); + tracer.spanOptions!.links![1]!.context.traceId.should.equal(thirdEvent.spanContext().traceId); (tracer.spanOptions!.links![1]!.attributes!.enqueuedTime as number).should.equal( requiredEventProperties.enqueuedTimeUtc.getTime() ); diff --git a/sdk/eventhub/event-hubs/test/internal/sender.spec.ts b/sdk/eventhub/event-hubs/test/internal/sender.spec.ts index 04e65be92ff8..3e78b2d5f8b2 100644 --- a/sdk/eventhub/event-hubs/test/internal/sender.spec.ts +++ b/sdk/eventhub/event-hubs/test/internal/sender.spec.ts @@ -349,14 +349,14 @@ describe("EventHub Sender", function(): void { ] }; - tracer.getSpanGraph(rootSpan.context().traceId).should.eql(expectedGraph); + tracer.getSpanGraph(rootSpan.spanContext().traceId).should.eql(expectedGraph); tracer.getActiveSpans().length.should.equal(0, "All spans should have had end called."); resetTracer(); }); function legacyOptionsUsingSpanContext(rootSpan: TestSpan): Pick { return { - parentSpan: rootSpan.context() + parentSpan: rootSpan.spanContext() }; } @@ -422,7 +422,7 @@ describe("EventHub Sender", function(): void { ] }; - tracer.getSpanGraph(rootSpan.context().traceId).should.eql(expectedGraph); + tracer.getSpanGraph(rootSpan.spanContext().traceId).should.eql(expectedGraph); tracer.getActiveSpans().length.should.equal(0, "All spans should have had end called."); resetTracer(); }); @@ -473,7 +473,7 @@ describe("EventHub Sender", function(): void { ] }; - tracer.getSpanGraph(rootSpan.context().traceId).should.eql(expectedGraph); + tracer.getSpanGraph(rootSpan.spanContext().traceId).should.eql(expectedGraph); tracer.getActiveSpans().length.should.equal(0, "All spans should have had end called."); resetTracer(); }); @@ -667,7 +667,7 @@ describe("EventHub Sender", function(): void { ] }; - tracer.getSpanGraph(rootSpan.context().traceId).should.eql(expectedGraph); + tracer.getSpanGraph(rootSpan.spanContext().traceId).should.eql(expectedGraph); tracer.getActiveSpans().length.should.equal(0, "All spans should have had end called."); resetTracer(); @@ -725,7 +725,7 @@ describe("EventHub Sender", function(): void { ] }; - tracer.getSpanGraph(rootSpan.context().traceId).should.eql(expectedGraph); + tracer.getSpanGraph(rootSpan.spanContext().traceId).should.eql(expectedGraph); tracer.getActiveSpans().length.should.equal(0, "All spans should have had end called."); resetTracer(); @@ -886,7 +886,7 @@ describe("EventHub Sender", function(): void { ] }; - tracer.getSpanGraph(rootSpan.context().traceId).should.eql(expectedGraph); + tracer.getSpanGraph(rootSpan.spanContext().traceId).should.eql(expectedGraph); tracer.getActiveSpans().length.should.equal(0, "All spans should have had end called."); const knownSendSpans = tracer @@ -952,7 +952,7 @@ describe("EventHub Sender", function(): void { ] }; - tracer.getSpanGraph(rootSpan.context().traceId).should.eql(expectedGraph); + tracer.getSpanGraph(rootSpan.spanContext().traceId).should.eql(expectedGraph); tracer.getActiveSpans().length.should.equal(0, "All spans should have had end called."); resetTracer(); }); diff --git a/sdk/eventhub/event-hubs/test/public/hubruntime.spec.ts b/sdk/eventhub/event-hubs/test/public/hubruntime.spec.ts index 9248e375aa0b..35f0e324585d 100644 --- a/sdk/eventhub/event-hubs/test/public/hubruntime.spec.ts +++ b/sdk/eventhub/event-hubs/test/public/hubruntime.spec.ts @@ -96,7 +96,7 @@ describe("RuntimeInformation", function(): void { ] }; - tracer.getSpanGraph(rootSpan.context().traceId).should.eql(expectedGraph); + tracer.getSpanGraph(rootSpan.spanContext().traceId).should.eql(expectedGraph); tracer.getActiveSpans().length.should.equal(0, "All spans should have had end called."); resetTracer(); }); @@ -131,7 +131,7 @@ describe("RuntimeInformation", function(): void { ] }; - tracer.getSpanGraph(rootSpan.context().traceId).should.eql(expectedGraph); + tracer.getSpanGraph(rootSpan.spanContext().traceId).should.eql(expectedGraph); tracer.getActiveSpans().length.should.equal(0, "All spans should have had end called."); resetTracer(); }); @@ -192,7 +192,7 @@ describe("RuntimeInformation", function(): void { ] }; - tracer.getSpanGraph(rootSpan.context().traceId).should.eql(expectedGraph); + tracer.getSpanGraph(rootSpan.spanContext().traceId).should.eql(expectedGraph); tracer.getActiveSpans().length.should.equal(0, "All spans should have had end called."); resetTracer(); }); @@ -229,7 +229,7 @@ describe("RuntimeInformation", function(): void { ] }; - tracer.getSpanGraph(rootSpan.context().traceId).should.eql(expectedGraph); + tracer.getSpanGraph(rootSpan.spanContext().traceId).should.eql(expectedGraph); tracer.getActiveSpans().length.should.equal(0, "All spans should have had end called."); resetTracer(); }); @@ -372,7 +372,7 @@ describe("RuntimeInformation", function(): void { ] }; - tracer.getSpanGraph(rootSpan.context().traceId).should.eql(expectedGraph); + tracer.getSpanGraph(rootSpan.spanContext().traceId).should.eql(expectedGraph); tracer.getActiveSpans().length.should.equal(0, "All spans should have had end called."); resetTracer(); }); @@ -411,7 +411,7 @@ describe("RuntimeInformation", function(): void { ] }; - tracer.getSpanGraph(rootSpan.context().traceId).should.eql(expectedGraph); + tracer.getSpanGraph(rootSpan.spanContext().traceId).should.eql(expectedGraph); tracer.getActiveSpans().length.should.equal(0, "All spans should have had end called."); resetTracer(); }); diff --git a/sdk/formrecognizer/ai-form-recognizer/package.json b/sdk/formrecognizer/ai-form-recognizer/package.json index ac5c69b81efa..64ab9deb5ea2 100644 --- a/sdk/formrecognizer/ai-form-recognizer/package.json +++ b/sdk/formrecognizer/ai-form-recognizer/package.json @@ -82,14 +82,14 @@ "@azure/core-lro": "^1.0.2", "@azure/core-paging": "^1.1.1", "@azure/core-http": "^1.2.0", - "@azure/core-tracing": "1.0.0-preview.11", + "@azure/core-tracing": "1.0.0-preview.12", "@azure/logger": "^1.0.0", "tslib": "^2.2.0" }, "devDependencies": { "@azure/dev-tool": "^1.0.0", "@azure/eslint-plugin-azure-sdk": "^3.0.0", - "@azure/identity": "2.0.0-beta.3", + "@azure/identity": "2.0.0-beta.4", "@azure/test-utils": "^1.0.0", "@azure/test-utils-recorder": "^1.0.0", "@microsoft/api-extractor": "7.7.11", diff --git a/sdk/formrecognizer/perf-tests/ai-form-recognizer/package.json b/sdk/formrecognizer/perf-tests/ai-form-recognizer/package.json index 969f726ba369..a67cbaf8f5ea 100644 --- a/sdk/formrecognizer/perf-tests/ai-form-recognizer/package.json +++ b/sdk/formrecognizer/perf-tests/ai-form-recognizer/package.json @@ -9,7 +9,7 @@ "license": "ISC", "dependencies": { "@azure/ai-form-recognizer": "3.1.0-beta.3", - "@azure/identity": "2.0.0-beta.3", + "@azure/identity": "2.0.0-beta.4", "@azure/test-utils-perfstress": "^1.0.0", "dotenv": "^8.2.0", "tslib": "^2.2.0" diff --git a/sdk/identity/identity-cache-persistence/.eslintrc.json b/sdk/identity/identity-cache-persistence/.eslintrc.json new file mode 100644 index 000000000000..1c1503b9333a --- /dev/null +++ b/sdk/identity/identity-cache-persistence/.eslintrc.json @@ -0,0 +1,8 @@ +{ + "plugins": ["@azure/azure-sdk"], + "extends": ["plugin:@azure/azure-sdk/azure-sdk-base"], + "rules": { + "@azure/azure-sdk/ts-package-json-module": "off", + "@azure/azure-sdk/ts-package-json-engine-is-present": "off" + } +} diff --git a/sdk/identity/identity-cache-persistence/.gitignore b/sdk/identity/identity-cache-persistence/.gitignore new file mode 100644 index 000000000000..3c8af5ad63ff --- /dev/null +++ b/sdk/identity/identity-cache-persistence/.gitignore @@ -0,0 +1 @@ +!test/assets/cert.pem diff --git a/sdk/identity/identity-cache-persistence/CHANGELOG.md b/sdk/identity/identity-cache-persistence/CHANGELOG.md new file mode 100644 index 000000000000..078f0038aef8 --- /dev/null +++ b/sdk/identity/identity-cache-persistence/CHANGELOG.md @@ -0,0 +1,11 @@ +# Release History + +## 1.0.0-beta.1 (Unreleased) + +### New features + +- This release marks the initial beta availability of the `@azure/identity-cache-persistence` package. This package provides an extension to `@azure/identity` that enables persistent token caching in a secure storage defined by the Operating System (caching of token values across sessions), which allows skipping interactive authentication flows if a previously-cached token is still available. This is implemented using the following technologies: + - On Windows, the cache will use a DPAPI-protected file. + - On macOS, the cache will use the macOS Keychain. + - On Linux, the cache will use `libsecret` to store the tokens (this will use a provider backend, e.g. GNOME Keyring). + - On Linux and macOS, the cache may optionally use an unencrypted file as a last resort, but only if the `allowUnencryptedStorage` property is set to true in the `tokenCachePersistenceOptions` passed to the credential constructor. diff --git a/sdk/identity/identity-cache-persistence/LICENSE b/sdk/identity/identity-cache-persistence/LICENSE new file mode 100644 index 000000000000..ea8fb1516028 --- /dev/null +++ b/sdk/identity/identity-cache-persistence/LICENSE @@ -0,0 +1,21 @@ +The MIT License (MIT) + +Copyright (c) 2020 Microsoft + +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. diff --git a/sdk/identity/identity-cache-persistence/README.md b/sdk/identity/identity-cache-persistence/README.md new file mode 100644 index 000000000000..ffd728000ef3 --- /dev/null +++ b/sdk/identity/identity-cache-persistence/README.md @@ -0,0 +1,95 @@ +## Azure Identity Extension for Token Cache Persistence + +This package provides an extension to the Azure Identity library for JavaScript ([`@azure/identity`](https://npmjs.com/package/@azure/identity)) that enables persistent token caching. Token cache persistence allows the built-in token cache to persist across sessions using a secure storage system provided by the local Operating System. + +[Source code](https://github.com/Azure/azure-sdk-for-js/tree/main/sdk/identity/identity-cache-persistence) | [Samples](https://github.com/Azure/azure-sdk-for-js/blob/main/sdk/identity/identity-cache-persistence/samples-dev) + +## Getting started + +### Install the package + +This package is designed to be used with Azure Identity for JavaScript. Install both `@azure/identity` and this package using `npm`: + +```sh +$ npm install --save @azure/identity +$ npm install --save @azure/identity-cache-persistence +``` + +### Prerequisites + +- An [Azure subscription](https://azure.microsoft.com/free/). + +#### Supported Environments + +Azure Identity extensions for JavaScript support stable (even numbered) versions of Node.js starting from v12. While it may run in other Node versions, no support is guaranteed. `@azure/identity-cache-persistence` **does not** support browser environments. + +## Key concepts + +If this is your first time using `@azure/identity` or the Microsoft identity platform (Azure Active Directory), we recommend that you read [Using `@azure/identity` with Microsoft Identity Platform](https://github.com/Azure/azure-sdk-for-js/blob/main/documentation/using-azure-identity.md) first. This document will give you a deeper understanding of the platform and how to configure your Azure account correctly. + +### Azure Identity Extensions + +As of `@azure/identity` version 2.0.0, the Identity client library for JavaScript includes an extension API. This package (`@azure/identity-cache-persistence`) exports an extension object that you must pass as an argument to the top-level `useIdentityExtension` function from the `@azure/identity` package. Enable token cache persistence in your program as follows: + +```typescript +import { useIdentityExtension } from "@azure/identity"; +import { cachePersistenceExtension } from "@azure/identity-cache-persistence"; + +useIdentityExtension(cachePersistenceExtension); +``` + +After calling `useIdentityExtension`, the persistent token cache extension is registered to the `@azure/identity` package and will be available on all credentials that support persistent token caching (those that have `tokenCachePersistenceOptions` in their constructor options). + +## Examples + +Once the extension is registered, you can enable token cache persistence by passing `tokenCachePersistenceOptions` with an `enabled` property set to `true` to a credential constructor. In the following example, we use the `DeviceCodeCredential`, since persistent caching of its tokens allows you to skip the interactive device-code authentication flow if a cached token is available. + +```typescript +import { useIdentityExtension, DeviceCodeCredential } from "@azure/identity"; +import { cachePersistenceExtension } from "@azure/identity-cache-persistence"; + +useIdentityExtension(cachePersistenceExtension); + +async function main() { + const credential = new DeviceCodeCredential({ + tokenCachePersistenceOptions: { + enabled: true + } + }); + + // We'll use the Microsoft Graph scope as an example + const scope = "https://graph.microsoft.com/.default"; + + // Print out part of the access token + console.log((await credential.getToken(scope)).token.substr(0, 10), "..."); +} + +main().catch((error) => { + console.error("An error occurred:", error); + process.exit(1); +}); +``` + +## 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`: + +```javascript +import { setLogLevel } from "@azure/logger"; + +setLogLevel("info"); +``` + +## Next steps + +### Provide Feedback + +If you encounter bugs or have suggestions, please [open an issue](https://github.com/Azure/azure-sdk-for-js/issues). + +## 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. + +![Impressions](https://azure-sdk-impressions.azurewebsites.net/api/impressions/azure-sdk-for-js%2Fsdk%2Fidentity%2Fidentity%2FREADME.png) diff --git a/sdk/identity/identity-cache-persistence/api-extractor.json b/sdk/identity/identity-cache-persistence/api-extractor.json new file mode 100644 index 000000000000..f7b471ed2265 --- /dev/null +++ b/sdk/identity/identity-cache-persistence/api-extractor.json @@ -0,0 +1,31 @@ +{ + "$schema": "https://developer.microsoft.com/json-schemas/api-extractor/v7/api-extractor.schema.json", + "mainEntryPointFilePath": "./types/identity-cache-persistence/src/index.d.ts", + "docModel": { + "enabled": true + }, + "apiReport": { + "enabled": true, + "reportFolder": "./review" + }, + "dtsRollup": { + "enabled": true, + "untrimmedFilePath": "", + "publicTrimmedFilePath": "./types/identity-cache-persistence.d.ts" + }, + "messages": { + "tsdocMessageReporting": { + "default": { + "logLevel": "none" + } + }, + "extractorMessageReporting": { + "ae-missing-release-tag": { + "logLevel": "none" + }, + "ae-unresolved-link": { + "logLevel": "none" + } + } + } +} diff --git a/sdk/identity/identity-cache-persistence/package.json b/sdk/identity/identity-cache-persistence/package.json new file mode 100644 index 000000000000..abaac4be0321 --- /dev/null +++ b/sdk/identity/identity-cache-persistence/package.json @@ -0,0 +1,100 @@ +{ + "name": "@azure/identity-cache-persistence", + "version": "1.0.0-beta.1", + "description": "A secure, persistent token cache for Azure Identity credentials that uses the OS secret-management API", + "main": "dist/index.js", + "module": "dist-esm/identity-cache-persistence/src/index.js", + "types": "./types/identity-cache-persistence.d.ts", + "scripts": { + "audit": "node ../../../common/scripts/rush-audit.js && rimraf node_modules package-lock.json && npm i --package-lock-only 2>&1 && npm audit", + "build:samples": "echo skipped", + "build:test": "tsc -p . && rollup -c rollup.config.js 2>&1", + "build": "npm run extract-api && tsc -p . && rollup -c 2>&1", + "check-format": "prettier --list-different --config ../../../.prettierrc.json --ignore-path ../../../.prettierignore \"src/**/*.ts\" \"test/**/*.ts\" \"*.{js,json}\" \"samples-dev/**/*.ts\"", + "clean": "rimraf dist dist-* typings *.tgz *.log", + "execute:samples": "echo skipped", + "extract-api": "tsc -p . && api-extractor run --local", + "format": "prettier --write --config ../../../.prettierrc.json --ignore-path ../../../.prettierignore \"src/**/*.ts\" \"test/**/*.ts\" \"*.{js,json}\" \"samples-dev/**/*.ts\"", + "integration-test:browser": "echo skipped", + "integration-test:node": "echo skipped", + "integration-test": "npm run integration-test:node && npm run integration-test:browser", + "lint:fix": "eslint package.json api-extractor.json src test --ext .ts --fix --fix-type [problem,suggestion]", + "lint": "eslint package.json api-extractor.json src test --ext .ts", + "pack": "npm pack 2>&1", + "prebuild": "npm run clean", + "test:browser": "npm run clean && npm run build:test && npm run unit-test:browser && npm run integration-test:browser", + "test:node": "npm run clean && npm run build:test && npm run unit-test:node && npm run integration-test:node", + "test": "npm run clean && npm run build:test && npm run unit-test && npm run integration-test", + "unit-test:browser": "echo skipped", + "unit-test:node": "mocha -r esm -r ts-node/register --reporter ../../../common/tools/mocha-multi-reporter.js --timeout 180000 --full-trace --exclude \"test/**/browser/**/*.spec.ts\" \"test/**/*.spec.ts\"", + "unit-test": "npm run unit-test:node && npm run unit-test:browser", + "docs": "typedoc --excludePrivate --excludeNotExported --excludeExternals --stripInternal --mode file --out ./dist/docs ./src" + }, + "files": [ + "dist/", + "dist-esm/identity/src", + "dist-esm/identity-cache-persistence/src", + "types/identity-cache-persistence.d.ts", + "README.md", + "LICENSE" + ], + "engines": { + "node": ">=12.0.0" + }, + "repository": "github:Azure/azure-sdk-for-js", + "keywords": [ + "azure", + "cloud", + "active directory", + "authentication", + "credential", + "certificate", + "persistence", + "cache" + ], + "author": "Microsoft Corporation", + "license": "MIT", + "bugs": { + "url": "https://github.com/Azure/azure-sdk-for-js/issues" + }, + "engine": { + "node": ">=12.0.0" + }, + "homepage": "https://github.com/Azure/azure-sdk-for-js/tree/main/sdk/identity/identity-cache-persistence/README.md", + "sideEffects": false, + "dependencies": { + "@azure/core-auth": "^1.3.0", + "@azure/identity": "^2.0.0-beta.4", + "@azure/msal-node": "^1.1.0", + "@azure/msal-node-extensions": "1.0.0-alpha.6", + "keytar": "^7.6.0", + "tslib": "^2.2.0" + }, + "devDependencies": { + "@azure/eslint-plugin-azure-sdk": "^3.0.0", + "@azure/dev-tool": "^1.0.0", + "@azure/test-utils-recorder": "^1.0.0", + "@microsoft/api-extractor": "7.7.11", + "@types/jws": "^3.2.2", + "@types/mocha": "^7.0.2", + "@types/node": "^8.0.0", + "@types/qs": "^6.5.3", + "assert": "^1.4.1", + "cross-env": "^7.0.2", + "dotenv": "^8.2.0", + "eslint": "^7.15.0", + "inherits": "^2.0.3", + "mocha": "^7.1.1", + "mocha-junit-reporter": "^1.18.0", + "puppeteer": "^3.3.0", + "rimraf": "^3.0.0", + "rollup": "^1.16.3", + "typescript": "~4.2.0", + "util": "^0.12.1", + "sinon": "^9.0.2", + "@types/sinon": "^9.0.4", + "mock-fs": "^4.10.4", + "typedoc": "0.15.2", + "prettier": "^1.16.4" + } +} diff --git a/sdk/identity/identity-cache-persistence/recordings/node/clientcertificatecredential_internal/recording_accepts_tokencachepersistenceoptions.js b/sdk/identity/identity-cache-persistence/recordings/node/clientcertificatecredential_internal/recording_accepts_tokencachepersistenceoptions.js new file mode 100644 index 000000000000..0011ebc6bd57 --- /dev/null +++ b/sdk/identity/identity-cache-persistence/recordings/node/clientcertificatecredential_internal/recording_accepts_tokencachepersistenceoptions.js @@ -0,0 +1,111 @@ +let nock = require('nock'); + +module.exports.hash = "f2f314ebfb0b21270e281f8cfaa428eb"; + +module.exports.testInfo = {"uniqueName":{},"newDate":{}} + +nock('https://login.microsoftonline.com:443', {"encodedQueryParams":true}) + .get('/common/discovery/instance') + .query(true) + .reply(200, {"tenant_discovery_endpoint":"https://login.microsoftonline.com/12345678-1234-1234-1234-123456789012/v2.0/.well-known/openid-configuration","api-version":"1.1","metadata":[{"preferred_network":"login.microsoftonline.com","preferred_cache":"login.windows.net","aliases":["login.microsoftonline.com","login.windows.net","login.microsoft.com","sts.windows.net"]},{"preferred_network":"login.partner.microsoftonline.cn","preferred_cache":"login.partner.microsoftonline.cn","aliases":["login.partner.microsoftonline.cn","login.chinacloudapi.cn"]},{"preferred_network":"login.microsoftonline.de","preferred_cache":"login.microsoftonline.de","aliases":["login.microsoftonline.de"]},{"preferred_network":"login.microsoftonline.us","preferred_cache":"login.microsoftonline.us","aliases":["login.microsoftonline.us","login.usgovcloudapi.net"]},{"preferred_network":"login-us.microsoftonline.com","preferred_cache":"login-us.microsoftonline.com","aliases":["login-us.microsoftonline.com"]}]}, [ + 'Cache-Control', + 'max-age=86400, private', + 'Content-Type', + 'application/json; charset=utf-8', + 'Strict-Transport-Security', + 'max-age=31536000; includeSubDomains', + 'X-Content-Type-Options', + 'nosniff', + 'Access-Control-Allow-Origin', + '*', + 'Access-Control-Allow-Methods', + 'GET, OPTIONS', + 'P3P', + 'CP="DSP CUR OTPi IND OTRi ONL FIN"', + 'x-ms-request-id', + 'afae0f31-2449-4ead-bae3-5872d9ac1000', + 'x-ms-ests-server', + '2.1.11787.14 - NCUS ProdSlices', + 'Set-Cookie', + 'fpc=fpc;; expires=Fri, 09-Jul-2021 22:05:37 GMT; path=/; secure; HttpOnly; SameSite=None', + 'Set-Cookie', + 'esctx=esctx; domain=.login.microsoftonline.com; path=/; secure; HttpOnly; SameSite=None', + 'Set-Cookie', + 'x-ms-gateway-slice=estsfd; path=/; secure; samesite=none; httponly', + 'Set-Cookie', + 'stsservicecookie=estsfd; path=/; secure; samesite=none; httponly', + 'Date', + 'Wed, 09 Jun 2021 22:05:36 GMT', + 'Content-Length', + '980' +]); + +nock('https://login.microsoftonline.com:443', {"encodedQueryParams":true}) + .get('/12345678-1234-1234-1234-123456789012/v2.0/.well-known/openid-configuration') + .reply(200, {"token_endpoint":"https://login.microsoftonline.com/12345678-1234-1234-1234-123456789012/oauth2/v2.0/token","token_endpoint_auth_methods_supported":["client_secret_post","private_key_jwt","client_secret_basic"],"jwks_uri":"https://login.microsoftonline.com/12345678-1234-1234-1234-123456789012/discovery/v2.0/keys","response_modes_supported":["query","fragment","form_post"],"subject_types_supported":["pairwise"],"id_token_signing_alg_values_supported":["RS256"],"response_types_supported":["code","id_token","code id_token","id_token token"],"scopes_supported":["openid","profile","email","offline_access"],"issuer":"https://login.microsoftonline.com/12345678-1234-1234-1234-123456789012/v2.0","request_uri_parameter_supported":false,"userinfo_endpoint":"https://graph.microsoft.com/oidc/userinfo","authorization_endpoint":"https://login.microsoftonline.com/12345678-1234-1234-1234-123456789012/oauth2/v2.0/authorize","device_authorization_endpoint":"https://login.microsoftonline.com/12345678-1234-1234-1234-123456789012/oauth2/v2.0/devicecode","http_logout_supported":true,"frontchannel_logout_supported":true,"end_session_endpoint":"https://login.microsoftonline.com/12345678-1234-1234-1234-123456789012/oauth2/v2.0/logout","claims_supported":["sub","iss","cloud_instance_name","cloud_instance_host_name","cloud_graph_host_name","msgraph_host","aud","exp","iat","auth_time","acr","nonce","preferred_username","name","tid","ver","at_hash","c_hash","email"],"tenant_region_scope":"NA","cloud_instance_name":"microsoftonline.com","cloud_graph_host_name":"graph.windows.net","msgraph_host":"graph.microsoft.com","rbac_url":"https://pas.windows.net"}, [ + 'Cache-Control', + 'max-age=86400, private', + 'Content-Type', + 'application/json; charset=utf-8', + 'Strict-Transport-Security', + 'max-age=31536000; includeSubDomains', + 'X-Content-Type-Options', + 'nosniff', + 'Access-Control-Allow-Origin', + '*', + 'Access-Control-Allow-Methods', + 'GET, OPTIONS', + 'P3P', + 'CP="DSP CUR OTPi IND OTRi ONL FIN"', + 'x-ms-request-id', + '9b573481-cec3-4a8f-add9-eabeab1c2300', + 'x-ms-ests-server', + '2.1.11787.14 - SCUS ProdSlices', + 'Set-Cookie', + 'fpc=fpc;; expires=Fri, 09-Jul-2021 22:05:37 GMT; path=/; secure; HttpOnly; SameSite=None', + 'Set-Cookie', + 'esctx=esctx; domain=.login.microsoftonline.com; path=/; secure; HttpOnly; SameSite=None', + 'Set-Cookie', + 'x-ms-gateway-slice=estsfd; path=/; secure; samesite=none; httponly', + 'Set-Cookie', + 'stsservicecookie=estsfd; path=/; secure; samesite=none; httponly', + 'Date', + 'Wed, 09 Jun 2021 22:05:37 GMT', + 'Content-Length', + '1651' +]); + +nock('https://login.microsoftonline.com:443', {"encodedQueryParams":true}) + .post('/12345678-1234-1234-1234-123456789012/oauth2/v2.0/token', "client_id=azure_client_id&scope=https%3A%2F%2Fgraph.microsoft.com%2F.default%20openid%20profile%20offline_access&grant_type=client_credentials&x-client-SKU=msal.js.node&x-client-VER=1.1.0&x-client-OS=linux&x-client-CPU=x64&x-ms-lib-capability=retry-after, h429&x-client-current-telemetry=2|771,0|,&x-client-last-telemetry=2|0|||0,0&client-request-id=client-request-id&client_assertion=client_assertion&client_assertion_type=urn%3Aietf%3Aparams%3Aoauth%3Aclient-assertion-type%3Ajwt-bearer") + .reply(200, {"token_type":"Bearer","expires_in":3599,"ext_expires_in":3599,"access_token":"access_token"}, [ + 'Cache-Control', + 'no-store, no-cache', + 'Pragma', + 'no-cache', + 'Content-Type', + 'application/json; charset=utf-8', + 'Expires', + '-1', + 'Strict-Transport-Security', + 'max-age=31536000; includeSubDomains', + 'X-Content-Type-Options', + 'nosniff', + 'P3P', + 'CP="DSP CUR OTPi IND OTRi ONL FIN"', + 'x-ms-request-id', + '76255ad6-29e6-4527-a4a3-ff6ce6a97600', + 'x-ms-ests-server', + '2.1.11787.14 - WUS2 ProdSlices', + 'x-ms-clitelem', + '1,0,0,,', + 'Set-Cookie', + 'fpc=fpc;; expires=Fri, 09-Jul-2021 22:05:37 GMT; path=/; secure; HttpOnly; SameSite=None', + 'Set-Cookie', + 'x-ms-gateway-slice=estsfd; path=/; secure; samesite=none; httponly', + 'Set-Cookie', + 'stsservicecookie=estsfd; path=/; secure; samesite=none; httponly', + 'Date', + 'Wed, 09 Jun 2021 22:05:37 GMT', + 'Content-Length', + '1588' +]); diff --git a/sdk/identity/identity-cache-persistence/recordings/node/clientcertificatecredential_internal/recording_authenticates_silently_with_tokencachepersistenceoptions.js b/sdk/identity/identity-cache-persistence/recordings/node/clientcertificatecredential_internal/recording_authenticates_silently_with_tokencachepersistenceoptions.js new file mode 100644 index 000000000000..34219511f44d --- /dev/null +++ b/sdk/identity/identity-cache-persistence/recordings/node/clientcertificatecredential_internal/recording_authenticates_silently_with_tokencachepersistenceoptions.js @@ -0,0 +1,182 @@ +let nock = require('nock'); + +module.exports.hash = "a35165f908e286361502828da4c76736"; + +module.exports.testInfo = {"uniqueName":{},"newDate":{}} + +nock('https://login.microsoftonline.com:443', {"encodedQueryParams":true}) + .get('/common/discovery/instance') + .query(true) + .reply(200, {"tenant_discovery_endpoint":"https://login.microsoftonline.com/12345678-1234-1234-1234-123456789012/v2.0/.well-known/openid-configuration","api-version":"1.1","metadata":[{"preferred_network":"login.microsoftonline.com","preferred_cache":"login.windows.net","aliases":["login.microsoftonline.com","login.windows.net","login.microsoft.com","sts.windows.net"]},{"preferred_network":"login.partner.microsoftonline.cn","preferred_cache":"login.partner.microsoftonline.cn","aliases":["login.partner.microsoftonline.cn","login.chinacloudapi.cn"]},{"preferred_network":"login.microsoftonline.de","preferred_cache":"login.microsoftonline.de","aliases":["login.microsoftonline.de"]},{"preferred_network":"login.microsoftonline.us","preferred_cache":"login.microsoftonline.us","aliases":["login.microsoftonline.us","login.usgovcloudapi.net"]},{"preferred_network":"login-us.microsoftonline.com","preferred_cache":"login-us.microsoftonline.com","aliases":["login-us.microsoftonline.com"]}]}, [ + 'Cache-Control', + 'max-age=86400, private', + 'Content-Type', + 'application/json; charset=utf-8', + 'Strict-Transport-Security', + 'max-age=31536000; includeSubDomains', + 'X-Content-Type-Options', + 'nosniff', + 'Access-Control-Allow-Origin', + '*', + 'Access-Control-Allow-Methods', + 'GET, OPTIONS', + 'P3P', + 'CP="DSP CUR OTPi IND OTRi ONL FIN"', + 'x-ms-request-id', + '839e3095-5d46-49ec-a3de-bde9f1a40e00', + 'x-ms-ests-server', + '2.1.11787.14 - NCUS ProdSlices', + 'Set-Cookie', + 'fpc=fpc;; expires=Fri, 09-Jul-2021 22:05:37 GMT; path=/; secure; HttpOnly; SameSite=None', + 'Set-Cookie', + 'esctx=esctx; domain=.login.microsoftonline.com; path=/; secure; HttpOnly; SameSite=None', + 'Set-Cookie', + 'x-ms-gateway-slice=estsfd; path=/; secure; samesite=none; httponly', + 'Set-Cookie', + 'stsservicecookie=estsfd; path=/; secure; samesite=none; httponly', + 'Date', + 'Wed, 09 Jun 2021 22:05:37 GMT', + 'Content-Length', + '980' +]); + +nock('https://login.microsoftonline.com:443', {"encodedQueryParams":true}) + .get('/12345678-1234-1234-1234-123456789012/v2.0/.well-known/openid-configuration') + .reply(200, {"token_endpoint":"https://login.microsoftonline.com/12345678-1234-1234-1234-123456789012/oauth2/v2.0/token","token_endpoint_auth_methods_supported":["client_secret_post","private_key_jwt","client_secret_basic"],"jwks_uri":"https://login.microsoftonline.com/12345678-1234-1234-1234-123456789012/discovery/v2.0/keys","response_modes_supported":["query","fragment","form_post"],"subject_types_supported":["pairwise"],"id_token_signing_alg_values_supported":["RS256"],"response_types_supported":["code","id_token","code id_token","id_token token"],"scopes_supported":["openid","profile","email","offline_access"],"issuer":"https://login.microsoftonline.com/12345678-1234-1234-1234-123456789012/v2.0","request_uri_parameter_supported":false,"userinfo_endpoint":"https://graph.microsoft.com/oidc/userinfo","authorization_endpoint":"https://login.microsoftonline.com/12345678-1234-1234-1234-123456789012/oauth2/v2.0/authorize","device_authorization_endpoint":"https://login.microsoftonline.com/12345678-1234-1234-1234-123456789012/oauth2/v2.0/devicecode","http_logout_supported":true,"frontchannel_logout_supported":true,"end_session_endpoint":"https://login.microsoftonline.com/12345678-1234-1234-1234-123456789012/oauth2/v2.0/logout","claims_supported":["sub","iss","cloud_instance_name","cloud_instance_host_name","cloud_graph_host_name","msgraph_host","aud","exp","iat","auth_time","acr","nonce","preferred_username","name","tid","ver","at_hash","c_hash","email"],"tenant_region_scope":"NA","cloud_instance_name":"microsoftonline.com","cloud_graph_host_name":"graph.windows.net","msgraph_host":"graph.microsoft.com","rbac_url":"https://pas.windows.net"}, [ + 'Cache-Control', + 'max-age=86400, private', + 'Content-Type', + 'application/json; charset=utf-8', + 'Strict-Transport-Security', + 'max-age=31536000; includeSubDomains', + 'X-Content-Type-Options', + 'nosniff', + 'Access-Control-Allow-Origin', + '*', + 'Access-Control-Allow-Methods', + 'GET, OPTIONS', + 'P3P', + 'CP="DSP CUR OTPi IND OTRi ONL FIN"', + 'x-ms-request-id', + '9e1bae85-2215-44d4-8edc-49f2ba2c1a00', + 'x-ms-ests-server', + '2.1.11787.14 - EUS ProdSlices', + 'Set-Cookie', + 'fpc=fpc;; expires=Fri, 09-Jul-2021 22:05:37 GMT; path=/; secure; HttpOnly; SameSite=None', + 'Set-Cookie', + 'esctx=esctx; domain=.login.microsoftonline.com; path=/; secure; HttpOnly; SameSite=None', + 'Set-Cookie', + 'x-ms-gateway-slice=estsfd; path=/; secure; samesite=none; httponly', + 'Set-Cookie', + 'stsservicecookie=estsfd; path=/; secure; samesite=none; httponly', + 'Date', + 'Wed, 09 Jun 2021 22:05:37 GMT', + 'Content-Length', + '1651' +]); + +nock('https://login.microsoftonline.com:443', {"encodedQueryParams":true}) + .post('/12345678-1234-1234-1234-123456789012/oauth2/v2.0/token', "client_id=azure_client_id&scope=https%3A%2F%2Fgraph.microsoft.com%2F.default%20openid%20profile%20offline_access&grant_type=client_credentials&x-client-SKU=msal.js.node&x-client-VER=1.1.0&x-client-OS=linux&x-client-CPU=x64&x-ms-lib-capability=retry-after, h429&x-client-current-telemetry=2|771,0|,&x-client-last-telemetry=2|0|||0,0&client-request-id=client-request-id&client_assertion=client_assertion&client_assertion_type=urn%3Aietf%3Aparams%3Aoauth%3Aclient-assertion-type%3Ajwt-bearer") + .reply(200, {"token_type":"Bearer","expires_in":3599,"ext_expires_in":3599,"access_token":"access_token"}, [ + 'Cache-Control', + 'no-store, no-cache', + 'Pragma', + 'no-cache', + 'Content-Type', + 'application/json; charset=utf-8', + 'Expires', + '-1', + 'Strict-Transport-Security', + 'max-age=31536000; includeSubDomains', + 'X-Content-Type-Options', + 'nosniff', + 'P3P', + 'CP="DSP CUR OTPi IND OTRi ONL FIN"', + 'x-ms-request-id', + '409bd16b-3d19-4ecb-993b-15cb6b951800', + 'x-ms-ests-server', + '2.1.11787.14 - NCUS ProdSlices', + 'x-ms-clitelem', + '1,0,0,,', + 'Set-Cookie', + 'fpc=fpc;; expires=Fri, 09-Jul-2021 22:05:38 GMT; path=/; secure; HttpOnly; SameSite=None', + 'Set-Cookie', + 'x-ms-gateway-slice=estsfd; path=/; secure; samesite=none; httponly', + 'Set-Cookie', + 'stsservicecookie=estsfd; path=/; secure; samesite=none; httponly', + 'Date', + 'Wed, 09 Jun 2021 22:05:37 GMT', + 'Content-Length', + '1588' +]); + +nock('https://login.microsoftonline.com:443', {"encodedQueryParams":true}) + .get('/common/discovery/instance') + .query(true) + .reply(200, {"tenant_discovery_endpoint":"https://login.microsoftonline.com/12345678-1234-1234-1234-123456789012/v2.0/.well-known/openid-configuration","api-version":"1.1","metadata":[{"preferred_network":"login.microsoftonline.com","preferred_cache":"login.windows.net","aliases":["login.microsoftonline.com","login.windows.net","login.microsoft.com","sts.windows.net"]},{"preferred_network":"login.partner.microsoftonline.cn","preferred_cache":"login.partner.microsoftonline.cn","aliases":["login.partner.microsoftonline.cn","login.chinacloudapi.cn"]},{"preferred_network":"login.microsoftonline.de","preferred_cache":"login.microsoftonline.de","aliases":["login.microsoftonline.de"]},{"preferred_network":"login.microsoftonline.us","preferred_cache":"login.microsoftonline.us","aliases":["login.microsoftonline.us","login.usgovcloudapi.net"]},{"preferred_network":"login-us.microsoftonline.com","preferred_cache":"login-us.microsoftonline.com","aliases":["login-us.microsoftonline.com"]}]}, [ + 'Cache-Control', + 'max-age=86400, private', + 'Content-Type', + 'application/json; charset=utf-8', + 'Strict-Transport-Security', + 'max-age=31536000; includeSubDomains', + 'X-Content-Type-Options', + 'nosniff', + 'Access-Control-Allow-Origin', + '*', + 'Access-Control-Allow-Methods', + 'GET, OPTIONS', + 'P3P', + 'CP="DSP CUR OTPi IND OTRi ONL FIN"', + 'x-ms-request-id', + 'df68a08d-09ef-4790-8194-b5dbacdd6c00', + 'x-ms-ests-server', + '2.1.11787.14 - NCUS ProdSlices', + 'Set-Cookie', + 'fpc=fpc;; expires=Fri, 09-Jul-2021 22:05:38 GMT; path=/; secure; HttpOnly; SameSite=None', + 'Set-Cookie', + 'esctx=esctx; domain=.login.microsoftonline.com; path=/; secure; HttpOnly; SameSite=None', + 'Set-Cookie', + 'x-ms-gateway-slice=estsfd; path=/; secure; samesite=none; httponly', + 'Set-Cookie', + 'stsservicecookie=estsfd; path=/; secure; samesite=none; httponly', + 'Date', + 'Wed, 09 Jun 2021 22:05:37 GMT', + 'Content-Length', + '980' +]); + +nock('https://login.microsoftonline.com:443', {"encodedQueryParams":true}) + .get('/12345678-1234-1234-1234-123456789012/v2.0/.well-known/openid-configuration') + .reply(200, {"token_endpoint":"https://login.microsoftonline.com/12345678-1234-1234-1234-123456789012/oauth2/v2.0/token","token_endpoint_auth_methods_supported":["client_secret_post","private_key_jwt","client_secret_basic"],"jwks_uri":"https://login.microsoftonline.com/12345678-1234-1234-1234-123456789012/discovery/v2.0/keys","response_modes_supported":["query","fragment","form_post"],"subject_types_supported":["pairwise"],"id_token_signing_alg_values_supported":["RS256"],"response_types_supported":["code","id_token","code id_token","id_token token"],"scopes_supported":["openid","profile","email","offline_access"],"issuer":"https://login.microsoftonline.com/12345678-1234-1234-1234-123456789012/v2.0","request_uri_parameter_supported":false,"userinfo_endpoint":"https://graph.microsoft.com/oidc/userinfo","authorization_endpoint":"https://login.microsoftonline.com/12345678-1234-1234-1234-123456789012/oauth2/v2.0/authorize","device_authorization_endpoint":"https://login.microsoftonline.com/12345678-1234-1234-1234-123456789012/oauth2/v2.0/devicecode","http_logout_supported":true,"frontchannel_logout_supported":true,"end_session_endpoint":"https://login.microsoftonline.com/12345678-1234-1234-1234-123456789012/oauth2/v2.0/logout","claims_supported":["sub","iss","cloud_instance_name","cloud_instance_host_name","cloud_graph_host_name","msgraph_host","aud","exp","iat","auth_time","acr","nonce","preferred_username","name","tid","ver","at_hash","c_hash","email"],"tenant_region_scope":"NA","cloud_instance_name":"microsoftonline.com","cloud_graph_host_name":"graph.windows.net","msgraph_host":"graph.microsoft.com","rbac_url":"https://pas.windows.net"}, [ + 'Cache-Control', + 'max-age=86400, private', + 'Content-Type', + 'application/json; charset=utf-8', + 'Strict-Transport-Security', + 'max-age=31536000; includeSubDomains', + 'X-Content-Type-Options', + 'nosniff', + 'Access-Control-Allow-Origin', + '*', + 'Access-Control-Allow-Methods', + 'GET, OPTIONS', + 'P3P', + 'CP="DSP CUR OTPi IND OTRi ONL FIN"', + 'x-ms-request-id', + '18fea51e-7f24-414e-9d58-99875bde2500', + 'x-ms-ests-server', + '2.1.11787.14 - SCUS ProdSlices', + 'Set-Cookie', + 'fpc=fpc;; expires=Fri, 09-Jul-2021 22:05:38 GMT; path=/; secure; HttpOnly; SameSite=None', + 'Set-Cookie', + 'esctx=esctx; domain=.login.microsoftonline.com; path=/; secure; HttpOnly; SameSite=None', + 'Set-Cookie', + 'x-ms-gateway-slice=estsfd; path=/; secure; samesite=none; httponly', + 'Set-Cookie', + 'stsservicecookie=estsfd; path=/; secure; samesite=none; httponly', + 'Date', + 'Wed, 09 Jun 2021 22:05:37 GMT', + 'Content-Length', + '1651' +]); diff --git a/sdk/identity/identity-cache-persistence/recordings/node/clientsecretcredential_internal/recording_accepts_tokencachepersistenceoptions.js b/sdk/identity/identity-cache-persistence/recordings/node/clientsecretcredential_internal/recording_accepts_tokencachepersistenceoptions.js new file mode 100644 index 000000000000..c2a6d0a6f70b --- /dev/null +++ b/sdk/identity/identity-cache-persistence/recordings/node/clientsecretcredential_internal/recording_accepts_tokencachepersistenceoptions.js @@ -0,0 +1,111 @@ +let nock = require('nock'); + +module.exports.hash = "e5b2fd33648fbcb25002eb5d85a3b1b7"; + +module.exports.testInfo = {"uniqueName":{},"newDate":{}} + +nock('https://login.microsoftonline.com:443', {"encodedQueryParams":true}) + .get('/common/discovery/instance') + .query(true) + .reply(200, {"tenant_discovery_endpoint":"https://login.microsoftonline.com/12345678-1234-1234-1234-123456789012/v2.0/.well-known/openid-configuration","api-version":"1.1","metadata":[{"preferred_network":"login.microsoftonline.com","preferred_cache":"login.windows.net","aliases":["login.microsoftonline.com","login.windows.net","login.microsoft.com","sts.windows.net"]},{"preferred_network":"login.partner.microsoftonline.cn","preferred_cache":"login.partner.microsoftonline.cn","aliases":["login.partner.microsoftonline.cn","login.chinacloudapi.cn"]},{"preferred_network":"login.microsoftonline.de","preferred_cache":"login.microsoftonline.de","aliases":["login.microsoftonline.de"]},{"preferred_network":"login.microsoftonline.us","preferred_cache":"login.microsoftonline.us","aliases":["login.microsoftonline.us","login.usgovcloudapi.net"]},{"preferred_network":"login-us.microsoftonline.com","preferred_cache":"login-us.microsoftonline.com","aliases":["login-us.microsoftonline.com"]}]}, [ + 'Cache-Control', + 'max-age=86400, private', + 'Content-Type', + 'application/json; charset=utf-8', + 'Strict-Transport-Security', + 'max-age=31536000; includeSubDomains', + 'X-Content-Type-Options', + 'nosniff', + 'Access-Control-Allow-Origin', + '*', + 'Access-Control-Allow-Methods', + 'GET, OPTIONS', + 'P3P', + 'CP="DSP CUR OTPi IND OTRi ONL FIN"', + 'x-ms-request-id', + '6ec3837f-1b8d-4b9c-899e-c708c14b9200', + 'x-ms-ests-server', + '2.1.11787.14 - WUS2 ProdSlices', + 'Set-Cookie', + 'fpc=fpc;; expires=Fri, 09-Jul-2021 22:05:38 GMT; path=/; secure; HttpOnly; SameSite=None', + 'Set-Cookie', + 'esctx=esctx; domain=.login.microsoftonline.com; path=/; secure; HttpOnly; SameSite=None', + 'Set-Cookie', + 'x-ms-gateway-slice=estsfd; path=/; secure; samesite=none; httponly', + 'Set-Cookie', + 'stsservicecookie=estsfd; path=/; secure; samesite=none; httponly', + 'Date', + 'Wed, 09 Jun 2021 22:05:38 GMT', + 'Content-Length', + '980' +]); + +nock('https://login.microsoftonline.com:443', {"encodedQueryParams":true}) + .get('/12345678-1234-1234-1234-123456789012/v2.0/.well-known/openid-configuration') + .reply(200, {"token_endpoint":"https://login.microsoftonline.com/12345678-1234-1234-1234-123456789012/oauth2/v2.0/token","token_endpoint_auth_methods_supported":["client_secret_post","private_key_jwt","client_secret_basic"],"jwks_uri":"https://login.microsoftonline.com/12345678-1234-1234-1234-123456789012/discovery/v2.0/keys","response_modes_supported":["query","fragment","form_post"],"subject_types_supported":["pairwise"],"id_token_signing_alg_values_supported":["RS256"],"response_types_supported":["code","id_token","code id_token","id_token token"],"scopes_supported":["openid","profile","email","offline_access"],"issuer":"https://login.microsoftonline.com/12345678-1234-1234-1234-123456789012/v2.0","request_uri_parameter_supported":false,"userinfo_endpoint":"https://graph.microsoft.com/oidc/userinfo","authorization_endpoint":"https://login.microsoftonline.com/12345678-1234-1234-1234-123456789012/oauth2/v2.0/authorize","device_authorization_endpoint":"https://login.microsoftonline.com/12345678-1234-1234-1234-123456789012/oauth2/v2.0/devicecode","http_logout_supported":true,"frontchannel_logout_supported":true,"end_session_endpoint":"https://login.microsoftonline.com/12345678-1234-1234-1234-123456789012/oauth2/v2.0/logout","claims_supported":["sub","iss","cloud_instance_name","cloud_instance_host_name","cloud_graph_host_name","msgraph_host","aud","exp","iat","auth_time","acr","nonce","preferred_username","name","tid","ver","at_hash","c_hash","email"],"tenant_region_scope":"NA","cloud_instance_name":"microsoftonline.com","cloud_graph_host_name":"graph.windows.net","msgraph_host":"graph.microsoft.com","rbac_url":"https://pas.windows.net"}, [ + 'Cache-Control', + 'max-age=86400, private', + 'Content-Type', + 'application/json; charset=utf-8', + 'Strict-Transport-Security', + 'max-age=31536000; includeSubDomains', + 'X-Content-Type-Options', + 'nosniff', + 'Access-Control-Allow-Origin', + '*', + 'Access-Control-Allow-Methods', + 'GET, OPTIONS', + 'P3P', + 'CP="DSP CUR OTPi IND OTRi ONL FIN"', + 'x-ms-request-id', + '409bd16b-3d19-4ecb-993b-15cb9b951800', + 'x-ms-ests-server', + '2.1.11787.14 - NCUS ProdSlices', + 'Set-Cookie', + 'fpc=fpc;; expires=Fri, 09-Jul-2021 22:05:38 GMT; path=/; secure; HttpOnly; SameSite=None', + 'Set-Cookie', + 'esctx=esctx; domain=.login.microsoftonline.com; path=/; secure; HttpOnly; SameSite=None', + 'Set-Cookie', + 'x-ms-gateway-slice=estsfd; path=/; secure; samesite=none; httponly', + 'Set-Cookie', + 'stsservicecookie=estsfd; path=/; secure; samesite=none; httponly', + 'Date', + 'Wed, 09 Jun 2021 22:05:38 GMT', + 'Content-Length', + '1651' +]); + +nock('https://login.microsoftonline.com:443', {"encodedQueryParams":true}) + .post('/12345678-1234-1234-1234-123456789012/oauth2/v2.0/token', "client_id=azure_client_id&scope=https%3A%2F%2Fgraph.microsoft.com%2F.default%20openid%20profile%20offline_access&grant_type=client_credentials&x-client-SKU=msal.js.node&x-client-VER=1.1.0&x-client-OS=linux&x-client-CPU=x64&x-ms-lib-capability=retry-after, h429&x-client-current-telemetry=2|771,0|,&x-client-last-telemetry=2|0|||0,0&client-request-id=client-request-id&client_secret=azure_client_secret") + .reply(200, {"token_type":"Bearer","expires_in":3599,"ext_expires_in":3599,"access_token":"access_token"}, [ + 'Cache-Control', + 'no-store, no-cache', + 'Pragma', + 'no-cache', + 'Content-Length', + '1588', + 'Content-Type', + 'application/json; charset=utf-8', + 'Expires', + '-1', + 'Strict-Transport-Security', + 'max-age=31536000; includeSubDomains', + 'X-Content-Type-Options', + 'nosniff', + 'P3P', + 'CP="DSP CUR OTPi IND OTRi ONL FIN"', + 'x-ms-request-id', + 'bd0f0928-051d-4666-8f19-5267ddc31900', + 'x-ms-ests-server', + '2.1.11787.14 - EUS ProdSlices', + 'x-ms-clitelem', + '1,0,0,,', + 'Set-Cookie', + 'fpc=fpc;; expires=Fri, 09-Jul-2021 22:05:38 GMT; path=/; secure; HttpOnly; SameSite=None', + 'Set-Cookie', + 'x-ms-gateway-slice=estsfd; path=/; secure; samesite=none; httponly', + 'Set-Cookie', + 'stsservicecookie=estsfd; path=/; secure; samesite=none; httponly', + 'Date', + 'Wed, 09 Jun 2021 22:05:38 GMT' +]); diff --git a/sdk/identity/identity-cache-persistence/recordings/node/clientsecretcredential_internal/recording_authenticates_silently_with_tokencachepersistenceoptions.js b/sdk/identity/identity-cache-persistence/recordings/node/clientsecretcredential_internal/recording_authenticates_silently_with_tokencachepersistenceoptions.js new file mode 100644 index 000000000000..dc5389c124fd --- /dev/null +++ b/sdk/identity/identity-cache-persistence/recordings/node/clientsecretcredential_internal/recording_authenticates_silently_with_tokencachepersistenceoptions.js @@ -0,0 +1,182 @@ +let nock = require('nock'); + +module.exports.hash = "efc3f10af9de458ea8671542d0000e3b"; + +module.exports.testInfo = {"uniqueName":{},"newDate":{}} + +nock('https://login.microsoftonline.com:443', {"encodedQueryParams":true}) + .get('/common/discovery/instance') + .query(true) + .reply(200, {"tenant_discovery_endpoint":"https://login.microsoftonline.com/12345678-1234-1234-1234-123456789012/v2.0/.well-known/openid-configuration","api-version":"1.1","metadata":[{"preferred_network":"login.microsoftonline.com","preferred_cache":"login.windows.net","aliases":["login.microsoftonline.com","login.windows.net","login.microsoft.com","sts.windows.net"]},{"preferred_network":"login.partner.microsoftonline.cn","preferred_cache":"login.partner.microsoftonline.cn","aliases":["login.partner.microsoftonline.cn","login.chinacloudapi.cn"]},{"preferred_network":"login.microsoftonline.de","preferred_cache":"login.microsoftonline.de","aliases":["login.microsoftonline.de"]},{"preferred_network":"login.microsoftonline.us","preferred_cache":"login.microsoftonline.us","aliases":["login.microsoftonline.us","login.usgovcloudapi.net"]},{"preferred_network":"login-us.microsoftonline.com","preferred_cache":"login-us.microsoftonline.com","aliases":["login-us.microsoftonline.com"]}]}, [ + 'Cache-Control', + 'max-age=86400, private', + 'Content-Length', + '980', + 'Content-Type', + 'application/json; charset=utf-8', + 'Strict-Transport-Security', + 'max-age=31536000; includeSubDomains', + 'X-Content-Type-Options', + 'nosniff', + 'Access-Control-Allow-Origin', + '*', + 'Access-Control-Allow-Methods', + 'GET, OPTIONS', + 'P3P', + 'CP="DSP CUR OTPi IND OTRi ONL FIN"', + 'x-ms-request-id', + '2d859df5-c16e-4a19-8c78-d944bed23c00', + 'x-ms-ests-server', + '2.1.11787.14 - WUS2 ProdSlices', + 'Set-Cookie', + 'fpc=fpc;; expires=Fri, 09-Jul-2021 22:05:38 GMT; path=/; secure; HttpOnly; SameSite=None', + 'Set-Cookie', + 'esctx=esctx; domain=.login.microsoftonline.com; path=/; secure; HttpOnly; SameSite=None', + 'Set-Cookie', + 'x-ms-gateway-slice=estsfd; path=/; secure; samesite=none; httponly', + 'Set-Cookie', + 'stsservicecookie=estsfd; path=/; secure; samesite=none; httponly', + 'Date', + 'Wed, 09 Jun 2021 22:05:38 GMT' +]); + +nock('https://login.microsoftonline.com:443', {"encodedQueryParams":true}) + .get('/12345678-1234-1234-1234-123456789012/v2.0/.well-known/openid-configuration') + .reply(200, {"token_endpoint":"https://login.microsoftonline.com/12345678-1234-1234-1234-123456789012/oauth2/v2.0/token","token_endpoint_auth_methods_supported":["client_secret_post","private_key_jwt","client_secret_basic"],"jwks_uri":"https://login.microsoftonline.com/12345678-1234-1234-1234-123456789012/discovery/v2.0/keys","response_modes_supported":["query","fragment","form_post"],"subject_types_supported":["pairwise"],"id_token_signing_alg_values_supported":["RS256"],"response_types_supported":["code","id_token","code id_token","id_token token"],"scopes_supported":["openid","profile","email","offline_access"],"issuer":"https://login.microsoftonline.com/12345678-1234-1234-1234-123456789012/v2.0","request_uri_parameter_supported":false,"userinfo_endpoint":"https://graph.microsoft.com/oidc/userinfo","authorization_endpoint":"https://login.microsoftonline.com/12345678-1234-1234-1234-123456789012/oauth2/v2.0/authorize","device_authorization_endpoint":"https://login.microsoftonline.com/12345678-1234-1234-1234-123456789012/oauth2/v2.0/devicecode","http_logout_supported":true,"frontchannel_logout_supported":true,"end_session_endpoint":"https://login.microsoftonline.com/12345678-1234-1234-1234-123456789012/oauth2/v2.0/logout","claims_supported":["sub","iss","cloud_instance_name","cloud_instance_host_name","cloud_graph_host_name","msgraph_host","aud","exp","iat","auth_time","acr","nonce","preferred_username","name","tid","ver","at_hash","c_hash","email"],"tenant_region_scope":"NA","cloud_instance_name":"microsoftonline.com","cloud_graph_host_name":"graph.windows.net","msgraph_host":"graph.microsoft.com","rbac_url":"https://pas.windows.net"}, [ + 'Cache-Control', + 'max-age=86400, private', + 'Content-Type', + 'application/json; charset=utf-8', + 'Strict-Transport-Security', + 'max-age=31536000; includeSubDomains', + 'X-Content-Type-Options', + 'nosniff', + 'Access-Control-Allow-Origin', + '*', + 'Access-Control-Allow-Methods', + 'GET, OPTIONS', + 'P3P', + 'CP="DSP CUR OTPi IND OTRi ONL FIN"', + 'x-ms-request-id', + '76255ad6-29e6-4527-a4a3-ff6c5aaa7600', + 'x-ms-ests-server', + '2.1.11787.14 - WUS2 ProdSlices', + 'Set-Cookie', + 'fpc=fpc;; expires=Fri, 09-Jul-2021 22:05:38 GMT; path=/; secure; HttpOnly; SameSite=None', + 'Set-Cookie', + 'esctx=esctx; domain=.login.microsoftonline.com; path=/; secure; HttpOnly; SameSite=None', + 'Set-Cookie', + 'x-ms-gateway-slice=estsfd; path=/; secure; samesite=none; httponly', + 'Set-Cookie', + 'stsservicecookie=estsfd; path=/; secure; samesite=none; httponly', + 'Date', + 'Wed, 09 Jun 2021 22:05:38 GMT', + 'Content-Length', + '1651' +]); + +nock('https://login.microsoftonline.com:443', {"encodedQueryParams":true}) + .post('/12345678-1234-1234-1234-123456789012/oauth2/v2.0/token', "client_id=azure_client_id&scope=https%3A%2F%2Fgraph.microsoft.com%2F.default%20openid%20profile%20offline_access&grant_type=client_credentials&x-client-SKU=msal.js.node&x-client-VER=1.1.0&x-client-OS=linux&x-client-CPU=x64&x-ms-lib-capability=retry-after, h429&x-client-current-telemetry=2|771,0|,&x-client-last-telemetry=2|0|||0,0&client-request-id=client-request-id&client_secret=azure_client_secret") + .reply(200, {"token_type":"Bearer","expires_in":3599,"ext_expires_in":3599,"access_token":"access_token"}, [ + 'Cache-Control', + 'no-store, no-cache', + 'Pragma', + 'no-cache', + 'Content-Length', + '1588', + 'Content-Type', + 'application/json; charset=utf-8', + 'Expires', + '-1', + 'Strict-Transport-Security', + 'max-age=31536000; includeSubDomains', + 'X-Content-Type-Options', + 'nosniff', + 'P3P', + 'CP="DSP CUR OTPi IND OTRi ONL FIN"', + 'x-ms-request-id', + '9b573481-cec3-4a8f-add9-eabe3a1d2300', + 'x-ms-ests-server', + '2.1.11787.14 - SCUS ProdSlices', + 'x-ms-clitelem', + '1,0,0,,', + 'Set-Cookie', + 'fpc=fpc;; expires=Fri, 09-Jul-2021 22:05:39 GMT; path=/; secure; HttpOnly; SameSite=None', + 'Set-Cookie', + 'x-ms-gateway-slice=estsfd; path=/; secure; samesite=none; httponly', + 'Set-Cookie', + 'stsservicecookie=estsfd; path=/; secure; samesite=none; httponly', + 'Date', + 'Wed, 09 Jun 2021 22:05:38 GMT' +]); + +nock('https://login.microsoftonline.com:443', {"encodedQueryParams":true}) + .get('/common/discovery/instance') + .query(true) + .reply(200, {"tenant_discovery_endpoint":"https://login.microsoftonline.com/12345678-1234-1234-1234-123456789012/v2.0/.well-known/openid-configuration","api-version":"1.1","metadata":[{"preferred_network":"login.microsoftonline.com","preferred_cache":"login.windows.net","aliases":["login.microsoftonline.com","login.windows.net","login.microsoft.com","sts.windows.net"]},{"preferred_network":"login.partner.microsoftonline.cn","preferred_cache":"login.partner.microsoftonline.cn","aliases":["login.partner.microsoftonline.cn","login.chinacloudapi.cn"]},{"preferred_network":"login.microsoftonline.de","preferred_cache":"login.microsoftonline.de","aliases":["login.microsoftonline.de"]},{"preferred_network":"login.microsoftonline.us","preferred_cache":"login.microsoftonline.us","aliases":["login.microsoftonline.us","login.usgovcloudapi.net"]},{"preferred_network":"login-us.microsoftonline.com","preferred_cache":"login-us.microsoftonline.com","aliases":["login-us.microsoftonline.com"]}]}, [ + 'Cache-Control', + 'max-age=86400, private', + 'Content-Type', + 'application/json; charset=utf-8', + 'Strict-Transport-Security', + 'max-age=31536000; includeSubDomains', + 'X-Content-Type-Options', + 'nosniff', + 'Access-Control-Allow-Origin', + '*', + 'Access-Control-Allow-Methods', + 'GET, OPTIONS', + 'P3P', + 'CP="DSP CUR OTPi IND OTRi ONL FIN"', + 'x-ms-request-id', + '884b75b2-1b54-49f2-a391-454a07e21400', + 'x-ms-ests-server', + '2.1.11787.14 - NCUS ProdSlices', + 'Set-Cookie', + 'fpc=fpc;; expires=Fri, 09-Jul-2021 22:05:39 GMT; path=/; secure; HttpOnly; SameSite=None', + 'Set-Cookie', + 'esctx=esctx; domain=.login.microsoftonline.com; path=/; secure; HttpOnly; SameSite=None', + 'Set-Cookie', + 'x-ms-gateway-slice=estsfd; path=/; secure; samesite=none; httponly', + 'Set-Cookie', + 'stsservicecookie=estsfd; path=/; secure; samesite=none; httponly', + 'Date', + 'Wed, 09 Jun 2021 22:05:38 GMT', + 'Content-Length', + '980' +]); + +nock('https://login.microsoftonline.com:443', {"encodedQueryParams":true}) + .get('/12345678-1234-1234-1234-123456789012/v2.0/.well-known/openid-configuration') + .reply(200, {"token_endpoint":"https://login.microsoftonline.com/12345678-1234-1234-1234-123456789012/oauth2/v2.0/token","token_endpoint_auth_methods_supported":["client_secret_post","private_key_jwt","client_secret_basic"],"jwks_uri":"https://login.microsoftonline.com/12345678-1234-1234-1234-123456789012/discovery/v2.0/keys","response_modes_supported":["query","fragment","form_post"],"subject_types_supported":["pairwise"],"id_token_signing_alg_values_supported":["RS256"],"response_types_supported":["code","id_token","code id_token","id_token token"],"scopes_supported":["openid","profile","email","offline_access"],"issuer":"https://login.microsoftonline.com/12345678-1234-1234-1234-123456789012/v2.0","request_uri_parameter_supported":false,"userinfo_endpoint":"https://graph.microsoft.com/oidc/userinfo","authorization_endpoint":"https://login.microsoftonline.com/12345678-1234-1234-1234-123456789012/oauth2/v2.0/authorize","device_authorization_endpoint":"https://login.microsoftonline.com/12345678-1234-1234-1234-123456789012/oauth2/v2.0/devicecode","http_logout_supported":true,"frontchannel_logout_supported":true,"end_session_endpoint":"https://login.microsoftonline.com/12345678-1234-1234-1234-123456789012/oauth2/v2.0/logout","claims_supported":["sub","iss","cloud_instance_name","cloud_instance_host_name","cloud_graph_host_name","msgraph_host","aud","exp","iat","auth_time","acr","nonce","preferred_username","name","tid","ver","at_hash","c_hash","email"],"tenant_region_scope":"NA","cloud_instance_name":"microsoftonline.com","cloud_graph_host_name":"graph.windows.net","msgraph_host":"graph.microsoft.com","rbac_url":"https://pas.windows.net"}, [ + 'Cache-Control', + 'max-age=86400, private', + 'Content-Type', + 'application/json; charset=utf-8', + 'Strict-Transport-Security', + 'max-age=31536000; includeSubDomains', + 'X-Content-Type-Options', + 'nosniff', + 'Access-Control-Allow-Origin', + '*', + 'Access-Control-Allow-Methods', + 'GET, OPTIONS', + 'P3P', + 'CP="DSP CUR OTPi IND OTRi ONL FIN"', + 'x-ms-request-id', + '9e1bae85-2215-44d4-8edc-49f21d2d1a00', + 'x-ms-ests-server', + '2.1.11787.14 - EUS ProdSlices', + 'Set-Cookie', + 'fpc=fpc;; expires=Fri, 09-Jul-2021 22:05:39 GMT; path=/; secure; HttpOnly; SameSite=None', + 'Set-Cookie', + 'esctx=esctx; domain=.login.microsoftonline.com; path=/; secure; HttpOnly; SameSite=None', + 'Set-Cookie', + 'x-ms-gateway-slice=estsfd; path=/; secure; samesite=none; httponly', + 'Set-Cookie', + 'stsservicecookie=estsfd; path=/; secure; samesite=none; httponly', + 'Date', + 'Wed, 09 Jun 2021 22:05:38 GMT', + 'Content-Length', + '1651' +]); diff --git a/sdk/identity/identity-cache-persistence/recordings/node/devicecodecredential_internal/recording_accepts_tokencachepersistenceoptions.js b/sdk/identity/identity-cache-persistence/recordings/node/devicecodecredential_internal/recording_accepts_tokencachepersistenceoptions.js new file mode 100644 index 000000000000..20612e770d36 --- /dev/null +++ b/sdk/identity/identity-cache-persistence/recordings/node/devicecodecredential_internal/recording_accepts_tokencachepersistenceoptions.js @@ -0,0 +1,146 @@ +let nock = require('nock'); + +module.exports.hash = "1835013ecdba7993776a10d98850fb5f"; + +module.exports.testInfo = {"uniqueName":{},"newDate":{}} + +nock('https://login.microsoftonline.com:443', {"encodedQueryParams":true}) + .get('/common/discovery/instance') + .query(true) + .reply(200, {"tenant_discovery_endpoint":"https://login.microsoftonline.com/organizations/v2.0/.well-known/openid-configuration","api-version":"1.1","metadata":[{"preferred_network":"login.microsoftonline.com","preferred_cache":"login.windows.net","aliases":["login.microsoftonline.com","login.windows.net","login.microsoft.com","sts.windows.net"]},{"preferred_network":"login.partner.microsoftonline.cn","preferred_cache":"login.partner.microsoftonline.cn","aliases":["login.partner.microsoftonline.cn","login.chinacloudapi.cn"]},{"preferred_network":"login.microsoftonline.de","preferred_cache":"login.microsoftonline.de","aliases":["login.microsoftonline.de"]},{"preferred_network":"login.microsoftonline.us","preferred_cache":"login.microsoftonline.us","aliases":["login.microsoftonline.us","login.usgovcloudapi.net"]},{"preferred_network":"login-us.microsoftonline.com","preferred_cache":"login-us.microsoftonline.com","aliases":["login-us.microsoftonline.com"]}]}, [ + 'Cache-Control', + 'max-age=86400, private', + 'Content-Type', + 'application/json; charset=utf-8', + 'Strict-Transport-Security', + 'max-age=31536000; includeSubDomains', + 'X-Content-Type-Options', + 'nosniff', + 'Access-Control-Allow-Origin', + '*', + 'Access-Control-Allow-Methods', + 'GET, OPTIONS', + 'P3P', + 'CP="DSP CUR OTPi IND OTRi ONL FIN"', + 'x-ms-request-id', + 'ae17da35-2635-4b07-a094-b0de800c1200', + 'x-ms-ests-server', + '2.1.11787.14 - NCUS ProdSlices', + 'Set-Cookie', + 'fpc=fpc;; expires=Fri, 09-Jul-2021 22:05:39 GMT; path=/; secure; HttpOnly; SameSite=None', + 'Set-Cookie', + 'esctx=esctx; domain=.login.microsoftonline.com; path=/; secure; HttpOnly; SameSite=None', + 'Set-Cookie', + 'x-ms-gateway-slice=estsfd; path=/; secure; samesite=none; httponly', + 'Set-Cookie', + 'stsservicecookie=estsfd; path=/; secure; samesite=none; httponly', + 'Date', + 'Wed, 09 Jun 2021 22:05:39 GMT', + 'Content-Length', + '957' +]); + +nock('https://login.microsoftonline.com:443', {"encodedQueryParams":true}) + .get('/organizations/v2.0/.well-known/openid-configuration') + .reply(200, {"token_endpoint":"https://login.microsoftonline.com/organizations/oauth2/v2.0/token","token_endpoint_auth_methods_supported":["client_secret_post","private_key_jwt","client_secret_basic"],"jwks_uri":"https://login.microsoftonline.com/organizations/discovery/v2.0/keys","response_modes_supported":["query","fragment","form_post"],"subject_types_supported":["pairwise"],"id_token_signing_alg_values_supported":["RS256"],"response_types_supported":["code","id_token","code id_token","id_token token"],"scopes_supported":["openid","profile","email","offline_access"],"issuer":"https://login.microsoftonline.com/{tenantid}/v2.0","request_uri_parameter_supported":false,"userinfo_endpoint":"https://graph.microsoft.com/oidc/userinfo","authorization_endpoint":"https://login.microsoftonline.com/organizations/oauth2/v2.0/authorize","device_authorization_endpoint":"https://login.microsoftonline.com/organizations/oauth2/v2.0/devicecode","http_logout_supported":true,"frontchannel_logout_supported":true,"end_session_endpoint":"https://login.microsoftonline.com/organizations/oauth2/v2.0/logout","claims_supported":["sub","iss","cloud_instance_name","cloud_instance_host_name","cloud_graph_host_name","msgraph_host","aud","exp","iat","auth_time","acr","nonce","preferred_username","name","tid","ver","at_hash","c_hash","email"],"tenant_region_scope":null,"cloud_instance_name":"microsoftonline.com","cloud_graph_host_name":"graph.windows.net","msgraph_host":"graph.microsoft.com","rbac_url":"https://pas.windows.net"}, [ + 'Cache-Control', + 'max-age=86400, private', + 'Content-Type', + 'application/json; charset=utf-8', + 'Strict-Transport-Security', + 'max-age=31536000; includeSubDomains', + 'X-Content-Type-Options', + 'nosniff', + 'Access-Control-Allow-Origin', + '*', + 'Access-Control-Allow-Methods', + 'GET, OPTIONS', + 'P3P', + 'CP="DSP CUR OTPi IND OTRi ONL FIN"', + 'x-ms-request-id', + '13bdc6cc-fd34-4d40-a854-12a2ef7c8000', + 'x-ms-ests-server', + '2.1.11787.14 - SCUS ProdSlices', + 'Set-Cookie', + 'fpc=fpc;; expires=Fri, 09-Jul-2021 22:05:39 GMT; path=/; secure; HttpOnly; SameSite=None', + 'Set-Cookie', + 'esctx=esctx; domain=.login.microsoftonline.com; path=/; secure; HttpOnly; SameSite=None', + 'Set-Cookie', + 'x-ms-gateway-slice=estsfd; path=/; secure; samesite=none; httponly', + 'Set-Cookie', + 'stsservicecookie=estsfd; path=/; secure; samesite=none; httponly', + 'Date', + 'Wed, 09 Jun 2021 22:05:39 GMT', + 'Content-Length', + '1510' +]); + +nock('https://login.microsoftonline.com:443', {"encodedQueryParams":true}) + .post('/organizations/oauth2/v2.0/devicecode', "scope=https%3A%2F%2Fgraph.microsoft.com%2F.default%20openid%20profile%20offline_access&client_id=04b07795-8ddb-461a-bbee-02f9e1bf7b46") + .reply(200, {"user_code":"USER_CODE","device_code":"DEVICE_CODE","verification_uri":"https://microsoft.com/devicelogin","expires_in":900,"interval": 0,"message":"To sign in, use a web browser to open the page https://microsoft.com/devicelogin and enter the code USER_CODE to authenticate."}, [ + 'Cache-Control', + 'no-store, no-cache', + 'Pragma', + 'no-cache', + 'Content-Length', + '473', + 'Content-Type', + 'application/json; charset=utf-8', + 'Expires', + '-1', + 'Strict-Transport-Security', + 'max-age=31536000; includeSubDomains', + 'X-Content-Type-Options', + 'nosniff', + 'P3P', + 'CP="DSP CUR OTPi IND OTRi ONL FIN"', + 'x-ms-request-id', + '700be316-e865-4268-95dd-d742ba380200', + 'x-ms-ests-server', + '2.1.11787.15 - SCUS ProdSlices', + 'Set-Cookie', + 'fpc=fpc;; expires=Fri, 09-Jul-2021 22:05:39 GMT; path=/; secure; HttpOnly; SameSite=None', + 'Set-Cookie', + 'esctx=esctx; domain=.login.microsoftonline.com; path=/; secure; HttpOnly; SameSite=None', + 'Set-Cookie', + 'x-ms-gateway-slice=estsfd; path=/; secure; samesite=none; httponly', + 'Set-Cookie', + 'stsservicecookie=estsfd; path=/; secure; samesite=none; httponly', + 'Date', + 'Wed, 09 Jun 2021 22:05:39 GMT' +]); + +nock('https://login.microsoftonline.com:443', {"encodedQueryParams":true}) + .post('/organizations/oauth2/v2.0/token', "scope=https%3A%2F%2Fgraph.microsoft.com%2F.default%20openid%20profile%20offline_access&client_id=04b07795-8ddb-461a-bbee-02f9e1bf7b46&grant_type=device_code&device_code=DEVICE_CODE&client-request-id=client-request-id&client_info=1&x-client-SKU=msal.js.node&x-client-VER=1.1.0&x-client-OS=linux&x-client-CPU=x64&x-ms-lib-capability=retry-after, h429&x-client-current-telemetry=2|671,0|,&x-client-last-telemetry=2|0|||0,0") + .reply(200, {"token_type":"Bearer","scope":"email openid profile https://graph.microsoft.com/AuditLog.Read.All https://graph.microsoft.com/Directory.AccessAsUser.All https://graph.microsoft.com/Group.ReadWrite.All https://graph.microsoft.com/User.ReadWrite.All https://graph.microsoft.com/.default","expires_in":3599,"ext_expires_in":3599,"access_token":"access_token","refresh_token":"refresh_token","foci":"1","id_token":"eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiIsImtpZCI6ImtpZCJ9.eyJhdWQiOiJhdWQiLCJpc3MiOiJodHRwczovL2xvZ2luLm1pY3Jvc29mdG9ubGluZS5jb20vMTIzNDU2NzgtMTIzNC0xMjM0LTEyMzQtMTIzNDU2Nzg5MDEyL3YyLjAiLCJpYXQiOjE2MTUzMzcxNjMsIm5iZiI6MTYxNTMzNzE2MywiZXhwIjoxNjE1MzQxMDYzLCJhaW8iOiJhaW8iLCJpZHAiOiJodHRwczovL3N0cy53aW5kb3dzLm5ldC9pZHAvIiwibmFtZSI6IkRhbmllbCBSb2Ryw61ndWV6Iiwib2lkIjoib2lkIiwicHJlZmVycmVkX3VzZXJuYW1lIjoiZGFucm9kcmlAbWljcm9zb2Z0LmNvbSIsInJoIjoicmguIiwic3ViIjoic3ViIiwidGlkIjoiMTIzNDU2NzgtMTIzNC0xMjM0LTEyMzQtMTIzNDU2Nzg5MDEyIiwidXRpIjoidXRpIiwidmVyIjoiMi4wIn0=.bm9faWRlYV93aGF0c190aGlz","client_info":"eyJ1aWQiOiIxMjM0NTY3OC0xMjM0LTEyMzQtMTIzNC0xMjM0NTY3ODkwMTIiLCJ1dGlkIjoiMTIzNDU2NzgtMTIzNC0xMjM0LTEyMzQtMTIzNDU2Nzg5MDEyIn0K"}, [ + 'Cache-Control', + 'no-store, no-cache', + 'Pragma', + 'no-cache', + 'Content-Type', + 'application/json; charset=utf-8', + 'Expires', + '-1', + 'Strict-Transport-Security', + 'max-age=31536000; includeSubDomains', + 'X-Content-Type-Options', + 'nosniff', + 'P3P', + 'CP="DSP CUR OTPi IND OTRi ONL FIN"', + 'x-ms-request-id', + '409bd16b-3d19-4ecb-993b-15cbe49a1800', + 'x-ms-ests-server', + '2.1.11787.14 - NCUS ProdSlices', + 'x-ms-clitelem', + '1,0,0,,', + 'Set-Cookie', + 'fpc=fpc;; expires=Fri, 09-Jul-2021 22:05:54 GMT; path=/; secure; HttpOnly; SameSite=None', + 'Set-Cookie', + 'x-ms-gateway-slice=estsfd; path=/; secure; samesite=none; httponly', + 'Set-Cookie', + 'stsservicecookie=estsfd; path=/; secure; samesite=none; httponly', + 'Date', + 'Wed, 09 Jun 2021 22:05:54 GMT', + 'Content-Length', + '5043' +]); diff --git a/sdk/identity/identity-cache-persistence/recordings/node/devicecodecredential_internal/recording_allows_passing_an_authenticationrecord_to_avoid_further_manual_authentications.js b/sdk/identity/identity-cache-persistence/recordings/node/devicecodecredential_internal/recording_allows_passing_an_authenticationrecord_to_avoid_further_manual_authentications.js new file mode 100644 index 000000000000..efbb014a72e9 --- /dev/null +++ b/sdk/identity/identity-cache-persistence/recordings/node/devicecodecredential_internal/recording_allows_passing_an_authenticationrecord_to_avoid_further_manual_authentications.js @@ -0,0 +1,287 @@ +let nock = require('nock'); + +module.exports.hash = "9b2722ac6356324e61d860b570724ee6"; + +module.exports.testInfo = {"uniqueName":{},"newDate":{}} + +nock('https://login.microsoftonline.com:443', {"encodedQueryParams":true}) + .get('/common/discovery/instance') + .query(true) + .reply(200, {"tenant_discovery_endpoint":"https://login.microsoftonline.com/organizations/v2.0/.well-known/openid-configuration","api-version":"1.1","metadata":[{"preferred_network":"login.microsoftonline.com","preferred_cache":"login.windows.net","aliases":["login.microsoftonline.com","login.windows.net","login.microsoft.com","sts.windows.net"]},{"preferred_network":"login.partner.microsoftonline.cn","preferred_cache":"login.partner.microsoftonline.cn","aliases":["login.partner.microsoftonline.cn","login.chinacloudapi.cn"]},{"preferred_network":"login.microsoftonline.de","preferred_cache":"login.microsoftonline.de","aliases":["login.microsoftonline.de"]},{"preferred_network":"login.microsoftonline.us","preferred_cache":"login.microsoftonline.us","aliases":["login.microsoftonline.us","login.usgovcloudapi.net"]},{"preferred_network":"login-us.microsoftonline.com","preferred_cache":"login-us.microsoftonline.com","aliases":["login-us.microsoftonline.com"]}]}, [ + 'Cache-Control', + 'max-age=86400, private', + 'Content-Type', + 'application/json; charset=utf-8', + 'Strict-Transport-Security', + 'max-age=31536000; includeSubDomains', + 'X-Content-Type-Options', + 'nosniff', + 'Access-Control-Allow-Origin', + '*', + 'Access-Control-Allow-Methods', + 'GET, OPTIONS', + 'P3P', + 'CP="DSP CUR OTPi IND OTRi ONL FIN"', + 'x-ms-request-id', + '1862a810-e5a7-40ee-a59a-5a4f1abb2400', + 'x-ms-ests-server', + '2.1.11787.14 - EUS ProdSlices', + 'Set-Cookie', + 'fpc=fpc;; expires=Fri, 09-Jul-2021 22:06:10 GMT; path=/; secure; HttpOnly; SameSite=None', + 'Set-Cookie', + 'esctx=esctx; domain=.login.microsoftonline.com; path=/; secure; HttpOnly; SameSite=None', + 'Set-Cookie', + 'x-ms-gateway-slice=estsfd; path=/; secure; samesite=none; httponly', + 'Set-Cookie', + 'stsservicecookie=estsfd; path=/; secure; samesite=none; httponly', + 'Date', + 'Wed, 09 Jun 2021 22:06:10 GMT', + 'Content-Length', + '957' +]); + +nock('https://login.microsoftonline.com:443', {"encodedQueryParams":true}) + .get('/organizations/v2.0/.well-known/openid-configuration') + .reply(200, {"token_endpoint":"https://login.microsoftonline.com/organizations/oauth2/v2.0/token","token_endpoint_auth_methods_supported":["client_secret_post","private_key_jwt","client_secret_basic"],"jwks_uri":"https://login.microsoftonline.com/organizations/discovery/v2.0/keys","response_modes_supported":["query","fragment","form_post"],"subject_types_supported":["pairwise"],"id_token_signing_alg_values_supported":["RS256"],"response_types_supported":["code","id_token","code id_token","id_token token"],"scopes_supported":["openid","profile","email","offline_access"],"issuer":"https://login.microsoftonline.com/{tenantid}/v2.0","request_uri_parameter_supported":false,"userinfo_endpoint":"https://graph.microsoft.com/oidc/userinfo","authorization_endpoint":"https://login.microsoftonline.com/organizations/oauth2/v2.0/authorize","device_authorization_endpoint":"https://login.microsoftonline.com/organizations/oauth2/v2.0/devicecode","http_logout_supported":true,"frontchannel_logout_supported":true,"end_session_endpoint":"https://login.microsoftonline.com/organizations/oauth2/v2.0/logout","claims_supported":["sub","iss","cloud_instance_name","cloud_instance_host_name","cloud_graph_host_name","msgraph_host","aud","exp","iat","auth_time","acr","nonce","preferred_username","name","tid","ver","at_hash","c_hash","email"],"tenant_region_scope":null,"cloud_instance_name":"microsoftonline.com","cloud_graph_host_name":"graph.windows.net","msgraph_host":"graph.microsoft.com","rbac_url":"https://pas.windows.net"}, [ + 'Cache-Control', + 'max-age=86400, private', + 'Content-Type', + 'application/json; charset=utf-8', + 'Strict-Transport-Security', + 'max-age=31536000; includeSubDomains', + 'X-Content-Type-Options', + 'nosniff', + 'Access-Control-Allow-Origin', + '*', + 'Access-Control-Allow-Methods', + 'GET, OPTIONS', + 'P3P', + 'CP="DSP CUR OTPi IND OTRi ONL FIN"', + 'x-ms-request-id', + '73d7c60d-e6d5-4b21-ae5d-7961dd751700', + 'x-ms-ests-server', + '2.1.11787.14 - NCUS ProdSlices', + 'Set-Cookie', + 'fpc=fpc;; expires=Fri, 09-Jul-2021 22:06:10 GMT; path=/; secure; HttpOnly; SameSite=None', + 'Set-Cookie', + 'esctx=esctx; domain=.login.microsoftonline.com; path=/; secure; HttpOnly; SameSite=None', + 'Set-Cookie', + 'x-ms-gateway-slice=estsfd; path=/; secure; samesite=none; httponly', + 'Set-Cookie', + 'stsservicecookie=estsfd; path=/; secure; samesite=none; httponly', + 'Date', + 'Wed, 09 Jun 2021 22:06:10 GMT', + 'Content-Length', + '1510' +]); + +nock('https://login.microsoftonline.com:443', {"encodedQueryParams":true}) + .post('/organizations/oauth2/v2.0/devicecode', "scope=https%3A%2F%2Fgraph.microsoft.com%2F.default%20openid%20profile%20offline_access&client_id=04b07795-8ddb-461a-bbee-02f9e1bf7b46") + .reply(200, {"user_code":"USER_CODE","device_code":"DEVICE_CODE","verification_uri":"https://microsoft.com/devicelogin","expires_in":900,"interval": 0,"message":"To sign in, use a web browser to open the page https://microsoft.com/devicelogin and enter the code USER_CODE to authenticate."}, [ + 'Cache-Control', + 'no-store, no-cache', + 'Pragma', + 'no-cache', + 'Content-Type', + 'application/json; charset=utf-8', + 'Expires', + '-1', + 'Strict-Transport-Security', + 'max-age=31536000; includeSubDomains', + 'X-Content-Type-Options', + 'nosniff', + 'P3P', + 'CP="DSP CUR OTPi IND OTRi ONL FIN"', + 'x-ms-request-id', + '1a3165b3-78ec-42a2-95fe-ff3930e97000', + 'x-ms-ests-server', + '2.1.11787.14 - NCUS ProdSlices', + 'Set-Cookie', + 'fpc=fpc;; expires=Fri, 09-Jul-2021 22:06:11 GMT; path=/; secure; HttpOnly; SameSite=None', + 'Set-Cookie', + 'esctx=esctx; domain=.login.microsoftonline.com; path=/; secure; HttpOnly; SameSite=None', + 'Set-Cookie', + 'x-ms-gateway-slice=estsfd; path=/; secure; samesite=none; httponly', + 'Set-Cookie', + 'stsservicecookie=estsfd; path=/; secure; samesite=none; httponly', + 'Date', + 'Wed, 09 Jun 2021 22:06:10 GMT', + 'Content-Length', + '473' +]); + +nock('https://login.microsoftonline.com:443', {"encodedQueryParams":true}) + .post('/organizations/oauth2/v2.0/token', "scope=https%3A%2F%2Fgraph.microsoft.com%2F.default%20openid%20profile%20offline_access&client_id=04b07795-8ddb-461a-bbee-02f9e1bf7b46&grant_type=device_code&device_code=DEVICE_CODE&client-request-id=client-request-id&client_info=1&x-client-SKU=msal.js.node&x-client-VER=1.1.0&x-client-OS=linux&x-client-CPU=x64&x-ms-lib-capability=retry-after, h429&x-client-current-telemetry=2|671,0|,&x-client-last-telemetry=2|0|||0,0") + .reply(200, {"token_type":"Bearer","scope":"email openid profile https://graph.microsoft.com/AuditLog.Read.All https://graph.microsoft.com/Directory.AccessAsUser.All https://graph.microsoft.com/Group.ReadWrite.All https://graph.microsoft.com/User.ReadWrite.All https://graph.microsoft.com/.default","expires_in":3599,"ext_expires_in":3599,"access_token":"access_token","refresh_token":"refresh_token","foci":"1","id_token":"eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiIsImtpZCI6ImtpZCJ9.eyJhdWQiOiJhdWQiLCJpc3MiOiJodHRwczovL2xvZ2luLm1pY3Jvc29mdG9ubGluZS5jb20vMTIzNDU2NzgtMTIzNC0xMjM0LTEyMzQtMTIzNDU2Nzg5MDEyL3YyLjAiLCJpYXQiOjE2MTUzMzcxNjMsIm5iZiI6MTYxNTMzNzE2MywiZXhwIjoxNjE1MzQxMDYzLCJhaW8iOiJhaW8iLCJpZHAiOiJodHRwczovL3N0cy53aW5kb3dzLm5ldC9pZHAvIiwibmFtZSI6IkRhbmllbCBSb2Ryw61ndWV6Iiwib2lkIjoib2lkIiwicHJlZmVycmVkX3VzZXJuYW1lIjoiZGFucm9kcmlAbWljcm9zb2Z0LmNvbSIsInJoIjoicmguIiwic3ViIjoic3ViIiwidGlkIjoiMTIzNDU2NzgtMTIzNC0xMjM0LTEyMzQtMTIzNDU2Nzg5MDEyIiwidXRpIjoidXRpIiwidmVyIjoiMi4wIn0=.bm9faWRlYV93aGF0c190aGlz","client_info":"eyJ1aWQiOiIxMjM0NTY3OC0xMjM0LTEyMzQtMTIzNC0xMjM0NTY3ODkwMTIiLCJ1dGlkIjoiMTIzNDU2NzgtMTIzNC0xMjM0LTEyMzQtMTIzNDU2Nzg5MDEyIn0K"}, [ + 'Cache-Control', + 'no-store, no-cache', + 'Pragma', + 'no-cache', + 'Content-Type', + 'application/json; charset=utf-8', + 'Expires', + '-1', + 'Strict-Transport-Security', + 'max-age=31536000; includeSubDomains', + 'X-Content-Type-Options', + 'nosniff', + 'P3P', + 'CP="DSP CUR OTPi IND OTRi ONL FIN"', + 'x-ms-request-id', + 'bd0f0928-051d-4666-8f19-52673ccf1900', + 'x-ms-ests-server', + '2.1.11787.14 - EUS ProdSlices', + 'x-ms-clitelem', + '1,0,0,,', + 'Set-Cookie', + 'fpc=fpc;; expires=Fri, 09-Jul-2021 22:06:21 GMT; path=/; secure; HttpOnly; SameSite=None', + 'Set-Cookie', + 'x-ms-gateway-slice=estsfd; path=/; secure; samesite=none; httponly', + 'Set-Cookie', + 'stsservicecookie=estsfd; path=/; secure; samesite=none; httponly', + 'Date', + 'Wed, 09 Jun 2021 22:06:21 GMT', + 'Content-Length', + '5038' +]); + +nock('https://login.microsoftonline.com:443', {"encodedQueryParams":true}) + .get('/common/discovery/instance') + .query(true) + .reply(200, {"tenant_discovery_endpoint":"https://login.microsoftonline.com/organizations/v2.0/.well-known/openid-configuration","api-version":"1.1","metadata":[{"preferred_network":"login.microsoftonline.com","preferred_cache":"login.windows.net","aliases":["login.microsoftonline.com","login.windows.net","login.microsoft.com","sts.windows.net"]},{"preferred_network":"login.partner.microsoftonline.cn","preferred_cache":"login.partner.microsoftonline.cn","aliases":["login.partner.microsoftonline.cn","login.chinacloudapi.cn"]},{"preferred_network":"login.microsoftonline.de","preferred_cache":"login.microsoftonline.de","aliases":["login.microsoftonline.de"]},{"preferred_network":"login.microsoftonline.us","preferred_cache":"login.microsoftonline.us","aliases":["login.microsoftonline.us","login.usgovcloudapi.net"]},{"preferred_network":"login-us.microsoftonline.com","preferred_cache":"login-us.microsoftonline.com","aliases":["login-us.microsoftonline.com"]}]}, [ + 'Cache-Control', + 'max-age=86400, private', + 'Content-Type', + 'application/json; charset=utf-8', + 'Strict-Transport-Security', + 'max-age=31536000; includeSubDomains', + 'X-Content-Type-Options', + 'nosniff', + 'Access-Control-Allow-Origin', + '*', + 'Access-Control-Allow-Methods', + 'GET, OPTIONS', + 'P3P', + 'CP="DSP CUR OTPi IND OTRi ONL FIN"', + 'x-ms-request-id', + 'cb7b6143-2d08-4775-81b7-fd8aa6979800', + 'x-ms-ests-server', + '2.1.11787.14 - SCUS ProdSlices', + 'Set-Cookie', + 'fpc=fpc;; expires=Fri, 09-Jul-2021 22:06:22 GMT; path=/; secure; HttpOnly; SameSite=None', + 'Set-Cookie', + 'esctx=esctx; domain=.login.microsoftonline.com; path=/; secure; HttpOnly; SameSite=None', + 'Set-Cookie', + 'x-ms-gateway-slice=estsfd; path=/; secure; samesite=none; httponly', + 'Set-Cookie', + 'stsservicecookie=estsfd; path=/; secure; samesite=none; httponly', + 'Date', + 'Wed, 09 Jun 2021 22:06:21 GMT', + 'Content-Length', + '957' +]); + +nock('https://login.microsoftonline.com:443', {"encodedQueryParams":true}) + .get('/organizations/v2.0/.well-known/openid-configuration') + .reply(200, {"token_endpoint":"https://login.microsoftonline.com/organizations/oauth2/v2.0/token","token_endpoint_auth_methods_supported":["client_secret_post","private_key_jwt","client_secret_basic"],"jwks_uri":"https://login.microsoftonline.com/organizations/discovery/v2.0/keys","response_modes_supported":["query","fragment","form_post"],"subject_types_supported":["pairwise"],"id_token_signing_alg_values_supported":["RS256"],"response_types_supported":["code","id_token","code id_token","id_token token"],"scopes_supported":["openid","profile","email","offline_access"],"issuer":"https://login.microsoftonline.com/{tenantid}/v2.0","request_uri_parameter_supported":false,"userinfo_endpoint":"https://graph.microsoft.com/oidc/userinfo","authorization_endpoint":"https://login.microsoftonline.com/organizations/oauth2/v2.0/authorize","device_authorization_endpoint":"https://login.microsoftonline.com/organizations/oauth2/v2.0/devicecode","http_logout_supported":true,"frontchannel_logout_supported":true,"end_session_endpoint":"https://login.microsoftonline.com/organizations/oauth2/v2.0/logout","claims_supported":["sub","iss","cloud_instance_name","cloud_instance_host_name","cloud_graph_host_name","msgraph_host","aud","exp","iat","auth_time","acr","nonce","preferred_username","name","tid","ver","at_hash","c_hash","email"],"tenant_region_scope":null,"cloud_instance_name":"microsoftonline.com","cloud_graph_host_name":"graph.windows.net","msgraph_host":"graph.microsoft.com","rbac_url":"https://pas.windows.net"}, [ + 'Cache-Control', + 'max-age=86400, private', + 'Content-Type', + 'application/json; charset=utf-8', + 'Strict-Transport-Security', + 'max-age=31536000; includeSubDomains', + 'X-Content-Type-Options', + 'nosniff', + 'Access-Control-Allow-Origin', + '*', + 'Access-Control-Allow-Methods', + 'GET, OPTIONS', + 'P3P', + 'CP="DSP CUR OTPi IND OTRi ONL FIN"', + 'x-ms-request-id', + 'a03f3270-b884-43e5-9ac1-f8e494da1e00', + 'x-ms-ests-server', + '2.1.11787.14 - NCUS ProdSlices', + 'Set-Cookie', + 'fpc=fpc;; expires=Fri, 09-Jul-2021 22:06:22 GMT; path=/; secure; HttpOnly; SameSite=None', + 'Set-Cookie', + 'esctx=esctx; domain=.login.microsoftonline.com; path=/; secure; HttpOnly; SameSite=None', + 'Set-Cookie', + 'x-ms-gateway-slice=estsfd; path=/; secure; samesite=none; httponly', + 'Set-Cookie', + 'stsservicecookie=estsfd; path=/; secure; samesite=none; httponly', + 'Date', + 'Wed, 09 Jun 2021 22:06:21 GMT', + 'Content-Length', + '1510' +]); + +nock('https://login.microsoftonline.com:443', {"encodedQueryParams":true}) + .post('/organizations/oauth2/v2.0/devicecode', "scope=https%3A%2F%2Fgraph.microsoft.com%2F.default%20openid%20profile%20offline_access&client_id=04b07795-8ddb-461a-bbee-02f9e1bf7b46") + .reply(200, {"user_code":"USER_CODE","device_code":"DEVICE_CODE","verification_uri":"https://microsoft.com/devicelogin","expires_in":900,"interval": 0,"message":"To sign in, use a web browser to open the page https://microsoft.com/devicelogin and enter the code USER_CODE to authenticate."}, [ + 'Cache-Control', + 'no-store, no-cache', + 'Pragma', + 'no-cache', + 'Content-Type', + 'application/json; charset=utf-8', + 'Expires', + '-1', + 'Strict-Transport-Security', + 'max-age=31536000; includeSubDomains', + 'X-Content-Type-Options', + 'nosniff', + 'P3P', + 'CP="DSP CUR OTPi IND OTRi ONL FIN"', + 'x-ms-request-id', + 'fa8fbb31-7fa8-4dc8-b47c-a23004171d00', + 'x-ms-ests-server', + '2.1.11787.14 - SCUS ProdSlices', + 'Set-Cookie', + 'fpc=fpc;; expires=Fri, 09-Jul-2021 22:06:22 GMT; path=/; secure; HttpOnly; SameSite=None', + 'Set-Cookie', + 'esctx=esctx; domain=.login.microsoftonline.com; path=/; secure; HttpOnly; SameSite=None', + 'Set-Cookie', + 'x-ms-gateway-slice=estsfd; path=/; secure; samesite=none; httponly', + 'Set-Cookie', + 'stsservicecookie=estsfd; path=/; secure; samesite=none; httponly', + 'Date', + 'Wed, 09 Jun 2021 22:06:21 GMT', + 'Content-Length', + '473' +]); + +nock('https://login.microsoftonline.com:443', {"encodedQueryParams":true}) + .post('/organizations/oauth2/v2.0/token', "scope=https%3A%2F%2Fgraph.microsoft.com%2F.default%20openid%20profile%20offline_access&client_id=04b07795-8ddb-461a-bbee-02f9e1bf7b46&grant_type=device_code&device_code=DEVICE_CODE&client-request-id=client-request-id&client_info=1&x-client-SKU=msal.js.node&x-client-VER=1.1.0&x-client-OS=linux&x-client-CPU=x64&x-ms-lib-capability=retry-after, h429&x-client-current-telemetry=2|671,0|,&x-client-last-telemetry=2|0|||0,0") + .reply(200, {"token_type":"Bearer","scope":"email openid profile https://graph.microsoft.com/AuditLog.Read.All https://graph.microsoft.com/Directory.AccessAsUser.All https://graph.microsoft.com/Group.ReadWrite.All https://graph.microsoft.com/User.ReadWrite.All https://graph.microsoft.com/.default","expires_in":3599,"ext_expires_in":3599,"access_token":"access_token","refresh_token":"refresh_token","foci":"1","id_token":"eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiIsImtpZCI6ImtpZCJ9.eyJhdWQiOiJhdWQiLCJpc3MiOiJodHRwczovL2xvZ2luLm1pY3Jvc29mdG9ubGluZS5jb20vMTIzNDU2NzgtMTIzNC0xMjM0LTEyMzQtMTIzNDU2Nzg5MDEyL3YyLjAiLCJpYXQiOjE2MTUzMzcxNjMsIm5iZiI6MTYxNTMzNzE2MywiZXhwIjoxNjE1MzQxMDYzLCJhaW8iOiJhaW8iLCJpZHAiOiJodHRwczovL3N0cy53aW5kb3dzLm5ldC9pZHAvIiwibmFtZSI6IkRhbmllbCBSb2Ryw61ndWV6Iiwib2lkIjoib2lkIiwicHJlZmVycmVkX3VzZXJuYW1lIjoiZGFucm9kcmlAbWljcm9zb2Z0LmNvbSIsInJoIjoicmguIiwic3ViIjoic3ViIiwidGlkIjoiMTIzNDU2NzgtMTIzNC0xMjM0LTEyMzQtMTIzNDU2Nzg5MDEyIiwidXRpIjoidXRpIiwidmVyIjoiMi4wIn0=.bm9faWRlYV93aGF0c190aGlz","client_info":"eyJ1aWQiOiIxMjM0NTY3OC0xMjM0LTEyMzQtMTIzNC0xMjM0NTY3ODkwMTIiLCJ1dGlkIjoiMTIzNDU2NzgtMTIzNC0xMjM0LTEyMzQtMTIzNDU2Nzg5MDEyIn0K"}, [ + 'Cache-Control', + 'no-store, no-cache', + 'Pragma', + 'no-cache', + 'Content-Type', + 'application/json; charset=utf-8', + 'Expires', + '-1', + 'Strict-Transport-Security', + 'max-age=31536000; includeSubDomains', + 'X-Content-Type-Options', + 'nosniff', + 'P3P', + 'CP="DSP CUR OTPi IND OTRi ONL FIN"', + 'x-ms-request-id', + '76255ad6-29e6-4527-a4a3-ff6c7dbf7600', + 'x-ms-ests-server', + '2.1.11787.14 - WUS2 ProdSlices', + 'x-ms-clitelem', + '1,0,0,,', + 'Set-Cookie', + 'fpc=fpc;; expires=Fri, 09-Jul-2021 22:06:47 GMT; path=/; secure; HttpOnly; SameSite=None', + 'Set-Cookie', + 'x-ms-gateway-slice=estsfd; path=/; secure; samesite=none; httponly', + 'Set-Cookie', + 'stsservicecookie=estsfd; path=/; secure; samesite=none; httponly', + 'Date', + 'Wed, 09 Jun 2021 22:06:47 GMT', + 'Content-Length', + '5038' +]); diff --git a/sdk/identity/identity-cache-persistence/recordings/node/devicecodecredential_internal/recording_authenticates_silently_with_tokencachepersistenceoptions.js b/sdk/identity/identity-cache-persistence/recordings/node/devicecodecredential_internal/recording_authenticates_silently_with_tokencachepersistenceoptions.js new file mode 100644 index 000000000000..616d46331ca6 --- /dev/null +++ b/sdk/identity/identity-cache-persistence/recordings/node/devicecodecredential_internal/recording_authenticates_silently_with_tokencachepersistenceoptions.js @@ -0,0 +1,146 @@ +let nock = require('nock'); + +module.exports.hash = "aeb016d49a5430c8099b373e080e5151"; + +module.exports.testInfo = {"uniqueName":{},"newDate":{}} + +nock('https://login.microsoftonline.com:443', {"encodedQueryParams":true}) + .get('/common/discovery/instance') + .query(true) + .reply(200, {"tenant_discovery_endpoint":"https://login.microsoftonline.com/organizations/v2.0/.well-known/openid-configuration","api-version":"1.1","metadata":[{"preferred_network":"login.microsoftonline.com","preferred_cache":"login.windows.net","aliases":["login.microsoftonline.com","login.windows.net","login.microsoft.com","sts.windows.net"]},{"preferred_network":"login.partner.microsoftonline.cn","preferred_cache":"login.partner.microsoftonline.cn","aliases":["login.partner.microsoftonline.cn","login.chinacloudapi.cn"]},{"preferred_network":"login.microsoftonline.de","preferred_cache":"login.microsoftonline.de","aliases":["login.microsoftonline.de"]},{"preferred_network":"login.microsoftonline.us","preferred_cache":"login.microsoftonline.us","aliases":["login.microsoftonline.us","login.usgovcloudapi.net"]},{"preferred_network":"login-us.microsoftonline.com","preferred_cache":"login-us.microsoftonline.com","aliases":["login-us.microsoftonline.com"]}]}, [ + 'Cache-Control', + 'max-age=86400, private', + 'Content-Type', + 'application/json; charset=utf-8', + 'Strict-Transport-Security', + 'max-age=31536000; includeSubDomains', + 'X-Content-Type-Options', + 'nosniff', + 'Access-Control-Allow-Origin', + '*', + 'Access-Control-Allow-Methods', + 'GET, OPTIONS', + 'P3P', + 'CP="DSP CUR OTPi IND OTRi ONL FIN"', + 'x-ms-request-id', + 'aae5811f-fa30-46fd-ad7c-d5462ccf3700', + 'x-ms-ests-server', + '2.1.11787.14 - WUS2 ProdSlices', + 'Set-Cookie', + 'fpc=fpc;; expires=Fri, 09-Jul-2021 22:05:55 GMT; path=/; secure; HttpOnly; SameSite=None', + 'Set-Cookie', + 'esctx=esctx; domain=.login.microsoftonline.com; path=/; secure; HttpOnly; SameSite=None', + 'Set-Cookie', + 'x-ms-gateway-slice=estsfd; path=/; secure; samesite=none; httponly', + 'Set-Cookie', + 'stsservicecookie=estsfd; path=/; secure; samesite=none; httponly', + 'Date', + 'Wed, 09 Jun 2021 22:05:54 GMT', + 'Content-Length', + '957' +]); + +nock('https://login.microsoftonline.com:443', {"encodedQueryParams":true}) + .get('/organizations/v2.0/.well-known/openid-configuration') + .reply(200, {"token_endpoint":"https://login.microsoftonline.com/organizations/oauth2/v2.0/token","token_endpoint_auth_methods_supported":["client_secret_post","private_key_jwt","client_secret_basic"],"jwks_uri":"https://login.microsoftonline.com/organizations/discovery/v2.0/keys","response_modes_supported":["query","fragment","form_post"],"subject_types_supported":["pairwise"],"id_token_signing_alg_values_supported":["RS256"],"response_types_supported":["code","id_token","code id_token","id_token token"],"scopes_supported":["openid","profile","email","offline_access"],"issuer":"https://login.microsoftonline.com/{tenantid}/v2.0","request_uri_parameter_supported":false,"userinfo_endpoint":"https://graph.microsoft.com/oidc/userinfo","authorization_endpoint":"https://login.microsoftonline.com/organizations/oauth2/v2.0/authorize","device_authorization_endpoint":"https://login.microsoftonline.com/organizations/oauth2/v2.0/devicecode","http_logout_supported":true,"frontchannel_logout_supported":true,"end_session_endpoint":"https://login.microsoftonline.com/organizations/oauth2/v2.0/logout","claims_supported":["sub","iss","cloud_instance_name","cloud_instance_host_name","cloud_graph_host_name","msgraph_host","aud","exp","iat","auth_time","acr","nonce","preferred_username","name","tid","ver","at_hash","c_hash","email"],"tenant_region_scope":null,"cloud_instance_name":"microsoftonline.com","cloud_graph_host_name":"graph.windows.net","msgraph_host":"graph.microsoft.com","rbac_url":"https://pas.windows.net"}, [ + 'Cache-Control', + 'max-age=86400, private', + 'Content-Type', + 'application/json; charset=utf-8', + 'Strict-Transport-Security', + 'max-age=31536000; includeSubDomains', + 'X-Content-Type-Options', + 'nosniff', + 'Access-Control-Allow-Origin', + '*', + 'Access-Control-Allow-Methods', + 'GET, OPTIONS', + 'P3P', + 'CP="DSP CUR OTPi IND OTRi ONL FIN"', + 'x-ms-request-id', + 'de6f2ed2-0294-42be-b8e8-334a8f181000', + 'x-ms-ests-server', + '2.1.11787.14 - EUS ProdSlices', + 'Set-Cookie', + 'fpc=fpc;; expires=Fri, 09-Jul-2021 22:05:55 GMT; path=/; secure; HttpOnly; SameSite=None', + 'Set-Cookie', + 'esctx=esctx; domain=.login.microsoftonline.com; path=/; secure; HttpOnly; SameSite=None', + 'Set-Cookie', + 'x-ms-gateway-slice=estsfd; path=/; secure; samesite=none; httponly', + 'Set-Cookie', + 'stsservicecookie=estsfd; path=/; secure; samesite=none; httponly', + 'Date', + 'Wed, 09 Jun 2021 22:05:54 GMT', + 'Content-Length', + '1510' +]); + +nock('https://login.microsoftonline.com:443', {"encodedQueryParams":true}) + .post('/organizations/oauth2/v2.0/devicecode', "scope=https%3A%2F%2Fgraph.microsoft.com%2F.default%20openid%20profile%20offline_access&client_id=04b07795-8ddb-461a-bbee-02f9e1bf7b46") + .reply(200, {"user_code":"USER_CODE","device_code":"DEVICE_CODE","verification_uri":"https://microsoft.com/devicelogin","expires_in":900,"interval": 0,"message":"To sign in, use a web browser to open the page https://microsoft.com/devicelogin and enter the code USER_CODE to authenticate."}, [ + 'Cache-Control', + 'no-store, no-cache', + 'Pragma', + 'no-cache', + 'Content-Type', + 'application/json; charset=utf-8', + 'Expires', + '-1', + 'Strict-Transport-Security', + 'max-age=31536000; includeSubDomains', + 'X-Content-Type-Options', + 'nosniff', + 'P3P', + 'CP="DSP CUR OTPi IND OTRi ONL FIN"', + 'x-ms-request-id', + '3cc42f87-f9a4-4066-a5e2-f4c107629700', + 'x-ms-ests-server', + '2.1.11787.14 - SCUS ProdSlices', + 'Set-Cookie', + 'fpc=fpc;; expires=Fri, 09-Jul-2021 22:05:55 GMT; path=/; secure; HttpOnly; SameSite=None', + 'Set-Cookie', + 'esctx=esctx; domain=.login.microsoftonline.com; path=/; secure; HttpOnly; SameSite=None', + 'Set-Cookie', + 'x-ms-gateway-slice=estsfd; path=/; secure; samesite=none; httponly', + 'Set-Cookie', + 'stsservicecookie=estsfd; path=/; secure; samesite=none; httponly', + 'Date', + 'Wed, 09 Jun 2021 22:05:54 GMT', + 'Content-Length', + '473' +]); + +nock('https://login.microsoftonline.com:443', {"encodedQueryParams":true}) + .post('/organizations/oauth2/v2.0/token', "scope=https%3A%2F%2Fgraph.microsoft.com%2F.default%20openid%20profile%20offline_access&client_id=04b07795-8ddb-461a-bbee-02f9e1bf7b46&grant_type=device_code&device_code=DEVICE_CODE&client-request-id=client-request-id&client_info=1&x-client-SKU=msal.js.node&x-client-VER=1.1.0&x-client-OS=linux&x-client-CPU=x64&x-ms-lib-capability=retry-after, h429&x-client-current-telemetry=2|671,0|,&x-client-last-telemetry=2|0|||0,0") + .reply(200, {"token_type":"Bearer","scope":"email openid profile https://graph.microsoft.com/AuditLog.Read.All https://graph.microsoft.com/Directory.AccessAsUser.All https://graph.microsoft.com/Group.ReadWrite.All https://graph.microsoft.com/User.ReadWrite.All https://graph.microsoft.com/.default","expires_in":3599,"ext_expires_in":3599,"access_token":"access_token","refresh_token":"refresh_token","foci":"1","id_token":"eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiIsImtpZCI6ImtpZCJ9.eyJhdWQiOiJhdWQiLCJpc3MiOiJodHRwczovL2xvZ2luLm1pY3Jvc29mdG9ubGluZS5jb20vMTIzNDU2NzgtMTIzNC0xMjM0LTEyMzQtMTIzNDU2Nzg5MDEyL3YyLjAiLCJpYXQiOjE2MTUzMzcxNjMsIm5iZiI6MTYxNTMzNzE2MywiZXhwIjoxNjE1MzQxMDYzLCJhaW8iOiJhaW8iLCJpZHAiOiJodHRwczovL3N0cy53aW5kb3dzLm5ldC9pZHAvIiwibmFtZSI6IkRhbmllbCBSb2Ryw61ndWV6Iiwib2lkIjoib2lkIiwicHJlZmVycmVkX3VzZXJuYW1lIjoiZGFucm9kcmlAbWljcm9zb2Z0LmNvbSIsInJoIjoicmguIiwic3ViIjoic3ViIiwidGlkIjoiMTIzNDU2NzgtMTIzNC0xMjM0LTEyMzQtMTIzNDU2Nzg5MDEyIiwidXRpIjoidXRpIiwidmVyIjoiMi4wIn0=.bm9faWRlYV93aGF0c190aGlz","client_info":"eyJ1aWQiOiIxMjM0NTY3OC0xMjM0LTEyMzQtMTIzNC0xMjM0NTY3ODkwMTIiLCJ1dGlkIjoiMTIzNDU2NzgtMTIzNC0xMjM0LTEyMzQtMTIzNDU2Nzg5MDEyIn0K"}, [ + 'Cache-Control', + 'no-store, no-cache', + 'Pragma', + 'no-cache', + 'Content-Type', + 'application/json; charset=utf-8', + 'Expires', + '-1', + 'Strict-Transport-Security', + 'max-age=31536000; includeSubDomains', + 'X-Content-Type-Options', + 'nosniff', + 'P3P', + 'CP="DSP CUR OTPi IND OTRi ONL FIN"', + 'x-ms-request-id', + '9b573481-cec3-4a8f-add9-eabecc262300', + 'x-ms-ests-server', + '2.1.11787.14 - SCUS ProdSlices', + 'x-ms-clitelem', + '1,0,0,,', + 'Set-Cookie', + 'fpc=fpc;; expires=Fri, 09-Jul-2021 22:06:10 GMT; path=/; secure; HttpOnly; SameSite=None', + 'Set-Cookie', + 'x-ms-gateway-slice=estsfd; path=/; secure; samesite=none; httponly', + 'Set-Cookie', + 'stsservicecookie=estsfd; path=/; secure; samesite=none; httponly', + 'Date', + 'Wed, 09 Jun 2021 22:06:10 GMT', + 'Content-Length', + '5043' +]); diff --git a/sdk/identity/identity-cache-persistence/recordings/node/usernamepasswordcredential_internal/recording_accepts_tokencachepersistenceoptions.js b/sdk/identity/identity-cache-persistence/recordings/node/usernamepasswordcredential_internal/recording_accepts_tokencachepersistenceoptions.js new file mode 100644 index 000000000000..e5ebaf7786de --- /dev/null +++ b/sdk/identity/identity-cache-persistence/recordings/node/usernamepasswordcredential_internal/recording_accepts_tokencachepersistenceoptions.js @@ -0,0 +1,111 @@ +let nock = require('nock'); + +module.exports.hash = "7990c61bae7d74517e9b9878ee29fdfe"; + +module.exports.testInfo = {"uniqueName":{},"newDate":{}} + +nock('https://login.microsoftonline.com:443', {"encodedQueryParams":true}) + .get('/common/discovery/instance') + .query(true) + .reply(200, {"tenant_discovery_endpoint":"https://login.microsoftonline.com/12345678-1234-1234-1234-123456789012/v2.0/.well-known/openid-configuration","api-version":"1.1","metadata":[{"preferred_network":"login.microsoftonline.com","preferred_cache":"login.windows.net","aliases":["login.microsoftonline.com","login.windows.net","login.microsoft.com","sts.windows.net"]},{"preferred_network":"login.partner.microsoftonline.cn","preferred_cache":"login.partner.microsoftonline.cn","aliases":["login.partner.microsoftonline.cn","login.chinacloudapi.cn"]},{"preferred_network":"login.microsoftonline.de","preferred_cache":"login.microsoftonline.de","aliases":["login.microsoftonline.de"]},{"preferred_network":"login.microsoftonline.us","preferred_cache":"login.microsoftonline.us","aliases":["login.microsoftonline.us","login.usgovcloudapi.net"]},{"preferred_network":"login-us.microsoftonline.com","preferred_cache":"login-us.microsoftonline.com","aliases":["login-us.microsoftonline.com"]}]}, [ + 'Cache-Control', + 'max-age=86400, private', + 'Content-Type', + 'application/json; charset=utf-8', + 'Strict-Transport-Security', + 'max-age=31536000; includeSubDomains', + 'X-Content-Type-Options', + 'nosniff', + 'Access-Control-Allow-Origin', + '*', + 'Access-Control-Allow-Methods', + 'GET, OPTIONS', + 'P3P', + 'CP="DSP CUR OTPi IND OTRi ONL FIN"', + 'x-ms-request-id', + 'cbc58672-7ee0-42bd-a2ff-04c07925a700', + 'x-ms-ests-server', + '2.1.11787.14 - SCUS ProdSlices', + 'Set-Cookie', + 'fpc=fpc;; expires=Fri, 09-Jul-2021 22:06:47 GMT; path=/; secure; HttpOnly; SameSite=None', + 'Set-Cookie', + 'esctx=esctx; domain=.login.microsoftonline.com; path=/; secure; HttpOnly; SameSite=None', + 'Set-Cookie', + 'x-ms-gateway-slice=estsfd; path=/; secure; samesite=none; httponly', + 'Set-Cookie', + 'stsservicecookie=estsfd; path=/; secure; samesite=none; httponly', + 'Date', + 'Wed, 09 Jun 2021 22:06:47 GMT', + 'Content-Length', + '980' +]); + +nock('https://login.microsoftonline.com:443', {"encodedQueryParams":true}) + .get('/12345678-1234-1234-1234-123456789012/v2.0/.well-known/openid-configuration') + .reply(200, {"token_endpoint":"https://login.microsoftonline.com/12345678-1234-1234-1234-123456789012/oauth2/v2.0/token","token_endpoint_auth_methods_supported":["client_secret_post","private_key_jwt","client_secret_basic"],"jwks_uri":"https://login.microsoftonline.com/12345678-1234-1234-1234-123456789012/discovery/v2.0/keys","response_modes_supported":["query","fragment","form_post"],"subject_types_supported":["pairwise"],"id_token_signing_alg_values_supported":["RS256"],"response_types_supported":["code","id_token","code id_token","id_token token"],"scopes_supported":["openid","profile","email","offline_access"],"issuer":"https://login.microsoftonline.com/12345678-1234-1234-1234-123456789012/v2.0","request_uri_parameter_supported":false,"userinfo_endpoint":"https://graph.microsoft.com/oidc/userinfo","authorization_endpoint":"https://login.microsoftonline.com/12345678-1234-1234-1234-123456789012/oauth2/v2.0/authorize","device_authorization_endpoint":"https://login.microsoftonline.com/12345678-1234-1234-1234-123456789012/oauth2/v2.0/devicecode","http_logout_supported":true,"frontchannel_logout_supported":true,"end_session_endpoint":"https://login.microsoftonline.com/12345678-1234-1234-1234-123456789012/oauth2/v2.0/logout","claims_supported":["sub","iss","cloud_instance_name","cloud_instance_host_name","cloud_graph_host_name","msgraph_host","aud","exp","iat","auth_time","acr","nonce","preferred_username","name","tid","ver","at_hash","c_hash","email"],"tenant_region_scope":"NA","cloud_instance_name":"microsoftonline.com","cloud_graph_host_name":"graph.windows.net","msgraph_host":"graph.microsoft.com","rbac_url":"https://pas.windows.net"}, [ + 'Cache-Control', + 'max-age=86400, private', + 'Content-Type', + 'application/json; charset=utf-8', + 'Strict-Transport-Security', + 'max-age=31536000; includeSubDomains', + 'X-Content-Type-Options', + 'nosniff', + 'Access-Control-Allow-Origin', + '*', + 'Access-Control-Allow-Methods', + 'GET, OPTIONS', + 'P3P', + 'CP="DSP CUR OTPi IND OTRi ONL FIN"', + 'x-ms-request-id', + 'bd0f0928-051d-4666-8f19-526771d51900', + 'x-ms-ests-server', + '2.1.11787.14 - EUS ProdSlices', + 'Set-Cookie', + 'fpc=fpc;; expires=Fri, 09-Jul-2021 22:06:47 GMT; path=/; secure; HttpOnly; SameSite=None', + 'Set-Cookie', + 'esctx=esctx; domain=.login.microsoftonline.com; path=/; secure; HttpOnly; SameSite=None', + 'Set-Cookie', + 'x-ms-gateway-slice=estsfd; path=/; secure; samesite=none; httponly', + 'Set-Cookie', + 'stsservicecookie=estsfd; path=/; secure; samesite=none; httponly', + 'Date', + 'Wed, 09 Jun 2021 22:06:47 GMT', + 'Content-Length', + '1651' +]); + +nock('https://login.microsoftonline.com:443', {"encodedQueryParams":true}) + .post('/12345678-1234-1234-1234-123456789012/oauth2/v2.0/token', "client_id=azure_client_id&username=azure_username&password=azure_password&scope=https%3A%2F%2Fgraph.microsoft.com%2F.default%20openid%20profile%20offline_access&grant_type=password&client_info=1&x-client-SKU=msal.js.node&x-client-VER=1.1.0&x-client-OS=linux&x-client-CPU=x64&x-ms-lib-capability=retry-after, h429&x-client-current-telemetry=2|371,0|,&x-client-last-telemetry=2|0|||0,0&client-request-id=client-request-id") + .reply(200, {"token_type":"Bearer","scope":"profile openid email https://graph.microsoft.com/User.Read https://graph.microsoft.com/.default","expires_in":3599,"ext_expires_in":3599,"access_token":"access_token","refresh_token":"refresh_token","id_token":"eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiIsImtpZCI6ImtpZCJ9.eyJhdWQiOiJhdWQiLCJpc3MiOiJodHRwczovL2xvZ2luLm1pY3Jvc29mdG9ubGluZS5jb20vMTIzNDU2NzgtMTIzNC0xMjM0LTEyMzQtMTIzNDU2Nzg5MDEyL3YyLjAiLCJpYXQiOjE2MTUzMzcxNjMsIm5iZiI6MTYxNTMzNzE2MywiZXhwIjoxNjE1MzQxMDYzLCJhaW8iOiJhaW8iLCJpZHAiOiJodHRwczovL3N0cy53aW5kb3dzLm5ldC9pZHAvIiwibmFtZSI6IkRhbmllbCBSb2Ryw61ndWV6Iiwib2lkIjoib2lkIiwicHJlZmVycmVkX3VzZXJuYW1lIjoiZGFucm9kcmlAbWljcm9zb2Z0LmNvbSIsInJoIjoicmguIiwic3ViIjoic3ViIiwidGlkIjoiMTIzNDU2NzgtMTIzNC0xMjM0LTEyMzQtMTIzNDU2Nzg5MDEyIiwidXRpIjoidXRpIiwidmVyIjoiMi4wIn0=.bm9faWRlYV93aGF0c190aGlz","client_info":"eyJ1aWQiOiIxMjM0NTY3OC0xMjM0LTEyMzQtMTIzNC0xMjM0NTY3ODkwMTIiLCJ1dGlkIjoiMTIzNDU2NzgtMTIzNC0xMjM0LTEyMzQtMTIzNDU2Nzg5MDEyIn0K"}, [ + 'Cache-Control', + 'no-store, no-cache', + 'Pragma', + 'no-cache', + 'Content-Type', + 'application/json; charset=utf-8', + 'Expires', + '-1', + 'Strict-Transport-Security', + 'max-age=31536000; includeSubDomains', + 'X-Content-Type-Options', + 'nosniff', + 'P3P', + 'CP="DSP CUR OTPi IND OTRi ONL FIN"', + 'x-ms-request-id', + '9e1bae85-2215-44d4-8edc-49f25c3d1a00', + 'x-ms-ests-server', + '2.1.11787.14 - EUS ProdSlices', + 'x-ms-clitelem', + '1,0,0,,', + 'Set-Cookie', + 'fpc=fpc;; expires=Fri, 09-Jul-2021 22:06:48 GMT; path=/; secure; HttpOnly; SameSite=None', + 'Set-Cookie', + 'x-ms-gateway-slice=estsfd; path=/; secure; samesite=none; httponly', + 'Set-Cookie', + 'stsservicecookie=estsfd; path=/; secure; samesite=none; httponly', + 'Date', + 'Wed, 09 Jun 2021 22:06:47 GMT', + 'Content-Length', + '4609' +]); diff --git a/sdk/identity/identity-cache-persistence/recordings/node/usernamepasswordcredential_internal/recording_authenticates_silently_with_tokencachepersistenceoptions.js b/sdk/identity/identity-cache-persistence/recordings/node/usernamepasswordcredential_internal/recording_authenticates_silently_with_tokencachepersistenceoptions.js new file mode 100644 index 000000000000..75b1ab05eee8 --- /dev/null +++ b/sdk/identity/identity-cache-persistence/recordings/node/usernamepasswordcredential_internal/recording_authenticates_silently_with_tokencachepersistenceoptions.js @@ -0,0 +1,111 @@ +let nock = require('nock'); + +module.exports.hash = "bdd6d580a139539982f96a31a4f9e3cc"; + +module.exports.testInfo = {"uniqueName":{},"newDate":{}} + +nock('https://login.microsoftonline.com:443', {"encodedQueryParams":true}) + .get('/common/discovery/instance') + .query(true) + .reply(200, {"tenant_discovery_endpoint":"https://login.microsoftonline.com/12345678-1234-1234-1234-123456789012/v2.0/.well-known/openid-configuration","api-version":"1.1","metadata":[{"preferred_network":"login.microsoftonline.com","preferred_cache":"login.windows.net","aliases":["login.microsoftonline.com","login.windows.net","login.microsoft.com","sts.windows.net"]},{"preferred_network":"login.partner.microsoftonline.cn","preferred_cache":"login.partner.microsoftonline.cn","aliases":["login.partner.microsoftonline.cn","login.chinacloudapi.cn"]},{"preferred_network":"login.microsoftonline.de","preferred_cache":"login.microsoftonline.de","aliases":["login.microsoftonline.de"]},{"preferred_network":"login.microsoftonline.us","preferred_cache":"login.microsoftonline.us","aliases":["login.microsoftonline.us","login.usgovcloudapi.net"]},{"preferred_network":"login-us.microsoftonline.com","preferred_cache":"login-us.microsoftonline.com","aliases":["login-us.microsoftonline.com"]}]}, [ + 'Cache-Control', + 'max-age=86400, private', + 'Content-Type', + 'application/json; charset=utf-8', + 'Strict-Transport-Security', + 'max-age=31536000; includeSubDomains', + 'X-Content-Type-Options', + 'nosniff', + 'Access-Control-Allow-Origin', + '*', + 'Access-Control-Allow-Methods', + 'GET, OPTIONS', + 'P3P', + 'CP="DSP CUR OTPi IND OTRi ONL FIN"', + 'x-ms-request-id', + 'dab65d46-f669-4e01-8263-513c9e450e00', + 'x-ms-ests-server', + '2.1.11787.14 - EUS ProdSlices', + 'Set-Cookie', + 'fpc=fpc;; expires=Fri, 09-Jul-2021 22:06:48 GMT; path=/; secure; HttpOnly; SameSite=None', + 'Set-Cookie', + 'esctx=esctx; domain=.login.microsoftonline.com; path=/; secure; HttpOnly; SameSite=None', + 'Set-Cookie', + 'x-ms-gateway-slice=estsfd; path=/; secure; samesite=none; httponly', + 'Set-Cookie', + 'stsservicecookie=estsfd; path=/; secure; samesite=none; httponly', + 'Date', + 'Wed, 09 Jun 2021 22:06:47 GMT', + 'Content-Length', + '980' +]); + +nock('https://login.microsoftonline.com:443', {"encodedQueryParams":true}) + .get('/12345678-1234-1234-1234-123456789012/v2.0/.well-known/openid-configuration') + .reply(200, {"token_endpoint":"https://login.microsoftonline.com/12345678-1234-1234-1234-123456789012/oauth2/v2.0/token","token_endpoint_auth_methods_supported":["client_secret_post","private_key_jwt","client_secret_basic"],"jwks_uri":"https://login.microsoftonline.com/12345678-1234-1234-1234-123456789012/discovery/v2.0/keys","response_modes_supported":["query","fragment","form_post"],"subject_types_supported":["pairwise"],"id_token_signing_alg_values_supported":["RS256"],"response_types_supported":["code","id_token","code id_token","id_token token"],"scopes_supported":["openid","profile","email","offline_access"],"issuer":"https://login.microsoftonline.com/12345678-1234-1234-1234-123456789012/v2.0","request_uri_parameter_supported":false,"userinfo_endpoint":"https://graph.microsoft.com/oidc/userinfo","authorization_endpoint":"https://login.microsoftonline.com/12345678-1234-1234-1234-123456789012/oauth2/v2.0/authorize","device_authorization_endpoint":"https://login.microsoftonline.com/12345678-1234-1234-1234-123456789012/oauth2/v2.0/devicecode","http_logout_supported":true,"frontchannel_logout_supported":true,"end_session_endpoint":"https://login.microsoftonline.com/12345678-1234-1234-1234-123456789012/oauth2/v2.0/logout","claims_supported":["sub","iss","cloud_instance_name","cloud_instance_host_name","cloud_graph_host_name","msgraph_host","aud","exp","iat","auth_time","acr","nonce","preferred_username","name","tid","ver","at_hash","c_hash","email"],"tenant_region_scope":"NA","cloud_instance_name":"microsoftonline.com","cloud_graph_host_name":"graph.windows.net","msgraph_host":"graph.microsoft.com","rbac_url":"https://pas.windows.net"}, [ + 'Cache-Control', + 'max-age=86400, private', + 'Content-Type', + 'application/json; charset=utf-8', + 'Strict-Transport-Security', + 'max-age=31536000; includeSubDomains', + 'X-Content-Type-Options', + 'nosniff', + 'Access-Control-Allow-Origin', + '*', + 'Access-Control-Allow-Methods', + 'GET, OPTIONS', + 'P3P', + 'CP="DSP CUR OTPi IND OTRi ONL FIN"', + 'x-ms-request-id', + 'fccd1380-a9b6-4c6b-86b8-f9064aeb1900', + 'x-ms-ests-server', + '2.1.11787.14 - NCUS ProdSlices', + 'Set-Cookie', + 'fpc=fpc;; expires=Fri, 09-Jul-2021 22:06:48 GMT; path=/; secure; HttpOnly; SameSite=None', + 'Set-Cookie', + 'esctx=esctx; domain=.login.microsoftonline.com; path=/; secure; HttpOnly; SameSite=None', + 'Set-Cookie', + 'x-ms-gateway-slice=estsfd; path=/; secure; samesite=none; httponly', + 'Set-Cookie', + 'stsservicecookie=estsfd; path=/; secure; samesite=none; httponly', + 'Date', + 'Wed, 09 Jun 2021 22:06:47 GMT', + 'Content-Length', + '1651' +]); + +nock('https://login.microsoftonline.com:443', {"encodedQueryParams":true}) + .post('/12345678-1234-1234-1234-123456789012/oauth2/v2.0/token', "client_id=azure_client_id&username=azure_username&password=azure_password&scope=https%3A%2F%2Fgraph.microsoft.com%2F.default%20openid%20profile%20offline_access&grant_type=password&client_info=1&x-client-SKU=msal.js.node&x-client-VER=1.1.0&x-client-OS=linux&x-client-CPU=x64&x-ms-lib-capability=retry-after, h429&x-client-current-telemetry=2|371,0|,&x-client-last-telemetry=2|0|||0,0&client-request-id=client-request-id") + .reply(200, {"token_type":"Bearer","scope":"profile openid email https://graph.microsoft.com/User.Read https://graph.microsoft.com/.default","expires_in":3599,"ext_expires_in":3599,"access_token":"access_token","refresh_token":"refresh_token","id_token":"eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiIsImtpZCI6ImtpZCJ9.eyJhdWQiOiJhdWQiLCJpc3MiOiJodHRwczovL2xvZ2luLm1pY3Jvc29mdG9ubGluZS5jb20vMTIzNDU2NzgtMTIzNC0xMjM0LTEyMzQtMTIzNDU2Nzg5MDEyL3YyLjAiLCJpYXQiOjE2MTUzMzcxNjMsIm5iZiI6MTYxNTMzNzE2MywiZXhwIjoxNjE1MzQxMDYzLCJhaW8iOiJhaW8iLCJpZHAiOiJodHRwczovL3N0cy53aW5kb3dzLm5ldC9pZHAvIiwibmFtZSI6IkRhbmllbCBSb2Ryw61ndWV6Iiwib2lkIjoib2lkIiwicHJlZmVycmVkX3VzZXJuYW1lIjoiZGFucm9kcmlAbWljcm9zb2Z0LmNvbSIsInJoIjoicmguIiwic3ViIjoic3ViIiwidGlkIjoiMTIzNDU2NzgtMTIzNC0xMjM0LTEyMzQtMTIzNDU2Nzg5MDEyIiwidXRpIjoidXRpIiwidmVyIjoiMi4wIn0=.bm9faWRlYV93aGF0c190aGlz","client_info":"eyJ1aWQiOiIxMjM0NTY3OC0xMjM0LTEyMzQtMTIzNC0xMjM0NTY3ODkwMTIiLCJ1dGlkIjoiMTIzNDU2NzgtMTIzNC0xMjM0LTEyMzQtMTIzNDU2Nzg5MDEyIn0K"}, [ + 'Cache-Control', + 'no-store, no-cache', + 'Pragma', + 'no-cache', + 'Content-Type', + 'application/json; charset=utf-8', + 'Expires', + '-1', + 'Strict-Transport-Security', + 'max-age=31536000; includeSubDomains', + 'X-Content-Type-Options', + 'nosniff', + 'P3P', + 'CP="DSP CUR OTPi IND OTRi ONL FIN"', + 'x-ms-request-id', + '588429da-f260-4926-899e-61e0ae787a00', + 'x-ms-ests-server', + '2.1.11787.14 - WUS2 ProdSlices', + 'x-ms-clitelem', + '1,0,0,,', + 'Set-Cookie', + 'fpc=fpc;; expires=Fri, 09-Jul-2021 22:06:48 GMT; path=/; secure; HttpOnly; SameSite=None', + 'Set-Cookie', + 'x-ms-gateway-slice=estsfd; path=/; secure; samesite=none; httponly', + 'Set-Cookie', + 'stsservicecookie=estsfd; path=/; secure; samesite=none; httponly', + 'Date', + 'Wed, 09 Jun 2021 22:06:48 GMT', + 'Content-Length', + '4615' +]); diff --git a/sdk/identity/identity-cache-persistence/review/identity-cache-persistence.api.md b/sdk/identity/identity-cache-persistence/review/identity-cache-persistence.api.md new file mode 100644 index 000000000000..4d1cf8afbe53 --- /dev/null +++ b/sdk/identity/identity-cache-persistence/review/identity-cache-persistence.api.md @@ -0,0 +1,15 @@ +## API Report File for "@azure/identity-cache-persistence" + +> Do not edit this file. It is a report generated by [API Extractor](https://api-extractor.com/). + +```ts + +import { IdentityExtension } from '@azure/identity'; + +// @public +export const cachePersistenceExtension: IdentityExtension; + + +// (No @packageDocumentation comment for this package) + +``` diff --git a/sdk/identity/identity-cache-persistence/rollup.config.js b/sdk/identity/identity-cache-persistence/rollup.config.js new file mode 100644 index 000000000000..5d7deee44c14 --- /dev/null +++ b/sdk/identity/identity-cache-persistence/rollup.config.js @@ -0,0 +1,3 @@ +import { makeConfig } from "@azure/dev-tool/shared-config/rollup"; + +export default makeConfig(require("./package.json")); diff --git a/sdk/identity/identity-cache-persistence/samples-dev/extension.ts b/sdk/identity/identity-cache-persistence/samples-dev/extension.ts new file mode 100644 index 000000000000..d826b5ca6ee7 --- /dev/null +++ b/sdk/identity/identity-cache-persistence/samples-dev/extension.ts @@ -0,0 +1,57 @@ +// Copyright (c) Microsoft Corporation. +// Licensed under the MIT license. + +/** + * This sample shows how to add a persistent token cache to `@azure/identity` + * using the persistence extension. Once the persistence extension is added + * through `useIdentityExtension`, some credentials, such as + * `DeviceCodeCredential`, will be able to retrieve tokens from the cache rather + * than requesting new tokens from the Azure Active Directory token endpoint. + * + * In order to utilize the persistent token cache, the `enabled` property must + * be set to `true` within `tokenCachePersistenceOptions` in the credential's + * options. + * + * @summary import and use the persistence extension + */ + +import { useIdentityExtension, DeviceCodeCredential } from "@azure/identity"; + +import { cachePersistenceExtension } from "@azure/identity-cache-persistence"; +useIdentityExtension(cachePersistenceExtension); + +import dotenv from "dotenv"; +dotenv.config(); + +async function main() { + const credential = new DeviceCodeCredential({ + // This property must be provided, with `enabled` set to true to enable + // persistent token caching. + tokenCachePersistenceOptions: { + enabled: true + } + }); + + // This is the scope we will use to get a token from the AAD token endpoint. + // By default, we'll use the Microsoft Graph scope as an example, but when + // you use the credential with an Azure SDK package, it will configure the + // scope for you automatically. + const scope = process.env.AAD_TEST_SCOPE ?? "https://graph.microsoft.com/.default"; + + // A little helper function to print part of an access_token + const logToken = async () => + console.log((await credential.getToken(scope)).token.substr(0, 10), "..."); + + // You should observe that the same token is printed twice, and that running the sample twice + // only prompts for interactive authentication once. In the second execution, the token should + // be retrieved from the cache. + console.log("Calling getToken()", 1); + await logToken(); + console.log("Calling getToken()", 2); + await logToken(); +} + +main().catch((error) => { + console.error("The sample encountered an error:", error); + process.exit(1); +}); diff --git a/sdk/identity/identity-cache-persistence/src/index.ts b/sdk/identity/identity-cache-persistence/src/index.ts new file mode 100644 index 000000000000..9dc439e31e78 --- /dev/null +++ b/sdk/identity/identity-cache-persistence/src/index.ts @@ -0,0 +1,40 @@ +// Copyright (c) Microsoft Corporation. +// Licensed under the MIT license. + +import { IdentityExtension } from "@azure/identity"; + +import { AzureExtensionContext } from "../../identity/src/extensions/provider"; +import { createPersistenceCachePlugin } from "./provider"; + +/** + * An extension that provides persistent token caching for `@azure/identity` + * credentials. The extension API is compatible with `@azure/identity` versions + * 2.0.0 and later. Load this extension using the `useIdentityExtension` + * function, imported from `@azure/identity`. + * + * In order to enable this functionality, you must also pass + * `tokenCachePersistenceOptions` to your credential constructors with an + * `enabled` property set to true. + * + * Example: + * + * ```typescript + * import { useIdentityExtension, DeviceCodeCredential } from "@azure/identity"; + * import { cachePersistenceExtension } from "@azure/identity-cache-persistence"; + * + * // Load the extension + * useIdentityExtension(cachePersistenceExtension); + * + * const credential = new DeviceCodeCredential({ + * tokenCachePersistenceOptions: { + * enabled: true + * } + * }); + * ``` + */ + +export const cachePersistenceExtension: IdentityExtension = (context) => { + const { cachePluginControl } = context as AzureExtensionContext; + + cachePluginControl.setPersistence(createPersistenceCachePlugin); +}; diff --git a/sdk/identity/identity-cache-persistence/src/platforms.ts b/sdk/identity/identity-cache-persistence/src/platforms.ts new file mode 100644 index 000000000000..0a1d591fd696 --- /dev/null +++ b/sdk/identity/identity-cache-persistence/src/platforms.ts @@ -0,0 +1,143 @@ +// Copyright (c) Microsoft Corporation. +// Licensed under the MIT license. + +/* eslint-disable tsdoc/syntax */ + +import * as path from "path"; + +import { + KeychainPersistence, + FilePersistence, + DataProtectionScope, + FilePersistenceWithDataProtection, + LibSecretPersistence, + IPersistence as Persistence +} from "@azure/msal-node-extensions"; + +import { TokenCachePersistenceOptions } from "@azure/identity"; + +/** + * Local application data folder + * Expected values: + * - Darwin: '/Users/user/' + * - Windows 8: 'C:\Users\user\AppData\Local' + * - Windows XP: 'C:\Documents and Settings\user\Application Data\Local' + * - Linux: '/home/user/.local/share' + * @internal + */ +const localApplicationDataFolder = + process.env.APPDATA?.replace?.(/(.Roaming)*$/, "\\Local") ?? process.env.HOME!; + +/** + * Dictionary of values that we use as default as we discover, pick and enable the persistence layer. + * @internal + */ +export const defaultMsalValues = { + tokenCache: { + name: "msal.cache", + // Expected values: + // - Darwin: '/Users/user/.IdentityService' + // - Windows 8: 'C:\Users\user\AppData\Local\.IdentityService' + // - Windows XP: 'C:\Documents and Settings\user\Application Data\Local\.IdentityService' + // - Linux: '/home/user/.IdentityService' + directory: path.join(localApplicationDataFolder, ".IdentityService") + }, + keyRing: { + label: "MSALCache", + schema: "msal.cache", + collection: "default", + attributes: { + MsalClientID: "Microsoft.Developer.IdentityService", + "Microsoft.Developer.IdentityService": "1.0.0.0" + }, + service: "Microsoft.Developer.IdentityService", + account: "MSALCache" + }, + keyChain: { + service: "Microsoft.Developer.IdentityService", + account: "MSALCache" + } +}; + +/** + * Options that are used by the underlying MSAL cache provider. + * @internal + */ +export type MsalPersistenceOptions = Omit; + +/** + * A function that returns a persistent token cache instance. + * @internal + */ +type MsalPersistenceFactory = (options?: MsalPersistenceOptions) => Promise; + +/** + * Expected responses: + * - Darwin: '/Users/user/.IdentityService/' + * - Windows 8: 'C:\Users\user\AppData\Local\.IdentityService\' + * - Windows XP: 'C:\Documents and Settings\user\Application Data\Local\.IdentityService\' + * - Linux: '/home/user/.IdentityService/' + * @internal + */ +function getPersistencePath(name: string): string { + return path.join(defaultMsalValues.tokenCache.directory, name); +} + +/** + * Set of the platforms we attempt to deliver persistence on. + * + * - On Windows we use DPAPI. + * - On OSX (Darwin), we try to use the system's Keychain, otherwise if the property `allowUnencryptedStorage` is set to true, we use an unencrypted file. + * - On Linux, we try to use the system's Keyring, otherwise if the property `allowUnencryptedStorage` is set to true, we use an unencrypted file. + * + * Other platforms _are not supported_ at this time. + * + * @internal + */ +export const msalPersistencePlatforms: Partial> = { + win32: ({ name = defaultMsalValues.tokenCache.name } = {}): Promise => + FilePersistenceWithDataProtection.create( + getPersistencePath(name), + DataProtectionScope.CurrentUser + ), + + darwin: async (options: MsalPersistenceOptions = {}): Promise => { + const { name, allowUnencryptedStorage } = options; + const { service, account } = defaultMsalValues.keyChain; + const persistencePath = getPersistencePath(name || defaultMsalValues.tokenCache.name); + + try { + const persistence = await KeychainPersistence.create(persistencePath, service, account); + // If we don't encounter an error when trying to read from the keychain, then we should be good to go. + await persistence.load(); + return persistence; + } catch (e) { + // If we got an error while trying to read from the keyring, + // we will proceed only if the user has specified that unencrypted storage is allowed. + if (!allowUnencryptedStorage) { + throw new Error("Unable to read from the macOS Keychain."); + } + return FilePersistence.create(persistencePath); + } + }, + + linux: async (options: MsalPersistenceOptions = {}): Promise => { + const { name, allowUnencryptedStorage } = options; + const { service, account } = defaultMsalValues.keyRing; + const persistencePath = getPersistencePath(name || defaultMsalValues.tokenCache.name); + + try { + const persistence = await LibSecretPersistence.create(persistencePath, service, account); + // If we don't encounter an error when trying to read from the keyring, then we should be good to go. + await persistence.load(); + return persistence; + } catch (e) { + // If we got an error while trying to read from the keyring, + // we will proceed only if the user has specified that unencrypted storage is allowed. + if (!allowUnencryptedStorage) { + throw new Error("Unable to read from the system keyring (libsecret)."); + } + return FilePersistence.create(persistencePath); + } + } +}; diff --git a/sdk/identity/identity-cache-persistence/src/provider.ts b/sdk/identity/identity-cache-persistence/src/provider.ts new file mode 100644 index 000000000000..bbad7ddf910b --- /dev/null +++ b/sdk/identity/identity-cache-persistence/src/provider.ts @@ -0,0 +1,34 @@ +// Copyright (c) Microsoft Corporation. +// Licensed under the MIT license. + +import { ICachePlugin as CachePlugin } from "@azure/msal-node"; +import { PersistenceCachePlugin, IPersistence as Persistence } from "@azure/msal-node-extensions"; + +import { MsalPersistenceOptions, msalPersistencePlatforms } from "./platforms"; + +/** + * This is used to gain access to the underlying Persistence instance, which we use for testing + * + * @returns a raw persistence instance + * @internal + */ +export async function createPersistence(options: MsalPersistenceOptions): Promise { + const persistence = await msalPersistencePlatforms[process.platform]?.(options); + + if (persistence === undefined) { + throw new Error("no persistence providers are available on this platform"); + } + + return persistence; +} + +export async function createPersistenceCachePlugin( + options?: MsalPersistenceOptions +): Promise { + const persistence = await createPersistence(options ?? {}); + + return new PersistenceCachePlugin(persistence, { + retryNumber: 100, + retryDelay: 50 + }); +} diff --git a/sdk/identity/identity-cache-persistence/test/internal/node/clientCertificateCredential.spec.ts b/sdk/identity/identity-cache-persistence/test/internal/node/clientCertificateCredential.spec.ts new file mode 100644 index 000000000000..9f87a562cc18 --- /dev/null +++ b/sdk/identity/identity-cache-persistence/test/internal/node/clientCertificateCredential.spec.ts @@ -0,0 +1,126 @@ +// Copyright (c) Microsoft Corporation. +// Licensed under the MIT license. + +/* eslint-disable @typescript-eslint/no-non-null-asserted-optional-chain */ + +import Sinon from "sinon"; +import assert from "assert"; +import * as path from "path"; + +import { env, isPlaybackMode } from "@azure/test-utils-recorder"; +import { ConfidentialClientApplication } from "@azure/msal-node"; + +import { + ClientCertificateCredential, + TokenCachePersistenceOptions +} from "../../../../identity/src"; +import { MsalTestCleanup, msalNodeTestSetup } from "../../../../identity/test/msalTestUtils"; +import { MsalNode } from "../../../../identity/src/msal/nodeFlows/nodeCommon"; + +import { createPersistence } from "./setup.spec"; + +const ASSET_PATH = "assets"; + +describe("ClientCertificateCredential (internal)", function(this: Mocha.Suite) { + let cleanup: MsalTestCleanup; + let getTokenSilentSpy: Sinon.SinonSpy; + let doGetTokenSpy: Sinon.SinonSpy; + + beforeEach(function(this: Mocha.Context) { + const setup = msalNodeTestSetup(this); + cleanup = setup.cleanup; + + getTokenSilentSpy = setup.sandbox.spy(MsalNode.prototype, "getTokenSilent"); + + // MsalClientSecret calls to this method underneath. + doGetTokenSpy = setup.sandbox.spy( + ConfidentialClientApplication.prototype, + "acquireTokenByClientCredential" + ); + }); + afterEach(async function() { + await cleanup(); + }); + + // We use AZURE_CLIENT_CERTIFICATE_PATH if it is defined, and otherwise we will use the dummy cert + const certificatePath = + process.env.AZURE_CLIENT_CERTIFICATE_PATH ?? path.join(ASSET_PATH, "cert.pem"); + const scope = "https://graph.microsoft.com/.default"; + + it("Accepts tokenCachePersistenceOptions", async function(this: Mocha.Context) { + if (isPlaybackMode()) { + // MSAL creates a client assertion based on the certificate that I haven't been able to mock. + // This assertion could be provided as parameters, but we don't have that in the public API yet, + // and I'm trying to avoid having to generate one ourselves. + this.skip(); + } + // OSX asks for passwords on CI, so we need to skip these tests from our automation + if (process.platform === "darwin") { + this.skip(); + } + + const tokenCachePersistenceOptions: TokenCachePersistenceOptions = { + enabled: true, + name: this.test?.title.replace(/[^a-zA-Z]/g, "_"), + allowUnencryptedStorage: true + }; + + // Emptying the token cache before we start. + const persistence = await createPersistence(tokenCachePersistenceOptions); + persistence?.save("{}"); + + const credential = new ClientCertificateCredential( + env.AZURE_TENANT_ID, + env.AZURE_CLIENT_ID, + certificatePath, + { tokenCachePersistenceOptions } + ); + + await credential.getToken(scope); + const result = await persistence?.load(); + const parsedResult = JSON.parse(result!); + assert.ok(parsedResult.AccessToken); + }); + + it("Authenticates silently with tokenCachePersistenceOptions", async function(this: Mocha.Context) { + if (isPlaybackMode()) { + // MSAL creates a client assertion based on the certificate that I haven't been able to mock. + // This assertion could be provided as parameters, but we don't have that in the public API yet, + // and I'm trying to avoid having to generate one ourselves. + this.skip(); + } + // OSX asks for passwords on CI, so we need to skip these tests from our automation + if (process.platform === "darwin") { + this.skip(); + } + + const tokenCachePersistenceOptions: TokenCachePersistenceOptions = { + enabled: true, + name: this.test?.title.replace(/[^a-zA-Z]/g, "_"), + allowUnencryptedStorage: true + }; + + // Emptying the token cache before we start. + const persistence = await createPersistence(tokenCachePersistenceOptions); + await persistence?.save("{}"); + + const credential = new ClientCertificateCredential( + env.AZURE_TENANT_ID, + env.AZURE_CLIENT_ID, + certificatePath, + { tokenCachePersistenceOptions } + ); + + await credential.getToken(scope); + assert.equal(getTokenSilentSpy.callCount, 1); + assert.equal(doGetTokenSpy.callCount, 1); + + await credential.getToken(scope); + assert.equal(getTokenSilentSpy.callCount, 2); + // Even though we're providing a file persistence cache, + // The Client Credential flow does not return the account information from the authentication service, + // so each time getToken gets called, we will have to acquire a new token through the service. + // MSAL also doesn't store the account in the cache (getAllAccounts returns an empty array). + assert.equal(doGetTokenSpy.callCount, 2); + }); +}); diff --git a/sdk/identity/identity-cache-persistence/test/internal/node/clientSecretCredential.spec.ts b/sdk/identity/identity-cache-persistence/test/internal/node/clientSecretCredential.spec.ts new file mode 100644 index 000000000000..cfb960f966f0 --- /dev/null +++ b/sdk/identity/identity-cache-persistence/test/internal/node/clientSecretCredential.spec.ts @@ -0,0 +1,105 @@ +// Copyright (c) Microsoft Corporation. +// Licensed under the MIT license. + +/* eslint-disable @typescript-eslint/no-non-null-asserted-optional-chain */ + +import Sinon from "sinon"; +import assert from "assert"; + +import { env } from "@azure/test-utils-recorder"; +import { ConfidentialClientApplication } from "@azure/msal-node"; + +import { ClientSecretCredential, TokenCachePersistenceOptions } from "../../../../identity/src"; +import { MsalTestCleanup, msalNodeTestSetup } from "../../../../identity/test/msalTestUtils"; +import { MsalNode } from "../../../../identity/src/msal/nodeFlows/nodeCommon"; + +import { createPersistence } from "./setup.spec"; + +const scope = "https://graph.microsoft.com/.default"; + +describe("ClientSecretCredential (internal)", function(this: Mocha.Suite) { + let cleanup: MsalTestCleanup; + let getTokenSilentSpy: Sinon.SinonSpy; + let doGetTokenSpy: Sinon.SinonSpy; + + beforeEach(function(this: Mocha.Context) { + const setup = msalNodeTestSetup(this); + cleanup = setup.cleanup; + + getTokenSilentSpy = setup.sandbox.spy(MsalNode.prototype, "getTokenSilent"); + + // MsalClientSecret calls to this method underneath. + doGetTokenSpy = setup.sandbox.spy( + ConfidentialClientApplication.prototype, + "acquireTokenByClientCredential" + ); + }); + afterEach(async function() { + await cleanup(); + }); + + it("Accepts tokenCachePersistenceOptions", async function(this: Mocha.Context) { + // OSX asks for passwords on CI, so we need to skip these tests from our automation + if (process.platform === "darwin") { + this.skip(); + } + + const tokenCachePersistenceOptions: TokenCachePersistenceOptions = { + enabled: true, + name: this.test?.title.replace(/[^a-zA-Z]/g, "_"), + allowUnencryptedStorage: true + }; + + // Emptying the token cache before we start. + const persistence = await createPersistence(tokenCachePersistenceOptions); + persistence?.save("{}"); + + const credential = new ClientSecretCredential( + env.AZURE_TENANT_ID, + env.AZURE_CLIENT_ID, + env.AZURE_CLIENT_SECRET, + { tokenCachePersistenceOptions } + ); + + await credential.getToken(scope); + const result = await persistence?.load(); + const parsedResult = JSON.parse(result!); + assert.ok(parsedResult.AccessToken); + }); + + it("Authenticates silently with tokenCachePersistenceOptions", async function(this: Mocha.Context) { + // OSX asks for passwords on CI, so we need to skip these tests from our automation + if (process.platform === "darwin") { + this.skip(); + } + + const tokenCachePersistenceOptions: TokenCachePersistenceOptions = { + enabled: true, + name: this.test?.title.replace(/[^a-zA-Z]/g, "_"), + allowUnencryptedStorage: true + }; + + // Emptying the token cache before we start. + const persistence = await createPersistence(tokenCachePersistenceOptions); + persistence?.save("{}"); + + const credential = new ClientSecretCredential( + env.AZURE_TENANT_ID, + env.AZURE_CLIENT_ID, + env.AZURE_CLIENT_SECRET, + { tokenCachePersistenceOptions } + ); + + await credential.getToken(scope); + assert.equal(getTokenSilentSpy.callCount, 1); + assert.equal(doGetTokenSpy.callCount, 1); + + await credential.getToken(scope); + assert.equal(getTokenSilentSpy.callCount, 2); + + // Even though we're providing the same default in memory persistence cache that we use for DeviceCodeCredential, + // The Client Secret flow does not return the account information from the authentication service, + // so each time getToken gets called, we will have to acquire a new token through the service. + assert.equal(doGetTokenSpy.callCount, 2); + }); +}); diff --git a/sdk/identity/identity-cache-persistence/test/internal/node/deviceCodeCredential.spec.ts b/sdk/identity/identity-cache-persistence/test/internal/node/deviceCodeCredential.spec.ts new file mode 100644 index 000000000000..dbede0e5438d --- /dev/null +++ b/sdk/identity/identity-cache-persistence/test/internal/node/deviceCodeCredential.spec.ts @@ -0,0 +1,160 @@ +// Copyright (c) Microsoft Corporation. +// Licensed under the MIT license. + +/* eslint-disable @typescript-eslint/no-non-null-asserted-optional-chain */ + +import Sinon from "sinon"; +import assert from "assert"; + +import { PublicClientApplication } from "@azure/msal-node"; +import { isLiveMode } from "@azure/test-utils-recorder"; + +import { DeviceCodeCredential, TokenCachePersistenceOptions } from "../../../../identity/src"; +import { MsalTestCleanup, msalNodeTestSetup } from "../../../../identity/test/msalTestUtils"; +import { MsalNode } from "../../../../identity/src/msal/nodeFlows/nodeCommon"; + +import { createPersistence } from "./setup.spec"; + +describe("DeviceCodeCredential (internal)", function(this: Mocha.Suite) { + let cleanup: MsalTestCleanup; + let getTokenSilentSpy: Sinon.SinonSpy; + let doGetTokenSpy: Sinon.SinonSpy; + + beforeEach(function(this: Mocha.Context) { + const setup = msalNodeTestSetup(this); + cleanup = setup.cleanup; + + getTokenSilentSpy = setup.sandbox.spy(MsalNode.prototype, "getTokenSilent"); + + // MsalClientSecret calls to this method underneath. + doGetTokenSpy = setup.sandbox.spy( + PublicClientApplication.prototype, + "acquireTokenByDeviceCode" + ); + }); + afterEach(async function() { + await cleanup(); + }); + + const scope = "https://graph.microsoft.com/.default"; + + it("Accepts tokenCachePersistenceOptions", async function(this: Mocha.Context) { + // OSX asks for passwords on CI, so we need to skip these tests from our automation + if (process.platform === "darwin") { + this.skip(); + } + // These tests should not run live because this credential requires user interaction. + if (isLiveMode()) { + this.skip(); + } + + const tokenCachePersistenceOptions: TokenCachePersistenceOptions = { + enabled: true, + name: this.test?.title.replace(/[^a-zA-Z]/g, "_"), + allowUnencryptedStorage: true + }; + + // Emptying the token cache before we start. + const persistence = await createPersistence(tokenCachePersistenceOptions); + persistence?.save("{}"); + + const credential = new DeviceCodeCredential({ + tokenCachePersistenceOptions + }); + + await credential.getToken(scope); + const result = await persistence?.load(); + const parsedResult = JSON.parse(result!); + assert.ok(parsedResult.AccessToken); + }); + + it("Authenticates silently with tokenCachePersistenceOptions", async function(this: Mocha.Context) { + // OSX asks for passwords on CI, so we need to skip these tests from our automation + if (process.platform === "darwin") { + this.skip(); + } + // These tests should not run live because this credential requires user interaction. + if (isLiveMode()) { + this.skip(); + } + + const tokenCachePersistenceOptions: TokenCachePersistenceOptions = { + enabled: true, + name: this.test?.title.replace(/[^a-zA-Z]/g, "_"), + allowUnencryptedStorage: true + }; + + // Emptying the token cache before we start. + const persistence = await createPersistence(tokenCachePersistenceOptions); + persistence?.save("{}"); + + const credential = new DeviceCodeCredential({ + tokenCachePersistenceOptions + }); + + await credential.getToken(scope); + assert.equal(getTokenSilentSpy.callCount, 1); + assert.equal(doGetTokenSpy.callCount, 1); + + // The cache should have a token a this point + const result = await persistence?.load(); + const parsedResult = JSON.parse(result!); + assert.ok(parsedResult.AccessToken); + + await credential.getToken(scope); + assert.equal(getTokenSilentSpy.callCount, 2); + assert.equal(doGetTokenSpy.callCount, 1); + }); + + it("allows passing an authenticationRecord to avoid further manual authentications", async function(this: Mocha.Context) { + // OSX asks for passwords on CI, so we need to skip these tests from our automation + if (process.platform === "darwin") { + this.skip(); + } + // These tests should not run live because this credential requires user interaction. + if (isLiveMode()) { + this.skip(); + } + const tokenCachePersistenceOptions: TokenCachePersistenceOptions = { + enabled: true, + name: this.test?.title.replace(/[^a-zA-Z]/g, "_"), + allowUnencryptedStorage: true + }; + + // Emptying the token cache before we start. + const persistence = await createPersistence(tokenCachePersistenceOptions); + persistence?.save("{}"); + + const credential = new DeviceCodeCredential({ + // To be able to re-use the account, the Token Cache must also have been provided. + // TODO: Perhaps make the account parameter part of the tokenCachePersistenceOptions? + tokenCachePersistenceOptions + }); + + const account = await credential.authenticate(scope); + assert.ok(account); + assert.equal(getTokenSilentSpy.callCount, 1); + assert.equal(doGetTokenSpy.callCount, 1); + + const credential2 = new DeviceCodeCredential({ + authenticationRecord: account, + // To be able to re-use the account, the Token Cache must also have been provided. + // TODO: Perhaps make the account parameter part of the tokenCachePersistenceOptions? + tokenCachePersistenceOptions + }); + + // The cache should have a token a this point + const result = await persistence?.load(); + const parsedResult = JSON.parse(result!); + assert.ok(parsedResult.AccessToken); + + const token = await credential2.getToken(scope); + assert.ok(token?.token); + assert.ok(token?.expiresOnTimestamp! > Date.now()); + assert.equal(getTokenSilentSpy.callCount, 2); + + // TODO: Why is this the case? + // I created an issue to track this: https://github.com/Azure/azure-sdk-for-js/issues/14701 + assert.equal(doGetTokenSpy.callCount, 2); + }); +}); diff --git a/sdk/identity/identity-cache-persistence/test/internal/node/setup.spec.ts b/sdk/identity/identity-cache-persistence/test/internal/node/setup.spec.ts new file mode 100644 index 000000000000..175e5f813cb7 --- /dev/null +++ b/sdk/identity/identity-cache-persistence/test/internal/node/setup.spec.ts @@ -0,0 +1,33 @@ +// Copyright (c) Microsoft Corporation. +// Licensed under the MIT license. + +/* eslint-disable @typescript-eslint/no-require-imports */ + +// We need to set up the extension for the tests! + +import { useIdentityExtension } from "../../../../identity/src"; + +// The persistence tests have to run on the same version of Node that's used to +// install dependencies, currently 14. +// TODO: We need a better solution for this, but this will do for now. +if (!process.versions.node.startsWith("14")) { + console.warn( + "WARNING: skipping persistence tests on incompatible node version:", + process.version + ); + console.warn("Persistence tests are only compatible with Node 14."); + process.exit(0); +} + +// This shim is required to defer loading of msal-node-extensions in environments where +// it will crash CI with an invalid Node API version. +export const createPersistence: typeof import("../../../src/provider").createPersistence = ( + ...args +) => { + const { createPersistence: create } = require("../../../src/provider"); + return create(...args); +}; + +before(function() { + useIdentityExtension(require("../../../src").cachePersistenceExtension); +}); diff --git a/sdk/identity/identity-cache-persistence/test/internal/node/usernamePasswordCredential.spec.ts b/sdk/identity/identity-cache-persistence/test/internal/node/usernamePasswordCredential.spec.ts new file mode 100644 index 000000000000..bf13301d4f89 --- /dev/null +++ b/sdk/identity/identity-cache-persistence/test/internal/node/usernamePasswordCredential.spec.ts @@ -0,0 +1,109 @@ +// Copyright (c) Microsoft Corporation. +// Licensed under the MIT license. + +/* eslint-disable @typescript-eslint/no-non-null-asserted-optional-chain */ + +import Sinon from "sinon"; +import assert from "assert"; + +import { env } from "@azure/test-utils-recorder"; +import { PublicClientApplication } from "@azure/msal-node"; + +import { UsernamePasswordCredential, TokenCachePersistenceOptions } from "../../../../identity/src"; +import { MsalTestCleanup, msalNodeTestSetup } from "../../../../identity/test/msalTestUtils"; +import { MsalNode } from "../../../../identity/src/msal/nodeFlows/nodeCommon"; + +import { createPersistence } from "./setup.spec"; + +describe("UsernamePasswordCredential (internal)", function(this: Mocha.Suite) { + let cleanup: MsalTestCleanup; + let getTokenSilentSpy: Sinon.SinonSpy; + let doGetTokenSpy: Sinon.SinonSpy; + + beforeEach(function(this: Mocha.Context) { + const setup = msalNodeTestSetup(this); + cleanup = setup.cleanup; + + getTokenSilentSpy = setup.sandbox.spy(MsalNode.prototype, "getTokenSilent"); + + // MsalClientSecret calls to this method underneath. + doGetTokenSpy = setup.sandbox.spy( + PublicClientApplication.prototype, + "acquireTokenByUsernamePassword" + ); + }); + + afterEach(async function() { + await cleanup(); + }); + + const scope = "https://graph.microsoft.com/.default"; + + it("Accepts tokenCachePersistenceOptions", async function(this: Mocha.Context) { + // OSX asks for passwords on CI, so we need to skip these tests from our automation + if (process.platform === "darwin") { + this.skip(); + } + + const tokenCachePersistenceOptions: TokenCachePersistenceOptions = { + enabled: true, + name: this.test?.title.replace(/[^a-zA-Z]/g, "_"), + allowUnencryptedStorage: true + }; + + // Emptying the token cache before we start. + const persistence = await createPersistence(tokenCachePersistenceOptions); + persistence?.save("{}"); + + const credential = new UsernamePasswordCredential( + env.AZURE_TENANT_ID, + env.AZURE_CLIENT_ID, + env.AZURE_USERNAME, + env.AZURE_PASSWORD, + { tokenCachePersistenceOptions } + ); + + await credential.getToken(scope); + const result = await persistence?.load(); + const parsedResult = JSON.parse(result!); + assert.ok(parsedResult.AccessToken); + }); + + it("Authenticates silently with tokenCachePersistenceOptions", async function(this: Mocha.Context) { + // OSX asks for passwords on CI, so we need to skip these tests from our automation + if (process.platform === "darwin") { + this.skip(); + } + + const tokenCachePersistenceOptions: TokenCachePersistenceOptions = { + enabled: true, + name: this.test?.title.replace(/[^a-zA-Z]/g, "_"), + allowUnencryptedStorage: true + }; + + // Emptying the token cache before we start. + const persistence = await createPersistence(tokenCachePersistenceOptions); + persistence?.save("{}"); + + const credential = new UsernamePasswordCredential( + env.AZURE_TENANT_ID, + env.AZURE_CLIENT_ID, + env.AZURE_USERNAME, + env.AZURE_PASSWORD, + { tokenCachePersistenceOptions } + ); + + await credential.getToken(scope); + assert.equal(getTokenSilentSpy.callCount, 1); + assert.equal(doGetTokenSpy.callCount, 1); + + // The cache should have a token a this point + const result = await persistence?.load(); + const parsedResult = JSON.parse(result!); + assert.ok(parsedResult.AccessToken); + + await credential.getToken(scope); + assert.equal(getTokenSilentSpy.callCount, 2); + assert.equal(doGetTokenSpy.callCount, 1); + }); +}); diff --git a/sdk/identity/identity-cache-persistence/tsconfig.json b/sdk/identity/identity-cache-persistence/tsconfig.json new file mode 100644 index 000000000000..fa5828a32c3a --- /dev/null +++ b/sdk/identity/identity-cache-persistence/tsconfig.json @@ -0,0 +1,14 @@ +{ + "extends": "../../../tsconfig.package", + "compilerOptions": { + "target": "es6", + "lib": ["DOM"], + "declarationDir": "./types", + "outDir": "./dist-esm", + "resolveJsonModule": true, + "paths": { + "@azure/identity-cache-persistence": ["./src/index"] + } + }, + "include": ["src/**/*", "test/**/*", "samples-dev/**/*"] +} diff --git a/sdk/identity/identity-cache-persistence/tsdoc.json b/sdk/identity/identity-cache-persistence/tsdoc.json new file mode 100644 index 000000000000..81c5a8a2aa2f --- /dev/null +++ b/sdk/identity/identity-cache-persistence/tsdoc.json @@ -0,0 +1,4 @@ +{ + "$schema": "https://developer.microsoft.com/json-schemas/tsdoc/v0/tsdoc.schema.json", + "extends": ["../../../tsdoc.json"] +} diff --git a/sdk/identity/identity-vscode/.eslintrc.json b/sdk/identity/identity-vscode/.eslintrc.json new file mode 100644 index 000000000000..1c1503b9333a --- /dev/null +++ b/sdk/identity/identity-vscode/.eslintrc.json @@ -0,0 +1,8 @@ +{ + "plugins": ["@azure/azure-sdk"], + "extends": ["plugin:@azure/azure-sdk/azure-sdk-base"], + "rules": { + "@azure/azure-sdk/ts-package-json-module": "off", + "@azure/azure-sdk/ts-package-json-engine-is-present": "off" + } +} diff --git a/sdk/identity/identity-vscode/CHANGELOG.md b/sdk/identity/identity-vscode/CHANGELOG.md new file mode 100644 index 000000000000..b4a00d2e3023 --- /dev/null +++ b/sdk/identity/identity-vscode/CHANGELOG.md @@ -0,0 +1,7 @@ +# Release History + +## 1.0.0-beta.1 (Unreleased) + +### New features + +- This release marks the initial beta availability of the `@azure/identity-vscode` package. This package extends `@azure/identity` by providing the dependencies of `VisualStudioCodeCredential` and enabling it within the `@azure/identity` package. `VisualStudioCodeCredential` uses the authenticated session from the "Azure Account" extension in Visual Studio Code. If this extension package is not loaded using `useIdentityExtension`, then `VisualStudioCodeCredential` from `@azure/identity` will throw a `CredentialUnavailableError`. By enabling `VisualStudioCodeCredential`, the `DefaultAzureCredential` class in `@azure/identity` also gains functionality allowing it to use the "Azure Account" session if it is available. diff --git a/sdk/identity/identity-vscode/LICENSE b/sdk/identity/identity-vscode/LICENSE new file mode 100644 index 000000000000..ea8fb1516028 --- /dev/null +++ b/sdk/identity/identity-vscode/LICENSE @@ -0,0 +1,21 @@ +The MIT License (MIT) + +Copyright (c) 2020 Microsoft + +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. diff --git a/sdk/identity/identity-vscode/README.md b/sdk/identity/identity-vscode/README.md new file mode 100644 index 000000000000..b4da40df904f --- /dev/null +++ b/sdk/identity/identity-vscode/README.md @@ -0,0 +1,125 @@ +## Azure Identity Extension for Visual Studio Code Authentication + +This package provides an extension to the Azure Identity library for JavaScript ([`@azure/identity`](https://npmjs.com/package/@azure/identity)) that enables authentication through the "Azure Account" extension for Visual Studio Code. This extension provides the dependencies of the `VisualStudioCodeCredential` in `@azure/identity` and enables it for use on its own or as part of `DefaultAzureCredential`. + +[Source code](https://github.com/Azure/azure-sdk-for-js/tree/main/sdk/identity/identity-vscode) | [Samples](https://github.com/Azure/azure-sdk-for-js/blob/main/sdk/identity/identity-vscode/samples-dev) + +## Getting started + +### Install the package + +This package is designed to be used with Azure Identity for JavaScript. Install both `@azure/identity` and this package using `npm`: + +```sh +$ npm install --save @azure/identity +$ npm install --save @azure/identity-vscode +``` + +### Prerequisites + +- An [Azure subscription](https://azure.microsoft.com/free/). +- Install [Visual Studio Code](https://aka.ms/vscode) and the ["Azure Account" extension][azaccountext] + +#### Supported Environments + +Azure Identity extensions for JavaScript support stable (even numbered) versions of Node.js starting from v12. While it may run in other Node versions, no support is guaranteed. `@azure/identity-vscode` **does not** support browser environments. + +## Key concepts + +If this is your first time using `@azure/identity` or the Microsoft identity platform (Azure Active Directory), we recommend that you read [Using `@azure/identity` with Microsoft Identity Platform](https://github.com/Azure/azure-sdk-for-js/blob/main/documentation/using-azure-identity.md) first. This document will give you a deeper understanding of the platform and how to configure your Azure account correctly. + +### Azure Identity Extensions + +As of `@azure/identity` version 2.0.0, the Identity client library for JavaScript includes an extension API. This package (`@azure/identity-vscode`) exports an extension object that you must pass as an argument to the top-level `useIdentityExtension` function from the `@azure/identity` package. Enable authentication through the "Azure Account" extension for Visual Studio Code as follows: + +```typescript +import { useIdentityExtension } from "@azure/identity"; +import { vsCodeExtension } from "@azure/identity-vscode"; + +useIdentityExtension(vsCodeExtension); +``` + +After calling `useIdentityExtension`, the `VisualStudioCodeCredential` from the `@azure/identity` package will be enabled. If this extension is not used, then `VisualStudioCodeCredential` will throw a `CredentialUnavailableError`, and it will not be available as part of `DefaultAzureCredential`. + +### Visual Studio Code Authentication + +`VisualStudioCodeCredential` uses the authentication session from the ["Azure Accounts" extension][azaccountext]. To use this credential, you must sign in to your Azure account using the extension. To do so, open Visual Studio Code, ensure that the extension is installed, and sign in using the menu (Ctrl+Shift+P), and select the "Azure: Sign In" option to open a browser window and sign in to Azure. Alternatively, you can select "Azure: Sign In with Device Code" to use the device code flow. + +After signing in, you may need to select a subscription (for example, if you have multiple Azure subscriptions), and you can change the active subscription by using the menu to select the "Azure: Select Subscriptions" entry. + +## Examples + +Once the extension is registered, you can use `VisualStudioCodeCredential` in a similar fashion to the other credential classes in `@azure/identity`: + +```typescript +import { useIdentityExtension, VisualStudioCodeCredential } from "@azure/identity"; +import { vsCodeExtension } from "@azure/identity-vscode"; + +useIdentityExtension(vsCodeExtension); + +async function main() { + const credential = new VisualStudioCodeCredential(); + + // The graph.microsoft.com scope is used as an example + const scope = "https://graph.microsoft.com/.default"; + + // Print out part of the access token + console.log((await credential.getToken(scope)).token.substr(0, 10), "..."); +} + +main().catch((error) => { + console.error("An error occurred:", error); + process.exit(1); +}); +``` + +You can also use `DefaultAzureCredential`, which will attempt to authenticate using the "Azure Account" extension for Visual Studio Code if it is available: + +```typescript +import { useIdentityExtension, DefaultAzureCredential } from "@azure/identity"; +import { vsCodeExtension } from "@azure/identity-vscode"; + +useIdentityExtension(vsCodeExtension); + +async function main() { + // With the extension enabled above, `DefaultAzureCredential` will use + // Visual Studio Code's "Azure Account" extension to authenticate if + // it is available. + const credential = new DefaultAzureCredential(); + + // This will print a JWT access_token and its expiration timestamp + // The graph.microsoft.com scope is used as an example + console.log("Token:", await credential.getToken("https://graph.microsoft.com/.default")); +} + +main().catch((error) => { + console.error("An error occurred:", error); + process.exit(1); +}); +``` + +## 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`: + +```javascript +import { setLogLevel } from "@azure/logger"; + +setLogLevel("info"); +``` + +## Next steps + +### Provide Feedback + +If you encounter bugs or have suggestions, please [open an issue](https://github.com/Azure/azure-sdk-for-js/issues). + +## 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. + +[azaccountext]: https://marketplace.visualstudio.com/items?itemName=ms-vscode.azure-account + +![Impressions](https://azure-sdk-impressions.azurewebsites.net/api/impressions/azure-sdk-for-js%2Fsdk%2Fidentity%2Fidentity%2FREADME.png) diff --git a/sdk/identity/identity-vscode/api-extractor.json b/sdk/identity/identity-vscode/api-extractor.json new file mode 100644 index 000000000000..52d0268dd182 --- /dev/null +++ b/sdk/identity/identity-vscode/api-extractor.json @@ -0,0 +1,31 @@ +{ + "$schema": "https://developer.microsoft.com/json-schemas/api-extractor/v7/api-extractor.schema.json", + "mainEntryPointFilePath": "./types/identity-vscode/src/index.d.ts", + "docModel": { + "enabled": true + }, + "apiReport": { + "enabled": true, + "reportFolder": "./review" + }, + "dtsRollup": { + "enabled": true, + "untrimmedFilePath": "", + "publicTrimmedFilePath": "./types/identity-vscode.d.ts" + }, + "messages": { + "tsdocMessageReporting": { + "default": { + "logLevel": "none" + } + }, + "extractorMessageReporting": { + "ae-missing-release-tag": { + "logLevel": "none" + }, + "ae-unresolved-link": { + "logLevel": "none" + } + } + } +} diff --git a/sdk/identity/identity-vscode/package.json b/sdk/identity/identity-vscode/package.json new file mode 100644 index 000000000000..1fbe791f863a --- /dev/null +++ b/sdk/identity/identity-vscode/package.json @@ -0,0 +1,98 @@ +{ + "name": "@azure/identity-vscode", + "version": "1.0.0-beta.1", + "description": "Use the Azure Account extension for Visual Studio Code to authenticate with Azure Identity", + "main": "dist/index.js", + "module": "dist-esm/identity-vscode/src/index.js", + "types": "./types/identity-vscode.d.ts", + "scripts": { + "audit": "node ../../../common/scripts/rush-audit.js && rimraf node_modules package-lock.json && npm i --package-lock-only 2>&1 && npm audit", + "build:samples": "echo skipped", + "build:test": "tsc -p . && rollup -c rollup.config.js 2>&1", + "build": "npm run extract-api && tsc -p . && rollup -c 2>&1", + "check-format": "prettier --list-different --config ../../../.prettierrc.json --ignore-path ../../../.prettierignore \"src/**/*.ts\" \"test/**/*.ts\" \"*.{js,json}\" \"samples-dev/**/*.ts\"", + "clean": "rimraf dist dist-* typings *.tgz *.log", + "execute:samples": "echo skipped", + "extract-api": "tsc -p . && api-extractor run --local", + "format": "prettier --write --config ../../../.prettierrc.json --ignore-path ../../../.prettierignore \"src/**/*.ts\" \"test/**/*.ts\" \"*.{js,json}\" \"samples-dev/**/*.ts\"", + "integration-test:browser": "echo skipped", + "integration-test:node": "echo skipped", + "integration-test": "npm run integration-test:node && npm run integration-test:browser", + "lint:fix": "eslint package.json api-extractor.json src test --ext .ts --fix --fix-type [problem,suggestion]", + "lint": "eslint package.json api-extractor.json src test --ext .ts", + "pack": "npm pack 2>&1", + "prebuild": "npm run clean", + "test:browser": "npm run clean && npm run build:test && npm run unit-test:browser && npm run integration-test:browser", + "test:node": "npm run clean && npm run build:test && npm run unit-test:node && npm run integration-test:node", + "test": "npm run clean && npm run build:test && npm run unit-test && npm run integration-test", + "unit-test:browser": "echo skipped", + "unit-test:node": "mocha -r esm -r ts-node/register --reporter ../../../common/tools/mocha-multi-reporter.js --timeout 180000 --full-trace --exclude \"test/**/browser/**/*.spec.ts\" \"test/**/*.spec.ts\"", + "unit-test": "npm run unit-test:node && npm run unit-test:browser", + "docs": "typedoc --excludePrivate --excludeNotExported --excludeExternals --stripInternal --mode file --out ./dist/docs ./src" + }, + "files": [ + "dist/", + "dist-esm/identity/src", + "dist-esm/identity-vscode/src", + "types/identity-vscode.d.ts", + "README.md", + "LICENSE" + ], + "engines": { + "node": ">=12.0.0" + }, + "repository": "github:Azure/azure-sdk-for-js", + "keywords": [ + "azure", + "cloud", + "active directory", + "authentication", + "credential", + "certificate", + "vscode", + "account" + ], + "author": "Microsoft Corporation", + "license": "MIT", + "bugs": { + "url": "https://github.com/Azure/azure-sdk-for-js/issues" + }, + "engine": { + "node": ">=12.0.0" + }, + "homepage": "https://github.com/Azure/azure-sdk-for-js/tree/main/sdk/identity/identity-vscode/README.md", + "sideEffects": false, + "dependencies": { + "@azure/identity": "^2.0.0-beta.4", + "keytar": "^7.6.0", + "tslib": "^2.2.0" + }, + "devDependencies": { + "@azure/eslint-plugin-azure-sdk": "^3.0.0", + "@azure/dev-tool": "^1.0.0", + "@azure/test-utils-recorder": "^1.0.0", + "@microsoft/api-extractor": "7.7.11", + "@types/jws": "^3.2.2", + "@types/mocha": "^7.0.2", + "@types/node": "^8.0.0", + "@types/qs": "^6.5.3", + "@types/sinon": "^9.0.4", + "@types/uuid": "^8.0.0", + "assert": "^1.4.1", + "cross-env": "^7.0.2", + "dotenv": "^8.2.0", + "eslint": "^7.15.0", + "inherits": "^2.0.3", + "mocha": "^7.1.1", + "mocha-junit-reporter": "^1.18.0", + "mock-fs": "^4.10.4", + "prettier": "^1.16.4", + "puppeteer": "^3.3.0", + "rimraf": "^3.0.0", + "rollup": "^1.16.3", + "sinon": "^9.0.2", + "typedoc": "0.15.2", + "typescript": "~4.2.0", + "util": "^0.12.1" + } +} diff --git a/sdk/identity/identity-vscode/recordings/node/visualstudiocodecredential/recording_successfully_gets_a_token.js b/sdk/identity/identity-vscode/recordings/node/visualstudiocodecredential/recording_successfully_gets_a_token.js new file mode 100644 index 000000000000..b750f17a15ab --- /dev/null +++ b/sdk/identity/identity-vscode/recordings/node/visualstudiocodecredential/recording_successfully_gets_a_token.js @@ -0,0 +1,38 @@ +let nock = require('nock'); + +module.exports.hash = "1c4d58b38fd9e805bcc6c90e143ce993"; + +module.exports.testInfo = {"uniqueName":{},"newDate":{}} + +nock('https://login.microsoftonline.com:443', {"encodedQueryParams":true}) + .post('/common/oauth2/v2.0/token', "grant_type=refresh_token&client_id=aebc6443-996d-45c2-90f0-388ff96faa56&refresh_token=refresh_token&scope=https%3A%2F%2Fgraph.microsoft.com%2F.default%20offline_access") + .reply(200, {"token_type":"Bearer","scope":"email openid profile https://graph.microsoft.com/Mail.ReadWrite https://graph.microsoft.com/Mail.Send https://graph.microsoft.com/Tasks.ReadWrite https://graph.microsoft.com/User.Read https://graph.microsoft.com/.default","expires_in":3599,"ext_expires_in":3599,"access_token":"access_token","refresh_token":"refresh_token"}, [ + 'Cache-Control', + 'no-store, no-cache', + 'Pragma', + 'no-cache', + 'Content-Type', + 'application/json; charset=utf-8', + 'Expires', + '-1', + 'Strict-Transport-Security', + 'max-age=31536000; includeSubDomains', + 'X-Content-Type-Options', + 'nosniff', + 'P3P', + 'CP="DSP CUR OTPi IND OTRi ONL FIN"', + 'x-ms-request-id', + 'd8a6162d-b070-4f8b-bcf6-34a6faee0600', + 'x-ms-ests-server', + '2.1.11787.15 - WUS2 ProdSlices', + 'Set-Cookie', + 'fpc=fpc;; expires=Thu, 15-Jul-2021 01:45:15 GMT; path=/; secure; HttpOnly; SameSite=None', + 'Set-Cookie', + 'x-ms-gateway-slice=estsfd; path=/; secure; samesite=none; httponly', + 'Set-Cookie', + 'stsservicecookie=estsfd; path=/; secure; samesite=none; httponly', + 'Date', + 'Tue, 15 Jun 2021 01:45:15 GMT', + 'Content-Length', + '3657' +]); diff --git a/sdk/identity/identity-vscode/review/identity-vscode.api.md b/sdk/identity/identity-vscode/review/identity-vscode.api.md new file mode 100644 index 000000000000..938540060eaa --- /dev/null +++ b/sdk/identity/identity-vscode/review/identity-vscode.api.md @@ -0,0 +1,15 @@ +## API Report File for "@azure/identity-vscode" + +> Do not edit this file. It is a report generated by [API Extractor](https://api-extractor.com/). + +```ts + +import { IdentityExtension } from '@azure/identity'; + +// @public +export const vsCodeExtension: IdentityExtension; + + +// (No @packageDocumentation comment for this package) + +``` diff --git a/sdk/identity/identity-vscode/rollup.config.js b/sdk/identity/identity-vscode/rollup.config.js new file mode 100644 index 000000000000..5d7deee44c14 --- /dev/null +++ b/sdk/identity/identity-vscode/rollup.config.js @@ -0,0 +1,3 @@ +import { makeConfig } from "@azure/dev-tool/shared-config/rollup"; + +export default makeConfig(require("./package.json")); diff --git a/sdk/identity/identity-vscode/samples-dev/extension.ts b/sdk/identity/identity-vscode/samples-dev/extension.ts new file mode 100644 index 000000000000..ef72c4698a13 --- /dev/null +++ b/sdk/identity/identity-vscode/samples-dev/extension.ts @@ -0,0 +1,39 @@ +// Copyright (c) Microsoft Corporation +// Licensed under the MIT license. + +/** + * In this sample, we use the extension API to provide an implementation of + * `VisualStudioCodeCredential` to the `@azure/identity` package, and we use it + * through the `DefaultAzureCredential` class. Without the extension, the + * credential will simply throw a `CredentialNotFoundError`, and the + * `DefaultAzureCredential` will use a different credential, if one is + * available. + * + * @summary loads the `VisualStudioCodeCredential` extension and uses it through + * `DefaultAzureCredential` + */ + +import { useIdentityExtension, DefaultAzureCredential } from "@azure/identity"; + +// The extension is the package's default export, so you may import and use it +// as any name you like, and simply pass it to `useIdentityExtension`. +import { vsCodeExtension } from "@azure/identity-vscode"; +useIdentityExtension(vsCodeExtension); + +export async function main() { + const credential = new DefaultAzureCredential(); + + // This is the scope we will use to get a token from the AAD token endpoint. + // By default, we'll use the Microsoft Graph scope as an example, but when + // you use the credential with an Azure SDK package, it will configure the + // scope for you automatically. + const scope = process.env.AAD_TEST_SCOPE ?? "https://graph.microsoft.com/.default"; + + // Print out part of the access token + console.log((await credential.getToken(scope)).token.substr(0, 10), "..."); +} + +main().catch((error) => { + console.error("The sample encountered an error:", error); + process.exit(1); +}); diff --git a/sdk/identity/identity-vscode/samples-dev/nodeEnv.ts b/sdk/identity/identity-vscode/samples-dev/nodeEnv.ts new file mode 100644 index 000000000000..1ee058503bb0 --- /dev/null +++ b/sdk/identity/identity-vscode/samples-dev/nodeEnv.ts @@ -0,0 +1,55 @@ +// Copyright (c) Microsoft Corporation +// Licensed under the MIT license. + +/** + * This sample shows an example of how to load the `@azure/identity-vscode` + * extension only in certain environments. As an example, we use the NODE_ENV + * environment variable to determine whether or not to load the extension. + * + * NOTE: The NODE_ENV environment variable is merely a convention, and you are + * responsible for setting it as appropriate, for example, by setting the + * variable at runtime: + * + * ```bash + * $ NODE_ENV="production" node dist/nodeEnv.js + * ``` + * + * @summary uses NODE_ENV to load the extension only in development environments + * @azsdk-weight -10 + */ + +import { useIdentityExtension, DefaultAzureCredential } from "@azure/identity"; + +// Get the environment according to NODE_ENV. If it is not defined, we will +// assume the environment is _not_ a production environment. This may not be +// what you want for your use case. +const isProduction = process.env.NODE_ENV === "production"; + +// We'll load the VisualStudioCodeCredential extension only in non-production +// environments. For your use case, this could be "development" only, but you +// may also have other development environments. You can customize this logic to +// suit your needs. +if (!isProduction) { + const { + vsCodeExtension + } = require("@azure/identity-vscode") as typeof import("@azure/identity-vscode"); + useIdentityExtension(vsCodeExtension); +} + +export async function main() { + const credential = new DefaultAzureCredential(); + + // This is the scope we will use to get a token from the AAD token endpoint. + // By default, we'll use the Microsoft Graph scope as an example, but when + // you use the credential with an Azure SDK package, it will configure the + // scope for you automatically. + const scope = process.env.AAD_TEST_SCOPE ?? "https://graph.microsoft.com/.default"; + + // Print out part of the access token + console.log((await credential.getToken(scope)).token.substr(0, 10), "..."); +} + +main().catch((error) => { + console.error("The sample encountered an error:", error); + process.exit(1); +}); diff --git a/sdk/identity/identity-vscode/src/index.ts b/sdk/identity/identity-vscode/src/index.ts new file mode 100644 index 000000000000..6131f33b0524 --- /dev/null +++ b/sdk/identity/identity-vscode/src/index.ts @@ -0,0 +1,46 @@ +// Copyright (c) Microsoft Corporation. +// Licensed under the MIT license. + +import { IdentityExtension } from "@azure/identity"; + +import { AzureExtensionContext } from "../../identity/src/extensions/provider"; + +import keytar from "keytar"; + +const VSCodeServiceName = "VS Code Azure"; + +/** + * An extension that provides the dependencies of `VisualStudioCodeCredential` + * and enables it within `@azure/identity`. The extension API is compatible with + * `@azure/identity` versions 2.0.0 and later. Load this extension using the + * `useIdentityExtension` function, imported from `@azure/identity`. + * + * `VisualStudioCodeCredential` uses the authentication session from the "Azure + * Account" extension in VS Code. + * + * To use this functionality, import `VisualStudioCodeCredential` or + * `DefaultAzureCredential` from `@azure/identity`. If this extension is not + * enabled, then `VisualStudioCodeCredential` will throw a + * `CredentialUnavailableError`, and `DefaultAzureCredential` will not be able + * to use authentication through Visual Studio Code. + * + * Example: + * + * ```typescript + * import { useIdentityExtension, VisualStudioCodeCredential } from "@azure/identity"; + * import { vsCodeExtension } from "@azure/identity-vscode"; + * + * // Load the extension + * useIdentityExtension(vsCodeExtension); + * + * // Now that the extension is loaded, this credential may be used + * const credential = new VisualStudioCodeCredential(); + * ``` + */ +export const vsCodeExtension: IdentityExtension = (context) => { + const { vsCodeCredentialControl } = context as AzureExtensionContext; + + vsCodeCredentialControl.setVsCodeCredentialFinder(() => + keytar.findCredentials(VSCodeServiceName) + ); +}; diff --git a/sdk/identity/identity-vscode/test/public/node/setup.spec.ts b/sdk/identity/identity-vscode/test/public/node/setup.spec.ts new file mode 100644 index 000000000000..b45a9f5b4f07 --- /dev/null +++ b/sdk/identity/identity-vscode/test/public/node/setup.spec.ts @@ -0,0 +1,10 @@ +// Copyright (c) Microsoft Corporation. +// Licensed under the MIT license. + +import { vsCodeExtension as extension } from "../../../src"; + +import { useIdentityExtension } from "@azure/identity"; + +before(function() { + useIdentityExtension(extension); +}); diff --git a/sdk/identity/identity-vscode/test/public/node/visualStudioCodeCredential.spec.ts b/sdk/identity/identity-vscode/test/public/node/visualStudioCodeCredential.spec.ts new file mode 100644 index 000000000000..1ec1824e41f5 --- /dev/null +++ b/sdk/identity/identity-vscode/test/public/node/visualStudioCodeCredential.spec.ts @@ -0,0 +1,52 @@ +// Copyright (c) Microsoft Corporation. +// Licensed under the MIT license. + +/* eslint-disable @typescript-eslint/no-non-null-asserted-optional-chain */ + +import assert from "assert"; +import sinon from "sinon"; + +import { MsalTestCleanup, msalNodeTestSetup } from "../../../../identity/test/msalTestUtils"; +import { VisualStudioCodeCredential } from "@azure/identity"; +import { isRecordMode } from "@azure/test-utils-recorder"; + +const mockedResponse = [ + { + account: "AzureCloud", + password: "refresh_token" + } +]; + +describe("VisualStudioCodeCredential", function(this: Mocha.Suite) { + let cleanup: MsalTestCleanup; + + beforeEach(function(this: Mocha.Context) { + const setup = msalNodeTestSetup(this); + cleanup = setup.cleanup; + }); + + afterEach(async function() { + await cleanup(); + }); + + const scope = "https://graph.microsoft.com/.default"; + + it("successfully gets a token", async () => { + if (!isRecordMode()) { + // In live CI or playback CI, we need to avoid actually using keytar + // to try to read the Azure Account state, since it won't be available + const mock = sinon.mock(require("keytar")); + mock + .expects("findCredentials") + .onFirstCall() + .returns(mockedResponse); + } + + const cred = new VisualStudioCodeCredential(); + + const token = await cred.getToken(scope); + + assert.ok(token.expiresOnTimestamp); + assert.ok(token.token); + }); +}); diff --git a/sdk/identity/identity-vscode/tsconfig.json b/sdk/identity/identity-vscode/tsconfig.json new file mode 100644 index 000000000000..23d8f29b3565 --- /dev/null +++ b/sdk/identity/identity-vscode/tsconfig.json @@ -0,0 +1,14 @@ +{ + "extends": "../../../tsconfig.package", + "compilerOptions": { + "target": "es6", + "lib": ["DOM"], + "declarationDir": "./types", + "outDir": "./dist-esm", + "resolveJsonModule": true, + "paths": { + "@azure/identity-vscode": ["./src/index"] + } + }, + "include": ["src/**/*", "test/**/*", "samples-dev/**/*"] +} diff --git a/sdk/identity/identity-vscode/tsdoc.json b/sdk/identity/identity-vscode/tsdoc.json new file mode 100644 index 000000000000..81c5a8a2aa2f --- /dev/null +++ b/sdk/identity/identity-vscode/tsdoc.json @@ -0,0 +1,4 @@ +{ + "$schema": "https://developer.microsoft.com/json-schemas/tsdoc/v0/tsdoc.schema.json", + "extends": ["../../../tsdoc.json"] +} diff --git a/sdk/identity/identity/CHANGELOG.md b/sdk/identity/identity/CHANGELOG.md index 3fd454807739..7961335e8f85 100644 --- a/sdk/identity/identity/CHANGELOG.md +++ b/sdk/identity/identity/CHANGELOG.md @@ -2,12 +2,20 @@ ## 2.0.0-beta.4 (Unreleased) +### New features + +- Introduced an extension API through a top-level method `useIdentityExtension`. The function accepts an "extension" as an argument, which is a function accepting a `context`. The extension context is an internal part of the Azure Identity API, so it has an `unknown` type. Two new packages are designed to be used with this API: + - `@azure/identity-vscode`, which provides the dependencies of `VisualStudioCodeCredential` and enables it (see more below). + - `@azure/identity-cache-persistence`, which provides persistent token caching (same as was available in version 2.0.0-beta.2, but now provided through a secondary extension package). +- Reintroduced a stub implementation of `VisualStudioCodeCredential`. If the `@azure/identity-vscode` extension is not used, then it will throw a `CredentialUnavailableError` (similar to how it previously behaved if the `keytar` package was not installed). The extension now provides the underlying implementation of `VisualStudioCodeCredential` through dependency injection. +- Reintroduced the `TokenCachePersistenceOptions` property on most credential constructor options. This property must be present with an `enabled` property set to true to enable persistent token caching for a credential instance. Credentials that do not support persistent token caching do not have this property. + ## Bug fixes - Fixed an issue in which `InteractiveBrowserCredential` on Node would sometimes cause the process to hang if there was no browser available. -- Fixed an issue in which the `AZURE_AUTHORITY_HOST` environment variable was not properly picked up in NodeJS. +- Fixed an issue in which the `AZURE_AUTHORITY_HOST` environment variable was not properly picked up in NodeJS. -### Breaking changes +### Breaking changes - Removed the protected method `getAzureCliAccessToken` from the public API of the `AzureCliCredential`. While it will continue to be available as part of v1, we won't be supporting this method as part of v2's public API. diff --git a/sdk/identity/identity/README.md b/sdk/identity/identity/README.md index bf75a7697e02..596d64004edd 100644 --- a/sdk/identity/identity/README.md +++ b/sdk/identity/identity/README.md @@ -4,6 +4,8 @@ The Azure Identity library provides Azure Active Directory token authentication You can find examples for these various credentials in the [Azure Identity Examples Page](https://github.com/Azure/azure-sdk-for-js/blob/master/sdk/identity/identity/samples/AzureIdentityExamples.md) +> **Note**: As of `@azure/identity` >=2.0.0, `VisualStudioCodeCredential` now requires a secondary extension package to use. Please see the [`@azure/identity-vscode` package](https://github.com/Azure/azure-sdk-for-js/tree/main/sdk/identity/identity-vscode) as well as [the "Extensions" section](#extensions) below for more information. + [Source code](https://github.com/Azure/azure-sdk-for-js/tree/master/sdk/identity/identity) | [Package (npm)](https://www.npmjs.com/package/@azure/identity) | [API Reference Documentation](https://docs.microsoft.com/javascript/api/@azure/identity) | [Product documentation](https://azure.microsoft.com/services/active-directory/) | [Samples](https://github.com/Azure/azure-sdk-for-js/blob/master/sdk/identity/identity/samples) ## Getting started @@ -51,7 +53,7 @@ To authenticate with [Azure PowerShell][azure_powershell] users can run the `Con ![Azure PowerShell Account Sign In][azurepowershelllogin_image] -If interactive authnetication cannot be supported in the session, then the `-UseDeviceAuthentication` argument will force the cmdlet to use a device code authentication flow instead, similar to the corresponding option in the Azure CLI credential. +If interactive authentication cannot be supported in the session, then the `-UseDeviceAuthentication` argument will force the cmdlet to use a device code authentication flow instead, similar to the corresponding option in the Azure CLI credential. ### Authenticate the client in browsers @@ -84,6 +86,13 @@ If used from NodeJS, the `DefaultAzureCredential` will attempt to authenticate v - Azure CLI - If the developer has authenticated an account via the Azure CLI `az login` command, the `DefaultAzureCredential` will authenticate with that account. - Azure PowerShell - If the developer has authenticated using the Azure PowerShell module `Connect-AzAccount` command, the `DefaultAzureCredential` will authenticate with that account. +### Extensions + +Azure Identity for JavaScript provides an extension API that allows us to provide certain functionality through separate _extension packages_. The `@azure/identity` package exports a top-level function (`useIdentityExtension`) that can be used to enable an extension, and we provide two extension packages: + +- [`@azure/identity-cache-persistence`](https://github.com/Azure/azure-sdk-for-js/tree/main/sdk/identity/identity-cache-persistence), which provides persistent token caching in Node.js using a native secure storage system provided by your operating system. This extension allows cached `access_token` values to persist across sessions, meaning that an interactive login flow does not need to be repeated as long as a cached token is available. +- [`@azure/identity-vscode](https://github.com/Azure/azure-sdk-for-js/tree/main/sdk/identity/identity-vscode), which provides the dependencies of `VisualStudioCodeCredential` and enables it. Without this extension, the `VisualStudioCodeCredential` in this package will throw a `CredentialUnavailableError`. The extension provides the underlying implementation of this credential, enabling it for use both on its own and as part of the `DefaultAzureCredential` described above. + ## Environment Variables `DefaultAzureCredential` and `EnvironmentCredential` can be configured with environment variables. Each type of authentication requires values for specific variables: @@ -203,10 +212,10 @@ For examples of how to use managed identity for authentication please refer to [ ### Authenticating via Development Tools -| credential | usage | example | reference | -| ---------------------------- | ------------------------------------------------------------------ | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------- | -| `AzureCliCredential` | Authenticate in a development environment with the Azure CLI. | [example](https://github.com/Azure/azure-sdk-for-js/blob/master/sdk/identity/identity/samples/AzureIdentityExamples.md#authenticating-a-user-account-with-azure-cli) | [Azure CLI authentication](https://docs.microsoft.com/cli/azure/authenticate-azure-cli) | -| `AzurePowerShellCredential` | Authenticate in a development environment using Azure PowerShell. | [example](https://github.com/Azure/azure-sdk-for-js/blob/master/sdk/identity/identity/samples/AzureIdentityExamples.md#authenticating-a-user-account-with-azure-powershell) | [Azure PowerShell authentication](https://docs.microsoft.com/powershell/azure/authenticate-azureps) | +| credential | usage | example | reference | +| --------------------------- | ----------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------- | +| `AzureCliCredential` | Authenticate in a development environment with the Azure CLI. | [example](https://github.com/Azure/azure-sdk-for-js/blob/master/sdk/identity/identity/samples/AzureIdentityExamples.md#authenticating-a-user-account-with-azure-cli) | [Azure CLI authentication](https://docs.microsoft.com/cli/azure/authenticate-azure-cli) | +| `AzurePowerShellCredential` | Authenticate in a development environment using Azure PowerShell. | [example](https://github.com/Azure/azure-sdk-for-js/blob/master/sdk/identity/identity/samples/AzureIdentityExamples.md#authenticating-a-user-account-with-azure-powershell) | [Azure PowerShell authentication](https://docs.microsoft.com/powershell/azure/authenticate-azureps) | ## Troubleshooting diff --git a/sdk/identity/identity/package.json b/sdk/identity/identity/package.json index 901f8b5252e9..5c799d94f7b4 100644 --- a/sdk/identity/identity/package.json +++ b/sdk/identity/identity/package.json @@ -20,7 +20,8 @@ "./dist-esm/src/credentials/usernamePasswordCredential.js": "./dist-esm/src/credentials/usernamePasswordCredential.browser.js", "./dist-esm/src/credentials/azurePowerShellCredential.js": "./dist-esm/src/credentials/azurePowerShellCredential.browser.js", "./dist-esm/src/util/authHostEnv.js": "./dist-esm/src/util/authHostEnv.browser.js", - "./dist-esm/src/tokenCache/TokenCachePersistence.js": "./dist-esm/src/tokenCache/TokenCachePersistence.browser.js" + "./dist-esm/src/tokenCache/TokenCachePersistence.js": "./dist-esm/src/tokenCache/TokenCachePersistence.browser.js", + "./dist-esm/src/extensions/consumer.js": "./dist-esm/src/extensions/consumer.browser.js" }, "scripts": { "audit": "node ../../../common/scripts/rush-audit.js && rimraf node_modules package-lock.json && npm i --package-lock-only 2>&1 && npm audit", @@ -78,8 +79,9 @@ "homepage": "https://github.com/Azure/azure-sdk-for-js/tree/master/sdk/identity/identity/README.md", "sideEffects": false, "dependencies": { + "@azure/core-auth": "^1.3.0", "@azure/core-http": "^1.2.0", - "@azure/core-tracing": "1.0.0-preview.11", + "@azure/core-tracing": "1.0.0-preview.12", "@azure/logger": "^1.0.0", "@azure/abort-controller": "^1.0.0", "@azure/msal-common": "^4.3.0", diff --git a/sdk/identity/identity/review/identity.api.md b/sdk/identity/identity/review/identity.api.md index 4f2152d01d2a..10e053664152 100644 --- a/sdk/identity/identity/review/identity.api.md +++ b/sdk/identity/identity/review/identity.api.md @@ -4,11 +4,11 @@ ```ts -import { AccessToken } from '@azure/core-http'; +import { AccessToken } from '@azure/core-auth'; import { AzureLogger } from '@azure/logger'; -import { GetTokenOptions } from '@azure/core-http'; +import { GetTokenOptions } from '@azure/core-auth'; import { PipelineOptions } from '@azure/core-http'; -import { TokenCredential } from '@azure/core-http'; +import { TokenCredential } from '@azure/core-auth'; export { AccessToken } @@ -91,7 +91,7 @@ export class ClientCertificateCredential implements TokenCredential { } // @public -export interface ClientCertificateCredentialOptions extends TokenCredentialOptions { +export interface ClientCertificateCredentialOptions extends TokenCredentialOptions, CredentialPersistenceOptions { regionalAuthority?: string; sendCertificateChain?: boolean; } @@ -103,10 +103,15 @@ export class ClientSecretCredential implements TokenCredential { } // @public -export interface ClientSecretCredentialOptions extends TokenCredentialOptions { +export interface ClientSecretCredentialOptions extends TokenCredentialOptions, CredentialPersistenceOptions { regionalAuthority?: string; } +// @public +export interface CredentialPersistenceOptions { + tokenCachePersistenceOptions?: TokenCachePersistenceOptions; +} + // @public export class CredentialUnavailableError extends Error { constructor(message?: string); @@ -121,7 +126,7 @@ export class DefaultAzureCredential extends ChainedTokenCredential { } // @public -export interface DefaultAzureCredentialOptions extends TokenCredentialOptions { +export interface DefaultAzureCredentialOptions extends TokenCredentialOptions, CredentialPersistenceOptions { managedIdentityClientId?: string; tenantId?: string; } @@ -137,7 +142,7 @@ export class DeviceCodeCredential implements TokenCredential { } // @public -export interface DeviceCodeCredentialOptions extends InteractiveCredentialOptions { +export interface DeviceCodeCredentialOptions extends InteractiveCredentialOptions, CredentialPersistenceOptions { clientId?: string; tenantId?: string; userPromptCallback?: DeviceCodePromptCallback; @@ -155,10 +160,14 @@ export type DeviceCodePromptCallback = (deviceCodeInfo: DeviceCodeInfo) => void; // @public export class EnvironmentCredential implements TokenCredential { - constructor(options?: TokenCredentialOptions); + constructor(options?: EnvironmentCredentialOptions); getToken(scopes: string | string[], options?: GetTokenOptions): Promise; } +// @public +export interface EnvironmentCredentialOptions extends TokenCredentialOptions, CredentialPersistenceOptions { +} + // @public export interface ErrorResponse { correlationId?: string; @@ -174,6 +183,9 @@ export function getDefaultAzureCredential(): TokenCredential; export { GetTokenOptions } +// @public +export type IdentityExtension = (context: unknown) => void; + // @public export class InteractiveBrowserCredential implements TokenCredential { constructor(options?: InteractiveBrowserCredentialOptions | InteractiveBrowserCredentialBrowserOptions); @@ -182,19 +194,19 @@ export class InteractiveBrowserCredential implements TokenCredential { } // @public -export type InteractiveBrowserCredentialBrowserOptions = TokenCredentialOptions & InteractiveCredentialOptions & { - redirectUri?: string | (() => string); - tenantId?: string; +export interface InteractiveBrowserCredentialBrowserOptions extends InteractiveCredentialOptions { clientId: string; loginStyle?: BrowserLoginStyle; -}; + redirectUri?: string | (() => string); + tenantId?: string; +} // @public -export type InteractiveBrowserCredentialOptions = TokenCredentialOptions & InteractiveCredentialOptions & { +export interface InteractiveBrowserCredentialOptions extends InteractiveCredentialOptions, CredentialPersistenceOptions { + clientId?: string; redirectUri?: string | (() => string); tenantId?: string; - clientId?: string; -}; +} // @public export interface InteractiveCredentialOptions extends TokenCredentialOptions { @@ -272,6 +284,13 @@ export enum RegionalAuthority { // @public export function serializeAuthenticationRecord(record: AuthenticationRecord): string; +// @public +export interface TokenCachePersistenceOptions { + allowUnencryptedStorage?: boolean; + enabled: boolean; + name?: string; +} + export { TokenCredential } // @public @@ -279,6 +298,9 @@ export interface TokenCredentialOptions extends PipelineOptions { authorityHost?: string; } +// @public +export function useIdentityExtension(extension: IdentityExtension): void; + // @public export class UsernamePasswordCredential implements TokenCredential { constructor(tenantId: string, clientId: string, username: string, password: string, options?: UsernamePasswordCredentialOptions); @@ -286,7 +308,18 @@ export class UsernamePasswordCredential implements TokenCredential { } // @public -export interface UsernamePasswordCredentialOptions extends TokenCredentialOptions { +export interface UsernamePasswordCredentialOptions extends TokenCredentialOptions, CredentialPersistenceOptions { +} + +// @public +export class VisualStudioCodeCredential implements TokenCredential { + constructor(options?: VisualStudioCodeCredentialOptions); + getToken(scopes: string | string[], _options?: GetTokenOptions): Promise; + } + +// @public +export interface VisualStudioCodeCredentialOptions extends TokenCredentialOptions { + tenantId?: string; } diff --git a/sdk/identity/identity/src/client/identityClient.ts b/sdk/identity/identity/src/client/identityClient.ts index 063955a18d62..7b107439a1d0 100644 --- a/sdk/identity/identity/src/client/identityClient.ts +++ b/sdk/identity/identity/src/client/identityClient.ts @@ -26,7 +26,6 @@ const noCorrelationId = "noCorrelationId"; /** * An internal type used to communicate details of a token request's * response that should not be sent back as part of the access token. - * @internal */ export interface TokenResponse { /** @@ -62,7 +61,6 @@ export function getIdentityClientAuthorityHost(options?: TokenCredentialOptions) * It allows for credentials to abort any pending request independently of the MSAL flow, * by calling to the `abortRequests()` method. * - * @internal */ export class IdentityClient extends ServiceClient implements INetworkModule { public authorityHost: string; diff --git a/sdk/identity/identity/src/credentials/authorizationCodeCredential.browser.ts b/sdk/identity/identity/src/credentials/authorizationCodeCredential.browser.ts index 44e9169b30b0..364afd8b852f 100644 --- a/sdk/identity/identity/src/credentials/authorizationCodeCredential.browser.ts +++ b/sdk/identity/identity/src/credentials/authorizationCodeCredential.browser.ts @@ -1,7 +1,8 @@ // Copyright (c) Microsoft Corporation. // Licensed under the MIT license. -import { TokenCredential, AccessToken } from "@azure/core-http"; +import { TokenCredential, AccessToken } from "@azure/core-auth"; + import { TokenCredentialOptions } from "../client/identityClient"; import { credentialLogger, formatError } from "../util/logging"; diff --git a/sdk/identity/identity/src/credentials/authorizationCodeCredential.ts b/sdk/identity/identity/src/credentials/authorizationCodeCredential.ts index e976bfee7b30..8bcd49b4204e 100644 --- a/sdk/identity/identity/src/credentials/authorizationCodeCredential.ts +++ b/sdk/identity/identity/src/credentials/authorizationCodeCredential.ts @@ -2,9 +2,11 @@ // Licensed under the MIT license. import qs from "qs"; + +import { TokenCredential, GetTokenOptions, AccessToken } from "@azure/core-auth"; + import { createSpan } from "../util/tracing"; import { CredentialUnavailableError } from "../client/errors"; -import { TokenCredential, GetTokenOptions, AccessToken } from "@azure/core-http"; import { IdentityClient, TokenResponse, TokenCredentialOptions } from "../client/identityClient"; import { SpanStatusCode } from "@azure/core-tracing"; import { credentialLogger, formatSuccess, formatError } from "../util/logging"; diff --git a/sdk/identity/identity/src/credentials/azureCliCredential.browser.ts b/sdk/identity/identity/src/credentials/azureCliCredential.browser.ts index fb9259da24f3..501ee08e4568 100644 --- a/sdk/identity/identity/src/credentials/azureCliCredential.browser.ts +++ b/sdk/identity/identity/src/credentials/azureCliCredential.browser.ts @@ -1,7 +1,8 @@ // Copyright (c) Microsoft Corporation. // Licensed under the MIT license. -import { AccessToken, TokenCredential } from "@azure/core-http"; +import { AccessToken, TokenCredential } from "@azure/core-auth"; + import { credentialLogger, formatError } from "../util/logging"; const BrowserNotSupportedError = new Error("AzureCliCredential is not supported in the browser."); diff --git a/sdk/identity/identity/src/credentials/azureCliCredential.ts b/sdk/identity/identity/src/credentials/azureCliCredential.ts index 7fa8e9332f85..5750a37a0ad7 100644 --- a/sdk/identity/identity/src/credentials/azureCliCredential.ts +++ b/sdk/identity/identity/src/credentials/azureCliCredential.ts @@ -1,7 +1,8 @@ // Copyright (c) Microsoft Corporation. // Licensed under the MIT license. -import { TokenCredential, GetTokenOptions, AccessToken } from "@azure/core-http"; +import { TokenCredential, GetTokenOptions, AccessToken } from "@azure/core-auth"; + import { createSpan } from "../util/tracing"; import { CredentialUnavailableError } from "../client/errors"; import { SpanStatusCode } from "@azure/core-tracing"; diff --git a/sdk/identity/identity/src/credentials/azurePowerShellCredential.browser.ts b/sdk/identity/identity/src/credentials/azurePowerShellCredential.browser.ts index ebf66ebff972..f1ddbc2b9a9e 100644 --- a/sdk/identity/identity/src/credentials/azurePowerShellCredential.browser.ts +++ b/sdk/identity/identity/src/credentials/azurePowerShellCredential.browser.ts @@ -1,7 +1,8 @@ // Copyright (c) Microsoft Corporation. // Licensed under the MIT license. -import { TokenCredential, AccessToken } from "@azure/core-http"; +import { TokenCredential, AccessToken } from "@azure/core-auth"; + import { credentialLogger, formatError } from "../util/logging"; const BrowserNotSupportedError = new Error( diff --git a/sdk/identity/identity/src/credentials/azurePowerShellCredential.ts b/sdk/identity/identity/src/credentials/azurePowerShellCredential.ts index eb1783bd3746..59a8d3e7e196 100644 --- a/sdk/identity/identity/src/credentials/azurePowerShellCredential.ts +++ b/sdk/identity/identity/src/credentials/azurePowerShellCredential.ts @@ -1,7 +1,8 @@ // Copyright (c) Microsoft Corporation. // Licensed under the MIT license. -import { TokenCredential, GetTokenOptions, AccessToken } from "@azure/core-http"; +import { TokenCredential, GetTokenOptions, AccessToken } from "@azure/core-auth"; + import { CredentialUnavailableError } from "../client/errors"; import { credentialLogger, formatSuccess, formatError } from "../util/logging"; import { trace } from "../util/tracing"; diff --git a/sdk/identity/identity/src/credentials/chainedTokenCredential.ts b/sdk/identity/identity/src/credentials/chainedTokenCredential.ts index 739f55338700..d8ca5388ed23 100644 --- a/sdk/identity/identity/src/credentials/chainedTokenCredential.ts +++ b/sdk/identity/identity/src/credentials/chainedTokenCredential.ts @@ -1,7 +1,8 @@ // Copyright (c) Microsoft Corporation. // Licensed under the MIT license. -import { AccessToken, TokenCredential, GetTokenOptions } from "@azure/core-http"; +import { AccessToken, TokenCredential, GetTokenOptions } from "@azure/core-auth"; + import { AggregateAuthenticationError, CredentialUnavailableError } from "../client/errors"; import { createSpan } from "../util/tracing"; import { SpanStatusCode } from "@azure/core-tracing"; diff --git a/sdk/identity/identity/src/credentials/clientCertificateCredential.browser.ts b/sdk/identity/identity/src/credentials/clientCertificateCredential.browser.ts index 0f772315c5e9..ff14581a9e50 100644 --- a/sdk/identity/identity/src/credentials/clientCertificateCredential.browser.ts +++ b/sdk/identity/identity/src/credentials/clientCertificateCredential.browser.ts @@ -1,7 +1,7 @@ // Copyright (c) Microsoft Corporation. // Licensed under the MIT license. -import { TokenCredential, AccessToken } from "@azure/core-http"; +import { TokenCredential, AccessToken } from "@azure/core-auth"; import { credentialLogger, formatError } from "../util/logging"; const BrowserNotSupportedError = new Error( diff --git a/sdk/identity/identity/src/credentials/clientCertificateCredential.ts b/sdk/identity/identity/src/credentials/clientCertificateCredential.ts index 392cf5ecdf64..595739d3d3e1 100644 --- a/sdk/identity/identity/src/credentials/clientCertificateCredential.ts +++ b/sdk/identity/identity/src/credentials/clientCertificateCredential.ts @@ -1,7 +1,8 @@ // Copyright (c) Microsoft Corporation. // Licensed under the MIT license. -import { AccessToken, GetTokenOptions, TokenCredential } from "@azure/core-http"; +import { AccessToken, GetTokenOptions, TokenCredential } from "@azure/core-auth"; + import { MsalClientCertificate } from "../msal/nodeFlows/msalClientCertificate"; import { credentialLogger } from "../util/logging"; import { trace } from "../util/tracing"; diff --git a/sdk/identity/identity/src/credentials/clientCertificateCredentialOptions.ts b/sdk/identity/identity/src/credentials/clientCertificateCredentialOptions.ts index 74c149a2f6dd..42dc5a0d6910 100644 --- a/sdk/identity/identity/src/credentials/clientCertificateCredentialOptions.ts +++ b/sdk/identity/identity/src/credentials/clientCertificateCredentialOptions.ts @@ -2,11 +2,14 @@ // Licensed under the MIT license. import { TokenCredentialOptions } from "../client/identityClient"; +import { CredentialPersistenceOptions } from "./credentialPersistenceOptions"; /** * Optional parameters for the {@link ClientCertificateCredential} class. */ -export interface ClientCertificateCredentialOptions extends TokenCredentialOptions { +export interface ClientCertificateCredentialOptions + extends TokenCredentialOptions, + CredentialPersistenceOptions { /** * Option to include x5c header for SubjectName and Issuer name authorization. * Set this option to send base64 encoded public certificate in the client assertion header as an x5c claim diff --git a/sdk/identity/identity/src/credentials/clientSecretCredential.browser.ts b/sdk/identity/identity/src/credentials/clientSecretCredential.browser.ts index b4b2c308c7a2..ed941edad125 100644 --- a/sdk/identity/identity/src/credentials/clientSecretCredential.browser.ts +++ b/sdk/identity/identity/src/credentials/clientSecretCredential.browser.ts @@ -2,7 +2,9 @@ // Licensed under the MIT license. import qs from "qs"; -import { TokenCredential, GetTokenOptions, AccessToken } from "@azure/core-http"; + +import { TokenCredential, GetTokenOptions, AccessToken } from "@azure/core-auth"; + import { TokenCredentialOptions, IdentityClient } from "../client/identityClient"; import { createSpan } from "../util/tracing"; import { SpanStatusCode } from "@azure/core-tracing"; diff --git a/sdk/identity/identity/src/credentials/clientSecretCredential.ts b/sdk/identity/identity/src/credentials/clientSecretCredential.ts index 9286ac21ab28..4e1a2d942e0a 100644 --- a/sdk/identity/identity/src/credentials/clientSecretCredential.ts +++ b/sdk/identity/identity/src/credentials/clientSecretCredential.ts @@ -1,7 +1,8 @@ // Copyright (c) Microsoft Corporation. // Licensed under the MIT license. -import { AccessToken, GetTokenOptions, TokenCredential } from "@azure/core-http"; +import { AccessToken, GetTokenOptions, TokenCredential } from "@azure/core-auth"; + import { MsalClientSecret } from "../msal/nodeFlows/msalClientSecret"; import { credentialLogger } from "../util/logging"; import { trace } from "../util/tracing"; diff --git a/sdk/identity/identity/src/credentials/clientSecretCredentialOptions.ts b/sdk/identity/identity/src/credentials/clientSecretCredentialOptions.ts index 83a4694abb4b..8cc4e68c1d50 100644 --- a/sdk/identity/identity/src/credentials/clientSecretCredentialOptions.ts +++ b/sdk/identity/identity/src/credentials/clientSecretCredentialOptions.ts @@ -2,11 +2,14 @@ // Licensed under the MIT license. import { TokenCredentialOptions } from "../client/identityClient"; +import { CredentialPersistenceOptions } from "./credentialPersistenceOptions"; /** * Optional parameters for the {@link ClientSecretCredential} class. */ -export interface ClientSecretCredentialOptions extends TokenCredentialOptions { +export interface ClientSecretCredentialOptions + extends TokenCredentialOptions, + CredentialPersistenceOptions { /** * Specifies a regional authority. Please refer to the {@link RegionalAuthority} type for the accepted values. * If {@link RegionalAuthority.AutoDiscoverRegion} is specified, we will try to discover the regional authority endpoint. diff --git a/sdk/identity/identity/src/credentials/credentialPersistenceOptions.ts b/sdk/identity/identity/src/credentials/credentialPersistenceOptions.ts new file mode 100644 index 000000000000..ca5e749c0870 --- /dev/null +++ b/sdk/identity/identity/src/credentials/credentialPersistenceOptions.ts @@ -0,0 +1,42 @@ +// Copyright (c) Microsoft Corporation. +// Licensed under the MIT license. + +import { TokenCachePersistenceOptions } from "../msal/nodeFlows/tokenCachePersistenceOptions"; + +/** + * Shared configuration options for credentials that support persistent token + * caching. + */ +export interface CredentialPersistenceOptions { + /** + * Options to provide to the persistence layer (if one is available) when + * storing credentials. + * + * You must first register a persistence provider as an extension. See the + * `@azure/identity-cache-persistence` package on NPM. + * + * Example: + * + * ```typescript + * import persistence from "@azure/identity-cache-persistence"; + * import { useIdentityExtension, DeviceCodeCredential } from "@azure/identity"; + * + * useIdentityExtension(persistence); + * + * async function main() { + * const credential = new DeviceCodeCredential({ + * tokenCachePersistenceOptions: { + * name: "mycustomcachename" + * } + * }); + * } + * + * main().catch((error) => { + * console.error("An error occured:", error); + * process.exit(1); + * }); + * ``` +- */ + + tokenCachePersistenceOptions?: TokenCachePersistenceOptions; +} diff --git a/sdk/identity/identity/src/credentials/defaultAzureCredential.browser.ts b/sdk/identity/identity/src/credentials/defaultAzureCredential.browser.ts index 0632d4399020..7a08a8cf0b9d 100644 --- a/sdk/identity/identity/src/credentials/defaultAzureCredential.browser.ts +++ b/sdk/identity/identity/src/credentials/defaultAzureCredential.browser.ts @@ -1,7 +1,8 @@ // Copyright (c) Microsoft Corporation. // Licensed under the MIT license. -import { AccessToken } from "@azure/core-http"; +import { AccessToken } from "@azure/core-auth"; + import { TokenCredentialOptions } from "../client/identityClient"; import { credentialLogger, formatError } from "../util/logging"; import { ChainedTokenCredential } from "./chainedTokenCredential"; diff --git a/sdk/identity/identity/src/credentials/defaultAzureCredential.ts b/sdk/identity/identity/src/credentials/defaultAzureCredential.ts index d07319be6370..1bbbda2020b5 100644 --- a/sdk/identity/identity/src/credentials/defaultAzureCredential.ts +++ b/sdk/identity/identity/src/credentials/defaultAzureCredential.ts @@ -1,17 +1,25 @@ // Copyright (c) Microsoft Corporation. // Licensed under the MIT license. +import { TokenCredential } from "@azure/core-auth"; + import { TokenCredentialOptions } from "../client/identityClient"; + import { ChainedTokenCredential } from "./chainedTokenCredential"; -import { EnvironmentCredential } from "./environmentCredential"; -import { ManagedIdentityCredential } from "./managedIdentityCredential"; + import { AzureCliCredential } from "./azureCliCredential"; import { AzurePowerShellCredential } from "./azurePowerShellCredential"; +import { EnvironmentCredential } from "./environmentCredential"; +import { ManagedIdentityCredential } from "./managedIdentityCredential"; +import { CredentialPersistenceOptions } from "./credentialPersistenceOptions"; +import { VisualStudioCodeCredential } from "./visualStudioCodeCredential"; /** * Provides options to configure the {@link DefaultAzureCredential} class. */ -export interface DefaultAzureCredentialOptions extends TokenCredentialOptions { +export interface DefaultAzureCredentialOptions + extends TokenCredentialOptions, + CredentialPersistenceOptions { /** * Optionally pass in a Tenant ID to be used as part of the credential. * By default it may use a generic tenant ID depending on the underlying credential. @@ -25,16 +33,59 @@ export interface DefaultAzureCredentialOptions extends TokenCredentialOptions { } /** - * Provides a default {@link ChainedTokenCredential} configuration that should work for most applications that use the Azure SDK. - * The following credential types will be tried, in order: + * The type of a class that implements TokenCredential and accepts + * `DefaultAzureCredentialOptions`. + */ +interface DefaultCredentialConstructor { + new (options?: DefaultAzureCredentialOptions): TokenCredential; +} + +/** + * A shim around ManagedIdentityCredential that adapts it to accept + * `DefaultAzureCredentialOptions`. + * + * @internal + */ +class DefaultManagedIdentityCredential extends ManagedIdentityCredential { + constructor(options?: DefaultAzureCredentialOptions) { + const managedIdentityClientId = options?.managedIdentityClientId ?? process.env.AZURE_CLIENT_ID; + if (managedIdentityClientId !== undefined) { + super(managedIdentityClientId, options); + } else { + super(options); + } + } +} + +export const defaultCredentials: DefaultCredentialConstructor[] = [ + EnvironmentCredential, + DefaultManagedIdentityCredential, + VisualStudioCodeCredential, + AzureCliCredential, + AzurePowerShellCredential +]; + +/** + * Provides a default {@link ChainedTokenCredential} configuration that should + * work for most applications that use the Azure SDK. The following credential + * types will be tried, in order: * * - {@link EnvironmentCredential} * - {@link ManagedIdentityCredential} + * - {@link VisualStudioCodeCredential} * - {@link AzureCliCredential} * - {@link AzurePowerShellCredential} * * Consult the documentation of these credential types for more information * on how they attempt authentication. + * + * **Note**: `VisualStudioCodeCredential` is provided by an extension package: + * `@azure/identity-vscode`. If this package is not installed and registered + * using the extension API (`useIdentityExtension`), then authentication using + * `VisualStudioCodeCredential` will not be available. + * + * Azure Identity extensions may add credential types to the default credential + * stack. */ export class DefaultAzureCredential extends ChainedTokenCredential { /** @@ -43,24 +94,7 @@ export class DefaultAzureCredential extends ChainedTokenCredential { * @param options - Optional parameters. See {@link DefaultAzureCredentialOptions}. */ constructor(options?: DefaultAzureCredentialOptions) { - const credentials = []; - credentials.push(new EnvironmentCredential(options)); - - // A client ID for the ManagedIdentityCredential - // can be provided either through the optional parameters or through the environment variables. - const managedIdentityClientId = options?.managedIdentityClientId || process.env.AZURE_CLIENT_ID; - - // If a client ID is not provided, we will try with the system assigned ID. - if (managedIdentityClientId) { - credentials.push(new ManagedIdentityCredential(managedIdentityClientId, options)); - } else { - credentials.push(new ManagedIdentityCredential(options)); - } - - credentials.push(new AzureCliCredential()); - credentials.push(new AzurePowerShellCredential()); - - super(...credentials); + super(...defaultCredentials.map((ctor) => new ctor(options))); this.UnavailableMessage = "DefaultAzureCredential => failed to retrieve a token from the included credentials"; } diff --git a/sdk/identity/identity/src/credentials/deviceCodeCredential.browser.ts b/sdk/identity/identity/src/credentials/deviceCodeCredential.browser.ts index 2a8b2ac5ef25..811fba10264f 100644 --- a/sdk/identity/identity/src/credentials/deviceCodeCredential.browser.ts +++ b/sdk/identity/identity/src/credentials/deviceCodeCredential.browser.ts @@ -1,7 +1,8 @@ // Copyright (c) Microsoft Corporation. // Licensed under the MIT license. -import { TokenCredential, AccessToken } from "@azure/core-http"; +import { TokenCredential, AccessToken } from "@azure/core-auth"; + import { credentialLogger, formatError } from "../util/logging"; const BrowserNotSupportedError = new Error("DeviceCodeCredential is not supported in the browser."); diff --git a/sdk/identity/identity/src/credentials/deviceCodeCredential.ts b/sdk/identity/identity/src/credentials/deviceCodeCredential.ts index 32ecb2956d33..c817b616f550 100644 --- a/sdk/identity/identity/src/credentials/deviceCodeCredential.ts +++ b/sdk/identity/identity/src/credentials/deviceCodeCredential.ts @@ -1,7 +1,8 @@ // Copyright (c) Microsoft Corporation. // Licensed under the MIT license. -import { AccessToken, GetTokenOptions, TokenCredential } from "@azure/core-http"; +import { AccessToken, GetTokenOptions, TokenCredential } from "@azure/core-auth"; + import { credentialLogger } from "../util/logging"; import { MsalDeviceCode } from "../msal/nodeFlows/msalDeviceCode"; import { MsalFlow } from "../msal/flows"; diff --git a/sdk/identity/identity/src/credentials/deviceCodeCredentialOptions.ts b/sdk/identity/identity/src/credentials/deviceCodeCredentialOptions.ts index a6cc1c5fbedc..e16679b1d448 100644 --- a/sdk/identity/identity/src/credentials/deviceCodeCredentialOptions.ts +++ b/sdk/identity/identity/src/credentials/deviceCodeCredentialOptions.ts @@ -2,6 +2,7 @@ // Licensed under the MIT license. import { InteractiveCredentialOptions } from "./interactiveCredentialOptions"; +import { CredentialPersistenceOptions } from "./credentialPersistenceOptions"; /** * Provides the user code and verification URI where the code must be @@ -37,7 +38,9 @@ export type DeviceCodePromptCallback = (deviceCodeInfo: DeviceCodeInfo) => void; /** * Defines options for the InteractiveBrowserCredential class for NodeJS. */ -export interface DeviceCodeCredentialOptions extends InteractiveCredentialOptions { +export interface DeviceCodeCredentialOptions + extends InteractiveCredentialOptions, + CredentialPersistenceOptions { /** * The Azure Active Directory tenant (directory) ID. */ diff --git a/sdk/identity/identity/src/credentials/environmentCredential.browser.ts b/sdk/identity/identity/src/credentials/environmentCredential.browser.ts index c01020cd49ed..737c084eaef6 100644 --- a/sdk/identity/identity/src/credentials/environmentCredential.browser.ts +++ b/sdk/identity/identity/src/credentials/environmentCredential.browser.ts @@ -1,7 +1,8 @@ // Copyright (c) Microsoft Corporation. // Licensed under the MIT license. -import { AccessToken, TokenCredential } from "@azure/core-http"; +import { AccessToken, TokenCredential } from "@azure/core-auth"; + import { credentialLogger, formatError } from "../util/logging"; const BrowserNotSupportedError = new Error( diff --git a/sdk/identity/identity/src/credentials/environmentCredential.ts b/sdk/identity/identity/src/credentials/environmentCredential.ts index 32c81b045514..4952faa62a63 100644 --- a/sdk/identity/identity/src/credentials/environmentCredential.ts +++ b/sdk/identity/identity/src/credentials/environmentCredential.ts @@ -1,7 +1,8 @@ // Copyright (c) Microsoft Corporation. // Licensed under the MIT license. -import { AccessToken, TokenCredential, GetTokenOptions } from "@azure/core-http"; +import { AccessToken, TokenCredential, GetTokenOptions } from "@azure/core-auth"; + import { credentialLogger, processEnvVars, formatSuccess, formatError } from "../util/logging"; import { TokenCredentialOptions } from "../client/identityClient"; import { ClientSecretCredential } from "./clientSecretCredential"; @@ -10,6 +11,7 @@ import { checkTenantId } from "../util/checkTenantId"; import { trace } from "../util/tracing"; import { ClientCertificateCredential } from "./clientCertificateCredential"; import { UsernamePasswordCredential } from "./usernamePasswordCredential"; +import { CredentialPersistenceOptions } from "./credentialPersistenceOptions"; /** * Contains the list of all supported environment variable names so that an @@ -29,6 +31,13 @@ export const AllSupportedEnvironmentVariables = [ const logger = credentialLogger("EnvironmentCredential"); +/** + * Defines options for the EnvironmentCredential class. + */ +export interface EnvironmentCredentialOptions + extends TokenCredentialOptions, + CredentialPersistenceOptions {} + /** * Enables authentication to Azure Active Directory using client secret * details configured in the following environment variables: @@ -54,7 +63,7 @@ export class EnvironmentCredential implements TokenCredential { * * @param options - Options for configuring the client which makes the authentication request. */ - constructor(options?: TokenCredentialOptions) { + constructor(options?: EnvironmentCredentialOptions) { // Keep track of any missing environment variables for error details const assigned = processEnvVars(AllSupportedEnvironmentVariables).assigned.join(", "); diff --git a/sdk/identity/identity/src/credentials/interactiveBrowserCredential.browser.ts b/sdk/identity/identity/src/credentials/interactiveBrowserCredential.browser.ts index 8e9dba33ae4a..e04f3d7c8054 100644 --- a/sdk/identity/identity/src/credentials/interactiveBrowserCredential.browser.ts +++ b/sdk/identity/identity/src/credentials/interactiveBrowserCredential.browser.ts @@ -1,7 +1,8 @@ // Copyright (c) Microsoft Corporation. // Licensed under the MIT license. -import { AccessToken, GetTokenOptions, TokenCredential } from "@azure/core-http"; +import { AccessToken, GetTokenOptions, TokenCredential } from "@azure/core-auth"; + import { credentialLogger, formatError } from "../util/logging"; import { trace } from "../util/tracing"; import { MsalFlow } from "../msal/flows"; diff --git a/sdk/identity/identity/src/credentials/interactiveBrowserCredential.ts b/sdk/identity/identity/src/credentials/interactiveBrowserCredential.ts index f7b6ec4f7008..9d98d1fff531 100644 --- a/sdk/identity/identity/src/credentials/interactiveBrowserCredential.ts +++ b/sdk/identity/identity/src/credentials/interactiveBrowserCredential.ts @@ -3,7 +3,8 @@ /* eslint-disable @typescript-eslint/no-unused-vars */ -import { AccessToken, GetTokenOptions, TokenCredential } from "@azure/core-http"; +import { AccessToken, GetTokenOptions, TokenCredential } from "@azure/core-auth"; + import { credentialLogger } from "../util/logging"; import { trace } from "../util/tracing"; import { AuthenticationRecord } from "../msal/types"; diff --git a/sdk/identity/identity/src/credentials/interactiveBrowserCredentialOptions.ts b/sdk/identity/identity/src/credentials/interactiveBrowserCredentialOptions.ts index 7d5e59c947c2..2057c792f8bb 100644 --- a/sdk/identity/identity/src/credentials/interactiveBrowserCredentialOptions.ts +++ b/sdk/identity/identity/src/credentials/interactiveBrowserCredentialOptions.ts @@ -1,8 +1,8 @@ // Copyright (c) Microsoft Corporation. // Licensed under the MIT license. -import { TokenCredentialOptions } from "../client/identityClient"; import { InteractiveCredentialOptions } from "./interactiveCredentialOptions"; +import { CredentialPersistenceOptions } from "./credentialPersistenceOptions"; /** * (Browser-only feature) @@ -18,52 +18,52 @@ export type BrowserLoginStyle = "redirect" | "popup"; /** * Defines the common options for the InteractiveBrowserCredential class. */ -export type InteractiveBrowserCredentialOptions = TokenCredentialOptions & - InteractiveCredentialOptions & { - /** - * Gets the redirect URI of the application. This should be same as the value - * in the application registration portal. Defaults to `window.location.href`. - */ - redirectUri?: string | (() => string); +export interface InteractiveBrowserCredentialOptions + extends InteractiveCredentialOptions, + CredentialPersistenceOptions { + /** + * Gets the redirect URI of the application. This should be same as the value + * in the application registration portal. Defaults to `window.location.href`. + */ + redirectUri?: string | (() => string); - /** - * The Azure Active Directory tenant (directory) ID. - */ - tenantId?: string; + /** + * The Azure Active Directory tenant (directory) ID. + */ + tenantId?: string; - /** - * The client (application) ID of an App Registration in the tenant. - */ - clientId?: string; - }; + /** + * The client (application) ID of an App Registration in the tenant. + */ + clientId?: string; +} /** * Defines the common options for the InteractiveBrowserCredential class. */ -export type InteractiveBrowserCredentialBrowserOptions = TokenCredentialOptions & - InteractiveCredentialOptions & { - /** - * Gets the redirect URI of the application. This should be same as the value - * in the application registration portal. Defaults to `window.location.href`. - */ - redirectUri?: string | (() => string); +export interface InteractiveBrowserCredentialBrowserOptions extends InteractiveCredentialOptions { + /** + * Gets the redirect URI of the application. This should be same as the value + * in the application registration portal. Defaults to `window.location.href`. + */ + redirectUri?: string | (() => string); - /** - * The Azure Active Directory tenant (directory) ID. - */ - tenantId?: string; + /** + * The Azure Active Directory tenant (directory) ID. + */ + tenantId?: string; - /** - * The client (application) ID of an App Registration in the tenant. - * This parameter is required on the browser. - */ - clientId: string; + /** + * The client (application) ID of an App Registration in the tenant. + * This parameter is required on the browser. + */ + clientId: string; - /** - * Specifies whether a redirect or a popup window should be used to - * initiate the user authentication flow. Possible values are "redirect" - * or "popup" (default) for browser and "popup" (default) for node. - * - */ - loginStyle?: BrowserLoginStyle; - }; + /** + * Specifies whether a redirect or a popup window should be used to + * initiate the user authentication flow. Possible values are "redirect" + * or "popup" (default) for browser and "popup" (default) for node. + * + */ + loginStyle?: BrowserLoginStyle; +} diff --git a/sdk/identity/identity/src/credentials/managedIdentityCredential/appServiceMsi2017.ts b/sdk/identity/identity/src/credentials/managedIdentityCredential/appServiceMsi2017.ts index 6a556b1d38d0..f0a050f46b20 100644 --- a/sdk/identity/identity/src/credentials/managedIdentityCredential/appServiceMsi2017.ts +++ b/sdk/identity/identity/src/credentials/managedIdentityCredential/appServiceMsi2017.ts @@ -1,7 +1,10 @@ // Copyright (c) Microsoft Corporation. // Licensed under the MIT license. -import { AccessToken, GetTokenOptions, RequestPrepareOptions } from "@azure/core-http"; +import { AccessToken, GetTokenOptions } from "@azure/core-auth"; + +import { RequestPrepareOptions } from "@azure/core-http"; + import { IdentityClient } from "../../client/identityClient"; import { credentialLogger } from "../../util/logging"; import { MSI } from "./models"; diff --git a/sdk/identity/identity/src/credentials/managedIdentityCredential/arcMsi.ts b/sdk/identity/identity/src/credentials/managedIdentityCredential/arcMsi.ts index c379f350f1d4..a30b749a4766 100644 --- a/sdk/identity/identity/src/credentials/managedIdentityCredential/arcMsi.ts +++ b/sdk/identity/identity/src/credentials/managedIdentityCredential/arcMsi.ts @@ -1,7 +1,9 @@ // Copyright (c) Microsoft Corporation. // Licensed under the MIT license. -import { AccessToken, GetTokenOptions, RequestPrepareOptions } from "@azure/core-http"; +import { AccessToken, GetTokenOptions } from "@azure/core-auth"; +import { RequestPrepareOptions } from "@azure/core-http"; + import { MSI } from "./models"; import { credentialLogger } from "../../util/logging"; import { IdentityClient } from "../../client/identityClient"; diff --git a/sdk/identity/identity/src/credentials/managedIdentityCredential/cloudShellMsi.ts b/sdk/identity/identity/src/credentials/managedIdentityCredential/cloudShellMsi.ts index 80b741f0690e..547b64d07e7c 100644 --- a/sdk/identity/identity/src/credentials/managedIdentityCredential/cloudShellMsi.ts +++ b/sdk/identity/identity/src/credentials/managedIdentityCredential/cloudShellMsi.ts @@ -2,7 +2,10 @@ // Licensed under the MIT license. import qs from "qs"; -import { AccessToken, GetTokenOptions, RequestPrepareOptions } from "@azure/core-http"; + +import { AccessToken, GetTokenOptions } from "@azure/core-auth"; +import { RequestPrepareOptions } from "@azure/core-http"; + import { MSI } from "./models"; import { credentialLogger } from "../../util/logging"; import { IdentityClient } from "../../client/identityClient"; diff --git a/sdk/identity/identity/src/credentials/managedIdentityCredential/fabricMsi.ts b/sdk/identity/identity/src/credentials/managedIdentityCredential/fabricMsi.ts index 2678a9048306..ff625535a64b 100644 --- a/sdk/identity/identity/src/credentials/managedIdentityCredential/fabricMsi.ts +++ b/sdk/identity/identity/src/credentials/managedIdentityCredential/fabricMsi.ts @@ -1,7 +1,9 @@ // Copyright (c) Microsoft Corporation. // Licensed under the MIT license. -import { AccessToken, GetTokenOptions, RequestPrepareOptions } from "@azure/core-http"; +import { AccessToken, GetTokenOptions } from "@azure/core-auth"; +import { RequestPrepareOptions } from "@azure/core-http"; + import { MSI } from "./models"; import { credentialLogger } from "../../util/logging"; import { IdentityClient } from "../../client/identityClient"; diff --git a/sdk/identity/identity/src/credentials/managedIdentityCredential/index.browser.ts b/sdk/identity/identity/src/credentials/managedIdentityCredential/index.browser.ts index dff12380ab78..eb8715548626 100644 --- a/sdk/identity/identity/src/credentials/managedIdentityCredential/index.browser.ts +++ b/sdk/identity/identity/src/credentials/managedIdentityCredential/index.browser.ts @@ -1,7 +1,8 @@ // Copyright (c) Microsoft Corporation. // Licensed under the MIT license. -import { AccessToken, TokenCredential } from "@azure/core-http"; +import { AccessToken, TokenCredential } from "@azure/core-auth"; + import { TokenCredentialOptions } from "../../client/identityClient"; import { credentialLogger, formatError } from "../../util/logging"; diff --git a/sdk/identity/identity/src/credentials/managedIdentityCredential/index.ts b/sdk/identity/identity/src/credentials/managedIdentityCredential/index.ts index a49723c57984..ffdc242ce940 100644 --- a/sdk/identity/identity/src/credentials/managedIdentityCredential/index.ts +++ b/sdk/identity/identity/src/credentials/managedIdentityCredential/index.ts @@ -1,7 +1,8 @@ // Copyright (c) Microsoft Corporation. // Licensed under the MIT license. -import { AccessToken, GetTokenOptions, TokenCredential } from "@azure/core-http"; +import { AccessToken, GetTokenOptions, TokenCredential } from "@azure/core-auth"; + import { IdentityClient, TokenCredentialOptions } from "../../client/identityClient"; import { createSpan } from "../../util/tracing"; import { AuthenticationError, CredentialUnavailableError } from "../../client/errors"; diff --git a/sdk/identity/identity/src/credentials/managedIdentityCredential/models.ts b/sdk/identity/identity/src/credentials/managedIdentityCredential/models.ts index e449ffd64b18..237b758554fa 100644 --- a/sdk/identity/identity/src/credentials/managedIdentityCredential/models.ts +++ b/sdk/identity/identity/src/credentials/managedIdentityCredential/models.ts @@ -1,7 +1,8 @@ // Copyright (c) Microsoft Corporation. // Licensed under the MIT license. -import { AccessToken, GetTokenOptions } from "@azure/core-http"; +import { AccessToken, GetTokenOptions } from "@azure/core-auth"; + import { IdentityClient } from "../../client/identityClient"; export type MSIExpiresInParser = (requestBody: any) => number; diff --git a/sdk/identity/identity/src/credentials/managedIdentityCredential/utils.ts b/sdk/identity/identity/src/credentials/managedIdentityCredential/utils.ts index 6c54ec33a94b..ef2336c6a9c7 100644 --- a/sdk/identity/identity/src/credentials/managedIdentityCredential/utils.ts +++ b/sdk/identity/identity/src/credentials/managedIdentityCredential/utils.ts @@ -1,7 +1,9 @@ // Copyright (c) Microsoft Corporation. // Licensed under the MIT license. -import { AccessToken, GetTokenOptions, RequestPrepareOptions } from "@azure/core-http"; +import { AccessToken, GetTokenOptions } from "@azure/core-auth"; +import { RequestPrepareOptions } from "@azure/core-http"; + import { IdentityClient } from "../../client/identityClient"; import { DefaultScopeSuffix } from "./constants"; import { MSIExpiresInParser } from "./models"; diff --git a/sdk/identity/identity/src/credentials/usernamePasswordCredential.browser.ts b/sdk/identity/identity/src/credentials/usernamePasswordCredential.browser.ts index e76b83b68863..91f4cd31a692 100644 --- a/sdk/identity/identity/src/credentials/usernamePasswordCredential.browser.ts +++ b/sdk/identity/identity/src/credentials/usernamePasswordCredential.browser.ts @@ -2,7 +2,9 @@ // Licensed under the MIT license. import qs from "qs"; -import { TokenCredential, GetTokenOptions, AccessToken } from "@azure/core-http"; + +import { TokenCredential, GetTokenOptions, AccessToken } from "@azure/core-auth"; + import { TokenCredentialOptions, IdentityClient } from "../client/identityClient"; import { createSpan } from "../util/tracing"; import { SpanStatusCode } from "@azure/core-tracing"; diff --git a/sdk/identity/identity/src/credentials/usernamePasswordCredential.ts b/sdk/identity/identity/src/credentials/usernamePasswordCredential.ts index f7ffeefc0883..f8752b694eb4 100644 --- a/sdk/identity/identity/src/credentials/usernamePasswordCredential.ts +++ b/sdk/identity/identity/src/credentials/usernamePasswordCredential.ts @@ -1,7 +1,8 @@ // Copyright (c) Microsoft Corporation. // Licensed under the MIT license. -import { AccessToken, GetTokenOptions, TokenCredential } from "@azure/core-http"; +import { AccessToken, GetTokenOptions, TokenCredential } from "@azure/core-auth"; + import { credentialLogger } from "../util/logging"; import { MsalUsernamePassword } from "../msal/nodeFlows/msalUsernamePassword"; import { MsalFlow } from "../msal/flows"; diff --git a/sdk/identity/identity/src/credentials/usernamePasswordCredentialOptions.ts b/sdk/identity/identity/src/credentials/usernamePasswordCredentialOptions.ts index f82a1cdb2922..5abe8010dd14 100644 --- a/sdk/identity/identity/src/credentials/usernamePasswordCredentialOptions.ts +++ b/sdk/identity/identity/src/credentials/usernamePasswordCredentialOptions.ts @@ -2,8 +2,11 @@ // Licensed under the MIT license. import { TokenCredentialOptions } from "../client/identityClient"; +import { CredentialPersistenceOptions } from "./credentialPersistenceOptions"; /** * Defines options for the {@link UsernamePasswordCredential} class. */ -export interface UsernamePasswordCredentialOptions extends TokenCredentialOptions {} +export interface UsernamePasswordCredentialOptions + extends TokenCredentialOptions, + CredentialPersistenceOptions {} diff --git a/sdk/identity/identity/src/credentials/visualStudioCodeCredential.browser.ts b/sdk/identity/identity/src/credentials/visualStudioCodeCredential.browser.ts new file mode 100644 index 000000000000..8255eeac4dce --- /dev/null +++ b/sdk/identity/identity/src/credentials/visualStudioCodeCredential.browser.ts @@ -0,0 +1,31 @@ +// Copyright (c) Microsoft Corporation. +// Licensed under the MIT license. + +import { TokenCredential, AccessToken } from "@azure/core-auth"; + +import { credentialLogger, formatError } from "../util/logging"; + +const BrowserNotSupportedError = new Error( + "VisualStudioCodeCredential is not supported in the browser." +); +const logger = credentialLogger("VisualStudioCodeCredential"); + +export const vsCodeCredentialControl = { + set vsCodeCredentialFinder(_finder: never) { + throw new Error( + "Attempted to register a VisualStudioCodeCredential provider extension in the browser. This environment is not supported by VisualStudioCodeCredential." + ); + } +}; + +export class VisualStudioCodeCredential implements TokenCredential { + constructor() { + logger.info(formatError("", BrowserNotSupportedError)); + throw BrowserNotSupportedError; + } + + public getToken(): Promise { + logger.getToken.info(formatError("", BrowserNotSupportedError)); + throw BrowserNotSupportedError; + } +} diff --git a/sdk/identity/identity/src/credentials/visualStudioCodeCredential.ts b/sdk/identity/identity/src/credentials/visualStudioCodeCredential.ts new file mode 100644 index 000000000000..c12d7dde7c9b --- /dev/null +++ b/sdk/identity/identity/src/credentials/visualStudioCodeCredential.ts @@ -0,0 +1,234 @@ +// Copyright (c) Microsoft Corporation. +// Licensed under the MIT license. + +import { TokenCredential, AccessToken, GetTokenOptions } from "@azure/core-auth"; + +import fs from "fs"; +import os from "os"; +import path from "path"; + +import { CredentialUnavailableError } from "../client/errors"; +import { IdentityClient, TokenCredentialOptions } from "../client/identityClient"; +import { AzureAuthorityHosts } from "../constants"; +import { checkTenantId } from "../util/checkTenantId"; +import { credentialLogger, formatError, formatSuccess } from "../util/logging"; +import { VSCodeCredentialFinder } from "./visualStudioCodeCredentialExtension"; + +const CommonTenantId = "common"; +const AzureAccountClientId = "aebc6443-996d-45c2-90f0-388ff96faa56"; // VSC: 'aebc6443-996d-45c2-90f0-388ff96faa56' +const logger = credentialLogger("VisualStudioCodeCredential"); + +let findCredentials: VSCodeCredentialFinder | undefined = undefined; + +export const vsCodeCredentialControl = { + setVsCodeCredentialFinder(finder: VSCodeCredentialFinder): void { + findCredentials = finder; + } +}; + +// Map of unsupported Tenant IDs and the errors we will be throwing. +const unsupportedTenantIds: Record = { + adfs: "The VisualStudioCodeCredential does not support authentication with ADFS tenants." +}; + +function checkUnsupportedTenant(tenantId: string): void { + // If the Tenant ID isn't supported, we throw. + const unsupportedTenantError = unsupportedTenantIds[tenantId]; + if (unsupportedTenantError) { + throw new CredentialUnavailableError(unsupportedTenantError); + } +} + +type VSCodeCloudNames = "AzureCloud" | "AzureChina" | "AzureGermanCloud" | "AzureUSGovernment"; + +const mapVSCodeAuthorityHosts: Record = { + AzureCloud: AzureAuthorityHosts.AzurePublicCloud, + AzureChina: AzureAuthorityHosts.AzureChina, + AzureGermanCloud: AzureAuthorityHosts.AzureGermany, + AzureUSGovernment: AzureAuthorityHosts.AzureGovernment +}; + +/** + * Attempts to load a specific property from the VSCode configurations of the current OS. + * If it fails at any point, returns undefined. + */ +export function getPropertyFromVSCode(property: string): string | undefined { + const settingsPath = ["User", "settings.json"]; + // Eventually we can add more folders for more versions of VSCode. + const vsCodeFolder = "Code"; + const homedir = os.homedir(); + + function loadProperty(...pathSegments: string[]): string | undefined { + const fullPath = path.join(...pathSegments, vsCodeFolder, ...settingsPath); + const settings = JSON.parse(fs.readFileSync(fullPath, { encoding: "utf8" })); + return settings[property]; + } + + try { + let appData: string; + switch (process.platform) { + case "win32": + appData = process.env.APPDATA!; + return appData ? loadProperty(appData) : undefined; + case "darwin": + return loadProperty(homedir, "Library", "Application Support"); + case "linux": + return loadProperty(homedir, ".config"); + default: + return; + } + } catch (e) { + logger.info(`Failed to load the Visual Studio Code configuration file. Error: ${e.message}`); + return; + } +} + +/** + * Provides options to configure the Visual Studio Code credential. + */ +export interface VisualStudioCodeCredentialOptions extends TokenCredentialOptions { + /** + * Optionally pass in a Tenant ID to be used as part of the credential + */ + tenantId?: string; +} + +/** + * Connect to Azure using the credential provided by the VSCode extension 'Azure Account'. + * Once the user has logged in via the extension, this credential can share the same refresh token + * that is cached by the extension. + */ +export class VisualStudioCodeCredential implements TokenCredential { + private identityClient: IdentityClient; + private tenantId: string; + private cloudName: VSCodeCloudNames; + + /** + * Creates an instance of VisualStudioCodeCredential to use for automatically authenticating via VSCode. + * + * @param options - Options for configuring the client which makes the authentication request. + */ + constructor(options?: VisualStudioCodeCredentialOptions) { + // We want to make sure we use the one assigned by the user on the VSCode settings. + // Or just `AzureCloud` by default. + this.cloudName = (getPropertyFromVSCode("azure.cloud") || "AzureCloud") as VSCodeCloudNames; + + // Picking an authority host based on the cloud name. + const authorityHost = mapVSCodeAuthorityHosts[this.cloudName]; + + this.identityClient = new IdentityClient({ + authorityHost, + ...options + }); + + if (options && options.tenantId) { + checkTenantId(logger, options.tenantId); + this.tenantId = options.tenantId; + } else { + this.tenantId = CommonTenantId; + } + + checkUnsupportedTenant(this.tenantId); + } + + /** + * Runs preparations for any further getToken request. + */ + private async prepare(): Promise { + // Attempts to load the tenant from the VSCode configuration file. + const settingsTenant = getPropertyFromVSCode("azure.tenant"); + if (settingsTenant) { + this.tenantId = settingsTenant; + } + checkUnsupportedTenant(this.tenantId); + } + + /** + * The promise of the single preparation that will be executed at the first getToken request for an instance of this class. + */ + private preparePromise: Promise | undefined; + + /** + * Runs preparations for any further getToken, but only once. + */ + private prepareOnce(): Promise | undefined { + if (!this.preparePromise) { + this.preparePromise = this.prepare(); + } + return this.preparePromise; + } + + /** + * Returns the token found by searching VSCode's authentication cache or + * returns null if no token could be found. + * + * @param scopes - The list of scopes for which the token will have access. + * @param options - The options used to configure any requests this + * `TokenCredential` implementation might make. + */ + public async getToken( + scopes: string | string[], + _options?: GetTokenOptions + ): Promise { + await this.prepareOnce(); + if (findCredentials === undefined) { + throw new CredentialUnavailableError( + "No implementation of VisualStudioCodeCredential is available (do you need to install and use the `@azure/identity-vscode` extension package?)" + ); + } + + let scopeString = typeof scopes === "string" ? scopes : scopes.join(" "); + + // Check to make sure the scope we get back is a valid scope + if (!scopeString.match(/^[0-9a-zA-Z-.:/]+$/)) { + const error = new Error("Invalid scope was specified by the user or calling client"); + logger.getToken.info(formatError(scopes, error)); + throw error; + } + + if (scopeString.indexOf("offline_access") < 0) { + scopeString += " offline_access"; + } + + // findCredentials returns an array similar to: + // [ + // { + // account: "", + // password: "", + // }, + // /* ... */ + // ] + const credentials = await findCredentials(); + + // If we can't find the credential based on the name, we'll pick the first one available. + const { password: refreshToken } = + credentials.find(({ account }) => account === this.cloudName) ?? credentials[0] ?? {}; + + if (refreshToken) { + const tokenResponse = await this.identityClient.refreshAccessToken( + this.tenantId, + AzureAccountClientId, + scopeString, + refreshToken, + undefined + ); + + if (tokenResponse) { + logger.getToken.info(formatSuccess(scopes)); + return tokenResponse.accessToken; + } else { + const error = new CredentialUnavailableError( + "Could not retrieve the token associated with Visual Studio Code. Have you connected using the 'Azure Account' extension recently?" + ); + logger.getToken.info(formatError(scopes, error)); + throw error; + } + } else { + const error = new CredentialUnavailableError( + "Could not retrieve the token associated with Visual Studio Code. Did you connect using the 'Azure Account' extension?" + ); + logger.getToken.info(formatError(scopes, error)); + throw error; + } + } +} diff --git a/sdk/identity/identity/src/credentials/visualStudioCodeCredentialExtension.ts b/sdk/identity/identity/src/credentials/visualStudioCodeCredentialExtension.ts new file mode 100644 index 000000000000..4dd49ae1dbc2 --- /dev/null +++ b/sdk/identity/identity/src/credentials/visualStudioCodeCredentialExtension.ts @@ -0,0 +1,13 @@ +// Copyright (c) Microsoft Corporation. +// Licensed under the MIT license. + +// Copyright (c) Microsoft Corporation +// Licensed under the MIT license. + +/** + * A function that searches for credentials in the Visual Studio Code credential store. + * + * @returns an array of credentials (username and password) + * @internal + */ +export type VSCodeCredentialFinder = () => Promise>; diff --git a/sdk/identity/identity/src/extensions/consumer.browser.ts b/sdk/identity/identity/src/extensions/consumer.browser.ts new file mode 100644 index 000000000000..900a924cd408 --- /dev/null +++ b/sdk/identity/identity/src/extensions/consumer.browser.ts @@ -0,0 +1,8 @@ +// Copyright (c) Microsoft Corporation. +// Licensed under the MIT license. + +// This module is a shim for the extension consumer in the browser + +export function useIdentityExtension(_extension: unknown): void { + throw new Error("Identity extensions are not supported in browser environments."); +} diff --git a/sdk/identity/identity/src/extensions/consumer.ts b/sdk/identity/identity/src/extensions/consumer.ts new file mode 100644 index 000000000000..9b3495a8bba2 --- /dev/null +++ b/sdk/identity/identity/src/extensions/consumer.ts @@ -0,0 +1,47 @@ +// Copyright (c) Microsoft Corporation. +// Licensed under the MIT license. + +import { AzureExtensionContext, IdentityExtension } from "./provider"; +import { msalNodeFlowCacheControl } from "../msal/nodeFlows/nodeCommon"; +import { vsCodeCredentialControl } from "../credentials/visualStudioCodeCredential"; + +/** + * The context passed to an Identity Extension. This contains objects that + * extensions can use to set backend implementations. + * @internal + */ +const extensionContext: AzureExtensionContext = { + cachePluginControl: msalNodeFlowCacheControl, + vsCodeCredentialControl: vsCodeCredentialControl +}; + +/** + * Extend Azure Identity with additional functionality. Pass an extension from + * an extension package, such as: + * + * - `@azure/identity-cache-persistence`: provides persistent token caching + * - `@azure/identity-vscode`: provides the dependencies of + * `VisualStudioCodeCredential` and enables it + * + * Example: + * + * ```javascript + * import { cachePersistenceExtension } from "@azure/identity-cache-persistence"; + * + * import { useIdentityExtension, DefaultAzureCredential } from "@azure/identity"; + * useIdentityExtension(persistence); + * + * // The extension has the capability to extend `DefaultAzureCredential` and to + * // add middleware to the underlying credentials, such as persistence. + * const credential = new DefaultAzureCredential({ + * tokenCachePersistenceOptions: { + * enabled: true + * } + * }); + * ``` + * + * @param extension - the extension to register + */ +export function useIdentityExtension(extension: IdentityExtension): void { + extension(extensionContext); +} diff --git a/sdk/identity/identity/src/extensions/provider.ts b/sdk/identity/identity/src/extensions/provider.ts new file mode 100644 index 000000000000..ad661a00cdb8 --- /dev/null +++ b/sdk/identity/identity/src/extensions/provider.ts @@ -0,0 +1,42 @@ +// Copyright (c) Microsoft Corporation. +// Licensed under the MIT license. + +import { VSCodeCredentialFinder } from "../credentials/visualStudioCodeCredentialExtension"; +import { TokenCachePersistenceOptions } from "../msal/nodeFlows/tokenCachePersistenceOptions"; + +/** + * The type of an Azure Identity Extension, a function accepting an extension + * context. + */ +export type IdentityExtension = (context: unknown) => void; + +/** + * Extension context entries for controlling cache plugins. + */ +export interface CachePluginControl { + setPersistence( + persistenceFactory: ( + options?: TokenCachePersistenceOptions + ) => Promise + ): void; +} + +/** + * Extension context entries for controlling VisualStudioCodeCredential. + */ +export interface VisualStudioCodeCredentialControl { + setVsCodeCredentialFinder(finder: VSCodeCredentialFinder): void; +} + +/** + * Context options passed to an extension during initialization. + * + * Extension authors are responsible for casting their extension context values + * to this type. + * + * @internal + */ +export interface AzureExtensionContext { + cachePluginControl: CachePluginControl; + vsCodeCredentialControl: VisualStudioCodeCredentialControl; +} diff --git a/sdk/identity/identity/src/index.ts b/sdk/identity/identity/src/index.ts index 7e951d958cb3..564e52a96157 100644 --- a/sdk/identity/identity/src/index.ts +++ b/sdk/identity/identity/src/index.ts @@ -1,7 +1,11 @@ // Copyright (c) Microsoft Corporation. // Licensed under the MIT license. -import { TokenCredential } from "@azure/core-http"; +export * from "./extensions/consumer"; + +export { IdentityExtension } from "./extensions/provider"; + +import { TokenCredential } from "@azure/core-auth"; import { DefaultAzureCredential } from "./credentials/defaultAzureCredential"; export { AuthenticationRecord } from "./msal/types"; @@ -16,11 +20,15 @@ export { DefaultAzureCredential, DefaultAzureCredentialOptions } from "./credentials/defaultAzureCredential"; -export { EnvironmentCredential } from "./credentials/environmentCredential"; +export { + EnvironmentCredential, + EnvironmentCredentialOptions +} from "./credentials/environmentCredential"; export { ClientSecretCredential } from "./credentials/clientSecretCredential"; export { ClientSecretCredentialOptions } from "./credentials/clientSecretCredentialOptions"; export { ClientCertificateCredential } from "./credentials/clientCertificateCredential"; export { ClientCertificateCredentialOptions } from "./credentials/clientCertificateCredentialOptions"; +export { CredentialPersistenceOptions } from "./credentials/credentialPersistenceOptions"; export { AzureCliCredential } from "./credentials/azureCliCredential"; export { InteractiveBrowserCredential } from "./credentials/interactiveBrowserCredential"; export { @@ -40,6 +48,13 @@ export { UsernamePasswordCredentialOptions } from "./credentials/usernamePasswor export { AuthorizationCodeCredential } from "./credentials/authorizationCodeCredential"; export { AzurePowerShellCredential } from "./credentials/azurePowerShellCredential"; +export { + VisualStudioCodeCredential, + VisualStudioCodeCredentialOptions +} from "./credentials/visualStudioCodeCredential"; + +export { TokenCachePersistenceOptions } from "./msal/nodeFlows/tokenCachePersistenceOptions"; + export { AuthenticationError, ErrorResponse, @@ -50,7 +65,7 @@ export { CredentialUnavailableErrorName } from "./client/errors"; -export { TokenCredential, GetTokenOptions, AccessToken } from "@azure/core-http"; +export { TokenCredential, GetTokenOptions, AccessToken } from "@azure/core-auth"; export { logger } from "./util/logging"; export { AzureAuthorityHosts } from "./constants"; diff --git a/sdk/identity/identity/src/msal/browserFlows/browserCommon.ts b/sdk/identity/identity/src/msal/browserFlows/browserCommon.ts index 75783b8bad7d..5e06a9ea4dbd 100644 --- a/sdk/identity/identity/src/msal/browserFlows/browserCommon.ts +++ b/sdk/identity/identity/src/msal/browserFlows/browserCommon.ts @@ -2,7 +2,9 @@ // Licensed under the MIT license. import * as msalBrowser from "@azure/msal-browser"; -import { AccessToken } from "@azure/core-http"; + +import { AccessToken } from "@azure/core-auth"; + import { DefaultTenantId } from "../../constants"; import { resolveTenantId } from "../../util/resolveTenantId"; import { BrowserLoginStyle } from "../../credentials/interactiveBrowserCredentialOptions"; diff --git a/sdk/identity/identity/src/msal/browserFlows/msalAuthCode.ts b/sdk/identity/identity/src/msal/browserFlows/msalAuthCode.ts index 0a2ed5e90adc..9c8ee4317b26 100644 --- a/sdk/identity/identity/src/msal/browserFlows/msalAuthCode.ts +++ b/sdk/identity/identity/src/msal/browserFlows/msalAuthCode.ts @@ -2,8 +2,10 @@ // Licensed under the MIT license. import * as msalBrowser from "@azure/msal-browser"; + +import { AccessToken } from "@azure/core-auth"; + import { MsalBrowserFlowOptions, MsalBrowser } from "./browserCommon"; -import { AccessToken } from "@azure/core-http"; import { defaultLoggerCallback, msalToPublic, publicToMsal } from "../utils"; import { AuthenticationRecord } from "../types"; import { AuthenticationRequiredError } from "../errors"; diff --git a/sdk/identity/identity/src/msal/credentials.ts b/sdk/identity/identity/src/msal/credentials.ts index 4d0238c83338..6b80f45b96f1 100644 --- a/sdk/identity/identity/src/msal/credentials.ts +++ b/sdk/identity/identity/src/msal/credentials.ts @@ -1,7 +1,8 @@ // Copyright (c) Microsoft Corporation. // Licensed under the MIT license. -import { AccessToken, GetTokenOptions } from "@azure/core-http"; +import { AccessToken, GetTokenOptions } from "@azure/core-auth"; + import { AuthenticationRecord } from "./types"; /** diff --git a/sdk/identity/identity/src/msal/errors.ts b/sdk/identity/identity/src/msal/errors.ts index 1ee4183092d4..71ee673d5fb1 100644 --- a/sdk/identity/identity/src/msal/errors.ts +++ b/sdk/identity/identity/src/msal/errors.ts @@ -1,7 +1,7 @@ // Copyright (c) Microsoft Corporation. // Licensed under the MIT license. -import { GetTokenOptions } from "@azure/core-http"; +import { GetTokenOptions } from "@azure/core-auth"; /** * Error used to enforce authentication after trying to retrieve a token silently. diff --git a/sdk/identity/identity/src/msal/flows.ts b/sdk/identity/identity/src/msal/flows.ts index 80d9a69dd38e..f678af41d690 100644 --- a/sdk/identity/identity/src/msal/flows.ts +++ b/sdk/identity/identity/src/msal/flows.ts @@ -1,7 +1,8 @@ // Copyright (c) Microsoft Corporation. // Licensed under the MIT license. -import { AccessToken } from "@azure/core-http"; +import { AccessToken } from "@azure/core-auth"; + import { CredentialLogger } from "../util/logging"; import { AuthenticationRecord } from "./types"; import { CredentialFlowGetTokenOptions } from "./credentials"; @@ -28,10 +29,6 @@ export interface MsalFlow { * Allows for any setup before any request is processed. */ init(options?: CredentialFlowGetTokenOptions): Promise; - /** - * Clears the MSAL cache. - */ - logout(): Promise; /** * Tries to load the active account, either from memory or from MSAL. */ diff --git a/sdk/identity/identity/src/msal/nodeFlows/msalClientCertificate.ts b/sdk/identity/identity/src/msal/nodeFlows/msalClientCertificate.ts index b70aca7356e7..3b5131f5725e 100644 --- a/sdk/identity/identity/src/msal/nodeFlows/msalClientCertificate.ts +++ b/sdk/identity/identity/src/msal/nodeFlows/msalClientCertificate.ts @@ -3,7 +3,9 @@ import { readFileSync } from "fs"; import { createHash } from "crypto"; -import { AccessToken } from "@azure/core-http"; + +import { AccessToken } from "@azure/core-auth"; + import { MsalNodeOptions, MsalNode } from "./nodeCommon"; import { formatError } from "../../util/logging"; import { CredentialFlowGetTokenOptions } from "../credentials"; diff --git a/sdk/identity/identity/src/msal/nodeFlows/msalClientSecret.ts b/sdk/identity/identity/src/msal/nodeFlows/msalClientSecret.ts index e40ba09db500..eafbc6e70be8 100644 --- a/sdk/identity/identity/src/msal/nodeFlows/msalClientSecret.ts +++ b/sdk/identity/identity/src/msal/nodeFlows/msalClientSecret.ts @@ -1,7 +1,8 @@ // Copyright (c) Microsoft Corporation. // Licensed under the MIT license. -import { AccessToken } from "@azure/core-http"; +import { AccessToken } from "@azure/core-auth"; + import { CredentialFlowGetTokenOptions } from "../credentials"; import { MsalNodeOptions, MsalNode } from "./nodeCommon"; diff --git a/sdk/identity/identity/src/msal/nodeFlows/msalDeviceCode.ts b/sdk/identity/identity/src/msal/nodeFlows/msalDeviceCode.ts index f12d90294f85..391726b786fb 100644 --- a/sdk/identity/identity/src/msal/nodeFlows/msalDeviceCode.ts +++ b/sdk/identity/identity/src/msal/nodeFlows/msalDeviceCode.ts @@ -2,7 +2,9 @@ // Licensed under the MIT license. import * as msalNode from "@azure/msal-node"; -import { AccessToken } from "@azure/core-http"; + +import { AccessToken } from "@azure/core-auth"; + import { DeviceCodePromptCallback } from "../../credentials/deviceCodeCredentialOptions"; import { CredentialFlowGetTokenOptions } from "../credentials"; import { MsalNodeOptions, MsalNode } from "./nodeCommon"; diff --git a/sdk/identity/identity/src/msal/nodeFlows/msalOpenBrowser.ts b/sdk/identity/identity/src/msal/nodeFlows/msalOpenBrowser.ts index 674bcbec57d9..8b584bbc99a4 100644 --- a/sdk/identity/identity/src/msal/nodeFlows/msalOpenBrowser.ts +++ b/sdk/identity/identity/src/msal/nodeFlows/msalOpenBrowser.ts @@ -2,11 +2,14 @@ // Licensed under the MIT license. import * as msalNode from "@azure/msal-node"; + +import { AccessToken, GetTokenOptions } from "@azure/core-auth"; + import { Socket } from "net"; import http from "http"; import open from "open"; import stoppable from "stoppable"; -import { AccessToken, GetTokenOptions } from "@azure/core-http"; + import { credentialLogger, formatError, formatSuccess } from "../../util/logging"; import { MsalNodeOptions, MsalNode } from "./nodeCommon"; import { msalToPublic } from "../utils"; diff --git a/sdk/identity/identity/src/msal/nodeFlows/msalUsernamePassword.ts b/sdk/identity/identity/src/msal/nodeFlows/msalUsernamePassword.ts index 8095fd0741ae..93f71eed2a7c 100644 --- a/sdk/identity/identity/src/msal/nodeFlows/msalUsernamePassword.ts +++ b/sdk/identity/identity/src/msal/nodeFlows/msalUsernamePassword.ts @@ -2,7 +2,9 @@ // Licensed under the MIT license. import * as msalNode from "@azure/msal-node"; -import { AccessToken } from "@azure/core-http"; + +import { AccessToken } from "@azure/core-auth"; + import { MsalNodeOptions, MsalNode } from "./nodeCommon"; import { CredentialFlowGetTokenOptions } from "../credentials"; diff --git a/sdk/identity/identity/src/msal/nodeFlows/nodeCommon.ts b/sdk/identity/identity/src/msal/nodeFlows/nodeCommon.ts index d0f90b587c3b..63625c5228af 100644 --- a/sdk/identity/identity/src/msal/nodeFlows/nodeCommon.ts +++ b/sdk/identity/identity/src/msal/nodeFlows/nodeCommon.ts @@ -3,8 +3,10 @@ import * as msalNode from "@azure/msal-node"; import * as msalCommon from "@azure/msal-common"; -import { AccessToken, GetTokenOptions } from "@azure/core-http"; + +import { AccessToken, GetTokenOptions } from "@azure/core-auth"; import { AbortSignalLike } from "@azure/abort-controller"; + import { DeveloperSignOnClientId } from "../../constants"; import { IdentityClient, TokenCredentialOptions } from "../../client/identityClient"; import { resolveTenantId } from "../../util/resolveTenantId"; @@ -20,6 +22,7 @@ import { msalToPublic, publicToMsal } from "../utils"; +import { TokenCachePersistenceOptions } from "./tokenCachePersistenceOptions"; import { RegionalAuthority } from "../../regionalAuthority"; /** @@ -27,6 +30,7 @@ import { RegionalAuthority } from "../../regionalAuthority"; * @internal */ export interface MsalNodeOptions extends MsalFlowOptions { + tokenCachePersistenceOptions?: TokenCachePersistenceOptions; tokenCredentialOptions: TokenCredentialOptions; /** * Specifies a regional authority. Please refer to the {@link RegionalAuthority} type for the accepted values. @@ -36,6 +40,24 @@ export interface MsalNodeOptions extends MsalFlowOptions { regionalAuthority?: string; } +/** + * The current persistence provider, undefined by default. + * @internal + */ +let persistenceProvider: + | ((options?: TokenCachePersistenceOptions) => Promise) + | undefined = undefined; + +/** + * An object that allows setting the persistence provider. + * @internal + */ +export const msalNodeFlowCacheControl = { + setPersistence(pluginProvider: Exclude): void { + persistenceProvider = pluginProvider; + } +}; + /** * MSAL partial base client for NodeJS. * @@ -54,10 +76,22 @@ export abstract class MsalNode extends MsalBaseUtilities implements MsalFlow { protected requiresConfidential: boolean = false; protected azureRegion?: string; + protected createCachePlugin: (() => Promise) | undefined; + constructor(options: MsalNodeOptions) { super(options); this.msalConfig = this.defaultNodeMsalConfig(options); this.clientId = this.msalConfig.auth.clientId; + + // If persistence has been configured + if (persistenceProvider !== undefined && options.tokenCachePersistenceOptions?.enabled) { + this.createCachePlugin = () => persistenceProvider!(options.tokenCachePersistenceOptions); + } else if (options.tokenCachePersistenceOptions?.enabled) { + throw new Error( + "Persistent token caching was requested, but no persistence provider was configured (do you need to use the `@azure/identity-cache-persistence` package?)" + ); + } + this.azureRegion = options.regionalAuthority ?? process.env.AZURE_REGIONAL_AUTHORITY_NAME; if (this.azureRegion === RegionalAuthority.AutoDiscoverRegion) { this.azureRegion = "AUTO_DISCOVER"; @@ -110,6 +144,12 @@ export abstract class MsalNode extends MsalBaseUtilities implements MsalFlow { return; } + if (this.createCachePlugin !== undefined) { + this.msalConfig.cache = { + cachePlugin: await this.createCachePlugin() + }; + } + this.publicApp = new msalNode.PublicClientApplication(this.msalConfig); // The confidential client requires either a secret, assertion or certificate. if ( @@ -156,7 +196,7 @@ export abstract class MsalNode extends MsalBaseUtilities implements MsalFlow { if (this.account) { return this.account; } - const cache = this.publicApp?.getTokenCache(); + const cache = this.confidentialApp?.getTokenCache() ?? this.publicApp?.getTokenCache(); const accountsByTenant = await cache?.getAllAccounts(); if (!accountsByTenant) { @@ -178,13 +218,6 @@ To work with multiple accounts for the same Client ID and Tenant ID, please prov return this.account; } - /** - * Clears MSAL's cache. - */ - async logout(): Promise { - // Intentionally empty - } - /** * Attempts to retrieve a token from cache. */ @@ -206,7 +239,9 @@ To work with multiple accounts for the same Client ID and Tenant ID, please prov try { this.logger.info("Attempting to acquire token silently"); - const response = await this.publicApp!.acquireTokenSilent(silentRequest); + const response = + (await this.confidentialApp?.acquireTokenSilent(silentRequest)) ?? + (await this.publicApp!.acquireTokenSilent(silentRequest)); return this.handleResult(scopes, this.clientId, response || undefined); } catch (err) { throw this.handleError(scopes, err, options); diff --git a/sdk/identity/identity/src/msal/nodeFlows/tokenCachePersistenceOptions.ts b/sdk/identity/identity/src/msal/nodeFlows/tokenCachePersistenceOptions.ts new file mode 100644 index 000000000000..fb5dbe5cf31d --- /dev/null +++ b/sdk/identity/identity/src/msal/nodeFlows/tokenCachePersistenceOptions.ts @@ -0,0 +1,27 @@ +// Copyright (c) Microsoft Corporation. +// Licensed under the MIT license. + +/** + * Parameters that enable token cache persistence in the Identity credentials. + */ +export interface TokenCachePersistenceOptions { + /** + * If set to true, persistent token caching will be enabled for this credential instance. + */ + enabled: boolean; + /** + * Unique identifier for the persistent token cache. + * + * Based on this identifier, the persistence file will be located in any of the following places: + * - Darwin: '/Users/user/.IdentityService/' + * - Windows 8: 'C:\\Users\\user\\AppData\\Local\\.IdentityService\\' + * - Windows XP: 'C:\\Documents and Settings\\user\\Application Data\\Local\\.IdentityService\\' + * - Linux: '/home/user/.IdentityService/' + */ + name?: string; + /** + * If set to true, the cache will be stored without encryption if no OS level user encryption is available. + * When set to false, the PersistentTokenCache will throw an error if no OS level user encryption is available. + */ + allowUnencryptedStorage?: boolean; +} diff --git a/sdk/identity/identity/src/msal/utils.ts b/sdk/identity/identity/src/msal/utils.ts index 5e8db10a1582..ccf0a5170257 100644 --- a/sdk/identity/identity/src/msal/utils.ts +++ b/sdk/identity/identity/src/msal/utils.ts @@ -2,7 +2,11 @@ // Licensed under the MIT license. import * as msalCommon from "@azure/msal-common"; -import { AccessToken, GetTokenOptions, isNode } from "@azure/core-http"; + +import { AccessToken, GetTokenOptions } from "@azure/core-auth"; +import { isNode } from "@azure/core-http"; +import { AbortError } from "@azure/abort-controller"; + import { v4 as uuidv4 } from "uuid"; import { CredentialLogger, formatError, formatSuccess } from "../util/logging"; import { CredentialUnavailableError } from "../client/errors"; @@ -10,7 +14,6 @@ import { DefaultAuthorityHost, DefaultTenantId } from "../constants"; import { AuthenticationRecord, MsalAccountInfo, MsalResult, MsalToken } from "./types"; import { AuthenticationRequiredError } from "./errors"; import { MsalFlowOptions } from "./flows"; -import { AbortError } from "@azure/abort-controller"; /** * Latest AuthenticationRecord version diff --git a/sdk/identity/identity/test/internal/node/clientSecretCredential.spec.ts b/sdk/identity/identity/test/internal/node/clientSecretCredential.spec.ts index 18cccb957b03..5a7b89162aa4 100644 --- a/sdk/identity/identity/test/internal/node/clientSecretCredential.spec.ts +++ b/sdk/identity/identity/test/internal/node/clientSecretCredential.spec.ts @@ -43,17 +43,15 @@ describe("ClientSecretCredential (internal)", function() { env.AZURE_CLIENT_SECRET ); - await credential.getToken(scope); + const { token: firstToken } = await credential.getToken(scope); assert.equal(getTokenSilentSpy.callCount, 1); assert.equal(doGetTokenSpy.callCount, 1); - await credential.getToken(scope); + const { token: secondToken } = await credential.getToken(scope); + assert.strictEqual(firstToken, secondToken); assert.equal(getTokenSilentSpy.callCount, 2); - // Even though we're providing the same default in memory persistence cache that we use for DeviceCodeCredential, - // The Client Secret flow does not return the account information from the authentication service, - // so each time getToken gets called, we will have to acquire a new token through the service. - assert.equal(doGetTokenSpy.callCount, 2); + assert.equal(doGetTokenSpy.callCount, 1); }); it("supports specifying the regional authority", async function() { diff --git a/sdk/identity/identity/test/internal/node/environmentCredential.spec.ts b/sdk/identity/identity/test/internal/node/environmentCredential.spec.ts index 80f595f64ea4..eb97542dc2b2 100644 --- a/sdk/identity/identity/test/internal/node/environmentCredential.spec.ts +++ b/sdk/identity/identity/test/internal/node/environmentCredential.spec.ts @@ -37,16 +37,14 @@ describe("EnvironmentCredential (internal)", function() { it("Authenticates silently after the initial request", async function() { const credential = new EnvironmentCredential(); - await credential.getToken(scope); + const { token: firstToken } = await credential.getToken(scope); assert.equal(getTokenSilentSpy.callCount, 1); assert.equal(doGetTokenSpy.callCount, 1); - await credential.getToken(scope); + const { token: secondToken } = await credential.getToken(scope); + assert.strictEqual(firstToken, secondToken); assert.equal(getTokenSilentSpy.callCount, 2); - // Even though we're providing the same default in memory persistence cache that we use for DeviceCodeCredential, - // The Client Credential and Client Secret flows do not return the account information from the authentication service, - // so each time getToken gets called, we will have to acquire a new token through the service. - assert.equal(doGetTokenSpy.callCount, 2); + assert.equal(doGetTokenSpy.callCount, 1); }); }); diff --git a/sdk/identity/identity/test/internal/node/managedIdentityCredential.spec.ts b/sdk/identity/identity/test/internal/node/managedIdentityCredential.spec.ts index a3ee69e3199a..4d9fdf5e5cb6 100644 --- a/sdk/identity/identity/test/internal/node/managedIdentityCredential.spec.ts +++ b/sdk/identity/identity/test/internal/node/managedIdentityCredential.spec.ts @@ -3,7 +3,10 @@ import qs from "qs"; import assert from "assert"; -import { WebResource, AccessToken, HttpHeaders, RestError } from "@azure/core-http"; + +import { AccessToken } from "@azure/core-auth"; + +import { WebResource, HttpHeaders, RestError } from "@azure/core-http"; import { ManagedIdentityCredential, AuthenticationError } from "../../../src"; import { imdsEndpoint, diff --git a/sdk/identity/identity/test/msalTestUtils.ts b/sdk/identity/identity/test/msalTestUtils.ts index 23874deda129..04d3a891df51 100644 --- a/sdk/identity/identity/test/msalTestUtils.ts +++ b/sdk/identity/identity/test/msalTestUtils.ts @@ -51,6 +51,8 @@ export function msalNodeTestSetup( recording.replace(/"access_token":"[^"]*"/g, `"access_token":"access_token"`), (recording: string): string => recording.replace(/"refresh_token":"[^"]*"/g, `"refresh_token":"refresh_token"`), + (recording: string): string => + recording.replace(/refresh_token=[^&]*/g, `refresh_token=refresh_token`), (recording: string): string => recording.replace( /client-request-id=[a-z0-9-]*/g, @@ -72,7 +74,7 @@ export function msalNodeTestSetup( recording.replace(/device_code":"[^"]*/g, `device_code":"DEVICE_CODE`), (recording: string): string => recording.replace(/device_code=[^&]*/g, `device_code=DEVICE_CODE`), - (recording: string): string => recording.replace(/"interval": *[0-9]*/g, `"interval": 1`), + (recording: string): string => recording.replace(/"interval": *[0-9]*/g, `"interval": 0`), // This last part is a JWT token that comes from the service, that has three parts joined by a dot. // Our fake id_token has the following parts encoded in base64 and joined by a dot: // - {"typ":"JWT","alg":"RS256","kid":"kid"} @@ -82,6 +84,13 @@ export function msalNodeTestSetup( recording.replace( /id_token":"[^"]*/g, `id_token":"eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiIsImtpZCI6ImtpZCJ9.eyJhdWQiOiJhdWQiLCJpc3MiOiJodHRwczovL2xvZ2luLm1pY3Jvc29mdG9ubGluZS5jb20vMTIzNDU2NzgtMTIzNC0xMjM0LTEyMzQtMTIzNDU2Nzg5MDEyL3YyLjAiLCJpYXQiOjE2MTUzMzcxNjMsIm5iZiI6MTYxNTMzNzE2MywiZXhwIjoxNjE1MzQxMDYzLCJhaW8iOiJhaW8iLCJpZHAiOiJodHRwczovL3N0cy53aW5kb3dzLm5ldC9pZHAvIiwibmFtZSI6IkRhbmllbCBSb2Ryw61ndWV6Iiwib2lkIjoib2lkIiwicHJlZmVycmVkX3VzZXJuYW1lIjoiZGFucm9kcmlAbWljcm9zb2Z0LmNvbSIsInJoIjoicmguIiwic3ViIjoic3ViIiwidGlkIjoiMTIzNDU2NzgtMTIzNC0xMjM0LTEyMzQtMTIzNDU2Nzg5MDEyIiwidXRpIjoidXRpIiwidmVyIjoiMi4wIn0=.bm9faWRlYV93aGF0c190aGlz` + ), + // client_info is base64-encoded JSON that contains information about the user and tenant IDs + // The following replaces it with some dummy JSON that uses a UID/UTID of 12345678-1234-1234-1234-123456789012 + (recording) => + recording.replace( + /client_info":"[^"]*/g, + 'client_info":"eyJ1aWQiOiIxMjM0NTY3OC0xMjM0LTEyMzQtMTIzNC0xMjM0NTY3ODkwMTIiLCJ1dGlkIjoiMTIzNDU2NzgtMTIzNC0xMjM0LTEyMzQtMTIzNDU2Nzg5MDEyIn0K' ) ], queryParametersToSkip: [], @@ -136,7 +145,7 @@ export function testTracing(options: TestTracingOptions): () => Promise { ] }; - assert.deepStrictEqual(tracer.getSpanGraph(rootSpan.context().traceId), expectedGraph); + assert.deepStrictEqual(tracer.getSpanGraph(rootSpan.spanContext().traceId), expectedGraph); assert.strictEqual(tracer.getActiveSpans().length, 0, "All spans should have had end called"); }; } diff --git a/sdk/identity/identity/test/public/node/authorizationCodeCredential.spec.ts b/sdk/identity/identity/test/public/node/authorizationCodeCredential.spec.ts index e75a00150489..3ba5bebf0006 100644 --- a/sdk/identity/identity/test/public/node/authorizationCodeCredential.spec.ts +++ b/sdk/identity/identity/test/public/node/authorizationCodeCredential.spec.ts @@ -129,7 +129,7 @@ describe("AuthorizationCodeCredential", function() { ] }; - assert.deepStrictEqual(tracer.getSpanGraph(rootSpan.context().traceId), expectedGraph); + assert.deepStrictEqual(tracer.getSpanGraph(rootSpan.spanContext().traceId), expectedGraph); assert.strictEqual(tracer.getActiveSpans().length, 0, "All spans should have had end called"); }); }); diff --git a/sdk/identity/identity/test/public/node/extensions.spec.ts b/sdk/identity/identity/test/public/node/extensions.spec.ts new file mode 100644 index 000000000000..493a2eca1bb5 --- /dev/null +++ b/sdk/identity/identity/test/public/node/extensions.spec.ts @@ -0,0 +1,44 @@ +// Copyright (c) Microsoft Corporation. +// Licensed under the MIT license. + +import assert, { AssertionError } from "assert"; +import { DefaultAzureCredential } from "../../../src"; +import { VisualStudioCodeCredential } from "../../../src"; + +/** + * A helper to assert that a Promise rejects. + */ +async function assertRejects(p: Promise, regexp: RegExp): Promise { + try { + await p; + } catch (e) { + if (!regexp.test(e.message)) { + throw new AssertionError({ + message: `The input did not match the regular expression ${regexp}. Input:\n\n'${e.message}'` + }); + } + return; + } + throw new AssertionError({ + message: "Expected the function body to throw." + }); +} + +describe("Extension API", function(this: Mocha.Suite) { + it("Setting persistence options throws if not initialized", function() { + assert.throws(() => { + new DefaultAzureCredential({ + tokenCachePersistenceOptions: { + enabled: true + } + }); + }, /no persistence provider.*@azure\/identity-cache-persistence/); + }); + + it("Calling getToken on VisualStudioCodeCredential throws if not initialized", async function() { + await assertRejects( + new VisualStudioCodeCredential().getToken("https://graph.microsoft.com/.default"), + /No implementation of VisualStudioCodeCredential.*@azure\/identity-vscode/ + ); + }); +}); diff --git a/sdk/identity/perf-tests/identity/package.json b/sdk/identity/perf-tests/identity/package.json index 543a21ce6093..386004f64238 100644 --- a/sdk/identity/perf-tests/identity/package.json +++ b/sdk/identity/perf-tests/identity/package.json @@ -7,7 +7,8 @@ "author": "", "license": "ISC", "dependencies": { - "@azure/identity": "2.0.0-beta.4", + "@azure/identity": "^2.0.0-beta.4", + "@azure/identity-cache-persistence": "~1.0.0-beta.1", "@azure/test-utils-perfstress": "^1.0.0", "dotenv": "^8.2.0" }, diff --git a/sdk/identity/perf-tests/identity/test/ClientSecretCredential/persistence.spec.ts b/sdk/identity/perf-tests/identity/test/ClientSecretCredential/persistence.spec.ts index dc9e2551258e..14f0112f9a6f 100644 --- a/sdk/identity/perf-tests/identity/test/ClientSecretCredential/persistence.spec.ts +++ b/sdk/identity/perf-tests/identity/test/ClientSecretCredential/persistence.spec.ts @@ -1,15 +1,13 @@ import { PerfStressTest, getEnvVar } from "@azure/test-utils-perfstress"; -import { ClientSecretCredential } from "@azure/identity"; +import { useIdentityExtension, ClientSecretCredential } from "@azure/identity"; + +import { cachePersistenceExtension } from "@azure/identity-cache-persistence"; +useIdentityExtension(cachePersistenceExtension); const scope = `https://servicebus.azure.net/.default`; /** * This test does silent authentication with persistence enabled. - * - * TODO: This test was made unusable by removing the persistence - * feature from the mainline identity package. When we add an - * extension package to reintroduce that behavior, this test - * will be refactored to support that. */ export class ClientSecretCredentialPersistenceTest extends PerfStressTest { options = {}; @@ -23,10 +21,11 @@ export class ClientSecretCredentialPersistenceTest extends PerfStressTest { // We want this credential to be initialized only if this test is executed. // Other tests should not be required to set up this credential. const credential = new ClientSecretCredential(tenantId, clientId, clientSecret, { - /* tokenCachePersistenceOptions: { + tokenCachePersistenceOptions: { + enabled: true, name: "nodeTestSilent", allowUnencryptedStorage: true - }*/ + } }); // This getToken call will cache the token. @@ -36,6 +35,6 @@ export class ClientSecretCredentialPersistenceTest extends PerfStressTest { } async runAsync(): Promise { - // await ClientSecretCredentialPersistenceTest.credential.getToken(scope); + await ClientSecretCredentialPersistenceTest.credential.getToken(scope); } } diff --git a/sdk/keyvault/keyvault-admin/package.json b/sdk/keyvault/keyvault-admin/package.json index 63f9883025a3..88d457369a14 100644 --- a/sdk/keyvault/keyvault-admin/package.json +++ b/sdk/keyvault/keyvault-admin/package.json @@ -107,7 +107,7 @@ "@azure/core-http": "^1.2.0", "@azure/core-lro": "^1.0.2", "@azure/core-paging": "^1.1.1", - "@azure/core-tracing": "1.0.0-preview.11", + "@azure/core-tracing": "1.0.0-preview.12", "@azure/logger": "^1.0.0", "@types/uuid": "^8.0.0", "uuid": "^8.3.0", @@ -117,7 +117,7 @@ "@azure/abort-controller": "^1.0.0", "@azure/dev-tool": "^1.0.0", "@azure/eslint-plugin-azure-sdk": "^3.0.0", - "@azure/identity": "2.0.0-beta.3", + "@azure/identity": "2.0.0-beta.4", "@azure/keyvault-keys": "^4.2.1", "@azure/test-utils-recorder": "^1.0.0", "@microsoft/api-extractor": "7.7.11", diff --git a/sdk/keyvault/keyvault-certificates/package.json b/sdk/keyvault/keyvault-certificates/package.json index 1c4d58b221b0..2acd9b225cca 100644 --- a/sdk/keyvault/keyvault-certificates/package.json +++ b/sdk/keyvault/keyvault-certificates/package.json @@ -111,14 +111,14 @@ "@azure/core-http": "^1.2.0", "@azure/core-lro": "^1.0.2", "@azure/core-paging": "^1.1.1", - "@azure/core-tracing": "1.0.0-preview.11", + "@azure/core-tracing": "1.0.0-preview.12", "@azure/logger": "^1.0.0", "tslib": "^2.2.0" }, "devDependencies": { "@azure/dev-tool": "^1.0.0", "@azure/eslint-plugin-azure-sdk": "^3.0.0", - "@azure/identity": "2.0.0-beta.3", + "@azure/identity": "2.0.0-beta.4", "@azure/keyvault-secrets": "^4.2.0", "@azure/test-utils-recorder": "^1.0.0", "@microsoft/api-extractor": "7.7.11", diff --git a/sdk/keyvault/keyvault-common/package.json b/sdk/keyvault/keyvault-common/package.json index 9c6b59f2b15c..4f7d09eb6bc9 100644 --- a/sdk/keyvault/keyvault-common/package.json +++ b/sdk/keyvault/keyvault-common/package.json @@ -58,8 +58,8 @@ }, "dependencies": { "@azure/core-http": "^1.2.0", - "tslib": "^2.2.0", - "@azure/core-tracing": "1.0.0-preview.11" + "@azure/core-tracing": "1.0.0-preview.12", + "tslib": "^2.2.0" }, "devDependencies": { "@azure/eslint-plugin-azure-sdk": "^3.0.0", diff --git a/sdk/keyvault/keyvault-common/test/utils/supportsTracing.ts b/sdk/keyvault/keyvault-common/test/utils/supportsTracing.ts index da54ac21a98c..e3b3aa41f8af 100644 --- a/sdk/keyvault/keyvault-common/test/utils/supportsTracing.ts +++ b/sdk/keyvault/keyvault-common/test/utils/supportsTracing.ts @@ -34,7 +34,7 @@ export async function supportsTracing( // Ensure top-level children are created correctly. // Testing the entire tree structure can be tricky as other packages might create their own spans. - const spanGraph = tracer.getSpanGraph(rootSpan.context().traceId); + const spanGraph = tracer.getSpanGraph(rootSpan.spanContext().traceId); const directChildren = spanGraph.roots[0].children.map((child) => child.name); // LROs might poll N times, so we'll make a unique array and compare that. assert.sameMembers(Array.from(new Set(directChildren)), children); diff --git a/sdk/keyvault/keyvault-keys/package.json b/sdk/keyvault/keyvault-keys/package.json index 2c721ce3210a..01ca3b07569e 100644 --- a/sdk/keyvault/keyvault-keys/package.json +++ b/sdk/keyvault/keyvault-keys/package.json @@ -107,14 +107,14 @@ "@azure/core-http": "^1.2.0", "@azure/core-lro": "^1.0.2", "@azure/core-paging": "^1.1.1", - "@azure/core-tracing": "1.0.0-preview.11", + "@azure/core-tracing": "1.0.0-preview.12", "@azure/logger": "^1.0.0", "tslib": "^2.2.0" }, "devDependencies": { "@azure/dev-tool": "^1.0.0", "@azure/eslint-plugin-azure-sdk": "^3.0.0", - "@azure/identity": "2.0.0-beta.3", + "@azure/identity": "2.0.0-beta.4", "@azure/test-utils": "^1.0.0", "@azure/test-utils-recorder": "^1.0.0", "@microsoft/api-extractor": "7.7.11", diff --git a/sdk/keyvault/keyvault-keys/recordings/browsers/challenge_based_authentication_tests/recording_authentication_should_work_for_parallel_requests.json b/sdk/keyvault/keyvault-keys/recordings/browsers/challenge_based_authentication_tests/recording_authentication_should_work_for_parallel_requests.json index dcaadaaae913..3fc463b3d0f6 100644 --- a/sdk/keyvault/keyvault-keys/recordings/browsers/challenge_based_authentication_tests/recording_authentication_should_work_for_parallel_requests.json +++ b/sdk/keyvault/keyvault-keys/recordings/browsers/challenge_based_authentication_tests/recording_authentication_should_work_for_parallel_requests.json @@ -1,58 +1,58 @@ { "recordings": [ { - "method": "POST", - "url": "https://keyvault_name.vault.azure.net/keys/challengeAuthKeyName-Authenticationshouldworkforparallelrequests--0/create", + "method": "GET", + "url": "https://keyvault_name.vault.azure.net/keys", "query": { "api-version": "7.2" }, "requestBody": "", "status": 401, - "response": "{\"error\":{\"code\":\"Unauthorized\",\"message\":\"Request is missing a Bearer or PoP token.\"}}", + "response": "{\"error\":{\"code\":\"Unauthorized\",\"message\":\"AKV10000: Request is missing a Bearer or PoP token.\"}}", "responseHeaders": { "cache-control": "no-cache", - "content-length": "87", + "content-length": "97", "content-type": "application/json; charset=utf-8", - "date": "Wed, 28 Apr 2021 22:01:03 GMT", + "date": "Thu, 17 Jun 2021 22:28:57 GMT", "expires": "-1", "pragma": "no-cache", "status": "401", "strict-transport-security": "max-age=31536000;includeSubDomains", "www-authenticate": "Bearer authorization=\"https://login.windows.net/12345678-1234-1234-1234-123456789012\", resource=\"https://vault.azure.net\"", "x-content-type-options": "nosniff", - "x-ms-client-request-id": "c0d51578-0c0e-4fea-8c2e-47b694cdae8e", - "x-ms-keyvault-network-info": "conn_type=Ipv4;addr=72.68.182.20;act_addr_fam=InterNetwork;", + "x-ms-client-request-id": "ed067b2c-333e-42dd-a526-b1592bac0f5f", + "x-ms-keyvault-network-info": "conn_type=Ipv4;addr=50.35.231.105;act_addr_fam=InterNetwork;", "x-ms-keyvault-region": "westus2", - "x-ms-keyvault-service-version": "1.2.265.0", - "x-ms-request-id": "c3579639-4463-4be5-87af-5b73efc1bf44", + "x-ms-keyvault-service-version": "1.9.12.0", + "x-ms-request-id": "be104998-e1d5-4d79-8c40-33eaf62c5a12", "x-powered-by": "ASP.NET" } }, { - "method": "POST", - "url": "https://keyvault_name.vault.azure.net/keys/challengeAuthKeyName-Authenticationshouldworkforparallelrequests--1/create", + "method": "GET", + "url": "https://keyvault_name.vault.azure.net/keys", "query": { "api-version": "7.2" }, "requestBody": "", "status": 401, - "response": "{\"error\":{\"code\":\"Unauthorized\",\"message\":\"Request is missing a Bearer or PoP token.\"}}", + "response": "{\"error\":{\"code\":\"Unauthorized\",\"message\":\"AKV10000: Request is missing a Bearer or PoP token.\"}}", "responseHeaders": { "cache-control": "no-cache", - "content-length": "87", + "content-length": "97", "content-type": "application/json; charset=utf-8", - "date": "Wed, 28 Apr 2021 22:01:03 GMT", + "date": "Thu, 17 Jun 2021 22:28:57 GMT", "expires": "-1", "pragma": "no-cache", "status": "401", "strict-transport-security": "max-age=31536000;includeSubDomains", "www-authenticate": "Bearer authorization=\"https://login.windows.net/12345678-1234-1234-1234-123456789012\", resource=\"https://vault.azure.net\"", "x-content-type-options": "nosniff", - "x-ms-client-request-id": "cd0d0897-fafc-4a1d-baba-6d60657e3377", - "x-ms-keyvault-network-info": "conn_type=Ipv4;addr=72.68.182.20;act_addr_fam=InterNetwork;", + "x-ms-client-request-id": "68fb0167-aff6-487d-aa2f-a5d86b02abc1", + "x-ms-keyvault-network-info": "conn_type=Ipv4;addr=50.35.231.105;act_addr_fam=InterNetwork;", "x-ms-keyvault-region": "westus2", - "x-ms-keyvault-service-version": "1.2.265.0", - "x-ms-request-id": "0d946851-2aad-43b1-abbd-3820985a557a", + "x-ms-keyvault-service-version": "1.9.12.0", + "x-ms-request-id": "5738fba5-6936-4cad-a542-6b0fdaadab8d", "x-powered-by": "ASP.NET" } }, @@ -60,1150 +60,101 @@ "method": "POST", "url": "https://login.microsoftonline.com/12345678-1234-1234-1234-123456789012/oauth2/v2.0/token", "query": {}, - "requestBody": "response_type=token&grant_type=client_credentials&client_id=azure_client_id&client_secret=azure_client_secret&scope=https%3A%2F%2Fvault.azure.net%2F.default", + "requestBody": "response_type=token&grant_type=client_credentials&client_id=azure_client_id&client_secret=azure_client_secret&scope=https%3A%2F%2Fsanitized%2F", "status": 200, "response": "{\"token_type\":\"Bearer\",\"expires_in\":86399,\"ext_expires_in\":86399,\"access_token\":\"access_token\"}", "responseHeaders": { "cache-control": "no-store, no-cache", "content-length": "1315", "content-type": "application/json; charset=utf-8", - "date": "Wed, 28 Apr 2021 22:01:03 GMT", + "date": "Thu, 17 Jun 2021 22:28:58 GMT", "expires": "-1", "nel": "{\"report_to\":\"network-errors\",\"max_age\":86400,\"success_fraction\":0.001,\"failure_fraction\":1.0}", "p3p": "CP=\"DSP CUR OTPi IND OTRi ONL FIN\"", "pragma": "no-cache", "referrer-policy": "strict-origin-when-cross-origin", - "report-to": "{\"group\":\"network-errors\",\"max_age\":86400,\"endpoints\":[{\"url\":\"https://identity.nel.measure.office.net/api/report?catId=GW+estsfd+est\"}]}", + "report-to": "{\"group\":\"network-errors\",\"max_age\":86400,\"endpoints\":[{\"url\":\"https://identity.nel.measure.office.net/api/report?catId=GW+estsfd+san\"}]}", "strict-transport-security": "max-age=31536000; includeSubDomains", "x-content-type-options": "nosniff", - "x-ms-ests-server": "2.1.11654.16 - EUS ProdSlices", - "x-ms-request-id": "cda45f29-c2d1-4ffa-bcae-a62ba9635701" + "x-ms-ests-server": "2.1.11829.4 - SCUS ProdSlices", + "x-ms-request-id": "a867aa5c-ca07-4596-b271-331a3b58c200" } }, { "method": "POST", "url": "https://login.microsoftonline.com/12345678-1234-1234-1234-123456789012/oauth2/v2.0/token", "query": {}, - "requestBody": "response_type=token&grant_type=client_credentials&client_id=azure_client_id&client_secret=azure_client_secret&scope=https%3A%2F%2Fvault.azure.net%2F.default", + "requestBody": "response_type=token&grant_type=client_credentials&client_id=azure_client_id&client_secret=azure_client_secret&scope=https%3A%2F%2Fsanitized%2F", "status": 200, "response": "{\"token_type\":\"Bearer\",\"expires_in\":86399,\"ext_expires_in\":86399,\"access_token\":\"access_token\"}", "responseHeaders": { "cache-control": "no-store, no-cache", "content-length": "1315", "content-type": "application/json; charset=utf-8", - "date": "Wed, 28 Apr 2021 22:01:03 GMT", + "date": "Thu, 17 Jun 2021 22:28:57 GMT", "expires": "-1", "nel": "{\"report_to\":\"network-errors\",\"max_age\":86400,\"success_fraction\":0.001,\"failure_fraction\":1.0}", "p3p": "CP=\"DSP CUR OTPi IND OTRi ONL FIN\"", "pragma": "no-cache", "referrer-policy": "strict-origin-when-cross-origin", - "report-to": "{\"group\":\"network-errors\",\"max_age\":86400,\"endpoints\":[{\"url\":\"https://identity.nel.measure.office.net/api/report?catId=GW+estsfd+est\"}]}", + "report-to": "{\"group\":\"network-errors\",\"max_age\":86400,\"endpoints\":[{\"url\":\"https://identity.nel.measure.office.net/api/report?catId=GW+estsfd+san\"}]}", "strict-transport-security": "max-age=31536000; includeSubDomains", "x-content-type-options": "nosniff", - "x-ms-ests-server": "2.1.11654.16 - SCUS ProdSlices", - "x-ms-request-id": "bdddb7dd-f411-4f99-a419-89977f975901" - } - }, - { - "method": "POST", - "url": "https://keyvault_name.vault.azure.net/keys/challengeAuthKeyName-Authenticationshouldworkforparallelrequests--0/create", - "query": { - "api-version": "7.2" - }, - "requestBody": "{\"kty\":\"RSA\"}", - "status": 200, - "response": "{\"key\":{\"kid\":\"https://keyvault_name.vault.azure.net/keys/challengeAuthKeyName-Authenticationshouldworkforparallelrequests--0/2a51e751a9364664b6b99e56d9a9e6a7\",\"kty\":\"RSA\",\"key_ops\":[\"encrypt\",\"decrypt\",\"sign\",\"verify\",\"wrapKey\",\"unwrapKey\"],\"n\":\"17CjCeQS5w7j0cPRWtbsXk7qacwDREJJcv-1i-ZSW8Nv7YvTYvRak7F_BlC4ykpf9XGDzL62o0jD_1z6sMz9kvAPyWRZVGBZ9vcjn4Jj_yWnIwVfktWbC0-bkrt8NqG08c4zjpx6a_WNo1WAENsv_vT_aVgK00GtWxtG1NvTZ6Z18wOqZ9voP_v6-IqWOSaQgkR7-Z74ysKYTAdo4Hidt2NZALJyjYt5TGG9zEJpHOT3KiQ6tgj9zOjDiKJgrVHeSIIvu4M-Y9L0uU0_zRigZ3SI6WHlBoXuqfGQVdn5Bgppnt84fhhZ9We5QIi4kNhvBRk5G_-entPHwO1f0LjgGQ\",\"e\":\"AQAB\"},\"attributes\":{\"enabled\":true,\"created\":1619647263,\"updated\":1619647263,\"recoveryLevel\":\"CustomizedRecoverable+Purgeable\",\"recoverableDays\":7}}", - "responseHeaders": { - "cache-control": "no-cache", - "content-length": "758", - "content-type": "application/json; charset=utf-8", - "date": "Wed, 28 Apr 2021 22:01:03 GMT", - "expires": "-1", - "pragma": "no-cache", - "status": "200", - "strict-transport-security": "max-age=31536000;includeSubDomains", - "x-content-type-options": "nosniff", - "x-ms-client-request-id": "c0d51578-0c0e-4fea-8c2e-47b694cdae8e", - "x-ms-keyvault-network-info": "conn_type=Ipv4;addr=72.68.182.20;act_addr_fam=InterNetwork;", - "x-ms-keyvault-region": "westus2", - "x-ms-keyvault-service-version": "1.2.265.0", - "x-ms-request-id": "0314a6da-b304-44b5-8997-a7bbf57ba8b0", - "x-powered-by": "ASP.NET" - } - }, - { - "method": "POST", - "url": "https://keyvault_name.vault.azure.net/keys/challengeAuthKeyName-Authenticationshouldworkforparallelrequests--1/create", - "query": { - "api-version": "7.2" - }, - "requestBody": "{\"kty\":\"RSA\"}", - "status": 200, - "response": "{\"key\":{\"kid\":\"https://keyvault_name.vault.azure.net/keys/challengeAuthKeyName-Authenticationshouldworkforparallelrequests--1/5598cc80b3f447ff935cd2d739170b81\",\"kty\":\"RSA\",\"key_ops\":[\"encrypt\",\"decrypt\",\"sign\",\"verify\",\"wrapKey\",\"unwrapKey\"],\"n\":\"222WxmRX30FAas-1kMvpgIuTbG-cb_ESeM4ymftTtscpYARymQgd7taetTFB2aH4VHml2BKZtmuN72bdUWJd0ImkyrC06Ti6eV5X9lvs3DIbO7PwJzMEbHBIHFC2dl6uVeodD5d5SVYdecQL0UYyzkWgHeIrXV2f4Ka7-uYoTpjX_7bRMeDzO41ZQkZRkXNhy9FRDR3knWEewOx4OwiWukmiBhorr06GWvqhP2Hp9c3yaTio-UD3Ao_mwfhtqbj0cF68C-rYkDpFCYI5n1M4_B6-jyEGT_rfE9XdikWzxxmkz9SLiiu7TvTi2N7ZtLbrsAcFOc1IdWUnA7itwzsOyQ\",\"e\":\"AQAB\"},\"attributes\":{\"enabled\":true,\"created\":1619647264,\"updated\":1619647264,\"recoveryLevel\":\"CustomizedRecoverable+Purgeable\",\"recoverableDays\":7}}", - "responseHeaders": { - "cache-control": "no-cache", - "content-length": "758", - "content-type": "application/json; charset=utf-8", - "date": "Wed, 28 Apr 2021 22:01:03 GMT", - "expires": "-1", - "pragma": "no-cache", - "status": "200", - "strict-transport-security": "max-age=31536000;includeSubDomains", - "x-content-type-options": "nosniff", - "x-ms-client-request-id": "cd0d0897-fafc-4a1d-baba-6d60657e3377", - "x-ms-keyvault-network-info": "conn_type=Ipv4;addr=72.68.182.20;act_addr_fam=InterNetwork;", - "x-ms-keyvault-region": "westus2", - "x-ms-keyvault-service-version": "1.2.265.0", - "x-ms-request-id": "959e4090-e9de-467c-8c50-73f5d8387d36", - "x-powered-by": "ASP.NET" + "x-ms-ests-server": "2.1.11829.4 - WUS2 ProdSlices", + "x-ms-request-id": "b9509a54-3fe4-47e5-ae1b-42f173a37100" } }, { - "method": "DELETE", - "url": "https://keyvault_name.vault.azure.net/keys/challengeAuthKeyName-Authenticationshouldworkforparallelrequests--0", + "method": "GET", + "url": "https://keyvault_name.vault.azure.net/keys", "query": { "api-version": "7.2" }, "requestBody": null, "status": 200, - "response": "{\"recoveryId\":\"https://keyvault_name.vault.azure.net/deletedkeys/challengeAuthKeyName-Authenticationshouldworkforparallelrequests--0\",\"deletedDate\":1619647264,\"scheduledPurgeDate\":1620252064,\"key\":{\"kid\":\"https://keyvault_name.vault.azure.net/keys/challengeAuthKeyName-Authenticationshouldworkforparallelrequests--0/2a51e751a9364664b6b99e56d9a9e6a7\",\"kty\":\"RSA\",\"key_ops\":[\"encrypt\",\"decrypt\",\"sign\",\"verify\",\"wrapKey\",\"unwrapKey\"],\"n\":\"17CjCeQS5w7j0cPRWtbsXk7qacwDREJJcv-1i-ZSW8Nv7YvTYvRak7F_BlC4ykpf9XGDzL62o0jD_1z6sMz9kvAPyWRZVGBZ9vcjn4Jj_yWnIwVfktWbC0-bkrt8NqG08c4zjpx6a_WNo1WAENsv_vT_aVgK00GtWxtG1NvTZ6Z18wOqZ9voP_v6-IqWOSaQgkR7-Z74ysKYTAdo4Hidt2NZALJyjYt5TGG9zEJpHOT3KiQ6tgj9zOjDiKJgrVHeSIIvu4M-Y9L0uU0_zRigZ3SI6WHlBoXuqfGQVdn5Bgppnt84fhhZ9We5QIi4kNhvBRk5G_-entPHwO1f0LjgGQ\",\"e\":\"AQAB\"},\"attributes\":{\"enabled\":true,\"created\":1619647263,\"updated\":1619647263,\"recoveryLevel\":\"CustomizedRecoverable+Purgeable\",\"recoverableDays\":7}}", + "response": "{\"value\":[{\"kid\":\"https://keyvault_name.vault.azure.net/keys/challengeAuthKeyName-Authenticationshouldworkforparallelrequests-304369368630208-1\",\"attributes\":{\"enabled\":true,\"created\":1623967959,\"updated\":1623967959,\"recoveryLevel\":\"CustomizedRecoverable+Purgeable\",\"recoverableDays\":7}},{\"kid\":\"https://keyvault_name.vault.azure.net/keys/challengeAuthKeyName-Onceauthenticatednewrequestsshouldnotauthenticateagain-9173446555051745-1\",\"attributes\":{\"enabled\":true,\"created\":1623968785,\"updated\":1623968785,\"recoveryLevel\":\"CustomizedRecoverable+Purgeable\",\"recoverableDays\":7}}],\"nextLink\":null}", "responseHeaders": { "cache-control": "no-cache", - "content-length": "961", + "content-length": "585", "content-type": "application/json; charset=utf-8", - "date": "Wed, 28 Apr 2021 22:01:04 GMT", + "date": "Thu, 17 Jun 2021 22:28:58 GMT", "expires": "-1", "pragma": "no-cache", "status": "200", "strict-transport-security": "max-age=31536000;includeSubDomains", "x-content-type-options": "nosniff", - "x-ms-client-request-id": "31127ed4-e56b-45dc-b4ac-38bb88cb6228", - "x-ms-keyvault-network-info": "conn_type=Ipv4;addr=72.68.182.20;act_addr_fam=InterNetwork;", - "x-ms-keyvault-region": "westus2", - "x-ms-keyvault-service-version": "1.2.265.0", - "x-ms-request-id": "4411ff4f-1dbc-48ca-b3e1-b79ea639116c", - "x-powered-by": "ASP.NET" - } - }, - { - "method": "GET", - "url": "https://keyvault_name.vault.azure.net/deletedkeys/challengeAuthKeyName-Authenticationshouldworkforparallelrequests--0", - "query": { - "api-version": "7.2" - }, - "requestBody": null, - "status": 404, - "response": "{\"error\":{\"code\":\"KeyNotFound\",\"message\":\"Deleted Key not found: challengeAuthKeyName-Authenticationshouldworkforparallelrequests--0\"}}", - "responseHeaders": { - "cache-control": "no-cache", - "content-length": "151", - "content-type": "application/json; charset=utf-8", - "date": "Wed, 28 Apr 2021 22:01:04 GMT", - "expires": "-1", - "pragma": "no-cache", - "status": "404", - "strict-transport-security": "max-age=31536000;includeSubDomains", - "x-content-type-options": "nosniff", - "x-ms-client-request-id": "fcf24e5e-d00c-4ce9-8148-69e4b32521d4", - "x-ms-keyvault-network-info": "conn_type=Ipv4;addr=72.68.182.20;act_addr_fam=InterNetwork;", - "x-ms-keyvault-region": "westus2", - "x-ms-keyvault-service-version": "1.2.265.0", - "x-ms-request-id": "ab06c8eb-ba9e-491e-83ca-e8f2a162828c", - "x-powered-by": "ASP.NET" - } - }, - { - "method": "GET", - "url": "https://keyvault_name.vault.azure.net/deletedkeys/challengeAuthKeyName-Authenticationshouldworkforparallelrequests--0", - "query": { - "api-version": "7.2" - }, - "requestBody": null, - "status": 404, - "response": "{\"error\":{\"code\":\"KeyNotFound\",\"message\":\"Deleted Key not found: challengeAuthKeyName-Authenticationshouldworkforparallelrequests--0\"}}", - "responseHeaders": { - "cache-control": "no-cache", - "content-length": "151", - "content-type": "application/json; charset=utf-8", - "date": "Wed, 28 Apr 2021 22:01:04 GMT", - "expires": "-1", - "pragma": "no-cache", - "status": "404", - "strict-transport-security": "max-age=31536000;includeSubDomains", - "x-content-type-options": "nosniff", - "x-ms-client-request-id": "1f3b44ca-2800-4e0a-904d-e455a0c4562a", - "x-ms-keyvault-network-info": "conn_type=Ipv4;addr=72.68.182.20;act_addr_fam=InterNetwork;", - "x-ms-keyvault-region": "westus2", - "x-ms-keyvault-service-version": "1.2.265.0", - "x-ms-request-id": "84a4a74a-c5aa-4b4c-9943-9347357d502a", - "x-powered-by": "ASP.NET" - } - }, - { - "method": "GET", - "url": "https://keyvault_name.vault.azure.net/deletedkeys/challengeAuthKeyName-Authenticationshouldworkforparallelrequests--0", - "query": { - "api-version": "7.2" - }, - "requestBody": null, - "status": 404, - "response": "{\"error\":{\"code\":\"KeyNotFound\",\"message\":\"Deleted Key not found: challengeAuthKeyName-Authenticationshouldworkforparallelrequests--0\"}}", - "responseHeaders": { - "cache-control": "no-cache", - "content-length": "151", - "content-type": "application/json; charset=utf-8", - "date": "Wed, 28 Apr 2021 22:01:06 GMT", - "expires": "-1", - "pragma": "no-cache", - "status": "404", - "strict-transport-security": "max-age=31536000;includeSubDomains", - "x-content-type-options": "nosniff", - "x-ms-client-request-id": "19143b06-539f-418f-87b4-baf8c413c38a", - "x-ms-keyvault-network-info": "conn_type=Ipv4;addr=72.68.182.20;act_addr_fam=InterNetwork;", - "x-ms-keyvault-region": "westus2", - "x-ms-keyvault-service-version": "1.2.265.0", - "x-ms-request-id": "2ba25187-4fdb-4add-9d71-db6b6ad2c0e8", - "x-powered-by": "ASP.NET" - } - }, - { - "method": "GET", - "url": "https://keyvault_name.vault.azure.net/deletedkeys/challengeAuthKeyName-Authenticationshouldworkforparallelrequests--0", - "query": { - "api-version": "7.2" - }, - "requestBody": null, - "status": 404, - "response": "{\"error\":{\"code\":\"KeyNotFound\",\"message\":\"Deleted Key not found: challengeAuthKeyName-Authenticationshouldworkforparallelrequests--0\"}}", - "responseHeaders": { - "cache-control": "no-cache", - "content-length": "151", - "content-type": "application/json; charset=utf-8", - "date": "Wed, 28 Apr 2021 22:01:08 GMT", - "expires": "-1", - "pragma": "no-cache", - "status": "404", - "strict-transport-security": "max-age=31536000;includeSubDomains", - "x-content-type-options": "nosniff", - "x-ms-client-request-id": "407832d0-7f85-4aca-8abc-b7d2c4514822", - "x-ms-keyvault-network-info": "conn_type=Ipv4;addr=72.68.182.20;act_addr_fam=InterNetwork;", - "x-ms-keyvault-region": "westus2", - "x-ms-keyvault-service-version": "1.2.265.0", - "x-ms-request-id": "4e66945e-dd14-432b-bac0-e8ad615a2305", - "x-powered-by": "ASP.NET" - } - }, - { - "method": "GET", - "url": "https://keyvault_name.vault.azure.net/deletedkeys/challengeAuthKeyName-Authenticationshouldworkforparallelrequests--0", - "query": { - "api-version": "7.2" - }, - "requestBody": null, - "status": 404, - "response": "{\"error\":{\"code\":\"KeyNotFound\",\"message\":\"Deleted Key not found: challengeAuthKeyName-Authenticationshouldworkforparallelrequests--0\"}}", - "responseHeaders": { - "cache-control": "no-cache", - "content-length": "151", - "content-type": "application/json; charset=utf-8", - "date": "Wed, 28 Apr 2021 22:01:09 GMT", - "expires": "-1", - "pragma": "no-cache", - "status": "404", - "strict-transport-security": "max-age=31536000;includeSubDomains", - "x-content-type-options": "nosniff", - "x-ms-client-request-id": "f2042e92-d89f-473f-8f94-5ad50b8d3430", - "x-ms-keyvault-network-info": "conn_type=Ipv4;addr=72.68.182.20;act_addr_fam=InterNetwork;", - "x-ms-keyvault-region": "westus2", - "x-ms-keyvault-service-version": "1.2.265.0", - "x-ms-request-id": "8232c1fd-a874-4efb-a987-7eb603906eff", - "x-powered-by": "ASP.NET" - } - }, - { - "method": "GET", - "url": "https://keyvault_name.vault.azure.net/deletedkeys/challengeAuthKeyName-Authenticationshouldworkforparallelrequests--0", - "query": { - "api-version": "7.2" - }, - "requestBody": null, - "status": 404, - "response": "{\"error\":{\"code\":\"KeyNotFound\",\"message\":\"Deleted Key not found: challengeAuthKeyName-Authenticationshouldworkforparallelrequests--0\"}}", - "responseHeaders": { - "cache-control": "no-cache", - "content-length": "151", - "content-type": "application/json; charset=utf-8", - "date": "Wed, 28 Apr 2021 22:01:12 GMT", - "expires": "-1", - "pragma": "no-cache", - "status": "404", - "strict-transport-security": "max-age=31536000;includeSubDomains", - "x-content-type-options": "nosniff", - "x-ms-client-request-id": "67076461-271f-40be-9d15-ec9585fb715a", - "x-ms-keyvault-network-info": "conn_type=Ipv4;addr=72.68.182.20;act_addr_fam=InterNetwork;", - "x-ms-keyvault-region": "westus2", - "x-ms-keyvault-service-version": "1.2.265.0", - "x-ms-request-id": "91e55084-28ec-46d9-9542-0537b91ca186", - "x-powered-by": "ASP.NET" - } - }, - { - "method": "GET", - "url": "https://keyvault_name.vault.azure.net/deletedkeys/challengeAuthKeyName-Authenticationshouldworkforparallelrequests--0", - "query": { - "api-version": "7.2" - }, - "requestBody": null, - "status": 404, - "response": "{\"error\":{\"code\":\"KeyNotFound\",\"message\":\"Deleted Key not found: challengeAuthKeyName-Authenticationshouldworkforparallelrequests--0\"}}", - "responseHeaders": { - "cache-control": "no-cache", - "content-length": "151", - "content-type": "application/json; charset=utf-8", - "date": "Wed, 28 Apr 2021 22:01:14 GMT", - "expires": "-1", - "pragma": "no-cache", - "status": "404", - "strict-transport-security": "max-age=31536000;includeSubDomains", - "x-content-type-options": "nosniff", - "x-ms-client-request-id": "bf131e35-309f-44c2-8f8d-33632711c660", - "x-ms-keyvault-network-info": "conn_type=Ipv4;addr=72.68.182.20;act_addr_fam=InterNetwork;", - "x-ms-keyvault-region": "westus2", - "x-ms-keyvault-service-version": "1.2.265.0", - "x-ms-request-id": "f5a95e20-6485-44f4-bb28-7be03878feb1", - "x-powered-by": "ASP.NET" - } - }, - { - "method": "GET", - "url": "https://keyvault_name.vault.azure.net/deletedkeys/challengeAuthKeyName-Authenticationshouldworkforparallelrequests--0", - "query": { - "api-version": "7.2" - }, - "requestBody": null, - "status": 404, - "response": "{\"error\":{\"code\":\"KeyNotFound\",\"message\":\"Deleted Key not found: challengeAuthKeyName-Authenticationshouldworkforparallelrequests--0\"}}", - "responseHeaders": { - "cache-control": "no-cache", - "content-length": "151", - "content-type": "application/json; charset=utf-8", - "date": "Wed, 28 Apr 2021 22:01:16 GMT", - "expires": "-1", - "pragma": "no-cache", - "status": "404", - "strict-transport-security": "max-age=31536000;includeSubDomains", - "x-content-type-options": "nosniff", - "x-ms-client-request-id": "450adb61-d8e5-4e74-8f6d-d95d7eeb67ce", - "x-ms-keyvault-network-info": "conn_type=Ipv4;addr=72.68.182.20;act_addr_fam=InterNetwork;", - "x-ms-keyvault-region": "westus2", - "x-ms-keyvault-service-version": "1.2.265.0", - "x-ms-request-id": "ef66b383-5a9c-41bd-9703-83b5b164fd38", - "x-powered-by": "ASP.NET" - } - }, - { - "method": "GET", - "url": "https://keyvault_name.vault.azure.net/deletedkeys/challengeAuthKeyName-Authenticationshouldworkforparallelrequests--0", - "query": { - "api-version": "7.2" - }, - "requestBody": null, - "status": 404, - "response": "{\"error\":{\"code\":\"KeyNotFound\",\"message\":\"Deleted Key not found: challengeAuthKeyName-Authenticationshouldworkforparallelrequests--0\"}}", - "responseHeaders": { - "cache-control": "no-cache", - "content-length": "151", - "content-type": "application/json; charset=utf-8", - "date": "Wed, 28 Apr 2021 22:01:18 GMT", - "expires": "-1", - "pragma": "no-cache", - "status": "404", - "strict-transport-security": "max-age=31536000;includeSubDomains", - "x-content-type-options": "nosniff", - "x-ms-client-request-id": "ba247f25-1d61-4385-9372-f6637ff276ee", - "x-ms-keyvault-network-info": "conn_type=Ipv4;addr=72.68.182.20;act_addr_fam=InterNetwork;", - "x-ms-keyvault-region": "westus2", - "x-ms-keyvault-service-version": "1.2.265.0", - "x-ms-request-id": "ce6efdae-3f6a-4ad1-b478-3dfdc3a5b84d", - "x-powered-by": "ASP.NET" - } - }, - { - "method": "GET", - "url": "https://keyvault_name.vault.azure.net/deletedkeys/challengeAuthKeyName-Authenticationshouldworkforparallelrequests--0", - "query": { - "api-version": "7.2" - }, - "requestBody": null, - "status": 404, - "response": "{\"error\":{\"code\":\"KeyNotFound\",\"message\":\"Deleted Key not found: challengeAuthKeyName-Authenticationshouldworkforparallelrequests--0\"}}", - "responseHeaders": { - "cache-control": "no-cache", - "content-length": "151", - "content-type": "application/json; charset=utf-8", - "date": "Wed, 28 Apr 2021 22:01:20 GMT", - "expires": "-1", - "pragma": "no-cache", - "status": "404", - "strict-transport-security": "max-age=31536000;includeSubDomains", - "x-content-type-options": "nosniff", - "x-ms-client-request-id": "c906efa5-7e38-440d-9ff1-6edae3f9b1d5", - "x-ms-keyvault-network-info": "conn_type=Ipv4;addr=72.68.182.20;act_addr_fam=InterNetwork;", - "x-ms-keyvault-region": "westus2", - "x-ms-keyvault-service-version": "1.2.265.0", - "x-ms-request-id": "61b7b14c-bc62-4b35-8494-b088f9462bba", - "x-powered-by": "ASP.NET" - } - }, - { - "method": "GET", - "url": "https://keyvault_name.vault.azure.net/deletedkeys/challengeAuthKeyName-Authenticationshouldworkforparallelrequests--0", - "query": { - "api-version": "7.2" - }, - "requestBody": null, - "status": 404, - "response": "{\"error\":{\"code\":\"KeyNotFound\",\"message\":\"Deleted Key not found: challengeAuthKeyName-Authenticationshouldworkforparallelrequests--0\"}}", - "responseHeaders": { - "cache-control": "no-cache", - "content-length": "151", - "content-type": "application/json; charset=utf-8", - "date": "Wed, 28 Apr 2021 22:01:22 GMT", - "expires": "-1", - "pragma": "no-cache", - "status": "404", - "strict-transport-security": "max-age=31536000;includeSubDomains", - "x-content-type-options": "nosniff", - "x-ms-client-request-id": "02ae80ad-4f44-4830-8a7d-d92ef24c7ac8", - "x-ms-keyvault-network-info": "conn_type=Ipv4;addr=72.68.182.20;act_addr_fam=InterNetwork;", - "x-ms-keyvault-region": "westus2", - "x-ms-keyvault-service-version": "1.2.265.0", - "x-ms-request-id": "2d8ae957-e46d-4c70-bb8f-4a99b297fa6a", - "x-powered-by": "ASP.NET" - } - }, - { - "method": "GET", - "url": "https://keyvault_name.vault.azure.net/deletedkeys/challengeAuthKeyName-Authenticationshouldworkforparallelrequests--0", - "query": { - "api-version": "7.2" - }, - "requestBody": null, - "status": 404, - "response": "{\"error\":{\"code\":\"KeyNotFound\",\"message\":\"Deleted Key not found: challengeAuthKeyName-Authenticationshouldworkforparallelrequests--0\"}}", - "responseHeaders": { - "cache-control": "no-cache", - "content-length": "151", - "content-type": "application/json; charset=utf-8", - "date": "Wed, 28 Apr 2021 22:01:24 GMT", - "expires": "-1", - "pragma": "no-cache", - "status": "404", - "strict-transport-security": "max-age=31536000;includeSubDomains", - "x-content-type-options": "nosniff", - "x-ms-client-request-id": "56b3f498-4837-4d40-932e-679cb4fca533", - "x-ms-keyvault-network-info": "conn_type=Ipv4;addr=72.68.182.20;act_addr_fam=InterNetwork;", + "x-ms-client-request-id": "68fb0167-aff6-487d-aa2f-a5d86b02abc1", + "x-ms-keyvault-network-info": "conn_type=Ipv4;addr=50.35.231.105;act_addr_fam=InterNetwork;", "x-ms-keyvault-region": "westus2", - "x-ms-keyvault-service-version": "1.2.265.0", - "x-ms-request-id": "145b8a4e-da66-465c-a002-b2dc467ddb9d", + "x-ms-keyvault-service-version": "1.9.12.0", + "x-ms-request-id": "a784515e-27b5-4022-bbd9-5236aedb905b", "x-powered-by": "ASP.NET" } }, { "method": "GET", - "url": "https://keyvault_name.vault.azure.net/deletedkeys/challengeAuthKeyName-Authenticationshouldworkforparallelrequests--0", + "url": "https://keyvault_name.vault.azure.net/keys", "query": { "api-version": "7.2" }, "requestBody": null, - "status": 404, - "response": "{\"error\":{\"code\":\"KeyNotFound\",\"message\":\"Deleted Key not found: challengeAuthKeyName-Authenticationshouldworkforparallelrequests--0\"}}", + "status": 200, + "response": "{\"value\":[{\"kid\":\"https://keyvault_name.vault.azure.net/keys/challengeAuthKeyName-Authenticationshouldworkforparallelrequests-304369368630208-1\",\"attributes\":{\"enabled\":true,\"created\":1623967959,\"updated\":1623967959,\"recoveryLevel\":\"CustomizedRecoverable+Purgeable\",\"recoverableDays\":7}},{\"kid\":\"https://keyvault_name.vault.azure.net/keys/challengeAuthKeyName-Onceauthenticatednewrequestsshouldnotauthenticateagain-9173446555051745-1\",\"attributes\":{\"enabled\":true,\"created\":1623968785,\"updated\":1623968785,\"recoveryLevel\":\"CustomizedRecoverable+Purgeable\",\"recoverableDays\":7}}],\"nextLink\":null}", "responseHeaders": { "cache-control": "no-cache", - "content-length": "151", + "content-length": "585", "content-type": "application/json; charset=utf-8", - "date": "Wed, 28 Apr 2021 22:01:27 GMT", - "expires": "-1", - "pragma": "no-cache", - "status": "404", - "strict-transport-security": "max-age=31536000;includeSubDomains", - "x-content-type-options": "nosniff", - "x-ms-client-request-id": "70786cde-5e01-4fe0-ab61-e4ce6b91864a", - "x-ms-keyvault-network-info": "conn_type=Ipv4;addr=72.68.182.20;act_addr_fam=InterNetwork;", - "x-ms-keyvault-region": "westus2", - "x-ms-keyvault-service-version": "1.2.265.0", - "x-ms-request-id": "24d00040-4d0f-4fa2-a6f9-d93f80584ea0", - "x-powered-by": "ASP.NET" - } - }, - { - "method": "GET", - "url": "https://keyvault_name.vault.azure.net/deletedkeys/challengeAuthKeyName-Authenticationshouldworkforparallelrequests--0", - "query": { - "api-version": "7.2" - }, - "requestBody": null, - "status": 404, - "response": "{\"error\":{\"code\":\"KeyNotFound\",\"message\":\"Deleted Key not found: challengeAuthKeyName-Authenticationshouldworkforparallelrequests--0\"}}", - "responseHeaders": { - "cache-control": "no-cache", - "content-length": "151", - "content-type": "application/json; charset=utf-8", - "date": "Wed, 28 Apr 2021 22:01:29 GMT", - "expires": "-1", - "pragma": "no-cache", - "status": "404", - "strict-transport-security": "max-age=31536000;includeSubDomains", - "x-content-type-options": "nosniff", - "x-ms-client-request-id": "fd900836-1c3e-4d20-bf30-bd01223b43d7", - "x-ms-keyvault-network-info": "conn_type=Ipv4;addr=72.68.182.20;act_addr_fam=InterNetwork;", - "x-ms-keyvault-region": "westus2", - "x-ms-keyvault-service-version": "1.2.265.0", - "x-ms-request-id": "6530c539-a960-46e6-8351-3c922b0c7116", - "x-powered-by": "ASP.NET" - } - }, - { - "method": "GET", - "url": "https://keyvault_name.vault.azure.net/deletedkeys/challengeAuthKeyName-Authenticationshouldworkforparallelrequests--0", - "query": { - "api-version": "7.2" - }, - "requestBody": null, - "status": 404, - "response": "{\"error\":{\"code\":\"KeyNotFound\",\"message\":\"Deleted Key not found: challengeAuthKeyName-Authenticationshouldworkforparallelrequests--0\"}}", - "responseHeaders": { - "cache-control": "no-cache", - "content-length": "151", - "content-type": "application/json; charset=utf-8", - "date": "Wed, 28 Apr 2021 22:01:31 GMT", - "expires": "-1", - "pragma": "no-cache", - "status": "404", - "strict-transport-security": "max-age=31536000;includeSubDomains", - "x-content-type-options": "nosniff", - "x-ms-client-request-id": "0eaecff4-9c82-41a4-b8d8-4b50158f4058", - "x-ms-keyvault-network-info": "conn_type=Ipv4;addr=72.68.182.20;act_addr_fam=InterNetwork;", - "x-ms-keyvault-region": "westus2", - "x-ms-keyvault-service-version": "1.2.265.0", - "x-ms-request-id": "6a3d0b7d-54be-4057-8af4-ff7d36027679", - "x-powered-by": "ASP.NET" - } - }, - { - "method": "GET", - "url": "https://keyvault_name.vault.azure.net/deletedkeys/challengeAuthKeyName-Authenticationshouldworkforparallelrequests--0", - "query": { - "api-version": "7.2" - }, - "requestBody": null, - "status": 404, - "response": "{\"error\":{\"code\":\"KeyNotFound\",\"message\":\"Deleted Key not found: challengeAuthKeyName-Authenticationshouldworkforparallelrequests--0\"}}", - "responseHeaders": { - "cache-control": "no-cache", - "content-length": "151", - "content-type": "application/json; charset=utf-8", - "date": "Wed, 28 Apr 2021 22:01:33 GMT", - "expires": "-1", - "pragma": "no-cache", - "status": "404", - "strict-transport-security": "max-age=31536000;includeSubDomains", - "x-content-type-options": "nosniff", - "x-ms-client-request-id": "01083114-8452-4eab-8908-679c908229b5", - "x-ms-keyvault-network-info": "conn_type=Ipv4;addr=72.68.182.20;act_addr_fam=InterNetwork;", - "x-ms-keyvault-region": "westus2", - "x-ms-keyvault-service-version": "1.2.265.0", - "x-ms-request-id": "f37522ee-35cc-4deb-a4a6-c1b66efd12e4", - "x-powered-by": "ASP.NET" - } - }, - { - "method": "GET", - "url": "https://keyvault_name.vault.azure.net/deletedkeys/challengeAuthKeyName-Authenticationshouldworkforparallelrequests--0", - "query": { - "api-version": "7.2" - }, - "requestBody": null, - "status": 404, - "response": "{\"error\":{\"code\":\"KeyNotFound\",\"message\":\"Deleted Key not found: challengeAuthKeyName-Authenticationshouldworkforparallelrequests--0\"}}", - "responseHeaders": { - "cache-control": "no-cache", - "content-length": "151", - "content-type": "application/json; charset=utf-8", - "date": "Wed, 28 Apr 2021 22:01:35 GMT", - "expires": "-1", - "pragma": "no-cache", - "status": "404", - "strict-transport-security": "max-age=31536000;includeSubDomains", - "x-content-type-options": "nosniff", - "x-ms-client-request-id": "aa758474-3c1e-466e-a422-434d70fddd0a", - "x-ms-keyvault-network-info": "conn_type=Ipv4;addr=72.68.182.20;act_addr_fam=InterNetwork;", - "x-ms-keyvault-region": "westus2", - "x-ms-keyvault-service-version": "1.2.265.0", - "x-ms-request-id": "b7ec685d-18f5-4851-b429-0b54b333a160", - "x-powered-by": "ASP.NET" - } - }, - { - "method": "GET", - "url": "https://keyvault_name.vault.azure.net/deletedkeys/challengeAuthKeyName-Authenticationshouldworkforparallelrequests--0", - "query": { - "api-version": "7.2" - }, - "requestBody": null, - "status": 404, - "response": "{\"error\":{\"code\":\"KeyNotFound\",\"message\":\"Deleted Key not found: challengeAuthKeyName-Authenticationshouldworkforparallelrequests--0\"}}", - "responseHeaders": { - "cache-control": "no-cache", - "content-length": "151", - "content-type": "application/json; charset=utf-8", - "date": "Wed, 28 Apr 2021 22:01:37 GMT", - "expires": "-1", - "pragma": "no-cache", - "status": "404", - "strict-transport-security": "max-age=31536000;includeSubDomains", - "x-content-type-options": "nosniff", - "x-ms-client-request-id": "d41cd2b7-5a8b-47e7-8d10-d37e50fa584d", - "x-ms-keyvault-network-info": "conn_type=Ipv4;addr=72.68.182.20;act_addr_fam=InterNetwork;", - "x-ms-keyvault-region": "westus2", - "x-ms-keyvault-service-version": "1.2.265.0", - "x-ms-request-id": "c7dc33a6-143b-470d-9b8f-2807afe5b5fe", - "x-powered-by": "ASP.NET" - } - }, - { - "method": "GET", - "url": "https://keyvault_name.vault.azure.net/deletedkeys/challengeAuthKeyName-Authenticationshouldworkforparallelrequests--0", - "query": { - "api-version": "7.2" - }, - "requestBody": null, - "status": 404, - "response": "{\"error\":{\"code\":\"KeyNotFound\",\"message\":\"Deleted Key not found: challengeAuthKeyName-Authenticationshouldworkforparallelrequests--0\"}}", - "responseHeaders": { - "cache-control": "no-cache", - "content-length": "151", - "content-type": "application/json; charset=utf-8", - "date": "Wed, 28 Apr 2021 22:01:39 GMT", - "expires": "-1", - "pragma": "no-cache", - "status": "404", - "strict-transport-security": "max-age=31536000;includeSubDomains", - "x-content-type-options": "nosniff", - "x-ms-client-request-id": "66b4a33a-f41c-46f4-92b3-e003a6717309", - "x-ms-keyvault-network-info": "conn_type=Ipv4;addr=72.68.182.20;act_addr_fam=InterNetwork;", - "x-ms-keyvault-region": "westus2", - "x-ms-keyvault-service-version": "1.2.265.0", - "x-ms-request-id": "c36b499e-4117-4efb-8643-748f9e1f379a", - "x-powered-by": "ASP.NET" - } - }, - { - "method": "GET", - "url": "https://keyvault_name.vault.azure.net/deletedkeys/challengeAuthKeyName-Authenticationshouldworkforparallelrequests--0", - "query": { - "api-version": "7.2" - }, - "requestBody": null, - "status": 200, - "response": "{\"recoveryId\":\"https://keyvault_name.vault.azure.net/deletedkeys/challengeAuthKeyName-Authenticationshouldworkforparallelrequests--0\",\"deletedDate\":1619647264,\"scheduledPurgeDate\":1620252064,\"key\":{\"kid\":\"https://keyvault_name.vault.azure.net/keys/challengeAuthKeyName-Authenticationshouldworkforparallelrequests--0/2a51e751a9364664b6b99e56d9a9e6a7\",\"kty\":\"RSA\",\"key_ops\":[\"encrypt\",\"decrypt\",\"sign\",\"verify\",\"wrapKey\",\"unwrapKey\"],\"n\":\"17CjCeQS5w7j0cPRWtbsXk7qacwDREJJcv-1i-ZSW8Nv7YvTYvRak7F_BlC4ykpf9XGDzL62o0jD_1z6sMz9kvAPyWRZVGBZ9vcjn4Jj_yWnIwVfktWbC0-bkrt8NqG08c4zjpx6a_WNo1WAENsv_vT_aVgK00GtWxtG1NvTZ6Z18wOqZ9voP_v6-IqWOSaQgkR7-Z74ysKYTAdo4Hidt2NZALJyjYt5TGG9zEJpHOT3KiQ6tgj9zOjDiKJgrVHeSIIvu4M-Y9L0uU0_zRigZ3SI6WHlBoXuqfGQVdn5Bgppnt84fhhZ9We5QIi4kNhvBRk5G_-entPHwO1f0LjgGQ\",\"e\":\"AQAB\"},\"attributes\":{\"enabled\":true,\"created\":1619647263,\"updated\":1619647263,\"recoveryLevel\":\"CustomizedRecoverable+Purgeable\",\"recoverableDays\":7}}", - "responseHeaders": { - "cache-control": "no-cache", - "content-length": "961", - "content-type": "application/json; charset=utf-8", - "date": "Wed, 28 Apr 2021 22:01:42 GMT", - "expires": "-1", - "pragma": "no-cache", - "status": "200", - "strict-transport-security": "max-age=31536000;includeSubDomains", - "x-content-type-options": "nosniff", - "x-ms-client-request-id": "207626b3-d813-4866-8c37-2e767dd7bd41", - "x-ms-keyvault-network-info": "conn_type=Ipv4;addr=72.68.182.20;act_addr_fam=InterNetwork;", - "x-ms-keyvault-region": "westus2", - "x-ms-keyvault-service-version": "1.2.265.0", - "x-ms-request-id": "c4b9b0b4-35e9-4c26-9374-a310ececd74f", - "x-powered-by": "ASP.NET" - } - }, - { - "method": "DELETE", - "url": "https://keyvault_name.vault.azure.net/deletedkeys/challengeAuthKeyName-Authenticationshouldworkforparallelrequests--0", - "query": { - "api-version": "7.2" - }, - "requestBody": null, - "status": 204, - "response": "", - "responseHeaders": { - "cache-control": "no-cache", - "date": "Wed, 28 Apr 2021 22:01:42 GMT", - "expires": "-1", - "pragma": "no-cache", - "status": "204", - "strict-transport-security": "max-age=31536000;includeSubDomains", - "x-content-type-options": "nosniff", - "x-ms-client-request-id": "4804cd47-d6b6-408e-bd00-ef594e707077", - "x-ms-keyvault-network-info": "conn_type=Ipv4;addr=72.68.182.20;act_addr_fam=InterNetwork;", - "x-ms-keyvault-region": "westus2", - "x-ms-keyvault-service-version": "1.2.265.0", - "x-ms-request-id": "561bbb6d-8e01-4432-9663-26e1ce97be4c", - "x-powered-by": "ASP.NET" - } - }, - { - "method": "DELETE", - "url": "https://keyvault_name.vault.azure.net/keys/challengeAuthKeyName-Authenticationshouldworkforparallelrequests--1", - "query": { - "api-version": "7.2" - }, - "requestBody": null, - "status": 200, - "response": "{\"recoveryId\":\"https://keyvault_name.vault.azure.net/deletedkeys/challengeAuthKeyName-Authenticationshouldworkforparallelrequests--1\",\"deletedDate\":1619647302,\"scheduledPurgeDate\":1620252102,\"key\":{\"kid\":\"https://keyvault_name.vault.azure.net/keys/challengeAuthKeyName-Authenticationshouldworkforparallelrequests--1/5598cc80b3f447ff935cd2d739170b81\",\"kty\":\"RSA\",\"key_ops\":[\"encrypt\",\"decrypt\",\"sign\",\"verify\",\"wrapKey\",\"unwrapKey\"],\"n\":\"222WxmRX30FAas-1kMvpgIuTbG-cb_ESeM4ymftTtscpYARymQgd7taetTFB2aH4VHml2BKZtmuN72bdUWJd0ImkyrC06Ti6eV5X9lvs3DIbO7PwJzMEbHBIHFC2dl6uVeodD5d5SVYdecQL0UYyzkWgHeIrXV2f4Ka7-uYoTpjX_7bRMeDzO41ZQkZRkXNhy9FRDR3knWEewOx4OwiWukmiBhorr06GWvqhP2Hp9c3yaTio-UD3Ao_mwfhtqbj0cF68C-rYkDpFCYI5n1M4_B6-jyEGT_rfE9XdikWzxxmkz9SLiiu7TvTi2N7ZtLbrsAcFOc1IdWUnA7itwzsOyQ\",\"e\":\"AQAB\"},\"attributes\":{\"enabled\":true,\"created\":1619647264,\"updated\":1619647264,\"recoveryLevel\":\"CustomizedRecoverable+Purgeable\",\"recoverableDays\":7}}", - "responseHeaders": { - "cache-control": "no-cache", - "content-length": "961", - "content-type": "application/json; charset=utf-8", - "date": "Wed, 28 Apr 2021 22:01:42 GMT", + "date": "Thu, 17 Jun 2021 22:28:58 GMT", "expires": "-1", "pragma": "no-cache", "status": "200", "strict-transport-security": "max-age=31536000;includeSubDomains", "x-content-type-options": "nosniff", - "x-ms-client-request-id": "357e84c7-19f2-48db-a2fd-678dfd4d4d71", - "x-ms-keyvault-network-info": "conn_type=Ipv4;addr=72.68.182.20;act_addr_fam=InterNetwork;", - "x-ms-keyvault-region": "westus2", - "x-ms-keyvault-service-version": "1.2.265.0", - "x-ms-request-id": "69ebecc9-82c3-4e84-b803-8704fe3cbb8f", - "x-powered-by": "ASP.NET" - } - }, - { - "method": "GET", - "url": "https://keyvault_name.vault.azure.net/deletedkeys/challengeAuthKeyName-Authenticationshouldworkforparallelrequests--1", - "query": { - "api-version": "7.2" - }, - "requestBody": null, - "status": 404, - "response": "{\"error\":{\"code\":\"KeyNotFound\",\"message\":\"Deleted Key not found: challengeAuthKeyName-Authenticationshouldworkforparallelrequests--1\"}}", - "responseHeaders": { - "cache-control": "no-cache", - "content-length": "151", - "content-type": "application/json; charset=utf-8", - "date": "Wed, 28 Apr 2021 22:01:42 GMT", - "expires": "-1", - "pragma": "no-cache", - "status": "404", - "strict-transport-security": "max-age=31536000;includeSubDomains", - "x-content-type-options": "nosniff", - "x-ms-client-request-id": "c092cf7d-12f0-4f6b-878e-03a6e7f47c82", - "x-ms-keyvault-network-info": "conn_type=Ipv4;addr=72.68.182.20;act_addr_fam=InterNetwork;", - "x-ms-keyvault-region": "westus2", - "x-ms-keyvault-service-version": "1.2.265.0", - "x-ms-request-id": "6eb89a32-0ed7-4967-90b0-30dece334b13", - "x-powered-by": "ASP.NET" - } - }, - { - "method": "GET", - "url": "https://keyvault_name.vault.azure.net/deletedkeys/challengeAuthKeyName-Authenticationshouldworkforparallelrequests--1", - "query": { - "api-version": "7.2" - }, - "requestBody": null, - "status": 404, - "response": "{\"error\":{\"code\":\"KeyNotFound\",\"message\":\"Deleted Key not found: challengeAuthKeyName-Authenticationshouldworkforparallelrequests--1\"}}", - "responseHeaders": { - "cache-control": "no-cache", - "content-length": "151", - "content-type": "application/json; charset=utf-8", - "date": "Wed, 28 Apr 2021 22:01:43 GMT", - "expires": "-1", - "pragma": "no-cache", - "status": "404", - "strict-transport-security": "max-age=31536000;includeSubDomains", - "x-content-type-options": "nosniff", - "x-ms-client-request-id": "3998abdd-3c05-4332-8f0d-adbcb119f27f", - "x-ms-keyvault-network-info": "conn_type=Ipv4;addr=72.68.182.20;act_addr_fam=InterNetwork;", - "x-ms-keyvault-region": "westus2", - "x-ms-keyvault-service-version": "1.2.265.0", - "x-ms-request-id": "75faffbd-9838-4456-8166-e4f883d199dc", - "x-powered-by": "ASP.NET" - } - }, - { - "method": "GET", - "url": "https://keyvault_name.vault.azure.net/deletedkeys/challengeAuthKeyName-Authenticationshouldworkforparallelrequests--1", - "query": { - "api-version": "7.2" - }, - "requestBody": null, - "status": 404, - "response": "{\"error\":{\"code\":\"KeyNotFound\",\"message\":\"Deleted Key not found: challengeAuthKeyName-Authenticationshouldworkforparallelrequests--1\"}}", - "responseHeaders": { - "cache-control": "no-cache", - "content-length": "151", - "content-type": "application/json; charset=utf-8", - "date": "Wed, 28 Apr 2021 22:01:45 GMT", - "expires": "-1", - "pragma": "no-cache", - "status": "404", - "strict-transport-security": "max-age=31536000;includeSubDomains", - "x-content-type-options": "nosniff", - "x-ms-client-request-id": "35e1377e-99f0-4713-b48c-e016a95c66b7", - "x-ms-keyvault-network-info": "conn_type=Ipv4;addr=72.68.182.20;act_addr_fam=InterNetwork;", - "x-ms-keyvault-region": "westus2", - "x-ms-keyvault-service-version": "1.2.265.0", - "x-ms-request-id": "206328ee-17fb-4f5e-85f5-5133d9cd095f", - "x-powered-by": "ASP.NET" - } - }, - { - "method": "GET", - "url": "https://keyvault_name.vault.azure.net/deletedkeys/challengeAuthKeyName-Authenticationshouldworkforparallelrequests--1", - "query": { - "api-version": "7.2" - }, - "requestBody": null, - "status": 404, - "response": "{\"error\":{\"code\":\"KeyNotFound\",\"message\":\"Deleted Key not found: challengeAuthKeyName-Authenticationshouldworkforparallelrequests--1\"}}", - "responseHeaders": { - "cache-control": "no-cache", - "content-length": "151", - "content-type": "application/json; charset=utf-8", - "date": "Wed, 28 Apr 2021 22:01:47 GMT", - "expires": "-1", - "pragma": "no-cache", - "status": "404", - "strict-transport-security": "max-age=31536000;includeSubDomains", - "x-content-type-options": "nosniff", - "x-ms-client-request-id": "b3b7d199-b3f0-495b-bae5-2279c7c97ac8", - "x-ms-keyvault-network-info": "conn_type=Ipv4;addr=72.68.182.20;act_addr_fam=InterNetwork;", - "x-ms-keyvault-region": "westus2", - "x-ms-keyvault-service-version": "1.2.265.0", - "x-ms-request-id": "ff0c2d24-0c95-463f-9f50-7ced7c2e0313", - "x-powered-by": "ASP.NET" - } - }, - { - "method": "GET", - "url": "https://keyvault_name.vault.azure.net/deletedkeys/challengeAuthKeyName-Authenticationshouldworkforparallelrequests--1", - "query": { - "api-version": "7.2" - }, - "requestBody": null, - "status": 404, - "response": "{\"error\":{\"code\":\"KeyNotFound\",\"message\":\"Deleted Key not found: challengeAuthKeyName-Authenticationshouldworkforparallelrequests--1\"}}", - "responseHeaders": { - "cache-control": "no-cache", - "content-length": "151", - "content-type": "application/json; charset=utf-8", - "date": "Wed, 28 Apr 2021 22:01:49 GMT", - "expires": "-1", - "pragma": "no-cache", - "status": "404", - "strict-transport-security": "max-age=31536000;includeSubDomains", - "x-content-type-options": "nosniff", - "x-ms-client-request-id": "eeed7b20-56ed-4b9d-bd7a-d30c94e9fd79", - "x-ms-keyvault-network-info": "conn_type=Ipv4;addr=72.68.182.20;act_addr_fam=InterNetwork;", - "x-ms-keyvault-region": "westus2", - "x-ms-keyvault-service-version": "1.2.265.0", - "x-ms-request-id": "cead2980-1ab3-4399-8f8e-e67d4a659da5", - "x-powered-by": "ASP.NET" - } - }, - { - "method": "GET", - "url": "https://keyvault_name.vault.azure.net/deletedkeys/challengeAuthKeyName-Authenticationshouldworkforparallelrequests--1", - "query": { - "api-version": "7.2" - }, - "requestBody": null, - "status": 404, - "response": "{\"error\":{\"code\":\"KeyNotFound\",\"message\":\"Deleted Key not found: challengeAuthKeyName-Authenticationshouldworkforparallelrequests--1\"}}", - "responseHeaders": { - "cache-control": "no-cache", - "content-length": "151", - "content-type": "application/json; charset=utf-8", - "date": "Wed, 28 Apr 2021 22:01:51 GMT", - "expires": "-1", - "pragma": "no-cache", - "status": "404", - "strict-transport-security": "max-age=31536000;includeSubDomains", - "x-content-type-options": "nosniff", - "x-ms-client-request-id": "130896bc-6347-4469-8950-7099b9f0ea00", - "x-ms-keyvault-network-info": "conn_type=Ipv4;addr=72.68.182.20;act_addr_fam=InterNetwork;", - "x-ms-keyvault-region": "westus2", - "x-ms-keyvault-service-version": "1.2.265.0", - "x-ms-request-id": "47d08a2c-eb86-41cb-b93b-ca4006b96c4b", - "x-powered-by": "ASP.NET" - } - }, - { - "method": "GET", - "url": "https://keyvault_name.vault.azure.net/deletedkeys/challengeAuthKeyName-Authenticationshouldworkforparallelrequests--1", - "query": { - "api-version": "7.2" - }, - "requestBody": null, - "status": 404, - "response": "{\"error\":{\"code\":\"KeyNotFound\",\"message\":\"Deleted Key not found: challengeAuthKeyName-Authenticationshouldworkforparallelrequests--1\"}}", - "responseHeaders": { - "cache-control": "no-cache", - "content-length": "151", - "content-type": "application/json; charset=utf-8", - "date": "Wed, 28 Apr 2021 22:01:53 GMT", - "expires": "-1", - "pragma": "no-cache", - "status": "404", - "strict-transport-security": "max-age=31536000;includeSubDomains", - "x-content-type-options": "nosniff", - "x-ms-client-request-id": "80382463-7501-4593-bc6b-e67539c5ef5d", - "x-ms-keyvault-network-info": "conn_type=Ipv4;addr=72.68.182.20;act_addr_fam=InterNetwork;", - "x-ms-keyvault-region": "westus2", - "x-ms-keyvault-service-version": "1.2.265.0", - "x-ms-request-id": "c253da4c-1cc1-49b1-b481-8d4bf8a5420b", - "x-powered-by": "ASP.NET" - } - }, - { - "method": "GET", - "url": "https://keyvault_name.vault.azure.net/deletedkeys/challengeAuthKeyName-Authenticationshouldworkforparallelrequests--1", - "query": { - "api-version": "7.2" - }, - "requestBody": null, - "status": 404, - "response": "{\"error\":{\"code\":\"KeyNotFound\",\"message\":\"Deleted Key not found: challengeAuthKeyName-Authenticationshouldworkforparallelrequests--1\"}}", - "responseHeaders": { - "cache-control": "no-cache", - "content-length": "151", - "content-type": "application/json; charset=utf-8", - "date": "Wed, 28 Apr 2021 22:01:55 GMT", - "expires": "-1", - "pragma": "no-cache", - "status": "404", - "strict-transport-security": "max-age=31536000;includeSubDomains", - "x-content-type-options": "nosniff", - "x-ms-client-request-id": "a75e0f49-9e71-4aff-ae6a-26779ce94573", - "x-ms-keyvault-network-info": "conn_type=Ipv4;addr=72.68.182.20;act_addr_fam=InterNetwork;", - "x-ms-keyvault-region": "westus2", - "x-ms-keyvault-service-version": "1.2.265.0", - "x-ms-request-id": "05d3561d-03f2-4a16-9468-ab6a9ab1bfd5", - "x-powered-by": "ASP.NET" - } - }, - { - "method": "GET", - "url": "https://keyvault_name.vault.azure.net/deletedkeys/challengeAuthKeyName-Authenticationshouldworkforparallelrequests--1", - "query": { - "api-version": "7.2" - }, - "requestBody": null, - "status": 404, - "response": "{\"error\":{\"code\":\"KeyNotFound\",\"message\":\"Deleted Key not found: challengeAuthKeyName-Authenticationshouldworkforparallelrequests--1\"}}", - "responseHeaders": { - "cache-control": "no-cache", - "content-length": "151", - "content-type": "application/json; charset=utf-8", - "date": "Wed, 28 Apr 2021 22:01:57 GMT", - "expires": "-1", - "pragma": "no-cache", - "status": "404", - "strict-transport-security": "max-age=31536000;includeSubDomains", - "x-content-type-options": "nosniff", - "x-ms-client-request-id": "f06a7a64-5ae1-4a1e-bb33-6e4a15306881", - "x-ms-keyvault-network-info": "conn_type=Ipv4;addr=72.68.182.20;act_addr_fam=InterNetwork;", - "x-ms-keyvault-region": "westus2", - "x-ms-keyvault-service-version": "1.2.265.0", - "x-ms-request-id": "094d6e5f-a92c-46f6-9147-a3b0cc9a392e", - "x-powered-by": "ASP.NET" - } - }, - { - "method": "GET", - "url": "https://keyvault_name.vault.azure.net/deletedkeys/challengeAuthKeyName-Authenticationshouldworkforparallelrequests--1", - "query": { - "api-version": "7.2" - }, - "requestBody": null, - "status": 404, - "response": "{\"error\":{\"code\":\"KeyNotFound\",\"message\":\"Deleted Key not found: challengeAuthKeyName-Authenticationshouldworkforparallelrequests--1\"}}", - "responseHeaders": { - "cache-control": "no-cache", - "content-length": "151", - "content-type": "application/json; charset=utf-8", - "date": "Wed, 28 Apr 2021 22:01:59 GMT", - "expires": "-1", - "pragma": "no-cache", - "status": "404", - "strict-transport-security": "max-age=31536000;includeSubDomains", - "x-content-type-options": "nosniff", - "x-ms-client-request-id": "4a5a7ea3-3eda-4eab-80df-30a80624404f", - "x-ms-keyvault-network-info": "conn_type=Ipv4;addr=72.68.182.20;act_addr_fam=InterNetwork;", - "x-ms-keyvault-region": "westus2", - "x-ms-keyvault-service-version": "1.2.265.0", - "x-ms-request-id": "e82daaaa-568c-4bb4-9354-1144e3def318", - "x-powered-by": "ASP.NET" - } - }, - { - "method": "GET", - "url": "https://keyvault_name.vault.azure.net/deletedkeys/challengeAuthKeyName-Authenticationshouldworkforparallelrequests--1", - "query": { - "api-version": "7.2" - }, - "requestBody": null, - "status": 404, - "response": "{\"error\":{\"code\":\"KeyNotFound\",\"message\":\"Deleted Key not found: challengeAuthKeyName-Authenticationshouldworkforparallelrequests--1\"}}", - "responseHeaders": { - "cache-control": "no-cache", - "content-length": "151", - "content-type": "application/json; charset=utf-8", - "date": "Wed, 28 Apr 2021 22:02:01 GMT", - "expires": "-1", - "pragma": "no-cache", - "status": "404", - "strict-transport-security": "max-age=31536000;includeSubDomains", - "x-content-type-options": "nosniff", - "x-ms-client-request-id": "8d6f1a53-814b-4dce-8449-bbd8991e60eb", - "x-ms-keyvault-network-info": "conn_type=Ipv4;addr=72.68.182.20;act_addr_fam=InterNetwork;", - "x-ms-keyvault-region": "westus2", - "x-ms-keyvault-service-version": "1.2.265.0", - "x-ms-request-id": "b1c56830-805a-4e69-9c14-8330eb64612c", - "x-powered-by": "ASP.NET" - } - }, - { - "method": "GET", - "url": "https://keyvault_name.vault.azure.net/deletedkeys/challengeAuthKeyName-Authenticationshouldworkforparallelrequests--1", - "query": { - "api-version": "7.2" - }, - "requestBody": null, - "status": 404, - "response": "{\"error\":{\"code\":\"KeyNotFound\",\"message\":\"Deleted Key not found: challengeAuthKeyName-Authenticationshouldworkforparallelrequests--1\"}}", - "responseHeaders": { - "cache-control": "no-cache", - "content-length": "151", - "content-type": "application/json; charset=utf-8", - "date": "Wed, 28 Apr 2021 22:02:03 GMT", - "expires": "-1", - "pragma": "no-cache", - "status": "404", - "strict-transport-security": "max-age=31536000;includeSubDomains", - "x-content-type-options": "nosniff", - "x-ms-client-request-id": "e5a80f93-e193-40be-9fdb-717e2e6713ab", - "x-ms-keyvault-network-info": "conn_type=Ipv4;addr=72.68.182.20;act_addr_fam=InterNetwork;", - "x-ms-keyvault-region": "westus2", - "x-ms-keyvault-service-version": "1.2.265.0", - "x-ms-request-id": "a54cafe6-47e6-4a5b-b703-e6c4100cb5de", - "x-powered-by": "ASP.NET" - } - }, - { - "method": "GET", - "url": "https://keyvault_name.vault.azure.net/deletedkeys/challengeAuthKeyName-Authenticationshouldworkforparallelrequests--1", - "query": { - "api-version": "7.2" - }, - "requestBody": null, - "status": 404, - "response": "{\"error\":{\"code\":\"KeyNotFound\",\"message\":\"Deleted Key not found: challengeAuthKeyName-Authenticationshouldworkforparallelrequests--1\"}}", - "responseHeaders": { - "cache-control": "no-cache", - "content-length": "151", - "content-type": "application/json; charset=utf-8", - "date": "Wed, 28 Apr 2021 22:02:06 GMT", - "expires": "-1", - "pragma": "no-cache", - "status": "404", - "strict-transport-security": "max-age=31536000;includeSubDomains", - "x-content-type-options": "nosniff", - "x-ms-client-request-id": "db074074-d649-42e0-a6b1-b4742b7bce05", - "x-ms-keyvault-network-info": "conn_type=Ipv4;addr=72.68.182.20;act_addr_fam=InterNetwork;", - "x-ms-keyvault-region": "westus2", - "x-ms-keyvault-service-version": "1.2.265.0", - "x-ms-request-id": "4e633b57-12ec-4944-8995-0751f24b13a8", - "x-powered-by": "ASP.NET" - } - }, - { - "method": "GET", - "url": "https://keyvault_name.vault.azure.net/deletedkeys/challengeAuthKeyName-Authenticationshouldworkforparallelrequests--1", - "query": { - "api-version": "7.2" - }, - "requestBody": null, - "status": 404, - "response": "{\"error\":{\"code\":\"KeyNotFound\",\"message\":\"Deleted Key not found: challengeAuthKeyName-Authenticationshouldworkforparallelrequests--1\"}}", - "responseHeaders": { - "cache-control": "no-cache", - "content-length": "151", - "content-type": "application/json; charset=utf-8", - "date": "Wed, 28 Apr 2021 22:02:08 GMT", - "expires": "-1", - "pragma": "no-cache", - "status": "404", - "strict-transport-security": "max-age=31536000;includeSubDomains", - "x-content-type-options": "nosniff", - "x-ms-client-request-id": "dc3ad068-79d6-4358-8d0c-f532776e6a5c", - "x-ms-keyvault-network-info": "conn_type=Ipv4;addr=72.68.182.20;act_addr_fam=InterNetwork;", - "x-ms-keyvault-region": "westus2", - "x-ms-keyvault-service-version": "1.2.265.0", - "x-ms-request-id": "bf907fb4-89a2-4a12-986c-f1b49f38ac02", - "x-powered-by": "ASP.NET" - } - }, - { - "method": "GET", - "url": "https://keyvault_name.vault.azure.net/deletedkeys/challengeAuthKeyName-Authenticationshouldworkforparallelrequests--1", - "query": { - "api-version": "7.2" - }, - "requestBody": null, - "status": 200, - "response": "{\"recoveryId\":\"https://keyvault_name.vault.azure.net/deletedkeys/challengeAuthKeyName-Authenticationshouldworkforparallelrequests--1\",\"deletedDate\":1619647302,\"scheduledPurgeDate\":1620252102,\"key\":{\"kid\":\"https://keyvault_name.vault.azure.net/keys/challengeAuthKeyName-Authenticationshouldworkforparallelrequests--1/5598cc80b3f447ff935cd2d739170b81\",\"kty\":\"RSA\",\"key_ops\":[\"encrypt\",\"decrypt\",\"sign\",\"verify\",\"wrapKey\",\"unwrapKey\"],\"n\":\"222WxmRX30FAas-1kMvpgIuTbG-cb_ESeM4ymftTtscpYARymQgd7taetTFB2aH4VHml2BKZtmuN72bdUWJd0ImkyrC06Ti6eV5X9lvs3DIbO7PwJzMEbHBIHFC2dl6uVeodD5d5SVYdecQL0UYyzkWgHeIrXV2f4Ka7-uYoTpjX_7bRMeDzO41ZQkZRkXNhy9FRDR3knWEewOx4OwiWukmiBhorr06GWvqhP2Hp9c3yaTio-UD3Ao_mwfhtqbj0cF68C-rYkDpFCYI5n1M4_B6-jyEGT_rfE9XdikWzxxmkz9SLiiu7TvTi2N7ZtLbrsAcFOc1IdWUnA7itwzsOyQ\",\"e\":\"AQAB\"},\"attributes\":{\"enabled\":true,\"created\":1619647264,\"updated\":1619647264,\"recoveryLevel\":\"CustomizedRecoverable+Purgeable\",\"recoverableDays\":7}}", - "responseHeaders": { - "cache-control": "no-cache", - "content-length": "961", - "content-type": "application/json; charset=utf-8", - "date": "Wed, 28 Apr 2021 22:02:10 GMT", - "expires": "-1", - "pragma": "no-cache", - "status": "200", - "strict-transport-security": "max-age=31536000;includeSubDomains", - "x-content-type-options": "nosniff", - "x-ms-client-request-id": "5a261f42-3244-4da3-8bd1-cdd02bf4b07f", - "x-ms-keyvault-network-info": "conn_type=Ipv4;addr=72.68.182.20;act_addr_fam=InterNetwork;", - "x-ms-keyvault-region": "westus2", - "x-ms-keyvault-service-version": "1.2.265.0", - "x-ms-request-id": "a8476e86-f990-424d-b965-652d5e1e1801", - "x-powered-by": "ASP.NET" - } - }, - { - "method": "DELETE", - "url": "https://keyvault_name.vault.azure.net/deletedkeys/challengeAuthKeyName-Authenticationshouldworkforparallelrequests--1", - "query": { - "api-version": "7.2" - }, - "requestBody": null, - "status": 204, - "response": "", - "responseHeaders": { - "cache-control": "no-cache", - "date": "Wed, 28 Apr 2021 22:02:10 GMT", - "expires": "-1", - "pragma": "no-cache", - "status": "204", - "strict-transport-security": "max-age=31536000;includeSubDomains", - "x-content-type-options": "nosniff", - "x-ms-client-request-id": "1de935e9-bcce-4877-a996-8da89e0e9962", - "x-ms-keyvault-network-info": "conn_type=Ipv4;addr=72.68.182.20;act_addr_fam=InterNetwork;", + "x-ms-client-request-id": "ed067b2c-333e-42dd-a526-b1592bac0f5f", + "x-ms-keyvault-network-info": "conn_type=Ipv4;addr=50.35.231.105;act_addr_fam=InterNetwork;", "x-ms-keyvault-region": "westus2", - "x-ms-keyvault-service-version": "1.2.265.0", - "x-ms-request-id": "6dc1066d-3fde-46ab-945b-942b72d1d16f", + "x-ms-keyvault-service-version": "1.9.12.0", + "x-ms-request-id": "29782669-986b-484b-be52-2bc0a2882a7c", "x-powered-by": "ASP.NET" } } @@ -1212,5 +163,5 @@ "uniqueName": {}, "newDate": {} }, - "hash": "3941290142852679600642c5ff88e569" + "hash": "9c6eaed2ebe372dd12aa2b3b7d5155e9" } \ No newline at end of file diff --git a/sdk/keyvault/keyvault-keys/recordings/browsers/challenge_based_authentication_tests/recording_once_authenticated_new_requests_should_not_authenticate_again.json b/sdk/keyvault/keyvault-keys/recordings/browsers/challenge_based_authentication_tests/recording_once_authenticated_new_requests_should_not_authenticate_again.json index b7cb8df3054a..4138ace45287 100644 --- a/sdk/keyvault/keyvault-keys/recordings/browsers/challenge_based_authentication_tests/recording_once_authenticated_new_requests_should_not_authenticate_again.json +++ b/sdk/keyvault/keyvault-keys/recordings/browsers/challenge_based_authentication_tests/recording_once_authenticated_new_requests_should_not_authenticate_again.json @@ -1,30 +1,30 @@ { "recordings": [ { - "method": "POST", - "url": "https://keyvault_name.vault.azure.net/keys/challengeAuthKeyName-Onceauthenticatednewrequestsshouldnotauthenticateagain--0/create", + "method": "GET", + "url": "https://keyvault_name.vault.azure.net/deletedkeys", "query": { "api-version": "7.2" }, "requestBody": "", "status": 401, - "response": "{\"error\":{\"code\":\"Unauthorized\",\"message\":\"Request is missing a Bearer or PoP token.\"}}", + "response": "{\"error\":{\"code\":\"Unauthorized\",\"message\":\"AKV10000: Request is missing a Bearer or PoP token.\"}}", "responseHeaders": { "cache-control": "no-cache", - "content-length": "87", + "content-length": "97", "content-type": "application/json; charset=utf-8", - "date": "Wed, 28 Apr 2021 22:02:10 GMT", + "date": "Thu, 17 Jun 2021 22:28:58 GMT", "expires": "-1", "pragma": "no-cache", "status": "401", "strict-transport-security": "max-age=31536000;includeSubDomains", "www-authenticate": "Bearer authorization=\"https://login.windows.net/12345678-1234-1234-1234-123456789012\", resource=\"https://vault.azure.net\"", "x-content-type-options": "nosniff", - "x-ms-client-request-id": "c7bd4ba5-df11-4e36-9a1d-3fb3d5f831e6", - "x-ms-keyvault-network-info": "conn_type=Ipv4;addr=72.68.182.20;act_addr_fam=InterNetwork;", + "x-ms-client-request-id": "7736f559-035b-4ca4-b0c8-ac2fa40210ff", + "x-ms-keyvault-network-info": "conn_type=Ipv4;addr=50.35.231.105;act_addr_fam=InterNetwork;", "x-ms-keyvault-region": "westus2", - "x-ms-keyvault-service-version": "1.2.265.0", - "x-ms-request-id": "95ba86af-d8a3-4ffc-ad52-76f815ca1fa8", + "x-ms-keyvault-service-version": "1.9.12.0", + "x-ms-request-id": "d11e35f6-71da-459c-bed5-2ddb3a5fef14", "x-powered-by": "ASP.NET" } }, @@ -32,856 +32,77 @@ "method": "POST", "url": "https://login.microsoftonline.com/12345678-1234-1234-1234-123456789012/oauth2/v2.0/token", "query": {}, - "requestBody": "response_type=token&grant_type=client_credentials&client_id=azure_client_id&client_secret=azure_client_secret&scope=https%3A%2F%2Fvault.azure.net%2F.default", + "requestBody": "response_type=token&grant_type=client_credentials&client_id=azure_client_id&client_secret=azure_client_secret&scope=https%3A%2F%2Fsanitized%2F", "status": 200, "response": "{\"token_type\":\"Bearer\",\"expires_in\":86399,\"ext_expires_in\":86399,\"access_token\":\"access_token\"}", "responseHeaders": { "cache-control": "no-store, no-cache", "content-length": "1315", "content-type": "application/json; charset=utf-8", - "date": "Wed, 28 Apr 2021 22:02:10 GMT", + "date": "Thu, 17 Jun 2021 22:28:58 GMT", "expires": "-1", "nel": "{\"report_to\":\"network-errors\",\"max_age\":86400,\"success_fraction\":0.001,\"failure_fraction\":1.0}", "p3p": "CP=\"DSP CUR OTPi IND OTRi ONL FIN\"", "pragma": "no-cache", "referrer-policy": "strict-origin-when-cross-origin", - "report-to": "{\"group\":\"network-errors\",\"max_age\":86400,\"endpoints\":[{\"url\":\"https://identity.nel.measure.office.net/api/report?catId=GW+estsfd+est\"}]}", + "report-to": "{\"group\":\"network-errors\",\"max_age\":86400,\"endpoints\":[{\"url\":\"https://identity.nel.measure.office.net/api/report?catId=GW+estsfd+san\"}]}", "strict-transport-security": "max-age=31536000; includeSubDomains", "x-content-type-options": "nosniff", - "x-ms-ests-server": "2.1.11654.16 - SCUS ProdSlices", - "x-ms-request-id": "bdddb7dd-f411-4f99-a419-89976da45901" - } - }, - { - "method": "POST", - "url": "https://keyvault_name.vault.azure.net/keys/challengeAuthKeyName-Onceauthenticatednewrequestsshouldnotauthenticateagain--0/create", - "query": { - "api-version": "7.2" - }, - "requestBody": "{\"kty\":\"RSA\"}", - "status": 200, - "response": "{\"key\":{\"kid\":\"https://keyvault_name.vault.azure.net/keys/challengeAuthKeyName-Onceauthenticatednewrequestsshouldnotauthenticateagain--0/099f65d16ee64e11b9d659cda5c344dc\",\"kty\":\"RSA\",\"key_ops\":[\"encrypt\",\"decrypt\",\"sign\",\"verify\",\"wrapKey\",\"unwrapKey\"],\"n\":\"tlhyOCWLeGj0v5gONw5eBIxMV5ET9mYJkl_T4J2jv4D6ikKgmIF0FKwFGTn7fpO5RxYMrfEXeD8mekyvpBYhpGG1Oq6ZEZnorft-vD7tYavUyiseC0-O0-RCFczgGlMSqN6TuhQH0lv3k8kP7zmJpflklkJ7L5qM9M-8IqBeQEbf_VY4pAz3B98EDyfViVaNZXBBKUBSODvjKgdFS16h5NuCmeay9v42X5VYwPfr1JYZmvCg7Q3IcoZGKaQTBDfMmoJ915AjoDbBWPknVTlJ4Av1My6f-cRUHQZXiFgBF1fHEAg2F57-L9yEHdl4zffs7zIdTfCHXlgUTCcO9_fipQ\",\"e\":\"AQAB\"},\"attributes\":{\"enabled\":true,\"created\":1619647331,\"updated\":1619647331,\"recoveryLevel\":\"CustomizedRecoverable+Purgeable\",\"recoverableDays\":7}}", - "responseHeaders": { - "cache-control": "no-cache", - "content-length": "770", - "content-type": "application/json; charset=utf-8", - "date": "Wed, 28 Apr 2021 22:02:11 GMT", - "expires": "-1", - "pragma": "no-cache", - "status": "200", - "strict-transport-security": "max-age=31536000;includeSubDomains", - "x-content-type-options": "nosniff", - "x-ms-client-request-id": "c7bd4ba5-df11-4e36-9a1d-3fb3d5f831e6", - "x-ms-keyvault-network-info": "conn_type=Ipv4;addr=72.68.182.20;act_addr_fam=InterNetwork;", - "x-ms-keyvault-region": "westus2", - "x-ms-keyvault-service-version": "1.2.265.0", - "x-ms-request-id": "5de64f54-b35d-47ec-95ee-f54fe03b5715", - "x-powered-by": "ASP.NET" - } - }, - { - "method": "POST", - "url": "https://keyvault_name.vault.azure.net/keys/challengeAuthKeyName-Onceauthenticatednewrequestsshouldnotauthenticateagain--1/create", - "query": { - "api-version": "7.2" - }, - "requestBody": "{\"kty\":\"RSA\"}", - "status": 200, - "response": "{\"key\":{\"kid\":\"https://keyvault_name.vault.azure.net/keys/challengeAuthKeyName-Onceauthenticatednewrequestsshouldnotauthenticateagain--1/ae4a4d7025954fbd892bf029c273a2a1\",\"kty\":\"RSA\",\"key_ops\":[\"encrypt\",\"decrypt\",\"sign\",\"verify\",\"wrapKey\",\"unwrapKey\"],\"n\":\"uuQ9R-hMobBcWPzHZ-g5rE_GYmh7pmIwA9ltnlncwENos6oAeuudbLu_pDB80-2TbAZpsmBGmntDAcwd-uKcnH08tsu9Y2uJCGZP-B9h8HtRfOOX1yYXxYHl-bBOZx2wYK4Padf8KDpFpW6estsFfDWnnThNBe7j7nxFr5K4HmXlo5RNHYgXpJSLWw2mer7AYaJ6UqSxsTZlGVjA69iHV5VxkIA2D3GezlV8hUs3dKpG96IPCLqFrmehifdsArfyFi0bBI5VAYImTPAj65EeSyd9qx9rCt7r7XW61rcQ2-x2OCSFNMtMUAlsG25_ApmJjzVwy-KHO6W2TfdqU4z04Q\",\"e\":\"AQAB\"},\"attributes\":{\"enabled\":true,\"created\":1619647331,\"updated\":1619647331,\"recoveryLevel\":\"CustomizedRecoverable+Purgeable\",\"recoverableDays\":7}}", - "responseHeaders": { - "cache-control": "no-cache", - "content-length": "770", - "content-type": "application/json; charset=utf-8", - "date": "Wed, 28 Apr 2021 22:02:11 GMT", - "expires": "-1", - "pragma": "no-cache", - "status": "200", - "strict-transport-security": "max-age=31536000;includeSubDomains", - "x-content-type-options": "nosniff", - "x-ms-client-request-id": "6c517f63-01b1-4643-9aa6-7739dd37c7df", - "x-ms-keyvault-network-info": "conn_type=Ipv4;addr=72.68.182.20;act_addr_fam=InterNetwork;", - "x-ms-keyvault-region": "westus2", - "x-ms-keyvault-service-version": "1.2.265.0", - "x-ms-request-id": "7eff579c-4c34-4448-8c1e-2823743f04c5", - "x-powered-by": "ASP.NET" - } - }, - { - "method": "DELETE", - "url": "https://keyvault_name.vault.azure.net/keys/challengeAuthKeyName-Onceauthenticatednewrequestsshouldnotauthenticateagain--0", - "query": { - "api-version": "7.2" - }, - "requestBody": null, - "status": 200, - "response": "{\"recoveryId\":\"https://keyvault_name.vault.azure.net/deletedkeys/challengeAuthKeyName-Onceauthenticatednewrequestsshouldnotauthenticateagain--0\",\"deletedDate\":1619647331,\"scheduledPurgeDate\":1620252131,\"key\":{\"kid\":\"https://keyvault_name.vault.azure.net/keys/challengeAuthKeyName-Onceauthenticatednewrequestsshouldnotauthenticateagain--0/099f65d16ee64e11b9d659cda5c344dc\",\"kty\":\"RSA\",\"key_ops\":[\"encrypt\",\"decrypt\",\"sign\",\"verify\",\"wrapKey\",\"unwrapKey\"],\"n\":\"tlhyOCWLeGj0v5gONw5eBIxMV5ET9mYJkl_T4J2jv4D6ikKgmIF0FKwFGTn7fpO5RxYMrfEXeD8mekyvpBYhpGG1Oq6ZEZnorft-vD7tYavUyiseC0-O0-RCFczgGlMSqN6TuhQH0lv3k8kP7zmJpflklkJ7L5qM9M-8IqBeQEbf_VY4pAz3B98EDyfViVaNZXBBKUBSODvjKgdFS16h5NuCmeay9v42X5VYwPfr1JYZmvCg7Q3IcoZGKaQTBDfMmoJ915AjoDbBWPknVTlJ4Av1My6f-cRUHQZXiFgBF1fHEAg2F57-L9yEHdl4zffs7zIdTfCHXlgUTCcO9_fipQ\",\"e\":\"AQAB\"},\"attributes\":{\"enabled\":true,\"created\":1619647331,\"updated\":1619647331,\"recoveryLevel\":\"CustomizedRecoverable+Purgeable\",\"recoverableDays\":7}}", - "responseHeaders": { - "cache-control": "no-cache", - "content-length": "985", - "content-type": "application/json; charset=utf-8", - "date": "Wed, 28 Apr 2021 22:02:11 GMT", - "expires": "-1", - "pragma": "no-cache", - "status": "200", - "strict-transport-security": "max-age=31536000;includeSubDomains", - "x-content-type-options": "nosniff", - "x-ms-client-request-id": "b73f8df9-0e11-4185-9ac7-0f798fd764b4", - "x-ms-keyvault-network-info": "conn_type=Ipv4;addr=72.68.182.20;act_addr_fam=InterNetwork;", - "x-ms-keyvault-region": "westus2", - "x-ms-keyvault-service-version": "1.2.265.0", - "x-ms-request-id": "46241eeb-eb00-44e9-847b-ef11e83b9c4f", - "x-powered-by": "ASP.NET" - } - }, - { - "method": "GET", - "url": "https://keyvault_name.vault.azure.net/deletedkeys/challengeAuthKeyName-Onceauthenticatednewrequestsshouldnotauthenticateagain--0", - "query": { - "api-version": "7.2" - }, - "requestBody": null, - "status": 404, - "response": "{\"error\":{\"code\":\"KeyNotFound\",\"message\":\"Deleted Key not found: challengeAuthKeyName-Onceauthenticatednewrequestsshouldnotauthenticateagain--0\"}}", - "responseHeaders": { - "cache-control": "no-cache", - "content-length": "163", - "content-type": "application/json; charset=utf-8", - "date": "Wed, 28 Apr 2021 22:02:11 GMT", - "expires": "-1", - "pragma": "no-cache", - "status": "404", - "strict-transport-security": "max-age=31536000;includeSubDomains", - "x-content-type-options": "nosniff", - "x-ms-client-request-id": "69ee483a-d3c6-4882-bcbc-2d06a1d6276b", - "x-ms-keyvault-network-info": "conn_type=Ipv4;addr=72.68.182.20;act_addr_fam=InterNetwork;", - "x-ms-keyvault-region": "westus2", - "x-ms-keyvault-service-version": "1.2.265.0", - "x-ms-request-id": "baa4eec7-df3c-4748-a160-547e286e530b", - "x-powered-by": "ASP.NET" - } - }, - { - "method": "GET", - "url": "https://keyvault_name.vault.azure.net/deletedkeys/challengeAuthKeyName-Onceauthenticatednewrequestsshouldnotauthenticateagain--0", - "query": { - "api-version": "7.2" - }, - "requestBody": null, - "status": 404, - "response": "{\"error\":{\"code\":\"KeyNotFound\",\"message\":\"Deleted Key not found: challengeAuthKeyName-Onceauthenticatednewrequestsshouldnotauthenticateagain--0\"}}", - "responseHeaders": { - "cache-control": "no-cache", - "content-length": "163", - "content-type": "application/json; charset=utf-8", - "date": "Wed, 28 Apr 2021 22:02:11 GMT", - "expires": "-1", - "pragma": "no-cache", - "status": "404", - "strict-transport-security": "max-age=31536000;includeSubDomains", - "x-content-type-options": "nosniff", - "x-ms-client-request-id": "fa29b38b-553f-48e6-85e4-99f624a6fee3", - "x-ms-keyvault-network-info": "conn_type=Ipv4;addr=72.68.182.20;act_addr_fam=InterNetwork;", - "x-ms-keyvault-region": "westus2", - "x-ms-keyvault-service-version": "1.2.265.0", - "x-ms-request-id": "1320f074-eac2-4020-bda6-6be2b7a812a8", - "x-powered-by": "ASP.NET" - } - }, - { - "method": "GET", - "url": "https://keyvault_name.vault.azure.net/deletedkeys/challengeAuthKeyName-Onceauthenticatednewrequestsshouldnotauthenticateagain--0", - "query": { - "api-version": "7.2" - }, - "requestBody": null, - "status": 404, - "response": "{\"error\":{\"code\":\"KeyNotFound\",\"message\":\"Deleted Key not found: challengeAuthKeyName-Onceauthenticatednewrequestsshouldnotauthenticateagain--0\"}}", - "responseHeaders": { - "cache-control": "no-cache", - "content-length": "163", - "content-type": "application/json; charset=utf-8", - "date": "Wed, 28 Apr 2021 22:02:13 GMT", - "expires": "-1", - "pragma": "no-cache", - "status": "404", - "strict-transport-security": "max-age=31536000;includeSubDomains", - "x-content-type-options": "nosniff", - "x-ms-client-request-id": "3e7b2930-8c41-4581-be9f-cf1d4817bd3e", - "x-ms-keyvault-network-info": "conn_type=Ipv4;addr=72.68.182.20;act_addr_fam=InterNetwork;", - "x-ms-keyvault-region": "westus2", - "x-ms-keyvault-service-version": "1.2.265.0", - "x-ms-request-id": "00afe1cf-547e-48c9-b19d-303d57f4db34", - "x-powered-by": "ASP.NET" - } - }, - { - "method": "GET", - "url": "https://keyvault_name.vault.azure.net/deletedkeys/challengeAuthKeyName-Onceauthenticatednewrequestsshouldnotauthenticateagain--0", - "query": { - "api-version": "7.2" - }, - "requestBody": null, - "status": 404, - "response": "{\"error\":{\"code\":\"KeyNotFound\",\"message\":\"Deleted Key not found: challengeAuthKeyName-Onceauthenticatednewrequestsshouldnotauthenticateagain--0\"}}", - "responseHeaders": { - "cache-control": "no-cache", - "content-length": "163", - "content-type": "application/json; charset=utf-8", - "date": "Wed, 28 Apr 2021 22:02:15 GMT", - "expires": "-1", - "pragma": "no-cache", - "status": "404", - "strict-transport-security": "max-age=31536000;includeSubDomains", - "x-content-type-options": "nosniff", - "x-ms-client-request-id": "3dc33c0d-2b09-4f0d-9c5a-d4a6986c0bbc", - "x-ms-keyvault-network-info": "conn_type=Ipv4;addr=72.68.182.20;act_addr_fam=InterNetwork;", - "x-ms-keyvault-region": "westus2", - "x-ms-keyvault-service-version": "1.2.265.0", - "x-ms-request-id": "902307e4-52e2-4b5c-b98a-c37c4a6a1c79", - "x-powered-by": "ASP.NET" - } - }, - { - "method": "GET", - "url": "https://keyvault_name.vault.azure.net/deletedkeys/challengeAuthKeyName-Onceauthenticatednewrequestsshouldnotauthenticateagain--0", - "query": { - "api-version": "7.2" - }, - "requestBody": null, - "status": 404, - "response": "{\"error\":{\"code\":\"KeyNotFound\",\"message\":\"Deleted Key not found: challengeAuthKeyName-Onceauthenticatednewrequestsshouldnotauthenticateagain--0\"}}", - "responseHeaders": { - "cache-control": "no-cache", - "content-length": "163", - "content-type": "application/json; charset=utf-8", - "date": "Wed, 28 Apr 2021 22:02:17 GMT", - "expires": "-1", - "pragma": "no-cache", - "status": "404", - "strict-transport-security": "max-age=31536000;includeSubDomains", - "x-content-type-options": "nosniff", - "x-ms-client-request-id": "659638fd-2f9b-4912-b595-67edb68cf279", - "x-ms-keyvault-network-info": "conn_type=Ipv4;addr=72.68.182.20;act_addr_fam=InterNetwork;", - "x-ms-keyvault-region": "westus2", - "x-ms-keyvault-service-version": "1.2.265.0", - "x-ms-request-id": "524d049b-38ff-4aad-b31f-945d754524cf", - "x-powered-by": "ASP.NET" - } - }, - { - "method": "GET", - "url": "https://keyvault_name.vault.azure.net/deletedkeys/challengeAuthKeyName-Onceauthenticatednewrequestsshouldnotauthenticateagain--0", - "query": { - "api-version": "7.2" - }, - "requestBody": null, - "status": 404, - "response": "{\"error\":{\"code\":\"KeyNotFound\",\"message\":\"Deleted Key not found: challengeAuthKeyName-Onceauthenticatednewrequestsshouldnotauthenticateagain--0\"}}", - "responseHeaders": { - "cache-control": "no-cache", - "content-length": "163", - "content-type": "application/json; charset=utf-8", - "date": "Wed, 28 Apr 2021 22:02:19 GMT", - "expires": "-1", - "pragma": "no-cache", - "status": "404", - "strict-transport-security": "max-age=31536000;includeSubDomains", - "x-content-type-options": "nosniff", - "x-ms-client-request-id": "0bfeaa65-507d-4b5b-847d-6d1862ae1951", - "x-ms-keyvault-network-info": "conn_type=Ipv4;addr=72.68.182.20;act_addr_fam=InterNetwork;", - "x-ms-keyvault-region": "westus2", - "x-ms-keyvault-service-version": "1.2.265.0", - "x-ms-request-id": "a1423cc1-e77d-4c6e-8cfa-9cbce38e4a6a", - "x-powered-by": "ASP.NET" - } - }, - { - "method": "GET", - "url": "https://keyvault_name.vault.azure.net/deletedkeys/challengeAuthKeyName-Onceauthenticatednewrequestsshouldnotauthenticateagain--0", - "query": { - "api-version": "7.2" - }, - "requestBody": null, - "status": 404, - "response": "{\"error\":{\"code\":\"KeyNotFound\",\"message\":\"Deleted Key not found: challengeAuthKeyName-Onceauthenticatednewrequestsshouldnotauthenticateagain--0\"}}", - "responseHeaders": { - "cache-control": "no-cache", - "content-length": "163", - "content-type": "application/json; charset=utf-8", - "date": "Wed, 28 Apr 2021 22:02:22 GMT", - "expires": "-1", - "pragma": "no-cache", - "status": "404", - "strict-transport-security": "max-age=31536000;includeSubDomains", - "x-content-type-options": "nosniff", - "x-ms-client-request-id": "b448b28f-faba-4f08-abed-82e910e0c48b", - "x-ms-keyvault-network-info": "conn_type=Ipv4;addr=72.68.182.20;act_addr_fam=InterNetwork;", - "x-ms-keyvault-region": "westus2", - "x-ms-keyvault-service-version": "1.2.265.0", - "x-ms-request-id": "7d18e02c-762d-4d8d-af5b-7cb7f36a8d71", - "x-powered-by": "ASP.NET" - } - }, - { - "method": "GET", - "url": "https://keyvault_name.vault.azure.net/deletedkeys/challengeAuthKeyName-Onceauthenticatednewrequestsshouldnotauthenticateagain--0", - "query": { - "api-version": "7.2" - }, - "requestBody": null, - "status": 404, - "response": "{\"error\":{\"code\":\"KeyNotFound\",\"message\":\"Deleted Key not found: challengeAuthKeyName-Onceauthenticatednewrequestsshouldnotauthenticateagain--0\"}}", - "responseHeaders": { - "cache-control": "no-cache", - "content-length": "163", - "content-type": "application/json; charset=utf-8", - "date": "Wed, 28 Apr 2021 22:02:24 GMT", - "expires": "-1", - "pragma": "no-cache", - "status": "404", - "strict-transport-security": "max-age=31536000;includeSubDomains", - "x-content-type-options": "nosniff", - "x-ms-client-request-id": "65ad86ca-9567-45fe-9938-d2227b55df02", - "x-ms-keyvault-network-info": "conn_type=Ipv4;addr=72.68.182.20;act_addr_fam=InterNetwork;", - "x-ms-keyvault-region": "westus2", - "x-ms-keyvault-service-version": "1.2.265.0", - "x-ms-request-id": "18f0f54d-060c-43ad-be52-680eb5ababc7", - "x-powered-by": "ASP.NET" - } - }, - { - "method": "GET", - "url": "https://keyvault_name.vault.azure.net/deletedkeys/challengeAuthKeyName-Onceauthenticatednewrequestsshouldnotauthenticateagain--0", - "query": { - "api-version": "7.2" - }, - "requestBody": null, - "status": 404, - "response": "{\"error\":{\"code\":\"KeyNotFound\",\"message\":\"Deleted Key not found: challengeAuthKeyName-Onceauthenticatednewrequestsshouldnotauthenticateagain--0\"}}", - "responseHeaders": { - "cache-control": "no-cache", - "content-length": "163", - "content-type": "application/json; charset=utf-8", - "date": "Wed, 28 Apr 2021 22:02:26 GMT", - "expires": "-1", - "pragma": "no-cache", - "status": "404", - "strict-transport-security": "max-age=31536000;includeSubDomains", - "x-content-type-options": "nosniff", - "x-ms-client-request-id": "f606b777-0ab9-40a4-b241-5ca534b48ab8", - "x-ms-keyvault-network-info": "conn_type=Ipv4;addr=72.68.182.20;act_addr_fam=InterNetwork;", - "x-ms-keyvault-region": "westus2", - "x-ms-keyvault-service-version": "1.2.265.0", - "x-ms-request-id": "1a394739-bce7-4518-b284-85afeba82e9f", - "x-powered-by": "ASP.NET" - } - }, - { - "method": "GET", - "url": "https://keyvault_name.vault.azure.net/deletedkeys/challengeAuthKeyName-Onceauthenticatednewrequestsshouldnotauthenticateagain--0", - "query": { - "api-version": "7.2" - }, - "requestBody": null, - "status": 404, - "response": "{\"error\":{\"code\":\"KeyNotFound\",\"message\":\"Deleted Key not found: challengeAuthKeyName-Onceauthenticatednewrequestsshouldnotauthenticateagain--0\"}}", - "responseHeaders": { - "cache-control": "no-cache", - "content-length": "163", - "content-type": "application/json; charset=utf-8", - "date": "Wed, 28 Apr 2021 22:02:28 GMT", - "expires": "-1", - "pragma": "no-cache", - "status": "404", - "strict-transport-security": "max-age=31536000;includeSubDomains", - "x-content-type-options": "nosniff", - "x-ms-client-request-id": "d1abd6e9-c805-4931-a1ee-4f0a9d97c748", - "x-ms-keyvault-network-info": "conn_type=Ipv4;addr=72.68.182.20;act_addr_fam=InterNetwork;", - "x-ms-keyvault-region": "westus2", - "x-ms-keyvault-service-version": "1.2.265.0", - "x-ms-request-id": "1ef6b3de-6e14-48f7-965e-9171be98c935", - "x-powered-by": "ASP.NET" + "x-ms-ests-server": "2.1.11829.4 - WUS2 ProdSlices", + "x-ms-request-id": "823a5ee1-ec9f-4230-9b62-25d78e285300" } }, { "method": "GET", - "url": "https://keyvault_name.vault.azure.net/deletedkeys/challengeAuthKeyName-Onceauthenticatednewrequestsshouldnotauthenticateagain--0", - "query": { - "api-version": "7.2" - }, - "requestBody": null, - "status": 404, - "response": "{\"error\":{\"code\":\"KeyNotFound\",\"message\":\"Deleted Key not found: challengeAuthKeyName-Onceauthenticatednewrequestsshouldnotauthenticateagain--0\"}}", - "responseHeaders": { - "cache-control": "no-cache", - "content-length": "163", - "content-type": "application/json; charset=utf-8", - "date": "Wed, 28 Apr 2021 22:02:30 GMT", - "expires": "-1", - "pragma": "no-cache", - "status": "404", - "strict-transport-security": "max-age=31536000;includeSubDomains", - "x-content-type-options": "nosniff", - "x-ms-client-request-id": "564f5e2b-b7bd-43c2-9963-b1c12d8e9766", - "x-ms-keyvault-network-info": "conn_type=Ipv4;addr=72.68.182.20;act_addr_fam=InterNetwork;", - "x-ms-keyvault-region": "westus2", - "x-ms-keyvault-service-version": "1.2.265.0", - "x-ms-request-id": "87e71aac-1d47-4a42-973c-51a0bcf82c06", - "x-powered-by": "ASP.NET" - } - }, - { - "method": "GET", - "url": "https://keyvault_name.vault.azure.net/deletedkeys/challengeAuthKeyName-Onceauthenticatednewrequestsshouldnotauthenticateagain--0", + "url": "https://keyvault_name.vault.azure.net/deletedkeys", "query": { "api-version": "7.2" }, "requestBody": null, "status": 200, - "response": "{\"recoveryId\":\"https://keyvault_name.vault.azure.net/deletedkeys/challengeAuthKeyName-Onceauthenticatednewrequestsshouldnotauthenticateagain--0\",\"deletedDate\":1619647331,\"scheduledPurgeDate\":1620252131,\"key\":{\"kid\":\"https://keyvault_name.vault.azure.net/keys/challengeAuthKeyName-Onceauthenticatednewrequestsshouldnotauthenticateagain--0/099f65d16ee64e11b9d659cda5c344dc\",\"kty\":\"RSA\",\"key_ops\":[\"encrypt\",\"decrypt\",\"sign\",\"verify\",\"wrapKey\",\"unwrapKey\"],\"n\":\"tlhyOCWLeGj0v5gONw5eBIxMV5ET9mYJkl_T4J2jv4D6ikKgmIF0FKwFGTn7fpO5RxYMrfEXeD8mekyvpBYhpGG1Oq6ZEZnorft-vD7tYavUyiseC0-O0-RCFczgGlMSqN6TuhQH0lv3k8kP7zmJpflklkJ7L5qM9M-8IqBeQEbf_VY4pAz3B98EDyfViVaNZXBBKUBSODvjKgdFS16h5NuCmeay9v42X5VYwPfr1JYZmvCg7Q3IcoZGKaQTBDfMmoJ915AjoDbBWPknVTlJ4Av1My6f-cRUHQZXiFgBF1fHEAg2F57-L9yEHdl4zffs7zIdTfCHXlgUTCcO9_fipQ\",\"e\":\"AQAB\"},\"attributes\":{\"enabled\":true,\"created\":1619647331,\"updated\":1619647331,\"recoveryLevel\":\"CustomizedRecoverable+Purgeable\",\"recoverableDays\":7}}", + "response": "{\"value\":[{\"recoveryId\":\"https://keyvault_name.vault.azure.net/deletedkeys/challengeAuthKeyName-Authenticationshouldworkforparallelrequests-018489891015560644-1\",\"deletedDate\":1623968152,\"scheduledPurgeDate\":1624572952,\"kid\":\"https://keyvault_name.vault.azure.net/keys/challengeAuthKeyName-Authenticationshouldworkforparallelrequests-018489891015560644-1\",\"attributes\":{\"enabled\":true,\"created\":1623968038,\"updated\":1623968038,\"recoveryLevel\":\"CustomizedRecoverable+Purgeable\",\"recoverableDays\":7}},{\"recoveryId\":\"https://keyvault_name.vault.azure.net/deletedkeys/challengeAuthKeyName-Authenticationshouldworkforparallelrequests-24685237550245565-1\",\"deletedDate\":1623967880,\"scheduledPurgeDate\":1624572680,\"kid\":\"https://keyvault_name.vault.azure.net/keys/challengeAuthKeyName-Authenticationshouldworkforparallelrequests-24685237550245565-1\",\"attributes\":{\"enabled\":true,\"created\":1623967755,\"updated\":1623967755,\"recoveryLevel\":\"CustomizedRecoverable+Purgeable\",\"recoverableDays\":7}},{\"recoveryId\":\"https://keyvault_name.vault.azure.net/deletedkeys/challengeAuthKeyName-Authenticationshouldworkforparallelrequests-304369368630208-0\",\"deletedDate\":1623967959,\"scheduledPurgeDate\":1624572759,\"kid\":\"https://keyvault_name.vault.azure.net/keys/challengeAuthKeyName-Authenticationshouldworkforparallelrequests-304369368630208-0\",\"attributes\":{\"enabled\":true,\"created\":1623967959,\"updated\":1623967959,\"recoveryLevel\":\"CustomizedRecoverable+Purgeable\",\"recoverableDays\":7}},{\"recoveryId\":\"https://keyvault_name.vault.azure.net/deletedkeys/challengeAuthKeyName-Onceauthenticatednewrequestsshouldnotauthenticateagain-9173446555051745-0\",\"deletedDate\":1623968786,\"scheduledPurgeDate\":1624573586,\"kid\":\"https://keyvault_name.vault.azure.net/keys/challengeAuthKeyName-Onceauthenticatednewrequestsshouldnotauthenticateagain-9173446555051745-0\",\"attributes\":{\"enabled\":true,\"created\":1623968785,\"updated\":1623968785,\"recoveryLevel\":\"CustomizedRecoverable+Purgeable\",\"recoverableDays\":7}}],\"nextLink\":null}", "responseHeaders": { "cache-control": "no-cache", - "content-length": "985", + "content-length": "1953", "content-type": "application/json; charset=utf-8", - "date": "Wed, 28 Apr 2021 22:02:32 GMT", + "date": "Thu, 17 Jun 2021 22:28:58 GMT", "expires": "-1", "pragma": "no-cache", "status": "200", "strict-transport-security": "max-age=31536000;includeSubDomains", "x-content-type-options": "nosniff", - "x-ms-client-request-id": "4bfb0ee0-75d7-48d0-a94a-05c91675f944", - "x-ms-keyvault-network-info": "conn_type=Ipv4;addr=72.68.182.20;act_addr_fam=InterNetwork;", + "x-ms-client-request-id": "7736f559-035b-4ca4-b0c8-ac2fa40210ff", + "x-ms-keyvault-network-info": "conn_type=Ipv4;addr=50.35.231.105;act_addr_fam=InterNetwork;", "x-ms-keyvault-region": "westus2", - "x-ms-keyvault-service-version": "1.2.265.0", - "x-ms-request-id": "a7d0c270-2902-478f-b541-ac457a82ef27", - "x-powered-by": "ASP.NET" - } - }, - { - "method": "DELETE", - "url": "https://keyvault_name.vault.azure.net/deletedkeys/challengeAuthKeyName-Onceauthenticatednewrequestsshouldnotauthenticateagain--0", - "query": { - "api-version": "7.2" - }, - "requestBody": null, - "status": 204, - "response": "", - "responseHeaders": { - "cache-control": "no-cache", - "date": "Wed, 28 Apr 2021 22:02:32 GMT", - "expires": "-1", - "pragma": "no-cache", - "status": "204", - "strict-transport-security": "max-age=31536000;includeSubDomains", - "x-content-type-options": "nosniff", - "x-ms-client-request-id": "5252ec4b-45ce-485f-a12f-a50765d3d4a4", - "x-ms-keyvault-network-info": "conn_type=Ipv4;addr=72.68.182.20;act_addr_fam=InterNetwork;", - "x-ms-keyvault-region": "westus2", - "x-ms-keyvault-service-version": "1.2.265.0", - "x-ms-request-id": "efc92669-c8a8-4b89-82cc-132b2b497a51", - "x-powered-by": "ASP.NET" - } - }, - { - "method": "DELETE", - "url": "https://keyvault_name.vault.azure.net/keys/challengeAuthKeyName-Onceauthenticatednewrequestsshouldnotauthenticateagain--1", - "query": { - "api-version": "7.2" - }, - "requestBody": null, - "status": 200, - "response": "{\"recoveryId\":\"https://keyvault_name.vault.azure.net/deletedkeys/challengeAuthKeyName-Onceauthenticatednewrequestsshouldnotauthenticateagain--1\",\"deletedDate\":1619647353,\"scheduledPurgeDate\":1620252153,\"key\":{\"kid\":\"https://keyvault_name.vault.azure.net/keys/challengeAuthKeyName-Onceauthenticatednewrequestsshouldnotauthenticateagain--1/ae4a4d7025954fbd892bf029c273a2a1\",\"kty\":\"RSA\",\"key_ops\":[\"encrypt\",\"decrypt\",\"sign\",\"verify\",\"wrapKey\",\"unwrapKey\"],\"n\":\"uuQ9R-hMobBcWPzHZ-g5rE_GYmh7pmIwA9ltnlncwENos6oAeuudbLu_pDB80-2TbAZpsmBGmntDAcwd-uKcnH08tsu9Y2uJCGZP-B9h8HtRfOOX1yYXxYHl-bBOZx2wYK4Padf8KDpFpW6estsFfDWnnThNBe7j7nxFr5K4HmXlo5RNHYgXpJSLWw2mer7AYaJ6UqSxsTZlGVjA69iHV5VxkIA2D3GezlV8hUs3dKpG96IPCLqFrmehifdsArfyFi0bBI5VAYImTPAj65EeSyd9qx9rCt7r7XW61rcQ2-x2OCSFNMtMUAlsG25_ApmJjzVwy-KHO6W2TfdqU4z04Q\",\"e\":\"AQAB\"},\"attributes\":{\"enabled\":true,\"created\":1619647331,\"updated\":1619647331,\"recoveryLevel\":\"CustomizedRecoverable+Purgeable\",\"recoverableDays\":7}}", - "responseHeaders": { - "cache-control": "no-cache", - "content-length": "985", - "content-type": "application/json; charset=utf-8", - "date": "Wed, 28 Apr 2021 22:02:33 GMT", - "expires": "-1", - "pragma": "no-cache", - "status": "200", - "strict-transport-security": "max-age=31536000;includeSubDomains", - "x-content-type-options": "nosniff", - "x-ms-client-request-id": "f7699cec-dd07-4ae7-9706-945e08048f69", - "x-ms-keyvault-network-info": "conn_type=Ipv4;addr=72.68.182.20;act_addr_fam=InterNetwork;", - "x-ms-keyvault-region": "westus2", - "x-ms-keyvault-service-version": "1.2.265.0", - "x-ms-request-id": "c051414e-c53d-41e7-b7d5-943cb14406a2", - "x-powered-by": "ASP.NET" - } - }, - { - "method": "GET", - "url": "https://keyvault_name.vault.azure.net/deletedkeys/challengeAuthKeyName-Onceauthenticatednewrequestsshouldnotauthenticateagain--1", - "query": { - "api-version": "7.2" - }, - "requestBody": null, - "status": 404, - "response": "{\"error\":{\"code\":\"KeyNotFound\",\"message\":\"Deleted Key not found: challengeAuthKeyName-Onceauthenticatednewrequestsshouldnotauthenticateagain--1\"}}", - "responseHeaders": { - "cache-control": "no-cache", - "content-length": "163", - "content-type": "application/json; charset=utf-8", - "date": "Wed, 28 Apr 2021 22:02:33 GMT", - "expires": "-1", - "pragma": "no-cache", - "status": "404", - "strict-transport-security": "max-age=31536000;includeSubDomains", - "x-content-type-options": "nosniff", - "x-ms-client-request-id": "08ef22c3-eadc-4f45-91ae-2cb39faf3b6f", - "x-ms-keyvault-network-info": "conn_type=Ipv4;addr=72.68.182.20;act_addr_fam=InterNetwork;", - "x-ms-keyvault-region": "westus2", - "x-ms-keyvault-service-version": "1.2.265.0", - "x-ms-request-id": "fbdc550e-1a80-4709-9e0e-2487febb9026", - "x-powered-by": "ASP.NET" - } - }, - { - "method": "GET", - "url": "https://keyvault_name.vault.azure.net/deletedkeys/challengeAuthKeyName-Onceauthenticatednewrequestsshouldnotauthenticateagain--1", - "query": { - "api-version": "7.2" - }, - "requestBody": null, - "status": 404, - "response": "{\"error\":{\"code\":\"KeyNotFound\",\"message\":\"Deleted Key not found: challengeAuthKeyName-Onceauthenticatednewrequestsshouldnotauthenticateagain--1\"}}", - "responseHeaders": { - "cache-control": "no-cache", - "content-length": "163", - "content-type": "application/json; charset=utf-8", - "date": "Wed, 28 Apr 2021 22:02:33 GMT", - "expires": "-1", - "pragma": "no-cache", - "status": "404", - "strict-transport-security": "max-age=31536000;includeSubDomains", - "x-content-type-options": "nosniff", - "x-ms-client-request-id": "aafc6920-a91a-4a87-808d-d6dfcfa7d1db", - "x-ms-keyvault-network-info": "conn_type=Ipv4;addr=72.68.182.20;act_addr_fam=InterNetwork;", - "x-ms-keyvault-region": "westus2", - "x-ms-keyvault-service-version": "1.2.265.0", - "x-ms-request-id": "8df6d8ab-6e05-4b32-bfa2-96bbf8898edb", + "x-ms-keyvault-service-version": "1.9.12.0", + "x-ms-request-id": "e01d43f2-6e0e-4f3a-8494-1d0a859e2005", "x-powered-by": "ASP.NET" } }, { "method": "GET", - "url": "https://keyvault_name.vault.azure.net/deletedkeys/challengeAuthKeyName-Onceauthenticatednewrequestsshouldnotauthenticateagain--1", - "query": { - "api-version": "7.2" - }, - "requestBody": null, - "status": 404, - "response": "{\"error\":{\"code\":\"KeyNotFound\",\"message\":\"Deleted Key not found: challengeAuthKeyName-Onceauthenticatednewrequestsshouldnotauthenticateagain--1\"}}", - "responseHeaders": { - "cache-control": "no-cache", - "content-length": "163", - "content-type": "application/json; charset=utf-8", - "date": "Wed, 28 Apr 2021 22:02:35 GMT", - "expires": "-1", - "pragma": "no-cache", - "status": "404", - "strict-transport-security": "max-age=31536000;includeSubDomains", - "x-content-type-options": "nosniff", - "x-ms-client-request-id": "3800fab9-d8cb-4f48-911e-6c855d57ab16", - "x-ms-keyvault-network-info": "conn_type=Ipv4;addr=72.68.182.20;act_addr_fam=InterNetwork;", - "x-ms-keyvault-region": "westus2", - "x-ms-keyvault-service-version": "1.2.265.0", - "x-ms-request-id": "68a0e78b-1911-4800-89f8-eedf7280c79c", - "x-powered-by": "ASP.NET" - } - }, - { - "method": "GET", - "url": "https://keyvault_name.vault.azure.net/deletedkeys/challengeAuthKeyName-Onceauthenticatednewrequestsshouldnotauthenticateagain--1", - "query": { - "api-version": "7.2" - }, - "requestBody": null, - "status": 404, - "response": "{\"error\":{\"code\":\"KeyNotFound\",\"message\":\"Deleted Key not found: challengeAuthKeyName-Onceauthenticatednewrequestsshouldnotauthenticateagain--1\"}}", - "responseHeaders": { - "cache-control": "no-cache", - "content-length": "163", - "content-type": "application/json; charset=utf-8", - "date": "Wed, 28 Apr 2021 22:02:37 GMT", - "expires": "-1", - "pragma": "no-cache", - "status": "404", - "strict-transport-security": "max-age=31536000;includeSubDomains", - "x-content-type-options": "nosniff", - "x-ms-client-request-id": "770eff9a-3f7c-4aad-9330-de2357d80ea5", - "x-ms-keyvault-network-info": "conn_type=Ipv4;addr=72.68.182.20;act_addr_fam=InterNetwork;", - "x-ms-keyvault-region": "westus2", - "x-ms-keyvault-service-version": "1.2.265.0", - "x-ms-request-id": "032cdf86-a7e0-402a-b7bc-1f99c1d48143", - "x-powered-by": "ASP.NET" - } - }, - { - "method": "GET", - "url": "https://keyvault_name.vault.azure.net/deletedkeys/challengeAuthKeyName-Onceauthenticatednewrequestsshouldnotauthenticateagain--1", - "query": { - "api-version": "7.2" - }, - "requestBody": null, - "status": 404, - "response": "{\"error\":{\"code\":\"KeyNotFound\",\"message\":\"Deleted Key not found: challengeAuthKeyName-Onceauthenticatednewrequestsshouldnotauthenticateagain--1\"}}", - "responseHeaders": { - "cache-control": "no-cache", - "content-length": "163", - "content-type": "application/json; charset=utf-8", - "date": "Wed, 28 Apr 2021 22:02:40 GMT", - "expires": "-1", - "pragma": "no-cache", - "status": "404", - "strict-transport-security": "max-age=31536000;includeSubDomains", - "x-content-type-options": "nosniff", - "x-ms-client-request-id": "640e7f1f-995e-4bf7-b36a-d5876302dd75", - "x-ms-keyvault-network-info": "conn_type=Ipv4;addr=72.68.182.20;act_addr_fam=InterNetwork;", - "x-ms-keyvault-region": "westus2", - "x-ms-keyvault-service-version": "1.2.265.0", - "x-ms-request-id": "3ecf777f-3be3-4293-8648-d5837740d3e3", - "x-powered-by": "ASP.NET" - } - }, - { - "method": "GET", - "url": "https://keyvault_name.vault.azure.net/deletedkeys/challengeAuthKeyName-Onceauthenticatednewrequestsshouldnotauthenticateagain--1", - "query": { - "api-version": "7.2" - }, - "requestBody": null, - "status": 404, - "response": "{\"error\":{\"code\":\"KeyNotFound\",\"message\":\"Deleted Key not found: challengeAuthKeyName-Onceauthenticatednewrequestsshouldnotauthenticateagain--1\"}}", - "responseHeaders": { - "cache-control": "no-cache", - "content-length": "163", - "content-type": "application/json; charset=utf-8", - "date": "Wed, 28 Apr 2021 22:02:42 GMT", - "expires": "-1", - "pragma": "no-cache", - "status": "404", - "strict-transport-security": "max-age=31536000;includeSubDomains", - "x-content-type-options": "nosniff", - "x-ms-client-request-id": "5e981ca2-9d6d-4dc8-b228-927ca51bb60a", - "x-ms-keyvault-network-info": "conn_type=Ipv4;addr=72.68.182.20;act_addr_fam=InterNetwork;", - "x-ms-keyvault-region": "westus2", - "x-ms-keyvault-service-version": "1.2.265.0", - "x-ms-request-id": "f9d7a595-d586-4d2d-9049-d454519b5634", - "x-powered-by": "ASP.NET" - } - }, - { - "method": "GET", - "url": "https://keyvault_name.vault.azure.net/deletedkeys/challengeAuthKeyName-Onceauthenticatednewrequestsshouldnotauthenticateagain--1", - "query": { - "api-version": "7.2" - }, - "requestBody": null, - "status": 404, - "response": "{\"error\":{\"code\":\"KeyNotFound\",\"message\":\"Deleted Key not found: challengeAuthKeyName-Onceauthenticatednewrequestsshouldnotauthenticateagain--1\"}}", - "responseHeaders": { - "cache-control": "no-cache", - "content-length": "163", - "content-type": "application/json; charset=utf-8", - "date": "Wed, 28 Apr 2021 22:02:44 GMT", - "expires": "-1", - "pragma": "no-cache", - "status": "404", - "strict-transport-security": "max-age=31536000;includeSubDomains", - "x-content-type-options": "nosniff", - "x-ms-client-request-id": "ac986a56-b2a0-4119-bf27-2f1f270aadf9", - "x-ms-keyvault-network-info": "conn_type=Ipv4;addr=72.68.182.20;act_addr_fam=InterNetwork;", - "x-ms-keyvault-region": "westus2", - "x-ms-keyvault-service-version": "1.2.265.0", - "x-ms-request-id": "13618779-a22a-4986-8410-70278b2aaab4", - "x-powered-by": "ASP.NET" - } - }, - { - "method": "GET", - "url": "https://keyvault_name.vault.azure.net/deletedkeys/challengeAuthKeyName-Onceauthenticatednewrequestsshouldnotauthenticateagain--1", - "query": { - "api-version": "7.2" - }, - "requestBody": null, - "status": 404, - "response": "{\"error\":{\"code\":\"KeyNotFound\",\"message\":\"Deleted Key not found: challengeAuthKeyName-Onceauthenticatednewrequestsshouldnotauthenticateagain--1\"}}", - "responseHeaders": { - "cache-control": "no-cache", - "content-length": "163", - "content-type": "application/json; charset=utf-8", - "date": "Wed, 28 Apr 2021 22:02:46 GMT", - "expires": "-1", - "pragma": "no-cache", - "status": "404", - "strict-transport-security": "max-age=31536000;includeSubDomains", - "x-content-type-options": "nosniff", - "x-ms-client-request-id": "d3c9dbf3-497e-4f9c-a9b2-5fc70dc483e8", - "x-ms-keyvault-network-info": "conn_type=Ipv4;addr=72.68.182.20;act_addr_fam=InterNetwork;", - "x-ms-keyvault-region": "westus2", - "x-ms-keyvault-service-version": "1.2.265.0", - "x-ms-request-id": "79c570e4-c926-4699-8717-b91d272b6eaf", - "x-powered-by": "ASP.NET" - } - }, - { - "method": "GET", - "url": "https://keyvault_name.vault.azure.net/deletedkeys/challengeAuthKeyName-Onceauthenticatednewrequestsshouldnotauthenticateagain--1", - "query": { - "api-version": "7.2" - }, - "requestBody": null, - "status": 404, - "response": "{\"error\":{\"code\":\"KeyNotFound\",\"message\":\"Deleted Key not found: challengeAuthKeyName-Onceauthenticatednewrequestsshouldnotauthenticateagain--1\"}}", - "responseHeaders": { - "cache-control": "no-cache", - "content-length": "163", - "content-type": "application/json; charset=utf-8", - "date": "Wed, 28 Apr 2021 22:02:48 GMT", - "expires": "-1", - "pragma": "no-cache", - "status": "404", - "strict-transport-security": "max-age=31536000;includeSubDomains", - "x-content-type-options": "nosniff", - "x-ms-client-request-id": "be14bf76-6483-450d-897e-c8b240eb8e91", - "x-ms-keyvault-network-info": "conn_type=Ipv4;addr=72.68.182.20;act_addr_fam=InterNetwork;", - "x-ms-keyvault-region": "westus2", - "x-ms-keyvault-service-version": "1.2.265.0", - "x-ms-request-id": "d6c8fd29-6f69-405e-ae35-ab2e2aba05b6", - "x-powered-by": "ASP.NET" - } - }, - { - "method": "GET", - "url": "https://keyvault_name.vault.azure.net/deletedkeys/challengeAuthKeyName-Onceauthenticatednewrequestsshouldnotauthenticateagain--1", - "query": { - "api-version": "7.2" - }, - "requestBody": null, - "status": 404, - "response": "{\"error\":{\"code\":\"KeyNotFound\",\"message\":\"Deleted Key not found: challengeAuthKeyName-Onceauthenticatednewrequestsshouldnotauthenticateagain--1\"}}", - "responseHeaders": { - "cache-control": "no-cache", - "content-length": "163", - "content-type": "application/json; charset=utf-8", - "date": "Wed, 28 Apr 2021 22:02:50 GMT", - "expires": "-1", - "pragma": "no-cache", - "status": "404", - "strict-transport-security": "max-age=31536000;includeSubDomains", - "x-content-type-options": "nosniff", - "x-ms-client-request-id": "1202c346-9656-474c-a27f-4669a0fb6cce", - "x-ms-keyvault-network-info": "conn_type=Ipv4;addr=72.68.182.20;act_addr_fam=InterNetwork;", - "x-ms-keyvault-region": "westus2", - "x-ms-keyvault-service-version": "1.2.265.0", - "x-ms-request-id": "e74c6055-b95e-402b-85b9-8533af2be974", - "x-powered-by": "ASP.NET" - } - }, - { - "method": "GET", - "url": "https://keyvault_name.vault.azure.net/deletedkeys/challengeAuthKeyName-Onceauthenticatednewrequestsshouldnotauthenticateagain--1", - "query": { - "api-version": "7.2" - }, - "requestBody": null, - "status": 404, - "response": "{\"error\":{\"code\":\"KeyNotFound\",\"message\":\"Deleted Key not found: challengeAuthKeyName-Onceauthenticatednewrequestsshouldnotauthenticateagain--1\"}}", - "responseHeaders": { - "cache-control": "no-cache", - "content-length": "163", - "content-type": "application/json; charset=utf-8", - "date": "Wed, 28 Apr 2021 22:02:52 GMT", - "expires": "-1", - "pragma": "no-cache", - "status": "404", - "strict-transport-security": "max-age=31536000;includeSubDomains", - "x-content-type-options": "nosniff", - "x-ms-client-request-id": "1f33ba11-4e0b-40fc-9a63-3345d623043f", - "x-ms-keyvault-network-info": "conn_type=Ipv4;addr=72.68.182.20;act_addr_fam=InterNetwork;", - "x-ms-keyvault-region": "westus2", - "x-ms-keyvault-service-version": "1.2.265.0", - "x-ms-request-id": "84584808-360a-41d9-97dd-dad636086de0", - "x-powered-by": "ASP.NET" - } - }, - { - "method": "GET", - "url": "https://keyvault_name.vault.azure.net/deletedkeys/challengeAuthKeyName-Onceauthenticatednewrequestsshouldnotauthenticateagain--1", - "query": { - "api-version": "7.2" - }, - "requestBody": null, - "status": 404, - "response": "{\"error\":{\"code\":\"KeyNotFound\",\"message\":\"Deleted Key not found: challengeAuthKeyName-Onceauthenticatednewrequestsshouldnotauthenticateagain--1\"}}", - "responseHeaders": { - "cache-control": "no-cache", - "content-length": "163", - "content-type": "application/json; charset=utf-8", - "date": "Wed, 28 Apr 2021 22:02:54 GMT", - "expires": "-1", - "pragma": "no-cache", - "status": "404", - "strict-transport-security": "max-age=31536000;includeSubDomains", - "x-content-type-options": "nosniff", - "x-ms-client-request-id": "6ff433b8-a22e-4d2a-adf8-6a3a553cb4b1", - "x-ms-keyvault-network-info": "conn_type=Ipv4;addr=72.68.182.20;act_addr_fam=InterNetwork;", - "x-ms-keyvault-region": "westus2", - "x-ms-keyvault-service-version": "1.2.265.0", - "x-ms-request-id": "096057ea-34b0-42e2-866b-054fb7d751c5", - "x-powered-by": "ASP.NET" - } - }, - { - "method": "GET", - "url": "https://keyvault_name.vault.azure.net/deletedkeys/challengeAuthKeyName-Onceauthenticatednewrequestsshouldnotauthenticateagain--1", + "url": "https://keyvault_name.vault.azure.net/deletedkeys", "query": { "api-version": "7.2" }, "requestBody": null, "status": 200, - "response": "{\"recoveryId\":\"https://keyvault_name.vault.azure.net/deletedkeys/challengeAuthKeyName-Onceauthenticatednewrequestsshouldnotauthenticateagain--1\",\"deletedDate\":1619647353,\"scheduledPurgeDate\":1620252153,\"key\":{\"kid\":\"https://keyvault_name.vault.azure.net/keys/challengeAuthKeyName-Onceauthenticatednewrequestsshouldnotauthenticateagain--1/ae4a4d7025954fbd892bf029c273a2a1\",\"kty\":\"RSA\",\"key_ops\":[\"encrypt\",\"decrypt\",\"sign\",\"verify\",\"wrapKey\",\"unwrapKey\"],\"n\":\"uuQ9R-hMobBcWPzHZ-g5rE_GYmh7pmIwA9ltnlncwENos6oAeuudbLu_pDB80-2TbAZpsmBGmntDAcwd-uKcnH08tsu9Y2uJCGZP-B9h8HtRfOOX1yYXxYHl-bBOZx2wYK4Padf8KDpFpW6estsFfDWnnThNBe7j7nxFr5K4HmXlo5RNHYgXpJSLWw2mer7AYaJ6UqSxsTZlGVjA69iHV5VxkIA2D3GezlV8hUs3dKpG96IPCLqFrmehifdsArfyFi0bBI5VAYImTPAj65EeSyd9qx9rCt7r7XW61rcQ2-x2OCSFNMtMUAlsG25_ApmJjzVwy-KHO6W2TfdqU4z04Q\",\"e\":\"AQAB\"},\"attributes\":{\"enabled\":true,\"created\":1619647331,\"updated\":1619647331,\"recoveryLevel\":\"CustomizedRecoverable+Purgeable\",\"recoverableDays\":7}}", + "response": "{\"value\":[{\"recoveryId\":\"https://keyvault_name.vault.azure.net/deletedkeys/challengeAuthKeyName-Authenticationshouldworkforparallelrequests-018489891015560644-1\",\"deletedDate\":1623968152,\"scheduledPurgeDate\":1624572952,\"kid\":\"https://keyvault_name.vault.azure.net/keys/challengeAuthKeyName-Authenticationshouldworkforparallelrequests-018489891015560644-1\",\"attributes\":{\"enabled\":true,\"created\":1623968038,\"updated\":1623968038,\"recoveryLevel\":\"CustomizedRecoverable+Purgeable\",\"recoverableDays\":7}},{\"recoveryId\":\"https://keyvault_name.vault.azure.net/deletedkeys/challengeAuthKeyName-Authenticationshouldworkforparallelrequests-24685237550245565-1\",\"deletedDate\":1623967880,\"scheduledPurgeDate\":1624572680,\"kid\":\"https://keyvault_name.vault.azure.net/keys/challengeAuthKeyName-Authenticationshouldworkforparallelrequests-24685237550245565-1\",\"attributes\":{\"enabled\":true,\"created\":1623967755,\"updated\":1623967755,\"recoveryLevel\":\"CustomizedRecoverable+Purgeable\",\"recoverableDays\":7}},{\"recoveryId\":\"https://keyvault_name.vault.azure.net/deletedkeys/challengeAuthKeyName-Authenticationshouldworkforparallelrequests-304369368630208-0\",\"deletedDate\":1623967959,\"scheduledPurgeDate\":1624572759,\"kid\":\"https://keyvault_name.vault.azure.net/keys/challengeAuthKeyName-Authenticationshouldworkforparallelrequests-304369368630208-0\",\"attributes\":{\"enabled\":true,\"created\":1623967959,\"updated\":1623967959,\"recoveryLevel\":\"CustomizedRecoverable+Purgeable\",\"recoverableDays\":7}},{\"recoveryId\":\"https://keyvault_name.vault.azure.net/deletedkeys/challengeAuthKeyName-Onceauthenticatednewrequestsshouldnotauthenticateagain-9173446555051745-0\",\"deletedDate\":1623968786,\"scheduledPurgeDate\":1624573586,\"kid\":\"https://keyvault_name.vault.azure.net/keys/challengeAuthKeyName-Onceauthenticatednewrequestsshouldnotauthenticateagain-9173446555051745-0\",\"attributes\":{\"enabled\":true,\"created\":1623968785,\"updated\":1623968785,\"recoveryLevel\":\"CustomizedRecoverable+Purgeable\",\"recoverableDays\":7}}],\"nextLink\":null}", "responseHeaders": { "cache-control": "no-cache", - "content-length": "985", + "content-length": "1953", "content-type": "application/json; charset=utf-8", - "date": "Wed, 28 Apr 2021 22:02:56 GMT", + "date": "Thu, 17 Jun 2021 22:28:58 GMT", "expires": "-1", "pragma": "no-cache", "status": "200", "strict-transport-security": "max-age=31536000;includeSubDomains", "x-content-type-options": "nosniff", - "x-ms-client-request-id": "765f26f4-7cdf-476c-919c-252ec21ccc49", - "x-ms-keyvault-network-info": "conn_type=Ipv4;addr=72.68.182.20;act_addr_fam=InterNetwork;", - "x-ms-keyvault-region": "westus2", - "x-ms-keyvault-service-version": "1.2.265.0", - "x-ms-request-id": "57f4f83f-5b92-486c-a661-2aeea284e586", - "x-powered-by": "ASP.NET" - } - }, - { - "method": "DELETE", - "url": "https://keyvault_name.vault.azure.net/deletedkeys/challengeAuthKeyName-Onceauthenticatednewrequestsshouldnotauthenticateagain--1", - "query": { - "api-version": "7.2" - }, - "requestBody": null, - "status": 204, - "response": "", - "responseHeaders": { - "cache-control": "no-cache", - "date": "Wed, 28 Apr 2021 22:02:56 GMT", - "expires": "-1", - "pragma": "no-cache", - "status": "204", - "strict-transport-security": "max-age=31536000;includeSubDomains", - "x-content-type-options": "nosniff", - "x-ms-client-request-id": "fdef981f-b15e-4d77-aec4-bb1fd60fc70c", - "x-ms-keyvault-network-info": "conn_type=Ipv4;addr=72.68.182.20;act_addr_fam=InterNetwork;", + "x-ms-client-request-id": "d6c488d9-f0c5-4252-9d28-325ee4b403c5", + "x-ms-keyvault-network-info": "conn_type=Ipv4;addr=50.35.231.105;act_addr_fam=InterNetwork;", "x-ms-keyvault-region": "westus2", - "x-ms-keyvault-service-version": "1.2.265.0", - "x-ms-request-id": "e2df8ee7-e5ff-4eba-be7d-6316890fc61c", + "x-ms-keyvault-service-version": "1.9.12.0", + "x-ms-request-id": "c7cc40e2-cb52-4695-9263-810a77695fad", "x-powered-by": "ASP.NET" } } @@ -890,5 +111,5 @@ "uniqueName": {}, "newDate": {} }, - "hash": "fe0ec113d9766925d232a4e3a9c7ddb9" + "hash": "9f2d93241a593aee460253e5c0a48bca" } \ No newline at end of file diff --git a/sdk/keyvault/keyvault-keys/recordings/browsers/challenge_based_authentication_tests_parsewwwauthenticate_tests/recording_should_skip_unexpected_properties_on_the_wwwauthenticate_header.json b/sdk/keyvault/keyvault-keys/recordings/browsers/challenge_based_authentication_tests_parsewwwauthenticate_tests/recording_should_skip_unexpected_properties_on_the_wwwauthenticate_header.json index 539b108a5ea9..fabb6733b99a 100644 --- a/sdk/keyvault/keyvault-keys/recordings/browsers/challenge_based_authentication_tests_parsewwwauthenticate_tests/recording_should_skip_unexpected_properties_on_the_wwwauthenticate_header.json +++ b/sdk/keyvault/keyvault-keys/recordings/browsers/challenge_based_authentication_tests_parsewwwauthenticate_tests/recording_should_skip_unexpected_properties_on_the_wwwauthenticate_header.json @@ -4,5 +4,5 @@ "uniqueName": {}, "newDate": {} }, - "hash": "cf98903365cb28ca09595b575b7f48df" + "hash": "03b9330c9921c9f2e4bad266d38a1810" } \ No newline at end of file diff --git a/sdk/keyvault/keyvault-keys/recordings/browsers/challenge_based_authentication_tests_parsewwwauthenticate_tests/recording_should_work_for_known_shapes_of_the_wwwauthenticate_header.json b/sdk/keyvault/keyvault-keys/recordings/browsers/challenge_based_authentication_tests_parsewwwauthenticate_tests/recording_should_work_for_known_shapes_of_the_wwwauthenticate_header.json index 851cac615b51..59a72e60e3a7 100644 --- a/sdk/keyvault/keyvault-keys/recordings/browsers/challenge_based_authentication_tests_parsewwwauthenticate_tests/recording_should_work_for_known_shapes_of_the_wwwauthenticate_header.json +++ b/sdk/keyvault/keyvault-keys/recordings/browsers/challenge_based_authentication_tests_parsewwwauthenticate_tests/recording_should_work_for_known_shapes_of_the_wwwauthenticate_header.json @@ -4,5 +4,5 @@ "uniqueName": {}, "newDate": {} }, - "hash": "188b994850775d6558e141b77cef014f" + "hash": "ef4a12d626aa4a453cd7dd1cc395049f" } \ No newline at end of file diff --git a/sdk/keyvault/keyvault-keys/recordings/node/challenge_based_authentication_tests/recording_authentication_should_work_for_parallel_requests.js b/sdk/keyvault/keyvault-keys/recordings/node/challenge_based_authentication_tests/recording_authentication_should_work_for_parallel_requests.js index f661a4708c86..b450bb32fe4f 100644 --- a/sdk/keyvault/keyvault-keys/recordings/node/challenge_based_authentication_tests/recording_authentication_should_work_for_parallel_requests.js +++ b/sdk/keyvault/keyvault-keys/recordings/node/challenge_based_authentication_tests/recording_authentication_should_work_for_parallel_requests.js @@ -1,19 +1,19 @@ let nock = require('nock'); -module.exports.hash = "e3934ac4f2e65a6ed21b91952a328e5a"; +module.exports.hash = "3138840c62d5525d51e48591fcb982f7"; module.exports.testInfo = {"uniqueName":{},"newDate":{}} nock('https://keyvault_name.vault.azure.net:443', {"encodedQueryParams":true}) - .post('/keys/challengeAuthKeyName-Authenticationshouldworkforparallelrequests--1/create') + .get('/keys') .query(true) - .reply(401, {"error":{"code":"Unauthorized","message":"Request is missing a Bearer or PoP token."}}, [ + .reply(401, {"error":{"code":"Unauthorized","message":"AKV10000: Request is missing a Bearer or PoP token."}}, [ 'Cache-Control', 'no-cache', 'Pragma', 'no-cache', 'Content-Length', - '87', + '97', 'Content-Type', 'application/json; charset=utf-8', 'Expires', @@ -23,13 +23,13 @@ nock('https://keyvault_name.vault.azure.net:443', {"encodedQueryParams":true}) 'x-ms-keyvault-region', 'westus2', 'x-ms-client-request-id', - '10e659a5-a622-4f06-b9d7-a5cbbca9b545', + 'fbd8541d-4d8f-4964-a1d0-237def9e36cf', 'x-ms-request-id', - 'a1247a71-0f5a-4312-a23c-fc7597f1a1fd', + '47032a68-c26c-4efe-b72c-3ce584437d51', 'x-ms-keyvault-service-version', - '1.2.265.0', + '1.9.12.0', 'x-ms-keyvault-network-info', - 'conn_type=Ipv4;addr=72.68.182.20;act_addr_fam=InterNetwork;', + 'conn_type=Ipv4;addr=50.35.231.105;act_addr_fam=InterNetwork;', 'X-Powered-By', 'ASP.NET', 'Strict-Transport-Security', @@ -37,19 +37,19 @@ nock('https://keyvault_name.vault.azure.net:443', {"encodedQueryParams":true}) 'X-Content-Type-Options', 'nosniff', 'Date', - 'Wed, 28 Apr 2021 21:21:59 GMT' + 'Thu, 17 Jun 2021 22:28:51 GMT' ]); nock('https://keyvault_name.vault.azure.net:443', {"encodedQueryParams":true}) - .post('/keys/challengeAuthKeyName-Authenticationshouldworkforparallelrequests--0/create') + .get('/keys') .query(true) - .reply(401, {"error":{"code":"Unauthorized","message":"Request is missing a Bearer or PoP token."}}, [ + .reply(401, {"error":{"code":"Unauthorized","message":"AKV10000: Request is missing a Bearer or PoP token."}}, [ 'Cache-Control', 'no-cache', 'Pragma', 'no-cache', 'Content-Length', - '87', + '97', 'Content-Type', 'application/json; charset=utf-8', 'Expires', @@ -59,13 +59,13 @@ nock('https://keyvault_name.vault.azure.net:443', {"encodedQueryParams":true}) 'x-ms-keyvault-region', 'westus2', 'x-ms-client-request-id', - '9f2f394c-483f-4815-8731-b24792f7d2ea', + '9495860f-384c-482d-ae6e-28a855ee4861', 'x-ms-request-id', - '9bd106ef-f920-49b9-b073-7a5a0f6f99e3', + 'abce7d6f-ee7b-492e-b4e4-177975807b0a', 'x-ms-keyvault-service-version', - '1.2.265.0', + '1.9.12.0', 'x-ms-keyvault-network-info', - 'conn_type=Ipv4;addr=72.68.182.20;act_addr_fam=InterNetwork;', + 'conn_type=Ipv4;addr=50.35.231.105;act_addr_fam=InterNetwork;', 'X-Powered-By', 'ASP.NET', 'Strict-Transport-Security', @@ -73,7 +73,7 @@ nock('https://keyvault_name.vault.azure.net:443', {"encodedQueryParams":true}) 'X-Content-Type-Options', 'nosniff', 'Date', - 'Wed, 28 Apr 2021 21:21:59 GMT' + 'Thu, 17 Jun 2021 22:28:51 GMT' ]); nock('https://login.microsoftonline.com:443', {"encodedQueryParams":true}) @@ -82,8 +82,6 @@ nock('https://login.microsoftonline.com:443', {"encodedQueryParams":true}) .reply(200, {"tenant_discovery_endpoint":"https://login.microsoftonline.com/12345678-1234-1234-1234-123456789012/v2.0/.well-known/openid-configuration","api-version":"1.1","metadata":[{"preferred_network":"login.microsoftonline.com","preferred_cache":"login.windows.net","aliases":["login.microsoftonline.com","login.windows.net","login.microsoft.com","sts.windows.net"]},{"preferred_network":"login.partner.microsoftonline.cn","preferred_cache":"login.partner.microsoftonline.cn","aliases":["login.partner.microsoftonline.cn","login.chinacloudapi.cn"]},{"preferred_network":"login.microsoftonline.de","preferred_cache":"login.microsoftonline.de","aliases":["login.microsoftonline.de"]},{"preferred_network":"login.microsoftonline.us","preferred_cache":"login.microsoftonline.us","aliases":["login.microsoftonline.us","login.usgovcloudapi.net"]},{"preferred_network":"login-us.microsoftonline.com","preferred_cache":"login-us.microsoftonline.com","aliases":["login-us.microsoftonline.com"]}]}, [ 'Cache-Control', 'max-age=86400, private', - 'Content-Length', - '980', 'Content-Type', 'application/json; charset=utf-8', 'Strict-Transport-Security', @@ -97,28 +95,29 @@ nock('https://login.microsoftonline.com:443', {"encodedQueryParams":true}) 'P3P', 'CP="DSP CUR OTPi IND OTRi ONL FIN"', 'x-ms-request-id', - '8b5e5033-5fc7-428a-be78-2f1c72c45c01', + '160957e1-d225-4c45-9f25-b1f19d6a0f00', 'x-ms-ests-server', - '2.1.11654.16 - SCUS ProdSlices', + '2.1.11829.4 - NCUS ProdSlices', 'Set-Cookie', - 'fpc=Au5BirxN9hhJvoEMGUBOFo6nSoKIBQAAAO_IG9gOAAAA; expires=Fri, 28-May-2021 21:22:00 GMT; path=/; secure; HttpOnly; SameSite=None', + 'fpc=Ao1gVB6FGWJOvs35Dc7NsqQ; expires=Sat, 17-Jul-2021 22:28:52 GMT; path=/; secure; HttpOnly; SameSite=None', 'Set-Cookie', - 'esctx=AQABAAAAAAD--DLA3VO7QrddgJg7WevrCqkxdEhHvf1NtK5404MGwyzgVwPKDjCQy3gjTdNDcDQEe9UtMFlsNEfaL9XGoXGxTzOpD_cxw6RgemoHZhYnacSlAQOY5ZSKab4V6gzIbnaSypIyj6dDqxn47yPvx2xoNN2V8FzBH0c7nvfV1I7YlyZhnOLcbCFoTh4qSKaVaOMgAA; domain=.login.microsoftonline.com; path=/; secure; HttpOnly; SameSite=None', + 'esctx=AQABAAAAAAD--DLA3VO7QrddgJg7WevrRC7b662Q1R5V6LcRH2bTGvaJJhUlWEKca2OV2k9DH6E44f9NXUypTFuzubr75TCn00acGhfWudhINDVPNn7h48WCUt7xdXfB10-bReXPSTIswtP7bxqvwnK5QmA_stVTiur5mJcIpvOuF6Y_bk303mJLCi4kuuz5xMulLqUbA_YgAA; domain=.login.microsoftonline.com; path=/; secure; HttpOnly; SameSite=None', 'Set-Cookie', 'x-ms-gateway-slice=estsfd; path=/; secure; samesite=none; httponly', 'Set-Cookie', 'stsservicecookie=estsfd; path=/; secure; samesite=none; httponly', 'Date', - 'Wed, 28 Apr 2021 21:22:00 GMT' + 'Thu, 17 Jun 2021 22:28:52 GMT', + 'Content-Length', + '980' ]); nock('https://login.microsoftonline.com:443', {"encodedQueryParams":true}) - .get('/12345678-1234-1234-1234-123456789012/v2.0/.well-known/openid-configuration') - .reply(200, {"token_endpoint":"https://login.microsoftonline.com/12345678-1234-1234-1234-123456789012/oauth2/v2.0/token","token_endpoint_auth_methods_supported":["client_secret_post","private_key_jwt","client_secret_basic"],"jwks_uri":"https://login.microsoftonline.com/12345678-1234-1234-1234-123456789012/discovery/v2.0/keys","response_modes_supported":["query","fragment","form_post"],"subject_types_supported":["pairwise"],"id_token_signing_alg_values_supported":["RS256"],"response_types_supported":["code","id_token","code id_token","id_token token"],"scopes_supported":["openid","profile","email","offline_access"],"issuer":"https://login.microsoftonline.com/12345678-1234-1234-1234-123456789012/v2.0","request_uri_parameter_supported":false,"userinfo_endpoint":"https://graph.microsoft.com/oidc/userinfo","authorization_endpoint":"https://login.microsoftonline.com/12345678-1234-1234-1234-123456789012/oauth2/v2.0/authorize","device_authorization_endpoint":"https://login.microsoftonline.com/12345678-1234-1234-1234-123456789012/oauth2/v2.0/devicecode","http_logout_supported":true,"frontchannel_logout_supported":true,"end_session_endpoint":"https://login.microsoftonline.com/12345678-1234-1234-1234-123456789012/oauth2/v2.0/logout","claims_supported":["sub","iss","cloud_instance_name","cloud_instance_host_name","cloud_graph_host_name","msgraph_host","aud","exp","iat","auth_time","acr","nonce","preferred_username","name","tid","ver","at_hash","c_hash","email"],"tenant_region_scope":"WW","cloud_instance_name":"microsoftonline.com","cloud_graph_host_name":"graph.windows.net","msgraph_host":"graph.microsoft.com","rbac_url":"https://pas.windows.net"}, [ + .get('/common/discovery/instance') + .query(true) + .reply(200, {"tenant_discovery_endpoint":"https://login.microsoftonline.com/12345678-1234-1234-1234-123456789012/v2.0/.well-known/openid-configuration","api-version":"1.1","metadata":[{"preferred_network":"login.microsoftonline.com","preferred_cache":"login.windows.net","aliases":["login.microsoftonline.com","login.windows.net","login.microsoft.com","sts.windows.net"]},{"preferred_network":"login.partner.microsoftonline.cn","preferred_cache":"login.partner.microsoftonline.cn","aliases":["login.partner.microsoftonline.cn","login.chinacloudapi.cn"]},{"preferred_network":"login.microsoftonline.de","preferred_cache":"login.microsoftonline.de","aliases":["login.microsoftonline.de"]},{"preferred_network":"login.microsoftonline.us","preferred_cache":"login.microsoftonline.us","aliases":["login.microsoftonline.us","login.usgovcloudapi.net"]},{"preferred_network":"login-us.microsoftonline.com","preferred_cache":"login-us.microsoftonline.com","aliases":["login-us.microsoftonline.com"]}]}, [ 'Cache-Control', 'max-age=86400, private', - 'Content-Length', - '1651', 'Content-Type', 'application/json; charset=utf-8', 'Strict-Transport-Security', @@ -132,25 +131,26 @@ nock('https://login.microsoftonline.com:443', {"encodedQueryParams":true}) 'P3P', 'CP="DSP CUR OTPi IND OTRi ONL FIN"', 'x-ms-request-id', - 'd398971b-bb3f-48fb-a127-957b3df64001', + '91eaa44f-2d7c-4f74-94a8-4845fccf6b00', 'x-ms-ests-server', - '2.1.11654.16 - SCUS ProdSlices', + '2.1.11829.4 - WUS2 ProdSlices', 'Set-Cookie', - 'fpc=Au5BirxN9hhJvoEMGUBOFo6nSoKIBQAAAO_IG9gOAAAA; expires=Fri, 28-May-2021 21:22:00 GMT; path=/; secure; HttpOnly; SameSite=None', + 'fpc=AiON2Z5V_ydHrb8RPEU9_5s; expires=Sat, 17-Jul-2021 22:28:52 GMT; path=/; secure; HttpOnly; SameSite=None', 'Set-Cookie', - 'esctx=AQABAAAAAAD--DLA3VO7QrddgJg7Wevr24LxKHHoUdd9UfEvDD4XQkT0JwF61Clz9eawzcQmI7vG4iKtEA8FXfeoCglkMA8YKjwfEbMhqg07YK2kpvBlUKQfku36g_V08MDAKNLNGix7lCjE5RZO4nYpdQGKO2UhhXCQ60bhsNm5XC457riY9VWi0m7AM2HdmhRyDQQXvbogAA; domain=.login.microsoftonline.com; path=/; secure; HttpOnly; SameSite=None', + 'esctx=AQABAAAAAAD--DLA3VO7QrddgJg7WevrztqC-5j1M9lUIMAbaIq2gT4f1H58oB-XUam_djk40eUyd713t9OjOPLTsjaLAV8HCXj4kPC2XV9D-3AqumMxdqGN3ore_BlE72wKDTgv2rwTMhfzbmQHERb6Z__9AKzF7n6wg5I-c6bM1r_fAijJsaijommGhA4S2tiQMz9mX3ggAA; domain=.login.microsoftonline.com; path=/; secure; HttpOnly; SameSite=None', 'Set-Cookie', 'x-ms-gateway-slice=estsfd; path=/; secure; samesite=none; httponly', 'Set-Cookie', 'stsservicecookie=estsfd; path=/; secure; samesite=none; httponly', 'Date', - 'Wed, 28 Apr 2021 21:22:00 GMT' + 'Thu, 17 Jun 2021 22:28:52 GMT', + 'Content-Length', + '980' ]); nock('https://login.microsoftonline.com:443', {"encodedQueryParams":true}) - .get('/common/discovery/instance') - .query(true) - .reply(200, {"tenant_discovery_endpoint":"https://login.microsoftonline.com/12345678-1234-1234-1234-123456789012/v2.0/.well-known/openid-configuration","api-version":"1.1","metadata":[{"preferred_network":"login.microsoftonline.com","preferred_cache":"login.windows.net","aliases":["login.microsoftonline.com","login.windows.net","login.microsoft.com","sts.windows.net"]},{"preferred_network":"login.partner.microsoftonline.cn","preferred_cache":"login.partner.microsoftonline.cn","aliases":["login.partner.microsoftonline.cn","login.chinacloudapi.cn"]},{"preferred_network":"login.microsoftonline.de","preferred_cache":"login.microsoftonline.de","aliases":["login.microsoftonline.de"]},{"preferred_network":"login.microsoftonline.us","preferred_cache":"login.microsoftonline.us","aliases":["login.microsoftonline.us","login.usgovcloudapi.net"]},{"preferred_network":"login-us.microsoftonline.com","preferred_cache":"login-us.microsoftonline.com","aliases":["login-us.microsoftonline.com"]}]}, [ + .get('/12345678-1234-1234-1234-123456789012/v2.0/.well-known/openid-configuration') + .reply(200, {"token_endpoint":"https://login.microsoftonline.com/12345678-1234-1234-1234-123456789012/oauth2/v2.0/token","token_endpoint_auth_methods_supported":["client_secret_post","private_key_jwt","client_secret_basic"],"jwks_uri":"https://login.microsoftonline.com/12345678-1234-1234-1234-123456789012/discovery/v2.0/keys","response_modes_supported":["query","fragment","form_post"],"subject_types_supported":["pairwise"],"id_token_signing_alg_values_supported":["RS256"],"response_types_supported":["code","id_token","code id_token","id_token token"],"scopes_supported":["openid","profile","email","offline_access"],"issuer":"https://login.microsoftonline.com/12345678-1234-1234-1234-123456789012/v2.0","request_uri_parameter_supported":false,"userinfo_endpoint":"https://graph.microsoft.com/oidc/userinfo","authorization_endpoint":"https://login.microsoftonline.com/12345678-1234-1234-1234-123456789012/oauth2/v2.0/authorize","device_authorization_endpoint":"https://login.microsoftonline.com/12345678-1234-1234-1234-123456789012/oauth2/v2.0/devicecode","http_logout_supported":true,"frontchannel_logout_supported":true,"end_session_endpoint":"https://login.microsoftonline.com/12345678-1234-1234-1234-123456789012/oauth2/v2.0/logout","claims_supported":["sub","iss","cloud_instance_name","cloud_instance_host_name","cloud_graph_host_name","msgraph_host","aud","exp","iat","auth_time","acr","nonce","preferred_username","name","tid","ver","at_hash","c_hash","email"],"kerberos_endpoint":"https://login.microsoftonline.com/12345678-1234-1234-1234-123456789012/kerberos","tenant_region_scope":"WW","cloud_instance_name":"microsoftonline.com","cloud_graph_host_name":"graph.windows.net","msgraph_host":"graph.microsoft.com","rbac_url":"https://pas.windows.net"}, [ 'Cache-Control', 'max-age=86400, private', 'Content-Type', @@ -166,26 +166,26 @@ nock('https://login.microsoftonline.com:443', {"encodedQueryParams":true}) 'P3P', 'CP="DSP CUR OTPi IND OTRi ONL FIN"', 'x-ms-request-id', - '7041e92b-155b-472f-994c-876625cdc902', + 'c37bbbcf-7b48-4569-a1c6-fe5667604700', 'x-ms-ests-server', - '2.1.11654.16 - WUS2 ProdSlices', + '2.1.11829.4 - NCUS ProdSlices', 'Set-Cookie', - 'fpc=Au5BirxN9hhJvoEMGUBOFo6nSoKIBQAAAO_IG9gOAAAA; expires=Fri, 28-May-2021 21:22:00 GMT; path=/; secure; HttpOnly; SameSite=None', + 'fpc=Ao1gVB6FGWJOvs35Dc7NsqQ; expires=Sat, 17-Jul-2021 22:28:52 GMT; path=/; secure; HttpOnly; SameSite=None', 'Set-Cookie', - 'esctx=AQABAAAAAAD--DLA3VO7QrddgJg7WevrWFAZjf6-Z0zooszv-84dJ0l-ymSDbDGDwgfHujsQEA8sFWVUdkcOznSAK-8aq08rwMCW7khq6SeirpnZNaH0RXsG7o4KVPOdQc9u7IQqOdlKZ02Sv3H84UKMg9B6Z0-13B7t5HFsXnajtVSsKwLTAyeMf9_snkdD68hfbyiVWLcgAA; domain=.login.microsoftonline.com; path=/; secure; HttpOnly; SameSite=None', + 'esctx=AQABAAAAAAD--DLA3VO7QrddgJg7Wevr0R5ErPBrSv9KUmg0MH7oge1ec_A0FuGjgvcPJmrdl2-O1RMuRtxCp9YVZMiX4p3Q5rdyXSLb_lpQbcvTkLQM2KUdrxH3xbLa8H88DXrW8hiuPhuOZiZviRSTY3PguDkpKDPf4hdeZgqx5FqGmbJvFH8-CN90XtsBHlHq7RvHLKogAA; domain=.login.microsoftonline.com; path=/; secure; HttpOnly; SameSite=None', 'Set-Cookie', 'x-ms-gateway-slice=estsfd; path=/; secure; samesite=none; httponly', 'Set-Cookie', 'stsservicecookie=estsfd; path=/; secure; samesite=none; httponly', 'Date', - 'Wed, 28 Apr 2021 21:22:00 GMT', + 'Thu, 17 Jun 2021 22:28:52 GMT', 'Content-Length', - '980' + '1753' ]); nock('https://login.microsoftonline.com:443', {"encodedQueryParams":true}) .get('/12345678-1234-1234-1234-123456789012/v2.0/.well-known/openid-configuration') - .reply(200, {"token_endpoint":"https://login.microsoftonline.com/12345678-1234-1234-1234-123456789012/oauth2/v2.0/token","token_endpoint_auth_methods_supported":["client_secret_post","private_key_jwt","client_secret_basic"],"jwks_uri":"https://login.microsoftonline.com/12345678-1234-1234-1234-123456789012/discovery/v2.0/keys","response_modes_supported":["query","fragment","form_post"],"subject_types_supported":["pairwise"],"id_token_signing_alg_values_supported":["RS256"],"response_types_supported":["code","id_token","code id_token","id_token token"],"scopes_supported":["openid","profile","email","offline_access"],"issuer":"https://login.microsoftonline.com/12345678-1234-1234-1234-123456789012/v2.0","request_uri_parameter_supported":false,"userinfo_endpoint":"https://graph.microsoft.com/oidc/userinfo","authorization_endpoint":"https://login.microsoftonline.com/12345678-1234-1234-1234-123456789012/oauth2/v2.0/authorize","device_authorization_endpoint":"https://login.microsoftonline.com/12345678-1234-1234-1234-123456789012/oauth2/v2.0/devicecode","http_logout_supported":true,"frontchannel_logout_supported":true,"end_session_endpoint":"https://login.microsoftonline.com/12345678-1234-1234-1234-123456789012/oauth2/v2.0/logout","claims_supported":["sub","iss","cloud_instance_name","cloud_instance_host_name","cloud_graph_host_name","msgraph_host","aud","exp","iat","auth_time","acr","nonce","preferred_username","name","tid","ver","at_hash","c_hash","email"],"tenant_region_scope":"WW","cloud_instance_name":"microsoftonline.com","cloud_graph_host_name":"graph.windows.net","msgraph_host":"graph.microsoft.com","rbac_url":"https://pas.windows.net"}, [ + .reply(200, {"token_endpoint":"https://login.microsoftonline.com/12345678-1234-1234-1234-123456789012/oauth2/v2.0/token","token_endpoint_auth_methods_supported":["client_secret_post","private_key_jwt","client_secret_basic"],"jwks_uri":"https://login.microsoftonline.com/12345678-1234-1234-1234-123456789012/discovery/v2.0/keys","response_modes_supported":["query","fragment","form_post"],"subject_types_supported":["pairwise"],"id_token_signing_alg_values_supported":["RS256"],"response_types_supported":["code","id_token","code id_token","id_token token"],"scopes_supported":["openid","profile","email","offline_access"],"issuer":"https://login.microsoftonline.com/12345678-1234-1234-1234-123456789012/v2.0","request_uri_parameter_supported":false,"userinfo_endpoint":"https://graph.microsoft.com/oidc/userinfo","authorization_endpoint":"https://login.microsoftonline.com/12345678-1234-1234-1234-123456789012/oauth2/v2.0/authorize","device_authorization_endpoint":"https://login.microsoftonline.com/12345678-1234-1234-1234-123456789012/oauth2/v2.0/devicecode","http_logout_supported":true,"frontchannel_logout_supported":true,"end_session_endpoint":"https://login.microsoftonline.com/12345678-1234-1234-1234-123456789012/oauth2/v2.0/logout","claims_supported":["sub","iss","cloud_instance_name","cloud_instance_host_name","cloud_graph_host_name","msgraph_host","aud","exp","iat","auth_time","acr","nonce","preferred_username","name","tid","ver","at_hash","c_hash","email"],"kerberos_endpoint":"https://login.microsoftonline.com/12345678-1234-1234-1234-123456789012/kerberos","tenant_region_scope":"WW","cloud_instance_name":"microsoftonline.com","cloud_graph_host_name":"graph.windows.net","msgraph_host":"graph.microsoft.com","rbac_url":"https://pas.windows.net"}, [ 'Cache-Control', 'max-age=86400, private', 'Content-Type', @@ -201,35 +201,30 @@ nock('https://login.microsoftonline.com:443', {"encodedQueryParams":true}) 'P3P', 'CP="DSP CUR OTPi IND OTRi ONL FIN"', 'x-ms-request-id', - 'cab7963a-ca27-4f30-bc5b-918a6cba5001', + 'e82e7891-eb58-40f4-a1dd-57a97f1a8100', 'x-ms-ests-server', - '2.1.11654.16 - EUS ProdSlices', + '2.1.11829.4 - EUS ProdSlices', 'Set-Cookie', - 'fpc=Au5BirxN9hhJvoEMGUBOFo6nSoKIBQAAAO_IG9gOAAAA; expires=Fri, 28-May-2021 21:22:00 GMT; path=/; secure; HttpOnly; SameSite=None', + 'fpc=AiON2Z5V_ydHrb8RPEU9_5s; expires=Sat, 17-Jul-2021 22:28:52 GMT; path=/; secure; HttpOnly; SameSite=None', 'Set-Cookie', - 'esctx=AQABAAAAAAD--DLA3VO7QrddgJg7Wevr7OCgoywTeApdWaAM_wYlwMZw8iKXtIWqKCRyr6VRnr6DpWVr5sBhgTfTAf5T2134d8m4ycX8w8SehkuLSX_co9ueqHiptdkKuNYIxMYBVCH0BhDKk9X5HC7kzfLjBgwNFKb6SpDsZbXmckCQ5UE6d_ECAwMvoPTwZhAO8SmS3-ggAA; domain=.login.microsoftonline.com; path=/; secure; HttpOnly; SameSite=None', + 'esctx=AQABAAAAAAD--DLA3VO7QrddgJg7Wevr1kyeMIAhG6c2DNS4_Diig7tvhQtisdOFEcQtqhks8f15DP2NJ1gQnN6UJFnGXE_tPPhx876xofjx1AsTa7XKFj6duJnfZahAkKZc9H_uXMdCGxwhuxbIpJQo9YqTDnVWZMsKWb4YVNalIw_FWuTXKHRsuopzWuIfvSoLg95_I1IgAA; domain=.login.microsoftonline.com; path=/; secure; HttpOnly; SameSite=None', 'Set-Cookie', 'x-ms-gateway-slice=estsfd; path=/; secure; samesite=none; httponly', 'Set-Cookie', 'stsservicecookie=estsfd; path=/; secure; samesite=none; httponly', 'Date', - 'Wed, 28 Apr 2021 21:22:00 GMT', + 'Thu, 17 Jun 2021 22:28:52 GMT', 'Content-Length', - '1651' + '1753' ]); nock('https://login.microsoftonline.com:443', {"encodedQueryParams":true}) - .filteringRequestBody(function (body) { - return body.replace(/client-request-id=[^&]*/g, "client-request-id=client-request-id"); - }) - .post('/12345678-1234-1234-1234-123456789012/oauth2/v2.0/token', "client_id=azure_client_id&scope=https%3A%2F%2Fvault.azure.net%2F.default%20openid%20profile%20offline_access&grant_type=client_credentials&client-request-id=client-request-id&client_secret=azure_client_secret") + .post('/12345678-1234-1234-1234-123456789012/oauth2/v2.0/token', "client_id=azure_client_id&scope=https%3A%2F%2Fsanitized%2F&grant_type=client_credentials&client-request-id=dcb0332a-7673-423d-9386-511f8b2c7cc2&client_secret=azure_client_secret") .reply(200, {"token_type":"Bearer","expires_in":86399,"ext_expires_in":86399,"access_token":"access_token"}, [ 'Cache-Control', 'no-store, no-cache', 'Pragma', 'no-cache', - 'Content-Length', - '1315', 'Content-Type', 'application/json; charset=utf-8', 'Expires', @@ -241,33 +236,30 @@ nock('https://login.microsoftonline.com:443', {"encodedQueryParams":true}) 'P3P', 'CP="DSP CUR OTPi IND OTRi ONL FIN"', 'x-ms-request-id', - '422bd614-376f-4bda-ad74-35cb32794201', + '271dc4c1-09b0-4f2a-a1f7-d3cbc5324700', 'x-ms-ests-server', - '2.1.11654.16 - EUS ProdSlices', + '2.1.11829.4 - WUS2 ProdSlices', 'x-ms-clitelem', '1,0,0,,', 'Set-Cookie', - 'fpc=Au5BirxN9hhJvoEMGUBOFo6nSoKIBQAAAO_IG9gOAAAA4BL6UwEAAAD4yBvYDgAAAA; expires=Fri, 28-May-2021 21:22:00 GMT; path=/; secure; HttpOnly; SameSite=None', + 'fpc=Ao1gVB6FGWJOvs35Dc7NsqQNEFROAQAAAKTDXdgOAAAA; expires=Sat, 17-Jul-2021 22:28:52 GMT; path=/; secure; HttpOnly; SameSite=None', 'Set-Cookie', 'x-ms-gateway-slice=estsfd; path=/; secure; samesite=none; httponly', 'Set-Cookie', 'stsservicecookie=estsfd; path=/; secure; samesite=none; httponly', 'Date', - 'Wed, 28 Apr 2021 21:22:00 GMT' + 'Thu, 17 Jun 2021 22:28:52 GMT', + 'Content-Length', + '1315' ]); nock('https://login.microsoftonline.com:443', {"encodedQueryParams":true}) - .filteringRequestBody(function (body) { - return body.replace(/client-request-id=[^&]*/g, "client-request-id=client-request-id"); - }) - .post('/12345678-1234-1234-1234-123456789012/oauth2/v2.0/token', "client_id=azure_client_id&scope=https%3A%2F%2Fvault.azure.net%2F.default%20openid%20profile%20offline_access&grant_type=client_credentials&client-request-id=client-request-id&client_secret=azure_client_secret") + .post('/12345678-1234-1234-1234-123456789012/oauth2/v2.0/token', "client_id=azure_client_id&scope=https%3A%2F%2Fsanitized%2F&grant_type=client_credentials&client-request-id=c7e22fa7-90ee-4661-ac9f-d8d94b1175c8&client_secret=azure_client_secret") .reply(200, {"token_type":"Bearer","expires_in":86399,"ext_expires_in":86399,"access_token":"access_token"}, [ 'Cache-Control', 'no-store, no-cache', 'Pragma', 'no-cache', - 'Content-Length', - '1315', 'Content-Type', 'application/json; charset=utf-8', 'Expires', @@ -279,59 +271,27 @@ nock('https://login.microsoftonline.com:443', {"encodedQueryParams":true}) 'P3P', 'CP="DSP CUR OTPi IND OTRi ONL FIN"', 'x-ms-request-id', - 'a5c23f86-3c48-4fd5-9d25-a439c6f35f01', + 'bfa72bca-3bba-4ee3-a33b-e8a8bd826400', 'x-ms-ests-server', - '2.1.11654.16 - EUS ProdSlices', + '2.1.11829.4 - WUS2 ProdSlices', 'x-ms-clitelem', '1,0,0,,', 'Set-Cookie', - 'fpc=Au5BirxN9hhJvoEMGUBOFo6nSoKIBQAAAO_IG9gOAAAA4BL6UwEAAAD3yBvYDgAAAA; expires=Fri, 28-May-2021 21:22:00 GMT; path=/; secure; HttpOnly; SameSite=None', + 'fpc=AiON2Z5V_ydHrb8RPEU9_5sNEFROAQAAAKTDXdgOAAAA; expires=Sat, 17-Jul-2021 22:28:52 GMT; path=/; secure; HttpOnly; SameSite=None', 'Set-Cookie', 'x-ms-gateway-slice=estsfd; path=/; secure; samesite=none; httponly', 'Set-Cookie', 'stsservicecookie=estsfd; path=/; secure; samesite=none; httponly', 'Date', - 'Wed, 28 Apr 2021 21:22:00 GMT' -]); - -nock('https://keyvault_name.vault.azure.net:443', {"encodedQueryParams":true}) - .post('/keys/challengeAuthKeyName-Authenticationshouldworkforparallelrequests--1/create', {"kty":"RSA"}) - .query(true) - .reply(200, {"key":{"kid":"https://keyvault_name.vault.azure.net/keys/challengeAuthKeyName-Authenticationshouldworkforparallelrequests--1/36606918bb1d49a6af8ab8335b7f3c8c","kty":"RSA","key_ops":["encrypt","decrypt","sign","verify","wrapKey","unwrapKey"],"n":"oHTwiHZ9AcRwEm6V80MeDJXBJ2ezVp5WLFTX30zQshSnQ25zhIV3uo0b5cDvLBUYN_2EU4fLOgyDx3MwLq-JSZt7FxUDXaMjb8CCMhcIqGORMeNIBcriIRX6dtBiF3nTosmXuaigzK5VuOxJxfrB50FoviJ8GPg4HTEnYmWHmGHVLysu3UoW-8RVO2ZTkLmMnMPhxb-Fn5sqdD2HJ4ZbE800irZIJaARQ7mAPBsWDV1XcNASDlL5TxOt2DU7Nt5v4tZzBoMaBK1mkJqamSJmaF6z4onLFO4adbXyfXe0F2m2CuYJ5hG2vtlv9sMnBdECeV2pi4NoFWc1oxchCwGeTQ","e":"AQAB"},"attributes":{"enabled":true,"created":1619644920,"updated":1619644920,"recoveryLevel":"CustomizedRecoverable+Purgeable","recoverableDays":7}}, [ - 'Cache-Control', - 'no-cache', - 'Pragma', - 'no-cache', - 'Content-Type', - 'application/json; charset=utf-8', - 'Expires', - '-1', - 'x-ms-keyvault-region', - 'westus2', - 'x-ms-client-request-id', - '10e659a5-a622-4f06-b9d7-a5cbbca9b545', - 'x-ms-request-id', - '42bbc385-b29e-4022-be11-bf52e892b5be', - 'x-ms-keyvault-service-version', - '1.2.265.0', - 'x-ms-keyvault-network-info', - 'conn_type=Ipv4;addr=72.68.182.20;act_addr_fam=InterNetwork;', - 'X-Powered-By', - 'ASP.NET', - 'Strict-Transport-Security', - 'max-age=31536000;includeSubDomains', - 'X-Content-Type-Options', - 'nosniff', - 'Date', - 'Wed, 28 Apr 2021 21:22:00 GMT', + 'Thu, 17 Jun 2021 22:28:52 GMT', 'Content-Length', - '759' + '1315' ]); nock('https://keyvault_name.vault.azure.net:443', {"encodedQueryParams":true}) - .post('/keys/challengeAuthKeyName-Authenticationshouldworkforparallelrequests--0/create', {"kty":"RSA"}) + .get('/keys') .query(true) - .reply(200, {"key":{"kid":"https://keyvault_name.vault.azure.net/keys/challengeAuthKeyName-Authenticationshouldworkforparallelrequests--0/5f2d292ee95242a487cfc425219d9124","kty":"RSA","key_ops":["encrypt","decrypt","sign","verify","wrapKey","unwrapKey"],"n":"voyWZZb4sL6v60qPCuY85WOt3GTGatXko5vLEwUvJ3sPI6hPqQhxnsiCfE9Ksg2m198ooONqEyN59KwJybUyt0dWf44WyAOaQRCmz0LhhokYG6geFSd6aXBIMxsXVqcFI-q8YjhCFAQhTdLebVJJZrx-brcdxM3KcGzb-tK1we-QpfOxEdBV7vgClaG4h9ie0ws3BGMCnU6VREAlNC6x2htMSLJEEkF656Aoco5Uiq3xXTY_az_lPYcyg6xkim24jInqBwhDkEy76I1ibHHzmNDWRfKuPGyYz6ZqLiKnP7rybHW9zjkqUw5QEA8AuSYDrxGZKqNct_LVvj4nzTtJXQ","e":"AQAB"},"attributes":{"enabled":true,"created":1619644920,"updated":1619644920,"recoveryLevel":"CustomizedRecoverable+Purgeable","recoverableDays":7}}, [ + .reply(200, {"value":[{"kid":"https://keyvault_name.vault.azure.net/keys/challengeAuthKeyName-Authenticationshouldworkforparallelrequests-304369368630208-1","attributes":{"enabled":true,"created":1623967959,"updated":1623967959,"recoveryLevel":"CustomizedRecoverable+Purgeable","recoverableDays":7}},{"kid":"https://keyvault_name.vault.azure.net/keys/challengeAuthKeyName-Onceauthenticatednewrequestsshouldnotauthenticateagain-9173446555051745-1","attributes":{"enabled":true,"created":1623968785,"updated":1623968785,"recoveryLevel":"CustomizedRecoverable+Purgeable","recoverableDays":7}}],"nextLink":null}, [ 'Cache-Control', 'no-cache', 'Pragma', @@ -343,13 +303,13 @@ nock('https://keyvault_name.vault.azure.net:443', {"encodedQueryParams":true}) 'x-ms-keyvault-region', 'westus2', 'x-ms-client-request-id', - '9f2f394c-483f-4815-8731-b24792f7d2ea', + '9495860f-384c-482d-ae6e-28a855ee4861', 'x-ms-request-id', - 'e0562fe7-67d5-4faf-8d97-191f6c1326ea', + '8b648788-81d5-4f11-95b8-39fc143b0bdc', 'x-ms-keyvault-service-version', - '1.2.265.0', + '1.9.12.0', 'x-ms-keyvault-network-info', - 'conn_type=Ipv4;addr=72.68.182.20;act_addr_fam=InterNetwork;', + 'conn_type=Ipv4;addr=50.35.231.105;act_addr_fam=InterNetwork;', 'X-Powered-By', 'ASP.NET', 'Strict-Transport-Security', @@ -357,15 +317,15 @@ nock('https://keyvault_name.vault.azure.net:443', {"encodedQueryParams":true}) 'X-Content-Type-Options', 'nosniff', 'Date', - 'Wed, 28 Apr 2021 21:22:00 GMT', + 'Thu, 17 Jun 2021 22:28:52 GMT', 'Content-Length', - '759' + '585' ]); nock('https://keyvault_name.vault.azure.net:443', {"encodedQueryParams":true}) - .delete('/keys/challengeAuthKeyName-Authenticationshouldworkforparallelrequests--0') + .get('/keys') .query(true) - .reply(200, {"recoveryId":"https://keyvault_name.vault.azure.net/deletedkeys/challengeAuthKeyName-Authenticationshouldworkforparallelrequests--0","deletedDate":1619644921,"scheduledPurgeDate":1620249721,"key":{"kid":"https://keyvault_name.vault.azure.net/keys/challengeAuthKeyName-Authenticationshouldworkforparallelrequests--0/5f2d292ee95242a487cfc425219d9124","kty":"RSA","key_ops":["encrypt","decrypt","sign","verify","wrapKey","unwrapKey"],"n":"voyWZZb4sL6v60qPCuY85WOt3GTGatXko5vLEwUvJ3sPI6hPqQhxnsiCfE9Ksg2m198ooONqEyN59KwJybUyt0dWf44WyAOaQRCmz0LhhokYG6geFSd6aXBIMxsXVqcFI-q8YjhCFAQhTdLebVJJZrx-brcdxM3KcGzb-tK1we-QpfOxEdBV7vgClaG4h9ie0ws3BGMCnU6VREAlNC6x2htMSLJEEkF656Aoco5Uiq3xXTY_az_lPYcyg6xkim24jInqBwhDkEy76I1ibHHzmNDWRfKuPGyYz6ZqLiKnP7rybHW9zjkqUw5QEA8AuSYDrxGZKqNct_LVvj4nzTtJXQ","e":"AQAB"},"attributes":{"enabled":true,"created":1619644920,"updated":1619644920,"recoveryLevel":"CustomizedRecoverable+Purgeable","recoverableDays":7}}, [ + .reply(200, {"value":[{"kid":"https://keyvault_name.vault.azure.net/keys/challengeAuthKeyName-Authenticationshouldworkforparallelrequests-304369368630208-1","attributes":{"enabled":true,"created":1623967959,"updated":1623967959,"recoveryLevel":"CustomizedRecoverable+Purgeable","recoverableDays":7}},{"kid":"https://keyvault_name.vault.azure.net/keys/challengeAuthKeyName-Onceauthenticatednewrequestsshouldnotauthenticateagain-9173446555051745-1","attributes":{"enabled":true,"created":1623968785,"updated":1623968785,"recoveryLevel":"CustomizedRecoverable+Purgeable","recoverableDays":7}}],"nextLink":null}, [ 'Cache-Control', 'no-cache', 'Pragma', @@ -377,13 +337,13 @@ nock('https://keyvault_name.vault.azure.net:443', {"encodedQueryParams":true}) 'x-ms-keyvault-region', 'westus2', 'x-ms-client-request-id', - '442daa64-d930-4c58-b64e-2f9a306df967', + 'fbd8541d-4d8f-4964-a1d0-237def9e36cf', 'x-ms-request-id', - '41769ea6-5ca5-43f7-beb1-7a93552a3b76', + '3ffa1155-f729-4f52-8367-ce2700818857', 'x-ms-keyvault-service-version', - '1.2.265.0', + '1.9.12.0', 'x-ms-keyvault-network-info', - 'conn_type=Ipv4;addr=72.68.182.20;act_addr_fam=InterNetwork;', + 'conn_type=Ipv4;addr=50.35.231.105;act_addr_fam=InterNetwork;', 'X-Powered-By', 'ASP.NET', 'Strict-Transport-Security', @@ -391,611 +351,7 @@ nock('https://keyvault_name.vault.azure.net:443', {"encodedQueryParams":true}) 'X-Content-Type-Options', 'nosniff', 'Date', - 'Wed, 28 Apr 2021 21:22:00 GMT', - 'Content-Length', - '963' -]); - -nock('https://keyvault_name.vault.azure.net:443', {"encodedQueryParams":true}) - .get('/deletedkeys/challengeAuthKeyName-Authenticationshouldworkforparallelrequests--0') - .query(true) - .reply(404, {"error":{"code":"KeyNotFound","message":"Deleted Key not found: challengeAuthKeyName-Authenticationshouldworkforparallelrequests--0"}}, [ - 'Cache-Control', - 'no-cache', - 'Pragma', - 'no-cache', + 'Thu, 17 Jun 2021 22:28:52 GMT', 'Content-Length', - '152', - 'Content-Type', - 'application/json; charset=utf-8', - 'Expires', - '-1', - 'x-ms-keyvault-region', - 'westus2', - 'x-ms-client-request-id', - '3151150b-8766-4fdf-b44f-a7e044ff2588', - 'x-ms-request-id', - '3efb1776-7b21-41fc-b795-81d80880c00a', - 'x-ms-keyvault-service-version', - '1.2.265.0', - 'x-ms-keyvault-network-info', - 'conn_type=Ipv4;addr=72.68.182.20;act_addr_fam=InterNetwork;', - 'X-Powered-By', - 'ASP.NET', - 'Strict-Transport-Security', - 'max-age=31536000;includeSubDomains', - 'X-Content-Type-Options', - 'nosniff', - 'Date', - 'Wed, 28 Apr 2021 21:22:00 GMT' -]); - -nock('https://keyvault_name.vault.azure.net:443', {"encodedQueryParams":true}) - .get('/deletedkeys/challengeAuthKeyName-Authenticationshouldworkforparallelrequests--0') - .query(true) - .reply(404, {"error":{"code":"KeyNotFound","message":"Deleted Key not found: challengeAuthKeyName-Authenticationshouldworkforparallelrequests--0"}}, [ - 'Cache-Control', - 'no-cache', - 'Pragma', - 'no-cache', - 'Content-Length', - '152', - 'Content-Type', - 'application/json; charset=utf-8', - 'Expires', - '-1', - 'x-ms-keyvault-region', - 'westus2', - 'x-ms-client-request-id', - 'de8384f8-9891-4cf1-9468-ac81360bd167', - 'x-ms-request-id', - 'cbc142d3-113c-4844-b787-77723df4dda7', - 'x-ms-keyvault-service-version', - '1.2.265.0', - 'x-ms-keyvault-network-info', - 'conn_type=Ipv4;addr=72.68.182.20;act_addr_fam=InterNetwork;', - 'X-Powered-By', - 'ASP.NET', - 'Strict-Transport-Security', - 'max-age=31536000;includeSubDomains', - 'X-Content-Type-Options', - 'nosniff', - 'Date', - 'Wed, 28 Apr 2021 21:22:00 GMT' -]); - -nock('https://keyvault_name.vault.azure.net:443', {"encodedQueryParams":true}) - .get('/deletedkeys/challengeAuthKeyName-Authenticationshouldworkforparallelrequests--0') - .query(true) - .reply(404, {"error":{"code":"KeyNotFound","message":"Deleted Key not found: challengeAuthKeyName-Authenticationshouldworkforparallelrequests--0"}}, [ - 'Cache-Control', - 'no-cache', - 'Pragma', - 'no-cache', - 'Content-Length', - '152', - 'Content-Type', - 'application/json; charset=utf-8', - 'Expires', - '-1', - 'x-ms-keyvault-region', - 'westus2', - 'x-ms-client-request-id', - '8b52d3d7-f1d8-4c36-82b8-e25519b956ca', - 'x-ms-request-id', - 'f6c12798-ba6e-48d4-a001-bedc3fe81de5', - 'x-ms-keyvault-service-version', - '1.2.265.0', - 'x-ms-keyvault-network-info', - 'conn_type=Ipv4;addr=72.68.182.20;act_addr_fam=InterNetwork;', - 'X-Powered-By', - 'ASP.NET', - 'Strict-Transport-Security', - 'max-age=31536000;includeSubDomains', - 'X-Content-Type-Options', - 'nosniff', - 'Date', - 'Wed, 28 Apr 2021 21:22:03 GMT' -]); - -nock('https://keyvault_name.vault.azure.net:443', {"encodedQueryParams":true}) - .get('/deletedkeys/challengeAuthKeyName-Authenticationshouldworkforparallelrequests--0') - .query(true) - .reply(404, {"error":{"code":"KeyNotFound","message":"Deleted Key not found: challengeAuthKeyName-Authenticationshouldworkforparallelrequests--0"}}, [ - 'Cache-Control', - 'no-cache', - 'Pragma', - 'no-cache', - 'Content-Length', - '152', - 'Content-Type', - 'application/json; charset=utf-8', - 'Expires', - '-1', - 'x-ms-keyvault-region', - 'westus2', - 'x-ms-client-request-id', - '3e0c0c87-eb5f-4ce5-95c2-3ead07af5157', - 'x-ms-request-id', - 'ee7ed6c9-cc83-4a35-b924-423524378b31', - 'x-ms-keyvault-service-version', - '1.2.265.0', - 'x-ms-keyvault-network-info', - 'conn_type=Ipv4;addr=72.68.182.20;act_addr_fam=InterNetwork;', - 'X-Powered-By', - 'ASP.NET', - 'Strict-Transport-Security', - 'max-age=31536000;includeSubDomains', - 'X-Content-Type-Options', - 'nosniff', - 'Date', - 'Wed, 28 Apr 2021 21:22:05 GMT' -]); - -nock('https://keyvault_name.vault.azure.net:443', {"encodedQueryParams":true}) - .get('/deletedkeys/challengeAuthKeyName-Authenticationshouldworkforparallelrequests--0') - .query(true) - .reply(404, {"error":{"code":"KeyNotFound","message":"Deleted Key not found: challengeAuthKeyName-Authenticationshouldworkforparallelrequests--0"}}, [ - 'Cache-Control', - 'no-cache', - 'Pragma', - 'no-cache', - 'Content-Length', - '152', - 'Content-Type', - 'application/json; charset=utf-8', - 'Expires', - '-1', - 'x-ms-keyvault-region', - 'westus2', - 'x-ms-client-request-id', - '6e88fe93-24a9-4f23-9c0e-5580ecbf18ad', - 'x-ms-request-id', - '31fcbde6-fcb9-43c7-a411-2c2af5b2851d', - 'x-ms-keyvault-service-version', - '1.2.265.0', - 'x-ms-keyvault-network-info', - 'conn_type=Ipv4;addr=72.68.182.20;act_addr_fam=InterNetwork;', - 'X-Powered-By', - 'ASP.NET', - 'Strict-Transport-Security', - 'max-age=31536000;includeSubDomains', - 'X-Content-Type-Options', - 'nosniff', - 'Date', - 'Wed, 28 Apr 2021 21:22:07 GMT' -]); - -nock('https://keyvault_name.vault.azure.net:443', {"encodedQueryParams":true}) - .get('/deletedkeys/challengeAuthKeyName-Authenticationshouldworkforparallelrequests--0') - .query(true) - .reply(404, {"error":{"code":"KeyNotFound","message":"Deleted Key not found: challengeAuthKeyName-Authenticationshouldworkforparallelrequests--0"}}, [ - 'Cache-Control', - 'no-cache', - 'Pragma', - 'no-cache', - 'Content-Length', - '152', - 'Content-Type', - 'application/json; charset=utf-8', - 'Expires', - '-1', - 'x-ms-keyvault-region', - 'westus2', - 'x-ms-client-request-id', - '976d0a92-ade3-4c7a-b2ba-2e8ef29fb9ce', - 'x-ms-request-id', - '1cbf230d-f345-4869-b3b5-6dcb196dea96', - 'x-ms-keyvault-service-version', - '1.2.265.0', - 'x-ms-keyvault-network-info', - 'conn_type=Ipv4;addr=72.68.182.20;act_addr_fam=InterNetwork;', - 'X-Powered-By', - 'ASP.NET', - 'Strict-Transport-Security', - 'max-age=31536000;includeSubDomains', - 'X-Content-Type-Options', - 'nosniff', - 'Date', - 'Wed, 28 Apr 2021 21:22:09 GMT' -]); - -nock('https://keyvault_name.vault.azure.net:443', {"encodedQueryParams":true}) - .get('/deletedkeys/challengeAuthKeyName-Authenticationshouldworkforparallelrequests--0') - .query(true) - .reply(404, {"error":{"code":"KeyNotFound","message":"Deleted Key not found: challengeAuthKeyName-Authenticationshouldworkforparallelrequests--0"}}, [ - 'Cache-Control', - 'no-cache', - 'Pragma', - 'no-cache', - 'Content-Length', - '152', - 'Content-Type', - 'application/json; charset=utf-8', - 'Expires', - '-1', - 'x-ms-keyvault-region', - 'westus2', - 'x-ms-client-request-id', - '28475bc4-ff71-46f4-a096-1481d8ec2cb1', - 'x-ms-request-id', - 'a5061e04-1339-4842-9f88-ea57449063b9', - 'x-ms-keyvault-service-version', - '1.2.265.0', - 'x-ms-keyvault-network-info', - 'conn_type=Ipv4;addr=72.68.182.20;act_addr_fam=InterNetwork;', - 'X-Powered-By', - 'ASP.NET', - 'Strict-Transport-Security', - 'max-age=31536000;includeSubDomains', - 'X-Content-Type-Options', - 'nosniff', - 'Date', - 'Wed, 28 Apr 2021 21:22:12 GMT' -]); - -nock('https://keyvault_name.vault.azure.net:443', {"encodedQueryParams":true}) - .get('/deletedkeys/challengeAuthKeyName-Authenticationshouldworkforparallelrequests--0') - .query(true) - .reply(200, {"recoveryId":"https://keyvault_name.vault.azure.net/deletedkeys/challengeAuthKeyName-Authenticationshouldworkforparallelrequests--0","deletedDate":1619644921,"scheduledPurgeDate":1620249721,"key":{"kid":"https://keyvault_name.vault.azure.net/keys/challengeAuthKeyName-Authenticationshouldworkforparallelrequests--0/5f2d292ee95242a487cfc425219d9124","kty":"RSA","key_ops":["encrypt","decrypt","sign","verify","wrapKey","unwrapKey"],"n":"voyWZZb4sL6v60qPCuY85WOt3GTGatXko5vLEwUvJ3sPI6hPqQhxnsiCfE9Ksg2m198ooONqEyN59KwJybUyt0dWf44WyAOaQRCmz0LhhokYG6geFSd6aXBIMxsXVqcFI-q8YjhCFAQhTdLebVJJZrx-brcdxM3KcGzb-tK1we-QpfOxEdBV7vgClaG4h9ie0ws3BGMCnU6VREAlNC6x2htMSLJEEkF656Aoco5Uiq3xXTY_az_lPYcyg6xkim24jInqBwhDkEy76I1ibHHzmNDWRfKuPGyYz6ZqLiKnP7rybHW9zjkqUw5QEA8AuSYDrxGZKqNct_LVvj4nzTtJXQ","e":"AQAB"},"attributes":{"enabled":true,"created":1619644920,"updated":1619644920,"recoveryLevel":"CustomizedRecoverable+Purgeable","recoverableDays":7}}, [ - 'Cache-Control', - 'no-cache', - 'Pragma', - 'no-cache', - 'Content-Type', - 'application/json; charset=utf-8', - 'Expires', - '-1', - 'x-ms-keyvault-region', - 'westus2', - 'x-ms-client-request-id', - '75cfb79a-1644-42d6-aa87-fd9e7eba5930', - 'x-ms-request-id', - 'a6a96fff-c898-4310-b455-03f5907aa114', - 'x-ms-keyvault-service-version', - '1.2.265.0', - 'x-ms-keyvault-network-info', - 'conn_type=Ipv4;addr=72.68.182.20;act_addr_fam=InterNetwork;', - 'X-Powered-By', - 'ASP.NET', - 'Strict-Transport-Security', - 'max-age=31536000;includeSubDomains', - 'X-Content-Type-Options', - 'nosniff', - 'Date', - 'Wed, 28 Apr 2021 21:22:14 GMT', - 'Content-Length', - '963' -]); - -nock('https://keyvault_name.vault.azure.net:443', {"encodedQueryParams":true}) - .delete('/deletedkeys/challengeAuthKeyName-Authenticationshouldworkforparallelrequests--0') - .query(true) - .reply(204, "", [ - 'Cache-Control', - 'no-cache', - 'Pragma', - 'no-cache', - 'Expires', - '-1', - 'x-ms-keyvault-region', - 'westus2', - 'x-ms-client-request-id', - '90d1c0f6-e102-4af1-95c9-247639713d92', - 'x-ms-request-id', - '84f7ecbc-d19a-455a-afa1-fb9f9706b3e2', - 'x-ms-keyvault-service-version', - '1.2.265.0', - 'x-ms-keyvault-network-info', - 'conn_type=Ipv4;addr=72.68.182.20;act_addr_fam=InterNetwork;', - 'X-Powered-By', - 'ASP.NET', - 'Strict-Transport-Security', - 'max-age=31536000;includeSubDomains', - 'X-Content-Type-Options', - 'nosniff', - 'Date', - 'Wed, 28 Apr 2021 21:22:14 GMT' -]); - -nock('https://keyvault_name.vault.azure.net:443', {"encodedQueryParams":true}) - .delete('/keys/challengeAuthKeyName-Authenticationshouldworkforparallelrequests--1') - .query(true) - .reply(200, {"recoveryId":"https://keyvault_name.vault.azure.net/deletedkeys/challengeAuthKeyName-Authenticationshouldworkforparallelrequests--1","deletedDate":1619644934,"scheduledPurgeDate":1620249734,"key":{"kid":"https://keyvault_name.vault.azure.net/keys/challengeAuthKeyName-Authenticationshouldworkforparallelrequests--1/36606918bb1d49a6af8ab8335b7f3c8c","kty":"RSA","key_ops":["encrypt","decrypt","sign","verify","wrapKey","unwrapKey"],"n":"oHTwiHZ9AcRwEm6V80MeDJXBJ2ezVp5WLFTX30zQshSnQ25zhIV3uo0b5cDvLBUYN_2EU4fLOgyDx3MwLq-JSZt7FxUDXaMjb8CCMhcIqGORMeNIBcriIRX6dtBiF3nTosmXuaigzK5VuOxJxfrB50FoviJ8GPg4HTEnYmWHmGHVLysu3UoW-8RVO2ZTkLmMnMPhxb-Fn5sqdD2HJ4ZbE800irZIJaARQ7mAPBsWDV1XcNASDlL5TxOt2DU7Nt5v4tZzBoMaBK1mkJqamSJmaF6z4onLFO4adbXyfXe0F2m2CuYJ5hG2vtlv9sMnBdECeV2pi4NoFWc1oxchCwGeTQ","e":"AQAB"},"attributes":{"enabled":true,"created":1619644920,"updated":1619644920,"recoveryLevel":"CustomizedRecoverable+Purgeable","recoverableDays":7}}, [ - 'Cache-Control', - 'no-cache', - 'Pragma', - 'no-cache', - 'Content-Type', - 'application/json; charset=utf-8', - 'Expires', - '-1', - 'x-ms-keyvault-region', - 'westus2', - 'x-ms-client-request-id', - '542c04d4-f45b-4b76-a232-1ac569a49b5e', - 'x-ms-request-id', - '5085bf1b-2170-4d03-b0c7-ff6598d804ec', - 'x-ms-keyvault-service-version', - '1.2.265.0', - 'x-ms-keyvault-network-info', - 'conn_type=Ipv4;addr=72.68.182.20;act_addr_fam=InterNetwork;', - 'X-Powered-By', - 'ASP.NET', - 'Strict-Transport-Security', - 'max-age=31536000;includeSubDomains', - 'X-Content-Type-Options', - 'nosniff', - 'Date', - 'Wed, 28 Apr 2021 21:22:14 GMT', - 'Content-Length', - '963' -]); - -nock('https://keyvault_name.vault.azure.net:443', {"encodedQueryParams":true}) - .get('/deletedkeys/challengeAuthKeyName-Authenticationshouldworkforparallelrequests--1') - .query(true) - .reply(404, {"error":{"code":"KeyNotFound","message":"Deleted Key not found: challengeAuthKeyName-Authenticationshouldworkforparallelrequests--1"}}, [ - 'Cache-Control', - 'no-cache', - 'Pragma', - 'no-cache', - 'Content-Length', - '152', - 'Content-Type', - 'application/json; charset=utf-8', - 'Expires', - '-1', - 'x-ms-keyvault-region', - 'westus2', - 'x-ms-client-request-id', - '9bf070db-b3f8-4204-a7bd-82f78029bd9e', - 'x-ms-request-id', - '1f6d923d-810b-4573-aa02-5cf9014488c5', - 'x-ms-keyvault-service-version', - '1.2.265.0', - 'x-ms-keyvault-network-info', - 'conn_type=Ipv4;addr=72.68.182.20;act_addr_fam=InterNetwork;', - 'X-Powered-By', - 'ASP.NET', - 'Strict-Transport-Security', - 'max-age=31536000;includeSubDomains', - 'X-Content-Type-Options', - 'nosniff', - 'Date', - 'Wed, 28 Apr 2021 21:22:14 GMT' -]); - -nock('https://keyvault_name.vault.azure.net:443', {"encodedQueryParams":true}) - .get('/deletedkeys/challengeAuthKeyName-Authenticationshouldworkforparallelrequests--1') - .query(true) - .reply(404, {"error":{"code":"KeyNotFound","message":"Deleted Key not found: challengeAuthKeyName-Authenticationshouldworkforparallelrequests--1"}}, [ - 'Cache-Control', - 'no-cache', - 'Pragma', - 'no-cache', - 'Content-Length', - '152', - 'Content-Type', - 'application/json; charset=utf-8', - 'Expires', - '-1', - 'x-ms-keyvault-region', - 'westus2', - 'x-ms-client-request-id', - '5180401d-4217-4210-a619-dcfefb229c86', - 'x-ms-request-id', - '98fce25e-6733-4dc5-8d77-26eb23387d5f', - 'x-ms-keyvault-service-version', - '1.2.265.0', - 'x-ms-keyvault-network-info', - 'conn_type=Ipv4;addr=72.68.182.20;act_addr_fam=InterNetwork;', - 'X-Powered-By', - 'ASP.NET', - 'Strict-Transport-Security', - 'max-age=31536000;includeSubDomains', - 'X-Content-Type-Options', - 'nosniff', - 'Date', - 'Wed, 28 Apr 2021 21:22:14 GMT' -]); - -nock('https://keyvault_name.vault.azure.net:443', {"encodedQueryParams":true}) - .get('/deletedkeys/challengeAuthKeyName-Authenticationshouldworkforparallelrequests--1') - .query(true) - .reply(404, {"error":{"code":"KeyNotFound","message":"Deleted Key not found: challengeAuthKeyName-Authenticationshouldworkforparallelrequests--1"}}, [ - 'Cache-Control', - 'no-cache', - 'Pragma', - 'no-cache', - 'Content-Length', - '152', - 'Content-Type', - 'application/json; charset=utf-8', - 'Expires', - '-1', - 'x-ms-keyvault-region', - 'westus2', - 'x-ms-client-request-id', - '79b44d6c-1d41-4e9d-ba77-2acc92dfabad', - 'x-ms-request-id', - '8a736778-337f-449c-a7b2-0d691a50ac42', - 'x-ms-keyvault-service-version', - '1.2.265.0', - 'x-ms-keyvault-network-info', - 'conn_type=Ipv4;addr=72.68.182.20;act_addr_fam=InterNetwork;', - 'X-Powered-By', - 'ASP.NET', - 'Strict-Transport-Security', - 'max-age=31536000;includeSubDomains', - 'X-Content-Type-Options', - 'nosniff', - 'Date', - 'Wed, 28 Apr 2021 21:22:16 GMT' -]); - -nock('https://keyvault_name.vault.azure.net:443', {"encodedQueryParams":true}) - .get('/deletedkeys/challengeAuthKeyName-Authenticationshouldworkforparallelrequests--1') - .query(true) - .reply(404, {"error":{"code":"KeyNotFound","message":"Deleted Key not found: challengeAuthKeyName-Authenticationshouldworkforparallelrequests--1"}}, [ - 'Cache-Control', - 'no-cache', - 'Pragma', - 'no-cache', - 'Content-Length', - '152', - 'Content-Type', - 'application/json; charset=utf-8', - 'Expires', - '-1', - 'x-ms-keyvault-region', - 'westus2', - 'x-ms-client-request-id', - 'bc76453b-5846-41bf-a43b-d3a905a558e4', - 'x-ms-request-id', - 'e18205aa-d7c8-4f80-91a8-a6ecf3aa0976', - 'x-ms-keyvault-service-version', - '1.2.265.0', - 'x-ms-keyvault-network-info', - 'conn_type=Ipv4;addr=72.68.182.20;act_addr_fam=InterNetwork;', - 'X-Powered-By', - 'ASP.NET', - 'Strict-Transport-Security', - 'max-age=31536000;includeSubDomains', - 'X-Content-Type-Options', - 'nosniff', - 'Date', - 'Wed, 28 Apr 2021 21:22:19 GMT' -]); - -nock('https://keyvault_name.vault.azure.net:443', {"encodedQueryParams":true}) - .get('/deletedkeys/challengeAuthKeyName-Authenticationshouldworkforparallelrequests--1') - .query(true) - .reply(404, {"error":{"code":"KeyNotFound","message":"Deleted Key not found: challengeAuthKeyName-Authenticationshouldworkforparallelrequests--1"}}, [ - 'Cache-Control', - 'no-cache', - 'Pragma', - 'no-cache', - 'Content-Length', - '152', - 'Content-Type', - 'application/json; charset=utf-8', - 'Expires', - '-1', - 'x-ms-keyvault-region', - 'westus2', - 'x-ms-client-request-id', - 'c71876a6-9e8f-415a-81af-e46ba5c0fdaa', - 'x-ms-request-id', - '0cf9bc86-0027-43df-acfa-c6138a460ca0', - 'x-ms-keyvault-service-version', - '1.2.265.0', - 'x-ms-keyvault-network-info', - 'conn_type=Ipv4;addr=72.68.182.20;act_addr_fam=InterNetwork;', - 'X-Powered-By', - 'ASP.NET', - 'Strict-Transport-Security', - 'max-age=31536000;includeSubDomains', - 'X-Content-Type-Options', - 'nosniff', - 'Date', - 'Wed, 28 Apr 2021 21:22:20 GMT' -]); - -nock('https://keyvault_name.vault.azure.net:443', {"encodedQueryParams":true}) - .get('/deletedkeys/challengeAuthKeyName-Authenticationshouldworkforparallelrequests--1') - .query(true) - .reply(404, {"error":{"code":"KeyNotFound","message":"Deleted Key not found: challengeAuthKeyName-Authenticationshouldworkforparallelrequests--1"}}, [ - 'Cache-Control', - 'no-cache', - 'Pragma', - 'no-cache', - 'Content-Length', - '152', - 'Content-Type', - 'application/json; charset=utf-8', - 'Expires', - '-1', - 'x-ms-keyvault-region', - 'westus2', - 'x-ms-client-request-id', - 'f5317334-460e-4e83-947c-908ec52f2313', - 'x-ms-request-id', - '4e3f76c2-c374-4e89-88d7-493973b3a79f', - 'x-ms-keyvault-service-version', - '1.2.265.0', - 'x-ms-keyvault-network-info', - 'conn_type=Ipv4;addr=72.68.182.20;act_addr_fam=InterNetwork;', - 'X-Powered-By', - 'ASP.NET', - 'Strict-Transport-Security', - 'max-age=31536000;includeSubDomains', - 'X-Content-Type-Options', - 'nosniff', - 'Date', - 'Wed, 28 Apr 2021 21:22:22 GMT' -]); - -nock('https://keyvault_name.vault.azure.net:443', {"encodedQueryParams":true}) - .get('/deletedkeys/challengeAuthKeyName-Authenticationshouldworkforparallelrequests--1') - .query(true) - .reply(200, {"recoveryId":"https://keyvault_name.vault.azure.net/deletedkeys/challengeAuthKeyName-Authenticationshouldworkforparallelrequests--1","deletedDate":1619644934,"scheduledPurgeDate":1620249734,"key":{"kid":"https://keyvault_name.vault.azure.net/keys/challengeAuthKeyName-Authenticationshouldworkforparallelrequests--1/36606918bb1d49a6af8ab8335b7f3c8c","kty":"RSA","key_ops":["encrypt","decrypt","sign","verify","wrapKey","unwrapKey"],"n":"oHTwiHZ9AcRwEm6V80MeDJXBJ2ezVp5WLFTX30zQshSnQ25zhIV3uo0b5cDvLBUYN_2EU4fLOgyDx3MwLq-JSZt7FxUDXaMjb8CCMhcIqGORMeNIBcriIRX6dtBiF3nTosmXuaigzK5VuOxJxfrB50FoviJ8GPg4HTEnYmWHmGHVLysu3UoW-8RVO2ZTkLmMnMPhxb-Fn5sqdD2HJ4ZbE800irZIJaARQ7mAPBsWDV1XcNASDlL5TxOt2DU7Nt5v4tZzBoMaBK1mkJqamSJmaF6z4onLFO4adbXyfXe0F2m2CuYJ5hG2vtlv9sMnBdECeV2pi4NoFWc1oxchCwGeTQ","e":"AQAB"},"attributes":{"enabled":true,"created":1619644920,"updated":1619644920,"recoveryLevel":"CustomizedRecoverable+Purgeable","recoverableDays":7}}, [ - 'Cache-Control', - 'no-cache', - 'Pragma', - 'no-cache', - 'Content-Type', - 'application/json; charset=utf-8', - 'Expires', - '-1', - 'x-ms-keyvault-region', - 'westus2', - 'x-ms-client-request-id', - 'd8b47d1e-4968-4263-9714-451e9a30775d', - 'x-ms-request-id', - '51df215f-a88c-4a8d-aefe-08a7b7e2baa8', - 'x-ms-keyvault-service-version', - '1.2.265.0', - 'x-ms-keyvault-network-info', - 'conn_type=Ipv4;addr=72.68.182.20;act_addr_fam=InterNetwork;', - 'X-Powered-By', - 'ASP.NET', - 'Strict-Transport-Security', - 'max-age=31536000;includeSubDomains', - 'X-Content-Type-Options', - 'nosniff', - 'Date', - 'Wed, 28 Apr 2021 21:22:25 GMT', - 'Content-Length', - '963' -]); - -nock('https://keyvault_name.vault.azure.net:443', {"encodedQueryParams":true}) - .delete('/deletedkeys/challengeAuthKeyName-Authenticationshouldworkforparallelrequests--1') - .query(true) - .reply(204, "", [ - 'Cache-Control', - 'no-cache', - 'Pragma', - 'no-cache', - 'Expires', - '-1', - 'x-ms-keyvault-region', - 'westus2', - 'x-ms-client-request-id', - '626e97b0-dd49-490f-8ce2-8db3dd7f969e', - 'x-ms-request-id', - 'b171962d-824b-4014-a519-664a3bd3e57c', - 'x-ms-keyvault-service-version', - '1.2.265.0', - 'x-ms-keyvault-network-info', - 'conn_type=Ipv4;addr=72.68.182.20;act_addr_fam=InterNetwork;', - 'X-Powered-By', - 'ASP.NET', - 'Strict-Transport-Security', - 'max-age=31536000;includeSubDomains', - 'X-Content-Type-Options', - 'nosniff', - 'Date', - 'Wed, 28 Apr 2021 21:22:25 GMT' + '585' ]); diff --git a/sdk/keyvault/keyvault-keys/recordings/node/challenge_based_authentication_tests/recording_once_authenticated_new_requests_should_not_authenticate_again.js b/sdk/keyvault/keyvault-keys/recordings/node/challenge_based_authentication_tests/recording_once_authenticated_new_requests_should_not_authenticate_again.js index 5cf1421b5c72..8dc3c88f2511 100644 --- a/sdk/keyvault/keyvault-keys/recordings/node/challenge_based_authentication_tests/recording_once_authenticated_new_requests_should_not_authenticate_again.js +++ b/sdk/keyvault/keyvault-keys/recordings/node/challenge_based_authentication_tests/recording_once_authenticated_new_requests_should_not_authenticate_again.js @@ -1,19 +1,19 @@ let nock = require('nock'); -module.exports.hash = "48ebd398ae9a388f2fc207b93dce0aaf"; +module.exports.hash = "5e42e75e0ca126095658671dd4970a60"; module.exports.testInfo = {"uniqueName":{},"newDate":{}} nock('https://keyvault_name.vault.azure.net:443', {"encodedQueryParams":true}) - .post('/keys/challengeAuthKeyName-Onceauthenticatednewrequestsshouldnotauthenticateagain--0/create') + .get('/deletedkeys') .query(true) - .reply(401, {"error":{"code":"Unauthorized","message":"Request is missing a Bearer or PoP token."}}, [ + .reply(401, {"error":{"code":"Unauthorized","message":"AKV10000: Request is missing a Bearer or PoP token."}}, [ 'Cache-Control', 'no-cache', 'Pragma', 'no-cache', 'Content-Length', - '87', + '97', 'Content-Type', 'application/json; charset=utf-8', 'Expires', @@ -23,13 +23,13 @@ nock('https://keyvault_name.vault.azure.net:443', {"encodedQueryParams":true}) 'x-ms-keyvault-region', 'westus2', 'x-ms-client-request-id', - 'f804f9bf-d476-497a-8275-0120370a910e', + '273c6f9b-eaa2-4ff0-8d3e-9d1ae8387dc2', 'x-ms-request-id', - 'ab514680-9277-480e-93f2-a098899052f8', + '9560ab58-7e5d-45bc-b3f8-92fd688b4946', 'x-ms-keyvault-service-version', - '1.2.265.0', + '1.9.12.0', 'x-ms-keyvault-network-info', - 'conn_type=Ipv4;addr=72.68.182.20;act_addr_fam=InterNetwork;', + 'conn_type=Ipv4;addr=50.35.231.105;act_addr_fam=InterNetwork;', 'X-Powered-By', 'ASP.NET', 'Strict-Transport-Security', @@ -37,7 +37,7 @@ nock('https://keyvault_name.vault.azure.net:443', {"encodedQueryParams":true}) 'X-Content-Type-Options', 'nosniff', 'Date', - 'Wed, 28 Apr 2021 21:22:25 GMT' + 'Thu, 17 Jun 2021 22:28:52 GMT' ]); nock('https://login.microsoftonline.com:443', {"encodedQueryParams":true}) @@ -46,8 +46,6 @@ nock('https://login.microsoftonline.com:443', {"encodedQueryParams":true}) .reply(200, {"tenant_discovery_endpoint":"https://login.microsoftonline.com/12345678-1234-1234-1234-123456789012/v2.0/.well-known/openid-configuration","api-version":"1.1","metadata":[{"preferred_network":"login.microsoftonline.com","preferred_cache":"login.windows.net","aliases":["login.microsoftonline.com","login.windows.net","login.microsoft.com","sts.windows.net"]},{"preferred_network":"login.partner.microsoftonline.cn","preferred_cache":"login.partner.microsoftonline.cn","aliases":["login.partner.microsoftonline.cn","login.chinacloudapi.cn"]},{"preferred_network":"login.microsoftonline.de","preferred_cache":"login.microsoftonline.de","aliases":["login.microsoftonline.de"]},{"preferred_network":"login.microsoftonline.us","preferred_cache":"login.microsoftonline.us","aliases":["login.microsoftonline.us","login.usgovcloudapi.net"]},{"preferred_network":"login-us.microsoftonline.com","preferred_cache":"login-us.microsoftonline.com","aliases":["login-us.microsoftonline.com"]}]}, [ 'Cache-Control', 'max-age=86400, private', - 'Content-Length', - '980', 'Content-Type', 'application/json; charset=utf-8', 'Strict-Transport-Security', @@ -61,24 +59,26 @@ nock('https://login.microsoftonline.com:443', {"encodedQueryParams":true}) 'P3P', 'CP="DSP CUR OTPi IND OTRi ONL FIN"', 'x-ms-request-id', - '422bd614-376f-4bda-ad74-35cb7f7d4201', + '08cc0894-c3ac-41f4-863c-469f5fdd0800', 'x-ms-ests-server', - '2.1.11654.16 - EUS ProdSlices', + '2.1.11829.4 - NCUS ProdSlices', 'Set-Cookie', - 'fpc=Au5BirxN9hhJvoEMGUBOFo6nSoKIBQAAAO_IG9gOAAAA4BL6UwEAAAD3yBvYDgAAAA; expires=Fri, 28-May-2021 21:22:25 GMT; path=/; secure; HttpOnly; SameSite=None', + 'fpc=AiON2Z5V_ydHrb8RPEU9_5sNEFROAQAAAKTDXdgOAAAA; expires=Sat, 17-Jul-2021 22:28:53 GMT; path=/; secure; HttpOnly; SameSite=None', 'Set-Cookie', - 'esctx=AQABAAAAAAD--DLA3VO7QrddgJg7Wevrw8Kc0x-6EBM5E9kBPlqkWxHDrKRLFYjymsHn7DF1GwldluUw2_poT8EWHaWbtxGuf-KlAqXAmVBAMjA87kaZPI0ZEyQGI1dIl6mvk267Nj7VUdYGWVSvu7OaQ1mqQJLiuq2hYnlNV4A_gDiPK4Xo18EarksX58N9xeQH9-xl03cgAA; domain=.login.microsoftonline.com; path=/; secure; HttpOnly; SameSite=None', + 'esctx=AQABAAAAAAD--DLA3VO7QrddgJg7WevrBID13mA4BFn_vG1WRddieZVyUtyjVT3AJeKHjvJUrHDcux1-5KNbKJxQJP3nwvk1jJ4eYaIOybdfaziyMWTRprWmZTxKfNTJQexG89CIpznSZcVwTHRnM_XUyGOj0hInjAThUVtMXaBMchP7aIA--BgVZ0vpboPyYr8QBoiDOMcgAA; domain=.login.microsoftonline.com; path=/; secure; HttpOnly; SameSite=None', 'Set-Cookie', 'x-ms-gateway-slice=estsfd; path=/; secure; samesite=none; httponly', 'Set-Cookie', 'stsservicecookie=estsfd; path=/; secure; samesite=none; httponly', 'Date', - 'Wed, 28 Apr 2021 21:22:25 GMT' + 'Thu, 17 Jun 2021 22:28:52 GMT', + 'Content-Length', + '980' ]); nock('https://login.microsoftonline.com:443', {"encodedQueryParams":true}) .get('/12345678-1234-1234-1234-123456789012/v2.0/.well-known/openid-configuration') - .reply(200, {"token_endpoint":"https://login.microsoftonline.com/12345678-1234-1234-1234-123456789012/oauth2/v2.0/token","token_endpoint_auth_methods_supported":["client_secret_post","private_key_jwt","client_secret_basic"],"jwks_uri":"https://login.microsoftonline.com/12345678-1234-1234-1234-123456789012/discovery/v2.0/keys","response_modes_supported":["query","fragment","form_post"],"subject_types_supported":["pairwise"],"id_token_signing_alg_values_supported":["RS256"],"response_types_supported":["code","id_token","code id_token","id_token token"],"scopes_supported":["openid","profile","email","offline_access"],"issuer":"https://login.microsoftonline.com/12345678-1234-1234-1234-123456789012/v2.0","request_uri_parameter_supported":false,"userinfo_endpoint":"https://graph.microsoft.com/oidc/userinfo","authorization_endpoint":"https://login.microsoftonline.com/12345678-1234-1234-1234-123456789012/oauth2/v2.0/authorize","device_authorization_endpoint":"https://login.microsoftonline.com/12345678-1234-1234-1234-123456789012/oauth2/v2.0/devicecode","http_logout_supported":true,"frontchannel_logout_supported":true,"end_session_endpoint":"https://login.microsoftonline.com/12345678-1234-1234-1234-123456789012/oauth2/v2.0/logout","claims_supported":["sub","iss","cloud_instance_name","cloud_instance_host_name","cloud_graph_host_name","msgraph_host","aud","exp","iat","auth_time","acr","nonce","preferred_username","name","tid","ver","at_hash","c_hash","email"],"tenant_region_scope":"WW","cloud_instance_name":"microsoftonline.com","cloud_graph_host_name":"graph.windows.net","msgraph_host":"graph.microsoft.com","rbac_url":"https://pas.windows.net"}, [ + .reply(200, {"token_endpoint":"https://login.microsoftonline.com/12345678-1234-1234-1234-123456789012/oauth2/v2.0/token","token_endpoint_auth_methods_supported":["client_secret_post","private_key_jwt","client_secret_basic"],"jwks_uri":"https://login.microsoftonline.com/12345678-1234-1234-1234-123456789012/discovery/v2.0/keys","response_modes_supported":["query","fragment","form_post"],"subject_types_supported":["pairwise"],"id_token_signing_alg_values_supported":["RS256"],"response_types_supported":["code","id_token","code id_token","id_token token"],"scopes_supported":["openid","profile","email","offline_access"],"issuer":"https://login.microsoftonline.com/12345678-1234-1234-1234-123456789012/v2.0","request_uri_parameter_supported":false,"userinfo_endpoint":"https://graph.microsoft.com/oidc/userinfo","authorization_endpoint":"https://login.microsoftonline.com/12345678-1234-1234-1234-123456789012/oauth2/v2.0/authorize","device_authorization_endpoint":"https://login.microsoftonline.com/12345678-1234-1234-1234-123456789012/oauth2/v2.0/devicecode","http_logout_supported":true,"frontchannel_logout_supported":true,"end_session_endpoint":"https://login.microsoftonline.com/12345678-1234-1234-1234-123456789012/oauth2/v2.0/logout","claims_supported":["sub","iss","cloud_instance_name","cloud_instance_host_name","cloud_graph_host_name","msgraph_host","aud","exp","iat","auth_time","acr","nonce","preferred_username","name","tid","ver","at_hash","c_hash","email"],"kerberos_endpoint":"https://login.microsoftonline.com/12345678-1234-1234-1234-123456789012/kerberos","tenant_region_scope":"WW","cloud_instance_name":"microsoftonline.com","cloud_graph_host_name":"graph.windows.net","msgraph_host":"graph.microsoft.com","rbac_url":"https://pas.windows.net"}, [ 'Cache-Control', 'max-age=86400, private', 'Content-Type', @@ -94,28 +94,25 @@ nock('https://login.microsoftonline.com:443', {"encodedQueryParams":true}) 'P3P', 'CP="DSP CUR OTPi IND OTRi ONL FIN"', 'x-ms-request-id', - '3aa6bb8b-6bcb-414d-bd57-37833dfd5801', + '2e823231-c5db-469e-afc7-e58d26de6f00', 'x-ms-ests-server', - '2.1.11654.16 - SCUS ProdSlices', + '2.1.11829.4 - NCUS ProdSlices', 'Set-Cookie', - 'fpc=Au5BirxN9hhJvoEMGUBOFo6nSoKIBQAAAO_IG9gOAAAA4BL6UwEAAAD3yBvYDgAAAA; expires=Fri, 28-May-2021 21:22:25 GMT; path=/; secure; HttpOnly; SameSite=None', + 'fpc=AiON2Z5V_ydHrb8RPEU9_5sNEFROAQAAAKTDXdgOAAAA; expires=Sat, 17-Jul-2021 22:28:53 GMT; path=/; secure; HttpOnly; SameSite=None', 'Set-Cookie', - 'esctx=AQABAAAAAAD--DLA3VO7QrddgJg7WevrLhXAnc1OTgqZ39ewDp3sgO32aHT8gk1i2Tsoq5RY6HcE7rbrIuqMqrCEy_jdWeu_tNZCQbH5Ff_XrQnwwy_f8D4VgH8GgU-q_vqOfIcFWcZqorivIqgdUvGzT_9uxJr2SGndU4wEePW_UNEODO271mwjWSp8aSZfHqTs50M7j48gAA; domain=.login.microsoftonline.com; path=/; secure; HttpOnly; SameSite=None', + 'esctx=AQABAAAAAAD--DLA3VO7QrddgJg7WevrpNd_6G74SrCJiVuZiYCO4fECvHHEifjdn5-JyT0SdhYOx24HLIEgB9-QR4NXyxYDUEB0WsfLeYqPJvndM42JA36iXRI2fzdInevzdHV4ECJDwYnGlVbREYiuY4vhUijmhBXlJcB509yrVodrD0EiNwijHjvR_Kco-tvsXrEs-fkgAA; domain=.login.microsoftonline.com; path=/; secure; HttpOnly; SameSite=None', 'Set-Cookie', 'x-ms-gateway-slice=estsfd; path=/; secure; samesite=none; httponly', 'Set-Cookie', 'stsservicecookie=estsfd; path=/; secure; samesite=none; httponly', 'Date', - 'Wed, 28 Apr 2021 21:22:25 GMT', + 'Thu, 17 Jun 2021 22:28:53 GMT', 'Content-Length', - '1651' + '1753' ]); nock('https://login.microsoftonline.com:443', {"encodedQueryParams":true}) - .filteringRequestBody(function (body) { - return body.replace(/client-request-id=[^&]*/g, "client-request-id=client-request-id"); - }) - .post('/12345678-1234-1234-1234-123456789012/oauth2/v2.0/token', "client_id=azure_client_id&scope=https%3A%2F%2Fvault.azure.net%2F.default%20openid%20profile%20offline_access&grant_type=client_credentials&client-request-id=client-request-id&client_secret=azure_client_secret") + .post('/12345678-1234-1234-1234-123456789012/oauth2/v2.0/token', "client_id=azure_client_id&scope=https%3A%2F%2Fsanitized%2F&grant_type=client_credentials&client-request-id=88f2bc92-c8d8-4ac3-857f-1d687d5515a5&client_secret=azure_client_secret") .reply(200, {"token_type":"Bearer","expires_in":86399,"ext_expires_in":86399,"access_token":"access_token"}, [ 'Cache-Control', 'no-store, no-cache', @@ -134,303 +131,29 @@ nock('https://login.microsoftonline.com:443', {"encodedQueryParams":true}) 'P3P', 'CP="DSP CUR OTPi IND OTRi ONL FIN"', 'x-ms-request-id', - '78ca8339-4e14-4418-b2c8-9ef284f4d001', + 'c37bbbcf-7b48-4569-a1c6-fe5694604700', 'x-ms-ests-server', - '2.1.11654.16 - WUS2 ProdSlices', + '2.1.11829.4 - NCUS ProdSlices', 'x-ms-clitelem', '1,0,0,,', 'Set-Cookie', - 'fpc=Au5BirxN9hhJvoEMGUBOFo6nSoKIBQAAAO_IG9gOAAAA4BL6UwIAAAD3yBvYDgAAAA; expires=Fri, 28-May-2021 21:22:26 GMT; path=/; secure; HttpOnly; SameSite=None', + 'fpc=AiON2Z5V_ydHrb8RPEU9_5sNEFROAgAAAKTDXdgOAAAA; expires=Sat, 17-Jul-2021 22:28:53 GMT; path=/; secure; HttpOnly; SameSite=None', 'Set-Cookie', 'x-ms-gateway-slice=estsfd; path=/; secure; samesite=none; httponly', 'Set-Cookie', 'stsservicecookie=estsfd; path=/; secure; samesite=none; httponly', 'Date', - 'Wed, 28 Apr 2021 21:22:25 GMT' -]); - -nock('https://keyvault_name.vault.azure.net:443', {"encodedQueryParams":true}) - .post('/keys/challengeAuthKeyName-Onceauthenticatednewrequestsshouldnotauthenticateagain--0/create', {"kty":"RSA"}) - .query(true) - .reply(200, {"key":{"kid":"https://keyvault_name.vault.azure.net/keys/challengeAuthKeyName-Onceauthenticatednewrequestsshouldnotauthenticateagain--0/91124a0eaae54b849622867e7de65549","kty":"RSA","key_ops":["encrypt","decrypt","sign","verify","wrapKey","unwrapKey"],"n":"rEqPnf7HEk-5pTdqm5k1eLvWefhCT_slvRpFTege5awlDWaJcP5DioeMKqr4Gix8g9rhWD767TEN2ToN5dWx77XuG_u5Y2yMVxE-2vuK0LH45LPN3goMDBh3EUJOhHDnuLWymhcFOxsjU9Z0yy7ZRgM1bYpk0SIToaXfGrPtzZXoRHP5SREluoHIhSkWiclER0YYw47lkXozi-sPdxrhJJbhfADMFbzDRFhfYoCTXWSCtuyf8mXvifMdduS5dlSnsXnTInsagIDw824GfztqRgKIC6HEloA0850XNmGkSDNqhWQnQgTe8UVBTGhN7FJtC9jD14OnvSsvl4HQKwEKOQ","e":"AQAB"},"attributes":{"enabled":true,"created":1619644946,"updated":1619644946,"recoveryLevel":"CustomizedRecoverable+Purgeable","recoverableDays":7}}, [ - 'Cache-Control', - 'no-cache', - 'Pragma', - 'no-cache', - 'Content-Type', - 'application/json; charset=utf-8', - 'Expires', - '-1', - 'x-ms-keyvault-region', - 'westus2', - 'x-ms-client-request-id', - 'f804f9bf-d476-497a-8275-0120370a910e', - 'x-ms-request-id', - 'ee093f5e-6db8-4cfd-b568-2433c1804f95', - 'x-ms-keyvault-service-version', - '1.2.265.0', - 'x-ms-keyvault-network-info', - 'conn_type=Ipv4;addr=72.68.182.20;act_addr_fam=InterNetwork;', - 'X-Powered-By', - 'ASP.NET', - 'Strict-Transport-Security', - 'max-age=31536000;includeSubDomains', - 'X-Content-Type-Options', - 'nosniff', - 'Date', - 'Wed, 28 Apr 2021 21:22:26 GMT', - 'Content-Length', - '769' -]); - -nock('https://keyvault_name.vault.azure.net:443', {"encodedQueryParams":true}) - .post('/keys/challengeAuthKeyName-Onceauthenticatednewrequestsshouldnotauthenticateagain--1/create', {"kty":"RSA"}) - .query(true) - .reply(200, {"key":{"kid":"https://keyvault_name.vault.azure.net/keys/challengeAuthKeyName-Onceauthenticatednewrequestsshouldnotauthenticateagain--1/e8302fbcbda34bd7b8495b7f02e33e44","kty":"RSA","key_ops":["encrypt","decrypt","sign","verify","wrapKey","unwrapKey"],"n":"rWWkfHiEkyhhPbynXI9loV6Ge0lT3hUEd2nu_lHGgLsPzrhSI0rv_g8cnQP86zB_qkurfioTNRI9VdaS0TnnziXnCIlm1OF06hFedtWHbOEXrGyvrCRZ57uYwhdR_uI-H4UyGzb28kXReuQMlnkxpfNx4iC3ZYuDGAN4OUxW6hy5D5b9KWT2vDfGsf6GvRogNJL1B_5ki4tGlbX-_ts2Bb68j6R5B9yWyXMg0hl8MhNWSkopQe42t7GPW5pi-BJSgWp9PvICqtjjC0uggtoAHo3PurddXNgjvjrj5Py-6T_i70eVxtlUO9EoWLinq0rdsD2xeijKPKYmgCtYOIzMbQ","e":"AQAB"},"attributes":{"enabled":true,"created":1619644946,"updated":1619644946,"recoveryLevel":"CustomizedRecoverable+Purgeable","recoverableDays":7}}, [ - 'Cache-Control', - 'no-cache', - 'Pragma', - 'no-cache', - 'Content-Type', - 'application/json; charset=utf-8', - 'Expires', - '-1', - 'x-ms-keyvault-region', - 'westus2', - 'x-ms-client-request-id', - '176f73f1-ee18-4a1f-8353-f4eae81d60b1', - 'x-ms-request-id', - 'b01df8fd-6260-449a-b779-b6c28e1be8a6', - 'x-ms-keyvault-service-version', - '1.2.265.0', - 'x-ms-keyvault-network-info', - 'conn_type=Ipv4;addr=72.68.182.20;act_addr_fam=InterNetwork;', - 'X-Powered-By', - 'ASP.NET', - 'Strict-Transport-Security', - 'max-age=31536000;includeSubDomains', - 'X-Content-Type-Options', - 'nosniff', - 'Date', - 'Wed, 28 Apr 2021 21:22:26 GMT', - 'Content-Length', - '769' -]); - -nock('https://keyvault_name.vault.azure.net:443', {"encodedQueryParams":true}) - .delete('/keys/challengeAuthKeyName-Onceauthenticatednewrequestsshouldnotauthenticateagain--0') - .query(true) - .reply(200, {"recoveryId":"https://keyvault_name.vault.azure.net/deletedkeys/challengeAuthKeyName-Onceauthenticatednewrequestsshouldnotauthenticateagain--0","deletedDate":1619644946,"scheduledPurgeDate":1620249746,"key":{"kid":"https://keyvault_name.vault.azure.net/keys/challengeAuthKeyName-Onceauthenticatednewrequestsshouldnotauthenticateagain--0/91124a0eaae54b849622867e7de65549","kty":"RSA","key_ops":["encrypt","decrypt","sign","verify","wrapKey","unwrapKey"],"n":"rEqPnf7HEk-5pTdqm5k1eLvWefhCT_slvRpFTege5awlDWaJcP5DioeMKqr4Gix8g9rhWD767TEN2ToN5dWx77XuG_u5Y2yMVxE-2vuK0LH45LPN3goMDBh3EUJOhHDnuLWymhcFOxsjU9Z0yy7ZRgM1bYpk0SIToaXfGrPtzZXoRHP5SREluoHIhSkWiclER0YYw47lkXozi-sPdxrhJJbhfADMFbzDRFhfYoCTXWSCtuyf8mXvifMdduS5dlSnsXnTInsagIDw824GfztqRgKIC6HEloA0850XNmGkSDNqhWQnQgTe8UVBTGhN7FJtC9jD14OnvSsvl4HQKwEKOQ","e":"AQAB"},"attributes":{"enabled":true,"created":1619644946,"updated":1619644946,"recoveryLevel":"CustomizedRecoverable+Purgeable","recoverableDays":7}}, [ - 'Cache-Control', - 'no-cache', - 'Pragma', - 'no-cache', - 'Content-Type', - 'application/json; charset=utf-8', - 'Expires', - '-1', - 'x-ms-keyvault-region', - 'westus2', - 'x-ms-client-request-id', - 'f502d32d-d1f3-4004-aaef-030db944615e', - 'x-ms-request-id', - '56714b05-f23c-4152-9b7c-28a57d5e2b4f', - 'x-ms-keyvault-service-version', - '1.2.265.0', - 'x-ms-keyvault-network-info', - 'conn_type=Ipv4;addr=72.68.182.20;act_addr_fam=InterNetwork;', - 'X-Powered-By', - 'ASP.NET', - 'Strict-Transport-Security', - 'max-age=31536000;includeSubDomains', - 'X-Content-Type-Options', - 'nosniff', - 'Date', - 'Wed, 28 Apr 2021 21:22:26 GMT', - 'Content-Length', - '983' -]); - -nock('https://keyvault_name.vault.azure.net:443', {"encodedQueryParams":true}) - .get('/deletedkeys/challengeAuthKeyName-Onceauthenticatednewrequestsshouldnotauthenticateagain--0') - .query(true) - .reply(404, {"error":{"code":"KeyNotFound","message":"Deleted Key not found: challengeAuthKeyName-Onceauthenticatednewrequestsshouldnotauthenticateagain--0"}}, [ - 'Cache-Control', - 'no-cache', - 'Pragma', - 'no-cache', - 'Content-Length', - '162', - 'Content-Type', - 'application/json; charset=utf-8', - 'Expires', - '-1', - 'x-ms-keyvault-region', - 'westus2', - 'x-ms-client-request-id', - '13088fac-3024-4d0a-9ea9-54fdd48faa72', - 'x-ms-request-id', - '721d5f03-16e2-4f6c-b51c-c0c7a70f6e93', - 'x-ms-keyvault-service-version', - '1.2.265.0', - 'x-ms-keyvault-network-info', - 'conn_type=Ipv4;addr=72.68.182.20;act_addr_fam=InterNetwork;', - 'X-Powered-By', - 'ASP.NET', - 'Strict-Transport-Security', - 'max-age=31536000;includeSubDomains', - 'X-Content-Type-Options', - 'nosniff', - 'Date', - 'Wed, 28 Apr 2021 21:22:26 GMT' -]); - -nock('https://keyvault_name.vault.azure.net:443', {"encodedQueryParams":true}) - .get('/deletedkeys/challengeAuthKeyName-Onceauthenticatednewrequestsshouldnotauthenticateagain--0') - .query(true) - .reply(404, {"error":{"code":"KeyNotFound","message":"Deleted Key not found: challengeAuthKeyName-Onceauthenticatednewrequestsshouldnotauthenticateagain--0"}}, [ - 'Cache-Control', - 'no-cache', - 'Pragma', - 'no-cache', - 'Content-Length', - '162', - 'Content-Type', - 'application/json; charset=utf-8', - 'Expires', - '-1', - 'x-ms-keyvault-region', - 'westus2', - 'x-ms-client-request-id', - '28a4da57-dae0-47e8-a095-6d4f979b46f6', - 'x-ms-request-id', - '8c5fde09-07c8-45ba-b780-95f2007c5ed8', - 'x-ms-keyvault-service-version', - '1.2.265.0', - 'x-ms-keyvault-network-info', - 'conn_type=Ipv4;addr=72.68.182.20;act_addr_fam=InterNetwork;', - 'X-Powered-By', - 'ASP.NET', - 'Strict-Transport-Security', - 'max-age=31536000;includeSubDomains', - 'X-Content-Type-Options', - 'nosniff', - 'Date', - 'Wed, 28 Apr 2021 21:22:27 GMT' -]); - -nock('https://keyvault_name.vault.azure.net:443', {"encodedQueryParams":true}) - .get('/deletedkeys/challengeAuthKeyName-Onceauthenticatednewrequestsshouldnotauthenticateagain--0') - .query(true) - .reply(404, {"error":{"code":"KeyNotFound","message":"Deleted Key not found: challengeAuthKeyName-Onceauthenticatednewrequestsshouldnotauthenticateagain--0"}}, [ - 'Cache-Control', - 'no-cache', - 'Pragma', - 'no-cache', - 'Content-Length', - '162', - 'Content-Type', - 'application/json; charset=utf-8', - 'Expires', - '-1', - 'x-ms-keyvault-region', - 'westus2', - 'x-ms-client-request-id', - 'e7796036-28a0-48f0-8bac-8305fb22efea', - 'x-ms-request-id', - '3af7d5cb-e5d0-4415-9aa5-ccd5c6f6e493', - 'x-ms-keyvault-service-version', - '1.2.265.0', - 'x-ms-keyvault-network-info', - 'conn_type=Ipv4;addr=72.68.182.20;act_addr_fam=InterNetwork;', - 'X-Powered-By', - 'ASP.NET', - 'Strict-Transport-Security', - 'max-age=31536000;includeSubDomains', - 'X-Content-Type-Options', - 'nosniff', - 'Date', - 'Wed, 28 Apr 2021 21:22:28 GMT' -]); - -nock('https://keyvault_name.vault.azure.net:443', {"encodedQueryParams":true}) - .get('/deletedkeys/challengeAuthKeyName-Onceauthenticatednewrequestsshouldnotauthenticateagain--0') - .query(true) - .reply(404, {"error":{"code":"KeyNotFound","message":"Deleted Key not found: challengeAuthKeyName-Onceauthenticatednewrequestsshouldnotauthenticateagain--0"}}, [ - 'Cache-Control', - 'no-cache', - 'Pragma', - 'no-cache', - 'Content-Length', - '162', - 'Content-Type', - 'application/json; charset=utf-8', - 'Expires', - '-1', - 'x-ms-keyvault-region', - 'westus2', - 'x-ms-client-request-id', - '82628345-b0c2-48c7-8e6c-6122c90bf526', - 'x-ms-request-id', - '1a4cea02-a857-4846-90c9-a624f35525a1', - 'x-ms-keyvault-service-version', - '1.2.265.0', - 'x-ms-keyvault-network-info', - 'conn_type=Ipv4;addr=72.68.182.20;act_addr_fam=InterNetwork;', - 'X-Powered-By', - 'ASP.NET', - 'Strict-Transport-Security', - 'max-age=31536000;includeSubDomains', - 'X-Content-Type-Options', - 'nosniff', - 'Date', - 'Wed, 28 Apr 2021 21:22:31 GMT' -]); - -nock('https://keyvault_name.vault.azure.net:443', {"encodedQueryParams":true}) - .get('/deletedkeys/challengeAuthKeyName-Onceauthenticatednewrequestsshouldnotauthenticateagain--0') - .query(true) - .reply(404, {"error":{"code":"KeyNotFound","message":"Deleted Key not found: challengeAuthKeyName-Onceauthenticatednewrequestsshouldnotauthenticateagain--0"}}, [ - 'Cache-Control', - 'no-cache', - 'Pragma', - 'no-cache', - 'Content-Length', - '162', - 'Content-Type', - 'application/json; charset=utf-8', - 'Expires', - '-1', - 'x-ms-keyvault-region', - 'westus2', - 'x-ms-client-request-id', - '4e4dd564-8f5d-4dd2-9c40-0d979c0409ec', - 'x-ms-request-id', - '4e2e6f53-afdc-4c00-aa06-a3e270a6f26e', - 'x-ms-keyvault-service-version', - '1.2.265.0', - 'x-ms-keyvault-network-info', - 'conn_type=Ipv4;addr=72.68.182.20;act_addr_fam=InterNetwork;', - 'X-Powered-By', - 'ASP.NET', - 'Strict-Transport-Security', - 'max-age=31536000;includeSubDomains', - 'X-Content-Type-Options', - 'nosniff', - 'Date', - 'Wed, 28 Apr 2021 21:22:33 GMT' + 'Thu, 17 Jun 2021 22:28:52 GMT' ]); nock('https://keyvault_name.vault.azure.net:443', {"encodedQueryParams":true}) - .get('/deletedkeys/challengeAuthKeyName-Onceauthenticatednewrequestsshouldnotauthenticateagain--0') + .get('/deletedkeys') .query(true) - .reply(404, {"error":{"code":"KeyNotFound","message":"Deleted Key not found: challengeAuthKeyName-Onceauthenticatednewrequestsshouldnotauthenticateagain--0"}}, [ + .reply(200, {"value":[{"recoveryId":"https://keyvault_name.vault.azure.net/deletedkeys/challengeAuthKeyName-Authenticationshouldworkforparallelrequests-018489891015560644-1","deletedDate":1623968152,"scheduledPurgeDate":1624572952,"kid":"https://keyvault_name.vault.azure.net/keys/challengeAuthKeyName-Authenticationshouldworkforparallelrequests-018489891015560644-1","attributes":{"enabled":true,"created":1623968038,"updated":1623968038,"recoveryLevel":"CustomizedRecoverable+Purgeable","recoverableDays":7}},{"recoveryId":"https://keyvault_name.vault.azure.net/deletedkeys/challengeAuthKeyName-Authenticationshouldworkforparallelrequests-24685237550245565-1","deletedDate":1623967880,"scheduledPurgeDate":1624572680,"kid":"https://keyvault_name.vault.azure.net/keys/challengeAuthKeyName-Authenticationshouldworkforparallelrequests-24685237550245565-1","attributes":{"enabled":true,"created":1623967755,"updated":1623967755,"recoveryLevel":"CustomizedRecoverable+Purgeable","recoverableDays":7}},{"recoveryId":"https://keyvault_name.vault.azure.net/deletedkeys/challengeAuthKeyName-Authenticationshouldworkforparallelrequests-304369368630208-0","deletedDate":1623967959,"scheduledPurgeDate":1624572759,"kid":"https://keyvault_name.vault.azure.net/keys/challengeAuthKeyName-Authenticationshouldworkforparallelrequests-304369368630208-0","attributes":{"enabled":true,"created":1623967959,"updated":1623967959,"recoveryLevel":"CustomizedRecoverable+Purgeable","recoverableDays":7}},{"recoveryId":"https://keyvault_name.vault.azure.net/deletedkeys/challengeAuthKeyName-Onceauthenticatednewrequestsshouldnotauthenticateagain-9173446555051745-0","deletedDate":1623968786,"scheduledPurgeDate":1624573586,"kid":"https://keyvault_name.vault.azure.net/keys/challengeAuthKeyName-Onceauthenticatednewrequestsshouldnotauthenticateagain-9173446555051745-0","attributes":{"enabled":true,"created":1623968785,"updated":1623968785,"recoveryLevel":"CustomizedRecoverable+Purgeable","recoverableDays":7}}],"nextLink":null}, [ 'Cache-Control', 'no-cache', 'Pragma', 'no-cache', - 'Content-Length', - '162', 'Content-Type', 'application/json; charset=utf-8', 'Expires', @@ -438,13 +161,13 @@ nock('https://keyvault_name.vault.azure.net:443', {"encodedQueryParams":true}) 'x-ms-keyvault-region', 'westus2', 'x-ms-client-request-id', - '87629bb0-1b3c-496c-ac98-e96f1433956d', + '273c6f9b-eaa2-4ff0-8d3e-9d1ae8387dc2', 'x-ms-request-id', - '4db3475c-d402-44ea-a5d2-7f9f1805ae99', + '8aedcbb1-1c73-40b4-b752-37ea38d64603', 'x-ms-keyvault-service-version', - '1.2.265.0', + '1.9.12.0', 'x-ms-keyvault-network-info', - 'conn_type=Ipv4;addr=72.68.182.20;act_addr_fam=InterNetwork;', + 'conn_type=Ipv4;addr=50.35.231.105;act_addr_fam=InterNetwork;', 'X-Powered-By', 'ASP.NET', 'Strict-Transport-Security', @@ -452,53 +175,19 @@ nock('https://keyvault_name.vault.azure.net:443', {"encodedQueryParams":true}) 'X-Content-Type-Options', 'nosniff', 'Date', - 'Wed, 28 Apr 2021 21:22:35 GMT' -]); - -nock('https://keyvault_name.vault.azure.net:443', {"encodedQueryParams":true}) - .get('/deletedkeys/challengeAuthKeyName-Onceauthenticatednewrequestsshouldnotauthenticateagain--0') - .query(true) - .reply(404, {"error":{"code":"KeyNotFound","message":"Deleted Key not found: challengeAuthKeyName-Onceauthenticatednewrequestsshouldnotauthenticateagain--0"}}, [ - 'Cache-Control', - 'no-cache', - 'Pragma', - 'no-cache', + 'Thu, 17 Jun 2021 22:28:53 GMT', 'Content-Length', - '162', - 'Content-Type', - 'application/json; charset=utf-8', - 'Expires', - '-1', - 'x-ms-keyvault-region', - 'westus2', - 'x-ms-client-request-id', - '43513063-9844-4acd-b7a1-bf332f90f241', - 'x-ms-request-id', - '70de7756-6a08-4fc4-b9d9-c2d1572959b6', - 'x-ms-keyvault-service-version', - '1.2.265.0', - 'x-ms-keyvault-network-info', - 'conn_type=Ipv4;addr=72.68.182.20;act_addr_fam=InterNetwork;', - 'X-Powered-By', - 'ASP.NET', - 'Strict-Transport-Security', - 'max-age=31536000;includeSubDomains', - 'X-Content-Type-Options', - 'nosniff', - 'Date', - 'Wed, 28 Apr 2021 21:22:37 GMT' + '1953' ]); nock('https://keyvault_name.vault.azure.net:443', {"encodedQueryParams":true}) - .get('/deletedkeys/challengeAuthKeyName-Onceauthenticatednewrequestsshouldnotauthenticateagain--0') + .get('/deletedkeys') .query(true) - .reply(404, {"error":{"code":"KeyNotFound","message":"Deleted Key not found: challengeAuthKeyName-Onceauthenticatednewrequestsshouldnotauthenticateagain--0"}}, [ + .reply(200, {"value":[{"recoveryId":"https://keyvault_name.vault.azure.net/deletedkeys/challengeAuthKeyName-Authenticationshouldworkforparallelrequests-018489891015560644-1","deletedDate":1623968152,"scheduledPurgeDate":1624572952,"kid":"https://keyvault_name.vault.azure.net/keys/challengeAuthKeyName-Authenticationshouldworkforparallelrequests-018489891015560644-1","attributes":{"enabled":true,"created":1623968038,"updated":1623968038,"recoveryLevel":"CustomizedRecoverable+Purgeable","recoverableDays":7}},{"recoveryId":"https://keyvault_name.vault.azure.net/deletedkeys/challengeAuthKeyName-Authenticationshouldworkforparallelrequests-24685237550245565-1","deletedDate":1623967880,"scheduledPurgeDate":1624572680,"kid":"https://keyvault_name.vault.azure.net/keys/challengeAuthKeyName-Authenticationshouldworkforparallelrequests-24685237550245565-1","attributes":{"enabled":true,"created":1623967755,"updated":1623967755,"recoveryLevel":"CustomizedRecoverable+Purgeable","recoverableDays":7}},{"recoveryId":"https://keyvault_name.vault.azure.net/deletedkeys/challengeAuthKeyName-Authenticationshouldworkforparallelrequests-304369368630208-0","deletedDate":1623967959,"scheduledPurgeDate":1624572759,"kid":"https://keyvault_name.vault.azure.net/keys/challengeAuthKeyName-Authenticationshouldworkforparallelrequests-304369368630208-0","attributes":{"enabled":true,"created":1623967959,"updated":1623967959,"recoveryLevel":"CustomizedRecoverable+Purgeable","recoverableDays":7}},{"recoveryId":"https://keyvault_name.vault.azure.net/deletedkeys/challengeAuthKeyName-Onceauthenticatednewrequestsshouldnotauthenticateagain-9173446555051745-0","deletedDate":1623968786,"scheduledPurgeDate":1624573586,"kid":"https://keyvault_name.vault.azure.net/keys/challengeAuthKeyName-Onceauthenticatednewrequestsshouldnotauthenticateagain-9173446555051745-0","attributes":{"enabled":true,"created":1623968785,"updated":1623968785,"recoveryLevel":"CustomizedRecoverable+Purgeable","recoverableDays":7}}],"nextLink":null}, [ 'Cache-Control', 'no-cache', 'Pragma', 'no-cache', - 'Content-Length', - '162', 'Content-Type', 'application/json; charset=utf-8', 'Expires', @@ -506,13 +195,13 @@ nock('https://keyvault_name.vault.azure.net:443', {"encodedQueryParams":true}) 'x-ms-keyvault-region', 'westus2', 'x-ms-client-request-id', - 'c46c91c8-a024-43b7-a5eb-f84d33db8508', + '293d9435-4354-4a3f-a460-fc0aef94a510', 'x-ms-request-id', - 'b37949ae-832a-4708-ba25-e3053f8de2c6', + '12230913-d2c2-478b-8f05-ed2d2dc37a78', 'x-ms-keyvault-service-version', - '1.2.265.0', + '1.9.12.0', 'x-ms-keyvault-network-info', - 'conn_type=Ipv4;addr=72.68.182.20;act_addr_fam=InterNetwork;', + 'conn_type=Ipv4;addr=50.35.231.105;act_addr_fam=InterNetwork;', 'X-Powered-By', 'ASP.NET', 'Strict-Transport-Security', @@ -520,371 +209,7 @@ nock('https://keyvault_name.vault.azure.net:443', {"encodedQueryParams":true}) 'X-Content-Type-Options', 'nosniff', 'Date', - 'Wed, 28 Apr 2021 21:22:39 GMT' -]); - -nock('https://keyvault_name.vault.azure.net:443', {"encodedQueryParams":true}) - .get('/deletedkeys/challengeAuthKeyName-Onceauthenticatednewrequestsshouldnotauthenticateagain--0') - .query(true) - .reply(404, {"error":{"code":"KeyNotFound","message":"Deleted Key not found: challengeAuthKeyName-Onceauthenticatednewrequestsshouldnotauthenticateagain--0"}}, [ - 'Cache-Control', - 'no-cache', - 'Pragma', - 'no-cache', + 'Thu, 17 Jun 2021 22:28:52 GMT', 'Content-Length', - '162', - 'Content-Type', - 'application/json; charset=utf-8', - 'Expires', - '-1', - 'x-ms-keyvault-region', - 'westus2', - 'x-ms-client-request-id', - '53b583aa-323c-4fb5-a10e-2d11ddcb984e', - 'x-ms-request-id', - '19703ae8-f0d9-47a2-9ceb-5eff50f5af1b', - 'x-ms-keyvault-service-version', - '1.2.265.0', - 'x-ms-keyvault-network-info', - 'conn_type=Ipv4;addr=72.68.182.20;act_addr_fam=InterNetwork;', - 'X-Powered-By', - 'ASP.NET', - 'Strict-Transport-Security', - 'max-age=31536000;includeSubDomains', - 'X-Content-Type-Options', - 'nosniff', - 'Date', - 'Wed, 28 Apr 2021 21:22:41 GMT' -]); - -nock('https://keyvault_name.vault.azure.net:443', {"encodedQueryParams":true}) - .get('/deletedkeys/challengeAuthKeyName-Onceauthenticatednewrequestsshouldnotauthenticateagain--0') - .query(true) - .reply(200, {"recoveryId":"https://keyvault_name.vault.azure.net/deletedkeys/challengeAuthKeyName-Onceauthenticatednewrequestsshouldnotauthenticateagain--0","deletedDate":1619644946,"scheduledPurgeDate":1620249746,"key":{"kid":"https://keyvault_name.vault.azure.net/keys/challengeAuthKeyName-Onceauthenticatednewrequestsshouldnotauthenticateagain--0/91124a0eaae54b849622867e7de65549","kty":"RSA","key_ops":["encrypt","decrypt","sign","verify","wrapKey","unwrapKey"],"n":"rEqPnf7HEk-5pTdqm5k1eLvWefhCT_slvRpFTege5awlDWaJcP5DioeMKqr4Gix8g9rhWD767TEN2ToN5dWx77XuG_u5Y2yMVxE-2vuK0LH45LPN3goMDBh3EUJOhHDnuLWymhcFOxsjU9Z0yy7ZRgM1bYpk0SIToaXfGrPtzZXoRHP5SREluoHIhSkWiclER0YYw47lkXozi-sPdxrhJJbhfADMFbzDRFhfYoCTXWSCtuyf8mXvifMdduS5dlSnsXnTInsagIDw824GfztqRgKIC6HEloA0850XNmGkSDNqhWQnQgTe8UVBTGhN7FJtC9jD14OnvSsvl4HQKwEKOQ","e":"AQAB"},"attributes":{"enabled":true,"created":1619644946,"updated":1619644946,"recoveryLevel":"CustomizedRecoverable+Purgeable","recoverableDays":7}}, [ - 'Cache-Control', - 'no-cache', - 'Pragma', - 'no-cache', - 'Content-Type', - 'application/json; charset=utf-8', - 'Expires', - '-1', - 'x-ms-keyvault-region', - 'westus2', - 'x-ms-client-request-id', - '421cb305-0815-4b90-91cc-c8c9e096daae', - 'x-ms-request-id', - '8ac3c5ad-31cb-4824-870a-2f423ba39323', - 'x-ms-keyvault-service-version', - '1.2.265.0', - 'x-ms-keyvault-network-info', - 'conn_type=Ipv4;addr=72.68.182.20;act_addr_fam=InterNetwork;', - 'X-Powered-By', - 'ASP.NET', - 'Strict-Transport-Security', - 'max-age=31536000;includeSubDomains', - 'X-Content-Type-Options', - 'nosniff', - 'Date', - 'Wed, 28 Apr 2021 21:22:43 GMT', - 'Content-Length', - '983' -]); - -nock('https://keyvault_name.vault.azure.net:443', {"encodedQueryParams":true}) - .delete('/deletedkeys/challengeAuthKeyName-Onceauthenticatednewrequestsshouldnotauthenticateagain--0') - .query(true) - .reply(204, "", [ - 'Cache-Control', - 'no-cache', - 'Pragma', - 'no-cache', - 'Expires', - '-1', - 'x-ms-keyvault-region', - 'westus2', - 'x-ms-client-request-id', - '8075bf37-9960-4290-9b1d-6373b244912a', - 'x-ms-request-id', - 'f02b09a4-bc3a-4b89-8c2c-045253b26519', - 'x-ms-keyvault-service-version', - '1.2.265.0', - 'x-ms-keyvault-network-info', - 'conn_type=Ipv4;addr=72.68.182.20;act_addr_fam=InterNetwork;', - 'X-Powered-By', - 'ASP.NET', - 'Strict-Transport-Security', - 'max-age=31536000;includeSubDomains', - 'X-Content-Type-Options', - 'nosniff', - 'Date', - 'Wed, 28 Apr 2021 21:22:44 GMT' -]); - -nock('https://keyvault_name.vault.azure.net:443', {"encodedQueryParams":true}) - .delete('/keys/challengeAuthKeyName-Onceauthenticatednewrequestsshouldnotauthenticateagain--1') - .query(true) - .reply(200, {"recoveryId":"https://keyvault_name.vault.azure.net/deletedkeys/challengeAuthKeyName-Onceauthenticatednewrequestsshouldnotauthenticateagain--1","deletedDate":1619644964,"scheduledPurgeDate":1620249764,"key":{"kid":"https://keyvault_name.vault.azure.net/keys/challengeAuthKeyName-Onceauthenticatednewrequestsshouldnotauthenticateagain--1/e8302fbcbda34bd7b8495b7f02e33e44","kty":"RSA","key_ops":["encrypt","decrypt","sign","verify","wrapKey","unwrapKey"],"n":"rWWkfHiEkyhhPbynXI9loV6Ge0lT3hUEd2nu_lHGgLsPzrhSI0rv_g8cnQP86zB_qkurfioTNRI9VdaS0TnnziXnCIlm1OF06hFedtWHbOEXrGyvrCRZ57uYwhdR_uI-H4UyGzb28kXReuQMlnkxpfNx4iC3ZYuDGAN4OUxW6hy5D5b9KWT2vDfGsf6GvRogNJL1B_5ki4tGlbX-_ts2Bb68j6R5B9yWyXMg0hl8MhNWSkopQe42t7GPW5pi-BJSgWp9PvICqtjjC0uggtoAHo3PurddXNgjvjrj5Py-6T_i70eVxtlUO9EoWLinq0rdsD2xeijKPKYmgCtYOIzMbQ","e":"AQAB"},"attributes":{"enabled":true,"created":1619644946,"updated":1619644946,"recoveryLevel":"CustomizedRecoverable+Purgeable","recoverableDays":7}}, [ - 'Cache-Control', - 'no-cache', - 'Pragma', - 'no-cache', - 'Content-Type', - 'application/json; charset=utf-8', - 'Expires', - '-1', - 'x-ms-keyvault-region', - 'westus2', - 'x-ms-client-request-id', - '3a90aa46-519f-4aef-b0a0-81fe81a10d71', - 'x-ms-request-id', - '71851b11-58d7-41e6-a1f9-ba6efd32797b', - 'x-ms-keyvault-service-version', - '1.2.265.0', - 'x-ms-keyvault-network-info', - 'conn_type=Ipv4;addr=72.68.182.20;act_addr_fam=InterNetwork;', - 'X-Powered-By', - 'ASP.NET', - 'Strict-Transport-Security', - 'max-age=31536000;includeSubDomains', - 'X-Content-Type-Options', - 'nosniff', - 'Date', - 'Wed, 28 Apr 2021 21:22:44 GMT', - 'Content-Length', - '983' -]); - -nock('https://keyvault_name.vault.azure.net:443', {"encodedQueryParams":true}) - .get('/deletedkeys/challengeAuthKeyName-Onceauthenticatednewrequestsshouldnotauthenticateagain--1') - .query(true) - .reply(404, {"error":{"code":"KeyNotFound","message":"Deleted Key not found: challengeAuthKeyName-Onceauthenticatednewrequestsshouldnotauthenticateagain--1"}}, [ - 'Cache-Control', - 'no-cache', - 'Pragma', - 'no-cache', - 'Content-Length', - '162', - 'Content-Type', - 'application/json; charset=utf-8', - 'Expires', - '-1', - 'x-ms-keyvault-region', - 'westus2', - 'x-ms-client-request-id', - 'f77a3ea2-9762-4c93-9183-21964b890736', - 'x-ms-request-id', - '0424b778-fc67-4a08-b396-5de396c0b833', - 'x-ms-keyvault-service-version', - '1.2.265.0', - 'x-ms-keyvault-network-info', - 'conn_type=Ipv4;addr=72.68.182.20;act_addr_fam=InterNetwork;', - 'X-Powered-By', - 'ASP.NET', - 'Strict-Transport-Security', - 'max-age=31536000;includeSubDomains', - 'X-Content-Type-Options', - 'nosniff', - 'Date', - 'Wed, 28 Apr 2021 21:22:44 GMT' -]); - -nock('https://keyvault_name.vault.azure.net:443', {"encodedQueryParams":true}) - .get('/deletedkeys/challengeAuthKeyName-Onceauthenticatednewrequestsshouldnotauthenticateagain--1') - .query(true) - .reply(404, {"error":{"code":"KeyNotFound","message":"Deleted Key not found: challengeAuthKeyName-Onceauthenticatednewrequestsshouldnotauthenticateagain--1"}}, [ - 'Cache-Control', - 'no-cache', - 'Pragma', - 'no-cache', - 'Content-Length', - '162', - 'Content-Type', - 'application/json; charset=utf-8', - 'Expires', - '-1', - 'x-ms-keyvault-region', - 'westus2', - 'x-ms-client-request-id', - 'af9c442e-31f5-4e2f-8ca1-0877e2112fb4', - 'x-ms-request-id', - '98775794-bc17-4848-a293-ae0725e3dccc', - 'x-ms-keyvault-service-version', - '1.2.265.0', - 'x-ms-keyvault-network-info', - 'conn_type=Ipv4;addr=72.68.182.20;act_addr_fam=InterNetwork;', - 'X-Powered-By', - 'ASP.NET', - 'Strict-Transport-Security', - 'max-age=31536000;includeSubDomains', - 'X-Content-Type-Options', - 'nosniff', - 'Date', - 'Wed, 28 Apr 2021 21:22:44 GMT' -]); - -nock('https://keyvault_name.vault.azure.net:443', {"encodedQueryParams":true}) - .get('/deletedkeys/challengeAuthKeyName-Onceauthenticatednewrequestsshouldnotauthenticateagain--1') - .query(true) - .reply(404, {"error":{"code":"KeyNotFound","message":"Deleted Key not found: challengeAuthKeyName-Onceauthenticatednewrequestsshouldnotauthenticateagain--1"}}, [ - 'Cache-Control', - 'no-cache', - 'Pragma', - 'no-cache', - 'Content-Length', - '162', - 'Content-Type', - 'application/json; charset=utf-8', - 'Expires', - '-1', - 'x-ms-keyvault-region', - 'westus2', - 'x-ms-client-request-id', - '88293bcc-dab3-4467-9b89-45a1de76eb54', - 'x-ms-request-id', - '60976f5c-c86e-4a4e-ab39-e7ff67dcdf84', - 'x-ms-keyvault-service-version', - '1.2.265.0', - 'x-ms-keyvault-network-info', - 'conn_type=Ipv4;addr=72.68.182.20;act_addr_fam=InterNetwork;', - 'X-Powered-By', - 'ASP.NET', - 'Strict-Transport-Security', - 'max-age=31536000;includeSubDomains', - 'X-Content-Type-Options', - 'nosniff', - 'Date', - 'Wed, 28 Apr 2021 21:22:46 GMT' -]); - -nock('https://keyvault_name.vault.azure.net:443', {"encodedQueryParams":true}) - .get('/deletedkeys/challengeAuthKeyName-Onceauthenticatednewrequestsshouldnotauthenticateagain--1') - .query(true) - .reply(404, {"error":{"code":"KeyNotFound","message":"Deleted Key not found: challengeAuthKeyName-Onceauthenticatednewrequestsshouldnotauthenticateagain--1"}}, [ - 'Cache-Control', - 'no-cache', - 'Pragma', - 'no-cache', - 'Content-Length', - '162', - 'Content-Type', - 'application/json; charset=utf-8', - 'Expires', - '-1', - 'x-ms-keyvault-region', - 'westus2', - 'x-ms-client-request-id', - '0659b4a5-31e7-4217-b623-437b5bff219b', - 'x-ms-request-id', - '3dfd3756-40da-4fc8-9912-e17b07101bb1', - 'x-ms-keyvault-service-version', - '1.2.265.0', - 'x-ms-keyvault-network-info', - 'conn_type=Ipv4;addr=72.68.182.20;act_addr_fam=InterNetwork;', - 'X-Powered-By', - 'ASP.NET', - 'Strict-Transport-Security', - 'max-age=31536000;includeSubDomains', - 'X-Content-Type-Options', - 'nosniff', - 'Date', - 'Wed, 28 Apr 2021 21:22:48 GMT' -]); - -nock('https://keyvault_name.vault.azure.net:443', {"encodedQueryParams":true}) - .get('/deletedkeys/challengeAuthKeyName-Onceauthenticatednewrequestsshouldnotauthenticateagain--1') - .query(true) - .reply(404, {"error":{"code":"KeyNotFound","message":"Deleted Key not found: challengeAuthKeyName-Onceauthenticatednewrequestsshouldnotauthenticateagain--1"}}, [ - 'Cache-Control', - 'no-cache', - 'Pragma', - 'no-cache', - 'Content-Length', - '162', - 'Content-Type', - 'application/json; charset=utf-8', - 'Expires', - '-1', - 'x-ms-keyvault-region', - 'westus2', - 'x-ms-client-request-id', - 'ac50c6ba-00c7-457f-8923-9d9f441db6f7', - 'x-ms-request-id', - 'a423ad08-bd81-4d6e-8893-7f99f989af86', - 'x-ms-keyvault-service-version', - '1.2.265.0', - 'x-ms-keyvault-network-info', - 'conn_type=Ipv4;addr=72.68.182.20;act_addr_fam=InterNetwork;', - 'X-Powered-By', - 'ASP.NET', - 'Strict-Transport-Security', - 'max-age=31536000;includeSubDomains', - 'X-Content-Type-Options', - 'nosniff', - 'Date', - 'Wed, 28 Apr 2021 21:22:50 GMT' -]); - -nock('https://keyvault_name.vault.azure.net:443', {"encodedQueryParams":true}) - .get('/deletedkeys/challengeAuthKeyName-Onceauthenticatednewrequestsshouldnotauthenticateagain--1') - .query(true) - .reply(200, {"recoveryId":"https://keyvault_name.vault.azure.net/deletedkeys/challengeAuthKeyName-Onceauthenticatednewrequestsshouldnotauthenticateagain--1","deletedDate":1619644964,"scheduledPurgeDate":1620249764,"key":{"kid":"https://keyvault_name.vault.azure.net/keys/challengeAuthKeyName-Onceauthenticatednewrequestsshouldnotauthenticateagain--1/e8302fbcbda34bd7b8495b7f02e33e44","kty":"RSA","key_ops":["encrypt","decrypt","sign","verify","wrapKey","unwrapKey"],"n":"rWWkfHiEkyhhPbynXI9loV6Ge0lT3hUEd2nu_lHGgLsPzrhSI0rv_g8cnQP86zB_qkurfioTNRI9VdaS0TnnziXnCIlm1OF06hFedtWHbOEXrGyvrCRZ57uYwhdR_uI-H4UyGzb28kXReuQMlnkxpfNx4iC3ZYuDGAN4OUxW6hy5D5b9KWT2vDfGsf6GvRogNJL1B_5ki4tGlbX-_ts2Bb68j6R5B9yWyXMg0hl8MhNWSkopQe42t7GPW5pi-BJSgWp9PvICqtjjC0uggtoAHo3PurddXNgjvjrj5Py-6T_i70eVxtlUO9EoWLinq0rdsD2xeijKPKYmgCtYOIzMbQ","e":"AQAB"},"attributes":{"enabled":true,"created":1619644946,"updated":1619644946,"recoveryLevel":"CustomizedRecoverable+Purgeable","recoverableDays":7}}, [ - 'Cache-Control', - 'no-cache', - 'Pragma', - 'no-cache', - 'Content-Type', - 'application/json; charset=utf-8', - 'Expires', - '-1', - 'x-ms-keyvault-region', - 'westus2', - 'x-ms-client-request-id', - '0245c842-a36d-4529-a6dc-5c277a68ef1e', - 'x-ms-request-id', - '513b1041-e802-4685-8a18-e85b3202032f', - 'x-ms-keyvault-service-version', - '1.2.265.0', - 'x-ms-keyvault-network-info', - 'conn_type=Ipv4;addr=72.68.182.20;act_addr_fam=InterNetwork;', - 'X-Powered-By', - 'ASP.NET', - 'Strict-Transport-Security', - 'max-age=31536000;includeSubDomains', - 'X-Content-Type-Options', - 'nosniff', - 'Date', - 'Wed, 28 Apr 2021 21:22:52 GMT', - 'Content-Length', - '983' -]); - -nock('https://keyvault_name.vault.azure.net:443', {"encodedQueryParams":true}) - .delete('/deletedkeys/challengeAuthKeyName-Onceauthenticatednewrequestsshouldnotauthenticateagain--1') - .query(true) - .reply(204, "", [ - 'Cache-Control', - 'no-cache', - 'Pragma', - 'no-cache', - 'Expires', - '-1', - 'x-ms-keyvault-region', - 'westus2', - 'x-ms-client-request-id', - 'aef19dd9-eead-4742-bb3f-847aea7bb2b5', - 'x-ms-request-id', - 'f6e04a5f-c942-4691-b868-ee03df174cd2', - 'x-ms-keyvault-service-version', - '1.2.265.0', - 'x-ms-keyvault-network-info', - 'conn_type=Ipv4;addr=72.68.182.20;act_addr_fam=InterNetwork;', - 'X-Powered-By', - 'ASP.NET', - 'Strict-Transport-Security', - 'max-age=31536000;includeSubDomains', - 'X-Content-Type-Options', - 'nosniff', - 'Date', - 'Wed, 28 Apr 2021 21:22:52 GMT' + '1953' ]); diff --git a/sdk/keyvault/keyvault-keys/test/internal/challengeBasedAuthenticationPolicy.spec.ts b/sdk/keyvault/keyvault-keys/test/internal/challengeBasedAuthenticationPolicy.spec.ts index 732e5194b4b1..01ffdb8a7642 100644 --- a/sdk/keyvault/keyvault-keys/test/internal/challengeBasedAuthenticationPolicy.spec.ts +++ b/sdk/keyvault/keyvault-keys/test/internal/challengeBasedAuthenticationPolicy.spec.ts @@ -54,13 +54,13 @@ describe("Challenge based authentication tests", () => { const spyEqualTo = sandbox.spy(AuthenticationChallenge.prototype, "equalTo"); const promises = keyNames.map((name) => { - const promise = client.createKey(name, "RSA"); + const promise = client.listPropertiesOfKeys().next(); return { promise, name }; }); for (const promise of promises) { await promise.promise; - await testClient.flushKey(promise.name); + // await testClient.flushKey(promise.name); } // Even though we had parallel requests, only one authentication should have happened. @@ -84,17 +84,8 @@ describe("Challenge based authentication tests", () => { const sandbox = createSandbox(); const spy = sandbox.spy(AuthenticationChallengeCache.prototype, "setCachedChallenge"); - // Now we run what would be a normal use of the client. - // Here we will create two keys, then flush them. - // testClient.flushKey deletes, then purges the keys. - const keyName = testClient.formatName(`${keyPrefix}-${this!.test!.title}-${keySuffix}`); - const keyNames = [`${keyName}-0`, `${keyName}-1`]; - for (const name of keyNames) { - await client.createKey(name, "RSA"); - } - for (const name of keyNames) { - await testClient.flushKey(name); - } + await client.listDeletedKeys().next(); + await client.listDeletedKeys().next(); // The challenge should have been written to the cache exactly ONCE. assert.equal(spy.getCalls().length, 1); diff --git a/sdk/keyvault/keyvault-keys/test/public/recoverBackupRestore.spec.ts b/sdk/keyvault/keyvault-keys/test/public/recoverBackupRestore.spec.ts index c8fe52f8c421..ab1c34a17a80 100644 --- a/sdk/keyvault/keyvault-keys/test/public/recoverBackupRestore.spec.ts +++ b/sdk/keyvault/keyvault-keys/test/public/recoverBackupRestore.spec.ts @@ -118,7 +118,10 @@ describe("Keys client - restore keys and recover backups", () => { // This test implementation of a restore poller only applies for backups that have been recently deleted. // Backups might not be ready to be restored in an unknown amount of time. // If this is useful to you, please open an issue at: https://github.com/Azure/azure-sdk-for-js/issues - const restorePoller = await testClient.beginRestoreKeyBackup(backup as Uint8Array); + const restorePoller = await testClient.beginRestoreKeyBackup( + backup as Uint8Array, + testPollerProperties + ); const restoredKey = await restorePoller.pollUntilDone(); assert.equal(restoredKey.name, keyName); diff --git a/sdk/keyvault/keyvault-secrets/package.json b/sdk/keyvault/keyvault-secrets/package.json index a8723357d535..8f290665b927 100644 --- a/sdk/keyvault/keyvault-secrets/package.json +++ b/sdk/keyvault/keyvault-secrets/package.json @@ -107,14 +107,14 @@ "@azure/core-http": "^1.2.0", "@azure/core-lro": "^1.0.2", "@azure/core-paging": "^1.1.1", - "@azure/core-tracing": "1.0.0-preview.11", + "@azure/core-tracing": "1.0.0-preview.12", "@azure/logger": "^1.0.0", "tslib": "^2.2.0" }, "devDependencies": { "@azure/dev-tool": "^1.0.0", "@azure/eslint-plugin-azure-sdk": "^3.0.0", - "@azure/identity": "2.0.0-beta.3", + "@azure/identity": "2.0.0-beta.4", "@azure/test-utils-recorder": "^1.0.0", "@microsoft/api-extractor": "7.7.11", "@rollup/plugin-commonjs": "11.0.2", diff --git a/sdk/keyvault/perf-tests/keyvault-certificates/package.json b/sdk/keyvault/perf-tests/keyvault-certificates/package.json index fe6cc5060969..3a63316a7f56 100644 --- a/sdk/keyvault/perf-tests/keyvault-certificates/package.json +++ b/sdk/keyvault/perf-tests/keyvault-certificates/package.json @@ -9,7 +9,7 @@ "dependencies": { "@azure/test-utils-perfstress": "^1.0.0", "dotenv": "^8.2.0", - "@azure/identity": "2.0.0-beta.3", + "@azure/identity": "2.0.0-beta.4", "uuid": "^8.3.0", "@azure/keyvault-certificates": "^4.2.0" }, diff --git a/sdk/keyvault/perf-tests/keyvault-keys/package.json b/sdk/keyvault/perf-tests/keyvault-keys/package.json index 3f571a013c95..8305fc0b75b3 100644 --- a/sdk/keyvault/perf-tests/keyvault-keys/package.json +++ b/sdk/keyvault/perf-tests/keyvault-keys/package.json @@ -10,7 +10,7 @@ "@azure/test-utils-perfstress": "^1.0.0", "@azure/keyvault-keys": "^4.2.1", "dotenv": "^8.2.0", - "@azure/identity": "2.0.0-beta.3", + "@azure/identity": "2.0.0-beta.4", "uuid": "^8.3.0" }, "devDependencies": { diff --git a/sdk/keyvault/perf-tests/keyvault-secrets/package.json b/sdk/keyvault/perf-tests/keyvault-secrets/package.json index 91a83e2035f0..987956e39065 100644 --- a/sdk/keyvault/perf-tests/keyvault-secrets/package.json +++ b/sdk/keyvault/perf-tests/keyvault-secrets/package.json @@ -9,7 +9,7 @@ "dependencies": { "@azure/test-utils-perfstress": "^1.0.0", "dotenv": "^8.2.0", - "@azure/identity": "2.0.0-beta.3", + "@azure/identity": "2.0.0-beta.4", "uuid": "^8.3.0", "@azure/keyvault-secrets": "^4.2.0" }, diff --git a/sdk/keyvault/test-resources-post.ps1 b/sdk/keyvault/test-resources-post.ps1 index 9f48a247365b..f6de5833bed8 100644 --- a/sdk/keyvault/test-resources-post.ps1 +++ b/sdk/keyvault/test-resources-post.ps1 @@ -107,11 +107,9 @@ az keyvault security-domain download --hsm-name $hsmName --security-domain-file Log "Security domain downloaded to '$sdPath'; Managed HSM is now active at '$hsmUrl'" -# Force a sleep to wait for Managed HSM activation to propagate through Cosmos replication. Issue tracked in AzDo. -Log "Sleeping for 60 seconds to allow activation to propagate..." -Start-Sleep -Seconds 60 +$testApplicationOid = $DeploymentOutputs["CLIENT_OBJECT_ID"] Log "Creating additional required role assignments for resource access." -New-AzKeyVaultRoleAssignment -HsmName $hsmName -RoleDefinitionName "Managed HSM Crypto Officer" -ObjectID $DeploymentOutputs["CLIENT_OBJECT_ID"] -New-AzKeyVaultRoleAssignment -HsmName $hsmName -RoleDefinitionName "Managed HSM Crypto User" -ObjectID $DeploymentOutputs["CLIENT_OBJECT_ID"] -Log "Done." +New-AzKeyVaultRoleAssignment -HsmName $hsmName -RoleDefinitionName "Managed HSM Crypto Officer" -ObjectID $testApplicationOid +New-AzKeyVaultRoleAssignment -HsmName $hsmName -RoleDefinitionName "Managed HSM Crypto User" -ObjectID $testApplicationOid +Log "Role assignments created for '$testApplicationOid'" diff --git a/sdk/keyvault/test-resources.json b/sdk/keyvault/test-resources.json index 0b0fda99d1ee..f366f446f965 100644 --- a/sdk/keyvault/test-resources.json +++ b/sdk/keyvault/test-resources.json @@ -173,6 +173,8 @@ "name": "Standard_B1" }, "properties": { + "publicNetworkAccess": "Enabled", + "networkAcls": "[variables('networkAcls')]", "tenantId": "[parameters('tenantId')]", "initialAdminObjectIds": ["[parameters('testApplicationOid')]"], "enablePurgeProtection": false, diff --git a/sdk/metricsadvisor/ai-metrics-advisor/package.json b/sdk/metricsadvisor/ai-metrics-advisor/package.json index 38b45d85e88b..1c096326c8ab 100644 --- a/sdk/metricsadvisor/ai-metrics-advisor/package.json +++ b/sdk/metricsadvisor/ai-metrics-advisor/package.json @@ -85,7 +85,7 @@ "@azure/core-lro": "^1.0.2", "@azure/core-paging": "^1.1.1", "@azure/core-http": "^1.2.0", - "@azure/core-tracing": "1.0.0-preview.11", + "@azure/core-tracing": "1.0.0-preview.12", "@azure/logger": "^1.0.0", "tslib": "^2.2.0" }, diff --git a/sdk/mixedreality/mixedreality-authentication/package.json b/sdk/mixedreality/mixedreality-authentication/package.json index e18b2e80aa70..94cde2f9f59e 100644 --- a/sdk/mixedreality/mixedreality-authentication/package.json +++ b/sdk/mixedreality/mixedreality-authentication/package.json @@ -69,7 +69,7 @@ "dependencies": { "@azure/core-auth": "^1.3.0", "@azure/core-http": "^1.2.0", - "@azure/core-tracing": "1.0.0-preview.11", + "@azure/core-tracing": "1.0.0-preview.12", "@azure/logger": "^1.0.0", "tslib": "^2.2.0" }, diff --git a/sdk/monitor/monitor-opentelemetry-exporter/package.json b/sdk/monitor/monitor-opentelemetry-exporter/package.json index 283952e4a438..401274c6075b 100644 --- a/sdk/monitor/monitor-opentelemetry-exporter/package.json +++ b/sdk/monitor/monitor-opentelemetry-exporter/package.json @@ -24,6 +24,7 @@ "test:browser": "npm run unit-test:browser", "unit-test:browser": "echo skipped", "unit-test:node": "nyc mocha -r esm --require ts-node/register --reporter ../../../common/tools/mocha-multi-reporter.js --timeout 1200000 --full-trace \"test/unit/**/*.test.ts\"", + "unit-test:node:debug": "nyc mocha --inspect-brk -r esm --require ts-node/register --reporter ../../../common/tools/mocha-multi-reporter.js --timeout 1200000 --full-trace \"test/unit/**/*.test.ts\"", "unit-test:node:no-timeout": "echo skipped", "unit-test": "npm run unit-test:node && npm run unit-test:browser", "functional-test": "nyc mocha -r esm --require ts-node/register --reporter ../../../common/tools/mocha-multi-reporter.js --timeout 1200000 --full-trace \"test/functional/**/*.test.ts\"", diff --git a/sdk/monitor/monitor-opentelemetry-exporter/src/export/trace.ts b/sdk/monitor/monitor-opentelemetry-exporter/src/export/trace.ts index 027d745da46b..e7fbd1d564e9 100644 --- a/sdk/monitor/monitor-opentelemetry-exporter/src/export/trace.ts +++ b/sdk/monitor/monitor-opentelemetry-exporter/src/export/trace.ts @@ -80,6 +80,7 @@ export class AzureMonitorTraceExporter implements SpanExporter { try { const { result, statusCode } = await this._sender.send(envelopes); + this._numConsecutiveRedirects = 0; if (statusCode === 200) { // Success -- @todo: start retry timer if (!this._retryTimer) { @@ -121,12 +122,26 @@ export class AzureMonitorTraceExporter implements SpanExporter { } } catch (error) { const restError = error as RestError; - if (restError.statusCode && restError.statusCode === 308) { + if ( + restError.statusCode && + (restError.statusCode === 307 || // Temporary redirect + restError.statusCode === 308) + ) { // Permanent redirect - if (restError.response && restError.response.headers) { - let location = restError.response.headers.get("location"); - this._handleRedirect(location); - return await this._persist(envelopes); + this._numConsecutiveRedirects++; + // To prevent circular redirects + if (this._numConsecutiveRedirects < 10) { + if (restError.response && restError.response.headers) { + let location = restError.response.headers.get("location"); + if (location) { + // Update sender URL + this._sender.handlePermanentRedirect(location); + // Send to redirect endpoint as HTTPs library doesn't handle redirect automatically + return this.exportEnvelopes(envelopes); + } + } + } else { + return { code: ExportResultCode.FAILED, error: new Error("Circular redirect") }; } } else if (restError.statusCode && isRetriable(restError.statusCode)) { return await this._persist(envelopes); @@ -188,14 +203,4 @@ export class AzureMonitorTraceExporter implements SpanExporter { } return false; } - - private _handleRedirect(location: string | undefined) { - if (location) { - this._numConsecutiveRedirects++; - // To prevent circular redirects - if (this._numConsecutiveRedirects < 10) { - this._sender.handlePermanentRedirect(location); - } - } - } } diff --git a/sdk/monitor/monitor-opentelemetry-exporter/test/unit/export/trace.test.ts b/sdk/monitor/monitor-opentelemetry-exporter/test/unit/export/trace.test.ts index 2e5938a037f8..ee9293616d2f 100644 --- a/sdk/monitor/monitor-opentelemetry-exporter/test/unit/export/trace.test.ts +++ b/sdk/monitor/monitor-opentelemetry-exporter/test/unit/export/trace.test.ts @@ -10,7 +10,7 @@ import { partialBreezeResponse, successfulBreezeResponse } from "../breezeTestUtils"; -import { FileSystemPersist } from "../../../src/platform"; +import { FileSystemPersist, HttpSender } from "../../../src/platform"; import { TelemetryItem as Envelope } from "../../../src/generated"; import nock from "nock"; @@ -150,9 +150,8 @@ describe("#AzureMonitorBaseExporter", () => { assert.strictEqual(exporter["_retryTimer"], "foo"); }); - it("should handle redirects in Azure Monitor", async () => { + it("should handle permanent redirects in Azure Monitor", async () => { const exporter = new TestExporter(); - let redirectHost = "https://ukwest-0.in.applicationinsights.azure.com"; let redirectLocation = redirectHost + "/v2/track"; // Redirect endpoint @@ -163,17 +162,81 @@ describe("#AzureMonitorBaseExporter", () => { scope.reply(308, {}, { location: redirectLocation }); let result = await exporter.exportEnvelopesPrivate([envelope]); - // Redirect triggered so telemetry must be persisted + let persistedEnvelopes = (await exporter["_persister"].shift()) as Envelope[]; + assert.strictEqual(persistedEnvelopes, null); assert.strictEqual(result.code, ExportResultCode.SUCCESS); + assert.strictEqual( + (exporter["_sender"])["_appInsightsClient"]["host"], + redirectHost + ); + }); + + it("should handle temporary redirects in Azure Monitor", async () => { + const exporter = new TestExporter(); + let redirectHost = "https://ukwest-0.in.applicationinsights.azure.com"; + let redirectLocation = redirectHost + "/v2/track"; + // Redirect endpoint + const redirectScope = nock(redirectHost).post("/v2/track", () => { + return true; + }); + redirectScope.reply(200, JSON.stringify(successfulBreezeResponse(1))); + scope.reply(307, {}, { location: redirectLocation }); + + let result = await exporter.exportEnvelopesPrivate([envelope]); let persistedEnvelopes = (await exporter["_persister"].shift()) as Envelope[]; - assert.strictEqual(persistedEnvelopes?.length, 1); - assert.deepStrictEqual(persistedEnvelopes[0], toObject(envelope)); - assert.strictEqual(exporter["_numConsecutiveRedirects"], 1); - // After redirect return 200 + assert.strictEqual(persistedEnvelopes, null); + assert.strictEqual(result.code, ExportResultCode.SUCCESS); + assert.strictEqual( + (exporter["_sender"])["_appInsightsClient"]["host"], + redirectHost + ); + }); + + it("should use redirect URL for following requests", async () => { + const exporter = new TestExporter(); + let redirectHost = "https://ukwest-0.in.applicationinsights.azure.com"; + let redirectLocation = redirectHost + "/v2/track"; + // Redirect endpoint + const redirectScope = nock(redirectHost).post("/v2/track", () => { + return true; + }); + redirectScope.twice().reply(200, JSON.stringify(successfulBreezeResponse(1))); + scope.reply(307, {}, { location: redirectLocation }); + let result = await exporter.exportEnvelopesPrivate([envelope]); + assert.strictEqual(result.code, ExportResultCode.SUCCESS); + assert.strictEqual( + (exporter["_sender"])["_appInsightsClient"]["host"], + redirectHost + ); result = await exporter.exportEnvelopesPrivate([envelope]); assert.strictEqual(result.code, ExportResultCode.SUCCESS); - persistedEnvelopes = (await exporter["_persister"].shift()) as Envelope[]; - assert.strictEqual(persistedEnvelopes, null); + assert.strictEqual( + (exporter["_sender"])["_appInsightsClient"]["host"], + redirectHost + ); + }); + + it("should stop redirecting when circular redirect is triggered", async () => { + const exporter = new TestExporter(); + let redirectHost = "https://ukwest-0.in.applicationinsights.azure.com"; + let redirectLocation = redirectHost + "/v2/track"; + // Redirect endpoint + const redirectScope = nock(redirectHost).post("/v2/track", () => { + return true; + }); + // Circle redirect + scope + .reply(307, JSON.stringify(successfulBreezeResponse(1)), { location: redirectLocation }) + .persist(); + redirectScope + .reply(307, JSON.stringify(successfulBreezeResponse(1)), { + location: DEFAULT_BREEZE_ENDPOINT + }) + .persist(); + + let result = await exporter.exportEnvelopesPrivate([envelope]); + assert.strictEqual(result.code, ExportResultCode.FAILED); + assert.strictEqual(result.error?.message, "Circular redirect"); }); }); }); diff --git a/sdk/monitor/monitor-query/package.json b/sdk/monitor/monitor-query/package.json index 0ce7dc6d3388..105810d1a1cd 100644 --- a/sdk/monitor/monitor-query/package.json +++ b/sdk/monitor/monitor-query/package.json @@ -100,7 +100,7 @@ "dependencies": { "@azure/core-auth": "^1.3.0", "@azure/core-http": "^1.2.0", - "@azure/core-tracing": "1.0.0-preview.11", + "@azure/core-tracing": "1.0.0-preview.12", "@azure/logger": "^1.0.0", "tslib": "^2.2.0" }, @@ -111,8 +111,8 @@ "@azure/monitor-opentelemetry-exporter": "1.0.0-beta.4", "@azure/test-utils-recorder": "^1.0.0", "@microsoft/api-extractor": "7.7.11", - "@opentelemetry/api": "1.0.0-rc.0", - "@opentelemetry/node": "~0.19.0", + "@opentelemetry/api": "0.20.0", + "@opentelemetry/node": "0.20.0", "@opentelemetry/tracing": "^0.18.2", "@types/chai-as-promised": "^7.1.0", "@types/chai": "^4.1.6", diff --git a/sdk/quantum/quantum-jobs/package.json b/sdk/quantum/quantum-jobs/package.json index 058bdcabc8e2..9eeb0ed01ad2 100644 --- a/sdk/quantum/quantum-jobs/package.json +++ b/sdk/quantum/quantum-jobs/package.json @@ -66,7 +66,7 @@ "dependencies": { "@azure/core-paging": "^1.1.1", "@azure/core-http": "^1.2.0", - "@azure/core-tracing": "1.0.0-preview.11", + "@azure/core-tracing": "1.0.0-preview.12", "tslib": "^2.2.0" }, "devDependencies": { diff --git a/sdk/schemaregistry/schema-registry-avro/package.json b/sdk/schemaregistry/schema-registry-avro/package.json index 238dee9a1dae..f8f90fc6fdb9 100644 --- a/sdk/schemaregistry/schema-registry-avro/package.json +++ b/sdk/schemaregistry/schema-registry-avro/package.json @@ -72,7 +72,7 @@ "dependencies": { "@azure/schema-registry": "1.0.0-beta.2", "@azure/core-http": "^1.2.0", - "@azure/core-tracing": "1.0.0-preview.11", + "@azure/core-tracing": "1.0.0-preview.12", "@azure/logger": "^1.0.0", "avsc": "^5.5.1", "tslib": "^2.2.0", @@ -82,7 +82,7 @@ "devDependencies": { "@azure/dev-tool": "^1.0.0", "@azure/eslint-plugin-azure-sdk": "^3.0.0", - "@azure/identity": "2.0.0-beta.3", + "@azure/identity": "2.0.0-beta.4", "@azure/test-utils-recorder": "^1.0.0", "@microsoft/api-extractor": "7.7.11", "@rollup/plugin-commonjs": "11.0.2", diff --git a/sdk/schemaregistry/schema-registry/package.json b/sdk/schemaregistry/schema-registry/package.json index 2fed535c1bdf..11d7457c46b1 100644 --- a/sdk/schemaregistry/schema-registry/package.json +++ b/sdk/schemaregistry/schema-registry/package.json @@ -87,14 +87,14 @@ "prettier": "@azure/eslint-plugin-azure-sdk/prettier.json", "dependencies": { "@azure/core-http": "^1.2.0", - "@azure/core-tracing": "1.0.0-preview.11", + "@azure/core-tracing": "1.0.0-preview.12", "@azure/logger": "^1.0.0", "tslib": "^2.2.0" }, "devDependencies": { "@azure/dev-tool": "^1.0.0", "@azure/eslint-plugin-azure-sdk": "^3.0.0", - "@azure/identity": "2.0.0-beta.3", + "@azure/identity": "2.0.0-beta.4", "@azure/test-utils-recorder": "^1.0.0", "@microsoft/api-extractor": "7.7.11", "@rollup/plugin-commonjs": "11.0.2", diff --git a/sdk/search/perf-tests/search-documents/package.json b/sdk/search/perf-tests/search-documents/package.json index d6db87c3f885..ecb8b07a7f43 100644 --- a/sdk/search/perf-tests/search-documents/package.json +++ b/sdk/search/perf-tests/search-documents/package.json @@ -7,7 +7,7 @@ "author": "", "license": "ISC", "dependencies": { - "@azure/identity": "2.0.0-beta.3", + "@azure/identity": "2.0.0-beta.4", "@azure/search-documents": "11.3.0-beta.1", "@azure/test-utils-perfstress": "^1.0.0", "dotenv": "^8.2.0" diff --git a/sdk/search/search-documents/package.json b/sdk/search/search-documents/package.json index 9998db0e4613..545fce3ffe2d 100644 --- a/sdk/search/search-documents/package.json +++ b/sdk/search/search-documents/package.json @@ -78,7 +78,7 @@ "@azure/core-auth": "^1.3.0", "@azure/core-http": "^1.2.0", "@azure/core-paging": "^1.1.1", - "@azure/core-tracing": "1.0.0-preview.11", + "@azure/core-tracing": "1.0.0-preview.12", "@azure/logger": "^1.0.0", "tslib": "^2.2.0", "events": "^3.0.0" diff --git a/sdk/servicebus/service-bus/package.json b/sdk/servicebus/service-bus/package.json index 3b30d1215237..e4934376d22e 100644 --- a/sdk/servicebus/service-bus/package.json +++ b/sdk/servicebus/service-bus/package.json @@ -60,7 +60,7 @@ "extract-api": "tsc -p . && api-extractor run --local", "format": "prettier --write --config ../../../.prettierrc.json --ignore-path ../../../.prettierignore \"samples/**/*.{ts,js}\" \"src/**/*.ts\" \"test/**/*.ts\" \"samples-dev/**/*.ts\" \"*.{js,json}\"", "integration-test:browser": "karma start --single-run", - "integration-test:node": "nyc mocha -r esm --require source-map-support/register --reporter ../../../common/tools/mocha-multi-reporter.js --timeout 120000 --full-trace \"dist-esm/test/internal/**/*.spec.js\" \"dist-esm/test/public/**/*.spec.js\"", + "integration-test:node": "nyc mocha -r esm --require source-map-support/register --reporter ../../../common/tools/mocha-multi-reporter.js --timeout 1200000 --full-trace \"dist-esm/test/internal/**/*.spec.js\" \"dist-esm/test/public/**/*.spec.js\"", "integration-test": "npm run integration-test:node && npm run integration-test:browser", "lint:fix": "eslint package.json api-extractor.json src test --ext .ts --fix --fix-type [problem,suggestion]", "lint": "eslint package.json api-extractor.json src test --ext .ts -f html -o service-bus-lintReport.html || exit 0", @@ -71,7 +71,7 @@ "test:node": "npm run clean && npm run build:test:node && npm run integration-test:node", "test": "npm run test:node && npm run test:browser", "unit-test:browser": "echo skipped", - "unit-test:node": "mocha -r esm -r ts-node/register --require source-map-support/register --reporter ../../../common/tools/mocha-multi-reporter.js --timeout 120000 --full-trace \"test/internal/unit/*.spec.ts\" \"test/internal/node/*.spec.ts\"", + "unit-test:node": "mocha -r esm -r ts-node/register --require source-map-support/register --reporter ../../../common/tools/mocha-multi-reporter.js --timeout 1200000 --full-trace \"test/internal/unit/*.spec.ts\" \"test/internal/node/*.spec.ts\"", "unit-test": "npm run unit-test:node && npm run unit-test:browser", "docs": "typedoc --excludePrivate --excludeNotExported --excludeExternals --stripInternal --mode file --out ./dist/docs ./src" }, @@ -114,7 +114,7 @@ "@azure/core-amqp": "^3.0.0", "@azure/core-asynciterator-polyfill": "^1.0.0", "@azure/core-http": "^1.2.0", - "@azure/core-tracing": "1.0.0-preview.11", + "@azure/core-tracing": "1.0.0-preview.12", "@azure/core-paging": "^1.1.1", "@azure/core-auth": "^1.3.0", "@azure/logger": "^1.0.0", @@ -131,7 +131,7 @@ "devDependencies": { "@azure/dev-tool": "^1.0.0", "@azure/eslint-plugin-azure-sdk": "^3.0.0", - "@azure/identity": "2.0.0-beta.3", + "@azure/identity": "2.0.0-beta.4", "@azure/test-utils-perfstress": "^1.0.0", "@microsoft/api-extractor": "7.7.11", "@rollup/plugin-commonjs": "11.0.2", diff --git a/sdk/servicebus/service-bus/src/core/batchingReceiver.ts b/sdk/servicebus/service-bus/src/core/batchingReceiver.ts index 0e9ade3842ec..b298f4b4cbc2 100644 --- a/sdk/servicebus/service-bus/src/core/batchingReceiver.ts +++ b/sdk/servicebus/service-bus/src/core/batchingReceiver.ts @@ -281,7 +281,7 @@ export class BatchingReceiverLite { if (receiver == null) { // (was somehow closed in between the init() and the return) - return []; + throw new ServiceBusError("Link closed before receiving messages.", "GeneralError"); } const messages = await new Promise((resolve, reject) => diff --git a/sdk/servicebus/service-bus/src/diagnostics/tracing.ts b/sdk/servicebus/service-bus/src/diagnostics/tracing.ts index 426a8bd1afde..c0e015f4041f 100644 --- a/sdk/servicebus/service-bus/src/diagnostics/tracing.ts +++ b/sdk/servicebus/service-bus/src/diagnostics/tracing.ts @@ -130,7 +130,7 @@ export function instrumentMessage( }; } - const traceParent = getTraceParentHeader(messageSpan.context()); + const traceParent = getTraceParentHeader(messageSpan.spanContext()); if (traceParent) { // create a copy so the original isn't modified @@ -145,7 +145,7 @@ export function instrumentMessage( return { message, - spanContext: messageSpan.context() + spanContext: messageSpan.spanContext() }; } finally { messageSpan.end(); @@ -237,5 +237,5 @@ function isSpan(possibleSpan: Span | SpanContext | undefined): possibleSpan is S } const x = possibleSpan as Span; - return typeof x.context === "function"; + return typeof x.spanContext === "function"; } diff --git a/sdk/servicebus/service-bus/test/internal/backupMessageSettlement.spec.ts b/sdk/servicebus/service-bus/test/internal/backupMessageSettlement.spec.ts index 811d2853f12a..a9e958cd6e10 100644 --- a/sdk/servicebus/service-bus/test/internal/backupMessageSettlement.spec.ts +++ b/sdk/servicebus/service-bus/test/internal/backupMessageSettlement.spec.ts @@ -19,6 +19,7 @@ import { ServiceBusMessageImpl, ServiceBusReceivedMessage } from "../../src/serviceBusMessage"; +import { disableCommonLoggers, enableCommonLoggers, testLogger } from "./utils/misc"; const should = chai.should(); chai.use(chaiAsPromised); @@ -256,10 +257,17 @@ describe("Message settlement After Receiver is Closed - Through ManagementLink", const testMessages = entityNames.usesSessions ? TestMessage.getSessionSample() : TestMessage.getSample(); + + testLogger.info(`sending (and receiving) initial message`); + const msg = await sendReceiveMsg(testMessages); + testLogger.info(`Done sending initial messages`); + const msgDeliveryLink = (msg as ServiceBusMessageImpl).delivery.link.name; + testLogger.info(`About to close the underlying link.`); + if (entityNames.usesSessions) { await (receiver as ServiceBusReceiverImpl)["_context"].messageSessions[ msgDeliveryLink @@ -270,10 +278,18 @@ describe("Message settlement After Receiver is Closed - Through ManagementLink", ].close(); } + testLogger.info( + `Underlying link should be closed: ${receiver.isClosed}. This will force us to use the management link to settle. Will now attempt to dead letter.` + ); + let errorWasThrown = false; try { await receiver.deadLetterMessage(msg); + + testLogger.info(`Message has been dead lettered`); } catch (err) { + testLogger.error(`Exception thrown`, err); + should.equal( err.message, `Failed to ${DispositionType.deadletter} the message as the AMQP link with which the message was received is no longer alive.`, @@ -288,6 +304,9 @@ describe("Message settlement After Receiver is Closed - Through ManagementLink", should.equal(errorWasThrown, false, "Error was thrown for sessions without session-id"); } + testLogger.info( + `Creating a peek lock dead letter receiver and attempting to receive the dead lettered message` + ); receiver = await serviceBusClient.test.createPeekLockReceiver(entityNames); if (!entityNames.usesSessions) { @@ -310,22 +329,30 @@ describe("Message settlement After Receiver is Closed - Through ManagementLink", "MessageId is different than expected" ); + testLogger.info(`Attempting to complete the message: ${deadLetterMsgsBatch[0].messageId}`); await receiver.completeMessage(deadLetterMsgsBatch[0]); - await testPeekMsgsLength(deadLetterReceiver, 0); } else { const messageBatch = await receiver.receiveMessages(1); - await receiver.completeMessage(messageBatch[0]); + testLogger.info(`Attempting to complete the message: ${messageBatch[0].messageId}`); + await receiver.completeMessage(messageBatch[0]); await testPeekMsgsLength(receiver, 0); } + + testLogger.info(`Done testing dead letter`); } it( noSessionTestClientType + ": deadLetter() moves message to deadletter queue", async function(): Promise { - await beforeEachTest(noSessionTestClientType); - await testDeadletter(); + enableCommonLoggers(); + try { + await beforeEachTest(noSessionTestClientType); + await testDeadletter(); + } finally { + disableCommonLoggers(); + } } ); diff --git a/sdk/servicebus/service-bus/test/internal/batchReceiver.spec.ts b/sdk/servicebus/service-bus/test/internal/batchReceiver.spec.ts index 60c72f14c7d5..a5ee9c1fa6bc 100644 --- a/sdk/servicebus/service-bus/test/internal/batchReceiver.spec.ts +++ b/sdk/servicebus/service-bus/test/internal/batchReceiver.spec.ts @@ -18,14 +18,15 @@ import { getRandomTestClientTypeWithSessions } from "../public/utils/testutils2"; import { AbortController } from "@azure/abort-controller"; -import { Receiver, ReceiverEvents } from "rhea-promise"; +import { Receiver } from "rhea-promise"; import { ServiceBusSessionReceiver, ServiceBusSessionReceiverImpl } from "../../src/receivers/sessionReceiver"; -import { ConnectionContext } from "../../src/connectionContext"; import { LinkEntity } from "../../src/core/linkEntity"; -import { StandardAbortMessage } from "@azure/core-amqp"; +import { Constants, StandardAbortMessage } from "@azure/core-amqp"; +import { BatchingReceiver } from "../../src/core/batchingReceiver"; +import { disableCommonLoggers, enableCommonLoggers, testLogger } from "./utils/misc"; const should = chai.should(); chai.use(chaiAsPromised); @@ -807,37 +808,15 @@ describe("Batching Receiver", () => { }); describe("Batch Receiver - disconnects", () => { - function simulateDisconnectDuringDrain( - receiverContext: ConnectionContext, - batchingReceiver: LinkEntity | undefined, - didRequestDrainResolver: Function - ) { - if (!batchingReceiver || !batchingReceiver.isOpen()) { - throw new Error(`batchingReceiver is not open or passed undefined.`); - } - // We want to simulate a disconnect once the batching receiver is draining. - // We can detect when the receiver enters a draining state when `addCredit` is - // called while didRequestDrainResolver is called to resolve the promise. - const addCredit = batchingReceiver["link"]!.addCredit; - batchingReceiver["link"]!.addCredit = function(credits) { - // This makes sure the receiveMessages doesn't end because of draining before the disconnect is triggered - // Meaning.. the "resolving the messages" can only happen through the onDetached triggered by disconnect - batchingReceiver["link"]!.removeAllListeners(ReceiverEvents.receiverDrained); - addCredit.call(this, credits); - if (batchingReceiver["link"]!.drain) { - didRequestDrainResolver(); - // Simulate a disconnect being called with a non-retryable error. - receiverContext.connection["_connection"].idle(); - } - }; - } - - describe(noSessionTestClientType + ": Batch Receiver - disconnects", function(): void { + describe("Batch Receiver - disconnects (non-session)", function(): void { before(() => { + enableCommonLoggers(); + console.log(`Entity type: ${noSessionTestClientType}`); serviceBusClient = createServiceBusClientForTests(); }); after(() => { + disableCommonLoggers(); return serviceBusClient.test.after(); }); @@ -890,37 +869,81 @@ describe("Batching Receiver", () => { void > { // Create the sender and receiver. + + testLogger.info("Before the test"); + await beforeEachTest(noSessionTestClientType, "receiveAndDelete"); // The first time `receiveMessages` is called the receiver link is created. // The `receiver_drained` handler is only added after the link is created, // which is a non-blocking task. - await receiver.receiveMessages(1, { maxWaitTimeInMs: 1000 }); - const receiverContext = (receiver as ServiceBusReceiverImpl)["_context"]; + + testLogger.info( + "Receiving a single message to warm up receiver (there isn't one, so this should just time out)" + ); + + await receiver.receiveMessages(1); + + testLogger.info("After receiving our non-existent warmup message"); + const batchingReceiver = (receiver as ServiceBusReceiverImpl)["_batchingReceiver"]; + testLogger.info("Sending first message"); + // Send a message so we have something to receive. await sender.sendMessages(TestMessage.getSample()); - const didRequestDrain = new Promise((resolve) => { - simulateDisconnectDuringDrain(receiverContext, batchingReceiver, resolve); - }); + const { onDetachedCalledPromise } = causeDisconnectDuringDrain(batchingReceiver); + + testLogger.info("Receiving first message + 9 more (forces a drain to happen)"); // Purposefully request more messages than what's available // so that the receiver will have to drain. - const messages1 = await receiver.receiveMessages(10, { maxWaitTimeInMs: 1000 }); + const messages1 = await receiver.receiveMessages(10); + + testLogger.info( + `Receiving done, got ${messages1.length} messages, now waiting for detach event since we forced a .idle()` + ); + + const result = await Promise.all([ + onDetachedCalledPromise, + delay( + Constants.defaultOperationTimeoutInMs * 1.5, + undefined, + undefined, + "ondetachednevercalled" + ) + ]); + + if (typeof result === "string" && result === "ondetachednevercalled") { + assert.fail("ondetached was never called for the receiver"); + } - await didRequestDrain; messages1.length.should.equal(1, "Unexpected number of messages received."); // Make sure that a 2nd receiveMessages call still works // by sending and receiving a single message again. - await sender.sendMessages(TestMessage.getSample()); + const sampleMessage = TestMessage.getSample(); + + testLogger.info( + "Sending another sample message for our 'receiver after interrupted batch receiver' receiver" + ); + + await sender.sendMessages(sampleMessage); + + testLogger.info("Message sent, now attempting to receive"); // wait for the 2nd message to be received. - const messages2 = await receiver.receiveMessages(1, { maxWaitTimeInMs: 5000 }); + // NOTE: we've forced the connection to restart at this point - it's quite possible to get errors + // while we attempt to receive, so we need to handle that. + const messages2 = await receiver.receiveMessages(1); - messages2.length.should.equal(1, "Unexpected number of messages received."); + testLogger.info("Messages received: ${messages2.length}"); + + assert.deepEqual( + messages2!.map((msg) => msg.body), + [sampleMessage.body] + ); }); it("throws an error if drain is in progress (peekLock)", async function(): Promise { @@ -931,34 +954,34 @@ describe("Batching Receiver", () => { // The `receiver_drained` handler is only added after the link is created, // which is a non-blocking task. await receiver.receiveMessages(1, { maxWaitTimeInMs: 1000 }); - const receiverContext = (receiver as ServiceBusReceiverImpl)["_context"]; const batchingReceiver = (receiver as ServiceBusReceiverImpl)["_batchingReceiver"]; // Send a message so we have something to receive. await sender.sendMessages(TestMessage.getSample()); - const didRequestDrain = new Promise((resolve) => { - simulateDisconnectDuringDrain(receiverContext, batchingReceiver, resolve); - }); + const { onDetachedCalledPromise } = causeDisconnectDuringDrain(batchingReceiver); // Purposefully request more messages than what's available // so that the receiver will have to drain. const testFailureMessage = "Test failure"; try { - await receiver.receiveMessages(10, { maxWaitTimeInMs: 1000 }); + await receiver.receiveMessages(10); throw new Error(testFailureMessage); } catch (err) { - err.message && err.message.should.not.equal(testFailureMessage); + assert.deepNestedInclude(err, { + name: "Error", + message: "Test: fake connection failure" + }); } - await didRequestDrain; + await onDetachedCalledPromise; // Make sure that a 2nd receiveMessages call still works // by sending and receiving a single message again. await sender.sendMessages(TestMessage.getSample()); // wait for the 2nd message to be received. - const messages = await receiver.receiveMessages(1, { maxWaitTimeInMs: 5000 }); + const messages = await receiver.receiveMessages(1); messages.length.should.equal(1, "Unexpected number of messages received."); }); @@ -1045,11 +1068,15 @@ describe("Batching Receiver", () => { }); }); - describe(withSessionTestClientType + ": Batch Receiver - disconnects", function(): void { + describe("Session Batch Receiver - disconnects (sessions)", function(): void { let serviceBusClient: ServiceBusClientForTests; let sender: ServiceBusSender; let receiver: ServiceBusSessionReceiver; + before(() => { + console.log(`Entity type: ${withSessionTestClientType}`); + }); + async function beforeEachTest( receiveMode: "peekLock" | "receiveAndDelete" = "peekLock" ): Promise { @@ -1136,21 +1163,19 @@ describe("Batching Receiver", () => { "Unexpected number of received messages(before disconnect)." ); - const receiverContext = (receiver as ServiceBusSessionReceiverImpl)["_context"]; const batchingReceiver = (receiver as ServiceBusSessionReceiverImpl)["_messageSession"]; // Send a message so we have something to receive. await sender.sendMessages(TestMessage.getSessionSample()); - const didRequestDrain = new Promise((resolve) => { - simulateDisconnectDuringDrain(receiverContext, batchingReceiver, resolve); - }); + const { onDetachedCalledPromise } = causeDisconnectDuringDrain(batchingReceiver); // Purposefully request more messages than what's available // so that the receiver will have to drain. const messages2 = await receiver.receiveMessages(10); - await didRequestDrain; + await onDetachedCalledPromise; + messages2.length.should.equal( 1, "Unexpected number of messages received(during disconnect)." @@ -1196,29 +1221,29 @@ describe("Batching Receiver", () => { "Unexpected number of received messages(before disconnect)." ); - const receiverContext = (receiver as ServiceBusSessionReceiverImpl)["_context"]; const batchingReceiver = (receiver as ServiceBusSessionReceiverImpl)["_messageSession"]; // Send a message so we have something to receive. await sender.sendMessages(TestMessage.getSessionSample()); - const didRequestDrain = new Promise((resolve) => { - simulateDisconnectDuringDrain(receiverContext, batchingReceiver, resolve); - }); + const { onDetachedCalledPromise: drainRequestedPromise } = causeDisconnectDuringDrain( + batchingReceiver + ); // Purposefully request more messages than what's available // so that the receiver will have to drain. const testFailureMessage = "Test failure"; try { - await receiver.receiveMessages(10, { maxWaitTimeInMs: 5000 }); + await receiver.receiveMessages(10); throw new Error(testFailureMessage); } catch (err) { - err.message && - err.code.should.equal("SessionLockLost") && - err.message.should.not.equal(testFailureMessage); + assert.deepNestedInclude(err, { + name: "Error", + message: "Test: fake connection failure" + }); } - await didRequestDrain; + await drainRequestedPromise; }); it("returns messages if receive in progress (receiveAndDelete)", async function(): Promise< @@ -1318,14 +1343,70 @@ describe("Batching Receiver", () => { // so that the receiver will have to drain. const testFailureMessage = "Test failure"; try { - await receiver.receiveMessages(10, { maxWaitTimeInMs: 5000 }); + await receiver.receiveMessages(10); throw new Error(testFailureMessage); } catch (err) { - err.message && - err.code.should.equal("SessionLockLost") && - err.message.should.not.equal(testFailureMessage); + assert.deepNestedInclude(err, { + name: "ServiceBusError", + code: "SessionLockLost" + }); } }); }); }); }); + +/** + * Sets `batchingReceiver` so it's next drain call will result in the connection recycling prior to the + * drain completing. The primary use is just to make sure that when we terminate a receiveMessages() call + * early due to a disconnect (and interrupt the drain) that the link is restored and can be used + * again afterwards. + * + * The `onDetachedCalledPromise` property in the return object allows you to await until the batching + * receiver has actually been detached. + * + * @param batchingReceiver A batching receiver (minimal interface compatible with sessions and non-sessions) + * @returns an object with `onDetachedCalledPromise` that resolves when onDetached has completed + * for the batching receiver. + */ +function causeDisconnectDuringDrain( + batchingReceiver: (Pick & LinkEntity) | undefined +): { onDetachedCalledPromise: Promise } { + let resolveOnDetachedCallPromise: () => void; + + let onDetachedCalledPromise = new Promise((resolve) => { + resolveOnDetachedCallPromise = resolve; + }); + + if (!batchingReceiver || !batchingReceiver.isOpen()) { + throw new Error(`batchingReceiver is not open or passed undefined.`); + } + + const link = batchingReceiver["link"]; + + if (link == null) { + throw new Error("No active link for batching receiver"); + } + + const origAddCredit = link.addCredit; + + // We want to simulate a disconnect once the batching receiver is draining. + // We can detect when the receiver enters a draining state when `addCredit` is + // called while didRequestDrainResolver is called to resolve the promise. + const addCreditThatImmediatelyDetaches = function(credits: number): void { + origAddCredit.call(link, credits); + + if (link.drain && credits === 1) { + // initiate the detach now (prior to any possibilty of the 'drain' call being scheduled) + batchingReceiver + .onDetached(new Error("Test: fake connection failure")) + .then(() => resolveOnDetachedCallPromise()); + } + }; + + link["addCredit"] = addCreditThatImmediatelyDetaches; + + return { + onDetachedCalledPromise + }; +} diff --git a/sdk/servicebus/service-bus/test/internal/operationOptionsForATOM.spec.ts b/sdk/servicebus/service-bus/test/internal/operationOptionsForATOM.spec.ts index bfaa9b730ad9..6cc7f94c00fc 100644 --- a/sdk/servicebus/service-bus/test/internal/operationOptionsForATOM.spec.ts +++ b/sdk/servicebus/service-bus/test/internal/operationOptionsForATOM.spec.ts @@ -277,7 +277,7 @@ describe("Operation Options", () => { ] }; - assert.deepStrictEqual(tracer.getSpanGraph(rootSpan.context().traceId), expectedGraph); + assert.deepStrictEqual(tracer.getSpanGraph(rootSpan.spanContext().traceId), expectedGraph); assert.strictEqual(tracer.getActiveSpans().length, 0, "All spans should have had end called"); }); }); diff --git a/sdk/servicebus/service-bus/test/internal/serviceBusClient.spec.ts b/sdk/servicebus/service-bus/test/internal/serviceBusClient.spec.ts index 1b2467a97266..6bf5b22250fa 100644 --- a/sdk/servicebus/service-bus/test/internal/serviceBusClient.spec.ts +++ b/sdk/servicebus/service-bus/test/internal/serviceBusClient.spec.ts @@ -5,6 +5,7 @@ import { EnvironmentCredential } from "@azure/identity"; import chai from "chai"; import chaiAsPromised from "chai-as-promised"; import * as dotenv from "dotenv"; +import { Constants as CoreAmqpConstants } from "@azure/core-amqp"; import Long from "long"; import { isServiceBusError, @@ -294,7 +295,11 @@ describe("ServiceBusClient live tests", () => { }); should.equal( - await checkWithTimeout(() => errorWasThrown === true, 10, 3000), + await checkWithTimeout( + () => errorWasThrown === true, + 1000, + CoreAmqpConstants.defaultOperationTimeoutInMs * 2 // arbitrary, just don't want it to be too short. + ), true, "Error thrown flag must be true" ); diff --git a/sdk/servicebus/service-bus/test/internal/tracing.spec.ts b/sdk/servicebus/service-bus/test/internal/tracing.spec.ts index 407591b59cf2..ef6d64e08351 100644 --- a/sdk/servicebus/service-bus/test/internal/tracing.spec.ts +++ b/sdk/servicebus/service-bus/test/internal/tracing.spec.ts @@ -12,14 +12,12 @@ import { function legacyOptionsUsingSpanContext(rootSpan: TestSpan): Pick { return { - // @ts-ignore Using the deprecated field for testing - parentSpan: rootSpan.context() + parentSpan: rootSpan.spanContext() }; } function legacyOptionsUsingSpan(rootSpan: TestSpan): Pick { return { - // @ts-ignore Using the deprecated field for testing parentSpan: rootSpan }; } @@ -109,7 +107,7 @@ function modernOptionsWithAccidentalParentSpanSet(rootSpan: TestSpan): TryAddOpt ] }; - tracer.getSpanGraph(rootSpan.context().traceId).should.eql(expectedGraph); + tracer.getSpanGraph(rootSpan.spanContext().traceId).should.eql(expectedGraph); tracer.getActiveSpans().length.should.equal(0, "All spans should have had end called."); resetTracer(); }); @@ -160,7 +158,7 @@ function modernOptionsWithAccidentalParentSpanSet(rootSpan: TestSpan): TryAddOpt ] }; - tracer.getSpanGraph(rootSpan.context().traceId).should.eql(expectedGraph); + tracer.getSpanGraph(rootSpan.spanContext().traceId).should.eql(expectedGraph); tracer.getActiveSpans().length.should.equal(0, "All spans should have had end called."); resetTracer(); }); @@ -209,7 +207,7 @@ function modernOptionsWithAccidentalParentSpanSet(rootSpan: TestSpan): TryAddOpt ] }; - tracer.getSpanGraph(rootSpan.context().traceId).should.eql(expectedGraph); + tracer.getSpanGraph(rootSpan.spanContext().traceId).should.eql(expectedGraph); tracer.getActiveSpans().length.should.equal(0, "All spans should have had end called."); resetTracer(); }); @@ -268,7 +266,7 @@ function modernOptionsWithAccidentalParentSpanSet(rootSpan: TestSpan): TryAddOpt ] }; - tracer.getSpanGraph(rootSpan.context().traceId).should.eql(expectedGraph); + tracer.getSpanGraph(rootSpan.spanContext().traceId).should.eql(expectedGraph); tracer.getActiveSpans().length.should.equal(0, "All spans should have had end called."); const knownSendSpans = tracer @@ -336,7 +334,7 @@ function modernOptionsWithAccidentalParentSpanSet(rootSpan: TestSpan): TryAddOpt ] }; - tracer.getSpanGraph(rootSpan.context().traceId).should.eql(expectedGraph); + tracer.getSpanGraph(rootSpan.spanContext().traceId).should.eql(expectedGraph); tracer.getActiveSpans().length.should.equal(0, "All spans should have had end called."); resetTracer(); }); diff --git a/sdk/servicebus/service-bus/test/internal/unit/messageSpan.spec.ts b/sdk/servicebus/service-bus/test/internal/unit/messageSpan.spec.ts index 4fba79abba7b..5fcfa822c0c9 100644 --- a/sdk/servicebus/service-bus/test/internal/unit/messageSpan.spec.ts +++ b/sdk/servicebus/service-bus/test/internal/unit/messageSpan.spec.ts @@ -23,8 +23,8 @@ describe("#createMessageSpan()", () => { const { span } = createMessageSpan({}, "entity path", "host address"); should.exist(span); - should.exist(span.context().spanId); - should.exist(span.context().traceId); + should.exist(span.spanContext().spanId); + should.exist(span.spanContext().traceId); should.equal((span as any).name, "Azure.ServiceBus.message"); assert.deepStrictEqual((span as any).attributes, { diff --git a/sdk/servicebus/service-bus/test/internal/unit/receiver.spec.ts b/sdk/servicebus/service-bus/test/internal/unit/receiver.spec.ts index 0e10d6bf7ada..f8b3080d9bdf 100644 --- a/sdk/servicebus/service-bus/test/internal/unit/receiver.spec.ts +++ b/sdk/servicebus/service-bus/test/internal/unit/receiver.spec.ts @@ -21,6 +21,7 @@ import { AbortSignalLike } from "@azure/abort-controller"; import { ServiceBusSessionReceiverImpl } from "../../../src/receivers/sessionReceiver"; import { MessageSession } from "../../../src/session/messageSession"; import sinon from "sinon"; +import { assertThrows } from "../../public/utils/testUtils"; describe("Receiver unit tests", () => { describe("init() and close() interactions", () => { @@ -43,9 +44,11 @@ describe("Receiver unit tests", () => { }; // make an init() happen internally. - const emptyArrayOfMessages = await batchingReceiver.receive(1, 1, 1, {}); - - assert.isEmpty(emptyArrayOfMessages); + await assertThrows(() => batchingReceiver.receive(1, 1, 1, {}), { + name: "ServiceBusError", + code: "GeneralError", + message: "Link closed before receiving messages." + }); assert.isTrue(initWasCalled); }); diff --git a/sdk/servicebus/service-bus/test/internal/unit/tracing.spec.ts b/sdk/servicebus/service-bus/test/internal/unit/tracing.spec.ts index d28efafcc5c4..290622a7ecff 100644 --- a/sdk/servicebus/service-bus/test/internal/unit/tracing.spec.ts +++ b/sdk/servicebus/service-bus/test/internal/unit/tracing.spec.ts @@ -311,7 +311,7 @@ describe("Tracing tests", () => { }; it("basic span properties are set", async () => { - const fakeParentSpanContext = new NoOpSpan().context(); + const fakeParentSpanContext = new NoOpSpan().spanContext(); createProcessingSpan([], receiverProperties, connectionConfig, { tracingOptions: { @@ -377,7 +377,7 @@ describe("Tracing tests", () => { assert.notEqual(message, originalMessage, "Instrumenting a message should copy it"); assert.ok(tracer.spanOptions, "A span should be created when we instrumented the messsage"); - const spanContextFromSender = tracer.span?.context(); + const spanContextFromSender = tracer.span?.spanContext(); assert.ok(spanContextFromSender); tracer.clearTracingData(); diff --git a/sdk/servicebus/service-bus/test/internal/utils/misc.ts b/sdk/servicebus/service-bus/test/internal/utils/misc.ts index 06b52e521046..41cea80aeda0 100644 --- a/sdk/servicebus/service-bus/test/internal/utils/misc.ts +++ b/sdk/servicebus/service-bus/test/internal/utils/misc.ts @@ -1,6 +1,7 @@ // Copyright (c) Microsoft Corporation. // Licensed under the MIT license. +import { createClientLogger, setLogLevel } from "@azure/logger"; import { Delivery, ServiceBusReceivedMessage } from "../../../src"; import { ServiceBusMessageImpl } from "../../../src/serviceBusMessage"; @@ -17,3 +18,13 @@ export function getDeliveryProperty(message: ServiceBusReceivedMessage): Deliver "Received message does not contain a .delivery member - not a ServiceBusMessageImpl instance." ); } + +export const testLogger = createClientLogger("test"); + +export function enableCommonLoggers() { + setLogLevel("verbose"); +} + +export function disableCommonLoggers() { + setLogLevel(); +} diff --git a/sdk/storage/storage-blob-changefeed/package.json b/sdk/storage/storage-blob-changefeed/package.json index cc9291c04629..605a5702c129 100644 --- a/sdk/storage/storage-blob-changefeed/package.json +++ b/sdk/storage/storage-blob-changefeed/package.json @@ -99,7 +99,7 @@ "@azure/core-http": "^1.2.0", "@azure/core-lro": "^1.0.2", "@azure/core-paging": "^1.1.1", - "@azure/core-tracing": "1.0.0-preview.11", + "@azure/core-tracing": "1.0.0-preview.12", "@azure/logger": "^1.0.0", "events": "^3.0.0", "tslib": "^2.2.0" diff --git a/sdk/storage/storage-blob/package.json b/sdk/storage/storage-blob/package.json index 31f3d5d4eee3..c050250799b5 100644 --- a/sdk/storage/storage-blob/package.json +++ b/sdk/storage/storage-blob/package.json @@ -130,7 +130,7 @@ "@azure/core-http": "^1.2.0", "@azure/core-lro": "^1.0.2", "@azure/core-paging": "^1.1.1", - "@azure/core-tracing": "1.0.0-preview.11", + "@azure/core-tracing": "1.0.0-preview.12", "@azure/logger": "^1.0.0", "events": "^3.0.0", "tslib": "^2.2.0" @@ -139,7 +139,7 @@ "@azure/core-rest-pipeline": "^1.0.3", "@azure/dev-tool": "^1.0.0", "@azure/eslint-plugin-azure-sdk": "^3.0.0", - "@azure/identity": "2.0.0-beta.3", + "@azure/identity": "2.0.0-beta.4", "@azure/test-utils-recorder": "^1.0.0", "@azure/test-utils-perfstress": "^1.0.0", "@microsoft/api-extractor": "7.7.11", diff --git a/sdk/storage/storage-blob/test/blobclient.spec.ts b/sdk/storage/storage-blob/test/blobclient.spec.ts index 5eef4e45d1ee..8073aa4a9464 100644 --- a/sdk/storage/storage-blob/test/blobclient.spec.ts +++ b/sdk/storage/storage-blob/test/blobclient.spec.ts @@ -742,7 +742,7 @@ describe("BlobClient", () => { ] }; - assert.deepStrictEqual(tracer.getSpanGraph(rootSpan.context().traceId), expectedGraph); + assert.deepStrictEqual(tracer.getSpanGraph(rootSpan.spanContext().traceId), expectedGraph); assert.strictEqual(tracer.getActiveSpans().length, 0, "All spans should have had end called"); }); diff --git a/sdk/storage/storage-blob/test/containerclient.spec.ts b/sdk/storage/storage-blob/test/containerclient.spec.ts index eb39b22d5e5d..98a7d0b77ca9 100644 --- a/sdk/storage/storage-blob/test/containerclient.spec.ts +++ b/sdk/storage/storage-blob/test/containerclient.spec.ts @@ -734,7 +734,7 @@ describe("ContainerClient", () => { ] }; - assert.deepStrictEqual(tracer.getSpanGraph(rootSpan.context().traceId), expectedGraph); + assert.deepStrictEqual(tracer.getSpanGraph(rootSpan.spanContext().traceId), expectedGraph); assert.strictEqual(tracer.getActiveSpans().length, 0, "All spans should have had end called"); await containerClient.deleteBlob(blobName); diff --git a/sdk/storage/storage-file-datalake/package.json b/sdk/storage/storage-file-datalake/package.json index 703c1a771be5..2dda156fa6dc 100644 --- a/sdk/storage/storage-file-datalake/package.json +++ b/sdk/storage/storage-file-datalake/package.json @@ -109,7 +109,7 @@ "@azure/abort-controller": "^1.0.0", "@azure/core-http": "^1.2.0", "@azure/core-paging": "^1.1.1", - "@azure/core-tracing": "1.0.0-preview.11", + "@azure/core-tracing": "1.0.0-preview.12", "@azure/logger": "^1.0.0", "@azure/storage-blob": "^12.6.0-beta.1", "events": "^3.0.0", @@ -118,7 +118,7 @@ "devDependencies": { "@azure/dev-tool": "^1.0.0", "@azure/eslint-plugin-azure-sdk": "^3.0.0", - "@azure/identity": "2.0.0-beta.3", + "@azure/identity": "2.0.0-beta.4", "@azure/test-utils-recorder": "^1.0.0", "@azure/test-utils-perfstress": "^1.0.0", "@microsoft/api-extractor": "7.7.11", diff --git a/sdk/storage/storage-file-datalake/test/filesystemclient.spec.ts b/sdk/storage/storage-file-datalake/test/filesystemclient.spec.ts index a52e438c1d77..8766f77ee19e 100644 --- a/sdk/storage/storage-file-datalake/test/filesystemclient.spec.ts +++ b/sdk/storage/storage-file-datalake/test/filesystemclient.spec.ts @@ -102,7 +102,7 @@ describe("DataLakeFileSystemClient", () => { ] }; - assert.deepStrictEqual(tracer.getSpanGraph(rootSpan.context().traceId), expectedGraph); + assert.deepStrictEqual(tracer.getSpanGraph(rootSpan.spanContext().traceId), expectedGraph); assert.strictEqual(tracer.getActiveSpans().length, 0, "All spans should have had end called"); }); diff --git a/sdk/storage/storage-file-datalake/test/pathclient.spec.ts b/sdk/storage/storage-file-datalake/test/pathclient.spec.ts index cf91b91e8b24..5eed11bf2e17 100644 --- a/sdk/storage/storage-file-datalake/test/pathclient.spec.ts +++ b/sdk/storage/storage-file-datalake/test/pathclient.spec.ts @@ -192,7 +192,7 @@ describe("DataLakePathClient", () => { ] }; - assert.deepStrictEqual(tracer.getSpanGraph(rootSpan.context().traceId), expectedGraph); + assert.deepStrictEqual(tracer.getSpanGraph(rootSpan.spanContext().traceId), expectedGraph); assert.strictEqual(tracer.getActiveSpans().length, 0, "All spans should have had end called"); }); diff --git a/sdk/storage/storage-file-share/package.json b/sdk/storage/storage-file-share/package.json index cbdc6fa91154..af135ddfd7f8 100644 --- a/sdk/storage/storage-file-share/package.json +++ b/sdk/storage/storage-file-share/package.json @@ -117,7 +117,7 @@ "@azure/abort-controller": "^1.0.0", "@azure/core-http": "^1.2.0", "@azure/core-paging": "^1.1.1", - "@azure/core-tracing": "1.0.0-preview.11", + "@azure/core-tracing": "1.0.0-preview.12", "@azure/logger": "^1.0.0", "events": "^3.0.0", "tslib": "^2.2.0" diff --git a/sdk/storage/storage-file-share/test/directoryclient.spec.ts b/sdk/storage/storage-file-share/test/directoryclient.spec.ts index be34c5638c60..a3939b58af98 100644 --- a/sdk/storage/storage-file-share/test/directoryclient.spec.ts +++ b/sdk/storage/storage-file-share/test/directoryclient.spec.ts @@ -794,7 +794,7 @@ describe("DirectoryClient", () => { ] }; - assert.deepStrictEqual(tracer.getSpanGraph(rootSpan.context().traceId), expectedGraph); + assert.deepStrictEqual(tracer.getSpanGraph(rootSpan.spanContext().traceId), expectedGraph); assert.strictEqual(tracer.getActiveSpans().length, 0, "All spans should have had end called"); }); diff --git a/sdk/storage/storage-file-share/test/fileclient.spec.ts b/sdk/storage/storage-file-share/test/fileclient.spec.ts index a653cf8d0209..5c931c4e4053 100644 --- a/sdk/storage/storage-file-share/test/fileclient.spec.ts +++ b/sdk/storage/storage-file-share/test/fileclient.spec.ts @@ -872,7 +872,7 @@ describe("FileClient", () => { ] }; - assert.deepStrictEqual(tracer.getSpanGraph(rootSpan.context().traceId), expectedGraph); + assert.deepStrictEqual(tracer.getSpanGraph(rootSpan.spanContext().traceId), expectedGraph); assert.strictEqual(tracer.getActiveSpans().length, 0, "All spans should have had end called"); }); }); diff --git a/sdk/storage/storage-queue/package.json b/sdk/storage/storage-queue/package.json index 78ac382493b3..9a202bc23d4b 100644 --- a/sdk/storage/storage-queue/package.json +++ b/sdk/storage/storage-queue/package.json @@ -112,14 +112,14 @@ "@azure/abort-controller": "^1.0.0", "@azure/core-http": "^1.2.0", "@azure/core-paging": "^1.1.1", - "@azure/core-tracing": "1.0.0-preview.11", + "@azure/core-tracing": "1.0.0-preview.12", "@azure/logger": "^1.0.0", "tslib": "^2.2.0" }, "devDependencies": { "@azure/dev-tool": "^1.0.0", "@azure/eslint-plugin-azure-sdk": "^3.0.0", - "@azure/identity": "2.0.0-beta.3", + "@azure/identity": "2.0.0-beta.4", "@azure/test-utils-recorder": "^1.0.0", "@microsoft/api-extractor": "7.7.11", "@rollup/plugin-commonjs": "11.0.2", diff --git a/sdk/storage/storage-queue/test/queueclient.spec.ts b/sdk/storage/storage-queue/test/queueclient.spec.ts index 12dd47ffbfa2..4b832f67d6bc 100644 --- a/sdk/storage/storage-queue/test/queueclient.spec.ts +++ b/sdk/storage/storage-queue/test/queueclient.spec.ts @@ -232,7 +232,7 @@ describe("QueueClient", () => { ] }; - assert.deepStrictEqual(tracer.getSpanGraph(rootSpan.context().traceId), expectedGraph); + assert.deepStrictEqual(tracer.getSpanGraph(rootSpan.spanContext().traceId), expectedGraph); assert.strictEqual(tracer.getActiveSpans().length, 0, "All spans should have had end called"); }); }); diff --git a/sdk/storage/test-resources-post.ps1 b/sdk/storage/test-resources-post.ps1 index 3e61bc86c32d..d838305fec31 100644 --- a/sdk/storage/test-resources-post.ps1 +++ b/sdk/storage/test-resources-post.ps1 @@ -5,8 +5,8 @@ # There are no documented approaches to specifying CORS rules using ARM, this is a workaround until # support for setting CORS rules is added to ARM for Queues -# It is invoked by the https://github.com/Azure/azure-sdk-for-js/blob/master/eng/New-TestResources.ps1 -# script after the ARM template, defined in https://github.com/Azure/azure-sdk-for-js/blob/master/sdk/storage/test-resources.json, +# It is invoked by the https://github.com/Azure/azure-sdk-for-js/blob/main/eng/New-TestResources.ps1 +# script after the ARM template, defined in https://github.com/Azure/azure-sdk-for-js/blob/main/sdk/storage/test-resources.json, # is finished being deployed. The ARM template is responsible for creating the Storage accounts needed for live tests. param ( diff --git a/sdk/synapse/synapse-access-control/package.json b/sdk/synapse/synapse-access-control/package.json index 347a6a332851..c489ac4ab00c 100644 --- a/sdk/synapse/synapse-access-control/package.json +++ b/sdk/synapse/synapse-access-control/package.json @@ -9,7 +9,7 @@ "dependencies": { "@azure/core-paging": "^1.1.1", "@azure/core-http": "^1.2.0", - "@azure/core-tracing": "1.0.0-preview.11", + "@azure/core-tracing": "1.0.0-preview.12", "tslib": "^2.2.0" }, "keywords": [ diff --git a/sdk/synapse/synapse-artifacts/package.json b/sdk/synapse/synapse-artifacts/package.json index af7c3154358d..324e028bc463 100644 --- a/sdk/synapse/synapse-artifacts/package.json +++ b/sdk/synapse/synapse-artifacts/package.json @@ -10,7 +10,7 @@ "@azure/core-lro": "^1.0.2", "@azure/core-paging": "^1.1.1", "@azure/core-http": "^1.2.0", - "@azure/core-tracing": "1.0.0-preview.11", + "@azure/core-tracing": "1.0.0-preview.12", "tslib": "^2.2.0" }, "browser": { diff --git a/sdk/synapse/synapse-managed-private-endpoints/package.json b/sdk/synapse/synapse-managed-private-endpoints/package.json index b83800fd94da..bac7eed76889 100644 --- a/sdk/synapse/synapse-managed-private-endpoints/package.json +++ b/sdk/synapse/synapse-managed-private-endpoints/package.json @@ -9,7 +9,7 @@ "dependencies": { "@azure/core-paging": "^1.1.1", "@azure/core-http": "^1.2.0", - "@azure/core-tracing": "1.0.0-preview.11", + "@azure/core-tracing": "1.0.0-preview.12", "tslib": "^2.2.0" }, "keywords": [ diff --git a/sdk/synapse/synapse-monitoring/package.json b/sdk/synapse/synapse-monitoring/package.json index 0a77bb4c4c52..8d932b43ffac 100644 --- a/sdk/synapse/synapse-monitoring/package.json +++ b/sdk/synapse/synapse-monitoring/package.json @@ -8,7 +8,7 @@ "version": "1.0.0-beta.3", "dependencies": { "@azure/core-http": "^1.2.0", - "@azure/core-tracing": "1.0.0-preview.11", + "@azure/core-tracing": "1.0.0-preview.12", "tslib": "^2.2.0" }, "keywords": [ diff --git a/sdk/synapse/synapse-spark/package.json b/sdk/synapse/synapse-spark/package.json index d490a5a2db28..571cd75968d6 100644 --- a/sdk/synapse/synapse-spark/package.json +++ b/sdk/synapse/synapse-spark/package.json @@ -8,7 +8,7 @@ "version": "1.0.0-beta.3", "dependencies": { "@azure/core-http": "^1.2.0", - "@azure/core-tracing": "1.0.0-preview.11", + "@azure/core-tracing": "1.0.0-preview.12", "tslib": "^2.2.0" }, "keywords": [ diff --git a/sdk/tables/test-resources-post.ps1 b/sdk/tables/test-resources-post.ps1 index c4d042cdae42..6108ae34feed 100644 --- a/sdk/tables/test-resources-post.ps1 +++ b/sdk/tables/test-resources-post.ps1 @@ -5,8 +5,8 @@ # There are no documented approaches to specifying CORS rules using ARM, this is a workaround until # support for setting CORS rules is added to ARM for Tables -# It is invoked by the https://github.com/Azure/azure-sdk-for-js/blob/master/eng/New-TestResources.ps1 -# script after the ARM template, defined in https://github.com/Azure/azure-sdk-for-js/blob/master/sdk/tables/test-resources.json, +# It is invoked by the https://github.com/Azure/azure-sdk-for-js/blob/main/eng/New-TestResources.ps1 +# script after the ARM template, defined in https://github.com/Azure/azure-sdk-for-js/blob/main/sdk/tables/test-resources.json, # is finished being deployed. The ARM template is responsible for creating the Storage accounts needed for live tests. param ( @@ -35,4 +35,4 @@ $corsRules = (@{ Set-AzStorageCORSRule -ServiceType 'Table' -CorsRules $corsRules -Context $context -Write-Verbose "CORS rule set for $storageAccountName" \ No newline at end of file +Write-Verbose "CORS rule set for $storageAccountName" diff --git a/sdk/template/template/package.json b/sdk/template/template/package.json index 68bbc136a6bc..46009eb92733 100644 --- a/sdk/template/template/package.json +++ b/sdk/template/template/package.json @@ -83,7 +83,7 @@ "dependencies": { "@azure/core-auth": "^1.3.0", "@azure/core-http": "^1.2.0", - "@azure/core-tracing": "1.0.0-preview.11", + "@azure/core-tracing": "1.0.0-preview.12", "@azure/logger": "^1.0.0", "tslib": "^2.2.0" }, diff --git a/sdk/test-utils/recorder/package.json b/sdk/test-utils/recorder/package.json index 19a93ad9bc6a..814db97c65ea 100644 --- a/sdk/test-utils/recorder/package.json +++ b/sdk/test-utils/recorder/package.json @@ -64,7 +64,7 @@ "private": true, "dependencies": { "@azure/core-http": "^1.2.0", - "@azure/core-tracing": "1.0.0-preview.11", + "@azure/core-tracing": "1.0.0-preview.12", "fs-extra": "^8.1.0", "nise": "^4.0.3", "nock": "^12.0.3", diff --git a/sdk/textanalytics/perf-tests/text-analytics/package.json b/sdk/textanalytics/perf-tests/text-analytics/package.json index d7b637b52bc7..8b60250ae8ab 100644 --- a/sdk/textanalytics/perf-tests/text-analytics/package.json +++ b/sdk/textanalytics/perf-tests/text-analytics/package.json @@ -8,7 +8,7 @@ "license": "ISC", "dependencies": { "@azure/ai-text-analytics": "^5.1.0-beta.5", - "@azure/identity": "2.0.0-beta.3", + "@azure/identity": "2.0.0-beta.4", "@azure/test-utils-perfstress": "^1.0.0", "dotenv": "^8.2.0" }, diff --git a/sdk/videoanalyzer/video-analyzer-edge/package.json b/sdk/videoanalyzer/video-analyzer-edge/package.json index de7500bb7272..981bf3fb2a2b 100644 --- a/sdk/videoanalyzer/video-analyzer-edge/package.json +++ b/sdk/videoanalyzer/video-analyzer-edge/package.json @@ -61,9 +61,8 @@ "dependencies": { "@azure/core-auth": "^1.3.0", "@azure/core-http": "^1.2.0", - "@azure/core-tracing": "1.0.0-preview.11", + "@azure/core-tracing": "1.0.0-preview.12", "@azure/logger": "^1.0.0", - "@opentelemetry/api": "1.0.0-rc.0", "events": "^3.0.0", "tslib": "^2.2.0" }, diff --git a/sdk/web-pubsub/web-pubsub-express/package.json b/sdk/web-pubsub/web-pubsub-express/package.json index 67284650cc9c..c35cc23a30cc 100644 --- a/sdk/web-pubsub/web-pubsub-express/package.json +++ b/sdk/web-pubsub/web-pubsub-express/package.json @@ -59,7 +59,7 @@ "dependencies": { "@azure/core-auth": "^1.3.0", "@azure/core-http": "^1.2.0", - "@azure/core-tracing": "1.0.0-preview.11", + "@azure/core-tracing": "1.0.0-preview.12", "@azure/logger": "^1.0.0", "tslib": "^2.2.0", "jsonwebtoken": "^8.5.1", diff --git a/sdk/web-pubsub/web-pubsub/package.json b/sdk/web-pubsub/web-pubsub/package.json index 338da45c1d1f..eea7ea8010d5 100644 --- a/sdk/web-pubsub/web-pubsub/package.json +++ b/sdk/web-pubsub/web-pubsub/package.json @@ -62,7 +62,7 @@ "dependencies": { "@azure/core-auth": "^1.3.0", "@azure/core-http": "^1.2.0", - "@azure/core-tracing": "1.0.0-preview.11", + "@azure/core-tracing": "1.0.0-preview.12", "@azure/logger": "^1.0.0", "tslib": "^2.2.0", "jsonwebtoken": "^8.5.1"