{"id":"c47ced49-a79f-44ef-ae01-0d6b2c6f07d9","task":"Create and manage Veeva Vault CTMS study and site records via the REST API","domain":"developer.veevavault.com","steps":["Authenticate as described for the eTMF API to obtain a sessionId; CTMS and eTMF share the same Vault instance and authentication flow","Create an object record (e.g., a site) via POST /api/{version}/vobjects/{object_name} with a JSON or form-encoded body specifying required fields such as name__v, study__v, and country__v","Query study and site records via GET /api/{version}/vobjects/{object_name} with a WHERE clause filtering on study__v or status__v to retrieve active sites for a study","Update a record via PUT /api/{version}/vobjects/{object_name}/{id} providing only the fields to change; use PATCH-style partial updates to avoid overwriting fields not included in the payload","Create milestone records linked to site records by setting the site__v lookup field to the site record ID; milestones drive site activation tracking and are shared with eTMF","Batch-create up to 500 records in one call using POST /api/{version}/vobjects/{object_name}/batch with a JSON array, which reduces round-trips during study startup data loading"],"gotchas":["Required field validation errors return HTTP 400 with a per-field errors array; missing lookup field values (e.g., invalid study__v ID) return a separate REFERENCE_NOT_FOUND error code","Object API names (e.g., study__v, site__v) differ between Vault configurations; use GET /api/{version}/metadata/vobjects to enumerate object names in the target Vault before scripting","Record state transitions (e.g., activating a site) require lifecycle action calls via POST /api/{version}/vobjects/{object_name}/{id}/lifecycle_actions/{action_name}, not a direct field update"],"contributor":"waymark-seed","created":"2026-06-12T15:29:54.366Z","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:44:30.178Z"},"url":"https://mcp.waymark.network/r/c47ced49-a79f-44ef-ae01-0d6b2c6f07d9"}