POST api/entity/person/camper/UpsertLead

Upserts a camper lead (a season-0 tbl_potcamper row plus the lead fields on tblcamper) for an already-resolved legacy personID, without creating or modifying the person or household. This is the Option B legacy-write transport for the comms Lead Legacy Orchestrator (work item #20341); see spike #20340 §15.9. Lead-only by design: it writes nothing to tblPerson, tblfamily (including lead source), or the relationship graph — those are owned by the People domain's legacy projection. The person must already exist; this endpoint attaches the lead to it. Sunset: this is a transitional shim. Retire it once the People domain owns the full legacy write path — at which point the orchestrator moves to an event-driven CORE-access worker (spike #20340 §15.9 Option C).

Request Information

URI Parameters

None.

Body Parameters

UpsertLeadRequest
NameDescriptionTypeAdditional information
PersonID

The already-resolved legacy personID the lead attaches to. The person must already exist (projected by People); this endpoint does not create it. Required.

integer

None.

SchoolName

The attendee's school name. Maps to tblcamper.school.

string

None.

GradeLevel

The attendee's grade, written as received — no GradeCompleted offset is applied (the legacy DB trigger still clamps to [-3, 14]). Maps to Camper2.CampGradeID.

integer

None.

SeasonOfInterest

The season the family is interested in (a legacy season id). Maps to tbl_potcamper.SeasonInterestedIn. The lead row itself is always season 0.

integer

None.

PreviousExperience

The attendee's prior camp experience. Maps to tblcamper.previousCampExperience.

string

None.

Request Formats

application/json, text/json

Sample:
{
  "PersonID": 1,
  "SchoolName": "sample string 2",
  "GradeLevel": 1,
  "SeasonOfInterest": 1,
  "PreviousExperience": "sample string 3"
}

application/javascript

Sample:
{"PersonID":1,"SchoolName":"sample string 2","GradeLevel":1,"SeasonOfInterest":1,"PreviousExperience":"sample string 3"}

application/xml, text/xml

Sample:
<UpsertLeadRequest xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
  <PersonID>1</PersonID>
  <SchoolName>sample string 2</SchoolName>
  <GradeLevel>1</GradeLevel>
  <SeasonOfInterest>1</SeasonOfInterest>
  <PreviousExperience>sample string 3</PreviousExperience>
</UpsertLeadRequest>

application/x-www-form-urlencoded

Sample:

Failed to generate the sample for media type 'application/x-www-form-urlencoded'. Cannot use formatter 'JQueryMvcFormUrlEncodedFormatter' to write type 'UpsertLeadRequest'.

Response Information

Resource Description

WebMethodResultOfUpsertLeadResponse
NameDescriptionTypeAdditional information
Result

UpsertLeadResponse

None.

Success

boolean

None.

ErrorText

string

None.

Response Formats

application/json, text/json

Sample:
{
  "Result": {
    "PersonID": 1
  },
  "Success": true,
  "ErrorText": "sample string 2"
}

application/javascript

Sample:
{"Result":{"PersonID":1},"Success":true,"ErrorText":"sample string 2"}

application/xml, text/xml

Sample:
<WebMethodResultOfUpsertLeadResponse xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
  <Success>true</Success>
  <ErrorText>sample string 2</ErrorText>
  <Result>
    <PersonID>1</PersonID>
  </Result>
</WebMethodResultOfUpsertLeadResponse>