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.0b5

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.0b5
File
etiket_api-0.3.0b5-cp314-cp314-win_amd64.whl CPython 3.14 CPython 3.14 Windows x86-64 Details
etiket_api-0.3.0b5-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.0b5-cp314-cp314-macosx_11_0_x86_64.whl CPython 3.14 CPython 3.14 macOS 11.0+ x86-64 Details
etiket_api-0.3.0b5-cp314-cp314-macosx_11_0_arm64.whl CPython 3.14 CPython 3.14 macOS 11.0+ ARM64 Details
etiket_api-0.3.0b5-cp313-cp313-win_amd64.whl CPython 3.13 CPython 3.13 Windows x86-64 Details
etiket_api-0.3.0b5-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.28+ x86-64, Linux glibc 2.17+ x86-64 Details
etiket_api-0.3.0b5-cp313-cp313-macosx_11_0_x86_64.whl CPython 3.13 CPython 3.13 macOS 11.0+ x86-64 Details
etiket_api-0.3.0b5-cp313-cp313-macosx_11_0_arm64.whl CPython 3.13 CPython 3.13 macOS 11.0+ ARM64 Details
etiket_api-0.3.0b5-cp312-cp312-win_amd64.whl CPython 3.12 CPython 3.12 Windows x86-64 Details
etiket_api-0.3.0b5-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.28+ x86-64, Linux glibc 2.17+ x86-64 Details
etiket_api-0.3.0b5-cp312-cp312-macosx_11_0_x86_64.whl CPython 3.12 CPython 3.12 macOS 11.0+ x86-64 Details
etiket_api-0.3.0b5-cp312-cp312-macosx_11_0_arm64.whl CPython 3.12 CPython 3.12 macOS 11.0+ ARM64 Details
etiket_api-0.3.0b5-cp311-cp311-win_amd64.whl CPython 3.11 CPython 3.11 Windows x86-64 Details
etiket_api-0.3.0b5-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.0b5-cp311-cp311-macosx_11_0_x86_64.whl CPython 3.11 CPython 3.11 macOS 11.0+ x86-64 Details
etiket_api-0.3.0b5-cp311-cp311-macosx_11_0_arm64.whl CPython 3.11 CPython 3.11 macOS 11.0+ ARM64 Details
etiket_api-0.3.0b5-cp310-cp310-win_amd64.whl CPython 3.10 CPython 3.10 Windows x86-64 Details
etiket_api-0.3.0b5-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.28+ x86-64, Linux glibc 2.17+ x86-64 Details
etiket_api-0.3.0b5-cp310-cp310-macosx_11_0_x86_64.whl CPython 3.10 CPython 3.10 macOS 11.0+ x86-64 Details
etiket_api-0.3.0b5-cp310-cp310-macosx_11_0_arm64.whl CPython 3.10 CPython 3.10 macOS 11.0+ ARM64 Details

Total release size: 24.9 MB

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

Download URL etiket_api-0.3.0b5-cp314-cp314-win_amd64.whl
Size 506.6 kB
Tags CPython 3.14 Windows x86-64
SHA-256 checksum
How to use checksums
41d603049fea5ef3e63c318bb54d51055273922900812eb1ce1e0c48ea1ecf34
BLAKE2b-256 checksum
How to use checksums
c534257d1a567dd0c7b1503bb00e03c2c03b535ee29530ba06618fa25c639099
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.0b5-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl

Download URL etiket_api-0.3.0b5-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl
Size 3.3 MB
Tags CPython 3.14 Linux glibc 2.17+ x86-64 Linux glibc 2.28+ x86-64
SHA-256 checksum
How to use checksums
a09cabf771227d8c941be62ebf294d7ccbf5c2e1147e4a4826375e19281e7ed7
BLAKE2b-256 checksum
How to use checksums
e6d66350d330f3af42b61cd2f82096dc56111589648f4725ec5555cb1c1d3b05
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.0b5-cp314-cp314-macosx_11_0_x86_64.whl

Download URL etiket_api-0.3.0b5-cp314-cp314-macosx_11_0_x86_64.whl
Size 583.1 kB
Tags CPython 3.14 macOS 11.0+ x86-64
SHA-256 checksum
How to use checksums
92d06a2d964c41b17f7c49e16fe5018a31946b039e7b96e418f3672f636d086a
BLAKE2b-256 checksum
How to use checksums
0054fbb61f367b3b8d1ec0898c34aac115f704e14b2694c6f1bab8e1fde43191
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.0b5-cp314-cp314-macosx_11_0_arm64.whl

