Project ROUNDTABLE Docs
Data model

Announcements and calls

Public information published by government users

Announcements and calls are the public-facing publishing records. An announcement shares information; a Call for Technology invites relevant capability submissions. Neither model stores source-selection decisions or procurement-sensitive content.

Announcement

ColumnPrisma typeRequired?DefaultMeaning
idStringYescuid()Announcement identifier.
titleStringYesNonePublic headline.
bodyStringYesNonePublic message.
authorIdStringYesNoneGovernment publisher.
publishedBooleanYestruePublication flag used by public feeds.
createdAtDateTimeYesnow()Publication/creation time.

The author relation identifies the government user who published it. The portal feed filters to published records and orders newest first.

CallForTechnology

ColumnPrisma typeRequired?DefaultMeaning
idStringYescuid()Call identifier.
titleStringYesNonePublic call title.
descriptionStringYesNoneWhat the government team wants to learn.
techTagsStringYes""Lowercase matching vocabulary.
statusCallStatusYesOPENWhether submissions may reference it.
closesAtDateTime?NoNULLOptional closing date.
createdAtDateTimeYesnow()Creation time.

submissions is the reverse relation for submissions that reference the call.

CallStatus enum

ValueMeaning
OPENVisible as an open call and eligible for new references.
CLOSEDNo longer open for new submissions.

Publication behavior

Government publishing routes validate title and body lengths, normalize call tags, create an audit event, and notify industry users subject to their notification settings. The public portal routes expose only published announcements and open calls.

Dates and closure

closesAt is optional, and the call helper also treats a past closing date as closed even if the stored enum still says OPEN. This prevents a stale status value from keeping a time-bounded call open. A government PATCH can explicitly set CLOSED.

Announcements use a Boolean published rather than a separate publication event model. The current create route creates published records. If future drafts are added, the feed must continue filtering by this flag and the API must document who can publish.

Neither model stores an attachment. Calls and announcements are text records with tags/deadlines; technical files belong to submissions.