shipengine-openapi icon indicating copy to clipboard operation
shipengine-openapi copied to clipboard

OpenAPI Errors with OpenAPI Generator

Open gf3 opened this issue 2 years ago • 0 comments

I'm trying to generate a Go client with openapi-generator from the provided Open API JSON/YAML however the generator fails with 54 errors and 263 warnings. openapi-generator does have an option to skip validation but unfortunately these errors persist with generation.

Using the latest openapi.json in this repository, this is the command I'm using to attempt generating a client in Go:

openapi-generator generate -i shipengine-openapi/openapi.json -g go -o ./client

Output

Exception in thread "main" org.openapitools.codegen.SpecValidationException: There were issues with the specification. The option can be disabled via validateSpec (Maven/Gradle) or --skip-validate-spec (CLI).
 | Error count: 54, Warning count: 263
Errors:
	-attribute paths.'/v1/relay_points'(get).parameters.[city_locality].minLength is unexpected
	-attribute paths.'/v1/shipments/{shipment_id}'(put).responses.200.content.'application/json'.schema.properties is not of type `object`
	-attribute paths.'/v1/shipments/recognize'(put).requestBody.content.'application/json'.schema.properties is not of type `object`
	-attribute paths.'/v1/labels/shipment/{shipment_id}'(post).responses.200.content.'application/json'.schema.properties is not of type `object`
	-attribute components.schemas.shipment.properties is not of type `object`
	-attribute paths.'/v1/shipments'(post).requestBody.content.'application/json'.schema.properties is not of type `object`
	-attribute components.schemas.get_shipment_by_id_response_body.properties is not of type `object`
	-attribute paths.'/v1/labels/{label_id}'(get).responses.200.content.'application/json'.schema.properties is not of type `object`
	-attribute paths.'/v1/shipments/external_shipment_id/{external_shipment_id}'(get).responses.200.content.'application/json'.schema.properties is not of type `object`
	-attribute paths.'/v1/rates'(post).requestBody.content.'application/json'.schema.properties is not of type `object`
	-attribute components.schemas.create_label_response_body.properties is not of type `object`
	-attribute paths.'/v1/shipments'(get).responses.200.content.'application/json'.schema.properties is not of type `object`
	-attribute components.schemas.address_validating_shipment.properties is not of type `object`
	-attribute components.schemas.parse_shipment_response_body.properties is not of type `object`
	-attribute paths.'/v1/labels/{label_id}/return'(post).responses.200.content.'application/json'.schema.properties is not of type `object`
	-attribute paths.'/v1/shipments'(post).responses.200.content.'application/json'.schema.properties is not of type `object`
	-attribute components.schemas.calculate_rates_response_body.properties is not of type `object`
	-attribute components.schemas.label.properties is not of type `object`
	-attribute paths.'/v1/labels/rates/{rate_id}'(post).responses.200.content.'application/json'.schema.properties is not of type `object`
	-attribute paths.'/v1/labels'(post).responses.200.content.'application/json'.schema.properties is not of type `object`
	-attribute paths.'/v1/labels'(get).responses.200.content.'application/json'.schema.properties is not of type `object`
	-attribute components.schemas.create_label_request_body.properties is not of type `object`
	-attribute components.schemas.create_shipments_request_body.properties is not of type `object`
	-attribute components.schemas.get_label_by_id_response_body.properties is not of type `object`
	-attribute paths.'/v1/shipments/recognize'(put).responses.200.content.'application/json'.schema.properties is not of type `object`
	-attribute components.schemas.get_shipment_by_external_id_response_body.properties is not of type `object`
	-attribute components.schemas.package.properties is not of type `object`
	-attribute components.schemas.Schema name manifests requests doesn't adhere to regular expression ^[a-zA-Z0-9\.\-_]+$
	-attribute paths.'/v1/labels'(post).requestBody.content.'application/json'.schema.properties is not of type `object`
	-attribute components.schemas.Schema name manifest request doesn't adhere to regular expression ^[a-zA-Z0-9\.\-_]+$
	-attribute components.schemas.compare_bulk_rates_request_body.properties is not of type `object`
	-attribute components.schemas.create_shipments_response_body.properties is not of type `object`
	-attribute paths.'/v1/relay_points'(get).parameters.[service_code].minLength is unexpected
	-attribute components.schemas.list_labels_response_body.properties is not of type `object`
	-attribute paths.'/v1/relay_points'(get).parameters.[postal_code].minLength is unexpected
	-attribute components.schemas.create_label_from_rate_response_body.properties is not of type `object`
	-attribute paths.'/v1/relay_points'(get).parameters.[country_code].minLength is unexpected
	-attribute components.schemas.update_shipment_request_body.properties is not of type `object`
	-attribute components.schemas.calculate_rates_request_body.properties is not of type `object`
	-attribute components.schemas.shipment_request.properties is not of type `object`
	-attribute components.schemas.get_label_by_external_shipment_id_response_body.properties is not of type `object`
	-attribute paths.'/v1/shipments/{shipment_id}'(get).responses.200.content.'application/json'.schema.properties is not of type `object`
	-attribute components.schemas.create_and_validate_shipment.properties is not of type `object`
	-attribute paths.'/v1/rates'(post).responses.200.content.'application/json'.schema.properties is not of type `object`
	-attribute paths.'/v1/rates/bulk'(post).requestBody.content.'application/json'.schema.properties is not of type `object`
	-attribute components.schemas.partial_shipment.properties is not of type `object`
	-attribute components.schemas.rate_request_by_shipments.properties is not of type `object`
	-attribute paths.'/v1/labels/external_shipment_id/{external_shipment_id}'(get).responses.200.content.'application/json'.schema.properties is not of type `object`
	-attribute components.schemas.create_label_from_shipment_response_body.properties is not of type `object`
	-attribute components.schemas.list_shipments_response_body.properties is not of type `object`
	-attribute components.schemas.parse_shipment_request_body.properties is not of type `object`
	-attribute paths.'/v1/shipments/{shipment_id}'(put).requestBody.content.'application/json'.schema.properties is not of type `object`
	-attribute components.schemas.create_return_label_response_body.properties is not of type `object`
	-attribute components.schemas.update_shipment_response_body.properties is not of type `object`
