Skip to main content
Pre-release

This release is a pre-release and may not be stable for production use.

eTiKeT API

REST and Python API for the eTiKeT platform. This package provides the local API service that allows external tools (like the eTiKeT SDK) to interact with the sync agent and manage local authentication.

Overview

The eTiKeT API runs as a local service. It provides:

  • REST API: HTTP endpoints for authentication, sync management, and more
  • Python API: Direct Python functions for internal use

Note: Most users should use the eTiKeT SDK instead of calling this API directly. The SDK provides a simpler, higher-level interface.

Installation

pip install etiket-api

Running the Service

Normally, the sync API runs as a system service in the background (managed by the eTiKeT installer). However, you can run it manually for development or debugging:

python3.11 -m etiket_api

By default, the service runs on http://localhost:10410. The interactive API documentation is available at http://localhost:10410/docs (Swagger UI).


REST API Overview

The REST API is available at http://localhost:10410/api/v1/. Interactive API documentation is available at http://localhost:10410/docs (Swagger UI).

Local API Tokens

Manage API tokens stored on this machine. Tokens allow background sync to authenticate with the server without an active login session.

Method Endpoint Description
POST /auth/local/api-tokens Create a new API token for the current user
GET /auth/local/api-tokens List all locally stored API tokens
DELETE /auth/local/api-tokens/{uid} Revoke a token on the server and delete it locally
GET /auth/local/api-tokens/{uid}/check Check if a token is still valid

Sync Agent

Manage the background sync agent service.

Method Endpoint Description
GET /sync/agent/status Get current sync agent status
GET /sync/agent/errors Get sync agent errors (paginated, optional viewed filter)
PATCH /sync/agent/errors/{error_id} Update a sync-agent error record (currently only the viewed flag)
POST /sync/agent/errors/mark-all-viewed Mark all sync-agent errors as viewed. Returns the number flipped
POST /sync/agent/start Start the sync agent
POST /sync/agent/stop Stop the sync agent
POST /sync/agent/report-error Send an error report to qHarbor
GET /sync/agent/error-report Get an error report for manual sending

Sync Sources

Manage sync sources — configurations that define where data comes from.

Method Endpoint Description
GET /sync/sources List all sync sources
POST /sync/sources Create a new sync source
GET /sync/sources/{id} Get a sync source by ID
GET /sync/sources/name/{name} Get a sync source by name
PATCH /sync/sources/{id} Update a sync source
DELETE /sync/sources/{id} Delete a sync source
POST /sync/sources/{id}/start Start a sync source
POST /sync/sources/{id}/stop Stop a sync source
POST /sync/sources/{id}/take-ownership Claim ownership of a sync source for the current user (overwrites any existing owner)
POST /sync/sources/{id}/release-ownership Release ownership of a sync source. Idempotent — any logged-in user may call (no-op when already unowned)
POST /sync/sources/{id}/reset-sync-items Reset sync items (retry failed or all)
GET /sync/sources/{id}/errors Get sync source errors (paginated, optional viewed filter)
PATCH /sync/sources/{id}/errors/{error_id} Update a sync-source error record (currently only the viewed flag)
POST /sync/sources/{id}/errors/mark-all-viewed Mark all errors of a sync source as viewed. Returns the number flipped
GET /sync/sources/connectors List available connectors
POST /sync/sources/{id}/report-error Send an error report to qHarbor
GET /sync/sources/{id}/error-report Get an error report for manual sending
POST /sync/sources/{id}/scope-mappings Create a new scope mapping
PATCH /sync/sources/{id}/scope-mappings/{identifier} Update a scope mapping
DELETE /sync/sources/{id}/scope-mappings/{identifier} Delete a scope mapping
GET /sync/sources/{id}/scope-mappings/unmapped Get unmapped scope identifiers
POST /sync/sources/{id}/scope-mappings/autoassign Auto-assign scope mappings

Sync Items

Manage sync items — individual datasets to be synchronized.

