Skip to content

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"
  }
}