# social.dracome.library.acquisition

> Published by [dracome.social](https://lexicon.garden/identity/did:plc:66dyrt2bmghwlmdteyizs5l3)

✓ This is the authoritative definition for this NSID.

## Links

- [View on Lexicon Garden](https://lexicon.garden/lexicon/did:plc:66dyrt2bmghwlmdteyizs5l3/social.dracome.library.acquisition)
- [Documentation](https://lexicon.garden/lexicon/did:plc:66dyrt2bmghwlmdteyizs5l3/social.dracome.library.acquisition/docs)
- [Examples](https://lexicon.garden/lexicon/did:plc:66dyrt2bmghwlmdteyizs5l3/social.dracome.library.acquisition/examples)

## Definitions

### `social.dracome.library.acquisition`

**Type**: `record`

A record of how an actor came to own a specific book edition (purchased, gift, review copy, etc.). Multiple acquisitions per edition are allowed; like library.marker, library.review, and library.state, this record uses key: "tid", and its rkey is an opaque identity that never changes.

**Key**: `tid`

| Property | Type | Required | Description |
|----------|------|----------|-------------|
| `acquisitionType` | `ref` → `social.dracome.library.defs#acquisitionType` | Yes | How the actor came to own this edition. |
| `catalogSnapshot` | `ref` → `social.dracome.work.defs#catalogSnapshot` | Yes | Point-in-time work/edition metadata capture, refreshed from current catalog data at write time. |
| `catalogTarget` | `ref` → `social.dracome.work.defs#catalogTarget` | Yes | The work, and edition, this acquisition is about. |
| `createdAt` | `string` (datetime) | Yes | Canonical UTC instant serialized as ISO 8601 with a trailing Z suffix. |
| `currencyCode` | `string` | No | ISO 4217 currency code (e.g. "USD", "EUR", "GBP"). |
| `invoiceAvailable` | `boolean` | No | Yes/No/unset - field absence means "unset". Must be true when invoiceNumber is set. |
| `invoiceNumber` | `string` | No | Invoice or receipt number, for tax/accounting reference. Implies invoiceAvailable: true. |
| `notes` | `string` | No | User-visible free-text notes. |
| `priceMinorUnits` | `integer` | No | Price in the currency's minor units (e.g. cents for EUR/USD), not a float. Zero is valid and meaningful (distinguishes a recorded free copy from no price recorded, which is this field absent). |
| `receivedDate` | `string` (datetime) | No | Canonical UTC instant for the calendar day the book was received, serialized as ISO 8601 with a trailing Z suffix. Writers store midnight UTC of that day; the time-of-day component is insignificant. Same convention as library.defs#progressLogEntry.date. |
| `receivedFrom` | `string` | No | Free-text source/supplier, e.g. "Piper Verlag", "Amazon", "Sarah". |
| `supplier` | `string` | No | Supplier/vendor name, distinct from receivedFrom for detailed accounting use cases. |
| `updatedAt` | `string` (datetime) | No | Canonical UTC instant serialized as ISO 8601 with a trailing Z suffix. |

## Raw Schema

```json
{
  "$type": "com.atproto.lexicon.schema",
  "defs": {
    "main": {
      "description": "A record of how an actor came to own a specific book edition (purchased, gift, review copy, etc.). Multiple acquisitions per edition are allowed; like library.marker, library.review, and library.state, this record uses key: \"tid\", and its rkey is an opaque identity that never changes.",
      "key": "tid",
      "record": {
        "properties": {
          "acquisitionType": {
            "description": "How the actor came to own this edition.",
            "ref": "social.dracome.library.defs#acquisitionType",
            "type": "ref"
          },
          "catalogSnapshot": {
            "description": "Point-in-time work/edition metadata capture, refreshed from current catalog data at write time.",
            "ref": "social.dracome.work.defs#catalogSnapshot",
            "type": "ref"
          },
          "catalogTarget": {
            "description": "The work, and edition, this acquisition is about.",
            "ref": "social.dracome.work.defs#catalogTarget",
            "type": "ref"
          },
          "createdAt": {
            "description": "Canonical UTC instant serialized as ISO 8601 with a trailing Z suffix.",
            "format": "datetime",
            "type": "string"
          },
          "currencyCode": {
            "description": "ISO 4217 currency code (e.g. \"USD\", \"EUR\", \"GBP\").",
            "maxLength": 3,
            "type": "string"
          },
          "invoiceAvailable": {
            "description": "Yes/No/unset - field absence means \"unset\". Must be true when invoiceNumber is set.",
            "type": "boolean"
          },
          "invoiceNumber": {
            "description": "Invoice or receipt number, for tax/accounting reference. Implies invoiceAvailable: true.",
            "maxGraphemes": 128,
            "maxLength": 512,
            "type": "string"
          },
          "notes": {
            "description": "User-visible free-text notes.",
            "maxGraphemes": 2000,
            "maxLength": 8000,
            "type": "string"
          },
          "priceMinorUnits": {
            "description": "Price in the currency's minor units (e.g. cents for EUR/USD), not a float. Zero is valid and meaningful (distinguishes a recorded free copy from no price recorded, which is this field absent).",
            "minimum": 0,
            "type": "integer"
          },
          "receivedDate": {
            "description": "Canonical UTC instant for the calendar day the book was received, serialized as ISO 8601 with a trailing Z suffix. Writers store midnight UTC of that day; the time-of-day component is insignificant. Same convention as library.defs#progressLogEntry.date.",
            "format": "datetime",
            "type": "string"
          },
          "receivedFrom": {
            "description": "Free-text source/supplier, e.g. \"Piper Verlag\", \"Amazon\", \"Sarah\".",
            "maxGraphemes": 256,
            "maxLength": 1024,
            "type": "string"
          },
          "supplier": {
            "description": "Supplier/vendor name, distinct from receivedFrom for detailed accounting use cases.",
            "maxGraphemes": 256,
            "maxLength": 1024,
            "type": "string"
          },
          "updatedAt": {
            "description": "Canonical UTC instant serialized as ISO 8601 with a trailing Z suffix.",
            "format": "datetime",
            "type": "string"
          }
        },
        "required": [
          "catalogTarget",
          "catalogSnapshot",
          "acquisitionType",
          "createdAt"
        ],
        "type": "object"
      },
      "type": "record"
    }
  },
  "id": "social.dracome.library.acquisition",
  "lexicon": 1
}
```
