From c7bc87908d9cfeac6e5662350166db84a3bb37bb Mon Sep 17 00:00:00 2001 From: "Matthias L. Jugel" Date: Tue, 18 May 2021 21:26:45 +0200 Subject: [PATCH] update file name, render api --- README.md | 2 +- ...n-certify-api.html => dgc-certify-api.html | 81 ++++++++++++++++--- ...n-certify-api.yaml => dgc-certify-api.yaml | 0 examples/README.md | 2 +- 4 files changed, 73 insertions(+), 12 deletions(-) rename vaccination-certify-api.html => dgc-certify-api.html (97%) rename vaccination-certify-api.yaml => dgc-certify-api.yaml (100%) diff --git a/README.md b/README.md index f92317b..23b4348 100644 --- a/README.md +++ b/README.md @@ -8,7 +8,7 @@ The interface specifications are aligned with the DGC schema specification publi ## OpenAPI Specifications -- **Issuer API** ([Specification](vaccination-certify-api.yaml)) +- **Issuer API** ([Specification](dgc-certify-api.yaml)) Provides endpoints for the web frontend, vaccination center software, patient management software to issue [DGC](https://ec.europa.eu/info/live-work-travel-eu/coronavirus-response/safe-covid-19-vaccines-europeans/covid-19-digital-green-certificates) diff --git a/vaccination-certify-api.html b/dgc-certify-api.html similarity index 97% rename from vaccination-certify-api.html rename to dgc-certify-api.html index 137a11e..0f87123 100644 --- a/vaccination-certify-api.html +++ b/dgc-certify-api.html @@ -180,6 +180,47 @@ .jlDjZa .sc-fzpjYC,.jlDjZa .sc-fzpjYC .sc-fzpjYC .sc-fzpjYC,.jlDjZa .sc-fzpjYC .sc-fzpjYC .sc-fzpjYC .sc-fzpjYC .sc-fzpjYC{margin:1em;margin-right:0;background:#fafafa;}/*!sc*/ .jlDjZa .sc-fzpjYC .sc-fzpjYC,.jlDjZa .sc-fzpjYC .sc-fzpjYC .sc-fzpjYC .sc-fzpjYC,.jlDjZa .sc-fzpjYC .sc-fzpjYC .sc-fzpjYC .sc-fzpjYC .sc-fzpjYC .sc-fzpjYC{background:#ffffff;}/*!sc*/ data-styled.g24[id="sc-fznxsB"]{content:"jlDjZa,"}/*!sc*/ +.iuCQoO{background-color:#f5f5f5;border:2px solid #7C7C7C;border-radius:7;cursor:pointer;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;font-size:1em;position:relative;}/*!sc*/ +.iuCQoO:hover{border:2px solid #6e6d6d;}/*!sc*/ +.iuCQoO:disabled{background-color:#ededed;cursor:unset;}/*!sc*/ +data-styled.g30[id="sc-fzoyTs"]{content:"iuCQoO,"}/*!sc*/ +.eEaIJt{-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;box-sizing:border-box;cursor:inherit;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;height:32px;padding:0 11px;position:relative;width:100%;}/*!sc*/ +.eEaIJt input{background-color:inherit;border:none;font-size:inherit;height:30px;outline:none;width:100%;}/*!sc*/ +data-styled.g31[id="sc-fzoNJl"]{content:"eEaIJt,"}/*!sc*/ +.eXWOFC{bottom:0;left:11px;position:absolute;right:25px;top:0;}/*!sc*/ +data-styled.g32[id="sc-fzoXWK"]{content:"eXWOFC,"}/*!sc*/ +.gBfPiy{text-align:left;color:black;bottom:0;left:11px;line-height:30px;overflow:hidden;position:absolute;right:25px;text-overflow:ellipsis;top:0;white-space:nowrap;}/*!sc*/ +data-styled.g33[id="sc-fzpmMD"]{content:"gBfPiy,"}/*!sc*/ +.gQRRte{-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;bottom:0;color:#808080;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;position:absolute;right:10px;top:0;}/*!sc*/ +data-styled.g35[id="sc-fznMAR"]{content:"gQRRte,"}/*!sc*/ +.kZnNiD{background-color:#ffffff;border:2px solid #6e6d6d;border-radius:4px;box-shadow:0px 4px 4px rgba(0,0,0,0.25);box-sizing:border-box;color:black;display:none;left:0;list-style-type:none;margin:0;max-height:150px;overflow-x:hidden;overflow-y:auto;padding:2px 0;position:absolute;top:100%;width:100%;z-index:9999;}/*!sc*/ +.kZnNiD .dropdown-selector-content--empty{-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;color:#808080;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;-webkit-box-pack:center;-webkit-justify-content:center;-ms-flex-pack:center;justify-content:center;padding:4px 0;}/*!sc*/ +.kZnNiD::-webkit-scrollbar{width:5px;}/*!sc*/ +.kZnNiD::-webkit-scrollbar-track{background:#ddd;}/*!sc*/ +.kZnNiD::-webkit-scrollbar-thumb{background:#666;}/*!sc*/ +data-styled.g36[id="sc-fznWOq"]{content:"kZnNiD,"}/*!sc*/ +.kwiRMm{background-color:#7C7C7C;border:none;color:#f5f5f5;cursor:pointer;font-size:0.95em;overflow:hidden;padding:5px 10px;text-overflow:ellipsis;white-space:nowrap;width:100%;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;}/*!sc*/ +.kwiRMm:hover{background-color:#7C7C7C;color:#f5f5f5;}/*!sc*/ +.kwiRMm .option-icon{padding-right:5px;}/*!sc*/ +.hQyXBS{background-color:#f5f5f5;border:none;color:inherit;cursor:pointer;font-size:0.95em;overflow:hidden;padding:5px 10px;text-overflow:ellipsis;white-space:nowrap;width:100%;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;}/*!sc*/ +.hQyXBS:hover{background-color:#CECECE;}/*!sc*/ +.hQyXBS .option-icon{padding-right:5px;}/*!sc*/ +data-styled.g40[id="sc-fzoxKX"]{content:"kwiRMm,hQyXBS,"}/*!sc*/ +.jGVUna.jGVUna{box-sizing:border-box;min-width:100px;outline:none;display:inline-block;border-radius:2px;border:1px solid rgba(38,50,56,0.5);vertical-align:bottom;padding:2px 0px 2px 6px;position:relative;width:auto;background:white;color:#263238;font-family:Montserrat,sans-serif;font-size:0.929em;line-height:1.5em;cursor:pointer;-webkit-transition:border 0.25s ease,color 0.25s ease,box-shadow 0.25s ease;transition:border 0.25s ease,color 0.25s ease,box-shadow 0.25s ease;}/*!sc*/ +.jGVUna.jGVUna:hover,.jGVUna.jGVUna:focus-within{border:1px solid #32329f;color:#32329f;box-shadow:0px 0px 0px 1px #32329f;}/*!sc*/ +.jGVUna.jGVUna .dropdown-selector{display:-webkit-inline-box;display:-webkit-inline-flex;display:-ms-inline-flexbox;display:inline-flex;padding:0;height:auto;padding-right:20px;position:relative;margin-bottom:5px;}/*!sc*/ +.jGVUna.jGVUna .dropdown-selector-value{font-family:Montserrat,sans-serif;position:relative;font-size:0.929em;width:100%;line-height:1;vertical-align:middle;color:#263238;left:0;-webkit-transition:color 0.25s ease,text-shadow 0.25s ease;transition:color 0.25s ease,text-shadow 0.25s ease;}/*!sc*/ +.jGVUna.jGVUna .dropdown-arrow{position:absolute;right:3px;top:50%;-webkit-transform:translateY(-50%);-ms-transform:translateY(-50%);transform:translateY(-50%);border-color:#32329f transparent transparent;border-style:solid;border-width:0.35em 0.35em 0;width:0;}/*!sc*/ +.jGVUna.jGVUna .dropdown-arrow svg{display:none;}/*!sc*/ +.jGVUna.jGVUna .dropdown-selector-content{position:absolute;margin-top:2px;left:-2px;right:0;z-index:10;min-width:100px;background:white;border:1px solid rgba(38,50,56,0.2);box-shadow:0px 2px 4px 0px rgba(34,36,38,0.12),0px 2px 10px 0px rgba(34,36,38,0.08);max-height:220px;overflow:auto;}/*!sc*/ +.jGVUna.jGVUna .dropdown-option{font-size:0.9em;color:#263238;cursor:pointer;padding:0.4em;background-color:#ffffff;}/*!sc*/ +.jGVUna.jGVUna .dropdown-option[aria-selected='true']{background-color:rgba(0,0,0,0.05);}/*!sc*/ +.jGVUna.jGVUna .dropdown-option:hover{background-color:rgba(38,50,56,0.12);}/*!sc*/ +.jGVUna.jGVUna input{cursor:pointer;height:1px;background-color:transparent;}/*!sc*/ +.jGVUna.jGVUna{margin-left:10px;text-transform:none;font-size:0.969em;font-size:1em;border:none;padding:0 1.2em 0 0;background:transparent;}/*!sc*/ +.jGVUna.jGVUna:hover,.jGVUna.jGVUna:focus-within{border:none;box-shadow:none;}/*!sc*/ +.jGVUna.jGVUna:hover .dropdown-selector-value,.jGVUna.jGVUna:focus-within .dropdown-selector-value{color:#32329f;text-shadow:0px 0px 0px #32329f;}/*!sc*/ +data-styled.g42[id="sc-fzoYkl"]{content:"jGVUna,"}/*!sc*/ .ezqAQI{margin-left:10px;text-transform:none;font-size:0.929em;color:black;}/*!sc*/ data-styled.g43[id="sc-fzpkJw"]{content:"ezqAQI,"}/*!sc*/ .kuWevu > ul{list-style:none;padding:0;margin:0;margin:0 -5px;}/*!sc*/ @@ -384,6 +425,25 @@ data-styled.g62[id="sc-fzoVTD"]{content:"hYwnSl,"}/*!sc*/ .dBHtDj{position:relative;}/*!sc*/ data-styled.g63[id="sc-fzpisO"]{content:"dBHtDj,"}/*!sc*/ +.jpuTDy.jpuTDy{box-sizing:border-box;min-width:100px;outline:none;display:inline-block;border-radius:2px;border:1px solid rgba(38,50,56,0.5);vertical-align:bottom;padding:2px 0px 2px 6px;position:relative;width:auto;background:white;color:#263238;font-family:Montserrat,sans-serif;font-size:0.929em;line-height:1.5em;cursor:pointer;-webkit-transition:border 0.25s ease,color 0.25s ease,box-shadow 0.25s ease;transition:border 0.25s ease,color 0.25s ease,box-shadow 0.25s ease;}/*!sc*/ +.jpuTDy.jpuTDy:hover,.jpuTDy.jpuTDy:focus-within{border:1px solid #32329f;color:#32329f;box-shadow:0px 0px 0px 1px #32329f;}/*!sc*/ +.jpuTDy.jpuTDy .dropdown-selector{display:-webkit-inline-box;display:-webkit-inline-flex;display:-ms-inline-flexbox;display:inline-flex;padding:0;height:auto;padding-right:20px;position:relative;margin-bottom:5px;}/*!sc*/ +.jpuTDy.jpuTDy .dropdown-selector-value{font-family:Montserrat,sans-serif;position:relative;font-size:0.929em;width:100%;line-height:1;vertical-align:middle;color:#263238;left:0;-webkit-transition:color 0.25s ease,text-shadow 0.25s ease;transition:color 0.25s ease,text-shadow 0.25s ease;}/*!sc*/ +.jpuTDy.jpuTDy .dropdown-arrow{position:absolute;right:3px;top:50%;-webkit-transform:translateY(-50%);-ms-transform:translateY(-50%);transform:translateY(-50%);border-color:#32329f transparent transparent;border-style:solid;border-width:0.35em 0.35em 0;width:0;}/*!sc*/ +.jpuTDy.jpuTDy .dropdown-arrow svg{display:none;}/*!sc*/ +.jpuTDy.jpuTDy .dropdown-selector-content{position:absolute;margin-top:2px;left:-2px;right:0;z-index:10;min-width:100px;background:white;border:1px solid rgba(38,50,56,0.2);box-shadow:0px 2px 4px 0px rgba(34,36,38,0.12),0px 2px 10px 0px rgba(34,36,38,0.08);max-height:220px;overflow:auto;}/*!sc*/ +.jpuTDy.jpuTDy .dropdown-option{font-size:0.9em;color:#263238;cursor:pointer;padding:0.4em;background-color:#ffffff;}/*!sc*/ +.jpuTDy.jpuTDy .dropdown-option[aria-selected='true']{background-color:rgba(0,0,0,0.05);}/*!sc*/ +.jpuTDy.jpuTDy .dropdown-option:hover{background-color:rgba(38,50,56,0.12);}/*!sc*/ +.jpuTDy.jpuTDy input{cursor:pointer;height:1px;background-color:transparent;}/*!sc*/ +.jpuTDy.jpuTDy{margin-left:10px;text-transform:none;font-size:0.929em;margin:0 0 10px 0;display:block;background-color:rgba(38,50,56,0.4);font-size:1em;border:none;padding:0.9em 1.6em 0.9em 0.9em;box-shadow:none;}/*!sc*/ +.jpuTDy.jpuTDy:hover,.jpuTDy.jpuTDy:focus-within{border:none;box-shadow:none;}/*!sc*/ +.jpuTDy.jpuTDy:focus-within{background-color:rgba(38,50,56,0.7);}/*!sc*/ +.jpuTDy.jpuTDy .dropdown-arrow{border-top-color:#ffffff;}/*!sc*/ +.jpuTDy.jpuTDy .dropdown-selector-value{text-overflow:ellipsis;white-space:nowrap;overflow:hidden;color:#ffffff;}/*!sc*/ +.jpuTDy.jpuTDy .dropdown-selector-content{margin:0;margin-top:2px;}/*!sc*/ +.jpuTDy.jpuTDy .dropdown-selector-content .dropdown-option{text-overflow:ellipsis;white-space:nowrap;overflow:hidden;}/*!sc*/ +data-styled.g64[id="sc-fznyYp"]{content:"jpuTDy,"}/*!sc*/ .iZtsQe{margin-top:15px;}/*!sc*/ data-styled.g66[id="sc-fznXWL"]{content:"iZtsQe,"}/*!sc*/ .dUqafC{border-left:1px solid #7c7cbb;box-sizing:border-box;position:relative;padding:10px 10px 10px 0;vertical-align:top;line-height:20px;white-space:nowrap;font-size:13px;font-family:Courier,monospace;}/*!sc*/ @@ -579,7 +639,7 @@ 55.627 l 55.6165,55.627 -231.245496,231.24803 c -127.185,127.1864 -231.5279,231.248 -231.873,231.248 -0.3451,0 -104.688, -104.0616 -231.873,-231.248 z - " fill="currentColor">

