6.4. Enrollment

This is version 1.3.0 of this interface.

Get the OpenAPI file: enrollment.yaml

6.4.1. Services

6.4.1.1. Enrollment

POST /v1/enrollments/{enrollmentId}

Create one enrollment

Scope required: enroll.write

Parameters:
  • enrollmentId (string) – the id of the enrollment. Object of type string.

Query Parameters:
  • finalize (boolean) – Flag to indicate that data was collected (default is false). Object of type boolean.

  • transactionId (string) – The id of the transaction. Object of type string. (Required)

Form Parameters:
Status Codes:

Example request:

POST /v1/enrollments/string?finalize=true&transactionId=string HTTP/1.1
Host: example.com
Content-Type: application/json

{
    "enrollmentType": "string",
    "enrollmentFlags": {
        "timeout": 3600,
        "other": "other",
        "...": "..."
    },
    "requestData": {
        "priority": 1,
        "requestType": "FIRST_ISSUANCE",
        "deliveryAddress": {
            "address1": "11 Rue des Rosiers",
            "city": "Libourne",
            "postalCode": "33500",
            "country": "France"
        },
        "...": "..."
    },
    "contextualData": {
        "enrollmentDate": "2019-01-11",
        "...": "..."
    },
    "biographicData": {
        "firstName": "John",
        "lastName": "Doo",
        "dateOfBirth": "1985-11-30",
        "gender": "M",
        "nationality": "FRA",
        "...": "..."
    },
    "biometricData": [
        {
            "biometricType": "FINGER",
            "biometricSubType": "RIGHT_INDEX",
            "instance": "string",
            "image": "string",
            "imageRef": "http://imageserver.com/image?id=00003",
            "captureDate": "2019-05-21T12:00:00+01:00",
            "captureDevice": "string",
            "impressionType": "LIVE_SCAN_PLAIN",
            "width": 1,
            "height": 1,
            "bitdepth": 1,
            "mimeType": "string",
            "resolution": 1,
            "compression": "WSQ",
            "missing": [
                {
                    "biometricSubType": "RIGHT_INDEX",
                    "presence": "BANDAGED"
                }
            ],
            "metadata": "string",
            "comment": "string",
            "template": "string",
            "templateRef": "http://dataserver.com/template?id=00014",
            "templateFormat": "string",
            "quality": 1,
            "qualityFormat": "string",
            "algorithm": "string",
            "vendor": "string",
            "encryption": {
                "type": "JWE",
                "scope": "string"
            },
            "integrity": [
                {
                    "id": "string",
                    "type": "NONE",
                    "scope": "string",
                    "alg": "string",
                    "encrypted": false,
                    "followRef": false,
                    "hash": "string",
                    "signature": "string",
                    "signatureRef": "https://objectserver.com/signature?id=00003"
                }
            ]
        }
    ],
    "documentData": [
        {
            "documentType": "FORM",
            "documentTypeOther": "string",
            "instance": "string",
            "parts": [
                {
                    "pages": [
                        1
                    ],
                    "data": "string",
                    "dataRef": "http://server.com/buffer?id=00003",
                    "width": 1,
                    "height": 1,
                    "mimeType": "string",
                    "captureDate": "2019-05-21T12:00:00+01:00",
                    "captureDevice": "string",
                    "encryption": {
                        "type": "JWE",
                        "scope": "string"
                    },
                    "integrity": [
                        {
                            "id": "string",
                            "type": "NONE",
                            "scope": "string",
                            "alg": "string",
                            "encrypted": false,
                            "followRef": false,
                            "hash": "string",
                            "signature": "string",
                            "signatureRef": "https://objectserver.com/signature?id=00003"
                        }
                    ]
                }
            ],
            "integrity": [
                {
                    "id": "string",
                    "type": "NONE",
                    "scope": "string",
                    "alg": "string",
                    "encrypted": false,
                    "followRef": false,
                    "hash": "string",
                    "signature": "string",
                    "signatureRef": "https://objectserver.com/signature?id=00003"
                }
            ]
        }
    ],
    "encryption": {
        "type": "JWE",
        "scope": "string"
    },
    "integrity": [
        {
            "id": "string",
            "type": "NONE",
            "scope": "string",
            "alg": "string",
            "encrypted": false,
            "followRef": false,
            "hash": "string",
            "signature": "string",
            "signatureRef": "https://objectserver.com/signature?id=00003"
        }
    ]
}

Example response:

HTTP/1.1 400 Bad Request
Content-Type: application/json

{
    "code": 1,
    "message": "string"
}

Example response:

