This file maps each active queryable type to the NATS subject that publishes it and the source file where that subject is defined. Use it when you need to trace a type back to its owning service, add a new publisher, or debug a missing type.
For how to query these types (HTTP examples, filter syntax, response
shapes), see resource-catalog.md.
All resource types are queryable via GET /query/resources?v=1&type=<type>.
The query service queries a shared OpenSearch index populated by
lfx-v2-indexer-service, which subscribes to all lfx.index.* NATS subjects
using a wildcard (lfx.index.>).
How to discover all types: check each backend service's
pkg/constants/subjects.go (or equivalent) for constants of the form
"lfx.index.<type>". Do NOT rely solely on the indexer service's ObjectType*
constants; they lag behind active publishers.
Each owning service publishes a docs/indexer-contract.md with the full data
schema, tags, access control config, parent references, and fulltext/search
fields for its resource types. Treat that contract as authoritative when
writing queries or indexing code for that service.
Indexer contract: docs/indexer-contract.md
type |
NATS subject | Source file |
|---|---|---|
project |
lfx.index.project |
pkg/constants/nats.go |
project_settings |
lfx.index.project_settings |
pkg/constants/nats.go |
project_link |
lfx.index.project_link |
pkg/constants/nats.go |
project_folder |
lfx.index.project_folder |
pkg/constants/nats.go |
project_document |
lfx.index.project_document |
pkg/constants/nats.go |
Indexer contract: docs/indexer-contract.md
type |
NATS subject | Source file |
|---|---|---|
committee |
lfx.index.committee |
pkg/constants/subjects.go |
committee_settings |
lfx.index.committee_settings |
pkg/constants/subjects.go |
committee_member |
lfx.index.committee_member |
pkg/constants/subjects.go |
committee_invite |
lfx.index.committee_invite |
pkg/constants/subjects.go |
committee_application |
lfx.index.committee_application |
pkg/constants/subjects.go |
committee_document |
lfx.index.committee_document |
pkg/constants/subjects.go |
committee_link |
lfx.index.committee_link |
pkg/constants/subjects.go |
committee_link_folder |
lfx.index.committee_link_folder |
pkg/constants/subjects.go |
The
v1_prefix reflects that the data originates from the v1 Zoom/ITX API.
Indexer contract: docs/indexer-contract.md
type |
NATS subject | Source file |
|---|---|---|
v1_meeting |
lfx.index.v1_meeting |
internal/infrastructure/eventing/nats_publisher.go |
v1_meeting_registrant |
lfx.index.v1_meeting_registrant |
internal/infrastructure/eventing/nats_publisher.go |
v1_meeting_rsvp |
lfx.index.v1_meeting_rsvp |
internal/infrastructure/eventing/nats_publisher.go |
v1_meeting_attachment |
lfx.index.v1_meeting_attachment |
internal/infrastructure/eventing/nats_publisher.go |
v1_past_meeting |
lfx.index.v1_past_meeting |
internal/infrastructure/eventing/nats_publisher.go |
v1_past_meeting_participant |
lfx.index.v1_past_meeting_participant |
internal/infrastructure/eventing/nats_publisher.go |
v1_past_meeting_attachment |
lfx.index.v1_past_meeting_attachment |
internal/infrastructure/eventing/nats_publisher.go |
v1_past_meeting_recording |
lfx.index.v1_past_meeting_recording |
internal/infrastructure/eventing/nats_publisher.go |
v1_past_meeting_transcript |
lfx.index.v1_past_meeting_transcript |
internal/infrastructure/eventing/nats_publisher.go |
v1_past_meeting_summary |
lfx.index.v1_past_meeting_summary |
internal/infrastructure/eventing/nats_publisher.go |
Indexer contract: docs/indexer-contract.md
type |
NATS subject | Source file |
|---|---|---|
groupsio_service |
lfx.index.groupsio_service |
pkg/constants/subjects.go |
groupsio_service_settings |
lfx.index.groupsio_service_settings |
pkg/constants/subjects.go |
groupsio_mailing_list |
lfx.index.groupsio_mailing_list |
pkg/constants/subjects.go |
groupsio_mailing_list_settings |
lfx.index.groupsio_mailing_list_settings |
pkg/constants/subjects.go |
groupsio_member |
lfx.index.groupsio_member |
pkg/constants/subjects.go |
groupsio_artifact |
lfx.index.groupsio_artifact |
pkg/constants/subjects.go |
Indexer contract: docs/indexer-contract.md
type |
NATS subject | Source file |
|---|---|---|
vote |
lfx.index.vote |
internal/infrastructure/eventing/nats_publisher.go |
vote_response |
lfx.index.vote_response |
internal/infrastructure/eventing/nats_publisher.go |
Indexer contract: docs/indexer-contract.md
type |
NATS subject | Source file |
|---|---|---|
survey |
lfx.index.survey |
internal/infrastructure/eventing/nats_publisher.go |
survey_response |
lfx.index.survey_response |
internal/infrastructure/eventing/nats_publisher.go |
survey_template |
lfx.index.survey_template |
internal/infrastructure/eventing/nats_publisher.go |
Indexer contract: docs/indexer-contract.md
type |
NATS subject | Source file |
|---|---|---|
b2b_org |
lfx.index.b2b_org |
pkg/constants/subjects.go |
b2b_org_settings |
lfx.index.b2b_org_settings |
pkg/constants/subjects.go |
project_membership |
lfx.index.project_membership |
pkg/constants/subjects.go |
key_contact |
lfx.index.key_contact |
pkg/constants/subjects.go |
project_membershiprecords are Salesforce-managed and indexed via/admin/reindex.b2b_org_settingsdocs are created on demand by the firstPUT /b2b_orgs/{uid}/settingsthat configures a writer or auditor, not by the backfill runner.
When adding indexing for a new field on an existing type, the change goes
in the owning service (see Source file column above). Update the
IndexingConfig passed to sendIndexerMessage:
name_and_aliasescontrols typeahead searchtagscontrols tag filteringparent_refscontrols parent navigationdatais the full resource snapshot returned in query results (include any new fields here)
When adding a new resource type, the publishing service needs a new
lfx.index.<new_type> subject constant and a corresponding sendIndexerMessage
call. The indexer picks it up automatically via its wildcard subscription, no
indexer changes needed.
For query API behavior (parameters, access control, CEL filters), see
query-service-contract.md.