Skip to content

Commit

Permalink
docs: Expose "API documentation" and restructure users docs
Browse files Browse the repository at this point in the history
- A new section "API documentation" is added; PAT and authentication information
  is moved to the new section.
- The new API documentation has a new Python example.
- The new section has a link to the OpenAPI documentation, which in only
  accessible for running Collaboration Manager instances.
- The OpenAPI documentation uses the correct auto-determined version now (before it was 0.1.0)
- The Path to the documentation has changes, a prefix `/api/docs` was added,
  a redirect from the old `/docs` route is in place.
- The "Tools" abstraction layer was removed in the tree.
  Instead, Capella & Jupyter have top level sections now.
  The goal is to increase visibility for the Capella section, which is frequently used.
- "Flows" has been removed from the "Sessions" section; sessions will focus
  on tool independent topics; T4C flow is moved to "Capella" section
- The Git workflow and API documentation are now mentioned in the Introduction
  of the user docs
- For consistency, the Git workflow has it's own folder in the Capella section now
  (like T4C also has)
- A full T4C setup guide was added, describing the creation of a T4C based project,
  from project creation to diagram cache setup.
- Some general grammar & style improvements.
- Old references to `Profile` are updated to `Menu`
- Administrative T4C pages are moved to the admin section.
  • Loading branch information
MoritzWeber0 committed Feb 7, 2024
1 parent 54ba4a6 commit b3cae4d
Show file tree
Hide file tree
Showing 100 changed files with 463 additions and 203 deletions.
2 changes: 1 addition & 1 deletion .github/workflows/docs.yml
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,6 @@ jobs:
- uses: actions/setup-python@v5
with:
python-version: '3.11'
- run: pip install mkdocs-material
- run: pip install -r docs/requirements.txt
- run: mkdocs gh-deploy --strict --force
working-directory: ./docs
1 change: 1 addition & 0 deletions .pre-commit-config.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -151,6 +151,7 @@ repos:
- 'eslint-plugin-tailwindcss@^3.14.1'
args: ['--fix']
types: []
files: '^frontend/'
exclude: '.+\.spec(-helper)?\.ts$'
types_or: ['html', 'ts']
- repo: https://github.com/alessandrojcm/commitlint-pre-commit-hook
Expand Down
15 changes: 15 additions & 0 deletions backend/capellacollab/__main__.py
Original file line number Diff line number Diff line change
Expand Up @@ -45,6 +45,8 @@
from capellacollab.tools import exceptions as tools_exceptions
from capellacollab.users import exceptions as users_exceptions

from . import __version__