Warnings:
	-attribute paths.'/v1/relay_points'(get).parameters.[city_locality].minLength is unexpected
	-attribute paths.'/v1/shipments/{shipment_id}'(put).responses.200.content.'application/json'.schema.properties is not of type `object`
	-attribute paths.'/v1/shipments/recognize'(put).requestBody.content.'application/json'.schema.properties is not of type `object`
	-attribute paths.'/v1/labels/shipment/{shipment_id}'(post).responses.200.content.'application/json'.schema.properties is not of type `object`
	-attribute components.schemas.shipment.properties is not of type `object`
	-attribute paths.'/v1/shipments'(post).requestBody.content.'application/json'.schema.properties is not of type `object`
	-attribute components.schemas.get_shipment_by_id_response_body.properties is not of type `object`
	-attribute paths.'/v1/labels/{label_id}'(get).responses.200.content.'application/json'.schema.properties is not of type `object`
	-attribute paths.'/v1/shipments/external_shipment_id/{external_shipment_id}'(get).responses.200.content.'application/json'.schema.properties is not of type `object`
	-attribute paths.'/v1/rates'(post).requestBody.content.'application/json'.schema.properties is not of type `object`
	-attribute components.schemas.create_label_response_body.properties is not of type `object`
	-attribute paths.'/v1/shipments'(get).responses.200.content.'application/json'.schema.properties is not of type `object`
	-attribute components.schemas.address_validating_shipment.properties is not of type `object`
	-attribute components.schemas.parse_shipment_response_body.properties is not of type `object`
	-attribute paths.'/v1/labels/{label_id}/return'(post).responses.200.content.'application/json'.schema.properties is not of type `object`
	-attribute paths.'/v1/shipments'(post).responses.200.content.'application/json'.schema.properties is not of type `object`
	-attribute components.schemas.calculate_rates_response_body.properties is not of type `object`
	-attribute components.schemas.label.properties is not of type `object`
	-attribute paths.'/v1/labels/rates/{rate_id}'(post).responses.200.content.'application/json'.schema.properties is not of type `object`
	-attribute paths.'/v1/labels'(post).responses.200.content.'application/json'.schema.properties is not of type `object`
	-attribute paths.'/v1/labels'(get).responses.200.content.'application/json'.schema.properties is not of type `object`
	-attribute components.schemas.create_label_request_body.properties is not of type `object`
	-attribute components.schemas.create_shipments_request_body.properties is not of type `object`
	-attribute components.schemas.get_label_by_id_response_body.properties is not of type `object`
	-attribute paths.'/v1/shipments/recognize'(put).responses.200.content.'application/json'.schema.properties is not of type `object`
	-attribute components.schemas.get_shipment_by_external_id_response_body.properties is not of type `object`
	-attribute components.schemas.package.properties is not of type `object`
	-attribute components.schemas.Schema name manifests requests doesn't adhere to regular expression ^[a-zA-Z0-9\.\-_]+$
	-attribute paths.'/v1/labels'(post).requestBody.content.'application/json'.schema.properties is not of type `object`
	-attribute components.schemas.Schema name manifest request doesn't adhere to regular expression ^[a-zA-Z0-9\.\-_]+$
	-attribute components.schemas.compare_bulk_rates_request_body.properties is not of type `object`
	-attribute components.schemas.create_shipments_response_body.properties is not of type `object`
	-attribute paths.'/v1/relay_points'(get).parameters.[service_code].minLength is unexpected
	-attribute components.schemas.list_labels_response_body.properties is not of type `object`
	-attribute paths.'/v1/relay_points'(get).parameters.[postal_code].minLength is unexpected
	-attribute components.schemas.create_label_from_rate_response_body.properties is not of type `object`
	-attribute paths.'/v1/relay_points'(get).parameters.[country_code].minLength is unexpected
	-attribute components.schemas.update_shipment_request_body.properties is not of type `object`
	-attribute components.schemas.calculate_rates_request_body.properties is not of type `object`
	-attribute components.schemas.shipment_request.properties is not of type `object`
	-attribute components.schemas.get_label_by_external_shipment_id_response_body.properties is not of type `object`
	-attribute paths.'/v1/shipments/{shipment_id}'(get).responses.200.content.'application/json'.schema.properties is not of type `object`
	-attribute components.schemas.create_and_validate_shipment.properties is not of type `object`
	-attribute paths.'/v1/rates'(post).responses.200.content.'application/json'.schema.properties is not of type `object`
	-attribute paths.'/v1/rates/bulk'(post).requestBody.content.'application/json'.schema.properties is not of type `object`
	-attribute components.schemas.partial_shipment.properties is not of type `object`
	-attribute components.schemas.rate_request_by_shipments.properties is not of type `object`
	-attribute paths.'/v1/labels/external_shipment_id/{external_shipment_id}'(get).responses.200.content.'application/json'.schema.properties is not of type `object`
	-attribute components.schemas.create_label_from_shipment_response_body.properties is not of type `object`
	-attribute components.schemas.list_shipments_response_body.properties is not of type `object`
	-attribute components.schemas.parse_shipment_request_body.properties is not of type `object`
	-attribute paths.'/v1/shipments/{shipment_id}'(put).requestBody.content.'application/json'.schema.properties is not of type `object`
	-attribute components.schemas.create_return_label_response_body.properties is not of type `object`
	-attribute components.schemas.update_shipment_response_body.properties is not of type `object`

	at org.openapitools.codegen.config.CodegenConfigurator.toContext(CodegenConfigurator.java:556)
	at org.openapitools.codegen.config.CodegenConfigurator.toClientOptInput(CodegenConfigurator.java:583)
	at org.openapitools.codegen.cmd.Generate.execute(Generate.java:433)
	at org.openapitools.codegen.cmd.OpenApiGeneratorCommand.run(OpenApiGeneratorCommand.java:32)
	at org.openapitools.codegen.OpenAPIGenerator.main(OpenAPIGenerator.java:66)

gf3 avatar May 24 '22 20:05 gf3