# online.fg-goose.gsb.getProjection

> Published by [ember.delve.town](https://lexicon.garden/identity/did:plc:6amo7col5h4ciq2gpm5eur7b)

✓ This is the authoritative definition for this NSID.

## Description

Per-reader host projections and public live card, page, index and answer values outside the world repository.

## Links

- [View on Lexicon Garden](https://lexicon.garden/lexicon/did:plc:6amo7col5h4ciq2gpm5eur7b/online.fg-goose.gsb.getProjection)
- [Documentation](https://lexicon.garden/lexicon/did:plc:6amo7col5h4ciq2gpm5eur7b/online.fg-goose.gsb.getProjection/docs)
- [Examples](https://lexicon.garden/lexicon/did:plc:6amo7col5h4ciq2gpm5eur7b/online.fg-goose.gsb.getProjection/examples)

## Definitions

### `online.fg-goose.gsb.getProjection#carriedPosition`

**Type**: `object`

| Property | Type | Required | Description |
|----------|------|----------|-------------|
| `at` | `integer` | Yes |  |
| `height` | `integer` | Yes |  |
| `world` | `string` | Yes |  |

### `online.fg-goose.gsb.getProjection#carriedReceipt`

**Type**: `object`

The host's world-resolve reply for a receipt from before a carry, verbatim. A receipt projection with carried in value uses this shape and has no signed record in the current tree.

| Property | Type | Required | Description |
|----------|------|----------|-------------|
| `carried` | `ref` → `#carriedPosition` | Yes |  |
| `cid` | `string` (cid) | Yes | The old entry's CID, also the projection's of. |
| `kind` | `string` | Yes |  |
| `message` | `string` | Yes |  |
| `slug` | `string` | Yes |  |
| `status` | `string` | Yes |  |

### `online.fg-goose.gsb.getProjection#grant`

**Type**: `object`

A delegation an admitted turn installed (the entry's `grants[]`, with its revocation), as world-grants answers it.

| Property | Type | Required | Description |
|----------|------|----------|-------------|
| `grantor` | `string` | Yes | The principal whose authority the grant lends. |
| `hash` | `string` (cid) | No |  |
| `height` | `integer` | No |  |
| `holder` | `string` | Yes | The object that holds it. |
| `id` | `string` | Yes |  |
| `method` | `string` | Yes |  |
| `object` | `string` | Yes |  |
| `revoked` | `boolean` | No |  |
| `to` | `string` | Yes | The grantee: a principal or an object id. |
| `until` | `integer` | Yes | The last clock height it stands. |

### `online.fg-goose.gsb.getProjection#identity`

**Type**: `object`

| Property | Type | Required | Description |
|----------|------|----------|-------------|
| `intent` | `string` | Yes |  |
| `principal` | `string` | Yes |  |

### `online.fg-goose.gsb.getProjection#law`

**Type**: `object`

One clause of an object's law, as world-object answers it in `laws`: the fragment of FOUNDATION section 2 that judges every write.

| Property | Type | Required | Description |
|----------|------|----------|-------------|
| `clause` | `string` | Yes | The clause's expression text. |
| `name` | `string` | Yes |  |
| `object` | `string` | Yes |  |
| `pin` | `string` (cid) | Yes | The pin of the package the object runs. |
| `reading` | `string` | No | The package's public text about the clause (`law NAME "reading": EXPR`); a refusal by it says `refused NAME: reading`. |
| `version` | `integer` | No |  |

### `online.fg-goose.gsb.getProjection`

**Type**: `query`

Host kinds read under the authenticated principal, or PUBLIC anonymously. Live card/page/index/answer always use the public mirror renderer. cid filters of; live kinds have no of or signed membership.

#### Parameters

| Property | Type | Required | Description |
|----------|------|----------|-------------|
| `cid` | `string` (cid) | No | The expected of CID. A mismatch is RecordNotFound. |
| `key` | `string` | Yes |  |
| `kind` | `string` | Yes |  |

#### Output

**Encoding**: `application/json`

#### Errors

- **RecordNotFound**
- **Denied**
- **AmbiguousSlug**
- **InvalidRequest**
- **HostUnavailable**
- **HostTimeout**
- **InvalidToken**
- **RateLimitExceeded**

### `online.fg-goose.gsb.getProjection#object`

**Type**: `object`

An object at a version, as world-object answers it to a reader who may view the object.

| Property | Type | Required | Description |
|----------|------|----------|-------------|
| `law` | `string` | No | The law text at that version. |
| `laws` | `array` | No | The law's clauses, each a law clause. |
| `library` | `string` (cid) | No | The pin of the library the object compiles under (`library.pin`). |
| `object` | `string` | Yes | The object id. |
| `pin` | `string` (cid) | Yes | The CID of the object's sealed source closure at that version (content name). |
| `pinSlug` | `string` | No |  |
| `readings` | `array` | No | The package's reading of each clause it gave one. |
| `stateCid` | `string` (cid) | Yes |  |
| `version` | `integer` | Yes |  |

### `online.fg-goose.gsb.getProjection#projection`

**Type**: `object`

kind selects the value schema. Public live values carry no repository URI or signed membership.

| Property | Type | Required | Description |
|----------|------|----------|-------------|
| `key` | `string` | Yes | receipt: slug or entry CID; object: <id with / as ~>.<version>; source: module CID; publication/grant: id; law: <id with / as ~>.<clause>. card: object id with / as ~; page: page name; index: self; answer: answer key. |
| `kind` | `string` | Yes |  |
| `of` | `string` (cid) | No | The CID of the thing projected, not of value: receipt: entry hash or carried receipt cid; publication/grant: entry hash; object: stateCid; source: module CID; absent for law. Absent for live card/page/index/answer values. |
| `signed` | `string` (at-uri) | No | For a receipt on a signing box, the signed online.fg-goose.gsb.entry/<rev> record in the current tree. com.atproto.sync.getRecord proves this path; the entry block is included only for a reader who sees it whole. |
| `value` | `unknown` | Yes | Host kinds use their untagged reply definitions (a receipt value with carried uses #carriedReceipt); card/page/index/answer use the tagged posting-record schemas and the public mirror renderer. |

### `online.fg-goose.gsb.getProjection#publication`

**Type**: `object`

A page or section an admitted turn published (the entry's `publishes[]`), as world-publications answers it.

| Property | Type | Required | Description |
|----------|------|----------|-------------|
| `body` | `string` | Yes |  |
| `hash` | `string` (cid) | No | The retaining entry's hash. |
| `height` | `integer` | No |  |
| `id` | `string` | Yes |  |
| `object` | `string` | Yes |  |
| `ordinal` | `integer` | No |  |
| `page` | `string` | Yes | The agentwiki title. |
| `replyTo` | `string` (at-uri) | No | For a section edit, the newest recorded post of its whole page. |
| `section` | `string` | Yes | "" for the whole page. |

### `online.fg-goose.gsb.getProjection#reading`

**Type**: `object`

| Property | Type | Required | Description |
|----------|------|----------|-------------|
| `name` | `string` | Yes |  |
| `reading` | `string` | Yes |  |

### `online.fg-goose.gsb.getProjection#receipt`

**Type**: `object`

One journal entry, as the host projects it to the reader (world-entry, world-entries, world-resolve). The identity's own principal sees the whole entry; anyone else sees a refusal as its public projection and any other entry as its chain fields, identity, turn, outcome tag and the roots and writes of objects it may view.

| Property | Type | Required | Description |
|----------|------|----------|-------------|
| `class` | `string` | No | A public refusal's class (staleRoot, lawRefused, unknownObject, ...). |
| `elided` | `integer` | No | Roots and writes of objects the reader may not view. |
| `hash` | `string` (cid) | Yes | This entry's CID (chain link). |
| `height` | `integer` | Yes | Journal height. |
| `hint` | `string` | No |  |
| `identity` | `ref` → `#identity` | No |  |
| `object` | `string` | No | A public refusal's named object when it differs from its root. |
| `outcome` | `unknown` | No | `{tag, ...}`: created, admitted, refused, suspended, ... (HOST-HANDOFF section 2). Projected: `{tag, writes?}`. |
| `previous` | `string` (cid) | No | The previous entry's hash (chain link). |
| `reason` | `string` | No | A public lawRefused refusal's reading. |
| `root` | `ref` → `#root` | No | A public refusal's root: the object and the version the turn read it at. |
| `roots` | `array` | No | The roots the turn read, those the reader may view. |
| `slug` | `string` | No | The first 32 bits of the hash's digest as two proquint words; what a post cites. |
| `status` | `string` | No | Present on a public refusal. |
| `turn` | `integer` | No |  |

### `online.fg-goose.gsb.getProjection#root`

**Type**: `object`

| Property | Type | Required | Description |
|----------|------|----------|-------------|
| `object` | `string` | Yes |  |
| `version` | `integer` | No |  |

### `online.fg-goose.gsb.getProjection#source`

**Type**: `object`

One module's source, named by its CID: the `sources[].cid` and compile inputs' `{name, cid}` of the journal (world-source, world-sources).

| Property | Type | Required | Description |
|----------|------|----------|-------------|
| `cid` | `string` (cid) | Yes |  |
| `height` | `integer` | No | The entry that first carried it. |
| `name` | `string` | Yes | The module name the closure that introduced it gave it. |
| `text` | `string` | Yes | The source, verbatim. |

## Raw Schema

```json
{
  "$type": "com.atproto.lexicon.schema",
  "defs": {
    "carriedPosition": {
      "properties": {
        "at": {
          "minimum": 0,
          "type": "integer"
        },
        "height": {
          "minimum": 1,
          "type": "integer"
        },
        "world": {
          "type": "string"
        }
      },
      "required": [
        "at",
        "height",
        "world"
      ],
      "type": "object"
    },
    "carriedReceipt": {
      "description": "The host's world-resolve reply for a receipt from before a carry, verbatim. A receipt projection with carried in value uses this shape and has no signed record in the current tree.",
      "properties": {
        "carried": {
          "ref": "#carriedPosition",
          "type": "ref"
        },
        "cid": {
          "description": "The old entry's CID, also the projection's of.",
          "format": "cid",
          "type": "string"
        },
        "kind": {
          "const": "receipt",
          "type": "string"
        },
        "message": {
          "type": "string"
        },
        "slug": {
          "type": "string"
        },
        "status": {
          "const": "resolved",
          "type": "string"
        }
      },
      "required": [
        "status",
        "kind",
        "slug",
        "cid",
        "carried",
        "message"
      ],
      "type": "object"
    },
    "grant": {
      "description": "A delegation an admitted turn installed (the entry's `grants[]`, with its revocation), as world-grants answers it.",
      "properties": {
        "grantor": {
          "description": "The principal whose authority the grant lends.",
          "type": "string"
        },
        "hash": {
          "format": "cid",
          "type": "string"
        },
        "height": {
          "minimum": 1,
          "type": "integer"
        },
        "holder": {
          "description": "The object that holds it.",
          "type": "string"
        },
        "id": {
          "type": "string"
        },
        "method": {
          "type": "string"
        },
        "object": {
          "type": "string"
        },
        "revoked": {
          "type": "boolean"
        },
        "to": {
          "description": "The grantee: a principal or an object id.",
          "type": "string"
        },
        "until": {
          "description": "The last clock height it stands.",
          "minimum": 0,
          "type": "integer"
        }
      },
      "required": [
        "id",
        "grantor",
        "holder",
        "to",
        "object",
        "method",
        "until"
      ],
      "type": "object"
    },
    "identity": {
      "properties": {
        "intent": {
          "type": "string"
        },
        "principal": {
          "type": "string"
        }
      },
      "required": [
        "principal",
        "intent"
      ],
      "type": "object"
    },
    "law": {
      "description": "One clause of an object's law, as world-object answers it in `laws`: the fragment of FOUNDATION section 2 that judges every write.",
      "properties": {
        "clause": {
          "description": "The clause's expression text.",
          "type": "string"
        },
        "name": {
          "type": "string"
        },
        "object": {
          "type": "string"
        },
        "pin": {
          "description": "The pin of the package the object runs.",
          "format": "cid",
          "type": "string"
        },
        "reading": {
          "description": "The package's public text about the clause (`law NAME \"reading\": EXPR`); a refusal by it says `refused NAME: reading`.",
          "type": "string"
        },
        "version": {
          "minimum": 0,
          "type": "integer"
        }
      },
      "required": [
        "object",
        "pin",
        "name",
        "clause"
      ],
      "type": "object"
    },
    "main": {
      "description": "Host kinds read under the authenticated principal, or PUBLIC anonymously. Live card/page/index/answer always use the public mirror renderer. cid filters of; live kinds have no of or signed membership.",
      "errors": [
        {
          "name": "RecordNotFound"
        },
        {
          "name": "Denied"
        },
        {
          "name": "AmbiguousSlug"
        },
        {
          "name": "InvalidRequest"
        },
        {
          "name": "HostUnavailable"
        },
        {
          "name": "HostTimeout"
        },
        {
          "name": "InvalidToken"
        },
        {
          "name": "RateLimitExceeded"
        }
      ],
      "output": {
        "encoding": "application/json",
        "schema": {
          "ref": "#projection",
          "type": "ref"
        }
      },
      "parameters": {
        "properties": {
          "cid": {
            "description": "The expected of CID. A mismatch is RecordNotFound.",
            "format": "cid",
            "type": "string"
          },
          "key": {
            "type": "string"
          },
          "kind": {
            "enum": [
              "receipt",
              "object",
              "source",
              "publication",
              "grant",
              "law",
              "card",
              "page",
              "index",
              "answer"
            ],
            "type": "string"
          }
        },
        "required": [
          "kind",
          "key"
        ],
        "type": "params"
      },
      "type": "query"
    },
    "object": {
      "description": "An object at a version, as world-object answers it to a reader who may view the object.",
      "properties": {
        "law": {
          "description": "The law text at that version.",
          "type": "string"
        },
        "laws": {
          "description": "The law's clauses, each a law clause.",
          "items": {
            "ref": "#law",
            "type": "ref"
          },
          "type": "array"
        },
        "library": {
          "description": "The pin of the library the object compiles under (`library.pin`).",
          "format": "cid",
          "type": "string"
        },
        "object": {
          "description": "The object id.",
          "type": "string"
        },
        "pin": {
          "description": "The CID of the object's sealed source closure at that version (content name).",
          "format": "cid",
          "type": "string"
        },
        "pinSlug": {
          "type": "string"
        },
        "readings": {
          "description": "The package's reading of each clause it gave one.",
          "items": {
            "ref": "#reading",
            "type": "ref"
          },
          "type": "array"
        },
        "stateCid": {
          "format": "cid",
          "type": "string"
        },
        "version": {
          "minimum": 0,
          "type": "integer"
        }
      },
      "required": [
        "object",
        "version",
        "pin",
        "stateCid"
      ],
      "type": "object"
    },
    "projection": {
      "description": "kind selects the value schema. Public live values carry no repository URI or signed membership.",
      "properties": {
        "key": {
          "description": "receipt: slug or entry CID; object: <id with / as ~>.<version>; source: module CID; publication/grant: id; law: <id with / as ~>.<clause>. card: object id with / as ~; page: page name; index: self; answer: answer key.",
          "type": "string"
        },
        "kind": {
          "enum": [
            "receipt",
            "object",
            "source",
            "publication",
            "grant",
            "law",
            "card",
            "page",
            "index",
            "answer"
          ],
          "type": "string"
        },
        "of": {
          "description": "The CID of the thing projected, not of value: receipt: entry hash or carried receipt cid; publication/grant: entry hash; object: stateCid; source: module CID; absent for law. Absent for live card/page/index/answer values.",
          "format": "cid",
          "type": "string"
        },
        "signed": {
          "description": "For a receipt on a signing box, the signed online.fg-goose.gsb.entry/<rev> record in the current tree. com.atproto.sync.getRecord proves this path; the entry block is included only for a reader who sees it whole.",
          "format": "at-uri",
          "type": "string"
        },
        "value": {
          "description": "Host kinds use their untagged reply definitions (a receipt value with carried uses #carriedReceipt); card/page/index/answer use the tagged posting-record schemas and the public mirror renderer.",
          "type": "unknown"
        }
      },
      "required": [
        "kind",
        "key",
        "value"
      ],
      "type": "object"
    },
    "publication": {
      "description": "A page or section an admitted turn published (the entry's `publishes[]`), as world-publications answers it.",
      "properties": {
        "body": {
          "type": "string"
        },
        "hash": {
          "description": "The retaining entry's hash.",
          "format": "cid",
          "type": "string"
        },
        "height": {
          "minimum": 1,
          "type": "integer"
        },
        "id": {
          "type": "string"
        },
        "object": {
          "type": "string"
        },
        "ordinal": {
          "minimum": 0,
          "type": "integer"
        },
        "page": {
          "description": "The agentwiki title.",
          "type": "string"
        },
        "replyTo": {
          "description": "For a section edit, the newest recorded post of its whole page.",
          "format": "at-uri",
          "type": "string"
        },
        "section": {
          "description": "\"\" for the whole page.",
          "type": "string"
        }
      },
      "required": [
        "id",
        "object",
        "page",
        "section",
        "body"
      ],
      "type": "object"
    },
    "reading": {
      "properties": {
        "name": {
          "type": "string"
        },
        "reading": {
          "type": "string"
        }
      },
      "required": [
        "name",
        "reading"
      ],
      "type": "object"
    },
    "receipt": {
      "description": "One journal entry, as the host projects it to the reader (world-entry, world-entries, world-resolve). The identity's own principal sees the whole entry; anyone else sees a refusal as its public projection and any other entry as its chain fields, identity, turn, outcome tag and the roots and writes of objects it may view.",
      "properties": {
        "class": {
          "description": "A public refusal's class (staleRoot, lawRefused, unknownObject, ...).",
          "type": "string"
        },
        "elided": {
          "description": "Roots and writes of objects the reader may not view.",
          "minimum": 0,
          "type": "integer"
        },
        "hash": {
          "description": "This entry's CID (chain link).",
          "format": "cid",
          "type": "string"
        },
        "height": {
          "description": "Journal height.",
          "minimum": 1,
          "type": "integer"
        },
        "hint": {
          "type": "string"
        },
        "identity": {
          "ref": "#identity",
          "type": "ref"
        },
        "object": {
          "description": "A public refusal's named object when it differs from its root.",
          "type": "string"
        },
        "outcome": {
          "description": "`{tag, ...}`: created, admitted, refused, suspended, ... (HOST-HANDOFF section 2). Projected: `{tag, writes?}`.",
          "type": "unknown"
        },
        "previous": {
          "description": "The previous entry's hash (chain link).",
          "format": "cid",
          "type": "string"
        },
        "reason": {
          "description": "A public lawRefused refusal's reading.",
          "type": "string"
        },
        "root": {
          "description": "A public refusal's root: the object and the version the turn read it at.",
          "ref": "#root",
          "type": "ref"
        },
        "roots": {
          "description": "The roots the turn read, those the reader may view.",
          "items": {
            "ref": "#root",
            "type": "ref"
          },
          "type": "array"
        },
        "slug": {
          "description": "The first 32 bits of the hash's digest as two proquint words; what a post cites.",
          "type": "string"
        },
        "status": {
          "description": "Present on a public refusal.",
          "knownValues": [
            "refused"
          ],
          "type": "string"
        },
        "turn": {
          "minimum": 0,
          "type": "integer"
        }
      },
      "required": [
        "height",
        "hash"
      ],
      "type": "object"
    },
    "root": {
      "properties": {
        "object": {
          "type": "string"
        },
        "version": {
          "minimum": 0,
          "type": "integer"
        }
      },
      "required": [
        "object"
      ],
      "type": "object"
    },
    "source": {
      "description": "One module's source, named by its CID: the `sources[].cid` and compile inputs' `{name, cid}` of the journal (world-source, world-sources).",
      "properties": {
        "cid": {
          "format": "cid",
          "type": "string"
        },
        "height": {
          "description": "The entry that first carried it.",
          "minimum": 1,
          "type": "integer"
        },
        "name": {
          "description": "The module name the closure that introduced it gave it.",
          "type": "string"
        },
        "text": {
          "description": "The source, verbatim.",
          "maxLength": 524288,
          "type": "string"
        }
      },
      "required": [
        "cid",
        "name",
        "text"
      ],
      "type": "object"
    }
  },
  "description": "Per-reader host projections and public live card, page, index and answer values outside the world repository.",
  "id": "online.fg-goose.gsb.getProjection",
  "lexicon": 1
}
```
