Procurement Offer v1¶
Source schema: doc/schemas/procurement-offer.v1.schema.json
Machine-readable schema for responder offers attached to a published procurement-capable question.
Governing Basis¶
doc/project/30-stories/story-001.mddoc/project/30-stories/story-004.mddoc/project/50-requirements/requirements-001.mddoc/project/40-proposals/011-federated-answer-procurement-lifecycle.md
Project Lineage¶
Requirements¶
Stories¶
Fields¶
| Field | Required | Shape | Description |
|---|---|---|---|
schema/v |
yes |
const: 1 |
Schema version. |
offer/id |
yes |
string | Stable identifier of the offer instance. |
question/id |
yes |
string | Question lifecycle identifier to which the offer responds. |
created-at |
yes |
string | Offer creation timestamp. |
expires-at |
no |
string | Optional offer-expiry timestamp before which the asker must decide. |
responder/node-id |
yes |
string | Responding node that would host, route, or execute the answer path. |
responder/participant-id |
yes |
string | Participation-role identity that stands behind the offer and would own the responder-side participation semantics. |
responder/federation-id |
no |
string | Federation identity of the responder when relevant to routing or trust. |
responder/public-key-ref |
no |
string | Reference to the responder's encryption or signature key material. |
price/amount |
yes |
integer | Proposed price in minor units. When price/currency = ORC, the value uses ORC minor units with fixed scale 2. |
price/currency |
yes |
string | Currency or settlement unit symbol for the proposed price. |
deadline-at |
yes |
string | Latest timestamp by which the responder expects to deliver or conclude. |
answer/min-length |
yes |
integer | Lower answer-length bound the responder is willing to contract against. |
answer/max-length |
yes |
integer | Upper answer-length bound the responder is willing to contract against. |
answer/format |
no |
enum: plain-text, markdown, json, edn, mixed |
Preferred answer representation. |
execution/mode |
yes |
enum: room-collaboration, single-responder |
Whether the responder expects collaborative discussion or a narrowed single-responder path. |
specialization/tags |
yes |
array | Tags used to justify topical fit of the offer. |
models/used |
no |
array | Models or capability labels the responder expects to use. |
operator-participation/may-occur |
no |
boolean | Whether the responder expects possible operator consultation or live human presence under allowed room policy. |
confirmation/mode |
no |
enum: arbiter-confirmed, self-confirmed, manual-review-only |
Confirmation model proposed by the responder for later contract formation. |
reputation/evidence |
yes |
array | Evidence references advertised to justify responder trust. |
policy_annotations |
no |
object |
Conditional Rules¶
Rule 1¶
When:
{
"required": [
"answer/min-length",
"answer/max-length"
]
}
Then:
{
"properties": {
"answer/max-length": {
"minimum": 1
}
}
}
Field Semantics¶
schema/v¶
- Required:
yes - Shape: const:
1
Schema version.
offer/id¶
- Required:
yes - Shape: string
Stable identifier of the offer instance.
question/id¶
- Required:
yes - Shape: string
Question lifecycle identifier to which the offer responds.
created-at¶
- Required:
yes - Shape: string
Offer creation timestamp.
expires-at¶
- Required:
no - Shape: string
Optional offer-expiry timestamp before which the asker must decide.
responder/node-id¶
- Required:
yes - Shape: string
Responding node that would host, route, or execute the answer path.
responder/participant-id¶
- Required:
yes - Shape: string
Participation-role identity that stands behind the offer and would own the responder-side participation semantics.
responder/federation-id¶
- Required:
no - Shape: string
Federation identity of the responder when relevant to routing or trust.
responder/public-key-ref¶
- Required:
no - Shape: string
Reference to the responder's encryption or signature key material.
price/amount¶
- Required:
yes - Shape: integer
Proposed price in minor units. When price/currency = ORC, the value uses ORC minor units with fixed scale 2.
price/currency¶
- Required:
yes - Shape: string
Currency or settlement unit symbol for the proposed price.
deadline-at¶
- Required:
yes - Shape: string
Latest timestamp by which the responder expects to deliver or conclude.
answer/min-length¶
- Required:
yes - Shape: integer
Lower answer-length bound the responder is willing to contract against.
answer/max-length¶
- Required:
yes - Shape: integer
Upper answer-length bound the responder is willing to contract against.
answer/format¶
- Required:
no - Shape: enum:
plain-text,markdown,json,edn,mixed
Preferred answer representation.
execution/mode¶
- Required:
yes - Shape: enum:
room-collaboration,single-responder
Whether the responder expects collaborative discussion or a narrowed single-responder path.
specialization/tags¶
- Required:
yes - Shape: array
Tags used to justify topical fit of the offer.
models/used¶
- Required:
no - Shape: array
Models or capability labels the responder expects to use.
operator-participation/may-occur¶
- Required:
no - Shape: boolean
Whether the responder expects possible operator consultation or live human presence under allowed room policy.
confirmation/mode¶
- Required:
no - Shape: enum:
arbiter-confirmed,self-confirmed,manual-review-only
Confirmation model proposed by the responder for later contract formation.
reputation/evidence¶
- Required:
yes - Shape: array
Evidence references advertised to justify responder trust.
policy_annotations¶
- Required:
no - Shape: object