Dokumentation för API-funktioner
POST CRM/Contact/{customerId}/Person Returnerar kontakt-id för den skapade eller uppdaterade kontakten.

Dubblettkontroll sker i följande ordning: Personnummer – om angivet och minst 10 siffror matchas det mot befintlig kontakt.Personnummer och epost eller mobilnummer – om personnummer är kortare än 10 siffror krävs dessutom träff på epost eller mobil.Förnamn, efternamn och mobilnummer, epost eller hemtelefon – används om personnummer saknas. Hittas en befintlig kontakt uppdateras den och dess kontakt-id returneras. Hittas ingen dublett skapas en ny kontakt och dess kontakt-id returneras.

Null eller utelämnade fält ignoreras. En tom sträng tömmer motsvarande textfält.
Request Information URI Parameters
NamnBeskrivningTypInformation
customerId Kund-id (kontors-id för Mäklarsystem). string Krävs
Body Parameters Personkontakt. CrmPersonCreateRequest
NamnBeskrivningTypInformation
FirstName Fornamn. string Fornamn maste vara mellan 0 och 30 tecken
LastName Efternamn. string Efternamn maste vara mellan 0 och 30 tecken
SocialSecurityNumber Personnummer. string Personnummer maste vara mellan 0 och 20 tecken
IsForeignSocialSecurityNumber Annat format/utlandskt personnummer. boolean

Telephone Telefonnummer. CrmPersonTelephoneNumbersRequest

GDPRApprovalDate Datum då GDPR-informationen godkändes. Null innebär att befintligt värde inte ändras. date

ObtainThrough Hur GDPR-godkännandet lämnades. Null innebär att befintligt värde inte ändras. ObtainMethod

AgentId Maklarens id. string

Address Adress. CrmContactAddressRequest

Email Email. CrmEmailRequest

AdvertisingEnabled Reklamutskick tillats. boolean

Other Övrig information på kontakten. Mappas mot kontaktens aktuella Adr.Anteckning. string

Categories Kategorier. Collection of CrmCategoryRequest

LeadScore Antal lead score-stjärnor. Giltigt intervall är 0 till 3. integer Lead score måste vara mellan 0 och 3

Request Formats

{
  "firstName": "sample string 1",
  "lastName": "sample string 2",
  "socialSecurityNumber": "sample string 3",
  "isForeignSocialSecurityNumber": true,
  "telephone": {
    "home": "sample string 1",
    "cell": "sample string 2",
    "other": "sample string 3"
  },
  "gdprApprovalDate": "2026-10-14T10:09:58.6123875+02:00",
  "obtainThrough": "Interest",
  "agentId": "sample string 4",
  "address": {
    "streetAddress": "sample string 1",
    "zipCode": "sample string 2",
    "city": "sample string 3",
    "countryCode": "sample string 4",
    "wgs84Coordinate": {
      "longitude": 1.1,
      "latitude": 1.1
    }
  },
  "email": {
    "emailAddress": "sample string 1",
    "emailAddress2": "sample string 2"
  },
  "advertisingEnabled": true,
  "other": "sample string 5",
  "categories": [
    {
      "id": "sample string 1",
      "name": "sample string 2"
    },
    {
      "id": "sample string 1",
      "name": "sample string 2"
    }
  ],
  "leadScore": 1
}
<CrmPersonCreateRequest xmlns:i="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://schemas.datacontract.org/2004/07/Vitec.Housing.Connect.Api.Models.Contact.Crm.Request">
  <Address>
    <City>sample string 3</City>
    <CountryCode>sample string 4</CountryCode>
    <StreetAddress>sample string 1</StreetAddress>
    <Wgs84Coordinate>
      <Latitude>1.1</Latitude>
      <Longitude>1.1</Longitude>
    </Wgs84Coordinate>
    <ZipCode>sample string 2</ZipCode>
  </Address>
  <AdvertisingEnabled>true</AdvertisingEnabled>
  <AgentId>sample string 4</AgentId>
  <Categories>
    <CrmCategoryRequest>
      <Id>sample string 1</Id>
      <Name>sample string 2</Name>
    </CrmCategoryRequest>
    <CrmCategoryRequest>
      <Id>sample string 1</Id>
      <Name>sample string 2</Name>
    </CrmCategoryRequest>
  </Categories>
  <Email>
    <EmailAddress>sample string 1</EmailAddress>
    <EmailAddress2>sample string 2</EmailAddress2>
  </Email>
  <LeadScore>1</LeadScore>
  <Other>sample string 5</Other>
  <FirstName>sample string 1</FirstName>
  <GDPRApprovalDate>2026-10-14T10:09:58.6123875+02:00</GDPRApprovalDate>
  <IsForeignSocialSecurityNumber>true</IsForeignSocialSecurityNumber>
  <LastName>sample string 2</LastName>
  <ObtainThrough>Interest</ObtainThrough>
  <SocialSecurityNumber>sample string 3</SocialSecurityNumber>
  <Telephone>
    <Other>sample string 3</Other>
    <Cell>sample string 2</Cell>
    <Home>sample string 1</Home>
  </Telephone>