Issuer Service API (2.0.0)

Download OpenAPI specification:Download

The issuer service API generates signed + " fill="currentColor">

Issuer Service API (2.1.0)

Download OpenAPI specification:Download

The issuer service API generates signed Digital Green Certificate (DGC) conforming certificates.

Copyright (C) 2021 IBM Deutschland GmbH
@@ -589,7 +649,7 @@
 you may not use this file except in compliance with the License.
 You may obtain a copy of the License at
 
-http://www.apache.org/licenses/LICENSE-2.0
+https://www.apache.org/licenses/LICENSE-2.0
 
 Unless required by applicable law or agreed to in writing, software
 distributed under the License is distributed on an "AS IS" BASIS,
@@ -597,15 +657,15 @@
 See the License for the specific language governing permissions and
 limitations under the License.

Authentication

AppBearerToken

Authentication is based on a bearer token

Security Scheme Type HTTP
HTTP Authorization Scheme bearer
Bearer format "JWT"

Certification

Issue a vaccination certificate.

Description

-

Issue a vaccination certificate based on the provided input according to spec 1.0.0 of the +

Issue a health certificate based on the provided input according to spec 1.0.0 of the Digital Green Certificate (DGC).

Authentication: clients connecting via Internet (not SNK/TI) need an X.509 client certificate and must provide a list of authorized vaccination center id's.

