/* tslint:disable */
/* eslint-disable */
/**
 * Sonatype Nexus Repository Manager
 * This documents the available APIs into [Sonatype Nexus Repository Manager](https://www.sonatype.com/products/sonatype-nexus-repository) as of version 3.93.2-01.
 *
 * The version of the OpenAPI document: 3.93.2-01
 * 
 *
 * 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';
/**
 * 
 * @export
 * @interface ApiCreateUser
 */
export interface ApiCreateUser {
    /**
     * The email address associated with the user.
     * @type {string}
     * @memberof ApiCreateUser
     */
    emailAddress?: string;
    /**
     * The first name of the user.
     * @type {string}
     * @memberof ApiCreateUser
     */
    firstName?: string;
    /**
     * The last name of the user.
     * @type {string}
     * @memberof ApiCreateUser
     */
    lastName?: string;
    /**
     * The password for the new user.
     * @type {string}
     * @memberof ApiCreateUser
     */
    password?: string;
    /**
     * The roles which the user has been assigned within Nexus.
     * @type {Set<string>}
     * @memberof ApiCreateUser
     */
    roles?: Set<string>;
    /**
     * The user's status, e.g. active or disabled.
     * @type {string}
     * @memberof ApiCreateUser
     */
    status: ApiCreateUserStatusEnum;
    /**
     * The userid which is required for login. This value cannot be changed.
     * @type {string}
     * @memberof ApiCreateUser
     */
    userId?: string;
}


/**
 * @export
 */
export const ApiCreateUserStatusEnum = {
    Active: 'active',
    Locked: 'locked',
    Disabled: 'disabled',
    Changepassword: 'changepassword'
} as const;
export type ApiCreateUserStatusEnum = typeof ApiCreateUserStatusEnum[keyof typeof ApiCreateUserStatusEnum];


/**
 * Check if a given object implements the ApiCreateUser interface.
 */
export function instanceOfApiCreateUser(value: object): value is ApiCreateUser {
    if (!('status' in value) || value['status'] === undefined) return false;
    return true;
}

export function ApiCreateUserFromJSON(json: any): ApiCreateUser {
    return ApiCreateUserFromJSONTyped(json, false);
}

export function ApiCreateUserFromJSONTyped(json: any, ignoreDiscriminator: boolean): ApiCreateUser {
    if (json == null) {
        return json;
    }
    return {
        
        'emailAddress': json['emailAddress'] == null ? undefined : json['emailAddress'],
        'firstName': json['firstName'] == null ? undefined : json['firstName'],
        'lastName': json['lastName'] == null ? undefined : json['lastName'],
        'password': json['password'] == null ? undefined : json['password'],
        'roles': json['roles'] == null ? undefined : new Set(json['roles']),
        'status': json['status'],
        'userId': json['userId'] == null ? undefined : json['userId'],
    };
}

export function ApiCreateUserToJSON(json: any): ApiCreateUser {
    return ApiCreateUserToJSONTyped(json, false);
}

export function ApiCreateUserToJSONTyped(value?: ApiCreateUser | null, ignoreDiscriminator: boolean = false): any {
    if (value == null) {
        return value;
    }

    return {
        
        'emailAddress': value['emailAddress'],
        'firstName': value['firstName'],
        'lastName': value['lastName'],
        'password': value['password'],
        'roles': value['roles'] == null ? undefined : Array.from(value['roles'] as Set<any>),
        'status': value['status'],
        'userId': value['userId'],
    };
}

