Skip to main content

Build and push Taps to AppWire — reverse-engineered mobile app API wrappers for workflow automation

Project description

AppWire SDK

Build and push Taps to AppWire — reverse-engineered mobile app API wrappers for workflow automation.

A Tap wraps a mobile app's internal API into reusable actions. Each action maps to an HTTP endpoint with headers, params, and response mappings.

Install

pip install appwire

Quick Start

from appwire import Tap

tap = Tap(
    name="TikTok Profile Scraper",
    app="TikTok",
    version="1.0.0",
    description="Fetch profile data from TikTok's internal API",
)

@tap.action(
    name="Get Profile",
    method="GET",
    endpoint="https://api.tiktok.com/api/user/detail",
)
def get_profile(username: str):
    return {
        "params": {"uniqueId": username},
        "headers": {
            "User-Agent": "TikTok/26.1.3",
        },
    }

CLI

appwire login              # Authenticate
appwire init my-tap        # Scaffold a new Tap project
appwire validate           # Validate before pushing
appwire push               # Push to AppWire
appwire list               # List your published Taps

Tap Manifest

Every Tap has a tap.yaml manifest:

name: "TikTok Profile Scraper"
description: "Fetch profile data from TikTok"
version: "1.0.0"
app: "TikTok"
icon: "./icon.png"
entry: "main.py"

Credentials

Reference user credentials with {{credential:name}} placeholders:

tap = Tap(
    name="My Tap",
    app="MyApp",
    version="1.0.0",
    credentials=[
        {"name": "session_id", "label": "Session ID", "required": True},
    ],
)

@tap.action(name="Get Data", method="GET", endpoint="/api/data")
def get_data():
    return {
        "headers": {
            "Cookie": "sid={{credential:session_id}}",
        },
    }

Response Mapping

Extract fields from API responses using JSONPath:

@tap.action(
    name="Get Profile",
    method="GET",
    endpoint="/api/user/detail",
    response_mapping={
        "username": "$.userInfo.user.uniqueId",
        "followers": "$.userInfo.stats.followerCount",
    },
)
def get_profile(username: str):
    return {"params": {"uniqueId": username}}

License

MIT

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

appwire-0.1.2.tar.gz (8.5 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

appwire-0.1.2-py3-none-any.whl (8.8 kB view details)

Uploaded Python 3

File details

Details for the file appwire-0.1.2.tar.gz.

File metadata

  • Download URL: appwire-0.1.2.tar.gz
  • Upload date:
  • Size: 8.5 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.11.14

File hashes

Hashes for appwire-0.1.2.tar.gz
Algorithm Hash digest
SHA256 72ff95efeae943d5073c36535b4ef2aaebb0a914a257b0948b7dd8cad19a2d78
MD5 0dfc4f3b374552ed1fca723787be33e9
BLAKE2b-256 44eb91a3020dfa8df612314aeb2850fed94983fb8a1cd91cfb79538a64af12cc

See more details on using hashes here.

File details

Details for the file appwire-0.1.2-py3-none-any.whl.

File metadata

  • Download URL: appwire-0.1.2-py3-none-any.whl
  • Upload date:
  • Size: 8.8 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.11.14

File hashes

Hashes for appwire-0.1.2-py3-none-any.whl
Algorithm Hash digest
SHA256 7051453245198694816df3d5ed40f6f5f3838ebe20b8b0fb743c5284782b28fd
MD5 a6cea594b18f67d76aeaba00154c5bc8
BLAKE2b-256 676071458f2252144668f888383fdd0f88546f4bcba349f9bfb75c5b5e488de2

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page