Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

(service-client): Add constructors in job client to accept aad and sa… … #1789

Merged
merged 1 commit into from
Feb 11, 2021

Conversation

vinagesh
Copy link
Member

Checklist

  • I have read the contribution guidelines.
  • I added or modified the existing tests to cover the change (we do not allow our test coverage to go down).
  • This pull-request is submitted against the master branch.

Description of the changes

Reference/Link to the issue solved with this PR (if any)

@@ -54,12 +54,12 @@ internal class HttpRegistryManager : RegistryManager
private IHttpClientHelper _httpClientHelper;
private readonly string _iotHubName;

internal HttpRegistryManager(IotHubConnectionString connectionString, HttpTransportSettings transportSettings)
internal HttpRegistryManager(IotHubConnectionProperties connectionProperties, HttpTransportSettings transportSettings)
Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

All these properties are now in a base class, making the HttpRegistryManager independent of the auth type.

@vinagesh vinagesh changed the title Vinagesh/aadnextnextnext (service-client): Add constructors in job client to accept aad and sa… … Feb 11, 2021
@vinagesh vinagesh force-pushed the vinagesh/aadnextnextnext branch 3 times, most recently from c99acb6 to 1d4872e Compare February 11, 2021 01:19
@vinagesh vinagesh force-pushed the vinagesh/aadnextnext branch 2 times, most recently from 96c4c4b to 4c8c993 Compare February 11, 2021 04:23
Base automatically changed from vinagesh/aadnextnext to previews/RBAC February 11, 2021 04:41
@vinagesh vinagesh force-pushed the vinagesh/aadnextnextnext branch 2 times, most recently from 03534f5 to b2f4702 Compare February 11, 2021 04:46
@vinagesh
Copy link
Member Author

/azp run

@azure-pipelines
Copy link

Azure Pipelines successfully started running 1 pipeline(s).

