# Google Play Integration via LowCodeAPI

**Last Updated**: January 05, 2025

## Overview
Google Play Android Publisher API for managing Android applications on Google Play

**Categories:**
- {'id': 'app-stores', 'name': 'App Stores', 'description': 'Mobile app store and developer platform APIs for managing app submissions, updates, and analytics', 'priority': 11.5}

## Base Endpoint
https://api.lowcodeapi.com/googleplay

**Important**: Always include the provider name in the URL path after `api.lowcodeapi.com/`

## Authentication
**Type:** OAUTH2.0

**Official Documentation:** https://developers.google.com/android-publisher/api-ref/rest

## URL Format (Important)

LowCodeAPI supports two URL formats. **Always try the New Format first**, then fall back to Old Format if needed.

### New Format (Priority)
- Path parameters stay in the URL path
- Do NOT include path parameters as query parameters
- Example: `https://api.lowcodeapi.com/{provider}/resource/{id}?api_token=XXX`

### Old Format (Fallback)
- Path parameters become query parameters
- Example: `https://api.lowcodeapi.com/{provider}/resource/id?id={id}&api_token=XXX`

### Decision Flow for AI Agents
1. Always use **New Format** first - keep path parameters in the URL path
2. If you get a 404 or error, try **Old Format** with sanitized path
3. Log which format worked for future requests to this provider

## API Categories

## Common Endpoints

### Write data safety labels

**Method:** POST
**LowCodeAPI Path:** /androidpublisher/v3/applications/{packageName}/dataSafety

**New Format URL:**
https://api.lowcodeapi.com/googleplay/androidpublisher/v3/applications/{packageName}/dataSafety?api_token=YOUR_API_TOKEN

**Old Format URL:**
https://api.lowcodeapi.com/googleplay/androidpublisher/v3/applications/packagename/datasafety?packageName={packageName}&api_token=YOUR_API_TOKEN

**Path Parameters:**

| Parameter | Type | Description |
|-----------|------|-------------|
| packageName | string |  |

**Request Body:**

| Field | Type | Description |
|-------|------|-------------|
| safetyLabels | string |  |

**Example Request (New Format):**

```bash
curl -X POST 'https://api.lowcodeapi.com/googleplay/androidpublisher/v3/applications/{packageName}/dataSafety?api_token=YOUR_API_TOKEN'
```

**Official Documentation:** https://developers.google.com/android-publisher/api-ref/rest/v3/applications/dataSafety

### Create device tier config

**Method:** POST
**LowCodeAPI Path:** /androidpublisher/v3/applications/{packageName}/deviceTierConfigs

**New Format URL:**
https://api.lowcodeapi.com/googleplay/androidpublisher/v3/applications/{packageName}/deviceTierConfigs?api_token=YOUR_API_TOKEN

**Old Format URL:**
https://api.lowcodeapi.com/googleplay/androidpublisher/v3/applications/packagename/devicetierconfigs?packageName={packageName}&api_token=YOUR_API_TOKEN

**Path Parameters:**

| Parameter | Type | Description |
|-----------|------|-------------|
| packageName | string |  |

**Request Body:**

| Field | Type | Description |
|-------|------|-------------|
| deviceTierConfig | object |  |

**Example Request (New Format):**

```bash
curl -X POST 'https://api.lowcodeapi.com/googleplay/androidpublisher/v3/applications/{packageName}/deviceTierConfigs?api_token=YOUR_API_TOKEN'
```

**Official Documentation:** https://developers.google.com/android-publisher/api-ref/rest/v3/applications.deviceTierConfigs/create

### Get device tier config

**Method:** GET
**LowCodeAPI Path:** /androidpublisher/v3/applications/{packageName}/deviceTierConfigs/{deviceTierConfigId}

**New Format URL:**
https://api.lowcodeapi.com/googleplay/androidpublisher/v3/applications/{packageName}/deviceTierConfigs/{deviceTierConfigId}?api_token=YOUR_API_TOKEN

**Old Format URL:**
https://api.lowcodeapi.com/googleplay/androidpublisher/v3/applications/packagename/devicetierconfigs/devicetierconfigid?deviceTierConfigId={deviceTierConfigId}&packageName={packageName}&api_token=YOUR_API_TOKEN

