.. AUTO-GENERATED FILE. DO NOT EDIT. Upsert playstore manifest ========================= Summary ------- - **Source repository:** ``jef-systems/jef-playstore-backend`` - **Source SHA:** ``6ceeeefc95a4a88ab42d116f11f75b65357c4965`` - **Source run id:** ``26344481220`` - **Module:** ``Playstore`` - **Lambda function:** ``playstore-manifest-upsert`` - **HTTP method:** ``POST`` - **Invocation mode:** ``async`` - **Package mode:** ``no-package`` - **API category:** ``Playstore Complex No Package Async POST APIs`` - **API path:** ``/playstore-manifest-upsert`` - **Endpoint URL:** ``https://efj8o1q96l.execute-api.ap-southeast-1.amazonaws.com/prod/playstore-manifest-upsert`` - **Documentation scope:** ``lambda-complex-no-packages`` Async Confirmation Rule ----------------------- This write API is documented as an async accepted request, not final write success. Use the corresponding GET API to confirm the final state. Description ----------- POST endpoint that accepts APK release metadata from the b1 Android APK build workflow and upserts one jef-playstore-manifests record by package\_name using gsi\_2 index get-by-package-name. API Gateway Response -------------------- .. code-block:: json { "status_code": 202, "message": "This endpoint returns 202 when the request is accepted. The Lambda function continues processing asynchronously." } Payload Example --------------- .. code-block:: json { "name": "JEF Demo App", "slug": "jef-demo-app", "version": "28", "package_name": "com.jef.demo", "scheme": "jefdemo", "icon": "./assets/images/icon.png", "idempotency_key": "8d4e7d32-2f6f-4d13-9b8e-0f4e98ef0001", "apk_sha256": "0000000000000000000000000000000000000000000000000000000000000000", "object_key": "github-artifacts/com.jef.demo/28/release.apk", "file_name": "release.apk" } Payload Schema -------------- .. code-block:: json { "root": { "type": "M", "required": true, "attributes": { "name": { "type": "S", "required": true, "regex": "^[A-Za-z0-9 .,'_-]{1,120}$" }, "slug": { "type": "S", "required": true, "regex": "^[a-z0-9]+(?:-[a-z0-9]+)*$" }, "version": { "type": "S", "required": true, "regex": "^(?:[0-9]+|[0-9]+[.][0-9]+[.][0-9]+)$" }, "package_name": { "type": "S", "required": true, "regex": "^[a-zA-Z][a-zA-Z0-9_]*(?:[.][a-zA-Z][a-zA-Z0-9_]*){1,}$" }, "scheme": { "type": "S", "required": false, "regex": "^[a-z][a-z0-9+.-]{1,80}$" }, "icon": { "type": "S", "required": false, "regex": "^.{0,500}$" }, "idempotency_key": { "type": "S", "required": true, "regex": "^[A-Za-z0-9._:-]{1,160}$" }, "apk_sha256": { "type": "S", "required": true, "regex": "^[A-Fa-f0-9]{64}$" }, "object_key": { "type": "S", "required": true, "regex": "^github-artifacts/[A-Za-z0-9_.]+/(?:[0-9]+|[0-9]+[.][0-9]+[.][0-9]+)/release[.]apk$" }, "file_name": { "type": "S", "required": true, "regex": "^release[.]apk$" } } } } Response Schema --------------- .. code-block:: json { "root": { "type": "M", "required": true, "attributes": { "is_accepted": { "type": "BOOL", "required": true }, "is_saved": { "type": "BOOL", "required": true }, "is_idempotent": { "type": "BOOL", "required": false }, "exists": { "type": "BOOL", "required": true }, "message_type": { "type": "S", "required": true }, "message": { "type": "S", "required": true }, "operation": { "type": "S", "required": true }, "status_code": { "type": "N", "required": true }, "package_name": { "type": "S", "required": false }, "version": { "type": "S", "required": false }, "object_key": { "type": "S", "required": false }, "file_name": { "type": "S", "required": false }, "apk_sha256": { "type": "S", "required": false }, "manifest_id": { "type": "S", "required": false }, "release_status": { "type": "S", "required": false }, "failure_code": { "type": "S", "required": false }, "failure_reason": { "type": "S", "required": false }, "item": { "type": "M", "required": false } } } } Request Payload --------------- .. code-block:: json { "name": "JEF Demo App", "slug": "jef-demo-app", "version": "28", "package_name": "com.jef.demo", "scheme": "jefdemo", "icon": "./assets/images/icon.png", "idempotency_key": "8d4e7d32-2f6f-4d13-9b8e-0f4e98ef0001", "apk_sha256": "0000000000000000000000000000000000000000000000000000000000000000", "object_key": "github-artifacts/com.jef.demo/28/release.apk", "file_name": "release.apk" } CMD curl -------- .. code-block:: bat curl -X POST "https://efj8o1q96l.execute-api.ap-southeast-1.amazonaws.com/prod/playstore-manifest-upsert" \ -H "Content-Type: application/json" \ --data-raw '{"name":"JEF Demo App","slug":"jef-demo-app","version":"28","package_name":"com.jef.demo","scheme":"jefdemo","icon":"./assets/images/icon.png","idempotency_key":"8d4e7d32-2f6f-4d13-9b8e-0f4e98ef0001","apk_sha256":"0000000000000000000000000000000000000000000000000000000000000000","object_key":"github-artifacts/com.jef.demo/28/release.apk","file_name":"release.apk"}' PowerShell curl --------------- .. code-block:: powershell curl.exe -X POST "https://efj8o1q96l.execute-api.ap-southeast-1.amazonaws.com/prod/playstore-manifest-upsert" ` -H "Content-Type: application/json" ` --data-raw '{"name":"JEF Demo App","slug":"jef-demo-app","version":"28","package_name":"com.jef.demo","scheme":"jefdemo","icon":"./assets/images/icon.png","idempotency_key":"8d4e7d32-2f6f-4d13-9b8e-0f4e98ef0001","apk_sha256":"0000000000000000000000000000000000000000000000000000000000000000","object_key":"github-artifacts/com.jef.demo/28/release.apk","file_name":"release.apk"}'