com.cultureblocs.offer
Something a creative or a place offers, or needs, for a while: a recording engineer available for hire, off-peak rehearsal rates, a studio desk free for three months, 'looking for a drummer'. Separate from the profile because offers come and go. Pause and reopen an offer by changing `status` on the same record rather than deleting and recreating it, so links and history survive. Public by nature: carry links, never private contact details.
Details · record, key tid
| Kind | record |
|---|---|
| Record key | tid |
| Authority | cultureblocs.com |
| Indexed |
Checks
Valid Lint pass{
"$type": "com.atproto.lexicon.schema",
"defs": {
"main": {
"description": "Something a creative or a place offers, or needs, for a while: a recording engineer available for hire, off-peak rehearsal rates, a studio desk free for three months, 'looking for a drummer'. Separate from the profile because offers come and go. Pause and reopen an offer by changing `status` on the same record rather than deleting and recreating it, so links and history survive. Public by nature: carry links, never private contact details.",
"key": "tid",
"record": {
"properties": {
"areas": {
"description": "Where the offer applies. Defaults, for readers, to the offering party's basedIn or place area.",
"items": {
"ref": "com.cultureblocs.defs#areaRef",
"type": "ref"
},
"maxLength": 8,
"type": "array"
},
"createdAt": {
"description": "When this record was first stamped. The only immutable field: everything else may be revised by publishing a new commit.",
"format": "datetime",
"type": "string"
},
"description": {
"maxGraphemes": 2000,
"type": "string"
},
"disciplines": {
"description": "Freeform, as in creative.profile.",
"items": {
"maxGraphemes": 64,
"type": "string"
},
"maxLength": 8,
"type": "array"
},
"kind": {
"description": "Offering something, or looking for something. Readers should not display a record whose kind they do not recognise.",
"knownValues": [
"offer",
"need"
],
"maxGraphemes": 16,
"type": "string"
},
"links": {
"description": "Booking page, portfolio, enquiry form.",
"items": {
"ref": "com.cultureblocs.defs#linkRef",
"type": "ref"
},
"maxLength": 8,
"type": "array"
},
"offerType": {
"description": "Advisory vocabulary: new types need no schema change.",
"knownValues": [
"service",
"space_to_let",
"hire",
"commission",
"collaboration",
"workshop",
"residency",
"volunteer"
],
"maxGraphemes": 64,
"type": "string"
},
"offeredBy": {
"description": "The place.profile this offer belongs to. Omit when the offer is from the repository holder's own creative.profile.",
"ref": "com.cultureblocs.defs#strongRef",
"type": "ref"
},
"price": {
"description": "Freeform: 'from £20/hr', 'negotiable', 'free for members'.",
"maxGraphemes": 200,
"type": "string"
},
"remote": {
"description": "Can be done remotely or online.",
"type": "boolean"
},
"status": {
"description": "Readers treat any value other than 'open' as not currently available.",
"knownValues": [
"open",
"paused",
"closed"
],
"maxGraphemes": 16,
"type": "string"
},
"tags": {
"items": {
"maxGraphemes": 64,
"type": "string"
},
"maxLength": 8,
"type": "array"
},
"title": {
"description": "One line, e.g. 'Mixing and mastering', 'Shared studio desk, Deptford'.",
"maxGraphemes": 200,
"type": "string"
},
"updatedAt": {
"description": "When status or content last changed. Lets readers show 'reopened 2 days ago' and sort by freshness.",
"format": "datetime",
"type": "string"
},
"validFrom": {
"format": "datetime",
"type": "string"
},
"validUntil": {
"description": "After this, readers treat the offer as closed whatever its status says, so stale offers drop out without anyone tidying up.",
"format": "datetime",
"type": "string"
}
},
"required": [
"kind",
"title",
"status",
"createdAt"
],
"type": "object"
},
"type": "record"
}
},
"id": "com.cultureblocs.offer",
"lexicon": 1
}