jiveapi python package¶
Simple and limited Python client for Jive collaboration software ReST API v3, along with utilities for massaging HTML to display better on Jive. Also comes pre-installed in a Docker image and a Sphinx theme and builder for Jive-optimized HTML output.
Note: Full documentation is hosted at: jiveapi.readthedocs.io. This README is just a short introduction.
Scope and Status¶
I’m writing this to be a working Python wrapper around a small portion of the Jive ReST API - specifically, uploading/publishing updating Documents, uploading embedded Images, and manipulating the input HTML to display better in Jive. I’m doing this in my personal time, but we’ll be using the project at work for a very limited requirement: “syndicating” documentation that we publish on internal web servers (mostly Sphinx and Hugo static sites) to our corporate Jive instance. The main purpose for doing this is to reach a wider audience and for searchability, not to faithfully reproduce the layout and styling of the original HTML. I don’t plan on adding support beyond what’s required for that, but contributions are welcome.
For the time being, this should be considered Alpha-quality software. It’s young and likely only has a handful of code paths exercised on a regular basis, and from what I’ve seen in practice and in the documentation, I can only assume that Jive has many error conditions this software has yet to see. In short, for the time being, make sure you sanity check things or don’t rely on this working 100% of the time. Bug reports are very welcome, but please be sure to include full debugging output.
At least for this initial release, it is highly recommended that you capture DEBUG-level logging, as this will contain the Jive internal IDs needed if something goes wrong.
Also be aware that Jive heavily modifies HTML, including stripping out and sometimes replacing
id attributes, breaking any internal anchor links containing dashes, etc. The high-level methods in this package make a best effort to modify HTML to work in Jive, but nothing is guaranteed. Once again, this is focused on content not presentation.
- Low-level API (direct interface to Jive API calls)
- Get information on currently-authenticated user
- Get API version information
- Get Content, Create Content, and Update Content (i.e. Documents, Posts, etc.) in Jive from Python dictionary equivalents of the native Jive API types.
- Get binary Image data and Create Images that can be embedded in Content (i.e. Documents and Posts).
- Backdate Content items when creating or updating them.
- High-level wrapper API (provides assistance with generating parameters and massaging content):
- Create and Update HTML Documents given HTML content and some parameters, including most of the common parameters such as the place to post in, visibility, published/draft status, and keywords.
- Not Yet Implemented: Create and Update HTML Posts given HTML content and some parameters, including most of the common parameters such as the place to post in, visibility, published/draft status, and keywords.
- Modify HTML formatting to use Jive UI conventions (“jive-ize” HTML).
- Given a HTML string that contains image tags referring to local images and the filesystem path containing the images, upload each of them to Jive and modify the HTML to point to the images’ Jive URLs. Return metadata about the content and images to the user for future updates. Use this metadata on future updates to prevent re-uploading the same image.
- Option to modify HTML to insert Jive-style information/notice boxes as header and footer, such as information reminding users not to edit the document directly on Jive and giving links to the canonical source, commit, and build that last generated the content.
- Option to add a Jive Table of Contents macro to the beginning of the content.
- jiveapi also includes a basic Sphinx theme (called
jiveapi) and Builder (also called
jiveapi) optimized for building single-page HTML for uploading to Jive.
jiveapi is also available in a self-contained Docker image with all dependencies. See https://hub.docker.com/r/jantman/jiveapi/.
- Python 3.4+. Yes, this package is only developed and tested against Python3, specifically 3.4 or later. It should work under 2.7 as well, but that is neither tested nor supported.
- premailer (optional, only required for high-level JiveContent interface)
- lxml (optional, only required for high-level JiveContent interface)
This software is licensed under the Affero General Public License, version 3 or later. If you’re not redistributing or modifying this software, compliance with the license is simple: make sure anyone interacting with it (even remotely over a network) is informed of where the source code can be downloaded (the project URL in the Python package, or the
jiveapi.version.PROJECT_URL string constant). If you intend on modifying it, the user must have a way of retrieving the exact running source code. If you’re intending on distributing it outside your company, please read the full license and consult your legal counsel or Open Source Compliance policy.
- Getting Started
- Usage and Examples