Aktiveringsspecifikation v0.1

write
Detta är första versionen av specifikationen för att aktivera tjänster via tjänsteguiden. Det är i grunden några stolpar om vilka funktioner som måste finnas i version ett av applikationen. För specifikationen kommer vi använda oss av den här terminologin:
Terminologi
TG Tjänsteguiden Presentationen av Stadsnätets tjänster via Stadsnätsfabrikens webblösning
SK Slutkund Besökaren till TG som är kund i Stadsnätet
PS Proxyserver Den server som API:et kommer att kommunicera med i Stadsnätet
TL Tjänsteleverantör Ett företag som levererar nättjänster i Stadsnätet
I första versionen kommer vi fokusera på två scenarier, vilka är som följer:

Ej aktiv port

SK sitter i en Stadsnätsansluten fastighet och har en CPE i väggen. När han kopplar in sig på den porten så kan han surfa till TG, och bara till TG (d.v.s, skriver han in www.abb.se så kommer han till TG i stället). Logiken för att få detta att fungera kräver att stadsnätet ger SK ett "svart-IP" som denne kan surfa ut på internet via. Det IP:et kan vara NAT:at, eftersom Stadsnätet ska skicka med kund-data när denne kommer till TG. Väl där kommer aktiveringsprocessen som följer som nedan.

Aktiv port med tjänst

SK sitter i Stadsnätet och har en aktiv port med en aktiv internettjänst. När denne surfar till TG så kommer han att skickas vidare till PS inne i Stadsnätet som i sin tur tar reda på vilken port han sitter på, och skickar tillbaka honom till TG med den information. Stadsnätet ansvarar själva för att kunna mappa surfande SK till interna portar i sitt eget system.

Aktiveringsprocessen

När kunden är identifierad enligt någon av ovanstående processer så kommer "Beställ"-knappen bytas ut mot en "Aktivera"-knapp. När SK trycker på den så kommer TG skicka en förfrågan till PS via API:et och kontrollera förutsättningarna för en aktivering, PS kommer då att svara TG med status och nästa steg avgörs av det svaret.

Funktioner i API:et

nedan följer en lista med funktioner som måste finnas i API:et i version 1.0
socket_deliverable(socket, service) socket(CHAR) - Identifiering av SK service(CHAR) - UID för tjänsten i nätet svar status(INT) - Statuskod time(DATE) - Anges vid olika typer av felstatus socket_activate(socket, service) svar status(INT) socket_order(socket, service, time) time(DATE) - ISO timestamp för när aktivering skall ske svar status(INT) socket_services(socket) svar services lista med alla tjänster aktiva på porten
Notera att vi inte siktar på att göra en så komplett lösning som möjligt, utan vill skapa en fungerande förstaversion av API:et som täcker in grundbehoven för Stadsnäten i dagsläget. Vi tar tacksamt emot kommentarer som vad som saknas eller vad som kan anses som viktigt för version 1.0 dock. Trots detta kommer säkerligen den här specifikationen växa tills version 1.0

socket_deliverable

Skickar med uttag socket och frågar om tjänsten service är möjlig att koppla in. Svaret är en förutdefinierad statuskod, enligt följande (exempel):
  • 1: Ok att direktaktivera
  • 2: Nej, kolliderar med befintlig tjänst, men kan beställas från och med time(DATE)
  • 3: Nej, kolliderar med befintlig tjänst
  • 4: Nej, orsak okänd

socket_activate

Om status var 1 ovan så skickas det här kommandot direkt efter, som aktiverar tjänsten på porten. Svar på den funktionen bör alltid vara 1 (ok), men svar 2 (fel) skickas om något oförutsett hände mellan dessa två tillfällen.

socket_order

Om svar på socket_deliverable var 2 så lägger vi en beställning på inkoppling vid time(DATE), som vi har fått som datum från socket_deliverable. Dock upplyser vi SK om detta som måste godkänna beställningen i stället för direktaktivering.

socket_services

Listar alla tjänster som finns på det givna uttaget. Den här funktionen kan komma att användas för att mappa bindningstider/uppsägningstider mot de lokala tjänsterna i TG om PS själv inte kan hålla reda på när/om en tjänst kan ersättas.

Förutsättningar för direktaktivering

För att en tjänst ska kunna ha en "Aktivera"-knapp i stället för en "Beställ"-knapp krävs det att dessa kriterier uppfylls:
  1. TL har angivit att tjänsten tillåts att direktaktiveras, detta görs via Tjänsteportföljen
  2. Stadsnätet har angivit ett UID för tjänsten i TG, så att dom kan identifiera tjänsten i det lokala nätet när den skickas via API:et
  3. SK's uttags-ID (eller UID) har framgångsrikt identifierats av PS
Om någon av dessa inte uppfylls så kommer knappen att falla tillbaka till det gamla beställningsförfarandet. Om alla uppfylls så kommer aktiveringen ske 100% via TG.

Aktiveringen

Mellan socket_deliverable och socket_activate så kommer TG presentera ett beställningsforumlär för SK som måste fyllas i med personuppgifter. Det här formuläret existerar redan idag, men få TL använder det. När aktiveringen/beställningen (en tjänst kan tillåta aktivering men av tekniska anledningar inte kunna genomföras) är genomförd så lagras beställningen i Stadsnätsfabriken och om Stadsnät och TL har angivit E-post-adress för beställningar så skickas det också. Alla beställningar via TG kommer kunna nås via Stadsnätsfabriken eller direkt i adminläget i TG av TL och Stadsnät, samt kunna matas ut automatiskt via ett order-API som är en del av den här specifikationen.

i Stadsnätet

I varje Stadsnät som vill använda den här funktionen måste det finnas en Proxyserver (eller motsvarande funktion) som TG kommunicerar med vad gäller alla funktioner i API:et. Den proxyservern ska i sin tur ha direktkontakt med Stadsnätets provisioneringssystem, samt ha möjlighet att identifiera SK i stadsnätet. Stadsnätsfabriken tar inte ansvar för hur den identifieringen fungerar i ett givet nät, men vi kommer jobba med de stora provisioneringslösningarna för att kunna säkerställa att dom har system för hur den identifieringen ska gå till.
All kommunikation till/från TG kommer ske via ... och varje förfrågan kommer identifieras med en unik API-nyckel för varje stadsnät/användare. Datat kommer att skickas via ett web services API som ännu inte skrivits.

Nästa steg

Kom ihåg att följa den här bloggen, och återkom till med frågor eller tankar kring specifikationen.
#inlineditbutton