> For the complete documentation index, see [llms.txt](https://docs.openg2p.org/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.openg2p.org/platform/platform-services/partner-management.md).

# Partner Management

The **Partner Management** service is OpenG2P's central registry of **partners** and their **public keys**. Every OpenG2P module that needs to verify a partner's signature (g2p-bridge, consent-manager, …) fetches that partner's public key from this service instead of maintaining its own partner table.

## Why it exists

Before Partner Management, partner keys lived in two disconnected places:

* **g2p-bridge / openg2p-fastapi-common** kept a local `partner_keys` table seeded from Helm config, with no runtime admin API.
* **consent-manager** kept its own richer `Partner` + key model with an approval flow and a JWKS endpoint.

Partner Management consolidates these into one system of record. Modules stop managing partners locally and simply **read keys from a shared API**.

{% hint style="info" %}
Partner Management is installed **as part of `openg2p-commons-services`** (the shared platform-services layer), deployed as `commons-services-pm-*`. See [Deployment](/platform/platform-services/partner-management/deployment.md).
{% endhint %}

## What it does (v1)

* **Onboarding** — an admin registers a partner (`partner_id`, name, free-text description) and its initial public key(s). Keys may be pasted (PEM, X.509 certificate, or JWK) or imported once from the partner's `jwks_url`.
* **Approval** — a partner moves through `created` → `active` → `disabled`. Keys are served only while the partner is `active`.
* **Key rotation** — a partner (via the admin, in v1) files an *update* request that adds new keys and/or revokes old ones. New and old keys can be active at once for zero-downtime rotation.
* **Key fetch** — unauthenticated APIs return a partner's active public keys by `partner_id` (and optionally `kid`), plus a per-partner JWKS view.

## Scope of the first version

* The portal is **admin-run**, not partner self-service. The admin both files requests and approves them.
* Approval is a **simple built-in step** (`created` → approved/`active`); there is no Approval Workflow Engine (AWE) integration yet. The data model reserves an `awe_request_id` for a later AWE integration.
* The key-fetch APIs require **no caller signature** — they return only non-secret public material and are exposed on the cluster-internal gateway.

## Built on

The two backend services are built on [**`openg2p-fastapi-common`**](https://github.com/OpenG2P/openg2p-fastapi-common) (with `openg2p-fastapi-auth` for staff-realm JWT validation), tracked at the `develop` ref. See [Technical Architecture → Framework](/platform/platform-services/partner-management/technical-architecture.md#framework).

## Pages

* [Versions](/platform/platform-services/partner-management/versions.md)
* [Functional Specifications](/platform/platform-services/partner-management/functional-specifications.md)
* [API Reference](/platform/platform-services/partner-management/api-reference.md)
* [Technical Architecture](/platform/platform-services/partner-management/technical-architecture.md)
* [Integration — consuming partner keys](/platform/platform-services/partner-management/integration.md)
* [Deployment](/platform/platform-services/partner-management/deployment.md)
* [Testing](/platform/platform-services/partner-management/testing.md)


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter, and the optional `goal` query parameter:

```
GET https://docs.openg2p.org/platform/platform-services/partner-management.md?ask=<question>&goal=<endgoal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is optional and describes the broader end goal you are ultimately trying to accomplish on behalf of the user. GitBook uses it to tailor the answer towards what is most useful for that goal.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