Method Endpoint Description
GET /sync/items?source_id=... List sync items (with filtering and pagination)
GET /sync/items/{id} Get a sync item by ID
PATCH /sync/items/{id}/reset Reset a sync item for retry
PATCH /sync/items/{id}/prioritize Prioritize a sync item
POST /sync/items/{id}/report-error Send an error report to qHarbor
GET /sync/items/{id}/error-report Get an error report for manual sending

Sync Connectors

Manage sync connector packages.

Method Endpoint Description
GET /sync/connectors List installed connectors
POST /sync/connectors/install/pypi Install a connector from PyPI
POST /sync/connectors/install/local Install a connector from local path
POST /sync/connectors/update/pypi Update a connector from PyPI
POST /sync/connectors/update/local Update a connector from local path
DELETE /sync/connectors/{name} Uninstall a connector

Sync Converters

Manage converter packages for file format conversion.

Method Endpoint Description
GET /sync/converters List installed converters
POST /sync/converters/install/pypi Install a converter from PyPI
POST /sync/converters/install/local Install a converter from local path
POST /sync/converters/update/pypi Update a converter from PyPI
POST /sync/converters/update/local Update a converter from local path
DELETE /sync/converters/{name} Uninstall a converter

Admin

Inspect service state for support and debugging.

Method Endpoint Description
GET /admin/logs/{service}?n=... Return the most recent N lines of a service's log file. service is api or sync_agent. Pass n=-1 to return the full file (default n=500)

Error Handling

All API errors return a consistent JSON error model:

{
  "error": "sync_source_not_found",
  "detail": "Sync source with id 123 not found"
}
  • error: A machine-readable error code (snake_case)
  • detail: A human-readable error message (optional)

Error Codes Reference

General Errors

Error Code Status Description
server_error 500 An internal server error occurred
server_unreachable 502 The remote server cannot be reached

Auth Errors

Error Code Status Description
no_user_logged_in 401 No user is currently logged in
user_already_has_token 409 User already has a local token (delete first)
token_not_found 404 Token uid not found in local database

Sync Agent Errors

Error Code Status Description
sync_agent_not_installed 503 Sync agent service is not installed
sync_agent_already_running 409 Sync agent is already running
sync_agent_already_stopped 409 Sync agent is already stopped
sync_status_error_not_found 404 Sync-status error record not found by id

Sync Source Errors

Error Code Status Description
sync_source_not_found 404 Sync source not found
sync_source_scope_not_found 404 Default scope not found
sync_source_connector_not_found 404 Connector not found
sync_source_name_already_taken 409 Source name already exists
sync_source_already_running 409 Sync source is already running
sync_source_already_stopped 409 Sync source is already stopped
sync_source_config_error 422 Invalid configuration
sync_source_connector_has_no_owner 422 Take-ownership called on a source whose connector does not support ownership (has_owner=False)
sync_source_error_not_found 404 Sync-source error record not found by id
scope_mapping_not_found 404 Scope mapping not found for identifier
scope_mapping_already_exists 409 Scope mapping already exists for identifier
scope_mapping_invalid_scope 404 Target scope UUID does not exist

Sync Item Errors

Error Code Status Description
sync_item_not_found 404 Sync item not found
sync_item_scope_mapping_not_found 404 Sync item has a scope_identifier but no mapping exists

Connector Errors

Error Code Status Description
connector_not_found 404 Connector not found
connector_install_failed 422 Connector installation failed
connector_update_failed 422 Connector update failed
connector_uninstall_failed 422 Connector uninstall failed
connector_invalid_package_path 422 Invalid local package path

Converter Errors

Error Code Status Description
converter_not_found 404 Converter not found
converter_install_failed 422 Converter installation failed
converter_update_failed 422 Converter update failed
converter_uninstall_failed 422 Converter uninstall failed
converter_invalid_package_path 422 Invalid local package path

Admin Errors

Error Code Status Description
log_file_not_found 404 Requested service's log file does not exist on disk

