Update package identity, owner, project scope or access metadata

PATCH/v1/packages/{packageId}

Requires the current revision; conflicts return 409. Access metadata requires package_access_manage and uses centralized permission policies and team shares. Only the current owner can set ownerId to an active member of the same organization; the creator and original-resource ownership remain unchanged. Project scope uses metadata.projectScope.projectIds (up to 50 accessible project IDs), and does not change sharing permissions.

How to call this endpoint

Every ACP API request uses bearer authentication. The examples here show the actual request path, auth header, and body shape that the platform expects.

Path, query, and header parameters

These parameters control which ACP object the endpoint acts on and how the request is processed.

Path parameters
NameLocationTypeRequiredDescription
packageIdpathstringYes—
Query parameters
None.

Body schema

Content type: application/json · Required

FieldTypeRequiredDescription
revisionintegerYes—
namestringNoHuman-readable name.
descriptionstringNoHuman-readable description.
metadataobjectNoFree-form metadata object.
ownerIdstringNo—

What the API returns

Each response code below includes the documented payload shape for the ACP API.

200Package operation resultapplication/json
FieldTypeRequiredDescription
packageobjectYes—
package.ownershipInvitationobjectNo—
package.ownershipInvitation.idstringYesUnique identifier.
package.ownershipInvitation.organizationIdstringYes—
package.ownershipInvitation.kindshare | ownershipYes—
package.ownershipInvitation.resourceTypestringYes—
package.ownershipInvitation.resourceIdstringYes—
package.ownershipInvitation.resourceNamestringYes—
package.ownershipInvitation.recipientUserIdstringYes—
package.ownershipInvitation.invitedByUserIdstringYes—
package.ownershipInvitation.accessLeveluse | edit | manageYes—
package.ownershipInvitation.statuspending | accepted | declined | revoked | expiredYesCurrent lifecycle status.
package.ownershipInvitation.expiresAtstringYes—
package.ownershipInvitation.decidedAtstringYes—
package.ownershipInvitation.createdAtstringYesISO 8601 timestamp.
package.ownershipInvitation.updatedAtstringYesISO 8601 timestamp.
package.idstringYesUnique identifier.
package.organizationIdstringYes—
package.ownerIdstringYes—
package.creatorIdstringYes—
package.namestringYesHuman-readable name.
package.descriptionstringYesHuman-readable description.
package.metadataobjectYesFree-form metadata object.
package.revisionintegerYes—
package.resourceCountintegerYes—
package.createdAtstringYesISO 8601 timestamp.
package.updatedAtstringYesISO 8601 timestamp.
package.canEditbooleanNo—
package.canManagebooleanNo—
package.itemsobject[]No—
package.items[].idstringYesUnique identifier.
package.items[].resourceTypemetronome_workflow | server | agent | skill | environment | prompt | knowledge_library | database | threadYes—
package.items[].resourceIdstringYes—
package.items[].namestringYesHuman-readable name.
package.items[].descriptionstringYesHuman-readable description.
package.items[].kindstringYes—
package.items[].avatarUrlstringNoThe agent's own profile image, distinct from creatorAvatarUrl. Optional; an empty value uses the client's standard fallback.
package.items[].creatorIdstringNo—
package.items[].creatorNamestringNo—
package.items[].creatorAvatarUrlstringNo—
package.items[].createdAtstringNoISO 8601 timestamp.
package.items[].updatedAtstringNoISO 8601 timestamp.
package.items[].sourceOwnerIdstringYes—
package.items[].approvedByUserIdstringYes—
package.items[].sourceUpdatedAtstringYes—
package.items[].addedAtstringYes—
package.items[].messageIdsstring[]No—
package.items[].snapshotobjectYes—
package.items[].snapshot.messagesobject[]Yes—
package.items[].snapshot.messages[].idstringYesUnique identifier.
package.items[].snapshot.messages[].roleuser | assistantYes—
package.items[].snapshot.messages[].contentstringYesRaw text content.
package.items[].snapshot.messages[].createdAtstringYesISO 8601 timestamp.
package.items[].snapshot.capturedAtstringYes—
package.creatorNamestringNo—
package.creatorAvatarUrlstringNo—
package.ownerNamestringNo—
package.ownerAvatarUrlstringNo—
400Package request rejected. HTTP status distinguishes invalid input (400), authentication (401), API scope (403), unavailable resource (404), changed revision or confirmation (409), and unsupported storage (503).application/json
FieldTypeRequiredDescription
errorstringNo—
codestringNo—
messagestringNoMessage text.
401Package request rejected. HTTP status distinguishes invalid input (400), authentication (401), API scope (403), unavailable resource (404), changed revision or confirmation (409), and unsupported storage (503).application/json
FieldTypeRequiredDescription
errorstringNo—
codestringNo—
messagestringNoMessage text.
403Package request rejected. HTTP status distinguishes invalid input (400), authentication (401), API scope (403), unavailable resource (404), changed revision or confirmation (409), and unsupported storage (503).application/json
FieldTypeRequiredDescription
errorstringNo—
codestringNo—
messagestringNoMessage text.
404Package request rejected. HTTP status distinguishes invalid input (400), authentication (401), API scope (403), unavailable resource (404), changed revision or confirmation (409), and unsupported storage (503).application/json
FieldTypeRequiredDescription
errorstringNo—
codestringNo—
messagestringNoMessage text.
409Package request rejected. HTTP status distinguishes invalid input (400), authentication (401), API scope (403), unavailable resource (404), changed revision or confirmation (409), and unsupported storage (503).application/json
FieldTypeRequiredDescription
errorstringNo—
codestringNo—
messagestringNoMessage text.
503Package request rejected. HTTP status distinguishes invalid input (400), authentication (401), API scope (403), unavailable resource (404), changed revision or confirmation (409), and unsupported storage (503).application/json
FieldTypeRequiredDescription
errorstringNo—
codestringNo—
messagestringNoMessage text.
Update package identity, owner, project scope or access metadata
Loading...
Response 200
Loading...
See the ACP quickstart and SDK flow