{"id":20325593,"url":"https://github.com/apiaddicts/openapi2soapui","last_synced_at":"2025-04-11T19:55:44.791Z","repository":{"id":80498374,"uuid":"352716389","full_name":"apiaddicts/openapi2soapui","owner":"apiaddicts","description":"API to generate a SoapUI project from an OpenAPI Specification (fka Swagger Specification)  Given an OpenAPI Specification, either v2 or v3, a SoapUI project is generated with the requests for each resource operation and a test suite.  The response is the content of the SoapUI project in XML format to save as file and import into the SoapUI application.","archived":false,"fork":false,"pushed_at":"2023-09-12T10:57:43.000Z","size":117,"stargazers_count":9,"open_issues_count":3,"forks_count":4,"subscribers_count":2,"default_branch":"main","last_synced_at":"2025-03-25T15:49:55.110Z","etag":null,"topics":["openapi","openapi3","openapi31","soapui"],"latest_commit_sha":null,"homepage":"","language":"Java","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"lgpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/apiaddicts.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":".github/FUNDING.yml","license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null},"funding":{"github":["RSI","CloudAPPi"],"patreon":null,"open_collective":null,"ko_fi":null,"tidelift":null,"community_bridge":null,"liberapay":null,"issuehunt":null,"otechie":null,"lfx_crowdfunding":null,"custom":null}},"created_at":"2021-03-29T16:47:42.000Z","updated_at":"2025-02-24T21:43:37.000Z","dependencies_parsed_at":null,"dependency_job_id":"bdac4ad6-82c6-4fb6-ac4a-7d188c79fdf0","html_url":"https://github.com/apiaddicts/openapi2soapui","commit_stats":null,"previous_names":[],"tags_count":1,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/apiaddicts%2Fopenapi2soapui","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/apiaddicts%2Fopenapi2soapui/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/apiaddicts%2Fopenapi2soapui/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/apiaddicts%2Fopenapi2soapui/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/apiaddicts","download_url":"https://codeload.github.com/apiaddicts/openapi2soapui/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248472959,"owners_count":21109626,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["openapi","openapi3","openapi31","soapui"],"created_at":"2024-11-14T19:40:44.067Z","updated_at":"2025-04-11T19:55:44.782Z","avatar_url":"https://github.com/apiaddicts.png","language":"Java","readme":"\n# 🛠️ OpenAPI2SoapUI ![Release](https://img.shields.io/badge/release-0.1.0-purple) ![Swagger](https://img.shields.io/badge/-soap-%23Clojure?style=flat\u0026logo=swagger\u0026logoColor=white) ![Java](https://img.shields.io/badge/java-%23ED8B00.svg?style=flat\u0026logo=openjdk\u0026logoColor=white)  [![License: LGPL v3](https://img.shields.io/badge/license-LGPL_v3-blue.svg)](https://www.gnu.org/licenses/lgpl-3.0) \n\n[API](./src/main/resources/static/api.yaml) to generate a SoapUI project from an OpenAPI Specification (fka Swagger Specification)\n\nGiven an OpenAPI Specification, either v2 or v3, a SoapUI project is generated with the _requests_ for each resource operation and a _test suite_. The response is the content of the SoapUI project in XML format to save as file and import into the SoapUI application.\n\n### This repository is intended for :octocat: **community** use, it can be modified and adapted without commercial use. If you need a version, support or help for your **enterprise** or project, please contact us 📧 devrel@apiaddicts.org\n\n[![Twitter](https://img.shields.io/badge/Twitter-%23000000.svg?style=for-the-badge\u0026logo=x\u0026logoColor=white)](https://twitter.com/APIAddicts) \n[![Discord](https://img.shields.io/badge/Discord-%235865F2.svg?style=for-the-badge\u0026logo=discord\u0026logoColor=white)](https://discord.gg/ZdbGqMBYy8)\n[![LinkedIn](https://img.shields.io/badge/linkedin-%230077B5.svg?style=for-the-badge\u0026logo=linkedin\u0026logoColor=white)](https://www.linkedin.com/company/apiaddicts/)\n[![Facebook](https://img.shields.io/badge/Facebook-%231877F2.svg?style=for-the-badge\u0026logo=Facebook\u0026logoColor=white)](https://www.facebook.com/apiaddicts)\n[![YouTube](https://img.shields.io/badge/YouTube-%23FF0000.svg?style=for-the-badge\u0026logo=YouTube\u0026logoColor=white)](https://www.youtube.com/@APIAddictslmaoo)\n\n# 🙌 Join the **OpenAPI2SoapUI** Adopters list \n📢 If OpenAPI2SoapUI is part of your organization's toolkit, we kindly encourage you to include your company's name in our Adopters list. 🙏 This not only significantly boosts the project's visibility and reputation but also represents a small yet impactful way to give back to the project.\n\n| Organization  | Description of Use / Referenc |\n|---|---|\n|  [CloudAppi](https://cloudappi.net/)  | Apification and generation of microservices |\n| [RSI](https://www.ruralserviciosinformaticos.com/)  | Generation of microservices  |\n\n# 👩🏽‍💻  Contribute to ApiAddicts \n\nWe're an inclusive and open community, welcoming you to join our effort to enhance ApiAddicts, and we're excited to prioritize tasks based on community input, inviting you to review and collaborate through our GitHub issue tracker.\n\nFeel free to drop by and greet us on our GitHub discussion or Discord chat. You can also show your support by giving us some GitHub stars ⭐️, or by following us on Twitter, LinkedIn, and subscribing to our YouTube channel! 🚀\n\n[![\"Buy Me A Coffee\"](https://www.buymeacoffee.com/assets/img/custom_images/orange_img.png)](https://www.buymeacoffee.com/apiaddicts)\n\n# ⚙️ Functionalities\n\n[Here](./src/main/resources/static/api.yaml) you can check the definition of the API Swagger to SoapUI\n\n- Base64 Decoding of Open API Specification Content\n- Parse Open API Specification Content into swagger-core representation as Java POJO\n- Create SoapUI Project\n  - Add OAuth 2.0 Profiles to SoapUI Project\n  - Add new REST Service to SoapUI Project\n    - Add Endpoints to REST Service\n    - Set basePath to REST Service\n    - Add Resources (Paths) to REST Service\n      - Add Methods (Verbs / Operations) to each Resource\n        - Set REST Request to each Method\n          - Set Credentials (OAuth 2.0 Profile)\n          - Set Parameters examples to REST Request\n          - Set Request Body example to REST Request\n          - Set Custom Headers to REST Request\n  - Add new TestSuites to SoapUI Project for each Method\n    - Add TestCases to TestSuite\n      - Add Execution Test Step (REST Request)\n\nNomenclature used:\n- SoapUI Project: {apiName}\\_{apiVersion}\n- REST Service: {apiName}\n- Resource: {path}\n- Method: {httpMethodInUppercase}\n- Request: {defaultRequestName}\n- Test Suite: {path}\\_{httpMethodInUppercase}\\_TestSuite\n- Test Case (Default): Success\\_TestCase\n- Test Case: {testCaseName}\\_TestCase\n- Test Step: Execution\\_{httpMethodInUppercase}\\_TestStep\n\nThe variables are obtained from:\n- apiName: property apiName of request body\n- apiVersion: version defined in the 'info' section of the OpenAPI Spec\n- path: each path defined in the OpenAPI Spec\n- httpMethodInUppercase: each HTTP methods of paths defined in OpenAPI Spec\n- testCaseName: each test case name defined in the property testCaseNames of request body\n\n## Technology stack\n### Overview\n\n|Technology              |Description                 |\n|------------------------|----------------------------|\n|Core Framework          |Spring Boot 2               |\n\n### Server - Backend\n\n|Technology                                               |Description                                                                   |\n|---------------------------------------------------------|------------------------------------------------------------------------------|\n|[JDK 11](https://docs.oracle.com/en/java/javase/11/)                       |Java Development Kit                                                          |\n|[Spring Boot 2](https://spring.io/projects/spring-boot)  |Framework to ease the bootstrapping and development of new Spring Applications|\n|[Maven 3](https://maven.apache.org)                      |Dependency Management                                                         |\n|[Tomcat 9](https://tomcat.apache.org)                    |Server deploy WAR                                                             |\n\n###  Libraries and Plugins\n|Technology              |Description                 |\n|------------------------|----------------------------|\n|[Lombok](https://projectlombok.org/) |Never write another getter or equals method again, with one annotation your class has a fully featured builder, Automate your logging variables, and much more.              |\n|[Hibernate Validator](https://hibernate.org/validator/)|Express validation rules in a standardized way using annotation-based constraints and benefit from transparent integration with a wide variety of frameworks.|\n|[Springdoc OpenAPI UI](https://springdoc.org/)|OpenAPI 3 Library for spring boot projects. Is based on swagger-ui, to display the OpenAPI description.|\n|[SoapUI core module](https://www.soapui.org/open-source/)|SoapUI is the world's leading Functional Testing tool for SOAP and REST testing.|\n|[Swagger Parser](https://github.com/swagger-api/swagger-parser)|Parses OpenAPI definitions in JSON or YAML format into swagger-core representation as Java POJO, returning any validation warnings/errors.|\n\n# 📑 Getting started \n\nThese instructions will get you a copy of the project up and running on your local machine for development and testing purposes.\n\n### Prerequisites\n\n* [JDK Installation](https://docs.oracle.com/en/java/javase/11/install/overview-jdk-installation.html#GUID-8677A77F-231A-40F7-98B9-1FD0B48C346A)\n* [Apache Maven Installation](https://maven.apache.org/install.html)\n* [Setting up Lombok](https://projectlombok.org/setup/overview)\n  * [Eclipse and its offshoots](https://projectlombok.org/setup/eclipse)\n  * [Intellij IDEA](https://projectlombok.org/setup/intellij)\n  * [Netbeans](https://projectlombok.org/setup/netbeans)\n  * [Microsoft Visual Studio Code](https://projectlombok.org/setup/vscode)\n\n### External dependencies\n\nThe project use __\"SoapUI Core Module\"__ dependency, which is not maven dependency, so you must have internet access to download the dependency from the external repository, below is the repository configuration inside the pom.xml file.\n\n```xml\n  ...\n\n  \u003crepositories\u003e\n    \u003crepository\u003e\n      \u003cid\u003eSmartBearPluginRepository\u003c/id\u003e\n      \u003curl\u003ehttps://rapi.tools.ops.smartbear.io/nexus/content/groups/public/\u003c/url\u003e\t\t\t\n    \u003c/repository\u003e\n  \u003c/repositories\u003e\n  \n  ...\n```\n### Running the application with IDE\n\nThere are several ways to run a Spring Boot application on your local machine. One way is to execute the `main` method in the `Openapi2SoapUIApplication` class from your IDE.\n\n#### Example (Eclipse and its offshoots) :\n* Download the zip or clone the Git repository.\n* Unzip the zip file (if you downloaded one)\n* Open IDE\n\t* File -\u003e Import -\u003e Existing Maven Project -\u003e Navigate to the folder project \n\t* Select the project\n* Choose the Spring Boot Application file (search for @SpringBootApplication)\n* Right Click on the file and Run as Java Application\n* URL to access: **http://localhost:8080/api-openapi-to-soapui/v1/soap-ui-projects**\n\n### Running the application locally with Maven\n\nAlternatively you can use the [Spring Boot Maven plugin](https://docs.spring.io/spring-boot/docs/current/reference/html/build-tool-plugins-maven-plugin.html) like so:\n\n* Download the zip or clone the Git repository.\n* Unzip the zip file (if you downloaded one)\n* Open Command Prompt and Change directory (cd) to folder containing pom.xml\n* To build and start the server type\n\n```shell\n$ mvn spring-boot:run\n```\n\n* URL to access: **http://localhost:8080/api-openapi-to-soapui/v1/soap-ui-projects**\n\n### Running the application in Docker\n\n* Download the zip or clone the Git repository.\n* Unzip the zip file (if you downloaded one)\n* Open Command Prompt and Change directory (cd) to folder containing pom.xml\n* To build and start the docker container type\n\n```shell\n$ mvn clean package -Pjar\n$ docker-compose up -d\n```\n\n* URL to access: **http://localhost:8080/api-openapi-to-soapui/v1/soap-ui-projects**\n\n### Running the application deploying WAR on Tomcat\n\nThe code can also be built into a war and then deployed on a Tomcat server.\n\n* \tDownload the zip or clone the Git repository.\n* \tUnzip the zip file (if you downloaded one)\n* \tOpen Command Prompt and Change directory (cd) to folder containing pom.xml\n* \tTo build the war type\n\n```sh\n$ mvn clean package\n```\n\n* \tOnce the war is built, copy the output WAR to Tomcat's webapps directory.\n\n```sh\n$CATALINA_HOME/webapps/openapi2soapui-\u003cversion\u003e.war\n```\n\n* Restart Tomcat Server\n* URL to access: **http://localhost:8080/openapi2soapui/api-openapi-to-soapui/v1/soap-ui-projects**\n## Files and Directories Structure\n\nThe project directory has a particular directory structure. A representative project is shown below:\n\n### Project Structure\n\n```text\n.\n├── src\n│   └── main\n│       └── java\n│           ├── org.apiaddicts.apitools.openapi2soapui\n│           │ \n│           ├── org.apiaddicts.apitools.openapi2soapui.config\n│           │  \n│           ├── org.apiaddicts.apitools.openapi2soapui.constants\n│           │ \n│           ├── org.apiaddicts.apitools.openapi2soapui.controller\n│           │ \n│           ├── org.apiaddicts.apitools.openapi2soapui.error\n│           ├── org.apiaddicts.apitools.openapi2soapui.error.exceptions\n│           ├── org.apiaddicts.apitools.openapi2soapui.error.validators\n│           │     \n│           ├── org.apiaddicts.apitools.openapi2soapui.model\n│           │\n│           ├── org.apiaddicts.apitools.openapi2soapui.request\n│           │\n│           ├── org.apiaddicts.apitools.openapi2soapui.service\n│           │\n│           └── org.apiaddicts.apitools.openapi2soapui.util\n├── src\n│   └── main\n│       └── resources\n│           ├── static\n│           │   └── api.yaml\n│           │   \n│           ├── application.properties\n│           ├── log4j.properties\n│           └── messages.properties\n├── JRE System Library\n├── Maven Dependencies\n├── src\n├── target\n│   └──openapi2soapui-1.0.2\n├── .gitlab-ci.yaml\n├── lombok.config\n├── mvnw\n├── mvnw.cmd\n├── pom.xml\n└── README.md\n```\n\n### Packages\n\n* \t`config` - app configurations;\n* \t`constants` - app contants;\n* \t`controller` - listen to the client;\n* \t`error` - manage errors;\n* \t`exceptions` - custom exception handling;\n* \t`validators` - custom validations;\n* \t`model` - entities;\n* \t`request` - body request model/entities;\n* \t`service` - business logic;\n* \t`util` - utility classes;\n\n\n### Resources\n* \t`resources/` - contains all the static resources, templates and property files.\n* \t`resources/static` - contains static resources.\n* \t`resources/static/api.yaml` - contains Open API Specification.\n* \t`resources/application.properties` - contains application-wide properties. Spring reads the properties defined in this file to configure your application. You can define server’s default port, server’s context path, database URLs etc, in this file.\n* \t`resources/log4j.properties` - contains contains the entire runtime configuration used by log4j. This file will contain log4j appenders information, log level information and output file names for file appenders.\n* \t`resources/messages.properties` - contains the error messages used in the application.\n* mvnw / mvnw.cmd - This allows you to run the Maven project without having Maven installed and present in the path. Download the correct version of Maven if it can't be found (as far as I know by default in your user home directory). The mvnw file is for Linux (bash) and mvnw.cmd is for the Windows environment.\n* \t`pom.xml` - contains all the project dependencies\n\n## Deploy\n\n* \tBuild the war type\n\n```sh\n$ mvn clean package\n```\n\n* \tOnce the war is built, copy the output WAR to Tomcat's webapps directory.\n\n```sh\n$CATALINA_HOME/webapps/openapi2soapui.war\n```\n\n* Restart Tomcat Server\n* URL to access: **\\\u003cprotocol\\\u003e://\\\u003chost\\\u003e:\\\u003cport\\\u003e/openapi2soapui/api-openapi-to-soapui/v1/soap-ui-projects**\n\n## Documentation\n\n- [cURL Example](example.sh)\n- [Open API Specification](./src/main/resources/static/api.yaml)\n- [Swagger UI](http://localhost:8080/swagger-ui.html) - `http://localhost:8080/swagger-ui.html`\n- Find Java Doc in **javadoc** folder\n- Java Doc is generated in ./target/site/apidocs` folder using the Maven command \n\n```sh\nmvn javadoc:javadoc\n```\n\n## 💛 Sponsors\n\u003cp align=\"center\"\u003e\n\t\u003ca href=\"https://apiaddicts.org/\"\u003e\n    \t\u003cimg src=\"https://apiaddicts.cloudappi.net/web/image/4248/LOGOCloudappi2020Versiones-01.png\" alt=\"cloudappi\" width=\"150\"/\u003e\n        \u003cimg src=\"https://apiaddicts-web.s3.eu-west-1.amazonaws.com/wp-content/uploads/2022/03/17155736/cropped-APIAddicts-logotipo_rojo.png\" height = \"75\"\u003e\n\t\u003c/a\u003e\n\u003c/p\u003e\n\n","funding_links":["https://github.com/sponsors/RSI","https://github.com/sponsors/CloudAPPi","https://www.buymeacoffee.com/apiaddicts"],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fapiaddicts%2Fopenapi2soapui","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fapiaddicts%2Fopenapi2soapui","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fapiaddicts%2Fopenapi2soapui/lists"}