BokaMera.API.Host

<back to all web services

UpdateUser

Requires Authentication
The following routes are available for this service:
PUT/usersUpdate my informationUpdates the logged in users info both in customer profile and application admin profile if any exists. Users are only allowed to update their own info.
// @ts-nocheck

export class InvoiceAddressResponse
{
    public InvoiceAddressId: string;
    public UserId?: string;
    public CorporateIdentityNumber: string;
    public InvoiceAddress1: string;
    public InvoiceAddress2: string;
    public InvoiceCity: string;
    public InvoicePostalCode: string;
    public InvoiceCountryCode: string;

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

export class UserProfileResponse
{
    public Id: string;
    public Firstname: string;
    public Lastname: string;
    public Phone: string;
    public Email: string;
    public InvoiceAddress: InvoiceAddressResponse;

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

export class AdminProfile
{
    public CompanyId: string;
    public Id: string;
    public Firstname: string;
    public Lastname: string;
    public Email: string;
    public WorkerId: string;
    public Phone: string;

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

export class UpdateUserResponse
{
    public ResponseStatus: Object;
    /** @description The user id for your profile. */
    // @ApiMember(Description="The user id for your profile.", IsRequired=true)
    public UserId: string;

    public UserProfile: UserProfileResponse;
    public AdminProfile: AdminProfile;
    public IsSentConfirmationUpdateEmail?: boolean;
    public InvoiceAddress: InvoiceAddressResponse;

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

export class UpdateCustomerProfile
{
    public Firstname: string;
    public Lastname: string;
    public Phone: string;
    public Email: string;
    public InvoiceAddress: InvoiceAddressResponse;

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

export class UpdateAdminProfile
{
    public Firstname: string;
    public Lastname: string;
    public Phone: string;
    public Email: string;

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

export enum KeyCloakRealm
{
    BookMore = 1,
    BookMoreAdmin = 2,
    SuperAdmin = 3,
}

export class InvoiceAddressToHandle implements IInvoiceAddress
{
    public CorporateIdentityNumber: string;
    public InvoiceAddress1: string;
    public InvoiceAddress2: string;
    public InvoiceCity: string;
    public InvoicePostalCode: string;
    public InvoiceCountryCode: string;

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

// @ApiResponse(Description="Returned if there is a validation error on the input parameters", StatusCode=400)
// @ApiResponse(Description="Returned if the current user is not allowed to perform the action", StatusCode=401)
// @ValidateRequest(Validator="IsAuthenticated")
export class UpdateUser
{
    /** @description The user id for your profile. */
    // @ApiMember(Description="The user id for your profile.")
    public UserId?: string;

    public NewEmail: string;
    public UserProfile: UpdateCustomerProfile;
    public AdminProfile: UpdateAdminProfile;
    /** @description The user realm for identity server.  BookMore = 1, BookMoreAdmin = 2  */
    // @ApiMember(Description="The user realm for identity server.  BookMore = 1, BookMoreAdmin = 2 ", IsRequired=true)
    public Realm: KeyCloakRealm;

    public InvoiceAddress: InvoiceAddressToHandle;

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

TypeScript UpdateUser DTOs

To override the Content-type in your clients, use the HTTP Accept Header, append the .jsv suffix or ?format=jsv

HTTP + JSV

The following are sample HTTP requests and responses. The placeholders shown need to be replaced with actual values.

PUT /users HTTP/1.1 
Host: testapi.bokamera.se 
Accept: text/jsv
Content-Type: text/jsv
Content-Length: length

{
	UserId: 00000000-0000-0000-0000-000000000000,
	NewEmail: String,
	UserProfile: 
	{
		Firstname: String,
		Lastname: String,
		Phone: String,
		Email: String,
		InvoiceAddress: 
		{
			UserId: 00000000-0000-0000-0000-000000000000,
			CorporateIdentityNumber: String,
			InvoiceAddress1: String,
			InvoiceAddress2: String,
			InvoiceCity: String,
			InvoicePostalCode: String,
			InvoiceCountryCode: String
		}
	},
	AdminProfile: 
	{
		Firstname: String,
		Lastname: String,
		Phone: String,
		Email: String
	},
	Realm: BookMore,
	InvoiceAddress: 
	{
		CorporateIdentityNumber: String,
		InvoiceAddress1: String,
		InvoiceAddress2: String,
		InvoiceCity: String,
		InvoicePostalCode: String,
		InvoiceCountryCode: String
	}
}
HTTP/1.1 200 OK
Content-Type: text/jsv
Content-Length: length

{
	ResponseStatus: {},
	UserId: 00000000-0000-0000-0000-000000000000,
	UserProfile: 
	{
		Firstname: String,
		Lastname: String,
		Phone: String,
		Email: String,
		InvoiceAddress: 
		{
			UserId: 00000000-0000-0000-0000-000000000000,
			CorporateIdentityNumber: String,
			InvoiceAddress1: String,
			InvoiceAddress2: String,
			InvoiceCity: String,
			InvoicePostalCode: String,
			InvoiceCountryCode: String
		}
	},
	AdminProfile: 
	{
		Firstname: String,
		Lastname: String,
		Email: String,
		WorkerId: String,
		Phone: String
	},
	IsSentConfirmationUpdateEmail: False,
	InvoiceAddress: 
	{
		UserId: 00000000-0000-0000-0000-000000000000,
		CorporateIdentityNumber: String,
		InvoiceAddress1: String,
		InvoiceAddress2: String,
		InvoiceCity: String,
		InvoicePostalCode: String,
		InvoiceCountryCode: String
	}
}