Last Updated:
This document serves as the authoritative source of truth for the design decisions, technical agreements, and implementation details related to the VA.gov VA Profile integration with a slight emphasis on VA Profile ContactInformationV2 and AddressValidationV3 API integrations. The document's purpose is to provide clarity for current and future technical stakeholders, reduce ambiguity during future iterations or migrations, and ensure that lessons learned and key decisions are well documented for reference. We also aim to ensure that the officially stated agreements (ICD) are captured in one place so that all involved parties have a consistent and reliable point of reference.
Intake Process
The VA Profile intake and onboarding process often involves obtaining a new API key, or enabling the new API versions under the existing API key. The VA Profile team has recommended splitting API keys for the monolith, as the current approach uses a single shared key for all VFS teams and Platform, which limits permission granularity. The existing permissions model defaults to the highest access level required by any consumer, reducing our ability to tailor access based on specific use cases from a security perspective.
Getting Started
Here are the getting started docs (only available on the VA Network). We initially reached out to the VA Profile team via email under the assumption that the intake form had to be obtained through email.
ICD Form
The official ICD (Interface Control Document) is a formal document that defines the interface between VA.gov and VA Profile. It ensures both sides agree on how they communicate with one another. The ICD can be found here.
Note: The ICD is stored in a sensitive VA Github repo and specific Github access is required.
Configuration Specifics
Lighthouse vs Direct integration
AddressValidationV3
Address validation requests flow directly through the Kong gateway through Lighthouse. Our Source System is set as VETSGOV via the Lighthouse team, which was just updated to match the Vets API direct connect API key sourceSystemUser of VETSGOV (previously they deviated). The VA Profile team is working on getting these identifiers to match for each system type. Lighthouse has the ability to distinguish between various sourceSystemUser types vs Vets API where we make requests as one entity.
ContactInformationV2
For CIv2, Vets API makes direct calls to VA Profile rather than routing through Lighthouse. While there was a broader effort to expose VA Profile APIs through Lighthouse (See Lighthouse migration Playbook), this particular VA Profile integration from the EVSS PCIU sunsetting was not included. Integrating through Lighthouse can act as a black box for the Platform team and once traffic leaves our network, we lose visibility and control, though it does reduce the need for us to manage the integration directly. In this case, however, we own and manage the integration end to end from revproxy to fwdproxy, giving us greater transparency and oversight.
ICN vs VA Profile ID
While VAProfile_ID may be preferred, this preference is not currently reflected in the official VA Profile Swagger documentation for Address Validation and Contact Information (docs only available on the VA Network).
The VA Profile recommended using the vaprofile_id instead of the Veteran ICN. In our current design, we typically fall back to the ICN if the vaprofile_id is unavailable. The vaprofile_id (technically called vet360_id per legacy naming convention) is cached on the Vets API side on the User RedisStore model, while the ICN is saved to the user accounts record during the authentication process. It may be worth considering storing the vaprofile_id with the user accounts record as well, rather than relying solely on caching.
Specific Identifiers
As with many new API versions, changes were introduced to identifiers, parameters, and other fields.
Source System
As mentioned elsewhere, Vets API is currently treated as a single source system entity to VA Profile and shares a common source system user (VETSGOV seen here). A ticket has been created to explore separating these into distinct components per product/team.
ICN vs Other Identifiers
According to the VA Profile API documentation, there are several acceptable identifiers available. Vets API defaults to the VA Profile ID and falls back to ICN. However, VA Profile ID is currently the preferred option, stated by the VA Profile team.
Override/Validation Key
In this case, the validation key name was updated between versions, and corresponding changes were made across both the frontend and backend repositories.
Address Validation
With the move to the AddressValidationV3 API, the address_pou parameter changed from RESIDENCE/CHOICE to RESIDENCE.
Override/Validation key
-
The
validationKeyandoverrideIndicatorwas deprecated with CIV2. CIV2 only requires theoverride_validation_keyfor overriding addresses.
Testing Requirements
The VA Profile team provided a comprehensive set of testing scenarios, including edge cases, to ensure full coverage on our end. These scenarios were used during the live testing session and also served as the foundation for a template (example in the ticket here) that the other VFS teams adopted for their own testing. Meeting these specific scenarios was a critical stakeholder requirement as part of the VA Profile intake process.
TX_AUDIT_ID
For testing and traceability, requests/responses include an TX_AUDIT_ID that allows them to track requests and responses between VA.gov and VA Profile. This has been extremely helpful for debugging. The transaction_id is used to track when email, addresses, and phone numbers have been successfully updated in ContactInformationV2 or if the transaction was denied.
Dashboards
This is the current AddressValidation & Contact Information monitoring dashboard in Datadog. To access this dashboard, Datadog access is required.
Go/No-Go
An example of the go/no-go process can be found here. This is required by VA Profile stakeholders for onboarding to VA Profile APIs.
API Documentation
There are more Swagger references on the VA Profile getting started page, but the following links are the ones in use for the EVSS/PCIU to VA Profile migration.
The VA Profile docs are only available on the VA Network.
Points of Contact
For further details, see the ICD as this will have the most up to date contact information.
Next Up
-
Mailing Address/Home Address Bug (VFS owned)
-
International Phone modifications
-
Caching
-
Calls to obtain multiple bios vs a reduction in calls
-
http://VA.gov/Vets API using the same API key and SourceSystemUser for all integrations/VFS teams
Current Issues
-
The VA Profile team has observed that a single UI interaction from VA.gov (such as a phone or address update) can result in multiple calls, tracked by the same
tx_audit_id. In some instances, this includes one push followed by two pull operations. -
Issues with mobile phone (VFS Owned)
-
Validation key expiration (Related to Mailing Address/Home Address Bug) (VFS Owned)
-
Duplication of front end transaction status requests to VAProfile (VFS Owned)
Help and feedback
-
Get help from the Platform Support Team in Slack.
-
Submit a feature idea to the Platform.