Skip to content

Commit 3bbb30b

Browse files
PI-2575 Initial integration for creating person records (#4319)
* PI-2575 - Create common-platform-and-delius service * Formatting changes * PI-2575 - Update handler tests * Formatting changes * PI-2575 - Test Fixes + changed court code lookup to use nationalCourtCode db column on COURT table * PI-2575 - Insert address logic implemented * Formatting changes * PI-2575 - Added notifier to publish sns messages (probation-case.engagement.created) when insert person is performed * Formatting changes * PI-2575 - Entity changes to match delius database - Removed oracle profile from application.yml * Formatting changes * PI-2575 - Added Address sns created notification - Filter hearing message to cases containing judicial results with label Remanded in custody * Formatting changes * PI-2575 - PR Review Feedback * Formatting changes * PI-2575 - PR Review Feedback * PI-2575 - PR Review Feedback --------- Co-authored-by: probation-integration-bot[bot] <177347787+probation-integration-bot[bot]@users.noreply.github.com>
1 parent 1ed05b6 commit 3bbb30b

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

42 files changed

+1983
-102
lines changed

projects/common-platform-and-delius/deploy/database/access.yml

+10-1
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,16 @@ database:
33
username_key: /common-platform-and-delius/db-username
44
password_key: /common-platform-and-delius/db-password
55

6+
tables:
7+
- offender
8+
- offender_manager
9+
- equality
10+
- audited_interaction
11+
- address
12+
packages:
13+
- offender_support_api # for generating crn
14+
615
audit:
716
username: CommonPlatformAndDelius
817
forename: Common Platform
9-
surname: Service
18+
surname: Service

projects/common-platform-and-delius/deploy/values-dev.yml

-2
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,3 @@
1-
enabled: false
2-
31
generic-service:
42
ingress:
53
host: common-platform-and-delius-dev.hmpps.service.justice.gov.uk

projects/common-platform-and-delius/deploy/values-preprod.yml

-2
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,3 @@
1-
enabled: false
2-
31
generic-service:
42
ingress:
53
host: common-platform-and-delius-preprod.hmpps.service.justice.gov.uk

projects/common-platform-and-delius/deploy/values.yaml

+2
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,8 @@ generic-service:
2323
SENTRY_DSN: SENTRY_DSN
2424
common-platform-and-delius-queue:
2525
MESSAGING_CONSUMER_QUEUE: QUEUE_NAME
26+
hmpps-domain-events-topic:
27+
MESSAGING_PRODUCER_TOPIC: topic_arn
2628

2729
generic-prometheus-alerts:
2830
targetApplication: common-platform-and-delius
Original file line numberDiff line numberDiff line change
@@ -1,16 +1,19 @@
11
package uk.gov.justice.digital.hmpps.data
22

33
import jakarta.annotation.PostConstruct
4+
import jakarta.persistence.EntityManager
45
import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty
56
import org.springframework.boot.context.event.ApplicationReadyEvent
67
import org.springframework.context.ApplicationListener
78
import org.springframework.stereotype.Component
8-
import uk.gov.justice.digital.hmpps.data.generator.UserGenerator
9+
import org.springframework.transaction.annotation.Transactional
10+
import uk.gov.justice.digital.hmpps.data.generator.*
911
import uk.gov.justice.digital.hmpps.user.AuditUserRepository
1012

1113
@Component
1214
@ConditionalOnProperty("seed.database")
1315
class DataLoader(
16+
private val entityManager: EntityManager,
1417
private val auditUserRepository: AuditUserRepository
1518
) : ApplicationListener<ApplicationReadyEvent> {
1619

@@ -19,7 +22,26 @@ class DataLoader(
1922
auditUserRepository.save(UserGenerator.AUDIT_USER)
2023
}
2124

25+
@Transactional
2226
override fun onApplicationEvent(are: ApplicationReadyEvent) {
23-
// Perform dev/test database setup here, using JPA repositories and generator classes...
27+
entityManager.run {
28+
persist(BusinessInteractionGenerator.INSERT_PERSON)
29+
persist(BusinessInteractionGenerator.INSERT_ADDRESS)
30+
persist(DatasetGenerator.GENDER)
31+
persist(DatasetGenerator.OM_ALLOCATION_REASON)
32+
persist(DatasetGenerator.ADDRESS_STATUS)
33+
persist(DatasetGenerator.ADDRESS_TYPE)
34+
persist(ReferenceDataGenerator.GENDER_MALE)
35+
persist(ReferenceDataGenerator.GENDER_FEMALE)
36+
persist(ReferenceDataGenerator.INITIAL_ALLOCATION)
37+
persist(ReferenceDataGenerator.MAIN_ADDRESS_STATUS)
38+
persist(ReferenceDataGenerator.AWAITING_ASSESSMENT)
39+
persist(ProviderGenerator.DEFAULT)
40+
persist(TeamGenerator.ALLOCATED)
41+
persist(TeamGenerator.UNALLOCATED)
42+
persist(StaffGenerator.UNALLOCATED)
43+
persist(StaffGenerator.ALLOCATED)
44+
persist(CourtGenerator.UNKNOWN_COURT_N07_PROVIDER)
45+
}
2446
}
2547
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
package uk.gov.justice.digital.hmpps.data.generator
2+
3+
import uk.gov.justice.digital.hmpps.audit.BusinessInteraction
4+
import uk.gov.justice.digital.hmpps.integrations.delius.audit.BusinessInteractionCode
5+
import java.time.ZonedDateTime
6+
7+
object BusinessInteractionGenerator {
8+
val INSERT_PERSON = BusinessInteraction(
9+
IdGenerator.getAndIncrement(),
10+
BusinessInteractionCode.INSERT_PERSON.code,
11+
ZonedDateTime.now().minusMonths(6)
12+
)
13+
val INSERT_ADDRESS = BusinessInteraction(
14+
IdGenerator.getAndIncrement(),
15+
BusinessInteractionCode.INSERT_ADDRESS.code,
16+
ZonedDateTime.now().minusMonths(6)
17+
)
18+
}
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,16 @@
11
package uk.gov.justice.digital.hmpps.data.generator
22

3-
import uk.gov.justice.digital.hmpps.message.HmppsDomainEvent
3+
import uk.gov.justice.digital.hmpps.messaging.CommonPlatformHearing
44
import uk.gov.justice.digital.hmpps.resourceloader.ResourceLoader
55

66
object MessageGenerator {
7-
val EXAMPLE = ResourceLoader.message<HmppsDomainEvent>("example-message")
7+
val COMMON_PLATFORM_EVENT = ResourceLoader.message<CommonPlatformHearing>("common-platform-hearing")
8+
val COMMON_PLATFORM_EVENT_DOB_ERROR =
9+
ResourceLoader.message<CommonPlatformHearing>("common-platform-hearing-dob-error")
10+
val COMMON_PLATFORM_EVENT_NO_CASES =
11+
ResourceLoader.message<CommonPlatformHearing>("common-platform-hearing-no-cases")
12+
val COMMON_PLATFORM_EVENT_BLANK_ADDRESS =
13+
ResourceLoader.message<CommonPlatformHearing>("common-platform-hearing-blank-address")
14+
val COMMON_PLATFORM_EVENT_NO_REMAND =
15+
ResourceLoader.message<CommonPlatformHearing>("common-platform-hearing-no-remand")
816
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
package uk.gov.justice.digital.hmpps.data.generator
2+
3+
import uk.gov.justice.digital.hmpps.integrations.delius.entity.Person
4+
import uk.gov.justice.digital.hmpps.integrations.delius.person.entity.PersonAddress
5+
import java.time.LocalDate
6+
7+
object PersonAddressGenerator {
8+
val MAIN_ADDRESS = generate(person = PersonGenerator.DEFAULT)
9+
10+
fun generate(
11+
id: Long? = IdGenerator.getAndIncrement(),
12+
person: Person,
13+
notes: String? = null,
14+
postcode: String? = null,
15+
) = PersonAddress(
16+
id = id,
17+
start = LocalDate.now(),
18+
status = ReferenceDataGenerator.MAIN_ADDRESS_STATUS,
19+
person = person,
20+
notes = notes,
21+
postcode = postcode,
22+
type = ReferenceDataGenerator.AWAITING_ASSESSMENT
23+
)
24+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,51 @@
1+
package uk.gov.justice.digital.hmpps.data.generator
2+
3+
import uk.gov.justice.digital.hmpps.integrations.delius.entity.*
4+
import java.time.LocalDate
5+
import java.time.LocalDateTime
6+
import java.util.*
7+
import kotlin.random.Random
8+
9+
object PersonGenerator {
10+
val DEFAULT = generate(crn = "A000001")
11+
12+
fun generate(
13+
crn: String,
14+
id: Long? = IdGenerator.getAndIncrement()
15+
) = Person(
16+
id = id,
17+
crn = crn,
18+
forename = UUID.randomUUID().toString().substring(0, 15),
19+
surname = UUID.randomUUID().toString().substring(0, 15),
20+
dateOfBirth = LocalDate.now().minusYears(Random.nextInt(16, 76).toLong()),
21+
gender = if (Random.nextBoolean()) ReferenceDataGenerator.GENDER_MALE else ReferenceDataGenerator.GENDER_FEMALE,
22+
surnameSoundex = "surnameSoundex",
23+
firstNameSoundex = "firstNameSoundex",
24+
middleNameSoundex = null
25+
)
26+
}
27+
28+
object PersonManagerGenerator {
29+
30+
val DEFAULT = generate(person = PersonGenerator.DEFAULT)
31+
32+
fun generate(
33+
id: Long = IdGenerator.getAndIncrement(),
34+
person: Person,
35+
provider: Provider = ProviderGenerator.DEFAULT,
36+
team: Team = TeamGenerator.UNALLOCATED,
37+
staff: Staff = StaffGenerator.UNALLOCATED,
38+
allocationDate: LocalDateTime = LocalDateTime.of(1900, 1, 1, 0, 0),
39+
allocationReason: ReferenceData = ReferenceDataGenerator.INITIAL_ALLOCATION
40+
) = PersonManager(
41+
id = id,
42+
person = person,
43+
provider = provider,
44+
staff = staff,
45+
staffEmployeeID = staff.id,
46+
team = team,
47+
trustProviderTeamId = team.id,
48+
allocationDate = allocationDate,
49+
allocationReason = allocationReason
50+
)
51+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,57 @@
1+
package uk.gov.justice.digital.hmpps.data.generator
2+
3+
import uk.gov.justice.digital.hmpps.data.generator.DatasetGenerator.ADDRESS_STATUS
4+
import uk.gov.justice.digital.hmpps.data.generator.DatasetGenerator.ADDRESS_TYPE
5+
import uk.gov.justice.digital.hmpps.data.generator.DatasetGenerator.GENDER
6+
import uk.gov.justice.digital.hmpps.data.generator.DatasetGenerator.OM_ALLOCATION_REASON
7+
import uk.gov.justice.digital.hmpps.integrations.delius.entity.*
8+
9+
object ReferenceDataGenerator {
10+
11+
val GENDER_FEMALE = generate(ReferenceData.GenderCode.FEMALE.deliusValue, GENDER.id, "Female")
12+
val GENDER_MALE = generate(ReferenceData.GenderCode.MALE.deliusValue, GENDER.id, "Male")
13+
val INITIAL_ALLOCATION = generate(
14+
ReferenceData.StandardRefDataCode.INITIAL_ALLOCATION.code,
15+
OM_ALLOCATION_REASON.id,
16+
"Initial Allocation"
17+
)
18+
val MAIN_ADDRESS_STATUS =
19+
generate(ReferenceData.StandardRefDataCode.ADDRESS_MAIN_STATUS.code, ADDRESS_STATUS.id, "Main")
20+
val AWAITING_ASSESSMENT =
21+
generate(ReferenceData.StandardRefDataCode.AWAITING_ASSESSMENT.code, ADDRESS_TYPE.id, "Awaiting Assessment")
22+
23+
fun generate(
24+
code: String,
25+
datasetId: Long,
26+
description: String = "Description of $code",
27+
id: Long = IdGenerator.getAndIncrement()
28+
) = ReferenceData(id = id, code = code, datasetId = datasetId, description = description)
29+
}
30+
31+
object DatasetGenerator {
32+
val ALL_DATASETS = DatasetCode.entries.map { Dataset(IdGenerator.getAndIncrement(), it) }.associateBy { it.code }
33+
val GENDER = ALL_DATASETS[DatasetCode.GENDER]!!
34+
val OM_ALLOCATION_REASON = ALL_DATASETS[DatasetCode.OM_ALLOCATION_REASON]!!
35+
val ADDRESS_TYPE = ALL_DATASETS[DatasetCode.ADDRESS_TYPE]!!
36+
val ADDRESS_STATUS = ALL_DATASETS[DatasetCode.ADDRESS_STATUS]!!
37+
}
38+
39+
object CourtGenerator {
40+
val UNKNOWN_COURT_N07_PROVIDER = generate(code = "UNKNCT", ouCode = "A00AA00")
41+
42+
fun generate(
43+
id: Long = IdGenerator.getAndIncrement(),
44+
code: String,
45+
selectable: Boolean = true,
46+
courtName: String = "Court not known",
47+
provider: Provider = ProviderGenerator.DEFAULT,
48+
ouCode: String? = null,
49+
) = Court(
50+
id = id,
51+
code = code,
52+
selectable = selectable,
53+
name = courtName,
54+
provider = provider,
55+
ouCode = ouCode
56+
)
57+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,42 @@
1+
package uk.gov.justice.digital.hmpps.data.generator
2+
3+
import uk.gov.justice.digital.hmpps.integrations.delius.entity.Provider
4+
import uk.gov.justice.digital.hmpps.integrations.delius.entity.Staff
5+
import uk.gov.justice.digital.hmpps.integrations.delius.entity.Team
6+
import java.util.concurrent.atomic.AtomicLong
7+
8+
object StaffGenerator {
9+
val UNALLOCATED = generate("N07UATU")
10+
val ALLOCATED = generate("N07T01A")
11+
fun generate(
12+
code: String,
13+
id: Long = IdGenerator.getAndIncrement(),
14+
) =
15+
Staff(code = code, id = id)
16+
}
17+
18+
object ProviderGenerator {
19+
val DEFAULT = generate()
20+
fun generate(id: Long = IdGenerator.getAndIncrement()) = Provider(
21+
id = id,
22+
selectable = true,
23+
code = "N07",
24+
description = "London",
25+
endDate = null,
26+
)
27+
}
28+
29+
object TeamGenerator {
30+
private val teamCodeGenerator = AtomicLong(1)
31+
val ALLOCATED = generate(code = "N07T01")
32+
val UNALLOCATED = generate(code = "N07UAT")
33+
34+
fun generate(
35+
code: String = "N07${teamCodeGenerator.getAndIncrement().toString().padStart(3, '0')}",
36+
description: String = "Description of Team $code",
37+
) = Team(
38+
id = IdGenerator.getAndIncrement(),
39+
code = code,
40+
description = description,
41+
)
42+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
DROP SCHEMA IF EXISTS offender_support_api CASCADE;
2+
3+
CREATE SCHEMA offender_support_api;
4+
5+
CREATE ALIAS offender_support_api.getNextCRN AS
6+
'String getNextCRN() {
7+
return "A111111";
8+
}';
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
CREATE OR REPLACE PACKAGE offender_support_api AS
2+
FUNCTION getNextCRN RETURN VARCHAR2;
3+
END offender_support_api;
4+
5+
GRANT EXECUTE ON offender_support_api TO delius_app_schema;
6+
7+
CREATE OR REPLACE PACKAGE BODY offender_support_api AS
8+
FUNCTION getNextCRN RETURN VARCHAR2 IS
9+
BEGIN
10+
RETURN 'A111111';
11+
END getNextCRN;
12+
END offender_support_api;
13+
/
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
{
2+
"Type": "Notification",
3+
"MessageId": "aa2c2828-167f-529b-8e19-73735a2fb85c",
4+
"TopicArn": "arn:aws:sns:eu-west-2:000000000000:example",
5+
"Message": "{\"hearing\":{\"id\":\"00000000-0000-0000-0000-000000000000\",\"courtCentre\":{\"id\":\"00000000-0000-0000-0000-000000000000\",\"code\":\"A00AA00\",\"roomId\":\"00000000-0000-0000-0000-000000000000\",\"roomName\":\"Courtroom 01\"},\"type\":{\"id\":\"00000000-0000-0000-0000-000000000000\",\"description\":\"First hearing\",\"welshDescription\":null},\"jurisdictionType\":\"MAGISTRATES\",\"hearingDays\":[{\"sittingDay\":\"2024-01-01T12:00:00\",\"listedDurationMinutes\":30,\"listingSequence\":1}],\"prosecutionCases\":[{\"id\":\"00000000-0000-0000-0000-000000000000\",\"initiationCode\":\"A\",\"prosecutionCaseIdentifier\":{\"prosecutionAuthorityCode\":\"AAAAA\",\"prosecutionAuthorityId\":\"00000000-0000-0000-0000-000000000000\",\"caseURN\":\"00AA000000\"},\"defendants\":[{\"id\":\"00000000-0000-0000-0000-000000000000\",\"offences\":[{\"id\":\"00000000-0000-0000-0000-000000000000\",\"offenceDefinitionId\":\"00000000-0000-0000-0000-000000000000\",\"offenceCode\":\"AA00000\",\"offenceTitle\":\"Example Offense Title\",\"wording\":\"Example of the offense committed\",\"offenceLegislation\":\"Example legislation\",\"listingNumber\":1,\"judicialResults\":[{\"isConvictedResult\":true,\"label\":\"Remanded in custody\",\"judicialResultTypeId\":\"00000000-0000-0000-0000-000000000000\",\"resultText\":\"RI - Remanded in custody\"}],\"plea\":null,\"verdict\":null}],\"prosecutionCaseId\":\"00000000-0000-0000-0000-000000000000\",\"personDefendant\":{\"personDetails\":{\"gender\":\"MALE\",\"lastName\":\"Example Last Name\",\"middleName\":null,\"firstName\":\"Example First Name\",\"dateOfBirth\":\"2000-01-01\",\"address\":{\"address1\":null,\"address2\":null,\"address3\":null,\"address4\":null,\"address5\":null,\"postcode\":null},\"contact\":{\"home\":null,\"mobile\":\"07000000000\",\"work\":null},\"ethnicity\":{\"observedEthnicityDescription\":\"White\",\"selfDefinedEthnicityDescription\":\"British\"}}},\"legalEntityDefendant\":null,\"masterDefendantId\":\"00000000-0000-0000-0000-000000000000\",\"pncId\":\"00000000000A\",\"croNumber\":\"000000/00A\"}],\"caseStatus\":\"ACTIVE\",\"caseMarkers\":[]}]}}",
6+
"Timestamp": "2022-07-27T14:22:08.509Z",
7+
"SignatureVersion": "1",
8+
"Signature": "EXAMPLE",
9+
"SigningCertURL": "https://sns.eu-west-2.amazonaws.com/EXAMPLE.pem",
10+
"UnsubscribeURL": "https://sns.eu-west-2.amazonaws.com/?Action=Unsubscribe&SubscriptionArn=EXAMPLE",
11+
"MessageAttributes": {
12+
"messageType": {
13+
"Type": "String",
14+
"Value": "COMMON_PLATFORM_HEARING"
15+
},
16+
"hearingEventType": {
17+
"Type": "String",
18+
"Value": "ConfirmedOrUpdated"
19+
}
20+
}
21+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
{
2+
"Type": "Notification",
3+
"MessageId": "aa2c2828-167f-529b-8e19-73735a2fb85c",
4+
"TopicArn": "arn:aws:sns:eu-west-2:000000000000:example",
5+
"Message": "{\"hearing\":{\"id\":\"00000000-0000-0000-0000-000000000000\",\"courtCentre\":{\"id\":\"00000000-0000-0000-0000-000000000000\",\"code\":\"A00AA00\",\"roomId\":\"00000000-0000-0000-0000-000000000000\",\"roomName\":\"Courtroom 01\"},\"type\":{\"id\":\"00000000-0000-0000-0000-000000000000\",\"description\":\"First hearing\",\"welshDescription\":null},\"jurisdictionType\":\"MAGISTRATES\",\"hearingDays\":[{\"sittingDay\":\"2024-01-01T12:00:00\",\"listedDurationMinutes\":30,\"listingSequence\":1}],\"prosecutionCases\":[{\"id\":\"00000000-0000-0000-0000-000000000000\",\"initiationCode\":\"A\",\"prosecutionCaseIdentifier\":{\"prosecutionAuthorityCode\":\"AAAAA\",\"prosecutionAuthorityId\":\"00000000-0000-0000-0000-000000000000\",\"caseURN\":\"00AA000000\"},\"defendants\":[{\"id\":\"00000000-0000-0000-0000-000000000000\",\"offences\":[{\"id\":\"00000000-0000-0000-0000-000000000000\",\"offenceDefinitionId\":\"00000000-0000-0000-0000-000000000000\",\"offenceCode\":\"AA00000\",\"offenceTitle\":\"Example Offense Title\",\"wording\":\"Example of the offense committed\",\"offenceLegislation\":\"Example legislation\",\"listingNumber\":1,\"judicialResults\":[{\"isConvictedResult\":true,\"label\":\"Remanded in custody\",\"judicialResultTypeId\":\"00000000-0000-0000-0000-000000000000\",\"resultText\":\"RI - Remanded in custody\"}],\"plea\":null,\"verdict\":null}],\"prosecutionCaseId\":\"00000000-0000-0000-0000-000000000000\",\"personDefendant\":{\"personDetails\":{\"gender\":\"MALE\",\"lastName\":\"Example Last Name\",\"middleName\":null,\"firstName\":\"Example First Name\",\"dateOfBirth\":\"2020-01-01\",\"address\":{\"address1\":\"Example Address Line 1\",\"address2\":\"Example Address Line 2\",\"address3\":\"Example Address Line 3\",\"address4\":null,\"address5\":null,\"postcode\":\"AA1 1AA\"},\"contact\":{\"home\":\"01234567890\",\"mobile\":\"07000000000\",\"work\":null},\"ethnicity\":{\"observedEthnicityDescription\":\"White\",\"selfDefinedEthnicityDescription\":\"British\"}}},\"legalEntityDefendant\":null,\"masterDefendantId\":\"00000000-0000-0000-0000-000000000000\",\"pncId\":\"00000000000A\",\"croNumber\":\"000000/00A\"}],\"caseStatus\":\"ACTIVE\",\"caseMarkers\":[]}]}}",
6+
"Timestamp": "2022-07-27T14:22:08.509Z",
7+
"SignatureVersion": "1",
8+
"Signature": "EXAMPLE",
9+
"SigningCertURL": "https://sns.eu-west-2.amazonaws.com/EXAMPLE.pem",
10+
"UnsubscribeURL": "https://sns.eu-west-2.amazonaws.com/?Action=Unsubscribe&SubscriptionArn=EXAMPLE",
11+
"MessageAttributes": {
12+
"messageType": {
13+
"Type": "String",
14+
"Value": "COMMON_PLATFORM_HEARING"
15+
},
16+
"hearingEventType": {
17+
"Type": "String",
18+
"Value": "ConfirmedOrUpdated"
19+
}
20+
}
21+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
{
2+
"Type": "Notification",
3+
"MessageId": "aa2c2828-167f-529b-8e19-73735a2fb85c",
4+
"TopicArn": "arn:aws:sns:eu-west-2:000000000000:example",
5+
"Message": "{\"hearing\":{\"id\":\"00000000-0000-0000-0000-000000000000\",\"courtCentre\":{\"id\":\"00000000-0000-0000-0000-000000000000\",\"code\":\"A00AA00\",\"roomId\":\"00000000-0000-0000-0000-000000000000\",\"roomName\":\"Courtroom 01\"},\"type\":{\"id\":\"00000000-0000-0000-0000-000000000000\",\"description\":\"First hearing\",\"welshDescription\":null},\"jurisdictionType\":\"MAGISTRATES\",\"hearingDays\":[{\"sittingDay\":\"2024-01-01T12:00:00\",\"listedDurationMinutes\":30,\"listingSequence\":1}],\"prosecutionCases\":[]}}",
6+
"Timestamp": "2022-07-27T14:22:08.509Z",
7+
"SignatureVersion": "1",
8+
"Signature": "EXAMPLE",
9+
"SigningCertURL": "https://sns.eu-west-2.amazonaws.com/EXAMPLE.pem",
10+
"UnsubscribeURL": "https://sns.eu-west-2.amazonaws.com/?Action=Unsubscribe&SubscriptionArn=EXAMPLE",
11+
"MessageAttributes": {
12+
"messageType": {
13+
"Type": "String",
14+
"Value": "COMMON_PLATFORM_HEARING"
15+
},
16+
"hearingEventType": {
17+
"Type": "String",
18+
"Value": "ConfirmedOrUpdated"
19+
}
20+
}
21+
}

0 commit comments

Comments
 (0)