Runway Documentation
  • About Runway
  • 🚀Getting started
    • Adding apps
    • Setting up your integrations
      • Branching strategies
      • Builds and branches
      • Pattern strings / tokens
    • Preparing your first release
    • Setting up your team
  • 🎛️Using Runway
    • Navigating Runway
    • Build Distro
      • Quickstart
      • Uploading builds for distribution
      • Build Distro buckets
      • Sharing builds
      • Installing builds
      • Signing and provisioning cheat sheet
    • App overview
    • Releases
      • Release overview
      • Feature flags
      • Kickoff
      • Feature readiness
      • Translations
      • Release candidate
      • Regression testing
      • Beta testing
      • Screenshots
      • Metadata
      • Approvals
      • App submission
      • App store review
      • Release
    • Release schedule
    • Rollout
    • Hotfixes
    • Rollbacks
    • Checklists
    • Build matching
    • App settings
      • General settings
      • Team settings
      • Release pilot rotation
      • Integrations settings
      • Profiles and devices
      • Signing keys
      • Health metrics settings
      • Automations settings
      • Notifications settings
      • Schedule settings
      • Beta testing settings
      • Metadata settings
      • Release defaults
      • Checklists settings
      • Custom strings settings
    • Organization overview
    • Organization settings
      • Team
      • SSO/SAML
    • User settings
    • Over-the-air (OTA) releases
  • ⚙️Integrations
    • Integrations overview
    • Version control
      • Azure Repos
      • Bitbucket
      • GitHub
      • GitLab
    • Project management
      • Asana
      • Azure Boards
      • GitHub Issues
      • Jira
      • Linear
      • Pivotal Tracker
      • Monday.com
      • Shortcut
    • CI/CD
      • App Center Build
      • Azure Pipelines
      • Bitbucket Pipelines
      • Bitrise
      • Buildkite
      • CircleCI
      • Codemagic
      • GitHub Actions
      • GitLab CI
      • Jenkins
      • TravisCI
      • Xcode Cloud
    • Regression testing
      • TestRail
      • Xray
    • Beta testing
      • Google Play testing tracks
      • TestFlight
      • App Center
      • Firebase App Distribution
    • App stores
      • App Store Connect
      • Google Play Console
      • Amazon Appstore
      • Huawei AppGallery
      • Samsung Galaxy Store
    • Notifications
      • Microsoft Teams
      • Slack
    • Stability monitoring
      • BugSnag
      • Datadog
      • Embrace
      • Firebase Crashlytics
      • New Relic
      • Sentry
      • Dynatrace
    • Observability & analytics
      • Amplitude
      • Datadog
      • Google Analytics
      • Mixpanel
      • New Relic
      • Custom observability & analytics
    • Feature flagging
      • Optimizely
      • LaunchDarkly
    • Scheduling
      • Opsgenie
      • PagerDuty
    • Translations
      • Crowdin
      • Lokalise
    • Calendar
      • Google Calendar
  • ⚡Automations
    • Automations overview
    • Types of automations
  • 🔔Notifications
    • Notifications overview
    • Types of notifications
  • 🪝Webhooks
    • Outgoing webhooks
  • 📡REST API
    • Overview
    • Reference Docs
    • Markdown Badge API
    • App configuration files
  • 🛠️Quickstart CI/CD
    • Quickstart CI/CD overview
    • Getting started
  • Support
    • Contact us
Powered by GitBook
On this page
  • Fetching an existing app's configuration file
  • Adding an app using a YAML configuration file

Was this helpful?

  1. REST API

App configuration files

PreviousMarkdown Badge APINextQuickstart CI/CD overview

Last updated 5 months ago

Was this helpful?

Although adding and configuring apps in Runway can primarily be accomplished via the Runway web app, it's also now possible for teams to accomplish this programmatically through Runway’s public API using YAML configuration files.

Fetching an existing app's configuration file

You can access the configuration file of any of your existing apps in Runway by using the GET /app/{appId}/config in Runway's public API. The resulting YAML file will contain your app's current configuration details, which can be a good starting point if you want to programmatically create new apps in Runway with similar configurations.

