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.1.tar.gz (8.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.1-py3-none-any.whl (8.5 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: appwire-0.1.1.tar.gz
  • Upload date:
  • Size: 8.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.1.tar.gz
Algorithm Hash digest
SHA256 fea72a13459e0f3287abac7a1533db38c69fea88838ef4444d257a5590edb970
MD5 341199c372b3eb8b6629cd3a63ad43ab
BLAKE2b-256 6ba0e8365f8c1a520a4c58d31bed35628ba8ac0d7500d8754321f70d7e45ad13

See more details on using hashes here.

File details

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

File metadata

  • Download URL: appwire-0.1.1-py3-none-any.whl
  • Upload date:
  • Size: 8.5 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.1-py3-none-any.whl
Algorithm Hash digest
SHA256 d8f9c0774d1db6f9457194fb110e2a5004e97a893378bd2550b1ab4f7f9f0c4a
MD5 e657bd2184fd832418c56d2c401196e9
BLAKE2b-256 0479ae1042115c67bb2e7dd3db67773649ad04c16d7fec2eba2a8ef08304a282

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