HTTP/1.1 500 Internal Server Error
Content-Type: application/json

{
    "code": 1,
    "message": "string"
}
GET /v1/enrollments/{enrollmentId}

Read one enrollment

Scope required: enroll.read

Parameters:
  • enrollmentId (string) – the id of the enrollment. Object of type string.

Query Parameters:
  • transactionId (string) – The id of the transaction. Object of type string. (Required)

  • attributes (array) – The (optional) set of required attributes to retrieve. If not present all attributes will be returned. Array of string.

Status Codes:

Example request:

GET /v1/enrollments/string?transactionId=string&attributes=%5B%27string%27%5D HTTP/1.1
Host: example.com

Example response:

HTTP/1.1 200 OK
Content-Type: application/json

{
    "enrollmentId": "string",
    "status": "FINALIZED",
    "enrollmentType": "string",
    "enrollmentFlags": {
        "timeout": 3600,
        "other": "other",
        "...": "..."
    },
    "requestData": {
        "priority": 1,
        "requestType": "FIRST_ISSUANCE",
        "deliveryAddress": {
            "address1": "11 Rue des Rosiers",
            "city": "Libourne",
            "postalCode": "33500",
            "country": "France"
        },
        "...": "..."
    },
    "contextualData": {
        "enrollmentDate": "2019-01-11",
        "...": "..."
    },
    "biographicData": {
        "firstName": "John",
        "lastName": "Doo",
        "dateOfBirth": "1985-11-30",
        "gender": "M",
        "nationality": "FRA",
        "...": "..."
    },
    "biometricData": [
        {
            "biometricType": "FINGER",
            "biometricSubType": "RIGHT_INDEX",
            "instance": "string",
            "image": "string",
            "imageRef": "http://imageserver.com/image?id=00003",
            "captureDate": "2019-05-21T12:00:00+01:00",
            "captureDevice": "string",
            "impressionType": "LIVE_SCAN_PLAIN",
            "width": 1,
            "height": 1,
            "bitdepth": 1,
            "mimeType": "string",
            "resolution": 1,
            "compression": "WSQ",
            "missing": [
                {
                    "biometricSubType": "RIGHT_INDEX",
                    "presence": "BANDAGED"
                }
            ],
            "metadata": "string",
            "comment": "string",
            "template": "string",
            "templateRef": "http://dataserver.com/template?id=00014",
            "templateFormat": "string",
            "quality": 1,
            "qualityFormat": "string",
            "algorithm": "string",
            "vendor": "string",
            "encryption": {
                "type": "JWE",
                "scope": "string"
            },
            "integrity": [
                {
                    "id": "string",
                    "type": "NONE",
                    "scope": "string",
                    "alg": "string",
                    "encrypted": false,
                    "followRef": false,
                    "hash": "string",
                    "signature": "string",
                    "signatureRef": "https://objectserver.com/signature?id=00003"
                }
            ]
        }
    ],
    "documentData": [
        {
            "documentType": "FORM",
            "documentTypeOther": "string",
            "instance": "string",
            "parts": [
                {
                    "pages": [
                        1
                    ],
                    "data": "string",
                    "dataRef": "http://server.com/buffer?id=00003",
                    "width": 1,
                    "height": 1,
                    "mimeType": "string",
                    "captureDate": "2019-05-21T12:00:00+01:00",
                    "captureDevice": "string",
                    "encryption": {
                        "type": "JWE",
                        "scope": "string"
                    },
                    "integrity": [
                        {
                            "id": "string",
                            "type": "NONE",
                            "scope": "string",
                            "alg": "string",
                            "encrypted": false,
                            "followRef": false,
                            "hash": "string",
                            "signature": "string",
                            "signatureRef": "https://objectserver.com/signature?id=00003"
                        }
                    ]
                }
            ],
            "integrity": [
                {
                    "id": "string",
                    "type": "NONE",
                    "scope": "string",
                    "alg": "string",
                    "encrypted": false,
                    "followRef": false,
                    "hash": "string",
                    "signature": "string",
                    "signatureRef": "https://objectserver.com/signature?id=00003"
                }
            ]
        }
    ],
    "encryption": {
        "type": "JWE",
        "scope": "string"
    },
    "integrity": [
        {
            "id": "string",
            "type": "NONE",
            "scope": "string",
            "alg": "string",
            "encrypted": false,
            "followRef": false,
            "hash": "string",
            "signature": "string",
            "signatureRef": "https://objectserver.com/signature?id=00003"
        }
    ]
}

Example response:

HTTP/1.1 400 Bad Request
Content-Type: application/json

{
    "code": 1,
    "message": "string"
}

