An official website of the United States GovernmentUnclassified
Seal of the Department of the NavyDepartment of the NavyProject 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 files are stored in a separate attachment model, and calls move through a release lifecycle before they become public.

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, and attachments is the reverse relation for files added after publication. 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.
releasesAtDateTime?NoNULLScheduled release time for a pending call.
closesAtDateTime?NoNULLOptional closing date.
createdAtDateTimeYesnow()Creation time.
closedAtDateTime?NoNULLTime of the latest close transition, when applicable.
updateCountIntYes0Number of lifecycle status changes.

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

AnnouncementAttachment

ColumnPrisma typeRequired?DefaultMeaning
idStringYescuid()Attachment identifier.
announcementIdStringYesNoneAnnouncement containing the attachment.
announcementAnnouncementYesNoneRelation to the containing announcement.
fileNameStringYesNoneOriginal filename shown to users.
contentTypeStringYesNoneValidated media type.
sizeBytesIntYesNoneFile size in bytes.
dataBytesYesNoneFile bytes stored in the database.
uploadedByIdStringYesNoneGovernment user who uploaded the file.
uploadedByUserYesNoneRelation to the uploading government user.
createdAtDateTimeYesnow()Upload time.

The announcement relation cascades when an announcement is deleted. The uploader relation identifies the government account that added the file.

PresetTag

ColumnPrisma typeRequired?DefaultMeaning
idStringYescuid()Preset identifier.
labelStringYesNoneUnique normalized label shown as a tag chip.
createdByIdStringYesNoneSystem Admin who created the preset.
createdByUserYesNoneRelation to the System Admin who created it.
createdAtDateTimeYesnow()Creation time.

The createdBy relation records the System Admin who added the preset. Presets guide tag entry but do not constrain the free-text values stored on records.

CallStatus enum

ValueMeaning
OPENVisible as an open call and eligible for new references.
CLOSEDNo longer open for new submissions.
DRAFTGovernment-only working copy that has not been released.
PENDINGGovernment-only call scheduled with a future releasesAt; it is treated as open after that time.

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 when an announcement is published or a call becomes publicly open. Draft and pending calls are government-only. A pending call becomes visible to industry when its releasesAt time passes through query-time release handling, without a scheduled notification.

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, and announcement attachments can be uploaded after that publication. The portal exposes attachment filenames and sizes to everyone, but only signed-in users can download the bytes.

Calls and announcements remain text records with tags and deadlines; announcement files belong to AnnouncementAttachment, while submission files use their own storage model.