{"id":18298322,"url":"https://github.com/fusionauth/fusionauth-client-builder","last_synced_at":"2025-07-26T09:06:28.971Z","repository":{"id":39790853,"uuid":"175437305","full_name":"FusionAuth/fusionauth-client-builder","owner":"FusionAuth","description":"The FusionAuth client library builder","archived":false,"fork":false,"pushed_at":"2024-10-25T21:36:52.000Z","size":1394,"stargazers_count":6,"open_issues_count":8,"forks_count":24,"subscribers_count":12,"default_branch":"develop","last_synced_at":"2024-10-27T00:21:31.378Z","etag":null,"topics":["angular","csharp","dart","flutter","freemarker-template","fusionauth","fusionauth-client","go","java","javascript","netcore","node","php","python","ruby","swift","typescript"],"latest_commit_sha":null,"homepage":"https://fusionauth.io/","language":"FreeMarker","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/FusionAuth.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":".github/CODEOWNERS","security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2019-03-13T14:28:35.000Z","updated_at":"2024-10-11T19:27:27.000Z","dependencies_parsed_at":"2023-10-23T22:22:27.546Z","dependency_job_id":"61dd49c2-dcd3-4eeb-b817-c25aaff0f2bf","html_url":"https://github.com/FusionAuth/fusionauth-client-builder","commit_stats":null,"previous_names":[],"tags_count":146,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/FusionAuth%2Ffusionauth-client-builder","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/FusionAuth%2Ffusionauth-client-builder/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/FusionAuth%2Ffusionauth-client-builder/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/FusionAuth%2Ffusionauth-client-builder/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/FusionAuth","download_url":"https://codeload.github.com/FusionAuth/fusionauth-client-builder/tar.gz/refs/heads/develop","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":223192690,"owners_count":17103564,"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":["angular","csharp","dart","flutter","freemarker-template","fusionauth","fusionauth-client","go","java","javascript","netcore","node","php","python","ruby","swift","typescript"],"created_at":"2024-11-05T15:05:47.237Z","updated_at":"2024-11-05T15:05:47.913Z","avatar_url":"https://github.com/FusionAuth.png","language":"FreeMarker","readme":"## FusionAuth Client Builder ![semver 2.0.0 compliant](http://img.shields.io/badge/semver-2.0.0-brightgreen.svg?style=flat-square)\n\n\n## Credits\nThanks to the following folks for your most excellent contributions!\n* [@medhir](https://github.com/medhir) \n* [@tjpeden](https://github.com/tjpeden) \n\n## Contributing\n\nIf you want to help us directly support and publish this library, there are a few ways you can help.\n\nWe start with a JSON DSL to define each API ( https://github.com/FusionAuth/fusionauth-client-builder/tree/master/src/main/api ).\n\nWe then build the code using a template, for example, here is the ruby template : https://github.com/FusionAuth/fusionauth-client-builder/blob/master/src/main/client/ruby.client.ftl\n\nThis ruby template then produces the ruby client.\n\nhttps://github.com/FusionAuth/fusionauth-ruby-client\n\nhttps://github.com/FusionAuth/fusionauth-ruby-client/blob/master/lib/fusionauth/fusionauth_client.rb\n\nYou can pick the current client library template for the language closest to the language you want to support. Let's say it is ruby. You will copy the ruby client template (https://github.com/FusionAuth/fusionauth-client-builder/blob/master/src/main/client/ruby.client.ftl) to \u003clanguage\u003e.client.ftl and then start hacking on it.\n\nWith that template we can then build the \u003clanguage\u003e client each time we release.\n\nYou can also build a library any other way; the chances of us supporting custom builds are low, but you can add your library to the contrib repo: https://github.com/FusionAuth/fusionauth-contrib/\n\n## Build a client library\n\n### Setup Savant\n\nLinux or macOS\n\n```\nmkdir ~/savant\ncd ~/savant\nwget http://savant.inversoft.org/org/savantbuild/savant-core/2.0.0-RC.7/savant-2.0.0-RC.7.tar.gz\ntar xvfz savant-2.0.0-RC.7.tar.gz\nln -s ./savant-2.0.0-RC.7 current\nexport PATH=$PATH:~/savant/current/bin/\n```\n\nYou may optionally want to add `~/savant/current/bin` to your PATH that is set in your profile so that this change persists. You'll also need to ensure that you have Java \u003e= 8 installed and the environment variable  `JAVA_HOME` is set.\n\n### Building\n\nListing each client library build targets\n\n```\nsb --listTargets\n```\n\nBuilding a single library\n\nTo build a single client library, you'll want to have the corresponding repo checked out in the same parent directory.\n\nFor example, your directory structure should look something like the following:\n\n```\nfusionauth\n├── fusionauth-client-builder\n├── fusionauth-android-client\n├── fusionauth-csharp-client\n├── fusionauth-java-client\n├── fusionauth-openapi\n├── fusionauth-php-client\n├── fusionauth-python-client\n├── fusionauth-ruby-client\n├── fusionauth-swift-client\n├── fusionauth-typescript-client\n└── go-client\n```\n\nThe client builder will assume the project is in the same parent directory.\n\n```\nsb build-java\n```\n\nBuilding all clients\n\n```\nsb build-all\n```\n\nFor more information on the Savant build tool, checkout [savantbuild.org](http://savantbuild.org/).\n\n## Adding a new language\n\nIf you want to help us directly support and publish a new language, there are a few ways you can help.\n\nWe start with a JSON DSL to define [each API operation](https://github.com/FusionAuth/fusionauth-client-builder/tree/master/src/main/api).\n\nWe then build the code using a template. For example, here is [the ruby template](https://github.com/FusionAuth/fusionauth-client-builder/blob/master/src/main/client/ruby.client.ftl)\n\nThis ruby template then produces the ruby client:\n\nhttps://github.com/FusionAuth/fusionauth-ruby-client\n\nhttps://github.com/FusionAuth/fusionauth-ruby-client/blob/master/lib/fusionauth/fusionauth_client.rb\n\nSo if you wanted to add support for a new language, such as elixir, you want to:\n\n* Find an existing supported language which is close to it in terms of syntax and style. In this case, ruby would be a good candidate.\n* Copy the ruby [client template](https://github.com/FusionAuth/fusionauth-client-builder/blob/master/src/main/client/ruby.client.ftl) to `elixir.client.ftl` \n* Start hacking on it. \n\nWith that template complete, we can then build the Elixir client each time we release.\n\nFeel free to open an issue in our issues tracker, either here or in [the central one](https://github.com/FusionAuth/fusionauth-issues/issues) to let us know about your efforts or to ask for help.\n","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ffusionauth%2Ffusionauth-client-builder","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ffusionauth%2Ffusionauth-client-builder","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ffusionauth%2Ffusionauth-client-builder/lists"}