Python API

The Python API provides direct access to functionality. It's primarily intended for internal use by the REST API layer and the sync agent itself.

Local API Tokens

from etiket_api.python_api.auth.local.api_tokens import (
    create_api_token,
    list_api_tokens,
    delete_api_token,
    check_api_token,
)

# Create a token for the current user
token = await create_api_token(name="my-sync-token")
print(token.api_token)  # only shown on create

# List all local tokens
tokens = await list_api_tokens()
for t in tokens:
    print(f"{t.user_name}: {t.api_key_name} ({t.server_url})")

# Check if a token is still valid
result = await check_api_token(api_key_uid="...")
print(result.valid)

# Delete a token (revokes on server first)
await delete_api_token(api_key_uid="...")

Sync Agent

from etiket_api.python_api.sync.sync_agent import (
    get_sync_status,
    get_sync_errors,
    start_sync_agent,
    stop_sync_agent,
    set_sync_status_error_viewed,
    mark_all_sync_status_errors_viewed,
)

# Get current status
status = await get_sync_status()

# Fetch only unviewed errors (UI "unread" pane)
unread = await get_sync_errors(limit=10, skip=0, viewed=False)

# Mark one as viewed; or mark all of them
await set_sync_status_error_viewed(error_id=unread[0].id, viewed=True)
flipped = await mark_all_sync_status_errors_viewed()

# Start/stop the agent
await start_sync_agent()
await stop_sync_agent()

Sync Sources

from etiket_api.python_api.sync.sync_sources import (
    list_sync_sources,
    get_sync_source,
    get_sync_source_by_name,
    update_sync_source,
    delete_sync_source,
    start_sync_source,
    stop_sync_source,
    list_sync_source_definitions,
    reset_sync_source_sync_items,
    take_ownership,
    release_ownership,
    # Scope mapping functions
    create_scope_mapping,
    update_scope_mapping,
    delete_scope_mapping,
    get_unmapped_scope_identifiers,
    autoassign_scope_mappings,
    # Exceptions
    SyncSourceAlreadyRunningError,
    SyncSourceAlreadyStoppedError,
)

# List all sources
sources = list_sync_sources()

# Get a specific source
source = get_sync_source(source_id=1)
source = get_sync_source_by_name("my_source")

# Start/stop a sync source
try:
    source = start_sync_source(source_id=1)
except SyncSourceAlreadyRunningError:
    print("Source is already running")

try:
    source = stop_sync_source(source_id=1)
except SyncSourceAlreadyStoppedError:
    print("Source is already stopped")

# Reset failed sync items for a source (to retry them)
reset_count = reset_sync_source_sync_items(source_id=1)
print(f"Reset {reset_count} failed items")

# Reset ALL sync items (including successful ones)
reset_count = reset_sync_source_sync_items(source_id=1, include_successful=True)
print(f"Reset {reset_count} items (all)")

# List available connectors
connectors = list_sync_source_definitions()

# Claim ownership of a sync source for the current user (overwrites any existing owner)
source = await take_ownership(source_id=1)
print(source.owner)

# Release your own ownership (errors if you are not the current owner)
source = await release_ownership(source_id=1)
assert source.owner is None

# Error-log "viewed" management
from etiket_api.python_api.sync.sync_sources import (
    read_sync_source_errors,
    set_sync_source_error_viewed,
    mark_all_sync_source_errors_viewed,
)

# Fetch only unviewed errors (UI "unread" pane)
unread = await read_sync_source_errors(source_id=1, viewed=False)

# Mark one error as viewed, or un-view it
await set_sync_source_error_viewed(error_id=unread[0].id, viewed=True)

# Mark everything as viewed in one shot; returns the count flipped
flipped = await mark_all_sync_source_errors_viewed(source_id=1)

Scope Mappings

Scope mappings are used when a connector provides per-item scope routing. Each sync item may have a scope_identifier string that needs to be mapped to an actual scope UUID.

