Interface with Tapis#
Communicating with Tapis: API vs SDK
Tapis is a powerful platform designed to support remote job execution, data transfer, and workflow automation across heterogeneous systems like supercomputers, cloud nodes, and containers.
At its core, the Tapis Jobs API allows users to:
Submit computational jobs based on registered applications
Monitor job status through a consistent lifecycle
Retrieve outputs and logs after completion
Automate workflows with job metadata, permissions, and archiving
Tapis Jobs are tightly integrated with Tapis Systems (where the job runs) and Tapis Apps (which define how it runs).
There are two main ways to interact with Tapis:
The Tapis REST API is the raw interface (HTTP-based).
The Python SDK (
tapipy) wraps that API into easy-to-use Python functions.
Approach |
Description |
Who uses it? |
|---|---|---|
Tapis API (REST API) |
The raw interface exposed by Tapis via HTTP requests (URLs, headers, tokens, JSON payloads). |
Advanced users, system integrators, non-Python clients |
Tapis SDK (Tapipy) |
A Python library that wraps the API into easy-to-use Python functions. |
Most application developers, researchers, students |
Tapis SDK (Tapipy) Recommended here
Tapipy is a Python SDK generated directly from the Tapis OpenAPI specification. It provides:
Full coverage of the Tapis API
Complete access to all Tapis endpoints and resources
Methods that closely mirror the REST API structure
Fine-grained control for advanced workflows
With Tapipy, you don’t need to manually construct HTTP requests, handle tokens, or parse raw JSON responses — the SDK manages these details for you.
An SDK (Software Development Kit) is a collection of tools, libraries, documentation, and code examples that help developers build software applications that interact with a specific platform, service, or system.
In simple terms: An SDK is a developer toolbox that makes it easier to program against an API or platform.
Wraps the full REST API into Python methods.
Allows you to focus on your workflow logic, not protocol details.
Tapipy is the Official Python SDK for Tapis v3.
Auto-generated from the Tapis OpenAPI spec (always current).
Handles:
Authentication
Tokens
Headers
HTTP requests
Response parsing into Python objects
Example (using Tapipy SDK):
from tapipy.tapis import Tapis
client = Tapis(base_url="https://tacc.tapis.io",
username="your-username",
password="your-password",
account_type="tacc")
client.get_tokens()
# Submit a job
job_request = {
"name": "example-job",
"appId": "hello-world-1.0",
"archive": True,
"archiveSystemId": "tacc-archive",
"archivePath": "your-username/job-output"
}
job = client.jobs.submitJob(body=job_request)
print("Job ID:", job['id'])
jobs = client.jobs.listJobs()
Tapis API (REST API)
The raw interface that powers everything behind the scenes.
Uses standard web protocols (HTTP, HTTPS, GET, POST, PUT, etc.).
You send requests directly to Tapis endpoints.
Can be accessed using any language (Python, Java, curl, etc.)
Requires you to:
Build request URLs
Add authentication headers
Manage tokens
Format request bodies (payloads) as JSON
Parse JSON responses
Handle HTTP errors and headers manually
Example (using curl):
curl -X GET https://tacc.tapis.io/v3/jobs \
-H "Authorization: Bearer <token>"
Rule of thumb
“The SDK uses the API under the hood — you don’t lose power, you just lose the pain.”
Why We Use Tapipy
Feature |
Tapipy |
|---|---|
API coverage |
100% (full Tapis API) |
Auto-generated |
Always current |
Authentication |
Simplified |
Request building |
Pass Python dicts |
Error handling |
Python exceptions |
Suitable for |
Researchers, students, developers |
Summary
SDK a toolkit that simplifies programming against a complex system like Tapis
Tapis API = Low-level interface (web-based, language-agnostic)
Tapis SDK = Python wrapper for the Tapis API (easier for developers)
SDKs use the API under the hood but hide the complexity – wrap APIs with user-friendly methods in a specific programming language
Tapis API |
Tapis SDK (Tapipy) |
|
|---|---|---|
Language |
Any |
Python |
Manual token handling |
Yes |
No |
Raw HTTP requests |
Yes |
No |
Recommended for training |
⚠ Advanced |
✅ Yes |