{"id":22816595,"url":"https://github.com/rwojsznis/workable","last_synced_at":"2025-04-22T21:17:09.303Z","repository":{"id":25396516,"uuid":"28825251","full_name":"rwojsznis/workable","owner":"rwojsznis","description":"Simple workable.com API wrapper","archived":false,"fork":false,"pushed_at":"2024-01-26T10:30:17.000Z","size":104,"stargazers_count":16,"open_issues_count":0,"forks_count":16,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-04-22T21:17:02.072Z","etag":null,"topics":["api-client","ruby","workable"],"latest_commit_sha":null,"homepage":"","language":"Ruby","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/rwojsznis.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"funding":null,"license":"LICENSE.txt","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":"2015-01-05T18:18:12.000Z","updated_at":"2025-04-09T10:10:07.000Z","dependencies_parsed_at":"2024-12-12T14:08:03.136Z","dependency_job_id":"26e277f2-394c-4597-89e2-295d69b5631a","html_url":"https://github.com/rwojsznis/workable","commit_stats":null,"previous_names":["emq/workable"],"tags_count":10,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rwojsznis%2Fworkable","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rwojsznis%2Fworkable/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rwojsznis%2Fworkable/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rwojsznis%2Fworkable/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/rwojsznis","download_url":"https://codeload.github.com/rwojsznis/workable/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":250324705,"owners_count":21411946,"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-client","ruby","workable"],"created_at":"2024-12-12T14:08:00.034Z","updated_at":"2025-04-22T21:17:09.267Z","avatar_url":"https://github.com/rwojsznis.png","language":"Ruby","readme":"# Workable\n\n[![Code Climate](https://codeclimate.com/github/emq/workable/badges/gpa.svg)](https://codeclimate.com/github/emq/workable)\n[![Build Status](https://travis-ci.org/emq/workable.svg?branch=master)](https://travis-ci.org/emq/workable)\n[![Coverage Status](https://coveralls.io/repos/emq/workable/badge.png?branch=master)](https://coveralls.io/r/emq/workable?branch=master)\n[![Gem Version](https://badge.fury.io/rb/workable.svg)](http://badge.fury.io/rb/workable)\n[![Dependency Status](https://gemnasium.com/emq/workable.svg)](https://gemnasium.com/emq/workable)\n\nDead-simple Ruby API client for [workable.com][1]. No extra runtime dependencies.\n\nUses v3 API provided by workable.\n\n## Installation\n\nAdd this line to your application's Gemfile:\n\n```ruby\ngem 'workable'\n```\n\nAnd then execute:\n\n    $ bundle\n\nOr install it yourself as:\n\n    $ gem install workable\n\n## Usage\n\nGem covers all endpoints mentioned in official v3 workable API documentation (https://workable.readme.io/docs/).\n\n### Example\n\nFor detailed documentation please refer to: http://www.rubydoc.info/gems/workable\n\n``` ruby\nclient = Workable::Client.new(api_key: 'api_key', subdomain: 'your_subdomain')\n\n# takes optional phase argument (string): 'published' (default), 'draft', 'closed' or 'archived'\nclient.jobs # =\u003e Workable::Collection\n\n# Workable::Collection example\njobs = client.jobs\nloop do\n  jobs.each do |job|\n    # Do something with the job\n  end\n  break unless jobs.next_page?\n  jobs = jobs.fetch_next_page\nend\n\nshortcode = client.jobs.first[\"shortcode\"]\n\n# API queries are not cached (at all) - it's up to you to cache results one way or another\n\nclient.stages     # =\u003e Array of hashes\nclient.recruiters # =\u003e Array of hashes\nclient.members    # =\u003e Array of hashes\n\nclient.job_details(shortcode)    # =\u003e Hash\nclient.job_questions(shortcode)  # =\u003e Array of hashes\nclient.job_application_form(shortcode) # =\u003e Hash\nclient.job_candidates(shortcode, :stage =\u003e stage_slug, :limit =\u003e 100) # =\u003e Array of hashes:\n#   if given stage limits to given stage\n#   if given limit lists the last `limit` added candidates\n\n# Adding candidates - candidate is a Hash as described in:\n#   http://resources.workable.com/add-candidates-using-api\n\nclient.create_job_candidate(candidate, shortcode, stage_slug) # =\u003e Hash (stage_slug is optional)\n\n# managing candidates\nclient.disqualify(candidate_id, member_id, reason)\nclient.revert(candidate_id, member_id) # reverts disqualification\nclient.copy(candidate_id, member_id, shortcode, stage)\nclient.relocate(candidate_id, member_id, shortcode, stage)\nclient.move(candidate_id, member_id, stage)\nclient.create_rating(candidate_id, member_id, comment, score)\nclient.create_comment(candidate_id, member_id, comment_text, attachment)\n\n# Possible errors (each one inherits from Workable::Errors::WorkableError)\nWorkable::Errors::InvalidConfiguration # missing api_key / subdomain\nWorkable::Errors::NotAuthorized   # wrong api key\nWorkable::Errors::InvalidResponse # something went wrong during the request?\nWorkable::Errors::NotFound        # 404 from workable\nWorkable::Errors::RequestToLong   # When the requested result takes to long to calculate, try limiting your query\n```\n\n## Transformations\n\nWhen creating `Client` you can specify extra methods/`Proc`s for\nautomated transformation of results and input.\n\n### Example\n\n```ruby\nclient = Workable::Client.new(\n  api_key: 'api_key',\n  subdomain: 'your_subdomain'\n  transform_to: {\n    candidate: OpenStruct.method(:new)\n  }\n  transform_from: {\n    candidate: Proc.new { |input| input.to_h }\n  }\n)\n```\n\nThe first transformation `to` will make the `Client` return\n`OpenStruct.new(result)` instead of just plain `result` everywhere where\ncandidate is expected. In case of Arrays the transformation will be\napplied to every element.\n\nThe second transformation `from` will expect an instance of `OpenStruct`\ninstead of raw data and will execute the `to_h` on the instance before\nsending it to workable API.\n\nThe rest of result will be returned as `Array`s/`Hash`es,\nno transformation will be applied if not defined - raw data will be\nreturned.\n\n\n## Contributing\n\n1. Fork it ( https://github.com/emq/workable/fork )\n2. Create your feature branch (`git checkout -b my-new-feature`)\n3. Commit your changes (`git commit -am 'Add some feature'`)\n4. Push to the branch (`git push origin my-new-feature`)\n5. Create a new Pull Request\n\n[1]: http://workable.com/\n","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Frwojsznis%2Fworkable","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Frwojsznis%2Fworkable","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Frwojsznis%2Fworkable/lists"}