nexiles.tools.api 0.5.1
nexiles.tools.api -- python nexiles Windchill gateway http client api
License: BSD

=================
nexiles.tools.api
=================

.. image:: http://nexiles.github.io/nexiles.tools.api/_static/gateway-logo.svg
   :width: 250

:Author:    Stefan Eletzhofer, nexiles GmbH
:Date:      2024-02-27
:Version:   0.5.1
:License:   BSD

Abstract
========

This is the repository of the *python* HTTP API **client** to the *nexiles.tools*
Windchill API of nexiles GmbH.

Features
========

- Querying
- read and write IBA Attributes
- up- and download of content
- create and delete Business Objects (WTPart, WTDocument, Products)
- usage, used-by, references navigation of parts and epm documents
- type information queries
- team, role, user queries
- no InfoEngine license needed!

Supported Business Objects
--------------------------

+---------------+-----------------------------------------------------------+--------------------------------------------------------------+
| name          |  business object                                          | actions available                                            |
+===============+===========================================================+==============================================================+
| organizations |  wt.inf.Organization                                      |                                                              |
+---------------+-----------------------------------------------------------+--------------------------------------------------------------+
| products      |  wt.pdm.PDMLinkProduct                                    | container attributes  parts documents epmdocuments           |
+---------------+-----------------------------------------------------------+--------------------------------------------------------------+
| libraries     |  wt.inf.library.WTLibrary                                 | container attributes  parts documents epmdocuments           |
+---------------+-----------------------------------------------------------+--------------------------------------------------------------+
| projects      |  wt.projmgmt.admin.Project2                               | container attributes  parts documents epmdocuments           |
|               |                                                           | workpackages                                                 |
+---------------+-----------------------------------------------------------+--------------------------------------------------------------+
| cabinets      |  wt.folder.Cabinet                                        |                                                              |
+---------------+-----------------------------------------------------------+--------------------------------------------------------------+
| folders       |  wt.folder.SubFolder                                      |                                                              |
+---------------+-----------------------------------------------------------+--------------------------------------------------------------+
| epmdocuments  |  wt.epm.EPMDocument                                       | container attributes history content uses references used_by |
+---------------+-----------------------------------------------------------+--------------------------------------------------------------+
| parts         |  wt.part.WTPart                                           | container attributes history content uses                    |
+---------------+-----------------------------------------------------------+--------------------------------------------------------------+
| documents     |  wt.doc.WTDocument                                        | container attributes history content                         |
+---------------+-----------------------------------------------------------+--------------------------------------------------------------+
| teams         |  wt.inf.team.ContainerTeam                                | roles participants                                           |
+---------------+-----------------------------------------------------------+--------------------------------------------------------------+
| groups        |  wt.org.WTGroup                                           | members                                                      |
+---------------+-----------------------------------------------------------+--------------------------------------------------------------+
| users         |  wt.org.WTUser                                            |                                                              |
+---------------+-----------------------------------------------------------+--------------------------------------------------------------+
| types         |  com.ptc.core.meta.type.mgmt.server.impl.WTTypeDefinition | attribute_names                                              |
+---------------+-----------------------------------------------------------+--------------------------------------------------------------+
| reports       |  wt.query.template.ReportTemplate                         | execute                                                      |
+---------------+-----------------------------------------------------------+--------------------------------------------------------------+
| workpackages  |  com.ptc.windchill.wp.WorkPackage                         | content container attributes                                 |
+---------------+-----------------------------------------------------------+--------------------------------------------------------------+


Usage Example
=============

For e.g. fetching all `WTDocuments` which match a certain number::

    >>> from nexiles.tools.api import get_api
    >>> api = get_api("http://www.example.com/Windchill", username="fred", password="kaputnik")
    >>> docs = api.documents(number="1003*")

Fetching a certain document identified by it's `OID`::

    >>> doc = api.document("OR:wt.doc.WTDocument:2342344")
    >>> doc.name, doc.number, doc.version
    u'Test Document', u'12345345', u'A.3'

Fetching the `PRIMARY CONTENT` of a `part`::

    >>> content = api.parts("OR:wt.epm.EPMDocument:4711").content.get(role="PRIMARY", filename="COVER.PRT")

For more examples, see the documentation.

Requirements
============

Server Side Requirements
------------------------

To use the API, you need a recent version of the **nexiles.tools**
installed on your Windchill server.

We currently support Windchill 11.1 and 12.0 .

Please contact info@nexiles.com for licensing and deployment information
regarding the server-side package.


Client Side Requirements
------------------------

To use the API on your clients, you need:

- a recent python (testing is done with 3.11.7, Python 2.7 finally died)

- The dependencies listed in the `setup.py` file.  Note that
  these should be installed automatically.

Documentation
=============

See http://nexiles.github.io/nexiles.tools.api/