Versions Compared

Key

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

Beskrivning

En CaseManagement är en tjänst som hanterar ärenden mot ByggR och Ecos2 (fas 1) samt läser historik från E-arkiv (fas 2).

Behov

Idag när en medborgare använder en e-tjänst för bygglovsärenden eller miljökontorärenden så skickas en PDF-fil innehållandes all information från E-tjänsten till handläggarna som manuellt får mata in dessa uppgifter i ByggR eller Ecos2. Detta tar mycket tid från handläggarna. Tid som kan användas till mer värdeskapande aktiviteter. Detta är dessutom ett repetitivt och inte särskilt utvecklande arbete för individen.
Denna hantering vill vi automatisera genom att E-tjänsten istället anropar vårt CaseManagement-API som skapar ett ärende maskinellt i ByggR eller Ecos2.
Ett ärende som skapas i e-tjänster består alltid av två olika ärenden. Ett i Open ePlatform(OeP) och ett annat i antingen ByggR eller Ecos2. Ärendet i OeP har varit kundens perspektiv på ärendet. Detta ärende har inte uppdaterats i takt med att ärendet handläggs i antingen ByggR eller Ecos2. Idag kan inte intressenterna i ett ärende (t.ex. den sökande) hitta information om sitt ärende på webben. Idag behöver intressenten kontakta en handläggare för information om sitt ärende. Detta är krångligt, ineffektivt och inte särskilt användarvänligt för våra kunder, samtidigt som det är en belastning för handläggarna.
Detta vill vi lösa genom att CaseManagement föder OeP med information om de underliggande ärendena. Då kommer intressenterna kunna komma åt sina ärenden på webben.

Livscykelstatus

Under utveckling

Lösningsbeskrivning

Gliffy
imageAttachmentIdatt88113155
macroId9964760a-a025-4804-a896-4e790a78cba0
baseUrlhttps://sundsvall.atlassian.net/wiki
namecaseMan-API
diagramAttachmentIdatt88080400
containerId47317017
timestamp1644496395387

CaseManagement(CM) kommer lagra en koppling mellan ärendet i OeP och underliggande handläggningssystem. Denna lagring kommer ske i samband med att ärendet skapas från e-tjänsten. Detta kommer möjliggöra att CM kommer kunna hämta upp ärendet från underliggande system när OeP ber om information.

Anropsflöden

POST /cases

“Underliggande system” syftar på antingen ByggR eller Ecos2 för närvarande. Anropet “Skapa ärende” kan bestå av ett flertal anrop för att skapa ett komplett ärende.

Image Removed

Datamodell

Denna datamodell är en visuell överblick över Java-klasserna.
Det är endast “CaseMapping” som lagras i databasen just nu.

Image Removed

, Ecos2 och vårt egna ärendehanteringssystem CaseData. CaseManagement fungerar som en ärendeförmedlare mellan ett externt system (idag främst Open ePlatform) och de underliggande systemen. CaseManagement tar emot ärenden i ett generiskt format och formaterar om ärendet så att det passar just det specifika system som det ska registreras i. CaseManagement håller även koll på kopplingen mellan det externa ärendet och det underliggande systemet och på så vis möjliggörs hämtning av status från det underliggande systemet, uppdateringar av ärendet med nya bilagor o.s.v. 

Livscykelstatus

Produktion

Lösningsbeskrivning

Gliffy
displayNamecaseMan-API Copy
namecaseMan-API Copy
pagePin1

Hantering av personuppgifter

Vi tar in ett personId fältet “personId” och hämtar sedan det tillhörande personnumret från CitizenMapping för att kunna anropa Ecos2 och ByggR med personnummer. Vi kan inte påverka det faktum att dessa system kräver detta som indata. Ecos2 och ByggR ligger på det interna nätet på Sundsvalls kommun.

API specifikation

ExpandtitleAPI-nyckel för sandbox-miljö

.

