BokaMera.API.Host

<back to all web services

CreateCustomer

Requires Authentication
Required role:bookingsupplier-administrator-write
The following routes are available for this service:
POST/customersCreate a new customerCreates a new customer, if an admin user is making the request, the user will be associated with the admin user's company.
import java.math.*;
import java.util.*;
import net.servicestack.client.*;

public class dtos
{

    @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 static class CreateCustomer
    {
        /**
        * Enter the company and id for the customer, if blank company id and you are an admin, your company id will be used.
        */
        @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 UUID CompanyId = null;

        @ApiMember(IsRequired=true)
        public String Firstname = null;

        @ApiMember(IsRequired=true)
        public String Lastname = null;

        @ApiMember(IsRequired=true)
        public String Phone = null;

        @ApiMember()
        public String Email = null;

        /**
        * If Custom Fields are added to the customer, here you will send the id and the value for each custom field to be updated
        */
        @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 ArrayList<AddCustomField> CustomFields = null;

        /**
        * List of Access Keys
        */
        @ApiMember(Description="List of Access Keys")
        public ArrayList<AddUserAccessKey> AccessKeys = null;

        /**
        * Customer invoice adress
        */
        @ApiMember(Description="Customer invoice adress")
        public InvoiceAddress InvoiceAddress = null;
        
        public UUID getCompanyId() { return CompanyId; }
        public CreateCustomer setCompanyId(UUID value) { this.CompanyId = value; return this; }
        public String getFirstname() { return Firstname; }
        public CreateCustomer setFirstname(String value) { this.Firstname = value; return this; }
        public String getLastname() { return Lastname; }
        public CreateCustomer setLastname(String value) { this.Lastname = value; return this; }
        public String getPhone() { return Phone; }
        public CreateCustomer setPhone(String value) { this.Phone = value; return this; }
        public String getEmail() { return Email; }
        public CreateCustomer setEmail(String value) { this.Email = value; return this; }
        public ArrayList<AddCustomField> getCustomFields() { return CustomFields; }
        public CreateCustomer setCustomFields(ArrayList<AddCustomField> value) { this.CustomFields = value; return this; }
        public ArrayList<AddUserAccessKey> getAccessKeys() { return AccessKeys; }
        public CreateCustomer setAccessKeys(ArrayList<AddUserAccessKey> value) { this.AccessKeys = value; return this; }
        public InvoiceAddress getInvoiceAddress() { return InvoiceAddress; }
        public CreateCustomer setInvoiceAddress(InvoiceAddress value) { this.InvoiceAddress = value; return this; }
    }

    public static class AddCustomField
    {
        public Integer Id = null;
        public String Value = null;
        
        public Integer getId() { return Id; }
        public AddCustomField setId(Integer value) { this.Id = value; return this; }
        public String getValue() { return Value; }
        public AddCustomField setValue(String value) { this.Value = value; return this; }
    }

    public static class AddUserAccessKey
    {
        public UUID Id = null;
        public UUID CompanyId = null;
        public Integer AccessKeyTypeId = null;
        public String Value = null;
        public UUID CustomerId = null;
        public String Description = null;
        
        public UUID getId() { return Id; }
        public AddUserAccessKey setId(UUID value) { this.Id = value; return this; }
        public UUID getCompanyId() { return CompanyId; }
        public AddUserAccessKey setCompanyId(UUID value) { this.CompanyId = value; return this; }
        public Integer getAccessKeyTypeId() { return AccessKeyTypeId; }
        public AddUserAccessKey setAccessKeyTypeId(Integer value) { this.AccessKeyTypeId = value; return this; }
        public String getValue() { return Value; }
        public AddUserAccessKey setValue(String value) { this.Value = value; return this; }
        public UUID getCustomerId() { return CustomerId; }
        public AddUserAccessKey setCustomerId(UUID value) { this.CustomerId = value; return this; }
        public String getDescription() { return Description; }
        public AddUserAccessKey setDescription(String value) { this.Description = value; return this; }
    }

    public static class InvoiceAddress
    {
        public String CorporateIdentityNumber = null;
        public String InvoiceAddress1 = null;
        public String InvoiceAddress2 = null;
        public String InvoiceCity = null;
        public String InvoicePostalCode = null;
        public String InvoiceCountryCode = null;
        
