Versions Compared

Key

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

Beskrivning

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.

Datamodeller

Cases

Denna datamodell är en visuell överblick över Java-klasserna. Detta motsvarar ett komplett ärende. Detta är inget som lagras idag.

Gliffy
imageAttachmentIdatt357138446
macroIdb4c422c2-aedf-49d8-8da1-e7ce845bf7cf
baseUrlhttps://sundsvall.atlassian.net/wiki
nameCaseManagement datamodell
diagramAttachmentIdatt357531655
containerId47317017
timestamp1619174516603

CaseMapping

Detta är databastabellen vi använder för att lagra kopplingen mellan OeP-ärendet och ärendet i det underliggande systemet.

  • caseId - ID på ärendet i det underliggande systemet

  • externalCaseId - ID på OeP-ärendet

  • system - Det underliggande systemet (BYGGR, ECOS)

  • timestamp - tidsstämpel på när raden senast ändrades

Hantering av personuppgifter

Vi tar in ett 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

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

eyJ4NXQiOiJOVGRtWmpNNFpEazNOalkwWXpjNU1tWm1PRGd3TVRFM01XWXdOREU1TVdSbFpEZzROemM0WkE9PSIsImtpZCI6ImdhdGV3YXlfY2VydGlmaWNhdGVfYWxpYXMiLCJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiJ9.eyJzdWIiOiJhZG1pbkBjYXJib24uc3VwZXIiLCJhcHBsaWNhdGlvbiI6eyJvd25lciI6ImFkbWluIiwidGllclF1b3RhVHlwZSI6bnVsbCwidGllciI6IjUwUGVyTWluIiwibmFtZSI6IkNvbmZsdWVuY2UiLCJpZCI6NDksInV1aWQiOiI5MTc3ZGYxZC1hMDQwLTQwMTYtOGVjZC05NGM1OGI1NmFjYTYifSwiaXNzIjoiaHR0cHM6XC9cL2FwaS1pbS10ZXN0LnN1bmRzdmFsbC5zZTo0NDNcL29hdXRoMlwvdG9rZW4iLCJ0aWVySW5mbyI6eyJVbmxpbWl0ZWQiOnsidGllclF1b3RhVHlwZSI6InJlcXVlc3RDb3VudCIsImdyYXBoUUxNYXhDb21wbGV4aXR5IjowLCJncmFwaFFMTWF4RGVwdGgiOjAsInN0b3BPblF1b3RhUmVhY2giOnRydWUsInNwaWtlQXJyZXN0TGltaXQiOjAsInNwaWtlQXJyZXN0VW5pdCI6bnVsbH19LCJrZXl0eXBlIjoiUFJPRFVDVElPTiIsInBlcm1pdHRlZFJlZmVyZXIiOiIiLCJzdWJzY3JpYmVkQVBJcyI6W3sic3Vic2NyaWJlclRlbmFudERvbWFpbiI6ImNhcmJvbi5zdXBlciIsIm5hbWUiOiJEaXN0dXJiYW5jZXMiLCJjb250ZXh0IjoiXC9kaXN0dXJiYW5jZXNcLzEuMSIsInB1Ymxpc2hlciI6ImFkbWluIiwidmVyc2lvbiI6IjEuMSIsInN1YnNjcmlwdGlvblRpZXIiOiJVbmxpbWl0ZWQifV0sInBlcm1pdHRlZElQIjoiIiwiaWF0IjoxNjQyMDc2OTAyLCJqdGkiOiI2MzUyNDM0NS01MmNlLTQyMzUtODNmZC0yOWIxNTY1ZWYxOTEifQ==.S8mFnktBSgU6HJ4SBk3Q6RLGtX_oQnaFQLzy6zzU9rU5J73o4D1j61YpOWuGYYFTLPmN9PbvLe_LkpWR5oRj4Fig7yIqUJ-YGkg0hNE8BXJLMb-2MUmRD6tvZFFI1ZVSwzDG_bDgoWPnoUTqxyni7gYfVgK0b_4CF7m6iVXNulUqzCLx-cOabJFB2QTFCNvDVlsXursf9SfEY5rhbyPyqWxRaiotGxXz0PnIlub5bvL5HEOuUdafj8ozMDGB2Wz2_0W4H8XBwjZnfLPQcyCEZ_WeDaFAd9mcDsQ4MiqexBdHPKv1dikzqJKOOBR4213KqQ2W2dDUwwthP3QCVxxqvQ==

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.2'
servers:
  - url: https://api-test.sundsvall.se/casemanagement/3.2
