{"id":24568166,"url":"https://github.com/kyledecot/app_store_connect","last_synced_at":"2025-05-15T11:06:57.451Z","repository":{"id":39988265,"uuid":"173313975","full_name":"kyledecot/app_store_connect","owner":"kyledecot","description":"A Ruby interface to the App Store Connect API","archived":false,"fork":false,"pushed_at":"2025-01-30T20:13:13.000Z","size":352,"stargazers_count":56,"open_issues_count":9,"forks_count":30,"subscribers_count":5,"default_branch":"main","last_synced_at":"2025-04-04T00:06:06.443Z","etag":null,"topics":["appstoreconnect","itunesconnect","ruby","rubygem"],"latest_commit_sha":null,"homepage":"https://rubygems.org/gems/app_store_connect","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/kyledecot.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":".github/FUNDING.yml","license":"LICENSE.txt","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},"funding":{"github":"kyledecot"}},"created_at":"2019-03-01T14:18:37.000Z","updated_at":"2025-02-19T14:37:39.000Z","dependencies_parsed_at":"2024-06-18T16:41:01.663Z","dependency_job_id":"1eb54b88-9ac7-41cf-a085-541c70624178","html_url":"https://github.com/kyledecot/app_store_connect","commit_stats":{"total_commits":283,"total_committers":18,"mean_commits":"15.722222222222221","dds":0.431095406360424,"last_synced_commit":"6b0767816a6994624fd73b6ec8e3db7e49fd2978"},"previous_names":[],"tags_count":41,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kyledecot%2Fapp_store_connect","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kyledecot%2Fapp_store_connect/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kyledecot%2Fapp_store_connect/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kyledecot%2Fapp_store_connect/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/kyledecot","download_url":"https://codeload.github.com/kyledecot/app_store_connect/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248441947,"owners_count":21104107,"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":["appstoreconnect","itunesconnect","ruby","rubygem"],"created_at":"2025-01-23T14:19:58.895Z","updated_at":"2025-04-11T16:40:01.781Z","avatar_url":"https://github.com/kyledecot.png","language":"Ruby","readme":"\n\n\u003cdiv align=\"center\"\u003e\n  \u003cimg src=\"assets/banner.png\"\u003e\n\n  \u003ch1\u003eApp Store Connect for Ruby\u003c/h1\u003e\n\n[![CI/CD](https://github.com/kyledecot/app_store_connect/actions/workflows/default.yml/badge.svg)](https://github.com/kyledecot/app_store_connect/actions/workflows/default.yml)\n\u003c/div\u003e\n\n\n\nA Ruby interface to the [App Store Connect API](https://developer.apple.com/app-store-connect/api/)\n\n## Installation\n\nAdd this line to your application's Gemfile:\n\n```Ruby\ngem 'app_store_connect'\n```\n\nAnd then execute:\n\n```Bash\n$ bundle\n```\n\nOr install it yourself as:\n\n```Bash\n$ gem install app_store_connect\n```\n\n## Usage\n\n```ruby\nAppStoreConnect.config = {\n  issuer_id: 'issuer_id',\n  key_id: 'key_id',\n  private_key: File.read(File.new(\"/Path/AuthKey.p8\"))\n}\n\napp_store_connect = AppStoreConnect::Client.new\n\napp_store_connect.apps \napp_store_connect.app(id: '1234')\napp_store_connect.builds(id: '1234')\n```\n\n### Create Bundle ID\n\n```ruby\napp_store_connect.create_bundle_id(\n  name: 'Example', \n  identifier: 'com.kyledecot.Example', \n  platform: 'IOS'\n) \n```\n\n### Sales Reports\n\n```ruby\napp_store_connect.sales_reports(\n  filter: {\n    report_type: 'SALES',\n    report_sub_type: 'SUMMARY',\n    frequency: 'DAILY',\n    vendor_number: '123456'\n  }\n)\n```\n\n### Fetch All Devices\n\n```ruby\n\ndevices = app_store_connect.devices\nputs JSON.pretty_generate(devices)\n\n```\n\n### Register a New Device\n\n```ruby\ncreated_device = app_store_connect.create_device(\n    name: 'name',\n    platform: 'IOS',\n    udid: 'udid'\n  )\n\nputs JSON.pretty_generate(created_device)\n```\n\n### Update an App Store Version\n\n```ruby\napp_store_connect.update_app_store_version(\n  id: '\u003capp-store-version-id\u003e', \n  version_string: '1.0'\n)\n```\n\n### Link a Build to an App Store Version\n\n```ruby\napp_store_connect.update_app_store_version_build(\n  id: '\u003capp-store-version-id\u003e', \n  build_id: '\u003cbuild-id\u003e'\n)\n```\n\n### Create a Review Submission Item\n\n```ruby\napp_store_connect.create_review_submission_item(\n  relationships: {\n    reviewSubmission: {\n      data: {\n        id: '\u003creview-submission-id\u003e', \n        type: 'reviewSubmissions'\n      }\n    },\n    appStoreVersion: {\n      data: {\n        id: '\u003capp-store-version-id\u003e', \n        type: 'appStoreVersions'\n      }\n    }\n  }\n)\n```\n\n### Create In-App Purchase Price Schedule\n\n```ruby\napp_store_connect.create_in_app_purchase_price_schedule(\n  relationships: {\n    manual_prices: {\n      data: [\n        {\n          type: 'inAppPurchasePrices',\n          id: '${price1}'\n        }\n      ]\n    },\n    in_app_purchase: {\n      data: {\n        type: 'inAppPurchases',\n        id: '\u003cin-app-purchase-id\u003e'\n      }\n    }\n  }, \n  included: [\n    {\n      type: 'inAppPurchasePrices',\n      id: '${price1}',\n      attributes: {\n        startDate: nil\n      },\n      relationships: {\n        inAppPurchaseV2: {\n          data: {\n            type: 'inAppPurchases',\n            id: '\u003cin-app-purchase-id\u003e'\n          }\n        },\n        inAppPurchasePricePoint: {\n          data: {\n            type: 'inAppPurchasePricePoints',\n            id: '\u003cprice-point-id\u003e'\n          }\n        }\n      }\n    }\n  ]\n)\n```\n\n### Add or remove access for a Beta Group to a Build\n\n```ruby\napp_store_connect.add_build_beta_groups(\n  id: '\u003cbuild-id\u003e', \n  data: [{id: '\u003cbeta-group-id\u003e'}]\n)\n\napp_store_connect.delete_build_beta_groups(\n  id: '\u003cbuild-id\u003e', \n  data: [{id: '\u003cbeta-group-id\u003e'}]\n)\n\n```\n\n## FAQ\n\n### How to understand the `devices, sales_reports, create_bundle_id` keyword seen in the demo?\n\nIt's function key from `schema.json` file.\n\n### How to understand `()` in the demo, and when should use it? eg: `create_bundle_id()`, `sales_reports()`\n\n`()` is mean: you have mapped to `http_body_type` in file `schema.json`\n\n### How to set this content in `()`\n\n`http_body_type` have a value type. Based on this value, we can find the definition of the relevant configuration in the source code of ruby.\n\n### How to include related resources?\n\n```ruby\napp_store_connect.in_app_purchase(id: 123, include: 'appStoreReviewScreenshot,pricePoints')\n```\n\n### How to filter fields?\n\n```ruby\napp_store_connect.in_app_purchase(id: 123, fields: 'name,productId')\n```\n\n## Development\n\nAfter checking out the repo, run `bundle install` to install dependencies. Then, run `rake spec` to run the tests. You can also run `rake console` for an interactive prompt that will allow you to experiment.\n\n## Contributing\n\nBug reports and pull requests are welcome on GitHub at https://github.com/kyledecot/app_store_connect.\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":["https://github.com/sponsors/kyledecot"],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fkyledecot%2Fapp_store_connect","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fkyledecot%2Fapp_store_connect","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fkyledecot%2Fapp_store_connect/lists"}