Versions Compared

Key

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

Beskrivning

Funktion för att registrera påminnelser, och skicka ut dem.

I kommande steg kan påminnelser komma att triggas utifrån.

Livscykelstatus

Design

Lösningsbeskrivning

Gliffy
imageAttachmentIdatt826179599
macroId4a9f70e6-1685-4918-84f6-0633586f01dc
baseUrlhttps://sundsvall.atlassian.net/wiki
nameremindAndInformAPI
diagramAttachmentIdatt826114052
containerId823558153
timestamp1634907453023

Datamodell reminders (draft)

  • personId (den som vill ha påminnelsen)

  • companyId (vilket av de företag personen representerar som påminnelsen avser - är tom om den är en privat påminnelse)

  • todo (fritext - exempel: “Förnya ansökan skyltlov”)

  • caseId (ärendenummer i Open-E t ex - exempel: “23456” - ej obligatoriskt)

  • caseLink (länk till ärendet i Open-E t ex för ärendet med caseId ovan - ej obligatorisk)

  • reminderDate (när skall påminnelsen skickas ut)

Utskick av påminnelser

Att köras en gång per dygn:

För alla reminders i databasen som har reminderDate idag:

  1. Hämta kontaktuppgifter från feedbackSettings

  2. Skicka påminnelsen som e-post eller SMS (beroende på uppgifterna från feedbackSettings) via messaging

Hantering av personuppgifter

PersonId används för att knyta påminnelser till en specifik individ.

API specifikation

(draft) - exempelGET

Swagger ui
---
openapi: 3.0.2
info:
  title: RemindAndInform API
  version: 1.0.0-SNAPSHOT
tags:
- name: Reminder
  description: Remind operations
paths:
  /reminders:
    post:
      tags:
      - Reminder
      summary: Create a new reminder.
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ReminderRequest'
        required: true
      responses:
        "200":
          description: Successful operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Reminder'
        "400":
          description: Bad request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ServiceErrorResponse'
        "500":
          description: Internal Server error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ServiceErrorResponse'
  /reminders/persons/{personId}

Response body:

Code Block
[ {
  "reminderId": "R-:
    get:
      tags:
      - Reminder
      summary: Returns all reminders for a person.
      parameters:
      - name: personId
        in: path
        description: Person ID
        required: true
        schema:
          type: string
        example: 81471222-5798-11e9-ae24-57fa13b361e1",
      responses:
        "200":
          description: Successful operation
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/Reminder'
        "personId400":
          description: Bad request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ServiceErrorResponse'
        "500":
          description: Internal Server error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ServiceErrorResponse'
  /reminders/persons/{personId}/companies/{companyId}:
    get:
      tags:
      - Reminder
      summary: Returns all reminders for a person and a company which the person represent.
      parameters:
      - name: companyId
        in: path
        description: Company ID
        required: true
        schema:
          pattern: \S
          type: string
          nullable: false
        example: 5565112233
      - name: personId
        in: path
        description: Person ID
        required: true
        schema:
          type: string
        example: 81471222-5798-11e9-ae24-57fa13b361e2",57fa13b361e1
      responses:
        "companyId": "",
  "action": "Hämta på dagis",
  "caseId": "",
  "caseLink": "",
  "reminderDate": "2021-11-11"
}, {
  "reminderId": "200":
          description: Successful operation
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/Reminder'
        "400":
          description: Bad request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ServiceErrorResponse'
        "500":
          description: Internal Server error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ServiceErrorResponse'
  /reminders/send:
    post:
      tags:
      - Reminder
      summary: Send reminders.
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/SendRemindersRequest'
        required: true
      responses:
        "204":
          description: Successful operation
        "400":
          description: Bad request
          content: {}
        "500":
          description: Internal Server error
          content: {}
  /reminders/{reminderId}:
    delete:
      tags:
      - Reminder
      summary: Deletes a reminder.
      parameters:
      - name: reminderId
        in: path
        description: Reminder ID
        required: true
        schema:
          pattern: \S
          type: string
          nullable: false
        example: R-81471222-5798-11e9-ae24-57fa13b361e1",
      responses:
        "204":
          description: Successful operation
        "personId": "400":
          description: Bad request
          content: {}
        "500":
          description: Internal Server error
          content: {}
    patch:
      tags:
      - Reminder
      summary: Manage updates of a reminder.
      parameters:
      - name: reminderId
        in: path
        description: Reminder ID
        required: true
        schema:
          pattern: \S
          type: string
          nullable: false
        example: R-81471222-5798-11e9-ae24-57fa13b361e2",57fa13b361e1
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/UpdateReminderRequest'
        required: true
      responses:
        "companyId": "5566344434",
  "action": "Förnya alkoholtillstånd",
  "caseId": "123456",
  "caseLink": "open-e.sundsvall.se/somethingsomething",
  "reminderDate": "2022-09-11"
}]