import uuid
from etiket_api.python_api.sync.sync_sources import (
    create_scope_mapping,
    update_scope_mapping,
    delete_scope_mapping,
    get_unmapped_scope_identifiers,
    autoassign_scope_mappings,
)

# Find identifiers that don't have a mapping yet
unmapped = get_unmapped_scope_identifiers(sync_source_id=1)
print(f"Unmapped identifiers: {unmapped}")

# Create a mapping from identifier to scope UUID
mapping = create_scope_mapping(
    sync_source_id=1,
    scope_identifier="my_scope_identifier",
    scope_uuid=uuid.UUID("12345678-1234-1234-1234-123456789abc"),
)

# Update an existing mapping to point to a different scope
mapping = update_scope_mapping(
    sync_source_id=1,
    scope_identifier="my_scope_identifier",
    scope_uuid=uuid.UUID("87654321-4321-4321-4321-cba987654321"),
)

# Delete a mapping
delete_scope_mapping(sync_source_id=1, scope_identifier="my_scope_identifier")

# Auto-assign mappings based on scope name matching
# (creates mappings where identifier matches exactly one scope name)
created_count = autoassign_scope_mappings(sync_source_id=1)
print(f"Auto-assigned {created_count} mappings")

Sync Items

from etiket_api.python_api.sync.sync_items import (
    list_sync_items,
    get_sync_item,
    reset_sync_item,
    prioritize_sync_item,
)

# List items for a source
items = list_sync_items(source_id=1)

# Get a specific item
item = get_sync_item(sync_item_id=123)

# Reset or prioritize an item
reset_sync_item(sync_item_id=123)
prioritize_sync_item(sync_item_id=123)

Connectors

from etiket_api.python_api.sync.connectors import (
    list_connectors,
    install_connector_from_pypi,
    install_connector_from_local_path,
    update_connector_from_pypi,
    uninstall_connector,
)

# List installed connectors
connectors = list_connectors()

# Install from PyPI
install_connector_from_pypi("etiket-sync-agent-qcodes")

# Install from local path
install_connector_from_local_path("/path/to/my-connector")

# Update from PyPI
update_connector_from_pypi("etiket-sync-agent-qcodes")

# Uninstall
uninstall_connector("etiket_sync_agent_qcodes")

Converters

from etiket_api.python_api.sync.converters import (
    list_converters,
    install_converter_from_pypi,
    install_converter_from_local_path,
    update_converter_from_pypi,
    uninstall_converter,
)

# List installed converters
converters = list_converters()

# Install from PyPI
install_converter_from_pypi("my-converter-package")

# Install from local path
install_converter_from_local_path("/path/to/my-converter")

# Update from PyPI
update_converter_from_pypi("my-converter-package")

# Uninstall
uninstall_converter("my_converter")

Admin / Logs

from etiket_api.python_api.admin.logs import (
    LogService,
    get_recent_log_lines,
)

# Read the last 500 lines of the API's log file
lines = get_recent_log_lines(LogService.api, n=500)
for line in lines:
    print(line)

# Read the entire log file (up to the 10 MB rotation cap)
all_lines = get_recent_log_lines(LogService.sync_agent, n=-1)

Architecture

┌─────────────────────────────────────────────────────────────┐
│                      eTiKeT SDK                             │
│                   (User-facing Python SDK)                  │
└─────────────────────────┬───────────────────────────────────┘
                          │ HTTP
                          ▼
┌─────────────────────────────────────────────────────────────┐
│                      eTiKeT API                             │
│  ┌──────────────────┐   ┌──────────────────────────────┐    │
│  │    REST API      │   │        Python API            │    │
│  │    (FastAPI)     │──▶│   auth/local, sync/agent,    │    │
│  │                  │   │   sync/sources, sync/items.. │    │
│  └──────────────────┘   └──────────────────────────────┘    │
└─────────────────────────────────────────────────────────────┘
                          │
                          ▼
