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:

# Show version
ows --version

# Show help
ows --help

# Test login credentials
ows login

# Fetch products
ows fetch --gtin 12345678901234 --target-market US
ows fetch --gtin 052000050585 --fields "gtin,gtinName,brandName"
ows fetch --output results.json

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

# Fetch product hierarchies
ows hierarchy --gtin 12345678901234
ows hierarchy --target-market US --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.3.tar.gz (19.6 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.3-py3-none-any.whl (15.4 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: oneworldsync-0.2.3.tar.gz
  • Upload date:
  • Size: 19.6 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.3.tar.gz
Algorithm Hash digest
SHA256 b31f00ae6c7aef08bb7a04073a70405cb046f68e274473b87a7f5c2d37f799df
MD5 846d2290d93c6127a23cfc34b7d0bf84
BLAKE2b-256 39c5988d5b832d7d3caf2c91fbf14cf0869cdeebc092f031205cae4e5d384524

See more details on using hashes here.

File details

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

File metadata

  • Download URL: oneworldsync-0.2.3-py3-none-any.whl
  • Upload date:
  • Size: 15.4 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.3-py3-none-any.whl
Algorithm Hash digest
SHA256 66197a4512a55f2f6146443f53089a49c558a7fef7065beba5ad7bdf7420b4f4
MD5 9a21f9170b0bb5f85ad507afa62a1008
BLAKE2b-256 bfca1517bd98f39c6f5d1fb964a57830325db1b96f8242481e4e20be1685d60b

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