Applications: vaccination center software, patient information systems, integrators

-
Authorizations:
Request Body schema: application/json

Vaccination information. The value-sets are defined in the EU eHealthNetwork: Value Sets for Digital Green Certificates. version 1.0.

-
required
object (Person name)

Name of the vaccinated person.

+
Authorizations:
Request Body schema:

Digital Green Certificate request information. The value-sets are defined in the EU eHealthNetwork: Value Sets for Digital Green Certificates. version 1.0.

+
required
object (Person name)

Name of the person which receives the certificate.

dob
required
string <date> (Date of birth) (19|20)\d{2}-\d{2}-\d{2}

Date of Birth of the person addressed in the DGC. ISO 8601 date format restricted to range 1900-2099

-
required
Array of objects (Vaccination) non-empty

Vaccination Group

+
required
Array of objects (VaccinationEntry) 1 items

Vaccination Certificate Entry

Responses

https://api.certify.demo.ubirch.com/api/certify/v2/issue

Endpoint for vaccination centers only - PRODUCTION api server

https://api.certify.ubirch.com/api/certify/v2/issue

Endpoint for medical practitioners with TI access only - STAGING api server

https://api.ru.impfnachweis.info/api/certify/v2/issue

Endpoint for medical practitioners with TI access only - PRODUCTION api server

