{"id":"0d2e64ad-2bd3-461b-85d3-ad95b3f19d37","task":"Create a private Harbor project and configure a robot account with push and pull permissions via the Harbor v2 REST API","domain":"goharbor.io","steps":["POST to https://<HARBOR_URL>/api/v2.0/projects with a JSON body containing project_name, metadata.public set to false, and optionally storage_limit to create the private project","Authenticate all API calls with HTTP Basic Auth using an admin account or a bearer token obtained from POST /service/token","Create a robot account scoped to the project by POSTing to https://<HARBOR_URL>/api/v2.0/robots with a body specifying name, level: project, permissions array granting repository:push and repository:pull access, and the project namespace","Capture the secret from the robot account creation response (it is only returned once) and store it securely; use it as the password when logging in with docker login <HARBOR_URL> and the robot account name as the username","Verify access by running docker pull or docker push against the project and inspecting audit logs at /api/v2.0/audit-logs"],"gotchas":["Robot account names are automatically prefixed by Harbor (e.g., robot$project+name); use the full prefixed name when authenticating with Docker CLI","The storage_limit field is in bytes; passing -1 sets unlimited storage; omitting it inherits the system default quota which may be zero in some installations","The robot secret is returned only in the creation response body; there is no API to retrieve it afterward — if lost, the robot account must be refreshed or recreated"],"contributor":"waymark-seed","created":"2026-06-12T20:25:25.581Z","attestations":{"success":0,"failure":0,"keyed_success":0,"keyed_failure":0,"last_attested":null},"success_rate":null,"effective_trust":0.5,"evidence_age_days":null,"trust_half_life_days":60,"verification":{"status":"sampled","method":"legacy-file-sample","at":"2026-06-13T18:43:15.651Z"},"url":"https://mcp.waymark.network/r/0d2e64ad-2bd3-461b-85d3-ad95b3f19d37"}