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.
namespace BokaMera.API.ServiceModel.Dtos

open System
open System.Collections
open System.Collections.Generic
open System.Runtime.Serialization
open ServiceStack
open ServiceStack.DataAnnotations

    [<AllowNullLiteral>]
    type UserProfileResponse() = 
        member val Id:Guid = new Guid() with get,set
        member val Firstname:String = null with get,set
        member val Lastname:String = null with get,set
        member val Phone:String = null with get,set
        member val Email:String = null with get,set

    [<AllowNullLiteral>]
    type AdminProfile() = 
        member val CompanyId:Guid = new Guid() with get,set
        member val Id:Guid = new Guid() with get,set
        member val Firstname:String = null with get,set
        member val Lastname:String = null with get,set
        member val Email:String = null with get,set
        member val WorkerId:String = null with get,set
        member val Phone:String = null with get,set

    [<AllowNullLiteral>]
    type UpdateUserResponse() = 
        member val ResponseStatus:Object = null with get,set
        ///<summary>
        ///The user id for your profile.
        ///</summary>
        [<ApiMember(Description="The user id for your profile.", IsRequired=true)>]
        member val UserId:Nullable<Guid> = new Nullable<Guid>() with get,set

        member val UserProfile:UserProfileResponse = null with get,set
        member val AdminProfile:AdminProfile = null with get,set
        member val IsSentConfirmationUpdateEmail:Nullable<Boolean> = new Nullable<Boolean>() with get,set

    [<AllowNullLiteral>]
    type UpdateCustomerProfile() = 
        member val Firstname:String = null with get,set
        member val Lastname:String = null with get,set
        member val Phone:String = null with get,set
        member val Email:String = null with get,set

    [<AllowNullLiteral>]
    type UpdateAdminProfile() = 
        member val Firstname:String = null with get,set
        member val Lastname:String = null with get,set
        member val Phone:String = null with get,set
        member val Email:String = null with get,set

    type KeyCloakRealm =
        | BookMore = 1
        | BookMoreAdmin = 2
        | SuperAdmin = 3

    [<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")>]
    [<AllowNullLiteral>]
    type UpdateUser() = 
        ///<summary>
        ///The user id for your profile.
        ///</summary>
        [<ApiMember(Description="The user id for your profile.")>]
        member val UserId:Nullable<Guid> = new Nullable<Guid>() with get,set

        member val NewEmail:String = null with get,set
        member val UserProfile:UpdateCustomerProfile = null with get,set
        member val AdminProfile:UpdateAdminProfile = null with get,set
        ///<summary>
        ///The user realm for identity server.  BookMore = 1, BookMoreAdmin = 2 
        ///</summary>
        [<ApiMember(Description="The user realm for identity server.  BookMore = 1, BookMoreAdmin = 2 ", IsRequired=true)>]
        member val Realm:KeyCloakRealm = new KeyCloakRealm() with get,set

F# 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: api.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
	},
	AdminProfile: 
	{
		Firstname: String,
		Lastname: String,
		Phone: String,
		Email: String
	},
	Realm: BookMore
}
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
	},
	AdminProfile: 
	{
		Firstname: String,
		Lastname: String,
		Email: String,
		WorkerId: String,
		Phone: String
	},
	IsSentConfirmationUpdateEmail: False
}