        public String getCorporateIdentityNumber() { return CorporateIdentityNumber; }
        public InvoiceAddress setCorporateIdentityNumber(String value) { this.CorporateIdentityNumber = value; return this; }
        public String getInvoiceAddress1() { return InvoiceAddress1; }
        public InvoiceAddress setInvoiceAddress1(String value) { this.InvoiceAddress1 = value; return this; }
        public String getInvoiceAddress2() { return InvoiceAddress2; }
        public InvoiceAddress setInvoiceAddress2(String value) { this.InvoiceAddress2 = value; return this; }
        public String getInvoiceCity() { return InvoiceCity; }
        public InvoiceAddress setInvoiceCity(String value) { this.InvoiceCity = value; return this; }
        public String getInvoicePostalCode() { return InvoicePostalCode; }
        public InvoiceAddress setInvoicePostalCode(String value) { this.InvoicePostalCode = value; return this; }
        public String getInvoiceCountryCode() { return InvoiceCountryCode; }
        public InvoiceAddress setInvoiceCountryCode(String value) { this.InvoiceCountryCode = value; return this; }
    }

    public static class UpdateCustomerResponse extends CustomerQueryResponse
    {
        public String FacebookUserName = null;
        public UUID UserId = null;
        public UUID CompanyId = null;
        public Date CreatedDate = null;
        public ArrayList<UserAccessKeys> DeletedAccessKeys = null;
        public ArrayList<UserAccessKeys> CreatedOrUpdatedAccessKeys = null;
        
        public String getFacebookUserName() { return FacebookUserName; }
        public UpdateCustomerResponse setFacebookUserName(String value) { this.FacebookUserName = value; return this; }
        public UUID getUserId() { return UserId; }
        public UpdateCustomerResponse setUserId(UUID value) { this.UserId = value; return this; }
        public UUID getCompanyId() { return CompanyId; }
        public UpdateCustomerResponse setCompanyId(UUID value) { this.CompanyId = value; return this; }
        public Date getCreatedDate() { return CreatedDate; }
        public UpdateCustomerResponse setCreatedDate(Date value) { this.CreatedDate = value; return this; }
        public ArrayList<UserAccessKeys> getDeletedAccessKeys() { return DeletedAccessKeys; }
        public UpdateCustomerResponse setDeletedAccessKeys(ArrayList<UserAccessKeys> value) { this.DeletedAccessKeys = value; return this; }
        public ArrayList<UserAccessKeys> getCreatedOrUpdatedAccessKeys() { return CreatedOrUpdatedAccessKeys; }
        public UpdateCustomerResponse setCreatedOrUpdatedAccessKeys(ArrayList<UserAccessKeys> value) { this.CreatedOrUpdatedAccessKeys = value; return this; }
    }

    public static class CustomerQueryResponse
    {
        public UUID Id = null;
        public String Firstname = null;
        public String Lastname = null;
        public String Email = null;
        public String Phone = null;
        public String ImageUrl = null;
        public ArrayList<CustomFieldConfigData> CustomFields = null;
        public ArrayList<CustomFieldDataResponse> CustomFieldValues = null;
        public ArrayList<CustomerCommentsResponse> Comments = null;
        public ArrayList<UserAccessKeys> AccessKeys = null;
        public Date Updated = null;
        public Date Created = null;
        public Object ResponseStatus = null;
        public Boolean SubscribedToNewsletter = null;
        public InvoiceAddress InvoiceAddress = null;
        
        public UUID getId() { return Id; }
        public CustomerQueryResponse setId(UUID value) { this.Id = value; return this; }
        public String getFirstname() { return Firstname; }
        public CustomerQueryResponse setFirstname(String value) { this.Firstname = value; return this; }
        public String getLastname() { return Lastname; }
        public CustomerQueryResponse setLastname(String value) { this.Lastname = value; return this; }
        public String getEmail() { return Email; }
        public CustomerQueryResponse setEmail(String value) { this.Email = value; return this; }
        public String getPhone() { return Phone; }
        public CustomerQueryResponse setPhone(String value) { this.Phone = value; return this; }
        public String getImageUrl() { return ImageUrl; }
        public CustomerQueryResponse setImageUrl(String value) { this.ImageUrl = value; return this; }
        public ArrayList<CustomFieldConfigData> getCustomFields() { return CustomFields; }
        public CustomerQueryResponse setCustomFields(ArrayList<CustomFieldConfigData> value) { this.CustomFields = value; return this; }
        public ArrayList<CustomFieldDataResponse> getCustomFieldValues() { return CustomFieldValues; }
        public CustomerQueryResponse setCustomFieldValues(ArrayList<CustomFieldDataResponse> value) { this.CustomFieldValues = value; return this; }
        public ArrayList<CustomerCommentsResponse> getComments() { return Comments; }
        public CustomerQueryResponse setComments(ArrayList<CustomerCommentsResponse> value) { this.Comments = value; return this; }
        public ArrayList<UserAccessKeys> getAccessKeys() { return AccessKeys; }
        public CustomerQueryResponse setAccessKeys(ArrayList<UserAccessKeys> value) { this.AccessKeys = value; return this; }
        public Date getUpdated() { return Updated; }
        public CustomerQueryResponse setUpdated(Date value) { this.Updated = value; return this; }
        public Date getCreated() { return Created; }
        public CustomerQueryResponse setCreated(Date value) { this.Created = value; return this; }
        public Object getResponseStatus() { return ResponseStatus; }
        public CustomerQueryResponse setResponseStatus(Object value) { this.ResponseStatus = value; return this; }
        public Boolean isSubscribedToNewsletter() { return SubscribedToNewsletter; }
        public CustomerQueryResponse setSubscribedToNewsletter(Boolean value) { this.SubscribedToNewsletter = value; return this; }
        public InvoiceAddress getInvoiceAddress() { return InvoiceAddress; }
        public CustomerQueryResponse setInvoiceAddress(InvoiceAddress value) { this.InvoiceAddress = value; return this; }
    }

