{"id":22624671,"url":"https://github.com/barrettotte/ibmi-springboot-api","last_synced_at":"2025-04-11T17:53:20.041Z","repository":{"id":114090672,"uuid":"183634722","full_name":"barrettotte/IBMi-SpringBoot-API","owner":"barrettotte","description":"A Spring Boot API to easily expose IBMi information. Currently has endpoints to return lists for libraries, files, and members.","archived":false,"fork":false,"pushed_at":"2019-05-20T16:43:27.000Z","size":123,"stargazers_count":9,"open_issues_count":0,"forks_count":4,"subscribers_count":2,"default_branch":"master","last_synced_at":"2025-03-25T13:51:10.626Z","etag":null,"topics":["db2","ibmi","ibmi-java","java","spring-boot"],"latest_commit_sha":null,"homepage":"","language":"Java","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/barrettotte.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"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}},"created_at":"2019-04-26T13:36:15.000Z","updated_at":"2024-01-16T00:59:07.000Z","dependencies_parsed_at":"2023-06-12T14:00:26.077Z","dependency_job_id":null,"html_url":"https://github.com/barrettotte/IBMi-SpringBoot-API","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/barrettotte%2FIBMi-SpringBoot-API","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/barrettotte%2FIBMi-SpringBoot-API/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/barrettotte%2FIBMi-SpringBoot-API/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/barrettotte%2FIBMi-SpringBoot-API/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/barrettotte","download_url":"https://codeload.github.com/barrettotte/IBMi-SpringBoot-API/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248456291,"owners_count":21106601,"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":["db2","ibmi","ibmi-java","java","spring-boot"],"created_at":"2024-12-09T00:17:19.785Z","updated_at":"2025-04-11T17:53:20.027Z","avatar_url":"https://github.com/barrettotte.png","language":"Java","funding_links":[],"categories":[],"sub_categories":[],"readme":"# IBMi-SpringBoot-API\n\n\nA Spring Boot API to easily expose IBMi information. Currently, has endpoints to return lists for libraries, files, and members.\n\n## Dependencies\n* IBMi running V7R3\n* Java 8\n* [JTOpen 9.8](http://jt400.sourceforge.net/)\n* JUnit 5.4.2\n* Spring Boot 2.1.4\n  * Actuator\n  * DevTools\n  * Web\n* Swagger 2 (/swagger-ui.html#/)\n\n\n## Endpoints\n| Endpoint                  | Description                  |\n| ------------------------- | ---------------------------- |\n| /actuator                 | Actuator                     |\n| /v2/api-docs              | Swagger 2 API Docs           |\n| /api/v1                   | Base core API (Does nothing) |\n\n[![endpoints](https://github.com/barrettotte/IBMi-SpringBoot-API/blob/master/screenshots/swagger-qsys.PNG)](https://github.com/barrettotte/IBMi-SpringBoot-API/blob/master/screenshots/swagger-qsys.PNG)\n\n\n## Examples\n```curl http://127.0.0.1:8044/api/v1/qsys/catalogs/db/schemas/bolib/tables```\n```json\n[\n  {\n    \"table_name\": \"QCLLESRC\",\n    \"table_type\": \"BASE TABLE\"\n  },\n  {\n    \"table_name\": \"QDDSSRC\",\n    \"table_type\": \"BASE TABLE\"\n  },\n  {\n    \"table_name\": \"QRPGLESRC\",\n    \"table_type\": \"BASE TABLE\"\n  },\n  {\n    \"table_name\": \"QRPGSRC\",\n    \"table_type\": \"BASE TABLE\"\n  }\n]\n```\n\n```curl http://127.0.0.1:8044/api/v1/qsys/catalogs/db/schemas/bolib/tables/qrpglesrc/partitions```\n```json\n[\n  {\n    \"data_size\": 1,\n    \"partition_text\": \"Fizzbuzz in RPGLE Free\",\n    \"partition_number\": 10,\n    \"create_timestamp\": \"2019-04-02 11:42:18.0\",\n    \"last_save_timestamp\": \"2019-05-18 03:41:46.0\",\n    \"number_rows\": 16,\n    \"number_row_pages\": 1,\n    \"source_type\": \"RPGLE\",\n    \"system_table_member\": \"FIZZBUZZ \"\n  },\n  // ...\n]\n```\n\n```curl http://127.0.0.1:8044/api/v1/qsys/catalogs/db/schemas/bolib/tables/qrpglesrc/partitions/fizzbuzz```\n```json\n[\n  {\n    \"srcdat\": 190402,\n    \"srcseq\": 1,\n    \"srcdta\": \" /free \"\n  },\n  {\n    \"srcdat\": 190402,\n    \"srcseq\": 2,\n    \"srcdta\": \" // The classic fizzbuzz program in RPGLE Free \"\n  },\n  {\n    \"srcdat\": 190402,\n    \"srcseq\": 3,\n    \"srcdta\": \" dcl-s num int(10); \"\n  },\n  {\n    \"srcdat\": 190402,\n    \"srcseq\": 4,\n    \"srcdta\": \" \"\n  },\n  {\n    \"srcdat\": 190402,\n    \"srcseq\": 5,\n    \"srcdta\": \" for num = 1 to 100; \"\n  },\n  {\n    \"srcdat\": 190403,\n    \"srcseq\": 6,\n    \"srcdta\": \" if %REM(num:3) = 0 and %REM(num:5) = 0; \"\n  },\n  {\n    \"srcdat\": 190402,\n    \"srcseq\": 7,\n    \"srcdta\": \" dsply ('num - ' + %char(num) + ' FIZZBUZZ'); \"\n  },\n  {\n    \"srcdat\": 190402,\n    \"srcseq\": 8,\n    \"srcdta\": \" elseif %rem(num:3) = 0; \"\n  },\n  {\n    \"srcdat\": 190402,\n    \"srcseq\": 9,\n    \"srcdta\": \" dsply ('num - ' + %char(num) + ' FIZZ'); \"\n  },\n  {\n    \"srcdat\": 190402,\n    \"srcseq\": 10,\n    \"srcdta\": \" elseif %rem(num:5) = 0; \"\n  },\n  {\n    \"srcdat\": 190402,\n    \"srcseq\": 11,\n    \"srcdta\": \" dsply ('num - ' + %char(num) + ' BUZZ'); \"\n  },\n  {\n    \"srcdat\": 190402,\n    \"srcseq\": 12,\n    \"srcdta\": \" else; \"\n  },\n  {\n    \"srcdat\": 190402,\n    \"srcseq\": 13,\n    \"srcdta\": \" dsply ('num - ' + %char(num)); \"\n  },\n  {\n    \"srcdat\": 190402,\n    \"srcseq\": 14,\n    \"srcdta\": \" endif; \"\n  },\n  {\n    \"srcdat\": 190402,\n    \"srcseq\": 15,\n    \"srcdta\": \" endfor; \"\n  },\n  {\n    \"srcdat\": 190402,\n    \"srcseq\": 16,\n    \"srcdta\": \" *INLR = *ON; \"\n  }\n]\n```\n\n\n## Configuration\n```properties\n# application.properties template\ninfo.app.name = IBMi API Service\nserver.port = 8044\ndb.datasource.as400.username = ?\ndb.datasource.as400.password = ?\ndb.datasource.as400.url = jdbc:as400://?/;prompt=false;naming=system;*LIBL\ndb.datasource.as400.driver-class-name = com.ibm.as400.access.AS400JDBCDriver\n```\n\n\n## Future Goals\n* Sending IBMi credentials in HTTP body\n* More information returned in each endpoint\n* Endpoints for qsys/catalogs/{catalog}/users and qsys/catalogs/{catalog}/users/{user}\n* Endpoint for base IFS /api/v1/ifs\n* Endpoint for viewing message queues (QSYSOPR)\n* Endpoint for viewing printer queues (QPRINT)\n\n\n## Development\n* Build ```gradlew build``` or ```dev/gradle-scripts/gradle-build.bat```\n* Test ```gradlew test``` or ```dev/gradle-scripts/gradle-test.bat```\n* Run ```gradlew bootRun``` or ```dev/gradle-scripts/gradle-run.bat``` at http://127.0.0.1:8080\n* Refresh Dependencies ```gradlew build --refresh-dependencies``` or ```dev/gradle-scripts/gradle-refresh.bat```\n\n\n## Visual Studio Code\n* Gradle Tasks ```.vscode/tasks.json```\n  * ['gradlew build', 'gradlew test', 'gradlew bootRun']\n  * ['gradlew clean build', 'gradlew clean test', 'gradlew dep-refresh']\n* HTTP Testing ```dev/test.http```\n* Extensions\n  * Gradle Language Support - Naco Siren\n  * Java Extension Pack - Microsoft\n  * REST Client - Huachao Mao\n  * Spring Boot Extension Pack - Pivotal\n  * Spring Boot Tools - Pivotal\n\n\n## References\n* Generated project using [Spring Initializr](https://start.spring.io/)\n* [Gradle Docs](https://docs.gradle.org/current/userguide/userguide.html)\n* IBMi DB2 SQL\n  * [ANS and ISO catalog views](https://www.ibm.com/support/knowledgecenter/SSAE4W_9.1.0/com.ibm.etools.iseries.langref2.doc/rbafzcatalogans.htm)\n  * [DB2 for i SQL reference](https://www.ibm.com/support/knowledgecenter/SSAE4W_9.1.0/com.ibm.etools.iseries.langref2.doc/rbafzintro.htm)\n  * [IBMi catalog tables and views](https://www.ibm.com/support/knowledgecenter/SSAE4W_9.1.0/com.ibm.etools.iseries.langref2.doc/rbafzcatalogtbls.htm)\n  * [ODBC and JDBC catalog views](https://www.ibm.com/support/knowledgecenter/SSAE4W_9.1.0/com.ibm.etools.iseries.langref2.doc/rbafzcatalogodbc.htm)\n* [ILE Editor](https://github.com/worksofbarry/ILEditor) - Inspiration for project\n* Java and AS400 \n  * [IBM Knowledge Center](https://www.ibm.com/support/knowledgecenter/ssw_ibm_i_71/rzahh/page1.htm)\n  * [Code Examples](https://www.programcreek.com/java-api-examples/?api=com.ibm.as400.access.AS400)\n* [JUnit 5 User Guide](https://junit.org/junit5/docs/current/user-guide/)\n* [MvnRepository](https://mvnrepository.com/)\n* RPGPGM Articles\n  * https://www.rpgpgm.com/2018/01/sql-views-to-list-sql-programs-and.html\n  * https://www.rpgpgm.com/2017/11/sql-view-for-information-about-job.html\n  * https://www.rpgpgm.com/2017/06/sql-views-for-authorization-lists.html\n  * https://www.rpgpgm.com/2017/05/using-sql-for-message-queue-data.html\n  * https://www.rpgpgm.com/2016/01/using-sql-for-objects-statistics.html\n  * https://www.rpgpgm.com/2015/12/almost-everything-you-wanted-to-know.html\n  * https://www.rpgpgm.com/2015/12/output-queue-entries-information-via-sql.html\n  * https://www.rpgpgm.com/2015/11/getting-active-jobs-data-using-sql.html\n  * https://www.rpgpgm.com/2015/11/getting-information-about-user-profiles.html\n  * https://www.rpgpgm.com/2015/10/using-sql-to-get-information-about-job.html\n  * https://www.rpgpgm.com/2015/06/using-sql-to-get-information-from-job.html\n  * https://www.rpgpgm.com/2015/05/getting-information-about-views-and.html\n  * https://www.rpgpgm.com/2014/11/getting-list-of-files-in-ifs-directory.html\n* [Toolbox for Java and JTOpen](https://developer.ibm.com/articles/i-javatoolbox/#toolbox-for-java-introduction)","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fbarrettotte%2Fibmi-springboot-api","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fbarrettotte%2Fibmi-springboot-api","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fbarrettotte%2Fibmi-springboot-api/lists"}