Setup guides for IntelliJ, Gradle, Maven, CI/CD, and the REST API.
Add this repository to IntelliJ so you can install and update private plugins directly from the IDE.
Go to Settings / Preferences → Plugins → click the ⚙ gear icon → Manage Plugin Repositories…
Click + and paste this URL:
https://plugin-repo-dp3.pages.dev/api/updatePlugins.xml Click OK, go to the Marketplace tab in Plugins, and search for your plugin name. It will appear alongside JetBrains plugins.
Add the Maven repository and declare the dependency in your Gradle build files.
dependencyResolutionManagement {
repositories {
maven {
url = uri("https://plugin-repo-dp3.pages.dev/maven")
}
}
}dependencies {
implementation("com.example:mylibrary:1.0.0")
// or for a specific commit build:
implementation("com.example:mylibrary:1.2.0-a3f9c12")
}TAG-COMMITHASH (e.g. 1.2.0-a3f9c12) lets you pin to exact builds from CI without floating tags.<repositories>
<repository>
<id>plugin-repo</id>
<url>https://plugin-repo-dp3.pages.dev/maven</url>
</repository>
</repositories>
<dependencies>
<dependency>
<groupId>com.example</groupId>
<artifactId>mylibrary</artifactId>
<version>1.0.0</version>
</dependency>
</dependencies>To authenticate CI/CD scripts, create an API token in the Admin dashboard under the API Tokens tab. Tokens come in two roles:
| Role | Permissions |
|---|---|
| uploader | Upload plugins and Maven artifacts |
| admin | Upload + delete + edit + manage users and tokens |
Three ways to pass the token:
# Bearer token (recommended) curl -H "Authorization: Bearer pr_upload_..." ... # Basic auth (username ignored, token is the password) curl -u "ci:pr_upload_..." ... # Legacy header curl -H "X-Admin-Token: pr_upload_..." ...
Upload a plugin ZIP after building it. The ZIP must contain a JAR with META-INF/plugin.xml inside.
- name: Publish plugin
run: |
curl -X POST https://plugin-repo-dp3.pages.dev/api/upload \
-H "Authorization: Bearer ${{ secrets.PLUGIN_REPO_TOKEN }}" \
-F "file=@build/distributions/my-plugin-${{ github.ref_name }}.zip" \
-F "changelog=${{ github.event.release.body }}"#!/bin/bash
set -e
TOKEN="${PLUGIN_REPO_TOKEN:?must be set}"
ZIP="${1:?usage: publish.sh path/to/plugin.zip}"
curl -fsS -X POST https://plugin-repo-dp3.pages.dev/api/upload \
-H "Authorization: Bearer $TOKEN" \
-F "file=@$ZIP" \
-F "changelog=$(git log -1 --pretty=%B)"
echo "Published successfully"Upload AARs or JARs with a version derived from Git tags and commit hashes for precise traceability.
- name: Publish AAR
run: |
VERSION="$(git describe --tags --abbrev=0)-$(git rev-parse --short HEAD)"
curl -X POST https://plugin-repo-dp3.pages.dev/api/maven/upload \
-H "Authorization: Bearer ${{ secrets.PLUGIN_REPO_TOKEN }}" \
-F "file=@lib/build/outputs/aar/lib-release.aar" \
-F "group=com.example" \
-F "artifact=mylibrary" \
-F "version=$VERSION" \
-F "description=My Android library"DEPS='[
{"group":"com.squareup.okhttp3","artifact":"okhttp","version":"4.12.0","scope":"compile"},
{"group":"org.jetbrains.kotlin","artifact":"kotlin-stdlib","version":"1.9.0","scope":"compile"}
]'
curl -X POST https://plugin-repo-dp3.pages.dev/api/maven/upload \
-H "Authorization: Bearer $TOKEN" \
-F "file=@lib-release.aar" \
-F "group=com.example" \
-F "artifact=mylibrary" \
-F "version=1.0.0-abc1234" \
-F "dependencies=$DEPS"| Method | Path | Auth | Description |
|---|---|---|---|
| GET | /api/updatePlugins.xml | none | IntelliJ plugin feed |
| GET | /maven/** | none | Maven repository (POM, AAR, JAR, checksums) |
| GET | /api/download/:versionId | none | Download plugin version (increments download count) |
| POST | /api/upload | token | Upload plugin ZIP. Fields: file, changelog |
| POST | /api/maven/upload | token | Publish AAR/JAR. Fields: file, group, artifact, version, classifier, description, dependencies |
| DELETE | /api/admin/plugins/:id | admin | Delete plugin and all versions |
| PATCH | /api/admin/plugins/:id | admin | Update plugin metadata (name, description, vendor, icon_url) |
| DELETE | /api/admin/versions/:id | admin | Delete a specific plugin version |
| DELETE | /api/admin/maven/:id | admin | Delete a Maven artifact version |
| GET | /api/admin/tokens | admin | List API tokens |
| POST | /api/admin/tokens | admin | Create API token. Body: {"name":"...","role":"uploader|admin"} |
| DELETE | /api/admin/tokens/:id | admin | Revoke API token |
| POST | /api/admin/users | admin | Create dashboard user. Body: {"username":"...","password":"...","role":"..."} |
| DELETE | /api/admin/users/:id | admin | Delete dashboard user |
| PATCH | /api/admin/users/:id | admin | Update user password or role |