┌─────────────────────────────────────────────────────────────┐
│                   eTiKeT Sync Agent                         │
│            (Background synchronization service)             │
└─────────────────────────────────────────────────────────────┘

Requirements

  • Python 3.10+
  • etiket_sync_agent
  • etiket_client

Release files for etiket-api 0.3.0b6

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Built distributions (wheels)

Table of built distributions (wheels) for etiket-api 0.3.0b6
File
etiket_api-0.3.0b6-cp314-cp314-win_amd64.whl CPython 3.14 CPython 3.14 Windows x86-64 Details
etiket_api-0.3.0b6-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl CPython 3.14 CPython 3.14 Linux glibc 2.17+ x86-64, Linux glibc 2.28+ x86-64 Details
etiket_api-0.3.0b6-cp314-cp314-macosx_11_0_x86_64.whl CPython 3.14 CPython 3.14 macOS 11.0+ x86-64 Details
etiket_api-0.3.0b6-cp314-cp314-macosx_11_0_arm64.whl CPython 3.14 CPython 3.14 macOS 11.0+ ARM64 Details
etiket_api-0.3.0b6-cp313-cp313-win_amd64.whl CPython 3.13 CPython 3.13 Windows x86-64 Details
etiket_api-0.3.0b6-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl CPython 3.13 CPython 3.13 Linux glibc 2.17+ x86-64, Linux glibc 2.28+ x86-64 Details
etiket_api-0.3.0b6-cp313-cp313-macosx_11_0_x86_64.whl CPython 3.13 CPython 3.13 macOS 11.0+ x86-64 Details
etiket_api-0.3.0b6-cp313-cp313-macosx_11_0_arm64.whl CPython 3.13 CPython 3.13 macOS 11.0+ ARM64 Details
etiket_api-0.3.0b6-cp312-cp312-win_amd64.whl CPython 3.12 CPython 3.12 Windows x86-64 Details
etiket_api-0.3.0b6-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl CPython 3.12 CPython 3.12 Linux glibc 2.17+ x86-64, Linux glibc 2.28+ x86-64 Details
etiket_api-0.3.0b6-cp312-cp312-macosx_11_0_x86_64.whl CPython 3.12 CPython 3.12 macOS 11.0+ x86-64 Details
etiket_api-0.3.0b6-cp312-cp312-macosx_11_0_arm64.whl CPython 3.12 CPython 3.12 macOS 11.0+ ARM64 Details
etiket_api-0.3.0b6-cp311-cp311-win_amd64.whl CPython 3.11 CPython 3.11 Windows x86-64 Details
etiket_api-0.3.0b6-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl CPython 3.11 CPython 3.11 Linux glibc 2.17+ x86-64, Linux glibc 2.28+ x86-64 Details
etiket_api-0.3.0b6-cp311-cp311-macosx_11_0_x86_64.whl CPython 3.11 CPython 3.11 macOS 11.0+ x86-64 Details
etiket_api-0.3.0b6-cp311-cp311-macosx_11_0_arm64.whl CPython 3.11 CPython 3.11 macOS 11.0+ ARM64 Details
etiket_api-0.3.0b6-cp310-cp310-win_amd64.whl CPython 3.10 CPython 3.10 Windows x86-64 Details
etiket_api-0.3.0b6-cp310-cp310-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl CPython 3.10 CPython 3.10 Linux glibc 2.17+ x86-64, Linux glibc 2.28+ x86-64 Details
etiket_api-0.3.0b6-cp310-cp310-macosx_11_0_x86_64.whl CPython 3.10 CPython 3.10 macOS 11.0+ x86-64 Details
etiket_api-0.3.0b6-cp310-cp310-macosx_11_0_arm64.whl CPython 3.10 CPython 3.10 macOS 11.0+ ARM64 Details

Total release size: 25.9 MB

Release files / etiket_api-0.3.0b6-cp314-cp314-win_amd64.whl