**Path Parameters:**

| Parameter | Type | Description |
|-----------|------|-------------|
| deviceTierConfigId | string |  |
| packageName | string |  |

**Example Request (New Format):**

```bash
curl -X GET 'https://api.lowcodeapi.com/googleplay/androidpublisher/v3/applications/{packageName}/deviceTierConfigs/{deviceTierConfigId}?api_token=YOUR_API_TOKEN'
```

**Official Documentation:** https://developers.google.com/android-publisher/api-ref/rest/v3/applications.deviceTierConfigs/get

### List device tier configs

**Method:** GET
**LowCodeAPI Path:** /androidpublisher/v3/applications/{packageName}/deviceTierConfigs

**New Format URL:**
https://api.lowcodeapi.com/googleplay/androidpublisher/v3/applications/{packageName}/deviceTierConfigs?api_token=YOUR_API_TOKEN

**Old Format URL:**
https://api.lowcodeapi.com/googleplay/androidpublisher/v3/applications/packagename/devicetierconfigs?packageName={packageName}&api_token=YOUR_API_TOKEN

**Path Parameters:**

| Parameter | Type | Description |
|-----------|------|-------------|
| packageName | string |  |

**Example Request (New Format):**

```bash
curl -X GET 'https://api.lowcodeapi.com/googleplay/androidpublisher/v3/applications/{packageName}/deviceTierConfigs?api_token=YOUR_API_TOKEN'
```

**Official Documentation:** https://developers.google.com/android-publisher/api-ref/rest/v3/applications.deviceTierConfigs/list

### Add targeting to app recovery

**Method:** POST
**LowCodeAPI Path:** /androidpublisher/v3/applications/{packageName}/appRecoveries/{appRecoveryId}:addTargeting

**New Format URL:**
https://api.lowcodeapi.com/googleplay/androidpublisher/v3/applications/{packageName}/appRecoveries/{appRecoveryId}:addTargeting?api_token=YOUR_API_TOKEN

**Old Format URL:**
https://api.lowcodeapi.com/googleplay/androidpublisher/v3/applications/packagename/apprecoveries/apprecoveryid-addtargeting?appRecoveryId={appRecoveryId}&packageName={packageName}&api_token=YOUR_API_TOKEN

**Path Parameters:**

| Parameter | Type | Description |
|-----------|------|-------------|
| appRecoveryId | string |  |
| packageName | string |  |

**Example Request (New Format):**

```bash
curl -X POST 'https://api.lowcodeapi.com/googleplay/androidpublisher/v3/applications/{packageName}/appRecoveries/{appRecoveryId}:addTargeting?api_token=YOUR_API_TOKEN'
```

**Official Documentation:** https://developers.google.com/android-publisher/api-ref/rest/v3/apprecovery/addTargeting

### Cancel app recovery

**Method:** POST
**LowCodeAPI Path:** /androidpublisher/v3/applications/{packageName}/appRecoveries/{appRecoveryId}:cancel

**New Format URL:**
https://api.lowcodeapi.com/googleplay/androidpublisher/v3/applications/{packageName}/appRecoveries/{appRecoveryId}:cancel?api_token=YOUR_API_TOKEN

**Old Format URL:**
https://api.lowcodeapi.com/googleplay/androidpublisher/v3/applications/packagename/apprecoveries/apprecoveryid-cancel?appRecoveryId={appRecoveryId}&packageName={packageName}&api_token=YOUR_API_TOKEN

**Path Parameters:**

| Parameter | Type | Description |
|-----------|------|-------------|
| appRecoveryId | string |  |
| packageName | string |  |

**Example Request (New Format):**

```bash
curl -X POST 'https://api.lowcodeapi.com/googleplay/androidpublisher/v3/applications/{packageName}/appRecoveries/{appRecoveryId}:cancel?api_token=YOUR_API_TOKEN'
```

**Official Documentation:** https://developers.google.com/android-publisher/api-ref/rest/v3/apprecovery/cancel

### Create app recovery

**Method:** POST
**LowCodeAPI Path:** /androidpublisher/v3/applications/{packageName}/appRecoveries

**New Format URL:**
https://api.lowcodeapi.com/googleplay/androidpublisher/v3/applications/{packageName}/appRecoveries?api_token=YOUR_API_TOKEN

