Preview building the master from the profiles' resumes
const url = 'http://127.0.0.1:8765/api/master/migration';const options = {method: 'GET'};
try { const response = await fetch(url, options); const data = await response.json(); console.log(data);} catch (error) { console.error(error);}curl --request GET \ --url http://127.0.0.1:8765/api/master/migrationWhat building the master from the profiles’ resumes would do, and the questions it asks. Writes nothing. The master is built from the resumes the profiles hold: the union of their lines, the same line and near-duplicates folded (the newer wording kept). Two versions of a line that state DIFFERENT NUMBERS are asked about (questions: both wordings, and the profile that holds each); nothing is written until every question has an answer (a, b, or both). Each profile’s first selection is its own resume, which is not rewritten, so nothing assessed stays as it was. status: needs_answers (questions are open), ready (GET only: a POST would write it), created | revised | unchanged (written), blocked (GET only: blocked says why, e.g. migration_no_profiles or migration_resume_unreadable). contact_removed lists what the privacy strip left out of a resume by profile, kind and line number, never a value. migration.source_lines says what became of EVERY line of the resumes (a line that is not blank; headings, role lines and each line of a wrapped bullet count): in = kept (in the master) + folded (the master holds it already; folded_by_reason) + left_out (left_out_by_reason), and per resume the lines left out, by reason, a sentence saying why, and their line numbers in the stored resume, never their text. resumes[].education (0.1.11.4): the lines that look like education (a heading that names it, or a degree with a school and a year) and did not become an Education entry, when the master would have none: first, last (line numbers), the section that holds them and a message; a report only. Read it before answering: a line the reader left out is not in the master. file (after a write): where the master went in the resumes folder. Local only: no model call.
Responses
Section titled “Responses”Success.
object
Example
{ "blocked": null, "contact_removed": null, "file": null, "master": null, "migration": { "entries": 13, "exact_duplicates": 4, "ids_assigned": 78, "lines_in": 71, "lines_out": 65, "near_duplicates": [], "questions": [ { "answer": null, "choices": [ "a", "b", "both" ], "entry": "Lumenfold", "kind": "number_conflict", "options": [ { "key": "a", "profiles": [ "Staff AI Engineer" ], "text": "Scaled the event pipeline to 2.1 million events a day for 140 internal teams." }, { "key": "b", "profiles": [ "Staff Software Engineer" ], "text": "Scaled the event pipeline to 1.4 million events a day for 90 internal teams." } ], "question": "One line of Experience / Lumenfold is worded twice, with different numbers. Which is right: a, b, or both (keep the two lines)?", "question_id": "mq-59c304ca47a1", "section": "experience" } ], "resumes": 2, "source_lines": { "folded": 17, "folded_by_reason": { "conflict": 1, "exact_duplicate": 4, "near_duplicate": 2, "role_line": 3, "same_entry": 6, "skills_joined": 1 }, "in": 131, "kept": 112, "left_out": 2, "left_out_by_reason": { "above_first_section": 2, "contact": 0, "empty_section": 0, "title_heading": 0, "unknown_section": 0, "unread": 0 }, "resumes": [ { "in": 61, "left_out": [ { "lines": [ 1, 3 ], "reason": "above_first_section", "why": "above the first section and not a summary paragraph (a name, a title or a headline)" } ], "profiles": [ "Staff AI Engineer" ] }, { "in": 70, "left_out": [], "profiles": [ "Staff Software Engineer" ] } ] }, "unanswered": [ "mq-59c304ca47a1" ] }, "mode": "migration", "ok": true, "profiles": [ { "label": "Staff AI Engineer", "profile_id": "prof_1", "resume_ref": { "content_sha256": "sha256:...", "record_id": "record_...", "revision_id": "revision_..." }, "shown": null, "skills": null } ], "questions": [ { "answer": null, "choices": [ "a", "b", "both" ], "entry": "Lumenfold", "kind": "number_conflict", "options": [ { "key": "a", "profiles": [ "Staff AI Engineer" ], "text": "Scaled the event pipeline to 2.1 million events a day for 140 internal teams." }, { "key": "b", "profiles": [ "Staff Software Engineer" ], "text": "Scaled the event pipeline to 1.4 million events a day for 90 internal teams." } ], "question": "One line of Experience / Lumenfold is worded twice, with different numbers. Which is right: a, b, or both (keep the two lines)?", "question_id": "mq-59c304ca47a1", "section": "experience" } ], "schema_version": "scout-master-migration:1", "status": "needs_answers", "written": false}Forbidden / forbidden_origin: loopback peer and Host 127.0.0.1:<port> or localhost:<port> only (Origin too on writes).
object
object
Examplegenerated
{ "error": { "allowed_keys": [ "example" ], "code": "example", "message": "example" }}Target_unavailable
object
object
Example
{ "error": { "code": "target_unavailable", "message": "..." }}Unknown_key
object
object
Example
{ "error": { "code": "unknown_key", "message": "..." }}