Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

Beskrivning

Tar emot felanmälan, samt tillhandahåller master data för nya felanmälningar.

Aktuell version: integration mot ISYcase för SBK-relaterade felanmälningar - i övrigt så skickas felanmälan vidare via e-post till kundtjänst (digilogt)

Fas 2: addera bildanalys samt integrationer mot fler verksamhetssystem (digitalt)

Mer information: Felanmälan

Livscykelstatus

Test

Lösningsbeskrivning

Gliffy
imageAttachmentIdatt86442117
macroIddf280ba3-c550-4e27-b653-4c987cfc4001
baseUrlhttps://sundsvall.atlassian.net/wiki
nameincident-API
diagramAttachmentIdatt88080415
containerId22315023
timestamp1613027090720

Hantering av personuppgifter

För att möjliggöra återkoppling till intressenter så sparas intressentens person-id och det angetts.

API Specifikation

POST

api/sendincident

Exempelanrop:

Code Block
languagejson
{
    "personId": <Guid>,
    "phoneNumber": "070123456789",
    "email": "test@test.se",
    "contactMethod": "email",
    "category": 6,
    "description": "Någon har kastat tugummi i en park",
    "mapCoordinates": "62.23162,17.27403",
    "attachments": [
        {
            "category": "BILD",
            "extension": "png",
            "mimeType": "image/png",
            "file": "<base64>"
        }
    ]
}
Fältet Image är en Base64-textsträng för bifogad bild.
Fältet Category är en siffra som motsvarar en kategori som hämtas via anropet api/validcategories

Obligatoriska fält är category, description och attachments
Övriga fält kan lämnas tomma eller utelämnas helt.

 

PATCH

api/{id}/status

Uppdaterar status för ett ärende (id). Tar emot ett JSON-objekt med följande format:

Code Block
languagejson
{
    “status”: <statusId>
}
Fältet status är en siffra som motsvarar en kategori som hämtas via anropet api/validstatuses

Exempelanrop:

api/3/status

Body:

Code Block
languagejson
{
    “status”: 2
}

GET

api/validstatuses

Listar samtliga giltiga statusar.

Exempelsvar:

Code Block
languagejson
[
    {
        "STATUS_ID": 1,
        "status": "open"
    },
    {
        "STATUS_ID": 2,
        "status": "resolved"
    },
    {
        "STATUS_ID": 3,
        "status": "rejected"
    }
]

api/validcategories

Listar samtliga giltiga kategorier

Exempelsvar:

Code Block
[
    {
        "CATEGORY_ID": 1,
        "category": "Belysning"
    },
    {
        "CATEGORY_ID": 2,
        "category": "Bro/Tunnel/Konstruktion"
    },
    {
        "CATEGORY_ID": 3,
        "category": "Felparkerat och övergivet fordon"
    }
]

api/setincidentfeedback

Uppdaterar vart ärendet ska, t.ex. Stadsbyggnadskontoret. Tar emot två query-parametrar, incidentid(ärende-ID), samt feedback(vart ärendet ska, t.ex. Stadsbyggnadskontoret).
Exempelanrop: api/setincidentfeedback?incidentid=1&feedback=Stadsbyggnadskontoret

 

api/listincidents

Listar de ärenden som finns i databasen, tar emot två query-parametrar, offset(hur många poster som ska hoppas över) samt limit(hur många poster som ska skickas), vilket möjliggör paginering. Om ingen parameter anges skickas alla poster, om endast offset anges skickas 100 poster per anrop.

Exempelanrop api/listincidents?offset=5&limit=5
Vilket returnerar 5 poster och hoppar över de 5 första i databasen.
Exempelsvar:

Code Block
languagejson
[
    {
        "incidentId": <guid>,
        "status": 1    },
    {
        "incidentId": <guid>,
        "status": 1    },
    {
        "incidentId": <guid>,
        "status": 1    },
    {
        "incidentId": <guid>,
        "status": 1    },
    {
        "incidentId": <guid>,
        "status": 1
    }
]

 

api/getincident/{id} 

api/getincident/{externalCaseId} 

Returnerar ett ärende med angivet ID.

Exempelanrop: api/geterrand/00000000-0000-0000-0000-000000000000

Exempelsvar:

Code Block
languagejson
{
    "incidentID": <guid>,
    "personID": <guid>,
    "created": "2020-12-10T22:33:07.000Z",
    "phoneNumber": "070123456789",
    "email": "test@test.se",
    "contactMethod": "email",
    "updated": null,
    "category": 6,
    "description": "Någon har kastat tugummi i en park",
    "mapCoordinates": "62.23162,17.27403",
    "attachments": [
        {
            "category": "Bild",
            "extension": "png",
            "mimetype": "image/png",
            "note": "Bifogad bild",
            "file": <Base64>,
            "IncidentId": "61922068-4dac-4aa7-bcb3-6428c4232ced",
            "name": "987dc019dd3aaa766b9f5f29aa0c69d7bc98",
            "created": "2020-12-10T22:33:07.000Z"
        }
    ]
}

 

Fältet fileinnehåller en Base64-textsträng som motsvarar den bild som bifogats med anmälan.

Fält som inte är ifyllda, till exempel att inget telefonnummer har angetts, kommer inte att skickas med.

När ett ärende skickas in skapas ett ID för personen som skickat, om en person tidigare skickat ett ärende, används det tidigare ID:t. Fältet category motsvarar en kategori i anropet api/validcategories under attachments innebär category kategorin för den bifogade filen.

Expand
titleAPI-nyckel för sandbox-miljö. Klicka på "Authorize" nedan och ange denna nyckel för att testa API:et.

Kommer snart

