Exasol (Non-Microsoft Publisher) (#1301)
* submission * readme changes * Apply suggestions from PR code review * Apply suggestion from PR code review #2 * link directly to user guide
This commit is contained in:
Родитель
9cbda965cc
Коммит
ba13d05057
|
@ -0,0 +1,63 @@
|
|||
|
||||
# Exasol - The analytics database connector
|
||||
Exasol is an analytics-focused parallelized relational database management system (RDBMS).
|
||||
Our superfast data analytics platform gives you the power, flexibility and scalability to meet the demands of your long-term data strategy.
|
||||
Connect to an Exasol database to create, read, update and delete data.
|
||||
|
||||
## Publisher: Exasol AG
|
||||
## Prerequisites
|
||||
You will need the following to proceed:
|
||||
* A Microsoft Power Apps or Power Automate plan
|
||||
* An Exasol database
|
||||
* Exasol REST API set up, internet facing
|
||||
|
||||
## Supported Operations
|
||||
The connector supports the following actions:
|
||||
|
||||
### `GetTables`
|
||||
Returns a list of the tables visible to the database user.
|
||||
|
||||
### `GetRows`
|
||||
Returns the rows from a table (based on filter conditions).
|
||||
|
||||
### `InsertRow`
|
||||
Insert a row into a table.
|
||||
|
||||
### `UpdateRows`
|
||||
Update row(s) within a table.
|
||||
|
||||
### `DeleteRows`
|
||||
Delete row(s) within a table.
|
||||
|
||||
### `ExecuteQuery`
|
||||
Run a custom query to fetch data, for more advanced scenarios.
|
||||
|
||||
### `ExecuteNonQuery`
|
||||
Run a custom command, for more advanced scenarios.
|
||||
## Obtaining Credentials
|
||||
Currently the connector uses an API Key as the default authentication method.
|
||||
The API key(s) can be set in the Exasol REST API which you're also required to set up to use this connector.
|
||||
## Getting Started
|
||||
You should first set up the Exasol REST API (see: https://github.com/exasol/exasol-rest-api).
|
||||
|
||||
The connector itself takes 2 parameters when creating a new connection:
|
||||
|
||||
`Host`: Where your REST API is hosted (this can be an IP address or DNS name).
|
||||
|
||||
`API Key`: This is one of the authentication keys you've configured to gain access to the REST API.
|
||||
|
||||
|
||||
Note: You can still edit these 2 values afterwards.
|
||||
|
||||
Please see the user guide for more detailed instructions and a full tutorial [here](https://github.com/exasol/power-apps-connector/blob/main/doc/user_guide/user_guide.md).
|
||||
|
||||
## Known Issues and Limitations
|
||||
Using a on-premises data gateway is currently not supported.
|
||||
|
||||
## Deployment Instructions
|
||||
Please follow [these instructions](https://docs.microsoft.com/en-us/connectors/custom-connectors/paconn-cli) to deploy this connector as a custom connector within Microsoft Power Automate and Power Apps.
|
||||
|
||||
## Further support and documentation
|
||||
|
||||
|
||||
Questions and issues can be filed [here](https://github.com/exasol/power-apps-connector/issues).
|
|
@ -0,0 +1,490 @@
|
|||
{
|
||||
"swagger": "2.0",
|
||||
"info": {
|
||||
"description": "Exasol is an analytics-focused parallelized relational database management system (RDBMS). Connect to an Exasol database to create,read, update and delete data.",
|
||||
"title": "Exasol",
|
||||
"contact": {
|
||||
"name": "Exasol",
|
||||
"url": "https://github.com/exasol/power-apps-connector/issues",
|
||||
"email": "integrationteam@exasol.com"
|
||||
},
|
||||
"license": {
|
||||
"name": "MIT License",
|
||||
"url": "https://github.com/exasol/power-apps-connector/blob/main/LICENSE"
|
||||
},
|
||||
"version": "0.1.0"
|
||||
},
|
||||
"host": "exasol.com",
|
||||
"basePath": "/api/v1",
|
||||
"x-ms-connector-metadata": [
|
||||
{
|
||||
"propertyName": "Website",
|
||||
"propertyValue": "https://www.exasol.com/"
|
||||
},
|
||||
{
|
||||
"propertyName": "Privacy policy",
|
||||
"propertyValue": "https://www.exasol.com/privacy-policy"
|
||||
},
|
||||
{
|
||||
"propertyName": "Categories",
|
||||
"propertyValue": "Data;Business Intelligence"
|
||||
}
|
||||
],
|
||||
"schemes": [
|
||||
"https"
|
||||
],
|
||||
"consumes": [],
|
||||
"produces": [],
|
||||
"paths": {
|
||||
"/query/{query}": {
|
||||
"get": {
|
||||
"description": "Provide a query and get a result set",
|
||||
"produces": [
|
||||
"application/json"
|
||||
],
|
||||
"summary": "Query the Exasol database",
|
||||
"parameters": [
|
||||
{
|
||||
"type": "string",
|
||||
"description": "SELECT query",
|
||||
"name": "query",
|
||||
"in": "path",
|
||||
"required": true,
|
||||
"x-ms-summary": "SELECT query"
|
||||
}
|
||||
],
|
||||
"responses": {
|
||||
"200": {
|
||||
"description": "OK",
|
||||
"schema": {
|
||||
"type": "object"
|
||||
}
|
||||
},
|
||||
"400": {
|
||||
"description": "Bad Request",
|
||||
"schema": {
|
||||
"$ref": "#/definitions/exasol_rest_api.APIBaseResponse"
|
||||
}
|
||||
},
|
||||
"403": {
|
||||
"description": "Forbidden",
|
||||
"schema": {
|
||||
"$ref": "#/definitions/exasol_rest_api.APIBaseResponse"
|
||||
}
|
||||
}
|
||||
},
|
||||
"operationId": "ExecuteQuery"
|
||||
}
|
||||
},
|
||||
"/row": {
|
||||
"post": {
|
||||
"description": "Insert a single row into an Exasol table",
|
||||
"consumes": [
|
||||
"application/json"
|
||||
],
|
||||
"produces": [
|
||||
"application/json"
|
||||
],
|
||||
"summary": "Insert row to a table",
|
||||
"parameters": [
|
||||
{
|
||||
"description": "Request body",
|
||||
"name": "request-body",
|
||||
"in": "body",
|
||||
"required": true,
|
||||
"schema": {
|
||||
"$ref": "#/definitions/exasol_rest_api.InsertRowRequest"
|
||||
}
|
||||
}
|
||||
],
|
||||
"responses": {
|
||||
"200": {
|
||||
"description": "OK",
|
||||
"schema": {
|
||||
"$ref": "#/definitions/exasol_rest_api.APIBaseResponse"
|
||||
}
|
||||
},
|
||||
"400": {
|
||||
"description": "Bad Request",
|
||||
"schema": {
|
||||
"$ref": "#/definitions/exasol_rest_api.APIBaseResponse"
|
||||
}
|
||||
},
|
||||
"403": {
|
||||
"description": "Forbidden",
|
||||
"schema": {
|
||||
"$ref": "#/definitions/exasol_rest_api.APIBaseResponse"
|
||||
}
|
||||
}
|
||||
},
|
||||
"operationId": "InsertRow"
|
||||
}
|
||||
},
|
||||
"/rows": {
|
||||
"get": {
|
||||
"description": "Get zero or more rows from a table providing a WHERE condition",
|
||||
"produces": [
|
||||
"application/json"
|
||||
],
|
||||
"summary": "Get rows from a table based on a condition",
|
||||
"parameters": [
|
||||
{
|
||||
"type": "string",
|
||||
"description": "Exasol schema name",
|
||||
"name": "schemaName",
|
||||
"in": "query",
|
||||
"required": true,
|
||||
"x-ms-summary": "Exasol schema name"
|
||||
},
|
||||
{
|
||||
"type": "string",
|
||||
"description": "Exasol table name",
|
||||
"name": "tableName",
|
||||
"in": "query",
|
||||
"required": true,
|
||||
"x-ms-summary": "Exasol table name"
|
||||
},
|
||||
{
|
||||
"type": "string",
|
||||
"description": "Exasol column name for WHERE clause",
|
||||
"name": "columnName",
|
||||
"in": "query",
|
||||
"x-ms-summary": "Exasol column name for WHERE clause"
|
||||
},
|
||||
{
|
||||
"type": "string",
|
||||
"description": "Comparison predicate for WHERE clause",
|
||||
"name": "comparisonPredicate",
|
||||
"in": "query",
|
||||
"x-ms-summary": "Comparison predicate for WHERE clause"
|
||||
},
|
||||
{
|
||||
"type": "string",
|
||||
"description": "Value of the specified Exasol column",
|
||||
"name": "value",
|
||||
"in": "query",
|
||||
"x-ms-summary": "Value of the specified Exasol column"
|
||||
},
|
||||
{
|
||||
"type": "string",
|
||||
"description": "Type of the value: string, bool, int or float",
|
||||
"name": "valueType",
|
||||
"in": "query",
|
||||
"x-ms-summary": "Type of the value: string, bool, int or float"
|
||||
}
|
||||
],
|
||||
"responses": {
|
||||
"200": {
|
||||
"description": "OK",
|
||||
"schema": {
|
||||
"type": "object"
|
||||
}
|
||||
},
|
||||
"400": {
|
||||
"description": "Bad Request",
|
||||
"schema": {
|
||||
"$ref": "#/definitions/exasol_rest_api.APIBaseResponse"
|
||||
}
|
||||
},
|
||||
"403": {
|
||||
"description": "Forbidden",
|
||||
"schema": {
|
||||
"$ref": "#/definitions/exasol_rest_api.APIBaseResponse"
|
||||
}
|
||||
}
|
||||
},
|
||||
"operationId": "GetRows"
|
||||
},
|
||||
"delete": {
|
||||
"description": "Delete zero or more rows from a table providing a WHERE condition",
|
||||
"consumes": [
|
||||
"application/json"
|
||||
],
|
||||
"produces": [
|
||||
"application/json"
|
||||
],
|
||||
"summary": "Delete rows from a table based on a condition",
|
||||
"parameters": [
|
||||
{
|
||||
"description": "Request body",
|
||||
"name": "request-body",
|
||||
"in": "body",
|
||||
"required": true,
|
||||
"schema": {
|
||||
"$ref": "#/definitions/exasol_rest_api.RowsRequest"
|
||||
}
|
||||
}
|
||||
],
|
||||
"responses": {
|
||||
"200": {
|
||||
"description": "OK",
|
||||
"schema": {
|
||||
"$ref": "#/definitions/exasol_rest_api.APIBaseResponse"
|
||||
}
|
||||
},
|
||||
"400": {
|
||||
"description": "Bad Request",
|
||||
"schema": {
|
||||
"$ref": "#/definitions/exasol_rest_api.APIBaseResponse"
|
||||
}
|
||||
},
|
||||
"403": {
|
||||
"description": "Forbidden",
|
||||
"schema": {
|
||||
"$ref": "#/definitions/exasol_rest_api.APIBaseResponse"
|
||||
}
|
||||
}
|
||||
},
|
||||
"operationId": "DeleteRows"
|
||||
},
|
||||
"put": {
|
||||
"description": "Update zero or more row in a table based on a condition",
|
||||
"consumes": [
|
||||
"application/json"
|
||||
],
|
||||
"produces": [
|
||||
"application/json"
|
||||
],
|
||||
"summary": "Update rows in a table based on a condition",
|
||||
"parameters": [
|
||||
{
|
||||
"description": "Request body",
|
||||
"name": "request-body",
|
||||
"in": "body",
|
||||
"required": true,
|
||||
"schema": {
|
||||
"$ref": "#/definitions/exasol_rest_api.UpdateRowsRequest"
|
||||
}
|
||||
}
|
||||
],
|
||||
"responses": {
|
||||
"200": {
|
||||
"description": "OK",
|
||||
"schema": {
|
||||
"$ref": "#/definitions/exasol_rest_api.APIBaseResponse"
|
||||
}
|
||||
},
|
||||
"400": {
|
||||
"description": "Bad Request",
|
||||
"schema": {
|
||||
"$ref": "#/definitions/exasol_rest_api.APIBaseResponse"
|
||||
}
|
||||
},
|
||||
"403": {
|
||||
"description": "Forbidden",
|
||||
"schema": {
|
||||
"$ref": "#/definitions/exasol_rest_api.APIBaseResponse"
|
||||
}
|
||||
}
|
||||
},
|
||||
"operationId": "UpdateRows"
|
||||
}
|
||||
},
|
||||
"/statement": {
|
||||
"post": {
|
||||
"description": "Execute a statement without a result set",
|
||||
"produces": [
|
||||
"application/json"
|
||||
],
|
||||
"summary": "Execute a statement on the Exasol database",
|
||||
"parameters": [
|
||||
{
|
||||
"description": "Request body",
|
||||
"name": "request-body",
|
||||
"in": "body",
|
||||
"required": true,
|
||||
"schema": {
|
||||
"$ref": "#/definitions/exasol_rest_api.ExecuteStatementRequest"
|
||||
}
|
||||
}
|
||||
],
|
||||
"responses": {
|
||||
"200": {
|
||||
"description": "OK",
|
||||
"schema": {
|
||||
"type": "object"
|
||||
}
|
||||
},
|
||||
"400": {
|
||||
"description": "Bad Request",
|
||||
"schema": {
|
||||
"$ref": "#/definitions/exasol_rest_api.APIBaseResponse"
|
||||
}
|
||||
},
|
||||
"403": {
|
||||
"description": "Forbidden",
|
||||
"schema": {
|
||||
"$ref": "#/definitions/exasol_rest_api.APIBaseResponse"
|
||||
}
|
||||
}
|
||||
},
|
||||
"operationId": "ExecuteNonQuery"
|
||||
}
|
||||
},
|
||||
"/tables": {
|
||||
"get": {
|
||||
"description": "Get a list of all available tables",
|
||||
"produces": [
|
||||
"application/json"
|
||||
],
|
||||
"summary": "Get tables that are available for the user",
|
||||
"responses": {
|
||||
"200": {
|
||||
"description": "OK",
|
||||
"schema": {
|
||||
"$ref": "#/definitions/exasol_rest_api.GetTablesResponse"
|
||||
}
|
||||
},
|
||||
"400": {
|
||||
"description": "Bad Request",
|
||||
"schema": {
|
||||
"$ref": "#/definitions/exasol_rest_api.APIBaseResponse"
|
||||
}
|
||||
},
|
||||
"403": {
|
||||
"description": "Forbidden",
|
||||
"schema": {
|
||||
"$ref": "#/definitions/exasol_rest_api.APIBaseResponse"
|
||||
}
|
||||
}
|
||||
},
|
||||
"operationId": "GetTables"
|
||||
}
|
||||
}
|
||||
},
|
||||
"definitions": {
|
||||
"exasol_rest_api.APIBaseResponse": {
|
||||
"type": "object",
|
||||
"properties": {
|
||||
"exception": {
|
||||
"type": "string"
|
||||
},
|
||||
"status": {
|
||||
"type": "string"
|
||||
}
|
||||
}
|
||||
},
|
||||
"exasol_rest_api.Condition": {
|
||||
"type": "object",
|
||||
"properties": {
|
||||
"comparisonPredicate": {
|
||||
"type": "string"
|
||||
},
|
||||
"value": {
|
||||
"$ref": "#/definitions/exasol_rest_api.Value"
|
||||
}
|
||||
}
|
||||
},
|
||||
"exasol_rest_api.ExecuteStatementRequest": {
|
||||
"type": "object",
|
||||
"properties": {
|
||||
"sqlStatement": {
|
||||
"type": "string"
|
||||
}
|
||||
}
|
||||
},
|
||||
"exasol_rest_api.GetTablesResponse": {
|
||||
"type": "object",
|
||||
"properties": {
|
||||
"exception": {
|
||||
"type": "string"
|
||||
},
|
||||
"status": {
|
||||
"type": "string"
|
||||
},
|
||||
"tablesList": {
|
||||
"type": "array",
|
||||
"items": {
|
||||
"$ref": "#/definitions/exasol_rest_api.Table"
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"exasol_rest_api.InsertRowRequest": {
|
||||
"type": "object",
|
||||
"properties": {
|
||||
"row": {
|
||||
"type": "array",
|
||||
"items": {
|
||||
"$ref": "#/definitions/exasol_rest_api.Value"
|
||||
}
|
||||
},
|
||||
"schemaName": {
|
||||
"type": "string"
|
||||
},
|
||||
"tableName": {
|
||||
"type": "string"
|
||||
}
|
||||
}
|
||||
},
|
||||
"exasol_rest_api.RowsRequest": {
|
||||
"type": "object",
|
||||
"properties": {
|
||||
"condition": {
|
||||
"$ref": "#/definitions/exasol_rest_api.Condition"
|
||||
},
|
||||
"schemaName": {
|
||||
"type": "string"
|
||||
},
|
||||
"tableName": {
|
||||
"type": "string"
|
||||
}
|
||||
}
|
||||
},
|
||||
"exasol_rest_api.Table": {
|
||||
"type": "object",
|
||||
"properties": {
|
||||
"schemaName": {
|
||||
"type": "string"
|
||||
},
|
||||
"tableName": {
|
||||
"type": "string"
|
||||
}
|
||||
}
|
||||
},
|
||||
"exasol_rest_api.UpdateRowsRequest": {
|
||||
"type": "object",
|
||||
"properties": {
|
||||
"condition": {
|
||||
"$ref": "#/definitions/exasol_rest_api.Condition"
|
||||
},
|
||||
"row": {
|
||||
"type": "array",
|
||||
"items": {
|
||||
"$ref": "#/definitions/exasol_rest_api.Value"
|
||||
}
|
||||
},
|
||||
"schemaName": {
|
||||
"type": "string"
|
||||
},
|
||||
"tableName": {
|
||||
"type": "string"
|
||||
}
|
||||
}
|
||||
},
|
||||
"exasol_rest_api.Value": {
|
||||
"type": "object",
|
||||
"properties": {
|
||||
"columnName": {
|
||||
"type": "string"
|
||||
},
|
||||
"value": {}
|
||||
}
|
||||
}
|
||||
},
|
||||
"parameters": {},
|
||||
"responses": {},
|
||||
"securityDefinitions": {
|
||||
"API Key": {
|
||||
"type": "apiKey",
|
||||
"in": "header",
|
||||
"name": "Authorization"
|
||||
}
|
||||
},
|
||||
"security": [
|
||||
{
|
||||
"API Key": []
|
||||
}
|
||||
],
|
||||
"tags": []
|
||||
}
|
|
@ -0,0 +1,45 @@
|
|||
{
|
||||
"properties": {
|
||||
"connectionParameters": {
|
||||
"api_key": {
|
||||
"type": "securestring",
|
||||
"uiDefinition": {
|
||||
"displayName": "API Key",
|
||||
"description": "The API Key for this API",
|
||||
"tooltip": "Provide your API Key",
|
||||
"constraints": {
|
||||
"tabIndex": 2,
|
||||
"clearText": false,
|
||||
"required": "true"
|
||||
}
|
||||
}
|
||||
},
|
||||
"api": {
|
||||
"type": "string",
|
||||
"uiDefinition": {
|
||||
"displayName": "Host",
|
||||
"description": "Host (ip address or host name)",
|
||||
"tooltip": "Provide Host name or IP address",
|
||||
"constraints": {
|
||||
"tabIndex": 1,
|
||||
"clearText": false,
|
||||
"required": "true"
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"iconBrandColor": "#2F5AAF",
|
||||
"capabilities": [],
|
||||
"publisher": "Exasol AG",
|
||||
"stackOwner": "Exasol AG",
|
||||
"policyTemplateInstances": [
|
||||
{
|
||||
"templateId": "dynamichosturl",
|
||||
"title": "host url",
|
||||
"parameters": {
|
||||
"x-ms-apimTemplateParameter.urlTemplate": "https://@connectionParameters('api')/api/v1"
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
Загрузка…
Ссылка в новой задаче