Contract Registry
Schema
The complete contract is composed of a top-level Contract
object and associated sub-components:
Data Classes
@dataclass
class Contract:
contract_id: str
contract_type: str
contract_parties_ids: List[str]
contract_parent_org_id: str
contract_acl_data: Dict
contract_acl: Dict
contract_sub_clauses_id: List[str]
contract_status: str
contract_creation_time: str
last_update_time: str
contract_final_completion_timestamp: Optional[str]
final_verifier_id: Optional[str]
report_url: Optional[str]
purpose: Optional[str]
human_readable_description: Optional[str]
json_parseable_description: Optional[str]
contract_parties_roles_mapping: Dict
@dataclass
class SubContract:
sub_contract_id: str
contract_id: str
sub_contract_clause_data: List[Dict]
sub_contract_json_repr: Dict
sub_contract_parties_ids: List[str]
sub_contract_status: str
sub_contract_actions_map: Dict
sub_contract_verification_map: Dict
sub_contract_creation_time: str
last_update_time: str
sub_report_url: Optional[str]
verification_subjects_list: Optional[List[str]]
purpose: Optional[str]
json_parseable_description: Optional[str]
sub_clause_constraints: Optional[List[str]]
sub_contract_parties_roles_mapping: Optional[Dict]
human_readable_description: Optional[str]
@dataclass
class Action:
action_id: str
sub_clause_id: str
action_type: str
action_fulfillment_dsl_workflow_id: str
action_execution_status: str
action_execution_config: Dict
action_outcome_data: Optional[Dict]
action_execution_ppt_dsl: Optional[str]
action_execution_constraint_ids: Optional[List[str]]
@dataclass
class VerificationEntry:
verification_entry_id: str
sub_clause_action_type: str
verifier_subject_id: str
verifier_subject_type: str
verification_dsl_workflow_id: str
verification_mode: str
verification_config: Dict
verification_status: str
verification_outcome_data: Dict
verification_outcome_action_id: Optional[str]
verification_timestamp: Optional[str]
verification_cert_data: Optional[Dict]
sub_clause_id: str
@dataclass
class SubContractConstraint:
constraint_id: str
sub_clause_id: str
constraint_type: str
constraint_sub_type: Optional[str]
constraint_parameters: Dict
constraint_policy_id: Optional[str]
constraint_negotiation_parameters: Optional[Dict]
group_ids: Optional[List[str]]
role_ids: Optional[List[str]]
can_negotiate: Optional[bool] = False
Contract Fields
Field | Description |
---|---|
contract_id |
Unique contract identifier |
contract_type |
Type/category of the contract (e.g. service, employment) |
contract_parties_ids |
List of participating entity IDs |
contract_parent_org_id |
Organization under which this contract is made |
contract_acl_data |
Raw ACL metadata |
contract_acl |
Evaluated ACL structure |
contract_sub_clauses_id |
IDs of referenced clauses |
contract_status |
Status such as active, expired, etc. |
contract_creation_time |
Time of initial creation (ISO format) |
last_update_time |
Last time contract was updated |
contract_final_completion_timestamp |
When it was marked as completed |
final_verifier_id |
Who verified the final contract |
report_url |
External report link if available |
purpose |
Purpose of this contract |
human_readable_description |
Readable description for end users |
json_parseable_description |
JSON-compatible description for processing |
contract_parties_roles_mapping |
Role mapping for parties |
SubContract Fields
Field | Description |
---|---|
sub_contract_id |
Unique ID for the sub-contract |
contract_id |
Reference to parent contract |
sub_contract_clause_data |
List of clauses inside sub-contract |
sub_contract_json_repr |
Full JSON dump for machine processing |
sub_contract_parties_ids |
Parties involved in the sub-contract |
sub_contract_status |
Current status of the sub-contract |
sub_contract_actions_map |
Mapping of all actions in this sub-contract |
sub_contract_verification_map |
Mapping of all verifications in this sub-contract |
sub_contract_creation_time |
When this sub-contract was created |
last_update_time |
When last updated |
sub_report_url |
Link to sub-contract report if available |
verification_subjects_list |
Subjects that will perform verification |
purpose |
Purpose of this sub-contract |
json_parseable_description |
JSON-compatible description for parsing |
sub_clause_constraints |
List of constraint IDs applied to this sub-contract |
sub_contract_parties_roles_mapping |
Roles and parties mapping |
human_readable_description |
Human-readable format |
Action Fields
Field | Description |
---|---|
action_id |
Unique ID for action |
sub_clause_id |
Clause this action is tied to |
action_type |
Type of action (e.g. approve, sign) |
action_fulfillment_dsl_workflow_id |
Workflow to fulfill this action |
action_execution_status |
Status of action execution |
action_execution_config |
Runtime configuration for the action |
action_outcome_data |
Output of the action if completed |
action_execution_ppt_dsl |
Optional DSL for UI display |
action_execution_constraint_ids |
Related constraints for this action |
VerificationEntry Fields
Field | Description |
---|---|
verification_entry_id |
ID for the verification entry |
sub_clause_action_type |
Action type being verified |
verifier_subject_id |
ID of verifier subject |
verifier_subject_type |
Type (e.g., user, role) of verifier |
verification_dsl_workflow_id |
Verification logic workflow ID |
verification_mode |
Manual, automatic, etc. |
verification_config |
Input config for execution |
verification_status |
Status of verification |
verification_outcome_data |
Data produced from verification |
verification_outcome_action_id |
Outcome action ID if chained |
verification_timestamp |
Timestamp of verification event |
verification_cert_data |
Certificate if any generated |
sub_clause_id |
Clause verified by this entry |
SubContractConstraint Fields
Field | Description |
---|---|
constraint_id |
Unique ID for constraint |
sub_clause_id |
Clause it constrains |
constraint_type |
Main type of constraint |
constraint_sub_type |
Further classification of constraint |
constraint_parameters |
Raw parameter dict for enforcement |
constraint_policy_id |
ID of referenced policy if any |
constraint_negotiation_parameters |
Params to support negotiation if allowed |
group_ids |
Restricted to these group IDs |
role_ids |
Restricted to these role IDs |
can_negotiate |
Boolean toggle to allow negotiation |
3. API Documentation
3.1 Create Contract
Endpoint: POST /contract
Description: Upload a full contract JSON including all nested components.
Request Body:
{
"contract": { ... },
"sub_contracts": [ ... ],
"actions": [ ... ],
"verification_entries": [ ... ],
"constraints": [ ... ]
}
Response:
{
"success": true,
"message": "Contract created successfully",
"result": { ... }
}
cURL Example:
curl -X POST http://localhost:5000/contract \
-H "Content-Type: application/json" \
-d @full_contract.json
3.2 Update Contract
Endpoint: PUT /contract
Description: Update the contract or any of its sub-documents.
Request Body: Same as Create Contract
Response:
{
"success": true,
"message": "Contract updated successfully",
"result": { ... }
}
cURL Example:
curl -X PUT http://localhost:5000/contract \
-H "Content-Type: application/json" \
-d @updated_contract.json
3.3 Delete Full Contract
Endpoint: DELETE /contract/<contract_id>
Description: Deletes the contract and all related subdocuments (cascading delete).
Response:
{
"success": true,
"message": "Contract and subdocuments deleted",
"result": { ... }
}
cURL Example:
curl -X DELETE http://localhost:5000/contract/contract_abc_123
3.4 Delete Sub-Document
Endpoint: DELETE /contract/subdocument/<doc_type>/<doc_id>
Description: Delete a single sub-document by type and ID.
doc_type values: sub_contract
, action
, verification_entry
, constraint
Response:
{
"success": true,
"message": "<doc_type> deleted",
"result": 1
}
cURL Example:
curl -X DELETE http://localhost:5000/contract/subdocument/action/action_123
Query APIs
API: Get Full Contract Report
Endpoint:
GET /contract/<contract_id>/report
Description: Fetches the complete contract specification including all associated sub-documents:
- Contract
- Sub-contracts
- Actions
- Verification Entries
- Constraints
Path Parameters
Parameter | Type | Required | Description |
---|---|---|---|
contract_id |
string | Yes | ID of the contract to be retrieved |
Response Format
Success (200 OK):
{
"success": true,
"data": {
"contract": { ... },
"sub_contracts": [ ... ],
"actions": [ ... ],
"verification_entries": [ ... ],
"constraints": [ ... ]
}
}
Not Found (404):
{
"success": false,
"error": "Contract with ID '...' not found."
}
Error (500):
{
"success": false,
"error": "Internal error message"
}
Example cURL Request
curl -X GET http://localhost:5000/contract/contract_abc123/report
API: Get Contract by ID
Endpoint:
GET /contract/<contract_id>
Success Response (200 OK):
{
"success": true,
"data": {
"contract_id": "contract-001",
"contract_type": "service",
"contract_parties_ids": ["party-123", "party-456"],
"contract_parent_org_id": "org-789",
"contract_acl_data": {
"read": ["party-123"],
"write": ["party-456"]
},
"contract_acl": {
"effective": ["party-123", "party-456"]
},
"contract_sub_clauses_id": ["sub-001", "sub-002"],
"contract_status": "active",
"contract_creation_time": "2024-11-01T10:00:00Z",
"last_update_time": "2025-05-01T15:30:00Z",
"contract_final_completion_timestamp": null,
"final_verifier_id": null,
"report_url": null,
"purpose": "Legal service agreement",
"human_readable_description": "This contract outlines service terms between parties.",
"json_parseable_description": "{\"terms\": [\"service\", \"payment\"]}",
"contract_parties_roles_mapping": {
"party-123": "provider",
"party-456": "client"
}
}
}
API: Get Sub-Contract by ID
Endpoint:
GET /sub_contract/<sub_contract_id>
Success Response (200 OK):
{
"success": true,
"data": {
"sub_contract_id": "sub-001",
"contract_id": "contract-001",
"sub_contract_clause_data": [
{"clause": "Deliver report within 30 days"}
],
"sub_contract_json_repr": {
"clauses": ["Deliver report within 30 days"]
},
"sub_contract_parties_ids": ["party-123", "party-456"],
"sub_contract_status": "active",
"sub_contract_actions_map": {
"notify": "action-001"
},
"sub_contract_verification_map": {
"verified_by": "verifier-001"
},
"sub_contract_creation_time": "2024-11-05T12:00:00Z",
"last_update_time": "2025-05-01T15:30:00Z",
"sub_report_url": null,
"verification_subjects_list": ["party-456"],
"purpose": "Specific service deliverable",
"json_parseable_description": "{\"clause\": \"Deliver report\"}",
"sub_clause_constraints": ["constraint-001"],
"sub_contract_parties_roles_mapping": {
"party-123": "executor",
"party-456": "reviewer"
},
"human_readable_description": "This sub-contract outlines deliverables."
}
}
API: Get Action by ID
Endpoint:
GET /action/<action_id>
Success Response (200 OK):
{
"success": true,
"data": {
"action_id": "action-001",
"sub_clause_id": "sub-001",
"action_type": "notify",
"action_fulfillment_dsl_workflow_id": "workflow-001",
"action_execution_status": "pending",
"action_execution_config": {
"method": "email",
"recipient": "party-456"
},
"action_outcome_data": null,
"action_execution_ppt_dsl": null,
"action_execution_constraint_ids": ["constraint-002"]
}
}
API: Get Sub-Contract Constraint by ID
Endpoint:
GET /sub_contract_constraint/<constraint_id>
Success Response (200 OK):
{
"success": true,
"data": {
"constraint_id": "constraint-001",
"sub_clause_id": "sub-001",
"constraint_type": "time_limit",
"constraint_sub_type": "absolute",
"constraint_parameters": {
"deadline": "2025-06-01T00:00:00Z"
},
"constraint_policy_id": null,
"constraint_negotiation_parameters": null,
"group_ids": ["group-001"],
"role_ids": ["reviewer"],
"can_negotiate": false
}
}
API: Get Verification Entry by ID
Endpoint:
GET /verification_entry/<entry_id>
Success Response (200 OK):
{
"success": true,
"data": {
"verification_entry_id": "verify-001",
"sub_clause_action_type": "notify",
"verifier_subject_id": "verifier-001",
"verifier_subject_type": "user",
"verification_dsl_workflow_id": "workflow-002",
"verification_mode": "manual",
"verification_config": {
"check": "signature"
},
"verification_status": "approved",
"verification_outcome_data": {
"approved_on": "2025-05-20T10:30:00Z"
},
"verification_outcome_action_id": "action-001",
"verification_timestamp": "2025-05-20T10:30:00Z",
"verification_cert_data": {
"signature": "abcdefg12345"
},
"sub_clause_id": "sub-001"
}
}