# Generated by API Evangelist (build-phrasing.py). Our phrasing, not observed demand. overlay: 1.0.0 info: title: API Evangelist conversational phrasing for Thehiveryiq Com R4 Firewall API version: 1.0.0 extends: openapi/thehiveryiq-com-r4-firewall-api-openapi.yml actions: - target: $.info update: x-apievangelist-phrasing: method: generated generated: '2026-09-26' generator: build-phrasing.py label: Generated by API Evangelist operations: 9 - target: $.paths['/v1/firewall/policy'].get update: x-apievangelist-phrasing: intent: Get the tool firewall enforcement policy effect: read questions: - How does the Hive Tool Firewall decide what to allow, block or escalate? - Is there a machine-readable contract describing firewall enforcement behaviour? instructions: - text: Fetch the firewall enforcement policy contract. - text: Show me how the tool firewall behaves so I can build delegation envelopes against it. method: generated generated: '2026-09-26' - target: $.paths['/v1/firewall/enforce/preview'].post update: x-apievangelist-phrasing: intent: Dry-run firewall enforcement on an envelope effect: read questions: - Can I preview what HTTP status the firewall would return for a request without persisting anything? - Can I dry-run enforcement against a stored envelope by its jti? instructions: - text: Preview firewall enforcement for the stored envelope {jti}. slots: jti: requestBody.jti - text: Dry-run envelope {envelope} against request {request} and show the enforcement result. slots: envelope: requestBody.envelope request: requestBody.request method: generated generated: '2026-09-26' - target: $.paths['/v1/firewall/sandbox/run'].post update: x-apievangelist-phrasing: intent: Run a request in firewall sandbox mode effect: write questions: - How do I test that an envelope authorizes a request without any settlement happening? - What does the firewall sandbox return instead of a real result? instructions: - text: Run a sandbox request under envelope {jti}. slots: jti: requestBody.jti - text: Sandbox-run {request} with payload {payload} under envelope {jti}, no settlement. slots: request: requestBody.request payload: requestBody.payload jti: requestBody.jti method: generated generated: '2026-09-26' - target: $.paths['/v1/firewall/cosign/challenge'].post update: x-apievangelist-phrasing: intent: Open a threshold cosign challenge effect: write questions: - How do I require several cosigners before a blocked agent request can proceed? - Can I set the signing threshold and expiry on a cosign challenge? instructions: - text: Create a cosign challenge for envelope {jti}. slots: jti: requestBody.jti - text: Open a cosign challenge on {jti} needing {threshold} signatures, expiring in {ttl_seconds} seconds. slots: jti: requestBody.jti threshold: requestBody.threshold ttl_seconds: requestBody.ttl_seconds method: generated generated: '2026-09-26' - target: $.paths['/v1/firewall/cosign/challenge/{challenge_id}'].get update: x-apievangelist-phrasing: intent: Get a cosign challenge's status effect: read questions: - How many cosignatures has a challenge collected so far? - Has a particular cosign challenge reached its threshold yet? instructions: - text: Show cosign challenge {challenge_id}. slots: challenge_id: path.challenge_id - text: Check whether challenge {challenge_id} has enough cosigners. slots: challenge_id: path.challenge_id method: generated generated: '2026-09-26' - target: $.paths['/v1/firewall/cosign/challenge/{challenge_id}/sign'].post update: x-apievangelist-phrasing: intent: Add a cosignature to a challenge effect: write questions: - How do I submit my signature toward a cosign challenge? - What happens once a challenge reaches its signature threshold? instructions: - text: Cosign challenge {challenge_id} as {signer_did} with signature {signature}. slots: challenge_id: path.challenge_id signer_did: requestBody.signer_did signature: requestBody.signature - text: Record {signer_did}'s cosignature {signature} on challenge {challenge_id}. slots: signer_did: requestBody.signer_did signature: requestBody.signature challenge_id: path.challenge_id method: generated generated: '2026-09-26' - target: $.paths['/v1/firewall/approval/request'].post update: x-apievangelist-phrasing: intent: Request human approval for an agent action effect: write questions: - How do I escalate a blocked agent request to a human for approval? - Can an approval ticket describe the violation and expire after a set time? instructions: - text: Open a human-approval ticket for envelope {jti}. slots: jti: requestBody.jti - text: 'Ask a human to approve {jti}: {request_summary}, expiring in {ttl_seconds} seconds.' slots: jti: requestBody.jti request_summary: requestBody.request_summary ttl_seconds: requestBody.ttl_seconds method: generated generated: '2026-09-26' - target: $.paths['/v1/firewall/approval/{ticket_id}'].get update: x-apievangelist-phrasing: intent: Get a human-approval ticket effect: read questions: - Has my approval ticket been approved or denied yet? - Where can I see who decided an approval ticket? instructions: - text: Show approval ticket {ticket_id}. slots: ticket_id: path.ticket_id - text: Check the decision status of ticket {ticket_id}. slots: ticket_id: path.ticket_id method: generated generated: '2026-09-26' - target: $.paths['/v1/firewall/approval/{ticket_id}/decide'].post update: x-apievangelist-phrasing: intent: Approve or deny an approval ticket effect: write questions: - How do I approve or deny a pending approval ticket? - Can I leave a note explaining why I denied a ticket? instructions: - text: Mark ticket {ticket_id} {decision}, decided by {decided_by}. slots: ticket_id: path.ticket_id decision: requestBody.decision decided_by: requestBody.decided_by - text: Deny ticket {ticket_id} as {decided_by} with note {note}. slots: ticket_id: path.ticket_id decided_by: requestBody.decided_by note: requestBody.note method: generated generated: '2026-09-26'