{ "$schema": "http://json-schema.org/draft-07/schema", "$id": "https://raw.githubusercontent.com/Open-Cap-Table-Coalition/Open-Cap-Format-OCF/main/schema/objects/transactions/issuance/EquityCompensationIssuance.schema.json", "title": "Object - Equity Compensation Issuance Transaction", "description": "Object describing securities issuance transaction by the issuer and held by a stakeholder as a form of compensation (as noted elsewhere, RSAs are not included here intentionally and should be modelled using Stock Issuances).", "type": "object", "allOf": [ { "$ref": "https://raw.githubusercontent.com/Open-Cap-Table-Coalition/Open-Cap-Format-OCF/main/schema/primitives/objects/Object.schema.json" }, { "$ref": "https://raw.githubusercontent.com/Open-Cap-Table-Coalition/Open-Cap-Format-OCF/main/schema/primitives/objects/transactions/Transaction.schema.json" }, { "$ref": "https://raw.githubusercontent.com/Open-Cap-Table-Coalition/Open-Cap-Format-OCF/main/schema/primitives/objects/transactions/SecurityTransaction.schema.json" }, { "$ref": "https://raw.githubusercontent.com/Open-Cap-Table-Coalition/Open-Cap-Format-OCF/main/schema/primitives/objects/transactions/issuance/Issuance.schema.json" } ], "properties": { "object_type": { "enum": ["TX_PLAN_SECURITY_ISSUANCE", "TX_EQUITY_COMPENSATION_ISSUANCE"], "description": "This is done to avoid a breaking change as we work towards a bigger restructure of the equity types in v2.0.0. `TX_PLAN_SECURITY_ISSUANCE` will be deprecated in v2.0.0" }, "stock_plan_id": { "description": "If the equity compensation was issued from a plan (don't forget, plan-less options are a thing), what is the plan id.", "type": "string" }, "stock_class_id": { "description": "The stock class options will exercise into. Especially important for plan-less options and any issuances from a plan that supports multiple share classes.", "type": "string" }, "compensation_type": { "description": "If the plan security is compensation, what kind?", "$ref": "https://raw.githubusercontent.com/Open-Cap-Table-Coalition/Open-Cap-Format-OCF/main/schema/enums/CompensationType.schema.json" }, "option_grant_type": { "description": "If the plan security is an option, what kind?", "$ref": "https://raw.githubusercontent.com/Open-Cap-Table-Coalition/Open-Cap-Format-OCF/main/schema/enums/OptionType.schema.json", "$comment": "DEPRECATION WARNING - This field is being retained for compatibility, but these variations have been incorporated into CompensationType.schema.json enum options" }, "quantity": { "description": "How many shares are subject to this plan security?", "$ref": "https://raw.githubusercontent.com/Open-Cap-Table-Coalition/Open-Cap-Format-OCF/main/schema/types/Numeric.schema.json" }, "exercise_price": { "description": "If this is an option, what is the exercise price of the option?", "$ref": "https://raw.githubusercontent.com/Open-Cap-Table-Coalition/Open-Cap-Format-OCF/main/schema/types/Monetary.schema.json" }, "base_price": { "description": "If this is a stock appreciation right, what is the base price used to calculate the appreciation of the SAR?", "$ref": "https://raw.githubusercontent.com/Open-Cap-Table-Coalition/Open-Cap-Format-OCF/main/schema/types/Monetary.schema.json" }, "early_exercisable": { "type": "boolean", "description": "Is this Equity Compensation exercisable prior to completion of vesting? If so, it's assumed the vesting schedule will remain in effect but, instead of vesting a right to exercise, it becomes the schedule determining when a right to repurchase the resulting stock lapses.", "$comment": "REQUIRED in v2" }, "vesting_terms_id": { "description": "Identifier of the VestingTerms to which this security is subject. If neither `vesting_terms_id` or `vestings` are present then the security is fully vested on issuance.", "type": "string" }, "vestings": { "title": "Equity Compensation Issuance - Vestings Array", "description": "List of exact vesting dates and amounts for this security. When `vestings` array is present then `vesting_terms_id` may be ignored.", "type": "array", "minItems": 1, "items": { "$ref": "https://raw.githubusercontent.com/Open-Cap-Table-Coalition/Open-Cap-Format-OCF/main/schema/types/Vesting.schema.json" } }, "expiration_date": { "description": "Expiration date of the plan security", "oneOf": [ { "type": "null" }, { "$ref": "https://raw.githubusercontent.com/Open-Cap-Table-Coalition/Open-Cap-Format-OCF/main/schema/types/Date.schema.json" } ] }, "termination_exercise_windows": { "title": "Plan Security - Termination Window Array", "description": "Exercise periods applicable to plan security after a termination for a given, enumerated reason", "type": "array", "items": { "$ref": "https://raw.githubusercontent.com/Open-Cap-Table-Coalition/Open-Cap-Format-OCF/main/schema/types/TerminationWindow.schema.json" } }, "id": {}, "comments": {}, "security_id": {}, "date": {}, "custom_id": {}, "stakeholder_id": {}, "board_approval_date": {}, "stockholder_approval_date": {}, "consideration_text": {}, "security_law_exemptions": {} }, "anyOf": [ { "properties": { "compensation_type": { "const": "OPTION" } }, "$comment": "For now, we're using JSONSchema to enforce some properties for some compensation types but not others. Options require exercise price.", "required": ["exercise_price"] }, { "properties": { "compensation_type": { "const": "OPTION_NSO" } }, "$comment": "For now, we're using JSONSchema to enforce some properties for some compensation types but not others. Options require exercise price.", "required": ["exercise_price"] }, { "properties": { "compensation_type": { "const": "OPTION_ISO" } }, "$comment": "For now, we're using JSONSchema to enforce some properties for some compensation types but not others. Options require exercise price.", "required": ["exercise_price"] }, { "properties": { "compensation_type": { "const": "RSU" } }, "$comment": "For now, we're using JSONSchema to enforce some properties for some compensation types but not others. RSUs usually don't have exercise prices." }, { "properties": { "compensation_type": { "const": "CSAR" } }, "$comment": "For now, we're using JSONSchema to enforce some properties for some compensation types but not others. Stock appreciation rights have grant prices.", "required": ["base_price"] }, { "properties": { "compensation_type": { "const": "SSAR" } }, "$comment": "For now, we're using JSONSchema to enforce some properties for some compensation types but not others. Stock appreciation rights have grant prices.", "required": ["base_price"] } ], "additionalProperties": false, "required": [ "compensation_type", "quantity", "expiration_date", "termination_exercise_windows" ], "$comment": "Copyright © 2026 Open Cap Table Coalition (https://opencaptablecoalition.com) / Original File: https://github.com/Open-Cap-Table-Coalition/Open-Cap-Format-OCF/tree/main/schema/objects/transactions/issuance/EquityCompensationIssuance.schema.json" }