← Alla tjänsteintegrationer
Beskrivning
En aktiverbar tjänst är en partnertjänst som användaren aktiverar och avaktiverar på ett objekt
under affärens gång, istället för att beställa en gång.
Skillnaden mot standardflödet är att det inte finns någon beställning som levereras och blir klar.
Tjänsten har istället ett läge: aktiv eller avaktiverad. Varje gång användaren ändrar läget anropar Vitec Express er,
och ni svarar på om det gick bra.
Använd detta flöde när er tjänst ska följa objektet över tid, t. ex. en bevakning eller en publicering
som ska kunna stängas av igen.
Så här ser det ut för användaren
Tjänsten visas i tjänstelistan på objektet med en aktiveringsknapp. När användaren aktiverar tjänsten flyttas den
upp bland de aktiva tjänsterna, och när den avaktiveras hamnar den tillbaka bland de tillgängliga tjänsterna.
Aktiverbara tjänster har varken knappen "Beställ" eller "Avbeställ", och de har inget avbeställningsflöde.
Hela interaktionen sker via aktiveringsknappen.
Medan anropet till er pågår är knappen låst. Svarar ni med ett fel så återgår knappen till sitt tidigare läge
och användaren får ert felmeddelande.
Komma igång
Börja med att registrera er i vår Connectportal.
Meddela oss på Vitec med följande information genom att klicka här:
- Partner id eller namn så att vi kan identifiera er i Connectportalen.
- Namn på tjänsten.
- Beskrivning av tjänsten.
- Bas-url till er tjänst.
- Om ni vill ha en gemensam endpoint eller två separata för aktivering respektive avaktivering, se Konfiguration nedan.
- Taggningar, ord som användaren ska kunna söka på för att hitta tjänsten.
- Särskilda önskemål (Är det t. ex. endast vissa kunder som ska kunna använda tjänsten?).
Vi märker upp tjänsten som aktiverbar på vår sida. Det är den märkningen som gör att aktiveringsknappen
visas i Vitec Express istället för det vanliga beställningsflödet.
Fundera gärna också på vilka metoder det är ni skulle behöva nyttja i Connect.
Autentisering
Tokenbaserad autentisering innebär att vi genererar en token och skickar med i alla anrop till er.
Tokenet skickas som en parameter i URL:en tillsammans med ett kund-id (customerId), på samma sätt som i standardflödet.
https://my-service.example/activation?customerId=M123&isActive=true&token=B2aJbxq%2FHPX567%2F8QBjwuGxKtL1wcDF9amnY%2BJLe1BEff7qWesnZvw%3D%3D
För att få ut parametrarna som rör tokenet så anropa Connect via denna metod
Autentisering med basic authentication sker via HTTP headern "Authorization: Basic {value}".
Övriga parametrar skickas direkt i URL:en.
För bättre autentiseringsskydd så rekommenderar vi den tokenbaserade autentiseringen.
Ingen autentisering, vi skickar parametrarna direkt i URL:en.
Konfiguration
På tjänsten anges de sökvägar vi ska anropa. Sökvägarna är relativa mot er bas-url.
Ni väljer mellan två upplägg, och valet styr om vi skickar med parametern isActive.
Ni anger en sökväg som tar emot både aktivering och avaktivering.
Vi skickar då alltid med parametern isActive, som talar om vilket läge användaren har valt:
true när tjänsten aktiveras och false när den avaktiveras.
Med sökvägen /api/service/activation anropar vi:
GET {bas-url}/api/service/activation?customerId=M123&isActive=true
GET {bas-url}/api/service/activation?customerId=M123&isActive=false
Välj detta om ni hanterar båda fallen i samma endpoint.
Ni anger två sökvägar, en för att aktivera tjänsten och en för att avaktivera den.
Parametern isActive skickas inte i det här upplägget,
eftersom sökvägen redan säger vad som ska hända.
Med sökvägarna /api/service/activate och /api/service/deactivate anropar vi:
GET {bas-url}/api/service/activate?customerId=M123
GET {bas-url}/api/service/deactivate?customerId=M123
Välj detta om ni har skilda endpoints för de två fallen.
Flöde
Översikt av flödet:
sequenceDiagram
title Aktivera och avaktivera tjänst
actor User as Användare
participant Express
participant Partner
opt Aktivera tjänsten
User->>+Express: Aktiverar tjänsten
Express->>+Partner: GET aktivera (isActive=true)
Partner-->>-Express: HTTP 200
Express->>Express: Sätter status OrderReceived
Express-->>-User: Tjänsten visas som aktiv
end
opt Avaktivera tjänsten
User->>+Express: Avaktiverar tjänsten
Express->>+Partner: GET avaktivera (isActive=false)
Partner-->>-Express: HTTP 200
Express->>Express: Sätter status Delivered
Express-->>-User: Tjänsten visas som avslutad
end
opt Fel hos partnern
User->>+Express: Aktiverar eller avaktiverar
Express->>+Partner: GET aktivera eller avaktivera
Partner-->>-Express: Fel, eller isSuccessful false
Express->>Express: Ingen status sparas
Express-->>-User: Felmeddelande, knappen återgår
end
opt Schemalagd händelse
Express->>+Partner: GET aktivera eller avaktivera
Partner-->>-Express: HTTP 200
Express->>Express: Sätter status
end
Anrop vid aktivering och avaktivering
Aktivering och avaktivering sker med ett GET-anrop mot er bas-url sammansatt med den konfigurerade sökvägen.
Till skillnad från standardflödet öppnas ingen sida för användaren, utan anropet sker i bakgrunden medan användaren väntar.
För bostäder så kommer ni att få följande information i anropet:
Via URL parametrar.
- customerId, id på kontoret.
- token, token.
- isActive, true eller false (endast om ni har en gemensam endpoint).
Via Connect
- OrderId, id på beställningen.
- UserId, id på inloggad användare.
- CustomerId, id på kontoret.
- TenantId, id på kundens miljö.
- ChainId, id på kedjan (Endast med om kontoret tillhör en kedja).
- TargetId, id på bostaden.
- TargetType, typen av bostad (Motsvarar de typer som går att hämta via Connect).
- OrderUserId, ägare för beställningen.
Via URL parametrar.
- orderId, id på beställningen.
- userId, id på användaren som äger beställningen.
- currentUserId, id på inloggad användare.
- customerId, id på kontoret.
- chainId, id på kedjan (Endast med om kontoret tillhör en kedja).
- estateId, id på bostaden.
- estateType, typen av bostad (Motsvarar de typer som går att hämta via Connect).
- isActive, true eller false (endast om ni har en gemensam endpoint).
Observera att samma orderId följer med varje gång tjänsten aktiveras eller avaktiveras på ett och samma objekt.
Det är alltså inte en ny beställning varje gång användaren aktiverar tjänsten igen.
Vi väntar på ert svar innan användaren får återkoppling. Standardtiden är 60 sekunder,
men vi kan konfigurera en annan tid för er tjänst om ni behöver längre tid.
Svar
Vi vill att ni svarar med statuskod 200 när ändringen har genomförts hos er. Alla andra statuskoder tolkas som fel.
Ni kan också svara med en body för att styra vad användaren får se. En body med isSuccessful satt till false
behandlas som ett fel även om ni svarar med statuskod 200.
En tom body eller följande räcker för att ändringen ska räknas som genomförd.
{
"isSuccessful": true
}
displayedMessage är den text som visas för användaren i Vitec Express.
errorMessage är den tekniska texten som loggas.
{
"isSuccessful": false,
"errors": [
{
"errorMessage": "Subscription 4711 is not valid for this estate",
"displayedMessage": "Tjänsten kunde inte aktiveras eftersom abonnemanget har gått ut."
}
]
}
Status och felhantering
I det här flödet är det Vitec Express som äger statusen på beställningen.
Efter ett lyckat anrop till er sätter vi själva statusen:
- Tjänsten aktiveras: status sätts till OrderReceived, och tjänsten visas som aktiv.
- Tjänsten avaktiveras: status sätts till Delivered, och tjänsten visas som avslutad.
Blir det fel sparas ingenting. Det innebär att tjänsten behåller det läge den hade innan användaren försökte ändra den,
och att användaren kan försöka igen.
Ni ska därför inte använda metoden för att uppdatera orderstatus
för att styra om tjänsten är på eller av.
Aktiveringsknappen i Vitec Express läser av statusen på beställningen, så egna statusuppdateringar gör att knappen
visar fel läge och att användaren får notifieringar som inte hör hemma i det här flödet.
Av samma skäl ingår inte användarinteraktioner i det här flödet.
Behöver ni meddela användaren något, gör det i svaret på anropet via displayedMessage.
Schemalagda händelser
En aktiverbar tjänst kan även aktiveras eller avaktiveras automatiskt genom Schemalagda händelser i Vitec Express,
t. ex. när ett objekt byter status.
Anropet till er ser exakt likadant ut som när en användare gör ändringen manuellt.
Räkna alltså med att kunna ta emot aktiveringar och avaktiveringar utan att någon användare sitter och väntar just då.