Skip to content
Connect an agent

Hosted diagrams and plans

Classification labels and publish approval

Every diagram in an organisation's library carries a classification label that says how far it may travel. An organisation can also hold a publish, or a public link, until an approver has looked at it.

TL;DR

QuestionAnswer
What are the labels?Public, Internal (the default) and Confidential. A diagram published before labels reads as Internal.
What does a label do?Confidential is never shared at a public link. With "Share only diagrams labelled Public" on, only a Public diagram is. The label is also written into the stored picture's metadata and onto the name of a PNG or PDF export.
Who changes a label?The owner and admins, either way. The member who published a diagram, only to a stricter label. Nobody else, and never a key.
What does approval do?With "Publishing needs approval" on, a publish by someone who is not an approver is stored but held: only its publisher and the approvers see it until an approver approves.
Who approves?The owner, the admins, and the members they choose. An approver publishes and shares directly.
What does an agent see?The publish answers as usual, with approval and warning W601, "Held for approval by your organisation". It is data, never an error.
How long does a request wait?30 days. Then the daily sweep ends it, as a rejection does.

1. The labels

LabelMarkMeans
PublicA globeMay be shared at a public link.
InternalA buildingFor the organisation. Shared publicly only where the owner allows public sharing and does not ask for Public.
ConfidentialA lock, in the danger inkNever shared at a public link.

The library shows the label under each diagram's name as a mark and a word, and the list can be narrowed to one label. Every member, readers included, sees the labels.

Which label a new diagram gets

A publish can name its label (classification on publish_diagram and on POST /v1/diagrams/publish). Left out, the diagram takes the default of the deepest folder on its path that has one, and otherwise the organisation's default, Internal unless an owner or admin chose another. An agent's auto-publish takes the folder default the same way.

A member may choose a label at or above that default. A label below it is for the owner and admins, and is refused with 403 orgs.forbidden for anyone else.

Changing a label

Change a label from the row's menu in the library, or with Change beside the label on the diagram's page. The API is PATCH /orgs/{org}/diagrams/{id}/classification.

WhoMay
Owner, adminAny label, either way, on any diagram
The member who published itOnly a stricter label: Public to Internal or Confidential, Internal to Confidential
Another member, a reader, an organisation keyNothing

A lock does not stop a label change. Each change is recorded as orgs.diagram.classify with the label before and after.

RuleWhat happens
ConfidentialA share is refused with 409 orgs.share_classified. Raising a shared diagram to Confidential ends its link at once; the portal asks first.
"Share only diagrams labelled Public" (the owner's switch)Only a Public diagram may be shared. Turning it on ends the link of every shared diagram that is not Public, and says how many.
Public sharing is offNo diagram is shared, whatever its label.

The label in the files

The stored picture carries the label in one empty metadata element, <metadata data-classification="confidential"/>, beside its id. It is never drawn on the picture. A public link's copy keeps it. A PNG or PDF exported from the diagram's page is named with the label at the end, such as card-vault-confidential.png.

2. Publish approval

Set it on the Settings tab, under Approval. The owner and admins choose.

SettingChoices
Publishing needs approvalOff (the default), Chosen folders (each folder and every folder inside it), or Every publish
Public sharing needs approvalOff or on
Hold organisation keys for approval tooOff (the default) or on. Only the owner changes it.
ApproversMembers chosen to approve beside the owner and admins. A reader is never one.

What is held

PublishWhile approval covers its folder
A new diagram by a member or an agent connectionStored and held. The publisher and the approvers see it, marked "Waiting for approval"; nobody else does, and a public link waits for it.
A new version of a diagram the library shows (the editor's save, an agent's drawing of the same title)The library keeps the approved version. The new one waits, and the row says "New version waiting".
The same picture againNothing new. A held one stays held.
A public link, with "Public sharing needs approval" onNo link yet. The share answers 202 with the request.
Anything by the owner, an admin or a chosen approverGoes ahead at once.
A publish or a new version by an organisation keyGoes ahead at once, unless the owner turns on "Hold organisation keys for approval too". Then it is held like a member's.

Only the owner and admins make organisation keys from the Keys tab, and they publish directly, so a key does too by default. An agent connection is its member, so it is held whenever that member would be. An organisation key never makes a public link.

The Approvals queue

Approvers have an Approvals section under Governance, with the number waiting beside its name. Each request shows:

FieldShows
The pictureThe new diagram, or the proposed version
What is askedNew diagram, New version or Public link
Who askedThe publisher's address, or an organisation key
Folder and labelWhere it is filed and how it is labelled
Secret scanHow many things that look like a credential the scan found, under the organisation's scanning options
What changedFor a new version, each change by meaning: added, removed, renamed, moved, changed (the engine's compare_diagrams)

Approve shows a new diagram to the library, puts a new version in place (the one before is kept as a previous version), or makes the public link with every check of a share run again. Reject deletes a new diagram, drops a new version, or makes no link. Either takes an optional comment of up to 500 characters. The publisher is emailed the outcome with the comment. Nobody decides what they asked for themselves.

A legal hold refuses a rejection of a new diagram, as it refuses every delete. An approval still goes ahead.

Below the queue, the requests decided or ended in the last 30 days are listed with their outcome.

Expiry

A request nobody decides ends 30 days after it was made. The daily sweep ends it as a rejection does and records orgs.diagram.approval_expire, with "Approval policy" as the actor. An organisation on legal hold keeps its held diagrams until the hold ends.

Approval and secret scanning

Secret scanning runs first. Under Block, a publish with a finding is refused and never reaches the queue. Under Warn it is held like any other, and the queue shows how many findings it has.

3. What an agent sees

A held publish is an answer, never an error:

text
Held for approval by your organisation: the diagram is stored in the Acme Team library, but only you and its approvers can see it until an approver approves it. (warning W601)Stored in the private library of "Acme Team", waiting for approval: https://app.plotwork.dev/orgs/acme-team/diagrams/5d1d7c8e-3f0a-4f6e-9a55-0d7c9b1f2a10

The structured answer carries approval (state, requestId, kind, expiresAt, message, code) and a W601 warning. An auto-publish that was held carries the same warning among the drawing's warnings, and autoPublished.approval. The agent should tell the person and not publish again.

4. What the audit log records

EventWhenMetadata
orgs.diagram.classifyA label changedfrom, to, shareEnded
orgs.diagram.approval_requestA publish, a version or a link was heldkind, request, secretFindings, auto
orgs.diagram.approveAn approver approvedkind, request, publisher, comment
orgs.diagram.rejectAn approver rejectedkind, request, publisher, comment
orgs.diagram.approval_expireThe sweep ended a requestkind, request
orgs.settings.classificationThe labels' settings changeddefault, sharePublicOnly, folders (how many), linksEnded
orgs.settings.approvalThe approval settings changedpublish, folders (how many), share, approvers (how many)

None holds a folder's path or a diagram's source. On Enterprise they are sent to your SIEM like every other event.

See also

DocWhy
OrganisationsThe library, roles and the other Settings
Hosted diagramsPublishing, and public links
Secret scanningWhat the scan finds before a publish
Audit logReading and exporting the events
MCP serverpublish_diagram and its answers
Diagnostic codesW601 among the rest