security:
  - ApiKeyAuth: []
paths:
  /api-docs:
    get:
      tags:
        - API
      summary: OpenAPI-definition
      parameters: [ ]
      responses:
        '200':
          description: ok
      security:
        - default: []
      x-auth-type: None
      x-throttling-tier: null
  /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'
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CaseResourceResponse'
        '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'
      x-auth-type: null
      x-throttling-tier: null
  /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
          required: false
          style: form
          explode: true
          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'
      x-auth-type: null
      x-throttling-tier: null
  /cases/{external-case-id}/attachments:
    post:
      tags:
        - Attachments
      description: Add attachments to existing case.
      parameters:
        - name: external-case-id
          in: path
          required: true
          style: simple
          explode: false
          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:     getx-auth-type: null
     tags:
   x-throttling-tier: null
  /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
          style: simple
          explode: false
          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'
      x-auth-type: null
      x-throttling-tier: null
  /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
          style: simple
          explode: false
          schema:
            type: string
            description: Organisationsnummer bestående av 10 eller 12 siffror.
            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'
        '500'x-auth-type: null
      x-throttling-tier: null
 descriptionsecurity:
Internal Server Error- ApiKeyAuth: [ ]
components:
      contentsecuritySchemes:
    ApiKeyAuth:
       application/jsontype: apiKey
             schemain: header
               $ref: '#/components/schemas/Information'
