asyncapi3-1.0.0.0: test/golden/examples/reference-examples-adeo-kafka-request-reply-asyncapi.yml.json
{"asyncapi":"3.1.0","info":{"title":"Adeo AsyncAPI Case Study","version":"%REPLACED_BY_MAVEN%","description":"This Adeo specification illustrates how ADEO uses AsyncAPI to document some of their exchanges.\n","contact":{"name":"AsyncAPI Community","email":"case-study@asyncapi.com"},"tags":[{"name":"costing","description":"Costing channels, used by Costing clients."}]},"servers":{"dev":{"host":"dev.url:9092","protocol":"kafka","description":"Kafka DEV cluster for `dev` and `sit` environments","security":[{"$ref":"#/components/securitySchemes/sasl-ssl"}],"bindings":{"kafka":{"schemaRegistryUrl":"https://schema-registry.prod.url/"}}},"production":{"host":"prod.url:9092","protocol":"kafka","description":"Kafka PRODUCTION cluster","security":[{"$ref":"#/components/securitySchemes/sasl-ssl"}],"bindings":{"kafka":{"schemaRegistryUrl":"https://schema-registry.prod.url/"}}},"staging":{"host":"staging.url:9092","protocol":"kafka","description":"Kafka STAGING cluster for `uat` and `preprod` environments","security":[{"$ref":"#/components/securitySchemes/sasl-ssl"}],"bindings":{"kafka":{"schemaRegistryUrl":"https://schema-registry.prod.url/"}}}},"channels":{"costingRequestChannel":{"address":"adeo-{env}-case-study-COSTING-REQUEST-{version}","messages":{"CostingRequest":{"$ref":"#/components/messages/costingRequestV1"}},"description":"Use this topic to do a Costing Request to Costing product. We use the [**RecordNameStrategy**](https://docs.confluent.io/platform/current/schema-registry/serdes-develop/index.html#subject-name-strategy) to infer the messages schema. You have to define `value.subject.name.strategy` to `io.confluent.kafka.serializers.subject.RecordNameStrategy` in your producer to use the schema we manage. The schema below illustrates how Costing Request messages are handled. \n","parameters":{"env":{"$ref":"#/components/parameters/Env"},"version":{"$ref":"#/components/parameters/Version"}},"bindings":{"kafka":{"partitions":3,"replicas":3,"topicConfiguration":{"cleanup.policy":["delete"],"retention.ms":60000000}}}},"costingResponseChannel":{"messages":{"costingResponse":{"$ref":"#/components/messages/costingResponse"}},"description":"This topic is used to REPLY Costing Requests and is targeted by the `REPLY_TOPIC` header. **You must grant PUBLISH access to our `svc-ccr-app` service account.**. We use the [**RecordNameStrategy**](https://docs.confluent.io/platform/current/schema-registry/serdes-develop/index.html#subject-name-strategy) to infer the messages schema. \nTopic should follow pattern \"adeo-{env}-case-study-COSTING-RESPONSE-{version}\"\nYou have to define `key.subject.name.strategy` and `value.subject.name.strategy` to `io.confluent.kafka.serializers.subject.RecordNameStrategy` in your consumer. The schema below illustrates how Costing Response messages are handled.\n \n","tags":[{"name":"costing"}],"bindings":{"kafka":{"x-key.subject.name.strategy":{"description":"We use the RecordNameStrategy to infer the messages schema. Use `key.subject.name.strategy=io.confluent.kafka.serializers.subject.RecordNameStrategy` in your consumer configuration.\n","type":"string"},"x-value.subject.name.strategy":{"description":"We use the RecordNameStrategy to infer the messages schema. Use `value.subject.name.strategy=io.confluent.kafka.serializers.subject.RecordNameStrategy` in your consumer configuration.\n","type":"string"}}}}},"operations":{"receiveACostingRequest":{"action":"receive","channel":{"$ref":"#/channels/costingRequestChannel"},"summary":"[COSTING] Request one or more Costing calculation for any product\n","description":"You can try a costing request using our [Conduktor producer template](https://conduktor.url/)\n","tags":[{"name":"costing"}],"bindings":{"kafka":{"groupId":{"description":"The groupId must be prefixed by your `svc` account, deliver by the Adeo Kafka team. This `svc` must have the write access to the topic.\n","type":"string"},"x-value.subject.name.strategy":{"description":"We use the RecordNameStrategy to infer the messages schema. Use `value.subject.name.strategy=io.confluent.kafka.serializers.subject.RecordNameStrategy` in your producer configuration.\n","type":"string"}}},"reply":{"address":{"location":"$message.header#/REPLY_TOPIC"},"channel":{"$ref":"#/channels/costingResponseChannel"}}}},"components":{"schemas":{"BuCode":{"type":"string","examples":[1],"description":"The Business Unit code for which data are applicable."},"CorrelationId":{"type":"string","examples":["1fa6ef40-8f47-40a8-8cf6-f8607d0066ef"],"description":"A unique Correlation ID defined from the `REQUEST_ID` or the `MESSAGE_ID` provided in the Costing Request.","format":"uuid"},"ErrorCode":{"type":"string","examples":["CURRENCY_NOT_FOUND"],"description":"The error code.\n"},"ErrorMessage":{"type":"string","examples":["Error message"],"description":"The error message describing the error.\n"},"ErrorStep":{"type":"string","examples":["EXPOSE_RESULT"],"description":"The woker that has thrown the error.\n"},"MessageId":{"type":"string","examples":["1fa6ef40-8f47-40a8-8cf6-f8607d0066ef"],"description":"A unique Message ID.","format":"uuid"},"ReplyTopic":{"type":"string","examples":["adeo-case-study-COSTING-RESPONSE-V1"],"description":"The Kafka topic where to send the Costing Response. This is required for the [Return Address EIP pattern](https://www.enterpriseintegrationpatterns.com/patterns/messaging/ReturnAddress.html). **You must grant WRITE access to our `svc-ccr-app` service account.**\n"},"RequestId":{"type":"string","examples":["1fa6ef40-8f47-40a8-8cf6-f8607d0066ef"],"description":"A unique Request ID needed to define a `CORRELATION_ID` for exchanges, which will be sent back in the Costing Responses.","format":"uuid"},"RequesterCode":{"type":"string","examples":[1],"description":"The Costing requester code (generally the BU Code). The requester code is useful to get the dedicated context (tenant)."},"RequesterId":{"type":"string","examples":["svc-ecollect-app"],"description":"The Costing requester service account used to produce costing request."}},"messages":{"costingRequestV1":{"headers":{"type":"object","required":["REQUESTER_ID","REQUESTER_CODE","REQUEST_ID","REPLY_TOPIC"],"properties":{"REPLY_TOPIC":{"$ref":"#/components/schemas/ReplyTopic"},"REQUESTER_CODE":{"$ref":"#/components/schemas/RequesterCode"},"REQUESTER_ID":{"$ref":"#/components/schemas/RequesterId"},"REQUEST_ID":{"$ref":"#/components/schemas/RequestId"}}},"payload":{"schemaFormat":"application/vnd.apache.avro;version=1.9.0","schema":{"$ref":"https://www.asyncapi.com/resources/casestudies/adeo/CostingRequestPayload.avsc"}},"correlationId":{"$ref":"#/components/correlationIds/costingCorrelationId"},"name":"CostingRequestV1","title":"Costing Request V1","summary":"Costing Request V1 inputs.","tags":[{"name":"costing"}]},"costingResponse":{"headers":{"type":"object","properties":{"CALCULATION_ID":{"$ref":"#/components/schemas/MessageId"},"CALCULATION_TIMESTAMP":{"type":"string","description":"Technical timestamp for the costing calculation","format":"date-time"},"CORRELATION_ID":{"$ref":"#/components/schemas/CorrelationId"},"REQUEST_TIMESTAMP":{"type":"string","description":"Timestamp of the costing request","format":"date-time"}}},"payload":{"schemaFormat":"application/vnd.apache.avro;version=1.9.0","schema":{"$ref":"https://www.asyncapi.com/resources/casestudies/adeo/CostingResponsePayload.avsc"}},"correlationId":{"$ref":"#/components/correlationIds/costingCorrelationId"},"name":"CostingResponse","title":"Costing Response","summary":"Costing Response ouputs.","description":"Please refer to the `CostingResponseKey.avsc` schema, available on [our github project](https://github.url/).\n","tags":[{"name":"costing"}]}},"securitySchemes":{"sasl-ssl":{"type":"plain","description":"Use [SASL authentication with SSL encryption](https://docs.confluent.io/platform/current/security/security_tutorial.html#configure-clients) to connect to the ADEO Broker.","x-sasl.jaas.config":"org.apache.kafka.common.security.plain.PlainLoginModule required username=\"<CLUSTER_API_KEY>\" password=\"<CLUSTER_API_SECRET>\";","x-sasl.mechanism":"PLAIN","x-security.protocol":"SASL_SSL","x-ssl.endpoint.identification.algorithm":"https"}},"parameters":{"Env":{"enum":["dev","sit","uat1","preprod","prod"],"description":"Adeo Kafka Environement for messages publications."},"Version":{"default":"V1","description":"the topic version you want to use","examples":["V1"]}},"correlationIds":{"costingCorrelationId":{"description":"This correlation ID is used for message tracing and messages correlation. This correlation ID is generated at runtime based on the `REQUEST_ID` and sent to the RESPONSE message.\n","location":"$message.header#/REQUEST_ID"}}}}