Skip to content

Commit

Permalink
OY-5034 Parannettu swagger-kuvauksia
Browse files Browse the repository at this point in the history
  • Loading branch information
jkorri committed Jan 13, 2025
1 parent 5c3e2d4 commit 9a8ebb6
Show file tree
Hide file tree
Showing 3 changed files with 51 additions and 36 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@ import fi.oph.viestinvalitys.vastaanotto.model.Kayttooikeusrajoitukset.Kayttooik
import fi.oph.viestinvalitys.vastaanotto.model.LahetysImpl.LAHETTAVAPALVELU_MAX_PITUUS
import fi.oph.viestinvalitys.vastaanotto.model.Maskit.MaskitBuilder
import fi.oph.viestinvalitys.vastaanotto.model.Viesti.*
import fi.oph.viestinvalitys.vastaanotto.model.ViestiImpl.{VIESTI_IDEMPOTENCY_KEY_SALLITUT_MERKIT, VIESTI_METADATA_ARVOT_MAX_MAARA_STR, VIESTI_METADATA_ARVO_MAX_PITUUS_STR, VIESTI_METADATA_AVAIN_MAX_PITUUS_STR, VIESTI_METADATA_SALLITUT_MERKIT}
import io.swagger.v3.oas.annotations.media.Schema
import io.swagger.v3.oas.annotations.media.Schema.RequiredMode

Expand All @@ -14,35 +15,41 @@ import scala.beans.BeanProperty
import scala.jdk.CollectionConverters.*

object ViestiImpl {
final val OTSIKKO_MAX_PITUUS = 255
final val SISALTO_MAX_PITUUS = 6*1024*1024 // SES-viesteissä maksimikoko 10 megatavua, mennään varmuuden vuoksi reilusti alle

final val VIESTI_MAX_SIZE = VIESTI_MAX_SIZE_MB_STR.toInt * 1024 * 1024
final val VIESTI_MAX_SIZE_MB_STR = "8"

final val VIESTI_NIMI_MAX_PITUUS = 64
final val VIESTI_SALAISUUS_MIN_PITUUS = 8
final val VIESTI_SALAISUUS_MAX_PITUUS = 1024
final val VIESTI_MASKI_MIN_PITUUS = 8
final val VIESTI_MASKI_MAX_PITUUS = 1024
final val VIESTI_METADATA_AVAIN_MAX_PITUUS = 64
final val VIESTI_METADATA_ARVO_MAX_PITUUS = 64
final val VIESTI_METADATA_ARVOT_MAX_MAARA = 1024

final val VIESTI_METADATA_AVAIMET_MAX_MAARA = 1024
final val VIESTI_MASKIT_MAX_MAARA = 32
final val VIESTI_VASTAANOTTAJAT_MAX_MAARA = 512
final val VIESTI_LIITTEET_MAX_MAARA = 128

final val VIESTI_ORGANISAATIO_MAX_PITUUS = 64
final val VIESTI_OIKEUS_MAX_PITUUS = 64
final val VIESTI_KAYTTOOIKEUS_MAX_MAARA = 128

final val VIESTI_IDEMPOTENCY_KEY_MAX_PITUUS = 64
final val VIESTI_IDEMPOTENCY_KEY_MAX_PITUUS_STR = "64"

final val VIESTI_SISALTOTYYPPI_TEXT = "text"
final val VIESTI_SISALTOTYYPPI_HTML = "html"
final val OTSIKKO_MAX_PITUUS = 255
final val SISALTO_MAX_PITUUS = 6*1024*1024 // SES-viesteissä maksimikoko 10 megatavua, mennään varmuuden vuoksi reilusti alle

final val VIESTI_MAX_SIZE = VIESTI_MAX_SIZE_MB_STR.toInt * 1024 * 1024
final val VIESTI_MAX_SIZE_MB_STR = "8"

final val VIESTI_NIMI_MAX_PITUUS = 64
final val VIESTI_SALAISUUS_MIN_PITUUS = 8
final val VIESTI_SALAISUUS_MAX_PITUUS = 1024
final val VIESTI_MASKI_MIN_PITUUS = 8
final val VIESTI_MASKI_MAX_PITUUS = 1024
final val VIESTI_MASKIT_MAX_MAARA = 32

final val VIESTI_METADATA_SALLITUT_MERKIT = "a-z, A-Z, 0-9 ja -_."
final val VIESTI_METADATA_AVAIN_MAX_PITUUS_STR = "64"
final val VIESTI_METADATA_AVAIN_MAX_PITUUS = VIESTI_METADATA_AVAIN_MAX_PITUUS_STR.toInt
final val VIESTI_METADATA_ARVO_MAX_PITUUS_STR = "64"
final val VIESTI_METADATA_ARVO_MAX_PITUUS = VIESTI_METADATA_ARVO_MAX_PITUUS_STR.toInt
final val VIESTI_METADATA_ARVOT_MAX_MAARA_STR = "1024"
final val VIESTI_METADATA_ARVOT_MAX_MAARA = VIESTI_METADATA_ARVOT_MAX_MAARA_STR.toInt
final val VIESTI_METADATA_AVAIMET_MAX_MAARA = 1024

final val VIESTI_VASTAANOTTAJAT_MAX_MAARA = 512
final val VIESTI_LIITTEET_MAX_MAARA = 128

final val VIESTI_ORGANISAATIO_MAX_PITUUS = 64
final val VIESTI_OIKEUS_MAX_PITUUS = 64
final val VIESTI_KAYTTOOIKEUS_MAX_MAARA = 128

final val VIESTI_IDEMPOTENCY_KEY_SALLITUT_MERKIT = "a-z, A-Z, 0-9 ja -_."
final val VIESTI_IDEMPOTENCY_KEY_MAX_PITUUS = 64
final val VIESTI_IDEMPOTENCY_KEY_MAX_PITUUS_STR = "64"

final val VIESTI_SISALTOTYYPPI_TEXT = "text"
final val VIESTI_SISALTOTYYPPI_HTML = "html"
}