components:
  name: apikey
  schemas:
    Address:
      required:
        - addressCategories
      type: object
      properties:
        addressCategories:
          minItems: 1
          type: array
          description: En adress kan ha en eller flera adresskategorier. Det kan exempelvis vara samma adress som ska användas för post och fakturor.
          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:
          type: string
          description: c/o
          example: Test Testorsson
        attention:
          type: string
          example: Test Testorsson
        propertyDesignation:
          type: string
          description: Fastighetsbeteckning
          example: SUNDSVALL LJUSTA 7:2
        appartmentNumber:
          type: string
          example: LGH 1001
        location:
          $ref: '#/components/schemas/Coordinates'
        isZoningPlanArea:
          type: boolean
          description: Ligger inom detaljplanerat område
        invoiceMarking:
          type: string
          description: Märkning av faktura (anges endast i samband med addressCategory INVOICE_ADDRESS)
    AddressCategory:
      type: string
      description: Kategorisering av adresser. <li>POSTAL_ADDRESS(Postadress)</li><li>INVOICE_ADDRESS(Fakturaadress)</li><li>VISITING_ADDRESS(Besöksadress)</li>
      enum:
        - INVOICE_ADDRESS
        - POSTAL_ADDRESS
        - VISITING_ADDRESS
    Attachment:
      required:
        - category
        - extension
        - file
        - name
      type: object
      properties:
        category:
          allOf:
            - $ref: '#/components/schemas/AttachmentCategory'
            - nullable: false
        name:
          pattern: \S
          type: string
          nullable: false
          example: Namn på dokumentet
        note:
          type: string
          example: En anteckning.
        extension:
          pattern: \S
          type: string
          nullable: false
          example: .pdf
        mimeType:
          type: string
          example: application/pdf
        file:
          pattern: \S
          type: string
          description: Base64-encoded file (plain text)
          format: byte
          nullable: false
    AttachmentCategory:
      type: string
      description: Kategorisering av bilagor.
      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
    Case:
      required:
        - attachments
        - caseType
        - externalCaseId
        - stakeholders
      type: object
      properties:
        id:
          type: integer
          format: int64
          readOnly: true
        externalCaseId:
          pattern: \S
          type: string
          description: ÄrendeId från Open-E
          nullable: false
          example: '1'
        caseType:
          allOf:
            - $ref: '#/components/schemas/CaseType'
            - nullable: false
        description:
          type: string
          description: Beskriv kort vad du vill bygga
          example: En fritextbeskrivning av case.
        caseTitleAddition:
          type: string
          description: 'Additions to the case title. Right now only applicable to cases of CaseType: NYBYGGNAD_ANSOKAN_OM_BYGGLOV.'
          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:
          type: string
          format: date-time
          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
          description: Status på ärendet
          example: Pågående
        timestamp:
          type: string
          format: date-time
    CaseType:
      type: string
      description: Sätts till den enum som hör ihop med den anropande e-tjänsten.
      example: NYBYGGNAD_ANSOKAN_OM_BYGGLOV
      enum:
        - ANMALAN_ATTEFALL
        - LIVSMEDELSVERKSAMHET_ANMALAN_OM_REGISTRERING
        - NYBYGGNAD_ANSOKAN_OM_BYGGLOV
    Coordinates:
      type: object
      properties:
        latitude:
          type: number
          description: Decimal Degrees (DD)
          format: double
          example: 62.390205
        longitude:
          type: number
          description: Decimal Degrees (DD)
          format: double
          example: 17.306616
    EnvironmentalCase:
      required:
        - attachments
        - caseType
        - externalCaseId
        - facilities
        - stakeholders
        - startDate
      type: object
      properties:
        startDate:
          type: string
          description: Startdatum på verksamheten.
          format: date
          nullable: false
        endDate:
          type: string
          description: Slutdatum på verksamheten vid det fall den är tidsbegränsad.
          format: date
        id:
          type: integer
          format: int64
          readOnly: true
        externalCaseId:
          pattern: \S
          type: string
          description: ÄrendeId från Open-E
          nullable: false
          example: '1'
        caseType:
          allOf:
            - $ref: '#/components/schemas/CaseType'
            - nullable: false
        description:
          type: string
          description: Beskriv kort vad du vill bygga
          example: En fritextbeskrivning av case.
        caseTitleAddition:
          type: string
          description: 'Additions to the case title. Right now only applicable to cases of CaseType: NYBYGGNAD_ANSOKAN_OM_BYGGLOV.'
          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'
      description: Miljökontorärende (Ecos2)
    EnvironmentalFacility:
      required:
        - facilityCollectionName
      type: object
      properties:
        description:
          type: string
          example: En fritextbeskrivning av facility.
        address:
          $ref: '#/components/schemas/Address'
        facilityCollectionName:
          pattern: \S
          type: string
          description: Skyltnamn
          nullable: false
          example: Sundsvalls testfabrik
    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:
      type: string
      description: Typ av byggnad.<br><br>Typer:<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>
      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
    Information:
      type: object
      properties:
        type:
          type: string
        status:
          type: integer
          format: int32
        title:
          type: string
        detail:
          type: string
        instance:
          type: string
    Organization:
      required:
        - organizationName
        - organizationNumber
        - roles
        - type
      type: object
      properties:
        type:
          allOf:
            - $ref: '#/components/schemas/StakeholderType'
            - nullable: false
        roles:
          type: array
          description: En intressent kan ha en eller flera roller.
          nullable: false
          items:
            $ref: '#/components/schemas/StakeholderRole'
        organizationName:
          pattern: \S
          type: string
          nullable: false
          example: Sundsvalls testfabrik
        organizationNumber:
          pattern: \S
          type: string
          description: Organisationsnummer bestående av 10 eller 12 siffror.
          nullable: false
          example: 19901010-1234
        phoneNumber:
          type: string
          example: '060121212'
        emailAddress:
          type: string
          example: test.testorsson@test.se
        cellphoneNumber:
          type: string
          example: '0701231212'
        addresses:
          type: array
          description: En intressent kan ha en eller flera adresser. T.ex. en adress av typen POSTAL_ADDRESS och en annan av typen INVOICE_ADDRESS.
          items:
            $ref: '#/components/schemas/Address'
        authorizedSignatory:
          type: string
          description: Firmatecknare
          example: Test Testorsson
    Person:
      required:
        - firstName
        - lastName
        - roles
        - type
      type: object
      properties:
        type:
          allOf:
            - $ref: '#/components/schemas/StakeholderType'
            - nullable: false
        roles:
          type: array
          description: En intressent kan ha en eller flera roller.
          nullable: false
          items:
            $ref: '#/components/schemas/StakeholderRole'
        firstName:
          pattern: \S
          type: string
          nullable: false
          example: Test
        lastName:
          pattern: \S
          type: string
          nullable: false
          example: Testorsson
        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:
          type: array
          description: En intressent kan ha en eller flera adresser. T.ex. en adress av typen POSTAL_ADDRESS och en annan av typen INVOICE_ADDRESS.
          items:
            $ref: '#/components/schemas/Address'
        personalNumber:
          type: string
          readOnly: true
    PlanningPermissionCase:
      required:
        - attachments
        - caseType
        - externalCaseId
        - facilities
        - stakeholders
      type: object
      properties:
        id:
          type: integer
          format: int64
          readOnly: true
        externalCaseId:
          pattern: \S
          type: string
          description: ÄrendeId från Open-E
          nullable: false
          example: '1'
        caseType:
          allOf:
            - $ref: '#/components/schemas/CaseType'
            - nullable: false
        description:
          type: string
          description: Beskriv kort vad du vill bygga
          example: En fritextbeskrivning av case.
        caseTitleAddition:
          type: string
          description: 'Additions to the case title. Right now only applicable to cases of CaseType: NYBYGGNAD_ANSOKAN_OM_BYGGLOV.'
          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
          description: Diarienummer
      description: Bygglovsärende (ByggR)
    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:
        - roles
        - type
      type: object
      properties:
        type:
          allOf:
            - $ref: '#/components/schemas/StakeholderType'
            - nullable: false
        roles:
          type: array
          description: En intressent kan ha en eller flera roller.
          nullable: false
          items:
            $ref: '#/components/schemas/StakeholderRole'
        phoneNumber:
          type: string
          example: '060121212'
        emailAddress:
          type: string
          example: test.testorsson@test.se
        cellphoneNumber:
          type: string
          example: '0701231212'
        addresses:
          type: array
          description: En intressent kan ha en eller flera adresser. T.ex. en adress av typen POSTAL_ADDRESS och en annan av typen INVOICE_ADDRESS.
          items:
            $ref: '#/components/schemas/Address'
      oneOf:
        - $ref: '#/components/schemas/Person'
        - $ref: '#/components/schemas/Organization'
    StakeholderRole:
      type: string
      description: <h3>Generella-roller:</h3><li>CONTACT_PERSON(Kontaktperson)</li><br><br><h3>Bygglovsärende-roller:</h3><li>CONTROL_OFFICIAL(Kontrollansvarig)</li><li>APPLICANT(Sökande)<li>PROPERTY_OWNER(Fastighetsägare)</li><li>PAYMENT_PERSON(Betalningsansvarig)</li><br><br><h3>Miljökontorärende-roller:</h3><li>INVOICE_RECIPENT(Fakturamottagare)</li><li>OPERATOR(Verksamhetsutövare)</li>
      enum:
        - APPLICANT
        - CONTACT_PERSON
        - CONTROL_OFFICIAL
        - INVOICE_RECIPENT
        - OPERATOR
        - PAYMENT_PERSON
        - PROPERTY_OWNER
    StakeholderType:
      type: string
      enum:
        - ORGANIZATION
        - PERSON
    SystemType:
      type: string
      enum:
        - BYGGR
        - ECOS
  securitySchemes:
    ApiKeyAuth:
      type: apiKey
      in: header
      name: apikey

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

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>