Order PKIo Private Services Server
12 minute read
POST
Use this endpoint to order a PKIo Private Services Server certificate. This certificate is issued to government or commercial organizations and is used to secure server communications, typically for connecting to DigiPoort—the Dutch government’s digital post office for exchanging information with public agencies.https://certcentral.digicert.eu/services/v2/order/certificate/pkio_private_services_server
Public Key Infrastructure for Organizations (PKIo) certificates are part of the PKIoverheid framework (a public key infrastructure managed by the Dutch government). PKIo certificates are primarily used in Netherlands and Belgium.
Example requests and responses
curl -X POST \
'https://certcentral.digicert.eu/services/v2/order/certificate/pkio_private_services_server' \
-H 'Content-Type: application/json' \
-H 'X-DC-DEVKEY: {{api_key}}' \
-d '{
"certificate": {
"signature_hash": "sha256",
"exclude_oin": true,
"common_name": "domain.example.com",
"dns_names": [
"domain.example.com"
],
"server_platform": {
"id": "59"
},
"csr": "<redacted>"
},
"csa_agreed_to": true,
"dcv_method": "email",
"certificate_dcv_scope": "base_domain",
"use_qvtl_domain": null,
"container": {
"id": "679393"
},
"organization": {
"id": "2042709",
"contacts": [
{
"user_id": "2812497",
"first_name": "John",
"last_name": "Doe",
"job_title": "Engineer",
"telephone": "1801-903-4284",
"email": "john.doe@johndoe.com",
"contact_type": "verified_contact"
}
]
},
"order_validity": {
"years": 1
},
"payment_method": "balance"
}curl -X POST \
'https://certcentral.digicert.eu/services/v2/order/certificate/pkio_private_services_server' \
-H 'Content-Type: application/json' \
-H 'X-DC-DEVKEY: {{api_key}}' \
-d '{
"certificate": {
"signature_hash": "sha256",
"oin": "12345678901234567890",
"common_name": "domain.example.com",
"dns_names": [
"domain.example.com"
],
"server_platform": {
"id": "59"
},
"csr": "<redacted>"
},
"csa_agreed_to": true,
"dcv_method": "email",
"certificate_dcv_scope": "base_domain",
"use_qvtl_domain": null,
"container": {
"id": "679393"
},
"organization": {
"id": "2042709",
"contacts": [
{
"user_id": "2812497",
"first_name": "John",
"last_name": "Doe",
"job_title": "Engineer",
"telephone": "1801-903-4284",
"email": "john.doe@johndoe.com",
"contact_type": "verified_contact"
}
]
},
"order_validity": {
"years": 1
},
"payment_method": "balance"
}curl -X POST \
'https://certcentral.digicert.eu/services/v2/order/certificate/pkio_private_services_server' \
-H 'Content-Type: application/json' \
-H 'X-DC-DEVKEY: {{api_key}}' \
-d '{
"certificate": {
"signature_hash": "sha256",
"common_name": "{Organization_name}.qvtl.nl",
"dns_names": [
"domain.example.com"
],
"server_platform": {
"id": "59"
},
"csr": "<redacted>"
},
"csa_agreed_to": true,
"dcv_method": "email",
"certificate_dcv_scope": "base_domain",
"use_qvtl_domain": 1,
"container": {
"id": "679393"
},
"organization": {
"id": "2042709",
"contacts": [
{
"user_id": "2812497",
"first_name": "John",
"last_name": "Doe",
"job_title": "Engineer",
"telephone": "1801-903-4284",
"email": "john.doe@johndoe.com",
"contact_type": "verified_contact"
}
]
},
"order_validity": {
"years": 1
},
"payment_method": "balance"
}{
"id": 681531554,
"domains": [
{
"id": 4818243,
"name": "example.com",
"dns_name": "www.example.com"
},
{
"id": 4818244,
"name": "example2.com",
"dns_name": "www.example2.com"
},
{
"id": 4818245,
"name": "example3.net",
"dns_name": "www.example3.net"
}
],
"certificate_id": 683064190
}{
"id": 681531555,
"domains": [
{
"id": 4818246,
"name": "intervillousmicrospeco.qvtl.nl",
"dns_name": "IntervillousMicrospeCo.qvtl.nl"
}
],
"certificate_id": 683064191
}{
"id": 681531554,
"certificate_id": 683064190
}Request parameters
| Name | Req/Opt | Type | Description |
|---|---|---|---|
| certificate | required | object | Certificate details. |
| .. signature_hash | required | string | Hash algorithm used for signing the certificate. EU Qualified certificates support only SHA-256 hash algorithm. |
| .. oin | optional | integer | Specify the Organization Identification Number (OIN) or a converted Trade Registry Number (TRN) used in the Subject.SerialNumber field of the PKIo Private Services Server certificate. Inclusion of this identifier is required for integration with DigiPoort, a digital government communication platform. It ensures proper routing and authentication of data exchanged with Dutch public sector systems.The guidelines for OIN or TRN values are: The oin or converted trn must be accurate and organization-specific, as it directly affects the validity and functionality of the certificate.Note: If you do not have a prevalidated OIN, but still intend to include one in the certificate, omit the oin request parameter from the API request. |
| .. exclude_oin | optional | boolean | Set to true to exclude the OIN from the certificate, or false to include it. |
| .. common_name | conditional | string | Domain to be secured. Note: The common_name request parameter is required when you are not using a DigiCert-owned qvtl.nl domain name for the certificate’s common name. In other words, the common_name request parameter is required if the use_qvtl_domain request parameter is omitted or is set to null. |
| .. dns_names | optional | array | Additional domains to be secured. Can result in additional costs. (See Best practices – Get both versions of a domain for free.) You can omit the common_name value from the dns_names list. Before creating the order, DigiCert prepends the common_name value to the dns_names list and removes any duplicate values. |
| .. server_platform | optional | object | Server platform type. See Glossary – Server platforms. Default:-1 (other) |
| .. .. id | required | int | Server platform ID. See Glossary – Server platforms |
| .. csr | required | string | Certificate signing request (CSR) or public key in PEM format. Format the CSR/public key as a base64-encoded string without line breaks or escape characters. Include the PEM headers and footers (such as -----BEGIN CERTIFICATE REQUEST-----... and ...-----END CERTIFICATE REQUEST-----). For more information about generating a CSR, see Create a CSR. |
| disable_generate_in_browser_email | optional | boolean | If true, and you omit the CSR, the csr string is ignored in the request. You must then use the Update CSR endpoint to add the CSR to the pending certificate order.Otherwise, false (default).This option allows the requestor to omit the CSR from the request without needing to generate the CSR in the browser. Before DigiCert can issue the certificate, you must upload the CSR to the pending certificate order. |
| csa_agreed_to | required | boolean | Specify if the Certificate Subscriber Agreement (CSA) has been agreed to. Set this parameter to true to indicate agreement and false for disagreement.Default: true |
| dcv_method | optional | string | DCV method to use when verifying domain control. See Glossary – DCV methods. |
| certificate_dcv_scope | optional | string | Domain validation scope for domains on the order. Domain validation scope determines the specific domains that you must validate before DigiCert can issue your certificate. Allowed values: Default: This parameter overrides the domain validation scope settings for your CertCentral account. If you omit this parameter, the account setting is used. |
| use_qvtl_domain | conditional | int/null | Specifies whether to use a DigiCert-owned qvtl.nl domain name for the certificate’s common name. If set to 1, DigiCert will include a DigiCert-controlled domain name (suffixed with qvtl.nl) instead of your domains listed in the common_name request parameter.If set to null, the certificate will use the organization’s own domains listed in the common_name request parameter.Note: Enabling use_qvtl_domain requires authorization and validation by DigiCert to use the shared domain. This setting is commonly applicable when the organization does not operate its own domain infrastructure. |
| container | optional | object | If needed, specify the container under which the order should be placed. This refers to the account or sub-account in DigiCert CertCentral where the certificate order will reside. |
| .. id | required | int | Specify the container ID. Each account or sub-account has a unique container ID, and specifying it correctly simplifies managing and billing of certificates. |
| organization | required | object | Object with information about the organization to associate with the request. You can associate the request with an existing organization, or you can create a new organization when you submit the order request. To associate the request with an existing organization, pass the ID of the organization as the value of organization.id in the body of your request. To create a new organization, include the details of the organization in the organization object. For more information about the structure and required parameters of the organization object, see the Create organization documentation.Note: When you submit an order with organization details instead of providing an organization ID, we check the organizations that already exist in your account to avoid creating a duplicate. To override this behavior and force the request to create a new organization, set the organization.skip_duplicate_org_check parameter to true in the body of your request.Important: When you want to associate an order with an existing organization, we recommend always using the ID of the organization instead of the organization’s details in the body of your request. To get the ID values for organizations in your account, use the List organizations endpoint. Additionally, we recommend deactivating unused organizations to ensure they are never accidentally assigned to a new order request. To deactivate an organization, use the Deactivate organization endpoint. |
| .. id | required | integer | The ID of an existing organization to associate with the order. To get the ID of organizations in your account, use the List organizations endpoint. *Not required if you are creating a new organization with your request. For details on how to create a new organization, see Create organization. |
| .. contacts | required | array | List of contacts for the organization. |
| When creating a new organization: | |||
| Providing a verified_contact is required while ordering certificates. You can add multiple verified contacts, with a maximum limit of fifteen. | |||
| The verified contact is your organization’s authorized representative. The authorized representative must be included in the company registry, must represent the organization, and has the authority to approve your certificate order. | |||
| Providing an organization_contact is conditional. An organization_contact is required if the request is from a service user. If omitted, the organization is created and the authenticated user is used as the organization contact. | |||
| Providing a technical_contact is optional. If omitted, the organization is created with no technical contact. | |||
| When using an existing organization ID: | |||
| Providing an organization_contact and technical_contact is optional. If provided, the new organization and technical contact replace the existing contacts stored on the organization. | |||
| Providing a verified_contact is optional if the organization has already been submitted while ordering an equivalent certificate. | |||
| Providing a verified_contact is required if the organization has never been submitted while ordering an equivalent certificate. | |||
| Note: By default, DigiCert creates the order with the organization contact and technical contact (if one exists) assigned to the organization on the request. To create the order with a different organization or technical contact than those assigned to the organization, include the organization_contact or technical_contact object at the root of the request payload. | |||
| .. .. first_name | optional | string | First name of the new contact. Note: Required when omitting user_id. If user_id is not omitted, the specified user’s information will be updated with the new value. |
| .. .. last_name | optional | string | Last name of the new contact. Note: Required when omitting user_id. If user_id is not omitted, the specified user’s information will be updated with the new value. |
| optional | string | Email address of the new contact. Note: Required when omitting user_id. If user_id is not omitted, the specified user’s information will be updated with the new value. | |
| .. .. job_title | optional | string | Job title of the new contact. Note: Required when omitting user_id. If user_id is not omitted, the specified user’s information will be updated with the new value. |
| .. .. telephone | optional | string | Telephone number of the new contact. Note: Required when omitting user_id. If user_id is not omitted, the specified user’s information will be updated with the new value. |
| .. .. contact_type | required | string | Contact type. |
| Allowed values: organization_contact, technical_contact, or verified_contact. | |||
| Note: This parameter is required when creating a new authorized representative or when using an existing verified contact as an authorized representative. | |||
| .. .. user_id | required* | integer | ID of existing user or contact for the account. *Can be omitted if adding a new contact. |
| order_validity | optional | object | Defines the validity period of certificates issued for this order. Cannot exceed order validity period. If not provided, or if the certificate validity date is less than 365 days from the current date, the certificate’s validity period defaults to the validity period of the order or the maximum certificate validity period defined by CA/B Forum baseline requirements, whichever is shorter. This object is not used for requests from accounts that do not have Multi-year Plans enabled. |
| .. years | optional | int | Number of years the certificate is valid after it is issued. Can be replaced with cert_validity.days or cert_validity.custom_expiration_date. Allowed value: 1, 2, or 3 |
| .. days | optional | int | Number of days the certificate is valid after it is issued. Overrides cert_validity.years. Max: 397 |
| .. .. custom_expiration_date | optional | string | A custom expiration date for the certificate. Overrides cert_validity.days and cert_validity.years. Format: dd MMM YYYY (for example, “09 JUN 2021”) Range: Must be within 397 days of the date you request the certificate. |
| payment_method | required | string | Payment method for the order. Allowed values: |
| credit_card | required (if payment_method is card) | object | Object with information about the credit card charged for the order. Required if payment_method is card. |
| .. number | required | string | Credit card number. |
| .. expiration_month | required | string | Credit card expiration month. Format as a two-digit number between 01 (Jan) and 12 (Dec). |
| .. expiration_year | required | string | Credit card expiration year. Format as a four-digit number. For example: 2026 |
| .. cvv | required | string | Card verification value (CVV). Format as a three- or four-digit number. For example: 333 or 4444 |
| .. cardholder_name | required | string | Cardholder’s first and last name. |
| .. save_credit_card | optional | null | Specify whether to save the credit card details. true for saving the details, false for not saving the details, and null for not indicating the preference.Allowed Values: true, false, or null. |
| .. set_as_default | required | string | Set the card as the default payment option or method. To set this card as your default payment method, use 1. To keep your default payment method, use 0.Allowed Values: 1 or 0. |
| billing_address | conditional | object | Object with information about the billing address. Required if payment_method is card. |
| .. address | required | string | Billing street address. |
| .. address2 | optional | string | Continuation of street address. |
| .. city | required | string | Billing city. |
| .. state | conditional | string | Billing state or province. Optional for some countries. |
| .. country | required | string | Billing country. |
| .. zip | conditional | string | Billing zip or postal code. Optional for some countries. |
Response parameters
| Name | Type | Description |
|---|---|---|
| id | int | Order ID. |
| domains | object | List of objects for each domain on the order. Each object has the name and id of the domain in your account that you must validate to prove control over the domain (dns_name) on the order.Note: Multiple domains on an order can be validated under the scope of the same higher-level domain. This means that multiple objects in the domains array may return the same name and id values. |
| .. id | integer | ID of the domain in your account that must be validated to prove control over the domain (dns_name) on the order. |
| .. name | string | Name of the domain in your account that must be validated to prove control over the domain (dns_name) on the order. |
| .. dns_name | string | Common name or SAN on the order. |
| certificate_id | int | Certificate ID. Returned if request status is approved. |
Was this page helpful?
Provide feedback