**Old Format URL:**
https://api.lowcodeapi.com/googleplay/androidpublisher/v3/applications/packagename/apprecoveries?packageName={packageName}&api_token=YOUR_API_TOKEN

**Path Parameters:**

| Parameter | Type | Description |
|-----------|------|-------------|
| packageName | string |  |

**Example Request (New Format):**

```bash
curl -X POST 'https://api.lowcodeapi.com/googleplay/androidpublisher/v3/applications/{packageName}/appRecoveries?api_token=YOUR_API_TOKEN'
```

**Official Documentation:** https://developers.google.com/android-publisher/api-ref/rest/v3/apprecovery/create

### Deploy app recovery

**Method:** POST
**LowCodeAPI Path:** /androidpublisher/v3/applications/{packageName}/appRecoveries/{appRecoveryId}:deploy

**New Format URL:**
https://api.lowcodeapi.com/googleplay/androidpublisher/v3/applications/{packageName}/appRecoveries/{appRecoveryId}:deploy?api_token=YOUR_API_TOKEN

**Old Format URL:**
https://api.lowcodeapi.com/googleplay/androidpublisher/v3/applications/packagename/apprecoveries/apprecoveryid-deploy?appRecoveryId={appRecoveryId}&packageName={packageName}&api_token=YOUR_API_TOKEN

**Path Parameters:**

| Parameter | Type | Description |
|-----------|------|-------------|
| appRecoveryId | string |  |
| packageName | string |  |

**Example Request (New Format):**

```bash
curl -X POST 'https://api.lowcodeapi.com/googleplay/androidpublisher/v3/applications/{packageName}/appRecoveries/{appRecoveryId}:deploy?api_token=YOUR_API_TOKEN'
```

**Official Documentation:** https://developers.google.com/android-publisher/api-ref/rest/v3/apprecovery/deploy

### List app recoveries

**Method:** GET
**LowCodeAPI Path:** /androidpublisher/v3/applications/{packageName}/appRecoveries

**New Format URL:**
https://api.lowcodeapi.com/googleplay/androidpublisher/v3/applications/{packageName}/appRecoveries?api_token=YOUR_API_TOKEN

**Old Format URL:**
https://api.lowcodeapi.com/googleplay/androidpublisher/v3/applications/packagename/apprecoveries?packageName={packageName}&api_token=YOUR_API_TOKEN

**Path Parameters:**

| Parameter | Type | Description |
|-----------|------|-------------|
| packageName | string |  |

**Example Request (New Format):**

```bash
curl -X GET 'https://api.lowcodeapi.com/googleplay/androidpublisher/v3/applications/{packageName}/appRecoveries?api_token=YOUR_API_TOKEN'
```

**Official Documentation:** https://developers.google.com/android-publisher/api-ref/rest/v3/apprecovery/list

### Commit app edit

**Method:** POST
**LowCodeAPI Path:** /androidpublisher/v3/applications/{packageName}/edits/{editId}:commit

**New Format URL:**
https://api.lowcodeapi.com/googleplay/androidpublisher/v3/applications/{packageName}/edits/{editId}:commit?api_token=YOUR_API_TOKEN

**Old Format URL:**
https://api.lowcodeapi.com/googleplay/androidpublisher/v3/applications/packagename/edits/editid-commit?editId={editId}&packageName={packageName}&api_token=YOUR_API_TOKEN

**Path Parameters:**

| Parameter | Type | Description |
|-----------|------|-------------|
| editId | string |  |
| packageName | string |  |

**Example Request (New Format):**

```bash
curl -X POST 'https://api.lowcodeapi.com/googleplay/androidpublisher/v3/applications/{packageName}/edits/{editId}:commit?api_token=YOUR_API_TOKEN'
```

**Official Documentation:** https://developers.google.com/android-publisher/api-ref/rest/v3/edits/commit


## Usage Examples

### Example 1: Basic API Request

```bash
# List resources - no path parameters needed
curl -X GET "https://api.lowcodeapi.com/googleplay/v1/resources?api_token=YOUR_API_TOKEN"
```

### Example 2: Request with Path Parameters

