{"id":41348682,"url":"https://github.com/sanifhimani/monday_ruby","last_synced_at":"2026-01-23T07:15:10.219Z","repository":{"id":176761887,"uuid":"655924385","full_name":"sanifhimani/monday_ruby","owner":"sanifhimani","description":"A Ruby gem for interacting with monday.com's API","archived":false,"fork":false,"pushed_at":"2025-11-18T03:28:02.000Z","size":1181,"stargazers_count":10,"open_issues_count":1,"forks_count":11,"subscribers_count":2,"default_branch":"main","last_synced_at":"2025-11-18T05:24:48.949Z","etag":null,"topics":["ruby","ruby-gem"],"latest_commit_sha":null,"homepage":"https://sanifhimani.github.io/monday_ruby/","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/sanifhimani.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":"CODE_OF_CONDUCT.md","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,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2023-06-19T22:58:49.000Z","updated_at":"2025-11-03T01:28:44.000Z","dependencies_parsed_at":"2023-06-28T12:00:28.265Z","dependency_job_id":"889cf70b-5c83-4aab-9902-5112d2f072cf","html_url":"https://github.com/sanifhimani/monday_ruby","commit_stats":null,"previous_names":["sanifhimani/monday-ruby"],"tags_count":10,"template":false,"template_full_name":null,"purl":"pkg:github/sanifhimani/monday_ruby","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sanifhimani%2Fmonday_ruby","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sanifhimani%2Fmonday_ruby/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sanifhimani%2Fmonday_ruby/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sanifhimani%2Fmonday_ruby/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/sanifhimani","download_url":"https://codeload.github.com/sanifhimani/monday_ruby/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sanifhimani%2Fmonday_ruby/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28682675,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-01-23T05:48:07.525Z","status":"ssl_error","status_checked_at":"2026-01-23T05:48:07.129Z","response_time":59,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"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":["ruby","ruby-gem"],"created_at":"2026-01-23T07:15:08.223Z","updated_at":"2026-01-23T07:15:10.208Z","avatar_url":"https://github.com/sanifhimani.png","language":"Ruby","readme":"# monday_ruby\n\n![Build Status](https://github.com/sanifhimani/monday_ruby/actions/workflows/ci.yml/badge.svg)\n[![Gem Version](https://badge.fury.io/rb/monday_ruby.svg)](https://badge.fury.io/rb/monday_ruby)\n[![Coverage Status](https://coveralls.io/repos/github/sanifhimani/monday_ruby/badge.svg?branch=main)](https://coveralls.io/github/sanifhimani/monday_ruby?branch=main)\n\nA Ruby client library for the [monday.com GraphQL API](https://developer.monday.com/api-reference). Build integrations with boards, items, columns, and more using idiomatic Ruby.\n\n## Features\n\n- **Resource-based API** - Clean, intuitive interface (`client.board.query`, `client.item.create`)\n- **Flexible configuration** - Global or per-client setup\n- **Comprehensive error handling** - Typed exceptions for different error scenarios\n- **Cursor-based pagination** - Efficiently handle large datasets\n- **Fully tested** - 100% test coverage with VCR-recorded fixtures\n\n## Documentation\n\n**[Complete Documentation →](https://sanifhimani.github.io/monday_ruby/)**\n\n- [Getting Started Tutorial](https://sanifhimani.github.io/monday_ruby/tutorial/first-integration)\n- [How-to Guides](https://sanifhimani.github.io/monday_ruby/guides/installation)\n- [API Reference](https://sanifhimani.github.io/monday_ruby/reference/client)\n- [Best Practices](https://sanifhimani.github.io/monday_ruby/explanation/best-practices/errors)\n\n## Installation\n\nAdd to your Gemfile:\n\n```ruby\ngem \"monday_ruby\"\n```\n\nOr install directly:\n\n```bash\ngem install monday_ruby\n```\n\n## Quick Start\n\n```ruby\nrequire \"monday_ruby\"\n\n# Configure with your API token\nMonday.configure do |config|\n  config.token = ENV[\"MONDAY_TOKEN\"]\nend\n\n# Create a client\nclient = Monday::Client.new\n\n# Query boards\nresponse = client.board.query(args: { limit: 5 })\n\nif response.success?\n  boards = response.body.dig(\"data\", \"boards\")\n  boards.each { |board| puts board[\"name\"] }\nend\n```\n\nGet your API token from your [monday.com Admin settings](https://support.monday.com/hc/en-us/articles/360005144659-Does-monday-com-have-an-API).\n\n## Usage\n\n### Configuration\n\n**Global configuration** (recommended):\n\n```ruby\nMonday.configure do |config|\n  config.token = ENV[\"MONDAY_TOKEN\"]\n  config.version = \"2024-01\"  # API version (optional)\nend\n\nclient = Monday::Client.new\n```\n\n**Per-client configuration**:\n\n```ruby\nclient = Monday::Client.new(\n  token: ENV[\"MONDAY_TOKEN\"],\n  version: \"2024-01\"\n)\n```\n\n**Configure timeouts**:\n\n```ruby\nMonday.configure do |config|\n  config.token = ENV[\"MONDAY_TOKEN\"]\n  config.open_timeout = 10  # seconds (default: 10)\n  config.read_timeout = 30  # seconds (default: 30)\nend\n```\n\n### Working with Boards\n\n```ruby\n# Query boards\nresponse = client.board.query(\n  args: { ids: [1234567890] },\n  select: [\"id\", \"name\", \"description\"]\n)\n\nboards = response.body.dig(\"data\", \"boards\")\n\n# Create a board\nresponse = client.board.create(\n  args: {\n    board_name: \"Project Tasks\",\n    board_kind: \"public\",\n    description: \"Track project deliverables\"\n  }\n)\n\nboard = response.body.dig(\"data\", \"create_board\")\n```\n\n### Working with Items\n\n```ruby\n# Create an item\nresponse = client.item.create(\n  args: {\n    board_id: 1234567890,\n    item_name: \"Implement authentication\",\n    column_values: {\n      status: { label: \"Working on it\" },\n      date4: { date: \"2024-12-31\" }\n    }\n  }\n)\n\n# Query items\nresponse = client.item.query(\n  args: { ids: [987654321] },\n  select: [\"id\", \"name\", { column_values: [\"id\", \"text\"] }]\n)\n\nitems = response.body.dig(\"data\", \"items\")\n```\n\n### Pagination\n\nHandle large datasets efficiently with cursor-based pagination:\n\n```ruby\n# Fetch first page\nresponse = client.board.items_page(\n  board_ids: 1234567890,\n  limit: 100\n)\n\nitems = response.body.dig(\"data\", \"boards\", 0, \"items_page\", \"items\")\ncursor = response.body.dig(\"data\", \"boards\", 0, \"items_page\", \"cursor\")\n\n# Fetch next page\nif cursor\n  next_response = client.board.items_page(\n    board_ids: 1234567890,\n    limit: 100,\n    cursor: cursor\n  )\nend\n```\n\nSee the [Pagination Guide](https://sanifhimani.github.io/monday_ruby/guides/advanced/pagination) for more details.\n\n### Error Handling\n\nThe library provides typed exceptions for different error scenarios:\n\n```ruby\nbegin\n  response = client.board.query(args: { ids: [123] })\nrescue Monday::AuthorizationError =\u003e e\n  puts \"Invalid API token: #{e.message}\"\nrescue Monday::InvalidRequestError =\u003e e\n  puts \"Invalid request: #{e.message}\"\nrescue Monday::RateLimitError =\u003e e\n  puts \"Rate limit exceeded: #{e.message}\"\nrescue Monday::Error =\u003e e\n  puts \"API error: #{e.message}\"\nend\n```\n\nSee the [Error Handling Guide](https://sanifhimani.github.io/monday_ruby/guides/advanced/errors) for best practices.\n\n## Available Resources\n\nThe client provides access to all monday.com resources:\n\n- **Boards** - `client.board`\n- **Items** - `client.item`\n- **Columns** - `client.column`\n- **Files** - `client.file`\n- **Groups** - `client.group`\n- **Updates** - `client.update`\n- **Subitems** - `client.subitem`\n- **Workspaces** - `client.workspace`\n- **Folders** - `client.folder`\n- **Account** - `client.account`\n- **Activity Logs** - `client.activity_log`\n- **Board Views** - `client.board_view`\n\nFor complete API documentation, see the [API Reference](https://sanifhimani.github.io/monday_ruby/reference/client).\n\n## Development\n\n### Running Tests\n\n```bash\nbundle exec rake spec\n```\n\nTests use [VCR](https://github.com/vcr/vcr) to record HTTP interactions, so you don't need a monday.com API token to run them.\n\n### Linting\n\n```bash\nbundle exec rake rubocop\n```\n\n### All Checks\n\n```bash\nbundle exec rake  # Runs both tests and linter\n```\n\n## Contributing\n\nBug reports and pull requests are welcome on [GitHub](https://github.com/sanifhimani/monday_ruby).\n\nPlease read our [Contributing Guide](CONTRIBUTING.md) for details on:\n- Development setup and testing\n- Documentation guidelines\n- Code style and commit conventions\n\nThis project follows the [Contributor Covenant Code of Conduct](CODE_OF_CONDUCT.md).\n\n## License\n\nThe gem is available as open source under the terms of the [MIT License](https://opensource.org/licenses/MIT).\n","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsanifhimani%2Fmonday_ruby","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fsanifhimani%2Fmonday_ruby","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsanifhimani%2Fmonday_ruby/lists"}