handlers: list[logging.Handler] = [
logging.StreamHandler(),
core_logging.CustomTimedRotatingFileHandler(
Expand Down Expand Up @@ -78,6 +80,7 @@ async def shutdown():

app = fastapi.FastAPI(
title="Capella Collaboration",
version=__version__,
on_startup=[
startup,
idletimeout.terminate_idle_sessions_in_background,
Expand All @@ -99,8 +102,20 @@ async def shutdown():
middleware.Middleware(starlette_prometheus.PrometheusMiddleware),
],
on_shutdown=[shutdown],
openapi_url="/api/docs/openapi.json",
docs_url="/api/docs/swagger",
redoc_url="/api/docs/redoc",
)


@app.get(
"/docs", response_class=responses.RedirectResponse, include_in_schema=False
)
def redirect_docs():
"""Redirect `/docs` to new SwaggerUI documentation location."""
return responses.RedirectResponse("/api/docs/swagger")

Check warning on line 116 in backend/capellacollab/__main__.py

View check run for this annotation

Codecov / codecov/patch

backend/capellacollab/__main__.py#L116

Added line #L116 was not covered by tests


fastapi_pagination.add_pagination(app)


Expand Down
6 changes: 3 additions & 3 deletions docs/Dockerfile
Original file line number Diff line number Diff line change
Expand Up @@ -6,12 +6,12 @@ FROM $BASE_IMAGE as build

USER root

RUN pip install -U pip && \
pip install mkdocs-material
RUN pip install -U pip

COPY ./ /opt/docs
WORKDIR /opt/docs
RUN mkdocs build

RUN pip install -r requirements.txt && mkdocs build

FROM nginxinc/nginx-unprivileged:latest

Expand Down
21 changes: 21 additions & 0 deletions docs/custom_theme/404.html
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
<!--
~ SPDX-FileCopyrightText: Copyright DB InfraGO AG and contributors
~ SPDX-License-Identifier: Apache-2.0
-->

{% extends "main.html" %} {% block content %}
<h1>404 - Not found</h1>
<span>
If you are trying to access the API documentation: The API documentation is
not available in your current environment. It is only available via the
documentation of Collaboration Manager instances. It is not available on:

<ul>
<li>GitHub Pages</li>
<li>Local non-cluster development environments</li>
<li>ReadTheDocs</li>
</ul>

If you believe this is an error, please contact your system administrator.
</span>
{% endblock %}
6 changes: 1 addition & 5 deletions docs/docs/admin/alerts/create.md
Original file line number Diff line number Diff line change
Expand Up @@ -3,16 +3,12 @@
~ SPDX-License-Identifier: Apache-2.0
-->

<!-- prettier-ignore -->
!!! Warning "Usage restricted"
You need to be administrator to use this feature.

Alerts can be used to inform users about changes, news or maintenance work. The
alerts are displayed to each user.

<!-- prettier-ignore-start -->

1. Please navigate to `Profile``Settings`
1. Navigate to `Menu``Settings`
2. Fill in all required fields in the `Create an alert` form.
![Create an alert](create.png)

Expand Down
2 changes: 1 addition & 1 deletion docs/docs/admin/settings/model-sources/git.md
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@ Gitlab, are not available.

## Define a Git Instance

1. Please navigate to `Profile` > `Settings`
1. Please navigate to `Menu` > `Settings`
1. Select `Git` below `Model sources`
1. You can see all existing instances (if any). To add a new integration,
please use the form below "Add new integration". You have to enter the
Expand Down
2 changes: 1 addition & 1 deletion docs/docs/admin/settings/monitoring.md
Original file line number Diff line number Diff line change
Expand Up @@ -8,4 +8,4 @@
To get a general overview of the status of pipelines and model modifiers for
all registered models, a monitoring dashboard is provided.

You can find it going to `Profile` > `Settings` > `Monitoring`
You can find it by going to `Menu` > `Settings` > `Monitoring`
28 changes: 28 additions & 0 deletions docs/docs/admin/teamforcapella/full-setup/full-setup.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
<!--
~ SPDX-FileCopyrightText: Copyright DB InfraGO AG and contributors
~ SPDX-License-Identifier: Apache-2.0
-->

This tutorial will guide you through the full setup of a new
TeamForCapella-based project in the Collaboration Manager.

1. [Create a new project](../../../user/projects/create.md).
1. [Create a new tool model in the project you created](../../../user/projects/models/create.md),
select Capella as tool and the version you want to use.
1. [Link the TeamForCapella repository to the new model](../project-integration/project-integration.md)
if you have not done so already.
1. [Link a Git repository](../../../user/projects/models/create.md#step-31-link-existing-git-repository)
if you have not done so already. It's required for the backup pipelines as
well as for the diagram cache and model complexity badge.
1. Make sure that the right version and nature is configured for the tool
model! If they are not configured properly, you would not see the
TeamForCapella repository in the later export step.
1. [Spawn a new persistent session](../../../user/sessions/request.md). Select
Capella as the tool, and select the previously selected tool version.
1. Once Capella is open, create a new empty Capella project or import the
project that you want to initialize the TeamForCapella repository with.
1. [Export the model to the new TeamForCapella repository](../../../user/tools/capella/teamforcapella/export/export-to-t4c.md).
1. [Set up a backup pipeline](../../../user/projects/models/backups/setup.md).
1. [Set up the model complexity badge](../../../user/projects/models/complexity_badge.md).
1. [Set up the diagram cache](../../../user/projects/models/diagrams/setup_diagram_cache.md)
1. Verify that everything works as expected.
Original file line number Diff line number Diff line change
Expand Up @@ -11,33 +11,33 @@
A downgrade of Capella models is not possible.

1. Open a new persistent session with the old Capella version.
1. Import the model from the TeamForCapella server via the Import wizzard from
1. Import the model from the TeamForCapella server via the Import wizard from
TeamForCapella into your local workspace:
[Import a model from TeamForCapella](./import/import-from-t4c.md)
[Import a model from TeamForCapella](../../../user/tools/capella/teamforcapella/import/import-from-t4c.md)
1. Terminate the session.
1. Remove existing backups from TeamForCapella:
[Remove a (nightly) backup](../../../projects/models/backups/remove.md)
[Remove a (nightly) backup](../../../user/projects/models/backups/remove.md)
1. Add a new repository in the TeamForCapella settings:
[Add a new TeamForCapella repository](./repository-management.md#add-a-new-teamforcapella-repository)
[Add a new TeamForCapella repository](../repository-management/repository-management.md#add-a-new-teamforcapella-repository)
1. Unlink the old TeamForCapella repository (old Capella version) from your
model:
[Unlink a TeamForCapella repository](../../../projects/models/sources/t4c.md#unlink-a-teamforcapella-repository-from-a-project-model)
[Unlink a TeamForCapella repository](../project-integration/project-integration.md#unlink-a-teamforcapella-repository-from-a-project-model)
1. Link the new TeamForCapella repository (new Capella version) to your model:
[Link a TeamForCapella repository](../../../projects/models/sources/t4c.md#link-a-teamforcapella-repository-to-a-project-model)
[Link a TeamForCapella repository](../project-integration/project-integration.md#link-a-teamforcapella-repository-to-a-project-model)
1. Update the model version to the newer Capella version:
[Change model metadata](../../../projects/models/metadata.md)
[Change model metadata](../../../user/projects/models/metadata.md)
1. Create a new session with the new Capella version.
1. In your persistent workspace, execute the following steps:
<!-- prettier-ignore -->
1. Right click on the model in your workspace.
1. Select `Migration` and `Migrate Project toward current version`
![Migrate Capella model](./migrate-capella-model.png)
![Migrate Capella model](../../../user/tools/capella/migration/migrate-capella-model.png)
1. A backup is not required as the latest version should still be available
on the old TeamForCapella server.
![Disable backup option](./backup-migration.png)
![Disable backup option](../../../user/tools/capella/migration/backup-migration.png)

1. Export the model to the new TeamForCapella server via the Export wizzard
from TeamForCapella:
[Export a model to TeamForCapella](./export/export-to-t4c.md)
1. Recreate the backup from TeamForCapella:
[Set up a TeamForCapella backup](../../../projects/models/backups/setup.md)
[Export a model to TeamForCapella](../../../user/tools/capella/teamforcapella/export/export-to-t4c.md)
1. Recreate the backup pipeline:
[Set up a TeamForCapella backup](../../../user/projects/models/backups/setup.md)
Original file line number Diff line number Diff line change
Expand Up @@ -5,13 +5,9 @@

# Manage the TeamForCapella Project Integration

<!-- prettier-ignore -->
!!! warning
The TeamForCapella project integration can only be managed by administrators.
If you need help, contact your administrator.

For all actions, you need to navigate to `Projects`, and select the model
sources button for the model. <br /> ![Model sources](./open-modelsources.png)
sources button for the model. <br />
![Model sources](./screenshots/open-modelsources.png)

## Link a TeamForCapella Repository to a Project Model

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -8,22 +8,21 @@
This page describes how to manage T4C projects in T4C repositories. It does not
cover the management of T4C repositories. For the management of T4C
repositories, refer to the
[TeamForCapella repository management](../repository-management.md) guide.
[TeamForCapella repository management](../repository-management/repository-management.md)
guide.

## Create a new TeamForCapella Project

1. Make sure that you have a T4C repository available. If not, refer to the
[TeamForCapella repository management](../repository-management.md) guide.
[TeamForCapella repository management](../repository-management/repository-management.md)
guide.
1. Create an empty Capella project in your workspace. Then, export it to the
T4C repository. For more information, refer to the
[TeamForCapella project export](../export/export-to-t4c.md) guide.
[TeamForCapella project export](../../../user/tools/capella/teamforcapella/export/export-to-t4c.md)
guide.

## Delete a TeamForCapella Project

!!! warning

To delete a TeamForCapella project, you have to be global administrator in Collaboration Manager.

<!-- prettier-ignore -->
1. Open a persistent Capella session and connect to it.
1. Enable the TeamForCapella administration capability: <br /> `Window` >
Expand All @@ -39,7 +38,7 @@ repositories, refer to the
1. Global administrators can navigate to `Profile` > `Settings` >
`Model sources` > `TeamForCapella` > Select the instance > `Host`.
1. Project managers can use the TeamForCapella connection flow described in
the [Connect to a TeamForCapella repository](../../../../sessions/flows/t4c.md)
the [Connect to a TeamForCapella repository](../../../user/tools/capella/teamforcapella/export/export-to-t4c.md)
guide. In the `Connect to Shared Project` dialog, select the repository,
expand "Connection information" and copy the "Repository host".
![Find out T4C server host](./find-out-repository-host.png)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,14 +5,10 @@

# TeamForCapella Repository Management

<!-- prettier-ignore -->
!!! info
TeamForCapella repositories can only be managed by administrators.

For all actions, you have to navigate to `Profile` > `Settings` >
`TeamForCapella` (below `Model sources`). Select your instance. On the right
side, you should see a card with the name `Manage T4C repositories`. In this
card, you can see all existing repositories with their status.
For all actions, you have to navigate to `Menu` > `Settings` > `TeamForCapella`
(below `Model sources`). Select your instance. On the right side, you should
see a card with the name `Manage T4C repositories`. In this card, you can see
all existing repositories with their status.

## Add a new TeamForCapella Repository

Expand Down
124 changes: 124 additions & 0 deletions docs/docs/api/index.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,124 @@
<!--
~ SPDX-FileCopyrightText: Copyright DB InfraGO AG and contributors
~ SPDX-License-Identifier: Apache-2.0
-->

# Automate tasks with our API

Our API is designed to be simple and easy to use. It is based on RESTful
principles and uses standard HTTP methods. This means that you can use the API
to automate tasks such as creating and managing projects, sessions, and users.

!!! warning

We try to keep the API as stable as possible, but we cannot guarantee that
it will not change in the future. If you are using the API, make sure to
check our [release notes](https://github.com/DSD-DBS/capella-collab-manager/releases)
for any breaking changes.

## API Documentation

!!! note

**The API documentation is only available via the documentation of Collaboration
Manager instances**. Only in this case you'll be able to open the links below.
You'll see the API documentation matching the version of the Collaboration Manager
instance you are using.

It is not available on:

- GitHub Pages
- Local non-cluster development environments
- ReadTheDocs

Please use these links to access the API documentation:

- [:octicons-link-external-16: SwaggerUI](swagger.md) (Interactive SwaggerUI
documentation)
- [:octicons-link-external-16: ReDoc](redoc.md) (Interactive ReDoc
documentation)
- [:octicons-link-external-16: OpenAPI Specification, formerly Swagger Specification](openapi.md)
(JSON)

## Authentication

To authenticate against the API you can use Personal Access Tokens (PAT).

### PAT Creation

To create a personal access token (PAT) you can go to `Menu` > `Tokens`. Every
token requires a description and expiration date.

!!! info

The token which is generated will disappear after leaving the page.
Make sure you save it - you won't be able to access it again.

### PAT Scope

Personal access tokens have the same scope as the user who created it. It is
therefore important that you do not share them with others or publish them. All
requests are made in the name of the user who issued the token and are logged
accordingly. If you lose, share, or publish a token you must revoke it
immediately and inform your system administrator team.

### Revoke a PAT

In order to revoke a token go to `Menu` > `Token`. There you can see a list of
all tokens that are associated with your account. By clicking on the delete
button, you can delete a token, which will no longer be valid for
authentication.

### PAT Usage

You can use the token in place of a password for basic authentication against
the API as in the following examples.

#### Example with Python

```py
import requests

base_url = "example.com" # Replace with the base URL of your Collaboration Manager instance
username = "..."
token = "..."

requests.get(
f"https://{base_url}/api/v1/projects",
auth=(username, token)
)
```

#### Example with cURL

With `cURL` you can use the following command to fetch the list of projects:

```zsh
curl -u ${USERNAME}:${TOKEN} https://${BASE_URL}/api/v1/projects
```

#### Example with `capellambse`

Another example is working with the diagram cache of py-capellambse. The
implementation of the Capella modelling tool `capellambse` uses Python and lets
you read and write models. For more information have a look at the
[documentation](https://dsd-dbs.github.io/py-capellambse/) or the
[Github repository](https://github.com/DSD-DBS/py-capellambse).

```python
import capellambse

base_url = "example.com" # Replace with the base URL of your Collaboration Manager instance
username = "..."
token = "..."
path_to_aird = "..."

model = capellambse.model.MelodyModel(
path=path_to_aird,
diagram_cache={
"path": f"https://{base_url}/api/v1/projects/{project_slug}/models/{model_slug}/diagrams/%s",
"username": username,
"password": token,
}
)
```
Loading

0 comments on commit b3cae4d

Please sign in to comment.