{ "$schema": "https://json-schema.org/draft/2020-12/schema", "$id": "#/components/schemas/ChangeRequest", "title": "ChangeRequest", "type": "object", "properties": { "id": { "type": "string", "format": "uuid", "readOnly": true }, "action_key": { "type": "string", "readOnly": true }, "action_version": { "type": "integer", "readOnly": true }, "resource_type": { "type": "string", "readOnly": true }, "resource_id": { "type": "string", "readOnly": true, "nullable": true }, "intent": { "readOnly": true }, "intent_display": { "readOnly": true }, "policy_snapshot": { "readOnly": true }, "validation_status": { "allOf": [ { "$ref": "#/components/schemas/ValidationStatusEnum" } ], "readOnly": true }, "validation_errors": { "readOnly": true, "nullable": true }, "validated_at": { "type": "string", "format": "date-time", "readOnly": true, "nullable": true }, "state": { "allOf": [ { "$ref": "#/components/schemas/ChangeRequestStateEnum" } ], "readOnly": true }, "created_by": { "allOf": [ { "$ref": "#/components/schemas/UserBasic" } ], "readOnly": true }, "applied_by": { "allOf": [ { "$ref": "#/components/schemas/UserBasic" } ], "readOnly": true }, "created_at": { "type": "string", "format": "date-time", "readOnly": true }, "updated_at": { "type": "string", "format": "date-time", "readOnly": true, "nullable": true }, "expires_at": { "type": "string", "format": "date-time", "readOnly": true }, "applied_at": { "type": "string", "format": "date-time", "readOnly": true, "nullable": true }, "apply_error": { "type": "string", "readOnly": true }, "result_data": { "readOnly": true, "nullable": true }, "approvals": { "type": "array", "items": { "type": "object", "additionalProperties": true }, "readOnly": true }, "can_approve": { "type": "boolean", "description": "Check if current user can approve this change request.", "readOnly": true }, "can_cancel": { "type": "boolean", "readOnly": true }, "is_requester": { "type": "boolean", "description": "Check if current user is the requester.", "readOnly": true }, "user_decision": { "type": "string", "nullable": true, "description": "Get the current user's approval decision if they have voted.", "readOnly": true } }, "required": [ "action_key", "action_version", "applied_at", "applied_by", "apply_error", "approvals", "can_approve", "can_cancel", "created_at", "created_by", "expires_at", "id", "intent", "intent_display", "is_requester", "policy_snapshot", "resource_id", "resource_type", "result_data", "state", "updated_at", "user_decision", "validated_at", "validation_errors", "validation_status" ] }