============== App management ============== This document should provide all the details on various aspects of using |automation| API. .. _info-create-new-app: Creating new Apps ----------------- App creation is a one-off action triggered by sending data such as store ID/bundle ID using POST request to :ref:`post-app` endpoint. If the App does not exist in Adjust it will be created during the request and the new App token will be returned immediately to the client in the response for further use. Once the app token is available to the user :ref:`get-app-adjust_app_token` endpoint can be used to fetch basic app information. Settings are copied from the :term:`Template app` in the `Background jobs`_. App settings updates -------------------- When a new app is created using :ref:`post-app` endpoint, a background job will be created which will migrate the settings from :term:`Template app` to the destination app and the POST data remembered for future reference. .. _background-jobs: Background jobs --------------- Once the |automation| receives the request from the client it schedules a background job to do actual work. Background jobs will automatically populate App Settings, Events, RAW Export and other Adjust settings based on the :term:`Template app` and pre-shared configuration (i.e. S3 secrets, network accounts etc). Background jobs that migrate settings are only created if the POST data we received has changed since the last request. Requests that create new apps will always create background jobs. Reasoning for this behavior is that once you create a new app out of the :term:`Template app` there is nothing to update later unless the user provides additional setup data in the request. Forcing settings updates ------------------------ In the case you have updated the :term:`Template app` after the target app has been created you can force update of all the settings by sending all the necessary POST data and adding force_update keyword to the JSON data sent to the endpoint. :: { "name": "Strava", "platform": "android", "bundle_id": "com.strava", "force_update": true } Settings requiring additional data ---------------------------------- Some settings depend on data to be sent in the POST request, such as Partner Setup which requires certain information from the client for channel setup. If this data is missing in the request, dependent settings will be skipped. It is possible to send additional data in subsequent requests. Android signatures ------------------ In the case of Android, once SHA1 hash is available, an additional :ref:`post-app` request can be used to start the Signature file generation. Fetching signatures ------------------- Cross-platform requests of :ref:`get-signature_bundle_id` can be used to collect the SDK signature binaries using bundle_id. Once available, Automation API will provide a single archive for both platforms to be unpacked into the Unity project. .. _sections: Sections -------- It is possible to update or create only specific app settings sections. Add into :ref:`post-app` request the field ``sections`` and the list of interested sections to sync:: { "name": "Strava", "platform": "android", "bundle_id": "com.strava", "store_id": "com.strava", "sections": ["events", "csv_upload_settings"] } The possible values:: [ "events", "partners", "csv_upload_settings", "skad_network", "attribution_settings", "trackers", "callbacks", "sdk_secrets", "external_data_forwarding", "fraud_prevention_settings", "purchase_verification" ] .. WARNING:: Some of the sections depend on each other. - ``csv_upload_settings`` update depends on ``events`` section.. - ``trackers`` update depends on ``partners`` and ``events``. - ``partners`` update depends on ``events`` - ``callbacks`` update depends on ``events`` It's the user's responsibility to include dependent sections to the request. The user can ignore it if no changes have been done in :term:`Template app` into conditional sections. Other ------ :ref:`get-app-store_id_platform` endpoint is used to collect the CrossPromotion tracker token once it is available. :ref:`get-channels` method will be available to query the networks which are available to create new campaigns for. :ref:`post-campaign` is used to request Click and Impression URLs to be shared with the corresponding partner.