@tableau/taco-toolkit
Version:
Tableau Connector Toolkit
301 lines • 20.6 kB
JavaScript
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.schema = void 0;
exports.schema = {
type: 'object',
required: ['name', 'version', 'tableau-version', 'vendor', 'permission', 'window', 'auth'],
additionalProperties: false,
properties: {
name: {
description: 'connector name',
type: 'string',
pattern: '^[\\w\\-_ ]+$',
maxLength: 29,
},
displayName: {
description: 'connector display name',
type: 'string',
minLength: 3,
maxLength: 29,
nullable: true, // ajv requires optional property to be nullable
},
version: {
description: 'connector version',
pattern: '^[\\w\\-_\\.\\+]+$',
type: 'string',
maxLength: 30,
},
'tableau-version': {
type: 'object',
properties: {
min: {
description: 'minimum supported Tableau version',
type: 'string',
maxLength: 256,
},
},
required: ['min'],
},
vendor: {
type: 'object',
properties: {
name: {
description: 'creator name/title',
type: 'string',
maxLength: 256,
},
'support-link': {
description: 'support link for connector',
type: 'string',
maxLength: 256,
},
email: {
description: 'contact email for connector',
type: 'string',
maxLength: 256,
},
},
required: ['name', 'support-link', 'email'],
},
auth: {
type: 'object',
discriminator: { propertyName: 'type' },
required: ['type'],
oneOf: [
{
properties: {
type: { const: 'none' },
},
},
{
properties: {
type: { const: 'custom' },
},
},
{
// Refer to: https://tableau.github.io/connector-plugin-sdk/docs/oauth
required: ['oauth'],
properties: {
type: { const: 'oauth2' },
oauth: {
type: 'object',
properties: {
oauthConfigId: {
description: 'id for the oauth config',
type: 'string',
maxLength: 256,
},
configLabel: {
description: 'the label we display for this oauth config in the UI',
type: 'string',
maxLength: 256,
},
clientIdDesktop: {
description: 'the client ID registered for Tableau Desktop',
type: 'string',
maxLength: 256,
},
clientSecretDesktop: {
description: 'the client secret registered for Tableau Desktop',
type: 'string',
maxLength: 256,
},
redirectUrisDesktop: {
description: 'redirect URIs for Desktop',
type: 'array',
items: {
type: 'string',
},
},
authUri: {
description: 'authorization endpoint URI',
type: 'string',
maxLength: 256,
},
tokenUri: {
description: 'token endpoint URI',
type: 'string',
maxLength: 256,
},
userInfoUri: {
description: 'user Info endpoint URI',
type: 'string',
maxLength: 256,
},
instanceUrlSuffix: {
description: 'the suffix for oauth endpoint(instanceurl)',
type: 'string',
maxLength: 256,
},
instanceUrlValidationRegex: {
description: 'regex validation pattern for oauth endpoint(instanceurl)',
type: 'string',
maxLength: 256,
},
defaultInstanceUrl: {
description: 'default oauth endpoint(instanceurl)',
type: 'string',
maxLength: 256,
},
scopes: {
description: 'scopes',
type: 'array',
items: {
type: 'string',
},
},
capabilities: {
description: 'defines how OAuth flow behaves',
type: 'object',
properties: {
OAUTH_CAP_SUPPORTS_CUSTOM_DOMAIN: {
type: 'boolean',
},
OAUTH_CAP_REQUIRE_PKCE: {
type: 'boolean',
},
OAUTH_CAP_PKCE_REQUIRES_CODE_CHALLENGE_METHOD: {
type: 'boolean',
},
OAUTH_CAP_SUPPORTS_STATE: {
type: 'boolean',
},
OAUTH_CAP_REQUIRES_VERIFY_STATE: {
type: 'boolean',
},
OAUTH_CAP_GET_USERNAME_USES_POST_REQUEST: {
type: 'boolean',
},
OAUTH_CAP_CLIENT_SECRET_IN_URL_QUERY_PARAM: {
type: 'boolean',
},
OAUTH_CAP_FIXED_PORT_IN_CALLBACK_URL: {
type: 'boolean',
},
OAUTH_CAP_SUPPORTS_HTTP_SCHEME_LOOPBACK_REDIRECT_URLS: {
type: 'boolean',
},
OAUTH_CAP_REQUIRES_PROMPT_CONSENT: {
type: 'boolean',
},
OAUTH_CAP_REQUIRES_PROMPT_SELECT_ACCOUNT: {
type: 'boolean',
},
OAUTH_CAP_SUPPORTS_GET_USERINFO_FROM_ID_TOKEN: {
type: 'boolean',
},
},
},
accessTokenResponseMaps: {
description: 'key value pair that maps an initial token request response attribute to Tableau recognized attribute',
type: 'object',
required: ['ACCESSTOKEN', 'REFRESHTOKEN', 'username'],
additionalProperties: true,
properties: {
ACCESSTOKEN: {
type: 'string',
maxLength: 256,
},
REFRESHTOKEN: {
type: 'string',
maxLength: 256,
},
'access-token-issue-time': {
type: 'string',
maxLength: 256,
},
'access-token-expires-in': {
type: 'string',
maxLength: 256,
},
username: {
type: 'string',
maxLength: 256,
},
},
},
refreshTokenResponseMaps: {
description: 'key value pair that maps a refresh token request response attribute to Tableau recognized attribute',
type: 'object',
required: ['ACCESSTOKEN'],
additionalProperties: true,
properties: {
ACCESSTOKEN: {
type: 'string',
maxLength: 256,
},
},
},
},
required: ['authUri', 'tokenUri', 'scopes', 'accessTokenResponseMaps'],
},
},
},
],
},
permission: {
type: 'object',
required: ['api'],
properties: {
api: {
type: 'object',
required: [],
minProperties: 1,
patternProperties: {
'.*': {
type: 'array',
uniqueItems: true,
items: {
type: 'string',
enum: ['GET', 'POST', 'OPTIONS', 'PATCH', 'PUT', 'DELETE', 'HEAD'],
},
},
},
},
disk: {
type: 'object',
nullable: true,
required: ['path', 'size'],
properties: {
path: {
type: 'array',
items: {
type: 'string',
},
},
size: {
type: 'string',
maxLength: 256,
},
},
},
libs: {
type: 'array',
nullable: true,
items: {
type: 'string',
},
},
},
},
window: {
type: 'object',
properties: {
height: {
type: 'number',
},
width: {
type: 'number',
},
},
required: ['height', 'width'],
},
config: {
description: 'additional configurations from the users',
type: 'object',
additionalProperties: true,
nullable: true, // ajv requires optional property to be nullable
},
},
};
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29ubmVjdG9yLWpzb24tc2NoZW1hLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2NsaS90YWNvLWNvbW1hbmRzL3V0aWxzL2Nvbm5lY3Rvci1qc29uLXNjaGVtYS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFHYSxRQUFBLE1BQU0sR0FBa0M7SUFDbkQsSUFBSSxFQUFFLFFBQVE7SUFDZCxRQUFRLEVBQUUsQ0FBQyxNQUFNLEVBQUUsU0FBUyxFQUFFLGlCQUFpQixFQUFFLFFBQVEsRUFBRSxZQUFZLEVBQUUsUUFBUSxFQUFFLE1BQU0sQ0FBQztJQUMxRixvQkFBb0IsRUFBRSxLQUFLO0lBQzNCLFVBQVUsRUFBRTtRQUNWLElBQUksRUFBRTtZQUNKLFdBQVcsRUFBRSxnQkFBZ0I7WUFDN0IsSUFBSSxFQUFFLFFBQVE7WUFDZCxPQUFPLEVBQUUsZUFBZTtZQUN4QixTQUFTLEVBQUUsRUFBRTtTQUNkO1FBQ0QsV0FBVyxFQUFFO1lBQ1gsV0FBVyxFQUFFLHdCQUF3QjtZQUNyQyxJQUFJLEVBQUUsUUFBUTtZQUNkLFNBQVMsRUFBRSxDQUFDO1lBQ1osU0FBUyxFQUFFLEVBQUU7WUFDYixRQUFRLEVBQUUsSUFBSSxFQUFFLGdEQUFnRDtTQUNqRTtRQUNELE9BQU8sRUFBRTtZQUNQLFdBQVcsRUFBRSxtQkFBbUI7WUFDaEMsT0FBTyxFQUFFLG9CQUFvQjtZQUM3QixJQUFJLEVBQUUsUUFBUTtZQUNkLFNBQVMsRUFBRSxFQUFFO1NBQ2Q7UUFDRCxpQkFBaUIsRUFBRTtZQUNqQixJQUFJLEVBQUUsUUFBUTtZQUNkLFVBQVUsRUFBRTtnQkFDVixHQUFHLEVBQUU7b0JBQ0gsV0FBVyxFQUFFLG1DQUFtQztvQkFDaEQsSUFBSSxFQUFFLFFBQVE7b0JBQ2QsU0FBUyxFQUFFLEdBQUc7aUJBQ2Y7YUFDRjtZQUNELFFBQVEsRUFBRSxDQUFDLEtBQUssQ0FBQztTQUNsQjtRQUNELE1BQU0sRUFBRTtZQUNOLElBQUksRUFBRSxR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