@vinagesh vinagesh merged commit 4ede5e5 into previews/RBAC Feb 11, 2021
@vinagesh vinagesh deleted the vinagesh/aadnextnextnext branch February 11, 2021 17:53
vinagesh added a commit that referenced this pull request Mar 11, 2021
* fix: samples readme links were out-of-date (#1784)

* fix: samples arguments and remove 1 more dead link (#1785)

* fix(readme): Update the location of ConsoleEventListener in our readme

* doc(service-client) - Updating readme (#1799)

* fix(doc): Update amqp transport exception doc to have detailed description for quota exceeded error mapping

* feature(device-client): Make the DeviceClient and ModuleClient extensible (#1802)

* doc(service-client): Added extra comments to clarify true and false in dispose (#1805)

* feature,fix (device-client) Handle Twin failures using Amqp (#1796)

* fix(iot-service): Update xml comments for ServiceClient

* fix(iot-device): Update MqttTransportHandler to not use SemaphoreSlim.WaitAsync(TimeSpan, CancellationToken)

* fix(iot-device): Update dotnetty task calls to use ConfigureAwait(true)

* fix(iot-device): Fix MqttTransportHandler to not await on user supplied C2D callback

* IoTHub Exception for Get and Patch Twin failures (#1815)

* fix(edge): UnixDomainSocketEndPoint is available in .NET 2.1 and greater (#1816)

* UnixDomainSocketEndPoint has been standard since 2.1. Allowing later versions to use the correct class

The edge client HSM provider uses UnixDomainSockets (UDS) for communication. Before .NET 2.1 to implement a Unix Socket you had to create your own class to do so. Since 2.1 there has been a native UnixDomainSocketEndPoint class in the runtime.

In 2.1 and 3.1 there is no issue. However in 5.0 there are some changes to the way the Socket class handles the native UnixDomainSocketEndPoint class. I didn't dig down extremely deep, but I suspect it's due to the way the endpoint handles the SocketAddress and the string manipulation there seeing as how there is a specific implementation for Windows and for Unix.

* feat(e2e) - Enabling soft delete when creating keyvaults (#1820)

* fix(e2e) - Change event logging to opt in to specific events only. (#1824)

* (service-client): Design for IoT hub AAD authentication

* (service-client: Refactor and add implementation for token credential input) (#1781)

* (service-client): Refactor and add sas credential (#1786)

* (service-client): Add constructors in service client to accept aad and sas tokens. (#1787)

* (service-client): Add constructors in registry manager to accept aad and sas tokens. (#1788)

* (service-client): Add constructors in job client to accept aad and sas tokens. (#1789)

* (service-client): Add constructors to accept aad and sas tokens for digital twins client. (#1790)

* fix(service-client): Support for AzureSasCredential for a better user experience (#1797)

* doc(service-client): Update readme about the differnt client and operations (#1798)

* tests(service-client): E2E tests for aad auth on all our clients (#1800)

* test(service-client): Adding e2e tests for sas credential auth for IoT hub. (#1806)

* feature(service-client): Adding chaching for aad tokens. (#1807)

* fix(service-client)- Add IoT hub token scope. (#1812)

Co-authored-by: David R. Williamson <drwill@microsoft.com>
Co-authored-by: Abhipsa Misra <abhipsa.misra@microsoft.com>
Co-authored-by: bikamani <41314966+bikamani@users.noreply.github.com>
Co-authored-by: jamdavi <73593426+jamdavi@users.noreply.github.com>
vinagesh added a commit that referenced this pull request Mar 22, 2021
* fix: samples readme links were out-of-date (#1784)

* fix: samples arguments and remove 1 more dead link (#1785)

* fix(readme): Update the location of ConsoleEventListener in our readme

* doc(service-client) - Updating readme (#1799)

* fix(doc): Update amqp transport exception doc to have detailed description for quota exceeded error mapping

* feature(device-client): Make the DeviceClient and ModuleClient extensible (#1802)

* doc(service-client): Added extra comments to clarify true and false in dispose (#1805)

* feature,fix (device-client) Handle Twin failures using Amqp (#1796)

* fix(iot-service): Update xml comments for ServiceClient

* fix(iot-device): Update MqttTransportHandler to not use SemaphoreSlim.WaitAsync(TimeSpan, CancellationToken)

* fix(iot-device): Update dotnetty task calls to use ConfigureAwait(true)

* fix(iot-device): Fix MqttTransportHandler to not await on user supplied C2D callback

* IoTHub Exception for Get and Patch Twin failures (#1815)

* fix(edge): UnixDomainSocketEndPoint is available in .NET 2.1 and greater (#1816)

* UnixDomainSocketEndPoint has been standard since 2.1. Allowing later versions to use the correct class

The edge client HSM provider uses UnixDomainSockets (UDS) for communication. Before .NET 2.1 to implement a Unix Socket you had to create your own class to do so. Since 2.1 there has been a native UnixDomainSocketEndPoint class in the runtime.

In 2.1 and 3.1 there is no issue. However in 5.0 there are some changes to the way the Socket class handles the native UnixDomainSocketEndPoint class. I didn't dig down extremely deep, but I suspect it's due to the way the endpoint handles the SocketAddress and the string manipulation there seeing as how there is a specific implementation for Windows and for Unix.

* feat(e2e) - Enabling soft delete when creating keyvaults (#1820)

* fix(e2e) - Change event logging to opt in to specific events only. (#1824)

* (service-client): Design for IoT hub AAD authentication

* (service-client: Refactor and add implementation for token credential input) (#1781)

* (service-client): Refactor and add sas credential (#1786)

* (service-client): Add constructors in service client to accept aad and sas tokens. (#1787)

* (service-client): Add constructors in registry manager to accept aad and sas tokens. (#1788)

* (service-client): Add constructors in job client to accept aad and sas tokens. (#1789)

* (service-client): Add constructors to accept aad and sas tokens for digital twins client. (#1790)

* fix(service-client): Support for AzureSasCredential for a better user experience (#1797)

* doc(service-client): Update readme about the differnt client and operations (#1798)

* tests(service-client): E2E tests for aad auth on all our clients (#1800)

* test(service-client): Adding e2e tests for sas credential auth for IoT hub. (#1806)

* feature(service-client): Adding chaching for aad tokens. (#1807)

* fix(service-client)- Add IoT hub token scope. (#1812)

Co-authored-by: David R. Williamson <drwill@microsoft.com>
Co-authored-by: Abhipsa Misra <abhipsa.misra@microsoft.com>
Co-authored-by: bikamani <41314966+bikamani@users.noreply.github.com>
Co-authored-by: jamdavi <73593426+jamdavi@users.noreply.github.com>
vinagesh added a commit that referenced this pull request Mar 22, 2021
* fix: samples readme links were out-of-date (#1784)

* fix: samples arguments and remove 1 more dead link (#1785)

* fix(readme): Update the location of ConsoleEventListener in our readme

* doc(service-client) - Updating readme (#1799)

* fix(doc): Update amqp transport exception doc to have detailed description for quota exceeded error mapping

* feature(device-client): Make the DeviceClient and ModuleClient extensible (#1802)

* doc(service-client): Added extra comments to clarify true and false in dispose (#1805)

* feature,fix (device-client) Handle Twin failures using Amqp (#1796)

* fix(iot-service): Update xml comments for ServiceClient

* fix(iot-device): Update MqttTransportHandler to not use SemaphoreSlim.WaitAsync(TimeSpan, CancellationToken)

* fix(iot-device): Update dotnetty task calls to use ConfigureAwait(true)

* fix(iot-device): Fix MqttTransportHandler to not await on user supplied C2D callback

* IoTHub Exception for Get and Patch Twin failures (#1815)

* fix(edge): UnixDomainSocketEndPoint is available in .NET 2.1 and greater (#1816)

* UnixDomainSocketEndPoint has been standard since 2.1. Allowing later versions to use the correct class

The edge client HSM provider uses UnixDomainSockets (UDS) for communication. Before .NET 2.1 to implement a Unix Socket you had to create your own class to do so. Since 2.1 there has been a native UnixDomainSocketEndPoint class in the runtime.

In 2.1 and 3.1 there is no issue. However in 5.0 there are some changes to the way the Socket class handles the native UnixDomainSocketEndPoint class. I didn't dig down extremely deep, but I suspect it's due to the way the endpoint handles the SocketAddress and the string manipulation there seeing as how there is a specific implementation for Windows and for Unix.

* feat(e2e) - Enabling soft delete when creating keyvaults (#1820)

* fix(e2e) - Change event logging to opt in to specific events only. (#1824)

* (service-client): Design for IoT hub AAD authentication

* (service-client: Refactor and add implementation for token credential input) (#1781)

* (service-client): Refactor and add sas credential (#1786)

* (service-client): Add constructors in service client to accept aad and sas tokens. (#1787)

* (service-client): Add constructors in registry manager to accept aad and sas tokens. (#1788)

* (service-client): Add constructors in job client to accept aad and sas tokens. (#1789)

* (service-client): Add constructors to accept aad and sas tokens for digital twins client. (#1790)

* fix(service-client): Support for AzureSasCredential for a better user experience (#1797)

* doc(service-client): Update readme about the differnt client and operations (#1798)

* tests(service-client): E2E tests for aad auth on all our clients (#1800)

* test(service-client): Adding e2e tests for sas credential auth for IoT hub. (#1806)

* feature(service-client): Adding chaching for aad tokens. (#1807)

* fix(service-client)- Add IoT hub token scope. (#1812)

Co-authored-by: David R. Williamson <drwill@microsoft.com>
Co-authored-by: Abhipsa Misra <abhipsa.misra@microsoft.com>
Co-authored-by: bikamani <41314966+bikamani@users.noreply.github.com>
Co-authored-by: jamdavi <73593426+jamdavi@users.noreply.github.com>
vinagesh added a commit that referenced this pull request Mar 22, 2021
* fix: samples readme links were out-of-date (#1784)

* fix: samples arguments and remove 1 more dead link (#1785)

* fix(readme): Update the location of ConsoleEventListener in our readme

* doc(service-client) - Updating readme (#1799)

* fix(doc): Update amqp transport exception doc to have detailed description for quota exceeded error mapping

* feature(device-client): Make the DeviceClient and ModuleClient extensible (#1802)

* doc(service-client): Added extra comments to clarify true and false in dispose (#1805)

* feature,fix (device-client) Handle Twin failures using Amqp (#1796)

* fix(iot-service): Update xml comments for ServiceClient

* fix(iot-device): Update MqttTransportHandler to not use SemaphoreSlim.WaitAsync(TimeSpan, CancellationToken)

* fix(iot-device): Update dotnetty task calls to use ConfigureAwait(true)

* fix(iot-device): Fix MqttTransportHandler to not await on user supplied C2D callback

* IoTHub Exception for Get and Patch Twin failures (#1815)

* fix(edge): UnixDomainSocketEndPoint is available in .NET 2.1 and greater (#1816)

* UnixDomainSocketEndPoint has been standard since 2.1. Allowing later versions to use the correct class

The edge client HSM provider uses UnixDomainSockets (UDS) for communication. Before .NET 2.1 to implement a Unix Socket you had to create your own class to do so. Since 2.1 there has been a native UnixDomainSocketEndPoint class in the runtime.

In 2.1 and 3.1 there is no issue. However in 5.0 there are some changes to the way the Socket class handles the native UnixDomainSocketEndPoint class. I didn't dig down extremely deep, but I suspect it's due to the way the endpoint handles the SocketAddress and the string manipulation there seeing as how there is a specific implementation for Windows and for Unix.

* feat(e2e) - Enabling soft delete when creating keyvaults (#1820)

* fix(e2e) - Change event logging to opt in to specific events only. (#1824)

* (service-client): Design for IoT hub AAD authentication

* (service-client: Refactor and add implementation for token credential input) (#1781)

* (service-client): Refactor and add sas credential (#1786)

* (service-client): Add constructors in service client to accept aad and sas tokens. (#1787)

* (service-client): Add constructors in registry manager to accept aad and sas tokens. (#1788)

* (service-client): Add constructors in job client to accept aad and sas tokens. (#1789)

* (service-client): Add constructors to accept aad and sas tokens for digital twins client. (#1790)

* fix(service-client): Support for AzureSasCredential for a better user experience (#1797)

* doc(service-client): Update readme about the differnt client and operations (#1798)

* tests(service-client): E2E tests for aad auth on all our clients (#1800)

* test(service-client): Adding e2e tests for sas credential auth for IoT hub. (#1806)

* feature(service-client): Adding chaching for aad tokens. (#1807)

* fix(service-client)- Add IoT hub token scope. (#1812)

Co-authored-by: David R. Williamson <drwill@microsoft.com>
Co-authored-by: Abhipsa Misra <abhipsa.misra@microsoft.com>
Co-authored-by: bikamani <41314966+bikamani@users.noreply.github.com>
Co-authored-by: jamdavi <73593426+jamdavi@users.noreply.github.com>
vinagesh added a commit that referenced this pull request Mar 23, 2021
* fix: samples readme links were out-of-date (#1784)

* fix: samples arguments and remove 1 more dead link (#1785)

* fix(readme): Update the location of ConsoleEventListener in our readme

* doc(service-client) - Updating readme (#1799)

* fix(doc): Update amqp transport exception doc to have detailed description for quota exceeded error mapping

* feature(device-client): Make the DeviceClient and ModuleClient extensible (#1802)

* doc(service-client): Added extra comments to clarify true and false in dispose (#1805)

* feature,fix (device-client) Handle Twin failures using Amqp (#1796)

* fix(iot-service): Update xml comments for ServiceClient

* fix(iot-device): Update MqttTransportHandler to not use SemaphoreSlim.WaitAsync(TimeSpan, CancellationToken)

* fix(iot-device): Update dotnetty task calls to use ConfigureAwait(true)

* fix(iot-device): Fix MqttTransportHandler to not await on user supplied C2D callback

* IoTHub Exception for Get and Patch Twin failures (#1815)

* fix(edge): UnixDomainSocketEndPoint is available in .NET 2.1 and greater (#1816)

* UnixDomainSocketEndPoint has been standard since 2.1. Allowing later versions to use the correct class

The edge client HSM provider uses UnixDomainSockets (UDS) for communication. Before .NET 2.1 to implement a Unix Socket you had to create your own class to do so. Since 2.1 there has been a native UnixDomainSocketEndPoint class in the runtime.

In 2.1 and 3.1 there is no issue. However in 5.0 there are some changes to the way the Socket class handles the native UnixDomainSocketEndPoint class. I didn't dig down extremely deep, but I suspect it's due to the way the endpoint handles the SocketAddress and the string manipulation there seeing as how there is a specific implementation for Windows and for Unix.

* feat(e2e) - Enabling soft delete when creating keyvaults (#1820)

* fix(e2e) - Change event logging to opt in to specific events only. (#1824)

* (service-client): Design for IoT hub AAD authentication

* (service-client: Refactor and add implementation for token credential input) (#1781)

* (service-client): Refactor and add sas credential (#1786)

* (service-client): Add constructors in service client to accept aad and sas tokens. (#1787)

* (service-client): Add constructors in registry manager to accept aad and sas tokens. (#1788)

* (service-client): Add constructors in job client to accept aad and sas tokens. (#1789)

* (service-client): Add constructors to accept aad and sas tokens for digital twins client. (#1790)

* fix(service-client): Support for AzureSasCredential for a better user experience (#1797)

* doc(service-client): Update readme about the differnt client and operations (#1798)

* tests(service-client): E2E tests for aad auth on all our clients (#1800)

* test(service-client): Adding e2e tests for sas credential auth for IoT hub. (#1806)

* feature(service-client): Adding chaching for aad tokens. (#1807)

* fix(service-client)- Add IoT hub token scope. (#1812)

Co-authored-by: David R. Williamson <drwill@microsoft.com>
Co-authored-by: Abhipsa Misra <abhipsa.misra@microsoft.com>
Co-authored-by: bikamani <41314966+bikamani@users.noreply.github.com>
Co-authored-by: jamdavi <73593426+jamdavi@users.noreply.github.com>
vinagesh added a commit that referenced this pull request Mar 23, 2021
* fix: samples readme links were out-of-date (#1784)

* fix: samples arguments and remove 1 more dead link (#1785)

* fix(readme): Update the location of ConsoleEventListener in our readme

* doc(service-client) - Updating readme (#1799)

* fix(doc): Update amqp transport exception doc to have detailed description for quota exceeded error mapping

* feature(device-client): Make the DeviceClient and ModuleClient extensible (#1802)

* doc(service-client): Added extra comments to clarify true and false in dispose (#1805)

* feature,fix (device-client) Handle Twin failures using Amqp (#1796)

* fix(iot-service): Update xml comments for ServiceClient

* fix(iot-device): Update MqttTransportHandler to not use SemaphoreSlim.WaitAsync(TimeSpan, CancellationToken)

* fix(iot-device): Update dotnetty task calls to use ConfigureAwait(true)

* fix(iot-device): Fix MqttTransportHandler to not await on user supplied C2D callback

* IoTHub Exception for Get and Patch Twin failures (#1815)

* fix(edge): UnixDomainSocketEndPoint is available in .NET 2.1 and greater (#1816)

* UnixDomainSocketEndPoint has been standard since 2.1. Allowing later versions to use the correct class

The edge client HSM provider uses UnixDomainSockets (UDS) for communication. Before .NET 2.1 to implement a Unix Socket you had to create your own class to do so. Since 2.1 there has been a native UnixDomainSocketEndPoint class in the runtime.

In 2.1 and 3.1 there is no issue. However in 5.0 there are some changes to the way the Socket class handles the native UnixDomainSocketEndPoint class. I didn't dig down extremely deep, but I suspect it's due to the way the endpoint handles the SocketAddress and the string manipulation there seeing as how there is a specific implementation for Windows and for Unix.

* feat(e2e) - Enabling soft delete when creating keyvaults (#1820)

* fix(e2e) - Change event logging to opt in to specific events only. (#1824)

* (service-client): Design for IoT hub AAD authentication

* (service-client: Refactor and add implementation for token credential input) (#1781)

* (service-client): Refactor and add sas credential (#1786)

* (service-client): Add constructors in service client to accept aad and sas tokens. (#1787)

* (service-client): Add constructors in registry manager to accept aad and sas tokens. (#1788)

* (service-client): Add constructors in job client to accept aad and sas tokens. (#1789)

* (service-client): Add constructors to accept aad and sas tokens for digital twins client. (#1790)

* fix(service-client): Support for AzureSasCredential for a better user experience (#1797)

* doc(service-client): Update readme about the differnt client and operations (#1798)

* tests(service-client): E2E tests for aad auth on all our clients (#1800)

* test(service-client): Adding e2e tests for sas credential auth for IoT hub. (#1806)

* feature(service-client): Adding chaching for aad tokens. (#1807)

* fix(service-client)- Add IoT hub token scope. (#1812)

Co-authored-by: David R. Williamson <drwill@microsoft.com>
Co-authored-by: Abhipsa Misra <abhipsa.misra@microsoft.com>
Co-authored-by: bikamani <41314966+bikamani@users.noreply.github.com>
Co-authored-by: jamdavi <73593426+jamdavi@users.noreply.github.com>
vinagesh added a commit that referenced this pull request May 4, 2021
…#1922)

* (service-client): Design for IoT hub AAD authentication

* (service-client: Refactor and add implementation for token credential input) (#1781)

* (service-client): Refactor and add sas credential (#1786)

* (service-client): Add constructors in service client to accept aad and sas tokens. (#1787)

* (service-client): Add constructors in registry manager to accept aad and sas tokens. (#1788)

* (service-client): Add constructors in job client to accept aad and sas tokens. (#1789)

* (service-client): Add constructors to accept aad and sas tokens for digital twins client. (#1790)

* fix(service-client): Support for AzureSasCredential for a better user experience (#1797)

* doc(service-client): Update readme about the differnt client and operations (#1798)

* tests(service-client): E2E tests for aad auth on all our clients (#1800)

* test(service-client): Adding e2e tests for sas credential auth for IoT hub. (#1806)

* feature(service-client): Adding chaching for aad tokens. (#1807)

* fix(service-client)- Add IoT hub token scope. (#1812)

* feat(e2e) - Adding azure core and identity event sources. (#1826)

* fix(service-client): Fixing the required format for sending aad tokens to the service (#1834)

* refactor(service-client): Pass the correct amqp audience based on auth type (#1835)

* feat(e2e): Enable tests for IotHub AAD auth (#1861)

* feat(e2e): Enable jobs test on pipeline for aad auth (#1867)

* fix(service-client): Add default value for transpor type. (#1870)

* feat(e2e): Enable aad auth pnp tests now that the service supports it. (#1888)

* feat(e2e-setup): Update script to setup required assets for AAD auth tests (#1920)

* Fix merge error

* Made changes based on PR comments
timstewartm pushed a commit to timstewartm/azure-iot-sdk-csharp that referenced this pull request May 30, 2024
…Azure#1922)

* (service-client): Design for IoT hub AAD authentication

* (service-client: Refactor and add implementation for token credential input) (Azure#1781)

* (service-client): Refactor and add sas credential (Azure#1786)

* (service-client): Add constructors in service client to accept aad and sas tokens. (Azure#1787)

* (service-client): Add constructors in registry manager to accept aad and sas tokens. (Azure#1788)

* (service-client): Add constructors in job client to accept aad and sas tokens. (Azure#1789)

* (service-client): Add constructors to accept aad and sas tokens for digital twins client. (Azure#1790)

* fix(service-client): Support for AzureSasCredential for a better user experience (Azure#1797)

* doc(service-client): Update readme about the differnt client and operations (Azure#1798)

* tests(service-client): E2E tests for aad auth on all our clients (Azure#1800)

* test(service-client): Adding e2e tests for sas credential auth for IoT hub. (Azure#1806)

* feature(service-client): Adding chaching for aad tokens. (Azure#1807)

* fix(service-client)- Add IoT hub token scope. (Azure#1812)

* feat(e2e) - Adding azure core and identity event sources. (Azure#1826)

* fix(service-client): Fixing the required format for sending aad tokens to the service (Azure#1834)

* refactor(service-client): Pass the correct amqp audience based on auth type (Azure#1835)

* feat(e2e): Enable tests for IotHub AAD auth (Azure#1861)

* feat(e2e): Enable jobs test on pipeline for aad auth (Azure#1867)

* fix(service-client): Add default value for transpor type. (Azure#1870)

* feat(e2e): Enable aad auth pnp tests now that the service supports it. (Azure#1888)

* feat(e2e-setup): Update script to setup required assets for AAD auth tests (Azure#1920)

* Fix merge error

* Made changes based on PR comments
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

None yet

4 participants