== Camel OpenApi OSGi Example

=== Introduction

This is an example that uses the rest-dsl to define a rest services
which provides three operations

* GET user/{id} - Find user by id
* PUT user - Updates or create a user
* GET user/findAll - Find all users

=== Build

You will need to install this example first:

....
mvn install
....

=== Run

This example needs to be deployed on Apache Karaf/SerivceMix first:

feature:repo-add camel ${version} feature:install camel feature:install
camel-jackson feature:install camel-jetty feature:install
camel-openapi-java

And then install the example

install -s
mvn:org.apache.camel.example/camel-example-openapi-osgi/${version}

The rest service can be accessed from the following url

....
curl http://127.0.0.1:8080/camel-example-openapi-osgi/rest/user
....

http://127.0.0.1:8080/camel-example-openapi-osgi/rest/user

For example to get a user with id 123

....
curl http://127.0.0.1:8080/camel-example-openapi-osgi/rest/user/123
....

http://127.0.0.1:8080/camel-example-openapi-osgi/rest/user/123

The rest services provides OpenApi API in json or yaml format which can
be accessed from the following url

....
curl http://127.0.0.1:8080/camel-example-openapi-osgi/rest/api-docs/myCamel/openapi.json
curl http://127.0.0.1:8080/camel-example-openapi-osgi/rest/api-docs/myCamel/openapi.yaml
....

http://127.0.0.1:8080/camel-example-openapi-osgi/rest/api-docs/myCamel/openapi.json

=== Help and contributions

If you hit any problem using Camel or have some feedback, then please
https://camel.apache.org/support.html[let us know].

We also love contributors, so
https://camel.apache.org/contributing.html[get involved] :-)

The Camel riders!