Download URL etiket_api-0.3.0b5-cp314-cp314-macosx_11_0_arm64.whl
Size 523.0 kB
Tags CPython 3.14 macOS 11.0+ ARM64
SHA-256 checksum
How to use checksums
46b077a93b05f1585219b1469bfc69fc2c8a84db3c2347a7a62a466e799c5819
BLAKE2b-256 checksum
How to use checksums
fed924cbd8b5d4f0d6f232bf8ee688bcb60b19bdf6caf019343ea318d838d19e
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.0b5-cp313-cp313-win_amd64.whl

Download URL etiket_api-0.3.0b5-cp313-cp313-win_amd64.whl
Size 498.2 kB
Tags CPython 3.13 Windows x86-64
SHA-256 checksum
How to use checksums
0b6366f7207a74b3b10faf9d59340b149c151f8ea093cd01bbf8882b693305b1
BLAKE2b-256 checksum
How to use checksums
8fb7ef7bd85667fa2e87a7780df00abfa54208f84d35401e545081d1684917cc
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.0b5-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl

Download URL etiket_api-0.3.0b5-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl
Size 3.4 MB
Tags CPython 3.13 Linux glibc 2.17+ x86-64 Linux glibc 2.28+ x86-64
SHA-256 checksum
How to use checksums
69381f2f21002052650c163a41c68f37de7b5f987318666ebdba00d87f852874
BLAKE2b-256 checksum
How to use checksums
898b402deb4a90263234e6b0867a848bedf9f976d99b0da8a63434f7e9f2de9d
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.0b5-cp313-cp313-macosx_11_0_x86_64.whl

Download URL etiket_api-0.3.0b5-cp313-cp313-macosx_11_0_x86_64.whl
Size 584.0 kB
Tags CPython 3.13 macOS 11.0+ x86-64
SHA-256 checksum
How to use checksums
c1a1c5eb4b4566abb7d388d39ba0c46a8ebd3a5e96ca0341da188d6830754d56
BLAKE2b-256 checksum
How to use checksums
12a5dec292fae875ccd69415aeb915fa6cc08c470cf598deaba00604fbfb9253
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.0b5-cp313-cp313-macosx_11_0_arm64.whl

Download URL etiket_api-0.3.0b5-cp313-cp313-macosx_11_0_arm64.whl
Size 519.9 kB
Tags CPython 3.13 macOS 11.0+ ARM64
SHA-256 checksum
How to use checksums
4bbc6800ba748105564c53c0e1343b03fa8ca3ce6c37553c68a7584108ce0a00
BLAKE2b-256 checksum
How to use checksums
a6bdab33484573e680d46f9684153c75f950644d9228fb59f54bc2bfd753ec45
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.0b5-cp312-cp312-win_amd64.whl

Download URL etiket_api-0.3.0b5-cp312-cp312-win_amd64.whl
Size 505.1 kB
Tags CPython 3.12 Windows x86-64
SHA-256 checksum
How to use checksums
2a907da4e983c16f12a0024fadfacf2c8ca8a52011c1954dc64d36c5b194347b
BLAKE2b-256 checksum
How to use checksums
3ffc55d6513f5213bae8421a28c06d543ab4e7dca775595ccc7f3531d67ef5ef
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.0b5-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl

Download URL etiket_api-0.3.0b5-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl
Size 3.5 MB
Tags CPython 3.12 Linux glibc 2.17+ x86-64 Linux glibc 2.28+ x86-64
SHA-256 checksum
How to use checksums
01f114423ae3b33daee7548e90ffc9ae3d44ba84a044d32c71a6b01758c15cff
BLAKE2b-256 checksum
How to use checksums
9667f631f5690a6df989c8628cfb8386298e140f19065715b1c1eee8da8ea595
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.0b5-cp312-cp312-macosx_11_0_x86_64.whl

Download URL etiket_api-0.3.0b5-cp312-cp312-macosx_11_0_x86_64.whl
Size 586.1 kB
Tags CPython 3.12 macOS 11.0+ x86-64
SHA-256 checksum
How to use checksums
45591f2a8596ea6c2165e1643bdc90aa51f8ee8bac4762bd2edaf616c0d0d7aa
BLAKE2b-256 checksum
How to use checksums
1bcc2e0c9f34604acf77d5eff68197283d82f68652d7e84846e9b242ebe99a56
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.0b5-cp312-cp312-macosx_11_0_arm64.whl

Download URL etiket_api-0.3.0b5-cp312-cp312-macosx_11_0_arm64.whl
Size 523.7 kB
Tags CPython 3.12 macOS 11.0+ ARM64
SHA-256 checksum
How to use checksums
c7fdafef3d9ec901314b46926a9feed3d4966e80c5e71aa0bc91e5a295f462d5
BLAKE2b-256 checksum
How to use checksums
e62f04a12748caa402a7fe86ef90d7cd7850a634dc0a6354c87f0140c755ebcc
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.0b5-cp311-cp311-win_amd64.whl

