Skip to main content
Version: 1.0

Customer Service

Repo: o-apps/customer-service (fluxcd app directory: customer-api) · Port: 8991

Handles the marketing site's public "contact us" form and the resulting CRM records — leads submitted through it.

Key Capabilities​

  • Public contact submission — the marketing site's contact form posts here with no login required
  • Lead CRM — list, search, get, update, delete, and export submitted contacts, plus assignment and internal notes for the ops/sales team
  • Notification integration — new contacts trigger a notification via the Xenia service (XENIA_BASE_URL)

Auth​

Deliberately split, not gated uniformly — this is the one service in the platform with a real public-facing write path:

  • Public: POST /contact and POST /contacts (the form itself), plus GET /contacts/types and GET /contacts/modes (static dropdown option lists the form needs to render — confirmed to return hardcoded enums, not customer data)
  • Requires auth: everything else — GET /contacts, GET /contacts/search, GET /contacts/{id}, PUT /contacts/{id}, DELETE /contacts/{id}, GET /contacts/export — since these read or mutate stored lead PII

UpdateTicket-style admin fields (assignment, internal notes) additionally require a super_admin user type on top of a valid token, checked in the handler.

REST API​

MethodPathAuthDescription
POST/api/contactPublicSubmit the contact form
POST/api/contactsPublicSame as above (form's actual submit target)
GET/api/contacts/typesPublicContact type enum for the form
GET/api/contacts/modesPublicPreferred-contact-mode enum for the form
GET/api/contactsRequiredList contacts (paginated)
GET/api/contacts/searchRequiredSearch contacts
GET/api/contacts/{id}RequiredGet one contact
PUT/api/contacts/{id}RequiredUpdate a contact
DELETE/api/contacts/{id}RequiredDelete a contact
GET/api/contacts/exportRequiredExport contacts
GET/healthPublicHealth check

Environment Variables​

VariableDescription
DATABASE_URLPostgreSQL connection
AUTH_JWT_ACCESS_SECRETShared JWT signing secret
XENIA_BASE_URLNotification service for new-contact alerts
PORTHTTP port (default: 8991)