Metadata-Version: 2.4
Name: entryscape
Version: 1.3.1
Summary: EntryScape API client for Python - provides access to EntryScape data following DCAT-AP standards
Author-email: Metasolutions <contact@entryscape.com>
License-Expression: LGPL-3.0-or-later
Project-URL: Homepage, https://entryscape.com
Project-URL: Documentation, https://bitbucket.org/metasolutions/entryscape-api
Project-URL: Repository, https://bitbucket.org/metasolutions/entryscape-api
Project-URL: Changelog, https://bitbucket.org/metasolutions/entryscape-api/src/master/CHANGELOG.md
Keywords: entryscape,dcat-ap,open-data,api-client,linked-data,rdf
Classifier: Development Status :: 4 - Beta
Classifier: Intended Audience :: Developers
Classifier: Operating System :: OS Independent
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.9
Classifier: Programming Language :: Python :: 3.10
Classifier: Programming Language :: Python :: 3.11
Classifier: Programming Language :: Python :: 3.12
Classifier: Programming Language :: Python :: 3.13
Classifier: Topic :: Software Development :: Libraries :: Python Modules
Classifier: Topic :: Internet :: WWW/HTTP
Classifier: Typing :: Typed
Requires-Python: >=3.9
Description-Content-Type: text/markdown
License-File: LICENSE.txt
Requires-Dist: urllib3<3.0.0,>=2.1.0
Requires-Dist: python-dateutil>=2.8.2
Requires-Dist: aiohttp>=3.8.4
Requires-Dist: aiohttp-retry>=2.8.3
Requires-Dist: pydantic>=2
Requires-Dist: typing-extensions>=4.7.1
Provides-Extra: dev
Requires-Dist: pytest>=7.2.1; extra == "dev"
Requires-Dist: pytest-cov>=4.0; extra == "dev"
Requires-Dist: pytest-asyncio>=0.23; extra == "dev"
Requires-Dist: mypy>=1.8; extra == "dev"
Requires-Dist: ruff>=0.2; extra == "dev"
Requires-Dist: responses>=0.25; extra == "dev"
Requires-Dist: types-python-dateutil>=2.8.19; extra == "dev"
Provides-Extra: rdf
Requires-Dist: rdflib>=7.0.0; extra == "rdf"
Requires-Dist: pyld>=2.0.4; extra == "rdf"
Dynamic: license-file

# entryscape

EntryScape API client for Python - provides access to EntryScape data following DCAT-AP standards

