Add SDK docs (#4928)
- Added auth docs in API schema and SDK ApiClient/Config (fixes #1517) - Added SDK docs with API, SDK and CLI docs - Added `develop` branch in the docs - Allowed unauthorized access to `api/docs`, `api/swagger`, `api/schema` endpoints - Added `--insecure` env var to control host checks in CLI - Refactored `build_docs.py` (backported https://github.com/openvinotoolkit/datumaro/pull/589) - Extracted requirements file for sitemain
parent
cf4e0712cc
commit
68375ec23e
@ -1,48 +0,0 @@
|
||||
# Developer guide
|
||||
|
||||
## General info
|
||||
|
||||
Most of the files in this package are generated. The `gen/` directory
|
||||
contains generator config and templates.
|
||||
|
||||
## How to generate API
|
||||
|
||||
1. Obtain the REST API schema:
|
||||
```bash
|
||||
python manage.py spectacular --file schema.yml && mkdir -p cvat-sdk/schema/ && mv schema.yml cvat-sdk/schema/
|
||||
```
|
||||
|
||||
2. Generate package code (call from the package root directory):
|
||||
```bash
|
||||
# pip install -r gen/requirements.txt
|
||||
|
||||
./gen/generate.sh
|
||||
```
|
||||
|
||||
## How to edit templates
|
||||
|
||||
If you want to edit templates, obtain them from the generator first:
|
||||
|
||||
```bash
|
||||
docker run --rm -v $PWD:/local \
|
||||
openapitools/openapi-generator-cli author template \
|
||||
-o /local/generator_templates -g python
|
||||
```
|
||||
|
||||
Then, you can copy the modified version of the template you need into
|
||||
the `gen/templates/openapi-generator/` directory.
|
||||
|
||||
Relevant links:
|
||||
- [Generator implementation, available variables in templates](https://github.com/OpenAPITools/openapi-generator/tree/master/modules/openapi-generator/src/main/java/org/openapitools/codegen)
|
||||
- [Mustache syntax in the generator](https://github.com/OpenAPITools/openapi-generator/wiki/Mustache-Template-Variables)
|
||||
|
||||
## How to test
|
||||
|
||||
API client tests are integrated into REST API tests (`/tests/python/rest_api`)
|
||||
and SDK tests are placed next to them (`/tests/python/sdk`).
|
||||
To execute, run:
|
||||
```bash
|
||||
pytest tests/python/rest_api tests/python/sdk
|
||||
```
|
||||
|
||||
To allow editing of the package, install it with `pip install -e cvat-sdk/`.
|
||||
@ -1,87 +1,111 @@
|
||||
#!/usr/bin/env python3
|
||||
|
||||
# Copyright (C) 2021-2022 Intel Corporation
|
||||
# Copyright (C) 2022 CVAT.ai Corporation
|
||||
#
|
||||
# SPDX-License-Identifier: MIT
|
||||
|
||||
import os
|
||||
import shutil
|
||||
import subprocess
|
||||
import tarfile
|
||||
import tempfile
|
||||
from pathlib import Path
|
||||
|
||||
from packaging import version
|
||||
import git
|
||||
import toml
|
||||
from packaging import version
|
||||
|
||||
# the initial version for the documentation site
|
||||
MINIMUM_VERSION = version.Version("1.5.0")
|
||||
|
||||
MINIMUM_VERSION='1.5.0'
|
||||
|
||||
def prepare_tags(repo):
|
||||
tags = {}
|
||||
for tag in repo.tags:
|
||||
tag_version = version.parse(tag.name)
|
||||
if tag_version >= version.Version(MINIMUM_VERSION) and not tag_version.is_prerelease:
|
||||
if tag_version >= MINIMUM_VERSION and not tag_version.is_prerelease:
|
||||
release_version = (tag_version.major, tag_version.minor)
|
||||
if not release_version in tags or tag_version > version.parse(tags[release_version].name):
|
||||
if release_version not in tags or tag_version > version.parse(
|
||||
tags[release_version].name
|
||||
):
|
||||
tags[release_version] = tag
|
||||
|
||||
return tags.values()
|
||||
|
||||
def generate_versioning_config(filename, versions, url_prefix=''):
|
||||
|
||||
def generate_versioning_config(filename, versions, url_prefix=""):
|
||||
def write_version_item(file_object, version, url):
|
||||
file_object.write('[[params.versions]]\n')
|
||||
file_object.write("[[params.versions]]\n")
|
||||
file_object.write('version = "{}"\n'.format(version))
|
||||
file_object.write('url = "{}"\n\n'.format(url))
|
||||
|
||||
with open(filename, 'w') as f:
|
||||
write_version_item(f, 'Latest version', '{}/'.format(url_prefix))
|
||||
with open(filename, "w") as f:
|
||||
write_version_item(f, "Latest version", "{}/".format(url_prefix))
|
||||
for v in versions:
|
||||
write_version_item(f, v, '{}/{}'.format(url_prefix, v))
|
||||
write_version_item(f, v, "{}/{}".format(url_prefix, v))
|
||||
|
||||
|
||||
def git_checkout(tagname, repo, temp_dir):
|
||||
subdirs = ["site/content/en/docs", "site/content/en/images"]
|
||||
|
||||
for subdir in subdirs:
|
||||
shutil.rmtree(temp_dir / subdir)
|
||||
|
||||
with tempfile.TemporaryFile() as archive:
|
||||
# `git checkout` doesn't work for this, as it modifies the index.
|
||||
# `git restore` would work, but it's only available since Git 2.23.
|
||||
repo.git.archive(tagname, "--", subdir, output_stream=archive)
|
||||
archive.seek(0)
|
||||
with tarfile.open(fileobj=archive) as tar:
|
||||
tar.extractall(temp_dir)
|
||||
|
||||
def git_checkout(tagname, cwd):
|
||||
docs_dir = os.path.join(cwd, 'site', 'content', 'en', 'docs')
|
||||
shutil.rmtree(docs_dir)
|
||||
repo.git.checkout(tagname, '--', 'site/content/en/docs')
|
||||
images_dir = os.path.join(cwd, 'site', 'content', 'en', 'images')
|
||||
shutil.rmtree(images_dir)
|
||||
repo.git.checkout(tagname, '--', 'site/content/en/images')
|
||||
|
||||
def change_version_menu_toml(filename, version):
|
||||
data = toml.load(filename)
|
||||
data['params']['version_menu'] = version
|
||||
data["params"]["version_menu"] = version
|
||||
|
||||
with open(filename,'w') as f:
|
||||
with open(filename, "w") as f:
|
||||
toml.dump(data, f)
|
||||
|
||||
|
||||
def generate_docs(repo, output_dir, tags):
|
||||
def run_hugo(content_loc, destination_dir):
|
||||
subprocess.run([ # nosec
|
||||
'hugo',
|
||||
'--destination',
|
||||
destination_dir,
|
||||
'--config',
|
||||
'config.toml,versioning.toml',
|
||||
],
|
||||
cwd=content_loc,
|
||||
)
|
||||
|
||||
cwd = repo.working_tree_dir
|
||||
content_loc = os.path.join(cwd, 'site')
|
||||
if not os.path.exists(output_dir):
|
||||
os.makedirs(output_dir)
|
||||
|
||||
generate_versioning_config(os.path.join(cwd, 'site', 'versioning.toml'), (t.name for t in tags))
|
||||
change_version_menu_toml(os.path.join(cwd, 'site', 'versioning.toml'), 'Latest version')
|
||||
run_hugo(content_loc, output_dir)
|
||||
|
||||
generate_versioning_config(os.path.join(cwd, 'site', 'versioning.toml'), (t.name for t in tags), '/..')
|
||||
for tag in tags:
|
||||
git_checkout(tag.name, cwd)
|
||||
destination_dir = os.path.join(output_dir, tag.name)
|
||||
change_version_menu_toml(os.path.join(cwd, 'site', 'versioning.toml'), tag.name)
|
||||
os.makedirs(destination_dir)
|
||||
run_hugo(content_loc, destination_dir)
|
||||
repo_root = Path(repo.working_tree_dir)
|
||||
|
||||
with tempfile.TemporaryDirectory() as temp_dir:
|
||||
content_loc = Path(temp_dir, "site")
|
||||
shutil.copytree(repo_root / "site", content_loc, symlinks=True)
|
||||
|
||||
def run_hugo(destination_dir):
|
||||
subprocess.run( # nosec
|
||||
[
|
||||
"hugo",
|
||||
"--destination",
|
||||
str(destination_dir),
|
||||
"--config",
|
||||
"config.toml,versioning.toml",
|
||||
],
|
||||
cwd=content_loc,
|
||||
check=True,
|
||||
)
|
||||
|
||||
versioning_toml_path = content_loc / "versioning.toml"
|
||||
|
||||
# Handle the develop version
|
||||
generate_versioning_config(versioning_toml_path, (t.name for t in tags))
|
||||
change_version_menu_toml(versioning_toml_path, "develop")
|
||||
run_hugo(output_dir)
|
||||
|
||||
generate_versioning_config(versioning_toml_path, (t.name for t in tags), "/..")
|
||||
for tag in tags:
|
||||
git_checkout(tag.name, repo, Path(temp_dir))
|
||||
change_version_menu_toml(versioning_toml_path, tag.name)
|
||||
run_hugo(output_dir / tag.name)
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
repo_root = os.getcwd()
|
||||
repo = git.Repo(repo_root)
|
||||
output_dir = os.path.join(repo_root, 'public')
|
||||
repo_root = Path(__file__).resolve().parents[1]
|
||||
output_dir = repo_root / "public"
|
||||
|
||||
tags = prepare_tags(repo)
|
||||
generate_docs(repo, output_dir, tags)
|
||||
with git.Repo(repo_root) as repo:
|
||||
tags = prepare_tags(repo)
|
||||
generate_docs(repo, output_dir, tags)
|
||||
|
||||
@ -0,0 +1,26 @@
|
||||
---
|
||||
title: "API & SDK"
|
||||
linkTitle: "API & SDK"
|
||||
weight: 4
|
||||
description: 'How to interact with CVAT'
|
||||
---
|
||||
|
||||
## Overview
|
||||
|
||||
In the modern world, it is often necessary to integrate different tools to work together.
|
||||
CVAT provides the following integration layers:
|
||||
|
||||
- Server REST API + Swagger schema
|
||||
- Python client library (SDK)
|
||||
- REST API client
|
||||
- High-level wrappers
|
||||
- Command-line tool (CLI)
|
||||
|
||||
In this section, you can find documentation about each separate layer.
|
||||
|
||||
## Component compatibility
|
||||
|
||||
Currently, the only supported configuration is when the server API major and minor versions
|
||||
are the same as SDK and CLI major and minor versions, e.g. server v2.1.* is supported by
|
||||
SDK and CLI v2.1.*. Different versions may have incompatibilities, which lead to some functions
|
||||
in SDK or CLI may not work properly.
|
||||
@ -0,0 +1,11 @@
|
||||
---
|
||||
title: 'Frequently asked questions'
|
||||
linkTitle: 'FAQ'
|
||||
weight: 100
|
||||
description: ''
|
||||
---
|
||||
|
||||
### My server uses a custom SSL certificate and I don't want to check it.
|
||||
|
||||
You can call control SSL certificate check with the `--insecure` CLI argument.
|
||||
For SDK, you can specify `ssl_verify = True/False` in the `cvat_sdk.core.client.Config` object.
|
||||
@ -0,0 +1,47 @@
|
||||
---
|
||||
title: 'Python SDK'
|
||||
linkTitle: 'SDK'
|
||||
weight: 3
|
||||
description: ''
|
||||
---
|
||||
|
||||
## Overview
|
||||
|
||||
SDK is a Python library. It provides you access to Python function and objects, which
|
||||
simplify server interaction and provide additional functionality like data validation.
|
||||
|
||||
SDK API includes 2 layers:
|
||||
- Low-level API with REST API wrappers. Located in at `cvat_sdk.api_client`. [Read more](/api_sdk/sdk/lowlevel-api)
|
||||
- High-level API. Located at `cvat_sdk.core`. [Read more](/api_sdk/sdk/highlevel-api)
|
||||
|
||||
Roughly, low-level API provides single-request operations, while the high-level one allows you
|
||||
to use composite, multi-request operations and have local counterparts for server objects.
|
||||
For most uses, the high-level API should be good enough and sufficient, and it should be
|
||||
right point to start your integration with CVAT.
|
||||
|
||||
## Installation
|
||||
|
||||
To install an [official release of CVAT SDK](https://pypi.org/project/cvat-sdk/) use this command:
|
||||
```bash
|
||||
pip install cvat-sdk
|
||||
```
|
||||
|
||||
We support Python versions 3.7 - 3.9.
|
||||
|
||||
## Usage
|
||||
|
||||
To import the package components, use the following code:
|
||||
|
||||
For high-level API:
|
||||
|
||||
```python
|
||||
import cvat_sdk
|
||||
# or
|
||||
import cvat_sdk.core
|
||||
```
|
||||
|
||||
For low-level API:
|
||||
|
||||
```python
|
||||
import cvat_sdk.api_client
|
||||
```
|
||||
@ -0,0 +1,80 @@
|
||||
---
|
||||
title: 'Developer guide'
|
||||
linkTitle: 'Developer guide'
|
||||
weight: 10
|
||||
description: ''
|
||||
---
|
||||
|
||||
## Overview
|
||||
|
||||
This package contains manually written and generated files. We store only sources in
|
||||
the repository. To get the full package, one need to generate missing package files.
|
||||
|
||||
## Package file layout
|
||||
|
||||
- `gen/` - generator files
|
||||
- `cvat_sdk/` - Python package root
|
||||
- `cvat_sdk/api_client` - autogenerated low-level package code
|
||||
- `cvat_sdk/core` - high-level package code
|
||||
|
||||
## How to generate package code
|
||||
|
||||
1. Obtain the server API schema
|
||||
|
||||
If you have a local custom version of the server, run the following command in the terminal.
|
||||
You need to be able to execute django server. Server installation instructions are available
|
||||
[here](/contributing/development-environment).
|
||||
```bash
|
||||
mkdir -p cvat-sdk/schema/ && python manage.py spectacular --file cvat-sdk/schema/schema.yml
|
||||
```
|
||||
|
||||
If you want to use docker instead:
|
||||
```bash
|
||||
docker-compose -f docker-compose.yml -f docker-compose.dev.yml run \
|
||||
--no-deps --entrypoint '/usr/bin/env python' --rm -u "$(id -u)":"$(id -g)" -v "$PWD":"/local" \
|
||||
cvat_server \
|
||||
manage.py spectacular --file /local/cvat-sdk/schema/schema.yml
|
||||
```
|
||||
|
||||
If you don't have access to the server sources, but have a working instance,
|
||||
you can also get schema from `<yourserver>/api/docs`:
|
||||
|
||||

|
||||
|
||||
2. Install generator dependencies:
|
||||
```bash
|
||||
pip install -r gen/requirements.txt
|
||||
```
|
||||
|
||||
3. Generate package code (call from the package root directory!):
|
||||
```bash
|
||||
./gen/generate.sh
|
||||
```
|
||||
|
||||
4. To allow editing of the package, install it with `pip install -e cvat-sdk/`.
|
||||
|
||||
## How to edit templates
|
||||
|
||||
If you want to edit templates, obtain them from the generator first:
|
||||
|
||||
```bash
|
||||
docker run --rm -v $PWD:/local \
|
||||
openapitools/openapi-generator-cli author template \
|
||||
-o /local/generator_templates -g python
|
||||
```
|
||||
|
||||
Then, you can copy the modified version of the template you need into
|
||||
the `gen/templates/openapi-generator/` directory.
|
||||
|
||||
Relevant links:
|
||||
- [Generator implementation, available variables in templates](https://github.com/OpenAPITools/openapi-generator/tree/master/modules/openapi-generator/src/main/java/org/openapitools/codegen)
|
||||
- [Mustache syntax in the generator](https://github.com/OpenAPITools/openapi-generator/wiki/Mustache-Template-Variables)
|
||||
|
||||
## How to test
|
||||
|
||||
API client tests are integrated into REST API tests in `/tests/python/rest_api`
|
||||
and SDK tests are placed next to them in `/tests/python/sdk`.
|
||||
To execute, run:
|
||||
```bash
|
||||
pytest tests/python/rest_api tests/python/sdk
|
||||
```
|
||||
@ -0,0 +1,63 @@
|
||||
---
|
||||
title: 'High-level API'
|
||||
linkTitle: 'High-level API'
|
||||
weight: 4
|
||||
description: ''
|
||||
---
|
||||
|
||||
## Overview
|
||||
|
||||
This layer provides high-level APIs, allowing easier access to server operations.
|
||||
API includes _Repositories_ and _Entities_. Repositories provide management
|
||||
operations for Entitites. Entitites represent separate objects on the server
|
||||
(e.g. tasks, jobs etc).
|
||||
|
||||
Code of this component is located in `cvat_sdk.core`.
|
||||
|
||||
## Example
|
||||
|
||||
```python
|
||||
from cvat_sdk import make_client, models
|
||||
from cvat_sdk.core.proxies.tasks import ResourceType, Task
|
||||
|
||||
with make_client(host="http://localhost") as client:
|
||||
# Authorize using the basic auth
|
||||
client.login(('YOUR_USERNAME', 'YOUR_PASSWORD'))
|
||||
|
||||
# Models are used the same way as in the layer 1
|
||||
task_spec = {
|
||||
"name": "example task 2",
|
||||
"labels": [
|
||||
{
|
||||
"name": "car",
|
||||
"color": "#ff00ff",
|
||||
"attributes": [
|
||||
{
|
||||
"name": "a",
|
||||
"mutable": True,
|
||||
"input_type": "number",
|
||||
"default_value": "5",
|
||||
"values": ["4", "5", "6"],
|
||||
}
|
||||
],
|
||||
}
|
||||
],
|
||||
}
|
||||
|
||||
# Different repositories can be accessed as the Client class members.
|
||||
# They may provide both simple and complex operations,
|
||||
# such as entity creation, retrieval and removal.
|
||||
task = client.tasks.create_from_data(
|
||||
spec=task_spec,
|
||||
resource_type=ResourceType.LOCAL,
|
||||
resources=['image1.jpg', 'image2.png'],
|
||||
)
|
||||
|
||||
# Task object is already up-to-date with its server counterpart
|
||||
assert task.size == 2
|
||||
|
||||
# An entity needs to be fetch()-ed to reflect the latest changes.
|
||||
# It can be update()-d and remove()-d depending on the entity type.
|
||||
task.update({'name': 'mytask'})
|
||||
task.remove()
|
||||
```
|
||||
@ -0,0 +1,386 @@
|
||||
---
|
||||
title: 'Low-level API'
|
||||
linkTitle: 'Low-level API'
|
||||
weight: 3
|
||||
description: ''
|
||||
---
|
||||
|
||||
## Overview
|
||||
|
||||
Low-level API is useful if you need to work directly with REST API, but want
|
||||
to have data validation and syntax assistance from your code editor. The code
|
||||
on this layer is autogenerated.
|
||||
|
||||
Code of this component is located in `cvat_sdk.api_client`.
|
||||
|
||||
## Example
|
||||
|
||||
Let's see how a task with local files can be created. We will use the basic auth
|
||||
to make things simpler.
|
||||
|
||||
```python
|
||||
from time import sleep
|
||||
from cvat_sdk.api_client import Configuration, ApiClient, models, apis, exceptions
|
||||
|
||||
configuration = Configuration(
|
||||
host="http://localhost",
|
||||
username='YOUR_USERNAME',
|
||||
password='YOUR_PASSWORD',
|
||||
)
|
||||
|
||||
# Enter a context with an instance of the API client
|
||||
with ApiClient(configuration) as api_client:
|
||||
# Parameters can be passed as a plain dict with JSON-serialized data
|
||||
# or as model objects (from cvat_sdk.api_client.models), including
|
||||
# mixed variants.
|
||||
#
|
||||
# In case of dicts, keys must be the same as members of models.I<ModelName>
|
||||
# interfaces and values must be convertible to the corresponding member
|
||||
# value types (e.g. a date or string enum value can be parsed from a string).
|
||||
#
|
||||
# In case of model objects, data must be of the corresponding
|
||||
# models.<ModelName> types.
|
||||
#
|
||||
# Let's use a dict here. It should look like models.ITaskWriteRequest
|
||||
task_spec = {
|
||||
'name': 'example task',
|
||||
"labels": [{
|
||||
"name": "car",
|
||||
"color": "#ff00ff",
|
||||
"attributes": [
|
||||
{
|
||||
"name": "a",
|
||||
"mutable": True,
|
||||
"input_type": "number",
|
||||
"default_value": "5",
|
||||
"values": ["4", "5", "6"]
|
||||
}
|
||||
]
|
||||
}],
|
||||
}
|
||||
|
||||
try:
|
||||
# Apis can be accessed as ApiClient class members
|
||||
# We use different models for input and output data. For input data,
|
||||
# models are typically called like "*Request". Output data models have
|
||||
# no suffix.
|
||||
(task, response) = api_client.tasks_api.create(task_spec)
|
||||
except exceptions.ApiException as e:
|
||||
# We can catch the basic exception type, or a derived type
|
||||
print("Exception when trying to create a task: %s\n" % e)
|
||||
|
||||
# Here we will use models instead of a dict
|
||||
task_data = models.DataRequest(
|
||||
image_quality=75,
|
||||
client_files=[
|
||||
open('image1.jpg', 'rb'),
|
||||
open('image2.jpg', 'rb'),
|
||||
],
|
||||
)
|
||||
|
||||
# If we pass binary file objects, we need to specify content type.
|
||||
# For this endpoint, we don't have response data
|
||||
(_, response) = api_client.tasks_api.create_data(task.id,
|
||||
data_request=task_data,
|
||||
_content_type="multipart/form-data",
|
||||
|
||||
# we can choose to check the response status manually
|
||||
# and disable the response data parsing
|
||||
_check_status=False, _parse_response=False
|
||||
)
|
||||
assert response.status == 202, response.msg
|
||||
|
||||
# Wait till task data is processed
|
||||
for _ in range(100):
|
||||
(status, _) = api_client.tasks_api.retrieve_status(task.id)
|
||||
if status.state.value in ['Finished', 'Failed']:
|
||||
break
|
||||
sleep(0.1)
|
||||
assert status.state.value == 'Finished', status.message
|
||||
|
||||
# Update the task object and check the task size
|
||||
(task, _) = api_client.tasks_api.retrieve(task.id)
|
||||
assert task.size == 4
|
||||
```
|
||||
|
||||
## Available API Endpoints
|
||||
|
||||
All URIs are relative to _`http://localhost`_
|
||||
|
||||
APIs can be instanted directly like this:
|
||||
|
||||
```python
|
||||
from cvat_sdk.api_client import ApiClient, apis
|
||||
|
||||
api_client = ApiClient(...)
|
||||
auth_api = apis.AuthApi(api_client)
|
||||
auth_api.<operation>(...)
|
||||
```
|
||||
|
||||
Or they can be accessed as `ApiClient` object members:
|
||||
```
|
||||
from cvat_sdk.api_client import ApiClient
|
||||
|
||||
api_client = ApiClient(...)
|
||||
api_client.auth_api.<operation>(...)
|
||||
```
|
||||
|
||||
<!--lint disable table-cell-padding-->
|
||||
|
||||
Class | Method | HTTP request | Description
|
||||
------------ | ------------- | ------------- | -------------
|
||||
_AuthApi_ | **auth_create_login** | **POST** /api/auth/login |
|
||||
_AuthApi_ | **auth_create_logout** | **POST** /api/auth/logout |
|
||||
_AuthApi_ | **auth_create_password_change** | **POST** /api/auth/password/change |
|
||||
_AuthApi_ | **auth_create_password_reset** | **POST** /api/auth/password/reset |
|
||||
_AuthApi_ | **auth_create_password_reset_confirm** | **POST** /api/auth/password/reset/confirm |
|
||||
_AuthApi_ | **auth_create_register** | **POST** /api/auth/register |
|
||||
_AuthApi_ | **auth_create_signing** | **POST** /api/auth/signing | This method signs URL for access to the server
|
||||
_CloudstoragesApi_ | **cloudstorages_create** | **POST** /api/cloudstorages | Method creates a cloud storage with a specified characteristics
|
||||
_CloudstoragesApi_ | **cloudstorages_destroy** | **DELETE** /api/cloudstorages/{id} | Method deletes a specific cloud storage
|
||||
_CloudstoragesApi_ | **cloudstorages_list** | **GET** /api/cloudstorages | Returns a paginated list of storages according to query parameters
|
||||
_CloudstoragesApi_ | **cloudstorages_partial_update** | **PATCH** /api/cloudstorages/{id} | Methods does a partial update of chosen fields in a cloud storage instance
|
||||
_CloudstoragesApi_ | **cloudstorages_retrieve** | **GET** /api/cloudstorages/{id} | Method returns details of a specific cloud storage
|
||||
_CloudstoragesApi_ | **cloudstorages_retrieve_actions** | **GET** /api/cloudstorages/{id}/actions | Method returns allowed actions for the cloud storage
|
||||
_CloudstoragesApi_ | **cloudstorages_retrieve_content** | **GET** /api/cloudstorages/{id}/content | Method returns a manifest content
|
||||
_CloudstoragesApi_ | **cloudstorages_retrieve_preview** | **GET** /api/cloudstorages/{id}/preview | Method returns a preview image from a cloud storage
|
||||
_CloudstoragesApi_ | **cloudstorages_retrieve_status** | **GET** /api/cloudstorages/{id}/status | Method returns a cloud storage status
|
||||
_CommentsApi_ | **comments_create** | **POST** /api/comments | Method creates a comment
|
||||
_CommentsApi_ | **comments_destroy** | **DELETE** /api/comments/{id} | Method deletes a comment
|
||||
_CommentsApi_ | **comments_list** | **GET** /api/comments | Method returns a paginated list of comments according to query parameters
|
||||
_CommentsApi_ | **comments_partial_update** | **PATCH** /api/comments/{id} | Methods does a partial update of chosen fields in a comment
|
||||
_CommentsApi_ | **comments_retrieve** | **GET** /api/comments/{id} | Method returns details of a comment
|
||||
_InvitationsApi_ | **invitations_create** | **POST** /api/invitations | Method creates an invitation
|
||||
_InvitationsApi_ | **invitations_destroy** | **DELETE** /api/invitations/{key} | Method deletes an invitation
|
||||
_InvitationsApi_ | **invitations_list** | **GET** /api/invitations | Method returns a paginated list of invitations according to query parameters
|
||||
_InvitationsApi_ | **invitations_partial_update** | **PATCH** /api/invitations/{key} | Methods does a partial update of chosen fields in an invitation
|
||||
_InvitationsApi_ | **invitations_retrieve** | **GET** /api/invitations/{key} | Method returns details of an invitation
|
||||
_IssuesApi_ | **issues_create** | **POST** /api/issues | Method creates an issue
|
||||
_IssuesApi_ | **issues_destroy** | **DELETE** /api/issues/{id} | Method deletes an issue
|
||||
_IssuesApi_ | **issues_list** | **GET** /api/issues | Method returns a paginated list of issues according to query parameters
|
||||
_IssuesApi_ | **issues_list_comments** | **GET** /api/issues/{id}/comments | The action returns all comments of a specific issue
|
||||
_IssuesApi_ | **issues_partial_update** | **PATCH** /api/issues/{id} | Methods does a partial update of chosen fields in an issue
|
||||
_IssuesApi_ | **issues_retrieve** | **GET** /api/issues/{id} | Method returns details of an issue
|
||||
_JobsApi_ | **jobs_create_annotations** | **POST** /api/jobs/{id}/annotations/ | Method allows to upload job annotations
|
||||
_JobsApi_ | **jobs_destroy_annotations** | **DELETE** /api/jobs/{id}/annotations/ | Method deletes all annotations for a specific job
|
||||
_JobsApi_ | **jobs_list** | **GET** /api/jobs | Method returns a paginated list of jobs according to query parameters
|
||||
_JobsApi_ | **jobs_list_commits** | **GET** /api/jobs/{id}/commits | The action returns the list of tracked changes for the job
|
||||
_JobsApi_ | **jobs_list_issues** | **GET** /api/jobs/{id}/issues | Method returns list of issues for the job
|
||||
_JobsApi_ | **jobs_partial_update** | **PATCH** /api/jobs/{id} | Methods does a partial update of chosen fields in a job
|
||||
_JobsApi_ | **jobs_partial_update_annotations** | **PATCH** /api/jobs/{id}/annotations/ | Method performs a partial update of annotations in a specific job
|
||||
_JobsApi_ | **jobs_partial_update_annotations_file** | **PATCH** /api/jobs/{id}/annotations/{file_id} | Allows to upload an annotation file chunk. Implements TUS file uploading protocol.
|
||||
_JobsApi_ | **jobs_retrieve** | **GET** /api/jobs/{id} | Method returns details of a job
|
||||
_JobsApi_ | **jobs_retrieve_annotations** | **GET** /api/jobs/{id}/annotations/ | Method returns annotations for a specific job as a JSON document. If format is specified a zip archive is returned.
|
||||
_JobsApi_ | **jobs_retrieve_data** | **GET** /api/jobs/{id}/data | Method returns data for a specific job
|
||||
_JobsApi_ | **jobs_retrieve_data_meta** | **GET** /api/jobs/{id}/data/meta | Method provides a meta information about media files which are related with the job
|
||||
_JobsApi_ | **jobs_retrieve_dataset** | **GET** /api/jobs/{id}/dataset | Export job as a dataset in a specific format
|
||||
_JobsApi_ | **jobs_update_annotations** | **PUT** /api/jobs/{id}/annotations/ | Method performs an update of all annotations in a specific job
|
||||
_LambdaApi_ | **lambda_create_functions** | **POST** /api/lambda/functions/{func_id} |
|
||||
_LambdaApi_ | **lambda_create_requests** | **POST** /api/lambda/requests | Method calls the function
|
||||
_LambdaApi_ | **lambda_list_functions** | **GET** /api/lambda/functions | Method returns a list of functions
|
||||
_LambdaApi_ | **lambda_list_requests** | **GET** /api/lambda/requests | Method returns a list of requests
|
||||
_LambdaApi_ | **lambda_retrieve_functions** | **GET** /api/lambda/functions/{func_id} | Method returns the information about the function
|
||||
_LambdaApi_ | **lambda_retrieve_requests** | **GET** /api/lambda/requests/{id} | Method returns the status of the request
|
||||
_MembershipsApi_ | **memberships_destroy** | **DELETE** /api/memberships/{id} | Method deletes a membership
|
||||
_MembershipsApi_ | **memberships_list** | **GET** /api/memberships | Method returns a paginated list of memberships according to query parameters
|
||||
_MembershipsApi_ | **memberships_partial_update** | **PATCH** /api/memberships/{id} | Methods does a partial update of chosen fields in a membership
|
||||
_MembershipsApi_ | **memberships_retrieve** | **GET** /api/memberships/{id} | Method returns details of a membership
|
||||
_OrganizationsApi_ | **organizations_create** | **POST** /api/organizations | Method creates an organization
|
||||
_OrganizationsApi_ | **organizations_destroy** | **DELETE** /api/organizations/{id} | Method deletes an organization
|
||||
_OrganizationsApi_ | **organizations_list** | **GET** /api/organizations | Method returns a paginated list of organizatins according to query parameters
|
||||
_OrganizationsApi_ | **organizations_partial_update** | **PATCH** /api/organizations/{id} | Methods does a partial update of chosen fields in an organization
|
||||
_OrganizationsApi_ | **organizations_retrieve** | **GET** /api/organizations/{id} | Method returns details of an organization
|
||||
_ProjectsApi_ | **projects_create** | **POST** /api/projects | Method creates a new project
|
||||
_ProjectsApi_ | **projects_create_backup** | **POST** /api/projects/backup/ | Methods create a project from a backup
|
||||
_ProjectsApi_ | **projects_create_dataset** | **POST** /api/projects/{id}/dataset/ | Import dataset in specific format as a project
|
||||
_ProjectsApi_ | **projects_destroy** | **DELETE** /api/projects/{id} | Method deletes a specific project
|
||||
_ProjectsApi_ | **projects_list** | **GET** /api/projects | Returns a paginated list of projects according to query parameters (12 projects per page)
|
||||
_ProjectsApi_ | **projects_list_tasks** | **GET** /api/projects/{id}/tasks | Method returns information of the tasks of the project with the selected id
|
||||
_ProjectsApi_ | **projects_partial_update** | **PATCH** /api/projects/{id} | Methods does a partial update of chosen fields in a project
|
||||
_ProjectsApi_ | **projects_partial_update_backup_file** | **PATCH** /api/projects/backup/{file_id} | Allows to upload a file chunk. Implements TUS file uploading protocol
|
||||
_ProjectsApi_ | **projects_partial_update_dataset_file** | **PATCH** /api/projects/{id}/dataset/{file_id} | Allows to upload a file chunk. Implements TUS file uploading protocol.
|
||||
_ProjectsApi_ | **projects_retrieve** | **GET** /api/projects/{id} | Method returns details of a specific project
|
||||
_ProjectsApi_ | **projects_retrieve_annotations** | **GET** /api/projects/{id}/annotations | Method allows to download project annotations
|
||||
_ProjectsApi_ | **projects_retrieve_backup** | **GET** /api/projects/{id}/backup | Methods creates a backup copy of a project
|
||||
_ProjectsApi_ | **projects_retrieve_dataset** | **GET** /api/projects/{id}/dataset/ | Export project as a dataset in a specific format
|
||||
_RestrictionsApi_ | **restrictions_retrieve_terms_of_use** | **GET** /api/restrictions/terms-of-use | Method provides CVAT terms of use
|
||||
_RestrictionsApi_ | **restrictions_retrieve_user_agreements** | **GET** /api/restrictions/user-agreements | Method provides user agreements that the user must accept to register
|
||||
_SchemaApi_ | **schema_retrieve** | **GET** /api/schema/ |
|
||||
_ServerApi_ | **server_create_exception** | **POST** /api/server/exception | Method saves an exception from a client on the server
|
||||
_ServerApi_ | **server_create_logs** | **POST** /api/server/logs | Method saves logs from a client on the server
|
||||
_ServerApi_ | **server_list_share** | **GET** /api/server/share | Returns all files and folders that are on the server along specified path
|
||||
_ServerApi_ | **server_retrieve_about** | **GET** /api/server/about | Method provides basic CVAT information
|
||||
_ServerApi_ | **server_retrieve_annotation_formats** | **GET** /api/server/annotation/formats | Method provides the list of supported annotations formats
|
||||
_ServerApi_ | **server_retrieve_plugins** | **GET** /api/server/plugins | Method provides allowed plugins
|
||||
_TasksApi_ | **jobs_partial_update_data_meta** | **PATCH** /api/jobs/{id}/data/meta | Method provides a meta information about media files which are related with the job
|
||||
_TasksApi_ | **tasks_create** | **POST** /api/tasks | Method creates a new task in a database without any attached images and videos
|
||||
_TasksApi_ | **tasks_create_annotations** | **POST** /api/tasks/{id}/annotations/ | Method allows to upload task annotations from a local file or a cloud storage
|
||||
_TasksApi_ | **tasks_create_backup** | **POST** /api/tasks/backup/ | Method recreates a task from an attached task backup file
|
||||
_TasksApi_ | **tasks_create_data** | **POST** /api/tasks/{id}/data/ | Method permanently attaches images or video to a task. Supports tus uploads, see more <https://tus.io/>
|
||||
_TasksApi_ | **tasks_destroy** | **DELETE** /api/tasks/{id} | Method deletes a specific task, all attached jobs, annotations, and data
|
||||
_TasksApi_ | **tasks_destroy_annotations** | **DELETE** /api/tasks/{id}/annotations/ | Method deletes all annotations for a specific task
|
||||
_TasksApi_ | **tasks_list** | **GET** /api/tasks | Returns a paginated list of tasks according to query parameters (10 tasks per page)
|
||||
_TasksApi_ | **tasks_list_jobs** | **GET** /api/tasks/{id}/jobs | Method returns a list of jobs for a specific task
|
||||
_TasksApi_ | **tasks_partial_update** | **PATCH** /api/tasks/{id} | Methods does a partial update of chosen fields in a task
|
||||
_TasksApi_ | **tasks_partial_update_annotations** | **PATCH** /api/tasks/{id}/annotations/ | Method performs a partial update of annotations in a specific task
|
||||
_TasksApi_ | **tasks_partial_update_annotations_file** | **PATCH** /api/tasks/{id}/annotations/{file_id} | Allows to upload an annotation file chunk. Implements TUS file uploading protocol.
|
||||
_TasksApi_ | **tasks_partial_update_backup_file** | **PATCH** /api/tasks/backup/{file_id} | Allows to upload a file chunk. Implements TUS file uploading protocol.
|
||||
_TasksApi_ | **tasks_partial_update_data_file** | **PATCH** /api/tasks/{id}/data/{file_id} | Allows to upload a file chunk. Implements TUS file uploading protocol.
|
||||
_TasksApi_ | **tasks_partial_update_data_meta** | **PATCH** /api/tasks/{id}/data/meta | Method provides a meta information about media files which are related with _he_task
|
||||
_TasksApi_ | **tasks_retrieve** | **GET** /api/tasks/{id} | Method returns details of a specific task
|
||||
_TasksApi_ | **tasks_retrieve_annotations** | **GET** /api/tasks/{id}/annotations/ | Method allows to download task annotations
|
||||
_TasksApi_ | **tasks_retrieve_backup** | **GET** /api/tasks/{id}/backup | Method backup a specified task
|
||||
_TasksApi_ | **tasks_retrieve_data** | **GET** /api/tasks/{id}/data/ | Method returns data for a specific task
|
||||
_TasksApi_ | **tasks_retrieve_data_meta** | **GET** /api/tasks/{id}/data/meta | Method provides a meta information about media files which are related with the task
|
||||
_TasksApi_ | **tasks_retrieve_dataset** | **GET** /api/tasks/{id}/dataset | Export task as a dataset in a specific format
|
||||
_TasksApi_ | **tasks_retrieve_status** | **GET** /api/tasks/{id}/status | When task is being created the method returns information about a status of the creation process
|
||||
_TasksApi_ | **tasks_update_annotations** | **PUT** /api/tasks/{id}/annotations/ | Method allows to upload task annotations
|
||||
_UsersApi_ | **users_destroy** | **DELETE** /api/users/{id} | Method deletes a specific user from the server
|
||||
_UsersApi_ | **users_list** | **GET** /api/users | Method provides a paginated list of users registered on the server
|
||||
_UsersApi_ | **users_partial_update** | **PATCH** /api/users/{id} | Method updates chosen fields of a user
|
||||
_UsersApi_ | **users_retrieve** | **GET** /api/users/{id} | Method provides information of a specific user
|
||||
_UsersApi_ | **users_retrieve_self** | **GET** /api/users/self | Method returns an instance of a user who is currently authorized
|
||||
|
||||
|
||||
## Available Models
|
||||
|
||||
Models can be instantiated like this:
|
||||
|
||||
```python
|
||||
from cvat_sdk.api_client import models
|
||||
|
||||
user_model = models.User(...)
|
||||
```
|
||||
|
||||
- About
|
||||
- AnnotationFileRequest
|
||||
- AnnotationsRead
|
||||
- Attribute
|
||||
- AttributeRequest
|
||||
- AttributeVal
|
||||
- AttributeValRequest
|
||||
- BackupWriteRequest
|
||||
- BasicUser
|
||||
- BasicUserRequest
|
||||
- ChunkType
|
||||
- CloudStorageRead
|
||||
- CloudStorageWriteRequest
|
||||
- CommentRead
|
||||
- CommentReadOwner
|
||||
- CommentWriteRequest
|
||||
- CredentialsTypeEnum
|
||||
- DataMetaRead
|
||||
- DataRequest
|
||||
- DatasetFileRequest
|
||||
- DatasetFormat
|
||||
- DatasetFormats
|
||||
- DatasetWriteRequest
|
||||
- Exception
|
||||
- ExceptionRequest
|
||||
- FileInfo
|
||||
- FileInfoTypeEnum
|
||||
- FrameMeta
|
||||
- InputTypeEnum
|
||||
- InvitationRead
|
||||
- InvitationWrite
|
||||
- InvitationWriteRequest
|
||||
- IssueRead
|
||||
- IssueWriteRequest
|
||||
- JobAnnotationsUpdateRequest
|
||||
- JobCommit
|
||||
- JobRead
|
||||
- JobStage
|
||||
- JobStatus
|
||||
- Label
|
||||
- LabeledData
|
||||
- LabeledDataRequest
|
||||
- LabeledImage
|
||||
- LabeledImageRequest
|
||||
- LabeledShape
|
||||
- LabeledShapeRequest
|
||||
- LabeledTrack
|
||||
- LabeledTrackRequest
|
||||
- LocationEnum
|
||||
- LogEvent
|
||||
- LogEventRequest
|
||||
- LoginRequest
|
||||
- Manifest
|
||||
- ManifestRequest
|
||||
- MembershipRead
|
||||
- MembershipWrite
|
||||
- MetaUser
|
||||
- OperationStatus
|
||||
- OrganizationRead
|
||||
- OrganizationWrite
|
||||
- OrganizationWriteRequest
|
||||
- PaginatedCloudStorageReadList
|
||||
- PaginatedCommentReadList
|
||||
- PaginatedInvitationReadList
|
||||
- PaginatedIssueReadList
|
||||
- PaginatedJobCommitList
|
||||
- PaginatedJobReadList
|
||||
- PaginatedMembershipReadList
|
||||
- PaginatedMetaUserList
|
||||
- PaginatedPolymorphicProjectList
|
||||
- PaginatedTaskReadList
|
||||
- PasswordChangeRequest
|
||||
- PasswordResetConfirmRequest
|
||||
- PasswordResetSerializerExRequest
|
||||
- PatchedCloudStorageWriteRequest
|
||||
- PatchedCommentWriteRequest
|
||||
- PatchedDataMetaWriteRequest
|
||||
- PatchedInvitationWriteRequest
|
||||
- PatchedIssueWriteRequest
|
||||
- PatchedJobWriteRequest
|
||||
- PatchedLabelRequest
|
||||
- PatchedLabeledDataRequest
|
||||
- PatchedMembershipWriteRequest
|
||||
- PatchedOrganizationWriteRequest
|
||||
- PatchedProjectWriteRequest
|
||||
- PatchedProjectWriteRequestTargetStorage
|
||||
- PatchedTaskWriteRequest
|
||||
- PatchedTaskWriteRequestTargetStorage
|
||||
- PatchedUserRequest
|
||||
- Plugins
|
||||
- PolymorphicProject
|
||||
- ProjectFileRequest
|
||||
- ProjectRead
|
||||
- ProjectReadAssignee
|
||||
- ProjectReadOwner
|
||||
- ProjectReadTargetStorage
|
||||
- ProjectSearch
|
||||
- ProjectWriteRequest
|
||||
- ProviderTypeEnum
|
||||
- RestAuthDetail
|
||||
- RestrictedRegister
|
||||
- RestrictedRegisterRequest
|
||||
- RoleEnum
|
||||
- RqStatus
|
||||
- RqStatusStateEnum
|
||||
- Segment
|
||||
- ShapeType
|
||||
- SigningRequest
|
||||
- SimpleJob
|
||||
- SortingMethod
|
||||
- Storage
|
||||
- StorageMethod
|
||||
- StorageRequest
|
||||
- StorageType
|
||||
- SubLabeledShape
|
||||
- SubLabeledShapeRequest
|
||||
- SubLabeledTrack
|
||||
- SubLabeledTrackRequest
|
||||
- Sublabel
|
||||
- SublabelRequest
|
||||
- TaskAnnotationsUpdateRequest
|
||||
- TaskAnnotationsWriteRequest
|
||||
- TaskFileRequest
|
||||
- TaskRead
|
||||
- TaskReadTargetStorage
|
||||
- TaskWriteRequest
|
||||
- Token
|
||||
- TrackedShape
|
||||
- TrackedShapeRequest
|
||||
- User
|
||||
- UserAgreement
|
||||
- UserAgreementRequest
|
||||
Binary file not shown.
|
After Width: | Height: | Size: 5.6 KiB |
Binary file not shown.
|
After Width: | Height: | Size: 22 KiB |
File diff suppressed because one or more lines are too long
|
After Width: | Height: | Size: 1.1 MiB |
@ -0,0 +1,3 @@
|
||||
gitpython
|
||||
packaging
|
||||
toml
|
||||
Loading…
Reference in New Issue