Hantera kontakter
Quick start
Använd exemplet nedan och byt ut “API_NYCKEL” mot en bearer token som du skapar i användarportalen.
curl -X GET "https://api.ip1sms.com/v2/contacts/" \
-H "Authorization: Bearer API_NYCKEL" \
-H "Content-Type: application/json" \
Anrop
Läs en samling av kontakter
Endpoint: contacts
Metod: GET
Denna endpoint ger dig en samling kontakter för vilka du kan se definitionen av kontaktdokumentet nedan.
Exempel på anrop
https://api.ip1sms.com/v2/contacts
Exempel på anrop med filter
Denna samling kan även filtreras efter egenskaper, metadata och/eller etiketter med hjälp av frågeparametrar. Metadata finns bara om meta läggs till som en query-parameter.
https://api.ip1sms.com/v2/contacts?labels=Coworker&properties%5BphoneNumber%5D=%2B46123456789&metadata%5BphoneNumber.isBlocked%5D=false
Läs en enskild kontakt
Denna endpoint ger dig en enda specifik kontakt. Metadata finns bara om “meta” läggs till som en query parameter
Endpoint: contacts/{contactId}
Metod: GET
Exempel på anrop
https://api.ip1sms.com/v2/contacts/606312a5d233ab8484e18404
Fält för anropsdata
| Fältnamn | Typ | Beskrivning | Exempel |
|---|---|---|---|
| contactId | String |
Kontaktens ID. | |
Uppdatera en kontakt
Endpoint: contacts/{contactId}
Metod 1: PATCH
Metod 2: PUT
Med dessa endpoints kan du uppdatera en kontakt och ändra lagrad data. Genom att använda HTTP-verbet PATCH gör du en delvis uppdatering, anger eventuella värden som finns och tar bort alla tydliga null-värden om null-värden existerar. Om du använder PUT ersätts all existerande data med nya data oavsett tidigare värden.
Exempel på anrop
https://api.ip1sms.com/v2/contacts/606312a5d233ab8484e18404
Fält för anrop
| Fältnamn | Obligatoriskt | Typ | Beskrivning | Exempel |
|---|---|---|---|---|
| id | Ja | String |
Kontaktens unika ID. |
|
| properties | Ja | Object |
Innehåller kontaktens faktiska information. Här definieras fält som phoneNumber,
firstName och email. |
|
| labels | Nej | Array |
En lista av strängar som används för att gruppera eller kategorisera kontakten. |
|
Lägg till/importera kontakter
Endpoint: contacts
Metod: POST
Denna endpoint låter dig lägga till/importera nya kontakter. Den tar en samling kontaktdokument. Som standard accepteras kontakterna och importeras sedan i bakgrunden, men det kan göras direkt genom att lägga till sync som en frågeparameter. Direktimport rekommenderas endast för små samlingar av kontakter (färre än 1000).
Exempel på anrop
https://api.ip1sms.com/v2/contacts
Fält för anrop
| Fältnamn | Obligatoriskt | Typ | Beskrivning | Exempel |
|---|---|---|---|---|
| properties | Ja | Object |
Innehåller kontaktens faktiska information. Här definieras fält som phoneNumber,
firstName och email. |
|
| labels | Nej | Array |
En lista av strängar som används för att gruppera eller kategorisera kontakten. |
|
Radera kontakter
Endpoint: DELETE contacts/{contactId}
Denna endpoint låter dig ta bort en kontakt. Det finns också en endpoint för att ta bort mer än en kontakt, se avsnittet för Massoperationer.
Exempel på anrop
https://api.ip1sms.com/v2/contacts/606312a5d233ab8484e18404
Fält för anrop
| Fältnamn | Typ | Beskrivning | Exempel |
|---|---|---|---|
| contactId | String |
Kontaktens ID. | |
Responsdata-typ
{
"id": "606312a5d233ab8484e18404",
"ownerId": "ip1-XXXXX",
"properties": {
"phoneNumber": "+46123456789",
"email": "icarus@example.com",
"firstName": "Icarus",
"lastName": "Sol",
"department": "Sales"
},
"metadata": {
"phoneNumber": {
"isPossiblePhoneNumber": "true",
"isValidPhoneNumber": "true",
"phoneNumberType": "MOBILE",
"parsedMSISDN": "46123456789",
"isBlocked": "false"
}
},
"labels": [
"Coworker",
"all"
]
}
Fält för responsdata
| Fältnamn | Typ | Beskrivning | Exempel |
|---|---|---|---|
| id | String |
Kontaktens unika ID i systemet. Används för referens vid framtida anrop (GET, PATCH, DELETE). |
|
| ownerId | String |
ID för det konto (systemanvändare) som äger och har behörighet till kontakten. |
|
| properties | Object |
En samling av kontaktens rådata såsom telefonnummer, namn och avdelning. Innehåller de fält som definierats vid skapande/uppdatering. |
|
| metadata | Object |
Systemgenererad information som validerar och berikar kontaktens egenskaper. Inkluderas endast om
query-parametern ?meta används. |
|
| labels | Array |
En lista av strängar som representerar de etiketter kontakten är grupperad under. |
|
Fält för metadata
| Egenskap (Metadata) | Typ | Beskrivning |
|---|---|---|
| isPossiblePhoneNumber | String (Boolean) |
Indikerar om numret ser korrekt ut strukturellt. |
| isValidPhoneNumber | String (Boolean) |
Bekräftar om numret är ett faktiskt existerande format för det aktuella landet. |
| phoneNumberType | String |
Beskriver typen av abonnemang, t.ex. MOBILE, FIXED_LINE eller VOIP.
|
| parsedMSISDN | String |
Numret formaterat som MSISDN (utan prefix), vilket är det format systemet använder för utskick. |
| isBlocked | String (Boolean) |
Visar om kontakten finns med på kontots blacklist/spärrlista. |
Kodexempel
Nedan hittar du ett enkelt kodexempel med autentisering och funktionalitet för att lägga till en kontakt.
Lägg till en kontakt i C#
using System;
using System.Collections.Generic;
using System.Net.Http;
using System.Net.Http.Headers;
using System.Net.Http.Json;
using System.Threading.Tasks;
using (var client = new HttpClient())
{
client.BaseAddress = new Uri("https://api.ip1sms.com/v2/");
client.DefaultRequestHeaders.Accept.Clear();
client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));
client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", "DIN_API_NYCKEL");
// Skapa en enskild kontakt
var contact = new Contact()
{
properties = new Dictionary<string, string>() {
{ "phoneNumber", "+46123456789"},
{ "email", "icarus@example.com" },
{ "firstName", "Icarus" },
{ "lastName", "Sol" },
{ "department", "Sales" }
},
labels = new List<string>() { "Coworker", "Sales" }
};
var contactList = new List<Contact> { contact };
HttpResponseMessage response = await client.PostAsJsonAsync("contacts", contactList);
if (response.IsSuccessStatusCode)
{
Console.WriteLine("Success: Contact(s) accepted for import.");
}
else
{
string errorDetails = await response.Content.ReadAsStringAsync();
Console.WriteLine($"Failed, {response.StatusCode}: {errorDetails}");
}
}
public class Contact
{
public Dictionary<string, string> properties { get; set; }
public List<string> labels { get; set; }
}