    public static class CustomFieldConfigData
    {
        /**
        * Custom field id
        */
        @ApiMember(Description="Custom field id")
        public Integer Id = null;

        /**
        * Configuration name. Example: 'Number of persons'.
        */
        @ApiMember(Description="Configuration name. Example: 'Number of persons'.")
        public String Name = null;

        /**
        * Custom field description. Example: 'For how many persons is this booking?'
        */
        @ApiMember(Description="Custom field description. Example: 'For how many persons is this booking?'")
        public String Description = null;

        /**
        * Field width. Example: 20 for 20px
        */
        @ApiMember(Description="Field width. Example: 20 for 20px")
        public Integer Width = null;

        /**
        * Data field of custom field. Valid values are: TextBox, ... Example: 'TextBox'
        */
        @ApiMember(Description="Data field of custom field. Valid values are: TextBox, ... Example: 'TextBox'")
        public String DataType = null;

        /**
        * Default value of the field. Example: '3'
        */
        @ApiMember(Description="Default value of the field. Example: '3'")
        public String DefaultValue = null;

        /**
        * Determines if the field is required to have a value or not
        */
        @ApiMember(Description="Determines if the field is required to have a value or not")
        public Boolean IsMandatory = null;

        /**
        * Error message shown to the user if the field data is required but not entered
        */
        @ApiMember(Description="Error message shown to the user if the field data is required but not entered")
        public String MandatoryErrorMessage = null;

        /**
        * Max lenght of the field
        */
        @ApiMember(Description="Max lenght of the field")
        public Integer MaxLength = null;

        /**
        * If the field should have multiple lines
        */
        @ApiMember(Description="If the field should have multiple lines")
        public Boolean MultipleLineText = null;

        /**
        * Regular expression used for validation of the field
        */
        @ApiMember(Description="Regular expression used for validation of the field")
        public String RegEx = null;

        /**
        * Error message shown if the regular expression validation failed
        */
        @ApiMember(Description="Error message shown if the regular expression validation failed")
        public String RegExErrorMessage = null;

        /**
        * The values to select from if Datatype is DropDown for this custom field
        */
        @ApiMember(Description="The values to select from if Datatype is DropDown for this custom field")
        public ArrayList<CustomFieldValueResponse> Values = null;
        
        public Integer getId() { return Id; }
        public CustomFieldConfigData setId(Integer value) { this.Id = value; return this; }
        public String getName() { return Name; }
        public CustomFieldConfigData setName(String value) { this.Name = value; return this; }
        public String getDescription() { return Description; }
        public CustomFieldConfigData setDescription(String value) { this.Description = value; return this; }
        public Integer getWidth() { return Width; }
        public CustomFieldConfigData setWidth(Integer value) { this.Width = value; return this; }
        public String getDataType() { return DataType; }
        public CustomFieldConfigData setDataType(String value) { this.DataType = value; return this; }
        public String getDefaultValue() { return DefaultValue; }
        public CustomFieldConfigData setDefaultValue(String value) { this.DefaultValue = value; return this; }
        public Boolean getIsMandatory() { return IsMandatory; }
        public CustomFieldConfigData setIsMandatory(Boolean value) { this.IsMandatory = value; return this; }
        public String getMandatoryErrorMessage() { return MandatoryErrorMessage; }
        public CustomFieldConfigData setMandatoryErrorMessage(String value) { this.MandatoryErrorMessage = value; return this; }
        public Integer getMaxLength() { return MaxLength; }
        public CustomFieldConfigData setMaxLength(Integer value) { this.MaxLength = value; return this; }
        public Boolean isMultipleLineText() { return MultipleLineText; }
        public CustomFieldConfigData setMultipleLineText(Boolean value) { this.MultipleLineText = value; return this; }
        public String getRegEx() { return RegEx; }
        public CustomFieldConfigData setRegEx(String value) { this.RegEx = value; return this; }
        public String getRegExErrorMessage() { return RegExErrorMessage; }
        public CustomFieldConfigData setRegExErrorMessage(String value) { this.RegExErrorMessage = value; return this; }
        public ArrayList<CustomFieldValueResponse> getValues() { return Values; }
        public CustomFieldConfigData setValues(ArrayList<CustomFieldValueResponse> value) { this.Values = value; return this; }
    }

