/* tslint:disable */
/* eslint-disable */
/**
 * authentik
 * Making authentication simple.
 *
 * The version of the OpenAPI document: 2026.5.3
 * Contact: hello@goauthentik.io
 *
 * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
 * https://openapi-generator.tech
 * Do not edit the class manually.
 */

/**
 * GoogleWorkspaceProviderMapping Serializer
 * @export
 * @interface GoogleWorkspaceProviderMapping
 */
export interface GoogleWorkspaceProviderMapping {
    /**
     *
     * @type {string}
     * @memberof GoogleWorkspaceProviderMapping
     */
    readonly pk: string;
    /**
     * Objects that are managed by authentik. These objects are created and updated automatically. This flag only indicates that an object can be overwritten by migrations. You can still modify the objects via the API, but expect changes to be overwritten in a later update.
     * @type {string}
     * @memberof GoogleWorkspaceProviderMapping
     */
    managed?: string | null;
    /**
     *
     * @type {string}
     * @memberof GoogleWorkspaceProviderMapping
     */
    name: string;
    /**
     *
     * @type {string}
     * @memberof GoogleWorkspaceProviderMapping
     */
    expression: string;
    /**
     * Get object's component so that we know how to edit the object
     * @type {string}
     * @memberof GoogleWorkspaceProviderMapping
     */
    readonly component: string;
    /**
     * Return object's verbose_name
     * @type {string}
     * @memberof GoogleWorkspaceProviderMapping
     */
    readonly verboseName: string;
    /**
     * Return object's plural verbose_name
     * @type {string}
     * @memberof GoogleWorkspaceProviderMapping
     */
    readonly verboseNamePlural: string;
    /**
     * Return internal model name
     * @type {string}
     * @memberof GoogleWorkspaceProviderMapping
     */
    readonly metaModelName: string;
}

/**
 * Check if a given object implements the GoogleWorkspaceProviderMapping interface.
 */
export function instanceOfGoogleWorkspaceProviderMapping(
    value: object,
): value is GoogleWorkspaceProviderMapping {
    if (!("pk" in value) || value["pk"] === undefined) return false;
    if (!("name" in value) || value["name"] === undefined) return false;
    if (!("expression" in value) || value["expression"] === undefined) return false;
    if (!("component" in value) || value["component"] === undefined) return false;
    if (!("verboseName" in value) || value["verboseName"] === undefined) return false;
    if (!("verboseNamePlural" in value) || value["verboseNamePlural"] === undefined) return false;
    if (!("metaModelName" in value) || value["metaModelName"] === undefined) return false;
    return true;
}

export function GoogleWorkspaceProviderMappingFromJSON(json: any): GoogleWorkspaceProviderMapping {
    return GoogleWorkspaceProviderMappingFromJSONTyped(json, false);
}

export function GoogleWorkspaceProviderMappingFromJSONTyped(
    json: any,
    ignoreDiscriminator: boolean,
): GoogleWorkspaceProviderMapping {
    if (json == null) {
        return json;
    }
    return {
        pk: json["pk"],
        managed: json["managed"] == null ? undefined : json["managed"],
        name: json["name"],
        expression: json["expression"],
        component: json["component"],
        verboseName: json["verbose_name"],
        verboseNamePlural: json["verbose_name_plural"],
        metaModelName: json["meta_model_name"],
    };
}

export function GoogleWorkspaceProviderMappingToJSON(json: any): GoogleWorkspaceProviderMapping {
    return GoogleWorkspaceProviderMappingToJSONTyped(json, false);
}

export function GoogleWorkspaceProviderMappingToJSONTyped(
    value?: Omit<
        GoogleWorkspaceProviderMapping,
        "pk" | "component" | "verbose_name" | "verbose_name_plural" | "meta_model_name"
    > | null,
    ignoreDiscriminator: boolean = false,
): any {
    if (value == null) {
        return value;
    }

    return {
        managed: value["managed"],
        name: value["name"],
        expression: value["expression"],
    };
}