Adding an app using a YAML configuration file

You can add an app to your Runway organization programmatically by calling the POST /app/config in Runway's public API with a .yml configuration file in the request body.

The configuration file must include the required properties for successful app creation. See below for a sample configuration file in YAML syntax.

Required properties for app creation are:

  • name

  • platform

Properties that are not required will either be left empty or be populated with default values by Runway if not specified.

# App example
# Describes an App within Runway
---
name: Apollo
platform: ios
appGroup: 'Apollo'
icon: 'https://uploads-ssl.webflow.com/5edfa38a1bd219267bdf69b7/5fadc479febc556d17ade92e_nasa-org.png'
integrations:
    'GitHub Apollo': # The ID or alias of an integration
        type: 'github-vcs' # For available integration types, see https://api-docs.runway.team/#tag/IntegrationType
        provider: 'Apple GH' # Matches on either ID or alias
        data:
            repoName: 'apollo-ios' # The payload used to configure the integration. Dependent on integration type. For examples, compare to a payload from the GET app config endpoint.
    'App Store Apollo':
        type: 'apple'
        provider: 'Apple App Store'
        data:
            bundleId: 'com.nasa.apollo'
    'Build system Apollo':
        type: 'github-ci'
        provider: 'github:111222333' # example of a provider ID
        data:
            workflowId: 'demo-ios/deploy'
            devWorkflowId: 'demo-ios/build'
    'Testrail Apollo':
        type: 'testrail'
        provider: 'Testrail'
        data:
            testRunNameKeywords: 'iOS'
            project: 'Demo Testrail iOS'
    'JIRA Apollo':
        type: 'jira'
        provider: 'JIRA'
        data:
            projects: ['Demo', 'Demo-Core']
            additionalDoneStatuses: ['Done', 'Deployed', 'Ready to Release']
    'Beta testing Apollo':
        type: 'apple-beta'
        provider: 'Apple App Store'
        data:
            bundleId: 'com.nasa.apollo'
    'Slack Apollo':
        type: 'slack'
        provider: 'Slack'
        data:
            primaryChannelIds: ['#apollo-releases']
    'Sentry Apollo':
        type: 'sentry'
        provider: 'Sentry'
        data:
            orgId: 'NASA'
            projectId: 'Apollo iOS'
            prodEnvironmentIdentifier: 'production'
            betaEnvironmentIdentifier: 'beta'
    'Amplitude Apollo':
        type: 'amplitude'
        provider: 'amplitude'
        data:
            selectedEventsAndParams:
                - eventName: 'add to cart'
                - eventName: 'view checkout'
                  paramName: 'amount'
                - eventName: 'view checkout'
                  paramName: 'itemCount'
    'Optimizely Apollo':
        provider: 'Optimizely'
        data:
            projectId: 'Apollo'
            environmentId: 'Production'
            versionAttributeName: 'app_version'
    'PagerDuty Apollo':
        type: 'pagerduty-scheduling'
        provider: 'PagerDuty'
        data:
            scheduleId: 'Apollo Release Rotation'
    'Crowdin Apollo':
        type: 'crowdin'
        provider: 'Crowdin'
        data:
            projectId: 'Apollo'
            metadataProjectId: 'Apollo Metadata'
buildDistro:
    buckets:
        'Release Candidates': # bucket name
            type: 'rc' # For available bucket types, see https://api-docs.runway.team/#tag/BucketType
            orgWideAccessEnabled: true
            notificationsEnabled: true
            members:
                'Release pilot': 'tester'
                'PMs': 'tester'
                'EMs': 'admin'
            rules:
                - branch: 'release-{version}'
                  type: 'Branch' # can be 'Branch' or 'PR'
                  workflow: 'build-rc'
                  fileFilterPatterns:
                      - '{*}.ipa'
        'Development':
            type: 'dev'
            notificationsEnabled: true
            members: # group or user to permission level
                'Release pilot': 'tester' # permission level can be 'admin', 'uploader', or 'tester'
                'PMs': 'tester'
                'QA': 'tester'
                'EMs': 'admin'
            rules:
                - baseBranch: 'main'
                  type: 'PR'
                  workflow: 'demo-ios/build'
                  fileFilterPatterns:
                      - '{*}.ipa'
