opengeospatial / ets-ogcapi-processes10

Other
3 stars 3 forks source link

further clarification on $ref error #12

Closed pcdion closed 8 months ago

pcdion commented 2 years ago

Uncertain whether this error occurs. The body is as follows, for Test Process and Test Process Success:

body.outputs.schema: Field '$ref' is required. (code: 1026) From: body..outputs....schema.... body.outputs.schema.oneOf

dstenger commented 2 years ago

Thank you for reporting. We will do further investigation. Is there a test service available we can use to reproduce the behavior?

jerstlouis commented 2 years ago

@dstenger not at the moment, sorry. This experimental version of our GNOSIS Map Server has not yet been integrated into our deployed software.

bpross-52n commented 2 years ago

This should be fixed in the current master branch.

dstenger commented 2 years ago

@jerstlouis Can you please check if this problem is still occurring when using the current status of master branch?

jerstlouis commented 1 year ago

@dstenger This confusing error is still happening with the latest master branch. We get two such reports for Test Process and Test Process Success. The resource is /ogcapi/processes/echo and the echo process description looks fine.

body.outputs.schema: Field '$ref' is required. (code: 1026) From: body.<allOf>.outputs.<additionalProperties>.<outputDescription.yaml>.<allOf>.schema.<schema.yaml>.<oneOf>.<reference.yaml>.<required> body.outputs.schema.oneOf.1: Field '$ref' is required. (code: 1026) From: body.<allOf>.outputs.<additionalProperties>.<outputDescription.yaml>.<allOf>.schema.<schema.yaml>.<oneOf>.oneOf.1.<items>.<oneOf>.<schema.yaml>.<oneOf>.<reference.yaml>.<required> body.outputs.schema.oneOf.1.allOf.1: More than 1 schema is valid. (code: 1023) From: body.<allOf>.outputs.<additionalProperties>.<outputDescription.yaml>.<allOf>.schema.<schema.yaml>.<oneOf>.oneOf.1.<items>.<oneOf>.<schema.yaml>.<oneOf>.allOf.1.<items>.<oneOf> body.outputs.schema.oneOf.1: Field '$ref' is required. (code: 1026) From: body.<allOf>.outputs.<additionalProperties>.<outputDescription.yaml>.<allOf>.schema.<schema.yaml>.<oneOf>.oneOf.1.<items>.<oneOf>.<reference.yaml>.<required> body.outputs.schema: Field '$ref' is required. (code: 1026) From: body.<allOf>.outputs.<additionalProperties>.<outputDescription.yaml>.<allOf>.schema.<schema.yaml>.<oneOf>.<reference.yaml>.<required> body.outputs.schema.allOf.1.$ref: Value '../../openapi/schemas/bbox.yaml' does not match format 'uri-reference'. (code: 1007) From: body.<allOf>.outputs.<additionalProperties>.<outputDescription.yaml>.<allOf>.schema.<schema.yaml>.<oneOf>.allOf.1.<items>.<oneOf>.<schema.yaml>.<oneOf>.<reference.yaml>.$ref.<format> body.outputs.schema.allOf.1: Additional property '$ref' is not allowed. (code: 1000) From: body.<allOf>.outputs.<additionalProperties>.<outputDescription.yaml>.<allOf>.schema.<schema.yaml>.<oneOf>.allOf.1.<items>.<oneOf>.<schema.yaml>.<oneOf>.<additionalProperties> body.outputs.schema.allOf.1.$ref: Value '../../openapi/schemas/bbox.yaml' does not match format 'uri-reference'. (code: 1007) From: body.<allOf>.outputs.<additionalProperties>.<outputDescription.yaml>.<allOf>.schema.<schema.yaml>.<oneOf>.allOf.1.<items>.<oneOf>.<reference.yaml>.$ref.<format> body.outputs.schema: Field '$ref' is required. (code: 1026) From: body.<allOf>.outputs.<additionalProperties>.<outputDescription.yaml>.<allOf>.schema.<schema.yaml>.<oneOf>.<reference.yaml>.<required> body.outputs.schema.oneOf.2: Field '$ref' is required. (code: 1026) From: body.<allOf>.outputs.<additionalProperties>.<outputDescription.yaml>.<allOf>.schema.<schema.yaml>.<oneOf>.oneOf.2.<items>.<oneOf>.<schema.yaml>.<oneOf>.<reference.yaml>.<required> body.outputs.schema.oneOf.2.allOf.1: More than 1 schema is valid. (code: 1023) From: body.<allOf>.outputs.<additionalProperties>.<outputDescription.yaml>.<allOf>.schema.<schema.yaml>.<oneOf>.oneOf.2.<items>.<oneOf>.<schema.yaml>.<oneOf>.allOf.1.<items>.<oneOf> body.outputs.schema.oneOf.2: Field '$ref' is required. (code: 1026) From: body.<allOf>.outputs.<additionalProperties>.<outputDescription.yaml>.<allOf>.schema.<schema.yaml>.<oneOf>.oneOf.2.<items>.<oneOf>.<reference.yaml>.<required> body.inputs.schema: Field '$ref' is required. (code: 1026) From: body.<allOf>.inputs.<additionalProperties>.<inputDescription.yaml>.<allOf>.schema.<schema.yaml>.<oneOf>.<reference.yaml>.<required> body.inputs.schema.oneOf.1: Field '$ref' is required. (code: 1026) From: body.<allOf>.inputs.<additionalProperties>.<inputDescription.yaml>.<allOf>.schema.<schema.yaml>.<oneOf>.oneOf.1.<items>.<oneOf>.<schema.yaml>.<oneOf>.<reference.yaml>.<required> body.inputs.schema.oneOf.1.allOf.1: More than 1 schema is valid. (code: 1023) From: body.<allOf>.inputs.<additionalProperties>.<inputDescription.yaml>.<allOf>.schema.<schema.yaml>.<oneOf>.oneOf.1.<items>.<oneOf>.<schema.yaml>.<oneOf>.allOf.1.<items>.<oneOf> body.inputs.schema.oneOf.1: Field '$ref' is required. (code: 1026) From: body.<allOf>.inputs.<additionalProperties>.<inputDescription.yaml>.<allOf>.schema.<schema.yaml>.<oneOf>.oneOf.1.<items>.<oneOf>.<reference.yaml>.<required> body.inputs.schema: Field '$ref' is required. (code: 1026) From: body.<allOf>.inputs.<additionalProperties>.<inputDescription.yaml>.<allOf>.schema.<schema.yaml>.<oneOf>.<reference.yaml>.<required> body.inputs.schema.allOf.1.$ref: Value '../../openapi/schemas/bbox.yaml' does not match format 'uri-reference'. (code: 1007) From: body.<allOf>.inputs.<additionalProperties>.<inputDescription.yaml>.<allOf>.schema.<schema.yaml>.<oneOf>.allOf.1.<items>.<oneOf>.<schema.yaml>.<oneOf>.<reference.yaml>.$ref.<format> body.inputs.schema.allOf.1: Additional property '$ref' is not allowed. (code: 1000) From: body.<allOf>.inputs.<additionalProperties>.<inputDescription.yaml>.<allOf>.schema.<schema.yaml>.<oneOf>.allOf.1.<items>.<oneOf>.<schema.yaml>.<oneOf>.<additionalProperties> body.inputs.schema.allOf.1.$ref: Value '../../openapi/schemas/bbox.yaml' does not match format 'uri-reference'. (code: 1007) From: body.<allOf>.inputs.<additionalProperties>.<inputDescription.yaml>.<allOf>.schema.<schema.yaml>.<oneOf>.allOf.1.<items>.<oneOf>.<reference.yaml>.$ref.<format> body.inputs.schema: Field '$ref' is required. (code: 1026) From: body.<allOf>.inputs.<additionalProperties>.<inputDescription.yaml>.<allOf>.schema.<schema.yaml>.<oneOf>.<reference.yaml>.<required> body.inputs.schema.oneOf.2: Field '$ref' is required. (code: 1026) From: body.<allOf>.inputs.<additionalProperties>.<inputDescription.yaml>.<allOf>.schema.<schema.yaml>.<oneOf>.oneOf.2.<items>.<oneOf>.<schema.yaml>.<oneOf>.<reference.yaml>.<required> body.inputs.schema.oneOf.2.allOf.1: More than 1 schema is valid. (code: 1023) From: body.<allOf>.inputs.<additionalProperties>.<inputDescription.yaml>.<allOf>.schema.<schema.yaml>.<oneOf>.oneOf.2.<items>.<oneOf>.<schema.yaml>.<oneOf>.allOf.1.<items>.<oneOf> body.inputs.schema.oneOf.2: Field '$ref' is required. (code: 1026) From: body.<allOf>.inputs.<additionalProperties>.<inputDescription.yaml>.<allOf>.schema.<schema.yaml>.<oneOf>.oneOf.2.<items>.<oneOf>.<reference.yaml>.<required>

