---
title: "List all source types"
method: GET
path: "/api/v1/ackdb/schemas/sources"
tags: ["ackDB"]
---

# List all source types

`GET /api/v1/ackdb/schemas/sources`

## Request

- Base URL: `http://localhost:3009`
- URL: `http://localhost:3009/api/v1/ackdb/schemas/sources`
- Auth: HTTP bearer

Returns all registered source definitions (global defaults). Each source defines a content schema, identity link types, and its event contract.

On a fresh deployment the four person-first packs (job, education, web, signup) are registered ENABLED, plus the internal only `system` source (#453). The six legacy packs (stripe, slack, email, meetings, crm, calendar) are no longer seeded; a deployment already running one keeps it. A source registered with `disabled: true` is discoverable here but rejects new ingest (422 `SOURCE_DISABLED`) until an operator turns it on with `PUT /schemas/sources/{sourceType} { "disabled": false }`.

## Response `200`

List of source definitions

- object
  - `data` AckdbSourceDefinition[], required
    - `sourceType` string, required: Source type identifier
    - `contentSchema` object, required: Field names → type strings. "?" suffix means optional (e.g. "string?").
    - `identityLinkTypes` string[], required: External ID types this source can produce.
    - `defaultTraits` AckdbDefaultTraitSpec[], required: Traits that auto-populate when an org enables this source.
      - `traitKey` string, required: Trait identifier, conventionally prefixed with source name.
      - `valueType` 'string' | 'number' | 'boolean' | 'date' | 'string_array', required: Type system for trait validation and storage. Controls how trait values are validated on ingest and stored in the entity_traits table.
    - `validEventTypes` string[], required: Valid event types for this source, as stored on `entity_events.event_type` (the source's `eventTypePrefix` is prepended to the bare metadata event type). Write API rejects unknown types. This is a denormalized convenience copy - the authoritative, always-current list (with full field schemas and ingest examples) is `GET /schemas/sources/{sourceType}/events`. For Stripe: `stripe_charge.succeeded`, `stripe_charge.refunded`, `stripe_invoice.paid`, `stripe_customer.subscription.created`, etc. For Slack: `slack_message`, `slack_member_joined_channel`, etc.
    - `eventTypeField` string, required: Which content.metadata field determines the event type. Null means the source has a single static event type (e.g. Slack always produces 'message').
    - `eventTypePrefix` string, required: Namespace prefix for event types (e.g. 'stripe_'). When eventTypeField is null, this is used as the full static event type.
    - `eventMetadataFields` string[], required: Content.metadata fields to promote into entity_events.metadata for queryable event data. These fields become available for filtering in search_events and aggregation in aggregate_events.
    - `createdAt` string, date-time, required: When this definition was created.

---

[API](https://skmtc.dev/floqer/apis/floqer-public-api.md) - [All operations](https://skmtc.dev/floqer/apis/floqer-public-api/llms.txt) - [OpenAPI document](https://skmtc.dev/floqer/apis/floqer-public-api/revisions/fce50dc07b20?raw)
