Primary Contact Details
← Back to Question Bank
Details
Sample version of the rendered form.
Form Data
What the form data looks like when it is submitted.
{ "name": { "prefix": "Dr.", "firstName": "Jane", "middleName": "Edward", "lastName": "Doe", "suffix": "Jr." }, "title": "Executive Director", "address": { "street1": "456 Main St", "street2": "Suite 100", "city": "Anytown", "state": "CA", "country": "US", "postalCode": "12345" }, "phone": { "countryCode": "+1", "number": "444-456-1230", "isMobile": true }, "email": "test@example.com"}CommonGrants Data
What the data looks like translated to the CommonGrants data model using the mapping-to-cg.
{ "contacts": { "primary": { "name": { "prefix": "Dr.", "firstName": "Jane", "middleName": "Edward", "lastName": "Doe", "suffix": "Jr." }, "title": "Executive Director", "addresses": { "primary": { "street1": "456 Main St", "street2": "Suite 100", "city": "Anytown", "stateOrProvince": "CA", "country": "US", "postalCode": "12345" } }, "phones": { "primary": { "countryCode": "+1", "number": "444-456-1230", "isMobile": true } }, "emails": { "primary": "test@example.com" } } }}JSON Schema
Provides the structure and data validation for this question.
$id: QuestionPocDetails.yamltype: objectrequired: - nameunevaluatedProperties: not: {}description: A composite question capturing key details about the primary point of contactx-ui-schema: type: Group label: Primary Point of Contact Details elements: - type: Group label: Name elements: - type: Control scope: '#/properties/name/properties/prefix' label: Prefix - type: Control scope: '#/properties/name/properties/firstName' label: First Name - type: Control scope: '#/properties/name/properties/middleName' label: Middle Name - type: Control scope: '#/properties/name/properties/lastName' label: Last Name - type: Control scope: '#/properties/name/properties/suffix' label: Suffix - type: Control scope: '#/properties/title' label: Job Title - type: Group label: Mailing Address elements: - type: Control scope: '#/properties/address/properties/street1' label: Street Address (Line 1) - type: Control scope: '#/properties/address/properties/street2' label: Street Address (Line 2) - type: Control scope: '#/properties/address/properties/city' label: City - type: Control scope: '#/properties/address/properties/state' label: State - type: Control scope: '#/properties/address/properties/country' label: Country - type: Control scope: '#/properties/address/properties/postalCode' label: Postal Code - type: Group label: Phone Number elements: - type: Control scope: '#/properties/phone/properties/countryCode' label: Country Code - type: Control scope: '#/properties/phone/properties/number' label: Phone Number - type: Control scope: '#/properties/phone/properties/extension' label: Extension - type: Control scope: '#/properties/phone/properties/isMobile' label: Is Mobile? - type: Control scope: '#/properties/email' label: Email Addressx-mapping-to-cg: contacts: primary: name: prefix: field: name.prefix firstName: field: name.firstName middleName: field: name.middleName lastName: field: name.lastName suffix: field: name.suffix title: field: title addresses: primary: street1: field: address.street1 street2: field: address.street2 city: field: address.city stateOrProvince: field: address.state country: field: address.country postalCode: field: address.postalCode phones: primary: countryCode: field: phone.countryCode number: field: phone.number extension: field: phone.extension isMobile: field: phone.isMobile emails: primary: field: emailx-mapping-from-cg: name: prefix: field: contacts.primary.name.prefix firstName: field: contacts.primary.name.firstName middleName: field: contacts.primary.name.middleName lastName: field: contacts.primary.name.lastName suffix: field: contacts.primary.name.suffix title: field: contacts.primary.title address: street1: field: contacts.primary.addresses.primary.street1 street2: field: contacts.primary.addresses.primary.street2 city: field: contacts.primary.addresses.primary.city state: field: contacts.primary.addresses.primary.stateOrProvince country: field: contacts.primary.addresses.primary.country postalCode: field: contacts.primary.addresses.primary.postalCode phone: countryCode: field: contacts.primary.phones.primary.countryCode number: field: contacts.primary.phones.primary.number extension: field: contacts.primary.phones.primary.extension isMobile: field: contacts.primary.phones.primary.isMobile email: field: contacts.primary.emails.primaryx-entity: - pocx-tags: - person - detailsproperties: name: description: The contact's full name $schema: https://json-schema.org/draft/2020-12/schema $id: QuestionName.yaml type: object required: - firstName - lastName examples: - prefix: Dr. firstName: Jane middleName: Edward lastName: Doe suffix: Jr. x-ui-schema: type: Group label: Name elements: - type: Control scope: '#/properties/prefix' label: Prefix - type: Control scope: '#/properties/firstName' label: First Name - type: Control scope: '#/properties/middleName' label: Middle Name - type: Control scope: '#/properties/lastName' label: Last Name - type: Control scope: '#/properties/suffix' label: Suffix x-mapping-to-cg: prefix: field: prefix firstName: field: firstName middleName: field: middleName lastName: field: lastName suffix: field: suffix x-mapping-from-cg: prefix: field: prefix firstName: field: firstName middleName: field: middleName lastName: field: lastName suffix: field: suffix x-tags: - generic - name properties: prefix: description: Honorific prefix $schema: https://json-schema.org/draft/2020-12/schema $id: NamePrefix.yaml type: string enum: - Mr. - Ms. - Mrs. - Dr. - Prof. firstName: type: string description: First or given name middleName: type: string description: Middle name lastName: type: string description: Last or family name suffix: description: Name suffix $schema: https://json-schema.org/draft/2020-12/schema $id: NameSuffix.yaml type: string enum: - Jr. - Sr. - II - III - IV - Ph.D. - M.D. - Esq. title: type: string examples: - Executive Director description: The contact's job title or role address: description: The contact's mailing address $schema: https://json-schema.org/draft/2020-12/schema $id: QuestionAddress.yaml type: object required: - street1 - city - state - country - postalCode examples: - street1: 456 Main St street2: Suite 100 city: Anytown state: CA country: US postalCode: '12345' x-ui-schema: type: Group label: Address elements: - type: Control scope: '#/properties/street1' label: Street Address (Line 1) - type: Control scope: '#/properties/street2' label: Street Address (Line 2) - type: Control scope: '#/properties/city' label: City - type: Control scope: '#/properties/state' label: State - type: Control scope: '#/properties/stateOrProvince' label: State or Province rule: effect: SHOW condition: scope: '#/properties/state' schema: pattern: ^Outside the US$ - type: Control scope: '#/properties/country' label: Country - type: Control scope: '#/properties/postalCode' label: Postal Code x-mapping-to-cg: street1: field: street1 street2: field: street2 city: field: city stateOrProvince: field: state country: field: country postalCode: field: postalCode x-mapping-from-cg: street1: field: street1 street2: field: street2 city: field: city state: field: stateOrProvince country: field: country postalCode: field: postalCode x-tags: - generic - address properties: street1: type: string description: The primary street address line street2: type: string description: Additional street address information city: type: string description: The city or municipality state: description: The US state, territory, or "Outside the US" $schema: https://json-schema.org/draft/2020-12/schema $id: USState.yaml type: string enum: - AL - AK - AZ - AR - CA - CO - CT - DE - FL - GA - HI - ID - IL - IN - IA - KS - KY - LA - ME - MD - MA - MI - MN - MS - MO - MT - NE - NV - NH - NJ - NM - NY - NC - ND - OH - OK - OR - PA - RI - SC - SD - TN - TX - UT - VT - VA - WA - WV - WI - WY - DC - AS - GU - MP - PR - VI - Outside the US stateOrProvince: type: string description: State or province name (for non-US addresses) country: type: string description: The country postalCode: type: string description: The postal or ZIP code phone: description: The contact's phone number $schema: https://json-schema.org/draft/2020-12/schema $id: QuestionPhone.yaml type: object examples: - countryCode: '+1' number: 444-456-1230 isMobile: true - countryCode: '+1' number: 555-123-4567 extension: '123' isMobile: false x-ui-schema: type: Group label: Phone Number elements: - type: Control scope: '#/properties/countryCode' label: Country Code - type: Control scope: '#/properties/number' label: Phone Number - type: Control scope: '#/properties/extension' label: Extension - type: Control scope: '#/properties/isMobile' label: Is Mobile? x-mapping-to-cg: countryCode: field: countryCode number: field: number extension: field: extension isMobile: field: isMobile x-mapping-from-cg: countryCode: field: countryCode number: field: number extension: field: extension isMobile: field: isMobile x-tags: - generic - phone required: - countryCode - number properties: countryCode: type: string pattern: ^\+[1-9][0-9]{0,3}$ description: The international country code (e.g., "+1" for US/Canada). number: type: string description: The local phone number without the country code. extension: type: string description: Optional extension number for the phone line. isMobile: type: boolean default: false description: Indicates whether this is a mobile/cell phone number. email: description: The contact's email address $schema: https://json-schema.org/draft/2020-12/schema $id: email.yaml type: string examples: - test@example.com format: emailUI Schema
Describes how to present the question in the form UI.
{ "type": "Group", "label": "Primary Point of Contact Details", "elements": [ { "type": "Group", "label": "Name", "elements": [ { "type": "Control", "scope": "#/properties/name/properties/prefix", "label": "Prefix" }, { "type": "Control", "scope": "#/properties/name/properties/firstName", "label": "First Name" }, { "type": "Control", "scope": "#/properties/name/properties/middleName", "label": "Middle Name" }, { "type": "Control", "scope": "#/properties/name/properties/lastName", "label": "Last Name" }, { "type": "Control", "scope": "#/properties/name/properties/suffix", "label": "Suffix" } ] }, { "type": "Control", "scope": "#/properties/title", "label": "Job Title" }, { "type": "Group", "label": "Mailing Address", "elements": [ { "type": "Control", "scope": "#/properties/address/properties/street1", "label": "Street Address (Line 1)" }, { "type": "Control", "scope": "#/properties/address/properties/street2", "label": "Street Address (Line 2)" }, { "type": "Control", "scope": "#/properties/address/properties/city", "label": "City" }, { "type": "Control", "scope": "#/properties/address/properties/state", "label": "State" }, { "type": "Control", "scope": "#/properties/address/properties/country", "label": "Country" }, { "type": "Control", "scope": "#/properties/address/properties/postalCode", "label": "Postal Code" } ] }, { "type": "Group", "label": "Phone Number", "elements": [ { "type": "Control", "scope": "#/properties/phone/properties/countryCode", "label": "Country Code" }, { "type": "Control", "scope": "#/properties/phone/properties/number", "label": "Phone Number" }, { "type": "Control", "scope": "#/properties/phone/properties/extension", "label": "Extension" }, { "type": "Control", "scope": "#/properties/phone/properties/isMobile", "label": "Is Mobile?" } ] }, { "type": "Control", "scope": "#/properties/email", "label": "Email Address" } ]}Mapping to CommonGrants
How to translate this question into the CommonGrants ProposalBase data model.
{ "contacts": { "primary": { "name": { "prefix": { "field": "name.prefix" }, "firstName": { "field": "name.firstName" }, "middleName": { "field": "name.middleName" }, "lastName": { "field": "name.lastName" }, "suffix": { "field": "name.suffix" } }, "title": { "field": "title" }, "addresses": { "primary": { "street1": { "field": "address.street1" }, "street2": { "field": "address.street2" }, "city": { "field": "address.city" }, "stateOrProvince": { "field": "address.state" }, "country": { "field": "address.country" }, "postalCode": { "field": "address.postalCode" } } }, "phones": { "primary": { "countryCode": { "field": "phone.countryCode" }, "number": { "field": "phone.number" }, "extension": { "field": "phone.extension" }, "isMobile": { "field": "phone.isMobile" } } }, "emails": { "primary": { "field": "email" } } } }}Mapping from CommonGrants
How to pre-fill this question with data from the ProposalBase data model.
{ "name": { "prefix": { "field": "contacts.primary.name.prefix" }, "firstName": { "field": "contacts.primary.name.firstName" }, "middleName": { "field": "contacts.primary.name.middleName" }, "lastName": { "field": "contacts.primary.name.lastName" }, "suffix": { "field": "contacts.primary.name.suffix" } }, "title": { "field": "contacts.primary.title" }, "address": { "street1": { "field": "contacts.primary.addresses.primary.street1" }, "street2": { "field": "contacts.primary.addresses.primary.street2" }, "city": { "field": "contacts.primary.addresses.primary.city" }, "state": { "field": "contacts.primary.addresses.primary.stateOrProvince" }, "country": { "field": "contacts.primary.addresses.primary.country" }, "postalCode": { "field": "contacts.primary.addresses.primary.postalCode" } }, "phone": { "countryCode": { "field": "contacts.primary.phones.primary.countryCode" }, "number": { "field": "contacts.primary.phones.primary.number" }, "extension": { "field": "contacts.primary.phones.primary.extension" }, "isMobile": { "field": "contacts.primary.phones.primary.isMobile" } }, "email": { "field": "contacts.primary.emails.primary" }}