Klicka på "Authorize" nedan och ange denna nyckel för att testa API:et.

eyJ4NXQiOiJOVGRtWmpNNFpEazNOalkwWXpjNU1tWm1PRGd3TVRFM01XWXdOREU1TVdSbFpEZzROemM0WkE9PSIsImtpZCI6ImdhdGV3YXlfY2VydGlmaWNhdGVfYWxpYXMiLCJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiJ9.eyJzdWIiOiJhZG1pbkBjYXJib24uc3VwZXIiLCJhcHBsaWNhdGlvbiI6eyJvd25lciI6ImFkbWluIiwidGllclF1b3RhVHlwZSI6bnVsbCwidGllciI6IjEwUGVyTWluIiwibmFtZSI6IkNvbmZsdWVuY2UtQ2FzZU1hbmFnZW1lbnQiLCJpZCI6NTIsInV1aWQiOiI0NjZiNTYwNi0zMjhiLTRmZmUtOWY0OS0zZjdjOTI3MWJkYmIifSwiaXNzIjoiaHR0cHM6XC9cL2FwaS1pbS10ZXN0LnN1bmRzdmFsbC5zZTo0NDNcL29hdXRoMlwvdG9rZW4iLCJ0aWVySW5mbyI6eyJVbmxpbWl0ZWQiOnsidGllclF1b3RhVHlwZSI6InJlcXVlc3RDb3VudCIsImdyYXBoUUxNYXhDb21wbGV4aXR5IjowLCJncmFwaFFMTWF4RGVwdGgiOjAsInN0b3BPblF1b3RhUmVhY2giOnRydWUsInNwaWtlQXJyZXN0TGltaXQiOjAsInNwaWtlQXJyZXN0VW5pdCI6bnVsbH19LCJrZXl0eXBlIjoiU0FOREJPWCIsInBlcm1pdHRlZFJlZmVyZXIiOiIiLCJzdWJzY3JpYmVkQVBJcyI6W3sic3Vic2NyaWJlclRlbmFudERvbWFpbiI6ImNhcmJvbi5zdXBlciIsIm5hbWUiOiJDYXNlTWFuYWdlbWVudCIsImNvbnRleHQiOiJcL2Nhc2VtYW5hZ2VtZW50XC8zLjIiLCJwdWJsaXNoZXIiOiJhZG1pbiIsInZlcnNpb24iOiIzLjIiLCJzdWJzY3JpcHRpb25UaWVyIjoiVW5saW1pdGVkIn1dLCJwZXJtaXR0ZWRJUCI6IiIsImlhdCI6MTY0NjI5NDcwOSwianRpIjoiZGM1MTkzNWMtOTk5OC00MjAzLThmM2QtYjNjNjlkNDA0ZjQwIn0=.TOgb3v6Ld8QSPnwCXbdhDHo6cvhj9fQj-Lwu-WIhcfTZzOHAJBKsGfKp27rrfFHnoJvY_k9DUo_mTlJw-e3RmJDIu3Fd9ZgBcs0yU8A0scDrUEZ0PN3HERGVJNYxTz7KJKDuVWbLznnb5cAMURMSS6gir3StG7kzhS7S8SLdprhZuuEJRr3TQWc6dwN90Nk_AoksxxoprlaL-0zMyqMq6CB62y83X59EEbTjENDR-_2V3ZWOERqOalnRNDW5VLRVUtXuFZhSDT4zFgYvAFef-ucek95WRaIgVJglBBtKYa3NnOr03Zwh_4NZp8OqWfZF82XT8fNTTQxy2EnWQ8t8gQ==

swagger-ui

---
openapi: 3.0.2
info:
  title: CaseManagement
  description:
    A service that manage cases against ByggR (building permit cases) and
    Ecos2 (environmental office cases).
  contact:
    name: Sundsvalls kommun - Team Dynasty
    email: teamdynasty@sundsvall.se
  version: "3.3"
