Open timonback opened 9 months ago
Welcome to AsyncAPI. Thanks a lot for reporting your first issue. Please check out our contributors guide and the instructions about a basic recommended setup useful for opening a pull request.
Keep in mind there are also other channels you can use to interact with AsyncAPI community. For more details check out this issue.
Please have a look at the multi format schema object: https://www.asyncapi.com/docs/reference/specification/v3.0.0#multiFormatSchemaObject
This makes your api a little bit more valid. But xml is still no valid and official supported schema type. There are a lot of discussion why not. But in short, xml knows attributes and childs. This can not be handled by tooling.
Thank you @GreenRover for the reference link.
Specifying a complete schema for xml is probably a bit overkill for us, but we will discuss.
(Based on a java class, we only want to generate an xml example
)
But in short, xml knows attributes and childs
So true, we came across the same issue with the xml attributes.
I tested a bit more, and changing the SchemaObject
s field type
value to string
(instead of object
) does the trick so that AsyncApi Studio does validate (through asyncapi/parser) positively.
"io.github.springwolf.examples.kafka.dtos.XmlPayloadDto": {
"type": "string",
"properties": {
"someEnum": {
"type": "string",
"enum": [
"FOO1",
"FOO2",
"FOO3"
]
},
"someLong": {
"type": "integer",
"format": "int64"
},
"someString": {
"type": "string"
}
},
"examples": [
"<io.github.springwolf.examples.kafka.dtos.XmlPayloadDto><someEnum>FOO1</someEnum><someLong>0</someLong><someString>string</someString></io.github.springwolf.examples.kafka.dtos.XmlPayloadDto>"
]
}
Can you please provide the full schema. Because what you provide looks more like a bug in studio.
Sure, here it is:
{
"asyncapi": "3.0.0",
"info": {
"title": "Springwolf example project - Kafka",
"version": "1.0.0",
"description": "Springwolf example project to demonstrate springwolfs abilities, including **markdown** support for descriptions.",
"contact": {
"name": "springwolf",
"url": "https://github.com/springwolf/springwolf-core",
"email": "example@example.com"
},
"license": {
"name": "Apache License 2.0"
},
"x-generator": "springwolf"
},
"defaultContentType": "application/json",
"servers": {
"kafka": {
"host": "kafka:29092",
"protocol": "kafka"
}
},
"channels": {
"xml-topic": {
"messages": {
"io.github.springwolf.examples.kafka.dtos.XmlPayloadDto": {
"$ref": "#/components/messages/io.github.springwolf.examples.kafka.dtos.XmlPayloadDto"
}
}
}
},
"components": {
"schemas": {
"HeadersNotDocumented": {
"type": "object",
"properties": { },
"examples": [
{ }
],
"x-json-schema": {
"$schema": "https://json-schema.org/draft-04/schema#",
"type": "object"
}
},
"io.github.springwolf.examples.kafka.dtos.XmlPayloadDto": {
"type": "object",
"properties": {
"someEnum": {
"type": "string",
"enum": [
"FOO1",
"FOO2",
"FOO3"
]
},
"someLong": {
"type": "integer",
"format": "int64"
},
"someString": {
"type": "string"
}
},
"examples": [
"<io.github.springwolf.examples.kafka.dtos.XmlPayloadDto><someEnum>FOO1</someEnum><someLong>0</someLong><someString>string</someString></io.github.springwolf.examples.kafka.dtos.XmlPayloadDto>"
],
"x-json-schema": {
"$schema": "https://json-schema.org/draft-04/schema#",
"properties": {
"someEnum": {
"enum": [
"FOO1",
"FOO2",
"FOO3"
],
"type": "string"
},
"someLong": {
"format": "int64",
"type": "integer"
},
"someString": {
"type": "string"
}
},
"type": "object"
}
}
},
"messages": {
"io.github.springwolf.examples.kafka.dtos.XmlPayloadDto": {
"headers": {
"$ref": "#/components/schemas/HeadersNotDocumented"
},
"payload": {
"schemaFormat": "application/vnd.aai.asyncapi+json;version=3.0.0",
"schema": {
"$ref": "#/components/schemas/io.github.springwolf.examples.kafka.dtos.XmlPayloadDto"
}
},
"contentType": "text/xml",
"name": "io.github.springwolf.examples.kafka.dtos.XmlPayloadDto",
"title": "XmlPayloadDto",
"bindings": {
"kafka": {
"bindingVersion": "0.4.0"
}
}
}
}
},
"operations": {
"xml-topic_receive_receiveExamplePayload": {
"action": "receive",
"channel": {
"$ref": "#/channels/xml-topic"
},
"title": "xml-topic_receive",
"description": "Showcases a xml based message",
"bindings": {
"kafka": {
"bindingVersion": "0.4.0"
}
},
"messages": [
{
"$ref": "#/channels/xml-topic/messages/io.github.springwolf.examples.kafka.dtos.XmlPayloadDto"
}
]
}
}
}
Any update on this? Should I duplicate the issue in studio?
Update: the related PR has been merged in parser-js: https://github.com/asyncapi/parser-js/pull/1007 EDIT: actually, it was only updated, not merged yet
This issue has been automatically marked as stale because it has not had recent activity :sleeping:
It will be closed in 120 days if no further activity occurs. To unstale this issue, add a comment with a detailed explanation.
There can be many reasons why some specific issue has no activity. The most probable cause is lack of time, not lack of interest. AsyncAPI Initiative is a Linux Foundation project not owned by a single for-profit company. It is a community-driven initiative ruled under open governance model.
Let us figure out together how to push this issue forward. Connect with us through one of many communication channels we established here.
Thank you for your patience :heart:
Describe the bug
Hi, we are implementing the spec to create a
Message Example Object
for xml. The fieldpayload
assumes aMap[string, any]
, which only works for json.How is i.e. an xml payload represented?
To Reproduce
See sample document
Expected behavior
We assume that a plain
string
(orany
) should also be allowed.Sample document