appSettings:
    defaultReleaseType: 'minor' # can be any non-hotfix type: https://api-docs.runway.team/#tag/ReleaseType
    assumeHotfixesArePointReleases: false
    versionFiles:
        - 'appollo.xcodeproj/project.pbxproj'
        - 'appollo/settings.xcconfig'
    localizationDirectories:
        - 'appollo/resources'
    requireFixApprovals: false
    enableFixStatusChecks: false # can only be true if requireFixApprovals is true
    hideNotRequiredReleaseStepsInTimeline: false
    appUsers:
        - aearhart@demo.com
        - ssullenberger@demo.com
        - narmstrong@demo.com
        - mjemison@demo.com
    branchSettings:
      'GitHub Apollo': # must match a VCS integration specified in the integrations section
            releaseBranchPatterns:
              all:
                pattern: 'release-{version}'
              hotfix:
                pattern: 'hotfix-{version}'
            workingBranch: main
    tagSettings:
        tagSettingsMain:
            pattern: '{version}'
    featureAffiliations:
        FA Fix Versions:
            integration: 'Jira Apollo' # must match an issue tracking integration ID or alias
            type: 'fixVersion'
            pattern: '{version}'
    appStoreReleaseSettings:
        releaseMethod: manual
        phasedReleaseEnabled: true
stepGroups: # all steps for the app, arranged in groups
    - steps:
          - name: Kickoff
            archetype: 'kickoff' # type of the step. For valid types, see https://api-docs.runway.team/#tag/ReleaseStepType
            releaseTypes: # the release types for this step. Can be 'standard', 'hotfix', or 'rollback'
              standard:
                required: true # whether this step is required for the given release type
              hotfix:
                required: true
          - name: 'Feature readiness'
            archetype: 'featureReadiness'
            releaseTypes:
              standard:
                required: true
              hotfix:
                required: false
          - name: Translations
            archetype: 'translations'
            releaseTypes:
              standard:
                required: true
              hotfix:
                required: false
          - name: 'Rollback build'
            archetype: 'rollbackBuild' # The special 'rollbackBuild' step is only valid for the 'rollback' release type
            releaseTypes:
              rollback:
                required: true
    - steps:
          - name: Release candidate
            archetype: 'releaseCandidate'
            releaseTypes:
              standard:
                required: true
              hotfix:
                required: true
          - name: Regression testing
            archetype: 'regressionTesting'
            releaseTypes:
              standard:
                required: true
              hotfix:
                required: false
          - name: Beta testing
            archetype: 'betaTesting'
            releaseTypes:
              standard:
                required: true
              hotfix:
                required: false
    - steps:
          - name: Screenshots
            archetype: 'screenshots'
            releaseTypes:
              standard:
                required: true
              hotfix:
                required: false
              rollback:
                required: true
          - name: Metadata
            archetype: 'metadata'
            releaseTypes:
              standard:
                required: true
              hotfix:
                required: false
              rollback:
                required: true
    - steps:
          - name: Approvals
            archetype: 'approvals'
            releaseTypes:
              standard:
                required: true
              hotfix:
                required: true
              rollback:
                required: true
    - steps:
          - name: Submit
            archetype: 'submission'
            releaseTypes:
              standard:
                required: true
              hotfix:
                required: true
              rollback:
                required: true
          - name: Review
            archetype: 'storeReview'
            releaseTypes:
              standard:
                required: true
              hotfix:
                required: true
              rollback:
                required: true
          - name: Release
            archetype: 'takeoff'
            releaseTypes:
              standard:
                required: true
              hotfix:
                required: true
              rollback:
                required: true

Not all properties of your app in Runway are currently configurable programatically. If you wish to configure a property that's not supported via programatic configuration, you must use the web UI.

Integrations can only be configured programmatically if they're using an existing integration provider. If you need to authenticate with a new integration provider, you must do so using the Runway web UI.

📡
endpoint
endpoint