paths:
  /api-docs:
    get:
      tags:
        - API
      summary: OpenAPI-definition
      parameters: []
      responses:
        "200":
          description: ok
      x-auth-type: None
  /cases:
    post:
      tags:
        - Cases
      description:
        Creates a case in ByggR or Ecos2 based on caseType. Also persists
        a connection between externalCaseId and the created case.
      requestBody:
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/Case"
            example:
              externalCaseId: caa230c6-abb4-4592-ad9a-34e263c2787b
              caseType: NYBYGGNAD_ANSOKAN_OM_BYGGLOV
              facilities:
                - facilityType: STOREHOUSE
                  address:
                    addressCategories:
                      - VISITING_ADDRESS
                    propertyDesignation: SUNDSVALL BIRSTA 36:14
              stakeholders:
                - type: ORGANIZATION
                  roles:
                    - APPLICANT
                    - PAYMENT_PERSON
                  organizationName: Testorganisationen
                  organizationNumber: 723456-1321
                - type: PERSON
                  roles:
                    - CONTACT_PERSON
                  firstName: Test
                  lastName: Testsson
                  personId: 7988710e-7c5c-4db9-ae77-41752baa2381
              attachments:
                - category: ANS
                  name: Some_name_2022-03-07
                  extension: .pdf
                  file: dGVzdA==
      responses:
        "400":
          description: Bad request
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Information"
        "500":
          description: Internal Server Error
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Information"
        "200":
          description: OK
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/CaseResourceResponse"
  /cases/case-mappings:
    get:
      tags:
        - CaseMappings
      description:
        Returns the connection between externalCaseId and the case in the
        underlying system.
      parameters:
        - name: external-case-id
          in: query
          schema:
            type: string
      responses:
        "200":
          description: OK
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/CaseMapping"
        "400":
          description: Bad request
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Information"
        "404":
          description: Not found
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Information"
        "500":
          description: Internal Server Error
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Information"
  /cases/{external-case-id}/attachments:
    post:
      tags:
        - Attachments
      description: Add attachments to existing case.
      parameters:
        - name: external-case-id
          in: path
          required: true
          schema:
            type: string
      requestBody:
        content:
          application/json:
            schema:
              type: array
              items:
                $ref: "#/components/schemas/Attachment"
      responses:
        "204":
          description: No content - Successful request.
        "400":
          description: Bad request
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Information"
        "404":
          description: Not found
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Information"
        "500":
          description: Internal Server Error
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Information"
        "501":
          description: Not Implemented
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Information"
  /cases/{external-case-id}/status:
    get:
      tags:
        - Status
      description:
        Returns the latest status for the case in the underlying system
        connected to the specified externalCaseId.
      parameters:
        - name: external-case-id
          in: path
          required: true
          schema:
            type: string
      responses:
        "200":
          description: OK
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/CaseStatus"
        "400":
          description: Bad request
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Information"
        "404":
          description: Not found
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Information"
        "500":
          description: Internal Server Error
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Information"
  /organization/{organizationNumber}/cases/status:
    get:
      tags:
        - Status
      description:
        Returns the latest status for each of the cases where the specified
        organization has the role "applicant".
      parameters:
        - name: organizationNumber
          in: path
          required: true
          schema:
            description: Organization number with 10 or 12 digits.
            type: string
            example: 19901010-1234
      responses:
        "200":
          description: OK
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: "#/components/schemas/CaseStatus"
        "400":
          description: Bad request
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Information"
        "404":
          description: Not found
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Information"
        "500":
          description: Internal Server Error
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Information"
security:
  - ApiKeyAuth: []