```bash
# Get specific resource by ID
curl -X GET "https://api.lowcodeapi.com/googleplay/v1/resources/{RESOURCE_ID}?api_token=YOUR_API_TOKEN"
```

### Example 3: Create or Update Resource

```bash
# Create a new resource
curl -X POST "https://api.lowcodeapi.com/googleplay/v1/resources?api_token=YOUR_API_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"name": "New Resource", "description": "Description"}'
```

## Error Handling

LowCodeAPI returns standard HTTP status codes. Common errors:

| Status Code | Description |
|-------------|-------------|
| 200 | Success - Request completed successfully |
| 400 | Bad Request - Invalid parameters or request body |
| 401 | Unauthorized - Invalid or missing API token |
| 403 | Forbidden - Insufficient permissions |
| 404 | Not Found - Endpoint or resource doesn't exist |
| 429 | Too Many Requests - Rate limit exceeded |
| 500 | Server Error - Provider API error |

All error responses include error details:

```json
{
  "data": {
    "error": {
      "message": "Error description",
      "code": "ERROR_CODE"
    }
  }
}
```

## Complete Endpoint Reference

| Endpoint | Method | Category |
|----------|--------|----------|
| Write data safety labels | POST | Applications |
| Create device tier config | POST | Device Tier Configs |
| Get device tier config | GET | Device Tier Configs |
| List device tier configs | GET | Device Tier Configs |
| Add targeting to app recovery | POST | App Recovery |
| Cancel app recovery | POST | App Recovery |
| Create app recovery | POST | App Recovery |
| Deploy app recovery | POST | App Recovery |
| List app recoveries | GET | App Recovery |
| Commit app edit | POST | Edits |
| Delete app edit | DELETE | Edits |
| Get app edit | GET | Edits |
| Create app edit | POST | Edits |
| Validate app edit | POST | Edits |
| Add externally hosted APK | POST | Edits APKs |
| List APKs | GET | Edits APKs |
| Upload APK | POST | Edits APKs |
| List bundles | GET | Edits Bundles |
| Upload bundle | POST | Edits Bundles |
| Get country availability | GET | Edits Country Availability |
| Get app details | GET | Edits Details |
| Patch app details | PATCH | Edits Details |
| Update app details | PUT | Edits Details |
| Get expansion file | GET | Edits Expansion Files |
| Patch expansion file | PATCH | Edits Expansion Files |
| Update expansion file | PUT | Edits Expansion Files |
| Upload expansion file | POST | Edits Expansion Files |
| Delete image | DELETE | Edits Images |
| Delete all images | DELETE | Edits Images |
| List images | GET | Edits Images |
| Upload image | POST | Edits Images |
| Delete listing | DELETE | Edits Listings |
| Delete all listings | DELETE | Edits Listings |
| Get listing | GET | Edits Listings |
| List listings | GET | Edits Listings |
| Patch listing | PATCH | Edits Listings |
| Update listing | PUT | Edits Listings |
| Get testers | GET | Edits Testers |
| Patch testers | PATCH | Edits Testers |
| Update testers | PUT | Edits Testers |
| Create track | POST | Edits Tracks |
| Get track | GET | Edits Tracks |
| List tracks | GET | Edits Tracks |
| Patch track | PATCH | Edits Tracks |
| Update track | PUT | Edits Tracks |
| Batch delete in-app products | POST | In-App Products |
| Batch get in-app products | GET | In-App Products |
| Batch update in-app products | POST | In-App Products |
| Delete in-app product | DELETE | In-App Products |
| Get in-app product | GET | In-App Products |
| Insert in-app product | POST | In-App Products |
| List in-app products | GET | In-App Products |
| Patch in-app product | PATCH | In-App Products |
| Update in-app product | PUT | In-App Products |
| Acknowledge product purchase | POST | Purchases Products |
| Consume product purchase | POST | Purchases Products |
| Get product purchase | GET | Purchases Products |
| Get product purchase V2 | GET | Purchases Products V2 |
| Acknowledge subscription | POST | Purchases Subscriptions |
| Cancel subscription | POST | Purchases Subscriptions |
| Defer subscription | POST | Purchases Subscriptions |
| Cancel subscription V2 | POST | Purchases Subscriptions V2 |
| Get subscription V2 | GET | Purchases Subscriptions V2 |
| Revoke subscription V2 | POST | Purchases Subscriptions V2 |
| List voided purchases | GET | Purchases Voided Purchases |
| Get review | GET | Reviews |
| List reviews | GET | Reviews |
| Reply to review | POST | Reviews |
| Batch get orders | GET | Orders |
| Get order | GET | Orders |
| Refund order | POST | Orders |
| Create external transaction | POST | External Transactions |
| Get external transaction | GET | External Transactions |
| Refund external transaction | POST | External Transactions |
| Download generated APK | GET | Generated APKs |
| List generated APKs | GET | Generated APKs |
| Create grant | POST | Grants |
| Delete grant | DELETE | Grants |
| Patch grant | PATCH | Grants |
| Upload APK to internal app sharing | POST | Internal App Sharing |
| Upload bundle to internal app sharing | POST | Internal App Sharing |
| Convert region prices | POST | Monetization |
| Batch delete one-time products | POST | One-Time Products |
| Batch get one-time products | GET | One-Time Products |
| Batch update one-time products | POST | One-Time Products |
| Delete one-time product | DELETE | One-Time Products |
| Get one-time product | GET | One-Time Products |
| List one-time products | GET | One-Time Products |
| Patch one-time product | PATCH | One-Time Products |
| Batch get subscriptions | GET | Subscriptions |
| Batch update subscriptions | POST | Subscriptions |
| Create subscription | POST | Subscriptions |
| Delete subscription | DELETE | Subscriptions |
| Get subscription | GET | Subscriptions |
| List subscriptions | GET | Subscriptions |
| Patch subscription | PATCH | Subscriptions |
| Create system APK variant | POST | System APKs |
| Download system APK variant | GET | System APKs |
| Get system APK variant | GET | System APKs |
| List system APK variants | GET | System APKs |
| Create user | POST | Users |
| Delete user | DELETE | Users |
| List users | GET | Users |
| Patch user | PATCH | Users |
| Upload deobfuscation file | POST | Edits Deobfuscation Files |
| Batch delete purchase options | POST | One-Time Products Purchase Options |
| Batch update purchase option states | POST | One-Time Products Purchase Options |
| Activate one-time product offer | POST | One-Time Products Offers |
| Batch delete one-time product offers | POST | One-Time Products Offers |
| Batch get one-time product offers | POST | One-Time Products Offers |
| Batch update one-time product offers | POST | One-Time Products Offers |
| Batch update one-time product offer states | POST | One-Time Products Offers |
| Cancel one-time product offer | POST | One-Time Products Offers |
| Deactivate one-time product offer | POST | One-Time Products Offers |
| List one-time product offers | GET | One-Time Products Offers |
| Activate base plan | POST | Subscriptions Base Plans |
| Batch migrate base plan prices | POST | Subscriptions Base Plans |
| Batch update base plan states | POST | Subscriptions Base Plans |
| Deactivate base plan | POST | Subscriptions Base Plans |
| Delete base plan | DELETE | Subscriptions Base Plans |
| Migrate base plan prices | POST | Subscriptions Base Plans |
| Activate subscription offer | POST | Subscriptions Base Plans Offers |
| Batch get subscription offers | POST | Subscriptions Base Plans Offers |
| Batch update subscription offers | POST | Subscriptions Base Plans Offers |
| Batch update subscription offer states | POST | Subscriptions Base Plans Offers |
| Create subscription offer | POST | Subscriptions Base Plans Offers |
| Deactivate subscription offer | POST | Subscriptions Base Plans Offers |
| Delete subscription offer | DELETE | Subscriptions Base Plans Offers |
| Get subscription offer | GET | Subscriptions Base Plans Offers |
| List subscription offers | GET | Subscriptions Base Plans Offers |
| Patch subscription offer | PATCH | Subscriptions Base Plans Offers |

## API Definition Endpoints

You can fetch the complete API specification for this provider:

**New Format (OpenAPI spec):**
```bash
curl 'https://backend.lowcodeapi.com/googleplay/openapi'
```

**Old Format (API definition):**
```bash
curl 'https://backend.lowcodeapi.com/googleplay/definition'
```

## Response Format

All responses are wrapped in a `data` key:

```json
{
  "data": {
    // Actual response from provider (object or array)
  }
}
```