Skip to main content

A Python client for the 1WorldSync Content1 Search and Fetch REST API

Project description

1WorldSync Content1 API Python Client

A Python client for interacting with the 1WorldSync Content1 API.

Installation

pip install oneworldsync

Key Features

  • Authentication with HMAC
  • Product fetching by GTIN, GLN, or target market
  • Product hierarchy retrieval
  • Pagination support
  • Comprehensive error handling
  • Content1-specific data models
  • OpenAPI 3.0.1 specification support
  • Command Line Interface (CLI)

Package Structure

oneworldsync/
├── __init__.py           # Package initialization and version
├── content1_client.py    # Main Content1 API client
├── content1_auth.py      # HMAC authentication for Content1 API
├── cli.py               # Command Line Interface
├── models.py            # Data models for API responses
├── exceptions.py        # Custom exceptions
└── utils.py             # Utility functions

Quick Start

Python API

from oneworldsync import Content1Client

# Initialize the client
client = Content1Client(
    app_id='your_app_id',
    secret_key='your_secret_key',
    gln='your_gln'  # Optional
)

# Count products
count = client.count_products()
print(f"Total products: {count}")

# Fetch products by GTIN
products = client.fetch_products_by_gtin(['00000000000000'])
print(f"Found {len(products.get('items', []))} products")

# Fetch products with criteria
criteria = {
    "targetMarket": "US",
    "fields": {
        "include": ["gtin", "brandName", "gpcCategory"]
    }
}
results = client.fetch_products(criteria)

Command Line Interface

The package installs a command-line tool called ows that can be used to interact with the Content1 API:

# Test login credentials
ows login

# Fetch products
ows fetch --gtin 12345678901234 --target-market US
ows fetch --output results.json

# Count products
ows count --target-market EU
ows count --output count.json

# Fetch product hierarchies
ows hierarchy --gtin 12345678901234
ows hierarchy --output hierarchy.json

The CLI requires credentials to be stored in ~/.ows/credentials file:

ONEWORLDSYNC_APP_ID=your_app_id
ONEWORLDSYNC_SECRET_KEY=your_secret_key
ONEWORLDSYNC_USER_GLN=your_gln  # Optional
ONEWORLDSYNC_CONTENT1_API_URL=https://content1-api.1worldsync.com  # Optional

Authentication

The client supports authentication using your 1WorldSync Content1 API credentials:

# Using parameters
client = Content1Client(
    app_id='your_app_id',
    secret_key='your_secret_key',
    gln='your_gln'  # Optional
)

# Using environment variables
# ONEWORLDSYNC_APP_ID
# ONEWORLDSYNC_SECRET_KEY
# ONEWORLDSYNC_USER_GLN (optional)
# ONEWORLDSYNC_CONTENT1_API_URL (optional)
client = Content1Client()

Examples

See the examples directory for more detailed usage examples:

Basic Example (content1_example.py)

Basic usage of the Content1 API client to fetch products.

Advanced Example (content1_advanced_example.py)

# Create a date range for the last 30 days
today = datetime.datetime.now()
thirty_days_ago = today - datetime.timedelta(days=30)

date_criteria = {
    "lastModifiedDate": {
        "from": {
            "date": thirty_days_ago.strftime("%Y-%m-%d"),
            "op": "GTE"
        },
        "to": {
            "date": today.strftime("%Y-%m-%d"),
            "op": "LTE"
        }
    }
}

# Fetch products with specific fields and sorting
fetch_criteria = {
    "targetMarket": "US",
    "lastModifiedDate": date_criteria["lastModifiedDate"],
    "fields": {
        "include": [
            "gtin", "informationProviderGLN", "targetMarket",
            "lastModifiedDate", "brandName", "gpcCategory"
        ]
    },
    "sortFields": [
        {"field": "lastModifiedDate", "desc": True},
        {"field": "gtin", "desc": False}
    ]
}

# Fetch first page with pagination
products = client.fetch_products(fetch_criteria, page_size=10)

# Handle pagination
if "searchAfter" in products:
    next_page_criteria = fetch_criteria.copy()
    next_page_criteria["searchAfter"] = products["searchAfter"]
    next_page = client.fetch_products(next_page_criteria, page_size=10)

Documentation

For more detailed documentation, see the docs directory.

License

This project is licensed under the MIT License - see the LICENSE file for details.

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

oneworldsync-0.2.2.tar.gz (19.2 kB view details)

Uploaded Source

Built Distribution

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

oneworldsync-0.2.2-py3-none-any.whl (15.0 kB view details)

Uploaded Python 3

File details

Details for the file oneworldsync-0.2.2.tar.gz.

File metadata

  • Download URL: oneworldsync-0.2.2.tar.gz
  • Upload date:
  • Size: 19.2 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.13.3

File hashes

Hashes for oneworldsync-0.2.2.tar.gz
Algorithm Hash digest
SHA256 9a3d0377ae3e5be06853f7dfe0aad50bafc562e18bc4706642d8b3a00415dbac
MD5 198fc718370f99b0d5dce08732b4bf11
BLAKE2b-256 1189b58a448dfa5a7546492f9906c11e242fd13188c2d7ec386a104f3a858949

See more details on using hashes here.

File details

Details for the file oneworldsync-0.2.2-py3-none-any.whl.

File metadata

  • Download URL: oneworldsync-0.2.2-py3-none-any.whl
  • Upload date:
  • Size: 15.0 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.13.3

File hashes

Hashes for oneworldsync-0.2.2-py3-none-any.whl
Algorithm Hash digest
SHA256 3f69de6ca739f4057c4eb504057112cfab6b7c5de218dad516dc6c0aa4a3f296
MD5 fa57dedc7fccc2c0840275d1e9f5b4a4
BLAKE2b-256 e9268821d752bdb30a8929b3eafb3a31bc7065a1ac1776b1c38e0ae989de4c17

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