No release in over a year
A Ruby interface to the App Store Connect API
2005
2006
2007
2008
2009
2010
2011
2012
2013
2014
2015
2016
2017
2018
2019
2020
2021
2022
2023
2024
 Dependencies

Development

~> 4.7.3
~> 6.2.1
~> 0.14.1
~> 13.0.6
~> 3.12.0
~> 1.50.1
~> 1.6.1
~> 0.22.0
~> 0.9.5
~> 3.18.1
~> 4.0.2

Runtime

>= 1.4
>= 2.6.7
 Project Readme

App Store Connect for Ruby

CI/CD

A Ruby interface to the App Store Connect API

Installation

Add this line to your application's Gemfile:

gem 'app_store_connect'

And then execute:

$ bundle

Or install it yourself as:

$ gem install app_store_connect

Usage

AppStoreConnect.config = {
  issuer_id: 'issuer_id',
  key_id: 'key_id',
  private_key: File.read(File.new("/Path/AuthKey.p8"))
}

app_store_connect = AppStoreConnect::Client.new

app_store_connect.apps 
app_store_connect.app(id: '1234')
app_store_connect.builds(id: '1234')

Create Bundle ID

app_store_connect.create_bundle_id(
  name: 'Example', 
  identifier: 'com.kyledecot.Example', 
  platform: 'IOS'
) 

Sales Reports

app_store_connect.sales_reports(
  filter: {
    report_type: 'SALES',
    report_sub_type: 'SUMMARY',
    frequency: 'DAILY',
    vendor_number: '123456'
  }
)

Fetch All Devices

devices = app_store_connect.devices
puts JSON.pretty_generate(devices)

Register a New Device

created_device = app_store_connect.create_device(
    name: 'name',
    platform: 'IOS',
    udid: 'udid'
  )

puts JSON.pretty_generate(created_device)

Update an App Store Version

app_store_connect.update_app_store_version(
  id: '<app-store-version-id>', 
  version_string: '1.0'
)

Link a Build to an App Store Version

app_store_connect.update_app_store_version_build(
  id: '<app-store-version-id>', 
  build_id: '<build-id>'
)

Create a Review Submission Item

app_store_connect.create_review_submission_item(
  relationships: {
    reviewSubmission: {
      data: {
        id: '<review-submission-id>', 
        type: 'reviewSubmissions'
      }
    },
    appStoreVersion: {
      data: {
        id: '<app-store-version-id>', 
        type: 'appStoreVersions'
      }
    }
  }
)

Create In-App Purchase Price Schedule

app_store_connect.create_in_app_purchase_price_schedule(
  relationships: {
    manual_prices: {
      data: [
        {
          type: 'inAppPurchasePrices',
          id: '${price1}'
        }
      ]
    },
    in_app_purchase: {
      data: {
        type: 'inAppPurchases',
        id: '<in-app-purchase-id>'
      }
    }
  }, 
  included: [
    {
      type: 'inAppPurchasePrices',
      id: '${price1}',
      attributes: {
        startDate: nil
      },
      relationships: {
        inAppPurchaseV2: {
          data: {
            type: 'inAppPurchases',
            id: '<in-app-purchase-id>'
          }
        },
        inAppPurchasePricePoint: {
          data: {
            type: 'inAppPurchasePricePoints',
            id: '<price-point-id>'
          }
        }
      }
    }
  ]
)

Add or remove access for a Beta Group to a Build

app_store_connect.add_build_beta_groups(
  id: '<build-id>', 
  data: [{id: '<beta-group-id>'}]
)

app_store_connect.delete_build_beta_groups(
  id: '<build-id>', 
  data: [{id: '<beta-group-id>'}]
)

FAQ

How to understand the devices, sales_reports, create_bundle_id keyword seen in the demo?

It's function key from schema.json file.

How to understand () in the demo, and when should use it? eg: create_bundle_id(), sales_reports()

() is mean: you have mapped to http_body_type in file schema.json

How to set this content in ()

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.

How to include related resources?

app_store_connect.in_app_purchase(id: 123, include: 'appStoreReviewScreenshot,pricePoints')

How to filter fields?

app_store_connect.in_app_purchase(id: 123, fields: 'name,productId')

Development

After 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.

Contributing

Bug reports and pull requests are welcome on GitHub at https://github.com/kyledecot/app_store_connect.

License

The gem is available as open source under the terms of the MIT License.