Example response:

HTTP/1.1 500 Internal Server Error
Content-Type: application/json

{
    "code": 1,
    "message": "string"
}
PUT /v1/enrollments/{enrollmentId}

Update one enrollment

Scope required: enroll.write

Parameters:
  • enrollmentId (string) – the id of the enrollment. Object of type string.

Query Parameters:
  • finalize (boolean) – Flag to indicate that data was collected (default is false). Object of type boolean.

  • transactionId (string) – The id of the transaction. Object of type string. (Required)

Form Parameters:
Status Codes:

Example request:

PUT /v1/enrollments/string?finalize=true&transactionId=string HTTP/1.1
Host: example.com
Content-Type: application/json

{
    "enrollmentType": "string",
    "enrollmentFlags": {
        "timeout": 3600,
        "other": "other",
        "...": "..."
    },
    "requestData": {
        "priority": 1,
        "requestType": "FIRST_ISSUANCE",
        "deliveryAddress": {
            "address1": "11 Rue des Rosiers",
            "city": "Libourne",
            "postalCode": "33500",
            "country": "France"
        },
        "...": "..."
    },
    "contextualData": {
        "enrollmentDate": "2019-01-11",
        "...": "..."
    },
    "biographicData": {
        "firstName": "John",
        "lastName": "Doo",
        "dateOfBirth": "1985-11-30",
        "gender": "M",
        "nationality": "FRA",
        "...": "..."
    },
    "biometricData": [
        {
            "biometricType": "FINGER",
            "biometricSubType": "RIGHT_INDEX",
            "instance": "string",
            "image": "string",
            "imageRef": "http://imageserver.com/image?id=00003",
            "captureDate": "2019-05-21T12:00:00+01:00",
            "captureDevice": "string",
            "impressionType": "LIVE_SCAN_PLAIN",
            "width": 1,
            "height": 1,
            "bitdepth": 1,
            "mimeType": "string",
            "resolution": 1,
            "compression": "WSQ",
            "missing": [
                {
                    "biometricSubType": "RIGHT_INDEX",
                    "presence": "BANDAGED"
                }
            ],
            "metadata": "string",
            "comment": "string",
            "template": "string",
            "templateRef": "http://dataserver.com/template?id=00014",
            "templateFormat": "string",
            "quality": 1,
            "qualityFormat": "string",
            "algorithm": "string",
            "vendor": "string",
            "encryption": {
                "type": "JWE",
                "scope": "string"
            },
            "integrity": [
                {
                    "id": "string",
                    "type": "NONE",
                    "scope": "string",
                    "alg": "string",
                    "encrypted": false,
                    "followRef": false,
                    "hash": "string",
                    "signature": "string",
                    "signatureRef": "https://objectserver.com/signature?id=00003"
                }
            ]
        }
    ],
    "documentData": [
        {
            "documentType": "FORM",
            "documentTypeOther": "string",
            "instance": "string",
            "parts": [
                {
                    "pages": [
                        1
                    ],
                    "data": "string",
                    "dataRef": "http://server.com/buffer?id=00003",
                    "width": 1,
                    "height": 1,
                    "mimeType": "string",
                    "captureDate": "2019-05-21T12:00:00+01:00",
                    "captureDevice": "string",
                    "encryption": {
                        "type": "JWE",
                        "scope": "string"
                    },
                    "integrity": [
                        {
                            "id": "string",
                            "type": "NONE",
                            "scope": "string",
                            "alg": "string",
                            "encrypted": false,
                            "followRef": false,
                            "hash": "string",
                            "signature": "string",
                            "signatureRef": "https://objectserver.com/signature?id=00003"
                        }
                    ]
                }
            ],
            "integrity": [
                {
                    "id": "string",
                    "type": "NONE",
                    "scope": "string",
                    "alg": "string",
                    "encrypted": false,
                    "followRef": false,
                    "hash": "string",
                    "signature": "string",
                    "signatureRef": "https://objectserver.com/signature?id=00003"
                }
            ]
        }
    ],
    "encryption": {
        "type": "JWE",
        "scope": "string"
    },
    "integrity": [
        {
            "id": "string",
            "type": "NONE",
            "scope": "string",
            "alg": "string",
            "encrypted": false,
            "followRef": false,
            "hash": "string",
            "signature": "string",
            "signatureRef": "https://objectserver.com/signature?id=00003"
        }
    ]
}

Example response:

HTTP/1.1 400 Bad Request
Content-Type: application/json

{
    "code": 1,
    "message": "string"
}

Example response:

HTTP/1.1 500 Internal Server Error
Content-Type: application/json

