syntax = "proto3";

package dv_result_proto;

message PersonalData {
    string given_name = 1;
    string surname = 2;
    string date_of_birth = 3;
    string nationality = 4;
    string gender = 5;
    string place_of_birth = 6;
    string personal_number = 7;
}

message DocumentData {
    string document_number = 1;
    string issuing_state = 2;
    string issuing_authority = 3;
    string expiry_date = 4;
    string document_class_code = 5;
    string mrz_strings = 6;
    string document_can = 7;
}

message AddressData {
    string flat = 1;
    string house_number = 2;
    string building = 3;
    string street = 4;
    string city = 5;
    string postal_code = 6;
    string country = 7;
    string address_line = 8;
}

enum ImageProvenance {
    UNSPECIFIED_IMAGE_PROVENANCE = 0;
    FRONT_DOCUMENT_IMAGE = 1;
    BACK_DOCUMENT_IMAGE = 2;
    SIGNATURE_IMAGE = 3;
    PORTRAIT_IMAGE = 5;
    CITIZENSHIP_IMAGE = 6;
    SELFIE_IMAGE = 7;
}

message Image {
  string content_type = 1;
  bytes data = 2;
  ImageProvenance provenance = 3;
}

message Video {
  string url = 1;
}

message Document {
  PersonalData personal_data = 1;
  DocumentData document_data = 2;
  AddressData  address_data = 3;
}

enum ResultStatus {
    FAILED = 0;
    PASSED = 1;
    PARTIAL = 2;
    REQUIRES_MANUAL_REVIEW = 3;
    REQUIRES_ADMIN_REVIEW = 4;
    MANUALLY_APPROVED = 5;
    MANUALLY_REJECTED = 6;
}

message Details {
  ResultStatus status = 1;
  string docreader_request_log = 2;
  string docreader_response_log = 3;
  string faceapi_response_log = 4;
}

message Message {
    oneof part {
        Document document = 1;
        Image front_image = 2;
        Image back_image = 3;
        Image other_image = 4;
        Details details = 5;
        Video liveness = 6;
    }
}