CData Sync App は、GraphQL データをデータベース、データレイク、またはデータウェアハウスに継続的にパイプライン化する簡単な方法を提供し、分析、レポート、AI、および機械学習で簡単に利用できるようにします。
GraphQL コネクタはCData Sync アプリケーションから使用可能で、GraphQL からデータを取得して、サポートされている任意の同期先に移動できます。
Sync App はGraphQL API を使用してGraphQL への双方向アクセスを実現します。
必須プロパティについては、設定タブを参照してください。
通常必須ではない接続プロパティについては、高度な設定タブを参照してください。
接続するには以下を設定します。
ヘッドレスサーバーや、Sync App がブラウザを開くことができないその他のマシンにGraphQL データソースを作成するには、別のマシンから認証を行う必要があります。認証は、2段階認証プロセスになります。
オプション1:Verifier code を取得および交換
ヘッドレスマシンで次のプロパティを設定します。
別のマシンから認証してOAuthVerifier 接続プロパティを取得する方法は次のとおりです。
ヘッドレスマシンでは、次の接続プロパティを設定してOAuth 認証値を取得します。
データへの接続
OAuth 設定ファイルが生成されたら、次のプロパティを設定してデータに接続します。
オプション2:OAuth 設定を転送
別のマシンにSync App をインストールして認証し、結果のOAuth 値を転送する方法は次のとおりです。
セカンドマシンに、Sync App をインストールして、次の接続プロパティセットで接続します。
認証する接続をテストします。生成された認証値は、OAuthSettingsLocation で指定された場所に暗号化されて書き込まれます。接続テストに成功したら、OAuth 設定ファイルをヘッドレスマシンにコピーします。ヘッドレスマシンで、次の接続プロパティを設定し、データに接続します。
AWS Cognito のユーザープールに登録されたユーザーでSync App を使用する場合は、以下のプロパティを設定して認証してください。
This section shows how to control the various schemas that the Sync App offers to bridge the gap between relational SQL and GraphQL services.
GraphQL services offer a introspection query service which the Sync App can use to obtain view and column names.
All SCALAR mutation fields are exposed directly, and all object fields are expanded.
The Sync App will automatically scan for available Mutation の使用. Given that there is no method provided by GraphQL for determining which mutations can be used for each table, each mutation is exposed as a stored procedure.
LIST fields are exposed as temporary tables (GraphQL tables of type TEMPORARY_TABLE). The discovered temporary tables can be obtained by querying the sys_tables and sys_tablecolumns system tables.
オペレーション details the process for configuring custom schema files. Setting up these custom schema files is a required step in establishing a connection to GraphQL data.
See システムテーブル to query the current table metadata.
By default, the Sync App will automatically read metadata from GraphQL.
GraphQL services offer a introspection query service which the Sync App can use to obtain view and column names.
A GraphQL introspection query service has a query object at its root. Other objects are nested into the root query object, which can in turn have their own nested objects.
The Sync App reads LIST or Relay Connection type objects as views. If a field is SCALAR, it's read as a column, and if a field is a simple OBJECT, it is expanded.
Set the metadata introspection depth as follows:
The Sync App will automatically scan for available mutations. Given that there is no method provided by GraphQL for determining which mutations can be used for each table, each mutation is exposed as a stored procedure.
All SCALAR mutation fields are exposed directly, and all object fields are expanded.
LIST fields are exposed as temporary tables (GraphQL tables of type TEMPORARY_TABLE). The discovered temporary tables can be obtained by querying the sys_tables and sys_tablecolumns system tables. These tables contain a RowId and ParentId field to denote the row and housing (parent) table of a given child table.
An example of a mutation is productCreate. Invoke mutations as a stored procedure after first loading the relevant child tables needed for the operation:
INSERT INTO productCreate_metafields (namespace,key,value,type) VALUES ('MRproductInfo','ALU','449788022','string') INSERT INTO productCreate_variants (RowId,price,sku,inventoryManagement,weightUnit,weight,options,metafields,inventoryQuantities) VALUES (1,'39.99','38536314-0acb-4d3f-b8ff-a0f2014d2c75','SHOPIFY','POUNDS',1,'L,XL,XXL','productCreate_variants_metafields','productCreate_variants_inventoryQuantities') INSERT INTO productCreate_variants_metafields (ParentId,namespace,key,value,type) VALUES ('1','MRproductInfo','ALU','449788022-M-','string') INSERT INTO productCreate_variants_metafields (ParentId,namespace,key,value,type) VALUES ('1','MRproductInfo','ItemNumber','400000881201','string') INSERT INTO productCreate_variants_inventoryQuantities (ParentId,locationId,availableQuantity) VALUES ('1','gid://shopify/Location/1448280087',5) INSERT INTO productCreate_media (originalSource,alt,mediaContentType) VALUES ('https://static.nike.com/a/images/t_PDP_1280_v1/f_auto,q_auto:eco/qwqfyddzikcgc4ozwigp/revolution-5-road-running-shoes-szF7CS.png','Magic Shoes','IMAGE') EXECUTE productCreate title='NIKE - 449788022', descriptionHtml=' - MEN\\'S SHOES 42-MENS L/S TEES',productType='Staging', vendor='NIKE', published='false', options='size,width',metafields='productCreate_metafields', variants='productCreate_variants', media='productCreate_media'
Custom schemas are defined in configuration files. This chapter outlines the structure of these files.
Note: The GenerateSchemaFiles property enables you to persist table metadata in static schema files that are easy to customize (to persist your changes to column data types, for example). Set this property to "OnStart" to generate schema files for all tables in your database at connection.
Alternatively, set this property to "OnUse" to generate schemas as you execute SELECT queries to tables. It is also possible to create a specific schema file for a table using the CreateSchema stored procedure.
Tables and views are defined by authoring schema files in APIScript. APIScript is a simple configuration language that allows you to define the columns and the behavior of the table. It also has built-in オペレーション that enable you to process GraphQL. In addition to these data processing primitives, APIScript is a full-featured language with constructs for conditionals, looping, etc. However, as shown by the example schema, for most table definitions you will not need to use these features.
Below is a fully functional table schema that models the Labels table and contains all the components you will need to execute SQL to GraphQL data sources.
You can find more information on each of the components of a schema in カラム定義, SELECT 実行.
<rsb:script xmlns:rsb="http://apiscript.com/ns?v1" xmlns:xs="http://www.cdata.com/ns/rsbscript/2" xmlns:other="http://apiscript.com/ns?v1">
<rsb:info title="Labels" desc="Lists information about the different labels you can apply on an issue." other:possiblePaths="{'path':'/repository/labels/edges/node','Name':{'path':'/repository/label'}}" other:paginationObjects="{'labels':{'cursorName':'after','cursorType':'String','pageSizeArgumentName':'first','pageSizeArgumentType':'Int','depth':'1','paginationType':'Cursor','isConnection':'True','pageInfo':['endCursor','hasNextPage','hasPreviousPage','startCursor']}}">
<attr name="Id" xs:type="string" key="true" other:relativePath="id" desc="The ID of the label." />
<attr name="RepositoryName" xs:type="string" other:relativePath="name" desc="The name of the repository." other:filter="name:=" other:argumenttype="String!" other:depth="1" references="Repositories.Name" />
<attr name="UserLogin" xs:type="string" desc="The login name of the user." other:filter="owner:=" other:argumenttype="String!" other:depth="1" references="Users.Login" other:mirror="true" other:canBeSliced="true" />
<attr name="Color" xs:type="string" other:relativePath="color" desc="Identifies the label color." />
<attr name="CreatedAt" xs:type="datetime" other:relativePath="createdAt" desc="Identifies the date and time when the label was created." other:orderby="CREATED_AT" />
<attr name="Description" xs:type="string" other:relativePath="description" desc="A brief description of this label." />
<attr name="IsDefault" xs:type="boolean" other:relativePath="isDefault" desc="Indicates whether or not this is a default label." />
<attr name="Name" xs:type="string" other:relativePath="name" desc="Identifies the label name." other:filter="name:=" other:argumenttype="String!" other:orderby="NAME" other:isPathFilter="true" />
<attr name="ResourcePath" xs:type="string" other:relativePath="resourcePath" desc="The HTTP path for this label." />
<attr name="UpdatedAt" xs:type="datetime" other:relativePath="updatedAt" desc="Identifies the date and time when the label was last updated." />
<attr name="Url" xs:type="string" other:relativePath="url" desc="The HTTP URL for this label." />
</rsb:info>
<rsb:script method="GET">
<rsb:push op="graphqladoSelect" />
</rsb:script>
</rsb:script>
The following example shows how to add static headers in the schema file. These headers are added to the request every time the schema file is called.
<rsb:script xmlns:rsb="http://apiscript.com/ns?v1" xmlns:xs="http://www.cdata.com/ns/rsbscript/2" xmlns:other="http://apiscript.com/ns?v1">
...
<input name="Ship1" other:headerName="DynamicValuedHeader" />
<input name="Ship2" other:headerName="DynamicValuedHeader" />
</rsb:info>
<api:set attr="Header:Name#1" value="StaticValuedHeader" />
<api:set attr="Header:Value#1" value="StaticValuedHeader__Value" />
The following example shows how to add dynamic headers in the schema file. These headers are added to the request every time the schema file is called.
<rsb:script xmlns:rsb="http://apiscript.com/ns?v1" xmlns:xs="http://www.cdata.com/ns/rsbscript/2" xmlns:other="http://apiscript.com/ns?v1">
...
<input name="Ship1" other:headerName="DynamicValuedHeader" />
<input name="Ship2" other:headerName="DynamicValuedHeader" />
<input name="Ship3" other:headerName="DynamicValuedHeader2" />
</rsb:info>
<api:set attr="Header:Name#1" value="DynamicValuedHeader" />
<api:set attr="Header:Value#1" value="[_input.Ship1] - [_input.Ship2]" />
SELECT * FROM [Table] WHERE [Ship1] = "Value1" AND [Ship2] = "Value2" AND [DynamicValuedHeader2] = "custom value"
In the above example, the value format of DynamicValuedHeader is parsed by the driver, but for DynamicValuedHeader2, it is the same as the value specified in the query.
The basic attributes of a column are the name of the column, the data type, whether the column is a primary key, the relative path and the depth. The Sync App uses the depth attribute to extract nodes from hierarchical data.
Mark up column attributes in the block of the schema file. You can also provide a description of each attribute using the desc property.
<rsb:script xmlns:rsb="http://apiscript.com/ns?v1" xmlns:xs="http://www.cdata.com/ns/rsbscript/2" xmlns:other="http://apiscript.com/ns?v1">
<rsb:info title="Labels" desc="Lists information about the different labels you can apply on an issue." other:possiblePaths="{'path':'/repository/labels/edges/node','Name':{'path':'/repository/label'}}" other:paginationObjects="{'labels':{'cursorName':'after','cursorType':'String','pageSizeArgumentName':'first','pageSizeArgumentType':'Int','depth':'1','paginationType':'Cursor','isConnection':'True','pageInfo':['endCursor','hasNextPage','hasPreviousPage','startCursor']}}">
<attr name="Id" xs:type="string" key="true" other:relativePath="id" desc="The ID of the label." />
<attr name="RepositoryName" xs:type="string" other:relativePath="name" desc="The name of the repository." other:filter="name:=" other:argumenttype="String!" other:depth="1" references="Repositories.Name" />
<attr name="UserLogin" xs:type="string" desc="The login name of the user." other:filter="owner:=" other:argumenttype="String!" other:depth="1" references="Users.Login" other:mirror="true" other:canBeSliced="true" />
<attr name="Color" xs:type="string" other:relativePath="color" desc="Identifies the label color." />
<attr name="CreatedAt" xs:type="datetime" other:relativePath="createdAt" desc="Identifies the date and time when the label was created." other:orderby="CREATED_AT" />
<attr name="Description" xs:type="string" other:relativePath="description" desc="A brief description of this label." />
<attr name="IsDefault" xs:type="boolean" other:relativePath="isDefault" desc="Indicates whether or not this is a default label." />
<attr name="Name" xs:type="string" other:relativePath="name" desc="Identifies the label name." other:filter="name:=" other:argumenttype="String!" other:orderby="NAME" other:isPathFilter="true" />
<attr name="ResourcePath" xs:type="string" other:relativePath="resourcePath" desc="The HTTP path for this label." />
<attr name="UpdatedAt" xs:type="datetime" other:relativePath="updatedAt" desc="Identifies the date and time when the label was last updated." />
<attr name="Url" xs:type="string" other:relativePath="url" desc="The HTTP URL for this label." />
</rsb:info>
<rsb:script method="GET">
<rsb:push op="graphqladoSelect" />
</rsb:script>
</rsb:script>
The following sections provide more detail on using paths to extract columns and rows. To see the column definitions in a complete schema, refer to スキーマのカスタマイズ.
The other:possiblePaths property is used to specify the base paths that select the column's value.
Base paths start with a '/' and contain the full path to the last GraphQL nested object.
<rsb:info title="Labels" desc="Lists information about the different labels you can apply to an issue." other:possiblePaths="{'path':'/repository/labels/edges/node','Name':{'path':'/repository/label'}}" other:paginationObjects="{'labels':{'cursorName':'after','cursorType':'String','pageSizeArgumentName':'first','pageSizeArgumentType':'Int','depth':'1''paginationType':'Cursor','isConnection':'True','pageInfo':['endCursor','hasNextPage','hasPreviousPage','startCursor']}}">
The following GraphQL query is based on the above script example:
{ # base path=/repository/labels/edges/node repository { labels { edges { node { ... } } } } }
The other:relativePath property must be specified for each column. This property is used in conjuction with the other:possiblePaths property to build the GraphQL field path.
<attr name="Name" xs:type="string" other:relativePath="name" desc="Identifies the label name." />
Based on the above script example the Sync App will build the following GraphQL query:
{ # base path=/repository/labels/edges/node repository { # depth=1 labels { # depth=2 edges { node { name # path=base path + relative path. } } } } }
Use the other:depth property to specify an element inside a specific GraphQL object. The indexes are 1-based. If this attribute is not specified then the default value will be equal to the last nested GraphQL object.
<attr name="RepositoryName" xs:type="string" other:relativePath="name" desc="The name of the repository." other:depth="1" />
The following GraphQL query is built from the above script example:
{ # base path=/repository/labels/edges/node repository { # depth=1 name # This is mapped to the RepositoryName column labels { # depth=2 edges { node { ... } } } } }
Use the other:fragment property to specify a group of fields. This property can be used when the GraphQL server returns an array of objects and the Sync App may need to push this info as an aggregate.
<attr name="ColumnValues" xs:type="string" other:relativePath="column_values" desc="Column values." other:fragment="fragment ItemColumnValues on ColumnValue { id \\r\\n value }" />
Based on the above script example, the Sync App will build the following GraphQL query:
query { items { column_values { ...ItemColumnValues } } } fragment ItemColumnValues on ColumnValue { id value }
Use the other:canbesliced property enable slicing behavior in the Sync App
For example,
SELECT * FROM Table WHERE Col IN ('1','2','3')becomes
SELECT * FROM Table WHERE Col=1 SELECT * FROM Table WHERE Col=2 SELECT * FROM Table WHERE Col=3
Use the other:mirror property to reflect the value specified in the criteria. Use on columns that are not specified in the server response.
For example:
SELECT * FROM Table WHERE Col=X (If other:mirror=true the Sync App will artificially set the value of Col to X for every row.)
Use references to reference the key column of the parent table. Example: If there are two tables Orders and OrderLineItems and the OrderLineItems has a column OrderId, the references field for this column will be "Orders.Id".
Notes:
When a SELECT query is issued, the Sync App executes the GET method of the schema, which invokes the Sync App's built-in operations to process GraphQL. In the GET method you have control over the request for data. The following procedures show several ways to use this: search the remote data, server-side, with SELECT WHERE, or implement paging.
The following sections show how to translate a SELECT WHERE statement into a GraphQL query to GraphQL APIs. The procedure uses the following statement:
SELECT * FROM <table> WHERE ModifiedAt<'2019-10-30 05:05:36.001'
If this filter is supported on the server via query parameters, you can use the other:filter property of the api:info column definition to specify the desired mapping. For the above query, the Sync App will use this property to map the modifiedAt < '<date>' filter to the query parameter that returns results that were modifed before a given date, and the modifedAt > '<date>' filter to the query parameter that filters results that were modifed after.
To perform this mapping, the Sync App would use the following markup for the modifedAt column definition:
<attr name="ModifiedAt" xs:type="datetime" other:relativePath="modifiedAt" other:argumentType="DateTime" description="When the vendor was last modified." other:filter="modifiedAtAfter:>;modifiedAtBefore:<" />
This query results in the following postdata:
{ "variables": { "ModifiedAt_modifiedAtBefore": "2019-10-30T09:05:36.001Z" }, "query": "query($ModifiedAt_modifiedAtBefore:DateTime) {\r\nbusinesses {\r\nedges {\r\nnode {\r\ncustomers(modifiedAtBefore:$ModifiedAt_modifiedAtBefore) {\r\nedges {\r\nnode {\r\nid\r\nmodifiedAt\r\n}\r\n}\r\npageInfo {\r\ntotalPages\r\ncurrentPage\r\n}\r\n}\r\nid\r\n}\r\n}\r\npageInfo {\r\ntotalPages\r\ncurrentPage\r\n}\r\n}\r\n}\r\n" }
Ex: other:possiblepaths="{'path':'/businesses/edges/node','id':{'path':'/business'}}"
<attr name="Id" xs:type="string" key="true" other:relativePath="id" other:isPathFilter="true" other:filter="id:=" />
SELECT Id,Name,CreatedAt FROM Businesses WHERE Id='QnVzaW5M6ZTY4ZDA2MmQtYzkzZS00MGZkLTk4YWUtNDg2YzcxMmExNzFl'will be converted to the postdata:
{ "variables": { "Id_id": "QnVzaW5M6ZTY4ZDA2MmQtYzkzZS00MGZkLTk4YWUtNDg2YzcxMmExNzFl" }, "query": "query($Id_id:ID) {\r\nbusiness(id:$Id_id) {\r\nid\r\nname\r\ncreatedAt\r\n}\r\n}\r\n" }
The driver supports two pagination modes.
other:paginationObjects = "{ 'labels': { 'cursorName': 'after', 'cursorType': 'String', 'pageSizeArgumentName': 'first', 'pageSizeArgumentType': 'Int', 'depth':'1', 'paginationType': 'Cursor', 'isConnection': 'True', 'pageInfo': ['endCursor', 'hasNextPage', 'hasPreviousPage', 'startCursor'] } }"The following postdata will be generated after processing the other:paginationObjects table extra info specified above:
{ "variables": { "UserLogin_owner": "testaccount71", "RepositoryName_name": "test", "first": <Pagesize> }, "query": "query($UserLogin_owner:String!, $RepositoryName_name:String!, $first:Int) {\r\nrepository(owner:$UserLogin_owner, name:$RepositoryName_name) {\r\nlabels(first:$first) {\r\nedges {\r\nnode {\r\nid\r\ncolor\r\ncreatedAt\r\ndescription\r\nisDefault\r\nname\r\nresourcePath\r\nupdatedAt\r\nurl\r\n}\r\n}\r\npageInfo {\r\nendCursor\r\nhasNextPage\r\n}\r\n}\r\nname\r\n}\r\n}\r\n" }
other:paginationObjects="{ 'businesses': { 'offsetArgumentName': 'page', 'offsetArgumentType': 'Int', 'pageSizeArgumentName': 'pageSize', 'pageSizeArgumentType': 'Int', 'depth':'1', 'paginationType': 'Offset', 'isConnectionObject': 'True', 'pageInfo': ['currentPage', 'totalPages', 'totalCount'] } }"The following postdata will be generated after processing the other:paginationObjects table extra info specified above:
{ "variables": { "pageSize_1": <Pagesize> }, "query": "query($pageSize_1:Int) {\r\nbusinesses(pageSize:$pageSize_1) {\r\nedges {\r\nnode {\r\nid\r\n}\r\n}\r\npageInfo {\r\ntotalPages\r\ncurrentPage\r\n}\r\n}\r\n}\r\n" }
<rsb:info title="Labels" desc="Lists information about the different labels you can apply on an issue." other:orderByFormat="{field: {orderByArgumentValue}, direction: {sortOrder}}"> <attr name="CreatedAt" xs:type="datetime" other:relativePath="createdAt" other:orderByFormat="{field: {orderByArgumentValue}, direction: {sortOrder}}" other:orderBy="orderBy:CREATED_AT" />
<attr name="CreatedAt" xs:type="datetime" other:relativePath="createdAt" other:orderBy="orderBy:CREATED_AT" />
SELECT Id FROM Labels ORDER BY CreatedAt ASCwill be converted to the postdata:
{ "variables": { "first": <Pagesize> }, "query": "query($first:Int) {\r\nrepository {\r\nlabels(sort:{field: CREATED_AT, direction: ASC}, first:$first) {\r\nedges {\r\nnode {\r\nid\r\n}\r\n}\r\npageInfo {\r\nendCursor\r\nhasNextPage\r\n}\r\n}\r\n}\r\n}\r\n" }
The Sync App has high-performance operations for processing GraphQL data sources. These operations are platform neutral: Schema files that invoke these operations can be used in both .NET and Java. You can also extend the Sync App with your own operations written in .NET or Java.
The Sync App has the following operations:
Operation Name | Description | |
OAuthGetAccessToken | For OAuth 1.0, exchange a request token for an access token. For OAuth 2.0, get an access token or get a new access token with the refresh token. | |
OAuthGetUserAuthorizationURL | Generates the user authorization URL. OAuth 2.0 will not access the network in this operation. |
The OAuthGetAccessToken operation is an APIScript operation that is used to facilitate the OAuth authentication and refresh flows.
The Sync App includes stored procedures that invoke this operation to complete the OAuth exchange. The following example schema briefly lists some of the typically required inputs before the following sections explain them in more detail.
Invoke the OAuthGetAccessToken with the GetOAuthAccessToken stored procedure. The following inputs are required for most data sources and will provide default values for the connection properties of the same name.
<api:script xmlns:api="http://www.rssbus.com/ns/rsbscript/2">
<api:info title="GetOAuthAccessToken" description="Obtains the OAuth access token to be used for authentication with various APIs." >
<input name="AuthMode" desc="The OAuth flow. APP or WEB." />
<input name="CallbackURL" desc="The URL to be used as a trusted redirect URL, where the user will return with the token that verifies that they have granted your app access. " />
<input name="OAuthAccessToken" desc="The request token. OAuth 1.0 only." />
<input name="OAuthAccessTokenSecret" desc="The request token secret. OAuth 1.0 only." />
<input name="Verifier" desc="The verifier code obtained when the user grants permissions to your app." />
<output name="OAuthAccessToken" desc="The access token." />
<output name="OAuthTokenSecret" desc="The access token secret." />
<output name="OAuthRefreshToken" desc="A token that may be used to obtain a new access token." />
</api:info>
<!-- Set OAuthVersion to 1.0 or 2.0. -->
<api:set attr="OAuthVersion" value="MyOAuthVersion" />
<!-- Set RequestTokenURL to the URL where the request for the request token is made. OAuth 1.0 only.-->
<api:set attr="OAuthRequestTokenURL" value="http://MyOAuthRequestTokenURL" />
<!-- Set OAuthAuthorizationURL to the URL where the user logs into the service and grants permissions to the application. -->
<api:set attr="OAuthAuthorizationURL" value="http://MyOAuthAuthorizationURL" />
<!-- Set OAuthAccessTokenURL to the URL where the request for the access token is made. -->
<api:set attr="OAuthAccessTokenURL" value="http://MyOAuthAccessTokenURL" />
<!-- Set GrantType to the authorization grant type. OAuth 2.0 only. -->
<api:set attr="GrantType" value="CODE" />
<!-- Set SignMethod to the signature method used to calculate the signature of the request. OAuth 1.0 only.-->
<api:set attr="SignMethod" value="HMAC-SHA1" />
<api:call op="oauthGetAccessToken">
<api:push/>
</api:call>
</api:script>
You can also use OAuthGetAccessToken to refresh the access token by providing the following inputs:
<api:script xmlns:api="http://www.rssbus.com/ns/rsbscript/2">
<api:info title="RefreshOAuthAccessToken" description="Refreshes the OAuth access token used for authentication." >
<input name="OAuthRefreshToken" desc="A token that may be used to obtain a new access token." />
<output name="OAuthAccessToken" desc="The authentication token returned." />
<output name="OAuthTokenSecret" desc="The authentication token secret returned. OAuth 1.0 only." />
<output name="OAuthRefreshToken" desc="A token that may be used to obtain a new access token." />
<output name="ExpiresIn" desc="The remaining lifetime on the access token." />
</api:info>
<!-- Set OAuthVersion to 1.0 or 2.0. -->
<api:set attr="OAuthVersion" value="MyOAuthVersion" />
<!-- Set GrantType to REFRESH. OAuth 2.0 only. -->
<api:set attr="GrantType" value="REFRESH" />
<!-- Set SignMethod to the signature method used to calculate the signature of the request. OAuth 1.0 only.-->
<api:set attr="SignMethod" value="HMAC-SHA1" />
<!-- Set OAuthAccessTokenURL to the URL where the request for the access token is made. -->
<api:set attr="OAuthAccessTokenURL" value="http://MyOAuthAccessTokenURL" />
<!-- Set AuthMode to 'WEB' when calling RefreshOAuthAccessToken -->
<api:set attr="AuthMode" value="WEB"/>
<api:call op="oauthGetAccessToken">
<api:push/>
</api:call>
</api:script>
The OAuthGetUserAuthorizationURL is an APIScript operation that is used to facilitate the OAuth authentication flow for Web apps, for offline apps, and in situations where the Sync App is not allowed to open a Web browser. To pass the needed inputs to this operation, define the GetOAuthAuthorizationURL stored procedure. The Sync App can call this internally.
Define stored procedures in .rsb files with the same file name as the schema's title. The example schema briefly lists some of the typically required inputs before the following sections explain them in more detail.
Call OAuthGetUserAuthorizationURL in the GetOAuthAuthorizationURL stored procedure.
<api:script xmlns:api="http://www.rssbus.com/ns/rsbscript/2">
<api:info title="Get OAuth Authorization URL" description="Obtains the OAuth authorization URL used for authentication with various APIs." >
<input name="CallbackURL" desc="The URL to be used as a trusted redirect URL, where the user will return with the token that verifies that they have granted your app access. " />
<output name="URL" desc="The URL where the user logs in and is prompted to grant permissions to the app. " />
<output name="OAuthAccessToken" desc="The request token. OAuth 1.0 only." />
<output name="OAuthTokenSecret" desc="The request token secret. OAuth 1.0 only." />
</api:info>
<!-- Set OAuthVersion to 1.0 or 2.0. -->
<api:set attr="OAuthVersion" value="MyOAuthVersion" />
<!-- Set ResponseType to the desired authorization grant type. OAuth 2.0 only.-->
<api:set attr="ResponseType" value="code" />
<!-- Set SignMethod to the signature method used to calculate the signature. OAuth 1.0 only.-->
<api:set attr="SignMethod" value="HMAC-SHA1" />
<!-- Set OAuthAuthorizationURL to the URL where the user logs into the service and grants permissions to the application. -->
<api:set attr="OAuthAuthorizationURL" value="http://MyOAuthAuthorizationURL" />
<!-- Set OAuthAccessTokenURL to the URL where the request for the access token is made. -->
<api:set attr="OAuthAccessTokenURL" value="http://MyOAuthAccessTokenURL"/>
<!-- Set RequestTokenURL to the URL where the request for the request token is made. OAuth 1.0 only.-->
<api:set attr="OAuthRequestTokenURL" value="http://MyOAuthRequestTokenURL" />
<api:call op="oauthGetUserAuthorizationUrl">
<api:push/>
</api:call>
</api:script>
<p>
プロパティ | 説明 |
AuthScheme | The type of authentication to use when connecting to remote services. |
URL | The URL of the GraphQL service. |
User | 認証で使用されるGraphQL ユーザーアカウント。 |
Password | ユーザーの認証で使用されるパスワード。 |
プロパティ | 説明 |
AWSCognitoRegion | AWS Cognito のホスティングリージョン。 |
AWSUserPoolId | ユーザープールのID。 |
AWSUserPoolClientAppId | ユーザープールのアプリクライアントID。 |
AWSUserPoolClientAppSecret | ユーザープールのアプリクライアントシークレット。(オプション) |
プロパティ | 説明 |
OAuthVersion | 使われているOAuth のバージョン。 |
OAuthClientId | OAuth 認証サーバーを使用してアプリケーションを登録する場合に割り当てられたクライアントId。 |
OAuthClientSecret | OAuth 認証サーバーにアプリケーションを登録する場合に割り当てられたクライアントシークレット。 |
OAuthGrantType | OAuth フローのグラント種別。 |
OAuthIncludeCallbackURL | アクセストークンリクエストにコールバックURL を含めるかどうか。 |
OAuthAuthorizationURL | OAuth サービスの認可URL。 |
OAuthAccessTokenURL | OAuth アクセストークンを取得するURL。 |
OAuthRefreshTokenURL | OAuth トークンをリフレッシュするURL。 |
OAuthRequestTokenURL | サービスがリクエストトークンを取得するために提供するURL。これは、OAuth 1.0 では必須です。 |
AuthToken | OAuth アクセストークンをリクエストおよび取得するために使用される認証トークン。 |
AuthKey | OAuth アクセストークンをリクエストおよび取得するために使用される認証シークレット。 |
OAuthParams | OAuth アクセストークンのリクエストでparamname=value の形式でサブミットするその他のパラメータのカンマ区切りのリスト。 |
プロパティ | 説明 |
OAuthJWTCert | JWT 証明書のストア。 |
OAuthJWTCertType | JWT 証明書を格納するキーストアの種類。 |
OAuthJWTCertPassword | OAuth JWT 証明書のパスワード。 |
OAuthJWTCertSubject | OAuth JWT 証明書のサブジェクト。 |
プロパティ | 説明 |
SSLClientCert | SSL クライアント認証(2-way SSL)のためのTLS/SSL クライアント証明書ストア。 |
SSLClientCertType | TLS/SSL クライアント証明書を格納するキーストアの種類。 |
SSLClientCertPassword | TLS/SSL クライアント証明書のパスワード。 |
SSLClientCertSubject | TLS/SSL クライアント証明書のサブジェクト。 |
SSLServerCert | TLS/SSL を使用して接続するときに、サーバーが受け入れ可能な証明書。 |
プロパティ | 説明 |
FirewallType | プロキシベースのファイアウォールで使われるプロトコル。 |
FirewallServer | プロキシベースのファイアウォールの名前もしくはIP アドレス。 |
FirewallPort | プロキシベースのファイアウォールのTCP ポート。 |
FirewallUser | プロキシベースのファイアウォールに認証するために使うユーザー名。 |
FirewallPassword | プロキシベースのファイアウォールへの認証に使われるパスワード。 |
プロパティ | 説明 |
ProxyAutoDetect | これは、システムプロキシ設定を使用するかどうかを示します。 |
ProxyServer | HTTP トラフィックをルートするためのプロキシのホストネームもしくはIP アドレス。 |
ProxyPort | ProxyServer プロキシが起動しているTCP ポート。 |
ProxyAuthScheme | ProxyServer プロキシへの認証で使われる認証タイプ。 |
ProxyUser | ProxyServer プロキシへの認証に使われるユーザー名。 |
ProxyPassword | ProxyServer プロキシへの認証に使われるパスワード。 |
ProxySSLType | ProxyServer プロキシへの接続時に使用するSSL タイプ。 |
ProxyExceptions | ProxyServer 経由での接続が免除される宛先ホスト名またはIP のセミコロン区切りのリスト。 |
プロパティ | 説明 |
LogModules | ログファイルに含めるコアモジュール。 |
プロパティ | 説明 |
Location | テーブル、ビュー、およびストアドプロシージャを定義するスキーマファイルを格納するディレクトリへのパス。 |
BrowsableSchemas | このプロパティは、使用可能なスキーマのサブセットにレポートされるスキーマを制限します。例えば、BrowsableSchemas=SchemaA,SchemaB,SchemaC です。 |
Tables | このプロパティは、使用可能なテーブルのサブセットにレポートされるテーブルを制限します。例えば、Tables=TableA,TableB,TableC です。 |
Views | 使用可能なテーブルのサブセットにレポートされるビューを制限します。例えば、Views=ViewA,ViewB,ViewC です。 |
ExpandArgumentsDepth | This property is used to determine how far the provider should search for columns inside the arguments of type INPUT_OBJECT. |
ExpandTablesDepth | This property is used to determine the depth of the child tables. |
ExpandTemporaryTablesDepth | This property is used to determine the depth of the child temporary tables. Only works if ExposeDynamicProcedures is set to true. |
ExpandColumnsDepth | This property is used to determine how far the provider should search for columns inside the GraphQL objects. |
IncludeDeprecatedMetadata | This property is used to determine whether the provider should expose deprecated tables and columns or not. |
ExposeDynamicProcedures | This property is used to determine whether the provider should expose mutations as dynamic procedures or not. |
プロパティ | 説明 |
CustomHeaders | ユーザーが決定したその他のヘッダー(オプション)。 |
GenerateSchemaFiles | スキーマを生成して保存するユーザーの好みのタイミングを示します。 |
MaxRows | クエリで集計またはGROUP BY を使用しない場合に返される行数を制限します。これはLIMIT 句よりも優先されます。 |
Other | これらの隠しプロパティは特定のユースケースでのみ使用されます。 |
Pagesize | The maximum number of results to return per page from GraphQL. |
PseudoColumns | このプロパティは、テーブルのカラムとして疑似カラムが含まれているかどうかを示します。 |
Timeout | タイムアウトエラーがスローされ、処理をキャンセルするまでの秒数。 |
UserDefinedViews | カスタムビューを含むJSON コンフィギュレーションファイルを指すファイルパス。 |
このセクションでは、本プロバイダーの接続文字列で設定可能なAuthentication プロパティの全リストを提供します。
プロパティ | 説明 |
AuthScheme | The type of authentication to use when connecting to remote services. |
URL | The URL of the GraphQL service. |
User | 認証で使用されるGraphQL ユーザーアカウント。 |
Password | ユーザーの認証で使用されるパスワード。 |
The type of authentication to use when connecting to remote services.
The following options are generally available to all connections:
The URL of the GraphQL service.
The URL of the GraphQL service.
このセクションでは、本プロバイダーの接続文字列で設定可能なAWS Authentication プロパティの全リストを提供します。
プロパティ | 説明 |
AWSCognitoRegion | AWS Cognito のホスティングリージョン。 |
AWSUserPoolId | ユーザープールのID。 |
AWSUserPoolClientAppId | ユーザープールのアプリクライアントID。 |
AWSUserPoolClientAppSecret | ユーザープールのアプリクライアントシークレット。(オプション) |
AWS Cognito のホスティングリージョン。
AWS Cognito のホスティングリージョン。利用可能な値は次のとおりです。OHIO, NORTHERNVIRGINIA, NORTHERNCALIFORNIA, OREGON, CAPETOWN, HONGKONG, MUMBAI, OSAKA, SEOUL, SINGAPORE, SYDNEY, TOKYO, CENTRAL, BEIJING, NINGXIA, FRANKFURT, IRELAND, LONDON, MILAN, PARIS, STOCKHOLM, BAHRAIN, SAOPAULO, GOVCLOUDEAST, GOVCLOUDWEST
ユーザープールのID。
[AWS Cognito]->[Manage User Pools(ユーザープールの管理)]->[select your user pool(ユーザープールを選択)]->[General settings(全般設定)]->[Pool ID(プールのID)]で確認できます。
ユーザープールのアプリクライアントID。
[AWS Cognito]->[Manage Identity Pools(ID プールの管理)]->[select your user pool(ユーザープールを選択)]->[General settings(全般設定)]->[App clients(アプリクライアント)]->[App client ID(アプリクライアントID)]で確認できます。
ユーザープールのアプリクライアントシークレット。(オプション)
[AWS Cognito]->[Manage Identity Pools(ID プールの管理)]->[select your user pool(ユーザープールを選択)]->[General settings(全般設定)]->[App clients(アプリクライアント)]->[App client secret(アプリクライアントシークレット)]で確認できます。
このセクションでは、本プロバイダーの接続文字列で設定可能なOAuth プロパティの全リストを提供します。
プロパティ | 説明 |
OAuthVersion | 使われているOAuth のバージョン。 |
OAuthClientId | OAuth 認証サーバーを使用してアプリケーションを登録する場合に割り当てられたクライアントId。 |
OAuthClientSecret | OAuth 認証サーバーにアプリケーションを登録する場合に割り当てられたクライアントシークレット。 |
OAuthGrantType | OAuth フローのグラント種別。 |
OAuthIncludeCallbackURL | アクセストークンリクエストにコールバックURL を含めるかどうか。 |
OAuthAuthorizationURL | OAuth サービスの認可URL。 |
OAuthAccessTokenURL | OAuth アクセストークンを取得するURL。 |
OAuthRefreshTokenURL | OAuth トークンをリフレッシュするURL。 |
OAuthRequestTokenURL | サービスがリクエストトークンを取得するために提供するURL。これは、OAuth 1.0 では必須です。 |
AuthToken | OAuth アクセストークンをリクエストおよび取得するために使用される認証トークン。 |
AuthKey | OAuth アクセストークンをリクエストおよび取得するために使用される認証シークレット。 |
OAuthParams | OAuth アクセストークンのリクエストでparamname=value の形式でサブミットするその他のパラメータのカンマ区切りのリスト。 |
使われているOAuth のバージョン。
使われているOAuth のバージョン。次のオプションが利用可能です:Disabled,1.0,2.0
OAuth 認証サーバーを使用してアプリケーションを登録する場合に割り当てられたクライアントId。
OAuth アプリケーションの登録の一環として、コンシューマキーとも呼ばれるOAuthClientId 値、およびクライアントシークレットOAuthClientSecret が提供されます。
OAuth 認証サーバーにアプリケーションを登録する場合に割り当てられたクライアントシークレット。
OAuth アプリケーションの登録の一環として、コンシューマキーとも呼ばれるOAuthClientId が提供されます。また、コンシューマーシークレットと呼ばれるクライアントシークレットも提供されます。クライアントシークレットをOAuthClientSecret プロパティに設定します。
OAuth フローのグラント種別。
次のオプションが利用可能です:CODE,CLIENT,PASSWORD
アクセストークンリクエストにコールバックURL を含めるかどうか。
デフォルトではtrue です。 標準に準拠したOAuth サービスでは、redirect_uri パラメータを必要としないCLIENT やPASSWORD などのグラント種別では、 redirect_uri パラメータを無視するからです。
このオプションは、redirect_uri が含まれる場合にエラーを報告するOAuth サービスに対してのみ有効にしてください。
OAuth サービスの認可URL。
OAuth サービスの認可URL。このURL でユーザーはサーバーにログインしてアプリケーションにアクセス許可を与えます。OAuth 1.0 では、アクセス許可が付与されるとリクエストトークンが認可されます。
OAuth アクセストークンを取得するURL。
OAuth アクセストークンを取得するURL。OAuth 1.0 では、このURL で認可されたリクエストトークンがアクセストークンと交換されます。
OAuth トークンをリフレッシュするURL。
OAuth トークンをリフレッシュするURL。OAuth 2.0 では、古いトークンの期限が切れたときは、このURL でリフレッシュトークンと新しいアクセストークンと交換します。
サービスがリクエストトークンを取得するために提供するURL。これは、OAuth 1.0 では必須です。
サービスがリクエストトークンを取得するために提供するURL。これは、OAuth 1.0 では必須です。OAuth 1.0 では、これがアプリケーションがリクエストトークンをリクエストするURL です。
OAuth アクセストークンをリクエストおよび取得するために使用される認証トークン。
このプロパティは、OAuth 1.0でヘッドレス認証を実行する場合にのみ必要です。これは、GetOAuthAuthorizationUrl ストアドプロシージャから取得できます。
GetOAuthAccessToken ストアドプロシージャでAuthKey とともに指定して、OAuthAccessToken を取得できます。
OAuth アクセストークンをリクエストおよび取得するために使用される認証シークレット。
このプロパティは、OAuth 1.0でヘッドレス認証を実行する場合にのみ必要です。これは、GetOAuthAuthorizationUrl ストアドプロシージャから取得できます。
GetOAuthAccessToken ストアドプロシージャでAuthToken とともに指定して、OAuthAccessToken を取得できます。
OAuth アクセストークンのリクエストでparamname=value の形式でサブミットするその他のパラメータのカンマ区切りのリスト。
OAuth アクセストークンのリクエストでparamname=value の形式でサブミットするその他のパラメータのカンマ区切りのリスト。
このセクションでは、本プロバイダーの接続文字列で設定可能なJWT OAuth プロパティの全リストを提供します。
プロパティ | 説明 |
OAuthJWTCert | JWT 証明書のストア。 |
OAuthJWTCertType | JWT 証明書を格納するキーストアの種類。 |
OAuthJWTCertPassword | OAuth JWT 証明書のパスワード。 |
OAuthJWTCertSubject | OAuth JWT 証明書のサブジェクト。 |
JWT 証明書のストア。
クライアント証明書のための証明書ストア名。
OAuthJWTCertType フィールドは、OAuthJWTCert により指定された証明書ストアの種類を指定します。 ストアがパスワードで保護されている場合は、OAuthJWTCertPassword でパスワードを指定します。
OAuthJWTCert は、OAuthJWTCertSubject フィールドとともにクライアント証明書を指定するために使われます。 OAuthJWTCert に値がある場合で、OAuthJWTCertSubject が設定されている場合は、証明書の検索が始まります。 詳しくは、OAuthJWTCertSubject フィールドを参照してください。
証明書ストアの指定はプラットフォームに依存します。
Windows の共通のユーザとシステム証明書ストアの指定は以下のとおりです。
MY | 個人証明書と関連付けられた秘密キーを格納している証明書ストア。 |
CA | 証明機関の証明書。 |
ROOT | ルート証明書。 |
SPC | ソフトウェア発行元証明書。 |
Javaでは、証明書ストアは通常、証明書および任意の秘密キーを含むファイルです。
証明書ストアの種類がPFXFile の場合は、このプロパティにファイル名を設定します。 PFXBlob の場合は、このプロパティをPFX ファイルのバイナリコンテンツ(例えば、PKCS12証明書ストア)に設定する必要があります。
JWT 証明書を格納するキーストアの種類。
このプロパティには次の値の一つを設定できます。
USER | Windows の場合、現在のユーザーにより所有された証明書ストアであることを指定します。 Note:この種類はJava では利用できません。 |
MACHINE | Windows の場合、この証明書ストアがシステムストアであることを指定します。 Note:この種類はJava では利用できません。 |
PFXFILE | この証明書ストアは、証明書を含むPFX(PKCS12)ファイルの名前です。 |
PFXBLOB | この証明書ストアは、PFX(PKCS12)形式の証明書ストアを表すBase-64でエンコードされた文字列です。 |
JKSFILE | この証明書ストアは、証明書を含むJava key store(JKS)ファイルの名前です。 Note:この種類はJava のみで利用できます。 |
JKSBLOB | この証明書ストアは、Java key store(JKS)形式の証明書ストアを表すBase-64でエンコードされた文字列です。 Note:この種類はJava のみで利用できます。 |
PEMKEY_FILE | この証明書ストアは、秘密キーと任意の証明書を含むPEM でエンコードされたファイルの名前です。 |
PEMKEY_BLOB | この証明書ストアは、秘密キーと任意の証明書を含むBase-64でエンコードされた文字列です。 |
PUBLIC_KEY_FILE | この証明書ストアは、PEM またはDER でエンコードされた公開キーの証明書を含むファイルの名前です。 |
PUBLIC_KEY_BLOB | この証明書ストアは、PEM またはDER でエンコードされた公開キーの証明書を含むBase-64でエンコードされた文字列です。 |
SSHPUBLIC_KEY_FILE | この証明書ストアは、SSH 公開キーを含むファイルの名前です。 |
SSHPUBLIC_KEY_BLOB | この証明書ストアは、SSH 公開キーを含むBase-64でエンコードされた文字列です。 |
P7BFILE | この証明書ストアは、証明書を含むPKCS7 ファイルの名前です。 |
PPKFILE | この証明書ストアは、PuTTY 秘密キー(PPK)を含むファイルの名前です。 |
XMLFILE | この証明書ストアは、XML 形式の証明書を含むファイルの名前です。 |
XMLBLOB | この証明書ストアは、XML 形式の証明書を含む文字列の名前です。 |
OAuth JWT 証明書のパスワード。
証明書ストアでパスワードが必要である場合、このプロパティを使用してパスワードを指定し、証明書ストアにアクセスできます。
OAuth JWT 証明書のサブジェクト。
証明書のサブジェクトは、証明書をロードするときにストア内の証明書を検索するために使用されます。
完全に一致するものが見つからない場合、ストアはプロパティの値を含むサブジェクトを検索します。
それでも一致するものが見つからない場合、プロパティは空白で設定され、証明書は選択されません。
"*" に設定すると、証明書ストアの1番目の証明書が選択されます。
証明書のサブジェクトは識別の名前フィールドおよび値のカンマ区切りのリストです。 例えば、"CN=www.server.com, OU=test, C=US, [email protected]"。共通のフィールドとその説明は以下のとおりです。
フィールド | 説明 |
CN | 共通名。一般的には、www.server.com のようなホスト名です。 |
O | 法人名 |
OU | 法人の部署名 |
L | 法人の住所(市町村名) |
S | 法人の住所(都道府県) |
C | 国名 |
E | Eメールアドレス |
フィールド値にカンマが含まれている場合は、それを引用符で囲む必要があります。
このセクションでは、本プロバイダーの接続文字列で設定可能なSSL プロパティの全リストを提供します。
プロパティ | 説明 |
SSLClientCert | SSL クライアント認証(2-way SSL)のためのTLS/SSL クライアント証明書ストア。 |
SSLClientCertType | TLS/SSL クライアント証明書を格納するキーストアの種類。 |
SSLClientCertPassword | TLS/SSL クライアント証明書のパスワード。 |
SSLClientCertSubject | TLS/SSL クライアント証明書のサブジェクト。 |
SSLServerCert | TLS/SSL を使用して接続するときに、サーバーが受け入れ可能な証明書。 |
SSL クライアント認証(2-way SSL)のためのTLS/SSL クライアント証明書ストア。
クライアント証明書のための証明書ストア名。
SSLClientCertType フィールドは、SSLClientCert により指定された証明書ストアの種類を指定します。ストアがパスワードで保護されている場合は、SSLClientCertPassword でパスワードを指定します。
SSLClientCert は、SSLClientCertSubject フィールドとともにクライアント証明書を指定するために使われます。SSLClientCert に値がある場合で、SSLClientCertSubject が設定されている場合は、証明書の検索が始まります。詳しくは、SSLClientCertSubject を参照してください。
証明書ストアの指定はプラットフォームに依存します。
Windows の共通のユーザとシステム証明書ストアの指定は以下のとおりです。
MY | 個人証明書と関連付けられた秘密キーを格納している証明書ストア。 |
CA | 証明機関の証明書。 |
ROOT | ルート証明書。 |
SPC | ソフトウェア発行元証明書。 |
Javaでは、証明書ストアは通常、証明書および任意の秘密キーを含むファイルです。
証明書ストアの種類がPFXFile の場合は、このプロパティにファイル名を設定します。PFXBlob の場合は、このプロパティをPFX ファイルのバイナリコンテンツ(例えば、PKCS12証明書ストア)に設定する必要があります。
TLS/SSL クライアント証明書を格納するキーストアの種類。
このプロパティには次の値の一つを設定できます。
USER - デフォルト | Windows の場合、現在のユーザーにより所有された証明書ストアであることを指定します。この種類はJava では利用できませんので注意してください。 |
MACHINE | Windows の場合、この証明書ストアがシステムストアであることを指定します。この種類はJava では利用できませんので注意してください。 |
PFXFILE | この証明書ストアは、証明書を含むPFX(PKCS12)ファイルの名前です。 |
PFXBLOB | この証明書ストアは、PFX(PKCS12)形式の証明書ストアを表すBase-64でエンコードされた文字列です。 |
JKSFILE | この証明書ストアは、証明書を含むJava key store(JKS)ファイルの名前です。この種類はJava でのみ利用できますので注意してください。 |
JKSBLOB | この証明書ストアは、Java key store(JKS)形式の証明書ストアを表すBase-64でエンコードされた文字列です。この種類はJava でのみ利用できますので注意してください。 |
PEMKEY_FILE | この証明書ストアは、秘密キーと任意の証明書を含むPEM でエンコードされたファイルの名前です。 |
PEMKEY_BLOB | この証明書ストアは、秘密キーと任意の証明書を含むBase-64でエンコードされた文字列です。 |
PUBLIC_KEY_FILE | この証明書ストアは、PEM またはDER でエンコードされた公開キーの証明書を含むファイルの名前です。 |
PUBLIC_KEY_BLOB | この証明書ストアは、PEM またはDER でエンコードされた公開キーの証明書を含むBase-64でエンコードされた文字列です。 |
SSHPUBLIC_KEY_FILE | この証明書ストアは、SSH 公開キーを含むファイルの名前です。 |
SSHPUBLIC_KEY_BLOB | この証明書ストアは、SSH 公開キーを含むBase-64でエンコードされた文字列です。 |
P7BFILE | この証明書ストアは、証明書を含むPKCS7 ファイルの名前です。 |
PPKFILE | この証明書ストアは、PuTTY 秘密キー(PPK)を含むファイルの名前です。 |
XMLFILE | この証明書ストアは、XML 形式の証明書を含むファイルの名前です。 |
XMLBLOB | この証明書ストアは、XML 形式の証明書を含む文字列の名前です。 |
TLS/SSL クライアント証明書のパスワード。
証明書ストアでパスワードが必要である場合、このプロパティを使用してパスワードを指定し、証明書ストアにアクセスできます。
TLS/SSL クライアント証明書のサブジェクト。
証明書のサブジェクトは、証明書をロードするときにストア内の証明書を検索するために使用されます。
完全に一致するものが見つからない場合、ストアはプロパティの値を含むサブジェクトを検索します。それでも一致するものが見つからない場合、プロパティは空白で設定され、証明書は選択されません。
"*" に設定すると、証明書ストアの1番目の証明書が選択されます。
証明書のサブジェクトは識別の名前フィールドおよび値のカンマ区切りのリストです。例えば、"CN=www.server.com, OU=test, C=US, [email protected]" です。共通のフィールドとその説明は以下のとおりです。
フィールド | 説明 |
CN | 共通名。一般的には、www.server.com のようなホスト名です。 |
O | 法人名 |
OU | 法人の部署名 |
L | 法人の住所(市町村名) |
S | 法人の住所(都道府県) |
C | 国名 |
E | Eメールアドレス |
フィールド値にカンマが含まれている場合は、それを引用符で囲む必要があります。
TLS/SSL を使用して接続するときに、サーバーが受け入れ可能な証明書。
TLS/SSL 接続を使用する場合は、このプロパティを使用して、サーバーが受け入れるTLS/SSL 証明書を指定できます。コンピュータによって信頼されていない他の証明書はすべて拒否されます。
このプロパティは、次のフォームを取ります:
説明 | 例 |
フルPEM 証明書(例では省略されています) | -----BEGIN CERTIFICATE----- MIIChTCCAe4CAQAwDQYJKoZIhv......Qw== -----END CERTIFICATE----- |
証明書を保有するローカルファイルへのパス。 | C:\cert.cer |
公開鍵(例では省略されています) | -----BEGIN RSA PUBLIC KEY----- MIGfMA0GCSq......AQAB -----END RSA PUBLIC KEY----- |
MD5 Thumbprint (hex 値はスペースおよびコロン区切り) | ecadbdda5a1529c58a1e9e09828d70e4 |
SHA1 Thumbprint (hex 値はスペースおよびコロン区切り) | 34a929226ae0819f2ec14b4a3d904f801cbb150d |
これを指定しない場合は、マシンが信用するすべての証明書が受け入れられます。
すべての証明書の受け入れを示すには、'*'を使用します。セキュリティ上の理由から、これはお勧めできません。
このセクションでは、本プロバイダーの接続文字列で設定可能なFirewall プロパティの全リストを提供します。
プロパティ | 説明 |
FirewallType | プロキシベースのファイアウォールで使われるプロトコル。 |
FirewallServer | プロキシベースのファイアウォールの名前もしくはIP アドレス。 |
FirewallPort | プロキシベースのファイアウォールのTCP ポート。 |
FirewallUser | プロキシベースのファイアウォールに認証するために使うユーザー名。 |
FirewallPassword | プロキシベースのファイアウォールへの認証に使われるパスワード。 |
プロキシベースのファイアウォールで使われるプロトコル。
このプロパティは、Sync App がFirewallServer プロキシ経由でトンネルトラフィックを使うためのプロトコルを指定します。デフォルトでは、Sync App はシステムプロキシに接続します。この動作を無効化し次のプロキシタイプのどれかで接続するには、ProxyAutoDetect をfalse に設定します。
タイプ | デフォルトポート | 説明 |
TUNNEL | 80 | これが設定されている場合、Sync App はGraphQL への接続を開き、プロキシを経由して通信が行われます。 |
SOCKS4 | 1080 | これが設定されている場合、Sync App はデータをFirewallServer およびFirewallPort で指定されたSOCS 4 プロキシ経由で送信し、接続リクエストが許容されるかどうかを決定します。 |
SOCKS5 | 1080 | これが設定されている場合、Sync App はデータをFirewallServer およびFirewallPort で指定されたSOCS 5 プロキシ経由で送信します。プロキシに認証が必要な場合には、FirewallUser およびFirewallPassword をプロキシが認識する認証情報に設定します。 |
HTTP プロキシへの接続には、ProxyServer およびProxyPort ポートを使ってください。HTTP プロキシへの認証には、ProxyAuthScheme、ProxyUser、およびProxyPassword を使ってください。
プロキシベースのファイアウォールの名前もしくはIP アドレス。
ファイアウォールトラバーサルを許容するために設定するIP アドレス、DNS 名、もしくはプロキシホスト名を指定するプロパティです。プロトコルはFirewallType で指定されます。このプロパティとFirewallServer を使って、SOCKS 経由での接続、もしくはトンネリングが可能です。HTTP プロキシへの接続には、ProxyServer を使用します。
Sync App はデフォルトでシステムプロキシを使うので注意してください。他のプロキシを使う場合には、ProxyAutoDetect をfalse に設定してください。
プロキシベースのファイアウォールのTCP ポート。
ファイアウォールトラバーサルを許容するために設定するプロキシベースのファイアウォールのTCP ポート。名前もしくはIP アドレスを指定するには、FirewallServer を使います。FirewallType でプロトコルを指定します。
プロキシベースのファイアウォールに認証するために使うユーザー名。
FirewallUser およびFirewallPassword プロパティは、FirewallType により指定された認証方式に則り、FirewallServer、およびFirewallPort で指定されたプロキシに対しての認証に使われます。
プロキシベースのファイアウォールへの認証に使われるパスワード。
このプロパティは、FirewallType により指定された認証メソッドに則り、FirewallServer およびFirewallPort で指定されたプロキシに渡されます。
このセクションでは、本プロバイダーの接続文字列で設定可能なProxy プロパティの全リストを提供します。
プロパティ | 説明 |
ProxyAutoDetect | これは、システムプロキシ設定を使用するかどうかを示します。 |
ProxyServer | HTTP トラフィックをルートするためのプロキシのホストネームもしくはIP アドレス。 |
ProxyPort | ProxyServer プロキシが起動しているTCP ポート。 |
ProxyAuthScheme | ProxyServer プロキシへの認証で使われる認証タイプ。 |
ProxyUser | ProxyServer プロキシへの認証に使われるユーザー名。 |
ProxyPassword | ProxyServer プロキシへの認証に使われるパスワード。 |
ProxySSLType | ProxyServer プロキシへの接続時に使用するSSL タイプ。 |
ProxyExceptions | ProxyServer 経由での接続が免除される宛先ホスト名またはIP のセミコロン区切りのリスト。 |
これは、システムプロキシ設定を使用するかどうかを示します。
これは他のプロキシ設定よりも優先されるため、カスタムプロキシ設定を使用するにはProxyAutoDetect をFALSE に設定する必要があります。
HTTP プロキシへの接続には、ProxyServer を参照してください。SOCKS やトンネリングなどの他のプロキシには、FirewallType を参照してください。
HTTP トラフィックをルートするためのプロキシのホストネームもしくはIP アドレス。
HTTP トラフィックをルートするためのプロキシのホストネームもしくはIP アドレス。HTTP プロキシへの認証には、Sync App はHTTP、Windows(NTLM)、もしくはKerberos 認証タイプを使用することができます。
SOCKS プロキシを経由して接続する、もしくは接続をトンネルするには、FirewallType を参照してください。
デフォルトで、Sync App はsystem プロキシを使います。他のプロキシを使う場合には、ProxyAutoDetect をfalse に設定します。
ProxyServer プロキシが起動しているTCP ポート。
HTTP トラフィックをリダイレクトするHTTP プロキシが実行されているポート。ProxyServer でHTTP プロキシを指定します。その他のプロキシタイプについては、FirewallType を参照してください。
ProxyServer プロキシへの認証で使われる認証タイプ。
この値は、ProxyServer およびProxyPort で指定されるHTTP プロキシに認証するために使われる認証タイプを指定します。
Sync App は、デフォルトでsystem proxy settings を使い、追加での設定が不要です。他のプロキシへの接続をする場合には、ProxyServer およびProxyPort に加え、ProxyAutoDetect をfalse に設定します。認証するには、ProxyAuthScheme を設定し、必要な場合にはProxyUser およびProxyPassword を設定します。
認証タイプは、次のどれかになります。
SOCKS 5 認証のような他の認証タイプを使用するには、FirewallType を参照してください。
ProxyServer プロキシへの認証に使われるユーザー名。
ProxyUser および ProxyPassword オプションは、ProxyServer で指定されたHTTP プロキシに対して接続および認証するために使用されます。
ProxyAuthScheme で使用可能な認証タイプを選択することができます。HTTP 認証を使う場合、これをHTTP プロキシで識別可能なユーザーのユーザー名に設定します。Windows もしくはKerberos 認証を使用する場合、このプロパティを次の形式のどれかでユーザー名に設定します。
user@domain domain\user
ProxyServer プロキシへの認証に使われるパスワード。
このプロパティは、NTLM(Windows)、Kerberos、もしくはHTTP 認証をサポートするHTTP プロキシサーバーに認証するために使われます。HTTP プロキシを指定するためには、ProxyServer およびProxyPort を設定します。認証タイプを指定するためにはProxyAuthScheme を設定します。
HTTP 認証を使う場合、さらにHTTP プロキシにProxyUser およびProxyPassword を設定します。
NTLM 認証を使う場合、Windows パスワードにProxyUser およびProxyPassword を設定します。Kerberos 認証には、これらを入力する必要があります。
SOCKS 5 認証もしくは、トンネリングは、FirewallType を参照してください。
デフォルトで、Sync App はsystem プロキシを使います。他のプロキシに接続する場合には、これをfalse に設定します。
ProxyServer プロキシへの接続時に使用するSSL タイプ。
このプロパティは、ProxyServer で指定されたHTTP プロキシへの接続にSSL を使用するかどうかを決定します。この値は、AUTO、ALWAYS、NEVER、TUNNEL のいずれかです。有効な値は次のとおりです。
AUTO | デフォルト設定。URL がHTTPS URL の場合、Sync App は、TUNNEL オプションを使います。URL がHTTP URL の場合、コンポーネントはNEVER オプションを使います。 |
ALWAYS | 接続は、常にSSL 有効となります。 |
NEVER | 接続は、SSL 有効になりません。 |
TUNNEL | 接続は、トンネリングプロキシを経由します。プロキシサーバーがリモートホストへの接続を開き、プロキシを経由して通信が行われます。 |
ProxyServer 経由での接続が免除される宛先ホスト名またはIP のセミコロン区切りのリスト。
ProxyServer は、このプロパティで定義されたアドレスを除くすべてのアドレスに使用されます。セミコロンを使用してエントリを区切ります。
Sync App は、追加設定なしにデフォルトでシステムのプロキシ設定を使います。この接続のプロキシ例外を明示的に構成するには、ProxyAutoDetect をfalse に設定して、ProxyServer およびProxyPort を設定する必要があります。認証するには、ProxyAuthScheme を設定し、必要な場合にはProxyUser およびProxyPassword を設定します。
ログファイルに含めるコアモジュール。
指定された(';' で区切られた)モジュールのみがログファイルに含まれます。デフォルトではすべてのモジュールが含まれます。
概要はログ ページを参照してください。
このセクションでは、本プロバイダーの接続文字列で設定可能なSchema プロパティの全リストを提供します。
プロパティ | 説明 |
Location | テーブル、ビュー、およびストアドプロシージャを定義するスキーマファイルを格納するディレクトリへのパス。 |
BrowsableSchemas | このプロパティは、使用可能なスキーマのサブセットにレポートされるスキーマを制限します。例えば、BrowsableSchemas=SchemaA,SchemaB,SchemaC です。 |
Tables | このプロパティは、使用可能なテーブルのサブセットにレポートされるテーブルを制限します。例えば、Tables=TableA,TableB,TableC です。 |
Views | 使用可能なテーブルのサブセットにレポートされるビューを制限します。例えば、Views=ViewA,ViewB,ViewC です。 |
ExpandArgumentsDepth | This property is used to determine how far the provider should search for columns inside the arguments of type INPUT_OBJECT. |
ExpandTablesDepth | This property is used to determine the depth of the child tables. |
ExpandTemporaryTablesDepth | This property is used to determine the depth of the child temporary tables. Only works if ExposeDynamicProcedures is set to true. |
ExpandColumnsDepth | This property is used to determine how far the provider should search for columns inside the GraphQL objects. |
IncludeDeprecatedMetadata | This property is used to determine whether the provider should expose deprecated tables and columns or not. |
ExposeDynamicProcedures | This property is used to determine whether the provider should expose mutations as dynamic procedures or not. |
テーブル、ビュー、およびストアドプロシージャを定義するスキーマファイルを格納するディレクトリへのパス。
Sync App のスキーマファイル(テーブルとビューの場合は.rsd ファイル、ストアドプロシージャの場合は.rsb ファイル)を含むディレクトリへのパス。このフォルダの場所は、実行ファイルの場所からの相対パスにすることができます。Location プロパティは、定義をカスタマイズしたり(例えば、カラム名を変更する、カラムを無視するなど)、新しいテーブル、ビュー、またはストアドプロシージャでデータモデルを拡張する場合にのみ必要です。
指定しない場合、デフォルトの場所は"%APPDATA%\\CData\\GraphQL Data Provider\\Schema" となり、%APPDATA% はユーザーのコンフィギュレーションディレクトリに設定されます:
Platform | %APPDATA% |
Windows | APPDATA 環境変数の値 |
Linux | ~/.config |
このプロパティは、使用可能なスキーマのサブセットにレポートされるスキーマを制限します。例えば、BrowsableSchemas=SchemaA,SchemaB,SchemaC です。
スキーマをデータベースからリストすると、負荷がかかる可能性があります。接続文字列でスキーマのリストを提供すると、 パフォーマンスが向上します。
このプロパティは、使用可能なテーブルのサブセットにレポートされるテーブルを制限します。例えば、Tables=TableA,TableB,TableC です。
テーブルを複数のデータベースからリストすると、負荷がかかる可能性があります。接続文字列でテーブルのリストを提供すると、Sync App のパフォーマンスが向上します。
このプロパティは、作業したいビューがすでにわかっていて、ビューが多すぎる場合に、ビューを自動的にリストする代わりに使用することもできます。
カンマ区切りのリストで使用したいテーブルを指定します。各テーブルは、角かっこ、二重引用符、またはバッククオートを使用してエスケープされた特殊文字列を含む有効なSQL 識別子である必要があります。 例えば、Tables=TableA,[TableB/WithSlash],WithCatalog.WithSchema.`TableC With Space` です。
複数のスキーマまたはカタログを持つデータソースに接続する場合は、複数のカタログやスキーマに存在するテーブル間の曖昧さを避けるため、最後の例のように、このプロパティにテーブルの完全修飾名を指定する必要があることに注意してください。
使用可能なテーブルのサブセットにレポートされるビューを制限します。例えば、Views=ViewA,ViewB,ViewC です。
ビューを複数のデータベースからリストすると、負荷がかかる可能性があります。接続文字列でビューのリストを提供すると、Sync App のパフォーマンスが向上します。
このプロパティは、作業したいビューがすでにわかっていて、ビューが多すぎる場合に、ビューを自動的にリストする代わりに使用することもできます。
カンマ区切りのリストで使用したいビューを指定します。各ビューは、角かっこ、二重引用符、またはバッククオートを使用してエスケープされた特殊文字列を含む有効なSQL 識別子である必要があります。 例えば、Views=ViewA,[ViewB/WithSlash],WithCatalog.WithSchema.`ViewC With Space` です。
複数のスキーマまたはカタログを持つデータソースに接続する場合は、複数のカタログやスキーマに存在するテーブル間の曖昧さを避けるため、最後の例のように、このプロパティにテーブルの完全修飾名を指定する必要があることに注意してください。
This property is used to determine how far the provider should search for columns inside the arguments of type INPUT_OBJECT.
This property is used to determine how far the Sync App should search for columns inside the arguments of type INPUT_OBJECT. For example:
{ "variables": { "input": { "filters": { "type": "SUPPLIER" } } }, "query": "query($input:FilteredCompaniesInput!) {\r\nfilteredCompanies(input:$input) {\r\nid:id\r\nvalue:value\r\n}\r\n}\r\n" }for the SQL query:
SELECT id,value FROM filteredCompanies WHERE type='SUPPLIER'In this case the nested "FilteredCompaniesInput" is itself of type INPUT_OBJECT. In a column search, the ExpandColumnsDepth property controls how many nested levels of type INPUT_OBJECT are subjected to searching.
This property is used to determine the depth of the child tables.
This property is used to determine the depth of the child tables.
This property is used to determine the depth of the child temporary tables. Only works if ExposeDynamicProcedures is set to true.
This property is used to determine the depth of the child temporary tables. Only works if ExposeDynamicProcedures is set to true.
This property is used to determine how far the provider should search for columns inside the GraphQL objects.
This property is used to determine how far the Sync App should search for columns inside the GraphQL objects.
This property is used to determine whether the provider should expose deprecated tables and columns or not.
This property is used to determine whether the Sync App should expose deprecated tables and columns or not.
This property is used to determine whether the provider should expose mutations as dynamic procedures or not.
This property is used to determine whether the Sync App should expose mutations as dynamic procedures or not.
このセクションでは、本プロバイダーの接続文字列で設定可能なMiscellaneous プロパティの全リストを提供します。
プロパティ | 説明 |
CustomHeaders | ユーザーが決定したその他のヘッダー(オプション)。 |
GenerateSchemaFiles | スキーマを生成して保存するユーザーの好みのタイミングを示します。 |
MaxRows | クエリで集計またはGROUP BY を使用しない場合に返される行数を制限します。これはLIMIT 句よりも優先されます。 |
Other | これらの隠しプロパティは特定のユースケースでのみ使用されます。 |
Pagesize | The maximum number of results to return per page from GraphQL. |
PseudoColumns | このプロパティは、テーブルのカラムとして疑似カラムが含まれているかどうかを示します。 |
Timeout | タイムアウトエラーがスローされ、処理をキャンセルするまでの秒数。 |
UserDefinedViews | カスタムビューを含むJSON コンフィギュレーションファイルを指すファイルパス。 |
ユーザーが決定したその他のヘッダー(オプション)。
このプロパティは、他のプロパティ(ContentType、From など)から作成されたHTTP リクエストヘッダーに追加するヘッダーの文字列に設定できます。
ヘッダーは、HTTP の仕様で説明されているとおり、"header: value" 形式でなければなりません。ヘッダー行はキャリッジリターンと改行(CRLF)文字で区切る必要があります。
このプロパティは慎重に使用してください。このプロパティに無効なヘッダーが含まれていると、HTTP リクエストは失敗する場合があります。
このプロパティは、専門的/非標準的なAPI と統合するためにSync App の機能を微調整する場合に便利です。
スキーマを生成して保存するユーザーの好みのタイミングを示します。
このプロパティは、Location で指定されたパスの.rsd ファイルにスキーマをアウトプットします。
有効な設定は次のとおりです。
GenerateSchemaFiles をOnUse に設定すると、Sync App はSELECT クエリを実行したときにスキーマを生成します。スキーマはクエリのそれぞれの参照されたテーブルに対して生成されます。
GenerateSchemaFiles をOnCreate に設定すると、CREATE TABLE クエリが実行されたときにのみスキーマが生成されます。
このプロパティのもう一つの使い方は、接続するときにデータベース内のすべてのテーブルのスキーマを取得することです。これには、GenerateSchemaFiles をOnStart に設定して接続します。
クエリで集計またはGROUP BY を使用しない場合に返される行数を制限します。これはLIMIT 句よりも優先されます。
クエリで集計またはGROUP BY を使用しない場合に返される行数を制限します。これはLIMIT 句よりも優先されます。
これらの隠しプロパティは特定のユースケースでのみ使用されます。
以下にリストされているプロパティは、特定のユースケースで使用可能です。通常のドライバーのユースケースおよび機能では、これらのプロパティは必要ありません。
複数のプロパティをセミコロン区切りリストで指定します。
DefaultColumnSize | データソースがメタデータにカラムの長さを提供しない場合に、文字列フィールドのデフォルトの長さを設定します。デフォルト値は2000です。 |
ConvertDateTimeToGMT | 日時の値を、マシンのローカルタイムではなくGMT グリニッジ標準時に変換するかどうかを決定します。 |
RecordToFile=filename | 基底のソケットデータ転送を指定のファイルに記録します。 |
The maximum number of results to return per page from GraphQL.
The Pagesize property affects the maximum number of results to return per page from GraphQL. Setting a higher value may result in better performance at the cost of additional memory eaten up per page consumed. The pageSize is proportional to the GraphQL query cost.
このプロパティは、テーブルのカラムとして疑似カラムが含まれているかどうかを示します。
Entity Framework ではテーブルカラムでない疑似カラムに値を設定できないため、この設定はEntity Framework で特に便利です。この接続設定の値は、"Table1=Column1, Table1=Column2, Table2=Column3" の形式です。"*=*" のように"*" 文字を使用して、すべてのテーブルとすべてのカラムを含めることができます。
タイムアウトエラーがスローされ、処理をキャンセルするまでの秒数。
Timeout が0に設定されている場合は、操作がタイムアウトしません。処理が正常に完了するか、エラー状態になるまで実行されます。
Timeout の有効期限が切れても処理が完了していない場合は、Sync App は例外をスローします。
カスタムビューを含むJSON コンフィギュレーションファイルを指すファイルパス。
ユーザー定義ビューは、UserDefinedViews.json というJSON 形式のコンフィギュレーションファイルで定義されています。Sync App は、このファイルで指定されたビューを自動的に検出します。
また、複数のビュー定義を持ち、UserDefinedViews 接続プロパティを使用して制御することも可能です。このプロパティを使用すると、指定されたビューのみがSync App によって検知されます。
このユーザー定義ビューのコンフィギュレーションファイルは、次のようにフォーマットされています。
次に例を示します。
{ "MyView": { "query": "SELECT * FROM Users WHERE MyColumn = 'value'" }, "MyView2": { "query": "SELECT * FROM MyTable WHERE Id IN (1,2,3)" } }UserDefinedViews 接続プロパティを使用して、JSON コンフィギュレーションファイルの場所を指定します。次に例を示します。
"UserDefinedViews", C:\Users\yourusername\Desktop\tmp\UserDefinedViews.json指定されたパスは引用符で囲まれていないことに注意してください。