---
title: "Open a package for stewardship"
method: POST
path: "/stewardships/open"
tags: ["Stewardship Actions"]
---

# Open a package for stewardship

`POST /stewardships/open`

Transitions the stewardship status to `open`, marking the package as available for claiming. If a stewardship row does not exist yet, one is created. If the stewardship is already `open`, this is a no-op (idempotent).

## Request body

- object
  - `purl` string, required — Package URL (must start with `pkg:`).
  - `actor` ActorInput, required — Profile of the actor performing this action. Stored as a snapshot on the activity log. `userId` is required. All other fields are optional and can be null.
    - `userId` string, required — Auth0 sub of the actor. Must match the authenticated user's token sub.
    - `username` string, nullable — LFX username of the actor.
    - `displayName` string, nullable — Full display name of the actor.
    - `avatarUrl` string, uri, nullable — Avatar URL of the actor.

## Response `200`

Stewardship opened (or already open).

- object
  - `stewardship` StewardshipRecord, required
    - `id` string, required
    - `packageId` string, required
    - `status` 'unassigned' | 'open' | 'assessing' | 'active' | 'needs_attention' | 'escalated' | 'blocked' | 'inactive', required
    - `origin` 'auto_imported' | 'self_claimed' | 'assigned' | 'opened_for_claim', required
    - `version` integer, required
    - `openedAt` string, date-time, nullable
    - `lastStatusAt` string, date-time, nullable
    - `inactiveReason` 'quarterly_cadence_missed' | 'stepped_down' | 'no_longer_critical' | 'null', nullable
    - `resolutionPath` 'right_of_first_refusal' | 'replace_the_dependency' | 'find_vendor_for_lts' | 'consortium_adopts_maintainership' | 'compensating_controls_monitor' | 'namespace_takeover'
    - `statusNote` string, nullable — Free-text note for the current status. Set by escalate or updateStatus. Null on open.
    - `createdAt` string, date-time, required
    - `updatedAt` string, date-time, required

## Other responses

- `400` — Validation error (e.g. missing or invalid purl).
- `401` — Missing or invalid bearer token.
- `403` — Insufficient scopes.
- `404` — Package not found.

---

[API](https://skmtc.net/linuxfoundation/apis/cdp-public-api-stewardship-admin-actions.md) · [All operations](https://skmtc.net/linuxfoundation/apis/cdp-public-api-stewardship-admin-actions/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/linuxfoundation/cdp-public-api-stewardship-admin-actions/versions/6ebc984b9a25/schema)