[![Python 3.9+](https://img.shields.io/badge/python-3.9+-blue.svg)](https://www.python.org/downloads/)
[![License: GPL v3](https://img.shields.io/badge/License-GPLv3-blue.svg)](https://www.gnu.org/licenses/gpl-3.0)

This Python package is automatically generated by the [OpenAPI Generator](https://openapi-generator.tech) project:

- API version: 1.3.1
- Package version: 1.3.1
- Generator version: 7.22.0

For more information, please visit [https://entryscape.com/en/contact-us/](https://entryscape.com/en/contact-us/)

## Requirements

- Python 3.10+
- Dependencies are managed via `pyproject.toml`

## Installation

### From PyPI (recommended)

```bash
pip install entryscape
```

### From a download

Every release is also published as `python-sdk.tar.gz` at
<https://api.entryscape.com/sdk/latest/python-sdk.tar.gz>, for a build that cannot reach
PyPI or has to vendor its dependencies:

The archive has no top-level directory of its own, so unpack it into one:

```bash
mkdir entryscape-python && tar -xzf python-sdk.tar.gz -C entryscape-python
pip install ./entryscape-python
```

### From Bitbucket

```bash
pip install git+https://bitbucket.org/metasolutions/entryscape-api.git#subdirectory=out/python-sdk
```

### From source

```bash
git clone https://bitbucket.org/metasolutions/entryscape-api.git
cd entryscape-api/out/python-sdk
pip install .
```

### For development

```bash
pip install -e ".[dev]"
```

## Quick Start

```python
import entryscape
from entryscape import ApiException

# Configure the client
configuration = entryscape.Configuration(
    host="http://localhost:8080"  # API server URL
)

# Async usage
import asyncio

async def main():
    async with entryscape.ApiClient(configuration) as api_client:
        api = entryscape.CatalogApi(api_client)

        try:
            # List catalogs from an EntryStore instance
            catalogs = await api.list_catalogs(
                entrystore_host="dev.entryscape.com/store/"
            )
            print(f"Found {catalogs.results} catalogs")

            for item in catalogs.items or []:
                print(f"  - {item.uri}")
        except ApiException as e:
            print(f"API error: {e}")

asyncio.run(main())
```

## EntryStore Hosts

Pass a host string permitted by the API deployment's effective EntryStore allowlist.
Omit it to use the deployment's configured default. A bare hostname uses `/store/`;
a host with a base path selects that path. Do not include a URL scheme.

```python
entrystore_host = "dev.entryscape.com/store/"
```

## Getting Started

Please follow the [installation procedure](#installation) and then run the following:

```python
import asyncio
import os

import entryscape
from entryscape import ApiException
from pprint import pprint

# Defining the host is optional and defaults to https://api.entryscape.com
# See configuration.py for a list of all supported configuration parameters.
configuration = entryscape.Configuration(
    host = "https://api.entryscape.com"
)

# The client must configure the authentication and authorization parameters
# in accordance with the API server security policy.
# Examples for each auth method are provided below, use the example that
# satisfies your auth use case.

# Configure API key authorization: auth_token
configuration.api_key['auth_token'] = os.environ["API_KEY"]

# Uncomment below to setup prefix (e.g. Bearer) for API key, if needed
# configuration.api_key_prefix['auth_token'] = 'Bearer'

# Configure API key authorization: auth_header
configuration.api_key['auth_header'] = os.environ["API_KEY"]

# Uncomment below to setup prefix (e.g. Bearer) for API key, if needed
# configuration.api_key_prefix['auth_header'] = 'Bearer'

# Configure API key authorization: app_token_header
configuration.api_key['app_token_header'] = os.environ["API_KEY"]

# Uncomment below to setup prefix (e.g. Bearer) for API key, if needed
# configuration.api_key_prefix['app_token_header'] = 'Bearer'


async def main():
    # Enter a context with an instance of the API client
    async with entryscape.ApiClient(configuration) as api_client:
        # Create an instance of the API class
        api_instance = entryscape.AppTokenApi(api_client)
        app_token_create_request = {"name":"my-data-app","email":"owner@example.com"} # AppTokenCreateRequest | 

        try:
            # Create app token
            api_response = await api_instance.create_app_token(app_token_create_request)
            print("The response of AppTokenApi->create_app_token:\n")
            pprint(api_response)
        except ApiException as e:
            print("Exception when calling AppTokenApi->create_app_token: %s\n" % e)

asyncio.run(main())

```

## Documentation for API Endpoints

All URIs are relative to *https://api.entryscape.com*

Class | Method | HTTP request | Description
------------ | ------------- | ------------- | -------------
*AppTokenApi* | [**create_app_token**](docs/AppTokenApi.md#create_app_token) | **POST** /app-token | Create app token
*AppTokenApi* | [**get_app_token**](docs/AppTokenApi.md#get_app_token) | **GET** /app-token/{app_token_id} | Get app token details
*AppTokenApi* | [**verify_app_token**](docs/AppTokenApi.md#verify_app_token) | **POST** /app-token/verify | Verify app token
*AuthApi* | [**login**](docs/AuthApi.md#login) | **POST** /auth/login | Log in (start a user session)
*AuthApi* | [**logout**](docs/AuthApi.md#logout) | **POST** /auth/logout | Log out (end the user session)
*AuthApi* | [**whoami**](docs/AuthApi.md#whoami) | **GET** /auth/whoami | Current user for the session
*CatalogApi* | [**create_catalog**](docs/CatalogApi.md#create_catalog) | **POST** /catalog | Create catalog
*CatalogApi* | [**delete_catalog**](docs/CatalogApi.md#delete_catalog) | **DELETE** /catalog/{context_id}/{entry_id} | Delete catalog
*CatalogApi* | [**get_catalog**](docs/CatalogApi.md#get_catalog) | **GET** /catalog/{context_id}/{entry_id} | Get catalog
*CatalogApi* | [**get_catalog_metadata**](docs/CatalogApi.md#get_catalog_metadata) | **GET** /catalog/{context_id}/{entry_id}/metadata | Get catalog metadata
*CatalogApi* | [**list_catalog_dataservices**](docs/CatalogApi.md#list_catalog_dataservices) | **GET** /catalog/{context_id}/{entry_id}/dataservices | List data services in catalog
*CatalogApi* | [**list_catalog_datasets**](docs/CatalogApi.md#list_catalog_datasets) | **GET** /catalog/{context_id}/{entry_id}/datasets | List datasets in catalog
*CatalogApi* | [**list_catalogs**](docs/CatalogApi.md#list_catalogs) | **GET** /catalog | List catalogs
*CatalogApi* | [**update_catalog_metadata**](docs/CatalogApi.md#update_catalog_metadata) | **PUT** /catalog/{context_id}/{entry_id}/metadata | Update catalog metadata
*CatalogApi* | [**validate_catalog**](docs/CatalogApi.md#validate_catalog) | **GET** /catalog/{context_id}/{entry_id}/validate | Validate catalog metadata
*ContactApi* | [**create_contact**](docs/ContactApi.md#create_contact) | **POST** /contact | Create contact
*ContactApi* | [**delete_contact**](docs/ContactApi.md#delete_contact) | **DELETE** /contact/{context_id}/{entry_id} | Delete contact
*ContactApi* | [**get_contact**](docs/ContactApi.md#get_contact) | **GET** /contact/{context_id}/{entry_id} | Get contact
*ContactApi* | [**get_contact_metadata**](docs/ContactApi.md#get_contact_metadata) | **GET** /contact/{context_id}/{entry_id}/metadata | Get contact metadata
*ContactApi* | [**list_contacts**](docs/ContactApi.md#list_contacts) | **GET** /contact | List contacts
*ContactApi* | [**update_contact_metadata**](docs/ContactApi.md#update_contact_metadata) | **PUT** /contact/{context_id}/{entry_id}/metadata | Update contact metadata
*ContactApi* | [**validate_contact**](docs/ContactApi.md#validate_contact) | **GET** /contact/{context_id}/{entry_id}/validate | Validate contact metadata
*DataserviceApi* | [**create_data_service**](docs/DataserviceApi.md#create_data_service) | **POST** /dataservice | Create data service
*DataserviceApi* | [**delete_data_service**](docs/DataserviceApi.md#delete_data_service) | **DELETE** /dataservice/{context_id}/{entry_id} | Delete data service
*DataserviceApi* | [**get_data_service**](docs/DataserviceApi.md#get_data_service) | **GET** /dataservice/{context_id}/{entry_id} | Get data service
*DataserviceApi* | [**get_data_service_metadata**](docs/DataserviceApi.md#get_data_service_metadata) | **GET** /dataservice/{context_id}/{entry_id}/metadata | Get data service metadata
*DataserviceApi* | [**list_data_services**](docs/DataserviceApi.md#list_data_services) | **GET** /dataservice | List data services
*DataserviceApi* | [**update_data_service_metadata**](docs/DataserviceApi.md#update_data_service_metadata) | **PUT** /dataservice/{context_id}/{entry_id}/metadata | Update data service metadata
*DataserviceApi* | [**validate_data_service**](docs/DataserviceApi.md#validate_data_service) | **GET** /dataservice/{context_id}/{entry_id}/validate | Validate data service metadata
*DatasetApi* | [**create_dataset**](docs/DatasetApi.md#create_dataset) | **POST** /dataset | Create dataset
*DatasetApi* | [**delete_dataset**](docs/DatasetApi.md#delete_dataset) | **DELETE** /dataset/{context_id}/{entry_id} | Delete dataset
*DatasetApi* | [**get_dataset**](docs/DatasetApi.md#get_dataset) | **GET** /dataset/{context_id}/{entry_id} | Get dataset
*DatasetApi* | [**get_dataset_metadata**](docs/DatasetApi.md#get_dataset_metadata) | **GET** /dataset/{context_id}/{entry_id}/metadata | Get dataset metadata
*DatasetApi* | [**list_dataset_distributions**](docs/DatasetApi.md#list_dataset_distributions) | **GET** /dataset/{context_id}/{entry_id}/distributions | List distributions for dataset
*DatasetApi* | [**list_datasets**](docs/DatasetApi.md#list_datasets) | **GET** /dataset | List datasets
*DatasetApi* | [**update_dataset_metadata**](docs/DatasetApi.md#update_dataset_metadata) | **PUT** /dataset/{context_id}/{entry_id}/metadata | Update dataset metadata
*DatasetApi* | [**validate_dataset**](docs/DatasetApi.md#validate_dataset) | **GET** /dataset/{context_id}/{entry_id}/validate | Validate dataset metadata
*DistributionApi* | [**create_distribution**](docs/DistributionApi.md#create_distribution) | **POST** /distribution | Create distribution
*DistributionApi* | [**delete_distribution**](docs/DistributionApi.md#delete_distribution) | **DELETE** /distribution/{context_id}/{entry_id} | Delete distribution
*DistributionApi* | [**get_distribution**](docs/DistributionApi.md#get_distribution) | **GET** /distribution/{context_id}/{entry_id} | Get distribution
*DistributionApi* | [**get_distribution_metadata**](docs/DistributionApi.md#get_distribution_metadata) | **GET** /distribution/{context_id}/{entry_id}/metadata | Get distribution metadata
*DistributionApi* | [**list_distributions**](docs/DistributionApi.md#list_distributions) | **GET** /distribution | List distributions
*DistributionApi* | [**update_distribution_metadata**](docs/DistributionApi.md#update_distribution_metadata) | **PUT** /distribution/{context_id}/{entry_id}/metadata | Update distribution metadata
*DistributionApi* | [**validate_distribution**](docs/DistributionApi.md#validate_distribution) | **GET** /distribution/{context_id}/{entry_id}/validate | Validate distribution metadata
*DocumentApi* | [**create_document**](docs/DocumentApi.md#create_document) | **POST** /document | Create document
*DocumentApi* | [**delete_document**](docs/DocumentApi.md#delete_document) | **DELETE** /document/{context_id}/{entry_id} | Delete document
*DocumentApi* | [**get_document**](docs/DocumentApi.md#get_document) | **GET** /document/{context_id}/{entry_id} | Get document
*DocumentApi* | [**get_document_metadata**](docs/DocumentApi.md#get_document_metadata) | **GET** /document/{context_id}/{entry_id}/metadata | Get document metadata
*DocumentApi* | [**list_documents**](docs/DocumentApi.md#list_documents) | **GET** /document | List documents
*DocumentApi* | [**update_document_metadata**](docs/DocumentApi.md#update_document_metadata) | **PUT** /document/{context_id}/{entry_id}/metadata | Update document metadata
*IdeaApi* | [**create_idea**](docs/IdeaApi.md#create_idea) | **POST** /idea | Create idea
*IdeaApi* | [**delete_idea**](docs/IdeaApi.md#delete_idea) | **DELETE** /idea/{context_id}/{entry_id} | Delete idea
*IdeaApi* | [**get_idea**](docs/IdeaApi.md#get_idea) | **GET** /idea/{context_id}/{entry_id} | Get idea
*IdeaApi* | [**get_idea_metadata**](docs/IdeaApi.md#get_idea_metadata) | **GET** /idea/{context_id}/{entry_id}/metadata | Get idea metadata
*IdeaApi* | [**list_ideas**](docs/IdeaApi.md#list_ideas) | **GET** /idea | List ideas
*IdeaApi* | [**update_idea_metadata**](docs/IdeaApi.md#update_idea_metadata) | **PUT** /idea/{context_id}/{entry_id}/metadata | Update idea metadata
*JobApi* | [**get_job_status**](docs/JobApi.md#get_job_status) | **GET** /job/{job_id} | Get job status
*ModelApi* | [**create_model**](docs/ModelApi.md#create_model) | **POST** /model | Create model
*ModelApi* | [**delete_model**](docs/ModelApi.md#delete_model) | **DELETE** /model/{context_id} | Delete model
*ModelApi* | [**get_model**](docs/ModelApi.md#get_model) | **GET** /model/{context_id} | Get model
*ModelApi* | [**get_model_metadata**](docs/ModelApi.md#get_model_metadata) | **GET** /model/{context_id}/metadata | Get model metadata
*ModelApi* | [**list_models**](docs/ModelApi.md#list_models) | **GET** /model | List models
*ModelApi* | [**update_model_metadata**](docs/ModelApi.md#update_model_metadata) | **PUT** /model/{context_id}/metadata | Update model metadata
*ModelClassApi* | [**create_model_class**](docs/ModelClassApi.md#create_model_class) | **POST** /model/{context_id}/classes | Create model class
*ModelClassApi* | [**delete_model_class**](docs/ModelClassApi.md#delete_model_class) | **DELETE** /model/{context_id}/classes/{entry_id} | Delete model class
*ModelClassApi* | [**get_model_class**](docs/ModelClassApi.md#get_model_class) | **GET** /model/{context_id}/classes/{entry_id} | Get model class
*ModelClassApi* | [**get_model_class_metadata**](docs/ModelClassApi.md#get_model_class_metadata) | **GET** /model/{context_id}/classes/{entry_id}/metadata | Get model class metadata
*ModelClassApi* | [**list_model_classes**](docs/ModelClassApi.md#list_model_classes) | **GET** /model/{context_id}/classes | List model classes
*ModelClassApi* | [**update_model_class_metadata**](docs/ModelClassApi.md#update_model_class_metadata) | **PUT** /model/{context_id}/classes/{entry_id}/metadata | Update model class metadata
*ModelDiagramApi* | [**create_model_diagram**](docs/ModelDiagramApi.md#create_model_diagram) | **POST** /model/{context_id}/diagrams | Create model diagram
*ModelDiagramApi* | [**delete_model_diagram**](docs/ModelDiagramApi.md#delete_model_diagram) | **DELETE** /model/{context_id}/diagrams/{entry_id} | Delete model diagram
*ModelDiagramApi* | [**get_model_diagram**](docs/ModelDiagramApi.md#get_model_diagram) | **GET** /model/{context_id}/diagrams/{entry_id} | Get model diagram
*ModelDiagramApi* | [**get_model_diagram_metadata**](docs/ModelDiagramApi.md#get_model_diagram_metadata) | **GET** /model/{context_id}/diagrams/{entry_id}/metadata | Get model diagram metadata
*ModelDiagramApi* | [**list_model_diagrams**](docs/ModelDiagramApi.md#list_model_diagrams) | **GET** /model/{context_id}/diagrams | List model diagrams
*ModelDiagramApi* | [**update_model_diagram_metadata**](docs/ModelDiagramApi.md#update_model_diagram_metadata) | **PUT** /model/{context_id}/diagrams/{entry_id}/metadata | Update model diagram metadata
*ModelFieldApi* | [**create_model_field**](docs/ModelFieldApi.md#create_model_field) | **POST** /model/{context_id}/fields | Create model field
*ModelFieldApi* | [**delete_model_field**](docs/ModelFieldApi.md#delete_model_field) | **DELETE** /model/{context_id}/fields/{entry_id} | Delete model field
*ModelFieldApi* | [**get_model_field**](docs/ModelFieldApi.md#get_model_field) | **GET** /model/{context_id}/fields/{entry_id} | Get model field
*ModelFieldApi* | [**get_model_field_metadata**](docs/ModelFieldApi.md#get_model_field_metadata) | **GET** /model/{context_id}/fields/{entry_id}/metadata | Get model field metadata
*ModelFieldApi* | [**list_model_fields**](docs/ModelFieldApi.md#list_model_fields) | **GET** /model/{context_id}/fields | List model fields
*ModelFieldApi* | [**update_model_field_metadata**](docs/ModelFieldApi.md#update_model_field_metadata) | **PUT** /model/{context_id}/fields/{entry_id}/metadata | Update model field metadata
*ModelFormApi* | [**create_model_form**](docs/ModelFormApi.md#create_model_form) | **POST** /model/{context_id}/forms | Create model form
*ModelFormApi* | [**delete_model_form**](docs/ModelFormApi.md#delete_model_form) | **DELETE** /model/{context_id}/forms/{entry_id} | Delete model form
*ModelFormApi* | [**get_model_form**](docs/ModelFormApi.md#get_model_form) | **GET** /model/{context_id}/forms/{entry_id} | Get model form
*ModelFormApi* | [**get_model_form_metadata**](docs/ModelFormApi.md#get_model_form_metadata) | **GET** /model/{context_id}/forms/{entry_id}/metadata | Get model form metadata
*ModelFormApi* | [**list_model_forms**](docs/ModelFormApi.md#list_model_forms) | **GET** /model/{context_id}/forms | List model forms
*ModelFormApi* | [**update_model_form_metadata**](docs/ModelFormApi.md#update_model_form_metadata) | **PUT** /model/{context_id}/forms/{entry_id}/metadata | Update model form metadata
*ModelNamespaceApi* | [**create_model_namespace**](docs/ModelNamespaceApi.md#create_model_namespace) | **POST** /model/{context_id}/namespaces | Create model namespace
*ModelNamespaceApi* | [**delete_model_namespace**](docs/ModelNamespaceApi.md#delete_model_namespace) | **DELETE** /model/{context_id}/namespaces/{entry_id} | Delete model namespace
*ModelNamespaceApi* | [**get_model_namespace**](docs/ModelNamespaceApi.md#get_model_namespace) | **GET** /model/{context_id}/namespaces/{entry_id} | Get model namespace
*ModelNamespaceApi* | [**get_model_namespace_metadata**](docs/ModelNamespaceApi.md#get_model_namespace_metadata) | **GET** /model/{context_id}/namespaces/{entry_id}/metadata | Get model namespace metadata
*ModelNamespaceApi* | [**list_model_namespaces**](docs/ModelNamespaceApi.md#list_model_namespaces) | **GET** /model/{context_id}/namespaces | List model namespaces
*ModelNamespaceApi* | [**update_model_namespace_metadata**](docs/ModelNamespaceApi.md#update_model_namespace_metadata) | **PUT** /model/{context_id}/namespaces/{entry_id}/metadata | Update model namespace metadata
*ModelPropertyApi* | [**create_model_property**](docs/ModelPropertyApi.md#create_model_property) | **POST** /model/{context_id}/properties | Create model property
*ModelPropertyApi* | [**delete_model_property**](docs/ModelPropertyApi.md#delete_model_property) | **DELETE** /model/{context_id}/properties/{entry_id} | Delete model property
*ModelPropertyApi* | [**get_model_property**](docs/ModelPropertyApi.md#get_model_property) | **GET** /model/{context_id}/properties/{entry_id} | Get model property
*ModelPropertyApi* | [**get_model_property_metadata**](docs/ModelPropertyApi.md#get_model_property_metadata) | **GET** /model/{context_id}/properties/{entry_id}/metadata | Get model property metadata
*ModelPropertyApi* | [**list_model_properties**](docs/ModelPropertyApi.md#list_model_properties) | **GET** /model/{context_id}/properties | List model properties
*ModelPropertyApi* | [**update_model_property_metadata**](docs/ModelPropertyApi.md#update_model_property_metadata) | **PUT** /model/{context_id}/properties/{entry_id}/metadata | Update model property metadata
*OrganizationApi* | [**create_organization**](docs/OrganizationApi.md#create_organization) | **POST** /organization | Create organization
*OrganizationApi* | [**delete_organization**](docs/OrganizationApi.md#delete_organization) | **DELETE** /organization/{context_id}/{entry_id} | Delete organization
*OrganizationApi* | [**get_organization**](docs/OrganizationApi.md#get_organization) | **GET** /organization/{context_id}/{entry_id} | Get organization
*OrganizationApi* | [**get_organization_metadata**](docs/OrganizationApi.md#get_organization_metadata) | **GET** /organization/{context_id}/{entry_id}/metadata | Get organization metadata
*OrganizationApi* | [**list_organizations**](docs/OrganizationApi.md#list_organizations) | **GET** /organization | List organizations
*OrganizationApi* | [**update_organization_metadata**](docs/OrganizationApi.md#update_organization_metadata) | **PUT** /organization/{context_id}/{entry_id}/metadata | Update organization metadata
*OrganizationApi* | [**validate_organization**](docs/OrganizationApi.md#validate_organization) | **GET** /organization/{context_id}/{entry_id}/validate | Validate organization metadata
*SearchApi* | [**advanced_search**](docs/SearchApi.md#advanced_search) | **POST** /search | Advanced search
*SearchApi* | [**get_search_facets**](docs/SearchApi.md#get_search_facets) | **GET** /search/facets | Get available facet fields
*SearchApi* | [**search**](docs/SearchApi.md#search) | **GET** /search | Search entries
*ShowcaseApi* | [**create_showcase**](docs/ShowcaseApi.md#create_showcase) | **POST** /showcase | Create showcase
*ShowcaseApi* | [**delete_showcase**](docs/ShowcaseApi.md#delete_showcase) | **DELETE** /showcase/{context_id}/{entry_id} | Delete showcase
*ShowcaseApi* | [**get_showcase**](docs/ShowcaseApi.md#get_showcase) | **GET** /showcase/{context_id}/{entry_id} | Get showcase
*ShowcaseApi* | [**get_showcase_metadata**](docs/ShowcaseApi.md#get_showcase_metadata) | **GET** /showcase/{context_id}/{entry_id}/metadata | Get showcase metadata
*ShowcaseApi* | [**list_showcases**](docs/ShowcaseApi.md#list_showcases) | **GET** /showcase | List showcases
*ShowcaseApi* | [**update_showcase_metadata**](docs/ShowcaseApi.md#update_showcase_metadata) | **PUT** /showcase/{context_id}/{entry_id}/metadata | Update showcase metadata
*SuggestionApi* | [**create_suggestion**](docs/SuggestionApi.md#create_suggestion) | **POST** /suggestion | Create suggestion
*SuggestionApi* | [**delete_suggestion**](docs/SuggestionApi.md#delete_suggestion) | **DELETE** /suggestion/{context_id}/{entry_id} | Delete suggestion
*SuggestionApi* | [**get_suggestion**](docs/SuggestionApi.md#get_suggestion) | **GET** /suggestion/{context_id}/{entry_id} | Get suggestion
*SuggestionApi* | [**get_suggestion_metadata**](docs/SuggestionApi.md#get_suggestion_metadata) | **GET** /suggestion/{context_id}/{entry_id}/metadata | Get suggestion metadata
*SuggestionApi* | [**list_suggestions**](docs/SuggestionApi.md#list_suggestions) | **GET** /suggestion | List suggestions
*SuggestionApi* | [**update_suggestion_metadata**](docs/SuggestionApi.md#update_suggestion_metadata) | **PUT** /suggestion/{context_id}/{entry_id}/metadata | Update suggestion metadata
*TerminologyApi* | [**delete_terminology**](docs/TerminologyApi.md#delete_terminology) | **DELETE** /terminology/{context_id} | Delete terminology
*TerminologyApi* | [**get_terminology**](docs/TerminologyApi.md#get_terminology) | **GET** /terminology/{context_id} | Get terminology
*TerminologyApi* | [**import_terminology**](docs/TerminologyApi.md#import_terminology) | **POST** /terminology/import | Import SKOS terminology
*TerminologyApi* | [**list_terminologies**](docs/TerminologyApi.md#list_terminologies) | **GET** /terminology | List terminologies
*UploadApi* | [**add_file_to_distribution**](docs/UploadApi.md#add_file_to_distribution) | **POST** /distribution/addFile | Add file to distribution
*UploadApi* | [**replace_file_in_distribution**](docs/UploadApi.md#replace_file_in_distribution) | **POST** /distribution/replaceFile | Replace file in distribution


## Documentation For Models

 - [AppToken](docs/AppToken.md)
 - [AppTokenCreateRequest](docs/AppTokenCreateRequest.md)
 - [AppTokenCreateResponse](docs/AppTokenCreateResponse.md)
 - [AppTokenStatus](docs/AppTokenStatus.md)
 - [AppTokenVerifyRequest](docs/AppTokenVerifyRequest.md)
 - [EntityListItem](docs/EntityListItem.md)
 - [EntityListResponse](docs/EntityListResponse.md)
 - [EntityReference](docs/EntityReference.md)
 - [EntityType](docs/EntityType.md)
 - [Error](docs/Error.md)
 - [FacetField](docs/FacetField.md)
 - [FacetFieldValuesInner](docs/FacetFieldValuesInner.md)
 - [FacetList](docs/FacetList.md)
 - [FacetListAvailableInner](docs/FacetListAvailableInner.md)
 - [JobResponse](docs/JobResponse.md)
 - [JobStatus](docs/JobStatus.md)
 - [JobStatusProgress](docs/JobStatusProgress.md)
 - [JobStatusValue](docs/JobStatusValue.md)
 - [JobType](docs/JobType.md)
 - [ListCatalogsEntryTypeParameter](docs/ListCatalogsEntryTypeParameter.md)
 - [ListCatalogsGraphTypeParameter](docs/ListCatalogsGraphTypeParameter.md)
 - [ListCatalogsResourceTypeParameter](docs/ListCatalogsResourceTypeParameter.md)
 - [LoginRequest](docs/LoginRequest.md)
 - [LoginResponse](docs/LoginResponse.md)
 - [MetadataFormat](docs/MetadataFormat.md)
 - [MetadataRequest](docs/MetadataRequest.md)
 - [ParentReference](docs/ParentReference.md)
 - [SearchRequest](docs/SearchRequest.md)
 - [SearchRequestFilters](docs/SearchRequestFilters.md)
 - [SearchRequestFiltersGraphType](docs/SearchRequestFiltersGraphType.md)
 - [SearchRequestFiltersResourceType](docs/SearchRequestFiltersResourceType.md)
 - [SearchRequestSort](docs/SearchRequestSort.md)
 - [SearchRequestSortOrder](docs/SearchRequestSortOrder.md)
 - [SearchResponse](docs/SearchResponse.md)
 - [SearchResult](docs/SearchResult.md)
 - [SearchResultGraphType](docs/SearchResultGraphType.md)
 - [SearchResultResourceType](docs/SearchResultResourceType.md)
 - [SearchSortOrderParameter](docs/SearchSortOrderParameter.md)
 - [TerminologyImportMode](docs/TerminologyImportMode.md)
 - [ValidationProfile](docs/ValidationProfile.md)
 - [ValidationResponse](docs/ValidationResponse.md)
 - [ValidationResult](docs/ValidationResult.md)
 - [ValidationSeverity](docs/ValidationSeverity.md)
 - [ValidationSummary](docs/ValidationSummary.md)
 - [WhoamiResponse](docs/WhoamiResponse.md)


<a id="documentation-for-authorization"></a>
## Documentation For Authorization

Authentication schemes defined for the API:
<a id="auth_token"></a>
### auth_token

- **Type**: API key
- **API key parameter name**: auth_token
- **Location**: Cookie

<a id="auth_header"></a>
### auth_header

- **Type**: API key
- **API key parameter name**: X-Auth-Token
- **Location**: HTTP header

<a id="app_token_header"></a>
### app_token_header

- **Type**: API key
- **API key parameter name**: X-App-Token
- **Location**: HTTP header


## Author

contact@entryscape.com


## Examples

Complete runnable examples are included in the [`examples/`](examples/) directory:

| Example | Description |
|---------|-------------|
| [quickstart](examples/quickstart/) | Minimal hello-world — configure SDK, list catalogs |
| [browse-catalog](examples/browse-catalog/) | Navigate DCAT-AP hierarchy: catalogs → datasets → distributions |
| [search](examples/search/) | Simple search, advanced search, and faceted search |
| [file-upload](examples/file-upload/) | Upload/replace files with async job tracking |
| [explore-entities](examples/explore-entities/) | Browse organizations, contacts, ideas, suggestions, showcases, documents |

See also: [Generated API docs](https://entryscape.org/api-wip) — per-endpoint documentation with inline code samples

## Running Tests

```bash
# Install dev dependencies
pip install -e ".[dev]"

# Run tests
pytest

# Run tests with coverage
pytest --cov=entryscape

# Type checking
mypy entryscape

# Linting
ruff check entryscape
```

## Contributing

Contributions are welcome! Please see the [repository](https://bitbucket.org/metasolutions/entryscape-api) for guidelines.

## License

This project is licensed under the GNU General Public License v3.0 - see the LICENSE file for details.
