Search code examples
asp.net-coreswaggerhl7-fhir

Swagger Resolver error, Could not resolve reference:


I'm setting up a new asp.net core 3.1 project, exposing a RESTful API in FHIR format, which is a format extending JSON.
I'd like to make a simple UI available with SwaggerUI. That's where I've got an issue that errors are being shown.

When launching SwaggerUI, there are no errors. When expanding the single available POST request, these errors show up: enter image description here

Full list:

Resolver error at paths./Bundle/$analyze.post.requestBody.content.text/json.schema.properties.parameter.items.properties.children.items.properties.children.items.$ref
Could not resolve reference:
Resolver error at paths./Bundle/$analyze.post.requestBody.content.text/json.schema.properties.parameter.items.properties.extension.items.properties.extension.items.$ref
Could not resolve reference:
Resolver error at paths./Bundle/$analyze.post.requestBody.content.text/json.schema.properties.idElement.properties.extension.items.properties.extension.items.$ref
Could not resolve reference:
Resolver error at paths./Bundle/$analyze.post.requestBody.content.text/json.schema.properties.idElement.properties.children.items.properties.children.items.$ref
Could not resolve reference:
Resolver error at paths./Bundle/$analyze.post.requestBody.content.text/json.schema.properties.meta.properties.children.items.properties.children.items.$ref
Could not resolve reference:
Resolver error at paths./Bundle/$analyze.post.requestBody.content.text/json.schema.properties.meta.properties.extension.items.properties.extension.items.$ref
Could not resolve reference:
Resolver error at paths./Bundle/$analyze.post.requestBody.content.text/json.schema.properties.implicitRulesElement.properties.extension.items.properties.extension.items.$ref
Could not resolve reference:
Resolver error at paths./Bundle/$analyze.post.requestBody.content.text/json.schema.properties.implicitRulesElement.properties.children.items.properties.children.items.$ref
Could not resolve reference:
Resolver error at paths./Bundle/$analyze.post.requestBody.content.text/json.schema.properties.languageElement.properties.extension.items.properties.extension.items.$ref
Could not resolve reference:
Resolver error at paths./Bundle/$analyze.post.requestBody.content.text/json.schema.properties.languageElement.properties.children.items.properties.children.items.$ref
Could not resolve reference:
Resolver error at paths./Bundle/$analyze.post.responses.200.content.text/plain.schema.properties.children.items.properties.children.items.$ref
Could not resolve reference:
Resolver error at paths./Bundle/$analyze.post.responses.200.content.application/json.schema.properties.identifier.properties.assigner.properties.identifier.$ref
Could not resolve reference:
Resolver error at paths./Bundle/$analyze.post.responses.200.content.application/json.schema.properties.identifier.properties.children.items.properties.children.items.$ref
Could not resolve reference:
Resolver error at paths./Bundle/$analyze.post.responses.200.content.application/json.schema.properties.identifier.properties.extension.items.properties.extension.items.$ref
Could not resolve reference:
Resolver error at paths./Bundle/$analyze.post.responses.200.content.application/json.schema.properties.typeElement.properties.extension.items.properties.extension.items.$ref
Could not resolve reference:
Resolver error at paths./Bundle/$analyze.post.responses.200.content.application/json.schema.properties.typeElement.properties.children.items.properties.children.items.$ref
Could not resolve reference:
Resolver error at paths./Bundle/$analyze.post.responses.200.content.application/json.schema.properties.timestampElement.properties.extension.items.properties.extension.items.$ref
Could not resolve reference:
Resolver error at paths./Bundle/$analyze.post.responses.200.content.application/json.schema.properties.timestampElement.properties.children.items.properties.children.items.$ref
Could not resolve reference:
Resolver error at paths./Bundle/$analyze.post.responses.200.content.application/json.schema.properties.totalElement.properties.extension.items.properties.extension.items.$ref
Could not resolve reference:
Resolver error at paths./Bundle/$analyze.post.responses.200.content.application/json.schema.properties.totalElement.properties.children.items.properties.children.items.$ref
Could not resolve reference:
Resolver error at paths./Bundle/$analyze.post.responses.200.content.application/json.schema.properties.link.items.properties.children.items.properties.children.items.$ref
Could not resolve reference:
Resolver error at paths./Bundle/$analyze.post.responses.200.content.application/json.schema.properties.link.items.properties.modifierExtension.items.properties.extension.items.$ref
Could not resolve reference:
Resolver error at paths./Bundle/$analyze.post.responses.200.content.application/json.schema.properties.link.items.properties.extension.items.properties.extension.items.$ref
Could not resolve reference:
Resolver error at paths./Bundle/$analyze.post.responses.200.content.application/json.schema.properties.entry.items.properties.children.items.properties.children.items.$ref
Could not resolve reference:
Resolver error at paths./Bundle/$analyze.post.responses.200.content.application/json.schema.properties.entry.items.properties.modifierExtension.items.properties.extension.items.$ref
Could not resolve reference:
Resolver error at paths./Bundle/$analyze.post.responses.200.content.application/json.schema.properties.entry.items.properties.extension.items.properties.extension.items.$ref
Could not resolve reference:
Resolver error at paths./Bundle/$analyze.post.responses.200.content.application/json.schema.properties.signature.properties.who.properties.identifier.$ref
Could not resolve reference:
Resolver error at paths./Bundle/$analyze.post.responses.200.content.application/json.schema.properties.signature.properties.onBehalfOf.properties.identifier.$ref
Could not resolve reference:
Resolver error at paths./Bundle/$analyze.post.responses.200.content.application/json.schema.properties.signature.properties.children.items.properties.children.items.$ref
Could not resolve reference:
Resolver error at paths./Bundle/$analyze.post.responses.200.content.application/json.schema.properties.signature.properties.extension.items.properties.extension.items.$ref
Could not resolve reference:
Resolver error at paths./Bundle/$analyze.post.requestBody.content.application/json.schema.properties.parameter.items.properties.nameElement.properties.extension.items.properties.children.items.properties.children.items.$ref
Could not resolve reference:
Resolver error at paths./Bundle/$analyze.post.requestBody.content.application/json.schema.properties.parameter.items.properties.nameElement.properties.extension.items.properties.extension.items.$ref
Could not resolve reference:
Resolver error at paths./Bundle/$analyze.post.requestBody.content.application/json.schema.properties.parameter.items.properties.nameElement.properties.children.items.properties.children.items.$ref
Could not resolve reference:
Resolver error at paths./Bundle/$analyze.post.requestBody.content.application/json.schema.properties.parameter.items.properties.value.properties.children.items.properties.children.items.$ref
Could not resolve reference:
Resolver error at paths./Bundle/$analyze.post.requestBody.content.application/json.schema.properties.parameter.items.properties.value.properties.extension.items.properties.extension.items.$ref
Could not resolve reference:
Resolver error at paths./Bundle/$analyze.post.requestBody.content.application/json.schema.properties.parameter.items.properties.resource.properties.children.items.properties.children.items.$ref
Could not resolve reference:
Resolver error at paths./Bundle/$analyze.post.requestBody.content.application/json.schema.properties.parameter.items.properties.resource.properties.idElement.properties.extension.items.properties.extension.items.$ref
Could not resolve reference:
Resolver error at paths./Bundle/$analyze.post.requestBody.content.application/json.schema.properties.parameter.items.properties.part.items.$ref
Could not resolve reference:
Resolver error at paths./Bundle/$analyze.post.requestBody.content.application/json.schema.properties.parameter.items.properties.modifierExtension.items.properties.children.items.properties.children.items.$ref
Could not resolve reference:
Resolver error at paths./Bundle/$analyze.post.requestBody.content.application/json.schema.properties.children.items.properties.children.items.$ref
Could not resolve reference:
Resolver error at paths./Bundle/$analyze.post.requestBody.content.application/json.schema.properties.meta.properties.profileElement.items.properties.extension.items.properties.extension.items.$ref
Could not resolve reference:
Resolver error at paths./Bundle/$analyze.post.requestBody.content.application/json.schema.properties.meta.properties.profileElement.items.properties.children.items.properties.children.items.$ref
Could not resolve reference:
Resolver error at paths./Bundle/$analyze.post.requestBody.content.application/json.schema.properties.meta.properties.security.items.properties.children.items.properties.children.items.$ref
Could not resolve reference:
Resolver error at paths./Bundle/$analyze.post.requestBody.content.application/json.schema.properties.meta.properties.security.items.properties.extension.items.properties.extension.items.$ref
Could not resolve reference:
Resolver error at paths./Bundle/$analyze.post.requestBody.content.text/json.schema.properties.parameter.items.properties.modifierExtension.items.properties.extension.items.$ref
Could not resolve reference:
Resolver error at paths./Bundle/$analyze.post.requestBody.content.text/json.schema.properties.meta.properties.security.items.properties.userSelectedElement.properties.extension.items.properties.extension.items.$ref
Could not resolve reference:
Resolver error at paths./Bundle/$analyze.post.requestBody.content.text/json.schema.properties.meta.properties.security.items.properties.userSelectedElement.properties.children.items.properties.children.items.$ref
Could not resolve reference:
Resolver error at paths./Bundle/$analyze.post.responses.200.content.text/plain.schema.properties.identifier.properties.useElement.properties.extension.items.properties.extension.items.$ref
Could not resolve reference:
Resolver error at paths./Bundle/$analyze.post.responses.200.content.text/plain.schema.properties.identifier.properties.useElement.properties.children.items.properties.children.items.$ref
Could not resolve reference:
Resolver error at paths./Bundle/$analyze.post.responses.200.content.text/plain.schema.properties.identifier.properties.type.properties.children.items.properties.children.items.$ref
Could not resolve reference:
Resolver error at paths./Bundle/$analyze.post.responses.200.content.text/plain.schema.properties.identifier.properties.type.properties.extension.items.properties.extension.items.$ref
Could not resolve reference:
Resolver error at paths./Bundle/$analyze.post.responses.200.content.text/plain.schema.properties.identifier.properties.period.properties.children.items.properties.children.items.$ref
Could not resolve reference:
Resolver error at paths./Bundle/$analyze.post.responses.200.content.text/plain.schema.properties.identifier.properties.period.properties.extension.items.properties.extension.items.$ref
Could not resolve reference:
Resolver error at paths./Bundle/$analyze.post.responses.200.content.text/plain.schema.properties.identifier.properties.assigner.properties.identifier.$ref
Could not resolve reference:
Resolver error at paths./Bundle/$analyze.post.responses.200.content.text/plain.schema.properties.identifier.properties.assigner.properties.children.items.properties.children.items.$ref
Could not resolve reference:
Resolver error at paths./Bundle/$analyze.post.responses.200.content.text/plain.schema.properties.identifier.properties.assigner.properties.extension.items.properties.extension.items.$ref
Could not resolve reference:
Resolver error at paths./Bundle/$analyze.post.responses.200.content.text/plain.schema.properties.entry.items.properties.search.properties.children.items.properties.children.items.$ref
Could not resolve reference:
Resolver error at paths./Bundle/$analyze.post.responses.200.content.text/plain.schema.properties.entry.items.properties.search.properties.modifierExtension.items.properties.extension.items.$ref
Could not resolve reference:
Resolver error at paths./Bundle/$analyze.post.responses.200.content.text/plain.schema.properties.entry.items.properties.search.properties.extension.items.properties.extension.items.$ref
Could not resolve reference:
Resolver error at paths./Bundle/$analyze.post.responses.200.content.text/plain.schema.properties.entry.items.properties.request.properties.children.items.properties.children.items.$ref
Could not resolve reference:
Resolver error at paths./Bundle/$analyze.post.responses.200.content.text/plain.schema.properties.entry.items.properties.request.properties.modifierExtension.items.properties.extension.items.$ref
Could not resolve reference:
Resolver error at paths./Bundle/$analyze.post.responses.200.content.text/plain.schema.properties.entry.items.properties.request.properties.extension.items.properties.extension.items.$ref
Could not resolve reference:
Resolver error at paths./Bundle/$analyze.post.responses.200.content.text/plain.schema.properties.entry.items.properties.response.properties.children.items.properties.children.items.$ref
Could not resolve reference:
Resolver error at paths./Bundle/$analyze.post.responses.200.content.text/plain.schema.properties.entry.items.properties.response.properties.modifierExtension.items.properties.extension.items.$ref
Could not resolve reference:
Resolver error at paths./Bundle/$analyze.post.responses.200.content.text/plain.schema.properties.entry.items.properties.response.properties.extension.items.properties.extension.items.$ref
Could not resolve reference:
Resolver error at paths./Bundle/$analyze.post.responses.200.content.text/plain.schema.properties.signature.properties.dataElement.properties.extension.items.properties.extension.items.$ref
Could not resolve reference:
Resolver error at paths./Bundle/$analyze.post.responses.200.content.text/plain.schema.properties.signature.properties.dataElement.properties.children.items.properties.children.items.$ref
Could not resolve reference:
Resolver error at paths./Bundle/$analyze.post.responses.200.content.application/json.schema.properties.identifier.properties.period.properties.startElement.properties.extension.items.properties.extension.items.$ref
Could not resolve reference:
Resolver error at paths./Bundle/$analyze.post.responses.200.content.application/json.schema.properties.identifier.properties.period.properties.startElement.properties.children.items.properties.children.items.$ref
Could not resolve reference:
Resolver error at paths./Bundle/$analyze.post.responses.200.content.application/json.schema.properties.entry.items.properties.search.properties.modeElement.properties.extension.items.properties.extension.items.$ref
Could not resolve reference:
Resolver error at paths./Bundle/$analyze.post.responses.200.content.application/json.schema.properties.entry.items.properties.search.properties.modeElement.properties.children.items.properties.children.items.$ref
Could not resolve reference:
Resolver error at paths./Bundle/$analyze.post.responses.200.content.application/json.schema.properties.entry.items.properties.search.properties.scoreElement.properties.extension.items.properties.extension.items.$ref
Could not resolve reference:
Resolver error at paths./Bundle/$analyze.post.responses.200.content.application/json.schema.properties.entry.items.properties.search.properties.scoreElement.properties.children.items.properties.children.items.$ref
Could not resolve reference:
Resolver error at paths./Bundle/$analyze.post.responses.200.content.application/json.schema.properties.entry.items.properties.request.properties.methodElement.properties.extension.items.properties.extension.items.$ref
Could not resolve reference:
Resolver error at paths./Bundle/$analyze.post.responses.200.content.application/json.schema.properties.entry.items.properties.request.properties.methodElement.properties.children.items.properties.children.items.$ref
Could not resolve reference:

