openapi: 3.2.0 info: title: HiveMorph v0.1 Pilot API description: 'Polymorphic agent runtime — single shape (Merchant), single supermodel (W2 MERCHANT). Three gates: NEED + YIELD + CLEAN-MONEY.' version: 0.1.0 tags: - name: pilot paths: /v1/pilot/accept: post: tags: - pilot summary: Pilot Accept description: Countersign a pilot offer. Returns a signed receipt + deposit instructions. operationId: pilot_accept_v1_pilot_accept_post requestBody: content: application/json: schema: $ref: '#/components/schemas/PilotAcceptReq' required: true responses: '200': description: Successful Response content: application/json: schema: {} '422': description: Validation Error content: application/json: schema: $ref: '#/components/schemas/HTTPValidationError' /v1/pilot/accepts/recent: get: tags: - pilot summary: Accepts Recent description: Operator-only — read recent pilot accepts from the JSONL log. operationId: accepts_recent_v1_pilot_accepts_recent_get parameters: - name: limit in: query required: false schema: type: integer default: 50 title: Limit responses: '200': description: Successful Response content: application/json: schema: {} '422': description: Validation Error content: application/json: schema: $ref: '#/components/schemas/HTTPValidationError' /v1/pilot/health: get: tags: - pilot summary: Pilot Health operationId: pilot_health_v1_pilot_health_get responses: '200': description: Successful Response content: application/json: schema: {} components: schemas: HTTPValidationError: properties: detail: items: $ref: '#/components/schemas/ValidationError' type: array title: Detail type: object title: HTTPValidationError ValidationError: properties: loc: items: anyOf: - type: string - type: integer type: array title: Location msg: type: string title: Message type: type: string title: Error Type input: title: Input ctx: type: object title: Context type: object required: - loc - msg - type title: ValidationError PilotAcceptReq: properties: slug: type: string maxLength: 64 minLength: 4 title: Slug accepted_by_email: type: string maxLength: 320 minLength: 5 title: Accepted By Email accepted_by_name: type: string maxLength: 100 minLength: 2 title: Accepted By Name accepted_by_title: anyOf: - type: string maxLength: 120 - type: 'null' title: Accepted By Title company: type: string maxLength: 120 minLength: 2 title: Company deposit_amount_usd: type: integer maximum: 10000000.0 minimum: 0.0 title: Deposit Amount Usd notes: anyOf: - type: string maxLength: 2000 - type: 'null' title: Notes counter_signature: anyOf: - type: string maxLength: 512 - type: 'null' title: Counter Signature counter_pubkey: anyOf: - type: string maxLength: 256 - type: 'null' title: Counter Pubkey type: object required: - slug - accepted_by_email - accepted_by_name - company - deposit_amount_usd title: PilotAcceptReq