Download URL etiket_api-0.3.0b6-cp314-cp314-win_amd64.whl
Size 518.7 kB
Tags CPython 3.14 Windows x86-64
SHA-256 checksum
How to use checksums
914e836b6a06e1a483274b123f0ea658bf162c14b95e9a56c76fba71381d2607
BLAKE2b-256 checksum
How to use checksums
2455e0e1a0cb934f22b0e5f7e6149e00f0c68d30388c84654b94ecedcc12766a
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.13.14

Release files / etiket_api-0.3.0b6-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl

Download URL etiket_api-0.3.0b6-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl
Size 3.4 MB
Tags CPython 3.14 Linux glibc 2.17+ x86-64 Linux glibc 2.28+ x86-64
SHA-256 checksum
How to use checksums
d1ef211b5ebdad08f2a0616a759f29c687d1d41585e972fffa5768f5b4bb6de8
BLAKE2b-256 checksum
How to use checksums
5771ffa726cb0982ab885ba301b01661e108afbc9f70a3750a9f018465f19915
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.13.14

Release files / etiket_api-0.3.0b6-cp314-cp314-macosx_11_0_x86_64.whl

Download URL etiket_api-0.3.0b6-cp314-cp314-macosx_11_0_x86_64.whl
Size 617.6 kB
Tags CPython 3.14 macOS 11.0+ x86-64
SHA-256 checksum
How to use checksums
a4e4573561e46421f32c8444d404469151d6191bf54d9f0dbc3958f6d904e25c
BLAKE2b-256 checksum
How to use checksums
e28213d8409542433b66212cf87c38445dfa30aac37c5b26562d53abe2459dcd
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.13.14

Release files / etiket_api-0.3.0b6-cp314-cp314-macosx_11_0_arm64.whl

Download URL etiket_api-0.3.0b6-cp314-cp314-macosx_11_0_arm64.whl
Size 552.8 kB
Tags CPython 3.14 macOS 11.0+ ARM64
SHA-256 checksum
How to use checksums
c045f1d958b887cf59ee0b74116458db301b1bf0faeda09b0f4735ce44b5ed4e
BLAKE2b-256 checksum
How to use checksums
08c61ff8e844dadb7a898253a805103671dec845b3f26f8ae1892a8a7b6091d2
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.13.14

Release files / etiket_api-0.3.0b6-cp313-cp313-win_amd64.whl

Download URL etiket_api-0.3.0b6-cp313-cp313-win_amd64.whl
Size 507.4 kB
Tags CPython 3.13 Windows x86-64
SHA-256 checksum
How to use checksums
d2add1040966d40eacbe712f46edd9a73f91bd29a562431e679f6ab0ffb2e920
BLAKE2b-256 checksum
How to use checksums
b9481b1cfa75ce9821f3ead330dddb7ac68ddd64ba34b60d6b861bc2f29c0141
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.13.14

Release files / etiket_api-0.3.0b6-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl

Download URL etiket_api-0.3.0b6-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl
Size 3.5 MB
Tags CPython 3.13 Linux glibc 2.17+ x86-64 Linux glibc 2.28+ x86-64
SHA-256 checksum
How to use checksums
1dd272121bc0e7106e27d8b4804ddea6ef45ca7ee3fc7fa97f39cf5c7ecfd42f
BLAKE2b-256 checksum
How to use checksums
57c75d89da1e5dfd9c5182340696fa3eea5b9f76d13e3dbb7e3017c79a722367
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.13.14

Release files / etiket_api-0.3.0b6-cp313-cp313-macosx_11_0_x86_64.whl

Download URL etiket_api-0.3.0b6-cp313-cp313-macosx_11_0_x86_64.whl
Size 614.3 kB
Tags CPython 3.13 macOS 11.0+ x86-64
SHA-256 checksum
How to use checksums
69196f2262ad05fc913a97039aa2075412c5465c3485671f47f4bb6a709bd545
BLAKE2b-256 checksum
How to use checksums
97dd447ddae03e31d2f66e6d1fe9018714225c49c5aa975a4c508d17518d2037
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.13.14