components:
  securitySchemes:
    ApiKeyAuth:
      type: apiKey
      in: header
      name: apikey
  schemas:
    Address:
      required:
        - addressCategories
      type: object
      properties:
        addressCategories:
          description:
            "An address can have one or more address categories. For example,\
            \ it can be the same address that is to be used for mail and invoices."
          minItems: 1
          type: array
          items:
            $ref: "#/components/schemas/AddressCategory"
        street:
          type: string
          example: Testvägen
        houseNumber:
          type: string
          example: "18"
        postalCode:
          type: string
          example: 123 45
        city:
          type: string
          example: Sundsvall
        country:
          type: string
          example: Sverige
        careOf:
          description: c/o
          type: string
          example: Test Testorsson
        attention:
          type: string
          example: Test Testorsson
        propertyDesignation:
          type: string
          example: SUNDSVALL LJUSTA 7:2
        appartmentNumber:
          type: string
          example: LGH 1001
        location:
          $ref: "#/components/schemas/Coordinates"
        isZoningPlanArea:
          type: boolean
        invoiceMarking:
          description: "Only in combination with addressCategory: INVOICE_ADDRESS"
          type: string
    AddressCategory:
      enum:
        - INVOICE_ADDRESS
        - POSTAL_ADDRESS
        - VISITING_ADDRESS
      type: string
    Attachment:
      required:
        - category
        - name
        - extension
        - file
      type: object
      properties:
        category:
          allOf:
            - $ref: "#/components/schemas/AttachmentCategory"
            - nullable: false
        name:
          pattern: \S
          type: string
          example: The attachment name
          nullable: false
        note:
          type: string
          example: A note on an attachment.
        extension:
          pattern: \S
          type: string
          example: .pdf
          nullable: false
        mimeType:
          type: string
          example: application/pdf
        file:
          format: byte
          description: Base64-encoded file (plain text)
          pattern: \S
          type: string
          example: dGVzdA==
          nullable: false
    AttachmentCategory:
      enum:
        - ADRESS
        - ANKVU
        - ANM
        - ANMALAN_LIVSMEDELSANLAGGNING
        - ANMÄ
        - ANNO
        - ANS
        - ANSF
        - ANSFÖ
        - ANSM
        - ANSR
        - ANSS
        - ANSSL
        - ANSUP
        - ANSUPA
        - ANV
        - ARBI
        - ARIT
        - ARK
        - AVPLAN
        - BANK
        - BEGLST
        - BEGSTART
        - BEHA
        - BEK
        - BEKMOTANS
        - BEMÖ
        - BERBSA
        - BESKA
        - BESLUT
        - BIL
        - BLST
        - BRAB
        - BRAD
        - BRAU
        - BROS
        - BRS
        - BULL
        - DEB
        - DEL
        - DELK
        - DELSLU
        - DELSTA
        - DETALJ
        - DHBHUR
        - DOM
        - DPH
        - ELD
        - ENEDEK
        - ENER
        - EPOS
        - EXRIT
        - FAKTU
        - FAKTUS
        - FAP
        - FAPL
        - FAS
        - FAS2
        - FASSIT
        - FASSIT2
        - FAST
        - FOTO
        - FOTOMON
        - FPSS
        - FS
        - FS2
        - FSF
        - FUM
        - FÄRG
        - FÖLJ
        - FÖLJREVRIT
        - FÖRB
        - FÖRG2
        - FÖRGARBO
        - FÖRK
        - FÖRR
        - GBLAD
        - GEO
        - GODFÄ
        - GRA
        - GRAM
        - GRAN
        - GRUNDP
        - GRUNDR
        - HBB
        - HISSINT
        - HUR
        - INFOSS
        - INTFAK
        - INTSLUT
        - INTY
        - KA
        - KART
        - KLA
        - KM
        - KOMP
        - KOND
        - KONR
        - KONT
        - KP
        - KPLAN
        - KPR
        - KPV
        - KR
        - KVAL
        - LUFT
        - LUTE
        - MAIL
        - MAPL
        - MAST
        - MATINV
        - MEDDEL
        - MINN
        - MIRP
        - MOTBKR
        - MUR
        - MÅTT
        - NYKA
        - OMPLÄ
        - OVK
        - PERSPEKTIV
        - PFS2
        - PFSI2
        - PFSS2
        - PLA
        - PLA2
        - PLAN
        - PLANK
        - PLASIT
        - PLFA
        - PLFA2
        - PLFASE
        - PLFASESI
        - PLFASI
        - PLSE
        - PLSE2
        - PM
        - PMINN
        - POIT
        - PRES
        - PRESENTA
        - PROARB
        - PROSS
        - PROT
        - PROTAU
        - PROTKS
        - PROTPLU
        - PROTS
        - PROTSBN
        - PSI2
        - PSS
        - PSS2
        - PÅMINNTB
        - RAP
        - RAPP
        - REL
        - REMISS
        - REMS
        - REMUA
        - REVRIT
        - RIT
        - RITNING
        - RIVA
        - RIVP
        - RUE
        - RÄTT
        - SAK
        - SAKNAS
        - SAKUT
        - SBES
        - SBN
        - SCB
        - SEK
        - SEK2
        - SEKSIT
        - SEKT
        - SESI2
        - SIN
        - SITU
        - SKP
        - SKR
        - SKY
        - SKYL
        - SLUT
        - STAB
        - STIM
        - STOMR
        - SVAR
        - SVAR2år
        - SÅF
        - TAPL
        - TEBY
        - TEKN
        - TEKRAP
        - TEVS
        - TILL
        - TILLVR
        - TJ
        - TJÄ
        - TOMTPLBE
        - TSR
        - UBGARBO
        - UKA
        - UKON
        - UKP
        - UKR
        - UND
        - UNDER
        - UNDUT
        - UPLA
        - UPPM
        - URÖR
        - UTBEU
        - UTSK
        - UTSKP
        - UTSKS
        - UVEN
        - VAH
        - VENT
        - VS
        - VVSH
        - ÄRB
        - ÅTG
        - ÖVER
      type: string
    Case:
      required:
        - externalCaseId
        - caseType
        - stakeholders
        - attachments
      type: object
      properties:
        externalCaseId:
          description: Case ID from the client.
          pattern: \S
          type: string
          example: caa230c6-abb4-4592-ad9a-34e263c2787b
          nullable: false
        caseType:
          allOf:
            - $ref: "#/components/schemas/CaseType"
            - nullable: false
        description:
          type: string
          example: Some description of the case.
        caseTitleAddition:
          description:
            "Additions to the case title. Right now only applicable to\
            \ cases of CaseType: NYBYGGNAD_ANSOKAN_OM_BYGGLOV."
          type: string
          example: "Eldstad/rökkanal, Skylt"
        stakeholders:
          minItems: 1
          type: array
          items:
            $ref: "#/components/schemas/Stakeholder"
        attachments:
          minItems: 1
          type: array
          items:
            $ref: "#/components/schemas/Attachment"
      oneOf:
        - $ref: "#/components/schemas/PlanningPermissionCase"
        - $ref: "#/components/schemas/EnvironmentalCase"
    CaseMapping:
      required:
        - system
      type: object
      properties:
        externalCaseId:
          type: string
        caseId:
          type: string
        system:
          allOf:
            - $ref: "#/components/schemas/SystemType"
            - nullable: false
        timestamp:
          format: date-time
          type: string
          readOnly: true
    CaseResourceResponse:
      type: object
      properties:
        caseId:
          type: string
    CaseStatus:
      type: object
      properties:
        system:
          $ref: "#/components/schemas/SystemType"
        externalCaseId:
          type: string
        caseId:
          type: string
        status:
          type: string
          example: Pågående
        timestamp:
          format: date-time
          type: string
    CaseType:
      enum:
        - ANMALAN_ATTEFALL
        - LIVSMEDELSVERKSAMHET_ANMALAN_OM_REGISTRERING
        - NYBYGGNAD_ANSOKAN_OM_BYGGLOV
      type: string
      example: NYBYGGNAD_ANSOKAN_OM_BYGGLOV
    Coordinates:
      type: object
      properties:
        latitude:
          format: double
          description: Decimal Degrees (DD)
          type: number
          example: 62.390205
        longitude:
          format: double
          description: Decimal Degrees (DD)
          type: number
          example: 17.306616
    EnvironmentalCase:
      description: Ecos2-cases
      required:
        - externalCaseId
        - caseType
        - stakeholders
        - attachments
        - facilities
        - startDate
      type: object
      properties:
        externalCaseId:
          description: Case ID from the client.
          pattern: \S
          type: string
          example: caa230c6-abb4-4592-ad9a-34e263c2787b
          nullable: false
        caseType:
          allOf:
            - $ref: "#/components/schemas/CaseType"
            - nullable: false
        description:
          type: string
          example: Some description of the case.
        caseTitleAddition:
          description:
            "Additions to the case title. Right now only applicable to\
            \ cases of CaseType: NYBYGGNAD_ANSOKAN_OM_BYGGLOV."
          type: string
          example: "Eldstad/rökkanal, Skylt"
        stakeholders:
          minItems: 1
          type: array
          items:
            $ref: "#/components/schemas/Stakeholder"
        attachments:
          minItems: 1
          type: array
          items:
            $ref: "#/components/schemas/Attachment"
        facilities:
          maxItems: 1
          minItems: 1
          type: array
          items:
            $ref: "#/components/schemas/EnvironmentalFacility"
        startDate:
          format: date
          description: Start date for the business.
          type: string
          example: 2022-01-01
          nullable: false
        endDate:
          format: date
          description: End date of the business if it is time-limited.
          type: string
          example: 2022-06-01
    EnvironmentalFacility:
      required:
        - facilityCollectionName
      type: object
      properties:
        description:
          type: string
          example: En fritextbeskrivning av facility.
        address:
          $ref: "#/components/schemas/Address"
        facilityCollectionName:
          description: The name on the sign.
          pattern: \S
          type: string
          example: Sundsvalls testfabrik
          nullable: false
    Facility:
      type: object
      properties:
        description:
          type: string
          example: En fritextbeskrivning av facility.
        address:
          $ref: "#/components/schemas/Address"
      oneOf:
        - $ref: "#/components/schemas/PlanningPermissionFacility"
        - $ref: "#/components/schemas/EnvironmentalFacility"
    FacilityType:
      description:
        "Type of facility.<br><br>Compatible with CaseType=NYBYGGNAD_ANSOKAN_OM_BYGGLOV:<li>ONE_FAMILY_HOUSE(enbostadshus)</li><li>APARTMENT_BLOCK(flerbostadshus)</li><li>WEEKEND_COTTAGE(fritidshus)</li><li>OFFICE_BUILDING(kontorsbyggnad)</li><li>INDUSTRIAL_BUILDING(industribyggnad)</li><li>GARAGE(garage)</li><li>CARPORT(carport)</li><li>STOREHOUSE(fö\
        rråd)</li><li>GREENHOUSE(växthus)</li><li>GUEST_HOUSE(gäststuga)</li><li>WAREHOUSE(lagerbyggnad)</li><li>WORKSHOP_BUILDING(Verkstadsbyggnad)</li><li>RESTAURANT(Restaurang)</li><li>SCHOOL(Skola)</li><li>PRESCHOOL(Fö\
        rskola)</li><li>PARKING(Parkering, Cykelparkering)</li><li>DEPOT(Upplag)</li><li>MARINA(Små\
        båtshamn)</li><li>WALL(Mur)</li><li>PALING(Plank)</li><li>RECYCLING_STATION(Å\
        tervinningsstation)</li><li>OTHER(övrigt)</li><br><br>Compatible with CaseType=ANMALAN_ATTEFALL:<li>FURNISHING_OF_ADDITIONAL_DWELLING(inredning\
        \ av ytterligare bostad)</li><li>ANCILLARY_BUILDING(komplementbyggnad)</li><li>ANCILLARY_HOUSING_BUILDING(komplementbostadsbyggnad)</li><li>DORMER(takkupa)</li><li>EXTENSION(tillbyggnad)</li>"
      enum:
        - ANCILLARY_BUILDING
        - ANCILLARY_HOUSING_BUILDING
        - APARTMENT_BLOCK
        - CARPORT
        - DEPOT
        - DORMER
        - EXTENSION
        - FURNISHING_OF_ADDITIONAL_DWELLING
        - GARAGE
        - GREENHOUSE
        - GUEST_HOUSE
        - INDUSTRIAL_BUILDING
        - MARINA
        - OFFICE_BUILDING
        - ONE_FAMILY_HOUSE
        - OTHER
        - PALING
        - PARKING
        - PRESCHOOL
        - RECYCLING_STATION
        - RESTAURANT
        - SCHOOL
        - STOREHOUSE
        - WALL
        - WAREHOUSE
        - WEEKEND_COTTAGE
        - WORKSHOP_BUILDING
      type: string
    Information:
      type: object
      properties:
        type:
          type: string
        status:
          format: int32
          type: integer
        title:
          type: string
        detail:
          type: string
        instance:
          type: string
    Organization:
      required:
        - type
        - roles
        - organizationName
        - organizationNumber
      type: object
      properties:
        type:
          allOf:
            - $ref: "#/components/schemas/StakeholderType"
            - nullable: false
        roles:
          description: An stakeholder can have one or more roles.
          type: array
          items:
            $ref: "#/components/schemas/StakeholderRole"
          nullable: false
        organizationName:
          pattern: \S
          type: string
          example: Sundsvalls testfabrik
          nullable: false
        organizationNumber:
          description: Organization number with 10 or 12 digits.
          pattern: \S
          type: string
          example: 19901010-1234
          nullable: false
        phoneNumber:
          type: string
          example: "060121212"
        emailAddress:
          type: string
          example: test.testorsson@test.se
        cellphoneNumber:
          type: string
          example: "0701231212"
        addresses:
          description:
            An stakeholder may have one or more addresses. For example
            one POSTAL_ADDRESS and another INVOICE_ADDRESS.
          type: array
          items:
            $ref: "#/components/schemas/Address"
        authorizedSignatory:
          type: string
          example: Test Testorsson
    Person:
      required:
        - type
        - roles
        - firstName
        - lastName
      type: object
      properties:
        type:
          allOf:
            - $ref: "#/components/schemas/StakeholderType"
            - nullable: false
        roles:
          description: An stakeholder can have one or more roles.
          type: array
          items:
            $ref: "#/components/schemas/StakeholderRole"
          nullable: false
        firstName:
          pattern: \S
          type: string
          example: Test
          nullable: false
        lastName:
          pattern: \S
          type: string
          example: Testorsson
          nullable: false
        personId:
          type: string
          example: 3ed5bc30-6308-4fd5-a5a7-78d7f96f4438
        phoneNumber:
          type: string
          example: "060121212"
        emailAddress:
          type: string
          example: test.testorsson@test.se
        cellphoneNumber:
          type: string
          example: "0701231212"
        addresses:
          description:
            An stakeholder may have one or more addresses. For example
            one POSTAL_ADDRESS and another INVOICE_ADDRESS.
          type: array
          items:
            $ref: "#/components/schemas/Address"
        personalNumber:
          type: string
          readOnly: true
    PlanningPermissionCase:
      description: ByggR-cases
      required:
        - externalCaseId
        - caseType
        - stakeholders
        - attachments
        - facilities
      type: object
      properties:
        externalCaseId:
          description: Case ID from the client.
          pattern: \S
          type: string
          example: caa230c6-abb4-4592-ad9a-34e263c2787b
          nullable: false
        caseType:
          allOf:
            - $ref: "#/components/schemas/CaseType"
            - nullable: false
        description:
          type: string
          example: Some description of the case.
        caseTitleAddition:
          description:
            "Additions to the case title. Right now only applicable to\
            \ cases of CaseType: NYBYGGNAD_ANSOKAN_OM_BYGGLOV."
          type: string
          example: "Eldstad/rökkanal, Skylt"
        stakeholders:
          minItems: 1
          type: array
          items:
            $ref: "#/components/schemas/Stakeholder"
        attachments:
          minItems: 1
          type: array
          items:
            $ref: "#/components/schemas/Attachment"
        facilities:
          minItems: 1
          type: array
          items:
            $ref: "#/components/schemas/PlanningPermissionFacility"
        diaryNumber:
          type: string
    PlanningPermissionFacility:
      required:
        - facilityType
      type: object
      properties:
        facilityType:
          allOf:
            - $ref: "#/components/schemas/FacilityType"
            - nullable: false
        description:
          type: string
          example: En fritextbeskrivning av facility.
        address:
          $ref: "#/components/schemas/Address"
        mainFacility:
          type: boolean
    Stakeholder:
      required:
        - type
        - roles
      type: object
      properties:
        type:
          allOf:
            - $ref: "#/components/schemas/StakeholderType"
            - nullable: false
        roles:
          description: An stakeholder can have one or more roles.
          type: array
          items:
            $ref: "#/components/schemas/StakeholderRole"
          nullable: false
        phoneNumber:
          type: string
          example: "060121212"
        emailAddress:
          type: string
          example: test.testorsson@test.se
        cellphoneNumber:
          type: string
          example: "0701231212"
        addresses:
          description:
            An stakeholder may have one or more addresses. For example
            one POSTAL_ADDRESS and another INVOICE_ADDRESS.
          type: array
          items:
            $ref: "#/components/schemas/Address"
      oneOf:
        - $ref: "#/components/schemas/Person"
        - $ref: "#/components/schemas/Organization"
    StakeholderRole:
      description: <h3>General roles:</h3><li>CONTACT_PERSON(Kontaktperson)</li><br><br><h3>ByggR-roles:</h3><li>CONTROL_OFFICIAL(Kontrollansvarig)</li><li>APPLICANT(Sökande)<li>PROPERTY_OWNER(Fastighetsägare)</li><li>PAYMENT_PERSON(Betalningsansvarig)</li><br><br><h3>Ecos2-roles:</h3><li>INVOICE_RECIPENT(Fakturamottagare)</li><li>OPERATOR(Verksamhetsutövare)</li>
      enum:
        - APPLICANT
        - CONTACT_PERSON
        - CONTROL_OFFICIAL
        - INVOICE_RECIPENT
        - OPERATOR
        - PAYMENT_PERSON
        - PROPERTY_OWNER
      type: string
    StakeholderType:
      enum:
        - ORGANIZATION
        - PERSON
      type: string
    SystemType:
      enum:
        - BYGGR
        - ECOS
      type: string
servers:
  - url: https://api-test.sundsvall.se/casemanagement/3.3

Medvetna avvikelser

  • Handläggarna i ByggR ville ha filnamnet på dokument i anteckningsfältet i ByggR för att få en bättre överblick. Egentligen ska fältet “note” i Attachment-objektet användas för detta i CaseManagaement's API, men p.g.a. begränsningar i OeP’s integrationsadapter som inte möjliggör att e-tjänsteutvecklaren kan konfigurera att detta skickas med så valde vi att lösa detta i CaseManagement’s backend istället.

    • Detta påverkar endast bygglovsärenden

API specifikation

Open api
showCommonExtensionstrue
deepLinkingtrue
supportedSubmitMethodsnone
locationurl
showExtensionstrue
urlhttps://api-i-test.sundsvall.se/casemanagement/8.0/api-docs



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 DynastyUnmasked

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

Länkar

Länkar till dev-portal;

FAQ

<FAQ>

Källkod

GitHub

FAQ

|