Swagger ui
openapi: 3.0.1
info:
  title: Incident
  version: '1.0'
servers:
  - url: https://api-test.sundsvall.se/incident/1.0
paths:
  '/api/getincident/{externalCaseId}':
    get:
      tags:
        - Incident
      parameters:
        - name: externalCaseId
          in: path
          required: true
          style: simple
          explode: false
          schema:
            type: string
            format: string
      responses:
        '200':
          description: ok
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Incident'
  /api/listincidents:
    get:
      tags:
        - Incident
      parameters:
        - name: offset
          in: query
          required: false
          style: form
          explode: true
          schema:
            type: integer
        - name: limit
          in: query
          required: false
          style: form
          explode: true
          schema:
            type: integer
      responses:
        '200':
          description: ok
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/ListIncident'
  /api/validcategories/oep:
    get:
      tags:
        - Incident
      parameters: []
      responses:
        '200':
          description: ok
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ValidCategoryOeP'
  /api/validcategories:
    get:
      tags:
        - Incident
      parameters: []
      responses:
        '200':
          description: ok
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ValidCategory'
  /api/sendincident:
    post:
      tags:
        - Incident
      parameters: []
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/PostIncident'
      responses:
        '200':
          description: ok
  /api/hello:
    get:
      tags:
        - Incident
      description: Hello World
      parameters: []
      responses:
        '200':
          description: ok
  /api/setincidentfeedback:
    get:
      tags:
        - Incident
      parameters:
        - name: feedback
          in: query
          required: true
          style: form
          explode: true
          schema:
            type: string
        - name: errandid
          in: query
          required: true
          style: form
          explode: true
          schema:
            type: integer
      responses:
        '200':
          description: ok
  /api/validstatuses:
    get:
      tags:
        - Incident
      parameters: []
      responses:
        '200':
          description: ok
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ValidStatus'
  '/api/internal/oep/status/{externalCaseId}':
    get:
      tags:
        - OeP
      parameters:
        - name: externalCaseId
          in: path
          required: true
          style: simple
          explode: false
          schema:
            type: string
            format: string
      responses:
        '200':
          description: ok
  '/api/getincident/{id}':
    get:
      tags:
        - Incident
      parameters:
        - name: id
          in: path
          required: true
          style: simple
          explode: false
          schema:
            type: string
            format: uuid
      responses:
        '200':
          description: ok
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Incident'
  '/api/{id}/status':
    patch:
      tags:
        - Incident
      description: Updates status for specific errand
      parameters:
        - name: id
          in: path
          required: true
          style: simple
          explode: false
          schema:
            type: string
            format: string
      requestBody:
        content:
          application/json:
            schema:
              type: object
              properties:
                status:
                  type: integer
              example:
                status: 2
      responses:
        '200':
          description: ok
security:
  - ApiKeyAuth: []
components:
  securitySchemes:
    ApiKeyAuth: 
      type: apiKey
      in: header   
      name: apikey
  schemas:
    Incident:
      type: object
      properties:
        incidentId:
          type: string
          format: uuid
          nullable: false
        externalCaseId:
          type: string
          nullable: true
        personId:
          type: string
          nullable: false
        created:
          type: string
          nullable: false
        phoneNumber:
          type: string
          nullable: true
        email:
          type: string
          nullable: true
        contactMethod:
          type: string
          nullable: false
        category:
          type: integer
          format: int32
          nullable: false
        description:
          type: string
          nullable: true
        fileName:
          type: string
          nullable: true
        image:
          type: string
          nullable: true
      additionalProperties: false
    Attachment:
      type: object
      properties:
        category:
          type: string
          nullable: true
        extension:
          type: string
          nullable: false
        mimeType:
          type: string
          nullable: false
        note:
          type: string
          nullable: true
        file:
          type: string
          nullable: false
    PostIncident:
      type: object
      properties:
        personId:
          type: string
          format: uuid
          nullable: false
        phoneNumber:
          type: string
          nullable: true
        email:
          type: string
          nullable: true
        contactMethod:
          type: string
          nullable: false
        category:
          type: integer
          nullable: false
        description:
          type: string
          nullable: true
        mapCoordinates:
          type: string
          nullable: true
        externalCaseId:
          type: string
          nullable: true
        attachments:
          type: array
          nullable: true
          items:
            $ref: '#/components/schemas/Attachment'
      additionalProperties: false
    ValidCategory:
      type: object
      properties:
        CATEGORY_ID:
          type: integer
          format: int32
          nullable: false
        category:
          type: string
          nullable: false
      additionalProperties: false
    ValidCategoryOeP:
      type: object
      properties:
        key:
          type: integer
          format: int32
          nullable: false
        value:
          type: string
          nullable: false
      additionalProperties: false
    ValidStatus:
      type: object
      properties:
        STATUS_ID:
          type: integer
          format: int32
          nullable: false
        status:
          type: string
          nullable: false
      additionalProperties: false
    ListIncident:
      type: object
      properties:
        incidentId:
          type: string
          format: uuid
          nullable: false
        status:
          type: integer
          format: int32
          nullable: false
        externalCaseId:
          type: string
          nullable: true
      additionalProperties: false

Säkerhetsklassning

Säkerhetsklass 1

Autentiseringsmetod: Oauth2

(Ref: Säkerhetsklassning av APIer )

API-ägare

<Kontaktuppgifter till den verksamhet som äger APIets livscykel>

Teknisk ägare

https://sundsvall.atlassian.net/wiki/spaces/API

Ansvarigt team: Team Dynasty

För tekniska frågor: teamdynasty@sundsvall.se

Länkar

<Länkar till dev-portal;

FAQ

<FAQ>