Download URL etiket_api-0.3.0b5-cp311-cp311-win_amd64.whl
Size 519.0 kB
Tags CPython 3.11 Windows x86-64
SHA-256 checksum
How to use checksums
b8663b8802f1b7ef95d4455af1f754a2b388ce75e2ade87b9a6be9f98820c187
BLAKE2b-256 checksum
How to use checksums
5e8ba5e173189af82232a61e4e79811c4c225012704f45ad0e4a431dd37c36ce
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.0b5-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl

Download URL etiket_api-0.3.0b5-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl
Size 3.4 MB
Tags CPython 3.11 Linux glibc 2.17+ x86-64 Linux glibc 2.28+ x86-64
SHA-256 checksum
How to use checksums
588e212e1dc60c01e5a67fd8987e78f5ebd73cf3a9a4a5e970ac056421d38c2e
BLAKE2b-256 checksum
How to use checksums
fd498f31724e1d732248fe41b762ebec3c2aa05aa18d433782ad7256fec12863
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.0b5-cp311-cp311-macosx_11_0_x86_64.whl

Download URL etiket_api-0.3.0b5-cp311-cp311-macosx_11_0_x86_64.whl
Size 590.8 kB
Tags CPython 3.11 macOS 11.0+ x86-64
SHA-256 checksum
How to use checksums
6395e4c53a8bf8fcade76942a1e039e857fdd0352313c5f12f45006546244bf5
BLAKE2b-256 checksum
How to use checksums
94fcc9017ca8a450f0f30fea482b60957ad5b5a8f22c1b62c84a17e6cc18e750
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.0b5-cp311-cp311-macosx_11_0_arm64.whl

Download URL etiket_api-0.3.0b5-cp311-cp311-macosx_11_0_arm64.whl
Size 529.5 kB
Tags CPython 3.11 macOS 11.0+ ARM64
SHA-256 checksum
How to use checksums
7dc1ec3169de78c75cf2ce3ba7f679d66a02722e950ad2008c98ba8d0b0f9068
BLAKE2b-256 checksum
How to use checksums
a34bc712b4f62b261f13b47195dd6622b9d9723a48269e9fd10aad5bdd0354d2
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.0b5-cp310-cp310-win_amd64.whl

Download URL etiket_api-0.3.0b5-cp310-cp310-win_amd64.whl
Size 515.8 kB
Tags CPython 3.10 Windows x86-64
SHA-256 checksum
How to use checksums
6bcd429871cc184b3ab04e8efa69f0077a65e0f44746c6fe99cb38ed2c4182f3
BLAKE2b-256 checksum
How to use checksums
e02307bb15bbfa08c7f53ac14846fdc4d330f3fbb1ae4839f7cf92470c8f74d2
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.0b5-cp310-cp310-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl

Download URL etiket_api-0.3.0b5-cp310-cp310-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl
Size 3.2 MB
Tags CPython 3.10 Linux glibc 2.17+ x86-64 Linux glibc 2.28+ x86-64
SHA-256 checksum
How to use checksums
a277589d2326796c18af1ce75297168bf17240b004e1c24c1f007b528a538393
BLAKE2b-256 checksum
How to use checksums
ba53240b0270f09e759e9c4bf06c78ab4bf7ddbc9aea21e32802916fb8a382ff
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.0b5-cp310-cp310-macosx_11_0_x86_64.whl

Download URL etiket_api-0.3.0b5-cp310-cp310-macosx_11_0_x86_64.whl
Size 599.6 kB
Tags CPython 3.10 macOS 11.0+ x86-64
SHA-256 checksum
How to use checksums
07b4c066f70be30effd94132bd1238b5a1d8c98f2cb9ea3ef332181b5c258949
BLAKE2b-256 checksum
How to use checksums
8a1ff847666555ecba38285b4506ecf400251948275d3642527bbff1fdf1f048
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.0b5-cp310-cp310-macosx_11_0_arm64.whl

Download URL etiket_api-0.3.0b5-cp310-cp310-macosx_11_0_arm64.whl
Size 536.0 kB
Tags CPython 3.10 macOS 11.0+ ARM64
SHA-256 checksum
How to use checksums
413dc8efe6d2538bced80726b1fa1d73dea2f1429160ceb9671ab2b27da18e74
BLAKE2b-256 checksum
How to use checksums
eda06e857b22b277a92880b84a27ea6588b4d68d0c0a66ea4e143d82c4462156
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