GET /persons/{personId}/companies/{companyId}

Response body:

Code Block
[ {
  "reminderId": "200":
          description: Successful operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Reminder'
        "400":
          description: Bad request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ServiceErrorResponse'
        "500":
          description: Internal Server error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ServiceErrorResponse'
components:
  schemas:
    Reminder:
      description: Reminder model
      type: object
      properties:
        reminderId:
          description: Reminder ID
          type: string
          example: R-81471222-5798-11e9-ae24-57fa13b361e1",
        "personId": "personId:
          description: Person ID
          type: string
          example: 81471222-5798-11e9-ae24-57fa13b361e2",
        "companyId"companyId:
          description: Company ID
          type: string
          example: "5566344434",5565112233"
        "action": "Förnya alkoholtillstånd",
  "caseId": "123456",
  "caseLink": "open-e.sundsvall.se/somethingsomething",
  "reminderDate": "2022-09-11"
} ]

POST /reminders

Request body:

Code Block
{
  "personId": "15aee472-46ab-4f03-9605-68bd64ebc73f",
  "companyId": "5566344434",
  "action": "Förnya alkoholtillstånd",
  "caseId": "123456",
  "caseLink": "open-e.sundsvall.se/somethingsomething",
  "reminderDate": "2022-09-11"
}

PATCH /reminders/{reminderId}

Request body:

Code Block
{
  "reminderId": "R-action:
          description: What should be done
          type: string
          example: Renew application
        caseId:
          description: Case ID
          type: string
          example: "12345"
        caseLink:
          description: Link to the case
          type: string
          example: http://test.sundsvall.se/case12345
        reminderDate:
          format: date
          description: Date for reminding
          type: string
          example: 2021-11-01
    ReminderRequest:
      description: Reminder creation request model
      required:
      - personId
      - action
      - reminderDate
      type: object
      properties:
        personId:
          description: Person Id
          type: string
          example: 81471222-5798-11e9-ae24-57fa13b361e1
          nullable: false
        companyId:
          description: Company Id
          maxLength: 10
          type: string
          example: "5565445566"
        action:
          description: What should be done
          maxLength: 8192
          type: string
          example: Renew application
          nullable: false
        caseId:
          description: Id for the case
          maxLength: 255
          type: string
          example: "12345"
        caseLink:
          description: Link to the case
          maxLength: 512
          type: string
          example: http://test.sundsvall.se/case1337
        reminderDate:
          format: date
          description: Date for reminding
          type: string
          example: 2021-11-01
          nullable: false
    SendRemindersRequest:
      description: Request model for sending reminders of a specified date
      required:
      - reminderDate
      type: object
      properties:
        reminderDate:
          format: date
          description: Date for reminding
          type: string
          example: 2021-11-01
          nullable: false
    ServiceErrorResponse:
      type: object
      properties:
        httpCode:
          format: int32
          type: integer
        message:
          type: string
        technicalDetails:
          $ref: '#/components/schemas/TechnicalDetails'
    TechnicalDetails:
      type: object
      properties:
        rootCode:
          format: int32
          type: integer
        rootCause:
          type: string
        serviceId:
          type: string
        details:
          type: array
          items:
            type: string
    UpdateReminderRequest:
      description: Reminder update request model
      type: object
      properties:
        personId:
          description: Person Id
          type: string
          example: 81471222-5798-11e9-ae24-57fa13b361e1",
        "companyId"companyId:
          description: Company Id
          maxLength: 10
          type: string
          example: "5566344434",5565445566"
        "action": "Förnya alkoholtillstånd",
  "caseId": "123456",
  "caseLink": "open-e.sundsvall.se/somethingsomething",
  "reminderDate": "2022-09-11"
}

DELETE /reminders/{reminderId}

Response:

Status-code: 204

POST /reminders/send

Request body:

Code Block
{
  "reminderDate": "2022-09-11"
}

Response:

Status-code: 204

Säkerhetsklassning
action:
          description: What should be done
          maxLength: 8192
          type: string
          example: Renew application
        caseId:
          description: Id for the case
          maxLength: 255
          type: string
          example: "12345"
        caseLink:
          description: Link to the case
          maxLength: 512
          type: string
          example: http://test.sundsvall.se/case1337
        reminderDate:
          format: date
          description: Date for reminding
          type: string
          example: 2021-11-01

Säkerhetsklass 1

Autentiseringsmetod: Oauth2

(Ref: Säkerhetsklassning av APIer )

API-ägare

<Kontaktuppgifter till den verksamhet som äger APIets livscykel>

Teknisk ägare

<Kontaktuppgifter till utvecklare/teknisk förvaltare>

Länkar

<Länkar till dev-portal;

  • Test

  • Sandbox

  • Produktion>

FAQ

<FAQ>