"""DataIntegrityProof."""
from typing import List, Optional
from marshmallow import INCLUDE, fields
from ....messaging.models.base import BaseModel, BaseModelSchema
from .proof import DataIntegrityProof, DataIntegrityProofSchema
[docs]
class ProblemDetails(BaseModel):
"""ProblemDetails model."""
def __init__(
self,
type: Optional[str] = None,
title: Optional[str] = None,
detail: Optional[str] = None,
) -> None:
"""Initialize the ProblemDetails instance."""
self.type = type
self.title = title
self.detail = detail
[docs]
class ProblemDetailsSchema(BaseModelSchema):
"""ProblemDetails schema.
Based on https://www.w3.org/TR/vc-data-model-2.0/#problem-details.
"""
type = fields.Str(
required=True,
metadata={
"example": "https://w3id.org/security#PROOF_VERIFICATION_ERROR",
},
)
title = fields.Str(
required=False,
metadata={},
)
detail = fields.Str(
required=False,
metadata={},
)
[docs]
class DataIntegrityVerificationResult(BaseModel):
"""Data Integrity Verification Result model."""
def __init__(
self,
verified: Optional[bool] = None,
proof: Optional[DataIntegrityProof] = None,
problem_details: Optional[List[ProblemDetails]] = None,
) -> None:
"""Initialize the DataIntegrityVerificationResult instance."""
self.verified = verified
self.proof = proof
self.problem_details = problem_details
[docs]
class DataIntegrityVerificationResultSchema(BaseModelSchema):
"""DataIntegrityVerificationResult schema."""
verified = fields.Bool(
required=True,
metadata={
"example": False,
},
)
proof = fields.Nested(
DataIntegrityProofSchema(),
required=True,
metadata={},
)
problem_details = fields.List(
fields.Nested(ProblemDetailsSchema()),
data_key="problemDetails",
required=True,
metadata={},
)
[docs]
class DataIntegrityVerificationResponse(BaseModel):
"""Data Integrity Verification Response model."""
def __init__(
self,
verified: Optional[bool] = None,
verified_document: Optional[dict] = None,
results: Optional[List[DataIntegrityVerificationResult]] = None,
) -> None:
"""Initialize the DataIntegrityVerificationResponse instance."""
self.verified = verified
self.verified_document = verified_document
self.results = results
[docs]
class DataIntegrityVerificationResponseSchema(BaseModelSchema):
"""DataIntegrityVerificationResponse schema."""
verified = fields.Bool(
required=True,
metadata={
"example": False,
},
)
verified_document = fields.Dict(
data_key="verifiedDocument",
required=False,
metadata={},
)
results = fields.List(
fields.Nested(DataIntegrityVerificationResultSchema()),
required=False,
metadata={},
)