/* Options:
Date: 2025-04-10 17:18:28
Version: 6.10
Tip: To override a DTO option, remove "//" prefix before updating
BaseUrl: https://staging-api.billiecart.com.au

//GlobalNamespace: 
//MakePropertiesOptional: False
//AddServiceStackTypes: True
//AddResponseStatus: False
//AddImplicitVersion: 
//AddDescriptionAsComments: True
IncludeTypes: AssignRolesRequest.*
//ExcludeTypes: 
//DefaultImports: 
*/


export interface IReturn<T>
{
    createResponse(): T;
}

export class PostOperationUnTenanted<TResponse> implements IPost
{

    public constructor(init?: Partial<PostOperationUnTenanted<TResponse>>) { (Object as any).assign(this, init); }
}

// @DataContract
export class ResponseError
{
    // @DataMember(Order=1)
    public errorCode?: string;

    // @DataMember(Order=2)
    public fieldName?: string;

    // @DataMember(Order=3)
    public message?: string;

    // @DataMember(Order=4)
    public meta?: { [index: string]: string; };

    public constructor(init?: Partial<ResponseError>) { (Object as any).assign(this, init); }
}

// @DataContract
export class ResponseStatus
{
    // @DataMember(Order=1)
    public errorCode?: string;

    // @DataMember(Order=2)
    public message?: string;

    // @DataMember(Order=3)
    public stackTrace?: string;

    // @DataMember(Order=4)
    public errors?: ResponseError[];

    // @DataMember(Order=5)
    public meta?: { [index: string]: string; };

    public constructor(init?: Partial<ResponseStatus>) { (Object as any).assign(this, init); }
}

export class UserAccountName
{
    public firstName?: string;
    public lastName?: string;

    public constructor(init?: Partial<UserAccountName>) { (Object as any).assign(this, init); }
}

export enum AccountStatus
{
    Shadowed = 'Shadowed',
    Registered = 'Registered',
}

export class UserAccount implements IIdentifiableResource
{
    public name?: UserAccountName;
    public displayName?: string;
    public email?: string;
    public roles?: string[];
    public status: AccountStatus;
    public defaultOrganisationId?: string;
    public id?: string;

    public constructor(init?: Partial<UserAccount>) { (Object as any).assign(this, init); }
}

export interface IIdentifiableResource
{
    id?: string;
}

export class AssignRolesResponse
{
    public responseStatus?: ResponseStatus;
    public userAccount?: UserAccount;

    public constructor(init?: Partial<AssignRolesResponse>) { (Object as any).assign(this, init); }
}

// @Route("/users/{Id}/roles/assign", "POST")
export class AssignRolesRequest extends PostOperationUnTenanted<AssignRolesResponse> implements IReturn<AssignRolesResponse>
{
    public id?: string;
    public roles?: string[];

    public constructor(init?: Partial<AssignRolesRequest>) { super(init); (Object as any).assign(this, init); }
    public getTypeName() { return 'AssignRolesRequest'; }
    public getMethod() { return 'POST'; }
    public createResponse() { return new AssignRolesResponse(); }
}