</CrmPersonCreateRequest>
Response Information Resource Description Skapa eller upserta en personkontakt. string Kodexempel

curl "https://connect.maklare.vitec.net/CRM/Contact/StringValue/Person" -X POST -H "Content-Type: application/json" -H "Authorization: basic {Base64 kodad användarnamn och lösenord}" -d {\"firstName\":\"StringValue\",\"lastName\":\"StringValue\",\"socialSecurityNumber\":\"StringValue\"}
            

$URL = "https://connect.maklare.vitec.net/CRM/Contact/StringValue/Person"
$data = "{`"firstName`":`"StringValue`",`"lastName`":`"StringValue`",`"socialSecurityNumber`":`"StringValue`"}"
Invoke-WebRequest -Uri $URL -Method POST -Headers @{"Content-Type" = "application/json"; "authorization" = "basic {Base64 kodad användarnamn och lösenord}"} -Body $data
                

// HttpClientInstance ska deklareras som en singleton
// public static readonly HttpClient HttpClientInstance = new HttpClient {
//     BaseAddress = new Uri("https://connect.maklare.vitec.net"),
//     DefaultRequestHeaders = {
//         Authorization = new AuthenticationHeaderValue("Basic", "{Base64 kodad användarnamn och lösenord}")
//     }
// }
var json = "{\"firstName\":\"StringValue\",\"lastName\":\"StringValue\",\"socialSecurityNumber\":\"StringValue\"}";
using (var response = await HttpClientInstance.PostAsync("CRM/Contact/StringValue/Person", new StringContent(json, Encoding.UTF8, "application/json"))) {
    if (response.StatusCode == HttpStatusCode.Unauthorized) {
        // Authorization headern är inte korrekt
    }
    if (response.StatusCode == HttpStatusCode.Forbidden) {
        // Begärt data som det saknas åtkomst till
    }
    if (response.StatusCode == HttpStatusCode.InternalServerError) {
        // Oväntat fel, kontakta Vitec
    }
    if (response.StatusCode == HttpStatusCode.BadRequest) {
        var json = await response.Content.ReadAsStringAsync();
        var result = JsonConvert.DeserializeObject<dynamic>(json);
        // Hantera valideringsfel, presenteras i resultatet
    }
    
    var json = await response.Content.ReadAsStringAsync();
    // JsonConvert finns i biblioteket Newtonsoft.Json
    var result = JsonConvert.DeserializeObject<dynamic>(json);
    
    // TODO: Gör något med resultatet
}

$URL = "https://connect.maklare.vitec.net/CRM/Contact/StringValue/Person";

$ch = curl_init();

curl_setopt($ch, CURLOPT_USERNAME, "{Användarnamn}");
curl_setopt($ch, CURLOPT_PASSWORD, "{Lösenord}");
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_URL, $URL);
$data = "{\"firstName\":\"StringValue\",\"lastName\":\"StringValue\",\"socialSecurityNumber\":\"StringValue\"}";
curl_setopt($ch, CURLOPT_POST, true);

curl_setopt($ch, CURLOPT_POSTFIELDS, $data);
curl_setopt($ch, CURLOPT_HTTPHEADER, array(
    'Content-Type: application/json',
    'Content-Length: ' . strlen($data)
));

$result = curl_exec($ch);

if (curl_errno($ch)) {
    die(curl_getinfo($ch));
}

$info = curl_getinfo($ch);
curl_close($ch);

$http_code = $info["http_code"];
if ($http_code == 401) {
    // Användarnamnet eller lösenordet är felaktigt
}
if ($http_code == 403) {
    // Begärt data som det saknas åtkomst till
}
if ($http_code == 500) {
    // Oväntat fel, kontakta Vitec
}
if ($http_code == 400) {
    $json = json_decode($result, true);
    // Hantera valideringsfel, presenteras i $json
}

// TODO: Gör något med resultatet
Testformulär Text input
Response Formats
"sample string 1"
<string xmlns="http://schemas.microsoft.com/2003/10/Serialization/">sample string 1</string>