{
    "code": 1,
    "message": "string"
}
PATCH /v1/enrollments/{enrollmentId}

Update partially one enrollment

Update partially an enrollment. Payload content is a partial enrollment object compliant with RFC7396.

Scope required: enroll.write

Parameters:
  • enrollmentId (string) – the id of the enrollment. Object of type string.

Query Parameters:
  • finalize (boolean) – Flag to indicate that data was collected (default is false). Object of type boolean.

  • transactionId (string) – The id of the transaction. Object of type string. (Required)

Form Parameters:
Status Codes:

Example of updating only 2 biographicData elements:

PATCH /v1/enrollments/string?finalize=true&transactionId=string HTTP/1.1
Host: example.com
Content-Type: application/json

{
    "biographicData": {
        "gender": null,
        "nationality": "FRA"
    }
}

Example of updating the list of documents with one VerifiableCredential:

PATCH /v1/enrollments/string?finalize=true&transactionId=string HTTP/1.1
Host: example.com
Content-Type: application/json

{
    "documentData": [
        {
            "documentType": "ID_CARD",
            "parts": [
                {
                    "data": "VC DATA",
                    "mimeType": "application/vc"
                }
            ]
        }
    ]
}

Example response:

HTTP/1.1 400 Bad Request
Content-Type: application/json

{
    "code": 1,
    "message": "string"
}

Example response:

HTTP/1.1 500 Internal Server Error
Content-Type: application/json

{
    "code": 1,
    "message": "string"
}
DELETE /v1/enrollments/{enrollmentId}

Delete one enrollment

Scope required: enroll.write

Parameters:
  • enrollmentId (string) – the id of the enrollment. Object of type string.

Query Parameters:
  • transactionId (string) – The id of the transaction. Object of type string. (Required)

Status Codes:

Example response:

HTTP/1.1 400 Bad Request
Content-Type: application/json

{
    "code": 1,
    "message": "string"
}

Example response:

HTTP/1.1 500 Internal Server Error
Content-Type: application/json

{
    "code": 1,
    "message": "string"
}
PUT /v1/enrollments/{enrollmentId}/finalize

Finalize one enrollment

Scope required: enroll.write

Parameters:
  • enrollmentId (string) – the id of the enrollment. Object of type string.

Query Parameters:
  • transactionId (string) – The id of the transaction. Object of type string. (Required)

Status Codes:

Example response:

HTTP/1.1 400 Bad Request
Content-Type: application/json

{
    "code": 1,
    "message": "string"
}

Example response:

HTTP/1.1 500 Internal Server Error
Content-Type: application/json

{
    "code": 1,
    "message": "string"
}
POST /v1/enrollments

Retrieve a list of enrollments which match passed in search criteria

Scope required: enroll.read

Query Parameters:
  • transactionId (string) – The id of the transaction. Object of type string. (Required)

  • offset (integer) – The offset of the query (first item of the response). Object of type integer. Default: 0.

  • limit (integer) – The maximum number of items to return. Object of type integer. Default: 100.

Form Parameters:
  • body – A set of expressions on attributes of the person. Array of Expression.

Status Codes:

Example request:

POST /v1/enrollments?transactionId=string&offset=0&limit=100 HTTP/1.1
Host: example.com
Content-Type: application/json

[
    {
        "attributeName": "firstName",
        "operator": "=",
        "value": "John"
    },
    {
        "attributeName": "dateOfBirth",
        "operator": "<",
        "value": "1990-12-31"
    }
]

Example response:

HTTP/1.1 200 OK
Content-Type: application/json