cc @pcdion

jerstlouis commented 1 year ago

@dstenger @ghobona @bpross-52n

I was somewhat doubting whether my docker was really up to date since this should have been fixed, so I double-checked, but it definitely is. Our latest Processes conformance test is now integrated and this failure can be tested directly from https://maps.gnosis.earth/ogcapi (Gerald's workaround is needed -- sorry for taking so long to provide this)

ghobona commented 1 year ago

Gerald's workaround of the ETS is out of date. Please use the ETS provided by the master branch of this repo.

jerstlouis commented 1 year ago

@ghobona With the latest from master, Gerald's workaround is no longer necessary. However, this same issue persists on test Process Success and test Process:

java.lang.AssertionError: body.outputs.schema: Field '$ref' is required. (code: 1026) From: body.<allOf>.outputs.<additionalProperties>.<outputDescription.yaml>.<allOf>.schema.<schema.yaml>.<oneOf>.<reference.yaml>.<required> body.outputs.schema.allOf.1: More than 1 schema is valid. (code: 1023) From: body.<allOf>.outputs.<additionalProperties>.<outputDescription.yaml>.<allOf>.schema.<schema.yaml>.<oneOf>.allOf.1.<items>.<oneOf> body.outputs.schema: Field '$ref' is required. (code: 1026) From: body.<allOf>.outputs.<additionalProperties>.<outputDescription.yaml>.<allOf>.schema.<schema.yaml>.<oneOf>.<reference.yaml>.<required> body.outputs.schema.allOf.1: More than 1 schema is valid. (code: 1023) From: body.<allOf>.outputs.<additionalProperties>.<outputDescription.yaml>.<allOf>.schema.<schema.yaml>.<oneOf>.allOf.1.<items>.<oneOf> body.outputs.schema: Field '$ref' is required. (code: 1026) From: body.<allOf>.outputs.<additionalProperties>.<outputDescription.yaml>.<allOf>.schema.<schema.yaml>.<oneOf>.<reference.yaml>.<required> body.outputs.schema.allOf.1: More than 1 schema is valid. (code: 1023) From: body.<allOf>.outputs.<additionalProperties>.<outputDescription.yaml>.<allOf>.schema.<schema.yaml>.<oneOf>.allOf.1.<items>.<oneOf> body.inputs.schema: Field '$ref' is required. (code: 1026) From: body.<allOf>.inputs.<additionalProperties>.<inputDescription.yaml>.<allOf>.schema.<schema.yaml>.<oneOf>.<reference.yaml>.<required> body.inputs.schema.allOf.1: More than 1 schema is valid. (code: 1023) From: body.<allOf>.inputs.<additionalProperties>.<inputDescription.yaml>.<allOf>.schema.<schema.yaml>.<oneOf>.allOf.1.<items>.<oneOf> body.inputs.schema: Field '$ref' is required. (code: 1026) From: body.<allOf>.inputs.<additionalProperties>.<inputDescription.yaml>.<allOf>.schema.<schema.yaml>.<oneOf>.<reference.yaml>.<required> body.inputs.schema.allOf.1: More than 1 schema is valid. (code: 1023) From: body.<allOf>.inputs.<additionalProperties>.<inputDescription.yaml>.<allOf>.schema.<schema.yaml>.<oneOf>.allOf.1.<items>.<oneOf> body.inputs.schema: Field '$ref' is required. (code: 1026) From: body.<allOf>.inputs.<additionalProperties>.<inputDescription.yaml>.<allOf>.schema.<schema.yaml>.<oneOf>.<reference.yaml>.<required> body.inputs.schema.allOf.1: More than 1 schema is valid. (code: 1023) From: body.<allOf>.inputs.<additionalProperties>.<inputDescription.yaml>.<allOf>.schema.<schema.yaml>.<oneOf>.allOf.1.<items>.<oneOf> expected [true] but found [false]
java.lang.AssertionError: body.outputs.schema: Field '$ref' is required. (code: 1026) From: body.<allOf>.outputs.<additionalProperties>.<outputDescription.yaml>.<allOf>.schema.<schema.yaml>.<oneOf>.<reference.yaml>.<required> body.outputs.schema.allOf.1: More than 1 schema is valid. (code: 1023) From: body.<allOf>.outputs.<additionalProperties>.<outputDescription.yaml>.<allOf>.schema.<schema.yaml>.<oneOf>.allOf.1.<items>.<oneOf> body.outputs.schema: Field '$ref' is required. (code: 1026) From: body.<allOf>.outputs.<additionalProperties>.<outputDescription.yaml>.<allOf>.schema.<schema.yaml>.<oneOf>.<reference.yaml>.<required> body.outputs.schema.allOf.1: More than 1 schema is valid. (code: 1023) From: body.<allOf>.outputs.<additionalProperties>.<outputDescription.yaml>.<allOf>.schema.<schema.yaml>.<oneOf>.allOf.1.<items>.<oneOf> body.outputs.schema: Field '$ref' is required. (code: 1026) From: body.<allOf>.outputs.<additionalProperties>.<outputDescription.yaml>.<allOf>.schema.<schema.yaml>.<oneOf>.<reference.yaml>.<required> body.outputs.schema.allOf.1: More than 1 schema is valid. (code: 1023) From: body.<allOf>.outputs.<additionalProperties>.<outputDescription.yaml>.<allOf>.schema.<schema.yaml>.<oneOf>.allOf.1.<items>.<oneOf> body.inputs.schema: Field '$ref' is required. (code: 1026) From: body.<allOf>.inputs.<additionalProperties>.<inputDescription.yaml>.<allOf>.schema.<schema.yaml>.<oneOf>.<reference.yaml>.<required> body.inputs.schema.allOf.1: More than 1 schema is valid. (code: 1023) From: body.<allOf>.inputs.<additionalProperties>.<inputDescription.yaml>.<allOf>.schema.<schema.yaml>.<oneOf>.allOf.1.<items>.<oneOf> body.inputs.schema: Field '$ref' is required. (code: 1026) From: body.<allOf>.inputs.<additionalProperties>.<inputDescription.yaml>.<allOf>.schema.<schema.yaml>.<oneOf>.<reference.yaml>.<required> body.inputs.schema.allOf.1: More than 1 schema is valid. (code: 1023) From: body.<allOf>.inputs.<additionalProperties>.<inputDescription.yaml>.<allOf>.schema.<schema.yaml>.<oneOf>.allOf.1.<items>.<oneOf> body.inputs.schema: Field '$ref' is required. (code: 1026) From: body.<allOf>.inputs.<additionalProperties>.<inputDescription.yaml>.<allOf>.schema.<schema.yaml>.<oneOf>.<reference.yaml>.<required> body.inputs.schema.allOf.1: More than 1 schema is valid. (code: 1023) From: body.<allOf>.inputs.<additionalProperties>.<inputDescription.yaml>.<allOf>.schema.<schema.yaml>.<oneOf>.allOf.1.<items>.<oneOf> expected [true] but found [false]

One thing I just noticed is that "More than 1 schema is valid" message. I wonder if this is another case of a oneOf that should rather be an anyOf? That bit us recently in the OGC API - Tiles schemas.

jerstlouis commented 1 year ago

It seems these particular issues were caused by the external references to JSON Schema for feature collections and geometry inputs in the Echo process description:

    "featureCollectionInput": {
      "title": "Feature Collection Input Example.",
      "description": "This is an example of an input that is a feature collection that can be encoded in GeoJSON.",
      "schema": {
         "allOf": [
           {
             "format": "geojson-feature-collection"
           },
           {
             "$ref": "http://geojson.org/schema/FeatureCollection.json"
           }
        ]
      }
    }

Removing these from the process description gets rid of the errors.

This should not cause these issues.

bpross-52n commented 1 year ago

@jerstlouis Could you try to add the external references again and test again? There were some updates to the test suite that might have solved the issue.

dstenger commented 9 months ago

@jerstlouis We will close this PR on the 15th of February if there is no objection.