---
title: "SourceObject"
description: "one kind of thing a source holds, in the source's own words"
section: concepts
address: /concepts/sourceobject
contract: 0476e35e6e275db5
---

# SourceObject

one kind of thing a source holds, in the source's own words

[figure: SourceObject is a row at platform scope. The drawing shows its fields and the objects that they point at.]

| property | value |
|---|---|
| kind | row |
| scope | platform |
| key | the source and its name |
| store | postgres |
| family | sources |



## Fields


| field | type | required | note |
|---|---|---|---|
| `source` | [Source](/concepts/source) | yes |  |
| `name` | `text` | yes |  |
| `fields` | [SourceField](/concepts/sourcefield) | yes |  |
| `ids` | [SourceId](/concepts/sourceid) | yes |  |
| `times` | [SourceTime](/concepts/sourcetime) | yes |  |
| `measures` | [KindOfMeasure](/concepts/kindofmeasure) | yes |  |
| `links` | [SourceLink](/concepts/sourcelink) | yes |  |
| `plane` | [Plane](/concepts/plane) | no | absent for the platform's row; a tenant's extension row adds fields to a platform source object for that tenant only |
| `declared` | `text` | no | the source's own description of the object, in its words, when it has one |
| `header_fields` | `{text:text}` | no | which declared field fills each identity field of the shared silver header, by the header's own names: author_account, community, parent, thread_root, text; the refine of every way fills the header from this and never from a field chosen in code |



## Routes that use it
No route takes or returns SourceObject directly. The record holds it, and the objects that point at it reach it.