[
    {
        "enrollmentId": "string",
        "status": "FINALIZED",
        "enrollmentType": "string",
        "enrollmentFlags": {
            "timeout": 3600,
            "other": "other",
            "...": "..."
        },
        "requestData": {
            "priority": 1,
            "requestType": "FIRST_ISSUANCE",
            "deliveryAddress": {
                "address1": "11 Rue des Rosiers",
                "city": "Libourne",
                "postalCode": "33500",
                "country": "France"
            },
            "...": "..."
        },
        "contextualData": {
            "enrollmentDate": "2019-01-11",
            "...": "..."
        },
        "biographicData": {
            "firstName": "John",
            "lastName": "Doo",
            "dateOfBirth": "1985-11-30",
            "gender": "M",
            "nationality": "FRA",
            "...": "..."
        },
        "biometricData": [
            {
                "biometricType": "FINGER",
                "biometricSubType": "RIGHT_INDEX",
                "instance": "string",
                "image": "string",
                "imageRef": "http://imageserver.com/image?id=00003",
                "captureDate": "2019-05-21T12:00:00+01:00",
                "captureDevice": "string",
                "impressionType": "LIVE_SCAN_PLAIN",
                "width": 1,
                "height": 1,
                "bitdepth": 1,
                "mimeType": "string",
                "resolution": 1,
                "compression": "WSQ",
                "missing": [
                    {
                        "biometricSubType": "RIGHT_INDEX",
                        "presence": "BANDAGED"
                    }
                ],
                "metadata": "string",
                "comment": "string",
                "template": "string",
                "templateRef": "http://dataserver.com/template?id=00014",
                "templateFormat": "string",
                "quality": 1,
                "qualityFormat": "string",
                "algorithm": "string",
                "vendor": "string",
                "encryption": {
                    "type": "JWE",
                    "scope": "string"
                },
                "integrity": [
                    {
                        "id": "string",
                        "type": "NONE",
                        "scope": "string",
                        "alg": "string",
                        "encrypted": false,
                        "followRef": false,
                        "hash": "string",
                        "signature": "string",
                        "signatureRef": "https://objectserver.com/signature?id=00003"
                    }
                ]
            }
        ],
        "documentData": [
            {
                "documentType": "FORM",
                "documentTypeOther": "string",
                "instance": "string",
                "parts": [
                    {
                        "pages": [
                            1
                        ],
                        "data": "string",
                        "dataRef": "http://server.com/buffer?id=00003",
                        "width": 1,
                        "height": 1,
                        "mimeType": "string",
                        "captureDate": "2019-05-21T12:00:00+01:00",
                        "captureDevice": "string",
                        "encryption": {
                            "type": "JWE",
                            "scope": "string"
                        },
                        "integrity": [
                            {
                                "id": "string",
                                "type": "NONE",
                                "scope": "string",
                                "alg": "string",
                                "encrypted": false,
                                "followRef": false,
                                "hash": "string",
                                "signature": "string",
                                "signatureRef": "https://objectserver.com/signature?id=00003"
                            }
                        ]
                    }
                ],
                "integrity": [
                    {
                        "id": "string",
                        "type": "NONE",
                        "scope": "string",
                        "alg": "string",
                        "encrypted": false,
                        "followRef": false,
                        "hash": "string",
                        "signature": "string",
                        "signatureRef": "https://objectserver.com/signature?id=00003"
                    }
                ]
            }
        ],
        "encryption": {
            "type": "JWE",
            "scope": "string"
        },
        "integrity": [
            {
                "id": "string",
                "type": "NONE",
                "scope": "string",
                "alg": "string",
                "encrypted": false,
                "followRef": false,
                "hash": "string",
                "signature": "string",
                "signatureRef": "https://objectserver.com/signature?id=00003"
            }
        ]
    }
]

Example response:

HTTP/1.1 400 Bad Request
Content-Type: application/json

{
    "code": 1,
    "message": "string"
}

Example response:

HTTP/1.1 500 Internal Server Error
Content-Type: application/json

{
    "code": 1,
    "message": "string"
}

6.4.1.2. Buffer

POST /v1/enrollments/{enrollmentId}/buffer

Create a buffer

This service is used to send separately the buffers of the images

Scope required: enroll.buf.write

Parameters:
  • enrollmentId (string) – the id of the enrollment. Object of type string.

Query Parameters:
  • transactionId (string) – The id of the transaction. Object of type string. (Required)

Form Parameters:
  • body – The image of the request.

Request Headers:
  • Digest – the buffer digest, as defined per RFC 3230. Object of type string.

Status Codes:

Example request:

POST /v1/enrollments/string/buffer?transactionId=string HTTP/1.1
Host: example.com
Content-Type: application/*
Digest: SHA=thvDyvhfIqlvFe+A9MYgxAfm1q5=

ABCDEFG...

Example request:

POST /v1/enrollments/string/buffer?transactionId=string HTTP/1.1
Host: example.com
Content-Type: image/*
Digest: SHA=thvDyvhfIqlvFe+A9MYgxAfm1q5=

ABCDEFG...

Example response:

HTTP/1.1 201 Created
Content-Type: application/json

{
    "bufferId": "string"
}

Example response:

HTTP/1.1 400 Bad Request
Content-Type: application/json

{
    "code": 1,
    "message": "string"
}

Example response:

HTTP/1.1 500 Internal Server Error
Content-Type: application/json

{
    "code": 1,
    "message": "string"
}
GET /v1/enrollments/{enrollmentId}/buffer/{bufferId}

Read a buffer

This service is used to get the buffer of the images. The content type of the response is the content type used when the buffer was created.

Scope required: enroll.buf.read

Parameters:
  • enrollmentId (string) – the id of the enrollment. Object of type string.

  • bufferId (string) – the id of the buffer. Object of type string.

Query Parameters:
  • transactionId (string) – The id of the transaction. Object of type string. (Required)

Response Headers:
  • Digest – the buffer digest, as defined per RFC 3230. Object of type string.

Status Codes:

Example request:

GET /v1/enrollments/string/buffer/string?transactionId=string HTTP/1.1
Host: example.com

Example response:

HTTP/1.1 200 OK
Content-Type: application/*
Digest: SHA=thvDyvhfIqlvFe+A9MYgxAfm1q5=

ABCDEFG...

Example response:

HTTP/1.1 200 OK
Content-Type: image/*
Digest: SHA=thvDyvhfIqlvFe+A9MYgxAfm1q5=

ABCDEFG...

Example response:

HTTP/1.1 400 Bad Request
Content-Type: application/json

{
    "code": 1,
    "message": "string"
}

Example response:

HTTP/1.1 500 Internal Server Error
Content-Type: application/json

{
    "code": 1,
    "message": "string"
}

6.4.2. Data Model

6.4.2.1. Error

Table 6.6 Error

Attribute

Type

Description

Required

code

integer/int32

Error code.

Yes

message

string

Error message.

Yes

6.4.2.2. Encryption

if present, indicates that a part of the data is encrypted using the provided format.

Table 6.7 Encryption

Attribute

Type

Description

Required

type

string

Constraints: possible values are JWE, PKCS7

Yes

scope

string

A whitespace-separated list of JSON paths to nodes containing encrypted data. For each node:

  • If the node is a JSON object, the full content is encrypted and the node transformed to a single buffer. Canonicalization is recommended before encryption but not mandatory.

  • If the node is an embedded buffer (image, PDF, etc.), the value is replaced with the encrypted data.

  • If the node is a URL to a buffer, the node remains a URL in clear format but the pointed buffer is encrypted.

Yes

6.4.2.3. Integrity

Object describing the integrity (hash and signature) of a sub set of data.

It is possible to calculate multiple integrity blocks corresponding to different use cases: integrity before encryption, integrity limited to a small sub set of data and easy to check, etc.

Table 6.8 Integrity

Attribute

Type

Description

Required

id

string

An optional ID used in JSONPath expression to select a single integrity object.

type

string

Format of the signature of the hash.

Cryptographic signature is optional. Use NONE when only the hash is required.

Default: "NONE". Constraints: possible values are NONE, JWS, PKCS7

scope

string

A whitespace-separated list of JSON paths to nodes containing the data to include in the hash calculation.

It is used to build a JSON limited to the nodes identified in this scope. Then this JSON is canonicalized and a hash is calculated.

Yes

alg

string

Hash algorithm used to calculate the hash. Example of possible values: SHA256, SHA384, SHA512.

Yes

encrypted

boolean

if true, indicates that the hash was calculated using encrypted data. Default: false.

followRef

boolean

if true, indicates that the referenced buffers must be fetched and included in the hash. If false, only the URL is considered for the hash calculation

Default: false.

hash

string

Hash calculated from the attributes listed in scope. Hash is calculated using the following process:

  • Build an intermediate JSON containing only the fields identified in the scope

  • Canonicalize the JSON using RFC8785

  • Hash the result

  • If ‘followRef’ is true, include in the hash computation the binary data referenced by URI included in the scope.

Yes

signature

string

the signature of the hash. Compact format is used for JWS and PEM format for PKCS7.

signatureRef

string/uri

URI to the signature data. DER format is accepted for PKCS7 to optimize the storage space.

6.4.2.4. Enrollment

Table 6.9 Enrollment

Attribute

Type

Description

Required

enrollmentId

string

Constraints: read only

Yes

status

string

Constraints: possible values are FINALIZED, IN_PROGRESS; read only

Yes

enrollmentType

string

Type of the enrollment (example: citizen, resident, etc.).

enrollmentFlags

Object of type EnrollmentFlags

The enrollment custom flags (i.e. the properties of the enrollment process). Can be extended.

requestData

Object of type RequestData

The data describing the request associated to the enrollment (i.e. why the enrollment is done). Can be extended.

contextualData

Object of type ContextualData

The set of contextual data.

biographicData

Object of type BiographicData

The set of biographic data.

biometricData

Array of BiometricData

documentData

Array of DocumentData

encryption

Object of type Encryption

if present, indicates that a part of the data is encrypted using the provided format.

integrity

Array of Integrity

6.4.2.5. RequestData

The data describing the request associated to the enrollment (i.e. why the enrollment is done). Can be extended. Any type of content is accepted (number, string or object).

Example #1:

{
  "priority": 1,
  "requestType": "FIRST_ISSUANCE",
  "deliveryAddress": {
    "address1": "11 Rue des Rosiers",
    "city": "Libourne",
    "postalCode": "33500",
    "country": "France"
  }
}

6.4.2.6. EnrollmentFlags

The enrollment custom flags (i.e. the properties of the enrollment process). Can be extended. Any type of content is accepted (number, string or object).

Example #1:

{
  "timeout": 3600,
  "other": "other"
}

6.4.2.7. ContextualData

The set of contextual data. Any type of content is accepted (number, string or object).

Example #1:

{
  "enrollmentDate": "2019-01-11"
}

6.4.2.8. BiographicData

The set of biographic data. Any type of content is accepted (number, string or object).

Example #1:

{
  "firstName": "John",
  "lastName": "Doo",
  "dateOfBirth": "1985-11-30",
  "gender": "M",
  "nationality": "FRA"
}

6.4.2.9. BiometricData

Table 6.10 BiometricData

Attribute

Type

Description

Required

biometricType

string

Constraints: possible values are FACE, FINGER, IRIS, SIGNATURE, UNKNOWN

Yes

biometricSubType

string

Constraints: possible values are UNKNOWN, RIGHT_THUMB, RIGHT_INDEX, RIGHT_MIDDLE, RIGHT_RING, RIGHT_LITTLE, LEFT_THUMB, LEFT_INDEX, LEFT_MIDDLE, LEFT_RING, LEFT_LITTLE, PLAIN_RIGHT_FOUR_FINGERS, PLAIN_LEFT_FOUR_FINGERS, PLAIN_THUMBS, UNKNOWN_PALM, RIGHT_FULL_PALM, RIGHT_WRITERS_PALM, LEFT_FULL_PALM, LEFT_WRITERS_PALM, RIGHT_LOWER_PALM, RIGHT_UPPER_PALM, LEFT_LOWER_PALM, LEFT_UPPER_PALM, RIGHT_OTHER, LEFT_OTHER, RIGHT_INTERDIGITAL, RIGHT_THENAR, RIGHT_HYPOTHENAR, LEFT_INTERDIGITAL, LEFT_THENAR, LEFT_HYPOTHENAR, RIGHT_INDEX_AND_MIDDLE, RIGHT_MIDDLE_AND_RING, RIGHT_RING_AND_LITTLE, LEFT_INDEX_AND_MIDDLE, LEFT_MIDDLE_AND_RING, LEFT_RING_AND_LITTLE, RIGHT_INDEX_AND_LEFT_INDEX, RIGHT_INDEX_AND_MIDDLE_AND_RING, RIGHT_MIDDLE_AND_RING_AND_LITTLE, LEFT_INDEX_AND_MIDDLE_AND_RING, LEFT_MIDDLE_AND_RING_AND_LITTLE, EYE_UNDEF, EYE_RIGHT, EYE_LEFT, EYE_BOTH, PORTRAIT, LEFT_PROFILE, RIGHT_PROFILE

instance

string

Used to separate two distincts biometric items of the same type and subtype.

image

string

Encoded image buffer.

imageRef

string/uri

URI to an image.

captureDate

string/date-time

Data & time of the data capture, using RFC3339 format.

captureDevice

string

A string identifying the device used to capture the biometric.

impressionType

string

Constraints: possible values are LIVE_SCAN_PLAIN, LIVE_SCAN_ROLLED, NONLIVE_SCAN_PLAIN, NONLIVE_SCAN_ROLLED, LATENT_IMPRESSION, LATENT_TRACING, LATENT_PHOTO, LATENT_LIFT, LIVE_SCAN_SWIPE, LIVE_SCAN_VERTICAL_ROLL, LIVE_SCAN_PALM, NONLIVE_SCAN_PALM, LATENT_PALM_IMPRESSION, LATENT_PALM_TRACING, LATENT_PALM_PHOTO, LATENT_PALM_LIFT, LIVE_SCAN_OPTICAL_CONTACTLESS_PLAIN, OTHER, UNKNOWN

width

integer

the width of the image.

height

integer

the height of the image.

bitdepth

integer

mimeType

string

the nature and format of the image. The mime type definitions should be in compliance with RFC 6838.

resolution

integer

the image resolution (in DPI).

compression

string

Constraints: possible values are NONE, WSQ, JPEG, JPEG2000, PNG

missing

Array of MissingType

Optional properties indicating if a part of the biometric data is missing.

metadata

string

An optional string used to convey information vendor-specific.

comment

string

A comment about the biometric data.

template

string

Encoded template buffer.

templateRef

string/uri

URI to the template when it is managed in a dedicated data server.

templateFormat

string

Format of the template. One of ISO_19794_2, ISO_19794_2_NS, ISO_19794_2_CS, ISO_19794_2_2011, ANSI_378_2009 or ANSI_378. Can be extended to include additional proprietary template format

quality

integer/int64

Quality, as a number, of the biometric.

qualityFormat

string

Format of the quality. One of ISO_19794, NFIQ, or NFIQ2. Can be extended to include additional proprietary quality format

algorithm

string

vendor

string

encryption

Object of type Encryption

if present, indicates that a part of the data is encrypted using the provided format.

integrity

Array of Integrity

6.4.2.10. MissingType

Table 6.11 MissingType

Attribute

Type

Description

Required

biometricSubType

string

Constraints: possible values are UNKNOWN, RIGHT_THUMB, RIGHT_INDEX, RIGHT_MIDDLE, RIGHT_RING, RIGHT_LITTLE, LEFT_THUMB, LEFT_INDEX, LEFT_MIDDLE, LEFT_RING, LEFT_LITTLE, PLAIN_RIGHT_FOUR_FINGERS, PLAIN_LEFT_FOUR_FINGERS, PLAIN_THUMBS, UNKNOWN_PALM, RIGHT_FULL_PALM, RIGHT_WRITERS_PALM, LEFT_FULL_PALM, LEFT_WRITERS_PALM, RIGHT_LOWER_PALM, RIGHT_UPPER_PALM, LEFT_LOWER_PALM, LEFT_UPPER_PALM, RIGHT_OTHER, LEFT_OTHER, RIGHT_INTERDIGITAL, RIGHT_THENAR, RIGHT_HYPOTHENAR, LEFT_INTERDIGITAL, LEFT_THENAR, LEFT_HYPOTHENAR, RIGHT_INDEX_AND_MIDDLE, RIGHT_MIDDLE_AND_RING, RIGHT_RING_AND_LITTLE, LEFT_INDEX_AND_MIDDLE, LEFT_MIDDLE_AND_RING, LEFT_RING_AND_LITTLE, RIGHT_INDEX_AND_LEFT_INDEX, RIGHT_INDEX_AND_MIDDLE_AND_RING, RIGHT_MIDDLE_AND_RING_AND_LITTLE, LEFT_INDEX_AND_MIDDLE_AND_RING, LEFT_MIDDLE_AND_RING_AND_LITTLE, EYE_UNDEF, EYE_RIGHT, EYE_LEFT, EYE_BOTH, PORTRAIT, LEFT_PROFILE, RIGHT_PROFILE

presence

string

Constraints: possible values are BANDAGED, AMPUTATED, DAMAGED

6.4.2.11. DocumentPart

Table 6.12 DocumentPart

Attribute

Type

Description

Required

pages

Array of integer

The pages included in this part. Can be a single page number, or a list. Constraints: minItems is 1

data

string

Encoded data buffer.

dataRef

string/uri

URI to the data.

width

integer

the width of the image in pixels.

height

integer

the height of the image in pixels.

mimeType

string

the nature and format of the document. The mime type definitions should be in compliance with RFC 6838. Verifiable Credentials can be used if the proper mimeType is used.

captureDate

string/date-time

Data & time of the data capture, using RFC3339 format.

captureDevice

string

A string identifying the device used to capture the document part.

encryption

Object of type Encryption

if present, indicates that a part of the data is encrypted using the provided format.

integrity

Array of Integrity

6.4.2.12. DocumentData

Table 6.13 DocumentData

Attribute

Type

Description

Required

documentType

string

Type of document. Constraints: possible values are ID_CARD, PASSPORT, INVOICE, BIRTH_CERTIFICATE, FORM, OTHER

Yes

documentTypeOther

string

Details about the type of document when OTHER is used.

instance

string

Used to separate two distincts documents of the same type (ex: two passports).

parts

Array of DocumentPart

Constraints: minItems is 1

Yes

integrity

Array of Integrity

6.4.2.13. Expression

Table 6.14 Expression

Attribute

Type

Description

Required

attributeName

string

Yes

operator

string

Constraints: possible values are <, >, =, >=, <=, !=

Yes

value

One of string, integer, number, boolean

Yes

6.4.2.14. Expressions

Table 6.15 Expressions

Attribute

Type

Description

Required

N/A

Array of Expression