/**
 * zrok
 * zrok client access
 *
 * The version of the OpenAPI document: 1.0.0
 * 
 *
 * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
 * https://openapi-generator.tech
 * Do not edit the class manually.
 */

import { RequestFile } from './models';
import { AuthUser } from './authUser';

export class ShareRequest {
    'envZId'?: string;
    'shareMode'?: ShareRequest.ShareModeEnum;
    'frontendSelection'?: Array<string>;
    'backendMode'?: ShareRequest.BackendModeEnum;
    'backendProxyEndpoint'?: string;
    'authScheme'?: string;
    'authUsers'?: Array<AuthUser>;
    'oauthProvider'?: ShareRequest.OauthProviderEnum;
    'oauthEmailDomains'?: Array<string>;
    'oauthAuthorizationCheckInterval'?: string;
    'reserved'?: boolean;
    'permissionMode'?: ShareRequest.PermissionModeEnum;
    'accessGrants'?: Array<string>;
    'uniqueName'?: string;

    static discriminator: string | undefined = undefined;

    static attributeTypeMap: Array<{name: string, baseName: string, type: string}> = [
        {
            "name": "envZId",
            "baseName": "envZId",
            "type": "string"
        },
        {
            "name": "shareMode",
            "baseName": "shareMode",
            "type": "ShareRequest.ShareModeEnum"
        },
        {
            "name": "frontendSelection",
            "baseName": "frontendSelection",
            "type": "Array<string>"
        },
        {
            "name": "backendMode",
            "baseName": "backendMode",
            "type": "ShareRequest.BackendModeEnum"
        },
        {
            "name": "backendProxyEndpoint",
            "baseName": "backendProxyEndpoint",
            "type": "string"
        },
        {
            "name": "authScheme",
            "baseName": "authScheme",
            "type": "string"
        },
        {
            "name": "authUsers",
            "baseName": "authUsers",
            "type": "Array<AuthUser>"
        },
        {
            "name": "oauthProvider",
            "baseName": "oauthProvider",
            "type": "ShareRequest.OauthProviderEnum"
        },
        {
            "name": "oauthEmailDomains",
            "baseName": "oauthEmailDomains",
            "type": "Array<string>"
        },
        {
            "name": "oauthAuthorizationCheckInterval",
            "baseName": "oauthAuthorizationCheckInterval",
            "type": "string"
        },
        {
            "name": "reserved",
            "baseName": "reserved",
            "type": "boolean"
        },
        {
            "name": "permissionMode",
            "baseName": "permissionMode",
            "type": "ShareRequest.PermissionModeEnum"
        },
        {
            "name": "accessGrants",
            "baseName": "accessGrants",
            "type": "Array<string>"
        },
        {
            "name": "uniqueName",
            "baseName": "uniqueName",
            "type": "string"
        }    ];

    static getAttributeTypeMap() {
        return ShareRequest.attributeTypeMap;
    }
}

export namespace ShareRequest {
    export enum ShareModeEnum {
        Public = <any> 'public',
        Private = <any> 'private'
    }
    export enum BackendModeEnum {
        Proxy = <any> 'proxy',
        Web = <any> 'web',
        TcpTunnel = <any> 'tcpTunnel',
        UdpTunnel = <any> 'udpTunnel',
        Caddy = <any> 'caddy',
        Drive = <any> 'drive',
        Socks = <any> 'socks',
        Vpn = <any> 'vpn'
    }
    export enum OauthProviderEnum {
        Github = <any> 'github',
        Google = <any> 'google'
    }
    export enum PermissionModeEnum {
        Open = <any> 'open',
        Closed = <any> 'closed'
    }
}
