---
title: "Get plugin registration"
method: GET
path: "/v0/admin/plugins/{registration_id}"
tags: ["Admin"]
---

# Get plugin registration

`GET /v0/admin/plugins/{registration_id}`

## Request

- Base URL: `https://docs.quivr.thevibecompany.co` (the document declares no server; this is the origin it was published from)
- URL: `https://docs.quivr.thevibecompany.co/v0/admin/plugins/{registration_id}`
- Auth: HTTP bearer

One registration with the Contract Runner's report once its check ran. Requires plugins:admin.

## Path parameters

- `registration_id` string, required

## Response `200`

Successful response

- PluginRegistration
  - `registration_id` string, required
  - `plugin_id` string, required
  - `version` string, required
  - `endpoint` string, required: Base URL where the operator runs this plugin version.
  - `manifest_digest` string, required
  - `artifact_digest` string: Artifact digest the plugin reports, recorded as information. Absent when it reports none.
  - `contributions` string[], required
  - `roles` string[], required: Roles the manifest declares it can serve, such as normalizer:application/pdf, subscription:<plugin id> or connector:<kind>. The active plan says which it serves.
  - `state` 'registered' | 'validated' | 'active' | 'draining' | 'inactive' | 'rejected', required: registered while the Contract Runner checks it, then validated or rejected; active while the active plan names it. Once a later plan leaves it out it is draining while pinned_work or subscriptions is above zero, then inactive.
  - `pinned_work` integer, required: Unfinished work pinned to a Pipeline Plan that names this registration, such as the processing of a receipt, a connector run or a rebuild. Work finishes on the plan it started on, so a registration a plan change left out keeps being called until this reaches zero. For an alert-rule plugin it also counts the pending evaluations of Subscription Versions that pin its version.
  - `subscriptions` integer, required: For an alert-rule plugin, the Subscriptions of every Organization that are not deleted, enabled or disabled, whose current Version pins this plugin version. They keep it until migrateSubscriptionEvaluators moves them; 0 for other plugins.
  - `check` PluginCheckReport: What the Contract Runner reported on a registration; certified plugins are validated.
    - `certified` boolean, required
    - `checked_at` string, date-time, required
    - `passed` integer, required
    - `failed` integer, required
    - `skipped` integer, required
    - `checks` PluginCheck[], required
      - `id` string, required
      - `title` string, required
      - `contribution` string
      - `status` 'pass' | 'fail' | 'skip', required
      - `fixture` string: The fixture the check ran, such as fixtures/events.json, or a normative fixture prefixed with contracts:.
      - `issues` PluginIssue[], required
        - `code` string, required
        - `path` string
        - `message` string, required
  - `created_at` string, date-time, required
  - `updated_at` string, date-time, required

## Other responses

- `default`: Structured error; 401 unauthenticated, 403 without plugins:admin, 404 unknown registration, 503 storage unavailable.

---

[API](https://skmtc.dev/thevibecompany/apis/quivr-http-api.md) - [All operations](https://skmtc.dev/thevibecompany/apis/quivr-http-api/llms.txt) - [OpenAPI document](https://skmtc.dev/thevibecompany/apis/quivr-http-api/revisions/4f4e30ba8f4e?raw)