/**
Expand Down Expand Up @@ -219,7 +226,11 @@ case class ViestiImpl(
@(Schema @field)(requiredMode=RequiredMode.REQUIRED, minimum=LahetysImpl.SAILYTYSAIKA_MIN_PITUUS_STR, maximum=LahetysImpl.SAILYTYSAIKA_MAX_PITUUS_STR, example = "365")
@BeanProperty sailytysaika: Optional[Integer],

@(Schema @field)(example = "{ \"key\": [\"value1\", \"value2\"] }", maxLength = ViestiImpl.VIESTI_METADATA_ARVOT_MAX_MAARA)
@(Schema @field)(example = "{ \"key\": [\"value1\", \"value2\"] }", maxLength = ViestiImpl.VIESTI_METADATA_AVAIMET_MAX_MAARA, description =
"Avaimen maksimipituus on " + VIESTI_METADATA_AVAIN_MAX_PITUUS_STR + " merkkiä, " +
"arvon maksimipituus on " + VIESTI_METADATA_ARVO_MAX_PITUUS_STR + " merkkiä, " +
"sallittuja merkkejä ovat " + VIESTI_METADATA_SALLITUT_MERKIT + " " +
"Yksittäisellä avaimella voi olla enintään " + VIESTI_METADATA_ARVOT_MAX_MAARA_STR + " arvoa")
@BeanProperty metadata: Optional[util.Map[String, util.List[String]]],

@(Schema@field)(description = "Täytyy olla saman käyttäjän (cas-identiteetti) luoma, jos tyhjä luodaan automaattisesti.", example = " ", nullable = true)
Expand All @@ -228,7 +239,8 @@ case class ViestiImpl(
@(Schema@field)(example = "hakemuspalvelu", maxLength = LAHETTAVAPALVELU_MAX_PITUUS)
@BeanProperty lahettavaPalvelu: Optional[String],

@(Schema@field)(description = "Lähettävän palvelun määrittelemä viestikohtainen yksilöivä avain jolla varmistetaan ettei samaa viestiä lähetetä kahdesti", example = "12345", maxLength = ViestiImpl.VIESTI_IDEMPOTENCY_KEY_MAX_PITUUS)
@(Schema@field)(description = "Lähettävän palvelun määrittelemä viestikohtainen yksilöivä avain jolla varmistetaan ettei samaa viestiä lähetetä kahdesti. Sallittuja merkkejä ovat " +
VIESTI_IDEMPOTENCY_KEY_SALLITUT_MERKIT, example = "12345", maxLength = ViestiImpl.VIESTI_IDEMPOTENCY_KEY_MAX_PITUUS)
@BeanProperty idempotencyKey: Optional[String],

@(Schema@field)(maxLength = ViestiImpl.VIESTI_KAYTTOOIKEUS_MAX_MAARA)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -121,8 +121,11 @@ class ViestiResource {
"- Yksittäinen järjestelmä voi lähettää vain yhden korkean prioriteetin pyynnön sekunnissa, " +
"nopeampi lähetystahti voi johtaa 429-vastaukseen\n" +
"- Viestin mukana on mahdollista antaa enintään " + ViestiImpl.VIESTI_IDEMPOTENCY_KEY_MAX_PITUUS_STR + " merkin pituinen " +
"idempotency-avain, jonka avulla voidaan varmistaa ettei samaa viestiä lähetetä kahdesti. Mikäli annetulla avaimella " +
"löytyy jo viesti palautetaan tämän viestin tiedot. HUOMAA tämä myös käyttäessäsi rajapintaa swaggerin kautta!"
" merkin pituinen idempotency-avain, jonka avulla voidaan varmistaa ettei samaa viestiä lähetetä kahdesti. Mikäli annetulla avaimella " +
"löytyy jo viesti palautetaan tämän viestin tiedot. HUOMAA tämä myös käyttäessäsi rajapintaa swaggerin kautta!\n" +
"- <b>HUOMAA ERITYISESTI</b> jos käytetään idempotency-avainta ja viesti on palasteltu useammaksi viestiksi koska vastaanottajia on enemmän " +
"kuin yhden viestin maksimivastaanottajamäärä. Eri viesteillä täytyy olla eri idempotency-avain tai viesti lähetetään vain ensimmäisenä vuorossa oleville " +
"vastaanottajille ja seuraavat kutsut palauttavat tämän ensimmäisen viestin tiedot!"
@PostMapping(
path = Array(LUO_VIESTI_PATH),
consumes = Array(MediaType.APPLICATION_JSON_VALUE),
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -65,15 +65,15 @@ object ViestiValidator:
final val VALIDATION_LAHETYSTUNNISTE_EI_TARJOLLA = "lähetysTunniste: tunnistetta ei ole järjestelmässä tai käyttäjällä ei ole siihen oikeuksia"

final val VALIDATION_IDEMPOTENCY_KEY_LIIAN_PITKA = "idempotencyKey: Idempotency-avain ei voi pidempi kuin " + VIESTI_IDEMPOTENCY_KEY_MAX_PITUUS + " merkkiä"
final val VALIDATION_IDEMPOTENCY_KEY_INVALID = "idempotencyKey: Sallitut merkit ovat A-Z, a-z, 0-9, -_."
final val VALIDATION_IDEMPOTENCY_KEY_INVALID = "idempotencyKey: Sallitut merkit ovat " + VIESTI_IDEMPOTENCY_KEY_SALLITUT_MERKIT

final val VALIDATION_METADATA_NULL = "metadata: Seuraavat avaimet sisältävät null-arvoja: "
final val VALIDATION_METADATA_DUPLICATE = "metadata: Seuraavat avaimet sisältää duplikaattiarvoja: "
final val VALIDATION_METADATA_AVAIMET_MAARA = "metadata: Metadata voi sisältää maksimissaan " + VIESTI_METADATA_AVAIMET_MAX_MAARA + " avainta"
final val VALIDATION_METADATA_AVAIN_INVALID = "avaimessa sallitut merkit ovat a-z, A-Z, 0-9 ja -_."
final val VALIDATION_METADATA_AVAIN_INVALID = "avaimessa sallitut merkit ovat " + VIESTI_METADATA_SALLITUT_MERKIT
final val VALIDATION_METADATA_AVAIN_PITUUS = "avain on yli maksimipituuden " + VIESTI_METADATA_AVAIN_MAX_PITUUS + " merkkiä"
final val VALIDATION_METADATA_ARVOT_MAARA = "avain sisältää yli " + VIESTI_METADATA_ARVOT_MAX_MAARA + " arvoa"
final val VALIDATION_METADATA_ARVO_INVALID = "arvossa sallitut merkit ovat a-z, A-Z, 0-9 ja -_."
final val VALIDATION_METADATA_ARVO_INVALID = "arvossa sallitut merkit ovat " + VIESTI_METADATA_SALLITUT_MERKIT
final val VALIDATION_METADATA_ARVO_PITUUS = "arvo on yli maksimipituuden " + VIESTI_METADATA_ARVO_MAX_PITUUS + " merkkiä: "

final val VALIDATION_KAYTTOOIKEUSRAJOITUS_NULL = "kayttooikeusRajoitukset: Kenttä sisältää null-arvoja"
Expand Down

0 comments on commit 9a8ebb6

Please sign in to comment.