Release files / etiket_api-0.3.0b6-cp313-cp313-macosx_11_0_arm64.whl

Download URL etiket_api-0.3.0b6-cp313-cp313-macosx_11_0_arm64.whl
Size 550.0 kB
Tags CPython 3.13 macOS 11.0+ ARM64
SHA-256 checksum
How to use checksums
d985ef1f34ecae9c8997703a33c08623f3aa8af879b6284c93a65fb60e624971
BLAKE2b-256 checksum
How to use checksums
ad72e3f6273173e701c3f4350cee4c2b676c3ecaf020e96c8603b9186568452c
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.13.14

Release files / etiket_api-0.3.0b6-cp312-cp312-win_amd64.whl

Download URL etiket_api-0.3.0b6-cp312-cp312-win_amd64.whl
Size 512.6 kB
Tags CPython 3.12 Windows x86-64
SHA-256 checksum
How to use checksums
16c4b4745563131514fc3891a94f745240c2990980baf01b55b543c3b7e94728
BLAKE2b-256 checksum
How to use checksums
dd2202f11318b79f7652daa9331e2a076f3599bca90b1960509e130ed8892488
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.13.14

Release files / etiket_api-0.3.0b6-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl

Download URL etiket_api-0.3.0b6-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl
Size 3.6 MB
Tags CPython 3.12 Linux glibc 2.17+ x86-64 Linux glibc 2.28+ x86-64
SHA-256 checksum
How to use checksums
030ab2f7cbf1725df47a2df294322782a3bc288e414343f59cd88e3659023223
BLAKE2b-256 checksum
How to use checksums
6c741e52d1e313bc79f46c5a5da9be54b78e4890a44c3fefc37449552286da2d
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.13.14

Release files / etiket_api-0.3.0b6-cp312-cp312-macosx_11_0_x86_64.whl

Download URL etiket_api-0.3.0b6-cp312-cp312-macosx_11_0_x86_64.whl
Size 616.9 kB
Tags CPython 3.12 macOS 11.0+ x86-64
SHA-256 checksum
How to use checksums
c08297c33a4baa161b0c0bc42f3648328fbdfbd480896ecaa403687e8eca1ca2
BLAKE2b-256 checksum
How to use checksums
e664b270515cdf25904a5b9f2db36ee1ce7c6f9b2b54a217826eee8bb264c1ed
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.13.14

Release files / etiket_api-0.3.0b6-cp312-cp312-macosx_11_0_arm64.whl

Download URL etiket_api-0.3.0b6-cp312-cp312-macosx_11_0_arm64.whl
Size 554.7 kB
Tags CPython 3.12 macOS 11.0+ ARM64
SHA-256 checksum
How to use checksums
a224695157431c111defce2455ae362d4a2a842fb94eea6feed65dfbb20b5a4f
BLAKE2b-256 checksum
How to use checksums
4e3a5faa97ec390da057c38cf841b331435615156ebbd171a0fecf1ca8d625a6
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.13.14

Release files / etiket_api-0.3.0b6-cp311-cp311-win_amd64.whl

Download URL etiket_api-0.3.0b6-cp311-cp311-win_amd64.whl
Size 533.8 kB
Tags CPython 3.11 Windows x86-64
SHA-256 checksum
How to use checksums
c362579d52b41a6ed8dd25f0466bf1129518a86e3e1766cca6c75c21232cead2
BLAKE2b-256 checksum
How to use checksums
9982003fa2b9511160e0f955c49a796b4ed616fdf3bdf93c644e6e0f6b67abd4
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.13.14

Release files / etiket_api-0.3.0b6-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl

Download URL etiket_api-0.3.0b6-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl
Size 3.5 MB
Tags CPython 3.11 Linux glibc 2.17+ x86-64 Linux glibc 2.28+ x86-64
SHA-256 checksum
How to use checksums
de25337203af4809ebc233e5430cb955572876168f4b66c665b4262379b2754d
BLAKE2b-256 checksum
How to use checksums
a71b9e50bae20d8111ff80a9b7c6622d0ae920807d239a4950f33e8a6453f248
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.13.14

Release files / etiket_api-0.3.0b6-cp311-cp311-macosx_11_0_x86_64.whl

Download URL etiket_api-0.3.0b6-cp311-cp311-macosx_11_0_x86_64.whl
Size 607.4 kB
Tags CPython 3.11 macOS 11.0+ x86-64
SHA-256 checksum
How to use checksums
d31b70f40bb1d8d18e21d986d3c2b4440da253d2fd5045b19478171abd9f0315
BLAKE2b-256 checksum
How to use checksums
78a0fc9cea8c95996c056ba7b0a4d9ad98001e7c96980e53a5892aea7da2717c
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.13.14

Release files / etiket_api-0.3.0b6-cp311-cp311-macosx_11_0_arm64.whl

Download URL etiket_api-0.3.0b6-cp311-cp311-macosx_11_0_arm64.whl
Size 550.0 kB
Tags CPython 3.11 macOS 11.0+ ARM64
SHA-256 checksum
How to use checksums
52d66afae85d1c41c0712e636b83dc0e41ca6c689552716ca127cb97a6123bfa
BLAKE2b-256 checksum
How to use checksums
e149055659343ddf1548678d53732bba786f9f86b2577ab095cc16c4f64a306c
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.13.14

Release files / etiket_api-0.3.0b6-cp310-cp310-win_amd64.whl

Download URL etiket_api-0.3.0b6-cp310-cp310-win_amd64.whl
Size 537.4 kB
Tags CPython 3.10 Windows x86-64
SHA-256 checksum
How to use checksums
199b23de3ce33b79147767adc4e2c373235f7bfbff2bda84cf2ebadaf8ccbef5
BLAKE2b-256 checksum
How to use checksums
eb5d6d54360fda34432623445f1e35bcb7f12c4208fbedd7fce6a44f3eb80465
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.13.14

Release files / etiket_api-0.3.0b6-cp310-cp310-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl

Download URL etiket_api-0.3.0b6-cp310-cp310-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl
Size 3.4 MB
Tags CPython 3.10 Linux glibc 2.17+ x86-64 Linux glibc 2.28+ x86-64
SHA-256 checksum
How to use checksums
d725b943f4d641923aa164a23c55a58d254f2cdb5d2cd0d3a5b4118065330a84
BLAKE2b-256 checksum
How to use checksums
3f9deab43fb5a52ec25ec84dbae8c286bc033cf1dde307e49b8f3d19309159c2
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.13.14

Release files / etiket_api-0.3.0b6-cp310-cp310-macosx_11_0_x86_64.whl

Download URL etiket_api-0.3.0b6-cp310-cp310-macosx_11_0_x86_64.whl
Size 619.9 kB
Tags CPython 3.10 macOS 11.0+ x86-64
SHA-256 checksum
How to use checksums
b75048f63420cbeb8adac7425392ad9573a257995edd206ac17abf5076586553
BLAKE2b-256 checksum
How to use checksums
688c3855363dc45410e80e3908e0cf4005e0766f7cd15bd3e0ea492357d67759
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.13.14

Release files / etiket_api-0.3.0b6-cp310-cp310-macosx_11_0_arm64.whl

Download URL etiket_api-0.3.0b6-cp310-cp310-macosx_11_0_arm64.whl
Size 560.4 kB
Tags CPython 3.10 macOS 11.0+ ARM64
SHA-256 checksum
How to use checksums
80ba6638c61b668a39b87f7c4eca4237911be3d30dec880d657e26d9af716ea6
BLAKE2b-256 checksum
How to use checksums
d4973f62862e8614c4f30538793c5777446b9f3bcd5b3f84e36a4d866831da4e
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.13.14
Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page