Skip to content

The source object

A source is a system that sends Summerbase data: a billing provider such as Stripe, which Summerbase fetches from itself, or your own backend, which writes through the API. Every customer, subscription and plan is identified within a source, as stripe:cus_123, and everything an API key writes is attributed to the key’s source.

Attributes

  • idstring (UUID)

    The source’s unique identifier. Records are identified by its slug.

  • objectstring

    The object’s type, always source.

    Always source

  • connected_attimestamp

    When a provider source was given its credential, or empty: a provider source that has not been connected yet or has been disconnected, and every source that is not a provider’s.

  • created_attimestamp

    When the source was added.

  • import_failed_attimestamp

    When the last import gave up, or empty when none has since the last one succeeded. The source’s log says why.

  • import_progressdecimal string

    How far the running import has got, from 0 to 1, or empty while it does not know yet.

  • import_started_attimestamp

    When the import now running began, or empty when none is. Every metric that reads this source’s records is incomplete until it ends.

  • import_stepstring

    What the running import is doing, in a sentence: Importing customers, 1,240 of 8,100.

  • imported_attimestamp

    When the last import finished, or empty when none has.

  • namestring

    What the source is called, for people reading a screen.

  • priorityinteger

    Where this source sits when resolving name and email. Lower wins, and the project’s own source starts at the top so a manual correction outranks a provider sync. It orders nothing else — every other property is namespaced by source and never arbitrated.

  • project_idstring (UUID)

    The project the source belongs to.

  • provider_account_idstring

    The provider’s own id for the account the source is connected to: acct_… for Stripe. Kept through a disconnect, so that connecting again is checked against it.

  • provider_codeenum

    The code of the system the source pulls from. custom is a source you write to yourself, and the only one that accepts writes; stripe is connected with connect_stripe and fetches for itself.

    One of custom, stripe, summerbase

  • sandboxboolean

    Whether the connection is to the provider’s test mode rather than a live account; empty while nothing is connected.

  • slugstring

    How this source’s records are identified — the stripe in stripe:cus_123. Lowercase letters, digits, hyphens and underscores; unique within the project and fixed once the source exists, because integrations hard-code it. A reference shaped like an id is read as one, so a slug may not look like a UUID.

  • webhook_installed_attimestamp

    When the provider’s webhook was installed for this source — by the connection, or by hand and registered with register_stripe_webhook — or empty: nothing is connected, or the source is connected without a webhook and its changes arrive with the hourly reconcile.

  • webhook_urlstring

    Where the provider posts this source’s events: the address of the endpoint a connection installs, and of one to install by hand. Empty for a source whose provider posts no webhooks.

Example

{
"connected_at": "2025-09-08T14:10:05Z",
"created_at": "2025-09-08T14:09:47Z",
"id": "0198f1a3-0b7c-7e25-9f41-6a2d8c3e5b19",
"import_failed_at": null,
"import_progress": null,
"import_started_at": null,
"import_step": null,
"imported_at": "2025-09-08T14:26:51Z",
"name": "Stripe",
"object": "source",
"priority": 2,
"project_id": "0198f1a2-6c52-7b18-8e3f-2a9c4d6b1e07",
"provider_account_id": "acct_1QfR3sT8uVw2XyZa",
"provider_code": "stripe",
"sandbox": false,
"slug": "stripe",
"webhook_installed_at": "2025-09-08T14:10:06Z",
"webhook_url": "https://api.summerbase.com/webhooks/stripe/0198f1a3-0b7c-7e25-9f41-6a2d8c3e5b19?c=us1"
}

Endpoints