    public static class CustomFieldValueResponse
    {
        public String Value = null;
        
        public String getValue() { return Value; }
        public CustomFieldValueResponse setValue(String value) { this.Value = value; return this; }
    }

    public static class CustomFieldDataResponse
    {
        public Integer Id = null;
        public String Column = null;
        public String Name = null;
        public String Description = null;
        public String Value = null;
        /**
        * Data field of custom field. Valid values are: TextBox, ... Example: 'TextBox'
        */
        @ApiMember(Description="Data field of custom field. Valid values are: TextBox, ... Example: 'TextBox'")
        public String DataType = null;
        
        public Integer getId() { return Id; }
        public CustomFieldDataResponse setId(Integer value) { this.Id = value; return this; }
        public String getColumn() { return Column; }
        public CustomFieldDataResponse setColumn(String value) { this.Column = value; return this; }
        public String getName() { return Name; }
        public CustomFieldDataResponse setName(String value) { this.Name = value; return this; }
        public String getDescription() { return Description; }
        public CustomFieldDataResponse setDescription(String value) { this.Description = value; return this; }
        public String getValue() { return Value; }
        public CustomFieldDataResponse setValue(String value) { this.Value = value; return this; }
        public String getDataType() { return DataType; }
        public CustomFieldDataResponse setDataType(String value) { this.DataType = value; return this; }
    }

    public static class CustomerCommentsResponse
    {
        public Integer Id = null;
        public UUID CustomerId = null;
        public String Comments = null;
        public Date Updated = null;
        public Date Created = null;
        public Uri ImageUrl = null;
        
        public Integer getId() { return Id; }
        public CustomerCommentsResponse setId(Integer value) { this.Id = value; return this; }
        public UUID getCustomerId() { return CustomerId; }
        public CustomerCommentsResponse setCustomerId(UUID value) { this.CustomerId = value; return this; }
        public String getComments() { return Comments; }
        public CustomerCommentsResponse setComments(String value) { this.Comments = value; return this; }
        public Date getUpdated() { return Updated; }
        public CustomerCommentsResponse setUpdated(Date value) { this.Updated = value; return this; }
        public Date getCreated() { return Created; }
        public CustomerCommentsResponse setCreated(Date value) { this.Created = value; return this; }
        public Uri getImageUrl() { return ImageUrl; }
        public CustomerCommentsResponse setImageUrl(Uri value) { this.ImageUrl = value; return this; }
    }

    public static class UserAccessKeys extends BaseModel
    {
        @Required()
        public UUID CompanyId = null;

        @Required()
        public Integer AccessKeyTypeId = null;

        @Required()
        public String Value = null;

        @Required()
        public UUID CustomerId = null;

        public String Description = null;
        @Required()
        public UUID Id = null;
        
        public UUID getCompanyId() { return CompanyId; }
        public UserAccessKeys setCompanyId(UUID value) { this.CompanyId = value; return this; }
        public Integer getAccessKeyTypeId() { return AccessKeyTypeId; }
        public UserAccessKeys setAccessKeyTypeId(Integer value) { this.AccessKeyTypeId = value; return this; }
        public String getValue() { return Value; }
        public UserAccessKeys setValue(String value) { this.Value = value; return this; }
        public UUID getCustomerId() { return CustomerId; }
        public UserAccessKeys setCustomerId(UUID value) { this.CustomerId = value; return this; }
        public String getDescription() { return Description; }
        public UserAccessKeys setDescription(String value) { this.Description = value; return this; }
        public UUID getId() { return Id; }
        public UserAccessKeys setId(UUID value) { this.Id = value; return this; }
    }

    public static class BaseModel
    {
        
    }

}

Java CreateCustomer 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.

POST /customers 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
		}
	],
	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

{
	FacebookUserName: String,
	UserId: 00000000-0000-0000-0000-000000000000,
	CompanyId: 00000000-0000-0000-0000-000000000000,
	CreatedDate: "0001-01-01T00:00:00",
	DeletedAccessKeys: 
	[
		{
			AccessKeyTypeId: 0,
			Value: String,
			Description: String
		}
	],
	CreatedOrUpdatedAccessKeys: 
	[
		{
			AccessKeyTypeId: 0,
			Value: String,
			Description: String
		}
	],
	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
	}
}