/**
 * Apideck
 * The Apideck OpenAPI Spec: SDK Optimized
 *
 * The version of the OpenAPI document: 10.13.0
 * Contact: support@apideck.com
 *
 * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
 * https://openapi-generator.tech
 * Do not edit the class manually.
 */
import { AuthType } from './AuthType';
import { ConnectionConfiguration } from './ConnectionConfiguration';
import { ConnectionState } from './ConnectionState';
import { CustomMapping } from './CustomMapping';
import { FormField } from './FormField';
import { IntegrationState } from './IntegrationState';
import { OAuthGrantType } from './OAuthGrantType';
import { WebhookSubscription } from './WebhookSubscription';
/**
 *
 * @export
 * @interface Connection
 */
export interface Connection {
    /**
     * The unique identifier of the connection.
     * @type {string}
     * @memberof Connection
     */
    readonly id?: string;
    /**
     * The ID of the service this connection belongs to.
     * @type {string}
     * @memberof Connection
     */
    readonly service_id?: string;
    /**
     * The name of the connection
     * @type {string}
     * @memberof Connection
     */
    readonly name?: string;
    /**
     *
     * @type {string}
     * @memberof Connection
     */
    readonly tag_line?: string;
    /**
     * The unified API category where the connection belongs to.
     * @type {string}
     * @memberof Connection
     */
    readonly unified_api?: string;
    /**
     *
     * @type {ConnectionState}
     * @memberof Connection
     */
    state?: ConnectionState;
    /**
     *
     * @type {IntegrationState}
     * @memberof Connection
     */
    integration_state?: IntegrationState;
    /**
     *
     * @type {AuthType}
     * @memberof Connection
     */
    auth_type?: AuthType;
    /**
     *
     * @type {OAuthGrantType}
     * @memberof Connection
     */
    oauth_grant_type?: OAuthGrantType;
    /**
     * Status of the connection.
     * @type {string}
     * @memberof Connection
     */
    readonly status?: ConnectionStatus;
    /**
     * Whether the connection is enabled or not. You can enable or disable a connection using the Update Connection API.
     * @type {boolean}
     * @memberof Connection
     */
    enabled?: boolean;
    /**
     * The website URL of the connection
     * @type {string}
     * @memberof Connection
     */
    readonly website?: string;
    /**
     * A visual icon of the connection, that will be shown in the Vault
     * @type {string}
     * @memberof Connection
     */
    readonly icon?: string;
    /**
     * The logo of the connection, that will be shown in the Vault
     * @type {string}
     * @memberof Connection
     */
    readonly logo?: string;
    /**
     * The OAuth redirect URI. Redirect your users to this URI to let them authorize your app in the connector's UI. Before you can use this URI, you must add `redirect_uri` as a query parameter to the `authorize_url`. Be sure to URL encode the `redirect_uri` part. Your users will be redirected to this `redirect_uri` after they granted access to your app in the connector's UI.
     * @type {string}
     * @memberof Connection
     */
    readonly authorize_url?: string | null;
    /**
     * The OAuth revoke URI. Redirect your users to this URI to revoke this connection. Before you can use this URI, you must add `redirect_uri` as a query parameter. Your users will be redirected to this `redirect_uri` after they granted access to your app in the connector's UI.
     * @type {string}
     * @memberof Connection
     */
    readonly revoke_url?: string | null;
    /**
     * Connection settings. Values will persist to `form_fields` with corresponding id
     * @type {{ [key: string]: unknown; }}
     * @memberof Connection
     */
    settings?: {
        [key: string]: unknown;
    } | null;
    /**
     * Attach your own consumer specific metadata
     * @type {{ [key: string]: unknown; }}
     * @memberof Connection
     */
    metadata?: {
        [key: string]: unknown;
    } | null;
    /**
     * The settings that are wanted to create a connection.
     * @type {Array<FormField>}
     * @memberof Connection
     */
    readonly form_fields?: Array<FormField>;
    /**
     *
     * @type {Array<ConnectionConfiguration>}
     * @memberof Connection
     */
    _configuration?: Array<ConnectionConfiguration>;
    /**
     *
     * @type {Array<string>}
     * @memberof Connection
     */
    readonly configurable_resources?: Array<string>;
    /**
     *
     * @type {Array<string>}
     * @memberof Connection
     */
    readonly resource_schema_support?: Array<string>;
    /**
     *
     * @type {Array<string>}
     * @memberof Connection
     */
    readonly resource_settings_support?: Array<string>;
    /**
     *
     * @type {boolean}
     * @memberof Connection
     */
    readonly validation_support?: boolean;
    /**
     *
     * @type {boolean}
     * @memberof Connection
     */
    readonly schema_support?: boolean;
    /**
     * List of settings that are required to be configured on integration before authorization can occur
     * @type {Array<string>}
     * @memberof Connection
     */
    readonly settings_required_for_authorization?: Array<string>;
    /**
     *
     * @type {Array<WebhookSubscription>}
     * @memberof Connection
     */
    readonly subscriptions?: Array<WebhookSubscription>;
    /**
     * Whether the connector has a guide available in the developer docs or not (https://docs.apideck.com/connectors/{service_id}/docs/consumer+connection).
     * @type {boolean}
     * @memberof Connection
     */
    readonly has_guide?: boolean;
    /**
     *
     * @type {number}
     * @memberof Connection
     */
    readonly created_at?: number;
    /**
     * List of custom mappings configured for this connection
     * @type {Array<CustomMapping>}
     * @memberof Connection
     */
    custom_mappings?: Array<CustomMapping>;
    /**
     *
     * @type {number}
     * @memberof Connection
     */
    readonly updated_at?: number | null;
}
/**
 * @export
 * @enum {string}
 */
export declare enum ConnectionStatus {
    live = "live",
    upcoming = "upcoming",
    requested = "requested"
}
export declare function ConnectionFromJSON(json: any): Connection;
export declare function ConnectionFromJSONTyped(json: any, ignoreDiscriminator: boolean): Connection;
export declare function ConnectionToJSON(value?: Connection | null): any;
