p202 app create

Register an app from a store link or an app key (claims its stored postbacks)

Writessupports --staged
All commands

01Run it

Replace the <placeholders> with your own values, or use the builder below.

p202 app create

02What you get

Pick the shape you need. People get a table. Add --json, --csv or --ndjson for scripts, or -q for ids only. An AI agent gets compact JSON without asking. All output formats

03Build your command

Pick values and the command line writes itself, quoted and ready to paste.

p202 app create

Set flags below; the command updates as you type.

04Flags

16 flags, plus the global flags every command takes.

FlagWhat it does
--accept-test-signalsstring1 = trust test signals for this app (AdAttributionKit development-signed postbacks, Android test installs; integration testing), 0 = store them flagged (default): 0, 1
01
--app-keystringThe App Store id (iOS) or the package name (Android)
--app-namestringDisplay name for reports
--attribution-window-daysstringAndroid: days after its click an install may begin and still be attributed (1-365, default 7)
--ctit-max-secondsstringAndroid: flag an install that began later than this after its click (60-31536000, default 86400)
--ctit-min-secondsstringAndroid: flag an install that began sooner than this after its click (0-3600, default 10)
--event-cap-per-minutestringAndroid: events one install may post a minute; past it 429 (100-60000, default 200)
--fast-goal-policystringAndroid: what a fast goal does, one of count, hold: count (pay it and flag it, default) or hold (flag it, never pay)
counthold
--fast-goal-secondsstringAndroid: flag a goal reached sooner than this after its install (0-3600, default 5; 0 flags none)
--install-cap-per-minutestringAndroid: installs the app may report a minute; past it 429 (1-60000, default 300)
--integrity-cloud-project-numberstringAndroid: the Google Cloud project NUMBER the SDK requests integrity tokens for (required for observe/require; can be replaced, not cleared)
--integrity-modestringAndroid: Play Integrity mode, one of off, observe, require: off (default), observe (record verdicts) or require (attribute only a passing verdict); needs app integrity credential set first and --integrity-cloud-project-number
offobserverequire
--notesstringFree-form notes
--platformstringPlatform (default: read from --app-key or --store-link): ios, android
iosandroid
--trust-client-revenuestringAndroid: 1 = revenue the app reports may be paid by a goal valued from it; 0 = stored, never credited (default): 0, 1
01

05How it works

Registers one app. Name it with --store-link (an App Store or Google Play link, a market:// link, a numeric App Store id or a package name) or with --app-key (the App Store id for iOS, the package name for Android; --platform is read from the key's shape when left out). The server reads the link, so every client parses it the same way.

06For agents

Running this from an agent

  • Read the same facts as JSON: p202 commands app create --json.
  • With AI_AGENT, CLAUDECODE or another agent variable set, output is compact JSON and errors arrive on stderr as a JSON envelope with a hint.
  • Exit codes: 0 ok, 1 bad input, 2 auth, 3 network, 4 server error, 5 partial failure.
  • This command writes. Add --staged to record it as a proposal a person applies with p202 change apply.
p202 commands app create --json
{
  "path": "p202 app create",
  "use": "create",
  "short": "Register an app from a store link or an app key (claims its stored postbacks)",
  "long": "Registers one app. Name it with --store-link (an App Store or Google Play link, a\nmarket:// link, a numeric App Store id or a package name) or with --app-key (the App\nStore id for iOS, the package name for Android; --platform is read from the key's\nshape when left out). The server reads the link, so every client parses it the same way.",
  "runnable": true,
  "flags": [
    {
      "name": "accept-test-signals",
      "type": "string",
      "default": "",
      "usage": "1 = trust test signals for this app (AdAttributionKit development-signed postbacks, Android test installs; integration testing), 0 = store them flagged (default): 0, 1",
      "allowed_values": [
        "0",
        "1"
      ],
      "required": false
    },
    {
      "name": "app-key",
      "type": "string",
      "default": "",
      "usage": "The App Store id (iOS) or the package name (Android)",
      "required": false
    },
    {
      "name": "app-name",
      "type": "string",
      "default": "",
      "usage": "Display name for reports",
      "required": false
    },
    {
      "name": "attribution-window-days",
      "type": "string",
      "default": "",
      "usage": "Android: days after its click an install may begin and still be attributed (1-365, default 7)",
      "required": false
    },
    {
      "name": "ctit-max-seconds",
      "type": "string",
      "default": "",
      "usage": "Android: flag an install that began later than this after its click (60-31536000, default 86400)",
      "required": false
    },
    {
      "name": "ctit-min-seconds",
      "type": "string",
      "default": "",
      "usage": "Android: flag an install that began sooner than this after its click (0-3600, default 10)",
      "required": false
    },
    {
      "name": "event-cap-per-minute",
      "type": "string",
      "default": "",
      "usage": "Android: events one install may post a minute; past it 429 (100-60000, default 200)",
      "required": false
    },
    {
      "name": "fast-goal-policy",
      "type": "string",
      "default": "",
      "usage": "Android: what a fast goal does, one of count, hold: count (pay it and flag it, default) or hold (flag it, never pay)",
      "allowed_values": [
        "count",
        "hold"
      ],
      "required": false
    },
    {
      "name": "fast-goal-seconds",
      "type": "string",
      "default": "",
      "usage": "Android: flag a goal reached sooner than this after its install (0-3600, default 5; 0 flags none)",
      "required": false
    },
    {
      "name": "install-cap-per-minute",
      "type": "string",
      "default": "",
      "usage": "Android: installs the app may report a minute; past it 429 (1-60000, default 300)",
      "required": false
    },
    {
      "name": "integrity-cloud-project-number",
      "type": "string",
      "default": "",
      "usage": "Android: the Google Cloud project NUMBER the SDK requests integrity tokens for (required for observe/require; can be replaced, not cleared)",
      "required": false
    },
    {
      "name": "integrity-mode",
      "type": "string",
      "default": "",
      "usage": "Android: Play Integrity mode, one of off, observe, require: off (default), observe (record verdicts) or require (attribute only a passing verdict); needs `app integrity credential set` first and --integrity-cloud-project-number",
      "allowed_values": [
        "off",
        "observe",
        "require"
      ],
      "required": false
    },
    {
      "name": "notes",
      "type": "string",
      "default": "",
      "usage": "Free-form notes",
      "required": false
    },
    {
      "name": "platform",
      "type": "string",
      "default": "",
      "usage": "Platform (default: read from --app-key or --store-link): ios, android",
      "allowed_values": [
        "ios",
        "android"
      ],
      "required": false
    },
    {
      "name": "store-link",
      "type": "string",
      "default": "",
      "usage": "App Store or Google Play link, market:// link, App Store id or package name",
      "required": false
    },
    {
      "name": "trust-client-revenue",
      "type": "string",
      "default": "",
      "usage": "Android: 1 = revenue the app reports may be paid by a goal valued from it; 0 = stored, never credited (default): 0, 1",
      "allowed_values": [
        "0",
        "1"
      ],
      "required": false
    }
  ]
}