{"id":14961829,"url":"https://github.com/arduino/clients-iot-api","last_synced_at":"2025-10-19T08:31:16.033Z","repository":{"id":43467342,"uuid":"203353921","full_name":"arduino/clients-iot-api","owner":"arduino","description":"Automated pipeline to generate clients and docs for Arduino IoT API","archived":false,"fork":false,"pushed_at":"2024-11-06T09:55:24.000Z","size":842,"stargazers_count":3,"open_issues_count":1,"forks_count":3,"subscribers_count":9,"default_branch":"master","last_synced_at":"2025-01-29T10:51:29.542Z","etag":null,"topics":["api","arduino","golang","iot","javascript","openapi","python","rest","swagger"],"latest_commit_sha":null,"homepage":"https://www.arduino.cc/en/IoT/HomePage","language":"Go","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/arduino.png","metadata":{"funding":{"github":["arduino"],"custom":"https://www.arduino.cc/en/Main/Donate"},"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-08-20T10:30:45.000Z","updated_at":"2024-11-06T09:55:27.000Z","dependencies_parsed_at":"2024-04-16T09:33:57.939Z","dependency_job_id":"28e0e388-f1de-4345-8a8f-c0ec77302eb4","html_url":"https://github.com/arduino/clients-iot-api","commit_stats":{"total_commits":104,"total_committers":12,"mean_commits":8.666666666666666,"dds":0.6442307692307692,"last_synced_commit":"647474efa02a66a5fdaa05f2caa7161bdc420d76"},"previous_names":[],"tags_count":43,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/arduino%2Fclients-iot-api","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/arduino%2Fclients-iot-api/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/arduino%2Fclients-iot-api/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/arduino%2Fclients-iot-api/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/arduino","download_url":"https://codeload.github.com/arduino/clients-iot-api/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":237092372,"owners_count":19254204,"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":["api","arduino","golang","iot","javascript","openapi","python","rest","swagger"],"created_at":"2024-09-24T13:27:53.644Z","updated_at":"2025-10-19T08:31:15.320Z","avatar_url":"https://github.com/arduino.png","language":"Go","funding_links":["https://github.com/sponsors/arduino","https://www.arduino.cc/en/Main/Donate"],"categories":[],"sub_categories":[],"readme":"# iot-api clients generator\n\nThis repo contains the informations and the tools needed to automatically\ngenerate API clients for the `iot-api` service in [any language][0] supported by\nOpenAPI generator.\n\nThe OpenAPI generator is orchestrated by git workflow using openapi-generator official images.\n\n## [IMPORTANT] Client generation process\n\nThe process to generate the clients explained in paragraphs below is fully\nautomated through GitHub actions. The workflow will start every time a tag in the form of `vX.Y` (e.g. `v2.1`) is pushed to this repo. If the workflow completes\nsuccessfully, a PR will be opened for each client in their respective git\nrepositories. See the\n[actions page](https://github.com/bcmi-labs/clients-iot-api/actions) to\nmonitor the status of a workflow.\n\n## Sample clients\n\nFollowing clients have been successfully generated with the present workflow:\n\n* [Go](https://github.com/arduino/iot-client-go)\n* [Python](https://github.com/arduino/iot-client-py)\n* [Javascript](https://github.com/arduino/iot-client-js)\n\n## Generation process\n\nAfter initial setup (the procedures needed to setup this git repo),\nthe ideal workflow consists in updating this repo every time the API service\nchanges, re-generate all the clients, push the generated code to the git repo\nit belongs to and release the updated clients (this last step may vary\ndepending on the programming language).\n\nThe operations are detailed in the following paragraphs.\n\n### Get an updated version of the API specification\n\nIn this case the specs are generated by Goa using Swagger and they can be found\nat [http://api2.arduino.cc/iot/swagger.json][2]. To be more future proof\nand to leverage the latest versions of the tools available, we're using the\nversion 3 of the OpenAPI for the generator, this means that the output from\nGoa must be converted into a compatible spec [like the one in this repo][3].\n\nSeveral conversion tools from OpenAPI v2 to v3 exist, and some of them can be\neasily integrated in a CI, so major updates will be performed by either:\n\n* have Goa produce a v3 OpenAPI spec\n* dump the Goa spec, convert to v3 and update this repo\n\nMinor updates might be done manually since v3 uses Yaml and the resulting spec\nis human friendly.\n\n### Generate the clients\n\nUpdate openapi definition in openapi/components folder.\n'Release' github workflow will take care of:\n* update and merge openapi specifications\n* update templates with provided patches\n* generate clients\n* create PRs with updated code in destination clients repositories\n\n## Customization\n\nThe code generator can be fine tuned using [templates][4]. By patching existing\ntemplates for each language or adding new ones, any aspect of the resulting client\ncan be adjusted to fit custom needs: the readme, the docs, the tests, the model\nclasses themselves can be changed downstream, and changes will reflect on the\nresulting client.\n\n[0]: https://openapi-generator.tech/docs/generators\n[1]: https://github.com/DataDog/apigentools\n[2]: http://api2.arduino.cc/iot/swagger.json\n[3]: clients-iot-api/spec/v2/swagger.yaml\n[4]: https://openapi-generator.tech/docs/templating\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Farduino%2Fclients-iot-api","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Farduino%2Fclients-iot-api","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Farduino%2Fclients-iot-api/lists"}