Establishing a Connection
With the CData Cmdlets users can install a data module, set the connection properties, and start scripting. This section provides examples of using our EbayAnalytics Cmdlets with native PowerShell cmdlets, like the CSV import and export cmdlets.
Installing and Connecting
If you have PSGet, installing the cmdlets can be accomplished from the PowerShell Gallery with the following command. You can also obtain a setup from the CData site.
Install-Module EbayAnalyticsCmdlets
The following line is then added to your profile, loading the cmdlets on the next session:
Import-Module EbayAnalyticsCmdlets;
You can then use the Connect-EbayAnalytics cmdlet to create a connection object that can be passed to other cmdlets:
$conn = Connect-EbayAnalytics -InitiateOAuth 'GETANDREFRESH' -OAuthClientId 'MyApplicationId' -OAuthClientSecret 'MySecretKey' -RuName 'MyRuName'
Connecting to eBay Analytics
You can establish a connection and authenticate to the eBay Analytics only via the OAuth 2 authentication method. The eBay Analytics API requires an access token created with the authorization code grant flow to authorize the requests.
Authenticating to eBay Analytics
eBay Analytics supports OAuth authentication only. AuthScheme must be set to OAuth in all OAuth flows.
Desktop Applications
You must create a custom OAuth application to authenticate via a desktop application. See Creating a Custom OAuth App for more information.Get and Refresh the OAuth Access Token
After setting the following, you are ready to connect:
- OAuthClientId: Set this to the App Id(client Id) assigned when you registered your application.
- OAuthClientSecret: Set this to the Cert Id (client secret) assigned when you registered your application.
- RuName: Set this to the Redirect URL name of the OAuth application in the 'Application access' section.
- CallbackURL (Optional): Set this to a local Redirect URL (ex. http://localhost:33333) in case your OAuth application's auth accepted URL is set to https://oauth.cdata.com/oauth/ or to the actual one in case you are using another redirect URL.
- (Optional) UseSandbox: Set this to True if you are connecting to the Sandbox environment
Headless Machines
To configure the driver to use OAuth with a user account on a headless machine, you need to authenticate on another device that has an internet browser.
- Choose one of two options:
- Option 1: Obtain the OAuthVerifier value as described in "Obtain and Exchange a Verifier Code" below.
- Option 2: Install the cmdlet on a machine with an internet browser and transfer the OAuth authentication values after you authenticate through the usual browser-based flow, as described in "Transfer OAuth Settings" below.
- Then configure the cmdlet to automatically refresh the access token on the headless machine.
Option 1: Obtain and Exchange a Verifier Code
To obtain a verifier code, you must authenticate at the OAuth authorization URL.
Follow the steps below to authenticate from the machine with an internet browser and obtain the OAuthVerifier connection property.
- Set the following properties:
- InitiateOAuth: Set to OFF.
- OAuthClientId: Set to the client Id assigned when you registered your application.
- OAuthClientSecret: Set to the client secret assigned when you registered your application.
- RuName: Set this to the Redirect URL name of the OAuth application in the 'Application access' section.
- Log in and grant permissions to the cmdlet. You are then redirected to the redirect URI. There will be a parameter called code appended to the redirect URI. Note the value of this parameter. Later you will set this in the OAuthVerifier connection property.
On the headless machine, set the following connection properties to obtain the OAuth authentication values:
- InitiateOAuth: Set to REFRESH.
- OAuthClientId: Set this to the App ID (Client ID) from your key set.
- OAuthClientSecret: Set this to the Cert ID (Client Secret) from your key set.
- RuName: Set this to the Redirect URL name of the OAuth application in the 'Application access' section.
- OAuthVerifier: Set to the verifier code.
- OAuthSettingsLocation: Set to persist the encrypted OAuth authentication values to the specified location.
Test the connection to generate the OAuth settings file, then re-set the following properties to connect:
- InitiateOAuth: Set this to REFRESH.
- OAuthClientId: Set this to the client Id assigned when you registered your application.
- OAuthClientSecret: Set this to the client secret assigned when you registered your application.
- OAuthSettingsLocation: Set this to the location containing the encrypted OAuth authentication values. Make sure this location gives read and write permissions to the cmdlet to enable the automatic refreshing of the access token.
Option 2: Transfer OAuth Settings
Prior to connecting on a headless machine, you need to install and create a connection with the driver on a device that supports an internet browser.
- On a machine with an internet browser, install the cmdlet and connect after setting the following properties:
- OAuthSettingsLocation: Set to a writable location.
- OAuthClientId: Set this to the App ID (Client ID) from your key set.
- OAuthClientSecret: Set this to the Cert ID (Client Secret) from your key set.
- RuName: Set this to the Redirect URL name of the OAuth application in the 'Application access' section.
- (Optional) CallbackURL: Set this to a local Redirect URL (for example, http://localhost:33333) in case your OAuth application's "auth accepted URL" is set to https://oauth.cdata.com/oauth/ or to the actual one in case you are using another redirect URL.
- Test the connection to authenticate. The resulting authentication values are written, encrypted, to the location specified by OAuthSettingsLocation. After you have successfully tested the connection, copy the OAuth settings file to your headless machine. On the headless machine, set the following connection properties to connect to data:
- InitiateOAuth: Set to REFRESH.
- OAuthSettingsLocation: Set to the location of your OAuth settings file. Make sure this location gives read and write permissions to the cmdlet to enable the automatic refreshing of the access token.
Retrieving Data
The Select-EbayAnalytics cmdlet provides a native PowerShell interface for retrieving data:
$results = Select-EbayAnalytics -Connection $conn -Table "TrafficReportByListing" -Columns @("ListingName, ClickThroughRate") -Where "ListingId='201284405428'"The Invoke-EbayAnalytics cmdlet provides an SQL interface. This cmdlet can be used to execute an SQL query via the Query parameter.
Piping Cmdlet Output
The cmdlets return row objects to the pipeline one row at a time. The following line exports results to a CSV file:
Select-EbayAnalytics -Connection $conn -Table TrafficReportByListing -Where "ListingId = '201284405428'" | Select -Property * -ExcludeProperty Connection,Table,Columns | Export-Csv -Path c:\myTrafficReportByListingData.csv -NoTypeInformation
You will notice that we piped the results from Select-EbayAnalytics into a Select-Object cmdlet and excluded some properties before piping them into an Export-CSV cmdlet. We do this because the CData Cmdlets append Connection, Table, and Columns information onto each row object in the result set, and we do not necessarily want that information in our CSV file.
However, this makes it easy to pipe the output of one cmdlet to another. The following is an example of converting a result set to JSON:
PS C:\> $conn = Connect-EbayAnalytics -InitiateOAuth 'GETANDREFRESH' -OAuthClientId 'MyApplicationId' -OAuthClientSecret 'MySecretKey' -RuName 'MyRuName' PS C:\> $row = Select-EbayAnalytics -Connection $conn -Table "TrafficReportByListing" -Columns (ListingName, ClickThroughRate) -Where "ListingId = '201284405428'" | select -first 1 PS C:\> $row | ConvertTo-Json { "Connection": { }, "Table": "TrafficReportByListing", "Columns": [ ], "ListingName": "MyListingName", "ClickThroughRate": "MyClickThroughRate" }
Modifying Data
The cmdlets make data transformation easy as well as data cleansing. The following example loads data from a CSV file into eBay Analytics, checking first whether a record already exists and needs to be updated instead of inserted.
Import-Csv -Path C:\MyTrafficReportByListingUpdates.csv | %{ $record = Select-EbayAnalytics -Connection $conn -Table TrafficReportByListing -Where ("Id = `'"+$_.Id+"`'") if($record){ Update-EbayAnalytics -Connection $conn -Table TrafficReportByListing -Columns @("ListingName","ClickThroughRate") -Values @($_.ListingName, $_.ClickThroughRate) -Where "Id = `'$_.Id`'" }else{ Add-EbayAnalytics -Connection $conn -Table TrafficReportByListing -Columns @("ListingName","ClickThroughRate") -Values @($_.ListingName, $_.ClickThroughRate) } }