-
Notifications
You must be signed in to change notification settings - Fork 14
Description
What happens?
Given a valid base64url-encoded value, the current pattern in OpenAPI enforces a validation error. Example: https://app.swaggerhub.com/apis/Plattform_i40/DiscoveryServiceSpecification/V3.0.1_SSP-001#/Asset%20Administration%20Shell%20Basic%20Discovery%20API/GetAllAssetAdministrationShellIdsByAssetLink
Query parameter assetIds:
{
"name": "serial-number",
"value": "0123456",
"externalSubjectId":
{
"keys":
[
{
"type": "AssetAdministrationShell",
"value": "defaultSpecificAssetId",
},
],
"type": "ModelReference",
},
"semanticId":
{
"keys":
[{ "type": "GlobalReference", "value": "eClassDefaultSemanticId" }],
"type": "ExternalReference",
}
}
is correctly base64url encoded as
ewogICJuYW1lIjogInNlcmlhbC1udW1iZXIiLAogICJ2YWx1ZSI6ICIwMTIzNDU2IiwKICAiZXh0ZXJuYWxTdWJqZWN0SWQiOgogICAgewogICAgICAia2V5cyI6CiAgICAgICAgWwogICAgICAgICAgewogICAgICAgICAgICAidHlwZSI6ICJBc3NldEFkbWluaXN0cmF0aW9uU2hlbGwiLAogICAgICAgICAgICAidmFsdWUiOiAiZGVmYXVsdFNwZWNpZmljQXNzZXRJZCIsCiAgICAgICAgICB9LAogICAgICAgIF0sCiAgICAgICJ0eXBlIjogIk1vZGVsUmVmZXJlbmNlIiwKICAgIH0sCiAgInNlbWFudGljSWQiOgogICAgewogICAgICAia2V5cyI6CiAgICAgICAgW3sgInR5cGUiOiAiR2xvYmFsUmVmZXJlbmNlIiwgInZhbHVlIjogImVDbGFzc0RlZmF1bHRTZW1hbnRpY0lkIiB9XSwKICAgICAgInR5cGUiOiAiRXh0ZXJuYWxSZWZlcmVuY2UiLAogICAgIH0KfQ
However, a server strictly validating against the OpenAPI file will throw a validation error ("invalid encoding" or similar).
This value will however pass:
ewogICJuYW1lIjogInNlcmlhbC1udW1iZXIiLAogICJ2YWx1ZSI6ICIwMTIzNDU2IiwKICAiZXh0ZXJuYWxTdWJqZWN0SWQiOgogICAgewogICAgICAia2V5cyI6CiAgICAgICAgWwogICAgICAgICAgewogICAgICAgICAgICAidHlwZSI6ICJBc3NldEFkbWluaXN0cmF0aW9uU2hlbGwiLAogICAgICAgICAgICAidmFsdWUiOiAiZGVmYXVsdFNwZWNpZmljQXNzZXRJZCIsCiAgICAgICAgICB9LAogICAgICAgIF0sCiAgICAgICJ0eXBlIjogIk1vZGVsUmVmZXJlbmNlIiwKICAgIH0sCiAgInNlbWFudGljSWQiOgogICAgewogICAgICAia2V5cyI6CiAgICAgICAgW3sgInR5cGUiOiAiR2xvYmFsUmVmZXJlbmNlIiwgInZhbHVlIjogImVDbGFzc0RlZmF1bHRTZW1hbnRpY0lkIiB9XSwKICAgICAgInR5cGUiOiAiRXh0ZXJuYWxSZWZlcmVuY2UiLAogICAgIH0KfQ==
Why is this wrong?
schema:
type: array
items:
type: string
format: byte
means base64 encoding, not base64url.
How should it be fixed?
As base64url can not be expressed in OpenAPI, remove the format: byte from all files:
schema:
type: array
items:
type: string
Compliance to base64url must be described/checked outside of OpenAPI anyway.
- I have signed the required Developer Certificate of Origin (DCO) already.