Skip to content

Latest commit

 

History

History
146 lines (109 loc) · 7.76 KB

File metadata and controls

146 lines (109 loc) · 7.76 KB

Indexed Data Types

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.


Subjects and Source Files by Domain

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.

Projects (lfx-v2-project-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

Committees (lfx-v2-committee-service)

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

Meetings (lfx-v2-meeting-service)

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

Mailing Lists (lfx-v2-mailing-list-service)

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

Voting (lfx-v2-voting-service)

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

Surveys (lfx-v2-survey-service)

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

Members (lfx-v2-member-service)

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_membership records are Salesforce-managed and indexed via /admin/reindex. b2b_org_settings docs are created on demand by the first PUT /b2b_orgs/{uid}/settings that configures a writer or auditor, not by the backfill runner.


Adding a New Field or Type

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_aliases controls typeahead search
  • tags controls tag filtering
  • parent_refs controls parent navigation
  • data is 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.