The controller method:

    [HttpPost("$analyze")]
    public async Task<ActionResult<Bundle>> Analyze([FromBody]Parameters parameters)
    {
        [...]
        return Ok();
    }

The input (Parameters) and output (Bundle) parameters are objects contained in Hl7.Fhir.R4 (nuget, source)

Following packages are being used:
enter image description here

swagger.json (truncated, as it was too long to be posted):

{
  "openapi": "3.0.1",
  "info": {
    "title": "Analyzer",
    "version": "v1"
  },
  "paths": {
    "/Bundle/$analyze": {
      "post": {
        "tags": [
          "Bundle"
        ],
        "parameters": [],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/Parameters"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/Parameters"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/Parameters"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/Bundle"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Bundle"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/Bundle"
                }
              }
            }
          }
        }
      }
    }
  },
  "components": {
    "schemas": {
      "ResourceType": {
        "enum": [
          "Account",
          "ActivityDefinition",
          "AdverseEvent",
          "AllergyIntolerance",
          "Appointment",
          "AppointmentResponse",
          "AuditEvent",
          "Basic",
          "Binary",
          "BiologicallyDerivedProduct",
          "BodyStructure",
          "Bundle",
          "CapabilityStatement",
          "CarePlan",
          "CareTeam",
          "CatalogEntry",
          "ChargeItem",
          "ChargeItemDefinition",
          "Claim",
          "ClaimResponse",
          "ClinicalImpression",
          "CodeSystem",
          "Communication",
          "CommunicationRequest",
          "CompartmentDefinition",
          "Composition",
          "ConceptMap",
          "Condition",
          "Consent",
          "Contract",
          "Coverage",
          "CoverageEligibilityRequest",
          "CoverageEligibilityResponse",
          "DetectedIssue",
          "Device",
          "DeviceDefinition",
          "DeviceMetric",
          "DeviceRequest",
          "DeviceUseStatement",
          "DiagnosticReport",
          "DocumentManifest",
          "DocumentReference",
          "DomainResource",
          "EffectEvidenceSynthesis",
          "Encounter",
          [...]
        ],
        "type": "string"
      },
      "ElementValue": {
        "type": "object"
      },
      "Base": {
        "type": "object",
        "properties": {
          "typeName": {
            "type": "string",
            "nullable": true,
            "readOnly": true
          },
          "children": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Base"
            },
            "nullable": true,
            "readOnly": true
          },
          "namedChildren": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ElementValue"
            },
            "nullable": true,
            "readOnly": true
          },
          "userData": {
            "type": "object",
            "additionalProperties": {
              "type": "object"
            },
            "nullable": true,
            "readOnly": true,
            "deprecated": true
          }
        }
      },
      "Element": {
        "type": "object",
        "properties": {
          "typeName": {
            "type": "string",
            "nullable": true,
            "readOnly": true
          },
          "children": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Base"
            },
            "nullable": true,
            "readOnly": true
          },
          "namedChildren": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ElementValue"
            },
            "nullable": true,
            "readOnly": true
          },
          "elementId": {
            "type": "string",
            "nullable": true
          },
          "extension": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Extension"
            },
            "nullable": true
          },
          "userData": {
            "type": "object",
            "additionalProperties": {
              "type": "object"
            },
            "nullable": true,
            "readOnly": true,
            "deprecated": true
          }
        }
      },
      "Extension": {
        "type": "object",
        "properties": {
          "typeName": {
            "type": "string",
            "nullable": true,
            "readOnly": true
          },
          "url": {
            "type": "string",
            "nullable": true
          },
          "value": {
            "$ref": "#/components/schemas/Element"
          },
          "children": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Base"
            },
            "nullable": true,
            "readOnly": true
          },
          "namedChildren": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ElementValue"
            },
            "nullable": true,
            "readOnly": true
          },
          "elementId": {
            "type": "string",
            "nullable": true
          },
          "extension": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Extension"
            },
            "nullable": true
          },
          "userData": {
            "type": "object",
            "additionalProperties": {
              "type": "object"
            },
            "nullable": true,
            "readOnly": true,
            "deprecated": true
          }
        }
      },
      [...]

When testing the function, everything works fine.

What is SwaggerUI trying to tell me and how can I fix these errors? Any hint would be appreciated


Solution

  • This issue resolved itself with the latest swashbuckle version