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.5.tar.gz (9.2 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.5-py3-none-any.whl (9.6 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: appwire-0.1.5.tar.gz
  • Upload date:
  • Size: 9.2 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.5.tar.gz
Algorithm Hash digest
SHA256 89622f596a943c13f54f5ffe1390963aea3eab8da35879c2c8c72aa5f98f2d7d
MD5 146a9ccea3be56c6b55554ed20c30c04
BLAKE2b-256 2bcd3ea9158768e9cb97211e576c53b03f4ae1ce674cb95d7bcfce1484f484a0

See more details on using hashes here.

File details

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

File metadata

  • Download URL: appwire-0.1.5-py3-none-any.whl
  • Upload date:
  • Size: 9.6 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.5-py3-none-any.whl
Algorithm Hash digest
SHA256 f072a02dddd7b4330366206409aff6532f09712e4b7a08543bbcbfefb49ad776
MD5 f600a433ab179fdf7a02af035b8b995c
BLAKE2b-256 83c28f81c60ec5c7e547e04cc25d3e19528c422d6e99e76f770125788f0dd4c4

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