digdir / dialogporten

Dialogporten - common API and and metadata state store for digital dialogs
https://docs.altinn.studio/dialogporten
MIT License
1 stars 3 forks source link

Etablere API for opprettelse / endring / sletting av dialoger/aktivitetshistorikk #30

Closed elsand closed 9 months ago

elsand commented 1 year ago
### Tasks
- [x] Implementere POST-endepunkt for opprettelse av dialog
- [x] Implementere PUT-endepunkt for endring av dialog
- [x] Implementere DELETE-endepunkt for sletting av dialog
- [x] Implementere validering av forespørsel om opprettelse
- [x] Implementere validering av forespørsel om endring
- [x] Håndtere oppdateringer på dialoger som har datoer i fortid (og dermed vil treffe "er i fremtid"-valideringsregler)

Vi legger opp til at alle opprettelse/oppdateringer som gjøres på "barne-entiteter" (pt. er det ikke definert noen) skal håndteres på samme måte som PUT på aggregatet, slik at vi kan ha én Update-kommando i applikasjonslaget.

Valideringsregler

Autorisasjon

Se #44

Akseptansekriterier

GITT en førespørsel til Dialogporten NÅR forespørselen er en POST på dialog-endepunktet skal forespørselen autoriseres og valideres jf kravene over OG createtAt settes til gjeldende tidspunkt OG lagres i databasen OG returnere 204 Created, med GUID for den opprettede dialogen som en JSON-streng i body og en Location-header til dialogen

GITT en førespørsel til Dialogporten NÅR forespørselen er en PUT på dialog-endepunktet skal forespørselen referere en dialog som allerede eksisterer OG valideres jf kravene over OG aktivitetshistorikken må være tom (denne kan ikke overskrives) OG updatedAt settes til gjeldende tidspunkt OG endringen lagres i databasen OG returnere 200 OK med Location-header til dialog

GITT en førespørsel til Dialogporten NÅR forespørselen er en PUT på dialog-endepunktet og det oppgis en If-Match header som ikke matcher ETag på dialog skal forespørselen feile med 412 Precondition Failed (se #109)

GITT en førespørsel til Dialogporten NÅR forespørselen er en DELETE på dialog-endepunktet skal forespørselen referere en dialog som allerede eksisterer OG vallideres jf kravene over OG deletedAt settes til gjeldenden tidspunkt samt deleted=true

elsand commented 1 year ago

Håndtere oppdateringer på dialoger som har datoer i fortid

Som diskutert må vi ha andre valideringsregler for dette på update vs create. Create kan løses gjennom nivå 2-regler (IsInFuture()) mens update må forholde seg til det som allerede ligger i databasen (nivå 3) og sjekke om den er forsøk endret.