The CData Sync App provides a straightforward way to continuously pipeline your Instagram data to any database, data lake, or data warehouse, making it easily available for Analytics, Reporting, AI, and Machine Learning.
The Instagram connector can be used from the CData Sync application to pull data from Instagram and move it to any of the supported destinations.
Create a connection to Instagram by navigating to the Connections page in the Sync App application and selecting the corresponding icon in the Add Connections panel. If the Instagram icon is not available, click the Add More icon to download and install the Instagram connector from the CData site.
Required properties are listed under the Settings tab. The Advanced tab lists connection properties that are not typically required.
When connecting via a Web application, you need to register a custom OAuth application with Instagram. You can then use the Sync App to get and manage the OAuth token values. See Creating a Custom OAuth App for more information.
Get an OAuth Access Token
Set the following connection properties to obtain the OAuthAccessToken:
Then call stored procedures to complete the OAuth exchange:
After you have obtained the access and refresh tokens, you can connect to data and refresh the OAuth access token automatically.
Automatic Refresh of the OAuth Access Token
To have the Sync App automatically refresh the OAuth access token, set the following on the first data connection.
On subsequent data connections, set the following:
This section details a selection of advanced features of the Instagram Sync App.
The Sync App allows you to define virtual tables, called user defined views, whose contents are decided by a pre-configured query. These views are useful when you cannot directly control queries being issued to the drivers. See User Defined Views for an overview of creating and configuring custom views.
Use SSL Configuration to adjust how Sync App handles TLS/SSL certificate negotiations. You can choose from various certificate formats; see the SSLServerCert property under "Connection String Options" for more information.
Configure the Sync App for compliance with Firewall and Proxy, including Windows proxies and HTTP proxies. You can also set up tunnel connections.
The Sync App offloads as much of the SELECT statement processing as possible to Instagram and then processes the rest of the query in memory (client-side).
See Query Processing for more information.
See Logging for an overview of configuration settings that can be used to refine CData logging. For basic logging, you only need to set two connection properties, but there are numerous features that support more refined logging, where you can select subsets of information to be logged using the LogModules connection property.
By default, the Sync App attempts to negotiate SSL/TLS by checking the server's certificate against the system's trusted certificate store.
To specify another certificate, see the SSLServerCert property for the available formats to do so.
To connect through the Windows system proxy, you do not need to set any additional connection properties. To connect to other proxies, set ProxyAutoDetect to false.
In addition, to authenticate to an HTTP proxy, set ProxyAuthScheme, ProxyUser, and ProxyPassword, in addition to ProxyServer and ProxyPort.
Set the following properties:
The CData Sync App models entities in the Instagram API as Tables, Views, and Stored Procedures. These are defined in schema files, which are simple, text-based configuration files.
The available System Tables provide programmatic access to schema information as well as other Sync App metadata, such as the data source's querying capabilities.
The Sync App models the data in Instagram into a list of tables that can be queried using standard SQL statements.
Generally, querying Instagram tables is the same as querying a table in a relational database. Sometimes there are special cases, for example, including a certain column in the WHERE clause might be required to get data for certain columns in the table. This is typically needed for situations where a separate request must be made for each row to get certain columns. These types of situations are clearly documented at the top of the table page linked below.
Name | Description |
Comments | Create, delete, and query Comments on a media object. Requires the instagram_basic and instagram_manage_comments scopes. |
Replies | Query and insert replies on a media object. Requires the instagram_basic and instagram_manage_comments scopes. |
Create, delete, and query Comments on a media object. Requires the instagram_basic and instagram_manage_comments scopes.
Only the select, delete, and insert operations are supported.
The Sync App will use the Instagram APIs to filter results by MediaId and will execute other filters client-side within itself. You can turn off the client-side execution of the query by setting SupportEnhancedSQL to false, in which case any search criteria that refers to other columns will cause an error.
The following query returns all comments on all media in your account. UserId will be null if the comment is from an account that is not a business account.
SELECT * FROM Comments
To query comments for a specific media object, MediaId is required. The MediaId column supports the = operator. For example:
SELECT * FROM Comments WHERE MediaId = '1501471279105199430_5380790872'
Create a comment on a media object with the following rules:
INSERT INTO Comments (MediaId, Text) VALUES ('1501471279105199430_5380790872', 'My comment text #instadevelopers')
Id (the comment's primary key) is required. For example, the following query removes a comment either on the authenticated user's media object or authored by the authenticated user.
DELETE FROM Comments WHERE Id = '1668776136772254'
Name | Type | ReadOnly | Description |
Id [KEY] | String | True |
The unique identifier for the comment. |
Text | String | False |
The text of the comment. |
MediaId | String | False |
The unique identifier for the media. |
Created | Datetime | True |
The time when the media was created. |
UserId | String | True |
The unique identifier for the user. |
Username | String | True |
The username for the user. |
Likes | String | True |
The number of likes. |
Hidden | Boolean | True |
The boolean that shows if the comment is hidden. |
Query and insert replies on a media object. Requires the instagram_basic and instagram_manage_comments scopes.
Only the select and insert operations are supported.
The Sync App will process a filter on CommentId server side and will execute other filters client-side within itself. You can turn off the client-side execution of the query by setting SupportEnhancedSQL to false, in which case any search criteria that refers to other columns will cause an error.
The following query returns replies from all comments in your account. UserId will be null if the reply is from an account that is not a business account.
SELECT * FROM Replies
To query replies for a specific comment, CommentId is required. The supported operator for the CommentId column is =. For example:
SELECT * FROM Replies WHERE CommentId = '1501471279105199430_5380790872'
Create a reply on a comment object with the following rules:
INSERT INTO Replies (CommentId, Text) VALUES ('1501471279105199430_5380790872', 'My reply #instadevelopers')
Name | Type | ReadOnly | Description |
Id [KEY] | String | True |
The unique identifier for the reply. |
Username | String | True |
The username for the user. |
CommentId | String | False |
The unique identifier for the comment. |
Created | Datetime | True |
The time when the reply was created. |
UserId | String | True |
The unique identifier for the user. |
MediaId | String | True |
The unique identifier for the associated media. |
Text | String | False |
The comment. |
LikeCount | Int | True |
The number of likes. |
Views are composed of columns and pseudo columns. Views are similar to tables in the way that data is represented; however, views do not support updates. Entities that are represented as views are typically read-only entities. Often, a stored procedure is available to update the data if such functionality is applicable to the data source.
Queries can be executed against a view as if it were a normal table, and the data that comes back is similar in that regard.
Dynamic views, such as queries exposed as views, and views for looking up specific combinations of project_team work items are supported.
Name | Description |
AccountInsights | Allows you to get insights for an Instagram business account. Requires the instagram_basic and instagram_manage_insights scopes. |
AudienceInsights | Retrieve audience insights for an Instagram business account. |
IGMedia | This View Represents an Instagram Photo, Video, Story, Album, or IGTV media. |
InstagramBusinessProfile | Get information about the Instagram Business account. Requires the instagram_basic scope, business_management, manage_pages . |
InstagramPages | Query information about pages connected to the Facebook account. Requires the instagram_basic scope. |
Media | Query media objects. Requires the instagram_basic and instagram_content_publish scopes. |
MediaInsightReels | Allows you to get insights for reel media object. Requires the instagram_basic and instagram_manage_insights scopes. |
MediaInsights | Allows you to get insights for an individual media object. Requires the instagram_basic and instagram_manage_insights scopes. |
OnlineFollowers | Query Online Followers insights as hourly totals. Requires the instagram_basic and instagram_manage_insights scopes. |
Pages | Get details of Pages. Requires 'pages_read_engagement' permission or the 'Page Public Content Access' feature or the 'Page Public Metadata Access' feature. |
Permissions | Query the Permissions the User has granted the current application. |
Places | Query location data about a media object. |
Stories | Query Stories. Requires the instagram_basic and instagram_manage_insights scopes. |
Tags | Query tags. Requires the instagram_basic and instagram_manage_comments scopes. |
Allows you to get insights for an Instagram business account. Requires the instagram_basic and instagram_manage_insights scopes.
You can query the following metrics given a date range. The default date range is the last 7 days.
Specify a date range with the FromDateTime and ToDateTime columns. Specify the intervals of the date range by setting the Period column in the WHERE clause. Note that you cannot use a period on a metric that does not support it. For example, you cannot use Impressions AND FollowerCount with period days_28 because FollowerCount only supports the day period.
The Sync App will use the Instagram APIs to process filters that refer to a date range or Id. The Sync App processes other filters client-side within itself. You can turn off the client-side execution of the query by setting SupportEnhancedSQL to false, in which case any search criteria that refers to other columns will cause an error.
The following examples show how to retrieve metrics over a given date range:
The default query returns results for the following metrics during the last seven days: Impressions, Reach, FollowerCount, EmailContacts, PhoneCallClicks, TextMessageClicks, GetDirectionsClicks, WebsiteClicks, and ProfileViews.
SELECT * FROM AccountInsights
Filter on FromDateTime and ToDateTime to explicitly specify a different date range.
The max date range cannot be more than 30 days (2592000 s).
SELECT * FROM AccountInsights WHERE FromDateTime='2018/01/01' AND ToDateTime='2018/01/30' AND period='day'
Return results over a period of 7 days.
SELECT * FROM AccountInsights WHERE FromDateTime='2018/01/01' AND period='day'
Return results from 2018/01/01 to 2018/01/08.
SELECT * FROM AccountInsights WHERE ToDateTime='2018/01/08' AND period='day'
Return a custom projection on account insights for the date range from 2018/01/01 to 2018/01/08.
SELECT Impressions,FollowerCount,EmailContacts FROM AccountInsights WHERE FromDateTime='2018/01/01' AND ToDateTime='2018/01/30' AND period='day'
Name | Type | Description |
InstagramBusinessAccountId | String | The unique identifier of the Instagram business account Id. |
EndTime | Date | The most recent date this insight data is relevant for. |
Impressions | Integer | Total number of times this profile has been seen. |
Reach | Integer | Total number of unique accounts that have seen this profile. |
ProfileViews | Integer | Total number of unique accounts that have viewed this profile within the specified period. |
FollowerCount | Integer | Total number of unique accounts following this profile. |
EmailContacts | Integer | Total number of taps on the email link in this profile. |
PhoneCallClicks | Integer | Total number of taps on the call link in this profile. |
TextMessageClicks | Integer | Total number of taps on the text message link in this profile. |
GetDirectionsClicks | Integer | Total number of taps on the directions link in this profile. |
Websiteclicks | Integer | Total number of taps on the website link in this profile. |
Period | String | The period for the insight. This controls how rows will be broken up (by day, week, 28 days, or lifetime). This must always be specified. |
Pseudo column fields are used in the WHERE clause of SELECT statements and offer a more granular control over the tuples that are returned from the data source.
Name | Type | Description |
FromDateTime | Datetime | The earliest time for insight data to have been collected. |
ToDateTime | Datetime | The latest time for insight data to have been collected. |
Retrieve audience insights for an Instagram business account.
By default this table returns the following:
Name | Type | Description |
InstagramBusinessAccountId | String | The unique identifier for the Instagram business account Id. |
Date | Date | Date of the audience insight. |
AudienceType | String | The type of audience. |
AudienceGroup | String | The audience group. |
TotalAudience | Integer | The total number of audience members. |
Description | String | The total number of the followers for this profile who were online during the specified period. |
This View Represents an Instagram Photo, Video, Story, Album, or IGTV media.
The Sync App will use the Instagram API to process WHERE clause conditions built with the following columns and operators. The rest of the filter is executed client side within the Sync App.
SELECT * FROM IGMedia WHERE Id = '1234'You can turn off client-side execution by setting SupportEnhancedSQL to false in which case any search criteria that refers to other columns will cause an error.
Name | Type | Description |
Id [KEY] | String | Media ID. |
IGId | String | Instagram media ID. |
Caption | String | Caption for the IGMedia. |
CommentsCount | Integer | Count of comments on the media. |
IsCommentEnabled | Boolean | Indicates if comments are enabled or disabled. Excludes album children. |
LikeCount | Integer | Count of likes on the media. |
MediaProductType | String | Surface where the media is published. |
MediaType | String | Media type. |
MediaUrl | String | Media URL. |
Owner | String | ID of Instagram user who created the media. |
PermanentURL | String | Permanent URL to the media. |
ShortCode | String | Shortcode to the media. |
ThumbnailUrl | String | Media thumbnail URL. |
Timestamp | Datetime | ISO 8601 formatted creation date in UTC. |
Username | String | Username of user who created the media. |
VideoTitle | Datetime | IGTV media title. |
Get information about the Instagram Business account. Requires the instagram_basic scope, business_management, manage_pages .
The Sync App will process all filters on this table client-side within itself.
Name | Type | Description |
InstagramBusinessAccountId [KEY] | String | The unique identifier of the Instagram business account |
UserName | String | The username of the person. |
FullName | String | The full name of the person. |
ProfilePictureUrl | String | The profile picture of the person. |
Bio | String | The bio of the person. |
Website | String | The website of the person. |
MediaCount | Integer | The media count of the profile. |
FollowsCount | Integer | The follows count of the profile. |
FollowersCount | Integer | The followers count of the profile. |
Query information about pages connected to the Facebook account. Requires the instagram_basic scope.
The Sync App will process all filters client-side within itself. You can use this table to obtain the value of the BusinessAccountId connection property:
SELECT Name, InstagramBusinessAccountId FROM Pages
Name | Type | Description |
Id [KEY] | String | The unique identifier for the pages. |
Name | String | The unique identifier for the instagram. |
InstagramBusinessAccountId | String | The unique identifier for the instagram. |
AccessToken | String | Access Token |
Query media objects. Requires the instagram_basic and instagram_content_publish scopes.
The Sync App will use the Instagram APIs to process filters by Id and will process other filters client-side within itself. You can turn off the client-side execution of the query by setting SupportEnhancedSQL to false, in which case any search criteria that refers to other columns will cause an error.
The following query gets all media published by the authenticated user:
SELECT * FROM Media
To retrieve a single media object, the Id is required. The Id column supports the = operator. For example:
SELECT * FROM Media WHERE Id = '1501471279105199430_5380790872'
Name | Type | Description |
Id [KEY] | String | The unique identifier for the media object. |
InstagramBusinessAccountId | String | The unique identifier of the Instagram business account Id. |
Username | String | The username. |
MediaType | String | The type of media (image or video or reels or carousel). |
MediaProductType | String | The Surface where the media is published Can be AD, FEED, STORY or REELS. |
Caption | String | The caption for the media. Excludes carousel children. |
CommentsCount | Integer | The number of comments. |
LikesCount | Integer | The number of likes. |
Mediaurl | String | The video URL of the media. |
Link | String | The link of the media. |
Created | Datetime | The time when the media was created. |
Allows you to get insights for reel media object. Requires the instagram_basic and instagram_manage_insights scopes.
You can query the following metrics using server-side processing:
SELECT * FROM MediaInsightReels SELECT * FROM MediaInsightReels WHERE MediaId = 17905513811523370" SELECT Reach, Saved, Comments, Likes, Plays, Shares, TotalInteractions FROM MediaInsightReels WHERE MediaId = 17905513811523370
Name | Type | Description |
MediaId | String | The unique identifier of the insight. |
Reach | Integer | Total number of unique accounts that have seen the media object. |
Saved | Integer | Total number of unique accounts that have saved the media object. |
Comments | Integer | Total number of unique accounts that have Comments on the media object. |
Likes | Integer | Total number of unique accounts that have likes the media object. |
Plays | Integer | Total number of unique accounts that have plays the media object. |
Shares | Integer | Total number of unique accounts that have Shared the media object. |
TotalInteractions | Integer | Total number of unique accounts that involved in the media object. |
Allows you to get insights for an individual media object. Requires the instagram_basic and instagram_manage_insights scopes.
You can query the following metrics using server-side processing:
SELECT * FROM MediaInsights
Query the MediaInsights view using a different object, for example, stories.
SELECT TapsForward, TapsBack FROM MediaInsights WHERE MediaId="132155564886465"
Query the MediaInsights view using a different object, for example, videos.
SELECT Impressions, Engagement, Reach, Saved, VideoViews FROM MediaInsights WHERE MediaId="1321555648546465"
Name | Type | Description |
MediaId | String | The unique identifier of the insight. |
Impressions | Integer | Total number of times the media object has been seen. |
Engagement | Integer | Total number of likes and comments on the media object. |
Reach | Integer | Total number of unique accounts that have seen the media object. |
Saved | Integer | Total number of unique accounts that have saved the media object. |
VideoViews | Integer | Total number of unique accounts that have viewed the video. |
TapsForward | Integer | Total number of unique accounts that have tapped forward. |
TapsBack | Integer | Total number of unique accounts that have tapped backwards. |
Exits | Integer | Total number of exits from unique accounts. |
Replies | Integer | Total number of unique accounts that have replied. |
Query Online Followers insights as hourly totals. Requires the instagram_basic and instagram_manage_insights scopes.
You can use the FromDateTime and ToDateTime columns to filter the results by a timeframe. The Sync App uses the Instagram API to process filters that refer to a timeframe or Id and will process other filters client-side within itself. You can turn off the client-side execution of the query by setting SupportEnhancedSQL to false, in which case any search criteria that refers to other columns will cause an error.
The default query returns results as hourly totals during the last 7 days.
SELECT * FROM OnlineFollowers
The maximum timeframe you can specify with the FromDateTime and ToDateTime columns is 30 days (2592000 s).
SELECT * FROM OnlineFollowers WHERE FromDateTime='2018/01/01' AND ToDateTime='2018/01/30'
Name | Type | Description |
InstagramBusinessAccountId | String | The unique identifier for the business account. |
StartTime | Datetime | The start datetime of the insight. |
EndTime | Datetime | The end datetime of the insight. |
Onlinefollowers | Integer | The number of the online followers at the specific time. |
Pseudo column fields are used in the WHERE clause of SELECT statements and offer a more granular control over the tuples that are returned from the data source.
Name | Type | Description |
FromDateTime | Datetime | The earliest time for insight data to have been collected. |
ToDateTime | Datetime | The latest time for insight data to have been collected. |
Get details of Pages. Requires 'pages_read_engagement' permission or the 'Page Public Content Access' feature or the 'Page Public Metadata Access' feature.
The Sync App will use the Instagram API to process WHERE clause conditions built with the following column and operator. The SearchTerms is required to make a request and the rest of the filter is executed client side within the Sync App.
For example:
SELECT * FROM Pages WHERE SearchTerms='facebook'
Name | Type | Description |
Id [KEY] | String | The ID of the Facebook Page. |
EligibleForBrandedContent | Boolean | Display whether the Facebook Page is eligible to post branded content. |
IsUnclaimed | Boolean | Display whether a Facebook Page that was automatically generated has been claimed by the business it represents. |
Link | String | The link to the Facebook Page. |
City | String | The city where the business represented by the Facebook Page is located. |
Country | String | The country where the business represented by the Facebook Page is located. |
Latitude | Double | The latitude of the business represented by the Facebook Page. |
Longitude | Double | The longitude of the business represented by the Facebook Page. |
State | String | The state where the business represented by the Facebook Page is located. |
Street | String | The street on which the business represented by the Facebook Page is located. |
Zip | Integer | The postal code of the business represented by the Facebook Page. |
Name | String | The name of the Facebook Page. |
VerificationStatus | String | The verification status of the Facebook Page that represents a business. |
Pseudo column fields are used in the WHERE clause of SELECT statements and offer a more granular control over the tuples that are returned from the data source.
Name | Type | Description |
SearchTerms | String | The term that is to be searched. |
Query the Permissions the User has granted the current application.
To query the Permissions view.
SELECT * FROM Permissions
Name | Type | Description |
PermissionName [KEY] | String | The name of the permission. |
Status | String | The status of the requested permission. |
Query location data about a media object.
To query the Places view, the SearchTerms column is required.
SELECT * FROM Places WHERE SearchTerms='museum'The Sync App will execute other filters client-side within itself. Note: This view is deprecated. It will be discontinued in the 2023 Q2. Please use the Pages view as a replacement. You can turn off the client-side execution of the query by setting SupportEnhancedSQL to false, in which case any search criteria that refers to other columns will cause an error.
Name | Type | Description |
Id [KEY] | String | The unique identifier for the place. |
Name | String | Name of the place. |
City | String | City of the place. |
Country | String | Country of the place. |
Latitude | String | Latitude of the place. |
Longitude | String | Longitude of the place. |
Street | String | Street of the place. |
Pseudo column fields are used in the WHERE clause of SELECT statements and offer a more granular control over the tuples that are returned from the data source.
Name | Type | Description |
SearchTerms | String | Name of the place. |
Query Stories. Requires the instagram_basic and instagram_manage_insights scopes.
The Sync App process all filters on this table client-side within itself.
Name | Type | Description |
Id [KEY] | String | The unique identifier for the story. |
InstagramBusinessAccountId | String | The unique identifier of the Instagram business account Id. |
Query tags. Requires the instagram_basic and instagram_manage_comments scopes.
The Sync App processes all filters on this table client-side within itself.
Name | Type | Description |
Id [KEY] | String | The unique identifier for the tag. |
Username | String | The unique identifier for the user. |
Caption | String | The caption for the tag. |
ComentsCount | Int | The number of coments. |
LikeCount | Int | The number of likes. |
MediType | String | The type of media (image or video). |
MediUrl | String | The media URL. |
UserId | String | The Id of the user. |
Timestamp | Datetime | Time the media was created. |
InstagramBusinessAccountId | String | The unique identifier for the Instagram business account. |
The connection string properties are the various options that can be used to establish a connection. This section provides a complete list of the options you can configure in the connection string for this provider. Click the links for further details.
For more information on establishing a connection, see Establishing a Connection.
Property | Description |
BusinessAccountId | The Id of a connected Instagram business account Id. |
Version | The Facebook Graph API version to use. |
AuthenticateAsPage | true or false to authenticate for page accesstoken as when making requests to Instagram. |
Property | Description |
OAuthClientId | The client Id assigned when you register your application with an OAuth authorization server. |
OAuthClientSecret | The client secret assigned when you register your application with an OAuth authorization server. |
Property | Description |
SSLServerCert | The certificate to be accepted from the server when connecting using TLS/SSL. |
Property | Description |
FirewallType | The protocol used by a proxy-based firewall. |
FirewallServer | The name or IP address of a proxy-based firewall. |
FirewallPort | The TCP port for a proxy-based firewall. |
FirewallUser | The user name to use to authenticate with a proxy-based firewall. |
FirewallPassword | A password used to authenticate to a proxy-based firewall. |
Property | Description |
ProxyAutoDetect | This indicates whether to use the system proxy settings or not. This takes precedence over other proxy settings, so you'll need to set ProxyAutoDetect to FALSE in order use custom proxy settings. |
ProxyServer | The hostname or IP address of a proxy to route HTTP traffic through. |
ProxyPort | The TCP port the ProxyServer proxy is running on. |
ProxyAuthScheme | The authentication type to use to authenticate to the ProxyServer proxy. |
ProxyUser | A user name to be used to authenticate to the ProxyServer proxy. |
ProxyPassword | A password to be used to authenticate to the ProxyServer proxy. |
ProxySSLType | The SSL type to use when connecting to the ProxyServer proxy. |
ProxyExceptions | A semicolon separated list of destination hostnames or IPs that are exempt from connecting through the ProxyServer . |
Property | Description |
LogModules | Core modules to be included in the log file. |
Property | Description |
Location | A path to the directory that contains the schema files defining tables, views, and stored procedures. |
BrowsableSchemas | This property restricts the schemas reported to a subset of the available schemas. For example, BrowsableSchemas=SchemaA,SchemaB,SchemaC. |
Tables | This property restricts the tables reported to a subset of the available tables. For example, Tables=TableA,TableB,TableC. |
Views | Restricts the views reported to a subset of the available tables. For example, Views=ViewA,ViewB,ViewC. |
Property | Description |
MaxRows | Limits the number of rows returned rows when no aggregation or group by is used in the query. This helps avoid performance issues at design time. |
Other | These hidden properties are used only in specific use cases. |
PseudoColumns | This property indicates whether or not to include pseudo columns as columns to the table. |
Timeout | The value in seconds until the timeout error is thrown, canceling the operation. |
UserDefinedViews | A filepath pointing to the JSON configuration file containing your custom views. |
This section provides a complete list of the Authentication properties you can configure in the connection string for this provider.
Property | Description |
BusinessAccountId | The Id of a connected Instagram business account Id. |
Version | The Facebook Graph API version to use. |
AuthenticateAsPage | true or false to authenticate for page accesstoken as when making requests to Instagram. |
The Id of a connected Instagram business account Id.
The Id of an Instagram business account connected to a Facebook page. Set this only if you have more than one Instagram business account managed with the same Facebook account.
The Facebook Graph API version to use.
The Facebook Graph API version to use. Generally this property does not need to be set.
true or false to authenticate for page accesstoken as when making requests to Instagram.
true or false to authenticate for page accesstoken. The page must be managed by the authenticated user.
This section provides a complete list of the OAuth properties you can configure in the connection string for this provider.
Property | Description |
OAuthClientId | The client Id assigned when you register your application with an OAuth authorization server. |
OAuthClientSecret | The client secret assigned when you register your application with an OAuth authorization server. |
The client Id assigned when you register your application with an OAuth authorization server.
As part of registering an OAuth application, you will receive the OAuthClientId value, sometimes also called a consumer key, and a client secret, the OAuthClientSecret.
The client secret assigned when you register your application with an OAuth authorization server.
As part of registering an OAuth application, you will receive the OAuthClientId, also called a consumer key. You will also receive a client secret, also called a consumer secret. Set the client secret in the OAuthClientSecret property.
This section provides a complete list of the SSL properties you can configure in the connection string for this provider.
Property | Description |
SSLServerCert | The certificate to be accepted from the server when connecting using TLS/SSL. |
The certificate to be accepted from the server when connecting using TLS/SSL.
If using a TLS/SSL connection, this property can be used to specify the TLS/SSL certificate to be accepted from the server. Any other certificate that is not trusted by the machine is rejected.
This property can take the following forms:
Description | Example |
A full PEM Certificate (example shortened for brevity) | -----BEGIN CERTIFICATE----- MIIChTCCAe4CAQAwDQYJKoZIhv......Qw== -----END CERTIFICATE----- |
A path to a local file containing the certificate | C:\cert.cer |
The public key (example shortened for brevity) | -----BEGIN RSA PUBLIC KEY----- MIGfMA0GCSq......AQAB -----END RSA PUBLIC KEY----- |
The MD5 Thumbprint (hex values can also be either space or colon separated) | ecadbdda5a1529c58a1e9e09828d70e4 |
The SHA1 Thumbprint (hex values can also be either space or colon separated) | 34a929226ae0819f2ec14b4a3d904f801cbb150d |
If not specified, any certificate trusted by the machine is accepted.
Use '*' to signify to accept all certificates. Note that this is not recommended due to security concerns.
This section provides a complete list of the Firewall properties you can configure in the connection string for this provider.
Property | Description |
FirewallType | The protocol used by a proxy-based firewall. |
FirewallServer | The name or IP address of a proxy-based firewall. |
FirewallPort | The TCP port for a proxy-based firewall. |
FirewallUser | The user name to use to authenticate with a proxy-based firewall. |
FirewallPassword | A password used to authenticate to a proxy-based firewall. |
The protocol used by a proxy-based firewall.
This property specifies the protocol that the Sync App will use to tunnel traffic through the FirewallServer proxy. Note that by default, the Sync App connects to the system proxy; to disable this behavior and connect to one of the following proxy types, set ProxyAutoDetect to false.
Type | Default Port | Description |
TUNNEL | 80 | When this is set, the Sync App opens a connection to Instagram and traffic flows back and forth through the proxy. |
SOCKS4 | 1080 | When this is set, the Sync App sends data through the SOCKS 4 proxy specified by FirewallServer and FirewallPort and passes the FirewallUser value to the proxy, which determines if the connection request should be granted. |
SOCKS5 | 1080 | When this is set, the Sync App sends data through the SOCKS 5 proxy specified by FirewallServer and FirewallPort. If your proxy requires authentication, set FirewallUser and FirewallPassword to credentials the proxy recognizes. |
To connect to HTTP proxies, use ProxyServer and ProxyPort. To authenticate to HTTP proxies, use ProxyAuthScheme, ProxyUser, and ProxyPassword.
The name or IP address of a proxy-based firewall.
This property specifies the IP address, DNS name, or host name of a proxy allowing traversal of a firewall. The protocol is specified by FirewallType: Use FirewallServer with this property to connect through SOCKS or do tunneling. Use ProxyServer to connect to an HTTP proxy.
Note that the Sync App uses the system proxy by default. To use a different proxy, set ProxyAutoDetect to false.
The TCP port for a proxy-based firewall.
This specifies the TCP port for a proxy allowing traversal of a firewall. Use FirewallServer to specify the name or IP address. Specify the protocol with FirewallType.
The user name to use to authenticate with a proxy-based firewall.
The FirewallUser and FirewallPassword properties are used to authenticate against the proxy specified in FirewallServer and FirewallPort, following the authentication method specified in FirewallType.
A password used to authenticate to a proxy-based firewall.
This property is passed to the proxy specified by FirewallServer and FirewallPort, following the authentication method specified by FirewallType.
This section provides a complete list of the Proxy properties you can configure in the connection string for this provider.
Property | Description |
ProxyAutoDetect | This indicates whether to use the system proxy settings or not. This takes precedence over other proxy settings, so you'll need to set ProxyAutoDetect to FALSE in order use custom proxy settings. |
ProxyServer | The hostname or IP address of a proxy to route HTTP traffic through. |
ProxyPort | The TCP port the ProxyServer proxy is running on. |
ProxyAuthScheme | The authentication type to use to authenticate to the ProxyServer proxy. |
ProxyUser | A user name to be used to authenticate to the ProxyServer proxy. |
ProxyPassword | A password to be used to authenticate to the ProxyServer proxy. |
ProxySSLType | The SSL type to use when connecting to the ProxyServer proxy. |
ProxyExceptions | A semicolon separated list of destination hostnames or IPs that are exempt from connecting through the ProxyServer . |
This indicates whether to use the system proxy settings or not. This takes precedence over other proxy settings, so you'll need to set ProxyAutoDetect to FALSE in order use custom proxy settings.
This takes precedence over other proxy settings, so you'll need to set ProxyAutoDetect to FALSE in order use custom proxy settings.
To connect to an HTTP proxy, see ProxyServer. For other proxies, such as SOCKS or tunneling, see FirewallType.
The hostname or IP address of a proxy to route HTTP traffic through.
The hostname or IP address of a proxy to route HTTP traffic through. The Sync App can use the HTTP, Windows (NTLM), or Kerberos authentication types to authenticate to an HTTP proxy.
If you need to connect through a SOCKS proxy or tunnel the connection, see FirewallType.
By default, the Sync App uses the system proxy. If you need to use another proxy, set ProxyAutoDetect to false.
The TCP port the ProxyServer proxy is running on.
The port the HTTP proxy is running on that you want to redirect HTTP traffic through. Specify the HTTP proxy in ProxyServer. For other proxy types, see FirewallType.
The authentication type to use to authenticate to the ProxyServer proxy.
This value specifies the authentication type to use to authenticate to the HTTP proxy specified by ProxyServer and ProxyPort.
Note that the Sync App will use the system proxy settings by default, without further configuration needed; if you want to connect to another proxy, you will need to set ProxyAutoDetect to false, in addition to ProxyServer and ProxyPort. To authenticate, set ProxyAuthScheme and set ProxyUser and ProxyPassword, if needed.
The authentication type can be one of the following:
If you need to use another authentication type, such as SOCKS 5 authentication, see FirewallType.
A user name to be used to authenticate to the ProxyServer proxy.
The ProxyUser and ProxyPassword options are used to connect and authenticate against the HTTP proxy specified in ProxyServer.
You can select one of the available authentication types in ProxyAuthScheme. If you are using HTTP authentication, set this to the user name of a user recognized by the HTTP proxy. If you are using Windows or Kerberos authentication, set this property to a user name in one of the following formats:
user@domain domain\user
A password to be used to authenticate to the ProxyServer proxy.
This property is used to authenticate to an HTTP proxy server that supports NTLM (Windows), Kerberos, or HTTP authentication. To specify the HTTP proxy, you can set ProxyServer and ProxyPort. To specify the authentication type, set ProxyAuthScheme.
If you are using HTTP authentication, additionally set ProxyUser and ProxyPassword to HTTP proxy.
If you are using NTLM authentication, set ProxyUser and ProxyPassword to your Windows password. You may also need these to complete Kerberos authentication.
For SOCKS 5 authentication or tunneling, see FirewallType.
By default, the Sync App uses the system proxy. If you want to connect to another proxy, set ProxyAutoDetect to false.
The SSL type to use when connecting to the ProxyServer proxy.
This property determines when to use SSL for the connection to an HTTP proxy specified by ProxyServer. This value can be AUTO, ALWAYS, NEVER, or TUNNEL. The applicable values are the following:
AUTO | Default setting. If the URL is an HTTPS URL, the Sync App will use the TUNNEL option. If the URL is an HTTP URL, the component will use the NEVER option. |
ALWAYS | The connection is always SSL enabled. |
NEVER | The connection is not SSL enabled. |
TUNNEL | The connection is through a tunneling proxy. The proxy server opens a connection to the remote host and traffic flows back and forth through the proxy. |
A semicolon separated list of destination hostnames or IPs that are exempt from connecting through the ProxyServer .
The ProxyServer is used for all addresses, except for addresses defined in this property. Use semicolons to separate entries.
Note that the Sync App uses the system proxy settings by default, without further configuration needed; if you want to explicitly configure proxy exceptions for this connection, you need to set ProxyAutoDetect = false, and configure ProxyServer and ProxyPort. To authenticate, set ProxyAuthScheme and set ProxyUser and ProxyPassword, if needed.
This section provides a complete list of the Logging properties you can configure in the connection string for this provider.
Property | Description |
LogModules | Core modules to be included in the log file. |
Core modules to be included in the log file.
Only the modules specified (separated by ';') will be included in the log file. By default all modules are included.
See the Logging page for an overview.
This section provides a complete list of the Schema properties you can configure in the connection string for this provider.
Property | Description |
Location | A path to the directory that contains the schema files defining tables, views, and stored procedures. |
BrowsableSchemas | This property restricts the schemas reported to a subset of the available schemas. For example, BrowsableSchemas=SchemaA,SchemaB,SchemaC. |
Tables | This property restricts the tables reported to a subset of the available tables. For example, Tables=TableA,TableB,TableC. |
Views | Restricts the views reported to a subset of the available tables. For example, Views=ViewA,ViewB,ViewC. |
A path to the directory that contains the schema files defining tables, views, and stored procedures.
The path to a directory which contains the schema files for the Sync App (.rsd files for tables and views, .rsb files for stored procedures). The folder location can be a relative path from the location of the executable. The Location property is only needed if you want to customize definitions (for example, change a column name, ignore a column, and so on) or extend the data model with new tables, views, or stored procedures.
If left unspecified, the default location is "%APPDATA%\\CData\\Instagram Data Provider\\Schema" with %APPDATA% being set to the user's configuration directory:
This property restricts the schemas reported to a subset of the available schemas. For example, BrowsableSchemas=SchemaA,SchemaB,SchemaC.
Listing the schemas from databases can be expensive. Providing a list of schemas in the connection string improves the performance.
This property restricts the tables reported to a subset of the available tables. For example, Tables=TableA,TableB,TableC.
Listing the tables from some databases can be expensive. Providing a list of tables in the connection string improves the performance of the Sync App.
This property can also be used as an alternative to automatically listing views if you already know which ones you want to work with and there would otherwise be too many to work with.
Specify the tables you want in a comma-separated list. Each table should be a valid SQL identifier with any special characters escaped using square brackets, double-quotes or backticks. For example, Tables=TableA,[TableB/WithSlash],WithCatalog.WithSchema.`TableC With Space`.
Note that when connecting to a data source with multiple schemas or catalogs, you will need to provide the fully qualified name of the table in this property, as in the last example here, to avoid ambiguity between tables that exist in multiple catalogs or schemas.
Restricts the views reported to a subset of the available tables. For example, Views=ViewA,ViewB,ViewC.
Listing the views from some databases can be expensive. Providing a list of views in the connection string improves the performance of the Sync App.
This property can also be used as an alternative to automatically listing views if you already know which ones you want to work with and there would otherwise be too many to work with.
Specify the views you want in a comma-separated list. Each view should be a valid SQL identifier with any special characters escaped using square brackets, double-quotes or backticks. For example, Views=ViewA,[ViewB/WithSlash],WithCatalog.WithSchema.`ViewC With Space`.
Note that when connecting to a data source with multiple schemas or catalogs, you will need to provide the fully qualified name of the table in this property, as in the last example here, to avoid ambiguity between tables that exist in multiple catalogs or schemas.
This section provides a complete list of the Miscellaneous properties you can configure in the connection string for this provider.
Property | Description |
MaxRows | Limits the number of rows returned rows when no aggregation or group by is used in the query. This helps avoid performance issues at design time. |
Other | These hidden properties are used only in specific use cases. |
PseudoColumns | This property indicates whether or not to include pseudo columns as columns to the table. |
Timeout | The value in seconds until the timeout error is thrown, canceling the operation. |
UserDefinedViews | A filepath pointing to the JSON configuration file containing your custom views. |
Limits the number of rows returned rows when no aggregation or group by is used in the query. This helps avoid performance issues at design time.
Limits the number of rows returned rows when no aggregation or group by is used in the query. This helps avoid performance issues at design time.
These hidden properties are used only in specific use cases.
The properties listed below are available for specific use cases. Normal driver use cases and functionality should not require these properties.
Specify multiple properties in a semicolon-separated list.
DefaultColumnSize | Sets the default length of string fields when the data source does not provide column length in the metadata. The default value is 2000. |
ConvertDateTimeToGMT | Determines whether to convert date-time values to GMT, instead of the local time of the machine. |
RecordToFile=filename | Records the underlying socket data transfer to the specified file. |
This property indicates whether or not to include pseudo columns as columns to the table.
This setting is particularly helpful in Entity Framework, which does not allow you to set a value for a pseudo column unless it is a table column. The value of this connection setting is of the format "Table1=Column1, Table1=Column2, Table2=Column3". You can use the "*" character to include all tables and all columns; for example, "*=*".
The value in seconds until the timeout error is thrown, canceling the operation.
If Timeout = 0, operations do not time out. The operations run until they complete successfully or until they encounter an error condition.
If Timeout expires and the operation is not yet complete, the Sync App throws an exception.
A filepath pointing to the JSON configuration file containing your custom views.
User Defined Views are defined in a JSON-formatted configuration file called UserDefinedViews.json. The Sync App automatically detects the views specified in this file.
You can also have multiple view definitions and control them using the UserDefinedViews connection property. When you use this property, only the specified views are seen by the Sync App.
This User Defined View configuration file is formatted as follows:
For example:
{ "MyView": { "query": "SELECT * FROM Users WHERE MyColumn = 'value'" }, "MyView2": { "query": "SELECT * FROM MyTable WHERE Id IN (1,2,3)" } }Use the UserDefinedViews connection property to specify the location of your JSON configuration file. For example:
"UserDefinedViews", "C:\\Users\\yourusername\\Desktop\\tmp\\UserDefinedViews.json"