BokaMera.API.Host

<back to all web services

UpdateCustomer

Requires Authentication
The following routes are available for this service:
PUT/customers/{Id}Update an existing customerUpdates an existing user if the current logged in user is allowed to update the specified customer. Users are only allowed to update their own info, administrators are allowed to update customer beloning to their company (if no account is created, email is added, if so the customer can only update it's own info).
Imports System
Imports System.Collections
Imports System.Collections.Generic
Imports System.Runtime.Serialization
Imports ServiceStack
Imports ServiceStack.DataAnnotations
Imports BokaMera.API.ServiceModel.Dtos
Imports BokaMera.API.ServiceModel.Db

Namespace Global

    Namespace BokaMera.API.ServiceModel.Db

        Public Partial Class BaseModel
        End Class

        Public Partial Class UserAccessKeys
            Inherits BaseModel
            <Required>
            Public Overridable Property CompanyId As Guid

            <Required>
            Public Overridable Property AccessKeyTypeId As Integer

            <Required>
            Public Overridable Property Value As String

            <Required>
            Public Overridable Property CustomerId As Guid

            Public Overridable Property Description As String
            <Required>
            Public Overridable Property Id As Guid
        End Class
    End Namespace

    Namespace BokaMera.API.ServiceModel.Dtos

        Public Partial Class AddCustomField
            Public Overridable Property Id As Integer
            Public Overridable Property Value As String
        End Class

        Public Partial Class AddUserAccessKey
            Public Overridable Property Id As Nullable(Of Guid)
            Public Overridable Property CompanyId As Nullable(Of Guid)
            Public Overridable Property AccessKeyTypeId As Integer
            Public Overridable Property Value As String
            Public Overridable Property CustomerId As Nullable(Of Guid)
            Public Overridable Property Description As String
        End Class

        Public Partial Class CustomerCommentsResponse
            Public Overridable Property Id As Integer
            Public Overridable Property CustomerId As Guid
            Public Overridable Property Comments As String
            Public Overridable Property Updated As Date
            Public Overridable Property Created As Date
            Public Overridable Property ImageUrl As Uri
        End Class

        Public Partial Class CustomerQueryResponse
            Public Sub New()
                CustomFields = New List(Of CustomFieldConfigData)
                CustomFieldValues = New List(Of CustomFieldDataResponse)
                Comments = New List(Of CustomerCommentsResponse)
                AccessKeys = New List(Of UserAccessKeys)
            End Sub

            Public Overridable Property Id As Guid
            Public Overridable Property Firstname As String
            Public Overridable Property Lastname As String
            Public Overridable Property Email As String
            Public Overridable Property Phone As String
            Public Overridable Property ImageUrl As String
            Public Overridable Property CustomFields As List(Of CustomFieldConfigData)
            Public Overridable Property CustomFieldValues As List(Of CustomFieldDataResponse)
            Public Overridable Property Comments As List(Of CustomerCommentsResponse)
            Public Overridable Property AccessKeys As List(Of UserAccessKeys)
            Public Overridable Property Updated As Date
            Public Overridable Property Created As Date
            Public Overridable Property ResponseStatus As Object
            Public Overridable Property SubscribedToNewsletter As Boolean
            Public Overridable Property InvoiceAddress As InvoiceAddress
        End Class

        Public Partial Class CustomFieldConfigData
            Public Sub New()
                Values = New List(Of CustomFieldValueResponse)
            End Sub

            '''<Summary>
            '''Custom field id
            '''</Summary>
            <ApiMember(Description:="Custom field id")>
            Public Overridable Property Id As Integer

            '''<Summary>
            '''Configuration name. Example: 'Number of persons'.
            '''</Summary>
            <ApiMember(Description:="Configuration name. Example: 'Number of persons'.")>
            Public Overridable Property Name As String

            '''<Summary>
            '''Custom field description. Example: 'For how many persons is this booking?'
            '''</Summary>
            <ApiMember(Description:="Custom field description. Example: 'For how many persons is this booking?'")>
            Public Overridable Property Description As String

            '''<Summary>
            '''Field width. Example: 20 for 20px
            '''</Summary>
            <ApiMember(Description:="Field width. Example: 20 for 20px")>
            Public Overridable Property Width As Nullable(Of Integer)

            '''<Summary>
            '''Data field of custom field. Valid values are: TextBox, ... Example: 'TextBox'
            '''</Summary>
            <ApiMember(Description:="Data field of custom field. Valid values are: TextBox, ... Example: 'TextBox'")>
            Public Overridable Property DataType As String

            '''<Summary>
            '''Default value of the field. Example: '3'
            '''</Summary>
            <ApiMember(Description:="Default value of the field. Example: '3'")>
            Public Overridable Property DefaultValue As String

            '''<Summary>
            '''Determines if the field is required to have a value or not
            '''</Summary>
            <ApiMember(Description:="Determines if the field is required to have a value or not")>
            Public Overridable Property IsMandatory As Boolean

            '''<Summary>
            '''Error message shown to the user if the field data is required but not entered
            '''</Summary>
            <ApiMember(Description:="Error message shown to the user if the field data is required but not entered")>
            Public Overridable Property MandatoryErrorMessage As String

            '''<Summary>
            '''Max lenght of the field
            '''</Summary>
            <ApiMember(Description:="Max lenght of the field")>
            Public Overridable Property MaxLength As Integer

            '''<Summary>
            '''If the field should have multiple lines
            '''</Summary>
            <ApiMember(Description:="If the field should have multiple lines")>
            Public Overridable Property MultipleLineText As Boolean

            '''<Summary>
            '''Regular expression used for validation of the field
            '''</Summary>
            <ApiMember(Description:="Regular expression used for validation of the field")>
            Public Overridable Property RegEx As String

            '''<Summary>
            '''Error message shown if the regular expression validation failed
            '''</Summary>
            <ApiMember(Description:="Error message shown if the regular expression validation failed")>
            Public Overridable Property RegExErrorMessage As String

            '''<Summary>
            '''The values to select from if Datatype is DropDown for this custom field
            '''</Summary>
            <ApiMember(Description:="The values to select from if Datatype is DropDown for this custom field")>
            Public Overridable Property Values As List(Of CustomFieldValueResponse)
        End Class

        Public Partial Class CustomFieldDataResponse
            Public Overridable Property Id As Integer
            Public Overridable Property Column As String
            Public Overridable Property Name As String
            Public Overridable Property Description As String
            Public Overridable Property Value As String
            '''<Summary>
            '''Data field of custom field. Valid values are: TextBox, ... Example: 'TextBox'
            '''</Summary>
            <ApiMember(Description:="Data field of custom field. Valid values are: TextBox, ... Example: 'TextBox'")>
            Public Overridable Property DataType As String
        End Class

        Public Partial Class CustomFieldValueResponse
            Public Overridable Property Value As String
        End Class

        Public Partial Class DeleteUserAccessKey
            Public Overridable Property Id As Guid
        End Class

        <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")>
        Public Partial Class UpdateCustomer
            Public Sub New()
                CustomFields = New List(Of AddCustomField)
                AccessKeys = New List(Of AddUserAccessKey)
                AccessKeysToDelete = New List(Of DeleteUserAccessKey)
            End Sub

            '''<Summary>
            '''Enter the company and id for the customer, if blank company id and you are an admin, your company id will be used.
            '''</Summary>
            <ApiMember(Description:="Enter the company and id for the customer, if blank company id and you are an admin, your company id will be used.", ParameterType:="query")>
            Public Overridable Property CompanyId As Nullable(Of Guid)

            '''<Summary>
            '''customer id
            '''</Summary>
            <ApiMember(Description:="customer id", IsRequired:=true, ParameterType:="path")>
            Public Overridable Property Id As Guid

            Public Overridable Property Firstname As String
            Public Overridable Property Lastname As String
            Public Overridable Property Phone As String
            Public Overridable Property Email As String
            '''<Summary>
            '''If Custom Fields are added to the customer, here you will send the id and the value for each custom field to be updated
            '''</Summary>
            <ApiMember(Description:="If Custom Fields are added to the customer, here you will send the id and the value for each custom field to be updated")>
            Public Overridable Property CustomFields As List(Of AddCustomField)

            '''<Summary>
            '''List of Access Keys
            '''</Summary>
            <ApiMember(Description:="List of Access Keys")>
            Public Overridable Property AccessKeys As List(Of AddUserAccessKey)

            Public Overridable Property AccessKeysToDelete As List(Of DeleteUserAccessKey)
            Public Overridable Property SubscribedToNewsletter As Nullable(Of Boolean)
            Public Overridable Property InvoiceAddress As InvoiceAddress
        End Class
    End Namespace
End Namespace

VB.NET UpdateCustomer 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 /customers/{Id} HTTP/1.1 
Host: api.bokamera.se 
Accept: text/jsv
Content-Type: text/jsv
Content-Length: length

{
	CompanyId: 00000000-0000-0000-0000-000000000000,
	Firstname: String,
	Lastname: String,
	Phone: String,
	Email: String,
	CustomFields: 
	[
		{
			Id: 0,
			Value: String
		}
	],
	AccessKeys: 
	[
		{
			Id: 00000000-0000-0000-0000-000000000000,
			CompanyId: 00000000-0000-0000-0000-000000000000,
			AccessKeyTypeId: 0,
			Value: String,
			CustomerId: 00000000-0000-0000-0000-000000000000,
			Description: String
		}
	],
	AccessKeysToDelete: 
	[
		{
			
		}
	],
	SubscribedToNewsletter: False,
	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

{
	Firstname: String,
	Lastname: String,
	Email: String,
	Phone: String,
	ImageUrl: String,
	CustomFields: 
	[
		{
			"Id": 0,
			"Name": "String",
			"Description": "String",
			"Width": 0,
			"DataType": "String",
			"DefaultValue": "String",
			"IsMandatory": false,
			"MandatoryErrorMessage": "String",
			"MaxLength": 0,
			"MultipleLineText": false,
			"RegEx": "String",
			"RegExErrorMessage": "String",
			"Values": 
			[
				{
					"Value": "String"
				}
			]
		}
	],
	CustomFieldValues: 
	[
		{
			Id: 0,
			Column: String,
			Name: String,
			Description: String,
			Value: String,
			DataType: String
		}
	],
	Comments: 
	[
		{
			Id: 0,
			Comments: String
		}
	],
	AccessKeys: 
	[
		{
			AccessKeyTypeId: 0,
			Value: String,
			Description: String
		}
	],
	ResponseStatus: {},
	SubscribedToNewsletter: False,
	InvoiceAddress: 
	{
		CorporateIdentityNumber: String,
		InvoiceAddress1: String,
		InvoiceAddress2: String,
		InvoiceCity: String,
		InvoicePostalCode: String,
		InvoiceCountryCode: String
	}
}