/* tslint:disable */
/* eslint-disable */
/**
 * authentik
 * Making authentication simple.
 *
 * The version of the OpenAPI document: 2025.10.0-rc1
 * 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.
 */

import { mapValues } from '../runtime';
/**
 * PropertyMapping Serializer
 * @export
 * @interface PropertyMapping
 */
export interface PropertyMapping {
    /**
     * 
     * @type {string}
     * @memberof PropertyMapping
     */
    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 PropertyMapping
     */
    managed?: string | null;
    /**
     * 
     * @type {string}
     * @memberof PropertyMapping
     */
    name: string;
    /**
     * 
     * @type {string}
     * @memberof PropertyMapping
     */
    expression: string;
    /**
     * Get object's component so that we know how to edit the object
     * @type {string}
     * @memberof PropertyMapping
     */
    readonly component: string;
    /**
     * Return object's verbose_name
     * @type {string}
     * @memberof PropertyMapping
     */
    readonly verboseName: string;
    /**
     * Return object's plural verbose_name
     * @type {string}
     * @memberof PropertyMapping
     */
    readonly verboseNamePlural: string;
    /**
     * Return internal model name
     * @type {string}
     * @memberof PropertyMapping
     */
    readonly metaModelName: string;
}

/**
 * Check if a given object implements the PropertyMapping interface.
 */
export function instanceOfPropertyMapping(value: object): value is PropertyMapping {
    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 PropertyMappingFromJSON(json: any): PropertyMapping {
    return PropertyMappingFromJSONTyped(json, false);
}

export function PropertyMappingFromJSONTyped(json: any, ignoreDiscriminator: boolean): PropertyMapping {
    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 PropertyMappingToJSON(json: any): PropertyMapping {
    return PropertyMappingToJSONTyped(json, false);
}

export function PropertyMappingToJSONTyped(value?: Omit<PropertyMapping, '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'],
    };
}