-
https://api.impfnachweis.info/api/certify/v2/issue

Request samples

Content type
application/json
{
  • "nam": {
    },
  • "dob": "1979-04-14",
  • "v": [
    ]
}

Sign a CBOR Web Token hash.

Description

+
https://api.impfnachweis.info/api/certify/v2/issue

Request samples

Content type
{
  • "nam": {
    },
  • "dob": "1979-04-14",
  • "v": [
    ]
}

Sign a CBOR Web Token hash.

Description

Verifies and signs the hash of a CBOR Web Token (CWT). This is the actual signature operation of the ECDSA algorithm applied to the pre-hashed data of the CWT. It returns the skeleton of the signed CWT which needs to be filled with the actual payload that was used in the process of creating the signature hash. This endpoint is used for a privacy friendly way to remotely sign certificates.

-

Applications: vaccination web frontend

-
Authorizations:
Request Body schema: text/plain

Base64 encoded SHA256 message digest of the CBOR Web Token.

+

Applications: secure backend integrators, vaccination web frontend

+
Authorizations:
Request Body schema: text/plain

Base64 encoded SHA256 message digest of the CBOR Web Token prior to the application +of the signature algorithm.

string <base64>

Responses

https://api.ru.impfnachweis.info/api/certify/v2/issue/hash

Endpoint for medical practitioners with TI access only - PRODUCTION api server

https://api.impfnachweis.info/api/certify/v2/issue/hash

Request samples

Content type
text/plain
TvQb78AX/5r+5ZkVYYeUW0Rn/4FB8ICt6sSdrwOq0EI=

Response samples

Content type
application/cbor
<Signed Incomplete CBOR Web Token>