diff --git a/.github/CODEOWNERS b/.github/CODEOWNERS index 6ec7d621946..8a2edf8c75f 100644 --- a/.github/CODEOWNERS +++ b/.github/CODEOWNERS @@ -362,6 +362,7 @@ app/policies/mpi_policy.rb @department-of-veterans-affairs/octo-identity app/policies/ppiu_policy.rb @department-of-veterans-affairs/vfs-authenticated-experience-backend @department-of-veterans-affairs/va-api-engineers @department-of-veterans-affairs/backend-review-group app/policies/vet360_policy.rb @department-of-veterans-affairs/vfs-authenticated-experience-backend @department-of-veterans-affairs/va-api-engineers @department-of-veterans-affairs/backend-review-group app/policies/va_profile_policy.rb @department-of-veterans-affairs/vfs-authenticated-experience-backend @department-of-veterans-affairs/va-api-engineers @department-of-veterans-affairs/backend-review-group +app/policies/vye_policy.rb @department-of-veterans-affairs/govcio-vfep-codereviewers @department-of-veterans-affairs/backend-review-group app/serializers/appointment_serializer.rb @department-of-veterans-affairs/vfs-vaos @department-of-veterans-affairs/va-api-engineers @department-of-veterans-affairs/backend-review-group app/serializers/async_transaction @department-of-veterans-affairs/vfs-authenticated-experience-backend @department-of-veterans-affairs/va-api-engineers @department-of-veterans-affairs/backend-review-group app/serializers/async_transaction/base_serializer.rb @department-of-veterans-affairs/vfs-authenticated-experience-backend @department-of-veterans-affairs/va-api-engineers @department-of-veterans-affairs/backend-review-group @@ -630,6 +631,7 @@ app/sidekiq/evss/delete_old_claims.rb @department-of-veterans-affairs/mbs-core-t app/sidekiq/evss/dependents_application_job.rb @department-of-veterans-affairs/benefits-dependents-management @department-of-veterans-affairs/va-api-engineers @department-of-veterans-affairs/backend-review-group app/sidekiq/evss/disability_compensation_form @department-of-veterans-affairs/Disability-Experience @department-of-veterans-affairs/va-api-engineers @department-of-veterans-affairs/backend-review-group app/sidekiq/evss/document_upload.rb @department-of-veterans-affairs/benefits-management-tools-be @department-of-veterans-affairs/backend-review-group +app/sidekiq/evss/failure_notification.rb @department-of-veterans-affairs/benefits-management-tools-be @department-of-veterans-affairs/va-api-engineers @department-of-veterans-affairs/backend-review-group @department-of-veterans-affairs/benefits-management-tools-be app/sidekiq/evss/disability_compensation_form/form526_document_upload_failure_email.rb @department-of-veterans-affairs/Disability-Experience @department-of-veterans-affairs/va-api-engineers @department-of-veterans-affairs/backend-review-group app/sidekiq/evss/retrieve_claims_from_remote_job.rb @department-of-veterans-affairs/benefits-management-tools-be @department-of-veterans-affairs/va-api-engineers @department-of-veterans-affairs/backend-review-group app/sidekiq/evss/request_decision.rb @department-of-veterans-affairs/benefits-management-tools-be @department-of-veterans-affairs/va-api-engineers @department-of-veterans-affairs/backend-review-group @@ -656,6 +658,7 @@ app/sidekiq/lighthouse @department-of-veterans-affairs/backend-review-group app/sidekiq/lighthouse/submit_career_counseling_job.rb @department-of-veterans-affairs/my-education-benefits @department-of-veterans-affairs/va-api-engineers @department-of-veterans-affairs/backend-review-group app/sidekiq/lighthouse/create_intent_to_file_job.rb @department-of-veterans-affairs/pension-and-burials @department-of-veterans-affairs/backend-review-group app/sidekiq/lighthouse/income_and_assets_intake_job.rb @department-of-veterans-affairs/pension-and-burials @department-of-veterans-affairs/backend-review-group +app/sidekiq/lighthouse/failure_notification.rb @department-of-veterans-affairs/va-api-engineers @department-of-veterans-affairs/backend-review-group @department-of-veterans-affairs/benefits-management-tools-be app/sidekiq/load_average_days_for_claim_completion_job.rb @department-of-veterans-affairs/benefits-microservices @department-of-veterans-affairs/va-api-engineers @department-of-veterans-affairs/backend-review-group app/sidekiq/mhv @department-of-veterans-affairs/vfs-mhv-medical-records @department-of-veterans-affairs/va-api-engineers @department-of-veterans-affairs/backend-review-group app/sidekiq/mhv/account_creator_job.rb @department-of-veterans-affairs/octo-identity @@ -702,8 +705,7 @@ config/form_profile_mappings/21-526EZ.yml @department-of-veterans-affairs/Disabi config/form_profile_mappings/21-686C.yml @department-of-veterans-affairs/Disability-Experience @department-of-veterans-affairs/va-api-engineers @department-of-veterans-affairs/backend-review-group config/form_profile_mappings/21P-527EZ.yml @department-of-veterans-affairs/pension-and-burials @department-of-veterans-affairs/backend-review-group config/form_profile_mappings/21P-0969.yml @department-of-veterans-affairs/pension-and-burials @department-of-veterans-affairs/backend-review-group -config/form_profile_mappings/21P-530.yml @department-of-veterans-affairs/disability-experience @department-of-veterans-affairs/va-api-engineers @department-of-veterans-affairs/backend-review-group -config/form_profile_mappings/21P-530V2.yml @department-of-veterans-affairs/disability-experience @department-of-veterans-affairs/va-api-engineers @department-of-veterans-affairs/backend-review-group +config/form_profile_mappings/21P-530EZ.yml @department-of-veterans-affairs/disability-experience @department-of-veterans-affairs/va-api-engineers @department-of-veterans-affairs/backend-review-group config/form_profile_mappings/21-22.yml @department-of-veterans-affairs/accredited-representation-management @department-of-veterans-affairs/backend-review-group config/form_profile_mappings/21-22A.yml @department-of-veterans-affairs/accredited-representation-management @department-of-veterans-affairs/backend-review-group config/form_profile_mappings/22-0993.yml @department-of-veterans-affairs/govcio-vfep-codereviewers @department-of-veterans-affairs/va-api-engineers @department-of-veterans-affairs/backend-review-group @@ -962,10 +964,8 @@ lib/pdf_fill/forms/pdfs/28-1900.pdf @department-of-veterans-affairs/benefits-non lib/pdf_fill/forms/va281900.rb @department-of-veterans-affairs/benefits-non-disability @department-of-veterans-affairs/va-api-engineers @department-of-veterans-affairs/backend-review-group lib/pdf_fill/forms/pdfs/28-8832.pdf @department-of-veterans-affairs/benefits-non-disability @department-of-veterans-affairs/va-api-engineers @department-of-veterans-affairs/backend-review-group lib/pdf_fill/forms/va288832.rb @department-of-veterans-affairs/benefits-non-disability @department-of-veterans-affairs/va-api-engineers @department-of-veterans-affairs/backend-review-group -lib/pdf_fill/forms/pdfs/21P-530.pdf @department-of-veterans-affairs/benefits-non-disability @department-of-veterans-affairs/va-api-engineers @department-of-veterans-affairs/backend-review-group -lib/pdf_fill/forms/va21p530.rb @department-of-veterans-affairs/benefits-non-disability @department-of-veterans-affairs/va-api-engineers @department-of-veterans-affairs/backend-review-group -lib/pdf_fill/forms/pdfs/21P-530V2.pdf @department-of-veterans-affairs/benefits-non-disability @department-of-veterans-affairs/va-api-engineers @department-of-veterans-affairs/backend-review-group -lib/pdf_fill/forms/va21p530v2.rb @department-of-veterans-affairs/benefits-non-disability @department-of-veterans-affairs/va-api-engineers @department-of-veterans-affairs/backend-review-group +lib/pdf_fill/forms/pdfs/21P-530EZ.pdf @department-of-veterans-affairs/benefits-non-disability @department-of-veterans-affairs/va-api-engineers @department-of-veterans-affairs/backend-review-group +lib/pdf_fill/forms/va21p530ez.rb @department-of-veterans-affairs/benefits-non-disability @department-of-veterans-affairs/va-api-engineers @department-of-veterans-affairs/backend-review-group lib/pdf_fill/forms/pdfs/686C-674.pdf @department-of-veterans-affairs/benefits-dependents-management @department-of-veterans-affairs/va-api-engineers @department-of-veterans-affairs/backend-review-group lib/pdf_fill/forms/va686c674.rb @department-of-veterans-affairs/benefits-dependents-management @department-of-veterans-affairs/va-api-engineers @department-of-veterans-affairs/backend-review-group lib/pdf_fill/forms/pdfs/21-674.pdf @department-of-veterans-affairs/benefits-dependents-management @department-of-veterans-affairs/va-api-engineers @department-of-veterans-affairs/backend-review-group @@ -1025,6 +1025,7 @@ lib/virtual_regional_office @department-of-veterans-affairs/va-api-engineers @de lib/vre @department-of-veterans-affairs/benefits-non-disability @department-of-veterans-affairs/va-api-engineers @department-of-veterans-affairs/backend-review-group lib/res @department-of-veterans-affairs/benefits-non-disability @department-of-veterans-affairs/va-api-engineers @department-of-veterans-affairs/backend-review-group lib/va_notify @department-of-veterans-affairs/pension-and-burials @department-of-veterans-affairs/va-api-engineers @department-of-veterans-affairs/backend-review-group +lib/vye @department-of-veterans-affairs/backend-review-group @department-of-veterans-affairs/govcio-vfep-codereviewers lib/webhooks @department-of-veterans-affairs/va-api-engineers @department-of-veterans-affairs/backend-review-group lib/zero_silent_failures @department-of-veterans-affairs/va-api-engineers @department-of-veterans-affairs/backend-review-group modules/accredited_representative_portal @department-of-veterans-affairs/benefits-accredited-rep-facing-engineers @department-of-veterans-affairs/backend-review-group @@ -1065,7 +1066,7 @@ modules/veteran @department-of-veterans-affairs/lighthouse-dash @department-of-v modules/pensions @department-of-veterans-affairs/pension-and-burials @department-of-veterans-affairs/backend-review-group modules/veteran_confirmation @department-of-veterans-affairs/lighthouse-ninjapigs @department-of-veterans-affairs/va-api-engineers @department-of-veterans-affairs/backend-review-group modules/travel_pay @department-of-veterans-affairs/travel-pay-integration @department-of-veterans-affairs/backend-review-group -modules/vye @department-of-veterans-affairs/backend-review-group #@department-of-veterans-affairs/govcio-vye-codereviewers +modules/vye @department-of-veterans-affairs/backend-review-group @department-of-veterans-affairs/govcio-vfep-codereviewers modules/decision_reviews @department-of-veterans-affairs/benefits-decision-reviews-be @department-of-veterans-affairs/backend-review-group postman/vets-api.pm-collection.json @department-of-veterans-affairs/backend-review-group postman/Dockerfile @department-of-veterans-affairs/backend-review-group @@ -1323,10 +1324,11 @@ spec/fixtures/okta @department-of-veterans-affairs/lighthouse-pivot spec/fixtures/okta/okta_callback_request_idme_1567760195.json @department-of-veterans-affairs/lighthouse-pivot spec/fixtures/pdf_fill @department-of-veterans-affairs/va-api-engineers @department-of-veterans-affairs/backend-review-group spec/fixtures/pdf_fill/10-10CG @department-of-veterans-affairs/vfs-10-10 @department-of-veterans-affairs/va-api-engineers @department-of-veterans-affairs/backend-review-group +spec/fixtures/pdf_fill/21-0781V2 @department-of-veterans-affairs/Disability-Experience @department-of-veterans-affairs/va-api-engineers @department-of-veterans-affairs/backend-review-group spec/fixtures/pdf_fill/21-674 @department-of-veterans-affairs/benefits-dependents-management @department-of-veterans-affairs/va-api-engineers @department-of-veterans-affairs/backend-review-group spec/fixtures/pdf_fill/21P-0969 @department-of-veterans-affairs/pension-and-burials @department-of-veterans-affairs/backend-review-group -spec/fixtures/pdf_fill/21P-530 @department-of-veterans-affairs/benefits-non-disability @department-of-veterans-affairs/va-api-engineers @department-of-veterans-affairs/backend-review-group -spec/fixtures/pdf_fill/21P-530V2 @department-of-veterans-affairs/benefits-non-disability @department-of-veterans-affairs/va-api-engineers @department-of-veterans-affairs/backend-review-group +spec/fixtures/pdf_fill/21P-530EZ @department-of-veterans-affairs/benefits-non-disability @department-of-veterans-affairs/va-api-engineers @department-of-veterans-affairs/backend-review-group +spec/fixtures/pdf_fill/26-1880 @department-of-veterans-affairs/va-api-engineers @department-of-veterans-affairs/backend-review-group spec/fixtures/pdf_fill/28-1900 @department-of-veterans-affairs/benefits-non-disability @department-of-veterans-affairs/va-api-engineers @department-of-veterans-affairs/backend-review-group spec/fixtures/pdf_fill/28-8832 @department-of-veterans-affairs/benefits-non-disability @department-of-veterans-affairs/va-api-engineers @department-of-veterans-affairs/backend-review-group spec/fixtures/pdf_fill/5655 @department-of-veterans-affairs/vsa-debt-resolution @@ -1340,6 +1342,7 @@ spec/fixtures/supplemental_claims @department-of-veterans-affairs/benefits-decis spec/fixtures/va_profile @department-of-veterans-affairs/vfs-authenticated-experience-backend @department-of-veterans-affairs/va-api-engineers @department-of-veterans-affairs/backend-review-group spec/fixtures/vba_documents @department-of-veterans-affairs/lighthouse-banana-peels @department-of-veterans-affairs/va-api-engineers @department-of-veterans-affairs/backend-review-group spec/fixtures/vbms @department-of-veterans-affairs/benefits-dependents-management @department-of-veterans-affairs/va-api-engineers @department-of-veterans-affairs/backend-review-group +spec/lib/vye @department-of-veterans-affairs/backend-review-group @department-of-veterans-affairs/govcio-vfep-codereviewers spec/sidekiq/account_login_statistics_job_spec.rb @department-of-veterans-affairs/octo-identity spec/sidekiq/benefits_intake_status_job_spec.rb @department-of-veterans-affairs/platform-va-product-forms @department-of-veterans-affairs/Disability-Experience @department-of-veterans-affairs/va-api-engineers @department-of-veterans-affairs/backend-review-group spec/sidekiq/bgs @department-of-veterans-affairs/va-api-engineers @department-of-veterans-affairs/backend-review-group @department-of-veterans-affairs/benefits-dependents-management @@ -1362,6 +1365,7 @@ spec/sidekiq/evss/disability_compensation_form/submit_form8940_spec.rb @departme spec/sidekiq/evss/disability_compensation_form/submit_uploads_spec.rb @department-of-veterans-affairs/Disability-Experience @department-of-veterans-affairs/va-api-engineers @department-of-veterans-affairs/backend-review-group spec/sidekiq/evss/disability_compensation_form/upload_bdd_instructions_spec.rb @department-of-veterans-affairs/Disability-Experience @department-of-veterans-affairs/va-api-engineers @department-of-veterans-affairs/backend-review-group spec/sidekiq/evss/document_upload_spec.rb @department-of-veterans-affairs/benefits-management-tools-be @department-of-veterans-affairs/va-api-engineers @department-of-veterans-affairs/backend-review-group +spec/sidekiq/evss/failure_notification_spec.rb @department-of-veterans-affairs/va-api-engineers @department-of-veterans-affairs/backend-review-group @department-of-veterans-affairs/benefits-management-tools-be spec/sidekiq/evss/retrieve_claims_from_remote_job_spec.rb @department-of-veterans-affairs/benefits-management-tools-be @department-of-veterans-affairs/va-api-engineers @department-of-veterans-affairs/backend-review-group spec/sidekiq/evss/update_claim_from_remote_job_spec.rb @department-of-veterans-affairs/benefits-management-tools-be @department-of-veterans-affairs/va-api-engineers @department-of-veterans-affairs/backend-review-group spec/sidekiq/export_breaker_status_spec.rb @department-of-veterans-affairs/va-api-engineers @department-of-veterans-affairs/backend-review-group @@ -1382,6 +1386,7 @@ spec/sidekiq/income_limits @department-of-veterans-affairs/vfs-public-websites-f spec/sidekiq/in_progress_form_cleaner_spec.rb @department-of-veterans-affairs/vfs-authenticated-experience-backend @department-of-veterans-affairs/va-api-engineers @department-of-veterans-affairs/backend-review-group spec/sidekiq/kms_key_rotation @department-of-veterans-affairs/va-api-engineers @department-of-veterans-affairs/backend-review-group spec/sidekiq/lighthouse @department-of-veterans-affairs/va-api-engineers @department-of-veterans-affairs/backend-review-group +spec/sidekiq/lighthouse/failure_notification_spec.rb @department-of-veterans-affairs/va-api-engineers @department-of-veterans-affairs/backend-review-group @department-of-veterans-affairs/benefits-management-tools-be spec/sidekiq/load_average_days_for_claim_completion_job_spec.rb @department-of-veterans-affairs/benefits-microservices @department-of-veterans-affairs/va-api-engineers @department-of-veterans-affairs/backend-review-group spec/sidekiq/mhv @department-of-veterans-affairs/vfs-mhv-medical-records @department-of-veterans-affairs/va-api-engineers @department-of-veterans-affairs/backend-review-group spec/sidekiq/mhv/account_creator_job_spec.rb @department-of-veterans-affairs/octo-identity @@ -1497,6 +1502,7 @@ spec/lib/pdf_info/metadata_spec.rb @department-of-veterans-affairs/va-api-engine spec/lib/pdf_utilities @department-of-veterans-affairs/va-api-engineers @department-of-veterans-affairs/backend-review-group spec/lib/pension_burial @department-of-veterans-affairs/mbs-core-team @department-of-veterans-affairs/va-api-engineers @department-of-veterans-affairs/backend-review-group spec/lib/pension21p527ez/pension_military_information_spec.rb @department-of-veterans-affairs/pension-and-burials @department-of-veterans-affairs/va-api-engineers @department-of-veterans-affairs/backend-review-group +spec/lib/periodic_jobs_spec.rb @department-of-veterans-affairs/govcio-vfep-codereviewers @department-of-veterans-affairs/backend-review-group spec/lib/preneeds @department-of-veterans-affairs/mbs-core-team @department-of-veterans-affairs/va-api-engineers @department-of-veterans-affairs/backend-review-group spec/lib/post911_sob @department-of-veterans-affairs/govcio-vfep-codereviewers @department-of-veterans-affairs/va-api-engineers @department-of-veterans-affairs/backend-review-group spec/lib/rx @department-of-veterans-affairs/vfs-mhv-medications @@ -2141,6 +2147,7 @@ spec/swagger_helper.rb @department-of-veterans-affairs/va-api-engineers @departm spec/uploaders/evss_claim_document_uploader_base_spec.rb @department-of-veterans-affairs/vfs-authenticated-experience-backend @department-of-veterans-affairs/va-api-engineers @department-of-veterans-affairs/backend-review-group spec/uploaders/evss_claim_document_uploader_spec.rb @department-of-veterans-affairs/vfs-authenticated-experience-backend @department-of-veterans-affairs/va-api-engineers @department-of-veterans-affairs/backend-review-group spec/uploaders/form1010cg @department-of-veterans-affairs/vfs-10-10 @department-of-veterans-affairs/va-api-engineers @department-of-veterans-affairs/backend-review-group +spec/uploaders/hca_attachment_uploader_spec.rb @department-of-veterans-affairs/vfs-10-10 @department-of-veterans-affairs/va-api-engineers @department-of-veterans-affairs/backend-review-group spec/uploaders/form1010cg/poa_uploader_spec.rb @department-of-veterans-affairs/vfs-10-10 @department-of-veterans-affairs/va-api-engineers @department-of-veterans-affairs/backend-review-group spec/uploaders/supporting_evidence_attachment_uploader_spec.rb @department-of-veterans-affairs/Disability-Experience @department-of-veterans-affairs/va-api-engineers @department-of-veterans-affairs/backend-review-group spec/uploaders/uploader_virus_scan_spec.rb @department-of-veterans-affairs/va-api-engineers @department-of-veterans-affairs/backend-review-group diff --git a/.github/workflows/build_atlas_codeowners.yml b/.github/workflows/build_atlas_codeowners.yml index a4a4ded0851..989268bf202 100644 --- a/.github/workflows/build_atlas_codeowners.yml +++ b/.github/workflows/build_atlas_codeowners.yml @@ -45,6 +45,6 @@ jobs: destination_repo: 'department-of-veterans-affairs/platform-atlas' destination_folder: '/lib/codeowners/vets-api' destination_branch: 'master' - user_email: 'devops@va.gov' + user_email: '70344339+va-vsp-bot@users.noreply.github.com' user_name: 'va-vsp-bot' commit_message: 'Auto update Atlas with Vets-API CODEOWNERS' diff --git a/.github/workflows/deploy-template.yml b/.github/workflows/deploy-template.yml index 7f51b19fb9a..39e9b4cd52d 100644 --- a/.github/workflows/deploy-template.yml +++ b/.github/workflows/deploy-template.yml @@ -101,5 +101,5 @@ jobs: add: "*" cwd: vsp-infra-application-manifests/apps author_name: va-vsp-bot - author_email: devops@va.gov + author_email: 70344339+va-vsp-bot@users.noreply.github.com message: "Release ${{ needs.prepare-values.outputs.environments }} for ${{inputs.ecr_repository}} : ${{ inputs.commit_sha }}." diff --git a/.rubocop_todo.yml b/.rubocop_todo.yml index 2d355a5b986..be760d9fbad 100644 --- a/.rubocop_todo.yml +++ b/.rubocop_todo.yml @@ -315,6 +315,7 @@ Lint/MissingSuper: - 'modules/va_notify/lib/va_notify/service.rb' - 'modules/vaos/app/services/vaos/session_service.rb' - 'modules/veteran/app/models/veteran/user.rb' + - 'lib/vye/dgib/service.rb' # Offense count: 5 Lint/NoReturnInBeginEndBlocks: diff --git a/Gemfile b/Gemfile index 18a75dd2fc0..c55e94ca519 100644 --- a/Gemfile +++ b/Gemfile @@ -53,6 +53,7 @@ gem 'aws-sdk-s3', '~> 1' gem 'aws-sdk-sns', '~> 1' gem 'betamocks', git: 'https://github.com/department-of-veterans-affairs/betamocks', branch: 'master' gem 'bgs_ext', git: 'https://github.com/department-of-veterans-affairs/bgs-ext.git', require: 'bgs', ref: '350e45ae69' +gem 'blind_index' gem 'blueprinter' gem 'bootsnap', require: false gem 'breakers' @@ -206,6 +207,7 @@ group :development, :test do gem 'byebug', platforms: :ruby # Call 'byebug' anywhere in the code to stop execution and get a debugger console gem 'danger' gem 'database_cleaner' + gem 'debug' gem 'factory_bot_rails' gem 'faker' # CAUTION: faraday_curl may not provide all headers used in the actual faraday request. Be cautious if using this to diff --git a/Gemfile.lock b/Gemfile.lock index e7c65a94b00..4c27f438221 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -74,10 +74,10 @@ GIT GIT remote: https://github.com/department-of-veterans-affairs/vets-json-schema - revision: 3a6965b5d60abdb99dc2d21fcd15784c52a51927 + revision: a84abd360072a0d4aaa8b1984cee2c33e1844335 branch: master specs: - vets_json_schema (24.6.1) + vets_json_schema (24.7.0) multi_json (~> 1.0) script_utils (= 0.0.4) @@ -85,6 +85,7 @@ PATH remote: modules specs: accredited_representative_portal (0.1.0) + blind_index appeals_api (0.0.1) jsonapi-serializer (>= 2.2.0) sidekiq @@ -240,11 +241,12 @@ GEM base64 gyoku (>= 0.4.0) nokogiri + argon2-kdf (0.2.0) ast (2.4.2) attr_extras (7.1.0) awesome_print (1.9.2) aws-eventstream (1.3.0) - aws-partitions (1.1019.0) + aws-partitions (1.1022.0) aws-sdk-core (3.214.0) aws-eventstream (~> 1, >= 1.3.0) aws-partitions (~> 1, >= 1.992.0) @@ -253,7 +255,7 @@ GEM aws-sdk-kms (1.96.0) aws-sdk-core (~> 3, >= 3.210.0) aws-sigv4 (~> 1.5) - aws-sdk-s3 (1.173.0) + aws-sdk-s3 (1.176.1) aws-sdk-core (~> 3, >= 3.210.0) aws-sdk-kms (~> 1) aws-sigv4 (~> 1.5) @@ -273,6 +275,9 @@ GEM bigdecimal (3.1.8) bigdecimal (3.1.8-java) bindex (0.8.1) + blind_index (2.6.1) + activesupport (>= 7) + argon2-kdf (>= 0.2) blueprinter (1.1.2) bootsnap (1.18.4) msgpack (~> 1.2) @@ -308,7 +313,7 @@ GEM coercible (1.0.0) descendants_tracker (~> 0.0.1) colored2 (3.1.2) - combine_pdf (1.0.26) + combine_pdf (1.0.29) matrix ruby-rc4 (>= 0.1.5) committee (5.4.0) @@ -370,6 +375,9 @@ GEM libddwaf (~> 1.14.0.0.0) msgpack debase-ruby_core_source (3.3.1) + debug (1.9.2) + irb (~> 1.10) + reline (>= 0.3.8) declarative (0.0.20) deep_merge (1.2.2) descendants_tracker (0.0.4) @@ -526,6 +534,7 @@ GEM thor (>= 0.20, < 2.a) google-cloud-env (2.2.1) faraday (>= 1.0, < 3.a) + google-logging-utils (0.1.0) google-protobuf (4.28.3) bigdecimal rake (>= 13) @@ -534,9 +543,10 @@ GEM ffi (~> 1) ffi-compiler (~> 1) rake (>= 13) - googleauth (1.11.2) + googleauth (1.12.0) faraday (>= 1.0, < 3.a) - google-cloud-env (~> 2.1) + google-cloud-env (~> 2.2) + google-logging-utils (~> 0.1) jwt (>= 1.4, < 3.0) multi_json (~> 1.11) os (>= 0.9, < 2.0) @@ -667,7 +677,8 @@ GEM mini_mime (1.1.5) mini_portile2 (2.8.8) minitest (5.25.4) - mock_redis (0.46.0) + mock_redis (0.49.0) + redis (~> 5) msgpack (1.7.2) msgpack (1.7.2-java) multi_json (1.15.0) @@ -676,7 +687,7 @@ GEM mutex_m (0.3.0) nap (1.1.0) nenv (0.3.0) - net-http (0.4.1) + net-http (0.6.0) uri net-imap (0.5.1) date @@ -961,7 +972,7 @@ GEM rack (>= 1.1) rubocop (>= 1.52.0, < 2.0) rubocop-ast (>= 1.31.1, < 2.0) - rubocop-rspec (3.2.0) + rubocop-rspec (3.3.0) rubocop (~> 1.61) rubocop-rspec_rails (2.30.0) rubocop (~> 1.61) @@ -1068,7 +1079,7 @@ GEM tzinfo (>= 1.0.0) uber (0.1.0) unicode-display_width (2.6.0) - uri (0.13.1) + uri (1.0.2) useragent (0.16.11) utf8-cleaner (1.0.0) activesupport @@ -1147,6 +1158,7 @@ DEPENDENCIES banners! betamocks! bgs_ext! + blind_index blueprinter bootsnap brakeman @@ -1172,6 +1184,7 @@ DEPENDENCIES date_validator ddtrace debts_api! + debug decision_reviews! dhp_connected_devices! dogstatsd-ruby (= 5.6.3) diff --git a/app/controllers/v0/burial_claims_controller.rb b/app/controllers/v0/burial_claims_controller.rb index c53d7167594..dc2c6232de3 100644 --- a/app/controllers/v0/burial_claims_controller.rb +++ b/app/controllers/v0/burial_claims_controller.rb @@ -25,7 +25,7 @@ def show def create PensionBurial::TagSentry.tag_sentry - claim = create_claim + claim = claim_class.new(form: filtered_params[:form]) monitor.track_create_attempt(claim, current_user) in_progress_form = current_user ? InProgressForm.form_for_user(claim.form_id, current_user) : nil @@ -61,15 +61,6 @@ def claim_class SavedClaim::Burial end - def create_claim - if Flipper.enabled?(:va_burial_v2) - form = filtered_params[:form] - claim_class.new(form:, formV2: form.present? ? JSON.parse(form)['formV2'] : nil) - else - claim_class.new(form: filtered_params[:form]) - end - end - def process_and_upload_to_lighthouse(in_progress_form, claim) claim.process_attachments! diff --git a/app/controllers/v0/claim_documents_controller.rb b/app/controllers/v0/claim_documents_controller.rb index 7258eb78f8a..86449fe0812 100644 --- a/app/controllers/v0/claim_documents_controller.rb +++ b/app/controllers/v0/claim_documents_controller.rb @@ -31,7 +31,7 @@ def create def klass case form_id - when '21P-527EZ', '21P-530', '21P-530V2' + when '21P-527EZ', '21P-530EZ' PensionBurial::TagSentry.tag_sentry PersistentAttachments::PensionBurial when '21-686C', '686C-674' diff --git a/app/controllers/v0/disability_compensation_forms_controller.rb b/app/controllers/v0/disability_compensation_forms_controller.rb index 05715282ffb..eee5dc0b064 100644 --- a/app/controllers/v0/disability_compensation_forms_controller.rb +++ b/app/controllers/v0/disability_compensation_forms_controller.rb @@ -35,9 +35,10 @@ def separation_locations :all_users, :get_separation_locations ) do + provider = Flipper.enabled?(:disability_compensation_staging_lighthouse_brd) ? :lighthouse_staging : nil api_provider = ApiProviderFactory.call( type: ApiProviderFactory::FACTORIES[:brd], - provider: nil, + provider:, options: {}, current_user: @current_user, feature_toggle: ApiProviderFactory::FEATURE_TOGGLE_BRD diff --git a/app/controllers/v0/profile/vet_verification_statuses_controller.rb b/app/controllers/v0/profile/vet_verification_statuses_controller.rb index fcc93710f5d..7f6aed1ca8a 100644 --- a/app/controllers/v0/profile/vet_verification_statuses_controller.rb +++ b/app/controllers/v0/profile/vet_verification_statuses_controller.rb @@ -7,8 +7,7 @@ class VetVerificationStatusesController < ApplicationController before_action { authorize :lighthouse, :access? } def show - access_token = settings.access_token - response = service.get_vet_verification_status(@current_user.icn, access_token.client_id, access_token.rsa_key) + response = service.get_vet_verification_status(@current_user.icn) response['data']['id'] = '' render json: response @@ -19,10 +18,6 @@ def show def service @service ||= VeteranVerification::Service.new end - - def settings - Settings.lighthouse.veteran_verification['status'] - end end end end diff --git a/app/models/form_profile.rb b/app/models/form_profile.rb index b37d108c0c1..3035ef5c188 100644 --- a/app/models/form_profile.rb +++ b/app/models/form_profile.rb @@ -92,7 +92,7 @@ class FormProfile 22-5495 22-0993 22-0994 FEEDBACK-TOOL 22-10203 22-1990S 22-1990EZ], evss: ['21-526EZ'], hca: %w[1010ez 10-10EZR], - pension_burial: %w[21P-530 21P-527EZ 21P-530V2], + pension_burial: %w[21P-530EZ 21P-527EZ], dependents: ['686C-674'], decision_review: %w[20-0995 20-0996 10182], mdot: ['MDOT'], @@ -126,8 +126,7 @@ class FormProfile '22-5490' => ::FormProfiles::VA5490, '22-5490E' => ::FormProfiles::VA5490e, '22-5495' => ::FormProfiles::VA5495, - '21P-530' => ::FormProfiles::VA21p530, - '21P-530V2' => ::FormProfiles::VA21p530v2, + '21P-530EZ' => ::FormProfiles::VA21p530ez, '21-686C' => ::FormProfiles::VA21686c, '686C-674' => ::FormProfiles::VA686c674, '40-10007' => ::FormProfiles::VA4010007, diff --git a/app/models/form_profiles/va_21p530.rb b/app/models/form_profiles/va_21p530.rb deleted file mode 100644 index b21807f1ac5..00000000000 --- a/app/models/form_profiles/va_21p530.rb +++ /dev/null @@ -1,33 +0,0 @@ -# frozen_string_literal: true - -require 'iso_country_codes' - -class FormProfiles::VA21p530 < FormProfile - def metadata - { - version: 0, - prefill: true, - returnUrl: '/claimant-information' - } - end - - def prefill - @identity_information = initialize_identity_information - @contact_information = initialize_contact_information - if @contact_information&.address&.country.present? - @contact_information.address.country = convert_to_iso2(@contact_information.address.country) - end - mappings = self.class.mappings_for_form(form_id) - - form_data = generate_prefill(mappings) if FormProfile.prefill_enabled_forms.include?(form_id) - - { form_data:, metadata: } - end - - private - - def convert_to_iso2(country_code) - code = IsoCountryCodes.find(country_code) - code.alpha2 - end -end diff --git a/app/models/form_profiles/va_21p530v2.rb b/app/models/form_profiles/va_21p530ez.rb similarity index 94% rename from app/models/form_profiles/va_21p530v2.rb rename to app/models/form_profiles/va_21p530ez.rb index b799953dad4..d1e8cc53309 100644 --- a/app/models/form_profiles/va_21p530v2.rb +++ b/app/models/form_profiles/va_21p530ez.rb @@ -2,7 +2,7 @@ require 'iso_country_codes' -class FormProfiles::VA21p530v2 < FormProfile +class FormProfiles::VA21p530ez < FormProfile def metadata { version: 0, diff --git a/app/models/in_progress_form.rb b/app/models/in_progress_form.rb index 47e0acf78ce..9f222cc071c 100644 --- a/app/models/in_progress_form.rb +++ b/app/models/in_progress_form.rb @@ -142,7 +142,7 @@ def days_till_expires def default_expires_after case form_id - when '21-526EZ', '21P-527EZ', '21P-530V2' + when '21-526EZ', '21P-527EZ', '21P-530EZ' 1.year else 60.days diff --git a/app/models/prescription_details.rb b/app/models/prescription_details.rb index 51dd21ba03a..ac495b8c1ec 100644 --- a/app/models/prescription_details.rb +++ b/app/models/prescription_details.rb @@ -31,6 +31,7 @@ class PrescriptionDetails < Prescription attribute :color, String attribute :back_imprint, String attribute :front_imprint, String + attribute :grouped_medications, Array[String] def sorted_dispensed_date has_refills = try(:rx_rf_records).present? diff --git a/app/models/saved_claim.rb b/app/models/saved_claim.rb index d81c8091ef9..ea69a4f6d59 100644 --- a/app/models/saved_claim.rb +++ b/app/models/saved_claim.rb @@ -35,7 +35,7 @@ class SavedClaim < ApplicationRecord # create a uuid for this second (used in the confirmation number) and store # the form type based on the constant found in the subclass. after_initialize do - self.form_id = self.class::FORM.upcase unless instance_of?(::SavedClaim::Burial) + self.form_id = self.class::FORM.upcase end def self.add_form_and_validation(form_id) diff --git a/app/models/saved_claim/burial.rb b/app/models/saved_claim/burial.rb index c1e5d255c66..8d1ecef0c07 100644 --- a/app/models/saved_claim/burial.rb +++ b/app/models/saved_claim/burial.rb @@ -3,18 +3,7 @@ require 'pension_burial/processing_office' class SavedClaim::Burial < SavedClaim - FORM = '21P-530' - - # attribute name is passed from the FE as a flag, maintaining camel case - attr_accessor :formV2 # rubocop:disable Naming/MethodName - - after_initialize do - self.form_id = if Flipper.enabled?(:va_burial_v2) - formV2 || form_id == '21P-530V2' ? '21P-530V2' : self.class::FORM.upcase - else - self.class::FORM.upcase - end - end + FORM = '21P-530EZ' def process_attachments! refs = attachment_keys.map { |key| Array(open_struct_form.send(key)) }.flatten diff --git a/app/policies/vye_policy.rb b/app/policies/vye_policy.rb new file mode 100644 index 00000000000..b07fa2733a8 --- /dev/null +++ b/app/policies/vye_policy.rb @@ -0,0 +1,7 @@ +# frozen_string_literal: true + +VyePolicy = Struct.new(:user, :user_info) do + def access? + user.present? + end +end diff --git a/app/sidekiq/benefits_intake_status_job.rb b/app/sidekiq/benefits_intake_status_job.rb index fe430fff4e2..244eef3dbf1 100644 --- a/app/sidekiq/benefits_intake_status_job.rb +++ b/app/sidekiq/benefits_intake_status_job.rb @@ -139,7 +139,7 @@ def monitor_failure(form_id, saved_claim_id, bi_uuid) } call_location = caller_locations.first - if %w[21P-530V2 21P-530].include?(form_id) + if %w[21P-530EZ].include?(form_id) claim = SavedClaim::Burial.find(saved_claim_id) if claim Burials::NotificationEmail.new(claim.id).deliver(:error) diff --git a/app/sidekiq/evss/document_upload.rb b/app/sidekiq/evss/document_upload.rb index c7151f31050..c8486287b51 100644 --- a/app/sidekiq/evss/document_upload.rb +++ b/app/sidekiq/evss/document_upload.rb @@ -3,6 +3,7 @@ require 'ddtrace' require 'timeout' require 'logging/third_party_transaction' +require 'evss/failure_notification' class EVSS::DocumentUpload include Sidekiq::Job @@ -52,13 +53,9 @@ class EVSS::DocumentUpload date_submitted = format_issue_instant_for_mailers(msg['created_at']) date_failed = format_issue_instant_for_mailers(msg['failed_at']) - notify_client.send_email( - recipient_identifier: { id_value: icn, id_type: 'ICN' }, - template_id: MAILER_TEMPLATE_ID, - personalisation: { first_name:, filename:, date_submitted:, date_failed: } - ) + EVSS::FailureNotification.perform_async(icn, first_name, filename, date_submitted, date_failed) - ::Rails.logger.info('EVSS::DocumentUpload exhaustion handler email sent') + ::Rails.logger.info('EVSS::DocumentUpload exhaustion handler email queued') StatsD.increment('silent_failure_avoided_no_confirmation', tags: DD_ZSF_TAGS) rescue => e ::Rails.logger.error('EVSS::DocumentUpload exhaustion handler email error', @@ -101,10 +98,6 @@ def self.format_issue_instant_for_mailers(issue_instant) timestamp.strftime('%B %-d, %Y %-l:%M %P %Z').sub(/([ap])m/, '\1.m.') end - def self.notify_client - VaNotify::Service.new(NOTIFY_SETTINGS.api_key) - end - private def validate_document! diff --git a/app/sidekiq/evss/failure_notification.rb b/app/sidekiq/evss/failure_notification.rb new file mode 100644 index 00000000000..0fb573acbed --- /dev/null +++ b/app/sidekiq/evss/failure_notification.rb @@ -0,0 +1,38 @@ +# frozen_string_literal: true + +class EVSS::FailureNotification + include Sidekiq::Job + include SentryLogging + + NOTIFY_SETTINGS = Settings.vanotify.services.benefits_management_tools + MAILER_TEMPLATE_ID = NOTIFY_SETTINGS.template_id.evidence_submission_failure_email + + # retry for one day + sidekiq_options retry: 14, queue: 'low' + # Set minimum retry time to ~1 hour + sidekiq_retry_in do |count, _exception| + rand(3600..3660) if count < 9 + end + + sidekiq_retries_exhausted do + ::Rails.logger.info('EVSS::FailureNotification email could not be sent') + end + + def notify_client + VaNotify::Service.new(NOTIFY_SETTINGS.api_key) + end + + def perform(icn, first_name, filename, date_submitted, date_failed) + notify_client.send_email( + recipient_identifier: { id_value: icn, id_type: 'ICN' }, + template_id: MAILER_TEMPLATE_ID, + personalisation: { first_name:, filename:, date_submitted:, date_failed: } + ) + + ::Rails.logger.info('EVSS::FailureNotification email sent') + rescue => e + ::Rails.logger.error('EVSS::FailureNotification email error', + { message: e.message }) + log_exception_to_sentry(e) + end +end diff --git a/app/sidekiq/form1010cg/submission_job.rb b/app/sidekiq/form1010cg/submission_job.rb index 02c3cc5f809..9b8160644d3 100644 --- a/app/sidekiq/form1010cg/submission_job.rb +++ b/app/sidekiq/form1010cg/submission_job.rb @@ -21,10 +21,8 @@ class SubmissionJob StatsD.increment("#{STATSD_KEY_PREFIX}failed_no_retries_left", tags: ["claim_id:#{msg['args'][0]}"]) StatsD.increment('silent_failure_avoided_no_confirmation', tags: DD_ZSF_TAGS) - if Flipper.enabled?(:caregiver_use_va_notify_on_submission_failure) - claim = SavedClaim::CaregiversAssistanceClaim.find(msg['args'][0]) - send_failure_email(claim.parsed_form) if claim.parsed_form.dig('veteran', 'email') - end + claim = SavedClaim::CaregiversAssistanceClaim.find(msg['args'][0]) + send_failure_email(claim) end def retry_limits_for_notification @@ -51,6 +49,9 @@ def perform(claim_id) end rescue CARMA::Client::MuleSoftClient::RecordParseError StatsD.increment("#{STATSD_KEY_PREFIX}record_parse_error", tags: ["claim_id:#{claim_id}"]) + StatsD.increment('silent_failure_avoided_no_confirmation', tags: DD_ZSF_TAGS) + + self.class.send_failure_email(claim) rescue => e log_exception_to_sentry(e) StatsD.increment("#{STATSD_KEY_PREFIX}retries") @@ -58,7 +59,11 @@ def perform(claim_id) raise end - def self.send_failure_email(parsed_form) + def self.send_failure_email(claim) + return unless Flipper.enabled?(:caregiver_use_va_notify_on_submission_failure) + return unless claim.parsed_form.dig('veteran', 'email') + + parsed_form = claim.parsed_form first_name = parsed_form.dig('veteran', 'fullName', 'first') email = parsed_form.dig('veteran', 'email') template_id = Settings.vanotify.services.health_apps_1010.template_id.form1010_cg_failure_email diff --git a/app/sidekiq/hca/log_email_diff_job.rb b/app/sidekiq/hca/log_email_diff_job.rb index b8af859d15f..069b1c348b7 100644 --- a/app/sidekiq/hca/log_email_diff_job.rb +++ b/app/sidekiq/hca/log_email_diff_job.rb @@ -22,9 +22,8 @@ def log_email_difference_redis(in_progress_form_id, user_uuid) parsed_form = JSON.parse(in_progress_form.form_data) form_email = parsed_form['email'] - email_confirmation = parsed_form['view:email_confirmation'] - return if form_email.blank? || form_email != email_confirmation + return if form_email.blank? user = User.find(user_uuid) va_profile_email = user.va_profile_email @@ -45,9 +44,8 @@ def log_email_difference(in_progress_form_id, user_uuid) parsed_form = JSON.parse(in_progress_form.form_data) form_email = parsed_form['email'] - email_confirmation = parsed_form['view:email_confirmation'] - return if form_email.blank? || form_email != email_confirmation + return if form_email.blank? user = User.find(user_uuid) va_profile_email = user.va_profile_email diff --git a/app/sidekiq/lighthouse/create_intent_to_file_job.rb b/app/sidekiq/lighthouse/create_intent_to_file_job.rb index 0c960f1947d..3046812b2c8 100644 --- a/app/sidekiq/lighthouse/create_intent_to_file_job.rb +++ b/app/sidekiq/lighthouse/create_intent_to_file_job.rb @@ -17,8 +17,7 @@ class InvalidITFTypeError < StandardError; end # Only pension form configured to create async ITFs for now ITF_FORMS = { # '21-526EZ' => 'compensation', - # '21P-530' => 'survivor', - # '21P-530V2' => 'survivor', + # '21P-530EZ' => 'survivor', '21P-527EZ' => 'pension' }.freeze diff --git a/app/sidekiq/lighthouse/document_upload.rb b/app/sidekiq/lighthouse/document_upload.rb index f7e76d7932b..084cf600e33 100644 --- a/app/sidekiq/lighthouse/document_upload.rb +++ b/app/sidekiq/lighthouse/document_upload.rb @@ -3,6 +3,7 @@ require 'ddtrace' require 'timeout' require 'lighthouse/benefits_documents/worker_service' +require 'lighthouse/failure_notification' class Lighthouse::DocumentUpload include Sidekiq::Job @@ -37,13 +38,9 @@ class Lighthouse::DocumentUpload date_submitted = format_issue_instant_for_mailers(msg['created_at']) date_failed = format_issue_instant_for_mailers(msg['failed_at']) - notify_client.send_email( - recipient_identifier: { id_value: icn, id_type: 'ICN' }, - template_id: MAILER_TEMPLATE_ID, - personalisation: { first_name:, filename:, date_submitted:, date_failed: } - ) + Lighthouse::FailureNotification.perform_async(icn, first_name, filename, date_submitted, date_failed) - ::Rails.logger.info('Lighthouse::DocumentUpload exhaustion handler email sent') + ::Rails.logger.info('Lighthouse::DocumentUpload exhaustion handler email queued') StatsD.increment('silent_failure_avoided_no_confirmation', tags: DD_ZSF_TAGS) rescue => e ::Rails.logger.error('Lighthouse::DocumentUpload exhaustion handler email error', @@ -75,10 +72,6 @@ def self.format_issue_instant_for_mailers(issue_instant) timestamp.strftime('%B %-d, %Y %-l:%M %P %Z').sub(/([ap])m/, '\1.m.') end - def self.notify_client - VaNotify::Service.new(NOTIFY_SETTINGS.api_key) - end - def perform(user_icn, document_hash) client = BenefitsDocuments::WorkerService.new document, file_body, uploader = nil diff --git a/app/sidekiq/lighthouse/failure_notification.rb b/app/sidekiq/lighthouse/failure_notification.rb new file mode 100644 index 00000000000..77d6345500e --- /dev/null +++ b/app/sidekiq/lighthouse/failure_notification.rb @@ -0,0 +1,38 @@ +# frozen_string_literal: true + +class Lighthouse::FailureNotification + include Sidekiq::Job + include SentryLogging + + NOTIFY_SETTINGS = Settings.vanotify.services.benefits_management_tools + MAILER_TEMPLATE_ID = NOTIFY_SETTINGS.template_id.evidence_submission_failure_email + + # retry for one day + sidekiq_options retry: 14, queue: 'low' + # Set minimum retry time to ~1 hour + sidekiq_retry_in do |count, _exception| + rand(3600..3660) if count < 9 + end + + sidekiq_retries_exhausted do + ::Rails.logger.info('Lighthouse::FailureNotification email could not be sent') + end + + def notify_client + VaNotify::Service.new(NOTIFY_SETTINGS.api_key) + end + + def perform(icn, first_name, filename, date_submitted, date_failed) + notify_client.send_email( + recipient_identifier: { id_value: icn, id_type: 'ICN' }, + template_id: MAILER_TEMPLATE_ID, + personalisation: { first_name:, filename:, date_submitted:, date_failed: } + ) + + ::Rails.logger.info('Lighthouse::FailureNotification email sent') + rescue => e + ::Rails.logger.error('Lighthouse::FailureNotification email error', + { message: e.message }) + log_exception_to_sentry(e) + end +end diff --git a/app/sidekiq/lighthouse/submit_benefits_intake_claim.rb b/app/sidekiq/lighthouse/submit_benefits_intake_claim.rb index e19fa1c85a9..c06b7ac4541 100644 --- a/app/sidekiq/lighthouse/submit_benefits_intake_claim.rb +++ b/app/sidekiq/lighthouse/submit_benefits_intake_claim.rb @@ -36,7 +36,7 @@ class BenefitsIntakeClaimError < StandardError; end rescue claim = nil end - if %w[21P-530V2 21P-530].include?(claim&.form_id) + if %w[21P-530EZ].include?(claim&.form_id) burial_monitor = Burials::Monitor.new burial_monitor.track_submission_exhaustion(msg, claim) end @@ -109,7 +109,7 @@ def process_record(record) document = stamped_path2 - if ['21P-530V2'].include?(record.form_id) + if ['21P-530EZ'].include?(record.form_id) # If you are doing a burial form, add the extra box that is filled out document = stamped_pdf_with_form(record.form_id, stamped_path2, record.created_at) @@ -192,9 +192,7 @@ def check_zipcode(address) def send_confirmation_email @claim.respond_to?(:send_confirmation_email) && @claim.send_confirmation_email - if %w[21P-530V2 21P-530].include?(@claim&.form_id) - Burials::NotificationEmail.new(@claim.id).deliver(:confirmation) - end + Burials::NotificationEmail.new(@claim).deliver(:confirmation) if %w[21P-530EZ].include?(@claim&.form_id) rescue => e Rails.logger.warn('Lighthouse::SubmitBenefitsIntakeClaim send_confirmation_email failed', generate_log_details(e)) diff --git a/app/swagger/swagger/requests/claim_documents.rb b/app/swagger/swagger/requests/claim_documents.rb index e337d552d85..0c2d5f6c40c 100644 --- a/app/swagger/swagger/requests/claim_documents.rb +++ b/app/swagger/swagger/requests/claim_documents.rb @@ -23,7 +23,7 @@ class ClaimDocuments schema do key :required, %i[file form_id] property :file, type: :object - property :form_id, type: :string, example: '21P-530V2' + property :form_id, type: :string, example: '21P-530EZ' end end end diff --git a/config/features.yml b/config/features.yml index 59e93844a1b..b221c1aeefb 100644 --- a/config/features.yml +++ b/config/features.yml @@ -87,6 +87,9 @@ features: caregiver_retry_form_validation: actor_type: user description: Enables 1010CG to retry schema validation + disability_compensation_staging_lighthouse_brd: + actor_type: user + description: Switches to Lighthouse Staging BRD Service. NEVER ENABLE IN PRODUCTION. hca_browser_monitoring_enabled: actor_type: user description: Enables browser monitoring for the health care application. @@ -167,6 +170,9 @@ features: cerner_override_757: actor_type: user description: This will show the Cerner facility 757 as `isCerner`. + champva_multiple_stamp_retry: + actor_type: user + description: Enables retry of file creation for some errors in CHAMPVA PDF stamping champva_failure_email_job_enabled: actor_type: user description: Enables sending failure notification emails for IVC CHAMPVA form submissions that lack a Pega status @@ -176,6 +182,9 @@ features: champva_enhanced_monitor_logging: actor_type: user description: Enables using the new IVC CHAMPVA Monitoring logging class for enhanced Stats D info. + champva_pdf_decrypt: + actor_type: user + description: Enables unlocking password protected file submissions in IVC CHAMPVA forms. check_in_experience_enabled: actor_type: user description: Enables the health care check-in experiences @@ -612,16 +621,9 @@ features: actor_type: user description: Send only lat/long values (no bounding box or address) to the API when querying for facilities. enable_in_development: true - facility_locator_ppms_legacy_urgent_care_to_pos_locator: - actor_type: user - description: force the legacy urgent care path to use the new POS locator facility_locator_predictive_location_search: actor_type: user description: Use predictive location search in the Facility Locator UI - facility_locator_pull_operating_status_from_lighthouse: - actor_type: user - description: A fast and dirty way to get the operating status from lighthouse - enable_in_development: true facility_locator_rails_engine: actor_type: user description: Use rails engine routes for all Facility Locator API calls @@ -907,7 +909,7 @@ features: enable_in_development: true lighthouse_claims_api_v2_add_person_proxy: actor_type: user - description: Lighthouse Benefits Claims API v2 uses add_person_proxy service when target Veteran is missing a Participant ID + description: Lighthouse Benefits Claims API v2 uses add_person_proxy service when target Veteran is missing a Participant ID enable_in_development: true lighthouse_claims_api_poa_dependent_claimants: actor_type: user @@ -915,7 +917,7 @@ features: enable_in_development: true lighthouse_claims_api_v2_poa_va_notify: actor_type: user - description: Enable/disable the VA ntofication emails in V2 POA + description: Enable/disable the VA notification emails in V2 POA enable_in_development: false lighthouse_claims_v2_poa_requests_skip_bgs: actor_type: user @@ -948,6 +950,10 @@ features: actor_type: user description: Enables notifications to be sent for new copay statements enable_in_development: true + mhv_account_creation_api_consumption: + actor_type: user + descriptiom: Enables access to alerts related to MHV Account Creation API + enable_in_development: true mhv_account_creation_after_login: actor_type: user descriptiom: Enables access to MHV Account Creation API @@ -1523,9 +1529,6 @@ features: actor_type: user enable_in_development: true description: Toggle to remove Podiatry from the type of care list when scheduling an online appointment. - va_burial_v2: - actor_type: user - description: Allows us to toggle between 21-P530 and 21-P530V2 va_v2_person_service: actor_type: user description: When enabled, the VAProfile::V2::Person::Service will be enabled @@ -1666,9 +1669,6 @@ features: mobile_v2_contact_info: actor_type: user description: For mobile app, enables ContactInformationV2 Service. - appointment_provider_id_logging: - actor_type: user - description: For mobile app, logs provider id for debugging mobile_push_register_logging: actor_type: user description: For mobile app, logs push register errors for debugging @@ -1798,10 +1798,6 @@ features: burial_form_enabled: actor_type: user description: Enable the burial form - burial_form_v2: - actor_type: user - description: Enable Burial form v2 re-design - enable_in_development: true burial_confirmation_page: actor_type: user description: Toggle showing the updated confirmation page @@ -1812,6 +1808,9 @@ features: burial_received_email_notification: actor_type: cookie_id description: Toggle sending of the Received email notification + burial_browser_monitoring_enabled: + actor_type: user + description: Burial Datadog RUM monitoring pension_form_enabled: actor_type: user description: Enable the pension form @@ -1958,7 +1957,10 @@ features: is_DGIB_endpoint: actor_type: user description: used to call data from DGIB endpoints for MGIB VYE application + lighthouse_veterans_health_debug_logging: + actor_type: user + description: Enable debug logging for Lighthouse Veterans Health API + enable_in_development: false benefits_non_disability_ch31_v2: actor_type: user description: If enabled, use new form and api endpoint for Ch31 VR&E form - enable_in_development: false diff --git a/config/form_profile_mappings/21P-530.yml b/config/form_profile_mappings/21P-530EZ.yml similarity index 100% rename from config/form_profile_mappings/21P-530.yml rename to config/form_profile_mappings/21P-530EZ.yml diff --git a/config/form_profile_mappings/21P-530V2.yml b/config/form_profile_mappings/21P-530V2.yml deleted file mode 100644 index 199957e34cd..00000000000 --- a/config/form_profile_mappings/21P-530V2.yml +++ /dev/null @@ -1,4 +0,0 @@ -claimant_full_name: [identity_information, full_name] -claimant_address: [contact_information, address] -claimant_phone: [contact_information, us_phone] -claimant_email: [contact_information, email] diff --git a/config/initializers/breakers.rb b/config/initializers/breakers.rb index 18b0b7c4f57..eff62e33c70 100644 --- a/config/initializers/breakers.rb +++ b/config/initializers/breakers.rb @@ -6,6 +6,7 @@ require 'central_mail/configuration' require 'debt_management_center/debts_configuration' require 'decision_review/configuration' +require 'vye/dgib/service' require 'dgi/automation/configuration' require 'dgi/eligibility/configuration' require 'dgi/status/configuration' @@ -84,6 +85,7 @@ SearchTypeahead::Configuration.instance.breakers_service, SearchClickTracking::Configuration.instance.breakers_service, VAOS::Configuration.instance.breakers_service, + Vye::DGIB::Configuration.instance.breakers_service, IAMSSOeOAuth::Configuration.instance.breakers_service, CovidVaccine::V0::VetextConfiguration.instance.breakers_service, VEText::Configuration.instance.breakers_service, diff --git a/config/settings.yml b/config/settings.yml index cdb11ce7577..c8afe037810 100644 --- a/config/settings.yml +++ b/config/settings.yml @@ -1442,10 +1442,19 @@ genisis: pass: bogus # Settings for connecting AFS Veteran Services +# For locahost we can use the existing certs as long as we don't call out dgi: jwt: public_key_path: modules/meb_api/spec/fixtures/dgi_public_test.pem private_key_path: modules/meb_api/spec/fixtures/dgi_private_test.pem + vye: + jwt: + public_key_path: modules/vye/spec/fixtures/dgi_public_test.pem + private_key_path: modules/vye/spec/fixtures/dgi_private_test.pem + public_ica11_rca2_key_path: modules/vye/spec/fixtures/ICA11-RCA2-combined-cert.pem + vets: + url: "" + mock: false vets: url: "https://jenkins.ld.afsp.io:32512/vets-service/v1/" # Docker setup for microservice mock: false diff --git a/config/settings/test.yml b/config/settings/test.yml index b87aff55faf..35f28fbb40a 100644 --- a/config/settings/test.yml +++ b/config/settings/test.yml @@ -246,12 +246,6 @@ lighthouse: client_id: abc123456 rsa_key: path/to/key use_mocks: false - status: - host: https://sandbox-api.va.gov - access_token: - client_id: ~ - rsa_key: ~ - use_mocks: false benefits_claims: host: https://sandbox-api.va.gov aud_claim_url: https://deptva-eval.okta.com/oauth2/ausi3u00gw66b9Ojk2p7/v1/token diff --git a/db/migrate/20241212101623_add_claim_va_notifications_reference_columns.rb b/db/migrate/20241212101623_add_claim_va_notifications_reference_columns.rb new file mode 100644 index 00000000000..d4066899c19 --- /dev/null +++ b/db/migrate/20241212101623_add_claim_va_notifications_reference_columns.rb @@ -0,0 +1,9 @@ +class AddClaimVANotificationsReferenceColumns < ActiveRecord::Migration[7.1] + def change + safety_assured do + add_column :claim_va_notifications, :notification_id, :uuid + add_column :claim_va_notifications, :notification_type, :string + add_column :claim_va_notifications, :notification_status, :string + end + end +end diff --git a/db/migrate/20241213171608_add_path_to_banners.rb b/db/migrate/20241213171608_add_path_to_banners.rb new file mode 100644 index 00000000000..88663e24b92 --- /dev/null +++ b/db/migrate/20241213171608_add_path_to_banners.rb @@ -0,0 +1,5 @@ +class AddPathToBanners < ActiveRecord::Migration[7.2] + def change + add_column :banners, :path, :string + end +end diff --git a/db/migrate/20241213173113_add_index_to_banners_path.rb b/db/migrate/20241213173113_add_index_to_banners_path.rb new file mode 100644 index 00000000000..601177f4ce8 --- /dev/null +++ b/db/migrate/20241213173113_add_index_to_banners_path.rb @@ -0,0 +1,7 @@ +class AddIndexToBannersPath < ActiveRecord::Migration[7.2] + disable_ddl_transaction! + + def change + add_index :banners, :path, algorithm: :concurrently + end +end diff --git a/db/schema.rb b/db/schema.rb index aaba60a88fd..16899188a79 100644 --- a/db/schema.rb +++ b/db/schema.rb @@ -10,7 +10,7 @@ # # It's strongly recommended that you check this file into your version control system. -ActiveRecord::Schema[7.1].define(version: 2024_12_09_231104) do +ActiveRecord::Schema[7.2].define(version: 2024_12_13_173113) do # These are extensions that must be enabled in order to support this database enable_extension "btree_gin" enable_extension "fuzzystrmatch" @@ -310,7 +310,9 @@ t.boolean "limit_subpage_inheritance" t.datetime "created_at", null: false t.datetime "updated_at", null: false + t.string "path" t.index ["entity_id"], name: "index_banners_on_entity_id" + t.index ["path"], name: "index_banners_on_path" end create_table "base_facilities", id: false, force: :cascade do |t| @@ -354,6 +356,9 @@ t.datetime "created_at", null: false t.datetime "updated_at", null: false t.string "email_template_id" + t.uuid "notification_id" + t.string "notification_type" + t.string "notification_status" t.index ["saved_claim_id"], name: "index_claim_va_notifications_on_saved_claim_id" end @@ -1398,6 +1403,8 @@ t.jsonb "callback_metadata" t.text "callback_klass" t.uuid "template_id" + t.text "to_ciphertext" + t.text "encrypted_kms_key" end create_table "vba_documents_monthly_stats", force: :cascade do |t| diff --git a/lib/bip_claims/service.rb b/lib/bip_claims/service.rb index 204809fb1e1..22523e57dec 100644 --- a/lib/bip_claims/service.rb +++ b/lib/bip_claims/service.rb @@ -14,7 +14,7 @@ class Service < Common::Client::Base def veteran_attributes(claim) case claim.form_id - when '21P-530', '21P-530V2' + when '21P-530EZ' ssn, full_name, bday = claim.parsed_form.values_at( 'veteranSocialSecurityNumber', 'veteranFullName', diff --git a/lib/disability_compensation/factories/api_provider_factory.rb b/lib/disability_compensation/factories/api_provider_factory.rb index a5da3ee093c..d100bac04fd 100644 --- a/lib/disability_compensation/factories/api_provider_factory.rb +++ b/lib/disability_compensation/factories/api_provider_factory.rb @@ -15,6 +15,7 @@ require 'disability_compensation/providers/brd/brd_provider' require 'disability_compensation/providers/brd/evss_brd_provider' require 'disability_compensation/providers/brd/lighthouse_brd_provider' +require 'disability_compensation/providers/brd/lighthouse_staging_brd_provider' require 'disability_compensation/providers/generate_pdf/generate_pdf_provider' require 'disability_compensation/providers/generate_pdf/evss_generate_pdf_provider' require 'disability_compensation/providers/generate_pdf/lighthouse_generate_pdf_provider' @@ -28,7 +29,8 @@ class UndefinedFactoryTypeError < StandardError; end API_PROVIDER = { evss: :evss, - lighthouse: :lighthouse + lighthouse: :lighthouse, + lighthouse_staging: :lighthouse_staging }.freeze FACTORIES = { @@ -166,6 +168,8 @@ def brd_service_provider EvssBRDProvider.new(@current_user) when API_PROVIDER[:lighthouse] LighthouseBRDProvider.new(@current_user) + when API_PROVIDER[:lighthouse_staging] + LighthouseStagingBRDProvider.new(@current_user) else raise NotImplementedError, 'No known BRD Api Provider type provided' end diff --git a/lib/disability_compensation/providers/brd/lighthouse_staging_brd_provider.rb b/lib/disability_compensation/providers/brd/lighthouse_staging_brd_provider.rb new file mode 100644 index 00000000000..a8fb0139e89 --- /dev/null +++ b/lib/disability_compensation/providers/brd/lighthouse_staging_brd_provider.rb @@ -0,0 +1,11 @@ +# frozen_string_literal: true + +require 'disability_compensation/providers/brd/lighthouse_brd_provider' +require 'lighthouse/benefits_reference_data_staging/service' + +class LighthouseStagingBRDProvider < LighthouseBRDProvider + def initialize(_current_user) + super + @service = BenefitsReferenceData::Staging::Service.new + end +end diff --git a/lib/evss/disability_compensation_form/form4142_processor.rb b/lib/evss/disability_compensation_form/form4142_processor.rb index 66ce712b30a..e4d9113d62f 100644 --- a/lib/evss/disability_compensation_form/form4142_processor.rb +++ b/lib/evss/disability_compensation_form/form4142_processor.rb @@ -1,7 +1,5 @@ # frozen_string_literal: true -require 'pdf_fill/forms/va21p530' -require 'pdf_fill/forms/va21p530v2' require 'pdf_fill/forms/va214142' require 'pdf_fill/forms/va210781a' require 'pdf_fill/forms/va210781' diff --git a/lib/lighthouse/benefits_reference_data_staging/configuration.rb b/lib/lighthouse/benefits_reference_data_staging/configuration.rb new file mode 100644 index 00000000000..6696a31879a --- /dev/null +++ b/lib/lighthouse/benefits_reference_data_staging/configuration.rb @@ -0,0 +1,68 @@ +# frozen_string_literal: true + +require 'common/client/configuration/rest' +require 'faraday/multipart' + +module BenefitsReferenceData + ## + # HTTP client configuration for the {BenefitsReferenceData::Service}, + # sets the base path, the base request headers, and a service name for breakers and metrics. + + module Staging + class Configuration < Common::Client::Configuration::REST + self.read_timeout = Settings.lighthouse.benefits_reference_data.timeout || 20 + + ## + # @return [String] Base path for benefits_reference_data URLs. + # + def base_path + settings = Settings.lighthouse.benefits_reference_data + url = settings.staging_url + path = settings.path + version = settings.version + safe_slash_merge(url, path, version) + end + + ## + # @return [String] Service name to use in breakers and metrics. + # + def service_name + 'BenefitsReferenceDataStaging' + end + + ## + # @return [Hash] The basic headers required for any benefits_reference_data API call. + # + def self.base_request_headers + key = Settings.lighthouse.staging_api_key + message = "No api_key set for LH benefits_reference_data_staging. Please set 'lighthouse.staging_api_key'" + raise message if key.nil? + + super.merge('apiKey' => key) + end + + ## + # Creates the a connection with parsing json and adding breakers functionality. + # + # @return [Faraday::Connection] a Faraday connection instance. + # + def connection + @conn ||= Faraday.new(base_path, headers: base_request_headers, request: request_options) do |faraday| + faraday.use :breakers + faraday.use Faraday::Response::RaiseError + + faraday.request :multipart + faraday.request :json + faraday.response :json + faraday.adapter Faraday.default_adapter + end + end + + private + + def safe_slash_merge(*url_segments) + url_segments.map { |segment| segment.sub(%r{^/}, '').chomp('/') }.join('/') + end + end + end +end diff --git a/lib/lighthouse/benefits_reference_data_staging/service.rb b/lib/lighthouse/benefits_reference_data_staging/service.rb new file mode 100644 index 00000000000..ada49d3bc76 --- /dev/null +++ b/lib/lighthouse/benefits_reference_data_staging/service.rb @@ -0,0 +1,45 @@ +# frozen_string_literal: true + +require 'common/client/base' +require 'common/client/concerns/monitoring' +require 'common/client/errors' +require 'common/exceptions/forbidden' +require 'common/exceptions/schema_validation_errors' +require 'lighthouse/benefits_reference_data_staging/configuration' +require 'lighthouse/benefits_reference_data/service_exception' + +module BenefitsReferenceData + ## + # Proxy Service for the Lighthouse Benefits Reference Data API. + + module Staging + class Service < Common::Client::Base + include SentryLogging + include Common::Client::Concerns::Monitoring + + configuration BenefitsReferenceData::Staging::Configuration + + # ap @configuration.base_request_headers; exit + + STATSD_KEY_PREFIX = 'api.benefits_reference_data_staging' + + ## + # Hit a Benefits Reference Data End-point + # + # @path end-point [string|symbol] a string or symbol of the end-point you wish to hit. + # @params params hash [Hash] a hash of key-value pairs of parameters + # + # @return [Faraday::Response] + # + def get_data(path:, params: {}) + headers = config.base_request_headers + begin + response = perform :get, path, params, headers + rescue => e + raise BenefitsReferenceData::ServiceException.new(e), 'Lighthouse Error' + end + response + end + end + end +end diff --git a/lib/lighthouse/veterans_health/client.rb b/lib/lighthouse/veterans_health/client.rb index 2e7a6b3707b..a5a59241b1f 100644 --- a/lib/lighthouse/veterans_health/client.rb +++ b/lib/lighthouse/veterans_health/client.rb @@ -124,6 +124,9 @@ def collect_all_entries(next_page, collection) def perform_get(uri_path, **params) perform(:get, uri_path, params, headers_hash) + rescue Common::Client::Errors::ClientError => e + log_operation_outcome(e) + raise e end def authenticate(params) @@ -133,6 +136,18 @@ def authenticate(params) URI.encode_www_form(params), { 'Content-Type': 'application/x-www-form-urlencoded' } ) + rescue Common::Client::Errors::ClientError => e + log_operation_outcome(e) + raise e + end + + def log_operation_outcome(error) + if Flipper.enabled?(:lighthouse_veterans_health_debug_logging, @current_user) + PersonalInformationLog.create!( + data: error.body || error, + error_class: self.class.name + ) + end end def base64_icn diff --git a/lib/medical_records/bb_internal/client.rb b/lib/medical_records/bb_internal/client.rb index 2bb43e63674..adda633cbcb 100644 --- a/lib/medical_records/bb_internal/client.rb +++ b/lib/medical_records/bb_internal/client.rb @@ -321,6 +321,13 @@ def map_study_ids(data) modified_data end + ## + # Overriding MHVSessionBasedClient's method to ensure the thread blocks if patient ID is not yet set. + # + def invalid?(session) + super(session) || session.patient_id.blank? + end + ## # Overriding MHVSessionBasedClient's method so we can get the patientId and store it as well. # diff --git a/lib/medical_records/lighthouse_client.rb b/lib/medical_records/lighthouse_client.rb index 094e7ebbe9e..11de0edaf42 100644 --- a/lib/medical_records/lighthouse_client.rb +++ b/lib/medical_records/lighthouse_client.rb @@ -36,7 +36,7 @@ def list_vitals(from_date = nil, to_date = nil) params[:date] = ["ge#{from_date}", "le#{to_date}"] if from_date && to_date bundle = lighthouse_client.list_observations(params) bundle = Oj.load(bundle[:body].to_json, symbol_keys: true) - sort_bundle(bundle, :recordedDate, :desc) + sort_bundle(bundle, :effectiveDateTime, :desc) end def list_allergies @@ -118,55 +118,21 @@ def paginate_bundle_entries(entries, page_size, page_num) end ## - # Sort the FHIR::Bundle entries on a given field and sort order. If a field is not present, that entry - # is sorted to the end. + # Sort FHIR entries on a given field and sort order. If a field is not present, + # that entry is sorted to the end. # - # @param bundle [FHIR::Bundle] the bundle to sort - # @param field [Symbol, String] the field to sort on (supports nested fields with dot notation) + # @param bundle [Hash] the bundle to sort + # @param field [Symbol] the field to sort on # @param order [Symbol] the sort order, :asc (default) or :desc # def sort_bundle(bundle, field, order = :asc) - field = field.to_s - sort_bundle_with_criteria(bundle, order) do |resource| - fetch_nested_value(resource, field) - end - end - - ## - # Sort the FHIR::Bundle entries based on a provided block. The block should handle different resource types - # and define how to extract the sorting value from each. - # - # @param bundle [FHIR::Bundle] the bundle to sort - # @param order [Symbol] the sort order, :asc (default) or :desc - # - def sort_bundle_with_criteria(bundle, order = :asc) - sorted_entries = bundle[:entry].sort do |entry1, entry2| - value1 = yield(entry1[:resource]) - value2 = yield(entry2[:resource]) - if value2.nil? - -1 - elsif value1.nil? - 1 - else - order == :asc ? value1 <=> value2 : value2 <=> value1 - end - end - bundle[:entry] = sorted_entries + # Sort bundle[:entry] based on the field + bundle[:entry].sort_by! { |entry| entry[:resource][field] } + # reverse the order if descending + bundle[:entry].reverse! if order == :desc bundle end - ## - # Fetches the value of a potentially nested field from a given object. - # - # @param object [Object] the object to fetch the value from - # @param field_path [String] the dot-separated path to the field - # - def fetch_nested_value(object, field_path) - field_path.split('.').reduce(object) do |obj, method| - obj.respond_to?(method) ? obj.send(method) : nil - end - end - def measure_duration(event: 'default', tags: []) # Use time since boot to avoid clock skew issues # https://github.com/sidekiq/sidekiq/issues/3999 diff --git a/lib/pdf_fill/filler.rb b/lib/pdf_fill/filler.rb index 2bf190e90a8..4c80c5166b3 100644 --- a/lib/pdf_fill/filler.rb +++ b/lib/pdf_fill/filler.rb @@ -1,8 +1,7 @@ # frozen_string_literal: true require 'pdf_fill/forms/va21p0969' -require 'pdf_fill/forms/va21p530' -require 'pdf_fill/forms/va21p530v2' +require 'pdf_fill/forms/va21p530ez' require 'pdf_fill/forms/va214142' require 'pdf_fill/forms/va210781a' require 'pdf_fill/forms/va210781' @@ -47,8 +46,8 @@ def register_form(form_id, form_class) # Registers form classes for various form IDs. { '21P-0969' => PdfFill::Forms::Va21p0969, - '21P-530' => PdfFill::Forms::Va21p530, - '21P-530V2' => PdfFill::Forms::Va21p530v2, + '21P-530V2' => PdfFill::Forms::Va21p530ez, + '21P-530EZ' => PdfFill::Forms::Va21p530ez, '21-4142' => PdfFill::Forms::Va214142, '21-0781a' => PdfFill::Forms::Va210781a, '21-0781' => PdfFill::Forms::Va210781, diff --git a/lib/pdf_fill/forms/pdfs/21-0781v2.pdf b/lib/pdf_fill/forms/pdfs/21-0781v2.pdf new file mode 100644 index 00000000000..03215bf3b9a Binary files /dev/null and b/lib/pdf_fill/forms/pdfs/21-0781v2.pdf differ diff --git a/lib/pdf_fill/forms/pdfs/21P-530.pdf b/lib/pdf_fill/forms/pdfs/21P-530.pdf deleted file mode 100644 index a8da305ac58..00000000000 Binary files a/lib/pdf_fill/forms/pdfs/21P-530.pdf and /dev/null differ diff --git a/lib/pdf_fill/forms/pdfs/21P-530V2.pdf b/lib/pdf_fill/forms/pdfs/21P-530EZ.pdf similarity index 100% rename from lib/pdf_fill/forms/pdfs/21P-530V2.pdf rename to lib/pdf_fill/forms/pdfs/21P-530EZ.pdf diff --git a/lib/pdf_fill/forms/va210781v2.rb b/lib/pdf_fill/forms/va210781v2.rb new file mode 100644 index 00000000000..24528c9cfe5 --- /dev/null +++ b/lib/pdf_fill/forms/va210781v2.rb @@ -0,0 +1,741 @@ +# frozen_string_literal: true + +require 'pdf_fill/hash_converter' +require 'pdf_fill/forms/form_helper' +require 'pdf_fill/forms/form_base' +require 'pdf_fill/forms/common_ptsd' + +# rubocop:disable Metrics/ClassLength +module PdfFill + module Forms + class Va210781v2 < FormBase + include CommonPtsd + + ITERATOR = PdfFill::HashConverter::ITERATOR + + # rubocop:disable Layout/LineLength + KEY = { + 'veteranFullName' => { + 'first' => { + key: 'F[0].#subform[2].Veterans_Service_Members_First_Name[0]', + limit: 12, # limit: 28 (with combs removed) + question_num: 1, + question_suffix: 'A', + question_text: 'VETERAN/SERVICE MEMBER\'S NAME. First Name' + }, + 'middleInitial' => { + key: 'F[0].#subform[2].VeteransMiddleInitial1[0]', + limit: 1, + question_num: 1, + question_suffix: 'B', + question_text: 'VETERAN/SERVICE MEMBER\'S NAME. Middle Initial' + }, + 'last' => { + key: 'F[0].#subform[2].VeteransLastName[0]', + limit: 18, # limit: 45 (with combs removed) + question_num: 1, + question_suffix: 'C', + question_text: 'VETERAN/SERVICE MEMBER\'S NAME. Last Name' + } + }, + 'veteranSocialSecurityNumber' => { # question_num: 2 + 'first' => { + key: 'F[0].#subform[2].SSN1[0]' + }, + 'second' => { + key: 'F[0].#subform[2].SSN2[0]' + }, + 'third' => { + key: 'F[0].#subform[2].SSN3[0]' + } + }, + 'vaFileNumber' => { + key: 'F[0].#subform[2].VAFileNumber[0]', + limit: 9, + question_num: 3, + question_text: 'VA FILE NUMBER (If applicable)' + }, + 'veteranDateOfBirth' => { + 'month' => { + key: 'F[0].#subform[2].Month[0]', + limit: 2, + question_num: 4, + question_suffix: 'A', + question_text: 'DATE OF BIRTH. Enter 2 digit Month.' + }, + 'day' => { + key: 'F[0].#subform[2].Day[0]', + limit: 2, + question_num: 4, + question_suffix: 'B', + question_text: 'DATE OF BIRTH. Enter 2 digit day.' + }, + 'year' => { + key: 'F[0].#subform[2].Year[0]', + limit: 4, + question_num: 4, + question_suffix: 'C', + question_text: 'DATE OF BIRTH. Enter 4 digit year.' + } + }, + 'veteranServiceNumber' => { + key: 'F[0].#subform[2].VeteransServiceNumber[0]', + limit: 10, + question_num: 5, + question_text: 'VETERAN\'S SERVICE NUMBER (If applicable)' + }, + 'veteranPhone' => { + 'first' => { + key: 'F[0].#subform[2].AreaCode[0]', + limit: 3, + question_num: 6, + question_suffix: 'A', + question_text: 'TELEPHONE NUMBER (Include Area Code). Enter three digits of Area Code.' + }, + 'second' => { + key: 'F[0].#subform[2].FirstThreeNumbers[0]', + limit: 3, + question_num: 6, + question_suffix: 'B', + question_text: 'TELEPHONE NUMBER (Include Area Code). Enter middle three digits.' + }, + 'third' => { + key: 'F[0].#subform[2].LastFourNumbers[0]', + limit: 4, + question_num: 6, + question_suffix: 'C', + question_text: 'TELEPHONE NUMBER (Include Area Code). Enter last four digits.' + } + }, + 'veteranIntPhone' => { + key: 'F[0].#subform[2].International_Telephone_Number_If_Applicable[0]', + limit: 25, + question_num: 6, + question_suffix: 'D', + question_text: 'Enter International Phone Number (If applicable).' + }, + 'email' => { + key: 'F[0].#subform[2].E_Mail_Address_Optional[0]', + limit: 75, # TODO: This is a guess. Need to confirm. + question_num: 7, + question_text: 'E-Mail Address (Optional).' + }, + 'emailOverflow' => { + key: '', + question_num: 7, + question_text: 'E-Mail Address (Optional).' + }, + 'eventTypes' => { # question_num: 8 + 'combat' => { + key: 'F[0].#subform[2].Combat_Traumatic_Events[0]' + }, + 'mst' => { + key: 'F[0].#subform[2].Personal_Traumatic_Events_Not_Involving_Military_Sexual_Trauma[0]' + }, + 'nonMst' => { + key: 'F[0].#subform[2].Personal_Traumatic_Events_Involving_Military_Sexual_Trauma[0]' + }, + 'other' => { + key: 'F[0].#subform[2].Other_Traumatic_Events[0]' + } + }, + 'eventsDetails' => { + limit: 6, + first_key: 'details', + question_text: 'EVENT DETAILS', + question_num: 9, + 'details' => { + key: "F[0].#subform[2].Brief_Description_Of_The_Traumatic_Events[#{ITERATOR}]", + limit: 150 + }, + 'location' => { + key: "F[0].#subform[2].Location_Of_The_Traumatic_Events[#{ITERATOR}]", + limit: 84 + }, + 'timing' => { + key: "F[0].#subform[2].Dates_The_Traumatic_Events_Occured[#{ITERATOR}]", + limit: 75 + }, + 'eventOverflow' => { + key: '', + question_text: 'TRAUMATIC EVENT(S) INFORMATION', + question_num: 9, + question_suffix: 'A' + } + }, + 'behaviors' => { # question_num: 10A + 'reassignment' => { + key: 'F[0].#subform[3].Request_For_A_Change_In_Occupational_Series_Or_Duty_Assignment[0]' + }, + 'absences' => { + key: 'F[0].#subform[3].Increased_Decreased_Use_Of_Leave[0]' + }, + 'performance' => { + key: 'F[0].#subform[3].Changes_In_Performance_Or_Performance_Evaluations[0]' + }, + 'consultations' => { + key: 'F[0].#subform[3].Increased_Decreased_Visits_To_A_Healthcare_Professional_Counselor_Or_Treatment_Facility[0]' + }, + 'episodes' => { + key: 'F[0].#subform[3].Episodes_Of_Depression_Panic_Attacks_Or_Anxiety[0]' + }, + 'medications' => { + key: 'F[0].#subform[3].Increased_Decreased_Use_Of_Prescription_Medications[0]' + }, + 'selfMedication' => { + key: 'F[0].#subform[3].Increased_Decreased_Use_Of_Over_The_Counter_Medications[0]' + }, + 'substances' => { + key: 'F[0].#subform[3].Increased_Decreased_Use_Of_Alcohol_Or_Drugs[0]' + }, + 'appetite' => { + key: 'F[0].#subform[3].Changes_In_Eating_Habits_Such_As_Overeating_Or_Undereating_Or_Significant_Changes_In_Weight[0]' + }, + 'pregnancy' => { + key: 'F[0].#subform[4].Pregnancy_Tests_Around_The_Time_Of_The_Traumatic_Events[0]' + }, + 'screenings' => { + key: 'F[0].#subform[4].Tests_For_Sexually_Transmitted_Infections[0]' + }, + 'socialEconomic' => { + key: 'F[0].#subform[4].Economic_Or_Social_Behavioral_Changes[0]' + }, + 'relationships' => { + key: 'F[0].#subform[4].Changes_In_Or_Breakup_Of_A_Significant_Relationship[0]' + }, + 'misconduct' => { + key: 'F[0].#subform[3].Disciplinary_Or_Legal_Difficulties[0]' + } + }, + 'behaviorsDetails' => { # question_num: 10B + 'reassignment' => { + key: 'F[0].#subform[3].Additional_Information_About_Behavioral_Changes[1]', + limit: 217, + question_num: 10, + question_suffix: 'B[2]', + question_text: 'ADDTIONAL INFORMATION ABOUT Request for a change in occupational series or duty assignment.' + }, + 'reassignmentOverflow' => { + key: '', + question_num: 10, + question_suffix: 'B[2]', + question_text: 'ADDTIONAL INFORMATION ABOUT Request for a change in occupational series or duty assignment.' + }, + 'absences' => { + key: 'F[0].#subform[3].Additional_Information_About_Behavioral_Changes[2]', + limit: 217, + question_num: 10, + question_suffix: 'B[3]', + question_text: 'ADDTIONAL INFORMATION ABOUT Increased/decreased use of leave.' + }, + 'absencesOverflow' => { + key: '', + question_num: 10, + question_suffix: 'B[3]', + question_text: 'ADDTIONAL INFORMATION ABOUT Increased/decreased use of leave.' + }, + 'performance' => { + key: 'F[0].#subform[3].Additional_Information_About_Behavioral_Changes[3]', + limit: 217, + question_num: 10, + question_suffix: 'B[4]', + question_text: 'ADDTIONAL INFORMATION ABOUT Changes in performance or performance evaluations.' + }, + 'performanceOverflow' => { + key: '', + question_num: 10, + question_suffix: 'B[4]', + question_text: 'ADDTIONAL INFORMATION ABOUT Changes in performance or performance evaluations.' + }, + 'consultations' => { + key: 'F[0].#subform[3].Additional_Information_About_Behavioral_Changes[0]', + limit: 217, + question_num: 10, + question_suffix: 'B[1]', + question_text: 'ADDTIONAL INFORMATION ABOUT Increased/decreased visits to a healthcare professional, counselor, or treatment Facility' + }, + 'consultationsOverflow' => { + key: '', + question_num: 10, + question_suffix: 'B[1]', + question_text: 'ADDTIONAL INFORMATION ABOUT Increased/decreased visits to a healthcare professional, counselor, or treatment Facility' + }, + 'episodes' => { + key: 'F[0].#subform[3].Additional_Information_About_Behavioral_Changes[4]', + limit: 217, + question_num: 10, + question_suffix: 'B[5]', + question_text: 'ADDTIONAL INFORMATION ABOUT Episodes of depression, panic attacks, or anxiety.' + }, + 'episodesOverflow' => { + key: '', + question_num: 10, + question_suffix: 'B[5]', + question_text: 'ADDTIONAL INFORMATION ABOUT Episodes of depression, panic attacks, or anxiety.' + }, + 'medications' => { + key: 'F[0].#subform[3].Additional_Information_About_Behavioral_Changes[5]', + limit: 217, + question_num: 10, + question_suffix: 'B[6]', + question_text: 'ADDTIONAL INFORMATION ABOUT Increased/Decreased use of prescription medications.' + }, + 'medicationsOverflow' => { + key: '', + question_num: 10, + question_suffix: 'B[6]', + question_text: 'ADDTIONAL INFORMATION ABOUT Increased/Decreased use of prescription medications.' + }, + 'selfMedication' => { + key: 'F[0].#subform[3].Additional_Information_About_Behavioral_Changes[6]', + limit: 217, + question_num: 10, + question_suffix: 'B[7]', + question_text: 'ADDTIONAL INFORMATION ABOUT Increased/Decreased use of over-the-counter medications.' + }, + 'selfMedicationOverflow' => { + key: '', + question_num: 10, + question_suffix: 'B[7]', + question_text: 'ADDTIONAL INFORMATION ABOUT Increased/Decreased use of over-the-counter medications.' + }, + 'substances' => { + key: 'F[0].#subform[3].Additional_Information_About_Behavioral_Changes[7]', + limit: 217, + question_num: 10, + question_suffix: 'B[8]', + question_text: 'ADDTIONAL INFORMATION ABOUT Increased/Decreased use of alcohol or drugs.' + }, + 'substancesOverflow' => { + key: '', + question_num: 10, + question_suffix: 'B[8]', + question_text: 'ADDTIONAL INFORMATION ABOUT Increased/Decreased use of alcohol or drugs.' + }, + 'appetite' => { + key: 'F[0].#subform[3].Additional_Information_About_Behavioral_Changes[9]', + limit: 217, + question_num: 10, + question_suffix: 'B[10]', + question_text: 'ADDTIONAL INFORMATION ABOUT Changes in eating habits, such as overeating or under eating, or significant changes in weight.' + }, + 'appetiteOverflow' => { + key: '', + question_num: 10, + question_suffix: 'B[10]', + question_text: 'ADDTIONAL INFORMATION ABOUT Changes in eating habits, such as overeating or under eating, or significant changes in weight.' + }, + 'pregnancy' => { + key: 'F[0].#subform[3].Additional_Information_About_Behavioral_Changes[10]', + limit: 217, + question_num: 10, + question_suffix: 'B[11]', + question_text: 'ADDTIONAL INFORMATION ABOUT Pregnancy tests around the time of the traumatic event(s).' + }, + 'pregnancyOverflow' => { + key: '', + question_num: 10, + question_suffix: 'B[11]', + question_text: 'ADDTIONAL INFORMATION ABOUT Pregnancy tests around the time of the traumatic event(s).' + }, + 'screenings' => { + key: 'F[0].#subform[3].Additional_Information_About_Behavioral_Changes[11]', + limit: 217, + question_num: 10, + question_suffix: 'B[12]', + question_text: 'ADDTIONAL INFORMATION ABOUT Tests for sexually transmitted infections.' + }, + 'screeningsOverflow' => { + key: '', + question_num: 10, + question_suffix: 'B[12]', + question_text: 'ADDTIONAL INFORMATION ABOUT Tests for sexually transmitted infections.' + }, + 'socialEconomic' => { + key: 'F[0].#subform[3].Additional_Information_About_Behavioral_Changes[12]', + limit: 217, + question_num: 10, + question_suffix: 'B[13]', + question_text: 'ADDTIONAL INFORMATION ABOUT Economic or social behavioral changes.' + }, + 'socialEconomicOverflow' => { + key: '', + question_num: 10, + question_suffix: 'B[13]', + question_text: 'ADDTIONAL INFORMATION ABOUT Economic or social behavioral changes.' + }, + 'relationships' => { + key: 'F[0].#subform[3].Additional_Information_About_Behavioral_Changes[13]', + limit: 217, + question_num: 10, + question_suffix: 'B[14]', + question_text: 'ADDTIONAL INFORMATION ABOUT Changes in or breakup of a significant relationship.' + }, + 'relationshipsOverflow' => { + key: '', + question_num: 10, + question_suffix: 'B[14]', + question_text: 'ADDTIONAL INFORMATION ABOUT Changes in or breakup of a significant relationship.' + }, + 'misconduct' => { + key: 'F[0].#subform[3].Additional_Information_About_Behavioral_Changes[8]', + limit: 217, + question_num: 10, + question_suffix: 'B[9]', + question_text: 'ADDTIONAL INFORMATION ABOUT Disciplinary or legal difficulties.' + }, + 'misconductOverflow' => { + key: '', + question_num: 10, + question_suffix: 'B[9]', + question_text: 'ADDTIONAL INFORMATION ABOUT Disciplinary or legal difficulties.' + }, + 'otherBehavior' => { + key: 'F[0].#subform[4].List_Additional_Behavioral_Changes[0]', + limit: 784, + question_num: 10, + question_suffix: 'C', + question_text: 'ADDTIONAL INFORMATION ABOUT Additional behavioral changes.' + }, + 'otherBehaviorOverflow' => { + key: '', + question_num: 10, + question_suffix: 'C', + question_text: 'ADDTIONAL INFORMATION ABOUT Additional behavioral changes.' + } + }, + 'reportFiled' => { # question_num: 11 + key: 'F[0].#subform[4].Report_Yes[0]' + }, + 'noReportFiled' => { # question_num: 11 + key: 'F[0].#subform[4].Report_No[0]' + }, + 'restrictedReport' => { # question_num: 11 + key: 'F[0].#subform[4].Restricted[0]' + }, + 'unrestrictedReport' => { # question_num: 11 + key: 'F[0].#subform[4].Unrestricted[0]' + }, + 'neitherReport' => { # question_num: 11 + key: 'F[0].#subform[4].Neither[0]' + }, + 'policeReport' => { # question_num: 11 + key: 'F[0].#subform[4].Police[0]' + }, + 'otherReport' => { # question_num: 11 + key: 'F[0].#subform[4].Other[1]' + }, + 'reportsDetails' => { + 'police' => { + key: 'F[0].#subform[4].Police_Report_Location_If_Known[0]', + limit: 68, + question_num: 11, + question_suffix: 'A', + question_text: 'Police Report Location' + }, + 'policeOverflow' => { + key: '', + question_num: 11, + question_suffix: 'A', + question_text: 'Police Report Location' + }, + 'other' => { + key: 'F[0].#subform[4].Other_Report[0]', + limit: 194, + question_num: 11, + question_suffix: 'B', + question_text: 'Other Report' + }, + 'otherOverflow' => { + key: '', + question_num: 11, + question_suffix: 'B', + question_text: 'Other Report' + } + }, + 'evidence' => { # question_num: 12 + 'crisisCenter' => { + key: 'F[0].#subform[4].A_Rape_Crisis_Center_Or_Center_For_Domestic_Abuse[0]' + }, + 'counseling' => { + key: 'F[0].#subform[4].A_Counseling_Facility_Or_Health_Clinic[0]' + }, + 'family' => { + key: 'F[0].#subform[4].Family_Member_Or_Roomates[0]' + }, + 'faculty' => { + key: 'F[0].#subform[4].A_Faculty_Member[0]' + }, + 'police' => { + key: 'F[0].#subform[4].Civilian_Police_Reports[0]' + }, + 'medical' => { + key: 'F[0].#subform[4].Medical_Reports_From_Civilian_Physicians_Or_Caregivers_Who_Treated_You_Immediately_Following_The_Incident_Or_Sometime_Later[0]' + }, + 'clergy' => { + key: 'F[0].#subform[4].A_Chaplain_Or_Clergy[0]' + }, + 'peers' => { + key: 'F[0].#subform[4].Fellow_Service_Members[0]' + }, + 'journal' => { + key: 'F[0].#subform[4].Personal_Diaries_Or_Journals[0]' + }, + 'none' => { + key: 'F[0].#subform[4].No_Evidence[0]' + }, + 'other' => { + key: 'F[0].#subform[4].Other_Specify_Below[0]' + }, + 'otherDetails' => { + key: 'F[0].#subform[4].Other_Evidence[0]', + limit: 100, + question_num: 12, + question_text: 'OTHER' + }, + 'otherDetailsOverflow' => { + key: '', + question_num: 12, + question_text: 'ADDITIONAL OTHER EVIDENCE DETAILS' + } + }, + 'treatment' => { # question_num: 13A + key: 'F[0].#subform[4].Treatment_Yes[0]' + }, + 'noTreatment' => { # question_num: 13A + key: 'F[0].#subform[4].Treatment_No[0]' + }, + 'treatmentProviders' => { # question_num: 13B + 'privateCare' => { + key: 'F[0].#subform[4].Private_Healthcare_Provider[0]' + }, + 'vetCenter' => { + key: 'F[0].#subform[4].VA_Vet_Center[0]' + }, + 'communityCare' => { + key: 'F[0].#subform[4].Community_Care_Paid_For_By_VA[0]' + }, + 'vamc' => { + key: 'F[0].#subform[4].VA_Medical_Center_And_Community_Based_Outpatient_Clinics[0]' + }, + 'cboc' => { + key: 'F[0].#subform[4].VA_Medical_Center_And_Community_Based_Outpatient_Clinics[0]' + }, + 'mtf' => { + key: 'F[0].#subform[4].Department_Of_Defense_Military_Treatment_Facilities[0]' + } + }, + 'treatmentProvidersDetails' => { + limit: 3, + first_key: 'facilityInfo', + question_text: 'TREATMENT INFORMATION', + question_num: 13, + 'facilityInfo' => { + key: "F[0].#subform[5].Name_And_Location_Of_Treatment_Facility[#{ITERATOR}]", + limit: 100 + }, + 'treatmentMonth' => { + key: "F[0].#subform[5].Date_Of_Treatment_Month[#{ITERATOR}]", + limit: 2 + }, + 'treatmentYear' => { + key: "F[0].#subform[5].Date_Of_Treatment_Year[#{ITERATOR}]", + limit: 4 + }, + 'noDates' => { + key: "F[0].#subform[5].Check_Box_Do_Not_Have_Date_s[#{ITERATOR}]" + }, + 'providerOverflow' => { + key: '', + question_text: 'TREATMENT INFORMATION', + question_num: 13, + question_suffix: 'C' + } + }, + 'additionalInformation' => { + key: 'F[0].#subform[5].Remarks_If_Any[0]', + limit: 1940, + question_num: 14, + question_text: 'REMARKS' + }, + 'additionalInformationOverflow' => { + key: '', + question_num: 14, + question_text: 'ADDITIONAL REMARKS' + }, + 'optionIndicator' => { # question_num: 15 + 'yes' => { + key: 'F[0].#subform[5].I_Consent_To_Have_VBA_Notify_VHA_About_Certain_Upcoming_Events_Related_To_My_Claim_And_Or_Appeal[0]' + }, + 'no' => { + key: 'F[0].#subform[5].I_Do_Not_Consent_To_Have_VBA_Notify_VHA_About_Certain_Upcoming_Events_Related_To_My_Claim_And_Or_Appeal[0]' + }, + 'revoke' => { + key: 'F[0].#subform[5].I_Revoke_Prior_Consent_To_Have_VBA_Notify_VHA_About_Certain_Upcoming_Events_Related_To_My_Claim_And_Or_Appeal[0]' + }, + 'notEnrolled' => { + key: 'F[0].#subform[5].Not_Applicable_And_Or_Not_Enrolled_In_VHA_Healthcare[0]' + } + }, + 'signature' => { + key: 'F[0].#subform[5].Signature[0]', + limit: 50, # TODO: This is a guess. Need to confirm. + question_num: 16, + question_suffix: 'A', + question_text: 'VETERAN/SERVICE MEMBER\'S SIGNATURE' + }, + 'signatureDate' => { + 'month' => { + key: 'F[0].#subform[5].Date_Signed_Month[0]', + limit: 2, + question_num: 16, + question_suffix: 'B', + question_text: 'DATE SIGNED. Enter 2 digit month.' + }, + 'day' => { + key: 'F[0].#subform[5].Date_Signed_Day[0]', + limit: 2, + question_num: 16, + question_suffix: 'B', + question_text: 'DATE SIGNED. Enter 2 digit day.' + }, + 'year' => { + key: 'F[0].#subform[5].Date_Signed_Year[0]', + limit: 4, + question_num: 16, + question_suffix: 'B', + question_text: 'DATE SIGNED. Enter 4 digit Year.' + } + } + }.freeze + # rubocop:enable Layout/LineLength + + def merge_fields(_options = {}) + @form_data['veteranFullName'] = extract_middle_i(@form_data, 'veteranFullName') + @form_data = expand_ssn(@form_data) + @form_data['veteranDateOfBirth'] = expand_veteran_dob(@form_data) + + split_phone(@form_data, 'veteranPhone') + + set_treatment_selection + set_reports_selection + + format_other_behavior_details + format_police_report_location + + expand_collection('eventsDetails', :format_event, 'eventOverflow') + expand_collection('treatmentProvidersDetails', :format_provider, 'providerOverflow') + + expand_signature(@form_data['veteranFullName'], @form_data['signatureDate']) + + formatted_date = DateTime.parse(@form_data['signatureDate']).strftime('%Y-%m-%d') + @form_data['signatureDate'] = split_date(formatted_date) + @form_data['signature'] = "/es/ #{@form_data['signature']}" + + @form_data + end + + private + + def split_phone(hash, key) + phone = hash[key] + return if phone.blank? + + phone = sanitize_phone(phone) + hash[key] = { + 'first' => phone[0..2], + 'second' => phone[3..5], + 'third' => phone[6..9] + } + end + + def sanitize_phone(phone) + phone.gsub('-', '') + end + + def set_treatment_selection + treated = @form_data['traumaTreatment'] + return if treated.nil? + + @form_data['treatment'] = treated ? 0 : 1 + @form_data['noTreatment'] = treated ? 0 : 1 + end + + def set_reports_selection + reports = @form_data['reports'] + return if reports.nil? + + @form_data['reportFiled'] = reports['yes'] ? 0 : nil + @form_data['noReportFiled'] = reports['no'] ? 1 : nil + @form_data['restrictedReport'] = reports['restricted'] ? 0 : nil + @form_data['unrestrictedReport'] = reports['unrestricted'] ? 1 : nil + @form_data['neitherReport'] = reports['neither'] ? 2 : nil + @form_data['policeReport'] = reports['police'] ? 3 : nil + @form_data['otherReport'] = reports['other'] ? 4 : nil + end + + def format_other_behavior_details + other_behavior = @form_data['behaviors']&.[]('otherBehavior') + return if other_behavior.blank? + + details = @form_data['behaviorsDetails']['otherBehavior'] + @form_data['behaviorsDetails']['otherBehavior'] = "#{other_behavior}: #{details}" + end + + def format_police_report_location + report = @form_data['reportsDetails']&.[]('police') + return if report.blank? + + @form_data['reportsDetails']['police'] = report.values.reject(&:empty?).join(', ') + end + + def expand_collection(collection, format_method, overflow_key) + collection = @form_data[collection] + return if collection.blank? + + collection.each_with_index do |item, index| + format_item_overflow(item, index + 1, format_method, overflow_key) + end + end + + def format_item_overflow(item, index, format_method, overflow_key) + item_overflow = send(format_method, item, index) + + return if item_overflow.blank? + + item[overflow_key] = PdfFill::FormValue.new('', item_overflow.compact.join("\n\n")) + end + + def format_event(event, index) + return if event.blank? + + event_overflow = ["Event Number: #{index}"] + event_details = event['details'] || '' + event_location = event['location'] || '' + event_timing = event['timing'] || '' + + event_overflow.push("Event Description: \n\n#{event_details}") + event_overflow.push("Event Location: \n\n#{event_location}") + event_overflow.push("Event Date: \n\n#{event_timing}") + + event_overflow + end + + def format_provider(provider, index) + return if provider.blank? + + provider_overflow = ["Treatment Information Number: #{index}"] + facility_info = provider['facilityInfo'] + month = provider['treatmentMonth'] || 'XX' + year = provider['treatmentYear'] || 'XXXX' + no_date = provider['noDates'] + + provider_overflow.push("Treatment Facility Name and Location: \n\n#{facility_info}") + provider_overflow.push(no_date ? "Treatment Date: Don't have date" : "Treatment Date: #{month}-#{year}") + + provider_overflow + end + end + end +end +# rubocop:enable Metrics/ClassLength diff --git a/lib/pdf_fill/forms/va21p530.rb b/lib/pdf_fill/forms/va21p530.rb deleted file mode 100644 index 640ad1121d4..00000000000 --- a/lib/pdf_fill/forms/va21p530.rb +++ /dev/null @@ -1,512 +0,0 @@ -# frozen_string_literal: true - -require 'pdf_fill/hash_converter' -require 'pdf_fill/forms/form_base' -require 'pdf_fill/forms/form_helper' -require 'string_helpers' - -# rubocop:disable Metrics/ClassLength -module PdfFill - module Forms - class Va21p530 < FormBase - include FormHelper - - ITERATOR = PdfFill::HashConverter::ITERATOR - - PLACE_OF_DEATH_KEY = { - 'vaMedicalCenter' => 'VA MEDICAL CENTER', - 'stateVeteransHome' => 'STATE VETERANS HOME', - 'nursingHome' => 'NURSING HOME UNDER VA CONTRACT' - }.freeze - - # rubocop:disable Layout/LineLength - KEY = { - 'burialAllowanceRequested' => { - 'checkbox' => { - 'nonService' => { - key: 'form1[0].#subform[37].Non-Service-ConnectedDeath[0]' - }, - 'service' => { - key: 'form1[0].#subform[37].Service-ConnectedDeath[0]' - }, - 'vaMC' => { - key: 'form1[0].#subform[37].UnclaimedRemains[0]' - } - } - }, - 'signature' => { - key: 'form1[0].#subform[37].CLAIMANT_SIGNATURE[0]', - limit: 45, - question_num: 20, - question_text: 'SIGNATURE OF CLAIMANT', - question_suffix: 'A' - }, - 'amountIncurred' => { - key: 'form1[0].#subform[37].COST_OF_BURIAL[0]', - question_num: 19, - dollar: true, - question_text: "EXPENSES INCURED FOR THE TRANSPORTATION OF THE VETERAN'S REMAINS FROM THE PLACE OF DEATH TO THE FINAL RESTING PLACE", - limit: 12 - }, - 'amountGovtContribution' => { - key: 'form1[0].#subform[37].AMOUNT[0]', - question_num: 18, - question_suffix: 'B', - dollar: true, - question_text: 'AMOUNT OF GOVERNMENT OR EMPLOYER CONTRIBUTION', - limit: 10 - }, - 'placeOfRemains' => { - key: 'form1[0].#subform[37].PLACE_OF_DEATH[1]', - limit: 80, - question_num: 16, - question_text: "PLACE OF BURIAL OR LOCATION OF DECEASED VETERAN'S REMAINS" - }, - 'hasGovtContributions' => { - key: 'form1[0].#subform[37].YES5[0]' - }, - 'noGovtContributions' => { - key: 'form1[0].#subform[37].NO5[0]' - }, - 'hasStateCemetery' => { - key: 'form1[0].#subform[37].YES4[2]' - }, - 'noStateCemetery' => { - key: 'form1[0].#subform[37].NO4[2]' - }, - 'hasFederalCemetery' => { - key: 'form1[0].#subform[37].YES4[0]' - }, - 'noFederalCemetery' => { - key: 'form1[0].#subform[37].NO4[0]' - }, - 'hasBenefitsUnclaimedRemains' => { - key: 'form1[0].#subform[37].YES4[4]' - }, - 'noBenefitsUnclaimedRemains' => { - key: 'form1[0].#subform[37].NO4[4]' - }, - 'hasPlotAllowance' => { - key: 'form1[0].#subform[37].YES4[1]' - }, - 'noPlotAllowance' => { - key: 'form1[0].#subform[37].NO4[1]' - }, - 'officialPosition' => { - key: 'officialPosition', - limit: 48, - question_num: 20, - question_suffix: 'B', - question_text: 'OFFICIAL POSITION OF PERSON SIGNING ON BEHALF OF FIRM, CORPORATION OR STATE AGENCY' - }, - 'hasBurialAllowance' => { - key: 'form1[0].#subform[37].YES4[3]' - }, - 'noBurialAllowance' => { - key: 'form1[0].#subform[37].NO4[3]' - }, - 'hasPreviouslyReceivedAllowance' => { - key: 'form1[0].#subform[37].YES2[0]' - }, - 'noPreviouslyReceivedAllowance' => { - key: 'form1[0].#subform[37].NO2[0]' - }, - 'locationOfDeath' => { - 'checkbox' => { - 'vaMedicalCenter' => { - key: 'form1[0].#subform[37].CheckBox1[1]' - }, - 'stateVeteransHome' => { - key: 'form1[0].#subform[37].CheckBox2[1]' - }, - 'nursingHome' => { - key: 'form1[0].#subform[37].CheckBox3[1]' - }, - 'other' => { - key: 'form1[0].#subform[37].CheckBox4[1]' - } - }, - 'other' => { - key: 'form1[0].#subform[37].OTHER_SPECIFY[1]', - question_num: 13, - question_suffix: 'B', - question_text: "WHERE DID THE VETERAN'S DEATH OCCUR?", - limit: 50 - } - }, - 'burialCost' => { - key: 'form1[0].#subform[37].COST_OF_BURIAL[1]', - limit: 12, - question_num: 13, - question_suffix: 'A', - question_text: 'If VA Medical Center Death is checked, provide actual burial cost' - }, - 'veteranFullName' => { - 'first' => { - key: 'form1[0].#subform[36].VeteransFirstName[0]', - limit: 12, - question_num: 1, - question_text: "DECEASED VETERAN'S FIRST NAME" - }, - 'middleInitial' => { - key: 'form1[0].#subform[36].VeteransMiddleInitial1[0]' - }, - 'last' => { - key: 'form1[0].#subform[36].VeteransLastName[0]', - limit: 18, - question_num: 1, - question_text: "DECEASED VETERAN'S LAST NAME" - } - }, - 'previousNames' => { - key: 'form1[0].#subform[36].OTHER_NAME[0]', - question_num: 12, - question_text: 'IF VETERAN SERVED UNDER NAME OTHER THAN THAT SHOWN IN ITEM 1, GIVE FULL NAME AND SERVICE RENDERED UNDER THAT NAME', - limit: 180 - }, - 'burialDate' => { - key: 'form1[0].#subform[36].DATE_OF_BURIAL[0]', - format: 'date' - }, - 'vaFileNumber' => { - key: 'form1[0].#subform[36].VAFileNumber[0]' - }, - 'placeOfDeath' => { - key: 'form1[0].#subform[36].PLACE_OF_DEATH[0]', - limit: 52, - question_num: 10, - question_suffix: 'B', - question_text: 'PLACE OF DEATH' - }, - 'claimantEmail' => { - key: 'form1[0].#subform[36].PreferredE_MailAddress[0]', - limit: 31, - question_num: 7, - question_text: 'PREFERRED E-MAIL ADDRESS' - }, - 'claimantFullName' => { - 'first' => { - key: 'form1[0].#subform[36].ClaimantsFirstName[0]', - limit: 12, - question_num: 4, - question_text: "CLAIMANT'S FIRST NAME" - }, - 'middleInitial' => { - key: 'form1[0].#subform[36].ClaimantsMiddleInitial1[0]' - }, - 'last' => { - key: 'form1[0].#subform[36].ClaimantsLastName[0]', - limit: 18, - question_num: 4, - question_text: "CLAIMANT'S LAST NAME" - } - }, - 'claimantAddress' => { - 'street' => { - key: 'form1[0].#subform[36].CurrentMailingAddress_NumberAndStreet[0]', - limit: 30, - question_num: 5, - question_text: "CLAIMANT'S ADDRESS - STREET" - }, - 'street2' => { - key: 'form1[0].#subform[36].CurrentMailingAddress_ApartmentOrUnitNumber[0]', - limit: 5, - question_num: 5, - question_text: "CLAIMANT'S ADDRESS - APT/UNIT NO." - }, - 'city' => { - key: 'form1[0].#subform[36].CurrentMailingAddress_City[0]', - limit: 18, - question_num: 5, - question_text: "CLAIMANT'S ADDRESS - CITY" - }, - 'state' => { - key: 'form1[0].#subform[36].CurrentMailingAddress_StateOrProvince[0]', - limit: 2, - question_num: 5, - question_text: "CLAIMANT'S ADDRESS - STATE" - }, - 'country' => { - key: 'form1[0].#subform[36].CurrentMailingAddress_Country[0]', - limit: 2, - question_num: 5, - question_text: "CLAIMANT'S ADDRESS - COUNTRY" - }, - 'postalCode' => { - 'firstFive' => { - key: 'form1[0].#subform[36].CurrentMailingAddress_ZIPOrPostalCode_FirstFiveNumbers[0]', - limit: 5, - question_num: 5, - question_text: "CLAIMANT'S ADDRESS - POSTAL CODE - FIRST FIVE" - }, - 'lastFour' => { - key: 'form1[0].#subform[36].CurrentMailingAddress_ZIPOrPostalCode_LastFourNumbers[0]', - limit: 4, - question: 5, - question_text: "CLAIMANT's ADDRESS - POSTAL CODE - LAST FOUR" - } - } - }, - 'relationship' => { - 'checkbox' => { - 'spouse' => { - key: 'form1[0].#subform[36].CheckBox1[0]' - }, - 'child' => { - key: 'form1[0].#subform[36].CheckBox2[0]' - }, - 'executor' => { - key: 'form1[0].#subform[36].CheckBox4[0]' - }, - 'other' => { - key: 'form1[0].#subform[36].CheckBox5[0]' - }, - 'parent' => { - key: 'form1[0].#subform[36].CheckBox3[0]' - } - }, - 'other' => { - limit: 58, - question_num: 8, - question_text: 'RELATIONSHIP OF CLAIMANT TO DECEASED VETERAN', - key: 'form1[0].#subform[36].OTHER_SPECIFY[0]' - } - }, - 'toursOfDuty' => { - limit: 3, - first_key: 'rank', - 'dateRangeStart' => { - key: "toursOfDuty.dateRangeStart[#{ITERATOR}]", - question_num: 11, - question_suffix: 'A', - question_text: 'ENTERED SERVICE (date)', - format: 'date' - }, - 'placeOfEntry' => { - key: "toursOfDuty.placeOfEntry[#{ITERATOR}]", - limit: 14, - question_num: 11, - question_suffix: 'A', - question_text: 'ENTERED SERVICE (place)' - }, - 'serviceNumber' => { - key: "toursOfDuty.serviceNumber[#{ITERATOR}]", - limit: 12, - question_num: 11, - question_suffix: 'B', - question_text: 'SERVICE NUMBER' - }, - 'dateRangeEnd' => { - key: "toursOfDuty.dateRangeEnd[#{ITERATOR}]", - question_num: 11, - question_suffix: 'C', - question_text: 'SEPARATED FROM SERVICE (date)', - format: 'date' - }, - 'placeOfSeparation' => { - key: "toursOfDuty.placeOfSeparation[#{ITERATOR}]", - question_num: 11, - question_suffix: 'C', - question_text: 'SEPARATED FROM SERVICE (place)', - limit: 15 - }, - 'rank' => { - key: "toursOfDuty.rank[#{ITERATOR}]", - question_num: 11, - question_suffix: 'D', - question_text: 'GRADE, RANK OR RATING, ORGANIZATION AND BRANCH OF SERVICE', - limit: 31 - } - }, - 'placeOfBirth' => { - key: 'form1[0].#subform[36].PLACE_OF_BIRTH[0]', - limit: 71, - question_num: 9, - question_suffix: 'B', - question_text: 'PLACE OF BIRTH' - }, - 'veteranDateOfBirth' => { - key: 'form1[0].#subform[36].DATE_OF_BIRTH[0]', - format: 'date' - }, - 'deathDate' => { - key: 'form1[0].#subform[36].DATE_OF_DEATH[0]', - format: 'date' - }, - 'claimantPhone' => { - 'first' => { - key: 'form1[0].#subform[36].PreferredTelephoneNumber_AreaCode[0]' - }, - 'second' => { - key: 'form1[0].#subform[36].PreferredTelephoneNumber_FirstThreeNumbers[0]' - }, - 'third' => { - key: 'form1[0].#subform[36].PreferredTelephoneNumber_LastFourNumbers[0]' - } - }, - 'veteranSocialSecurityNumber2' => { - 'first' => { - key: 'form1[0].#subform[37].VeteransSocialSecurityNumber_FirstThreeNumbers[1]' - }, - 'second' => { - key: 'form1[0].#subform[37].VeteransSocialSecurityNumber_SecondTwoNumbers[1]' - }, - 'third' => { - key: 'form1[0].#subform[37].VeteransSocialSecurityNumber_LastFourNumbers[1]' - } - }, - 'firmNameAndAddr' => { - key: 'form1[0].#subform[37].FULL_NAME[0]', - limit: 90, - question_num: 21, - question_text: 'FULL NAME AND ADDRESS OF THE FIRM, CORPORATION, OR STATE AGENCY FILING AS CLAIMANT' - }, - 'veteranSocialSecurityNumber' => { - 'first' => { - key: 'form1[0].#subform[36].VeteransSocialSecurityNumber_FirstThreeNumbers[0]' - }, - 'second' => { - key: 'form1[0].#subform[36].VeteransSocialSecurityNumber_SecondTwoNumbers[0]' - }, - 'third' => { - key: 'form1[0].#subform[36].VeteransSocialSecurityNumber_LastFourNumbers[0]' - } - } - }.freeze - # rubocop:enable Layout/LineLength - - def split_phone(hash, key) - phone = hash[key] - return if phone.blank? - - hash[key] = { - 'first' => phone[0..2], - 'second' => phone[3..5], - 'third' => phone[6..9] - } - end - - def split_postal_code(hash) - postal_code = hash['claimantAddress']['postalCode'] - return if postal_code.blank? - - hash['claimantAddress']['postalCode'] = { - 'firstFive' => postal_code[0..4], - 'lastFour' => postal_code[6..10] - } - end - - def expand_checkbox_in_place(hash, key) - hash.merge!(expand_checkbox(hash[key], StringHelpers.capitalize_only(key))) - end - - def expand_relationship(hash, key) - expand_checkbox_as_hash(hash[key], 'type') - end - - def expand_tours_of_duty(tours_of_duty) - return if tours_of_duty.blank? - - tours_of_duty.each do |tour_of_duty| - expand_date_range(tour_of_duty, 'dateRange') - tour_of_duty['rank'] = combine_hash(tour_of_duty, %w[serviceBranch rank], ', ') - end - end - - def expand_place_of_death - location_of_death = @form_data['locationOfDeath'] - return if location_of_death.blank? - - location = location_of_death['location'] - - @form_data['placeOfDeath'] = - if location == 'other' - location_of_death['other'] - else - PLACE_OF_DEATH_KEY[location] - end - end - - def expand_firm - if @form_data['relationship'].try(:[], 'isEntity') - combine_name_addr( - @form_data, - name_key: 'firmName', - address_key: 'claimantAddress', - combined_key: 'firmNameAndAddr' - ) - end - end - - def expand_burial_allowance - burial_allowance = @form_data['burialAllowanceRequested'] - return if burial_allowance.blank? - - @form_data['burialAllowanceRequested'] = { - 'value' => burial_allowance - } - - expand_checkbox_as_hash(@form_data['burialAllowanceRequested'], 'value') - end - - # VA file number can be up to 10 digits long; An optional leading 'c' or 'C' followed by - # 7-9 digits. The file number field on the 4142 form has space for 9 characters so trim the - # potential leading 'c' to ensure the file number will fit into the form without overflow. - def extract_va_file_number(va_file_number) - return va_file_number if va_file_number.blank? || va_file_number.length < 10 - - va_file_number.sub(/^[Cc]/, '') - end - - # rubocop:disable Metrics/MethodLength - def merge_fields(_options = {}) - expand_signature(@form_data['claimantFullName']) - - %w[veteranFullName claimantFullName].each do |attr| - extract_middle_i(@form_data, attr) - end - - ssn = @form_data['veteranSocialSecurityNumber'] - ['', '2'].each do |suffix| - @form_data["veteranSocialSecurityNumber#{suffix}"] = split_ssn(ssn) - end - - split_phone(@form_data, 'claimantPhone') - - split_postal_code(@form_data) - - expand_relationship(@form_data, 'relationship') - - expand_place_of_death - - expand_tours_of_duty(@form_data['toursOfDuty']) - - @form_data['previousNames'] = combine_previous_names(@form_data['previousNames']) - - @form_data['vaFileNumber'] = extract_va_file_number(@form_data['vaFileNumber']) - - expand_burial_allowance - - expand_firm - - expand_checkbox_as_hash(@form_data['locationOfDeath'], 'location') - - %w[ - previouslyReceivedAllowance - burialAllowance - plotAllowance - benefitsUnclaimedRemains - federalCemetery - stateCemetery - govtContributions - ].each do |attr| - expand_checkbox_in_place(@form_data, attr) - end - - @form_data - end - # rubocop:enable Metrics/MethodLength - end - end -end -# rubocop:enable Metrics/ClassLength diff --git a/lib/pdf_fill/forms/va21p530v2.rb b/lib/pdf_fill/forms/va21p530ez.rb similarity index 99% rename from lib/pdf_fill/forms/va21p530v2.rb rename to lib/pdf_fill/forms/va21p530ez.rb index 1592cfe23a3..c8b04ab3bad 100644 --- a/lib/pdf_fill/forms/va21p530v2.rb +++ b/lib/pdf_fill/forms/va21p530ez.rb @@ -8,7 +8,7 @@ # rubocop:disable Metrics/ClassLength module PdfFill module Forms - class Va21p530v2 < FormBase + class Va21p530ez < FormBase include FormHelper ITERATOR = PdfFill::HashConverter::ITERATOR diff --git a/lib/periodic_jobs.rb b/lib/periodic_jobs.rb index 7f76e0ee6f3..e1e8273f2c0 100644 --- a/lib/periodic_jobs.rb +++ b/lib/periodic_jobs.rb @@ -1,5 +1,7 @@ # frozen_string_literal: true +require 'holidays' + # @see https://crontab.guru/ # @see https://en.wikipedia.org/wiki/Cron PERIODIC_JOBS = lambda { |mgr| # rubocop:disable Metrics/BlockLength @@ -249,10 +251,8 @@ # Daily 0000 hrs job for Vye: performs ingress of state from BDN & TIMS. mgr.register('15 00 * * 1-5', 'Vye::MidnightRun::IngressBdn') mgr.register('45 03 * * 1-5', 'Vye::MidnightRun::IngressTims') - # Daily 0600 hrs job for Vye: activates ingressed state, and egresses the changes for the day. mgr.register('45 05 * * 1-5', 'Vye::DawnDash') - - # Daily job for Vye: clears deactivated BDNs every evening. + # Daily 1900 job for Vye: clears deactivated BDNs every evening. mgr.register('00 19 * * 1-5', 'Vye::SundownSweep') } diff --git a/lib/saml/post_url_service.rb b/lib/saml/post_url_service.rb index 43f28e11b82..73f9d834500 100644 --- a/lib/saml/post_url_service.rb +++ b/lib/saml/post_url_service.rb @@ -113,7 +113,7 @@ def terms_of_use_url "#{base_redirect_url}/terms-of-use" end - if current_application.in?(SKIP_MHV_ACCOUNT_CREATION_CLIENTS) + if current_application.in?(SKIP_MHV_ACCOUNT_CREATION_CLIENTS) || @tracker&.payload_attr(:type) == 'custom' base_url = add_query(base_url, { skip_mhv_account_creation: true }) end diff --git a/lib/va_profile/models/v3/address.rb b/lib/va_profile/models/v3/address.rb index d473da25864..dfcae4ed5e3 100644 --- a/lib/va_profile/models/v3/address.rb +++ b/lib/va_profile/models/v3/address.rb @@ -82,9 +82,9 @@ def self.build_from(body) bad_address: body['bad_address'], city: body['city_name'], country_name: body.dig('country', 'country_name'), - country_code_iso2: body.dig('country', 'iso_2_code'), + country_code_iso2: body.dig('country', 'country_code_iso2'), country_code_iso3: body.dig('country', 'country_code_iso3'), - fipsCode: body.dig('country', 'fips_code'), + fips_code: body.dig('country', 'country_code_fips'), county_code: body.dig('county', 'county_code'), county_name: body.dig('county', 'county_name'), created_at: body['create_date'], diff --git a/lib/va_profile/models/v3/validation_address.rb b/lib/va_profile/models/v3/validation_address.rb index a238b5ddf6a..795cd1eb93c 100644 --- a/lib/va_profile/models/v3/validation_address.rb +++ b/lib/va_profile/models/v3/validation_address.rb @@ -23,7 +23,7 @@ def address_validation_req cityName: @city, zipCode5: @zip_code, zipCode4: @zip_code_suffix, - country: { countryCodeISO2: @country_code_iso2, countryCodeISO3: @country_code_iso3, + country: { countryCodeISO3: @country_code_iso3, countryName: @country_name, countryCodeFIPS: @country_code_fips }, state: { stateCode: @state_code, stateName: @state_name }, province: { provinceName: @province_name, provinceCode: @province_code }, diff --git a/lib/vye/dgib/authentication_token_service.rb b/lib/vye/dgib/authentication_token_service.rb new file mode 100644 index 00000000000..2f48056c69a --- /dev/null +++ b/lib/vye/dgib/authentication_token_service.rb @@ -0,0 +1,29 @@ +# frozen_string_literal: true + +module Vye + module DGIB + class AuthenticationTokenService + ALGORITHM_TYPE = 'RS256' + E = 'AQAB' + TYP = 'JWT' + KID = 'vye' + USE = 'sig' + SIGNING_KEY = Settings.dgi.vye.jwt.private_key_path + RSA_PRIVATE = OpenSSL::PKey::RSA.new(File.read(SIGNING_KEY)) + + def self.call + payload = { + exp: 5.minutes.from_now.to_i, # JWT expiration time (5 minutes) + nbf: Time.now.to_i, + realm_access: { + roles: ['VYE'] + } + } + + header_fields = { kid: KID, typ: TYP } + + JWT.encode payload, RSA_PRIVATE, ALGORITHM_TYPE, header_fields + end + end + end +end diff --git a/lib/vye/dgib/configuration.rb b/lib/vye/dgib/configuration.rb new file mode 100644 index 00000000000..36616a18d15 --- /dev/null +++ b/lib/vye/dgib/configuration.rb @@ -0,0 +1,32 @@ +# frozen_string_literal: true + +module Vye + module DGIB + class Configuration < Common::Client::Configuration::REST + def connection + @conn ||= Faraday.new(base_path, headers: base_request_headers, request: request_options) do |faraday| + faraday.use :breakers + faraday.ssl[:ca_file] = Settings.dgi.vye.jwt.public_ica11_rca2_key_path + faraday.request :json + faraday.use Faraday::Response::RaiseError + faraday.response :betamocks if mock_enabled? + faraday.response :snakecase, symbolize: false + faraday.response :json, content_type: /\bjson$/ # ensures only json content types parsed + faraday.adapter Faraday.default_adapter + end + end + + def base_path + Settings.dgi.vye.vets.url.to_s + end + + def service_name + 'VYE/DGIB' + end + + def mock_enabled? + Settings.dgi.vye.vets.mock || false + end + end + end +end diff --git a/lib/vye/dgib/response.rb b/lib/vye/dgib/response.rb new file mode 100644 index 00000000000..fe28fa37d75 --- /dev/null +++ b/lib/vye/dgib/response.rb @@ -0,0 +1,114 @@ +# frozen_string_literal: true + +require 'common/client/concerns/service_status' +require 'common/models/base' + +module Vye + module DGIB + class Response < Common::Base + include Common::Client::Concerns::ServiceStatus + + attribute :status, Integer + + def initialize(status, attributes = nil) + super(attributes) if attributes + self.status = status + end + + def ok? + status == 200 + end + + def cache? + ok? + end + + def metadata + { status: response_status } + end + + def response_status + case status + when 200 + RESPONSE_STATUS[:ok] + when 204 + RESPONSE_STATUS[:no_content] + when 403 + RESPONSE_STATUS[:not_authorized] + when 404 + RESPONSE_STATUS[:not_found] + when 500 + RESPONSE_STATUS[:internal_server_error] + else + RESPONSE_STATUS[:server_error] + end + end + end + + class ClaimantStatusResponse < Response + attribute :claimant_id, Integer + attribute :delimiting_date, String + attribute :verified_details, Array + attribute :payment_on_hold, Boolean + + def initialize(status, response = nil) + attributes = { + claimant_id: response.body['claimant_id'], + delimiting_date: response.body['delimiting_date'], + verified_details: response.body['verified_details'], + payment_on_hold: response.body['payment_on_hold'] + } + + super(status, attributes) + end + end + + class ClaimantLookupResponse < Response + attribute :claimant_id, Integer + + def initialize(status, response = nil) + attributes = { claimant_id: response.body['claimant_id'] } + + super(status, attributes) + end + end + + class VerificationRecordResponse < Response + attribute :claimant_id, Integer + attribute :delimiting_date, String + attribute :enrollment_verifications, Array + attribute :verified_details, Array + attribute :payment_on_hold, Boolean + + def initialize(status, response = nil) + attributes = { + claimant_id: response.body['claimant_id'], + delimiting_date: response.body['delimiting_date'], + enrollment_verifications: response.body['enrollment_verifications'], + verified_details: response.body['verified_details'], + payment_on_hold: response.body['payment_on_hold'] + } + + super(status, attributes) + end + end + + class VerifyClaimantResponse < Response + attribute :claimant_id, Integer + attribute :delimiting_date, String + attribute :verified_details, Array + attribute :payment_on_hold, Boolean + + def initialize(status, response = nil) + attributes = { + claimant_id: response.body['claimant_id'], + delimiting_date: response.body['delimiting_date'], + verified_details: response.body['verified_details'], + payment_on_hold: response.body['payment_on_hold'] + } + + super(status, attributes) + end + end + end +end diff --git a/lib/vye/dgib/service.rb b/lib/vye/dgib/service.rb new file mode 100644 index 00000000000..6a3b7761527 --- /dev/null +++ b/lib/vye/dgib/service.rb @@ -0,0 +1,119 @@ +# frozen_string_literal: true + +require 'common/client/base' +require_relative 'configuration' +require_relative 'response' +require_relative 'authentication_token_service' + +module Vye + module DGIB + class Service < Common::Client::Base + include Common::Client::Concerns::Monitoring + + STATSD_KEY_PREFIX = 'api.vye.dgib' + configuration Vye::DGIB::Configuration + + def initialize(user) + @user = user + end + + def camelize_keys_for_java_service(params) + local_params = params[0] || params + + local_params.permit!.to_h.deep_transform_keys do |key| + if key.include?('_') + split_keys = key.split('_') + split_keys.collect { |key_part| split_keys[0] == key_part ? key_part : key_part.capitalize }.join + else + key + end + end + end + + def claimant_lookup(ssn) + params = ActionController::Parameters.new({ ssn: }) + with_monitoring do + headers = request_headers + options = { timeout: 60 } + response = perform(:post, claimant_lookup_end_point, camelize_keys_for_java_service(params).to_json, headers, + options) + ClaimantLookupResponse.new(response.status, response) + end + end + + def get_claimant_status(claimant_id) + with_monitoring do + headers = request_headers + options = { timeout: 60 } + raw_response = perform(:get, claimant_status_end_point(claimant_id), {}, headers, options) + ClaimantStatusRecordResponse.new(raw_response.status, raw_response) + end + end + + # rubocop:disable Metrics/ParameterLists + def verify_claimant( + claimant_id, + verified_period_begin_date, + verified_period_end_date, + verified_through_date, + verification_method, + response_type + ) + params = ActionController::Parameters.new({ + claimant_id:, + verified_period_begin_date:, + verified_period_end_date:, + verified_through_date:, + verification_method:, + app_communication: { response_type: } + }) + # rubocop:enable Metrics/ParameterLists + + with_monitoring do + headers = request_headers + options = { timeout: 60 } + response = perform(:post, verify_claimant_end_point, camelize_keys_for_java_service(params).to_json, headers, + options) + VerifyClaimantResponse.new(response.status, response) + end + end + + def get_verification_record(claimant_id) + with_monitoring do + headers = request_headers + options = { timeout: 60 } + raw_response = perform(:get, verification_record_end_point(claimant_id), {}, headers, options) + VerificationRecordResponse.new(raw_response.status, raw_response) + end + end + + private + + def claimant_lookup_end_point + 'dgi/vye/claimantLookup' + end + + def claimant_status_end_point(claimant_id) + "verifications/vye/#{claimant_id}/status" + end + + def verify_claimant_end_point + 'verifications/vye/verify' + end + + def verification_record_end_point(claimant_id) + "verifications/vye/#{claimant_id}/verification-record" + end + + def json + nil + end + + def request_headers + { + Authorization: "Bearer #{AuthenticationTokenService.call}" + } + end + end + end +end diff --git a/modules/accredited_representative_portal/accredited_representative_portal.gemspec b/modules/accredited_representative_portal/accredited_representative_portal.gemspec index 7cc5214cfb9..59ff0751b94 100644 --- a/modules/accredited_representative_portal/accredited_representative_portal.gemspec +++ b/modules/accredited_representative_portal/accredited_representative_portal.gemspec @@ -18,5 +18,7 @@ Gem::Specification.new do |spec| spec.files = Dir['{app,config,db,lib}/**/*', 'Rakefile', 'README.md'] spec.test_files = Dir['spec/**/*'] + + spec.add_dependency 'blind_index' spec.add_development_dependency 'rspec-rails' end diff --git a/modules/accredited_representative_portal/lib/accredited_representative_portal/engine.rb b/modules/accredited_representative_portal/lib/accredited_representative_portal/engine.rb index 5749fae6814..9d1284ad819 100644 --- a/modules/accredited_representative_portal/lib/accredited_representative_portal/engine.rb +++ b/modules/accredited_representative_portal/lib/accredited_representative_portal/engine.rb @@ -5,6 +5,16 @@ class Engine < ::Rails::Engine isolate_namespace AccreditedRepresentativePortal config.generators.api_only = true + # So that the app-wide migration command notices our engine's migrations. + initializer :append_migrations do |app| + unless app.root.to_s.match? root.to_s + config.paths['db/migrate'].expanded.each do |expanded_path| + app.config.paths['db/migrate'] << expanded_path + ActiveRecord::Migrator.migrations_paths << expanded_path + end + end + end + initializer 'model_core.factories', after: 'factory_bot.set_factory_paths' do FactoryBot.definition_file_paths << File.expand_path('../../spec/factories', __dir__) if defined?(FactoryBot) end diff --git a/modules/burials/lib/burials/engine.rb b/modules/burials/lib/burials/engine.rb index 592a60646a0..dbbb99afce0 100644 --- a/modules/burials/lib/burials/engine.rb +++ b/modules/burials/lib/burials/engine.rb @@ -20,10 +20,10 @@ class Engine < ::Rails::Engine # initializer 'burials.pdf_fill.register_form' do |app| # app.config.to_prepare do # require 'pdf_fill/filler' - # require_relative '../pdf_fill/va21p530v2' + # require_relative '../pdf_fill/va21p530ez' # # Register our Burial Pdf Fill form - # ::PdfFill::Filler.register_form(Burials::PdfFill::Va21p530v2::FORM_ID, Burials::PdfFill::Va21p530v2) + # ::PdfFill::Filler.register_form(Burials::PdfFill::Va21p530ez::FORM_ID, Burials::PdfFill::Va21p530ez) # end # end @@ -33,7 +33,7 @@ class Engine < ::Rails::Engine require_relative '../benefits_intake/submission_handler' # Register our Pension Benefits Intake Submission Handler - ::BenefitsIntake::SubmissionStatusJob.register_handler('21P-530V2', Burials::BenefitsIntake::SubmissionHandler) + ::BenefitsIntake::SubmissionStatusJob.register_handler('21P-530EZ', Burials::BenefitsIntake::SubmissionHandler) ::BenefitsIntake::SubmissionStatusJob.register_handler('21P-530', Burials::BenefitsIntake::SubmissionHandler) end end diff --git a/modules/burials/lib/zero_silent_failures/manual_remediation.rb b/modules/burials/lib/zero_silent_failures/manual_remediation.rb index 4d1c4438299..5989368aaab 100644 --- a/modules/burials/lib/zero_silent_failures/manual_remediation.rb +++ b/modules/burials/lib/zero_silent_failures/manual_remediation.rb @@ -27,13 +27,12 @@ def stamps(timestamp) } ] - burials += v2_stamps(timestamp) if ['21P-530V2'].include?(claim.form_id) + burials += submitted_stamp(timestamp) base + burials end - # specific stamps for burials v2 - def v2_stamps(timestamp) + def submitted_stamp(timestamp) [ { text: 'Application Submitted on va.gov', diff --git a/modules/burials/spec/lib/zero_silent_failures/manual_remediation_spec.rb b/modules/burials/spec/lib/zero_silent_failures/manual_remediation_spec.rb index c37865685f6..56156116f8b 100644 --- a/modules/burials/spec/lib/zero_silent_failures/manual_remediation_spec.rb +++ b/modules/burials/spec/lib/zero_silent_failures/manual_remediation_spec.rb @@ -3,7 +3,7 @@ require 'rails_helper' RSpec.describe Burials::ZeroSilentFailures::ManualRemediation do - let(:fake_claim) { FactoryBot.build(:burial_claim_v2) } + let(:fake_claim) { FactoryBot.build(:burial_claim) } context 'method override coverage' do it 'uses expected claim class' do diff --git a/modules/claims_api/app/clients/claims_api/bgs_client/definitions.rb b/modules/claims_api/app/clients/claims_api/bgs_client/definitions.rb index 70e52916706..d478bd2bfd2 100644 --- a/modules/claims_api/app/clients/claims_api/bgs_client/definitions.rb +++ b/modules/claims_api/app/clients/claims_api/bgs_client/definitions.rb @@ -108,7 +108,7 @@ module UpdatePoaAccess ## # EBenefitsBnftClaimStatusWebServiceBean # - module EBenefitsBnftClaimStatusWebService + module EBenefitsBenefitClaimStatusWebServiceBean DEFINITION = Bean.new( path: 'EBenefitsBnftClaimStatusWebServiceBean', @@ -119,6 +119,14 @@ module EBenefitsBnftClaimStatusWebService ) end + module EBenefitsBenefitClaimStatusWebService + DEFINITION = + Service.new( + bean: EBenefitsBenefitClaimStatusWebServiceBean::DEFINITION, + path: 'EBenefitsBnftClaimStatusWebService' + ) + end + ## # IntentToFileWebServiceBean # diff --git a/modules/claims_api/app/controllers/claims_api/v1/forms/disability_compensation_controller.rb b/modules/claims_api/app/controllers/claims_api/v1/forms/disability_compensation_controller.rb index 80d9a5e598d..d7e80699dcd 100644 --- a/modules/claims_api/app/controllers/claims_api/v1/forms/disability_compensation_controller.rb +++ b/modules/claims_api/app/controllers/claims_api/v1/forms/disability_compensation_controller.rb @@ -56,6 +56,14 @@ def submit_form_526 # rubocop:disable Metrics/MethodLength ClaimsApi::Logger.log('526', claim_id: auto_claim.id, detail: 'Submitted to Lighthouse', pdf_gen_dis: form_attributes['autoCestPDFGenerationDisabled']) + form_attributes['disabilities'].each do |disability| + if disability['classificationCode'].present? + ClaimsApi::Logger.log('526_classification_code', + classification_code: disability['classificationCode'], + cid: token.payload['cid'], version: 'v1') + end + end + # .create returns the resulting object whether the object was saved successfully to the database or not. # If it's lacking the ID, that means the create was unsuccessful and an identical claim already exists. # Find and return that claim instead. diff --git a/modules/claims_api/app/controllers/claims_api/v2/veterans/disability_compensation_controller.rb b/modules/claims_api/app/controllers/claims_api/v2/veterans/disability_compensation_controller.rb index aa510565235..57d6c119d36 100644 --- a/modules/claims_api/app/controllers/claims_api/v2/veterans/disability_compensation_controller.rb +++ b/modules/claims_api/app/controllers/claims_api/v2/veterans/disability_compensation_controller.rb @@ -117,7 +117,7 @@ def synchronous private - def shared_submit_methods + def shared_submit_methods # rubocop:disable Metrics/MethodLength auto_claim = ClaimsApi::AutoEstablishedClaim.create( status: ClaimsApi::AutoEstablishedClaim::PENDING, auth_headers:, form_data: form_attributes, @@ -133,6 +133,14 @@ def shared_submit_methods ) end + form_attributes['disabilities'].each do |disability| + if disability['classificationCode'].present? + ClaimsApi::Logger.log('526_classification_code', + classification_code: disability['classificationCode'], + cid: token.payload['cid'], version: 'v2') + end + end + track_pact_counter auto_claim auto_claim diff --git a/modules/claims_api/app/controllers/claims_api/v2/veterans/power_of_attorney/request_controller.rb b/modules/claims_api/app/controllers/claims_api/v2/veterans/power_of_attorney/request_controller.rb index 9f14f002553..4065535db86 100644 --- a/modules/claims_api/app/controllers/claims_api/v2/veterans/power_of_attorney/request_controller.rb +++ b/modules/claims_api/app/controllers/claims_api/v2/veterans/power_of_attorney/request_controller.rb @@ -123,6 +123,8 @@ def validate_decide_params!(proc_id:, decision:) end def send_declined_notification(ptcpnt_id:, first_name:, representative_id:) + return unless Flipper.enabled?(:lighthouse_claims_api_v2_poa_va_notify) + lockbox = Lockbox.new(key: Settings.lockbox.master_key) encrypted_ptcpnt_id = Base64.strict_encode64(lockbox.encrypt(ptcpnt_id)) encrypted_first_name = Base64.strict_encode64(lockbox.encrypt(first_name)) diff --git a/modules/claims_api/app/controllers/concerns/claims_api/v2/claims_requests/supporting_documents.rb b/modules/claims_api/app/controllers/concerns/claims_api/v2/claims_requests/supporting_documents.rb index ddcba750d52..16873c01279 100644 --- a/modules/claims_api/app/controllers/concerns/claims_api/v2/claims_requests/supporting_documents.rb +++ b/modules/claims_api/app/controllers/concerns/claims_api/v2/claims_requests/supporting_documents.rb @@ -93,19 +93,12 @@ def use_birls_id_file_number? end def find_by_ssn(ssn) - if Flipper.enabled? :claims_api_use_person_web_service - # rubocop:disable Rails/DynamicFindBy - ClaimsApi::PersonWebService.new( - external_uid: target_veteran.participant_id, - external_key: target_veteran.participant_id - ).find_by_ssn(ssn) - else - ClaimsApi::LocalBGS.new( - external_uid: target_veteran.participant_id, - external_key: target_veteran.participant_id - ).find_by_ssn(ssn) - # rubocop:enable Rails/DynamicFindBy - end + # rubocop:disable Rails/DynamicFindBy + ClaimsApi::PersonWebService.new( + external_uid: target_veteran.participant_id, + external_key: target_veteran.participant_id + ).find_by_ssn(ssn) + # rubocop:enable Rails/DynamicFindBy end end end diff --git a/modules/claims_api/app/services/claims_api/power_of_attorney_request_service/create_request.rb b/modules/claims_api/app/services/claims_api/power_of_attorney_request_service/create_request.rb index 4db6b831fa0..f8d88965b0d 100644 --- a/modules/claims_api/app/services/claims_api/power_of_attorney_request_service/create_request.rb +++ b/modules/claims_api/app/services/claims_api/power_of_attorney_request_service/create_request.rb @@ -27,26 +27,33 @@ def initialize(veteran_participant_id, form_data, claimant_participant_id = nil, end def call + # https://github.com/DataDog/dd-trace-rb/blob/master/docs/UpgradeGuide.md#distributed-tracing + trace_digest = Datadog::Tracing.active_trace&.to_digest + @vnp_proc_id = create_vnp_proc[:vnp_proc_id] # Parallelize create_vnp_form and create_vnp_ptcpnt form_promise = Concurrent::Promise.execute do - create_vnp_form + Datadog::Tracing.continue_trace!(trace_digest) do + create_vnp_form + end end ptcpnt_promise = Concurrent::Promise.execute do - create_vnp_ptcpnt(@veteran_participant_id) + Datadog::Tracing.continue_trace!(trace_digest) do + create_vnp_ptcpnt(@veteran_participant_id) + end end # Wait for both promises and store the participant ID form_promise.value! @veteran_vnp_ptcpnt_id = ptcpnt_promise.value![:vnp_ptcpnt_id] - create_vonapp_data(@form_data[:veteran], @veteran_vnp_ptcpnt_id) + create_vonapp_data(@form_data[:veteran], @veteran_vnp_ptcpnt_id, trace_digest) if @has_claimant @claimant_vnp_ptcpnt_id = create_vnp_ptcpnt(@claimant_participant_id)[:vnp_ptcpnt_id] - create_vonapp_data(@form_data[:claimant], @claimant_vnp_ptcpnt_id) + create_vonapp_data(@form_data[:claimant], @claimant_vnp_ptcpnt_id, trace_digest) end create_veteran_representative @@ -54,26 +61,34 @@ def call private - def create_vonapp_data(person, vnp_ptcpnt_id) + def create_vonapp_data(person, vnp_ptcpnt_id, trace_digest) # rubocop:disable Metrics/MethodLength promises = [] promises << Concurrent::Promise.execute do - create_vnp_person(person, vnp_ptcpnt_id) + Datadog::Tracing.continue_trace!(trace_digest) do + create_vnp_person(person, vnp_ptcpnt_id) + end end promises << Concurrent::Promise.execute do - create_vnp_mailing_address(person[:address], vnp_ptcpnt_id) + Datadog::Tracing.continue_trace!(trace_digest) do + create_vnp_mailing_address(person[:address], vnp_ptcpnt_id) + end end if person[:email] promises << Concurrent::Promise.execute do - create_vnp_email_address(person[:email], vnp_ptcpnt_id) + Datadog::Tracing.continue_trace!(trace_digest) do + create_vnp_email_address(person[:email], vnp_ptcpnt_id) + end end end if person[:phone] promises << Concurrent::Promise.execute do - create_vnp_phone(person[:phone][:areaCode], person[:phone][:phoneNumber], vnp_ptcpnt_id) + Datadog::Tracing.continue_trace!(trace_digest) do + create_vnp_phone(person[:phone][:areaCode], person[:phone][:phoneNumber], vnp_ptcpnt_id) + end end end diff --git a/modules/claims_api/app/swagger/claims_api/description/v2.md b/modules/claims_api/app/swagger/claims_api/description/v2.md index ca728da0d8a..4304613d734 100644 --- a/modules/claims_api/app/swagger/claims_api/description/v2.md +++ b/modules/claims_api/app/swagger/claims_api/description/v2.md @@ -28,25 +28,25 @@ End-to-end claims tracking provides the status of claims as they move through th ### Claim statuses -Claims are first submitted by this API and then established in Veterans Benefits Management System (VBMS). A 200 response means that the claim was successfully submitted by the API. It does not mean VA has received the claim. Use the appropriate GET endpoint and the ID returned with your submission response to confirm the status of the submission. Statuses are: +After you submit a disability compensation claim with the `POST /veterans/{veteranId}/526/synchronous` endpoint, it is then established in Veterans Benefits Management System (VBMS). A `202` response means that the claim was successfully submitted by the API. However, it does not mean VA has received the required 526EZ PDF. -- Pending - the claim is successfully submitted for processing -- Errored - the submission encountered upstream errors -- Canceled - the claim was identified as a duplicate or another issue caused the claim to be canceled. For duplicate claims, the tracking of the claim's progress happens under a different Claim ID . +To confirm the status of your submission, use the `GET /veterans/{veteranId}/claims/{id}` endpoint and the ID returned with your submission response. Statuses are: -Other statuses this API returns align with the [VA.gov](http://va.gov/) [claim status descriptions](https://www.va.gov/resources/what-your-claim-status-means/), which are: - -- Claim received -- Initial review -- Evidence gathering, review, and decision -- Preparation for notification -- Complete +* **Pending**: The claim is successfully submitted for processing +* **Errored**: The submission encountered upstream errors +* **Canceled**: The claim was identified as a duplicate, or another issue caused the claim to be canceled. + * For duplicate claims, the claim's progress is tracked under a different Claim ID than the one returned in your submission response. +* **Claim received**: The claim was received, but hasn't been assigned to a reviewer yet. +* **Initial review**: The claim has been assigned to a reviewer, who will determine if more information is needed. +* **Evidence gathering, review, and decision**: VA is gathering evidence to make a decision from health care providers, government agencies, and other sources. +* **Preparation for notification**: VA has made a decision on the claim, and is getting a decision letter ready to mail. +* **Complete**: VA has sent a decision letter by U.S. mail. ### Finding a Veteran's unique VA ID -This API uses a unique Veteran identifier to identify the subject of each API request. This Veteran identifier can be retrieved by passing the Veteran’s first name, last name, DOB, and SSN to the ‘/veteran-id’ endpoint. This identifier should then be used as the Veteran ID parameter in request URLs. +This API uses Inegration Control Number (ICN) as a unique Veteran identifier to identify the subject of each API request. This identifier should be used as the `{veteranId}` parameter in request URLs. -Note: though Veteran identifiers are typically static, they may change over time. If a specific Veteran ID suddenly responds with a ‘404 not found’ error, the identifier may have changed. It’s a good idea to periodically check the identifier for each Veteran. +**Note**: though ICNs are typically static, they may change over time. If a specific ICN suddenly responds with a `404 not found` error, it may have changed. It’s a good idea to periodically check the ICN for each Veteran. ### Authentication and authorization diff --git a/modules/claims_api/app/swagger/claims_api/v2/dev/swagger.json b/modules/claims_api/app/swagger/claims_api/v2/dev/swagger.json index 6a745e9fa67..6c7e7cf2b5f 100644 --- a/modules/claims_api/app/swagger/claims_api/v2/dev/swagger.json +++ b/modules/claims_api/app/swagger/claims_api/v2/dev/swagger.json @@ -3,13 +3,9 @@ "info": { "title": "Benefits Claims", "version": "v2", - "description": "## Background\n\nThe Benefits Claims API Version 2 lets internal consumers: \n\n- Retrieve existing claim information, including status, by claim ID.\n- Automatically establish an Intent To File (21-0966) in VBMS.\n- Automatically establish a disability compensation claim (21-526EZ) in VBMS.\n- Digitally submit supporting documentation for disability compensation claims.\n- Retrieve the active Power of Attorney organization of individual with power of attorney for a claimant.\n- Automatically establish a power of attorney appointment in VBMS for an accredited organization (VA Form 21-22).\n- Automatically establish a power of attorney appointment in VBMS for an accredited individual (VA Form 21-22a).\n\nYou should use the [Benefits Claims API Version 1](https://developer.va.gov/explore/benefits/docs/claims?version=current) if you are a consumer outside of VA and do not have the necessary VA agreements to use this API.\n \n## Appointing an accredited representative for dependents\n\nDependents of Veterans, such as spouses, children (biological and step), and parents (biological and foster) may be eligible for VA benefits and can request representation by an accredited representative.\n\nTo file claims through an accredited representative, dependents must appoint their own. Once appointed, the representative will have power of attorney (POA) to assist with the dependentʼs VA claims.\n\nBefore appointing a representative, the dependentʼs relationship to the Veteran must be established. If a new representative is being appointed, the dependentʼs relationship to the Veteran will be validated first. The representative will be appointed to the dependent, not the Veteran.\n\n## Technical Overview\n\nThis API accepts a payload of requests and responses with the payload identifying the claim and Veteran. Responses provide the submission’s processing status. Responses also provide a unique ID which can be used with the appropriate GET endpoint to return detailed, end-to-end claims status tracking. \n\nEnd-to-end claims tracking provides the status of claims as they move through the submission process, but does not return whether the claim was approved or denied. \n\n### Claim statuses\n\nClaims are first submitted by this API and then established in Veterans Benefits Management System (VBMS). A 200 response means that the claim was successfully submitted by the API. It does not mean VA has received the claim. Use the appropriate GET endpoint and the ID returned with your submission response to confirm the status of the submission. Statuses are:\n\n- Pending - the claim is successfully submitted for processing\n- Errored - the submission encountered upstream errors\n- Canceled - the claim was identified as a duplicate or another issue caused the claim to be canceled. For duplicate claims, the tracking of the claim's progress happens under a different Claim ID . \n\nOther statuses this API returns align with the [VA.gov](http://va.gov/) [claim status descriptions](https://www.va.gov/resources/what-your-claim-status-means/), which are:\n\n- Claim received\n- Initial review\n- Evidence gathering, review, and decision\n- Preparation for notification\n- Complete\n\n### Finding a Veteran's unique VA ID\n\nThis API uses a unique Veteran identifier to identify the subject of each API request. This Veteran identifier can be retrieved by passing the Veteran’s first name, last name, DOB, and SSN to the ‘/veteran-id’ endpoint. This identifier should then be used as the Veteran ID parameter in request URLs.\n\nNote: though Veteran identifiers are typically static, they may change over time. If a specific Veteran ID suddenly responds with a ‘404 not found’ error, the identifier may have changed. It’s a good idea to periodically check the identifier for each Veteran.\n\n### Authentication and authorization\n\nThe authentication model for the Benefits Claims Version 2 is based on OAuth 2.0 / OpenID Connect and supports the [client credentials grant](https://developer.va.gov/explore/authorization/docs/client-credentials?api=claims).\n\n**Important**: To get production access, you must either work for VA or have specific VA agreements in place. If you have questions, [contact us](https://developer.va.gov/support/contact-us).\n\n### Test data for sandbox environment use\n\nWe use mock [test data in the sandbox environment](https://github.com/department-of-veterans-affairs/vets-api-clients/blob/master/test_accounts.md). Sandbox test data and test users for the Benefits Claims API are valid for all versions of the API.\n" + "description": "## Background\n\nThe Benefits Claims API Version 2 lets internal consumers: \n\n- Retrieve existing claim information, including status, by claim ID.\n- Automatically establish an Intent To File (21-0966) in VBMS.\n- Automatically establish a disability compensation claim (21-526EZ) in VBMS.\n- Digitally submit supporting documentation for disability compensation claims.\n- Retrieve the active Power of Attorney organization of individual with power of attorney for a claimant.\n- Automatically establish a power of attorney appointment in VBMS for an accredited organization (VA Form 21-22).\n- Automatically establish a power of attorney appointment in VBMS for an accredited individual (VA Form 21-22a).\n\nYou should use the [Benefits Claims API Version 1](https://developer.va.gov/explore/benefits/docs/claims?version=current) if you are a consumer outside of VA and do not have the necessary VA agreements to use this API.\n \n## Appointing an accredited representative for dependents\n\nDependents of Veterans, such as spouses, children (biological and step), and parents (biological and foster) may be eligible for VA benefits and can request representation by an accredited representative.\n\nTo file claims through an accredited representative, dependents must appoint their own. Once appointed, the representative will have power of attorney (POA) to assist with the dependentʼs VA claims.\n\nBefore appointing a representative, the dependentʼs relationship to the Veteran must be established. If a new representative is being appointed, the dependentʼs relationship to the Veteran will be validated first. The representative will be appointed to the dependent, not the Veteran.\n\n## Technical Overview\n\nThis API accepts a payload of requests and responses with the payload identifying the claim and Veteran. Responses provide the submission’s processing status. Responses also provide a unique ID which can be used with the appropriate GET endpoint to return detailed, end-to-end claims status tracking. \n\nEnd-to-end claims tracking provides the status of claims as they move through the submission process, but does not return whether the claim was approved or denied. \n\n### Claim statuses\n\nAfter you submit a disability compensation claim with the `POST /veterans/{veteranId}/526/synchronous` endpoint, it is then established in Veterans Benefits Management System (VBMS). A `202` response means that the claim was successfully submitted by the API. However, it does not mean VA has received the required 526EZ PDF. \n\nTo confirm the status of your submission, use the `GET /veterans/{veteranId}/claims/{id}` endpoint and the ID returned with your submission response. Statuses are: \n\n* **Pending**: The claim is successfully submitted for processing\n* **Errored**: The submission encountered upstream errors\n* **Canceled**: The claim was identified as a duplicate, or another issue caused the claim to be canceled. \n * For duplicate claims, the claim's progress is tracked under a different Claim ID than the one returned in your submission response. \n* **Claim received**: The claim was received, but hasn't been assigned to a reviewer yet.\n* **Initial review**: The claim has been assigned to a reviewer, who will determine if more information is needed.\n* **Evidence gathering, review, and decision**: VA is gathering evidence to make a decision from health care providers, government agencies, and other sources.\n* **Preparation for notification**: VA has made a decision on the claim, and is getting a decision letter ready to mail.\n* **Complete**: VA has sent a decision letter by U.S. mail.\n\n### Finding a Veteran's unique VA ID\n\nThis API uses Inegration Control Number (ICN) as a unique Veteran identifier to identify the subject of each API request. This identifier should be used as the `{veteranId}` parameter in request URLs.\n\n**Note**: though ICNs are typically static, they may change over time. If a specific ICN suddenly responds with a `404 not found` error, it may have changed. It’s a good idea to periodically check the ICN for each Veteran.\n\n### Authentication and authorization\n\nThe authentication model for the Benefits Claims Version 2 is based on OAuth 2.0 / OpenID Connect and supports the [client credentials grant](https://developer.va.gov/explore/authorization/docs/client-credentials?api=claims).\n\n**Important**: To get production access, you must either work for VA or have specific VA agreements in place. If you have questions, [contact us](https://developer.va.gov/support/contact-us).\n\n### Test data for sandbox environment use\n\nWe use mock [test data in the sandbox environment](https://github.com/department-of-veterans-affairs/vets-api-clients/blob/master/test_accounts.md). Sandbox test data and test users for the Benefits Claims API are valid for all versions of the API.\n" }, "tags": [ - { - "name": "Veteran Identifier", - "description": "Allows authenticated veterans and veteran representatives to retrieve a veteran's id." - }, { "name": "Claims", "description": "Allows authenticated and authorized users to access claims data for a given Veteran. No data is returned if the user is not authenticated and authorized.\n" @@ -90,15 +86,11 @@ ] }, { - "bearer_token": [ - - ] + "bearer_token": [] } ], "description": "Create the decision for Power of Attorney requests", - "parameters": [ - - ], + "parameters": [], "responses": { "200": { "description": "Submit decision", @@ -411,15 +403,11 @@ ] }, { - "bearer_token": [ - - ] + "bearer_token": [] } ], "description": "Search for Power of Attorney requests", - "parameters": [ - - ], + "parameters": [], "responses": { "200": { "description": "Search results", @@ -778,272 +766,6 @@ } } }, - "/veteran-id:find": { - "post": { - "summary": "Retrieve Veteran ID.", - "tags": [ - "Veteran Identifier" - ], - "operationId": "postVeteranId", - "security": [ - { - "productionOauth": [ - "system/claim.read" - ] - }, - { - "sandboxOauth": [ - "system/claim.read" - ] - }, - { - "bearer_token": [ - - ] - } - ], - "description": "Allows authenticated and authorized users to retrieve a Veteran's ID.", - "parameters": [ - - ], - "responses": { - "201": { - "description": "Veteran's unique identifier", - "content": { - "application/json": { - "example": { - "id": "1012667145V762142" - }, - "schema": { - "additionalProperties": false, - "properties": { - "id": { - "type": "string", - "example": "1012667145V762142" - } - } - } - } - } - }, - "400": { - "description": "Bad Request", - "content": { - "application/json": { - "example": { - "errors": [ - { - "title": "invalid value for SSN", - "detail": "blank is not valid for SSN" - } - ] - }, - "schema": { - "required": [ - "errors" - ], - "properties": { - "errors": { - "type": "array", - "items": { - "additionalProperties": false, - "required": [ - "title", - "detail" - ], - "properties": { - "title": { - "type": "string", - "description": "HTTP error title" - }, - "detail": { - "type": "string", - "description": "HTTP error detail" - }, - "status": { - "type": "string", - "description": "HTTP error status code" - }, - "source": { - "type": "object", - "additionalProperties": false, - "description": "Source of error", - "properties": { - "pointer": { - "type": "string", - "description": "Pointer to source of error" - } - } - } - } - } - } - } - } - } - } - }, - "401": { - "description": "Unauthorized", - "content": { - "application/json": { - "example": { - "errors": [ - { - "title": "Not authorized", - "detail": "Not authorized" - } - ] - }, - "schema": { - "required": [ - "errors" - ], - "properties": { - "errors": { - "type": "array", - "items": { - "additionalProperties": false, - "required": [ - "title", - "detail" - ], - "properties": { - "title": { - "type": "string", - "description": "HTTP error title" - }, - "detail": { - "type": "string", - "description": "HTTP error detail" - }, - "status": { - "type": "string", - "description": "HTTP error status code" - }, - "source": { - "type": "object", - "additionalProperties": false, - "description": "Source of error", - "properties": { - "pointer": { - "type": "string", - "description": "Pointer to source of error" - } - } - } - } - } - } - } - } - } - } - }, - "404": { - "description": "Resource not found", - "content": { - "application/json": { - "example": { - "errors": [ - { - "title": "Resource not found", - "detail": "Resource not found" - } - ] - }, - "schema": { - "required": [ - "errors" - ], - "properties": { - "errors": { - "type": "array", - "items": { - "additionalProperties": false, - "required": [ - "title", - "detail" - ], - "properties": { - "title": { - "type": "string", - "description": "HTTP error title" - }, - "detail": { - "type": "string", - "description": "HTTP error detail" - }, - "status": { - "type": "string", - "description": "HTTP error status code" - }, - "source": { - "type": "object", - "additionalProperties": false, - "description": "Source of error", - "properties": { - "pointer": { - "type": "string", - "description": "Pointer to source of error" - } - } - } - } - } - } - } - } - } - } - } - }, - "requestBody": { - "content": { - "application/json": { - "schema": { - "type": "object", - "required": [ - "ssn", - "birthdate", - "firstName", - "lastName" - ], - "properties": { - "ssn": { - "type": "string", - "example": "796130115", - "description": "SSN of Veteran being represented" - }, - "firstName": { - "type": "string", - "example": "Tamara", - "description": "First name of Veteran being represented" - }, - "lastName": { - "type": "string", - "example": "Ellis", - "description": "Last name of Veteran being represented" - }, - "birthdate": { - "type": "string", - "example": "1967-06-19", - "description": "Date of birth of Veteran being represented, in ISO8601 format" - } - }, - "example": { - "ssn": "796130115", - "firstName": "Tamara", - "lastName": "Ellis", - "birthdate": "1967-06-19" - } - } - } - }, - "required": true - } - } - }, "/veterans/{veteranId}/claims/{id}/5103": { "post": { "summary": "Submit Evidence Waiver 5103", @@ -1063,9 +785,7 @@ ] }, { - "bearer_token": [ - - ] + "bearer_token": [] } ], "description": "Submit Evidence Waiver 5103 for Veteran.", @@ -1275,33 +995,26 @@ } } }, - "/veterans/{veteranId}/526": { + "/veterans/{veteranId}/526/synchronous": { "post": { - "summary": "Asynchronously establishes disability compensation claim", + "summary": "Submits disability compensation claim synchronously (restricted access)", "tags": [ "Disability Compensation Claims" ], - "operationId": "post526Claim", + "operationId": "post526ClaimSynchronous", "security": [ { "productionOauth": [ - "system/claim.read", - "system/claim.write" + "system/526.override" ] }, { "sandboxOauth": [ - "system/claim.read", - "system/claim.write" - ] - }, - { - "bearer_token": [ - + "system/526.override" ] } ], - "description": "Automatically establishes a disability compensation claim (21-526EZ) in Veterans Benefits Management System (VBMS). \nThis endpoint generates a filled and electronically signed 526EZ form, establishes the disability claim in VBMS, and \nsubmits the form to the Veteran's eFolder.\n\nA 202 response indicates the API submission was accepted. The claim has not reached VBMS until it has a CLAIM_RECEIVED status. \nCheck claim status using the GET veterans/{veteranId}/claims/{id} endpoint.\n\n**A substantially complete 526EZ claim must include:**\n* Veteran's name\n* Sufficient service information for VA to verify the claimed service\n* At least one claimed disability or medical condition and how it relates to service\n* Veteran and/or Representative signature\n\n**Standard and fully developed claims (FDCs)**\n\n[Fully developed claims (FDCs)](https://www.va.gov/disability/how-to-file-claim/evidence-needed/fully-developed-claims/)\nare claims certified by the submitter to include all information needed for processing. These claims process faster \nthan claims submitted through the standard claim process. If a claim is certified for the FDC, but is missing needed information, \nit will be processed as a standard claim.\n\nTo certify a claim for the FDC process, set the claimProcessType to FDC_PROGRAM.\n", + "description": "Automatically establishes a disability compensation claim (21-526EZ) in Veterans Benefits Management System (VBMS). This endpoint synchronously generates a filled and electronically signed 526EZ form and establishes the disability claim in VBMS. The 526EZ form is uploaded asynchronously.\n\nA 202 response indicates the API submission was accepted and the claim was established in VBMS. Check claim status using the GET veterans/{veteranId}/claims/{id} endpoint. The claim status details response will return the associated 526EZ PDF in the supportingDocuments list.\n\n**A substantially complete 526EZ claim must include:**\n* Veteran's name\n* Sufficient service information for VA to verify the claimed service\n* At least one claimed disability or medical condition and how it relates to service\n* Veteran and/or Representative signature\n\n**Standard and fully developed claims (FDCs)**\n\n[Fully developed claims (FDCs)](https://www.va.gov/disability/how-to-file-claim/evidence-needed/fully-developed-claims/)\nare claims certified by the submitter to include all information needed for processing. These claims process faster \nthan claims submitted through the standard claim process. If a claim is certified for the FDC, but is missing needed information, \nit will be processed as a standard claim.\n\nTo certify a claim for the FDC process, set the claimProcessType to FDC_PROGRAM.\n", "parameters": [ { "name": "veteranId", @@ -1319,6893 +1032,1648 @@ "description": "Successful response", "content": { "application/json": { - "schema": { - "name": "data", - "required": [ - "data" - ], - "properties": { - "data": { - "type": "object", - "required": [ - "id", - "type", - "attributes" - ], - "properties": { - "id": { - "type": "string", - "example": "7d0de77e-b7bd-4db7-a8d9-69a25482c80a" - }, - "type": { - "type": "string", - "example": "form/526" - }, + "examples": { + "202 without a transactionId": { + "value": { + "data": { + "id": "c04ea779-1c6a-4fd1-a3ba-f6953bc839cc", + "type": "forms/526", "attributes": { - "description": "Claims API 526 Schema", - "type": "object", - "additionalProperties": false, - "required": [ - "claimantCertification", - "claimProcessType", - "disabilities", - "serviceInformation", - "veteranIdentification" - ], - "properties": { - "claimProcessType": { - "type": "string", - "description": "Select type of claim program/process that applies to the Veteran.", - "enum": [ - "STANDARD_CLAIM_PROCESS", - "FDC_PROGRAM", - "BDD_PROGRAM" - ] + "claimId": "600442191", + "claimProcessType": "STANDARD_CLAIM_PROCESS", + "claimNotes": "Some things that are important to know, and are not included in any other place.", + "veteranIdentification": { + "serviceNumber": "123456789", + "veteranNumber": { + "telephone": "5555555555", + "internationalTelephone": "+44 20 1234 5678" }, - "veteranIdentification": { - "type": "object", - "additionalProperties": false, - "required": [ - "mailingAddress", - "currentVaEmployee" + "mailingAddress": { + "addressLine1": "1234 Couch Street", + "addressLine2": "Unit 4", + "addressLine3": "Room 1", + "city": "Schenectady", + "state": "NY", + "country": "USA", + "zipFirstFive": "12345", + "zipLastFour": "1234" + }, + "emailAddress": { + "email": "valid@somedomain.com", + "agreeToEmailRelatedToClaim": true + }, + "currentVaEmployee": false + }, + "changeOfAddress": { + "typeOfAddressChange": "TEMPORARY", + "addressLine1": "10 Peach St", + "addressLine2": "Unit 4", + "addressLine3": "Room 1", + "city": "Schenectady", + "state": "NY", + "country": "USA", + "zipFirstFive": "12345", + "zipLastFour": "9897", + "dates": { + "beginDate": "2023-06-04", + "endDate": "2023-12-04" + } + }, + "homeless": { + "isCurrentlyHomeless": true, + "currentlyHomeless": { + "homelessSituationOptions": "FLEEING_CURRENT_RESIDENCE", + "otherDescription": "ABCDEFGHIJKLM" + }, + "isAtRiskOfBecomingHomeless": false, + "pointOfContact": "john stewart", + "pointOfContactNumber": { + "telephone": "5555555555", + "internationalTelephone": "+44 20 1234 5678" + } + }, + "toxicExposure": { + "gulfWarHazardService": { + "servedInGulfWarHazardLocations": "YES", + "serviceDates": { + "beginDate": "2018-07", + "endDate": "2018-08" + } + }, + "herbicideHazardService": { + "servedInHerbicideHazardLocations": "YES", + "otherLocationsServed": "ABCDEFGHIJKLM", + "serviceDates": { + "beginDate": "2018-07", + "endDate": "2018-08" + } + }, + "additionalHazardExposures": { + "additionalExposures": [ + "ASBESTOS", + "SHIPBOARD_HAZARD_AND_DEFENSE" ], - "properties": { - "serviceNumber": { - "type": "string", - "description": "Service identification number", - "maxLength": 1000, - "nullable": true - }, - "veteranNumber": { - "description": "If there isn't a ten digit phone number in VBMS for the Veteran, the exams will not be ordered. Including the phone number is recommended to avoid claim processing delays.", - "type": "object", - "nullable": true, - "properties": { - "telephone": { - "description": "Veteran's phone number.", - "type": "string", - "pattern": "^\\d{10}?$", - "example": "5555555555", - "nullable": true - }, - "internationalTelephone": { - "type": "string", - "description": "Veteran's international phone number.", - "example": "+44 20 1234 5678", - "maxLength": 1000, - "nullable": true - } - } - }, - "mailingAddress": { - "type": "object", - "additionalProperties": false, - "required": [ - "addressLine1", - "city", - "country" - ], - "properties": { - "addressLine1": { - "description": "Address line 1 for the Veteran's current mailing address.", - "type": "string", - "pattern": "^([-a-zA-Z0-9'.,&#]([-a-zA-Z0-9'.,&# ])?)+$", - "maxLength": 20, - "example": "1234 Couch Street" - }, - "addressLine2": { - "description": "Address line 2 for the Veteran's current mailing address.", - "type": "string", - "pattern": "^([-a-zA-Z0-9'.,&#]([-a-zA-Z0-9'.,&# ])?)+$", - "maxLength": 20, - "example": "Unit 4", - "nullable": true - }, - "addressLine3": { - "description": "Address line 3 for the Veteran's current mailing address.", - "type": "string", - "pattern": "^([-a-zA-Z0-9'.,&#]([-a-zA-Z0-9'.,&# ])?)+$", - "maxLength": 20, - "example": "Room 1", - "nullable": true - }, - "city": { - "description": "City for the Veteran's current mailing address.", - "type": "string", - "pattern": "^$|([a-zA-Z0-9\\'-'.# ]([a-zA-Z0-9\\'-'.# ])?)+$", - "minLength": 1, - "maxLength": 30, - "example": "Schenectady" - }, - "state": { - "description": "State for the Veteran's current mailing address. Required if 'country' is 'USA'.", - "type": "string", - "pattern": "^[a-z,A-Z]{2}$", - "example": "NY", - "nullable": true - }, - "country": { - "description": "Country for the Veteran's current mailing address. Must match the values returned by the /countries endpoint on the [Benefits Reference Data API](https://developer.va.gov/explore/benefits/docs/benefits_reference_data?version=current).", - "type": "string", - "maxLength": 1000, - "example": "USA" - }, - "zipFirstFive": { - "description": "Zip code (First 5 digits) for the Veteran's current mailing address. Required if 'country' is 'USA'.", - "type": "string", - "pattern": "^\\d{5}?$", - "example": "12345", - "nullable": true - }, - "zipLastFour": { - "description": "Zip code (Last 4 digits) for the Veteran's current mailing address.", - "type": "string", - "pattern": "^\\d{4}?$", - "example": "6789", - "nullable": true - }, - "internationalPostalCode": { - "description": "International postal code for the Veteran's current mailing address. Do not include if 'country' is 'USA'.", - "type": "string", - "maxLength": 16, - "nullable": true, - "pattern": "^[a-zA-Z0-9]*$" - } - } - }, - "emailAddress": { - "description": "Information associated with the Veteran's email address.", - "type": "object", - "nullable": true, - "properties": { - "email": { - "type": "string", - "pattern": "^[^\\s@]+@([^\\s@.,]+\\.)+[^\\s@.,]{2,}$", - "description": "The most current email address of the Veteran.", - "maxLength": 80, - "nullable": true - }, - "agreeToEmailRelatedToClaim": { - "type": "boolean", - "description": "Agreement to email information relating to this claim.", - "example": true, - "default": false, - "nullable": true - } - } - }, - "currentVaEmployee": { - "type": "boolean", - "description": "Set to true if Veteran is a VA employee.", - "nullable": false - } + "specifyOtherExposures": "Other exposure details", + "exposureDates": { + "beginDate": "2018-07", + "endDate": "2018-08" } }, - "changeOfAddress": { - "description": "If 'changeOfAddress' is included, the following attributes are required: 'typeOfAddressChange', 'addressLine1', 'city', 'country'.", - "type": "object", - "nullable": true, - "additionalProperties": false, - "properties": { - "typeOfAddressChange": { - "description": "Temporary or Permanent change of address. If 'TEMPORARY', 'beginDate' and 'endDate' are required.", - "type": "string", - "enum": [ - "TEMPORARY", - "PERMANENT" - ], - "example": "PERMANENT" - }, - "addressLine1": { - "description": "Address line 1 for the Veteran's new address.", - "type": "string", - "pattern": "^([-a-zA-Z0-9'.,&#]([-a-zA-Z0-9'.,&# ])?)+$", - "maxLength": 20, - "example": "1234 Couch Street" - }, - "addressLine2": { - "description": "Address line 2 for the Veteran's new address.", - "type": "string", - "pattern": "^([-a-zA-Z0-9'.,&#]([-a-zA-Z0-9'.,&# ])?)+$", - "maxLength": 20, - "example": "Unit 4", - "nullable": true - }, - "addressLine3": { - "description": "Address line 3 for the Veteran's new address.", - "type": "string", - "pattern": "^([-a-zA-Z0-9'.,&#]([-a-zA-Z0-9'.,&# ])?)+$", - "maxLength": 20, - "example": "Room 1", - "nullable": true - }, - "city": { - "description": "City for the Veteran's new address.", - "type": "string", - "pattern": "^$|([a-zA-Z0-9\\'-'.# ]([a-zA-Z0-9\\'-'.# ])?)+$", - "minLength": 0, - "maxLength": 30, - "example": "Schenectady" - }, - "state": { - "description": "State for the Veteran's new address. Required if 'country' is 'USA'.", - "type": "string", - "pattern": "^$|^[a-z,A-Z]{2}$", - "example": "NY", - "nullable": true - }, - "country": { - "description": "Country for the Veteran's new address. Value must match the values returned by the /countries endpoint on the [Benefits Reference Data API](https://developer.va.gov/explore/benefits/docs/benefits_reference_data?version=current).", - "type": "string", - "maxLength": 1000, - "example": "USA" - }, - "zipFirstFive": { - "description": "Zip code (First 5 digits) for the Veteran's new address. Required if 'country' is 'USA'.", - "type": "string", - "pattern": "^$|^\\d{5}?$", - "example": "12345", - "nullable": true - }, - "zipLastFour": { - "description": "Zip code (Last 4 digits) for the Veteran's new address.", - "type": "string", - "nullable": true, - "pattern": "^$|^\\d{4}?$", - "example": "6789" - }, - "internationalPostalCode": { - "description": "International postal code for the Veteran's new address. Do not include if 'country' is 'USA'.", - "type": "string", - "maxLength": 16, - "nullable": true, - "pattern": "^[a-zA-Z0-9]*$" - }, - "dates": { - "type": "object", - "properties": { - "beginDate": { - "description": "Begin date for the Veteran's new address.", - "pattern": "^(?:[0-9]{4})-(?:0[1-9]|1[0-2])-(?:0[1-9]|[1-2][0-9]|3[0-1])$", - "type": "string", - "nullable": true, - "example": "2018-06-04" - }, - "endDate": { - "description": "Date in YYYY-MM-DD the changed address expires, if change is temporary.", - "type": "string", - "nullable": true, - "pattern": "^(?:[0-9]{4})-(?:0[1-9]|1[0-2])-(?:0[1-9]|[1-2][0-9]|3[0-1])$", - "example": "2018-06-04" - } - } + "multipleExposures": [ + { + "hazardExposedTo": "RADIATION", + "exposureLocation": "Guam", + "exposureDates": { + "beginDate": "2012-12", + "endDate": "2013-07" } } - }, - "homeless": { - "type": "object", - "nullable": true, - "additionalProperties": false, - "properties": { - "isCurrentlyHomeless": { - "type": "boolean", - "nullable": true, - "description": "Is the Veteran currently homeless?" - }, - "currentlyHomeless": { - "type": "object", - "nullable": true, - "additionalProperties": false, - "properties": { - "homelessSituationOptions": { - "description": "Veteran's living situation.", - "type": "string", - "nullable": true, - "default": "other", - "enum": [ - "LIVING_IN_A_HOMELESS_SHELTER", - "NOT_CURRENTLY_IN_A_SHELTERED_ENVIRONMENT", - "STAYING_WITH_ANOTHER_PERSON", - "FLEEING_CURRENT_RESIDENCE", - "OTHER" - ], - "example": "FLEEING_CURRENT_RESIDENCE" - }, - "otherDescription": { - "description": "Explanation of living situation. Required if 'homelessSituationOptions' is 'OTHER'.", - "type": "string", - "nullable": true, - "maxLength": 500, - "example": "other living situation" - } - } - }, - "isAtRiskOfBecomingHomeless": { - "type": "boolean", - "nullable": true, - "description": "Is the Veteran currently at risk of becoming homeless?" - }, - "riskOfBecomingHomeless": { - "type": "object", - "nullable": true, - "additionalProperties": false, - "properties": { - "livingSituationOptions": { - "type": "string", - "nullable": true, - "default": "HOUSING_WILL_BE_LOST_IN_30_DAYS", - "enum": [ - "HOUSING_WILL_BE_LOST_IN_30_DAYS", - "LEAVING_PUBLICLY_FUNDED_SYSTEM_OF_CARE", - "OTHER" - ] - }, - "otherDescription": { - "description": "Explanation of living situation. Required if 'livingSituationOptions' is 'OTHER'.", - "type": "string", - "nullable": true, - "maxLength": 500, - "example": "other living situation" - } - } - }, - "pointOfContact": { - "description": "Individual in direct contact with Veteran.", - "type": "string", - "nullable": true, - "minLength": 1, - "maxLength": 100, - "pattern": "^([-a-zA-Z0-9/']+( ?))*$", - "example": "Jane Doe" - }, - "pointOfContactNumber": { - "type": "object", - "nullable": true, - "additionalProperties": false, - "properties": { - "telephone": { - "description": "Ten digit primary phone of point of contact.", - "type": "string", - "pattern": "^\\d{10}?$", - "example": "5555555", - "nullable": true - }, - "internationalTelephone": { - "description": "International phone of point of contact.", - "type": "string", - "example": "+44 20 1234 5678", - "maxLength": 1000, - "nullable": true - } - } + ] + }, + "disabilities": [ + { + "name": "Traumatic Brain Injury", + "exposureOrEventOrInjury": "EXPOSURE", + "serviceRelevance": "ABCDEFG", + "approximateDate": "2018-03-11", + "disabilityActionType": "NEW", + "classificationCode": "9014", + "ratedDisabilityId": "ABCDEFGHIJKLMNOPQRSTUVWX", + "diagnosticCode": 9020, + "isRelatedToToxicExposure": true, + "secondaryDisabilities": [ + { + "name": "Post Traumatic Stress Disorder (PTSD) Combat - Mental Disorders", + "exposureOrEventOrInjury": "EXPOSURE", + "serviceRelevance": "ABCDEFGHIJKLMNOPQ", + "disabilityActionType": "SECONDARY", + "approximateDate": "2018-03-12", + "classificationCode": "9014" } - } + ] }, - "toxicExposure": { - "type": "object", - "nullable": true, - "properties": { - "gulfWarHazardService": { - "type": "object", - "nullable": true, - "description": "Toxic exposure related to the Gulf war.", - "properties": { - "servedInGulfWarHazardLocations": { - "type": "string", - "description": "Set to true if the Veteran served in any of the following Gulf War hazard locations: Iraq; Kuwait; Saudi Arabia; the neutral zone between Iraq and Saudi Arabia; Bahrain; Qatar; the United Arab Emirates; Oman; Yemen; Lebanon; Somalia; Afghanistan; Israel; Egypt; Turkey; Syria; Jordan; Djibouti; Uzbekistan; the Gulf of Aden; the Gulf of Oman; the Persian Gulf; the Arabian Sea; and the Red Sea.", - "example": "YES", - "enum": [ - "NO", - "YES" - ], - "nullable": true - }, - "serviceDates": { - "type": "object", - "nullable": true, - "description": "Date range for when the exposure happened.", - "properties": { - "beginDate": { - "type": "string", - "nullable": true, - "description": "Approximate begin date for serving in Gulf War hazard location.", - "pattern": "^(?:19|20)[0-9][0-9]$|^(?:19|20)[0-9][0-9]-(0[1-9]|1[0-2])$", - "example": "2018-06 or 2018" - }, - "endDate": { - "type": "string", - "nullable": true, - "description": "Approximate end date for serving in Gulf War hazard location.", - "pattern": "^(?:19|20)[0-9][0-9]$|^(?:19|20)[0-9][0-9]-(0[1-9]|1[0-2])$", - "example": "2018-06 or 2018" - } - } - } - } - }, - "herbicideHazardService": { - "description": "Toxic exposure related to herbicide (Agent Orange) hazards.", - "type": "object", - "nullable": true, - "properties": { - "servedInHerbicideHazardLocations": { - "type": "string", - "description": "Set to true if the Veteran served in any of the following herbicide/Agent Orange locations: Republic of Vietnam to include the 12 nautical mile territorial waters; Thailand at any United States or Royal Thai base; Laos; Cambodia at Mimot or Krek; Kampong Cham Province; Guam or American Samoa; or in the territorial waters thereof; Johnston Atoll or a ship that called at Johnston Atoll; Korean demilitarized zone; aboard (to include repeated operations and maintenance with) a C-123 aircraft known to have been used to spray an herbicide agent (during service in the Air Force and Air Force Reserves).", - "example": "YES", - "enum": [ - "NO", - "YES" - ], - "nullable": true - }, - "otherLocationsServed": { - "type": "string", - "nullable": true, - "pattern": "^$|([a-zA-Z0-9\"\\/&\\(\\)\\-'.,#\\[\\] ]([a-zA-Z0-9(\\)\\-'.,#\\[\\] ])?)+$", - "maxLength": 5000, - "description": "Other location(s) where Veteran served." - }, - "serviceDates": { - "description": "Date range for exposure in herbicide hazard location.", - "type": "object", - "nullable": true, - "properties": { - "beginDate": { - "type": "string", - "nullable": true, - "description": "Approximate begin date for serving in herbicide location.", - "pattern": "^(?:19|20)[0-9][0-9]$|^(?:19|20)[0-9][0-9]-(0[1-9]|1[0-2])$", - "example": "2018-06 or 2018" - }, - "endDate": { - "type": "string", - "nullable": true, - "description": "Approximate end date for serving in herbicide location.", - "pattern": "^(?:19|20)[0-9][0-9]$|^(?:19|20)[0-9][0-9]-(0[1-9]|1[0-2])$", - "example": "2018-06 or 2018" - } - } - } - } - }, - "additionalHazardExposures": { - "type": "object", - "nullable": true, - "description": "Additional hazardous exposures.", - "properties": { - "additionalExposures": { - "description": "Additional exposure incidents.", - "type": "array", - "nullable": true, - "uniqueItems": true, - "items": { - "type": "string", - "additionalProperties": false, - "enum": [ - "ASBESTOS", - "MUSTARD_GAS", - "RADIATION", - "SHIPBOARD_HAZARD_AND_DEFENSE", - "MILITARY_OCCUPATIONAL_SPECIALTY_RELATED_TOXIN", - "CONTAMINATED_WATER_AT_CAMP_LEJEUNE", - "OTHER" - ] - } - }, - "specifyOtherExposures": { - "type": "string", - "nullable": true, - "pattern": "^$|([a-zA-Z0-9\"\\/&\\(\\)\\-'.,#\\[\\] ]([a-zA-Z0-9(\\)\\-'.,#\\[\\] ])?)+$", - "maxLength": 5000, - "description": "Exposure to asbestos." - }, - "exposureDates": { - "type": "object", - "nullable": true, - "description": "Date range for when the exposure happened.", - "properties": { - "beginDate": { - "type": "string", - "nullable": true, - "description": "Approximate begin date for exposure.", - "pattern": "^(?:19|20)[0-9][0-9]$|^(?:19|20)[0-9][0-9]-(0[1-9]|1[0-2])$", - "example": "2018-06 or 2018" - }, - "endDate": { - "type": "string", - "nullable": true, - "description": "Approximate end date for exposure.", - "pattern": "^(?:19|20)[0-9][0-9]$|^(?:19|20)[0-9][0-9]-(0[1-9]|1[0-2])$", - "example": "2018-06 or 2018" - } - } - } - } - }, - "multipleExposures": { - "type": "array", - "nullable": true, - "minItems": 1, - "uniqueItems": true, - "items": { - "type": "object", - "additionalProperties": false, - "properties": { - "hazardExposedTo": { - "type": "string", - "nullable": true, - "pattern": "^([-a-zA-Z0-9'.,&# ])+$", - "maxLength": 1000, - "description": "Hazard the Veteran was exposed to." - }, - "exposureLocation": { - "type": "string", - "nullable": true, - "pattern": "^$|([a-zA-Z0-9\"\\/&\\(\\)\\-'.,#\\[\\] ]([a-zA-Z0-9(\\)\\-'.,#\\[\\] ])?)+$", - "maxLength": 1000, - "description": "Location where the exposure happened." - }, - "exposureDates": { - "type": "object", - "nullable": true, - "description": "Date range for when the exposure happened.", - "properties": { - "beginDate": { - "type": "string", - "nullable": true, - "description": "Approximate begin date for exposure.", - "pattern": "^(?:19|20)[0-9][0-9]$|^(?:19|20)[0-9][0-9]-(0[1-9]|1[0-2])$", - "example": "2018-06 or 2018" - }, - "endDate": { - "type": "string", - "nullable": true, - "description": "Approximate end date for exposure.", - "pattern": "^(?:19|20)[0-9][0-9]$|^(?:19|20)[0-9][0-9]-(0[1-9]|1[0-2])$", - "example": "2018-06 or 2018" - } - } - } - } - } - } + { + "name": "Cancer - Musculoskeletal - Elbow", + "exposureOrEventOrInjury": "EXPOSURE", + "approximateDate": "2018-03-02", + "serviceRelevance": "ABCDEFG", + "disabilityActionType": "NEW", + "classificationCode": "9014", + "ratedDisabilityId": "ABCDEFGHIJKLMNOPQRSTUVWX", + "diagnosticCode": 249470, + "isRelatedToToxicExposure": true + }, + { + "name": "Cancer - Musculoskeletal - Knee", + "exposureOrEventOrInjury": "EXPOSURE", + "approximateDate": "2015", + "serviceRelevance": "ABCDEFG", + "disabilityActionType": "NEW", + "classificationCode": "9014", + "ratedDisabilityId": "ABCDEFGHIJKLMNOPQRSTUVWX", + "diagnosticCode": 249470, + "isRelatedToToxicExposure": true + } + ], + "treatments": [ + { + "beginDate": "2009-03", + "treatedDisabilityNames": [ + "Traumatic Brain Injury", + "Post Traumatic Stress Disorder (PTSD) Combat - Mental Disorders", + "Cancer - Musculoskeletal - Elbow" + ], + "center": { + "name": "Center One", + "city": "Decatur", + "state": "GA" + } + } + ], + "serviceInformation": { + "alternateNames": [ + "john jacob", + "johnny smith" + ], + "servicePeriods": [ + { + "serviceBranch": "Public Health Service", + "serviceComponent": "Active", + "activeDutyBeginDate": "2008-11-14", + "activeDutyEndDate": "2023-10-30", + "separationLocationCode": "98282" } + ], + "servedInActiveCombatSince911": "NO", + "reservesNationalGuardService": { + "component": "National Guard", + "obligationTermsOfService": { + "beginDate": "2019-06-04", + "endDate": "2020-06-04" + }, + "unitName": "National Guard Unit Name", + "unitAddress": "1243 pine court", + "unitPhone": { + "areaCode": "555", + "phoneNumber": "5555555" + }, + "receivingInactiveDutyTrainingPay": "YES" }, - "disabilities": { - "description": "Any current disabilities or symptoms the Veteran is claiming are related to their military service and/or are service-connected.", - "type": "array", - "minItems": 1, - "items": { - "type": "object", - "additionalProperties": false, - "required": [ - "disabilityActionType", - "name" - ], - "properties": { - "name": { - "description": "Name of the disability. The /disabilities endpoint on the [Benefits Reference Data API](https://developer.va.gov/explore/benefits/docs/benefits_reference_data?version=current) may be used to retrieve possible disability names.", - "type": "string", - "pattern": "^$|([a-zA-Z0-9\"\\/&\\(\\)\\-'.,#\\[\\] ]([a-zA-Z0-9(\\)\\-'.,#\\[\\] ])?)+$", - "example": "PTSD (post traumatic stress disorder)", - "maxLength": 255 - }, - "exposureOrEventOrInjury": { - "type": "string", - "description": "What caused the disability?", - "nullable": true, - "maxLength": 1000, - "examples": [ - "Agent Orange", - "radiation", - "burn pits" - ] - }, - "serviceRelevance": { - "description": "Explanation of how the disability(ies) relates to the in-service event/exposure/injury. If the disabilityActionType is 'NEW', the serviceRelevance is required.", - "type": "string", - "nullable": true, - "maxLength": 1000, - "example": "Heavy equipment operator in service." - }, - "approximateDate": { - "description": "Approximate date disability began. Date must be in the past. \n Format can be either YYYY-MM-DD or YYYY-MM or YYYY", - "type": "string", - "pattern": "^(?:[0-9]{4}(?:-(?!00)(?:0[1-9]|1[0-2])(?:-(?:0[1-9]|[1-2][0-9]|3[0-1]))?)?)$", - "example": "2018-03-02 or 2018-03 or 2018", - "nullable": true - }, - "disabilityActionType": { - "description": "Action type requested for the disability. If 'INCREASE' or 'NONE', then 'ratedDisabilityId' and 'diagnosticCode' should be included. 'NONE' should be used when including a secondary disability.", - "type": "string", - "enum": [ - "NONE", - "NEW", - "INCREASE" - ], - "example": "NEW" - }, - "classificationCode": { - "type": "string", - "description": "Classification code for the associated body system. Must match an active code returned by the /disabilities endpoint on the [Benefits Reference Data API](https://developer.va.gov/explore/benefits/docs/benefits_reference_data?version=current).", - "example": "249470", - "nullable": true - }, - "ratedDisabilityId": { - "description": "When submitting a contention with action type 'INCREASE', the previously rated disability id may be included.", - "type": "string", - "example": "1100583", - "nullable": true - }, - "diagnosticCode": { - "description": "If the disabilityActionType is 'NONE' or 'INCREASE', the diagnosticCode should correspond to an existing rated disability.", - "type": "integer", - "example": 9999, - "nullable": true - }, - "isRelatedToToxicExposure": { - "type": "boolean", - "description": "Is the disability related to toxic exposures? If true, related 'toxicExposure' must be included.", - "example": true, - "default": false, - "nullable": true - }, - "specialIssues": { - "type": "array", - "nullable": true, - "uniqueItems": true, - "items": { - "maxItems": 2, - "additionalProperties": false, - "type": "string", - "enum": [ - "POW", - "EMP" - ] - } - }, - "secondaryDisabilities": { - "description": "If secondaryDisability is included, the following attributes are required: 'secondaryDisability.name', 'secondaryDisability.disabilityActionType' and 'secondaryDisability.serviceRelevance'", - "type": "array", - "items": { - "type": "object", - "additionalProperties": false, - "properties": { - "name": { - "description": "Name of the disability. The /disabilities endpoint on the [Benefits Reference Data API](https://developer.va.gov/explore/benefits/docs/benefits_reference_data?version=current) may be used to retrieve possible disability names.", - "type": "string", - "pattern": "^$|([a-zA-Z0-9\"\\/&\\(\\)\\-'.,# ]([a-zA-Z0-9(\\)\\-'.,#\\[\\] ])?)+$", - "example": "PTSD (post traumatic stress disorder)", - "maxLength": 255 - }, - "exposureOrEventOrInjury": { - "type": "string", - "description": "What caused the disability?", - "nullable": true, - "maxLength": 1000, - "examples": [ - "Agent Orange", - "radiation", - "burn pits" - ] - }, - "serviceRelevance": { - "description": "Explanation of how the disability(ies) relates to the in-service event/exposure/injury.", - "type": "string", - "nullable": true, - "maxLength": 1000, - "example": "Heavy equipment operator in service." - }, - "disabilityActionType": { - "description": "The status of the secondary disability.", - "type": "string", - "example": "SECONDARY", - "enum": [ - "SECONDARY" - ] - }, - "approximateDate": { - "description": "Approximate date disability began. Date must be in the past. \n Format can be either YYYY-MM-DD or YYYY-MM or YYYY", - "type": "string", - "pattern": "^(?:[0-9]{4}(?:-(?!00)(?:0[1-9]|1[0-2])(?:-(?:0[1-9]|[1-2][0-9]|3[0-1]))?)?)$", - "example": "2018-03-02 or 2018-03 or 2018", - "nullable": true - }, - "classificationCode": { - "type": "string", - "description": "Classification code for the associated body system. Must match an active code returned by the /disabilities endpoint on the [Benefits Reference Data API](https://developer.va.gov/explore/benefits/docs/benefits_reference_data?version=current).", - "example": "249470", - "nullable": true - } - } - } - } - } - } + "federalActivation": { + "activationDate": "2023-10-01", + "anticipatedSeparationDate": "2024-12-18" }, - "treatments": { - "description": "Identifies the Service Treatment information of the Veteran. The combination of treatedDisabilityName, center name, center city, and center state must be less than 1000 characters to successfully generate a PDF.", - "type": "array", - "nullable": true, - "uniqueItems": true, - "items": { - "type": "object", - "additionalProperties": false, - "properties": { - "beginDate": { - "description": "Begin date for treatment. If treatment began from 2005 to present, you do not need to provide dates. Each treatment begin date must be after the first 'servicePeriod.activeDutyBeginDate'.", - "type": "string", - "pattern": "^(?:19|20)[0-9][0-9]$|^(?:19|20)[0-9][0-9]-(0[1-9]|1[0-2])$", - "example": "2018-06 or 2018", - "nullable": true - }, - "treatedDisabilityNames": { - "description": "Name(s) of disabilities treated in this time frame.", - "type": "array", - "nullable": true, - "maxItems": 101, - "items": { - "type": "string", - "additionalProperties": false, - "example": [ - "PTSD (post traumatic stress disorder)", - "Trauma" - ] - } - }, - "center": { - "description": "VA Medical Center(s) and Department of Defense Military Treatment Facilities where the Veteran received treatment after discharge for any claimed disabilities.", - "type": "object", - "nullable": true, - "additionalProperties": false, - "properties": { - "name": { - "description": "Name of facility Veteran was treated in. The /treatment-centers endpoint on the [Benefits Reference Data API](https://developer.va.gov/explore/benefits/docs/benefits_reference_data?version=current) may be used to retrieve possible treatment center names.", - "type": "string", - "nullable": true, - "pattern": "([a-zA-Z0-9\"/&()\\'-'.,# ]([a-zA-Z0-9()\\'-'.,# ])?)+$", - "example": "Private Facility 2", - "minLength": 1, - "maxLength": 100 - }, - "city": { - "description": "City of treatment facility.", - "type": "string", - "pattern": "([a-zA-Z0-9\\-'.# ]([a-zA-Z0-9\\-'.# ])?)+$", - "example": "Portland", - "nullable": true, - "minLength": 0, - "maxLength": 30 - }, - "state": { - "description": "State of treatment facility.", - "type": "string", - "pattern": "^$|^[a-z,A-Z]{2}$", - "example": "OR", - "nullable": true - } - } - } - } + "confinements": [ + { + "approximateBeginDate": "2018-06-04", + "approximateEndDate": "2018-07-04" + }, + { + "approximateBeginDate": "2020-06", + "approximateEndDate": "2020-07" } + ] + }, + "servicePay": { + "receivingMilitaryRetiredPay": "NO", + "futureMilitaryRetiredPay": "YES", + "futureMilitaryRetiredPayExplanation": "ABCDEFGHIJKLMNOPQRSTUVW", + "militaryRetiredPay": { + "branchOfService": "Army", + "monthlyAmount": 840 }, - "serviceInformation": { - "type": "object", - "additionalProperties": false, - "required": [ - "servicePeriods" - ], - "properties": { - "alternateNames": { - "description": "List any other names under which the Veteran served, if applicable.", - "type": "array", - "nullable": true, - "maxItems": 100, - "uniqueItems": true, - "items": { - "type": "string", - "additionalProperties": false, - "examples": [ - "jane", - "janey lee", - "jane lee MacDonald" - ] - } - }, - "servicePeriods": { - "description": "Identifies the Service dates and Branch the Veteran served in.", - "type": "array", - "minItems": 1, - "items": { - "type": "object", - "required": [ - "serviceBranch", - "serviceComponent", - "activeDutyBeginDate", - "activeDutyEndDate" - ], - "properties": { - "serviceBranch": { - "description": "Branch of service during period. The /service-branches endpoint on the [Benefits Reference Data API](https://developer.va.gov/explore/benefits/docs/benefits_reference_data?version=current) may be used to retrieve list of possible service branches.", - "type": "string", - "maxLength": 1000, - "example": "Air Force" - }, - "serviceComponent": { - "type": "string", - "description": "", - "enum": [ - "Active", - "Reserves", - "National Guard" - ] - }, - "activeDutyBeginDate": { - "description": "Date started active duty.", - "type": "string", - "pattern": "^(?:[0-9]{4})-(?:0[1-9]|1[0-2])-(?:0[1-9]|[1-2][0-9]|3[0-1])$", - "example": "2018-06-06" - }, - "activeDutyEndDate": { - "description": "Date completed active duty.", - "type": "string", - "pattern": "^(?:[0-9]{4})-(?:0[1-9]|1[0-2])-(?:0[1-9]|[1-2][0-9]|3[0-1])$", - "example": "2018-06-06" - }, - "separationLocationCode": { - "description": "Location code for the facility the Veteran plans to separate from. Code must match the values returned by the /intake-sites endpoint on the [Benefits reference Data API](https://developer.va.gov/explore/benefits/docs/benefits_reference_data?version=current).", - "type": "string", - "nullable": true, - "example": "98283" - } - } - } - }, - "servedInActiveCombatSince911": { - "type": "string", - "enum": [ - "YES", - "NO" - ], - "description": "Did Veteran serve in a combat zone since 9-11-2001?", - "example": "YES", - "nullable": true - }, - "reservesNationalGuardService": { - "type": "object", - "nullable": true, - "additionalProperties": false, - "properties": { - "component": { - "type": "string", - "nullable": true, - "description": "", - "enum": [ - "Reserves", - "National Guard" - ] - }, - "obligationTermsOfService": { - "type": "object", - "nullable": true, - "description": "If 'obligationTermsOfService' is included, the following attributes are required: 'beginDate ' and 'endDate'.", - "additionalProperties": false, - "properties": { - "beginDate": { - "type": "string", - "nullable": true, - "pattern": "^(?:[0-9]{4})-(?:0[1-9]|1[0-2])-(?:0[1-9]|[1-2][0-9]|3[0-1])$", - "example": "2018-06-06" - }, - "endDate": { - "type": "string", - "nullable": true, - "pattern": "^(?:[0-9]{4})-(?:0[1-9]|1[0-2])-(?:0[1-9]|[1-2][0-9]|3[0-1])$", - "example": "2018-06-06" - } - } - }, - "unitName": { - "type": "string", - "nullable": true, - "maxLength": 1000, - "pattern": "^$|([a-zA-Z0-9\\-'.,# ][a-zA-Z0-9\\-'.,# ]?)*$" - }, - "unitAddress": { - "type": "string", - "maxLength": 1000, - "pattern": "^$|^([-a-zA-Z0-9'.,&# ])+$", - "nullable": true - }, - "unitPhone": { - "type": "object", - "nullable": true, - "additionalProperties": false, - "properties": { - "areaCode": { - "type": "string", - "nullable": true, - "maxLength": 3, - "pattern": "^$|^\\d{3}$", - "example": "555" - }, - "phoneNumber": { - "type": "string", - "nullable": true, - "maxLength": 20, - "example": "5555555" - } - } - }, - "receivingInactiveDutyTrainingPay": { - "type": "string", - "enum": [ - "YES", - "NO" - ], - "nullable": true, - "example": "YES" - } - } - }, - "federalActivation": { - "description": "If federalActivation is present then reservesNationalGuardService.obligationTermsOfService.beginDate, reservesNationalGuardService.obligationTermsOfService.endDate and reservesNationalGuardService.unitName are required", - "type": "object", - "nullable": true, - "additionalProperties": false, - "properties": { - "activationDate": { - "description": "Date cannot be in the future and must be after the earliest servicePeriod.activeDutyBeginDate.", - "type": "string", - "pattern": "^(?:[0-9]{4})-(?:0[1-9]|1[0-2])-(?:0[1-9]|[1-2][0-9]|3[0-1])$", - "example": "2018-06-06", - "nullable": true - }, - "anticipatedSeparationDate": { - "description": "Anticipated date of separation. Date must be in the future.", - "type": "string", - "pattern": "^(?:[0-9]{4})-(?:0[1-9]|1[0-2])-(?:0[1-9]|[1-2][0-9]|3[0-1])$", - "example": "2018-06-06", - "nullable": true - } - } - }, - "confinements": { - "type": "array", - "nullable": true, - "uniqueItems": true, - "items": { - "additionalProperties": false, - "type": "object", - "properties": { - "approximateBeginDate": { - "description": "The approximateBeginDate must be after the earliest servicePeriod activeDutyBeginDate.", - "type": "string", - "nullable": false, - "pattern": "^(?:[0-9]{4})-(?:0[1-9]|1[0-2])-(?:0[1-9]|[1-2][0-9]|3[0-1])$|(?:[0-9]{4})-(?:0[1-9]|1[0-2])$", - "example": "2018-06-06 or 2018-06" - }, - "approximateEndDate": { - "type": "string", - "nullable": false, - "pattern": "^(?:[0-9]{4})-(?:0[1-9]|1[0-2])-(?:0[1-9]|[1-2][0-9]|3[0-1])$|(?:[0-9]{4})-(?:0[1-9]|1[0-2])$", - "example": "2018-06-06 or 2018-06" - } - } - } - } + "retiredStatus": "PERMANENT_DISABILITY_RETIRED_LIST", + "favorMilitaryRetiredPay": false, + "receivedSeparationOrSeverancePay": "NO", + "separationSeverancePay": { + "datePaymentReceived": "2022-03-12", + "branchOfService": "Naval Academy", + "preTaxAmountReceived": 379 + }, + "favorTrainingPay": true + }, + "directDeposit": { + "noAccount": false, + "accountNumber": "ABCDEF", + "accountType": "CHECKING", + "financialInstitutionName": "Chase", + "routingNumber": "123123123" + }, + "claimantCertification": true + } + } + } + }, + "202 with a transactionId": { + "value": { + "data": { + "id": "739cbe6b-be83-4277-a3c6-8eced1eeb527", + "type": "forms/526", + "attributes": { + "claimId": "600442191", + "claimProcessType": "STANDARD_CLAIM_PROCESS", + "claimNotes": "Some things that are important to know, and are not included in any other place.", + "veteranIdentification": { + "serviceNumber": "123456789", + "veteranNumber": { + "telephone": "5555555555", + "internationalTelephone": "+44 20 1234 5678" + }, + "mailingAddress": { + "addressLine1": "1234 Couch Street", + "addressLine2": "Unit 4", + "addressLine3": "Room 1", + "city": "Schenectady", + "state": "NY", + "country": "USA", + "zipFirstFive": "12345", + "zipLastFour": "1234" + }, + "emailAddress": { + "email": "valid@somedomain.com", + "agreeToEmailRelatedToClaim": true + }, + "currentVaEmployee": false + }, + "changeOfAddress": { + "typeOfAddressChange": "TEMPORARY", + "addressLine1": "10 Peach St", + "addressLine2": "Unit 4", + "addressLine3": "Room 1", + "city": "Schenectady", + "state": "NY", + "country": "USA", + "zipFirstFive": "12345", + "zipLastFour": "9897", + "dates": { + "beginDate": "2023-06-04", + "endDate": "2023-12-04" + } + }, + "homeless": { + "isCurrentlyHomeless": true, + "currentlyHomeless": { + "homelessSituationOptions": "FLEEING_CURRENT_RESIDENCE", + "otherDescription": "ABCDEFGHIJKLM" + }, + "isAtRiskOfBecomingHomeless": false, + "pointOfContact": "john stewart", + "pointOfContactNumber": { + "telephone": "5555555555", + "internationalTelephone": "+44 20 1234 5678" + } + }, + "toxicExposure": { + "gulfWarHazardService": { + "servedInGulfWarHazardLocations": "YES", + "serviceDates": { + "beginDate": "2018-07", + "endDate": "2018-08" } }, - "servicePay": { - "type": "object", - "nullable": true, - "additionalProperties": false, - "properties": { - "receivingMilitaryRetiredPay": { - "description": "Is the Veteran receiving military retired pay?", - "type": "string", - "enum": [ - "YES", - "NO" - ], - "example": "YES", - "nullable": true - }, - "futureMilitaryRetiredPay": { - "description": "Will the Veteran receive military retired pay pay in future? \n If true, then 'futurePayExplanation' is required.", - "type": "string", - "enum": [ - "YES", - "NO" - ], - "example": "YES", - "nullable": true - }, - "futureMilitaryRetiredPayExplanation": { - "description": "Explains why future pay will be received.", - "type": "string", + "herbicideHazardService": { + "servedInHerbicideHazardLocations": "YES", + "otherLocationsServed": "ABCDEFGHIJKLM", + "serviceDates": { + "beginDate": "2018-07", + "endDate": "2018-08" + } + }, + "additionalHazardExposures": { + "additionalExposures": [ + "ASBESTOS", + "SHIPBOARD_HAZARD_AND_DEFENSE" + ], + "specifyOtherExposures": "Other exposure details", + "exposureDates": { + "beginDate": "2018-07", + "endDate": "2018-08" + } + }, + "multipleExposures": [ + { + "hazardExposedTo": "RADIATION", + "exposureLocation": "Guam", + "exposureDates": { + "beginDate": "2012-12", + "endDate": "2013-07" + } + } + ] + }, + "disabilities": [ + { + "name": "Traumatic Brain Injury", + "exposureOrEventOrInjury": "EXPOSURE", + "serviceRelevance": "ABCDEFG", + "approximateDate": "2018-03-11", + "disabilityActionType": "NEW", + "classificationCode": "9014", + "ratedDisabilityId": "ABCDEFGHIJKLMNOPQRSTUVWX", + "diagnosticCode": 9020, + "isRelatedToToxicExposure": true, + "secondaryDisabilities": [ + { + "name": "Post Traumatic Stress Disorder (PTSD) Combat - Mental Disorders", + "exposureOrEventOrInjury": "EXPOSURE", + "serviceRelevance": "ABCDEFGHIJKLMNOPQ", + "disabilityActionType": "SECONDARY", + "approximateDate": "2018-03-12", + "classificationCode": "9014" + } + ] + }, + { + "name": "Cancer - Musculoskeletal - Elbow", + "exposureOrEventOrInjury": "EXPOSURE", + "approximateDate": "2018-03-02", + "serviceRelevance": "ABCDEFG", + "disabilityActionType": "NEW", + "classificationCode": "9014", + "ratedDisabilityId": "ABCDEFGHIJKLMNOPQRSTUVWX", + "diagnosticCode": 249470, + "isRelatedToToxicExposure": true + }, + { + "name": "Cancer - Musculoskeletal - Knee", + "exposureOrEventOrInjury": "EXPOSURE", + "approximateDate": "2015", + "serviceRelevance": "ABCDEFG", + "disabilityActionType": "NEW", + "classificationCode": "9014", + "ratedDisabilityId": "ABCDEFGHIJKLMNOPQRSTUVWX", + "diagnosticCode": 249470, + "isRelatedToToxicExposure": true + } + ], + "treatments": [ + { + "beginDate": "2009-03", + "treatedDisabilityNames": [ + "Traumatic Brain Injury", + "Post Traumatic Stress Disorder (PTSD) Combat - Mental Disorders", + "Cancer - Musculoskeletal - Elbow" + ], + "center": { + "name": "Center One", + "city": "Decatur", + "state": "GA" + } + } + ], + "serviceInformation": { + "alternateNames": [ + "john jacob", + "johnny smith" + ], + "servicePeriods": [ + { + "serviceBranch": "Public Health Service", + "serviceComponent": "Active", + "activeDutyBeginDate": "2008-11-14", + "activeDutyEndDate": "2024-12-18", + "separationLocationCode": "98282" + } + ], + "servedInActiveCombatSince911": "NO", + "reservesNationalGuardService": { + "component": "National Guard", + "obligationTermsOfService": { + "beginDate": "2019-06-04", + "endDate": "2020-06-04" + }, + "unitName": "National Guard Unit Name", + "unitAddress": "1243 pine court", + "unitPhone": { + "areaCode": "555", + "phoneNumber": "5555555" + }, + "receivingInactiveDutyTrainingPay": "YES" + }, + "federalActivation": { + "activationDate": "2023-10-01", + "anticipatedSeparationDate": "2024-12-18" + }, + "confinements": [ + { + "approximateBeginDate": "2018-06-04", + "approximateEndDate": "2018-07-04" + }, + { + "approximateBeginDate": "2020-06", + "approximateEndDate": "2020-07" + } + ] + }, + "servicePay": { + "receivingMilitaryRetiredPay": "NO", + "futureMilitaryRetiredPay": "YES", + "futureMilitaryRetiredPayExplanation": "ABCDEFGHIJKLMNOPQRSTUVW", + "militaryRetiredPay": { + "branchOfService": "Army", + "monthlyAmount": 840 + }, + "retiredStatus": "PERMANENT_DISABILITY_RETIRED_LIST", + "favorMilitaryRetiredPay": false, + "receivedSeparationOrSeverancePay": "NO", + "separationSeverancePay": { + "datePaymentReceived": "2022-03-12", + "branchOfService": "Naval Academy", + "preTaxAmountReceived": 379 + }, + "favorTrainingPay": true + }, + "directDeposit": { + "noAccount": false, + "accountNumber": "ABCDEF", + "accountType": "CHECKING", + "financialInstitutionName": "Chase", + "routingNumber": "123123123" + }, + "claimantCertification": true + } + }, + "meta": { + "transactionId": "00000000-0000-0000-0000-000000000000" + } + } + } + }, + "schema": { + "name": "data", + "required": [ + "data" + ], + "properties": { + "data": { + "type": "object", + "required": [ + "id", + "type", + "attributes" + ], + "properties": { + "id": { + "type": "string", + "example": "7d0de77e-b7bd-4db7-a8d9-69a25482c80a" + }, + "type": { + "type": "string", + "example": "form/8675309" + }, + "attributes": { + "description": "Claims API 526 Schema", + "type": "object", + "additionalProperties": false, + "required": [ + "claimantCertification", + "claimProcessType", + "disabilities", + "serviceInformation", + "veteranIdentification" + ], + "properties": { + "claimProcessType": { + "type": "string", + "description": "Select type of claim program/process that applies to the Veteran.", + "enum": [ + "STANDARD_CLAIM_PROCESS", + "FDC_PROGRAM", + "BDD_PROGRAM" + ] + }, + "veteranIdentification": { + "type": "object", + "additionalProperties": false, + "required": [ + "mailingAddress", + "currentVaEmployee" + ], + "properties": { + "serviceNumber": { + "type": "string", + "description": "Service identification number", "maxLength": 1000, - "example": "Will be retiring soon.", "nullable": true }, - "militaryRetiredPay": { + "veteranNumber": { + "description": "If there isn't a ten digit phone number in VBMS for the Veteran, the exams will not be ordered. Including the phone number is recommended to avoid claim processing delays.", "type": "object", "nullable": true, - "description": "", "properties": { - "branchOfService": { - "description": "Branch of service. The /service-branches endpoint on the [Benefits Reference Data API](https://developer.va.gov/explore/benefits/docs/benefits_reference_data?version=current) may be used to retrieve list of possible service branches.", + "telephone": { + "description": "Veteran's phone number.", "type": "string", - "maxLength": 1000, - "nullable": true, - "example": "Air Force" + "pattern": "^\\d{10}?$", + "example": "5555555555", + "nullable": true }, - "monthlyAmount": { - "description": "Amount being received.", - "type": "integer", - "nullable": true, - "minimum": 1, - "maximum": 999999, - "example": 100 + "internationalTelephone": { + "type": "string", + "description": "Veteran's international phone number.", + "example": "+44 20 1234 5678", + "maxLength": 1000, + "nullable": true } } }, - "retiredStatus": { - "type": "string", - "nullable": true, - "description": "", - "enum": [ - "RETIRED", - "TEMPORARY_DISABILITY_RETIRED_LIST", - "PERMANENT_DISABILITY_RETIRED_LIST" - ] - }, - "favorMilitaryRetiredPay": { - "description": "Is the Veteran waiving VA benefits to retain military retired pay? See item 26 on form 21-526EZ for more details.", - "type": "boolean", - "nullable": true, - "example": true, - "default": false - }, - "receivedSeparationOrSeverancePay": { - "description": "Has the Veteran ever received separation pay, disability severance pay, or any other lump sum payment from their branch of service?", - "type": "string", - "enum": [ - "YES", - "NO" - ], - "example": "YES", - "nullable": true - }, - "separationSeverancePay": { + "mailingAddress": { "type": "object", - "nullable": true, - "description": "", + "additionalProperties": false, + "required": [ + "addressLine1", + "city", + "country" + ], "properties": { - "datePaymentReceived": { - "description": "Approximate date separation pay was received. \n Format can be either YYYY-MM-DD or YYYY-MM or YYYY", + "addressLine1": { + "description": "Address line 1 for the Veteran's current mailing address.", "type": "string", - "pattern": "^(?:[0-9]{4})-(?:0[1-9]|1[0-2])-(?:0[1-9]|[1-2][0-9]|3[0-1])$|(?:[0-9]{4})$|(?:[0-9]{4})-(?:0[1-9]|1[0-2])$", - "example": "2018-03-02 or 2018-03 or 2018" + "pattern": "^([-a-zA-Z0-9'.,&#]([-a-zA-Z0-9'.,&# ])?)+$", + "maxLength": 20, + "example": "1234 Couch Street" }, - "branchOfService": { - "description": "Branch of service. The /service-branches endpoint on the [Benefits Reference Data API](https://developer.va.gov/explore/benefits/docs/benefits_reference_data?version=current) may be used to retrieve list of possible service branches.", + "addressLine2": { + "description": "Address line 2 for the Veteran's current mailing address.", + "type": "string", + "pattern": "^([-a-zA-Z0-9'.,&#]([-a-zA-Z0-9'.,&# ])?)+$", + "maxLength": 20, + "example": "Unit 4", + "nullable": true + }, + "addressLine3": { + "description": "Address line 3 for the Veteran's current mailing address.", + "type": "string", + "pattern": "^([-a-zA-Z0-9'.,&#]([-a-zA-Z0-9'.,&# ])?)+$", + "maxLength": 20, + "example": "Room 1", + "nullable": true + }, + "city": { + "description": "City for the Veteran's current mailing address.", + "type": "string", + "pattern": "^$|([a-zA-Z0-9\\'-'.# ]([a-zA-Z0-9\\'-'.# ])?)+$", + "minLength": 1, + "maxLength": 30, + "example": "Schenectady" + }, + "state": { + "description": "State for the Veteran's current mailing address. Required if 'country' is 'USA'.", + "type": "string", + "pattern": "^[a-z,A-Z]{2}$", + "example": "NY", + "nullable": true + }, + "country": { + "description": "Country for the Veteran's current mailing address. Must match the values returned by the /countries endpoint on the [Benefits Reference Data API](https://developer.va.gov/explore/benefits/docs/benefits_reference_data?version=current).", "type": "string", - "nullable": true, "maxLength": 1000, - "example": "Air Force" + "example": "USA" }, - "preTaxAmountReceived": { - "description": "Amount being received.", - "type": "integer", + "zipFirstFive": { + "description": "Zip code (First 5 digits) for the Veteran's current mailing address. Required if 'country' is 'USA'.", + "type": "string", + "pattern": "^\\d{5}?$", + "example": "12345", + "nullable": true + }, + "zipLastFour": { + "description": "Zip code (Last 4 digits) for the Veteran's current mailing address.", + "type": "string", + "pattern": "^\\d{4}?$", + "example": "6789", + "nullable": true + }, + "internationalPostalCode": { + "description": "International postal code for the Veteran's current mailing address. Do not include if 'country' is 'USA'.", + "type": "string", + "maxLength": 16, "nullable": true, - "minimum": 1, - "maximum": 999999, - "example": 100 + "pattern": "^[a-zA-Z0-9]*$" } } }, - "favorTrainingPay": { - "description": "Is the Veteran waiving VA benefits to retain training pay? See item 28 on form 21-526EZ for more details. ", - "type": "boolean", + "emailAddress": { + "description": "Information associated with the Veteran's email address.", + "type": "object", "nullable": true, - "example": true, - "default": false + "properties": { + "email": { + "type": "string", + "pattern": "^[^\\s@]+@([^\\s@.,]+\\.)+[^\\s@.,]{2,}$", + "description": "The most current email address of the Veteran.", + "maxLength": 80, + "nullable": true + }, + "agreeToEmailRelatedToClaim": { + "type": "boolean", + "description": "Agreement to email information relating to this claim.", + "example": true, + "default": false, + "nullable": true + } + } + }, + "currentVaEmployee": { + "type": "boolean", + "description": "Set to true if Veteran is a VA employee.", + "nullable": false } } }, - "directDeposit": { + "changeOfAddress": { + "description": "If 'changeOfAddress' is included, the following attributes are required: 'typeOfAddressChange', 'addressLine1', 'city', 'country'.", "type": "object", "nullable": true, "additionalProperties": false, - "description": "If direct deposit information is included, the following attributes are required: accountType, accountNumber, routingNumber.", "properties": { - "noAccount": { - "type": "boolean", - "nullable": true, - "description": "Claimant certifies that they do not have an account with a financial institution or certified payment agent.", - "default": false + "typeOfAddressChange": { + "description": "Temporary or Permanent change of address. If 'TEMPORARY', 'beginDate' and 'endDate' are required.", + "type": "string", + "enum": [ + "TEMPORARY", + "PERMANENT" + ], + "example": "PERMANENT" }, - "accountNumber": { - "description": "Account number for the direct deposit.", - "pattern": "^(?:[a-zA-Z0-9-]{4,1000})?$", + "addressLine1": { + "description": "Address line 1 for the Veteran's new address.", "type": "string", - "maxLength": 1000, - "nullable": true, - "example": "123123123123" + "pattern": "^([-a-zA-Z0-9'.,&#]([-a-zA-Z0-9'.,&# ])?)+$", + "maxLength": 20, + "example": "1234 Couch Street" }, - "accountType": { - "description": "Account type for the direct deposit.", + "addressLine2": { + "description": "Address line 2 for the Veteran's new address.", "type": "string", - "nullable": true, - "example": "CHECKING", - "enum": [ - "CHECKING", - "SAVINGS" - ] + "pattern": "^([-a-zA-Z0-9'.,&#]([-a-zA-Z0-9'.,&# ])?)+$", + "maxLength": 20, + "example": "Unit 4", + "nullable": true }, - "financialInstitutionName": { - "description": "Provide the name of the financial institution where the Veteran wants the direct deposit.", + "addressLine3": { + "description": "Address line 3 for the Veteran's new address.", + "type": "string", + "pattern": "^([-a-zA-Z0-9'.,&#]([-a-zA-Z0-9'.,&# ])?)+$", + "maxLength": 20, + "example": "Room 1", + "nullable": true + }, + "city": { + "description": "City for the Veteran's new address.", + "type": "string", + "pattern": "^$|([a-zA-Z0-9\\'-'.# ]([a-zA-Z0-9\\'-'.# ])?)+$", + "minLength": 0, + "maxLength": 30, + "example": "Schenectady" + }, + "state": { + "description": "State for the Veteran's new address. Required if 'country' is 'USA'.", + "type": "string", + "pattern": "^$|^[a-z,A-Z]{2}$", + "example": "NY", + "nullable": true + }, + "country": { + "description": "Country for the Veteran's new address. Value must match the values returned by the /countries endpoint on the [Benefits Reference Data API](https://developer.va.gov/explore/benefits/docs/benefits_reference_data?version=current).", + "type": "string", "maxLength": 1000, + "example": "USA" + }, + "zipFirstFive": { + "description": "Zip code (First 5 digits) for the Veteran's new address. Required if 'country' is 'USA'.", + "type": "string", + "pattern": "^$|^\\d{5}?$", + "example": "12345", + "nullable": true + }, + "zipLastFour": { + "description": "Zip code (Last 4 digits) for the Veteran's new address.", "type": "string", "nullable": true, - "example": "Some Bank" + "pattern": "^$|^\\d{4}?$", + "example": "6789" }, - "routingNumber": { - "description": "Routing number for the direct deposit.", + "internationalPostalCode": { + "description": "International postal code for the Veteran's new address. Do not include if 'country' is 'USA'.", "type": "string", - "maxLength": 1000, + "maxLength": 16, "nullable": true, - "pattern": "^$|^\\d{0,1000}$", - "example": "123123123" + "pattern": "^[a-zA-Z0-9]*$" + }, + "dates": { + "type": "object", + "properties": { + "beginDate": { + "description": "Begin date for the Veteran's new address.", + "pattern": "^(?:[0-9]{4})-(?:0[1-9]|1[0-2])-(?:0[1-9]|[1-2][0-9]|3[0-1])$", + "type": "string", + "nullable": true, + "example": "2018-06-04" + }, + "endDate": { + "description": "Date in YYYY-MM-DD the changed address expires, if change is temporary.", + "type": "string", + "nullable": true, + "pattern": "^(?:[0-9]{4})-(?:0[1-9]|1[0-2])-(?:0[1-9]|[1-2][0-9]|3[0-1])$", + "example": "2018-06-04" + } + } } } }, - "claimantCertification": { - "type": "boolean", - "description": "Claimant certifies and authorizes release of information.", - "default": false - }, - "claimNotes": { - "type": "string", - "description": "An optional notes section.", - "maxLength": 4000 - }, - "claimId": { - "type": "string", - "example": "600517517" - } - } - } - } - } - } - } - } - } - }, - "401": { - "description": "Unauthorized", - "content": { - "application/json": { - "example": { - "errors": [ - { - "title": "Not authorized", - "status": "401", - "detail": "Not authorized" - } - ] - }, - "schema": { - "required": [ - "errors" - ], - "properties": { - "errors": { - "type": "array", - "items": { - "additionalProperties": false, - "required": [ - "title", - "detail" - ], - "properties": { - "title": { - "type": "string", - "description": "HTTP error title" - }, - "detail": { - "type": "string", - "description": "HTTP error detail" - }, - "status": { - "type": "string", - "description": "HTTP error status code" - }, - "source": { - "type": "object", - "additionalProperties": false, - "description": "Source of error", - "properties": { - "pointer": { - "type": "string", - "description": "Pointer to source of error" - } - } - } - } - } - } - } - } - } - } - }, - "404": { - "description": "Resource not found", - "content": { - "application/json": { - "example": { - "errors": [ - { - "status": "404", - "title": "Resource not found", - "detail": "Unable to locate Veteran's ID/ICN in Master Person Index (MPI). Please submit an issue at ask.va.gov or call 1-800-MyVA411 (800-698-2411) for assistance." - } - ] - }, - "schema": { - "required": [ - "errors" - ], - "properties": { - "errors": { - "type": "array", - "items": { - "additionalProperties": false, - "required": [ - "title", - "detail" - ], - "properties": { - "title": { - "type": "string", - "description": "HTTP error title" - }, - "detail": { - "type": "string", - "description": "HTTP error detail" - }, - "status": { - "type": "string", - "description": "HTTP error status code" - } - } - } - } - } - } - } - } - }, - "422": { - "description": "Unprocessable entity", - "content": { - "application/json": { - "examples": { - "Violates JSON Schema": { - "value": { - "errors": [ - { - "title": "Unprocessable entity", - "detail": "The property / did not contain the required key claimProcessType", - "status": "422", - "source": { - "pointer": "data/attributes/" - } - }, - { - "title": "Unprocessable entity", - "detail": "The property / did not contain the required key disabilities", - "status": "422", - "source": { - "pointer": "data/attributes/" - } - }, - { - "title": "Unprocessable entity", - "detail": "The property / did not contain the required key serviceInformation", - "status": "422", - "source": { - "pointer": "data/attributes/" - } - }, - { - "title": "Unprocessable entity", - "detail": "The property / did not contain the required key veteranIdentification", - "status": "422", - "source": { - "pointer": "data/attributes/" - } - } - ] - } - }, - "Not a JSON Object": { - "value": { - "errors": [ - { - "title": "Unprocessable entity", - "status": "422", - "detail": "The request body is not a valid JSON object: This is not valid JSON", - "source": { - "pointer": null - } - } - ] - } - } - }, - "schema": { - "required": [ - "errors" - ], - "properties": { - "errors": { - "type": "array", - "items": { - "additionalProperties": false, - "required": [ - "title", - "status", - "detail" - ], - "properties": { - "status": { - "type": "string", - "description": "HTTP error code" - }, - "detail": { - "type": "string", - "description": "HTTP error detail" - }, - "source": { - "type": "object", - "pointer": { - "type": "string" - } - }, - "title": { - "type": "string" - } - } - } - } - } - } - } - } - } - }, - "requestBody": { - "content": { - "application/json": { - "schema": { - "type": "object", - "required": [ - "data" - ], - "properties": { - "data": { - "type": "object", - "required": [ - "attributes", - null - ], - "properties": { - "attributes": { - "$schema": "http://json-schema.org/draft-07/schema#", - "description": "Claims API 526 Schema", - "type": "object", - "additionalProperties": false, - "required": [ - "claimantCertification", - "claimProcessType", - "disabilities", - "serviceInformation", - "veteranIdentification" - ], - "properties": { - "claimProcessType": { - "type": "string", - "description": "Select type of claim program/process that applies to the Veteran.", - "enum": [ - "STANDARD_CLAIM_PROCESS", - "FDC_PROGRAM", - "BDD_PROGRAM" - ] - }, - "veteranIdentification": { - "type": "object", - "additionalProperties": false, - "required": [ - "mailingAddress", - "currentVaEmployee" - ], - "properties": { - "serviceNumber": { - "type": "string", - "description": "Service identification number", - "maxLength": 1000, - "nullable": true - }, - "veteranNumber": { - "description": "If there isn't a ten digit phone number in VBMS for the Veteran, the exams will not be ordered. Including the phone number is recommended to avoid claim processing delays.", - "type": "object", - "nullable": true, - "properties": { - "telephone": { - "description": "Veteran's phone number.", - "type": "string", - "pattern": "^\\d{10}?$", - "example": "5555555555", - "nullable": true - }, - "internationalTelephone": { - "type": "string", - "description": "Veteran's international phone number.", - "example": "+44 20 1234 5678", - "maxLength": 1000, - "nullable": true - } - } - }, - "mailingAddress": { - "type": "object", - "additionalProperties": false, - "required": [ - "addressLine1", - "city", - "country" - ], - "properties": { - "addressLine1": { - "description": "Address line 1 for the Veteran's current mailing address.", - "type": "string", - "pattern": "^([-a-zA-Z0-9'.,&#]([-a-zA-Z0-9'.,&# ])?)+$", - "maxLength": 20, - "example": "1234 Couch Street" - }, - "addressLine2": { - "description": "Address line 2 for the Veteran's current mailing address.", - "type": "string", - "pattern": "^([-a-zA-Z0-9'.,&#]([-a-zA-Z0-9'.,&# ])?)+$", - "maxLength": 20, - "example": "Unit 4", - "nullable": true - }, - "addressLine3": { - "description": "Address line 3 for the Veteran's current mailing address.", - "type": "string", - "pattern": "^([-a-zA-Z0-9'.,&#]([-a-zA-Z0-9'.,&# ])?)+$", - "maxLength": 20, - "example": "Room 1", - "nullable": true - }, - "city": { - "description": "City for the Veteran's current mailing address.", - "type": "string", - "pattern": "^$|([a-zA-Z0-9\\'-'.# ]([a-zA-Z0-9\\'-'.# ])?)+$", - "minLength": 1, - "maxLength": 30, - "example": "Schenectady" - }, - "state": { - "description": "State for the Veteran's current mailing address. Required if 'country' is 'USA'.", - "type": "string", - "pattern": "^[a-z,A-Z]{2}$", - "example": "NY", - "nullable": true - }, - "country": { - "description": "Country for the Veteran's current mailing address. Must match the values returned by the /countries endpoint on the [Benefits Reference Data API](https://developer.va.gov/explore/benefits/docs/benefits_reference_data?version=current).", - "type": "string", - "maxLength": 1000, - "example": "USA" - }, - "zipFirstFive": { - "description": "Zip code (First 5 digits) for the Veteran's current mailing address. Required if 'country' is 'USA'.", - "type": "string", - "pattern": "^\\d{5}?$", - "example": "12345", - "nullable": true - }, - "zipLastFour": { - "description": "Zip code (Last 4 digits) for the Veteran's current mailing address.", - "type": "string", - "pattern": "^\\d{4}?$", - "example": "6789", - "nullable": true - }, - "internationalPostalCode": { - "description": "International postal code for the Veteran's current mailing address. Do not include if 'country' is 'USA'.", - "type": "string", - "maxLength": 16, - "nullable": true, - "pattern": "^[a-zA-Z0-9]*$" - } - } - }, - "emailAddress": { - "description": "Information associated with the Veteran's email address.", - "type": "object", - "nullable": true, - "properties": { - "email": { - "type": "string", - "pattern": "^[^\\s@]+@([^\\s@.,]+\\.)+[^\\s@.,]{2,}$", - "description": "The most current email address of the Veteran.", - "maxLength": 80, - "nullable": true - }, - "agreeToEmailRelatedToClaim": { - "type": "boolean", - "description": "Agreement to email information relating to this claim.", - "example": true, - "default": false, - "nullable": true - } - } - }, - "currentVaEmployee": { - "type": "boolean", - "description": "Set to true if Veteran is a VA employee.", - "nullable": false - } - } - }, - "changeOfAddress": { - "description": "If 'changeOfAddress' is included, the following attributes are required: 'typeOfAddressChange', 'addressLine1', 'city', 'country'.", - "type": "object", - "nullable": true, - "additionalProperties": false, - "properties": { - "typeOfAddressChange": { - "description": "Temporary or Permanent change of address. If 'TEMPORARY', 'beginDate' and 'endDate' are required.", - "type": "string", - "enum": [ - "TEMPORARY", - "PERMANENT" - ], - "example": "PERMANENT" - }, - "addressLine1": { - "description": "Address line 1 for the Veteran's new address.", - "type": "string", - "pattern": "^([-a-zA-Z0-9'.,&#]([-a-zA-Z0-9'.,&# ])?)+$", - "maxLength": 20, - "example": "1234 Couch Street" - }, - "addressLine2": { - "description": "Address line 2 for the Veteran's new address.", - "type": "string", - "pattern": "^([-a-zA-Z0-9'.,&#]([-a-zA-Z0-9'.,&# ])?)+$", - "maxLength": 20, - "example": "Unit 4", - "nullable": true - }, - "addressLine3": { - "description": "Address line 3 for the Veteran's new address.", - "type": "string", - "pattern": "^([-a-zA-Z0-9'.,&#]([-a-zA-Z0-9'.,&# ])?)+$", - "maxLength": 20, - "example": "Room 1", - "nullable": true - }, - "city": { - "description": "City for the Veteran's new address.", - "type": "string", - "pattern": "^$|([a-zA-Z0-9\\'-'.# ]([a-zA-Z0-9\\'-'.# ])?)+$", - "minLength": 0, - "maxLength": 30, - "example": "Schenectady" - }, - "state": { - "description": "State for the Veteran's new address. Required if 'country' is 'USA'.", - "type": "string", - "pattern": "^$|^[a-z,A-Z]{2}$", - "example": "NY", - "nullable": true - }, - "country": { - "description": "Country for the Veteran's new address. Value must match the values returned by the /countries endpoint on the [Benefits Reference Data API](https://developer.va.gov/explore/benefits/docs/benefits_reference_data?version=current).", - "type": "string", - "maxLength": 1000, - "example": "USA" - }, - "zipFirstFive": { - "description": "Zip code (First 5 digits) for the Veteran's new address. Required if 'country' is 'USA'.", - "type": "string", - "pattern": "^$|^\\d{5}?$", - "example": "12345", - "nullable": true - }, - "zipLastFour": { - "description": "Zip code (Last 4 digits) for the Veteran's new address.", - "type": "string", - "nullable": true, - "pattern": "^$|^\\d{4}?$", - "example": "6789" - }, - "internationalPostalCode": { - "description": "International postal code for the Veteran's new address. Do not include if 'country' is 'USA'.", - "type": "string", - "maxLength": 16, - "nullable": true, - "pattern": "^[a-zA-Z0-9]*$" - }, - "dates": { - "type": "object", - "properties": { - "beginDate": { - "description": "Begin date for the Veteran's new address.", - "pattern": "^(?:[0-9]{4})-(?:0[1-9]|1[0-2])-(?:0[1-9]|[1-2][0-9]|3[0-1])$", - "type": "string", - "nullable": true, - "example": "2018-06-04" - }, - "endDate": { - "description": "Date in YYYY-MM-DD the changed address expires, if change is temporary.", - "type": "string", - "nullable": true, - "pattern": "^(?:[0-9]{4})-(?:0[1-9]|1[0-2])-(?:0[1-9]|[1-2][0-9]|3[0-1])$", - "example": "2018-06-04" - } - } - } - } - }, - "homeless": { - "type": "object", - "nullable": true, - "additionalProperties": false, - "properties": { - "isCurrentlyHomeless": { - "type": "boolean", - "nullable": true, - "description": "Is the Veteran currently homeless?" - }, - "currentlyHomeless": { - "type": "object", - "nullable": true, - "additionalProperties": false, - "properties": { - "homelessSituationOptions": { - "description": "Veteran's living situation.", - "type": "string", - "nullable": true, - "default": "other", - "enum": [ - "LIVING_IN_A_HOMELESS_SHELTER", - "NOT_CURRENTLY_IN_A_SHELTERED_ENVIRONMENT", - "STAYING_WITH_ANOTHER_PERSON", - "FLEEING_CURRENT_RESIDENCE", - "OTHER" - ], - "example": "FLEEING_CURRENT_RESIDENCE" - }, - "otherDescription": { - "description": "Explanation of living situation. Required if 'homelessSituationOptions' is 'OTHER'.", - "type": "string", - "nullable": true, - "maxLength": 500, - "example": "other living situation" - } - } - }, - "isAtRiskOfBecomingHomeless": { - "type": "boolean", - "nullable": true, - "description": "Is the Veteran currently at risk of becoming homeless?" - }, - "riskOfBecomingHomeless": { - "type": "object", - "nullable": true, - "additionalProperties": false, - "properties": { - "livingSituationOptions": { - "type": "string", - "nullable": true, - "default": "HOUSING_WILL_BE_LOST_IN_30_DAYS", - "enum": [ - "HOUSING_WILL_BE_LOST_IN_30_DAYS", - "LEAVING_PUBLICLY_FUNDED_SYSTEM_OF_CARE", - "OTHER" - ] - }, - "otherDescription": { - "description": "Explanation of living situation. Required if 'livingSituationOptions' is 'OTHER'.", - "type": "string", - "nullable": true, - "maxLength": 500, - "example": "other living situation" - } - } - }, - "pointOfContact": { - "description": "Individual in direct contact with Veteran.", - "type": "string", - "nullable": true, - "minLength": 1, - "maxLength": 100, - "pattern": "^([-a-zA-Z0-9/']+( ?))*$", - "example": "Jane Doe" - }, - "pointOfContactNumber": { - "type": "object", - "nullable": true, - "additionalProperties": false, - "properties": { - "telephone": { - "description": "Ten digit primary phone of point of contact.", - "type": "string", - "pattern": "^\\d{10}?$", - "example": "5555555", - "nullable": true - }, - "internationalTelephone": { - "description": "International phone of point of contact.", - "type": "string", - "example": "+44 20 1234 5678", - "maxLength": 1000, - "nullable": true - } - } - } - } - }, - "toxicExposure": { - "type": "object", - "nullable": true, - "properties": { - "gulfWarHazardService": { - "type": "object", - "nullable": true, - "description": "Toxic exposure related to the Gulf war.", - "properties": { - "servedInGulfWarHazardLocations": { - "type": "string", - "description": "Set to true if the Veteran served in any of the following Gulf War hazard locations: Iraq; Kuwait; Saudi Arabia; the neutral zone between Iraq and Saudi Arabia; Bahrain; Qatar; the United Arab Emirates; Oman; Yemen; Lebanon; Somalia; Afghanistan; Israel; Egypt; Turkey; Syria; Jordan; Djibouti; Uzbekistan; the Gulf of Aden; the Gulf of Oman; the Persian Gulf; the Arabian Sea; and the Red Sea.", - "example": "YES", - "enum": [ - "NO", - "YES" - ], - "nullable": true - }, - "serviceDates": { - "type": "object", - "nullable": true, - "description": "Date range for when the exposure happened.", - "properties": { - "beginDate": { - "type": "string", - "nullable": true, - "description": "Approximate begin date for serving in Gulf War hazard location.", - "pattern": "^(?:19|20)[0-9][0-9]$|^(?:19|20)[0-9][0-9]-(0[1-9]|1[0-2])$", - "example": "2018-06 or 2018" - }, - "endDate": { - "type": "string", - "nullable": true, - "description": "Approximate end date for serving in Gulf War hazard location.", - "pattern": "^(?:19|20)[0-9][0-9]$|^(?:19|20)[0-9][0-9]-(0[1-9]|1[0-2])$", - "example": "2018-06 or 2018" - } - } - } - } - }, - "herbicideHazardService": { - "description": "Toxic exposure related to herbicide (Agent Orange) hazards.", - "type": "object", - "nullable": true, - "properties": { - "servedInHerbicideHazardLocations": { - "type": "string", - "description": "Set to true if the Veteran served in any of the following herbicide/Agent Orange locations: Republic of Vietnam to include the 12 nautical mile territorial waters; Thailand at any United States or Royal Thai base; Laos; Cambodia at Mimot or Krek; Kampong Cham Province; Guam or American Samoa; or in the territorial waters thereof; Johnston Atoll or a ship that called at Johnston Atoll; Korean demilitarized zone; aboard (to include repeated operations and maintenance with) a C-123 aircraft known to have been used to spray an herbicide agent (during service in the Air Force and Air Force Reserves).", - "example": "YES", - "enum": [ - "NO", - "YES" - ], - "nullable": true - }, - "otherLocationsServed": { - "type": "string", - "nullable": true, - "pattern": "^$|([a-zA-Z0-9\"\\/&\\(\\)\\-'.,#\\[\\] ]([a-zA-Z0-9(\\)\\-'.,#\\[\\] ])?)+$", - "maxLength": 5000, - "description": "Other location(s) where Veteran served." - }, - "serviceDates": { - "description": "Date range for exposure in herbicide hazard location.", - "type": "object", - "nullable": true, - "properties": { - "beginDate": { - "type": "string", - "nullable": true, - "description": "Approximate begin date for serving in herbicide location.", - "pattern": "^(?:19|20)[0-9][0-9]$|^(?:19|20)[0-9][0-9]-(0[1-9]|1[0-2])$", - "example": "2018-06 or 2018" - }, - "endDate": { - "type": "string", - "nullable": true, - "description": "Approximate end date for serving in herbicide location.", - "pattern": "^(?:19|20)[0-9][0-9]$|^(?:19|20)[0-9][0-9]-(0[1-9]|1[0-2])$", - "example": "2018-06 or 2018" - } - } - } - } - }, - "additionalHazardExposures": { - "type": "object", - "nullable": true, - "description": "Additional hazardous exposures.", - "properties": { - "additionalExposures": { - "description": "Additional exposure incidents.", - "type": "array", - "nullable": true, - "uniqueItems": true, - "items": { - "type": "string", - "additionalProperties": false, - "enum": [ - "ASBESTOS", - "MUSTARD_GAS", - "RADIATION", - "SHIPBOARD_HAZARD_AND_DEFENSE", - "MILITARY_OCCUPATIONAL_SPECIALTY_RELATED_TOXIN", - "CONTAMINATED_WATER_AT_CAMP_LEJEUNE", - "OTHER" - ] - } - }, - "specifyOtherExposures": { - "type": "string", - "nullable": true, - "pattern": "^$|([a-zA-Z0-9\"\\/&\\(\\)\\-'.,#\\[\\] ]([a-zA-Z0-9(\\)\\-'.,#\\[\\] ])?)+$", - "maxLength": 5000, - "description": "Exposure to asbestos." - }, - "exposureDates": { - "type": "object", - "nullable": true, - "description": "Date range for when the exposure happened.", - "properties": { - "beginDate": { - "type": "string", - "nullable": true, - "description": "Approximate begin date for exposure.", - "pattern": "^(?:19|20)[0-9][0-9]$|^(?:19|20)[0-9][0-9]-(0[1-9]|1[0-2])$", - "example": "2018-06 or 2018" - }, - "endDate": { - "type": "string", - "nullable": true, - "description": "Approximate end date for exposure.", - "pattern": "^(?:19|20)[0-9][0-9]$|^(?:19|20)[0-9][0-9]-(0[1-9]|1[0-2])$", - "example": "2018-06 or 2018" - } - } - } - } - }, - "multipleExposures": { - "type": "array", - "nullable": true, - "minItems": 1, - "uniqueItems": true, - "items": { - "type": "object", - "additionalProperties": false, - "properties": { - "hazardExposedTo": { - "type": "string", - "nullable": true, - "pattern": "^([-a-zA-Z0-9'.,&# ])+$", - "maxLength": 1000, - "description": "Hazard the Veteran was exposed to." - }, - "exposureLocation": { - "type": "string", - "nullable": true, - "pattern": "^$|([a-zA-Z0-9\"\\/&\\(\\)\\-'.,#\\[\\] ]([a-zA-Z0-9(\\)\\-'.,#\\[\\] ])?)+$", - "maxLength": 1000, - "description": "Location where the exposure happened." - }, - "exposureDates": { - "type": "object", - "nullable": true, - "description": "Date range for when the exposure happened.", - "properties": { - "beginDate": { - "type": "string", - "nullable": true, - "description": "Approximate begin date for exposure.", - "pattern": "^(?:19|20)[0-9][0-9]$|^(?:19|20)[0-9][0-9]-(0[1-9]|1[0-2])$", - "example": "2018-06 or 2018" - }, - "endDate": { - "type": "string", - "nullable": true, - "description": "Approximate end date for exposure.", - "pattern": "^(?:19|20)[0-9][0-9]$|^(?:19|20)[0-9][0-9]-(0[1-9]|1[0-2])$", - "example": "2018-06 or 2018" - } - } - } - } - } - } - } - }, - "disabilities": { - "description": "Any current disabilities or symptoms the Veteran is claiming are related to their military service and/or are service-connected.", - "type": "array", - "minItems": 1, - "items": { - "type": "object", - "additionalProperties": false, - "required": [ - "disabilityActionType", - "name" - ], - "properties": { - "name": { - "description": "Name of the disability. The /disabilities endpoint on the [Benefits Reference Data API](https://developer.va.gov/explore/benefits/docs/benefits_reference_data?version=current) may be used to retrieve possible disability names.", - "type": "string", - "pattern": "^$|([a-zA-Z0-9\"\\/&\\(\\)\\-'.,#\\[\\] ]([a-zA-Z0-9(\\)\\-'.,#\\[\\] ])?)+$", - "example": "PTSD (post traumatic stress disorder)", - "maxLength": 255 - }, - "exposureOrEventOrInjury": { - "type": "string", - "description": "What caused the disability?", - "nullable": true, - "maxLength": 1000, - "examples": [ - "Agent Orange", - "radiation", - "burn pits" - ] - }, - "serviceRelevance": { - "description": "Explanation of how the disability(ies) relates to the in-service event/exposure/injury. If the disabilityActionType is 'NEW', the serviceRelevance is required.", - "type": "string", - "nullable": true, - "maxLength": 1000, - "example": "Heavy equipment operator in service." - }, - "approximateDate": { - "description": "Approximate date disability began. Date must be in the past. \n Format can be either YYYY-MM-DD or YYYY-MM or YYYY", - "type": "string", - "pattern": "^(?:[0-9]{4}(?:-(?!00)(?:0[1-9]|1[0-2])(?:-(?:0[1-9]|[1-2][0-9]|3[0-1]))?)?)$", - "example": "2018-03-02 or 2018-03 or 2018", - "nullable": true - }, - "disabilityActionType": { - "description": "Action type requested for the disability. If 'INCREASE' or 'NONE', then 'ratedDisabilityId' and 'diagnosticCode' should be included. 'NONE' should be used when including a secondary disability.", - "type": "string", - "enum": [ - "NONE", - "NEW", - "INCREASE" - ], - "example": "NEW" - }, - "classificationCode": { - "type": "string", - "description": "Classification code for the associated body system. Must match an active code returned by the /disabilities endpoint on the [Benefits Reference Data API](https://developer.va.gov/explore/benefits/docs/benefits_reference_data?version=current).", - "example": "249470", - "nullable": true - }, - "ratedDisabilityId": { - "description": "When submitting a contention with action type 'INCREASE', the previously rated disability id may be included.", - "type": "string", - "example": "1100583", - "nullable": true - }, - "diagnosticCode": { - "description": "If the disabilityActionType is 'NONE' or 'INCREASE', the diagnosticCode should correspond to an existing rated disability.", - "type": "integer", - "example": 9999, - "nullable": true - }, - "isRelatedToToxicExposure": { - "type": "boolean", - "description": "Is the disability related to toxic exposures? If true, related 'toxicExposure' must be included.", - "example": true, - "default": false, - "nullable": true - }, - "specialIssues": { - "type": "array", - "nullable": true, - "uniqueItems": true, - "items": { - "maxItems": 2, - "additionalProperties": false, - "type": "string", - "enum": [ - "POW", - "EMP" - ] - } - }, - "secondaryDisabilities": { - "description": "If secondaryDisability is included, the following attributes are required: 'secondaryDisability.name', 'secondaryDisability.disabilityActionType' and 'secondaryDisability.serviceRelevance'", - "type": "array", - "items": { - "type": "object", - "additionalProperties": false, - "properties": { - "name": { - "description": "Name of the disability. The /disabilities endpoint on the [Benefits Reference Data API](https://developer.va.gov/explore/benefits/docs/benefits_reference_data?version=current) may be used to retrieve possible disability names.", - "type": "string", - "pattern": "^$|([a-zA-Z0-9\"\\/&\\(\\)\\-'.,# ]([a-zA-Z0-9(\\)\\-'.,#\\[\\] ])?)+$", - "example": "PTSD (post traumatic stress disorder)", - "maxLength": 255 - }, - "exposureOrEventOrInjury": { - "type": "string", - "description": "What caused the disability?", - "nullable": true, - "maxLength": 1000, - "examples": [ - "Agent Orange", - "radiation", - "burn pits" - ] - }, - "serviceRelevance": { - "description": "Explanation of how the disability(ies) relates to the in-service event/exposure/injury.", - "type": "string", - "nullable": true, - "maxLength": 1000, - "example": "Heavy equipment operator in service." - }, - "disabilityActionType": { - "description": "The status of the secondary disability.", - "type": "string", - "example": "SECONDARY", - "enum": [ - "SECONDARY" - ] - }, - "approximateDate": { - "description": "Approximate date disability began. Date must be in the past. \n Format can be either YYYY-MM-DD or YYYY-MM or YYYY", - "type": "string", - "pattern": "^(?:[0-9]{4}(?:-(?!00)(?:0[1-9]|1[0-2])(?:-(?:0[1-9]|[1-2][0-9]|3[0-1]))?)?)$", - "example": "2018-03-02 or 2018-03 or 2018", - "nullable": true - }, - "classificationCode": { - "type": "string", - "description": "Classification code for the associated body system. Must match an active code returned by the /disabilities endpoint on the [Benefits Reference Data API](https://developer.va.gov/explore/benefits/docs/benefits_reference_data?version=current).", - "example": "249470", - "nullable": true - } - } - } - } - } - } - }, - "treatments": { - "description": "Identifies the Service Treatment information of the Veteran. The combination of treatedDisabilityName, center name, center city, and center state must be less than 1000 characters to successfully generate a PDF.", - "type": "array", - "nullable": true, - "uniqueItems": true, - "items": { - "type": "object", - "additionalProperties": false, - "properties": { - "beginDate": { - "description": "Begin date for treatment. If treatment began from 2005 to present, you do not need to provide dates. Each treatment begin date must be after the first 'servicePeriod.activeDutyBeginDate'.", - "type": "string", - "pattern": "^(?:19|20)[0-9][0-9]$|^(?:19|20)[0-9][0-9]-(0[1-9]|1[0-2])$", - "example": "2018-06 or 2018", - "nullable": true - }, - "treatedDisabilityNames": { - "description": "Name(s) of disabilities treated in this time frame.", - "type": "array", - "nullable": true, - "maxItems": 101, - "items": { - "type": "string", - "additionalProperties": false, - "example": [ - "PTSD (post traumatic stress disorder)", - "Trauma" - ] - } - }, - "center": { - "description": "VA Medical Center(s) and Department of Defense Military Treatment Facilities where the Veteran received treatment after discharge for any claimed disabilities.", - "type": "object", - "nullable": true, - "additionalProperties": false, - "properties": { - "name": { - "description": "Name of facility Veteran was treated in. The /treatment-centers endpoint on the [Benefits Reference Data API](https://developer.va.gov/explore/benefits/docs/benefits_reference_data?version=current) may be used to retrieve possible treatment center names.", - "type": "string", - "nullable": true, - "pattern": "([a-zA-Z0-9\"/&()\\'-'.,# ]([a-zA-Z0-9()\\'-'.,# ])?)+$", - "example": "Private Facility 2", - "minLength": 1, - "maxLength": 100 - }, - "city": { - "description": "City of treatment facility.", - "type": "string", - "pattern": "([a-zA-Z0-9\\-'.# ]([a-zA-Z0-9\\-'.# ])?)+$", - "example": "Portland", - "nullable": true, - "minLength": 0, - "maxLength": 30 - }, - "state": { - "description": "State of treatment facility.", - "type": "string", - "pattern": "^$|^[a-z,A-Z]{2}$", - "example": "OR", - "nullable": true - } - } - } - } - } - }, - "serviceInformation": { - "type": "object", - "additionalProperties": false, - "required": [ - "servicePeriods" - ], - "properties": { - "alternateNames": { - "description": "List any other names under which the Veteran served, if applicable.", - "type": "array", - "nullable": true, - "maxItems": 100, - "uniqueItems": true, - "items": { - "type": "string", - "additionalProperties": false, - "examples": [ - "jane", - "janey lee", - "jane lee MacDonald" - ] - } - }, - "servicePeriods": { - "description": "Identifies the Service dates and Branch the Veteran served in.", - "type": "array", - "minItems": 1, - "items": { - "type": "object", - "required": [ - "serviceBranch", - "serviceComponent", - "activeDutyBeginDate", - "activeDutyEndDate" - ], - "properties": { - "serviceBranch": { - "description": "Branch of service during period. The /service-branches endpoint on the [Benefits Reference Data API](https://developer.va.gov/explore/benefits/docs/benefits_reference_data?version=current) may be used to retrieve list of possible service branches.", - "type": "string", - "maxLength": 1000, - "example": "Air Force" - }, - "serviceComponent": { - "type": "string", - "description": "", - "enum": [ - "Active", - "Reserves", - "National Guard" - ] - }, - "activeDutyBeginDate": { - "description": "Date started active duty.", - "type": "string", - "pattern": "^(?:[0-9]{4})-(?:0[1-9]|1[0-2])-(?:0[1-9]|[1-2][0-9]|3[0-1])$", - "example": "2018-06-06" - }, - "activeDutyEndDate": { - "description": "Date completed active duty.", - "type": "string", - "pattern": "^(?:[0-9]{4})-(?:0[1-9]|1[0-2])-(?:0[1-9]|[1-2][0-9]|3[0-1])$", - "example": "2018-06-06" - }, - "separationLocationCode": { - "description": "Location code for the facility the Veteran plans to separate from. Code must match the values returned by the /intake-sites endpoint on the [Benefits reference Data API](https://developer.va.gov/explore/benefits/docs/benefits_reference_data?version=current).", - "type": "string", - "nullable": true, - "example": "98283" - } - } - } - }, - "servedInActiveCombatSince911": { - "type": "string", - "enum": [ - "YES", - "NO" - ], - "description": "Did Veteran serve in a combat zone since 9-11-2001?", - "example": "YES", - "nullable": true - }, - "reservesNationalGuardService": { - "type": "object", - "nullable": true, - "additionalProperties": false, - "properties": { - "component": { - "type": "string", - "nullable": true, - "description": "", - "enum": [ - "Reserves", - "National Guard" - ] - }, - "obligationTermsOfService": { - "type": "object", - "nullable": true, - "description": "If 'obligationTermsOfService' is included, the following attributes are required: 'beginDate ' and 'endDate'.", - "additionalProperties": false, - "properties": { - "beginDate": { - "type": "string", - "nullable": true, - "pattern": "^(?:[0-9]{4})-(?:0[1-9]|1[0-2])-(?:0[1-9]|[1-2][0-9]|3[0-1])$", - "example": "2018-06-06" - }, - "endDate": { - "type": "string", - "nullable": true, - "pattern": "^(?:[0-9]{4})-(?:0[1-9]|1[0-2])-(?:0[1-9]|[1-2][0-9]|3[0-1])$", - "example": "2018-06-06" - } - } - }, - "unitName": { - "type": "string", - "nullable": true, - "maxLength": 1000, - "pattern": "^$|([a-zA-Z0-9\\-'.,# ][a-zA-Z0-9\\-'.,# ]?)*$" - }, - "unitAddress": { - "type": "string", - "maxLength": 1000, - "pattern": "^$|^([-a-zA-Z0-9'.,&# ])+$", - "nullable": true - }, - "unitPhone": { - "type": "object", - "nullable": true, - "additionalProperties": false, - "properties": { - "areaCode": { - "type": "string", - "nullable": true, - "maxLength": 3, - "pattern": "^$|^\\d{3}$", - "example": "555" - }, - "phoneNumber": { - "type": "string", - "nullable": true, - "maxLength": 20, - "example": "5555555" - } - } - }, - "receivingInactiveDutyTrainingPay": { - "type": "string", - "enum": [ - "YES", - "NO" - ], - "nullable": true, - "example": "YES" - } - } - }, - "federalActivation": { - "description": "If federalActivation is present then reservesNationalGuardService.obligationTermsOfService.beginDate, reservesNationalGuardService.obligationTermsOfService.endDate and reservesNationalGuardService.unitName are required", - "type": "object", - "nullable": true, - "additionalProperties": false, - "properties": { - "activationDate": { - "description": "Date cannot be in the future and must be after the earliest servicePeriod.activeDutyBeginDate.", - "type": "string", - "pattern": "^(?:[0-9]{4})-(?:0[1-9]|1[0-2])-(?:0[1-9]|[1-2][0-9]|3[0-1])$", - "example": "2018-06-06", - "nullable": true - }, - "anticipatedSeparationDate": { - "description": "Anticipated date of separation. Date must be in the future.", - "type": "string", - "pattern": "^(?:[0-9]{4})-(?:0[1-9]|1[0-2])-(?:0[1-9]|[1-2][0-9]|3[0-1])$", - "example": "2018-06-06", - "nullable": true - } - } - }, - "confinements": { - "type": "array", - "nullable": true, - "uniqueItems": true, - "items": { - "additionalProperties": false, - "type": "object", - "properties": { - "approximateBeginDate": { - "description": "The approximateBeginDate must be after the earliest servicePeriod activeDutyBeginDate.", - "type": "string", - "nullable": false, - "pattern": "^(?:[0-9]{4})-(?:0[1-9]|1[0-2])-(?:0[1-9]|[1-2][0-9]|3[0-1])$|(?:[0-9]{4})-(?:0[1-9]|1[0-2])$", - "example": "2018-06-06 or 2018-06" - }, - "approximateEndDate": { - "type": "string", - "nullable": false, - "pattern": "^(?:[0-9]{4})-(?:0[1-9]|1[0-2])-(?:0[1-9]|[1-2][0-9]|3[0-1])$|(?:[0-9]{4})-(?:0[1-9]|1[0-2])$", - "example": "2018-06-06 or 2018-06" - } - } - } - } - } - }, - "servicePay": { - "type": "object", - "nullable": true, - "additionalProperties": false, - "properties": { - "receivingMilitaryRetiredPay": { - "description": "Is the Veteran receiving military retired pay?", - "type": "string", - "enum": [ - "YES", - "NO" - ], - "example": "YES", - "nullable": true - }, - "futureMilitaryRetiredPay": { - "description": "Will the Veteran receive military retired pay pay in future? \n If true, then 'futurePayExplanation' is required.", - "type": "string", - "enum": [ - "YES", - "NO" - ], - "example": "YES", - "nullable": true - }, - "futureMilitaryRetiredPayExplanation": { - "description": "Explains why future pay will be received.", - "type": "string", - "maxLength": 1000, - "example": "Will be retiring soon.", - "nullable": true - }, - "militaryRetiredPay": { - "type": "object", - "nullable": true, - "description": "", - "properties": { - "branchOfService": { - "description": "Branch of service. The /service-branches endpoint on the [Benefits Reference Data API](https://developer.va.gov/explore/benefits/docs/benefits_reference_data?version=current) may be used to retrieve list of possible service branches.", - "type": "string", - "maxLength": 1000, - "nullable": true, - "example": "Air Force" - }, - "monthlyAmount": { - "description": "Amount being received.", - "type": "integer", - "nullable": true, - "minimum": 1, - "maximum": 999999, - "example": 100 - } - } - }, - "retiredStatus": { - "type": "string", - "nullable": true, - "description": "", - "enum": [ - "RETIRED", - "TEMPORARY_DISABILITY_RETIRED_LIST", - "PERMANENT_DISABILITY_RETIRED_LIST" - ] - }, - "favorMilitaryRetiredPay": { - "description": "Is the Veteran waiving VA benefits to retain military retired pay? See item 26 on form 21-526EZ for more details.", - "type": "boolean", - "nullable": true, - "example": true, - "default": false - }, - "receivedSeparationOrSeverancePay": { - "description": "Has the Veteran ever received separation pay, disability severance pay, or any other lump sum payment from their branch of service?", - "type": "string", - "enum": [ - "YES", - "NO" - ], - "example": "YES", - "nullable": true - }, - "separationSeverancePay": { - "type": "object", - "nullable": true, - "description": "", - "properties": { - "datePaymentReceived": { - "description": "Approximate date separation pay was received. \n Format can be either YYYY-MM-DD or YYYY-MM or YYYY", - "type": "string", - "pattern": "^(?:[0-9]{4})-(?:0[1-9]|1[0-2])-(?:0[1-9]|[1-2][0-9]|3[0-1])$|(?:[0-9]{4})$|(?:[0-9]{4})-(?:0[1-9]|1[0-2])$", - "example": "2018-03-02 or 2018-03 or 2018" - }, - "branchOfService": { - "description": "Branch of service. The /service-branches endpoint on the [Benefits Reference Data API](https://developer.va.gov/explore/benefits/docs/benefits_reference_data?version=current) may be used to retrieve list of possible service branches.", - "type": "string", - "nullable": true, - "maxLength": 1000, - "example": "Air Force" - }, - "preTaxAmountReceived": { - "description": "Amount being received.", - "type": "integer", - "nullable": true, - "minimum": 1, - "maximum": 999999, - "example": 100 - } - } - }, - "favorTrainingPay": { - "description": "Is the Veteran waiving VA benefits to retain training pay? See item 28 on form 21-526EZ for more details. ", - "type": "boolean", - "nullable": true, - "example": true, - "default": false - } - } - }, - "directDeposit": { - "type": "object", - "nullable": true, - "additionalProperties": false, - "description": "If direct deposit information is included, the following attributes are required: accountType, accountNumber, routingNumber.", - "properties": { - "noAccount": { - "type": "boolean", - "nullable": true, - "description": "Claimant certifies that they do not have an account with a financial institution or certified payment agent.", - "default": false - }, - "accountNumber": { - "description": "Account number for the direct deposit.", - "pattern": "^(?:[a-zA-Z0-9-]{4,1000})?$", - "type": "string", - "maxLength": 1000, - "nullable": true, - "example": "123123123123" - }, - "accountType": { - "description": "Account type for the direct deposit.", - "type": "string", - "nullable": true, - "example": "CHECKING", - "enum": [ - "CHECKING", - "SAVINGS" - ] - }, - "financialInstitutionName": { - "description": "Provide the name of the financial institution where the Veteran wants the direct deposit.", - "maxLength": 1000, - "type": "string", - "nullable": true, - "example": "Some Bank" - }, - "routingNumber": { - "description": "Routing number for the direct deposit.", - "type": "string", - "maxLength": 1000, - "nullable": true, - "pattern": "^$|^\\d{0,1000}$", - "example": "123123123" - } - } - }, - "claimantCertification": { - "type": "boolean", - "description": "Claimant certifies and authorizes release of information.", - "default": false - }, - "claimNotes": { - "type": "string", - "description": "An optional notes section.", - "maxLength": 4000 - } - } - } - } - } - }, - "example": { - "data": { - "type": "form/526", - "attributes": { - "claimProcessType": "STANDARD_CLAIM_PROCESS", - "claimNotes": "Some things that are important to know, and are not included in any other place.", - "veteranIdentification": { - "serviceNumber": "123456789", - "veteranNumber": { - "telephone": "5555555555" - }, - "mailingAddress": { - "addressLine1": "123 Main Street", - "addressLine2": "Unit 1", - "addressLine3": "Room 2", - "city": "Schenectady", - "state": "NY", - "country": "USA", - "zipFirstFive": "12345", - "zipLastFour": "1234" - }, - "emailAddress": { - "email": "valid@somedomain.com", - "agreeToEmailRelatedToClaim": true - }, - "currentVaEmployee": false - }, - "changeOfAddress": { - "typeOfAddressChange": "TEMPORARY", - "addressLine1": "456 Main Street", - "addressLine2": "Unit 3", - "addressLine3": "Room 4", - "city": "Schenectady", - "state": "NY", - "country": "USA", - "zipFirstFive": "12345", - "zipLastFour": "9897", - "dates": { - "beginDate": "2025-06-04", - "endDate": "2026-06-04" - } - }, - "homeless": { - "currentlyHomeless": { - "homelessSituationOptions": "OTHER", - "otherDescription": "Other living situation" - }, - "pointOfContact": "John Doe", - "pointOfContactNumber": { - "telephone": "5555555555" - } - }, - "toxicExposure": { - "gulfWarHazardService": { - "servedInGulfWarHazardLocations": "NO" - }, - "herbicideHazardService": { - "servedInHerbicideHazardLocations": "YES", - "otherLocationsServed": "Other locations served", - "serviceDates": { - "beginDate": "1972-05", - "endDate": "1980-10" - } - }, - "additionalHazardExposures": { - "additionalExposures": [ - "OTHER" - ], - "specifyOtherExposures": "Agent Orange", - "exposureDates": { - "beginDate": "1972-05", - "endDate": "1980-10" - } - }, - "multipleExposures": [ - { - "hazardExposedTo": "Agent Orange", - "exposureLocation": "Vietnam", - "exposureDates": { - "beginDate": "1972-05", - "endDate": "1973-01" - } - }, - { - "hazardExposedTo": "Agent Orange", - "exposureLocation": "Vietnam", - "exposureDates": { - "beginDate": "1979-04", - "endDate": "1980-10" - } - } - ] - }, - "disabilities": [ - { - "name": "Diabetes", - "exposureOrEventOrInjury": "Agent Orange", - "serviceRelevance": "Service in Vietnam War", - "approximateDate": "1975-05", - "disabilityActionType": "NEW", - "isRelatedToToxicExposure": true - }, - { - "name": "Hearing Loss", - "exposureOrEventOrInjury": "Noise", - "serviceRelevance": "Heavy equipment operator in service", - "approximateDate": "1968-07", - "disabilityActionType": "INCREASE", - "classificationCode": "8987", - "ratedDisabilityId": "1234567", - "diagnosticCode": 5678, - "isRelatedToToxicExposure": false - } - ], - "treatments": [ - { - "beginDate": "2021-04", - "treatedDisabilityNames": [ - "Diabetes" - ], - "center": { - "name": "ATLANTA VA MEDICAL CENTER", - "state": "GA", - "city": "ATLANTA" - } - }, - { - "beginDate": "1996-03", - "treatedDisabilityNames": [ - "Hearing Loss" - ], - "center": { - "name": "ATLANTA VA MEDICAL CENTER", - "state": "GA", - "city": "ATLANTA" - } - } - ], - "serviceInformation": { - "alternateNames": [ - "Jon Doe", - "Jane Doe" - ], - "servicePeriods": [ - { - "serviceBranch": "Air Force", - "serviceComponent": "Active", - "activeDutyBeginDate": "1964-11-14", - "activeDutyEndDate": "1980-10-30", - "separationLocationCode": "98289" - } - ], - "servedInActiveCombatSince911": "NO", - "reservesNationalGuardService": { - "component": "National Guard", - "obligationTermsOfService": { - "beginDate": "1990-11-24", - "endDate": "1995-11-17" - }, - "unitName": "National Guard Unit Name", - "unitAddress": "1243 Main Street", - "unitPhone": { - "areaCode": "555", - "phoneNumber": "5555555" - }, - "receivingInactiveDutyTrainingPay": "YES" - }, - "confinements": [ - { - "approximateBeginDate": "1970-06-11", - "approximateEndDate": "1970-09-11" - } - ] - }, - "servicePay": { - "receivingMilitaryRetiredPay": "NO", - "futureMilitaryRetiredPay": "YES", - "futureMilitaryRetiredPayExplanation": "Explanation of future military retired pay", - "militaryRetiredPay": { - "branchOfService": "Air Force", - "monthlyAmount": 240 - }, - "retiredStatus": "PERMANENT_DISABILITY_RETIRED_LIST", - "favorMilitaryRetiredPay": false, - "receivedSeparationOrSeverancePay": "YES", - "separationSeverancePay": { - "datePaymentReceived": "2018-07-31", - "branchOfService": "Air Force", - "preTaxAmountReceived": 179 - }, - "favorTrainingPay": false - }, - "directDeposit": { - "accountNumber": "123123123123", - "accountType": "CHECKING", - "financialInstitutionName": "Chase", - "routingNumber": "123456789" - }, - "claimantCertification": true - } - } - } - }, - "examples": { - "Minimum Required Attributes": { - "value": { - "data": { - "type": "form/526", - "attributes": { - "claimProcessType": "STANDARD_CLAIM_PROCESS", - "veteranIdentification": { - "mailingAddress": { - "addressLine1": "1234 Couch Street", - "city": "Portland", - "state": "OR", - "country": "USA", - "zipFirstFive": "12345" - }, - "currentVaEmployee": false - }, - "disabilities": [ - { - "name": "hearing loss", - "serviceRelevance": "Heavy equipment operator in service", - "approximateDate": "2017-07", - "disabilityActionType": "NEW" - } - ], - "serviceInformation": { - "servicePeriods": [ - { - "serviceBranch": "Air Force", - "serviceComponent": "Active", - "activeDutyBeginDate": "2015-11-14", - "activeDutyEndDate": "2018-11-30" - } - ] - }, - "claimantCertification": true - } - } - } - }, - "Maximum Attributes": { - "value": { - "data": { - "type": "form/526", - "attributes": { - "claimProcessType": "STANDARD_CLAIM_PROCESS", - "claimNotes": "Some things that are important to know, and are not included in any other place.", - "veteranIdentification": { - "serviceNumber": "123456789", - "veteranNumber": { - "telephone": "5555555555", - "internationalTelephone": "+44 20 1234 5678" - }, - "mailingAddress": { - "addressLine1": "1234 Couch Street", - "addressLine2": "Unit 4", - "addressLine3": "Room 1", - "city": "Schenectady", - "state": "NY", - "country": "USA", - "zipFirstFive": "12345", - "zipLastFour": "1234" - }, - "emailAddress": { - "email": "valid@somedomain.com", - "agreeToEmailRelatedToClaim": true - }, - "currentVaEmployee": false - }, - "changeOfAddress": { - "typeOfAddressChange": "TEMPORARY", - "addressLine1": "10 Peach St", - "addressLine2": "Unit 4", - "addressLine3": "Room 1", - "city": "Schenectady", - "state": "NY", - "country": "USA", - "zipFirstFive": "12345", - "zipLastFour": "9897", - "dates": { - "beginDate": "2023-06-04", - "endDate": "2023-12-04" - } - }, - "homeless": { - "isCurrentlyHomeless": true, - "currentlyHomeless": { - "homelessSituationOptions": "FLEEING_CURRENT_RESIDENCE", - "otherDescription": "ABCDEFGHIJKLM" - }, - "isAtRiskOfBecomingHomeless": false, - "pointOfContact": "john stewart", - "pointOfContactNumber": { - "telephone": "5555555555", - "internationalTelephone": "+44 20 1234 5678" - } - }, - "toxicExposure": { - "gulfWarHazardService": { - "servedInGulfWarHazardLocations": "YES", - "serviceDates": { - "beginDate": "2018-07", - "endDate": "2018-08" - } - }, - "herbicideHazardService": { - "servedInHerbicideHazardLocations": "YES", - "otherLocationsServed": "ABCDEFGHIJKLM", - "serviceDates": { - "beginDate": "2018-07", - "endDate": "2018-08" - } - }, - "additionalHazardExposures": { - "additionalExposures": [ - "ASBESTOS", - "SHIPBOARD_HAZARD_AND_DEFENSE" - ], - "specifyOtherExposures": "Other exposure details", - "exposureDates": { - "beginDate": "2018-07", - "endDate": "2018-08" - } - }, - "multipleExposures": [ - { - "hazardExposedTo": "RADIATION", - "exposureLocation": "Guam", - "exposureDates": { - "beginDate": "2012-12", - "endDate": "2013-07" - } - } - ] - }, - "disabilities": [ - { - "name": "Traumatic Brain Injury", - "exposureOrEventOrInjury": "EXPOSURE", - "serviceRelevance": "ABCDEFG", - "approximateDate": "2018-03-11", - "disabilityActionType": "NEW", - "classificationCode": "9014", - "ratedDisabilityId": "ABCDEFGHIJKLMNOPQRSTUVWX", - "diagnosticCode": 9020, - "isRelatedToToxicExposure": true, - "secondaryDisabilities": [ - { - "name": "Post Traumatic Stress Disorder (PTSD) Combat - Mental Disorders", - "exposureOrEventOrInjury": "EXPOSURE", - "serviceRelevance": "ABCDEFGHIJKLMNOPQ", - "disabilityActionType": "SECONDARY", - "approximateDate": "2018-03-12", - "classificationCode": "9014" - } - ] - }, - { - "name": "Cancer - Musculoskeletal - Elbow", - "exposureOrEventOrInjury": "EXPOSURE", - "approximateDate": "2018-03-02", - "serviceRelevance": "ABCDEFG", - "disabilityActionType": "NEW", - "classificationCode": "9014", - "ratedDisabilityId": "ABCDEFGHIJKLMNOPQRSTUVWX", - "diagnosticCode": 249470, - "isRelatedToToxicExposure": true - }, - { - "name": "Cancer - Musculoskeletal - Knee", - "exposureOrEventOrInjury": "EXPOSURE", - "approximateDate": "2015", - "serviceRelevance": "ABCDEFG", - "disabilityActionType": "NEW", - "classificationCode": "9014", - "ratedDisabilityId": "ABCDEFGHIJKLMNOPQRSTUVWX", - "diagnosticCode": 249470, - "isRelatedToToxicExposure": true - } - ], - "treatments": [ - { - "beginDate": "2009-03", - "treatedDisabilityNames": [ - "Traumatic Brain Injury", - "Post Traumatic Stress Disorder (PTSD) Combat - Mental Disorders", - "Cancer - Musculoskeletal - Elbow" - ], - "center": { - "name": "Center One", - "city": "Decatur", - "state": "GA" - } - } - ], - "serviceInformation": { - "alternateNames": [ - "john jacob", - "johnny smith" - ], - "servicePeriods": [ - { - "serviceBranch": "Public Health Service", - "serviceComponent": "Active", - "activeDutyBeginDate": "2008-11-14", - "activeDutyEndDate": "2023-10-30" - } - ], - "servedInActiveCombatSince911": "NO", - "reservesNationalGuardService": { - "component": "National Guard", - "obligationTermsOfService": { - "beginDate": "2019-06-04", - "endDate": "2020-06-04" - }, - "unitName": "National Guard Unit Name", - "unitAddress": "1243 pine court", - "unitPhone": { - "areaCode": "555", - "phoneNumber": "5555555" - }, - "receivingInactiveDutyTrainingPay": "YES" - }, - "confinements": [ - { - "approximateBeginDate": "2018-06-04", - "approximateEndDate": "2018-07-04" - }, - { - "approximateBeginDate": "2020-06", - "approximateEndDate": "2020-07" - } - ] - }, - "servicePay": { - "receivingMilitaryRetiredPay": "NO", - "futureMilitaryRetiredPay": "YES", - "futureMilitaryRetiredPayExplanation": "ABCDEFGHIJKLMNOPQRSTUVW", - "militaryRetiredPay": { - "branchOfService": "Army", - "monthlyAmount": 840 - }, - "retiredStatus": "PERMANENT_DISABILITY_RETIRED_LIST", - "favorMilitaryRetiredPay": false, - "receivedSeparationOrSeverancePay": "NO", - "separationSeverancePay": { - "datePaymentReceived": "2022-03-12", - "branchOfService": "Naval Academy", - "preTaxAmountReceived": 379 - }, - "favorTrainingPay": true - }, - "directDeposit": { - "noAccount": false, - "accountNumber": "ABCDEF", - "accountType": "CHECKING", - "financialInstitutionName": "Chase", - "routingNumber": "123123123" - }, - "claimantCertification": true - } - } - } - } - } - } - } - } - } - }, - "/veterans/{veteranId}/526/synchronous": { - "post": { - "summary": "Submits disability compensation claim synchronously (restricted access)", - "tags": [ - "Disability Compensation Claims" - ], - "operationId": "post526ClaimSynchronous", - "security": [ - { - "productionOauth": [ - "system/526.override" - ] - }, - { - "sandboxOauth": [ - "system/526.override" - ] - } - ], - "description": "Automatically establishes a disability compensation claim (21-526EZ) in Veterans Benefits Management System (VBMS). This endpoint synchronously generates a filled and electronically signed 526EZ form and establishes the disability claim in VBMS. The 526EZ form is uploaded asynchronously.\n\nA 202 response indicates the API submission was accepted and the claim was established in VBMS. Check claim status using the GET veterans/{veteranId}/claims/{id} endpoint. The claim status details response will return the associated 526EZ PDF in the supportingDocuments list.\n\n**A substantially complete 526EZ claim must include:**\n* Veteran's name\n* Sufficient service information for VA to verify the claimed service\n* At least one claimed disability or medical condition and how it relates to service\n* Veteran and/or Representative signature\n\n**Standard and fully developed claims (FDCs)**\n\n[Fully developed claims (FDCs)](https://www.va.gov/disability/how-to-file-claim/evidence-needed/fully-developed-claims/)\nare claims certified by the submitter to include all information needed for processing. These claims process faster \nthan claims submitted through the standard claim process. If a claim is certified for the FDC, but is missing needed information, \nit will be processed as a standard claim.\n\nTo certify a claim for the FDC process, set the claimProcessType to FDC_PROGRAM.\n", - "parameters": [ - { - "name": "veteranId", - "in": "path", - "required": true, - "example": "1012667145V762142", - "description": "ID of Veteran", - "schema": { - "type": "string" - } - } - ], - "responses": { - "202": { - "description": "Successful response", - "content": { - "application/json": { - "examples": { - "202 without a transactionId": { - "value": { - "data": { - "id": "409a21fe-d37b-45d7-b9e4-289052fa76b8", - "type": "forms/526", - "attributes": { - "claimId": "600442191", - "claimProcessType": "STANDARD_CLAIM_PROCESS", - "claimNotes": "Some things that are important to know, and are not included in any other place.", - "veteranIdentification": { - "serviceNumber": "123456789", - "veteranNumber": { - "telephone": "5555555555", - "internationalTelephone": "+44 20 1234 5678" - }, - "mailingAddress": { - "addressLine1": "1234 Couch Street", - "addressLine2": "Unit 4", - "addressLine3": "Room 1", - "city": "Schenectady", - "state": "NY", - "country": "USA", - "zipFirstFive": "12345", - "zipLastFour": "1234" - }, - "emailAddress": { - "email": "valid@somedomain.com", - "agreeToEmailRelatedToClaim": true - }, - "currentVaEmployee": false - }, - "changeOfAddress": { - "typeOfAddressChange": "TEMPORARY", - "addressLine1": "10 Peach St", - "addressLine2": "Unit 4", - "addressLine3": "Room 1", - "city": "Schenectady", - "state": "NY", - "country": "USA", - "zipFirstFive": "12345", - "zipLastFour": "9897", - "dates": { - "beginDate": "2023-06-04", - "endDate": "2023-12-04" - } - }, - "homeless": { - "isCurrentlyHomeless": true, - "currentlyHomeless": { - "homelessSituationOptions": "FLEEING_CURRENT_RESIDENCE", - "otherDescription": "ABCDEFGHIJKLM" - }, - "isAtRiskOfBecomingHomeless": false, - "pointOfContact": "john stewart", - "pointOfContactNumber": { - "telephone": "5555555555", - "internationalTelephone": "+44 20 1234 5678" - } - }, - "toxicExposure": { - "gulfWarHazardService": { - "servedInGulfWarHazardLocations": "YES", - "serviceDates": { - "beginDate": "2018-07", - "endDate": "2018-08" - } - }, - "herbicideHazardService": { - "servedInHerbicideHazardLocations": "YES", - "otherLocationsServed": "ABCDEFGHIJKLM", - "serviceDates": { - "beginDate": "2018-07", - "endDate": "2018-08" - } - }, - "additionalHazardExposures": { - "additionalExposures": [ - "ASBESTOS", - "SHIPBOARD_HAZARD_AND_DEFENSE" - ], - "specifyOtherExposures": "Other exposure details", - "exposureDates": { - "beginDate": "2018-07", - "endDate": "2018-08" - } - }, - "multipleExposures": [ - { - "hazardExposedTo": "RADIATION", - "exposureLocation": "Guam", - "exposureDates": { - "beginDate": "2012-12", - "endDate": "2013-07" - } - } - ] - }, - "disabilities": [ - { - "name": "Traumatic Brain Injury", - "exposureOrEventOrInjury": "EXPOSURE", - "serviceRelevance": "ABCDEFG", - "approximateDate": "2018-03-11", - "disabilityActionType": "NEW", - "classificationCode": "9014", - "ratedDisabilityId": "ABCDEFGHIJKLMNOPQRSTUVWX", - "diagnosticCode": 9020, - "isRelatedToToxicExposure": true, - "secondaryDisabilities": [ - { - "name": "Post Traumatic Stress Disorder (PTSD) Combat - Mental Disorders", - "exposureOrEventOrInjury": "EXPOSURE", - "serviceRelevance": "ABCDEFGHIJKLMNOPQ", - "disabilityActionType": "SECONDARY", - "approximateDate": "2018-03-12", - "classificationCode": "9014" - } - ] - }, - { - "name": "Cancer - Musculoskeletal - Elbow", - "exposureOrEventOrInjury": "EXPOSURE", - "approximateDate": "2018-03-02", - "serviceRelevance": "ABCDEFG", - "disabilityActionType": "NEW", - "classificationCode": "9014", - "ratedDisabilityId": "ABCDEFGHIJKLMNOPQRSTUVWX", - "diagnosticCode": 249470, - "isRelatedToToxicExposure": true - }, - { - "name": "Cancer - Musculoskeletal - Knee", - "exposureOrEventOrInjury": "EXPOSURE", - "approximateDate": "2015", - "serviceRelevance": "ABCDEFG", - "disabilityActionType": "NEW", - "classificationCode": "9014", - "ratedDisabilityId": "ABCDEFGHIJKLMNOPQRSTUVWX", - "diagnosticCode": 249470, - "isRelatedToToxicExposure": true - } - ], - "treatments": [ - { - "beginDate": "2009-03", - "treatedDisabilityNames": [ - "Traumatic Brain Injury", - "Post Traumatic Stress Disorder (PTSD) Combat - Mental Disorders", - "Cancer - Musculoskeletal - Elbow" - ], - "center": { - "name": "Center One", - "city": "Decatur", - "state": "GA" - } - } - ], - "serviceInformation": { - "alternateNames": [ - "john jacob", - "johnny smith" - ], - "servicePeriods": [ - { - "serviceBranch": "Public Health Service", - "serviceComponent": "Active", - "activeDutyBeginDate": "2008-11-14", - "activeDutyEndDate": "2023-10-30", - "separationLocationCode": "98282" - } - ], - "servedInActiveCombatSince911": "NO", - "reservesNationalGuardService": { - "component": "National Guard", - "obligationTermsOfService": { - "beginDate": "2019-06-04", - "endDate": "2020-06-04" - }, - "unitName": "National Guard Unit Name", - "unitAddress": "1243 pine court", - "unitPhone": { - "areaCode": "555", - "phoneNumber": "5555555" - }, - "receivingInactiveDutyTrainingPay": "YES" - }, - "federalActivation": { - "activationDate": "2023-10-01", - "anticipatedSeparationDate": "2024-12-06" - }, - "confinements": [ - { - "approximateBeginDate": "2018-06-04", - "approximateEndDate": "2018-07-04" - }, - { - "approximateBeginDate": "2020-06", - "approximateEndDate": "2020-07" - } - ] - }, - "servicePay": { - "receivingMilitaryRetiredPay": "NO", - "futureMilitaryRetiredPay": "YES", - "futureMilitaryRetiredPayExplanation": "ABCDEFGHIJKLMNOPQRSTUVW", - "militaryRetiredPay": { - "branchOfService": "Army", - "monthlyAmount": 840 - }, - "retiredStatus": "PERMANENT_DISABILITY_RETIRED_LIST", - "favorMilitaryRetiredPay": false, - "receivedSeparationOrSeverancePay": "NO", - "separationSeverancePay": { - "datePaymentReceived": "2022-03-12", - "branchOfService": "Naval Academy", - "preTaxAmountReceived": 379 - }, - "favorTrainingPay": true - }, - "directDeposit": { - "noAccount": false, - "accountNumber": "ABCDEF", - "accountType": "CHECKING", - "financialInstitutionName": "Chase", - "routingNumber": "123123123" - }, - "claimantCertification": true - } - } - } - }, - "202 with a transactionId": { - "value": { - "data": { - "id": "1db319a8-30d1-4f09-87a0-28c6afb3346b", - "type": "forms/526", - "attributes": { - "claimId": "600442191", - "claimProcessType": "STANDARD_CLAIM_PROCESS", - "claimNotes": "Some things that are important to know, and are not included in any other place.", - "veteranIdentification": { - "serviceNumber": "123456789", - "veteranNumber": { - "telephone": "5555555555", - "internationalTelephone": "+44 20 1234 5678" - }, - "mailingAddress": { - "addressLine1": "1234 Couch Street", - "addressLine2": "Unit 4", - "addressLine3": "Room 1", - "city": "Schenectady", - "state": "NY", - "country": "USA", - "zipFirstFive": "12345", - "zipLastFour": "1234" - }, - "emailAddress": { - "email": "valid@somedomain.com", - "agreeToEmailRelatedToClaim": true - }, - "currentVaEmployee": false - }, - "changeOfAddress": { - "typeOfAddressChange": "TEMPORARY", - "addressLine1": "10 Peach St", - "addressLine2": "Unit 4", - "addressLine3": "Room 1", - "city": "Schenectady", - "state": "NY", - "country": "USA", - "zipFirstFive": "12345", - "zipLastFour": "9897", - "dates": { - "beginDate": "2023-06-04", - "endDate": "2023-12-04" - } - }, - "homeless": { - "isCurrentlyHomeless": true, - "currentlyHomeless": { - "homelessSituationOptions": "FLEEING_CURRENT_RESIDENCE", - "otherDescription": "ABCDEFGHIJKLM" - }, - "isAtRiskOfBecomingHomeless": false, - "pointOfContact": "john stewart", - "pointOfContactNumber": { - "telephone": "5555555555", - "internationalTelephone": "+44 20 1234 5678" - } - }, - "toxicExposure": { - "gulfWarHazardService": { - "servedInGulfWarHazardLocations": "YES", - "serviceDates": { - "beginDate": "2018-07", - "endDate": "2018-08" - } - }, - "herbicideHazardService": { - "servedInHerbicideHazardLocations": "YES", - "otherLocationsServed": "ABCDEFGHIJKLM", - "serviceDates": { - "beginDate": "2018-07", - "endDate": "2018-08" - } - }, - "additionalHazardExposures": { - "additionalExposures": [ - "ASBESTOS", - "SHIPBOARD_HAZARD_AND_DEFENSE" - ], - "specifyOtherExposures": "Other exposure details", - "exposureDates": { - "beginDate": "2018-07", - "endDate": "2018-08" - } - }, - "multipleExposures": [ - { - "hazardExposedTo": "RADIATION", - "exposureLocation": "Guam", - "exposureDates": { - "beginDate": "2012-12", - "endDate": "2013-07" - } - } - ] - }, - "disabilities": [ - { - "name": "Traumatic Brain Injury", - "exposureOrEventOrInjury": "EXPOSURE", - "serviceRelevance": "ABCDEFG", - "approximateDate": "2018-03-11", - "disabilityActionType": "NEW", - "classificationCode": "9014", - "ratedDisabilityId": "ABCDEFGHIJKLMNOPQRSTUVWX", - "diagnosticCode": 9020, - "isRelatedToToxicExposure": true, - "secondaryDisabilities": [ - { - "name": "Post Traumatic Stress Disorder (PTSD) Combat - Mental Disorders", - "exposureOrEventOrInjury": "EXPOSURE", - "serviceRelevance": "ABCDEFGHIJKLMNOPQ", - "disabilityActionType": "SECONDARY", - "approximateDate": "2018-03-12", - "classificationCode": "9014" - } - ] - }, - { - "name": "Cancer - Musculoskeletal - Elbow", - "exposureOrEventOrInjury": "EXPOSURE", - "approximateDate": "2018-03-02", - "serviceRelevance": "ABCDEFG", - "disabilityActionType": "NEW", - "classificationCode": "9014", - "ratedDisabilityId": "ABCDEFGHIJKLMNOPQRSTUVWX", - "diagnosticCode": 249470, - "isRelatedToToxicExposure": true - }, - { - "name": "Cancer - Musculoskeletal - Knee", - "exposureOrEventOrInjury": "EXPOSURE", - "approximateDate": "2015", - "serviceRelevance": "ABCDEFG", - "disabilityActionType": "NEW", - "classificationCode": "9014", - "ratedDisabilityId": "ABCDEFGHIJKLMNOPQRSTUVWX", - "diagnosticCode": 249470, - "isRelatedToToxicExposure": true - } - ], - "treatments": [ - { - "beginDate": "2009-03", - "treatedDisabilityNames": [ - "Traumatic Brain Injury", - "Post Traumatic Stress Disorder (PTSD) Combat - Mental Disorders", - "Cancer - Musculoskeletal - Elbow" - ], - "center": { - "name": "Center One", - "city": "Decatur", - "state": "GA" - } - } - ], - "serviceInformation": { - "alternateNames": [ - "john jacob", - "johnny smith" - ], - "servicePeriods": [ - { - "serviceBranch": "Public Health Service", - "serviceComponent": "Active", - "activeDutyBeginDate": "2008-11-14", - "activeDutyEndDate": "2024-12-06", - "separationLocationCode": "98282" - } - ], - "servedInActiveCombatSince911": "NO", - "reservesNationalGuardService": { - "component": "National Guard", - "obligationTermsOfService": { - "beginDate": "2019-06-04", - "endDate": "2020-06-04" - }, - "unitName": "National Guard Unit Name", - "unitAddress": "1243 pine court", - "unitPhone": { - "areaCode": "555", - "phoneNumber": "5555555" - }, - "receivingInactiveDutyTrainingPay": "YES" - }, - "federalActivation": { - "activationDate": "2023-10-01", - "anticipatedSeparationDate": "2024-12-06" - }, - "confinements": [ - { - "approximateBeginDate": "2018-06-04", - "approximateEndDate": "2018-07-04" - }, - { - "approximateBeginDate": "2020-06", - "approximateEndDate": "2020-07" - } - ] - }, - "servicePay": { - "receivingMilitaryRetiredPay": "NO", - "futureMilitaryRetiredPay": "YES", - "futureMilitaryRetiredPayExplanation": "ABCDEFGHIJKLMNOPQRSTUVW", - "militaryRetiredPay": { - "branchOfService": "Army", - "monthlyAmount": 840 - }, - "retiredStatus": "PERMANENT_DISABILITY_RETIRED_LIST", - "favorMilitaryRetiredPay": false, - "receivedSeparationOrSeverancePay": "NO", - "separationSeverancePay": { - "datePaymentReceived": "2022-03-12", - "branchOfService": "Naval Academy", - "preTaxAmountReceived": 379 - }, - "favorTrainingPay": true - }, - "directDeposit": { - "noAccount": false, - "accountNumber": "ABCDEF", - "accountType": "CHECKING", - "financialInstitutionName": "Chase", - "routingNumber": "123123123" - }, - "claimantCertification": true - } - }, - "meta": { - "transactionId": "00000000-0000-0000-0000-000000000000" - } - } - } - }, - "schema": { - "name": "data", - "required": [ - "data" - ], - "properties": { - "data": { - "type": "object", - "required": [ - "id", - "type", - "attributes" - ], - "properties": { - "id": { - "type": "string", - "example": "7d0de77e-b7bd-4db7-a8d9-69a25482c80a" - }, - "type": { - "type": "string", - "example": "form/8675309" - }, - "attributes": { - "description": "Claims API 526 Schema", - "type": "object", - "additionalProperties": false, - "required": [ - "claimantCertification", - "claimProcessType", - "disabilities", - "serviceInformation", - "veteranIdentification" - ], - "properties": { - "claimProcessType": { - "type": "string", - "description": "Select type of claim program/process that applies to the Veteran.", - "enum": [ - "STANDARD_CLAIM_PROCESS", - "FDC_PROGRAM", - "BDD_PROGRAM" - ] - }, - "veteranIdentification": { - "type": "object", - "additionalProperties": false, - "required": [ - "mailingAddress", - "currentVaEmployee" - ], - "properties": { - "serviceNumber": { - "type": "string", - "description": "Service identification number", - "maxLength": 1000, - "nullable": true - }, - "veteranNumber": { - "description": "If there isn't a ten digit phone number in VBMS for the Veteran, the exams will not be ordered. Including the phone number is recommended to avoid claim processing delays.", - "type": "object", - "nullable": true, - "properties": { - "telephone": { - "description": "Veteran's phone number.", - "type": "string", - "pattern": "^\\d{10}?$", - "example": "5555555555", - "nullable": true - }, - "internationalTelephone": { - "type": "string", - "description": "Veteran's international phone number.", - "example": "+44 20 1234 5678", - "maxLength": 1000, - "nullable": true - } - } - }, - "mailingAddress": { - "type": "object", - "additionalProperties": false, - "required": [ - "addressLine1", - "city", - "country" - ], - "properties": { - "addressLine1": { - "description": "Address line 1 for the Veteran's current mailing address.", - "type": "string", - "pattern": "^([-a-zA-Z0-9'.,&#]([-a-zA-Z0-9'.,&# ])?)+$", - "maxLength": 20, - "example": "1234 Couch Street" - }, - "addressLine2": { - "description": "Address line 2 for the Veteran's current mailing address.", - "type": "string", - "pattern": "^([-a-zA-Z0-9'.,&#]([-a-zA-Z0-9'.,&# ])?)+$", - "maxLength": 20, - "example": "Unit 4", - "nullable": true - }, - "addressLine3": { - "description": "Address line 3 for the Veteran's current mailing address.", - "type": "string", - "pattern": "^([-a-zA-Z0-9'.,&#]([-a-zA-Z0-9'.,&# ])?)+$", - "maxLength": 20, - "example": "Room 1", - "nullable": true - }, - "city": { - "description": "City for the Veteran's current mailing address.", - "type": "string", - "pattern": "^$|([a-zA-Z0-9\\'-'.# ]([a-zA-Z0-9\\'-'.# ])?)+$", - "minLength": 1, - "maxLength": 30, - "example": "Schenectady" - }, - "state": { - "description": "State for the Veteran's current mailing address. Required if 'country' is 'USA'.", - "type": "string", - "pattern": "^[a-z,A-Z]{2}$", - "example": "NY", - "nullable": true - }, - "country": { - "description": "Country for the Veteran's current mailing address. Must match the values returned by the /countries endpoint on the [Benefits Reference Data API](https://developer.va.gov/explore/benefits/docs/benefits_reference_data?version=current).", - "type": "string", - "maxLength": 1000, - "example": "USA" - }, - "zipFirstFive": { - "description": "Zip code (First 5 digits) for the Veteran's current mailing address. Required if 'country' is 'USA'.", - "type": "string", - "pattern": "^\\d{5}?$", - "example": "12345", - "nullable": true - }, - "zipLastFour": { - "description": "Zip code (Last 4 digits) for the Veteran's current mailing address.", - "type": "string", - "pattern": "^\\d{4}?$", - "example": "6789", - "nullable": true - }, - "internationalPostalCode": { - "description": "International postal code for the Veteran's current mailing address. Do not include if 'country' is 'USA'.", - "type": "string", - "maxLength": 16, - "nullable": true, - "pattern": "^[a-zA-Z0-9]*$" - } - } - }, - "emailAddress": { - "description": "Information associated with the Veteran's email address.", - "type": "object", - "nullable": true, - "properties": { - "email": { - "type": "string", - "pattern": "^[^\\s@]+@([^\\s@.,]+\\.)+[^\\s@.,]{2,}$", - "description": "The most current email address of the Veteran.", - "maxLength": 80, - "nullable": true - }, - "agreeToEmailRelatedToClaim": { - "type": "boolean", - "description": "Agreement to email information relating to this claim.", - "example": true, - "default": false, - "nullable": true - } - } - }, - "currentVaEmployee": { - "type": "boolean", - "description": "Set to true if Veteran is a VA employee.", - "nullable": false - } - } - }, - "changeOfAddress": { - "description": "If 'changeOfAddress' is included, the following attributes are required: 'typeOfAddressChange', 'addressLine1', 'city', 'country'.", - "type": "object", - "nullable": true, - "additionalProperties": false, - "properties": { - "typeOfAddressChange": { - "description": "Temporary or Permanent change of address. If 'TEMPORARY', 'beginDate' and 'endDate' are required.", - "type": "string", - "enum": [ - "TEMPORARY", - "PERMANENT" - ], - "example": "PERMANENT" - }, - "addressLine1": { - "description": "Address line 1 for the Veteran's new address.", - "type": "string", - "pattern": "^([-a-zA-Z0-9'.,&#]([-a-zA-Z0-9'.,&# ])?)+$", - "maxLength": 20, - "example": "1234 Couch Street" - }, - "addressLine2": { - "description": "Address line 2 for the Veteran's new address.", - "type": "string", - "pattern": "^([-a-zA-Z0-9'.,&#]([-a-zA-Z0-9'.,&# ])?)+$", - "maxLength": 20, - "example": "Unit 4", - "nullable": true - }, - "addressLine3": { - "description": "Address line 3 for the Veteran's new address.", - "type": "string", - "pattern": "^([-a-zA-Z0-9'.,&#]([-a-zA-Z0-9'.,&# ])?)+$", - "maxLength": 20, - "example": "Room 1", - "nullable": true - }, - "city": { - "description": "City for the Veteran's new address.", - "type": "string", - "pattern": "^$|([a-zA-Z0-9\\'-'.# ]([a-zA-Z0-9\\'-'.# ])?)+$", - "minLength": 0, - "maxLength": 30, - "example": "Schenectady" - }, - "state": { - "description": "State for the Veteran's new address. Required if 'country' is 'USA'.", - "type": "string", - "pattern": "^$|^[a-z,A-Z]{2}$", - "example": "NY", - "nullable": true - }, - "country": { - "description": "Country for the Veteran's new address. Value must match the values returned by the /countries endpoint on the [Benefits Reference Data API](https://developer.va.gov/explore/benefits/docs/benefits_reference_data?version=current).", - "type": "string", - "maxLength": 1000, - "example": "USA" - }, - "zipFirstFive": { - "description": "Zip code (First 5 digits) for the Veteran's new address. Required if 'country' is 'USA'.", - "type": "string", - "pattern": "^$|^\\d{5}?$", - "example": "12345", - "nullable": true - }, - "zipLastFour": { - "description": "Zip code (Last 4 digits) for the Veteran's new address.", - "type": "string", - "nullable": true, - "pattern": "^$|^\\d{4}?$", - "example": "6789" - }, - "internationalPostalCode": { - "description": "International postal code for the Veteran's new address. Do not include if 'country' is 'USA'.", - "type": "string", - "maxLength": 16, - "nullable": true, - "pattern": "^[a-zA-Z0-9]*$" - }, - "dates": { - "type": "object", - "properties": { - "beginDate": { - "description": "Begin date for the Veteran's new address.", - "pattern": "^(?:[0-9]{4})-(?:0[1-9]|1[0-2])-(?:0[1-9]|[1-2][0-9]|3[0-1])$", - "type": "string", - "nullable": true, - "example": "2018-06-04" - }, - "endDate": { - "description": "Date in YYYY-MM-DD the changed address expires, if change is temporary.", - "type": "string", - "nullable": true, - "pattern": "^(?:[0-9]{4})-(?:0[1-9]|1[0-2])-(?:0[1-9]|[1-2][0-9]|3[0-1])$", - "example": "2018-06-04" - } - } - } - } - }, - "homeless": { - "type": "object", - "nullable": true, - "additionalProperties": false, - "properties": { - "isCurrentlyHomeless": { - "type": "boolean", - "nullable": true, - "description": "Is the Veteran currently homeless?" - }, - "currentlyHomeless": { - "type": "object", - "nullable": true, - "additionalProperties": false, - "properties": { - "homelessSituationOptions": { - "description": "Veteran's living situation.", - "type": "string", - "nullable": true, - "default": "other", - "enum": [ - "LIVING_IN_A_HOMELESS_SHELTER", - "NOT_CURRENTLY_IN_A_SHELTERED_ENVIRONMENT", - "STAYING_WITH_ANOTHER_PERSON", - "FLEEING_CURRENT_RESIDENCE", - "OTHER" - ], - "example": "FLEEING_CURRENT_RESIDENCE" - }, - "otherDescription": { - "description": "Explanation of living situation. Required if 'homelessSituationOptions' is 'OTHER'.", - "type": "string", - "nullable": true, - "maxLength": 500, - "example": "other living situation" - } - } - }, - "isAtRiskOfBecomingHomeless": { - "type": "boolean", - "nullable": true, - "description": "Is the Veteran currently at risk of becoming homeless?" - }, - "riskOfBecomingHomeless": { - "type": "object", - "nullable": true, - "additionalProperties": false, - "properties": { - "livingSituationOptions": { - "type": "string", - "nullable": true, - "default": "HOUSING_WILL_BE_LOST_IN_30_DAYS", - "enum": [ - "HOUSING_WILL_BE_LOST_IN_30_DAYS", - "LEAVING_PUBLICLY_FUNDED_SYSTEM_OF_CARE", - "OTHER" - ] - }, - "otherDescription": { - "description": "Explanation of living situation. Required if 'livingSituationOptions' is 'OTHER'.", - "type": "string", - "nullable": true, - "maxLength": 500, - "example": "other living situation" - } - } - }, - "pointOfContact": { - "description": "Individual in direct contact with Veteran.", - "type": "string", - "nullable": true, - "minLength": 1, - "maxLength": 100, - "pattern": "^([-a-zA-Z0-9/']+( ?))*$", - "example": "Jane Doe" - }, - "pointOfContactNumber": { - "type": "object", - "nullable": true, - "additionalProperties": false, - "properties": { - "telephone": { - "description": "Ten digit primary phone of point of contact.", - "type": "string", - "pattern": "^\\d{10}?$", - "example": "5555555", - "nullable": true - }, - "internationalTelephone": { - "description": "International phone of point of contact.", - "type": "string", - "example": "+44 20 1234 5678", - "maxLength": 1000, - "nullable": true - } - } - } - } - }, - "toxicExposure": { - "type": "object", - "nullable": true, - "properties": { - "gulfWarHazardService": { - "type": "object", - "nullable": true, - "description": "Toxic exposure related to the Gulf war.", - "properties": { - "servedInGulfWarHazardLocations": { - "type": "string", - "description": "Set to true if the Veteran served in any of the following Gulf War hazard locations: Iraq; Kuwait; Saudi Arabia; the neutral zone between Iraq and Saudi Arabia; Bahrain; Qatar; the United Arab Emirates; Oman; Yemen; Lebanon; Somalia; Afghanistan; Israel; Egypt; Turkey; Syria; Jordan; Djibouti; Uzbekistan; the Gulf of Aden; the Gulf of Oman; the Persian Gulf; the Arabian Sea; and the Red Sea.", - "example": "YES", - "enum": [ - "NO", - "YES" - ], - "nullable": true - }, - "serviceDates": { - "type": "object", - "nullable": true, - "description": "Date range for when the exposure happened.", - "properties": { - "beginDate": { - "type": "string", - "nullable": true, - "description": "Approximate begin date for serving in Gulf War hazard location.", - "pattern": "^(?:19|20)[0-9][0-9]$|^(?:19|20)[0-9][0-9]-(0[1-9]|1[0-2])$", - "example": "2018-06 or 2018" - }, - "endDate": { - "type": "string", - "nullable": true, - "description": "Approximate end date for serving in Gulf War hazard location.", - "pattern": "^(?:19|20)[0-9][0-9]$|^(?:19|20)[0-9][0-9]-(0[1-9]|1[0-2])$", - "example": "2018-06 or 2018" - } - } - } - } - }, - "herbicideHazardService": { - "description": "Toxic exposure related to herbicide (Agent Orange) hazards.", - "type": "object", - "nullable": true, - "properties": { - "servedInHerbicideHazardLocations": { - "type": "string", - "description": "Set to true if the Veteran served in any of the following herbicide/Agent Orange locations: Republic of Vietnam to include the 12 nautical mile territorial waters; Thailand at any United States or Royal Thai base; Laos; Cambodia at Mimot or Krek; Kampong Cham Province; Guam or American Samoa; or in the territorial waters thereof; Johnston Atoll or a ship that called at Johnston Atoll; Korean demilitarized zone; aboard (to include repeated operations and maintenance with) a C-123 aircraft known to have been used to spray an herbicide agent (during service in the Air Force and Air Force Reserves).", - "example": "YES", - "enum": [ - "NO", - "YES" - ], - "nullable": true - }, - "otherLocationsServed": { - "type": "string", - "nullable": true, - "pattern": "^$|([a-zA-Z0-9\"\\/&\\(\\)\\-'.,#\\[\\] ]([a-zA-Z0-9(\\)\\-'.,#\\[\\] ])?)+$", - "maxLength": 5000, - "description": "Other location(s) where Veteran served." - }, - "serviceDates": { - "description": "Date range for exposure in herbicide hazard location.", - "type": "object", - "nullable": true, - "properties": { - "beginDate": { - "type": "string", - "nullable": true, - "description": "Approximate begin date for serving in herbicide location.", - "pattern": "^(?:19|20)[0-9][0-9]$|^(?:19|20)[0-9][0-9]-(0[1-9]|1[0-2])$", - "example": "2018-06 or 2018" - }, - "endDate": { - "type": "string", - "nullable": true, - "description": "Approximate end date for serving in herbicide location.", - "pattern": "^(?:19|20)[0-9][0-9]$|^(?:19|20)[0-9][0-9]-(0[1-9]|1[0-2])$", - "example": "2018-06 or 2018" - } - } - } - } - }, - "additionalHazardExposures": { - "type": "object", - "nullable": true, - "description": "Additional hazardous exposures.", - "properties": { - "additionalExposures": { - "description": "Additional exposure incidents.", - "type": "array", - "nullable": true, - "uniqueItems": true, - "items": { - "type": "string", - "additionalProperties": false, - "enum": [ - "ASBESTOS", - "MUSTARD_GAS", - "RADIATION", - "SHIPBOARD_HAZARD_AND_DEFENSE", - "MILITARY_OCCUPATIONAL_SPECIALTY_RELATED_TOXIN", - "CONTAMINATED_WATER_AT_CAMP_LEJEUNE", - "OTHER" - ] - } - }, - "specifyOtherExposures": { - "type": "string", - "nullable": true, - "pattern": "^$|([a-zA-Z0-9\"\\/&\\(\\)\\-'.,#\\[\\] ]([a-zA-Z0-9(\\)\\-'.,#\\[\\] ])?)+$", - "maxLength": 5000, - "description": "Exposure to asbestos." - }, - "exposureDates": { - "type": "object", - "nullable": true, - "description": "Date range for when the exposure happened.", - "properties": { - "beginDate": { - "type": "string", - "nullable": true, - "description": "Approximate begin date for exposure.", - "pattern": "^(?:19|20)[0-9][0-9]$|^(?:19|20)[0-9][0-9]-(0[1-9]|1[0-2])$", - "example": "2018-06 or 2018" - }, - "endDate": { - "type": "string", - "nullable": true, - "description": "Approximate end date for exposure.", - "pattern": "^(?:19|20)[0-9][0-9]$|^(?:19|20)[0-9][0-9]-(0[1-9]|1[0-2])$", - "example": "2018-06 or 2018" - } - } - } - } - }, - "multipleExposures": { - "type": "array", - "nullable": true, - "minItems": 1, - "uniqueItems": true, - "items": { - "type": "object", - "additionalProperties": false, - "properties": { - "hazardExposedTo": { - "type": "string", - "nullable": true, - "pattern": "^([-a-zA-Z0-9'.,&# ])+$", - "maxLength": 1000, - "description": "Hazard the Veteran was exposed to." - }, - "exposureLocation": { - "type": "string", - "nullable": true, - "pattern": "^$|([a-zA-Z0-9\"\\/&\\(\\)\\-'.,#\\[\\] ]([a-zA-Z0-9(\\)\\-'.,#\\[\\] ])?)+$", - "maxLength": 1000, - "description": "Location where the exposure happened." - }, - "exposureDates": { - "type": "object", - "nullable": true, - "description": "Date range for when the exposure happened.", - "properties": { - "beginDate": { - "type": "string", - "nullable": true, - "description": "Approximate begin date for exposure.", - "pattern": "^(?:19|20)[0-9][0-9]$|^(?:19|20)[0-9][0-9]-(0[1-9]|1[0-2])$", - "example": "2018-06 or 2018" - }, - "endDate": { - "type": "string", - "nullable": true, - "description": "Approximate end date for exposure.", - "pattern": "^(?:19|20)[0-9][0-9]$|^(?:19|20)[0-9][0-9]-(0[1-9]|1[0-2])$", - "example": "2018-06 or 2018" - } - } - } - } - } - } - } - }, - "disabilities": { - "description": "Any current disabilities or symptoms the Veteran is claiming are related to their military service and/or are service-connected.", - "type": "array", - "minItems": 1, - "items": { - "type": "object", - "additionalProperties": false, - "required": [ - "disabilityActionType", - "name" - ], - "properties": { - "name": { - "description": "Name of the disability. The /disabilities endpoint on the [Benefits Reference Data API](https://developer.va.gov/explore/benefits/docs/benefits_reference_data?version=current) may be used to retrieve possible disability names.", - "type": "string", - "pattern": "^$|([a-zA-Z0-9\"\\/&\\(\\)\\-'.,#\\[\\] ]([a-zA-Z0-9(\\)\\-'.,#\\[\\] ])?)+$", - "example": "PTSD (post traumatic stress disorder)", - "maxLength": 255 - }, - "exposureOrEventOrInjury": { - "type": "string", - "description": "What caused the disability?", - "nullable": true, - "maxLength": 1000, - "examples": [ - "Agent Orange", - "radiation", - "burn pits" - ] - }, - "serviceRelevance": { - "description": "Explanation of how the disability(ies) relates to the in-service event/exposure/injury. If the disabilityActionType is 'NEW', the serviceRelevance is required.", - "type": "string", - "nullable": true, - "maxLength": 1000, - "example": "Heavy equipment operator in service." - }, - "approximateDate": { - "description": "Approximate date disability began. Date must be in the past. \n Format can be either YYYY-MM-DD or YYYY-MM or YYYY", - "type": "string", - "pattern": "^(?:[0-9]{4}(?:-(?!00)(?:0[1-9]|1[0-2])(?:-(?:0[1-9]|[1-2][0-9]|3[0-1]))?)?)$", - "example": "2018-03-02 or 2018-03 or 2018", - "nullable": true - }, - "disabilityActionType": { - "description": "Action type requested for the disability. If 'INCREASE' or 'NONE', then 'ratedDisabilityId' and 'diagnosticCode' should be included. 'NONE' should be used when including a secondary disability.", - "type": "string", - "enum": [ - "NONE", - "NEW", - "INCREASE" - ], - "example": "NEW" - }, - "classificationCode": { - "type": "string", - "description": "Classification code for the associated body system. Must match an active code returned by the /disabilities endpoint on the [Benefits Reference Data API](https://developer.va.gov/explore/benefits/docs/benefits_reference_data?version=current).", - "example": "249470", - "nullable": true - }, - "ratedDisabilityId": { - "description": "When submitting a contention with action type 'INCREASE', the previously rated disability id may be included.", - "type": "string", - "example": "1100583", - "nullable": true - }, - "diagnosticCode": { - "description": "If the disabilityActionType is 'NONE' or 'INCREASE', the diagnosticCode should correspond to an existing rated disability.", - "type": "integer", - "example": 9999, - "nullable": true - }, - "isRelatedToToxicExposure": { - "type": "boolean", - "description": "Is the disability related to toxic exposures? If true, related 'toxicExposure' must be included.", - "example": true, - "default": false, - "nullable": true - }, - "specialIssues": { - "type": "array", - "nullable": true, - "uniqueItems": true, - "items": { - "maxItems": 2, - "additionalProperties": false, - "type": "string", - "enum": [ - "POW", - "EMP" - ] - } - }, - "secondaryDisabilities": { - "description": "If secondaryDisability is included, the following attributes are required: 'secondaryDisability.name', 'secondaryDisability.disabilityActionType' and 'secondaryDisability.serviceRelevance'", - "type": "array", - "items": { - "type": "object", - "additionalProperties": false, - "properties": { - "name": { - "description": "Name of the disability. The /disabilities endpoint on the [Benefits Reference Data API](https://developer.va.gov/explore/benefits/docs/benefits_reference_data?version=current) may be used to retrieve possible disability names.", - "type": "string", - "pattern": "^$|([a-zA-Z0-9\"\\/&\\(\\)\\-'.,# ]([a-zA-Z0-9(\\)\\-'.,#\\[\\] ])?)+$", - "example": "PTSD (post traumatic stress disorder)", - "maxLength": 255 - }, - "exposureOrEventOrInjury": { - "type": "string", - "description": "What caused the disability?", - "nullable": true, - "maxLength": 1000, - "examples": [ - "Agent Orange", - "radiation", - "burn pits" - ] - }, - "serviceRelevance": { - "description": "Explanation of how the disability(ies) relates to the in-service event/exposure/injury.", - "type": "string", - "nullable": true, - "maxLength": 1000, - "example": "Heavy equipment operator in service." - }, - "disabilityActionType": { - "description": "The status of the secondary disability.", - "type": "string", - "example": "SECONDARY", - "enum": [ - "SECONDARY" - ] - }, - "approximateDate": { - "description": "Approximate date disability began. Date must be in the past. \n Format can be either YYYY-MM-DD or YYYY-MM or YYYY", - "type": "string", - "pattern": "^(?:[0-9]{4}(?:-(?!00)(?:0[1-9]|1[0-2])(?:-(?:0[1-9]|[1-2][0-9]|3[0-1]))?)?)$", - "example": "2018-03-02 or 2018-03 or 2018", - "nullable": true - }, - "classificationCode": { - "type": "string", - "description": "Classification code for the associated body system. Must match an active code returned by the /disabilities endpoint on the [Benefits Reference Data API](https://developer.va.gov/explore/benefits/docs/benefits_reference_data?version=current).", - "example": "249470", - "nullable": true - } - } - } - } - } - } - }, - "treatments": { - "description": "Identifies the Service Treatment information of the Veteran. The combination of treatedDisabilityName, center name, center city, and center state must be less than 1000 characters to successfully generate a PDF.", - "type": "array", - "nullable": true, - "uniqueItems": true, - "items": { - "type": "object", - "additionalProperties": false, - "properties": { - "beginDate": { - "description": "Begin date for treatment. If treatment began from 2005 to present, you do not need to provide dates. Each treatment begin date must be after the first 'servicePeriod.activeDutyBeginDate'.", - "type": "string", - "pattern": "^(?:19|20)[0-9][0-9]$|^(?:19|20)[0-9][0-9]-(0[1-9]|1[0-2])$", - "example": "2018-06 or 2018", - "nullable": true - }, - "treatedDisabilityNames": { - "description": "Name(s) of disabilities treated in this time frame.", - "type": "array", - "nullable": true, - "maxItems": 101, - "items": { - "type": "string", - "additionalProperties": false, - "example": [ - "PTSD (post traumatic stress disorder)", - "Trauma" - ] - } - }, - "center": { - "description": "VA Medical Center(s) and Department of Defense Military Treatment Facilities where the Veteran received treatment after discharge for any claimed disabilities.", - "type": "object", - "nullable": true, - "additionalProperties": false, - "properties": { - "name": { - "description": "Name of facility Veteran was treated in. The /treatment-centers endpoint on the [Benefits Reference Data API](https://developer.va.gov/explore/benefits/docs/benefits_reference_data?version=current) may be used to retrieve possible treatment center names.", - "type": "string", - "nullable": true, - "pattern": "([a-zA-Z0-9\"/&()\\'-'.,# ]([a-zA-Z0-9()\\'-'.,# ])?)+$", - "example": "Private Facility 2", - "minLength": 1, - "maxLength": 100 - }, - "city": { - "description": "City of treatment facility.", - "type": "string", - "pattern": "([a-zA-Z0-9\\-'.# ]([a-zA-Z0-9\\-'.# ])?)+$", - "example": "Portland", - "nullable": true, - "minLength": 0, - "maxLength": 30 - }, - "state": { - "description": "State of treatment facility.", - "type": "string", - "pattern": "^$|^[a-z,A-Z]{2}$", - "example": "OR", - "nullable": true - } - } - } - } - } - }, - "serviceInformation": { - "type": "object", - "additionalProperties": false, - "required": [ - "servicePeriods" - ], - "properties": { - "alternateNames": { - "description": "List any other names under which the Veteran served, if applicable.", - "type": "array", - "nullable": true, - "maxItems": 100, - "uniqueItems": true, - "items": { - "type": "string", - "additionalProperties": false, - "examples": [ - "jane", - "janey lee", - "jane lee MacDonald" - ] - } - }, - "servicePeriods": { - "description": "Identifies the Service dates and Branch the Veteran served in.", - "type": "array", - "minItems": 1, - "items": { - "type": "object", - "required": [ - "serviceBranch", - "serviceComponent", - "activeDutyBeginDate", - "activeDutyEndDate" - ], - "properties": { - "serviceBranch": { - "description": "Branch of service during period. The /service-branches endpoint on the [Benefits Reference Data API](https://developer.va.gov/explore/benefits/docs/benefits_reference_data?version=current) may be used to retrieve list of possible service branches.", - "type": "string", - "maxLength": 1000, - "example": "Air Force" - }, - "serviceComponent": { - "type": "string", - "description": "", - "enum": [ - "Active", - "Reserves", - "National Guard" - ] - }, - "activeDutyBeginDate": { - "description": "Date started active duty.", - "type": "string", - "pattern": "^(?:[0-9]{4})-(?:0[1-9]|1[0-2])-(?:0[1-9]|[1-2][0-9]|3[0-1])$", - "example": "2018-06-06" - }, - "activeDutyEndDate": { - "description": "Date completed active duty.", - "type": "string", - "pattern": "^(?:[0-9]{4})-(?:0[1-9]|1[0-2])-(?:0[1-9]|[1-2][0-9]|3[0-1])$", - "example": "2018-06-06" - }, - "separationLocationCode": { - "description": "Location code for the facility the Veteran plans to separate from. Code must match the values returned by the /intake-sites endpoint on the [Benefits reference Data API](https://developer.va.gov/explore/benefits/docs/benefits_reference_data?version=current).", - "type": "string", - "nullable": true, - "example": "98283" - } - } - } - }, - "servedInActiveCombatSince911": { - "type": "string", - "enum": [ - "YES", - "NO" - ], - "description": "Did Veteran serve in a combat zone since 9-11-2001?", - "example": "YES", - "nullable": true - }, - "reservesNationalGuardService": { - "type": "object", - "nullable": true, - "additionalProperties": false, - "properties": { - "component": { - "type": "string", - "nullable": true, - "description": "", - "enum": [ - "Reserves", - "National Guard" - ] - }, - "obligationTermsOfService": { - "type": "object", - "nullable": true, - "description": "If 'obligationTermsOfService' is included, the following attributes are required: 'beginDate ' and 'endDate'.", - "additionalProperties": false, - "properties": { - "beginDate": { - "type": "string", - "nullable": true, - "pattern": "^(?:[0-9]{4})-(?:0[1-9]|1[0-2])-(?:0[1-9]|[1-2][0-9]|3[0-1])$", - "example": "2018-06-06" - }, - "endDate": { - "type": "string", - "nullable": true, - "pattern": "^(?:[0-9]{4})-(?:0[1-9]|1[0-2])-(?:0[1-9]|[1-2][0-9]|3[0-1])$", - "example": "2018-06-06" - } - } - }, - "unitName": { - "type": "string", - "nullable": true, - "maxLength": 1000, - "pattern": "^$|([a-zA-Z0-9\\-'.,# ][a-zA-Z0-9\\-'.,# ]?)*$" - }, - "unitAddress": { - "type": "string", - "maxLength": 1000, - "pattern": "^$|^([-a-zA-Z0-9'.,&# ])+$", - "nullable": true - }, - "unitPhone": { - "type": "object", - "nullable": true, - "additionalProperties": false, - "properties": { - "areaCode": { - "type": "string", - "nullable": true, - "maxLength": 3, - "pattern": "^$|^\\d{3}$", - "example": "555" - }, - "phoneNumber": { - "type": "string", - "nullable": true, - "maxLength": 20, - "example": "5555555" - } - } - }, - "receivingInactiveDutyTrainingPay": { - "type": "string", - "enum": [ - "YES", - "NO" - ], - "nullable": true, - "example": "YES" - } - } - }, - "federalActivation": { - "description": "If federalActivation is present then reservesNationalGuardService.obligationTermsOfService.beginDate, reservesNationalGuardService.obligationTermsOfService.endDate and reservesNationalGuardService.unitName are required", - "type": "object", - "nullable": true, - "additionalProperties": false, - "properties": { - "activationDate": { - "description": "Date cannot be in the future and must be after the earliest servicePeriod.activeDutyBeginDate.", - "type": "string", - "pattern": "^(?:[0-9]{4})-(?:0[1-9]|1[0-2])-(?:0[1-9]|[1-2][0-9]|3[0-1])$", - "example": "2018-06-06", - "nullable": true - }, - "anticipatedSeparationDate": { - "description": "Anticipated date of separation. Date must be in the future.", - "type": "string", - "pattern": "^(?:[0-9]{4})-(?:0[1-9]|1[0-2])-(?:0[1-9]|[1-2][0-9]|3[0-1])$", - "example": "2018-06-06", - "nullable": true - } - } - }, - "confinements": { - "type": "array", - "nullable": true, - "uniqueItems": true, - "items": { - "additionalProperties": false, - "type": "object", - "properties": { - "approximateBeginDate": { - "description": "The approximateBeginDate must be after the earliest servicePeriod activeDutyBeginDate.", - "type": "string", - "nullable": false, - "pattern": "^(?:[0-9]{4})-(?:0[1-9]|1[0-2])-(?:0[1-9]|[1-2][0-9]|3[0-1])$|(?:[0-9]{4})-(?:0[1-9]|1[0-2])$", - "example": "2018-06-06 or 2018-06" - }, - "approximateEndDate": { - "type": "string", - "nullable": false, - "pattern": "^(?:[0-9]{4})-(?:0[1-9]|1[0-2])-(?:0[1-9]|[1-2][0-9]|3[0-1])$|(?:[0-9]{4})-(?:0[1-9]|1[0-2])$", - "example": "2018-06-06 or 2018-06" - } - } - } - } - } - }, - "servicePay": { - "type": "object", - "nullable": true, - "additionalProperties": false, - "properties": { - "receivingMilitaryRetiredPay": { - "description": "Is the Veteran receiving military retired pay?", - "type": "string", - "enum": [ - "YES", - "NO" - ], - "example": "YES", - "nullable": true - }, - "futureMilitaryRetiredPay": { - "description": "Will the Veteran receive military retired pay pay in future? \n If true, then 'futurePayExplanation' is required.", - "type": "string", - "enum": [ - "YES", - "NO" - ], - "example": "YES", - "nullable": true - }, - "futureMilitaryRetiredPayExplanation": { - "description": "Explains why future pay will be received.", - "type": "string", - "maxLength": 1000, - "example": "Will be retiring soon.", - "nullable": true - }, - "militaryRetiredPay": { - "type": "object", - "nullable": true, - "description": "", - "properties": { - "branchOfService": { - "description": "Branch of service. The /service-branches endpoint on the [Benefits Reference Data API](https://developer.va.gov/explore/benefits/docs/benefits_reference_data?version=current) may be used to retrieve list of possible service branches.", - "type": "string", - "maxLength": 1000, - "nullable": true, - "example": "Air Force" - }, - "monthlyAmount": { - "description": "Amount being received.", - "type": "integer", - "nullable": true, - "minimum": 1, - "maximum": 999999, - "example": 100 - } - } - }, - "retiredStatus": { - "type": "string", - "nullable": true, - "description": "", - "enum": [ - "RETIRED", - "TEMPORARY_DISABILITY_RETIRED_LIST", - "PERMANENT_DISABILITY_RETIRED_LIST" - ] - }, - "favorMilitaryRetiredPay": { - "description": "Is the Veteran waiving VA benefits to retain military retired pay? See item 26 on form 21-526EZ for more details.", - "type": "boolean", - "nullable": true, - "example": true, - "default": false - }, - "receivedSeparationOrSeverancePay": { - "description": "Has the Veteran ever received separation pay, disability severance pay, or any other lump sum payment from their branch of service?", - "type": "string", - "enum": [ - "YES", - "NO" - ], - "example": "YES", - "nullable": true - }, - "separationSeverancePay": { - "type": "object", - "nullable": true, - "description": "", - "properties": { - "datePaymentReceived": { - "description": "Approximate date separation pay was received. \n Format can be either YYYY-MM-DD or YYYY-MM or YYYY", - "type": "string", - "pattern": "^(?:[0-9]{4})-(?:0[1-9]|1[0-2])-(?:0[1-9]|[1-2][0-9]|3[0-1])$|(?:[0-9]{4})$|(?:[0-9]{4})-(?:0[1-9]|1[0-2])$", - "example": "2018-03-02 or 2018-03 or 2018" - }, - "branchOfService": { - "description": "Branch of service. The /service-branches endpoint on the [Benefits Reference Data API](https://developer.va.gov/explore/benefits/docs/benefits_reference_data?version=current) may be used to retrieve list of possible service branches.", - "type": "string", - "nullable": true, - "maxLength": 1000, - "example": "Air Force" - }, - "preTaxAmountReceived": { - "description": "Amount being received.", - "type": "integer", - "nullable": true, - "minimum": 1, - "maximum": 999999, - "example": 100 - } - } - }, - "favorTrainingPay": { - "description": "Is the Veteran waiving VA benefits to retain training pay? See item 28 on form 21-526EZ for more details. ", - "type": "boolean", - "nullable": true, - "example": true, - "default": false - } - } - }, - "directDeposit": { - "type": "object", - "nullable": true, - "additionalProperties": false, - "description": "If direct deposit information is included, the following attributes are required: accountType, accountNumber, routingNumber.", - "properties": { - "noAccount": { - "type": "boolean", - "nullable": true, - "description": "Claimant certifies that they do not have an account with a financial institution or certified payment agent.", - "default": false - }, - "accountNumber": { - "description": "Account number for the direct deposit.", - "pattern": "^(?:[a-zA-Z0-9-]{4,1000})?$", - "type": "string", - "maxLength": 1000, - "nullable": true, - "example": "123123123123" - }, - "accountType": { - "description": "Account type for the direct deposit.", - "type": "string", - "nullable": true, - "example": "CHECKING", - "enum": [ - "CHECKING", - "SAVINGS" - ] - }, - "financialInstitutionName": { - "description": "Provide the name of the financial institution where the Veteran wants the direct deposit.", - "maxLength": 1000, - "type": "string", - "nullable": true, - "example": "Some Bank" - }, - "routingNumber": { - "description": "Routing number for the direct deposit.", - "type": "string", - "maxLength": 1000, - "nullable": true, - "pattern": "^$|^\\d{0,1000}$", - "example": "123123123" - } - } - }, - "claimantCertification": { - "type": "boolean", - "description": "Claimant certifies and authorizes release of information.", - "default": false - }, - "claimNotes": { - "type": "string", - "description": "An optional notes section.", - "maxLength": 4000 - }, - "claimId": { - "type": "string", - "example": "600517517" - } - } - } - } - } - } - } - } - } - }, - "401": { - "description": "Unauthorized", - "content": { - "application/json": { - "example": { - "errors": [ - { - "title": "Not authorized", - "status": "401", - "detail": "Not authorized" - } - ] - }, - "schema": { - "required": [ - "errors" - ], - "properties": { - "errors": { - "type": "array", - "items": { - "additionalProperties": false, - "required": [ - "title", - "detail" - ], - "properties": { - "title": { - "type": "string", - "description": "HTTP error title" - }, - "detail": { - "type": "string", - "description": "HTTP error detail" - }, - "status": { - "type": "string", - "description": "HTTP error status code" - }, - "source": { - "type": "object", - "additionalProperties": false, - "description": "Source of error", - "properties": { - "pointer": { - "type": "string", - "description": "Pointer to source of error" - } - } - } - } - } - } - } - } - } - } - }, - "404": { - "description": "Resource not found", - "content": { - "application/json": { - "example": { - "errors": [ - { - "status": "404", - "title": "Resource not found", - "detail": "Unable to locate Veteran's ID/ICN in Master Person Index (MPI). Please submit an issue at ask.va.gov or call 1-800-MyVA411 (800-698-2411) for assistance." - } - ] - }, - "schema": { - "required": [ - "errors" - ], - "properties": { - "errors": { - "type": "array", - "items": { - "additionalProperties": false, - "required": [ - "title", - "detail" - ], - "properties": { - "title": { - "type": "string", - "description": "HTTP error title" - }, - "detail": { - "type": "string", - "description": "HTTP error detail" - }, - "status": { - "type": "string", - "description": "HTTP error status code" - } - } - } - } - } - } - } - } - }, - "422": { - "description": "Unprocessable entity", - "content": { - "application/json": { - "examples": { - "Violates JSON Schema": { - "value": { - "errors": [ - { - "title": "Unprocessable entity", - "detail": "The property / did not contain the required key claimProcessType", - "status": "422", - "source": { - "pointer": "data/attributes/" - } - }, - { - "title": "Unprocessable entity", - "detail": "The property / did not contain the required key disabilities", - "status": "422", - "source": { - "pointer": "data/attributes/" - } - }, - { - "title": "Unprocessable entity", - "detail": "The property / did not contain the required key serviceInformation", - "status": "422", - "source": { - "pointer": "data/attributes/" - } - }, - { - "title": "Unprocessable entity", - "detail": "The property / did not contain the required key veteranIdentification", - "status": "422", - "source": { - "pointer": "data/attributes/" - } - } - ] - } - }, - "Not a JSON Object": { - "value": { - "errors": [ - { - "title": "Unprocessable entity", - "status": "422", - "detail": "The request body is not a valid JSON object: This is not valid JSON", - "source": { - "pointer": null - } - } - ] - } - } - }, - "schema": { - "required": [ - "errors" - ], - "properties": { - "errors": { - "type": "array", - "items": { - "additionalProperties": false, - "required": [ - "title", - "status", - "detail" - ], - "properties": { - "status": { - "type": "string", - "description": "HTTP error code" - }, - "detail": { - "type": "string", - "description": "HTTP error detail" - }, - "source": { - "type": "object", - "pointer": { - "type": "string" - } - }, - "title": { - "type": "string" - } - } - } - } - } - } - } - } - } - }, - "requestBody": { - "content": { - "application/json": { - "schema": { - "type": "object", - "required": [ - "data" - ], - "properties": { - "data": { - "type": "object", - "required": [ - "attributes", - null - ], - "properties": { - "attributes": { - "$schema": "http://json-schema.org/draft-07/schema#", - "description": "Claims API 526 Schema", - "type": "object", - "additionalProperties": false, - "required": [ - "claimantCertification", - "claimProcessType", - "disabilities", - "serviceInformation", - "veteranIdentification" - ], - "properties": { - "claimProcessType": { - "type": "string", - "description": "Select type of claim program/process that applies to the Veteran.", - "enum": [ - "STANDARD_CLAIM_PROCESS", - "FDC_PROGRAM", - "BDD_PROGRAM" - ] - }, - "veteranIdentification": { - "type": "object", - "additionalProperties": false, - "required": [ - "mailingAddress", - "currentVaEmployee" - ], - "properties": { - "serviceNumber": { - "type": "string", - "description": "Service identification number", - "maxLength": 1000, - "nullable": true - }, - "veteranNumber": { - "description": "If there isn't a ten digit phone number in VBMS for the Veteran, the exams will not be ordered. Including the phone number is recommended to avoid claim processing delays.", - "type": "object", - "nullable": true, - "properties": { - "telephone": { - "description": "Veteran's phone number.", - "type": "string", - "pattern": "^\\d{10}?$", - "example": "5555555555", - "nullable": true - }, - "internationalTelephone": { - "type": "string", - "description": "Veteran's international phone number.", - "example": "+44 20 1234 5678", - "maxLength": 1000, - "nullable": true - } - } - }, - "mailingAddress": { - "type": "object", - "additionalProperties": false, - "required": [ - "addressLine1", - "city", - "country" - ], - "properties": { - "addressLine1": { - "description": "Address line 1 for the Veteran's current mailing address.", - "type": "string", - "pattern": "^([-a-zA-Z0-9'.,&#]([-a-zA-Z0-9'.,&# ])?)+$", - "maxLength": 20, - "example": "1234 Couch Street" - }, - "addressLine2": { - "description": "Address line 2 for the Veteran's current mailing address.", - "type": "string", - "pattern": "^([-a-zA-Z0-9'.,&#]([-a-zA-Z0-9'.,&# ])?)+$", - "maxLength": 20, - "example": "Unit 4", - "nullable": true - }, - "addressLine3": { - "description": "Address line 3 for the Veteran's current mailing address.", - "type": "string", - "pattern": "^([-a-zA-Z0-9'.,&#]([-a-zA-Z0-9'.,&# ])?)+$", - "maxLength": 20, - "example": "Room 1", - "nullable": true - }, - "city": { - "description": "City for the Veteran's current mailing address.", - "type": "string", - "pattern": "^$|([a-zA-Z0-9\\'-'.# ]([a-zA-Z0-9\\'-'.# ])?)+$", - "minLength": 1, - "maxLength": 30, - "example": "Schenectady" - }, - "state": { - "description": "State for the Veteran's current mailing address. Required if 'country' is 'USA'.", - "type": "string", - "pattern": "^[a-z,A-Z]{2}$", - "example": "NY", - "nullable": true - }, - "country": { - "description": "Country for the Veteran's current mailing address. Must match the values returned by the /countries endpoint on the [Benefits Reference Data API](https://developer.va.gov/explore/benefits/docs/benefits_reference_data?version=current).", - "type": "string", - "maxLength": 1000, - "example": "USA" - }, - "zipFirstFive": { - "description": "Zip code (First 5 digits) for the Veteran's current mailing address. Required if 'country' is 'USA'.", - "type": "string", - "pattern": "^\\d{5}?$", - "example": "12345", - "nullable": true - }, - "zipLastFour": { - "description": "Zip code (Last 4 digits) for the Veteran's current mailing address.", - "type": "string", - "pattern": "^\\d{4}?$", - "example": "6789", - "nullable": true - }, - "internationalPostalCode": { - "description": "International postal code for the Veteran's current mailing address. Do not include if 'country' is 'USA'.", - "type": "string", - "maxLength": 16, - "nullable": true, - "pattern": "^[a-zA-Z0-9]*$" - } - } - }, - "emailAddress": { - "description": "Information associated with the Veteran's email address.", - "type": "object", - "nullable": true, - "properties": { - "email": { - "type": "string", - "pattern": "^[^\\s@]+@([^\\s@.,]+\\.)+[^\\s@.,]{2,}$", - "description": "The most current email address of the Veteran.", - "maxLength": 80, - "nullable": true - }, - "agreeToEmailRelatedToClaim": { - "type": "boolean", - "description": "Agreement to email information relating to this claim.", - "example": true, - "default": false, - "nullable": true - } - } - }, - "currentVaEmployee": { - "type": "boolean", - "description": "Set to true if Veteran is a VA employee.", - "nullable": false - } - } - }, - "changeOfAddress": { - "description": "If 'changeOfAddress' is included, the following attributes are required: 'typeOfAddressChange', 'addressLine1', 'city', 'country'.", - "type": "object", - "nullable": true, - "additionalProperties": false, - "properties": { - "typeOfAddressChange": { - "description": "Temporary or Permanent change of address. If 'TEMPORARY', 'beginDate' and 'endDate' are required.", - "type": "string", - "enum": [ - "TEMPORARY", - "PERMANENT" - ], - "example": "PERMANENT" - }, - "addressLine1": { - "description": "Address line 1 for the Veteran's new address.", - "type": "string", - "pattern": "^([-a-zA-Z0-9'.,&#]([-a-zA-Z0-9'.,&# ])?)+$", - "maxLength": 20, - "example": "1234 Couch Street" - }, - "addressLine2": { - "description": "Address line 2 for the Veteran's new address.", - "type": "string", - "pattern": "^([-a-zA-Z0-9'.,&#]([-a-zA-Z0-9'.,&# ])?)+$", - "maxLength": 20, - "example": "Unit 4", - "nullable": true - }, - "addressLine3": { - "description": "Address line 3 for the Veteran's new address.", - "type": "string", - "pattern": "^([-a-zA-Z0-9'.,&#]([-a-zA-Z0-9'.,&# ])?)+$", - "maxLength": 20, - "example": "Room 1", - "nullable": true - }, - "city": { - "description": "City for the Veteran's new address.", - "type": "string", - "pattern": "^$|([a-zA-Z0-9\\'-'.# ]([a-zA-Z0-9\\'-'.# ])?)+$", - "minLength": 0, - "maxLength": 30, - "example": "Schenectady" - }, - "state": { - "description": "State for the Veteran's new address. Required if 'country' is 'USA'.", - "type": "string", - "pattern": "^$|^[a-z,A-Z]{2}$", - "example": "NY", - "nullable": true - }, - "country": { - "description": "Country for the Veteran's new address. Value must match the values returned by the /countries endpoint on the [Benefits Reference Data API](https://developer.va.gov/explore/benefits/docs/benefits_reference_data?version=current).", - "type": "string", - "maxLength": 1000, - "example": "USA" - }, - "zipFirstFive": { - "description": "Zip code (First 5 digits) for the Veteran's new address. Required if 'country' is 'USA'.", - "type": "string", - "pattern": "^$|^\\d{5}?$", - "example": "12345", - "nullable": true - }, - "zipLastFour": { - "description": "Zip code (Last 4 digits) for the Veteran's new address.", - "type": "string", - "nullable": true, - "pattern": "^$|^\\d{4}?$", - "example": "6789" - }, - "internationalPostalCode": { - "description": "International postal code for the Veteran's new address. Do not include if 'country' is 'USA'.", - "type": "string", - "maxLength": 16, - "nullable": true, - "pattern": "^[a-zA-Z0-9]*$" - }, - "dates": { - "type": "object", - "properties": { - "beginDate": { - "description": "Begin date for the Veteran's new address.", - "pattern": "^(?:[0-9]{4})-(?:0[1-9]|1[0-2])-(?:0[1-9]|[1-2][0-9]|3[0-1])$", - "type": "string", - "nullable": true, - "example": "2018-06-04" - }, - "endDate": { - "description": "Date in YYYY-MM-DD the changed address expires, if change is temporary.", - "type": "string", - "nullable": true, - "pattern": "^(?:[0-9]{4})-(?:0[1-9]|1[0-2])-(?:0[1-9]|[1-2][0-9]|3[0-1])$", - "example": "2018-06-04" - } - } - } - } - }, - "homeless": { - "type": "object", - "nullable": true, - "additionalProperties": false, - "properties": { - "isCurrentlyHomeless": { - "type": "boolean", - "nullable": true, - "description": "Is the Veteran currently homeless?" - }, - "currentlyHomeless": { - "type": "object", - "nullable": true, - "additionalProperties": false, - "properties": { - "homelessSituationOptions": { - "description": "Veteran's living situation.", - "type": "string", - "nullable": true, - "default": "other", - "enum": [ - "LIVING_IN_A_HOMELESS_SHELTER", - "NOT_CURRENTLY_IN_A_SHELTERED_ENVIRONMENT", - "STAYING_WITH_ANOTHER_PERSON", - "FLEEING_CURRENT_RESIDENCE", - "OTHER" - ], - "example": "FLEEING_CURRENT_RESIDENCE" - }, - "otherDescription": { - "description": "Explanation of living situation. Required if 'homelessSituationOptions' is 'OTHER'.", - "type": "string", - "nullable": true, - "maxLength": 500, - "example": "other living situation" - } - } - }, - "isAtRiskOfBecomingHomeless": { - "type": "boolean", - "nullable": true, - "description": "Is the Veteran currently at risk of becoming homeless?" - }, - "riskOfBecomingHomeless": { - "type": "object", - "nullable": true, - "additionalProperties": false, - "properties": { - "livingSituationOptions": { - "type": "string", - "nullable": true, - "default": "HOUSING_WILL_BE_LOST_IN_30_DAYS", - "enum": [ - "HOUSING_WILL_BE_LOST_IN_30_DAYS", - "LEAVING_PUBLICLY_FUNDED_SYSTEM_OF_CARE", - "OTHER" - ] - }, - "otherDescription": { - "description": "Explanation of living situation. Required if 'livingSituationOptions' is 'OTHER'.", - "type": "string", - "nullable": true, - "maxLength": 500, - "example": "other living situation" - } - } - }, - "pointOfContact": { - "description": "Individual in direct contact with Veteran.", - "type": "string", - "nullable": true, - "minLength": 1, - "maxLength": 100, - "pattern": "^([-a-zA-Z0-9/']+( ?))*$", - "example": "Jane Doe" - }, - "pointOfContactNumber": { - "type": "object", - "nullable": true, - "additionalProperties": false, - "properties": { - "telephone": { - "description": "Ten digit primary phone of point of contact.", - "type": "string", - "pattern": "^\\d{10}?$", - "example": "5555555", - "nullable": true - }, - "internationalTelephone": { - "description": "International phone of point of contact.", - "type": "string", - "example": "+44 20 1234 5678", - "maxLength": 1000, - "nullable": true - } - } - } - } - }, - "toxicExposure": { - "type": "object", - "nullable": true, - "properties": { - "gulfWarHazardService": { - "type": "object", - "nullable": true, - "description": "Toxic exposure related to the Gulf war.", - "properties": { - "servedInGulfWarHazardLocations": { - "type": "string", - "description": "Set to true if the Veteran served in any of the following Gulf War hazard locations: Iraq; Kuwait; Saudi Arabia; the neutral zone between Iraq and Saudi Arabia; Bahrain; Qatar; the United Arab Emirates; Oman; Yemen; Lebanon; Somalia; Afghanistan; Israel; Egypt; Turkey; Syria; Jordan; Djibouti; Uzbekistan; the Gulf of Aden; the Gulf of Oman; the Persian Gulf; the Arabian Sea; and the Red Sea.", - "example": "YES", - "enum": [ - "NO", - "YES" - ], - "nullable": true - }, - "serviceDates": { - "type": "object", - "nullable": true, - "description": "Date range for when the exposure happened.", - "properties": { - "beginDate": { - "type": "string", - "nullable": true, - "description": "Approximate begin date for serving in Gulf War hazard location.", - "pattern": "^(?:19|20)[0-9][0-9]$|^(?:19|20)[0-9][0-9]-(0[1-9]|1[0-2])$", - "example": "2018-06 or 2018" - }, - "endDate": { - "type": "string", - "nullable": true, - "description": "Approximate end date for serving in Gulf War hazard location.", - "pattern": "^(?:19|20)[0-9][0-9]$|^(?:19|20)[0-9][0-9]-(0[1-9]|1[0-2])$", - "example": "2018-06 or 2018" - } - } - } - } - }, - "herbicideHazardService": { - "description": "Toxic exposure related to herbicide (Agent Orange) hazards.", - "type": "object", - "nullable": true, - "properties": { - "servedInHerbicideHazardLocations": { - "type": "string", - "description": "Set to true if the Veteran served in any of the following herbicide/Agent Orange locations: Republic of Vietnam to include the 12 nautical mile territorial waters; Thailand at any United States or Royal Thai base; Laos; Cambodia at Mimot or Krek; Kampong Cham Province; Guam or American Samoa; or in the territorial waters thereof; Johnston Atoll or a ship that called at Johnston Atoll; Korean demilitarized zone; aboard (to include repeated operations and maintenance with) a C-123 aircraft known to have been used to spray an herbicide agent (during service in the Air Force and Air Force Reserves).", - "example": "YES", - "enum": [ - "NO", - "YES" - ], - "nullable": true - }, - "otherLocationsServed": { - "type": "string", - "nullable": true, - "pattern": "^$|([a-zA-Z0-9\"\\/&\\(\\)\\-'.,#\\[\\] ]([a-zA-Z0-9(\\)\\-'.,#\\[\\] ])?)+$", - "maxLength": 5000, - "description": "Other location(s) where Veteran served." - }, - "serviceDates": { - "description": "Date range for exposure in herbicide hazard location.", - "type": "object", - "nullable": true, - "properties": { - "beginDate": { - "type": "string", - "nullable": true, - "description": "Approximate begin date for serving in herbicide location.", - "pattern": "^(?:19|20)[0-9][0-9]$|^(?:19|20)[0-9][0-9]-(0[1-9]|1[0-2])$", - "example": "2018-06 or 2018" - }, - "endDate": { - "type": "string", - "nullable": true, - "description": "Approximate end date for serving in herbicide location.", - "pattern": "^(?:19|20)[0-9][0-9]$|^(?:19|20)[0-9][0-9]-(0[1-9]|1[0-2])$", - "example": "2018-06 or 2018" - } - } - } - } - }, - "additionalHazardExposures": { - "type": "object", - "nullable": true, - "description": "Additional hazardous exposures.", - "properties": { - "additionalExposures": { - "description": "Additional exposure incidents.", - "type": "array", - "nullable": true, - "uniqueItems": true, - "items": { - "type": "string", - "additionalProperties": false, - "enum": [ - "ASBESTOS", - "MUSTARD_GAS", - "RADIATION", - "SHIPBOARD_HAZARD_AND_DEFENSE", - "MILITARY_OCCUPATIONAL_SPECIALTY_RELATED_TOXIN", - "CONTAMINATED_WATER_AT_CAMP_LEJEUNE", - "OTHER" - ] - } - }, - "specifyOtherExposures": { - "type": "string", - "nullable": true, - "pattern": "^$|([a-zA-Z0-9\"\\/&\\(\\)\\-'.,#\\[\\] ]([a-zA-Z0-9(\\)\\-'.,#\\[\\] ])?)+$", - "maxLength": 5000, - "description": "Exposure to asbestos." - }, - "exposureDates": { - "type": "object", - "nullable": true, - "description": "Date range for when the exposure happened.", - "properties": { - "beginDate": { - "type": "string", - "nullable": true, - "description": "Approximate begin date for exposure.", - "pattern": "^(?:19|20)[0-9][0-9]$|^(?:19|20)[0-9][0-9]-(0[1-9]|1[0-2])$", - "example": "2018-06 or 2018" - }, - "endDate": { - "type": "string", - "nullable": true, - "description": "Approximate end date for exposure.", - "pattern": "^(?:19|20)[0-9][0-9]$|^(?:19|20)[0-9][0-9]-(0[1-9]|1[0-2])$", - "example": "2018-06 or 2018" - } - } - } - } - }, - "multipleExposures": { - "type": "array", - "nullable": true, - "minItems": 1, - "uniqueItems": true, - "items": { - "type": "object", - "additionalProperties": false, - "properties": { - "hazardExposedTo": { - "type": "string", - "nullable": true, - "pattern": "^([-a-zA-Z0-9'.,&# ])+$", - "maxLength": 1000, - "description": "Hazard the Veteran was exposed to." - }, - "exposureLocation": { - "type": "string", - "nullable": true, - "pattern": "^$|([a-zA-Z0-9\"\\/&\\(\\)\\-'.,#\\[\\] ]([a-zA-Z0-9(\\)\\-'.,#\\[\\] ])?)+$", - "maxLength": 1000, - "description": "Location where the exposure happened." - }, - "exposureDates": { - "type": "object", - "nullable": true, - "description": "Date range for when the exposure happened.", - "properties": { - "beginDate": { - "type": "string", - "nullable": true, - "description": "Approximate begin date for exposure.", - "pattern": "^(?:19|20)[0-9][0-9]$|^(?:19|20)[0-9][0-9]-(0[1-9]|1[0-2])$", - "example": "2018-06 or 2018" - }, - "endDate": { - "type": "string", - "nullable": true, - "description": "Approximate end date for exposure.", - "pattern": "^(?:19|20)[0-9][0-9]$|^(?:19|20)[0-9][0-9]-(0[1-9]|1[0-2])$", - "example": "2018-06 or 2018" - } - } - } - } - } - } - } - }, - "disabilities": { - "description": "Any current disabilities or symptoms the Veteran is claiming are related to their military service and/or are service-connected.", - "type": "array", - "minItems": 1, - "items": { - "type": "object", - "additionalProperties": false, - "required": [ - "disabilityActionType", - "name" - ], - "properties": { - "name": { - "description": "Name of the disability. The /disabilities endpoint on the [Benefits Reference Data API](https://developer.va.gov/explore/benefits/docs/benefits_reference_data?version=current) may be used to retrieve possible disability names.", - "type": "string", - "pattern": "^$|([a-zA-Z0-9\"\\/&\\(\\)\\-'.,#\\[\\] ]([a-zA-Z0-9(\\)\\-'.,#\\[\\] ])?)+$", - "example": "PTSD (post traumatic stress disorder)", - "maxLength": 255 - }, - "exposureOrEventOrInjury": { - "type": "string", - "description": "What caused the disability?", - "nullable": true, - "maxLength": 1000, - "examples": [ - "Agent Orange", - "radiation", - "burn pits" - ] - }, - "serviceRelevance": { - "description": "Explanation of how the disability(ies) relates to the in-service event/exposure/injury. If the disabilityActionType is 'NEW', the serviceRelevance is required.", - "type": "string", - "nullable": true, - "maxLength": 1000, - "example": "Heavy equipment operator in service." - }, - "approximateDate": { - "description": "Approximate date disability began. Date must be in the past. \n Format can be either YYYY-MM-DD or YYYY-MM or YYYY", - "type": "string", - "pattern": "^(?:[0-9]{4}(?:-(?!00)(?:0[1-9]|1[0-2])(?:-(?:0[1-9]|[1-2][0-9]|3[0-1]))?)?)$", - "example": "2018-03-02 or 2018-03 or 2018", - "nullable": true - }, - "disabilityActionType": { - "description": "Action type requested for the disability. If 'INCREASE' or 'NONE', then 'ratedDisabilityId' and 'diagnosticCode' should be included. 'NONE' should be used when including a secondary disability.", - "type": "string", - "enum": [ - "NONE", - "NEW", - "INCREASE" - ], - "example": "NEW" - }, - "classificationCode": { - "type": "string", - "description": "Classification code for the associated body system. Must match an active code returned by the /disabilities endpoint on the [Benefits Reference Data API](https://developer.va.gov/explore/benefits/docs/benefits_reference_data?version=current).", - "example": "249470", - "nullable": true - }, - "ratedDisabilityId": { - "description": "When submitting a contention with action type 'INCREASE', the previously rated disability id may be included.", - "type": "string", - "example": "1100583", - "nullable": true - }, - "diagnosticCode": { - "description": "If the disabilityActionType is 'NONE' or 'INCREASE', the diagnosticCode should correspond to an existing rated disability.", - "type": "integer", - "example": 9999, - "nullable": true - }, - "isRelatedToToxicExposure": { - "type": "boolean", - "description": "Is the disability related to toxic exposures? If true, related 'toxicExposure' must be included.", - "example": true, - "default": false, - "nullable": true - }, - "specialIssues": { - "type": "array", - "nullable": true, - "uniqueItems": true, - "items": { - "maxItems": 2, - "additionalProperties": false, - "type": "string", - "enum": [ - "POW", - "EMP" - ] - } - }, - "secondaryDisabilities": { - "description": "If secondaryDisability is included, the following attributes are required: 'secondaryDisability.name', 'secondaryDisability.disabilityActionType' and 'secondaryDisability.serviceRelevance'", - "type": "array", - "items": { - "type": "object", - "additionalProperties": false, - "properties": { - "name": { - "description": "Name of the disability. The /disabilities endpoint on the [Benefits Reference Data API](https://developer.va.gov/explore/benefits/docs/benefits_reference_data?version=current) may be used to retrieve possible disability names.", - "type": "string", - "pattern": "^$|([a-zA-Z0-9\"\\/&\\(\\)\\-'.,# ]([a-zA-Z0-9(\\)\\-'.,#\\[\\] ])?)+$", - "example": "PTSD (post traumatic stress disorder)", - "maxLength": 255 - }, - "exposureOrEventOrInjury": { - "type": "string", - "description": "What caused the disability?", - "nullable": true, - "maxLength": 1000, - "examples": [ - "Agent Orange", - "radiation", - "burn pits" - ] - }, - "serviceRelevance": { - "description": "Explanation of how the disability(ies) relates to the in-service event/exposure/injury.", - "type": "string", - "nullable": true, - "maxLength": 1000, - "example": "Heavy equipment operator in service." - }, - "disabilityActionType": { - "description": "The status of the secondary disability.", - "type": "string", - "example": "SECONDARY", - "enum": [ - "SECONDARY" - ] - }, - "approximateDate": { - "description": "Approximate date disability began. Date must be in the past. \n Format can be either YYYY-MM-DD or YYYY-MM or YYYY", - "type": "string", - "pattern": "^(?:[0-9]{4}(?:-(?!00)(?:0[1-9]|1[0-2])(?:-(?:0[1-9]|[1-2][0-9]|3[0-1]))?)?)$", - "example": "2018-03-02 or 2018-03 or 2018", - "nullable": true - }, - "classificationCode": { - "type": "string", - "description": "Classification code for the associated body system. Must match an active code returned by the /disabilities endpoint on the [Benefits Reference Data API](https://developer.va.gov/explore/benefits/docs/benefits_reference_data?version=current).", - "example": "249470", - "nullable": true - } - } - } - } - } - } - }, - "treatments": { - "description": "Identifies the Service Treatment information of the Veteran. The combination of treatedDisabilityName, center name, center city, and center state must be less than 1000 characters to successfully generate a PDF.", - "type": "array", - "nullable": true, - "uniqueItems": true, - "items": { - "type": "object", - "additionalProperties": false, - "properties": { - "beginDate": { - "description": "Begin date for treatment. If treatment began from 2005 to present, you do not need to provide dates. Each treatment begin date must be after the first 'servicePeriod.activeDutyBeginDate'.", - "type": "string", - "pattern": "^(?:19|20)[0-9][0-9]$|^(?:19|20)[0-9][0-9]-(0[1-9]|1[0-2])$", - "example": "2018-06 or 2018", - "nullable": true - }, - "treatedDisabilityNames": { - "description": "Name(s) of disabilities treated in this time frame.", - "type": "array", - "nullable": true, - "maxItems": 101, - "items": { - "type": "string", - "additionalProperties": false, - "example": [ - "PTSD (post traumatic stress disorder)", - "Trauma" - ] - } - }, - "center": { - "description": "VA Medical Center(s) and Department of Defense Military Treatment Facilities where the Veteran received treatment after discharge for any claimed disabilities.", - "type": "object", - "nullable": true, - "additionalProperties": false, - "properties": { - "name": { - "description": "Name of facility Veteran was treated in. The /treatment-centers endpoint on the [Benefits Reference Data API](https://developer.va.gov/explore/benefits/docs/benefits_reference_data?version=current) may be used to retrieve possible treatment center names.", - "type": "string", - "nullable": true, - "pattern": "([a-zA-Z0-9\"/&()\\'-'.,# ]([a-zA-Z0-9()\\'-'.,# ])?)+$", - "example": "Private Facility 2", - "minLength": 1, - "maxLength": 100 - }, - "city": { - "description": "City of treatment facility.", - "type": "string", - "pattern": "([a-zA-Z0-9\\-'.# ]([a-zA-Z0-9\\-'.# ])?)+$", - "example": "Portland", - "nullable": true, - "minLength": 0, - "maxLength": 30 - }, - "state": { - "description": "State of treatment facility.", - "type": "string", - "pattern": "^$|^[a-z,A-Z]{2}$", - "example": "OR", - "nullable": true - } - } - } - } - } - }, - "serviceInformation": { - "type": "object", - "additionalProperties": false, - "required": [ - "servicePeriods" - ], - "properties": { - "alternateNames": { - "description": "List any other names under which the Veteran served, if applicable.", - "type": "array", - "nullable": true, - "maxItems": 100, - "uniqueItems": true, - "items": { - "type": "string", - "additionalProperties": false, - "examples": [ - "jane", - "janey lee", - "jane lee MacDonald" - ] - } - }, - "servicePeriods": { - "description": "Identifies the Service dates and Branch the Veteran served in.", - "type": "array", - "minItems": 1, - "items": { - "type": "object", - "required": [ - "serviceBranch", - "serviceComponent", - "activeDutyBeginDate", - "activeDutyEndDate" - ], - "properties": { - "serviceBranch": { - "description": "Branch of service during period. The /service-branches endpoint on the [Benefits Reference Data API](https://developer.va.gov/explore/benefits/docs/benefits_reference_data?version=current) may be used to retrieve list of possible service branches.", - "type": "string", - "maxLength": 1000, - "example": "Air Force" - }, - "serviceComponent": { - "type": "string", - "description": "", - "enum": [ - "Active", - "Reserves", - "National Guard" - ] - }, - "activeDutyBeginDate": { - "description": "Date started active duty.", - "type": "string", - "pattern": "^(?:[0-9]{4})-(?:0[1-9]|1[0-2])-(?:0[1-9]|[1-2][0-9]|3[0-1])$", - "example": "2018-06-06" - }, - "activeDutyEndDate": { - "description": "Date completed active duty.", - "type": "string", - "pattern": "^(?:[0-9]{4})-(?:0[1-9]|1[0-2])-(?:0[1-9]|[1-2][0-9]|3[0-1])$", - "example": "2018-06-06" - }, - "separationLocationCode": { - "description": "Location code for the facility the Veteran plans to separate from. Code must match the values returned by the /intake-sites endpoint on the [Benefits reference Data API](https://developer.va.gov/explore/benefits/docs/benefits_reference_data?version=current).", - "type": "string", - "nullable": true, - "example": "98283" - } - } - } - }, - "servedInActiveCombatSince911": { - "type": "string", - "enum": [ - "YES", - "NO" - ], - "description": "Did Veteran serve in a combat zone since 9-11-2001?", - "example": "YES", - "nullable": true - }, - "reservesNationalGuardService": { - "type": "object", - "nullable": true, - "additionalProperties": false, - "properties": { - "component": { - "type": "string", - "nullable": true, - "description": "", - "enum": [ - "Reserves", - "National Guard" - ] - }, - "obligationTermsOfService": { - "type": "object", - "nullable": true, - "description": "If 'obligationTermsOfService' is included, the following attributes are required: 'beginDate ' and 'endDate'.", - "additionalProperties": false, - "properties": { - "beginDate": { - "type": "string", - "nullable": true, - "pattern": "^(?:[0-9]{4})-(?:0[1-9]|1[0-2])-(?:0[1-9]|[1-2][0-9]|3[0-1])$", - "example": "2018-06-06" - }, - "endDate": { - "type": "string", - "nullable": true, - "pattern": "^(?:[0-9]{4})-(?:0[1-9]|1[0-2])-(?:0[1-9]|[1-2][0-9]|3[0-1])$", - "example": "2018-06-06" - } - } - }, - "unitName": { - "type": "string", - "nullable": true, - "maxLength": 1000, - "pattern": "^$|([a-zA-Z0-9\\-'.,# ][a-zA-Z0-9\\-'.,# ]?)*$" - }, - "unitAddress": { - "type": "string", - "maxLength": 1000, - "pattern": "^$|^([-a-zA-Z0-9'.,&# ])+$", - "nullable": true - }, - "unitPhone": { - "type": "object", - "nullable": true, - "additionalProperties": false, - "properties": { - "areaCode": { - "type": "string", - "nullable": true, - "maxLength": 3, - "pattern": "^$|^\\d{3}$", - "example": "555" - }, - "phoneNumber": { - "type": "string", - "nullable": true, - "maxLength": 20, - "example": "5555555" - } - } - }, - "receivingInactiveDutyTrainingPay": { - "type": "string", - "enum": [ - "YES", - "NO" - ], - "nullable": true, - "example": "YES" - } - } - }, - "federalActivation": { - "description": "If federalActivation is present then reservesNationalGuardService.obligationTermsOfService.beginDate, reservesNationalGuardService.obligationTermsOfService.endDate and reservesNationalGuardService.unitName are required", - "type": "object", - "nullable": true, - "additionalProperties": false, - "properties": { - "activationDate": { - "description": "Date cannot be in the future and must be after the earliest servicePeriod.activeDutyBeginDate.", - "type": "string", - "pattern": "^(?:[0-9]{4})-(?:0[1-9]|1[0-2])-(?:0[1-9]|[1-2][0-9]|3[0-1])$", - "example": "2018-06-06", - "nullable": true - }, - "anticipatedSeparationDate": { - "description": "Anticipated date of separation. Date must be in the future.", - "type": "string", - "pattern": "^(?:[0-9]{4})-(?:0[1-9]|1[0-2])-(?:0[1-9]|[1-2][0-9]|3[0-1])$", - "example": "2018-06-06", - "nullable": true - } - } - }, - "confinements": { - "type": "array", - "nullable": true, - "uniqueItems": true, - "items": { - "additionalProperties": false, - "type": "object", - "properties": { - "approximateBeginDate": { - "description": "The approximateBeginDate must be after the earliest servicePeriod activeDutyBeginDate.", - "type": "string", - "nullable": false, - "pattern": "^(?:[0-9]{4})-(?:0[1-9]|1[0-2])-(?:0[1-9]|[1-2][0-9]|3[0-1])$|(?:[0-9]{4})-(?:0[1-9]|1[0-2])$", - "example": "2018-06-06 or 2018-06" - }, - "approximateEndDate": { - "type": "string", - "nullable": false, - "pattern": "^(?:[0-9]{4})-(?:0[1-9]|1[0-2])-(?:0[1-9]|[1-2][0-9]|3[0-1])$|(?:[0-9]{4})-(?:0[1-9]|1[0-2])$", - "example": "2018-06-06 or 2018-06" - } - } - } - } - } - }, - "servicePay": { - "type": "object", - "nullable": true, - "additionalProperties": false, - "properties": { - "receivingMilitaryRetiredPay": { - "description": "Is the Veteran receiving military retired pay?", - "type": "string", - "enum": [ - "YES", - "NO" - ], - "example": "YES", - "nullable": true - }, - "futureMilitaryRetiredPay": { - "description": "Will the Veteran receive military retired pay pay in future? \n If true, then 'futurePayExplanation' is required.", - "type": "string", - "enum": [ - "YES", - "NO" - ], - "example": "YES", - "nullable": true - }, - "futureMilitaryRetiredPayExplanation": { - "description": "Explains why future pay will be received.", - "type": "string", - "maxLength": 1000, - "example": "Will be retiring soon.", - "nullable": true - }, - "militaryRetiredPay": { - "type": "object", - "nullable": true, - "description": "", - "properties": { - "branchOfService": { - "description": "Branch of service. The /service-branches endpoint on the [Benefits Reference Data API](https://developer.va.gov/explore/benefits/docs/benefits_reference_data?version=current) may be used to retrieve list of possible service branches.", - "type": "string", - "maxLength": 1000, - "nullable": true, - "example": "Air Force" - }, - "monthlyAmount": { - "description": "Amount being received.", - "type": "integer", - "nullable": true, - "minimum": 1, - "maximum": 999999, - "example": 100 - } - } - }, - "retiredStatus": { - "type": "string", - "nullable": true, - "description": "", - "enum": [ - "RETIRED", - "TEMPORARY_DISABILITY_RETIRED_LIST", - "PERMANENT_DISABILITY_RETIRED_LIST" - ] - }, - "favorMilitaryRetiredPay": { - "description": "Is the Veteran waiving VA benefits to retain military retired pay? See item 26 on form 21-526EZ for more details.", - "type": "boolean", - "nullable": true, - "example": true, - "default": false - }, - "receivedSeparationOrSeverancePay": { - "description": "Has the Veteran ever received separation pay, disability severance pay, or any other lump sum payment from their branch of service?", - "type": "string", - "enum": [ - "YES", - "NO" - ], - "example": "YES", - "nullable": true - }, - "separationSeverancePay": { - "type": "object", - "nullable": true, - "description": "", - "properties": { - "datePaymentReceived": { - "description": "Approximate date separation pay was received. \n Format can be either YYYY-MM-DD or YYYY-MM or YYYY", - "type": "string", - "pattern": "^(?:[0-9]{4})-(?:0[1-9]|1[0-2])-(?:0[1-9]|[1-2][0-9]|3[0-1])$|(?:[0-9]{4})$|(?:[0-9]{4})-(?:0[1-9]|1[0-2])$", - "example": "2018-03-02 or 2018-03 or 2018" - }, - "branchOfService": { - "description": "Branch of service. The /service-branches endpoint on the [Benefits Reference Data API](https://developer.va.gov/explore/benefits/docs/benefits_reference_data?version=current) may be used to retrieve list of possible service branches.", - "type": "string", - "nullable": true, - "maxLength": 1000, - "example": "Air Force" - }, - "preTaxAmountReceived": { - "description": "Amount being received.", - "type": "integer", - "nullable": true, - "minimum": 1, - "maximum": 999999, - "example": 100 - } - } - }, - "favorTrainingPay": { - "description": "Is the Veteran waiving VA benefits to retain training pay? See item 28 on form 21-526EZ for more details. ", - "type": "boolean", - "nullable": true, - "example": true, - "default": false - } - } - }, - "directDeposit": { - "type": "object", - "nullable": true, - "additionalProperties": false, - "description": "If direct deposit information is included, the following attributes are required: accountType, accountNumber, routingNumber.", - "properties": { - "noAccount": { - "type": "boolean", - "nullable": true, - "description": "Claimant certifies that they do not have an account with a financial institution or certified payment agent.", - "default": false - }, - "accountNumber": { - "description": "Account number for the direct deposit.", - "pattern": "^(?:[a-zA-Z0-9-]{4,1000})?$", - "type": "string", - "maxLength": 1000, - "nullable": true, - "example": "123123123123" - }, - "accountType": { - "description": "Account type for the direct deposit.", - "type": "string", - "nullable": true, - "example": "CHECKING", - "enum": [ - "CHECKING", - "SAVINGS" - ] - }, - "financialInstitutionName": { - "description": "Provide the name of the financial institution where the Veteran wants the direct deposit.", - "maxLength": 1000, - "type": "string", - "nullable": true, - "example": "Some Bank" - }, - "routingNumber": { - "description": "Routing number for the direct deposit.", - "type": "string", - "maxLength": 1000, - "nullable": true, - "pattern": "^$|^\\d{0,1000}$", - "example": "123123123" - } - } - }, - "claimantCertification": { - "type": "boolean", - "description": "Claimant certifies and authorizes release of information.", - "default": false - }, - "claimNotes": { - "type": "string", - "description": "An optional notes section.", - "maxLength": 4000 - } - } - } - } - } - }, - "example": { - "data": { - "type": "form/526", - "attributes": { - "claimProcessType": "STANDARD_CLAIM_PROCESS", - "claimNotes": "Some things that are important to know, and are not included in any other place.", - "veteranIdentification": { - "serviceNumber": "123456789", - "veteranNumber": { - "telephone": "5555555555" - }, - "mailingAddress": { - "addressLine1": "123 Main Street", - "addressLine2": "Unit 1", - "addressLine3": "Room 2", - "city": "Schenectady", - "state": "NY", - "country": "USA", - "zipFirstFive": "12345", - "zipLastFour": "1234" - }, - "emailAddress": { - "email": "valid@somedomain.com", - "agreeToEmailRelatedToClaim": true - }, - "currentVaEmployee": false - }, - "changeOfAddress": { - "typeOfAddressChange": "TEMPORARY", - "addressLine1": "456 Main Street", - "addressLine2": "Unit 3", - "addressLine3": "Room 4", - "city": "Schenectady", - "state": "NY", - "country": "USA", - "zipFirstFive": "12345", - "zipLastFour": "9897", - "dates": { - "beginDate": "2025-06-04", - "endDate": "2026-06-04" - } - }, - "homeless": { - "currentlyHomeless": { - "homelessSituationOptions": "OTHER", - "otherDescription": "Other living situation" - }, - "pointOfContact": "John Doe", - "pointOfContactNumber": { - "telephone": "5555555555" - } - }, - "toxicExposure": { - "gulfWarHazardService": { - "servedInGulfWarHazardLocations": "NO" - }, - "herbicideHazardService": { - "servedInHerbicideHazardLocations": "YES", - "otherLocationsServed": "Other locations served", - "serviceDates": { - "beginDate": "1972-05", - "endDate": "1980-10" - } - }, - "additionalHazardExposures": { - "additionalExposures": [ - "OTHER" - ], - "specifyOtherExposures": "Agent Orange", - "exposureDates": { - "beginDate": "1972-05", - "endDate": "1980-10" - } - }, - "multipleExposures": [ - { - "hazardExposedTo": "Agent Orange", - "exposureLocation": "Vietnam", - "exposureDates": { - "beginDate": "1972-05", - "endDate": "1973-01" - } - }, - { - "hazardExposedTo": "Agent Orange", - "exposureLocation": "Vietnam", - "exposureDates": { - "beginDate": "1979-04", - "endDate": "1980-10" - } - } - ] - }, - "disabilities": [ - { - "name": "Diabetes", - "exposureOrEventOrInjury": "Agent Orange", - "serviceRelevance": "Service in Vietnam War", - "approximateDate": "1975-05", - "disabilityActionType": "NEW", - "isRelatedToToxicExposure": true - }, - { - "name": "Hearing Loss", - "exposureOrEventOrInjury": "Noise", - "serviceRelevance": "Heavy equipment operator in service", - "approximateDate": "1968-07", - "disabilityActionType": "INCREASE", - "classificationCode": "8987", - "ratedDisabilityId": "1234567", - "diagnosticCode": 5678, - "isRelatedToToxicExposure": false - } - ], - "treatments": [ - { - "beginDate": "2021-04", - "treatedDisabilityNames": [ - "Diabetes" - ], - "center": { - "name": "ATLANTA VA MEDICAL CENTER", - "state": "GA", - "city": "ATLANTA" - } - }, - { - "beginDate": "1996-03", - "treatedDisabilityNames": [ - "Hearing Loss" - ], - "center": { - "name": "ATLANTA VA MEDICAL CENTER", - "state": "GA", - "city": "ATLANTA" - } - } - ], - "serviceInformation": { - "alternateNames": [ - "Jon Doe", - "Jane Doe" - ], - "servicePeriods": [ - { - "serviceBranch": "Air Force", - "serviceComponent": "Active", - "activeDutyBeginDate": "1964-11-14", - "activeDutyEndDate": "1980-10-30", - "separationLocationCode": "98289" - } - ], - "servedInActiveCombatSince911": "NO", - "reservesNationalGuardService": { - "component": "National Guard", - "obligationTermsOfService": { - "beginDate": "1990-11-24", - "endDate": "1995-11-17" - }, - "unitName": "National Guard Unit Name", - "unitAddress": "1243 Main Street", - "unitPhone": { - "areaCode": "555", - "phoneNumber": "5555555" - }, - "receivingInactiveDutyTrainingPay": "YES" - }, - "confinements": [ - { - "approximateBeginDate": "1970-06-11", - "approximateEndDate": "1970-09-11" - } - ] - }, - "servicePay": { - "receivingMilitaryRetiredPay": "NO", - "futureMilitaryRetiredPay": "YES", - "futureMilitaryRetiredPayExplanation": "Explanation of future military retired pay", - "militaryRetiredPay": { - "branchOfService": "Air Force", - "monthlyAmount": 240 - }, - "retiredStatus": "PERMANENT_DISABILITY_RETIRED_LIST", - "favorMilitaryRetiredPay": false, - "receivedSeparationOrSeverancePay": "YES", - "separationSeverancePay": { - "datePaymentReceived": "2018-07-31", - "branchOfService": "Air Force", - "preTaxAmountReceived": 179 - }, - "favorTrainingPay": false - }, - "directDeposit": { - "accountNumber": "123123123123", - "accountType": "CHECKING", - "financialInstitutionName": "Chase", - "routingNumber": "123456789" - }, - "claimantCertification": true - } - } - } - }, - "examples": { - "Minimum Required Attributes": { - "value": { - "data": { - "type": "form/526", - "attributes": { - "claimProcessType": "STANDARD_CLAIM_PROCESS", - "veteranIdentification": { - "mailingAddress": { - "addressLine1": "1234 Couch Street", - "city": "Portland", - "state": "OR", - "country": "USA", - "zipFirstFive": "12345" - }, - "currentVaEmployee": false - }, - "disabilities": [ - { - "name": "hearing loss", - "serviceRelevance": "Heavy equipment operator in service", - "approximateDate": "2017-07", - "disabilityActionType": "NEW" - } - ], - "serviceInformation": { - "servicePeriods": [ - { - "serviceBranch": "Air Force", - "serviceComponent": "Active", - "activeDutyBeginDate": "2015-11-14", - "activeDutyEndDate": "2018-11-30" - } - ] - }, - "claimantCertification": true - } - } - } - }, - "Maximum Attributes": { - "value": { - "data": { - "type": "form/526", - "attributes": { - "claimProcessType": "STANDARD_CLAIM_PROCESS", - "claimNotes": "Some things that are important to know, and are not included in any other place.", - "veteranIdentification": { - "serviceNumber": "123456789", - "veteranNumber": { - "telephone": "5555555555", - "internationalTelephone": "+44 20 1234 5678" - }, - "mailingAddress": { - "addressLine1": "1234 Couch Street", - "addressLine2": "Unit 4", - "addressLine3": "Room 1", - "city": "Schenectady", - "state": "NY", - "country": "USA", - "zipFirstFive": "12345", - "zipLastFour": "1234" - }, - "emailAddress": { - "email": "valid@somedomain.com", - "agreeToEmailRelatedToClaim": true - }, - "currentVaEmployee": false - }, - "changeOfAddress": { - "typeOfAddressChange": "TEMPORARY", - "addressLine1": "10 Peach St", - "addressLine2": "Unit 4", - "addressLine3": "Room 1", - "city": "Schenectady", - "state": "NY", - "country": "USA", - "zipFirstFive": "12345", - "zipLastFour": "9897", - "dates": { - "beginDate": "2023-06-04", - "endDate": "2023-12-04" - } - }, - "homeless": { - "isCurrentlyHomeless": true, - "currentlyHomeless": { - "homelessSituationOptions": "FLEEING_CURRENT_RESIDENCE", - "otherDescription": "ABCDEFGHIJKLM" - }, - "isAtRiskOfBecomingHomeless": false, - "pointOfContact": "john stewart", - "pointOfContactNumber": { - "telephone": "5555555555", - "internationalTelephone": "+44 20 1234 5678" - } - }, - "toxicExposure": { - "gulfWarHazardService": { - "servedInGulfWarHazardLocations": "YES", - "serviceDates": { - "beginDate": "2018-07", - "endDate": "2018-08" - } - }, - "herbicideHazardService": { - "servedInHerbicideHazardLocations": "YES", - "otherLocationsServed": "ABCDEFGHIJKLM", - "serviceDates": { - "beginDate": "2018-07", - "endDate": "2018-08" - } - }, - "additionalHazardExposures": { - "additionalExposures": [ - "ASBESTOS", - "SHIPBOARD_HAZARD_AND_DEFENSE" - ], - "specifyOtherExposures": "Other exposure details", - "exposureDates": { - "beginDate": "2018-07", - "endDate": "2018-08" - } - }, - "multipleExposures": [ - { - "hazardExposedTo": "RADIATION", - "exposureLocation": "Guam", - "exposureDates": { - "beginDate": "2012-12", - "endDate": "2013-07" + "homeless": { + "type": "object", + "nullable": true, + "additionalProperties": false, + "properties": { + "isCurrentlyHomeless": { + "type": "boolean", + "nullable": true, + "description": "Is the Veteran currently homeless?" + }, + "currentlyHomeless": { + "type": "object", + "nullable": true, + "additionalProperties": false, + "properties": { + "homelessSituationOptions": { + "description": "Veteran's living situation.", + "type": "string", + "nullable": true, + "default": "other", + "enum": [ + "LIVING_IN_A_HOMELESS_SHELTER", + "NOT_CURRENTLY_IN_A_SHELTERED_ENVIRONMENT", + "STAYING_WITH_ANOTHER_PERSON", + "FLEEING_CURRENT_RESIDENCE", + "OTHER" + ], + "example": "FLEEING_CURRENT_RESIDENCE" + }, + "otherDescription": { + "description": "Explanation of living situation. Required if 'homelessSituationOptions' is 'OTHER'.", + "type": "string", + "nullable": true, + "maxLength": 500, + "example": "other living situation" + } + } + }, + "isAtRiskOfBecomingHomeless": { + "type": "boolean", + "nullable": true, + "description": "Is the Veteran currently at risk of becoming homeless?" + }, + "riskOfBecomingHomeless": { + "type": "object", + "nullable": true, + "additionalProperties": false, + "properties": { + "livingSituationOptions": { + "type": "string", + "nullable": true, + "default": "HOUSING_WILL_BE_LOST_IN_30_DAYS", + "enum": [ + "HOUSING_WILL_BE_LOST_IN_30_DAYS", + "LEAVING_PUBLICLY_FUNDED_SYSTEM_OF_CARE", + "OTHER" + ] + }, + "otherDescription": { + "description": "Explanation of living situation. Required if 'livingSituationOptions' is 'OTHER'.", + "type": "string", + "nullable": true, + "maxLength": 500, + "example": "other living situation" + } + } + }, + "pointOfContact": { + "description": "Individual in direct contact with Veteran.", + "type": "string", + "nullable": true, + "minLength": 1, + "maxLength": 100, + "pattern": "^([-a-zA-Z0-9/']+( ?))*$", + "example": "Jane Doe" + }, + "pointOfContactNumber": { + "type": "object", + "nullable": true, + "additionalProperties": false, + "properties": { + "telephone": { + "description": "Ten digit primary phone of point of contact.", + "type": "string", + "pattern": "^\\d{10}?$", + "example": "5555555", + "nullable": true + }, + "internationalTelephone": { + "description": "International phone of point of contact.", + "type": "string", + "example": "+44 20 1234 5678", + "maxLength": 1000, + "nullable": true + } + } + } } - } - ] - }, - "disabilities": [ - { - "name": "Traumatic Brain Injury", - "exposureOrEventOrInjury": "EXPOSURE", - "serviceRelevance": "ABCDEFG", - "approximateDate": "2018-03-11", - "disabilityActionType": "NEW", - "classificationCode": "9014", - "ratedDisabilityId": "ABCDEFGHIJKLMNOPQRSTUVWX", - "diagnosticCode": 9020, - "isRelatedToToxicExposure": true, - "secondaryDisabilities": [ - { - "name": "Post Traumatic Stress Disorder (PTSD) Combat - Mental Disorders", - "exposureOrEventOrInjury": "EXPOSURE", - "serviceRelevance": "ABCDEFGHIJKLMNOPQ", - "disabilityActionType": "SECONDARY", - "approximateDate": "2018-03-12", - "classificationCode": "9014" + }, + "toxicExposure": { + "type": "object", + "nullable": true, + "properties": { + "gulfWarHazardService": { + "type": "object", + "nullable": true, + "description": "Toxic exposure related to the Gulf war.", + "properties": { + "servedInGulfWarHazardLocations": { + "type": "string", + "description": "Set to true if the Veteran served in any of the following Gulf War hazard locations: Iraq; Kuwait; Saudi Arabia; the neutral zone between Iraq and Saudi Arabia; Bahrain; Qatar; the United Arab Emirates; Oman; Yemen; Lebanon; Somalia; Afghanistan; Israel; Egypt; Turkey; Syria; Jordan; Djibouti; Uzbekistan; the Gulf of Aden; the Gulf of Oman; the Persian Gulf; the Arabian Sea; and the Red Sea.", + "example": "YES", + "enum": [ + "NO", + "YES" + ], + "nullable": true + }, + "serviceDates": { + "type": "object", + "nullable": true, + "description": "Date range for when the exposure happened.", + "properties": { + "beginDate": { + "type": "string", + "nullable": true, + "description": "Approximate begin date for serving in Gulf War hazard location.", + "pattern": "^(?:19|20)[0-9][0-9]$|^(?:19|20)[0-9][0-9]-(0[1-9]|1[0-2])$", + "example": "2018-06 or 2018" + }, + "endDate": { + "type": "string", + "nullable": true, + "description": "Approximate end date for serving in Gulf War hazard location.", + "pattern": "^(?:19|20)[0-9][0-9]$|^(?:19|20)[0-9][0-9]-(0[1-9]|1[0-2])$", + "example": "2018-06 or 2018" + } + } + } + } + }, + "herbicideHazardService": { + "description": "Toxic exposure related to herbicide (Agent Orange) hazards.", + "type": "object", + "nullable": true, + "properties": { + "servedInHerbicideHazardLocations": { + "type": "string", + "description": "Set to true if the Veteran served in any of the following herbicide/Agent Orange locations: Republic of Vietnam to include the 12 nautical mile territorial waters; Thailand at any United States or Royal Thai base; Laos; Cambodia at Mimot or Krek; Kampong Cham Province; Guam or American Samoa; or in the territorial waters thereof; Johnston Atoll or a ship that called at Johnston Atoll; Korean demilitarized zone; aboard (to include repeated operations and maintenance with) a C-123 aircraft known to have been used to spray an herbicide agent (during service in the Air Force and Air Force Reserves).", + "example": "YES", + "enum": [ + "NO", + "YES" + ], + "nullable": true + }, + "otherLocationsServed": { + "type": "string", + "nullable": true, + "pattern": "^$|([a-zA-Z0-9\"\\/&\\(\\)\\-'.,#\\[\\] ]([a-zA-Z0-9(\\)\\-'.,#\\[\\] ])?)+$", + "maxLength": 5000, + "description": "Other location(s) where Veteran served." + }, + "serviceDates": { + "description": "Date range for exposure in herbicide hazard location.", + "type": "object", + "nullable": true, + "properties": { + "beginDate": { + "type": "string", + "nullable": true, + "description": "Approximate begin date for serving in herbicide location.", + "pattern": "^(?:19|20)[0-9][0-9]$|^(?:19|20)[0-9][0-9]-(0[1-9]|1[0-2])$", + "example": "2018-06 or 2018" + }, + "endDate": { + "type": "string", + "nullable": true, + "description": "Approximate end date for serving in herbicide location.", + "pattern": "^(?:19|20)[0-9][0-9]$|^(?:19|20)[0-9][0-9]-(0[1-9]|1[0-2])$", + "example": "2018-06 or 2018" + } + } + } + } + }, + "additionalHazardExposures": { + "type": "object", + "nullable": true, + "description": "Additional hazardous exposures.", + "properties": { + "additionalExposures": { + "description": "Additional exposure incidents.", + "type": "array", + "nullable": true, + "uniqueItems": true, + "items": { + "type": "string", + "additionalProperties": false, + "enum": [ + "ASBESTOS", + "MUSTARD_GAS", + "RADIATION", + "SHIPBOARD_HAZARD_AND_DEFENSE", + "MILITARY_OCCUPATIONAL_SPECIALTY_RELATED_TOXIN", + "CONTAMINATED_WATER_AT_CAMP_LEJEUNE", + "OTHER" + ] + } + }, + "specifyOtherExposures": { + "type": "string", + "nullable": true, + "pattern": "^$|([a-zA-Z0-9\"\\/&\\(\\)\\-'.,#\\[\\] ]([a-zA-Z0-9(\\)\\-'.,#\\[\\] ])?)+$", + "maxLength": 5000, + "description": "Exposure to asbestos." + }, + "exposureDates": { + "type": "object", + "nullable": true, + "description": "Date range for when the exposure happened.", + "properties": { + "beginDate": { + "type": "string", + "nullable": true, + "description": "Approximate begin date for exposure.", + "pattern": "^(?:19|20)[0-9][0-9]$|^(?:19|20)[0-9][0-9]-(0[1-9]|1[0-2])$", + "example": "2018-06 or 2018" + }, + "endDate": { + "type": "string", + "nullable": true, + "description": "Approximate end date for exposure.", + "pattern": "^(?:19|20)[0-9][0-9]$|^(?:19|20)[0-9][0-9]-(0[1-9]|1[0-2])$", + "example": "2018-06 or 2018" + } + } + } + } + }, + "multipleExposures": { + "type": "array", + "nullable": true, + "minItems": 1, + "uniqueItems": true, + "items": { + "type": "object", + "additionalProperties": false, + "properties": { + "hazardExposedTo": { + "type": "string", + "nullable": true, + "pattern": "^([-a-zA-Z0-9'.,&# ])+$", + "maxLength": 1000, + "description": "Hazard the Veteran was exposed to." + }, + "exposureLocation": { + "type": "string", + "nullable": true, + "pattern": "^$|([a-zA-Z0-9\"\\/&\\(\\)\\-'.,#\\[\\] ]([a-zA-Z0-9(\\)\\-'.,#\\[\\] ])?)+$", + "maxLength": 1000, + "description": "Location where the exposure happened." + }, + "exposureDates": { + "type": "object", + "nullable": true, + "description": "Date range for when the exposure happened.", + "properties": { + "beginDate": { + "type": "string", + "nullable": true, + "description": "Approximate begin date for exposure.", + "pattern": "^(?:19|20)[0-9][0-9]$|^(?:19|20)[0-9][0-9]-(0[1-9]|1[0-2])$", + "example": "2018-06 or 2018" + }, + "endDate": { + "type": "string", + "nullable": true, + "description": "Approximate end date for exposure.", + "pattern": "^(?:19|20)[0-9][0-9]$|^(?:19|20)[0-9][0-9]-(0[1-9]|1[0-2])$", + "example": "2018-06 or 2018" + } + } + } + } + } + } } - ] - }, - { - "name": "Cancer - Musculoskeletal - Elbow", - "exposureOrEventOrInjury": "EXPOSURE", - "approximateDate": "2018-03-02", - "serviceRelevance": "ABCDEFG", - "disabilityActionType": "NEW", - "classificationCode": "9014", - "ratedDisabilityId": "ABCDEFGHIJKLMNOPQRSTUVWX", - "diagnosticCode": 249470, - "isRelatedToToxicExposure": true - }, - { - "name": "Cancer - Musculoskeletal - Knee", - "exposureOrEventOrInjury": "EXPOSURE", - "approximateDate": "2015", - "serviceRelevance": "ABCDEFG", - "disabilityActionType": "NEW", - "classificationCode": "9014", - "ratedDisabilityId": "ABCDEFGHIJKLMNOPQRSTUVWX", - "diagnosticCode": 249470, - "isRelatedToToxicExposure": true - } - ], - "treatments": [ - { - "beginDate": "2009-03", - "treatedDisabilityNames": [ - "Traumatic Brain Injury", - "Post Traumatic Stress Disorder (PTSD) Combat - Mental Disorders", - "Cancer - Musculoskeletal - Elbow" - ], - "center": { - "name": "Center One", - "city": "Decatur", - "state": "GA" - } - } - ], - "serviceInformation": { - "alternateNames": [ - "john jacob", - "johnny smith" - ], - "servicePeriods": [ - { - "serviceBranch": "Public Health Service", - "serviceComponent": "Active", - "activeDutyBeginDate": "2008-11-14", - "activeDutyEndDate": "2023-10-30" - } - ], - "servedInActiveCombatSince911": "NO", - "reservesNationalGuardService": { - "component": "National Guard", - "obligationTermsOfService": { - "beginDate": "2019-06-04", - "endDate": "2020-06-04" }, - "unitName": "National Guard Unit Name", - "unitAddress": "1243 pine court", - "unitPhone": { - "areaCode": "555", - "phoneNumber": "5555555" + "disabilities": { + "description": "Any current disabilities or symptoms the Veteran is claiming are related to their military service and/or are service-connected.", + "type": "array", + "minItems": 1, + "items": { + "type": "object", + "additionalProperties": false, + "required": [ + "disabilityActionType", + "name" + ], + "properties": { + "name": { + "description": "Name of the disability. The /disabilities endpoint on the [Benefits Reference Data API](https://developer.va.gov/explore/benefits/docs/benefits_reference_data?version=current) may be used to retrieve possible disability names.", + "type": "string", + "pattern": "^$|([a-zA-Z0-9\"\\/&\\(\\)\\-'.,#\\[\\] ]([a-zA-Z0-9(\\)\\-'.,#\\[\\] ])?)+$", + "example": "PTSD (post traumatic stress disorder)", + "maxLength": 255 + }, + "exposureOrEventOrInjury": { + "type": "string", + "description": "What caused the disability?", + "nullable": true, + "maxLength": 1000, + "examples": [ + "Agent Orange", + "radiation", + "burn pits" + ] + }, + "serviceRelevance": { + "description": "Explanation of how the disability(ies) relates to the in-service event/exposure/injury. If the disabilityActionType is 'NEW', the serviceRelevance is required.", + "type": "string", + "nullable": true, + "maxLength": 1000, + "example": "Heavy equipment operator in service." + }, + "approximateDate": { + "description": "Approximate date disability began. Date must be in the past. \n Format can be either YYYY-MM-DD or YYYY-MM or YYYY", + "type": "string", + "pattern": "^(?:[0-9]{4}(?:-(?!00)(?:0[1-9]|1[0-2])(?:-(?:0[1-9]|[1-2][0-9]|3[0-1]))?)?)$", + "example": "2018-03-02 or 2018-03 or 2018", + "nullable": true + }, + "disabilityActionType": { + "description": "Action type requested for the disability. If 'INCREASE' or 'NONE', then 'ratedDisabilityId' and 'diagnosticCode' should be included. 'NONE' should be used when including a secondary disability.", + "type": "string", + "enum": [ + "NONE", + "NEW", + "INCREASE" + ], + "example": "NEW" + }, + "classificationCode": { + "type": "string", + "description": "Classification code for the associated body system. Must match an active code returned by the /disabilities endpoint on the [Benefits Reference Data API](https://developer.va.gov/explore/benefits/docs/benefits_reference_data?version=current).", + "example": "249470", + "nullable": true + }, + "ratedDisabilityId": { + "description": "When submitting a contention with action type 'INCREASE', the previously rated disability id may be included.", + "type": "string", + "example": "1100583", + "nullable": true + }, + "diagnosticCode": { + "description": "If the disabilityActionType is 'NONE' or 'INCREASE', the diagnosticCode should correspond to an existing rated disability.", + "type": "integer", + "example": 9999, + "nullable": true + }, + "isRelatedToToxicExposure": { + "type": "boolean", + "description": "Is the disability related to toxic exposures? If true, related 'toxicExposure' must be included.", + "example": true, + "default": false, + "nullable": true + }, + "specialIssues": { + "type": "array", + "nullable": true, + "uniqueItems": true, + "items": { + "maxItems": 2, + "additionalProperties": false, + "type": "string", + "enum": [ + "POW", + "EMP" + ] + } + }, + "secondaryDisabilities": { + "description": "If secondaryDisability is included, the following attributes are required: 'secondaryDisability.name', 'secondaryDisability.disabilityActionType' and 'secondaryDisability.serviceRelevance'", + "type": "array", + "items": { + "type": "object", + "additionalProperties": false, + "properties": { + "name": { + "description": "Name of the disability. The /disabilities endpoint on the [Benefits Reference Data API](https://developer.va.gov/explore/benefits/docs/benefits_reference_data?version=current) may be used to retrieve possible disability names.", + "type": "string", + "pattern": "^$|([a-zA-Z0-9\"\\/&\\(\\)\\-'.,# ]([a-zA-Z0-9(\\)\\-'.,#\\[\\] ])?)+$", + "example": "PTSD (post traumatic stress disorder)", + "maxLength": 255 + }, + "exposureOrEventOrInjury": { + "type": "string", + "description": "What caused the disability?", + "nullable": true, + "maxLength": 1000, + "examples": [ + "Agent Orange", + "radiation", + "burn pits" + ] + }, + "serviceRelevance": { + "description": "Explanation of how the disability(ies) relates to the in-service event/exposure/injury.", + "type": "string", + "nullable": true, + "maxLength": 1000, + "example": "Heavy equipment operator in service." + }, + "disabilityActionType": { + "description": "The status of the secondary disability.", + "type": "string", + "example": "SECONDARY", + "enum": [ + "SECONDARY" + ] + }, + "approximateDate": { + "description": "Approximate date disability began. Date must be in the past. \n Format can be either YYYY-MM-DD or YYYY-MM or YYYY", + "type": "string", + "pattern": "^(?:[0-9]{4}(?:-(?!00)(?:0[1-9]|1[0-2])(?:-(?:0[1-9]|[1-2][0-9]|3[0-1]))?)?)$", + "example": "2018-03-02 or 2018-03 or 2018", + "nullable": true + }, + "classificationCode": { + "type": "string", + "description": "Classification code for the associated body system. Must match an active code returned by the /disabilities endpoint on the [Benefits Reference Data API](https://developer.va.gov/explore/benefits/docs/benefits_reference_data?version=current).", + "example": "249470", + "nullable": true + } + } + } + } + } + } }, - "receivingInactiveDutyTrainingPay": "YES" - }, - "confinements": [ - { - "approximateBeginDate": "2018-06-04", - "approximateEndDate": "2018-07-04" + "treatments": { + "description": "Identifies the Service Treatment information of the Veteran. The combination of treatedDisabilityName, center name, center city, and center state must be less than 1000 characters to successfully generate a PDF.", + "type": "array", + "nullable": true, + "uniqueItems": true, + "items": { + "type": "object", + "additionalProperties": false, + "properties": { + "beginDate": { + "description": "Begin date for treatment. If treatment began from 2005 to present, you do not need to provide dates. Each treatment begin date must be after the first 'servicePeriod.activeDutyBeginDate'.", + "type": "string", + "pattern": "^(?:19|20)[0-9][0-9]$|^(?:19|20)[0-9][0-9]-(0[1-9]|1[0-2])$", + "example": "2018-06 or 2018", + "nullable": true + }, + "treatedDisabilityNames": { + "description": "Name(s) of disabilities treated in this time frame.", + "type": "array", + "nullable": true, + "maxItems": 101, + "items": { + "type": "string", + "additionalProperties": false, + "example": [ + "PTSD (post traumatic stress disorder)", + "Trauma" + ] + } + }, + "center": { + "description": "VA Medical Center(s) and Department of Defense Military Treatment Facilities where the Veteran received treatment after discharge for any claimed disabilities.", + "type": "object", + "nullable": true, + "additionalProperties": false, + "properties": { + "name": { + "description": "Name of facility Veteran was treated in. The /treatment-centers endpoint on the [Benefits Reference Data API](https://developer.va.gov/explore/benefits/docs/benefits_reference_data?version=current) may be used to retrieve possible treatment center names.", + "type": "string", + "nullable": true, + "pattern": "([a-zA-Z0-9\"/&()\\'-'.,# ]([a-zA-Z0-9()\\'-'.,# ])?)+$", + "example": "Private Facility 2", + "minLength": 1, + "maxLength": 100 + }, + "city": { + "description": "City of treatment facility.", + "type": "string", + "pattern": "([a-zA-Z0-9\\-'.# ]([a-zA-Z0-9\\-'.# ])?)+$", + "example": "Portland", + "nullable": true, + "minLength": 0, + "maxLength": 30 + }, + "state": { + "description": "State of treatment facility.", + "type": "string", + "pattern": "^$|^[a-z,A-Z]{2}$", + "example": "OR", + "nullable": true + } + } + } + } + } }, - { - "approximateBeginDate": "2020-06", - "approximateEndDate": "2020-07" - } - ] - }, - "servicePay": { - "receivingMilitaryRetiredPay": "NO", - "futureMilitaryRetiredPay": "YES", - "futureMilitaryRetiredPayExplanation": "ABCDEFGHIJKLMNOPQRSTUVW", - "militaryRetiredPay": { - "branchOfService": "Army", - "monthlyAmount": 840 - }, - "retiredStatus": "PERMANENT_DISABILITY_RETIRED_LIST", - "favorMilitaryRetiredPay": false, - "receivedSeparationOrSeverancePay": "NO", - "separationSeverancePay": { - "datePaymentReceived": "2022-03-12", - "branchOfService": "Naval Academy", - "preTaxAmountReceived": 379 - }, - "favorTrainingPay": true - }, - "directDeposit": { - "noAccount": false, - "accountNumber": "ABCDEF", - "accountType": "CHECKING", - "financialInstitutionName": "Chase", - "routingNumber": "123123123" - }, - "claimantCertification": true - } - } - } - }, - "Transaction ID": { - "value": { - "meta": { - "transactionId": "00000000-0000-0000-0000-000000000000" - }, - "data": { - "type": "form/526", - "attributes": { - "claimProcessType": "STANDARD_CLAIM_PROCESS", - "claimNotes": "Some things that are important to know, and are not included in any other place.", - "veteranIdentification": { - "serviceNumber": "123456789", - "veteranNumber": { - "telephone": "5555555555", - "internationalTelephone": "+44 20 1234 5678" - }, - "mailingAddress": { - "addressLine1": "1234 Couch Street", - "addressLine2": "Unit 4", - "addressLine3": "Room 1", - "city": "Schenectady", - "state": "NY", - "country": "USA", - "zipFirstFive": "12345", - "zipLastFour": "1234" - }, - "emailAddress": { - "email": "valid@somedomain.com", - "agreeToEmailRelatedToClaim": true - }, - "currentVaEmployee": false - }, - "changeOfAddress": { - "typeOfAddressChange": "TEMPORARY", - "addressLine1": "10 Peach St", - "addressLine2": "Unit 4", - "addressLine3": "Room 1", - "city": "Schenectady", - "state": "NY", - "country": "USA", - "zipFirstFive": "12345", - "zipLastFour": "9897", - "dates": { - "beginDate": "2023-06-04", - "endDate": "2023-12-04" - } - }, - "homeless": { - "isCurrentlyHomeless": true, - "currentlyHomeless": { - "homelessSituationOptions": "FLEEING_CURRENT_RESIDENCE", - "otherDescription": "ABCDEFGHIJKLM" - }, - "isAtRiskOfBecomingHomeless": false, - "pointOfContact": "john stewart", - "pointOfContactNumber": { - "telephone": "5555555555", - "internationalTelephone": "+44 20 1234 5678" - } - }, - "toxicExposure": { - "gulfWarHazardService": { - "servedInGulfWarHazardLocations": "YES", - "serviceDates": { - "beginDate": "2018-07", - "endDate": "2018-08" - } - }, - "herbicideHazardService": { - "servedInHerbicideHazardLocations": "YES", - "otherLocationsServed": "ABCDEFGHIJKLM", - "serviceDates": { - "beginDate": "2018-07", - "endDate": "2018-08" - } - }, - "additionalHazardExposures": { - "additionalExposures": [ - "ASBESTOS", - "SHIPBOARD_HAZARD_AND_DEFENSE" - ], - "specifyOtherExposures": "Other exposure details", - "exposureDates": { - "beginDate": "2018-07", - "endDate": "2018-08" - } - }, - "multipleExposures": [ - { - "hazardExposedTo": "RADIATION", - "exposureLocation": "Guam", - "exposureDates": { - "beginDate": "2012-12", - "endDate": "2013-07" + "serviceInformation": { + "type": "object", + "additionalProperties": false, + "required": [ + "servicePeriods" + ], + "properties": { + "alternateNames": { + "description": "List any other names under which the Veteran served, if applicable.", + "type": "array", + "nullable": true, + "maxItems": 100, + "uniqueItems": true, + "items": { + "type": "string", + "additionalProperties": false, + "examples": [ + "jane", + "janey lee", + "jane lee MacDonald" + ] + } + }, + "servicePeriods": { + "description": "Identifies the Service dates and Branch the Veteran served in.", + "type": "array", + "minItems": 1, + "items": { + "type": "object", + "required": [ + "serviceBranch", + "serviceComponent", + "activeDutyBeginDate", + "activeDutyEndDate" + ], + "properties": { + "serviceBranch": { + "description": "Branch of service during period. The /service-branches endpoint on the [Benefits Reference Data API](https://developer.va.gov/explore/benefits/docs/benefits_reference_data?version=current) may be used to retrieve list of possible service branches.", + "type": "string", + "maxLength": 1000, + "example": "Air Force" + }, + "serviceComponent": { + "type": "string", + "description": "", + "enum": [ + "Active", + "Reserves", + "National Guard" + ] + }, + "activeDutyBeginDate": { + "description": "Date started active duty.", + "type": "string", + "pattern": "^(?:[0-9]{4})-(?:0[1-9]|1[0-2])-(?:0[1-9]|[1-2][0-9]|3[0-1])$", + "example": "2018-06-06" + }, + "activeDutyEndDate": { + "description": "Date completed active duty.", + "type": "string", + "pattern": "^(?:[0-9]{4})-(?:0[1-9]|1[0-2])-(?:0[1-9]|[1-2][0-9]|3[0-1])$", + "example": "2018-06-06" + }, + "separationLocationCode": { + "description": "Location code for the facility the Veteran plans to separate from. Code must match the values returned by the /intake-sites endpoint on the [Benefits reference Data API](https://developer.va.gov/explore/benefits/docs/benefits_reference_data?version=current).", + "type": "string", + "nullable": true, + "example": "98283" + } + } + } + }, + "servedInActiveCombatSince911": { + "type": "string", + "enum": [ + "YES", + "NO" + ], + "description": "Did Veteran serve in a combat zone since 9-11-2001?", + "example": "YES", + "nullable": true + }, + "reservesNationalGuardService": { + "type": "object", + "nullable": true, + "additionalProperties": false, + "properties": { + "component": { + "type": "string", + "nullable": true, + "description": "", + "enum": [ + "Reserves", + "National Guard" + ] + }, + "obligationTermsOfService": { + "type": "object", + "nullable": true, + "description": "If 'obligationTermsOfService' is included, the following attributes are required: 'beginDate ' and 'endDate'.", + "additionalProperties": false, + "properties": { + "beginDate": { + "type": "string", + "nullable": true, + "pattern": "^(?:[0-9]{4})-(?:0[1-9]|1[0-2])-(?:0[1-9]|[1-2][0-9]|3[0-1])$", + "example": "2018-06-06" + }, + "endDate": { + "type": "string", + "nullable": true, + "pattern": "^(?:[0-9]{4})-(?:0[1-9]|1[0-2])-(?:0[1-9]|[1-2][0-9]|3[0-1])$", + "example": "2018-06-06" + } + } + }, + "unitName": { + "type": "string", + "nullable": true, + "maxLength": 1000, + "pattern": "^$|([a-zA-Z0-9\\-'.,# ][a-zA-Z0-9\\-'.,# ]?)*$" + }, + "unitAddress": { + "type": "string", + "maxLength": 1000, + "pattern": "^$|^([-a-zA-Z0-9'.,&# ])+$", + "nullable": true + }, + "unitPhone": { + "type": "object", + "nullable": true, + "additionalProperties": false, + "properties": { + "areaCode": { + "type": "string", + "nullable": true, + "maxLength": 3, + "pattern": "^$|^\\d{3}$", + "example": "555" + }, + "phoneNumber": { + "type": "string", + "nullable": true, + "maxLength": 20, + "example": "5555555" + } + } + }, + "receivingInactiveDutyTrainingPay": { + "type": "string", + "enum": [ + "YES", + "NO" + ], + "nullable": true, + "example": "YES" + } + } + }, + "federalActivation": { + "description": "If federalActivation is present then reservesNationalGuardService.obligationTermsOfService.beginDate, reservesNationalGuardService.obligationTermsOfService.endDate and reservesNationalGuardService.unitName are required", + "type": "object", + "nullable": true, + "additionalProperties": false, + "properties": { + "activationDate": { + "description": "Date cannot be in the future and must be after the earliest servicePeriod.activeDutyBeginDate.", + "type": "string", + "pattern": "^(?:[0-9]{4})-(?:0[1-9]|1[0-2])-(?:0[1-9]|[1-2][0-9]|3[0-1])$", + "example": "2018-06-06", + "nullable": true + }, + "anticipatedSeparationDate": { + "description": "Anticipated date of separation. Date must be in the future.", + "type": "string", + "pattern": "^(?:[0-9]{4})-(?:0[1-9]|1[0-2])-(?:0[1-9]|[1-2][0-9]|3[0-1])$", + "example": "2018-06-06", + "nullable": true + } + } + }, + "confinements": { + "type": "array", + "nullable": true, + "uniqueItems": true, + "items": { + "additionalProperties": false, + "type": "object", + "properties": { + "approximateBeginDate": { + "description": "The approximateBeginDate must be after the earliest servicePeriod activeDutyBeginDate.", + "type": "string", + "nullable": false, + "pattern": "^(?:[0-9]{4})-(?:0[1-9]|1[0-2])-(?:0[1-9]|[1-2][0-9]|3[0-1])$|(?:[0-9]{4})-(?:0[1-9]|1[0-2])$", + "example": "2018-06-06 or 2018-06" + }, + "approximateEndDate": { + "type": "string", + "nullable": false, + "pattern": "^(?:[0-9]{4})-(?:0[1-9]|1[0-2])-(?:0[1-9]|[1-2][0-9]|3[0-1])$|(?:[0-9]{4})-(?:0[1-9]|1[0-2])$", + "example": "2018-06-06 or 2018-06" + } + } + } + } } - } - ] - }, - "disabilities": [ - { - "name": "Traumatic Brain Injury", - "exposureOrEventOrInjury": "EXPOSURE", - "serviceRelevance": "ABCDEFG", - "approximateDate": "2018-03-11", - "disabilityActionType": "NEW", - "classificationCode": "9014", - "ratedDisabilityId": "ABCDEFGHIJKLMNOPQRSTUVWX", - "diagnosticCode": 9020, - "isRelatedToToxicExposure": true, - "secondaryDisabilities": [ - { - "name": "Post Traumatic Stress Disorder (PTSD) Combat - Mental Disorders", - "exposureOrEventOrInjury": "EXPOSURE", - "serviceRelevance": "ABCDEFGHIJKLMNOPQ", - "disabilityActionType": "SECONDARY", - "approximateDate": "2018-03-12", - "classificationCode": "9014" + }, + "servicePay": { + "type": "object", + "nullable": true, + "additionalProperties": false, + "properties": { + "receivingMilitaryRetiredPay": { + "description": "Is the Veteran receiving military retired pay?", + "type": "string", + "enum": [ + "YES", + "NO" + ], + "example": "YES", + "nullable": true + }, + "futureMilitaryRetiredPay": { + "description": "Will the Veteran receive military retired pay pay in future? \n If true, then 'futurePayExplanation' is required.", + "type": "string", + "enum": [ + "YES", + "NO" + ], + "example": "YES", + "nullable": true + }, + "futureMilitaryRetiredPayExplanation": { + "description": "Explains why future pay will be received.", + "type": "string", + "maxLength": 1000, + "example": "Will be retiring soon.", + "nullable": true + }, + "militaryRetiredPay": { + "type": "object", + "nullable": true, + "description": "", + "properties": { + "branchOfService": { + "description": "Branch of service. The /service-branches endpoint on the [Benefits Reference Data API](https://developer.va.gov/explore/benefits/docs/benefits_reference_data?version=current) may be used to retrieve list of possible service branches.", + "type": "string", + "maxLength": 1000, + "nullable": true, + "example": "Air Force" + }, + "monthlyAmount": { + "description": "Amount being received.", + "type": "integer", + "nullable": true, + "minimum": 1, + "maximum": 999999, + "example": 100 + } + } + }, + "retiredStatus": { + "type": "string", + "nullable": true, + "description": "", + "enum": [ + "RETIRED", + "TEMPORARY_DISABILITY_RETIRED_LIST", + "PERMANENT_DISABILITY_RETIRED_LIST" + ] + }, + "favorMilitaryRetiredPay": { + "description": "Is the Veteran waiving VA benefits to retain military retired pay? See item 26 on form 21-526EZ for more details.", + "type": "boolean", + "nullable": true, + "example": true, + "default": false + }, + "receivedSeparationOrSeverancePay": { + "description": "Has the Veteran ever received separation pay, disability severance pay, or any other lump sum payment from their branch of service?", + "type": "string", + "enum": [ + "YES", + "NO" + ], + "example": "YES", + "nullable": true + }, + "separationSeverancePay": { + "type": "object", + "nullable": true, + "description": "", + "properties": { + "datePaymentReceived": { + "description": "Approximate date separation pay was received. \n Format can be either YYYY-MM-DD or YYYY-MM or YYYY", + "type": "string", + "pattern": "^(?:[0-9]{4})-(?:0[1-9]|1[0-2])-(?:0[1-9]|[1-2][0-9]|3[0-1])$|(?:[0-9]{4})$|(?:[0-9]{4})-(?:0[1-9]|1[0-2])$", + "example": "2018-03-02 or 2018-03 or 2018" + }, + "branchOfService": { + "description": "Branch of service. The /service-branches endpoint on the [Benefits Reference Data API](https://developer.va.gov/explore/benefits/docs/benefits_reference_data?version=current) may be used to retrieve list of possible service branches.", + "type": "string", + "nullable": true, + "maxLength": 1000, + "example": "Air Force" + }, + "preTaxAmountReceived": { + "description": "Amount being received.", + "type": "integer", + "nullable": true, + "minimum": 1, + "maximum": 999999, + "example": 100 + } + } + }, + "favorTrainingPay": { + "description": "Is the Veteran waiving VA benefits to retain training pay? See item 28 on form 21-526EZ for more details. ", + "type": "boolean", + "nullable": true, + "example": true, + "default": false + } } - ] - }, - { - "name": "Cancer - Musculoskeletal - Elbow", - "exposureOrEventOrInjury": "EXPOSURE", - "approximateDate": "2018-03-02", - "serviceRelevance": "ABCDEFG", - "disabilityActionType": "NEW", - "classificationCode": "9014", - "ratedDisabilityId": "ABCDEFGHIJKLMNOPQRSTUVWX", - "diagnosticCode": 249470, - "isRelatedToToxicExposure": true - }, - { - "name": "Cancer - Musculoskeletal - Knee", - "exposureOrEventOrInjury": "EXPOSURE", - "approximateDate": "2015", - "serviceRelevance": "ABCDEFG", - "disabilityActionType": "NEW", - "classificationCode": "9014", - "ratedDisabilityId": "ABCDEFGHIJKLMNOPQRSTUVWX", - "diagnosticCode": 249470, - "isRelatedToToxicExposure": true - } - ], - "treatments": [ - { - "beginDate": "2009-03", - "treatedDisabilityNames": [ - "Traumatic Brain Injury", - "Post Traumatic Stress Disorder (PTSD) Combat - Mental Disorders", - "Cancer - Musculoskeletal - Elbow" - ], - "center": { - "name": "Center One", - "city": "Decatur", - "state": "GA" - } - } - ], - "serviceInformation": { - "alternateNames": [ - "john jacob", - "johnny smith" - ], - "servicePeriods": [ - { - "serviceBranch": "Public Health Service", - "serviceComponent": "Active", - "activeDutyBeginDate": "2008-11-14", - "activeDutyEndDate": "2024-12-06", - "separationLocationCode": "98282" - } - ], - "servedInActiveCombatSince911": "NO", - "reservesNationalGuardService": { - "component": "National Guard", - "obligationTermsOfService": { - "beginDate": "2019-06-04", - "endDate": "2020-06-04" - }, - "unitName": "National Guard Unit Name", - "unitAddress": "1243 pine court", - "unitPhone": { - "areaCode": "555", - "phoneNumber": "5555555" - }, - "receivingInactiveDutyTrainingPay": "YES" - }, - "federalActivation": { - "activationDate": "2023-10-01", - "anticipatedSeparationDate": "2024-12-06" - }, - "confinements": [ - { - "approximateBeginDate": "2018-06-04", - "approximateEndDate": "2018-07-04" }, - { - "approximateBeginDate": "2020-06", - "approximateEndDate": "2020-07" - } - ] - }, - "servicePay": { - "receivingMilitaryRetiredPay": "NO", - "futureMilitaryRetiredPay": "YES", - "futureMilitaryRetiredPayExplanation": "ABCDEFGHIJKLMNOPQRSTUVW", - "militaryRetiredPay": { - "branchOfService": "Army", - "monthlyAmount": 840 - }, - "retiredStatus": "PERMANENT_DISABILITY_RETIRED_LIST", - "favorMilitaryRetiredPay": false, - "receivedSeparationOrSeverancePay": "NO", - "separationSeverancePay": { - "datePaymentReceived": "2022-03-12", - "branchOfService": "Naval Academy", - "preTaxAmountReceived": 379 - }, - "favorTrainingPay": true - }, - "directDeposit": { - "noAccount": false, - "accountNumber": "ABCDEF", - "accountType": "CHECKING", - "financialInstitutionName": "Chase", - "routingNumber": "123123123" - }, - "claimantCertification": true - } - } - } - } - } - } - } - } - } - }, - "/veterans/{veteranId}/526/validate": { - "post": { - "summary": "Validates a 526 claim form submission.", - "tags": [ - "Disability Compensation Claims" - ], - "operationId": "post526ClaimValidate", - "security": [ - { - "productionOauth": [ - "system/claim.read", - "system/claim.write" - ] - }, - { - "sandboxOauth": [ - "system/claim.read", - "system/claim.write" - ] - }, - { - "bearer_token": [ - - ] - } - ], - "description": "Validates a request for a disability compensation claim submission (21-526EZ).\nThis endpoint can be used to test the request parameters for your /526 submission.\n", - "parameters": [ - { - "name": "veteranId", - "in": "path", - "required": true, - "example": "1012667145V762142", - "description": "ID of Veteran", - "schema": { - "type": "string" - } - } - ], - "responses": { - "200": { - "description": "Successful response with disability", - "content": { - "application/json": { - "example": { - "data": { - "type": "claims_api_auto_established_claim_validation", - "attributes": { - "status": "valid" - } - } - }, - "schema": { - "$schema": "http://json-schema.org/draft-04/schema#", - "type": "object", - "required": [ - "data" - ], - "properties": { - "data": { - "type": "object", - "additionalProperties": false, - "required": [ - "type", - "attributes" - ], - "properties": { - "type": { - "type": "string" - }, - "attributes": { - "type": "object", - "additionalProperties": false, - "required": [ - "status" - ], - "properties": { - "status": { + "directDeposit": { + "type": "object", + "nullable": true, + "additionalProperties": false, + "description": "If direct deposit information is included, the following attributes are required: accountType, accountNumber, routingNumber.", + "properties": { + "noAccount": { + "type": "boolean", + "nullable": true, + "description": "Claimant certifies that they do not have an account with a financial institution or certified payment agent.", + "default": false + }, + "accountNumber": { + "description": "Account number for the direct deposit.", + "pattern": "^(?:[a-zA-Z0-9-]{4,1000})?$", + "type": "string", + "maxLength": 1000, + "nullable": true, + "example": "123123123123" + }, + "accountType": { + "description": "Account type for the direct deposit.", + "type": "string", + "nullable": true, + "example": "CHECKING", + "enum": [ + "CHECKING", + "SAVINGS" + ] + }, + "financialInstitutionName": { + "description": "Provide the name of the financial institution where the Veteran wants the direct deposit.", + "maxLength": 1000, + "type": "string", + "nullable": true, + "example": "Some Bank" + }, + "routingNumber": { + "description": "Routing number for the direct deposit.", + "type": "string", + "maxLength": 1000, + "nullable": true, + "pattern": "^$|^\\d{0,1000}$", + "example": "123123123" + } + } + }, + "claimantCertification": { + "type": "boolean", + "description": "Claimant certifies and authorizes release of information.", + "default": false + }, + "claimNotes": { "type": "string", - "enum": [ - "valid" - ], - "description": "Return whether or not whether or not the payload is valid" + "description": "An optional notes section.", + "maxLength": 4000 + }, + "claimId": { + "type": "string", + "example": "600517517" } } } @@ -8325,41 +2793,59 @@ "description": "Unprocessable entity", "content": { "application/json": { - "example": { - "errors": [ - { - "title": "Unprocessable entity", - "detail": "The property / did not contain the required key claimProcessType", - "status": "422", - "source": { - "pointer": "data/attributes/" - } - }, - { - "title": "Unprocessable entity", - "detail": "The property / did not contain the required key disabilities", - "status": "422", - "source": { - "pointer": "data/attributes/" - } - }, - { - "title": "Unprocessable entity", - "detail": "The property / did not contain the required key serviceInformation", - "status": "422", - "source": { - "pointer": "data/attributes/" - } - }, - { - "title": "Unprocessable entity", - "detail": "The property / did not contain the required key veteranIdentification", - "status": "422", - "source": { - "pointer": "data/attributes/" - } + "examples": { + "Violates JSON Schema": { + "value": { + "errors": [ + { + "title": "Unprocessable entity", + "detail": "The property / did not contain the required key claimProcessType", + "status": "422", + "source": { + "pointer": "data/attributes/" + } + }, + { + "title": "Unprocessable entity", + "detail": "The property / did not contain the required key disabilities", + "status": "422", + "source": { + "pointer": "data/attributes/" + } + }, + { + "title": "Unprocessable entity", + "detail": "The property / did not contain the required key serviceInformation", + "status": "422", + "source": { + "pointer": "data/attributes/" + } + }, + { + "title": "Unprocessable entity", + "detail": "The property / did not contain the required key veteranIdentification", + "status": "422", + "source": { + "pointer": "data/attributes/" + } + } + ] } - ] + }, + "Not a JSON Object": { + "value": { + "errors": [ + { + "title": "Unprocessable entity", + "status": "422", + "detail": "The request body is not a valid JSON object: This is not valid JSON", + "source": { + "pointer": null + } + } + ] + } + } }, "schema": { "required": [ @@ -9359,1389 +3845,2581 @@ "example": "2018-06-06", "nullable": true }, - "anticipatedSeparationDate": { - "description": "Anticipated date of separation. Date must be in the future.", - "type": "string", - "pattern": "^(?:[0-9]{4})-(?:0[1-9]|1[0-2])-(?:0[1-9]|[1-2][0-9]|3[0-1])$", - "example": "2018-06-06", - "nullable": true + "anticipatedSeparationDate": { + "description": "Anticipated date of separation. Date must be in the future.", + "type": "string", + "pattern": "^(?:[0-9]{4})-(?:0[1-9]|1[0-2])-(?:0[1-9]|[1-2][0-9]|3[0-1])$", + "example": "2018-06-06", + "nullable": true + } + } + }, + "confinements": { + "type": "array", + "nullable": true, + "uniqueItems": true, + "items": { + "additionalProperties": false, + "type": "object", + "properties": { + "approximateBeginDate": { + "description": "The approximateBeginDate must be after the earliest servicePeriod activeDutyBeginDate.", + "type": "string", + "nullable": false, + "pattern": "^(?:[0-9]{4})-(?:0[1-9]|1[0-2])-(?:0[1-9]|[1-2][0-9]|3[0-1])$|(?:[0-9]{4})-(?:0[1-9]|1[0-2])$", + "example": "2018-06-06 or 2018-06" + }, + "approximateEndDate": { + "type": "string", + "nullable": false, + "pattern": "^(?:[0-9]{4})-(?:0[1-9]|1[0-2])-(?:0[1-9]|[1-2][0-9]|3[0-1])$|(?:[0-9]{4})-(?:0[1-9]|1[0-2])$", + "example": "2018-06-06 or 2018-06" + } + } + } + } + } + }, + "servicePay": { + "type": "object", + "nullable": true, + "additionalProperties": false, + "properties": { + "receivingMilitaryRetiredPay": { + "description": "Is the Veteran receiving military retired pay?", + "type": "string", + "enum": [ + "YES", + "NO" + ], + "example": "YES", + "nullable": true + }, + "futureMilitaryRetiredPay": { + "description": "Will the Veteran receive military retired pay pay in future? \n If true, then 'futurePayExplanation' is required.", + "type": "string", + "enum": [ + "YES", + "NO" + ], + "example": "YES", + "nullable": true + }, + "futureMilitaryRetiredPayExplanation": { + "description": "Explains why future pay will be received.", + "type": "string", + "maxLength": 1000, + "example": "Will be retiring soon.", + "nullable": true + }, + "militaryRetiredPay": { + "type": "object", + "nullable": true, + "description": "", + "properties": { + "branchOfService": { + "description": "Branch of service. The /service-branches endpoint on the [Benefits Reference Data API](https://developer.va.gov/explore/benefits/docs/benefits_reference_data?version=current) may be used to retrieve list of possible service branches.", + "type": "string", + "maxLength": 1000, + "nullable": true, + "example": "Air Force" + }, + "monthlyAmount": { + "description": "Amount being received.", + "type": "integer", + "nullable": true, + "minimum": 1, + "maximum": 999999, + "example": 100 + } + } + }, + "retiredStatus": { + "type": "string", + "nullable": true, + "description": "", + "enum": [ + "RETIRED", + "TEMPORARY_DISABILITY_RETIRED_LIST", + "PERMANENT_DISABILITY_RETIRED_LIST" + ] + }, + "favorMilitaryRetiredPay": { + "description": "Is the Veteran waiving VA benefits to retain military retired pay? See item 26 on form 21-526EZ for more details.", + "type": "boolean", + "nullable": true, + "example": true, + "default": false + }, + "receivedSeparationOrSeverancePay": { + "description": "Has the Veteran ever received separation pay, disability severance pay, or any other lump sum payment from their branch of service?", + "type": "string", + "enum": [ + "YES", + "NO" + ], + "example": "YES", + "nullable": true + }, + "separationSeverancePay": { + "type": "object", + "nullable": true, + "description": "", + "properties": { + "datePaymentReceived": { + "description": "Approximate date separation pay was received. \n Format can be either YYYY-MM-DD or YYYY-MM or YYYY", + "type": "string", + "pattern": "^(?:[0-9]{4})-(?:0[1-9]|1[0-2])-(?:0[1-9]|[1-2][0-9]|3[0-1])$|(?:[0-9]{4})$|(?:[0-9]{4})-(?:0[1-9]|1[0-2])$", + "example": "2018-03-02 or 2018-03 or 2018" + }, + "branchOfService": { + "description": "Branch of service. The /service-branches endpoint on the [Benefits Reference Data API](https://developer.va.gov/explore/benefits/docs/benefits_reference_data?version=current) may be used to retrieve list of possible service branches.", + "type": "string", + "nullable": true, + "maxLength": 1000, + "example": "Air Force" + }, + "preTaxAmountReceived": { + "description": "Amount being received.", + "type": "integer", + "nullable": true, + "minimum": 1, + "maximum": 999999, + "example": 100 } } }, - "confinements": { - "type": "array", + "favorTrainingPay": { + "description": "Is the Veteran waiving VA benefits to retain training pay? See item 28 on form 21-526EZ for more details. ", + "type": "boolean", "nullable": true, - "uniqueItems": true, - "items": { - "additionalProperties": false, - "type": "object", - "properties": { - "approximateBeginDate": { - "description": "The approximateBeginDate must be after the earliest servicePeriod activeDutyBeginDate.", - "type": "string", - "nullable": false, - "pattern": "^(?:[0-9]{4})-(?:0[1-9]|1[0-2])-(?:0[1-9]|[1-2][0-9]|3[0-1])$|(?:[0-9]{4})-(?:0[1-9]|1[0-2])$", - "example": "2018-06-06 or 2018-06" - }, - "approximateEndDate": { - "type": "string", - "nullable": false, - "pattern": "^(?:[0-9]{4})-(?:0[1-9]|1[0-2])-(?:0[1-9]|[1-2][0-9]|3[0-1])$|(?:[0-9]{4})-(?:0[1-9]|1[0-2])$", - "example": "2018-06-06 or 2018-06" - } - } - } + "example": true, + "default": false + } + } + }, + "directDeposit": { + "type": "object", + "nullable": true, + "additionalProperties": false, + "description": "If direct deposit information is included, the following attributes are required: accountType, accountNumber, routingNumber.", + "properties": { + "noAccount": { + "type": "boolean", + "nullable": true, + "description": "Claimant certifies that they do not have an account with a financial institution or certified payment agent.", + "default": false + }, + "accountNumber": { + "description": "Account number for the direct deposit.", + "pattern": "^(?:[a-zA-Z0-9-]{4,1000})?$", + "type": "string", + "maxLength": 1000, + "nullable": true, + "example": "123123123123" + }, + "accountType": { + "description": "Account type for the direct deposit.", + "type": "string", + "nullable": true, + "example": "CHECKING", + "enum": [ + "CHECKING", + "SAVINGS" + ] + }, + "financialInstitutionName": { + "description": "Provide the name of the financial institution where the Veteran wants the direct deposit.", + "maxLength": 1000, + "type": "string", + "nullable": true, + "example": "Some Bank" + }, + "routingNumber": { + "description": "Routing number for the direct deposit.", + "type": "string", + "maxLength": 1000, + "nullable": true, + "pattern": "^$|^\\d{0,1000}$", + "example": "123123123" } } }, - "servicePay": { - "type": "object", - "nullable": true, - "additionalProperties": false, - "properties": { - "receivingMilitaryRetiredPay": { - "description": "Is the Veteran receiving military retired pay?", - "type": "string", - "enum": [ - "YES", - "NO" - ], - "example": "YES", - "nullable": true - }, - "futureMilitaryRetiredPay": { - "description": "Will the Veteran receive military retired pay pay in future? \n If true, then 'futurePayExplanation' is required.", - "type": "string", - "enum": [ - "YES", - "NO" - ], - "example": "YES", - "nullable": true - }, - "futureMilitaryRetiredPayExplanation": { - "description": "Explains why future pay will be received.", - "type": "string", - "maxLength": 1000, - "example": "Will be retiring soon.", - "nullable": true - }, - "militaryRetiredPay": { - "type": "object", - "nullable": true, - "description": "", - "properties": { - "branchOfService": { - "description": "Branch of service. The /service-branches endpoint on the [Benefits Reference Data API](https://developer.va.gov/explore/benefits/docs/benefits_reference_data?version=current) may be used to retrieve list of possible service branches.", - "type": "string", - "maxLength": 1000, - "nullable": true, - "example": "Air Force" - }, - "monthlyAmount": { - "description": "Amount being received.", - "type": "integer", - "nullable": true, - "minimum": 1, - "maximum": 999999, - "example": 100 - } - } - }, - "retiredStatus": { - "type": "string", - "nullable": true, - "description": "", - "enum": [ - "RETIRED", - "TEMPORARY_DISABILITY_RETIRED_LIST", - "PERMANENT_DISABILITY_RETIRED_LIST" - ] - }, - "favorMilitaryRetiredPay": { - "description": "Is the Veteran waiving VA benefits to retain military retired pay? See item 26 on form 21-526EZ for more details.", - "type": "boolean", - "nullable": true, - "example": true, - "default": false - }, - "receivedSeparationOrSeverancePay": { - "description": "Has the Veteran ever received separation pay, disability severance pay, or any other lump sum payment from their branch of service?", - "type": "string", - "enum": [ - "YES", - "NO" - ], - "example": "YES", - "nullable": true - }, - "separationSeverancePay": { - "type": "object", - "nullable": true, - "description": "", - "properties": { - "datePaymentReceived": { - "description": "Approximate date separation pay was received. \n Format can be either YYYY-MM-DD or YYYY-MM or YYYY", - "type": "string", - "pattern": "^(?:[0-9]{4})-(?:0[1-9]|1[0-2])-(?:0[1-9]|[1-2][0-9]|3[0-1])$|(?:[0-9]{4})$|(?:[0-9]{4})-(?:0[1-9]|1[0-2])$", - "example": "2018-03-02 or 2018-03 or 2018" - }, - "branchOfService": { - "description": "Branch of service. The /service-branches endpoint on the [Benefits Reference Data API](https://developer.va.gov/explore/benefits/docs/benefits_reference_data?version=current) may be used to retrieve list of possible service branches.", - "type": "string", - "nullable": true, - "maxLength": 1000, - "example": "Air Force" - }, - "preTaxAmountReceived": { - "description": "Amount being received.", - "type": "integer", - "nullable": true, - "minimum": 1, - "maximum": 999999, - "example": 100 - } - } - }, - "favorTrainingPay": { - "description": "Is the Veteran waiving VA benefits to retain training pay? See item 28 on form 21-526EZ for more details. ", - "type": "boolean", - "nullable": true, - "example": true, - "default": false - } + "claimantCertification": { + "type": "boolean", + "description": "Claimant certifies and authorizes release of information.", + "default": false + }, + "claimNotes": { + "type": "string", + "description": "An optional notes section.", + "maxLength": 4000 + } + } + } + } + } + }, + "example": { + "data": { + "type": "form/526", + "attributes": { + "claimProcessType": "STANDARD_CLAIM_PROCESS", + "claimNotes": "Some things that are important to know, and are not included in any other place.", + "veteranIdentification": { + "serviceNumber": "123456789", + "veteranNumber": { + "telephone": "5555555555" + }, + "mailingAddress": { + "addressLine1": "123 Main Street", + "addressLine2": "Unit 1", + "addressLine3": "Room 2", + "city": "Schenectady", + "state": "NY", + "country": "USA", + "zipFirstFive": "12345", + "zipLastFour": "1234" + }, + "emailAddress": { + "email": "valid@somedomain.com", + "agreeToEmailRelatedToClaim": true + }, + "currentVaEmployee": false + }, + "changeOfAddress": { + "typeOfAddressChange": "TEMPORARY", + "addressLine1": "456 Main Street", + "addressLine2": "Unit 3", + "addressLine3": "Room 4", + "city": "Schenectady", + "state": "NY", + "country": "USA", + "zipFirstFive": "12345", + "zipLastFour": "9897", + "dates": { + "beginDate": "2025-06-04", + "endDate": "2026-06-04" + } + }, + "homeless": { + "currentlyHomeless": { + "homelessSituationOptions": "OTHER", + "otherDescription": "Other living situation" + }, + "pointOfContact": "John Doe", + "pointOfContactNumber": { + "telephone": "5555555555" + } + }, + "toxicExposure": { + "gulfWarHazardService": { + "servedInGulfWarHazardLocations": "NO" + }, + "herbicideHazardService": { + "servedInHerbicideHazardLocations": "YES", + "otherLocationsServed": "Other locations served", + "serviceDates": { + "beginDate": "1972-05", + "endDate": "1980-10" + } + }, + "additionalHazardExposures": { + "additionalExposures": [ + "OTHER" + ], + "specifyOtherExposures": "Agent Orange", + "exposureDates": { + "beginDate": "1972-05", + "endDate": "1980-10" + } + }, + "multipleExposures": [ + { + "hazardExposedTo": "Agent Orange", + "exposureLocation": "Vietnam", + "exposureDates": { + "beginDate": "1972-05", + "endDate": "1973-01" + } + }, + { + "hazardExposedTo": "Agent Orange", + "exposureLocation": "Vietnam", + "exposureDates": { + "beginDate": "1979-04", + "endDate": "1980-10" + } + } + ] + }, + "disabilities": [ + { + "name": "Diabetes", + "exposureOrEventOrInjury": "Agent Orange", + "serviceRelevance": "Service in Vietnam War", + "approximateDate": "1975-05", + "disabilityActionType": "NEW", + "isRelatedToToxicExposure": true + }, + { + "name": "Hearing Loss", + "exposureOrEventOrInjury": "Noise", + "serviceRelevance": "Heavy equipment operator in service", + "approximateDate": "1968-07", + "disabilityActionType": "INCREASE", + "classificationCode": "8987", + "ratedDisabilityId": "1234567", + "diagnosticCode": 5678, + "isRelatedToToxicExposure": false + } + ], + "treatments": [ + { + "beginDate": "2021-04", + "treatedDisabilityNames": [ + "Diabetes" + ], + "center": { + "name": "ATLANTA VA MEDICAL CENTER", + "state": "GA", + "city": "ATLANTA" + } + }, + { + "beginDate": "1996-03", + "treatedDisabilityNames": [ + "Hearing Loss" + ], + "center": { + "name": "ATLANTA VA MEDICAL CENTER", + "state": "GA", + "city": "ATLANTA" + } + } + ], + "serviceInformation": { + "alternateNames": [ + "Jon Doe", + "Jane Doe" + ], + "servicePeriods": [ + { + "serviceBranch": "Air Force", + "serviceComponent": "Active", + "activeDutyBeginDate": "1964-11-14", + "activeDutyEndDate": "1980-10-30", + "separationLocationCode": "98289" + } + ], + "servedInActiveCombatSince911": "NO", + "reservesNationalGuardService": { + "component": "National Guard", + "obligationTermsOfService": { + "beginDate": "1990-11-24", + "endDate": "1995-11-17" + }, + "unitName": "National Guard Unit Name", + "unitAddress": "1243 Main Street", + "unitPhone": { + "areaCode": "555", + "phoneNumber": "5555555" + }, + "receivingInactiveDutyTrainingPay": "YES" + }, + "confinements": [ + { + "approximateBeginDate": "1970-06-11", + "approximateEndDate": "1970-09-11" + } + ] + }, + "servicePay": { + "receivingMilitaryRetiredPay": "NO", + "futureMilitaryRetiredPay": "YES", + "futureMilitaryRetiredPayExplanation": "Explanation of future military retired pay", + "militaryRetiredPay": { + "branchOfService": "Air Force", + "monthlyAmount": 240 + }, + "retiredStatus": "PERMANENT_DISABILITY_RETIRED_LIST", + "favorMilitaryRetiredPay": false, + "receivedSeparationOrSeverancePay": "YES", + "separationSeverancePay": { + "datePaymentReceived": "2018-07-31", + "branchOfService": "Air Force", + "preTaxAmountReceived": 179 + }, + "favorTrainingPay": false + }, + "directDeposit": { + "accountNumber": "123123123123", + "accountType": "CHECKING", + "financialInstitutionName": "Chase", + "routingNumber": "123456789" + }, + "claimantCertification": true + } + } + } + }, + "examples": { + "Minimum Required Attributes": { + "value": { + "data": { + "type": "form/526", + "attributes": { + "claimProcessType": "STANDARD_CLAIM_PROCESS", + "veteranIdentification": { + "mailingAddress": { + "addressLine1": "1234 Couch Street", + "city": "Portland", + "state": "OR", + "country": "USA", + "zipFirstFive": "12345" + }, + "currentVaEmployee": false + }, + "disabilities": [ + { + "name": "hearing loss", + "serviceRelevance": "Heavy equipment operator in service", + "approximateDate": "2017-07", + "disabilityActionType": "NEW" + } + ], + "serviceInformation": { + "servicePeriods": [ + { + "serviceBranch": "Air Force", + "serviceComponent": "Active", + "activeDutyBeginDate": "2015-11-14", + "activeDutyEndDate": "2018-11-30" + } + ] + }, + "claimantCertification": true + } + } + } + }, + "Maximum Attributes": { + "value": { + "data": { + "type": "form/526", + "attributes": { + "claimProcessType": "STANDARD_CLAIM_PROCESS", + "claimNotes": "Some things that are important to know, and are not included in any other place.", + "veteranIdentification": { + "serviceNumber": "123456789", + "veteranNumber": { + "telephone": "5555555555", + "internationalTelephone": "+44 20 1234 5678" + }, + "mailingAddress": { + "addressLine1": "1234 Couch Street", + "addressLine2": "Unit 4", + "addressLine3": "Room 1", + "city": "Schenectady", + "state": "NY", + "country": "USA", + "zipFirstFive": "12345", + "zipLastFour": "1234" + }, + "emailAddress": { + "email": "valid@somedomain.com", + "agreeToEmailRelatedToClaim": true + }, + "currentVaEmployee": false + }, + "changeOfAddress": { + "typeOfAddressChange": "TEMPORARY", + "addressLine1": "10 Peach St", + "addressLine2": "Unit 4", + "addressLine3": "Room 1", + "city": "Schenectady", + "state": "NY", + "country": "USA", + "zipFirstFive": "12345", + "zipLastFour": "9897", + "dates": { + "beginDate": "2023-06-04", + "endDate": "2023-12-04" + } + }, + "homeless": { + "isCurrentlyHomeless": true, + "currentlyHomeless": { + "homelessSituationOptions": "FLEEING_CURRENT_RESIDENCE", + "otherDescription": "ABCDEFGHIJKLM" + }, + "isAtRiskOfBecomingHomeless": false, + "pointOfContact": "john stewart", + "pointOfContactNumber": { + "telephone": "5555555555", + "internationalTelephone": "+44 20 1234 5678" + } + }, + "toxicExposure": { + "gulfWarHazardService": { + "servedInGulfWarHazardLocations": "YES", + "serviceDates": { + "beginDate": "2018-07", + "endDate": "2018-08" } }, - "directDeposit": { - "type": "object", - "nullable": true, - "additionalProperties": false, - "description": "If direct deposit information is included, the following attributes are required: accountType, accountNumber, routingNumber.", - "properties": { - "noAccount": { - "type": "boolean", - "nullable": true, - "description": "Claimant certifies that they do not have an account with a financial institution or certified payment agent.", - "default": false - }, - "accountNumber": { - "description": "Account number for the direct deposit.", - "pattern": "^(?:[a-zA-Z0-9-]{4,1000})?$", - "type": "string", - "maxLength": 1000, - "nullable": true, - "example": "123123123123" - }, - "accountType": { - "description": "Account type for the direct deposit.", - "type": "string", - "nullable": true, - "example": "CHECKING", - "enum": [ - "CHECKING", - "SAVINGS" - ] - }, - "financialInstitutionName": { - "description": "Provide the name of the financial institution where the Veteran wants the direct deposit.", - "maxLength": 1000, - "type": "string", - "nullable": true, - "example": "Some Bank" - }, - "routingNumber": { - "description": "Routing number for the direct deposit.", - "type": "string", - "maxLength": 1000, - "nullable": true, - "pattern": "^$|^\\d{0,1000}$", - "example": "123123123" + "herbicideHazardService": { + "servedInHerbicideHazardLocations": "YES", + "otherLocationsServed": "ABCDEFGHIJKLM", + "serviceDates": { + "beginDate": "2018-07", + "endDate": "2018-08" + } + }, + "additionalHazardExposures": { + "additionalExposures": [ + "ASBESTOS", + "SHIPBOARD_HAZARD_AND_DEFENSE" + ], + "specifyOtherExposures": "Other exposure details", + "exposureDates": { + "beginDate": "2018-07", + "endDate": "2018-08" + } + }, + "multipleExposures": [ + { + "hazardExposedTo": "RADIATION", + "exposureLocation": "Guam", + "exposureDates": { + "beginDate": "2012-12", + "endDate": "2013-07" } } + ] + }, + "disabilities": [ + { + "name": "Traumatic Brain Injury", + "exposureOrEventOrInjury": "EXPOSURE", + "serviceRelevance": "ABCDEFG", + "approximateDate": "2018-03-11", + "disabilityActionType": "NEW", + "classificationCode": "9014", + "ratedDisabilityId": "ABCDEFGHIJKLMNOPQRSTUVWX", + "diagnosticCode": 9020, + "isRelatedToToxicExposure": true, + "secondaryDisabilities": [ + { + "name": "Post Traumatic Stress Disorder (PTSD) Combat - Mental Disorders", + "exposureOrEventOrInjury": "EXPOSURE", + "serviceRelevance": "ABCDEFGHIJKLMNOPQ", + "disabilityActionType": "SECONDARY", + "approximateDate": "2018-03-12", + "classificationCode": "9014" + } + ] }, - "claimantCertification": { - "type": "boolean", - "description": "Claimant certifies and authorizes release of information.", - "default": false + { + "name": "Cancer - Musculoskeletal - Elbow", + "exposureOrEventOrInjury": "EXPOSURE", + "approximateDate": "2018-03-02", + "serviceRelevance": "ABCDEFG", + "disabilityActionType": "NEW", + "classificationCode": "9014", + "ratedDisabilityId": "ABCDEFGHIJKLMNOPQRSTUVWX", + "diagnosticCode": 249470, + "isRelatedToToxicExposure": true }, - "claimNotes": { - "type": "string", - "description": "An optional notes section.", - "maxLength": 4000 + { + "name": "Cancer - Musculoskeletal - Knee", + "exposureOrEventOrInjury": "EXPOSURE", + "approximateDate": "2015", + "serviceRelevance": "ABCDEFG", + "disabilityActionType": "NEW", + "classificationCode": "9014", + "ratedDisabilityId": "ABCDEFGHIJKLMNOPQRSTUVWX", + "diagnosticCode": 249470, + "isRelatedToToxicExposure": true } - } + ], + "treatments": [ + { + "beginDate": "2009-03", + "treatedDisabilityNames": [ + "Traumatic Brain Injury", + "Post Traumatic Stress Disorder (PTSD) Combat - Mental Disorders", + "Cancer - Musculoskeletal - Elbow" + ], + "center": { + "name": "Center One", + "city": "Decatur", + "state": "GA" + } + } + ], + "serviceInformation": { + "alternateNames": [ + "john jacob", + "johnny smith" + ], + "servicePeriods": [ + { + "serviceBranch": "Public Health Service", + "serviceComponent": "Active", + "activeDutyBeginDate": "2008-11-14", + "activeDutyEndDate": "2023-10-30" + } + ], + "servedInActiveCombatSince911": "NO", + "reservesNationalGuardService": { + "component": "National Guard", + "obligationTermsOfService": { + "beginDate": "2019-06-04", + "endDate": "2020-06-04" + }, + "unitName": "National Guard Unit Name", + "unitAddress": "1243 pine court", + "unitPhone": { + "areaCode": "555", + "phoneNumber": "5555555" + }, + "receivingInactiveDutyTrainingPay": "YES" + }, + "confinements": [ + { + "approximateBeginDate": "2018-06-04", + "approximateEndDate": "2018-07-04" + }, + { + "approximateBeginDate": "2020-06", + "approximateEndDate": "2020-07" + } + ] + }, + "servicePay": { + "receivingMilitaryRetiredPay": "NO", + "futureMilitaryRetiredPay": "YES", + "futureMilitaryRetiredPayExplanation": "ABCDEFGHIJKLMNOPQRSTUVW", + "militaryRetiredPay": { + "branchOfService": "Army", + "monthlyAmount": 840 + }, + "retiredStatus": "PERMANENT_DISABILITY_RETIRED_LIST", + "favorMilitaryRetiredPay": false, + "receivedSeparationOrSeverancePay": "NO", + "separationSeverancePay": { + "datePaymentReceived": "2022-03-12", + "branchOfService": "Naval Academy", + "preTaxAmountReceived": 379 + }, + "favorTrainingPay": true + }, + "directDeposit": { + "noAccount": false, + "accountNumber": "ABCDEF", + "accountType": "CHECKING", + "financialInstitutionName": "Chase", + "routingNumber": "123123123" + }, + "claimantCertification": true } } } }, - "example": { - "data": { - "type": "form/526", - "attributes": { - "claimProcessType": "STANDARD_CLAIM_PROCESS", - "claimNotes": "Some things that are important to know, and are not included in any other place.", - "veteranIdentification": { - "serviceNumber": "123456789", - "veteranNumber": { - "telephone": "5555555555" + "Transaction ID": { + "value": { + "meta": { + "transactionId": "00000000-0000-0000-0000-000000000000" + }, + "data": { + "type": "form/526", + "attributes": { + "claimProcessType": "STANDARD_CLAIM_PROCESS", + "claimNotes": "Some things that are important to know, and are not included in any other place.", + "veteranIdentification": { + "serviceNumber": "123456789", + "veteranNumber": { + "telephone": "5555555555", + "internationalTelephone": "+44 20 1234 5678" + }, + "mailingAddress": { + "addressLine1": "1234 Couch Street", + "addressLine2": "Unit 4", + "addressLine3": "Room 1", + "city": "Schenectady", + "state": "NY", + "country": "USA", + "zipFirstFive": "12345", + "zipLastFour": "1234" + }, + "emailAddress": { + "email": "valid@somedomain.com", + "agreeToEmailRelatedToClaim": true + }, + "currentVaEmployee": false }, - "mailingAddress": { - "addressLine1": "123 Main Street", - "addressLine2": "Unit 1", - "addressLine3": "Room 2", + "changeOfAddress": { + "typeOfAddressChange": "TEMPORARY", + "addressLine1": "10 Peach St", + "addressLine2": "Unit 4", + "addressLine3": "Room 1", "city": "Schenectady", "state": "NY", "country": "USA", "zipFirstFive": "12345", - "zipLastFour": "1234" - }, - "emailAddress": { - "email": "valid@somedomain.com", - "agreeToEmailRelatedToClaim": true - }, - "currentVaEmployee": false - }, - "changeOfAddress": { - "typeOfAddressChange": "TEMPORARY", - "addressLine1": "456 Main Street", - "addressLine2": "Unit 3", - "addressLine3": "Room 4", - "city": "Schenectady", - "state": "NY", - "country": "USA", - "zipFirstFive": "12345", - "zipLastFour": "9897", - "dates": { - "beginDate": "2025-06-04", - "endDate": "2026-06-04" - } - }, - "homeless": { - "currentlyHomeless": { - "homelessSituationOptions": "OTHER", - "otherDescription": "Other living situation" - }, - "pointOfContact": "John Doe", - "pointOfContactNumber": { - "telephone": "5555555555" - } - }, - "toxicExposure": { - "gulfWarHazardService": { - "servedInGulfWarHazardLocations": "NO" - }, - "herbicideHazardService": { - "servedInHerbicideHazardLocations": "YES", - "otherLocationsServed": "Other locations served", - "serviceDates": { - "beginDate": "1972-05", - "endDate": "1980-10" + "zipLastFour": "9897", + "dates": { + "beginDate": "2023-06-04", + "endDate": "2023-12-04" } }, - "additionalHazardExposures": { - "additionalExposures": [ - "OTHER" - ], - "specifyOtherExposures": "Agent Orange", - "exposureDates": { - "beginDate": "1972-05", - "endDate": "1980-10" + "homeless": { + "isCurrentlyHomeless": true, + "currentlyHomeless": { + "homelessSituationOptions": "FLEEING_CURRENT_RESIDENCE", + "otherDescription": "ABCDEFGHIJKLM" + }, + "isAtRiskOfBecomingHomeless": false, + "pointOfContact": "john stewart", + "pointOfContactNumber": { + "telephone": "5555555555", + "internationalTelephone": "+44 20 1234 5678" } }, - "multipleExposures": [ - { - "hazardExposedTo": "Agent Orange", - "exposureLocation": "Vietnam", + "toxicExposure": { + "gulfWarHazardService": { + "servedInGulfWarHazardLocations": "YES", + "serviceDates": { + "beginDate": "2018-07", + "endDate": "2018-08" + } + }, + "herbicideHazardService": { + "servedInHerbicideHazardLocations": "YES", + "otherLocationsServed": "ABCDEFGHIJKLM", + "serviceDates": { + "beginDate": "2018-07", + "endDate": "2018-08" + } + }, + "additionalHazardExposures": { + "additionalExposures": [ + "ASBESTOS", + "SHIPBOARD_HAZARD_AND_DEFENSE" + ], + "specifyOtherExposures": "Other exposure details", "exposureDates": { - "beginDate": "1972-05", - "endDate": "1973-01" + "beginDate": "2018-07", + "endDate": "2018-08" } }, + "multipleExposures": [ + { + "hazardExposedTo": "RADIATION", + "exposureLocation": "Guam", + "exposureDates": { + "beginDate": "2012-12", + "endDate": "2013-07" + } + } + ] + }, + "disabilities": [ { - "hazardExposedTo": "Agent Orange", - "exposureLocation": "Vietnam", - "exposureDates": { - "beginDate": "1979-04", - "endDate": "1980-10" + "name": "Traumatic Brain Injury", + "exposureOrEventOrInjury": "EXPOSURE", + "serviceRelevance": "ABCDEFG", + "approximateDate": "2018-03-11", + "disabilityActionType": "NEW", + "classificationCode": "9014", + "ratedDisabilityId": "ABCDEFGHIJKLMNOPQRSTUVWX", + "diagnosticCode": 9020, + "isRelatedToToxicExposure": true, + "secondaryDisabilities": [ + { + "name": "Post Traumatic Stress Disorder (PTSD) Combat - Mental Disorders", + "exposureOrEventOrInjury": "EXPOSURE", + "serviceRelevance": "ABCDEFGHIJKLMNOPQ", + "disabilityActionType": "SECONDARY", + "approximateDate": "2018-03-12", + "classificationCode": "9014" + } + ] + }, + { + "name": "Cancer - Musculoskeletal - Elbow", + "exposureOrEventOrInjury": "EXPOSURE", + "approximateDate": "2018-03-02", + "serviceRelevance": "ABCDEFG", + "disabilityActionType": "NEW", + "classificationCode": "9014", + "ratedDisabilityId": "ABCDEFGHIJKLMNOPQRSTUVWX", + "diagnosticCode": 249470, + "isRelatedToToxicExposure": true + }, + { + "name": "Cancer - Musculoskeletal - Knee", + "exposureOrEventOrInjury": "EXPOSURE", + "approximateDate": "2015", + "serviceRelevance": "ABCDEFG", + "disabilityActionType": "NEW", + "classificationCode": "9014", + "ratedDisabilityId": "ABCDEFGHIJKLMNOPQRSTUVWX", + "diagnosticCode": 249470, + "isRelatedToToxicExposure": true + } + ], + "treatments": [ + { + "beginDate": "2009-03", + "treatedDisabilityNames": [ + "Traumatic Brain Injury", + "Post Traumatic Stress Disorder (PTSD) Combat - Mental Disorders", + "Cancer - Musculoskeletal - Elbow" + ], + "center": { + "name": "Center One", + "city": "Decatur", + "state": "GA" } } - ] - }, - "disabilities": [ - { - "name": "Diabetes", - "exposureOrEventOrInjury": "Agent Orange", - "serviceRelevance": "Service in Vietnam War", - "approximateDate": "1975-05", - "disabilityActionType": "NEW", - "isRelatedToToxicExposure": true + ], + "serviceInformation": { + "alternateNames": [ + "john jacob", + "johnny smith" + ], + "servicePeriods": [ + { + "serviceBranch": "Public Health Service", + "serviceComponent": "Active", + "activeDutyBeginDate": "2008-11-14", + "activeDutyEndDate": "2024-12-18", + "separationLocationCode": "98282" + } + ], + "servedInActiveCombatSince911": "NO", + "reservesNationalGuardService": { + "component": "National Guard", + "obligationTermsOfService": { + "beginDate": "2019-06-04", + "endDate": "2020-06-04" + }, + "unitName": "National Guard Unit Name", + "unitAddress": "1243 pine court", + "unitPhone": { + "areaCode": "555", + "phoneNumber": "5555555" + }, + "receivingInactiveDutyTrainingPay": "YES" + }, + "federalActivation": { + "activationDate": "2023-10-01", + "anticipatedSeparationDate": "2024-12-18" + }, + "confinements": [ + { + "approximateBeginDate": "2018-06-04", + "approximateEndDate": "2018-07-04" + }, + { + "approximateBeginDate": "2020-06", + "approximateEndDate": "2020-07" + } + ] }, - { - "name": "Hearing Loss", - "exposureOrEventOrInjury": "Noise", - "serviceRelevance": "Heavy equipment operator in service", - "approximateDate": "1968-07", - "disabilityActionType": "INCREASE", - "classificationCode": "8987", - "ratedDisabilityId": "1234567", - "diagnosticCode": 5678, - "isRelatedToToxicExposure": false - } + "servicePay": { + "receivingMilitaryRetiredPay": "NO", + "futureMilitaryRetiredPay": "YES", + "futureMilitaryRetiredPayExplanation": "ABCDEFGHIJKLMNOPQRSTUVW", + "militaryRetiredPay": { + "branchOfService": "Army", + "monthlyAmount": 840 + }, + "retiredStatus": "PERMANENT_DISABILITY_RETIRED_LIST", + "favorMilitaryRetiredPay": false, + "receivedSeparationOrSeverancePay": "NO", + "separationSeverancePay": { + "datePaymentReceived": "2022-03-12", + "branchOfService": "Naval Academy", + "preTaxAmountReceived": 379 + }, + "favorTrainingPay": true + }, + "directDeposit": { + "noAccount": false, + "accountNumber": "ABCDEF", + "accountType": "CHECKING", + "financialInstitutionName": "Chase", + "routingNumber": "123123123" + }, + "claimantCertification": true + } + } + } + } + } + } + } + } + } + }, + "/veterans/{veteranId}/526/validate": { + "post": { + "summary": "Validates a 526 claim form submission.", + "tags": [ + "Disability Compensation Claims" + ], + "operationId": "post526ClaimValidate", + "security": [ + { + "productionOauth": [ + "system/claim.read", + "system/claim.write" + ] + }, + { + "sandboxOauth": [ + "system/claim.read", + "system/claim.write" + ] + }, + { + "bearer_token": [] + } + ], + "description": "Validates a request for a disability compensation claim submission (21-526EZ).\nThis endpoint can be used to test the request parameters for your /526 submission.\n", + "parameters": [ + { + "name": "veteranId", + "in": "path", + "required": true, + "example": "1012667145V762142", + "description": "ID of Veteran", + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "Successful response with disability", + "content": { + "application/json": { + "example": { + "data": { + "type": "claims_api_auto_established_claim_validation", + "attributes": { + "status": "valid" + } + } + }, + "schema": { + "$schema": "http://json-schema.org/draft-04/schema#", + "type": "object", + "required": [ + "data" + ], + "properties": { + "data": { + "type": "object", + "additionalProperties": false, + "required": [ + "type", + "attributes" ], - "treatments": [ - { - "beginDate": "2021-04", - "treatedDisabilityNames": [ - "Diabetes" - ], - "center": { - "name": "ATLANTA VA MEDICAL CENTER", - "state": "GA", - "city": "ATLANTA" - } + "properties": { + "type": { + "type": "string" }, - { - "beginDate": "1996-03", - "treatedDisabilityNames": [ - "Hearing Loss" + "attributes": { + "type": "object", + "additionalProperties": false, + "required": [ + "status" ], - "center": { - "name": "ATLANTA VA MEDICAL CENTER", - "state": "GA", - "city": "ATLANTA" + "properties": { + "status": { + "type": "string", + "enum": [ + "valid" + ], + "description": "Return whether or not whether or not the payload is valid" + } } } - ], - "serviceInformation": { - "alternateNames": [ - "Jon Doe", - "Jane Doe" - ], - "servicePeriods": [ - { - "serviceBranch": "Air Force", - "serviceComponent": "Active", - "activeDutyBeginDate": "1964-11-14", - "activeDutyEndDate": "1980-10-30", - "separationLocationCode": "98289" - } + } + } + } + } + } + } + }, + "401": { + "description": "Unauthorized", + "content": { + "application/json": { + "example": { + "errors": [ + { + "title": "Not authorized", + "status": "401", + "detail": "Not authorized" + } + ] + }, + "schema": { + "required": [ + "errors" + ], + "properties": { + "errors": { + "type": "array", + "items": { + "additionalProperties": false, + "required": [ + "title", + "detail" ], - "servedInActiveCombatSince911": "NO", - "reservesNationalGuardService": { - "component": "National Guard", - "obligationTermsOfService": { - "beginDate": "1990-11-24", - "endDate": "1995-11-17" + "properties": { + "title": { + "type": "string", + "description": "HTTP error title" }, - "unitName": "National Guard Unit Name", - "unitAddress": "1243 Main Street", - "unitPhone": { - "areaCode": "555", - "phoneNumber": "5555555" + "detail": { + "type": "string", + "description": "HTTP error detail" }, - "receivingInactiveDutyTrainingPay": "YES" - }, - "confinements": [ - { - "approximateBeginDate": "1970-06-11", - "approximateEndDate": "1970-09-11" + "status": { + "type": "string", + "description": "HTTP error status code" + }, + "source": { + "type": "object", + "additionalProperties": false, + "description": "Source of error", + "properties": { + "pointer": { + "type": "string", + "description": "Pointer to source of error" + } + } } - ] - }, - "servicePay": { - "receivingMilitaryRetiredPay": "NO", - "futureMilitaryRetiredPay": "YES", - "futureMilitaryRetiredPayExplanation": "Explanation of future military retired pay", - "militaryRetiredPay": { - "branchOfService": "Air Force", - "monthlyAmount": 240 - }, - "retiredStatus": "PERMANENT_DISABILITY_RETIRED_LIST", - "favorMilitaryRetiredPay": false, - "receivedSeparationOrSeverancePay": "YES", - "separationSeverancePay": { - "datePaymentReceived": "2018-07-31", - "branchOfService": "Air Force", - "preTaxAmountReceived": 179 - }, - "favorTrainingPay": false - }, - "directDeposit": { - "accountNumber": "123123123123", - "accountType": "CHECKING", - "financialInstitutionName": "Chase", - "routingNumber": "123456789" - }, - "claimantCertification": true + } + } + } + } + } + } + } + }, + "404": { + "description": "Resource not found", + "content": { + "application/json": { + "example": { + "errors": [ + { + "status": "404", + "title": "Resource not found", + "detail": "Unable to locate Veteran's ID/ICN in Master Person Index (MPI). Please submit an issue at ask.va.gov or call 1-800-MyVA411 (800-698-2411) for assistance." + } + ] + }, + "schema": { + "required": [ + "errors" + ], + "properties": { + "errors": { + "type": "array", + "items": { + "additionalProperties": false, + "required": [ + "title", + "detail" + ], + "properties": { + "title": { + "type": "string", + "description": "HTTP error title" + }, + "detail": { + "type": "string", + "description": "HTTP error detail" + }, + "status": { + "type": "string", + "description": "HTTP error status code" + } + } + } } } } } } }, - "required": true - } - } - }, - "/veterans/{veteranId}/526/{id}/attachments": { - "post": { - "summary": "Upload documents supporting a 526 claim", - "tags": [ - "Disability Compensation Claims" - ], - "operationId": "upload526Attachments", - "security": [ - { - "productionOauth": [ - "system/claim.read", - "system/claim.write" - ] - }, - { - "sandboxOauth": [ - "system/claim.read", - "system/claim.write" - ] - }, - { - "bearer_token": [ - - ] - } - ], - "description": "Uploads supporting documents related to a disability compensation claim. This endpoint accepts a document binary PDF as part of a multi-part payload.\n", - "parameters": [ - { - "name": "id", - "in": "path", - "required": true, - "description": "UUID given when Disability Claim was submitted", - "schema": { - "type": "string" - } - }, - { - "name": "veteranId", - "in": "path", - "required": true, - "example": "1012667145V762142", - "description": "ID of Veteran", - "schema": { - "type": "string" - } - } - ], - "responses": { - "202": { - "description": "upload response", + "422": { + "description": "Unprocessable entity", "content": { "application/json": { "example": { - "data": { - "id": "f5fb6b0d-317d-46b8-8c50-e533bfccc159", - "type": "forms/526", - "attributes": { - "claimProcessType": "STANDARD_CLAIM_PROCESS", - "claimNotes": "Some things that are important to know, and are not included in any other place.", - "veteranIdentification": { - "serviceNumber": "123456789", - "veteranNumber": { - "telephone": "5555555555", - "internationalTelephone": "+44 20 1234 5678" - }, - "mailingAddress": { - "addressLine1": "1234 Couch Street", - "addressLine2": "Unit 4", - "addressLine3": "Room 1", - "city": "Schenectady", - "state": "NY", - "country": "USA", - "zipFirstFive": "12345", - "zipLastFour": "1234" - }, - "emailAddress": { - "email": "valid@somedomain.com", - "agreeToEmailRelatedToClaim": true - }, - "currentVaEmployee": false - }, - "changeOfAddress": { - "typeOfAddressChange": "TEMPORARY", - "addressLine1": "10 Peach St", - "addressLine2": "Unit 4", - "addressLine3": "Room 1", - "city": "Schenectady", - "state": "NY", - "country": "USA", - "zipFirstFive": "12345", - "zipLastFour": "9897", - "dates": { - "beginDate": "2023-06-04", - "endDate": "2023-12-04" - } - }, - "homeless": { - "isCurrentlyHomeless": true, - "currentlyHomeless": { - "homelessSituationOptions": "FLEEING_CURRENT_RESIDENCE", - "otherDescription": "ABCDEFGHIJKLM" - }, - "isAtRiskOfBecomingHomeless": false, - "pointOfContact": "john stewart", - "pointOfContactNumber": { - "telephone": "5555555555", - "internationalTelephone": "+44 20 1234 5678" - } - }, - "toxicExposure": { - "gulfWarHazardService": { - "servedInGulfWarHazardLocations": "YES", - "serviceDates": { - "beginDate": "2018-07", - "endDate": "2018-08" - } - }, - "herbicideHazardService": { - "servedInHerbicideHazardLocations": "YES", - "otherLocationsServed": "ABCDEFGHIJKLM", - "serviceDates": { - "beginDate": "2018-07", - "endDate": "2018-08" - } - }, - "additionalHazardExposures": { - "additionalExposures": [ - "ASBESTOS", - "SHIPBOARD_HAZARD_AND_DEFENSE" - ], - "specifyOtherExposures": "Other exposure details", - "exposureDates": { - "beginDate": "2018-07", - "endDate": "2018-08" - } - }, - "multipleExposures": [ - { - "hazardExposedTo": "RADIATION", - "exposureLocation": "Guam", - "exposureDates": { - "beginDate": "2012-12", - "endDate": "2013-07" - } - } - ] - }, - "disabilities": [ - { - "name": "Traumatic Brain Injury", - "exposureOrEventOrInjury": "EXPOSURE", - "serviceRelevance": "ABCDEFG", - "approximateDate": "2018-03-11", - "disabilityActionType": "NEW", - "classificationCode": "9014", - "ratedDisabilityId": "ABCDEFGHIJKLMNOPQRSTUVWX", - "diagnosticCode": 9020, - "isRelatedToToxicExposure": true, - "secondaryDisabilities": [ - { - "name": "Post Traumatic Stress Disorder (PTSD) Combat - Mental Disorders", - "exposureOrEventOrInjury": "EXPOSURE", - "serviceRelevance": "ABCDEFGHIJKLMNOPQ", - "disabilityActionType": "SECONDARY", - "approximateDate": "2018-03-12", - "classificationCode": "9014" + "errors": [ + { + "title": "Unprocessable entity", + "detail": "The property / did not contain the required key claimProcessType", + "status": "422", + "source": { + "pointer": "data/attributes/" + } + }, + { + "title": "Unprocessable entity", + "detail": "The property / did not contain the required key disabilities", + "status": "422", + "source": { + "pointer": "data/attributes/" + } + }, + { + "title": "Unprocessable entity", + "detail": "The property / did not contain the required key serviceInformation", + "status": "422", + "source": { + "pointer": "data/attributes/" + } + }, + { + "title": "Unprocessable entity", + "detail": "The property / did not contain the required key veteranIdentification", + "status": "422", + "source": { + "pointer": "data/attributes/" + } + } + ] + }, + "schema": { + "required": [ + "errors" + ], + "properties": { + "errors": { + "type": "array", + "items": { + "additionalProperties": false, + "required": [ + "title", + "status", + "detail" + ], + "properties": { + "status": { + "type": "string", + "description": "HTTP error code" + }, + "detail": { + "type": "string", + "description": "HTTP error detail" + }, + "source": { + "type": "object", + "pointer": { + "type": "string" } - ] - }, - { - "name": "Cancer - Musculoskeletal - Elbow", - "exposureOrEventOrInjury": "EXPOSURE", - "approximateDate": "2018-03-02", - "serviceRelevance": "ABCDEFG", - "disabilityActionType": "NEW", - "classificationCode": "9014", - "ratedDisabilityId": "ABCDEFGHIJKLMNOPQRSTUVWX", - "diagnosticCode": 249470, - "isRelatedToToxicExposure": true - }, - { - "name": "Cancer - Musculoskeletal - Knee", - "exposureOrEventOrInjury": "EXPOSURE", - "approximateDate": "2015", - "serviceRelevance": "ABCDEFG", - "disabilityActionType": "NEW", - "classificationCode": "9014", - "ratedDisabilityId": "ABCDEFGHIJKLMNOPQRSTUVWX", - "diagnosticCode": 249470, - "isRelatedToToxicExposure": true - } - ], - "treatments": [ - { - "beginDate": "2009-03", - "treatedDisabilityNames": [ - "Traumatic Brain Injury", - "Post Traumatic Stress Disorder (PTSD) Combat - Mental Disorders", - "Cancer - Musculoskeletal - Elbow" - ], - "center": { - "name": "Center One", - "city": "Decatur", - "state": "GA" + }, + "title": { + "type": "string" } } - ], - "serviceInformation": { - "alternateNames": [ - "john jacob", - "johnny smith" - ], - "servicePeriods": [ - { - "serviceBranch": "Public Health Service", - "serviceComponent": "Active", - "activeDutyBeginDate": "2008-11-14", - "activeDutyEndDate": "2023-10-30", - "separationLocationCode": "98282" - } + } + } + } + } + } + } + } + }, + "requestBody": { + "content": { + "application/json": { + "schema": { + "type": "object", + "required": [ + "data" + ], + "properties": { + "data": { + "type": "object", + "required": [ + "attributes", + null + ], + "properties": { + "attributes": { + "$schema": "http://json-schema.org/draft-07/schema#", + "description": "Claims API 526 Schema", + "type": "object", + "additionalProperties": false, + "required": [ + "claimantCertification", + "claimProcessType", + "disabilities", + "serviceInformation", + "veteranIdentification" ], - "servedInActiveCombatSince911": "NO", - "reservesNationalGuardService": { - "component": "National Guard", - "obligationTermsOfService": { - "beginDate": "2019-06-04", - "endDate": "2020-06-04" + "properties": { + "claimProcessType": { + "type": "string", + "description": "Select type of claim program/process that applies to the Veteran.", + "enum": [ + "STANDARD_CLAIM_PROCESS", + "FDC_PROGRAM", + "BDD_PROGRAM" + ] }, - "unitName": "National Guard Unit Name", - "unitAddress": "1243 pine court", - "unitPhone": { - "areaCode": "555", - "phoneNumber": "5555555" + "veteranIdentification": { + "type": "object", + "additionalProperties": false, + "required": [ + "mailingAddress", + "currentVaEmployee" + ], + "properties": { + "serviceNumber": { + "type": "string", + "description": "Service identification number", + "maxLength": 1000, + "nullable": true + }, + "veteranNumber": { + "description": "If there isn't a ten digit phone number in VBMS for the Veteran, the exams will not be ordered. Including the phone number is recommended to avoid claim processing delays.", + "type": "object", + "nullable": true, + "properties": { + "telephone": { + "description": "Veteran's phone number.", + "type": "string", + "pattern": "^\\d{10}?$", + "example": "5555555555", + "nullable": true + }, + "internationalTelephone": { + "type": "string", + "description": "Veteran's international phone number.", + "example": "+44 20 1234 5678", + "maxLength": 1000, + "nullable": true + } + } + }, + "mailingAddress": { + "type": "object", + "additionalProperties": false, + "required": [ + "addressLine1", + "city", + "country" + ], + "properties": { + "addressLine1": { + "description": "Address line 1 for the Veteran's current mailing address.", + "type": "string", + "pattern": "^([-a-zA-Z0-9'.,&#]([-a-zA-Z0-9'.,&# ])?)+$", + "maxLength": 20, + "example": "1234 Couch Street" + }, + "addressLine2": { + "description": "Address line 2 for the Veteran's current mailing address.", + "type": "string", + "pattern": "^([-a-zA-Z0-9'.,&#]([-a-zA-Z0-9'.,&# ])?)+$", + "maxLength": 20, + "example": "Unit 4", + "nullable": true + }, + "addressLine3": { + "description": "Address line 3 for the Veteran's current mailing address.", + "type": "string", + "pattern": "^([-a-zA-Z0-9'.,&#]([-a-zA-Z0-9'.,&# ])?)+$", + "maxLength": 20, + "example": "Room 1", + "nullable": true + }, + "city": { + "description": "City for the Veteran's current mailing address.", + "type": "string", + "pattern": "^$|([a-zA-Z0-9\\'-'.# ]([a-zA-Z0-9\\'-'.# ])?)+$", + "minLength": 1, + "maxLength": 30, + "example": "Schenectady" + }, + "state": { + "description": "State for the Veteran's current mailing address. Required if 'country' is 'USA'.", + "type": "string", + "pattern": "^[a-z,A-Z]{2}$", + "example": "NY", + "nullable": true + }, + "country": { + "description": "Country for the Veteran's current mailing address. Must match the values returned by the /countries endpoint on the [Benefits Reference Data API](https://developer.va.gov/explore/benefits/docs/benefits_reference_data?version=current).", + "type": "string", + "maxLength": 1000, + "example": "USA" + }, + "zipFirstFive": { + "description": "Zip code (First 5 digits) for the Veteran's current mailing address. Required if 'country' is 'USA'.", + "type": "string", + "pattern": "^\\d{5}?$", + "example": "12345", + "nullable": true + }, + "zipLastFour": { + "description": "Zip code (Last 4 digits) for the Veteran's current mailing address.", + "type": "string", + "pattern": "^\\d{4}?$", + "example": "6789", + "nullable": true + }, + "internationalPostalCode": { + "description": "International postal code for the Veteran's current mailing address. Do not include if 'country' is 'USA'.", + "type": "string", + "maxLength": 16, + "nullable": true, + "pattern": "^[a-zA-Z0-9]*$" + } + } + }, + "emailAddress": { + "description": "Information associated with the Veteran's email address.", + "type": "object", + "nullable": true, + "properties": { + "email": { + "type": "string", + "pattern": "^[^\\s@]+@([^\\s@.,]+\\.)+[^\\s@.,]{2,}$", + "description": "The most current email address of the Veteran.", + "maxLength": 80, + "nullable": true + }, + "agreeToEmailRelatedToClaim": { + "type": "boolean", + "description": "Agreement to email information relating to this claim.", + "example": true, + "default": false, + "nullable": true + } + } + }, + "currentVaEmployee": { + "type": "boolean", + "description": "Set to true if Veteran is a VA employee.", + "nullable": false + } + } + }, + "changeOfAddress": { + "description": "If 'changeOfAddress' is included, the following attributes are required: 'typeOfAddressChange', 'addressLine1', 'city', 'country'.", + "type": "object", + "nullable": true, + "additionalProperties": false, + "properties": { + "typeOfAddressChange": { + "description": "Temporary or Permanent change of address. If 'TEMPORARY', 'beginDate' and 'endDate' are required.", + "type": "string", + "enum": [ + "TEMPORARY", + "PERMANENT" + ], + "example": "PERMANENT" + }, + "addressLine1": { + "description": "Address line 1 for the Veteran's new address.", + "type": "string", + "pattern": "^([-a-zA-Z0-9'.,&#]([-a-zA-Z0-9'.,&# ])?)+$", + "maxLength": 20, + "example": "1234 Couch Street" + }, + "addressLine2": { + "description": "Address line 2 for the Veteran's new address.", + "type": "string", + "pattern": "^([-a-zA-Z0-9'.,&#]([-a-zA-Z0-9'.,&# ])?)+$", + "maxLength": 20, + "example": "Unit 4", + "nullable": true + }, + "addressLine3": { + "description": "Address line 3 for the Veteran's new address.", + "type": "string", + "pattern": "^([-a-zA-Z0-9'.,&#]([-a-zA-Z0-9'.,&# ])?)+$", + "maxLength": 20, + "example": "Room 1", + "nullable": true + }, + "city": { + "description": "City for the Veteran's new address.", + "type": "string", + "pattern": "^$|([a-zA-Z0-9\\'-'.# ]([a-zA-Z0-9\\'-'.# ])?)+$", + "minLength": 0, + "maxLength": 30, + "example": "Schenectady" + }, + "state": { + "description": "State for the Veteran's new address. Required if 'country' is 'USA'.", + "type": "string", + "pattern": "^$|^[a-z,A-Z]{2}$", + "example": "NY", + "nullable": true + }, + "country": { + "description": "Country for the Veteran's new address. Value must match the values returned by the /countries endpoint on the [Benefits Reference Data API](https://developer.va.gov/explore/benefits/docs/benefits_reference_data?version=current).", + "type": "string", + "maxLength": 1000, + "example": "USA" + }, + "zipFirstFive": { + "description": "Zip code (First 5 digits) for the Veteran's new address. Required if 'country' is 'USA'.", + "type": "string", + "pattern": "^$|^\\d{5}?$", + "example": "12345", + "nullable": true + }, + "zipLastFour": { + "description": "Zip code (Last 4 digits) for the Veteran's new address.", + "type": "string", + "nullable": true, + "pattern": "^$|^\\d{4}?$", + "example": "6789" + }, + "internationalPostalCode": { + "description": "International postal code for the Veteran's new address. Do not include if 'country' is 'USA'.", + "type": "string", + "maxLength": 16, + "nullable": true, + "pattern": "^[a-zA-Z0-9]*$" + }, + "dates": { + "type": "object", + "properties": { + "beginDate": { + "description": "Begin date for the Veteran's new address.", + "pattern": "^(?:[0-9]{4})-(?:0[1-9]|1[0-2])-(?:0[1-9]|[1-2][0-9]|3[0-1])$", + "type": "string", + "nullable": true, + "example": "2018-06-04" + }, + "endDate": { + "description": "Date in YYYY-MM-DD the changed address expires, if change is temporary.", + "type": "string", + "nullable": true, + "pattern": "^(?:[0-9]{4})-(?:0[1-9]|1[0-2])-(?:0[1-9]|[1-2][0-9]|3[0-1])$", + "example": "2018-06-04" + } + } + } + } }, - "receivingInactiveDutyTrainingPay": "YES" - }, - "federalActivation": { - "activationDate": "2023-10-01", - "anticipatedSeparationDate": "2025-10-31" - }, - "confinements": [ - { - "approximateBeginDate": "2018-06-04", - "approximateEndDate": "2018-07-04" + "homeless": { + "type": "object", + "nullable": true, + "additionalProperties": false, + "properties": { + "isCurrentlyHomeless": { + "type": "boolean", + "nullable": true, + "description": "Is the Veteran currently homeless?" + }, + "currentlyHomeless": { + "type": "object", + "nullable": true, + "additionalProperties": false, + "properties": { + "homelessSituationOptions": { + "description": "Veteran's living situation.", + "type": "string", + "nullable": true, + "default": "other", + "enum": [ + "LIVING_IN_A_HOMELESS_SHELTER", + "NOT_CURRENTLY_IN_A_SHELTERED_ENVIRONMENT", + "STAYING_WITH_ANOTHER_PERSON", + "FLEEING_CURRENT_RESIDENCE", + "OTHER" + ], + "example": "FLEEING_CURRENT_RESIDENCE" + }, + "otherDescription": { + "description": "Explanation of living situation. Required if 'homelessSituationOptions' is 'OTHER'.", + "type": "string", + "nullable": true, + "maxLength": 500, + "example": "other living situation" + } + } + }, + "isAtRiskOfBecomingHomeless": { + "type": "boolean", + "nullable": true, + "description": "Is the Veteran currently at risk of becoming homeless?" + }, + "riskOfBecomingHomeless": { + "type": "object", + "nullable": true, + "additionalProperties": false, + "properties": { + "livingSituationOptions": { + "type": "string", + "nullable": true, + "default": "HOUSING_WILL_BE_LOST_IN_30_DAYS", + "enum": [ + "HOUSING_WILL_BE_LOST_IN_30_DAYS", + "LEAVING_PUBLICLY_FUNDED_SYSTEM_OF_CARE", + "OTHER" + ] + }, + "otherDescription": { + "description": "Explanation of living situation. Required if 'livingSituationOptions' is 'OTHER'.", + "type": "string", + "nullable": true, + "maxLength": 500, + "example": "other living situation" + } + } + }, + "pointOfContact": { + "description": "Individual in direct contact with Veteran.", + "type": "string", + "nullable": true, + "minLength": 1, + "maxLength": 100, + "pattern": "^([-a-zA-Z0-9/']+( ?))*$", + "example": "Jane Doe" + }, + "pointOfContactNumber": { + "type": "object", + "nullable": true, + "additionalProperties": false, + "properties": { + "telephone": { + "description": "Ten digit primary phone of point of contact.", + "type": "string", + "pattern": "^\\d{10}?$", + "example": "5555555", + "nullable": true + }, + "internationalTelephone": { + "description": "International phone of point of contact.", + "type": "string", + "example": "+44 20 1234 5678", + "maxLength": 1000, + "nullable": true + } + } + } + } }, - { - "approximateBeginDate": "2020-06", - "approximateEndDate": "2020-07" - } - ] - }, - "servicePay": { - "receivingMilitaryRetiredPay": "NO", - "futureMilitaryRetiredPay": "YES", - "futureMilitaryRetiredPayExplanation": "ABCDEFGHIJKLMNOPQRSTUVW", - "militaryRetiredPay": { - "branchOfService": "Army", - "monthlyAmount": 840 - }, - "retiredStatus": "PERMANENT_DISABILITY_RETIRED_LIST", - "favorMilitaryRetiredPay": false, - "receivedSeparationOrSeverancePay": "NO", - "separationSeverancePay": { - "datePaymentReceived": "2022-03-12", - "branchOfService": "Naval Academy", - "preTaxAmountReceived": 379 - }, - "favorTrainingPay": true - }, - "directDeposit": { - "noAccount": false, - "accountNumber": "ABCDEF", - "accountType": "CHECKING", - "financialInstitutionName": "Chase", - "routingNumber": "123123123" - }, - "claimantCertification": true - } - } - }, - "schema": { - "$schema": "http://json-schema.org/draft-04/schema#", - "type": "object", - "required": [ - "data" - ], - "properties": { - "data": { - "type": "object", - "additionalProperties": false, - "required": [ - "id", - "type", - "attributes" - ], - "properties": { - "id": { - "type": "string", - "description": "Internal vets-api Claim ID" - }, - "type": { - "type": "string" - }, - "attributes": { - "type": "object", - "additionalProperties": false, - "required": [ - "claimProcessType", - "veteranIdentification", - "disabilities", - "serviceInformation", - "claimantCertification" - ], - "properties": { - "claimProcessType": { - "type": "string" - }, - "veteranIdentification": { - "type": "object", - "properties": { - "serviceNumber": { - "type": "string" - }, - "veteranNumber": { - "type": "object", - "properties": { - "telephone": { - "type": "string" - }, - "internationalTelephone": { - "type": "string" + "toxicExposure": { + "type": "object", + "nullable": true, + "properties": { + "gulfWarHazardService": { + "type": "object", + "nullable": true, + "description": "Toxic exposure related to the Gulf war.", + "properties": { + "servedInGulfWarHazardLocations": { + "type": "string", + "description": "Set to true if the Veteran served in any of the following Gulf War hazard locations: Iraq; Kuwait; Saudi Arabia; the neutral zone between Iraq and Saudi Arabia; Bahrain; Qatar; the United Arab Emirates; Oman; Yemen; Lebanon; Somalia; Afghanistan; Israel; Egypt; Turkey; Syria; Jordan; Djibouti; Uzbekistan; the Gulf of Aden; the Gulf of Oman; the Persian Gulf; the Arabian Sea; and the Red Sea.", + "example": "YES", + "enum": [ + "NO", + "YES" + ], + "nullable": true + }, + "serviceDates": { + "type": "object", + "nullable": true, + "description": "Date range for when the exposure happened.", + "properties": { + "beginDate": { + "type": "string", + "nullable": true, + "description": "Approximate begin date for serving in Gulf War hazard location.", + "pattern": "^(?:19|20)[0-9][0-9]$|^(?:19|20)[0-9][0-9]-(0[1-9]|1[0-2])$", + "example": "2018-06 or 2018" + }, + "endDate": { + "type": "string", + "nullable": true, + "description": "Approximate end date for serving in Gulf War hazard location.", + "pattern": "^(?:19|20)[0-9][0-9]$|^(?:19|20)[0-9][0-9]-(0[1-9]|1[0-2])$", + "example": "2018-06 or 2018" + } + } + } + } + }, + "herbicideHazardService": { + "description": "Toxic exposure related to herbicide (Agent Orange) hazards.", + "type": "object", + "nullable": true, + "properties": { + "servedInHerbicideHazardLocations": { + "type": "string", + "description": "Set to true if the Veteran served in any of the following herbicide/Agent Orange locations: Republic of Vietnam to include the 12 nautical mile territorial waters; Thailand at any United States or Royal Thai base; Laos; Cambodia at Mimot or Krek; Kampong Cham Province; Guam or American Samoa; or in the territorial waters thereof; Johnston Atoll or a ship that called at Johnston Atoll; Korean demilitarized zone; aboard (to include repeated operations and maintenance with) a C-123 aircraft known to have been used to spray an herbicide agent (during service in the Air Force and Air Force Reserves).", + "example": "YES", + "enum": [ + "NO", + "YES" + ], + "nullable": true + }, + "otherLocationsServed": { + "type": "string", + "nullable": true, + "pattern": "^$|([a-zA-Z0-9\"\\/&\\(\\)\\-'.,#\\[\\] ]([a-zA-Z0-9(\\)\\-'.,#\\[\\] ])?)+$", + "maxLength": 5000, + "description": "Other location(s) where Veteran served." + }, + "serviceDates": { + "description": "Date range for exposure in herbicide hazard location.", + "type": "object", + "nullable": true, + "properties": { + "beginDate": { + "type": "string", + "nullable": true, + "description": "Approximate begin date for serving in herbicide location.", + "pattern": "^(?:19|20)[0-9][0-9]$|^(?:19|20)[0-9][0-9]-(0[1-9]|1[0-2])$", + "example": "2018-06 or 2018" + }, + "endDate": { + "type": "string", + "nullable": true, + "description": "Approximate end date for serving in herbicide location.", + "pattern": "^(?:19|20)[0-9][0-9]$|^(?:19|20)[0-9][0-9]-(0[1-9]|1[0-2])$", + "example": "2018-06 or 2018" + } } } - }, - "currentVaEmployee": { - "type": "boolean" - }, - "mailingAddress": { - "type": "object", - "properties": { - "addressLine1": { - "type": "string" - }, - "addressLine2": { - "type": "string" - }, - "addressLine3": { - "type": "string" - }, - "city": { - "type": "string" - }, - "state": { - "type": "string" - }, - "country": { - "type": "string" - }, - "zipFirstFive": { - "type": "string" - }, - "zipLastFour": { - "type": "string" + } + }, + "additionalHazardExposures": { + "type": "object", + "nullable": true, + "description": "Additional hazardous exposures.", + "properties": { + "additionalExposures": { + "description": "Additional exposure incidents.", + "type": "array", + "nullable": true, + "uniqueItems": true, + "items": { + "type": "string", + "additionalProperties": false, + "enum": [ + "ASBESTOS", + "MUSTARD_GAS", + "RADIATION", + "SHIPBOARD_HAZARD_AND_DEFENSE", + "MILITARY_OCCUPATIONAL_SPECIALTY_RELATED_TOXIN", + "CONTAMINATED_WATER_AT_CAMP_LEJEUNE", + "OTHER" + ] + } + }, + "specifyOtherExposures": { + "type": "string", + "nullable": true, + "pattern": "^$|([a-zA-Z0-9\"\\/&\\(\\)\\-'.,#\\[\\] ]([a-zA-Z0-9(\\)\\-'.,#\\[\\] ])?)+$", + "maxLength": 5000, + "description": "Exposure to asbestos." + }, + "exposureDates": { + "type": "object", + "nullable": true, + "description": "Date range for when the exposure happened.", + "properties": { + "beginDate": { + "type": "string", + "nullable": true, + "description": "Approximate begin date for exposure.", + "pattern": "^(?:19|20)[0-9][0-9]$|^(?:19|20)[0-9][0-9]-(0[1-9]|1[0-2])$", + "example": "2018-06 or 2018" + }, + "endDate": { + "type": "string", + "nullable": true, + "description": "Approximate end date for exposure.", + "pattern": "^(?:19|20)[0-9][0-9]$|^(?:19|20)[0-9][0-9]-(0[1-9]|1[0-2])$", + "example": "2018-06 or 2018" + } } } - }, - "emailAddress": { + } + }, + "multipleExposures": { + "type": "array", + "nullable": true, + "minItems": 1, + "uniqueItems": true, + "items": { "type": "object", + "additionalProperties": false, "properties": { - "email": { - "type": "string" + "hazardExposedTo": { + "type": "string", + "nullable": true, + "pattern": "^([-a-zA-Z0-9'.,&# ])+$", + "maxLength": 1000, + "description": "Hazard the Veteran was exposed to." }, - "agreeToEmailRelatedToClaim": { - "type": "boolean" + "exposureLocation": { + "type": "string", + "nullable": true, + "pattern": "^$|([a-zA-Z0-9\"\\/&\\(\\)\\-'.,#\\[\\] ]([a-zA-Z0-9(\\)\\-'.,#\\[\\] ])?)+$", + "maxLength": 1000, + "description": "Location where the exposure happened." + }, + "exposureDates": { + "type": "object", + "nullable": true, + "description": "Date range for when the exposure happened.", + "properties": { + "beginDate": { + "type": "string", + "nullable": true, + "description": "Approximate begin date for exposure.", + "pattern": "^(?:19|20)[0-9][0-9]$|^(?:19|20)[0-9][0-9]-(0[1-9]|1[0-2])$", + "example": "2018-06 or 2018" + }, + "endDate": { + "type": "string", + "nullable": true, + "description": "Approximate end date for exposure.", + "pattern": "^(?:19|20)[0-9][0-9]$|^(?:19|20)[0-9][0-9]-(0[1-9]|1[0-2])$", + "example": "2018-06 or 2018" + } + } } } } } - }, - "changeOfAddress": { + } + }, + "disabilities": { + "description": "Any current disabilities or symptoms the Veteran is claiming are related to their military service and/or are service-connected.", + "type": "array", + "minItems": 1, + "items": { "type": "object", + "additionalProperties": false, + "required": [ + "disabilityActionType", + "name" + ], "properties": { - "typeOfAddressChange": { - "type": "string" + "name": { + "description": "Name of the disability. The /disabilities endpoint on the [Benefits Reference Data API](https://developer.va.gov/explore/benefits/docs/benefits_reference_data?version=current) may be used to retrieve possible disability names.", + "type": "string", + "pattern": "^$|([a-zA-Z0-9\"\\/&\\(\\)\\-'.,#\\[\\] ]([a-zA-Z0-9(\\)\\-'.,#\\[\\] ])?)+$", + "example": "PTSD (post traumatic stress disorder)", + "maxLength": 255 }, - "addressLine1": { - "type": "string" + "exposureOrEventOrInjury": { + "type": "string", + "description": "What caused the disability?", + "nullable": true, + "maxLength": 1000, + "examples": [ + "Agent Orange", + "radiation", + "burn pits" + ] }, - "addressLine2": { - "type": "string" + "serviceRelevance": { + "description": "Explanation of how the disability(ies) relates to the in-service event/exposure/injury. If the disabilityActionType is 'NEW', the serviceRelevance is required.", + "type": "string", + "nullable": true, + "maxLength": 1000, + "example": "Heavy equipment operator in service." }, - "addressLine3": { - "type": "string" + "approximateDate": { + "description": "Approximate date disability began. Date must be in the past. \n Format can be either YYYY-MM-DD or YYYY-MM or YYYY", + "type": "string", + "pattern": "^(?:[0-9]{4}(?:-(?!00)(?:0[1-9]|1[0-2])(?:-(?:0[1-9]|[1-2][0-9]|3[0-1]))?)?)$", + "example": "2018-03-02 or 2018-03 or 2018", + "nullable": true }, - "city": { - "type": "string" + "disabilityActionType": { + "description": "Action type requested for the disability. If 'INCREASE' or 'NONE', then 'ratedDisabilityId' and 'diagnosticCode' should be included. 'NONE' should be used when including a secondary disability.", + "type": "string", + "enum": [ + "NONE", + "NEW", + "INCREASE" + ], + "example": "NEW" }, - "state": { - "type": "string" + "classificationCode": { + "type": "string", + "description": "Classification code for the associated body system. Must match an active code returned by the /disabilities endpoint on the [Benefits Reference Data API](https://developer.va.gov/explore/benefits/docs/benefits_reference_data?version=current).", + "example": "249470", + "nullable": true }, - "country": { - "type": "string" + "ratedDisabilityId": { + "description": "When submitting a contention with action type 'INCREASE', the previously rated disability id may be included.", + "type": "string", + "example": "1100583", + "nullable": true }, - "zipFirstFive": { - "type": "string" + "diagnosticCode": { + "description": "If the disabilityActionType is 'NONE' or 'INCREASE', the diagnosticCode should correspond to an existing rated disability.", + "type": "integer", + "example": 9999, + "nullable": true }, - "zipLastFour": { - "type": "string" + "isRelatedToToxicExposure": { + "type": "boolean", + "description": "Is the disability related to toxic exposures? If true, related 'toxicExposure' must be included.", + "example": true, + "default": false, + "nullable": true }, - "dates": { - "type": "object", - "properties": { - "beginDate": { - "type": "string" - }, - "endDate": { - "type": "string" - } + "specialIssues": { + "type": "array", + "nullable": true, + "uniqueItems": true, + "items": { + "maxItems": 2, + "additionalProperties": false, + "type": "string", + "enum": [ + "POW", + "EMP" + ] } - } - } - }, - "homeless": { - "type": "object", - "properties": { - "currentlyHomeless": { - "type": "object", - "properties": { - "currentlyHomeless": { - "type": "object", - "properties": { - "homelessSituationOptions": { - "type": "string" - }, - "otherDescription": { - "type": "string" - } + }, + "secondaryDisabilities": { + "description": "If secondaryDisability is included, the following attributes are required: 'secondaryDisability.name', 'secondaryDisability.disabilityActionType' and 'secondaryDisability.serviceRelevance'", + "type": "array", + "items": { + "type": "object", + "additionalProperties": false, + "properties": { + "name": { + "description": "Name of the disability. The /disabilities endpoint on the [Benefits Reference Data API](https://developer.va.gov/explore/benefits/docs/benefits_reference_data?version=current) may be used to retrieve possible disability names.", + "type": "string", + "pattern": "^$|([a-zA-Z0-9\"\\/&\\(\\)\\-'.,# ]([a-zA-Z0-9(\\)\\-'.,#\\[\\] ])?)+$", + "example": "PTSD (post traumatic stress disorder)", + "maxLength": 255 + }, + "exposureOrEventOrInjury": { + "type": "string", + "description": "What caused the disability?", + "nullable": true, + "maxLength": 1000, + "examples": [ + "Agent Orange", + "radiation", + "burn pits" + ] + }, + "serviceRelevance": { + "description": "Explanation of how the disability(ies) relates to the in-service event/exposure/injury.", + "type": "string", + "nullable": true, + "maxLength": 1000, + "example": "Heavy equipment operator in service." + }, + "disabilityActionType": { + "description": "The status of the secondary disability.", + "type": "string", + "example": "SECONDARY", + "enum": [ + "SECONDARY" + ] + }, + "approximateDate": { + "description": "Approximate date disability began. Date must be in the past. \n Format can be either YYYY-MM-DD or YYYY-MM or YYYY", + "type": "string", + "pattern": "^(?:[0-9]{4}(?:-(?!00)(?:0[1-9]|1[0-2])(?:-(?:0[1-9]|[1-2][0-9]|3[0-1]))?)?)$", + "example": "2018-03-02 or 2018-03 or 2018", + "nullable": true + }, + "classificationCode": { + "type": "string", + "description": "Classification code for the associated body system. Must match an active code returned by the /disabilities endpoint on the [Benefits Reference Data API](https://developer.va.gov/explore/benefits/docs/benefits_reference_data?version=current).", + "example": "249470", + "nullable": true } } } - }, - "pointOfContact": { - "type": "string" - }, - "pointOfContactNumber": { - "type": "object", - "properties": { - "telephone": { - "type": "string" - }, - "internationalTelephone": { - "type": "string" - } - } } } - }, - "toxicExposure": { + } + }, + "treatments": { + "description": "Identifies the Service Treatment information of the Veteran. The combination of treatedDisabilityName, center name, center city, and center state must be less than 1000 characters to successfully generate a PDF.", + "type": "array", + "nullable": true, + "uniqueItems": true, + "items": { "type": "object", + "additionalProperties": false, "properties": { - "gulfWarHazardService": { - "type": "object", - "properties": { - "servedInGulfWarHazardLocations": { - "type": "string" - }, - "serviceDates": { - "type": "object", - "properties": { - "beginDate": { - "type": "string" - }, - "endDate": { - "type": "string" - } - } - } - } + "beginDate": { + "description": "Begin date for treatment. If treatment began from 2005 to present, you do not need to provide dates. Each treatment begin date must be after the first 'servicePeriod.activeDutyBeginDate'.", + "type": "string", + "pattern": "^(?:19|20)[0-9][0-9]$|^(?:19|20)[0-9][0-9]-(0[1-9]|1[0-2])$", + "example": "2018-06 or 2018", + "nullable": true }, - "herbicideHazardService": { - "type": "object", - "properties": { - "servedInHerbicideHazardLocations": { - "type": "string" - }, - "otherLocationsServed": { - "type": "string" - }, - "serviceDates": { - "type": "object", - "properties": { - "beginDate": { - "type": "string" - }, - "endDate": { - "type": "string" - } - } - } + "treatedDisabilityNames": { + "description": "Name(s) of disabilities treated in this time frame.", + "type": "array", + "nullable": true, + "maxItems": 101, + "items": { + "type": "string", + "additionalProperties": false, + "example": [ + "PTSD (post traumatic stress disorder)", + "Trauma" + ] } }, - "additionalHazardExposures": { + "center": { + "description": "VA Medical Center(s) and Department of Defense Military Treatment Facilities where the Veteran received treatment after discharge for any claimed disabilities.", "type": "object", + "nullable": true, + "additionalProperties": false, "properties": { - "additionalExposures": { - "type": "array", - "items": { - "type": "string" - } + "name": { + "description": "Name of facility Veteran was treated in. The /treatment-centers endpoint on the [Benefits Reference Data API](https://developer.va.gov/explore/benefits/docs/benefits_reference_data?version=current) may be used to retrieve possible treatment center names.", + "type": "string", + "nullable": true, + "pattern": "([a-zA-Z0-9\"/&()\\'-'.,# ]([a-zA-Z0-9()\\'-'.,# ])?)+$", + "example": "Private Facility 2", + "minLength": 1, + "maxLength": 100 }, - "specifyOtherExposures": { - "type": "string" + "city": { + "description": "City of treatment facility.", + "type": "string", + "pattern": "([a-zA-Z0-9\\-'.# ]([a-zA-Z0-9\\-'.# ])?)+$", + "example": "Portland", + "nullable": true, + "minLength": 0, + "maxLength": 30 }, - "exposureDates": { - "type": "object", - "properties": { - "beginDate": { - "type": "string" - }, - "endDate": { - "type": "string" - } - } - } - } - }, - "multipleExposures": { - "type": "array", - "items": { - "type": "object", - "properties": { - "hazardExposedTo": { - "type": "string" - }, - "exposureLocation": { - "type": "string" - }, - "exposureDates": { - "type": "object", - "properties": { - "beginDate": { - "type": "string" - }, - "endDate": { - "type": "string" - } - } - } + "state": { + "description": "State of treatment facility.", + "type": "string", + "pattern": "^$|^[a-z,A-Z]{2}$", + "example": "OR", + "nullable": true } } } } - }, - "disabilities": { - "type": "array", - "items": { - "type": "object", - "properties": { - "name": { - "type": "string" - }, - "exposureOrEventOrInjury": { - "type": "string" - }, - "serviceRelevance": { - "type": "string" - }, - "approximateDate": { - "type": "string" - }, - "disabilityActionType": { - "type": "string" - }, - "classificationCode": { - "type": "string" - }, - "ratedDisabilityId": { - "type": "string" - }, - "diagnosticCode": { - "type": "integer" - }, - "isRelatedToToxicExposure": { - "type": "boolean" - }, - "secondaryDisabilities": { - "type": "array", - "items": { - "type": "object", - "properties": { - "name": { - "type": "string" - }, - "exposureOrEventOrInjury": { - "type": "string" - }, - "serviceRelevance": { - "type": "string" - }, - "disabilityActionType": { - "type": "string" - }, - "approximateDate": { - "type": "string" - }, - "classificationCode": { - "type": "string" - } - } + } + }, + "serviceInformation": { + "type": "object", + "additionalProperties": false, + "required": [ + "servicePeriods" + ], + "properties": { + "alternateNames": { + "description": "List any other names under which the Veteran served, if applicable.", + "type": "array", + "nullable": true, + "maxItems": 100, + "uniqueItems": true, + "items": { + "type": "string", + "additionalProperties": false, + "examples": [ + "jane", + "janey lee", + "jane lee MacDonald" + ] + } + }, + "servicePeriods": { + "description": "Identifies the Service dates and Branch the Veteran served in.", + "type": "array", + "minItems": 1, + "items": { + "type": "object", + "required": [ + "serviceBranch", + "serviceComponent", + "activeDutyBeginDate", + "activeDutyEndDate" + ], + "properties": { + "serviceBranch": { + "description": "Branch of service during period. The /service-branches endpoint on the [Benefits Reference Data API](https://developer.va.gov/explore/benefits/docs/benefits_reference_data?version=current) may be used to retrieve list of possible service branches.", + "type": "string", + "maxLength": 1000, + "example": "Air Force" + }, + "serviceComponent": { + "type": "string", + "description": "", + "enum": [ + "Active", + "Reserves", + "National Guard" + ] + }, + "activeDutyBeginDate": { + "description": "Date started active duty.", + "type": "string", + "pattern": "^(?:[0-9]{4})-(?:0[1-9]|1[0-2])-(?:0[1-9]|[1-2][0-9]|3[0-1])$", + "example": "2018-06-06" + }, + "activeDutyEndDate": { + "description": "Date completed active duty.", + "type": "string", + "pattern": "^(?:[0-9]{4})-(?:0[1-9]|1[0-2])-(?:0[1-9]|[1-2][0-9]|3[0-1])$", + "example": "2018-06-06" + }, + "separationLocationCode": { + "description": "Location code for the facility the Veteran plans to separate from. Code must match the values returned by the /intake-sites endpoint on the [Benefits reference Data API](https://developer.va.gov/explore/benefits/docs/benefits_reference_data?version=current).", + "type": "string", + "nullable": true, + "example": "98283" } } } - } - }, - "treatments": { - "type": "array", - "items": { + }, + "servedInActiveCombatSince911": { + "type": "string", + "enum": [ + "YES", + "NO" + ], + "description": "Did Veteran serve in a combat zone since 9-11-2001?", + "example": "YES", + "nullable": true + }, + "reservesNationalGuardService": { "type": "object", + "nullable": true, + "additionalProperties": false, "properties": { - "beginDate": { - "type": "string" - }, - "treatedDisabilityNames": { - "type": "array", - "items": { - "type": "string" - } + "component": { + "type": "string", + "nullable": true, + "description": "", + "enum": [ + "Reserves", + "National Guard" + ] }, - "center": { + "obligationTermsOfService": { "type": "object", + "nullable": true, + "description": "If 'obligationTermsOfService' is included, the following attributes are required: 'beginDate ' and 'endDate'.", + "additionalProperties": false, "properties": { - "name": { - "type": "string" - }, - "city": { - "type": "string" + "beginDate": { + "type": "string", + "nullable": true, + "pattern": "^(?:[0-9]{4})-(?:0[1-9]|1[0-2])-(?:0[1-9]|[1-2][0-9]|3[0-1])$", + "example": "2018-06-06" }, - "state": { - "type": "string" + "endDate": { + "type": "string", + "nullable": true, + "pattern": "^(?:[0-9]{4})-(?:0[1-9]|1[0-2])-(?:0[1-9]|[1-2][0-9]|3[0-1])$", + "example": "2018-06-06" } } - } - } - } - }, - "serviceInformation": { - "type": "object", - "properties": { - "alternateNames": { - "type": "array", - "items": { - "type": "string" - } - }, - "servicePeriods": { - "type": "array", - "items": { + }, + "unitName": { + "type": "string", + "nullable": true, + "maxLength": 1000, + "pattern": "^$|([a-zA-Z0-9\\-'.,# ][a-zA-Z0-9\\-'.,# ]?)*$" + }, + "unitAddress": { + "type": "string", + "maxLength": 1000, + "pattern": "^$|^([-a-zA-Z0-9'.,&# ])+$", + "nullable": true + }, + "unitPhone": { "type": "object", + "nullable": true, + "additionalProperties": false, "properties": { - "serviceBranch": { - "type": "string" - }, - "serviceComponent": { - "type": "string" - }, - "activeDutyBeginDate": { - "type": "string" - }, - "activeDutyEndDate": { - "type": "string" + "areaCode": { + "type": "string", + "nullable": true, + "maxLength": 3, + "pattern": "^$|^\\d{3}$", + "example": "555" }, - "separationLocationCode": { - "type": "string" - } - } - } - }, - "servedInActiveCombatSince911": { - "type": "string" - }, - "reservesNationalGuardService": { - "type": "object", - "properties": { - "component": { - "type": "string" - }, - "obligationTermsOfService": { - "type": "object", - "properties": { - "beginDate": { - "type": "string" - }, - "endDate": { - "type": "string" - } - } - }, - "unitName": { - "type": "string" - }, - "unitAddress": { - "type": "string" - }, - "unitPhone": { - "type": "object", - "properties": { - "areaCode": { - "type": "string" - }, - "phoneNumber": { - "type": "string" - } + "phoneNumber": { + "type": "string", + "nullable": true, + "maxLength": 20, + "example": "5555555" } - }, - "receivingInactiveDutyTrainingPay": { - "type": "string" } + }, + "receivingInactiveDutyTrainingPay": { + "type": "string", + "enum": [ + "YES", + "NO" + ], + "nullable": true, + "example": "YES" } - }, - "federalActivation": { - "type": "object", - "properties": { - "activationDate": { - "type": "string" - }, - "anticipatedSeparationDate": { - "type": "string" - } + } + }, + "federalActivation": { + "description": "If federalActivation is present then reservesNationalGuardService.obligationTermsOfService.beginDate, reservesNationalGuardService.obligationTermsOfService.endDate and reservesNationalGuardService.unitName are required", + "type": "object", + "nullable": true, + "additionalProperties": false, + "properties": { + "activationDate": { + "description": "Date cannot be in the future and must be after the earliest servicePeriod.activeDutyBeginDate.", + "type": "string", + "pattern": "^(?:[0-9]{4})-(?:0[1-9]|1[0-2])-(?:0[1-9]|[1-2][0-9]|3[0-1])$", + "example": "2018-06-06", + "nullable": true + }, + "anticipatedSeparationDate": { + "description": "Anticipated date of separation. Date must be in the future.", + "type": "string", + "pattern": "^(?:[0-9]{4})-(?:0[1-9]|1[0-2])-(?:0[1-9]|[1-2][0-9]|3[0-1])$", + "example": "2018-06-06", + "nullable": true } } }, "confinements": { "type": "array", + "nullable": true, + "uniqueItems": true, "items": { + "additionalProperties": false, "type": "object", "properties": { "approximateBeginDate": { - "type": "string" + "description": "The approximateBeginDate must be after the earliest servicePeriod activeDutyBeginDate.", + "type": "string", + "nullable": false, + "pattern": "^(?:[0-9]{4})-(?:0[1-9]|1[0-2])-(?:0[1-9]|[1-2][0-9]|3[0-1])$|(?:[0-9]{4})-(?:0[1-9]|1[0-2])$", + "example": "2018-06-06 or 2018-06" }, "approximateEndDate": { - "type": "string" + "type": "string", + "nullable": false, + "pattern": "^(?:[0-9]{4})-(?:0[1-9]|1[0-2])-(?:0[1-9]|[1-2][0-9]|3[0-1])$|(?:[0-9]{4})-(?:0[1-9]|1[0-2])$", + "example": "2018-06-06 or 2018-06" } } } - } - }, - "servicePay": { - "type": "object", - "properties": { - "receivingMilitaryRetiredPay": { - "type": "string" - }, - "futureMilitaryRetiredPay": { - "type": "string" - }, - "futureMilitaryRetiredPayExplanation": { - "type": "string" - }, - "militaryRetiredPay": { - "type": "object", - "properties": { - "branchOfService": { - "type": "string" - }, - "monthlyAmount": { - "type": "integer" - } - } - }, - "retiredStatus": { - "type": "string" - }, - "favorMilitaryRetiredPay": { - "type": "boolean" - }, - "receivedSeparationOrSeverancePay": { - "type": "string" - }, - "separationSeverancePay": { - "type": "object", - "properties": { - "datePaymentReceived": { - "type": "string" - }, - "branchOfService": { - "type": "string" - }, - "preTaxAmountReceived": { - "type": "integer" - } + } + } + }, + "servicePay": { + "type": "object", + "nullable": true, + "additionalProperties": false, + "properties": { + "receivingMilitaryRetiredPay": { + "description": "Is the Veteran receiving military retired pay?", + "type": "string", + "enum": [ + "YES", + "NO" + ], + "example": "YES", + "nullable": true + }, + "futureMilitaryRetiredPay": { + "description": "Will the Veteran receive military retired pay pay in future? \n If true, then 'futurePayExplanation' is required.", + "type": "string", + "enum": [ + "YES", + "NO" + ], + "example": "YES", + "nullable": true + }, + "futureMilitaryRetiredPayExplanation": { + "description": "Explains why future pay will be received.", + "type": "string", + "maxLength": 1000, + "example": "Will be retiring soon.", + "nullable": true + }, + "militaryRetiredPay": { + "type": "object", + "nullable": true, + "description": "", + "properties": { + "branchOfService": { + "description": "Branch of service. The /service-branches endpoint on the [Benefits Reference Data API](https://developer.va.gov/explore/benefits/docs/benefits_reference_data?version=current) may be used to retrieve list of possible service branches.", + "type": "string", + "maxLength": 1000, + "nullable": true, + "example": "Air Force" + }, + "monthlyAmount": { + "description": "Amount being received.", + "type": "integer", + "nullable": true, + "minimum": 1, + "maximum": 999999, + "example": 100 + } + } + }, + "retiredStatus": { + "type": "string", + "nullable": true, + "description": "", + "enum": [ + "RETIRED", + "TEMPORARY_DISABILITY_RETIRED_LIST", + "PERMANENT_DISABILITY_RETIRED_LIST" + ] + }, + "favorMilitaryRetiredPay": { + "description": "Is the Veteran waiving VA benefits to retain military retired pay? See item 26 on form 21-526EZ for more details.", + "type": "boolean", + "nullable": true, + "example": true, + "default": false + }, + "receivedSeparationOrSeverancePay": { + "description": "Has the Veteran ever received separation pay, disability severance pay, or any other lump sum payment from their branch of service?", + "type": "string", + "enum": [ + "YES", + "NO" + ], + "example": "YES", + "nullable": true + }, + "separationSeverancePay": { + "type": "object", + "nullable": true, + "description": "", + "properties": { + "datePaymentReceived": { + "description": "Approximate date separation pay was received. \n Format can be either YYYY-MM-DD or YYYY-MM or YYYY", + "type": "string", + "pattern": "^(?:[0-9]{4})-(?:0[1-9]|1[0-2])-(?:0[1-9]|[1-2][0-9]|3[0-1])$|(?:[0-9]{4})$|(?:[0-9]{4})-(?:0[1-9]|1[0-2])$", + "example": "2018-03-02 or 2018-03 or 2018" + }, + "branchOfService": { + "description": "Branch of service. The /service-branches endpoint on the [Benefits Reference Data API](https://developer.va.gov/explore/benefits/docs/benefits_reference_data?version=current) may be used to retrieve list of possible service branches.", + "type": "string", + "nullable": true, + "maxLength": 1000, + "example": "Air Force" + }, + "preTaxAmountReceived": { + "description": "Amount being received.", + "type": "integer", + "nullable": true, + "minimum": 1, + "maximum": 999999, + "example": 100 } - }, - "favorTrainingPay": { - "type": "boolean" } + }, + "favorTrainingPay": { + "description": "Is the Veteran waiving VA benefits to retain training pay? See item 28 on form 21-526EZ for more details. ", + "type": "boolean", + "nullable": true, + "example": true, + "default": false } - }, - "directDeposit": { - "type": "object", - "properties": { - "noAccount": { - "type": "boolean" - }, - "accountNumber": { - "type": "string" - }, - "accountType": { - "type": "string" - }, - "financialInstitutionName": { - "type": "string" - }, - "routingNumber": { - "type": "string" - } + } + }, + "directDeposit": { + "type": "object", + "nullable": true, + "additionalProperties": false, + "description": "If direct deposit information is included, the following attributes are required: accountType, accountNumber, routingNumber.", + "properties": { + "noAccount": { + "type": "boolean", + "nullable": true, + "description": "Claimant certifies that they do not have an account with a financial institution or certified payment agent.", + "default": false + }, + "accountNumber": { + "description": "Account number for the direct deposit.", + "pattern": "^(?:[a-zA-Z0-9-]{4,1000})?$", + "type": "string", + "maxLength": 1000, + "nullable": true, + "example": "123123123123" + }, + "accountType": { + "description": "Account type for the direct deposit.", + "type": "string", + "nullable": true, + "example": "CHECKING", + "enum": [ + "CHECKING", + "SAVINGS" + ] + }, + "financialInstitutionName": { + "description": "Provide the name of the financial institution where the Veteran wants the direct deposit.", + "maxLength": 1000, + "type": "string", + "nullable": true, + "example": "Some Bank" + }, + "routingNumber": { + "description": "Routing number for the direct deposit.", + "type": "string", + "maxLength": 1000, + "nullable": true, + "pattern": "^$|^\\d{0,1000}$", + "example": "123123123" } - }, - "claimantCertification": { - "type": "boolean" - }, - "claimNotes": { - "type": "string", - "description": "An optional notes section.", - "maxLength": 4000 } + }, + "claimantCertification": { + "type": "boolean", + "description": "Claimant certifies and authorizes release of information.", + "default": false + }, + "claimNotes": { + "type": "string", + "description": "An optional notes section.", + "maxLength": 4000 + } + } + } + } + } + }, + "example": { + "data": { + "type": "form/526", + "attributes": { + "claimProcessType": "STANDARD_CLAIM_PROCESS", + "claimNotes": "Some things that are important to know, and are not included in any other place.", + "veteranIdentification": { + "serviceNumber": "123456789", + "veteranNumber": { + "telephone": "5555555555" + }, + "mailingAddress": { + "addressLine1": "123 Main Street", + "addressLine2": "Unit 1", + "addressLine3": "Room 2", + "city": "Schenectady", + "state": "NY", + "country": "USA", + "zipFirstFive": "12345", + "zipLastFour": "1234" + }, + "emailAddress": { + "email": "valid@somedomain.com", + "agreeToEmailRelatedToClaim": true + }, + "currentVaEmployee": false + }, + "changeOfAddress": { + "typeOfAddressChange": "TEMPORARY", + "addressLine1": "456 Main Street", + "addressLine2": "Unit 3", + "addressLine3": "Room 4", + "city": "Schenectady", + "state": "NY", + "country": "USA", + "zipFirstFive": "12345", + "zipLastFour": "9897", + "dates": { + "beginDate": "2025-06-04", + "endDate": "2026-06-04" + } + }, + "homeless": { + "currentlyHomeless": { + "homelessSituationOptions": "OTHER", + "otherDescription": "Other living situation" + }, + "pointOfContact": "John Doe", + "pointOfContactNumber": { + "telephone": "5555555555" + } + }, + "toxicExposure": { + "gulfWarHazardService": { + "servedInGulfWarHazardLocations": "NO" + }, + "herbicideHazardService": { + "servedInHerbicideHazardLocations": "YES", + "otherLocationsServed": "Other locations served", + "serviceDates": { + "beginDate": "1972-05", + "endDate": "1980-10" + } + }, + "additionalHazardExposures": { + "additionalExposures": [ + "OTHER" + ], + "specifyOtherExposures": "Agent Orange", + "exposureDates": { + "beginDate": "1972-05", + "endDate": "1980-10" } - } - } - } - } - } - } - } - }, - "401": { - "description": "Unauthorized", - "content": { - "application/json": { - "example": { - "errors": [ - { - "title": "Not authorized", - "status": "401", - "detail": "Not authorized" - } - ] - }, - "schema": { - "required": [ - "errors" - ], - "properties": { - "errors": { - "type": "array", - "items": { - "additionalProperties": false, - "required": [ - "title", - "detail" - ], - "properties": { - "title": { - "type": "string", - "description": "HTTP error title" - }, - "detail": { - "type": "string", - "description": "HTTP error detail" - }, - "status": { - "type": "string", - "description": "HTTP error status code" + }, + "multipleExposures": [ + { + "hazardExposedTo": "Agent Orange", + "exposureLocation": "Vietnam", + "exposureDates": { + "beginDate": "1972-05", + "endDate": "1973-01" + } }, - "source": { - "type": "object", - "additionalProperties": false, - "description": "Source of error", - "properties": { - "pointer": { - "type": "string", - "description": "Pointer to source of error" - } + { + "hazardExposedTo": "Agent Orange", + "exposureLocation": "Vietnam", + "exposureDates": { + "beginDate": "1979-04", + "endDate": "1980-10" } } + ] + }, + "disabilities": [ + { + "name": "Diabetes", + "exposureOrEventOrInjury": "Agent Orange", + "serviceRelevance": "Service in Vietnam War", + "approximateDate": "1975-05", + "disabilityActionType": "NEW", + "isRelatedToToxicExposure": true + }, + { + "name": "Hearing Loss", + "exposureOrEventOrInjury": "Noise", + "serviceRelevance": "Heavy equipment operator in service", + "approximateDate": "1968-07", + "disabilityActionType": "INCREASE", + "classificationCode": "8987", + "ratedDisabilityId": "1234567", + "diagnosticCode": 5678, + "isRelatedToToxicExposure": false } - } - } - } - } - } - } - }, - "404": { - "description": "Resource not found", - "content": { - "application/json": { - "example": { - "errors": [ - { - "status": "404", - "title": "Resource not found", - "detail": "Resource not found" - } - ] - }, - "schema": { - "required": [ - "errors" - ], - "properties": { - "errors": { - "type": "array", - "items": { - "additionalProperties": false, - "required": [ - "title", - "detail" + ], + "treatments": [ + { + "beginDate": "2021-04", + "treatedDisabilityNames": [ + "Diabetes" + ], + "center": { + "name": "ATLANTA VA MEDICAL CENTER", + "state": "GA", + "city": "ATLANTA" + } + }, + { + "beginDate": "1996-03", + "treatedDisabilityNames": [ + "Hearing Loss" + ], + "center": { + "name": "ATLANTA VA MEDICAL CENTER", + "state": "GA", + "city": "ATLANTA" + } + } + ], + "serviceInformation": { + "alternateNames": [ + "Jon Doe", + "Jane Doe" ], - "properties": { - "title": { - "type": "string", - "description": "HTTP error title" + "servicePeriods": [ + { + "serviceBranch": "Air Force", + "serviceComponent": "Active", + "activeDutyBeginDate": "1964-11-14", + "activeDutyEndDate": "1980-10-30", + "separationLocationCode": "98289" + } + ], + "servedInActiveCombatSince911": "NO", + "reservesNationalGuardService": { + "component": "National Guard", + "obligationTermsOfService": { + "beginDate": "1990-11-24", + "endDate": "1995-11-17" }, - "detail": { - "type": "string", - "description": "HTTP error detail" + "unitName": "National Guard Unit Name", + "unitAddress": "1243 Main Street", + "unitPhone": { + "areaCode": "555", + "phoneNumber": "5555555" }, - "status": { - "type": "string", - "description": "HTTP error status code" + "receivingInactiveDutyTrainingPay": "YES" + }, + "confinements": [ + { + "approximateBeginDate": "1970-06-11", + "approximateEndDate": "1970-09-11" } - } - } + ] + }, + "servicePay": { + "receivingMilitaryRetiredPay": "NO", + "futureMilitaryRetiredPay": "YES", + "futureMilitaryRetiredPayExplanation": "Explanation of future military retired pay", + "militaryRetiredPay": { + "branchOfService": "Air Force", + "monthlyAmount": 240 + }, + "retiredStatus": "PERMANENT_DISABILITY_RETIRED_LIST", + "favorMilitaryRetiredPay": false, + "receivedSeparationOrSeverancePay": "YES", + "separationSeverancePay": { + "datePaymentReceived": "2018-07-31", + "branchOfService": "Air Force", + "preTaxAmountReceived": 179 + }, + "favorTrainingPay": false + }, + "directDeposit": { + "accountNumber": "123123123123", + "accountType": "CHECKING", + "financialInstitutionName": "Chase", + "routingNumber": "123456789" + }, + "claimantCertification": true } } } } } - } - }, - "requestBody": { - "content": { - "multipart/form-data": { - "schema": { - "type": "object", - "properties": { - "attachment1": { - "type": "file", - "description": "Attachment contents. Must be provided in binary PDF or [base64 string](https://raw.githubusercontent.com/department-of-veterans-affairs/vets-api/master/modules/claims_api/spec/fixtures/base64pdf) format and less than 11 in x 11 in.\n" - }, - "attachment2": { - "type": "file", - "description": "Attachment contents. Must be provided in binary PDF or [base64 string](https://raw.githubusercontent.com/department-of-veterans-affairs/vets-api/master/modules/claims_api/spec/fixtures/base64pdf) format and less than 11 in x 11 in.\n" - } - } - } - } - } + }, + "required": true } } }, @@ -10764,9 +6442,7 @@ ] }, { - "bearer_token": [ - - ] + "bearer_token": [] } ], "parameters": [ @@ -12276,9 +7952,7 @@ ] }, { - "bearer_token": [ - - ] + "bearer_token": [] } ], "parameters": [ @@ -12551,9 +8225,7 @@ ] }, { - "bearer_token": [ - - ] + "bearer_token": [] } ], "description": "Retrieves a specific claim for a Veteran", @@ -12634,9 +8306,7 @@ "documentsNeeded": false, "endProductCode": "404", "evidenceWaiverSubmitted5103": false, - "errors": [ - - ], + "errors": [], "jurisdiction": "National Work Queue", "lighthouseId": null, "maxEstClaimDate": null, @@ -12644,9 +8314,7 @@ "status": "CANCELED", "submitterApplicationCode": "EBN", "submitterRoleCode": "VET", - "supportingDocuments": [ - - ], + "supportingDocuments": [], "tempJurisdiction": null, "trackedItems": [ { @@ -12736,13 +8404,9 @@ "status": "ERRORED", "submitterApplicationCode": null, "submitterRoleCode": null, - "supportingDocuments": [ - - ], + "supportingDocuments": [], "tempJurisdiction": null, - "trackedItems": [ - - ] + "trackedItems": [] } } } @@ -13147,9 +8811,7 @@ "decision_notification_sent": "No", "development_letter_sent": "No", "end_prdct_type_cd": "404", - "errors": [ - - ], + "errors": [], "poa": "RANDOM E PERSON", "program_type": "CPL", "ptcpnt_clmant_id": "111111111", @@ -13308,9 +8970,7 @@ ] }, { - "bearer_token": [ - - ] + "bearer_token": [] } ], "description": "Returns Veteran's last active Intent to File submission for given benefit type of compensation, pension, or survivor.", @@ -13552,9 +9212,7 @@ ] }, { - "bearer_token": [ - - ] + "bearer_token": [] } ], "description": "Establishes an Intent to File for disability compensation, pension, and survivor claims.", @@ -13580,8 +9238,8 @@ "id": "1", "type": "intent_to_file", "attributes": { - "creationDate": "2024-12-04", - "expirationDate": "2025-12-04", + "creationDate": "2024-12-16", + "expirationDate": "2025-12-16", "type": "compensation", "status": "active" } @@ -13899,9 +9557,7 @@ ] }, { - "bearer_token": [ - - ] + "bearer_token": [] } ], "description": "Validates an Intent to File for disability compensation, pension, and survivor claims.", @@ -14163,9 +9819,7 @@ ] }, { - "bearer_token": [ - - ] + "bearer_token": [] } ], "description": "Retrieves current Power of Attorney for Veteran or empty data if no POA is assigned.", @@ -14452,9 +10106,7 @@ ] }, { - "bearer_token": [ - - ] + "bearer_token": [] } ], "parameters": [ @@ -14477,7 +10129,7 @@ "application/json": { "example": { "data": { - "id": "19edfa42-b627-4d9e-afe5-cc26a03e1c32", + "id": "8ecf04c6-588d-4d57-bd41-4ae0c54c7576", "type": "individual", "attributes": { "code": "067", @@ -15227,9 +10879,7 @@ ] }, { - "bearer_token": [ - - ] + "bearer_token": [] } ], "parameters": [ @@ -15251,7 +10901,7 @@ "application/json": { "example": { "data": { - "id": "cb3310b8-55cd-49db-8577-575ca8a94b1c", + "id": "c0ca13ea-5360-4b41-a8af-8f89a181c023", "type": "organization", "attributes": { "code": "083", @@ -15910,9 +11560,7 @@ ] }, { - "bearer_token": [ - - ] + "bearer_token": [] } ], "parameters": [ @@ -16596,9 +12244,7 @@ ] }, { - "bearer_token": [ - - ] + "bearer_token": [] } ], "parameters": [ @@ -17217,9 +12863,7 @@ ] }, { - "bearer_token": [ - - ] + "bearer_token": [] } ], "parameters": [ @@ -17251,10 +12895,10 @@ "application/json": { "example": { "data": { - "id": "610d2a9f-38c7-4a47-b29b-cb81ddc62a11", + "id": "18158bc1-2245-4262-a9a9-d955b93b40ea", "type": "claimsApiPowerOfAttorneys", "attributes": { - "dateRequestAccepted": "2024-12-04", + "dateRequestAccepted": "2024-12-16", "previousPoa": null, "representative": { "serviceOrganization": { @@ -17489,9 +13133,7 @@ ] }, { - "bearer_token": [ - - ] + "bearer_token": [] } ], "parameters": [ @@ -17546,7 +13188,8 @@ "HIV", "ALCOHOLISM" ], - "procId": "3857415" + "id": "96fc2003-9ded-4a64-a7f2-798f3d018746", + "type": "power-of-attorney-request" } } }, @@ -17828,10 +13471,15 @@ "description": "AUTHORIZATION FOR REPRESENTATIVE TO ACT ON CLAIMANT'S BEHALF TO CHANGE CLAIMANT'S ADDRESS.", "type": "boolean" }, - "procId": { - "description": "The process ID of the new Power of Attorney request.", + "id": { + "description": "The ID of the new Power of Attorney request.", + "type": "string", + "example": "12e13134-7229-4e44-90ae-bcea2a4525fa" + }, + "type": { + "description": "The type of Power of Attorney request.", "type": "string", - "example": "12345" + "example": "power-of-attorney-request" } } } diff --git a/modules/claims_api/app/swagger/claims_api/v2/production/swagger.json b/modules/claims_api/app/swagger/claims_api/v2/production/swagger.json index 686a4ce3e30..e03ff977473 100644 --- a/modules/claims_api/app/swagger/claims_api/v2/production/swagger.json +++ b/modules/claims_api/app/swagger/claims_api/v2/production/swagger.json @@ -3,13 +3,9 @@ "info": { "title": "Benefits Claims", "version": "v2", - "description": "## Background\n\nThe Benefits Claims API Version 2 lets internal consumers: \n\n- Retrieve existing claim information, including status, by claim ID.\n- Automatically establish an Intent To File (21-0966) in VBMS.\n- Automatically establish a disability compensation claim (21-526EZ) in VBMS.\n- Digitally submit supporting documentation for disability compensation claims.\n- Retrieve the active Power of Attorney organization of individual with power of attorney for a claimant.\n- Automatically establish a power of attorney appointment in VBMS for an accredited organization (VA Form 21-22).\n- Automatically establish a power of attorney appointment in VBMS for an accredited individual (VA Form 21-22a).\n\nYou should use the [Benefits Claims API Version 1](https://developer.va.gov/explore/benefits/docs/claims?version=current) if you are a consumer outside of VA and do not have the necessary VA agreements to use this API.\n \n## Appointing an accredited representative for dependents\n\nDependents of Veterans, such as spouses, children (biological and step), and parents (biological and foster) may be eligible for VA benefits and can request representation by an accredited representative.\n\nTo file claims through an accredited representative, dependents must appoint their own. Once appointed, the representative will have power of attorney (POA) to assist with the dependentʼs VA claims.\n\nBefore appointing a representative, the dependentʼs relationship to the Veteran must be established. If a new representative is being appointed, the dependentʼs relationship to the Veteran will be validated first. The representative will be appointed to the dependent, not the Veteran.\n\n## Technical Overview\n\nThis API accepts a payload of requests and responses with the payload identifying the claim and Veteran. Responses provide the submission’s processing status. Responses also provide a unique ID which can be used with the appropriate GET endpoint to return detailed, end-to-end claims status tracking. \n\nEnd-to-end claims tracking provides the status of claims as they move through the submission process, but does not return whether the claim was approved or denied. \n\n### Claim statuses\n\nClaims are first submitted by this API and then established in Veterans Benefits Management System (VBMS). A 200 response means that the claim was successfully submitted by the API. It does not mean VA has received the claim. Use the appropriate GET endpoint and the ID returned with your submission response to confirm the status of the submission. Statuses are:\n\n- Pending - the claim is successfully submitted for processing\n- Errored - the submission encountered upstream errors\n- Canceled - the claim was identified as a duplicate or another issue caused the claim to be canceled. For duplicate claims, the tracking of the claim's progress happens under a different Claim ID . \n\nOther statuses this API returns align with the [VA.gov](http://va.gov/) [claim status descriptions](https://www.va.gov/resources/what-your-claim-status-means/), which are:\n\n- Claim received\n- Initial review\n- Evidence gathering, review, and decision\n- Preparation for notification\n- Complete\n\n### Finding a Veteran's unique VA ID\n\nThis API uses a unique Veteran identifier to identify the subject of each API request. This Veteran identifier can be retrieved by passing the Veteran’s first name, last name, DOB, and SSN to the ‘/veteran-id’ endpoint. This identifier should then be used as the Veteran ID parameter in request URLs.\n\nNote: though Veteran identifiers are typically static, they may change over time. If a specific Veteran ID suddenly responds with a ‘404 not found’ error, the identifier may have changed. It’s a good idea to periodically check the identifier for each Veteran.\n\n### Authentication and authorization\n\nThe authentication model for the Benefits Claims Version 2 is based on OAuth 2.0 / OpenID Connect and supports the [client credentials grant](https://developer.va.gov/explore/authorization/docs/client-credentials?api=claims).\n\n**Important**: To get production access, you must either work for VA or have specific VA agreements in place. If you have questions, [contact us](https://developer.va.gov/support/contact-us).\n\n### Test data for sandbox environment use\n\nWe use mock [test data in the sandbox environment](https://github.com/department-of-veterans-affairs/vets-api-clients/blob/master/test_accounts.md). Sandbox test data and test users for the Benefits Claims API are valid for all versions of the API.\n" + "description": "## Background\n\nThe Benefits Claims API Version 2 lets internal consumers: \n\n- Retrieve existing claim information, including status, by claim ID.\n- Automatically establish an Intent To File (21-0966) in VBMS.\n- Automatically establish a disability compensation claim (21-526EZ) in VBMS.\n- Digitally submit supporting documentation for disability compensation claims.\n- Retrieve the active Power of Attorney organization of individual with power of attorney for a claimant.\n- Automatically establish a power of attorney appointment in VBMS for an accredited organization (VA Form 21-22).\n- Automatically establish a power of attorney appointment in VBMS for an accredited individual (VA Form 21-22a).\n\nYou should use the [Benefits Claims API Version 1](https://developer.va.gov/explore/benefits/docs/claims?version=current) if you are a consumer outside of VA and do not have the necessary VA agreements to use this API.\n \n## Appointing an accredited representative for dependents\n\nDependents of Veterans, such as spouses, children (biological and step), and parents (biological and foster) may be eligible for VA benefits and can request representation by an accredited representative.\n\nTo file claims through an accredited representative, dependents must appoint their own. Once appointed, the representative will have power of attorney (POA) to assist with the dependentʼs VA claims.\n\nBefore appointing a representative, the dependentʼs relationship to the Veteran must be established. If a new representative is being appointed, the dependentʼs relationship to the Veteran will be validated first. The representative will be appointed to the dependent, not the Veteran.\n\n## Technical Overview\n\nThis API accepts a payload of requests and responses with the payload identifying the claim and Veteran. Responses provide the submission’s processing status. Responses also provide a unique ID which can be used with the appropriate GET endpoint to return detailed, end-to-end claims status tracking. \n\nEnd-to-end claims tracking provides the status of claims as they move through the submission process, but does not return whether the claim was approved or denied. \n\n### Claim statuses\n\nAfter you submit a disability compensation claim with the `POST /veterans/{veteranId}/526/synchronous` endpoint, it is then established in Veterans Benefits Management System (VBMS). A `202` response means that the claim was successfully submitted by the API. However, it does not mean VA has received the required 526EZ PDF. \n\nTo confirm the status of your submission, use the `GET /veterans/{veteranId}/claims/{id}` endpoint and the ID returned with your submission response. Statuses are: \n\n* **Pending**: The claim is successfully submitted for processing\n* **Errored**: The submission encountered upstream errors\n* **Canceled**: The claim was identified as a duplicate, or another issue caused the claim to be canceled. \n * For duplicate claims, the claim's progress is tracked under a different Claim ID than the one returned in your submission response. \n* **Claim received**: The claim was received, but hasn't been assigned to a reviewer yet.\n* **Initial review**: The claim has been assigned to a reviewer, who will determine if more information is needed.\n* **Evidence gathering, review, and decision**: VA is gathering evidence to make a decision from health care providers, government agencies, and other sources.\n* **Preparation for notification**: VA has made a decision on the claim, and is getting a decision letter ready to mail.\n* **Complete**: VA has sent a decision letter by U.S. mail.\n\n### Finding a Veteran's unique VA ID\n\nThis API uses Inegration Control Number (ICN) as a unique Veteran identifier to identify the subject of each API request. This identifier should be used as the `{veteranId}` parameter in request URLs.\n\n**Note**: though ICNs are typically static, they may change over time. If a specific ICN suddenly responds with a `404 not found` error, it may have changed. It’s a good idea to periodically check the ICN for each Veteran.\n\n### Authentication and authorization\n\nThe authentication model for the Benefits Claims Version 2 is based on OAuth 2.0 / OpenID Connect and supports the [client credentials grant](https://developer.va.gov/explore/authorization/docs/client-credentials?api=claims).\n\n**Important**: To get production access, you must either work for VA or have specific VA agreements in place. If you have questions, [contact us](https://developer.va.gov/support/contact-us).\n\n### Test data for sandbox environment use\n\nWe use mock [test data in the sandbox environment](https://github.com/department-of-veterans-affairs/vets-api-clients/blob/master/test_accounts.md). Sandbox test data and test users for the Benefits Claims API are valid for all versions of the API.\n" }, "tags": [ - { - "name": "Veteran Identifier", - "description": "Allows authenticated veterans and veteran representatives to retrieve a veteran's id." - }, { "name": "Claims", "description": "Allows authenticated and authorized users to access claims data for a given Veteran. No data is returned if the user is not authenticated and authorized.\n" @@ -69,272 +65,6 @@ } }, "paths": { - "/veteran-id:find": { - "post": { - "summary": "Retrieve Veteran ID.", - "tags": [ - "Veteran Identifier" - ], - "operationId": "postVeteranId", - "security": [ - { - "productionOauth": [ - "system/claim.read" - ] - }, - { - "sandboxOauth": [ - "system/claim.read" - ] - }, - { - "bearer_token": [ - - ] - } - ], - "description": "Allows authenticated and authorized users to retrieve a Veteran's ID.", - "parameters": [ - - ], - "responses": { - "201": { - "description": "Veteran's unique identifier", - "content": { - "application/json": { - "example": { - "id": "1012667145V762142" - }, - "schema": { - "additionalProperties": false, - "properties": { - "id": { - "type": "string", - "example": "1012667145V762142" - } - } - } - } - } - }, - "400": { - "description": "Bad Request", - "content": { - "application/json": { - "example": { - "errors": [ - { - "title": "invalid value for SSN", - "detail": "blank is not valid for SSN" - } - ] - }, - "schema": { - "required": [ - "errors" - ], - "properties": { - "errors": { - "type": "array", - "items": { - "additionalProperties": false, - "required": [ - "title", - "detail" - ], - "properties": { - "title": { - "type": "string", - "description": "HTTP error title" - }, - "detail": { - "type": "string", - "description": "HTTP error detail" - }, - "status": { - "type": "string", - "description": "HTTP error status code" - }, - "source": { - "type": "object", - "additionalProperties": false, - "description": "Source of error", - "properties": { - "pointer": { - "type": "string", - "description": "Pointer to source of error" - } - } - } - } - } - } - } - } - } - } - }, - "401": { - "description": "Unauthorized", - "content": { - "application/json": { - "example": { - "errors": [ - { - "title": "Not authorized", - "detail": "Not authorized" - } - ] - }, - "schema": { - "required": [ - "errors" - ], - "properties": { - "errors": { - "type": "array", - "items": { - "additionalProperties": false, - "required": [ - "title", - "detail" - ], - "properties": { - "title": { - "type": "string", - "description": "HTTP error title" - }, - "detail": { - "type": "string", - "description": "HTTP error detail" - }, - "status": { - "type": "string", - "description": "HTTP error status code" - }, - "source": { - "type": "object", - "additionalProperties": false, - "description": "Source of error", - "properties": { - "pointer": { - "type": "string", - "description": "Pointer to source of error" - } - } - } - } - } - } - } - } - } - } - }, - "404": { - "description": "Resource not found", - "content": { - "application/json": { - "example": { - "errors": [ - { - "title": "Resource not found", - "detail": "Resource not found" - } - ] - }, - "schema": { - "required": [ - "errors" - ], - "properties": { - "errors": { - "type": "array", - "items": { - "additionalProperties": false, - "required": [ - "title", - "detail" - ], - "properties": { - "title": { - "type": "string", - "description": "HTTP error title" - }, - "detail": { - "type": "string", - "description": "HTTP error detail" - }, - "status": { - "type": "string", - "description": "HTTP error status code" - }, - "source": { - "type": "object", - "additionalProperties": false, - "description": "Source of error", - "properties": { - "pointer": { - "type": "string", - "description": "Pointer to source of error" - } - } - } - } - } - } - } - } - } - } - } - }, - "requestBody": { - "content": { - "application/json": { - "schema": { - "type": "object", - "required": [ - "ssn", - "birthdate", - "firstName", - "lastName" - ], - "properties": { - "ssn": { - "type": "string", - "example": "796130115", - "description": "SSN of Veteran being represented" - }, - "firstName": { - "type": "string", - "example": "Tamara", - "description": "First name of Veteran being represented" - }, - "lastName": { - "type": "string", - "example": "Ellis", - "description": "Last name of Veteran being represented" - }, - "birthdate": { - "type": "string", - "example": "1967-06-19", - "description": "Date of birth of Veteran being represented, in ISO8601 format" - } - }, - "example": { - "ssn": "796130115", - "firstName": "Tamara", - "lastName": "Ellis", - "birthdate": "1967-06-19" - } - } - } - }, - "required": true - } - } - }, "/veterans/{veteranId}/claims/{id}/5103": { "post": { "summary": "Submit Evidence Waiver 5103", @@ -354,9 +84,7 @@ ] }, { - "bearer_token": [ - - ] + "bearer_token": [] } ], "description": "Submit Evidence Waiver 5103 for Veteran.", @@ -566,33 +294,26 @@ } } }, - "/veterans/{veteranId}/526": { + "/veterans/{veteranId}/526/synchronous": { "post": { - "summary": "Asynchronously establishes disability compensation claim", + "summary": "Submits disability compensation claim synchronously (restricted access)", "tags": [ "Disability Compensation Claims" ], - "operationId": "post526Claim", + "operationId": "post526ClaimSynchronous", "security": [ { "productionOauth": [ - "system/claim.read", - "system/claim.write" + "system/526.override" ] }, { "sandboxOauth": [ - "system/claim.read", - "system/claim.write" - ] - }, - { - "bearer_token": [ - + "system/526.override" ] } ], - "description": "Automatically establishes a disability compensation claim (21-526EZ) in Veterans Benefits Management System (VBMS). \nThis endpoint generates a filled and electronically signed 526EZ form, establishes the disability claim in VBMS, and \nsubmits the form to the Veteran's eFolder.\n\nA 202 response indicates the API submission was accepted. The claim has not reached VBMS until it has a CLAIM_RECEIVED status. \nCheck claim status using the GET veterans/{veteranId}/claims/{id} endpoint.\n\n**A substantially complete 526EZ claim must include:**\n* Veteran's name\n* Sufficient service information for VA to verify the claimed service\n* At least one claimed disability or medical condition and how it relates to service\n* Veteran and/or Representative signature\n\n**Standard and fully developed claims (FDCs)**\n\n[Fully developed claims (FDCs)](https://www.va.gov/disability/how-to-file-claim/evidence-needed/fully-developed-claims/)\nare claims certified by the submitter to include all information needed for processing. These claims process faster \nthan claims submitted through the standard claim process. If a claim is certified for the FDC, but is missing needed information, \nit will be processed as a standard claim.\n\nTo certify a claim for the FDC process, set the claimProcessType to FDC_PROGRAM.\n", + "description": "Automatically establishes a disability compensation claim (21-526EZ) in Veterans Benefits Management System (VBMS). This endpoint synchronously generates a filled and electronically signed 526EZ form and establishes the disability claim in VBMS. The 526EZ form is uploaded asynchronously.\n\nA 202 response indicates the API submission was accepted and the claim was established in VBMS. Check claim status using the GET veterans/{veteranId}/claims/{id} endpoint. The claim status details response will return the associated 526EZ PDF in the supportingDocuments list.\n\n**A substantially complete 526EZ claim must include:**\n* Veteran's name\n* Sufficient service information for VA to verify the claimed service\n* At least one claimed disability or medical condition and how it relates to service\n* Veteran and/or Representative signature\n\n**Standard and fully developed claims (FDCs)**\n\n[Fully developed claims (FDCs)](https://www.va.gov/disability/how-to-file-claim/evidence-needed/fully-developed-claims/)\nare claims certified by the submitter to include all information needed for processing. These claims process faster \nthan claims submitted through the standard claim process. If a claim is certified for the FDC, but is missing needed information, \nit will be processed as a standard claim.\n\nTo certify a claim for the FDC process, set the claimProcessType to FDC_PROGRAM.\n", "parameters": [ { "name": "veteranId", @@ -610,1935 +331,972 @@ "description": "Successful response", "content": { "application/json": { - "schema": { - "name": "data", - "required": [ - "data" - ], - "properties": { - "data": { - "type": "object", - "required": [ - "id", - "type", - "attributes" - ], - "properties": { - "id": { - "type": "string", - "example": "7d0de77e-b7bd-4db7-a8d9-69a25482c80a" - }, - "type": { - "type": "string", - "example": "form/526" - }, + "examples": { + "202 without a transactionId": { + "value": { + "data": { + "id": "75be0d19-4649-4b81-a06c-b99e6b176e7f", + "type": "forms/526", "attributes": { - "description": "Claims API 526 Schema", - "type": "object", - "additionalProperties": false, - "required": [ - "claimantCertification", - "claimProcessType", - "disabilities", - "serviceInformation", - "veteranIdentification" - ], - "properties": { - "claimProcessType": { - "type": "string", - "description": "Select type of claim program/process that applies to the Veteran.", - "enum": [ - "STANDARD_CLAIM_PROCESS", - "FDC_PROGRAM", - "BDD_PROGRAM" - ] + "claimId": "600442191", + "claimProcessType": "STANDARD_CLAIM_PROCESS", + "claimNotes": "Some things that are important to know, and are not included in any other place.", + "veteranIdentification": { + "serviceNumber": "123456789", + "veteranNumber": { + "telephone": "5555555555", + "internationalTelephone": "+44 20 1234 5678" }, - "veteranIdentification": { - "type": "object", - "additionalProperties": false, - "required": [ - "mailingAddress", - "currentVaEmployee" + "mailingAddress": { + "addressLine1": "1234 Couch Street", + "addressLine2": "Unit 4", + "addressLine3": "Room 1", + "city": "Schenectady", + "state": "NY", + "country": "USA", + "zipFirstFive": "12345", + "zipLastFour": "1234" + }, + "emailAddress": { + "email": "valid@somedomain.com", + "agreeToEmailRelatedToClaim": true + }, + "currentVaEmployee": false + }, + "changeOfAddress": { + "typeOfAddressChange": "TEMPORARY", + "addressLine1": "10 Peach St", + "addressLine2": "Unit 4", + "addressLine3": "Room 1", + "city": "Schenectady", + "state": "NY", + "country": "USA", + "zipFirstFive": "12345", + "zipLastFour": "9897", + "dates": { + "beginDate": "2023-06-04", + "endDate": "2023-12-04" + } + }, + "homeless": { + "isCurrentlyHomeless": true, + "currentlyHomeless": { + "homelessSituationOptions": "FLEEING_CURRENT_RESIDENCE", + "otherDescription": "ABCDEFGHIJKLM" + }, + "isAtRiskOfBecomingHomeless": false, + "pointOfContact": "john stewart", + "pointOfContactNumber": { + "telephone": "5555555555", + "internationalTelephone": "+44 20 1234 5678" + } + }, + "toxicExposure": { + "gulfWarHazardService": { + "servedInGulfWarHazardLocations": "YES", + "serviceDates": { + "beginDate": "2018-07", + "endDate": "2018-08" + } + }, + "herbicideHazardService": { + "servedInHerbicideHazardLocations": "YES", + "otherLocationsServed": "ABCDEFGHIJKLM", + "serviceDates": { + "beginDate": "2018-07", + "endDate": "2018-08" + } + }, + "additionalHazardExposures": { + "additionalExposures": [ + "ASBESTOS", + "SHIPBOARD_HAZARD_AND_DEFENSE" ], - "properties": { - "serviceNumber": { - "type": "string", - "description": "Service identification number", - "maxLength": 1000, - "nullable": true - }, - "veteranNumber": { - "description": "If there isn't a ten digit phone number in VBMS for the Veteran, the exams will not be ordered. Including the phone number is recommended to avoid claim processing delays.", - "type": "object", - "nullable": true, - "properties": { - "telephone": { - "description": "Veteran's phone number.", - "type": "string", - "pattern": "^\\d{10}?$", - "example": "5555555555", - "nullable": true - }, - "internationalTelephone": { - "type": "string", - "description": "Veteran's international phone number.", - "example": "+44 20 1234 5678", - "maxLength": 1000, - "nullable": true - } - } - }, - "mailingAddress": { - "type": "object", - "additionalProperties": false, - "required": [ - "addressLine1", - "city", - "country" - ], - "properties": { - "addressLine1": { - "description": "Address line 1 for the Veteran's current mailing address.", - "type": "string", - "pattern": "^([-a-zA-Z0-9'.,&#]([-a-zA-Z0-9'.,&# ])?)+$", - "maxLength": 20, - "example": "1234 Couch Street" - }, - "addressLine2": { - "description": "Address line 2 for the Veteran's current mailing address.", - "type": "string", - "pattern": "^([-a-zA-Z0-9'.,&#]([-a-zA-Z0-9'.,&# ])?)+$", - "maxLength": 20, - "example": "Unit 4", - "nullable": true - }, - "addressLine3": { - "description": "Address line 3 for the Veteran's current mailing address.", - "type": "string", - "pattern": "^([-a-zA-Z0-9'.,&#]([-a-zA-Z0-9'.,&# ])?)+$", - "maxLength": 20, - "example": "Room 1", - "nullable": true - }, - "city": { - "description": "City for the Veteran's current mailing address.", - "type": "string", - "pattern": "^$|([a-zA-Z0-9\\'-'.# ]([a-zA-Z0-9\\'-'.# ])?)+$", - "minLength": 1, - "maxLength": 30, - "example": "Schenectady" - }, - "state": { - "description": "State for the Veteran's current mailing address. Required if 'country' is 'USA'.", - "type": "string", - "pattern": "^[a-z,A-Z]{2}$", - "example": "NY", - "nullable": true - }, - "country": { - "description": "Country for the Veteran's current mailing address. Must match the values returned by the /countries endpoint on the [Benefits Reference Data API](https://developer.va.gov/explore/benefits/docs/benefits_reference_data?version=current).", - "type": "string", - "maxLength": 1000, - "example": "USA" - }, - "zipFirstFive": { - "description": "Zip code (First 5 digits) for the Veteran's current mailing address. Required if 'country' is 'USA'.", - "type": "string", - "pattern": "^\\d{5}?$", - "example": "12345", - "nullable": true - }, - "zipLastFour": { - "description": "Zip code (Last 4 digits) for the Veteran's current mailing address.", - "type": "string", - "pattern": "^\\d{4}?$", - "example": "6789", - "nullable": true - }, - "internationalPostalCode": { - "description": "International postal code for the Veteran's current mailing address. Do not include if 'country' is 'USA'.", - "type": "string", - "maxLength": 16, - "nullable": true, - "pattern": "^[a-zA-Z0-9]*$" - } - } - }, - "emailAddress": { - "description": "Information associated with the Veteran's email address.", - "type": "object", - "nullable": true, - "properties": { - "email": { - "type": "string", - "pattern": "^[^\\s@]+@([^\\s@.,]+\\.)+[^\\s@.,]{2,}$", - "description": "The most current email address of the Veteran.", - "maxLength": 80, - "nullable": true - }, - "agreeToEmailRelatedToClaim": { - "type": "boolean", - "description": "Agreement to email information relating to this claim.", - "example": true, - "default": false, - "nullable": true - } - } - }, - "currentVaEmployee": { - "type": "boolean", - "description": "Set to true if Veteran is a VA employee.", - "nullable": false - } + "specifyOtherExposures": "Other exposure details", + "exposureDates": { + "beginDate": "2018-07", + "endDate": "2018-08" } }, - "changeOfAddress": { - "description": "If 'changeOfAddress' is included, the following attributes are required: 'typeOfAddressChange', 'addressLine1', 'city', 'country'.", - "type": "object", - "nullable": true, - "additionalProperties": false, - "properties": { - "typeOfAddressChange": { - "description": "Temporary or Permanent change of address. If 'TEMPORARY', 'beginDate' and 'endDate' are required.", - "type": "string", - "enum": [ - "TEMPORARY", - "PERMANENT" - ], - "example": "PERMANENT" - }, - "addressLine1": { - "description": "Address line 1 for the Veteran's new address.", - "type": "string", - "pattern": "^([-a-zA-Z0-9'.,&#]([-a-zA-Z0-9'.,&# ])?)+$", - "maxLength": 20, - "example": "1234 Couch Street" - }, - "addressLine2": { - "description": "Address line 2 for the Veteran's new address.", - "type": "string", - "pattern": "^([-a-zA-Z0-9'.,&#]([-a-zA-Z0-9'.,&# ])?)+$", - "maxLength": 20, - "example": "Unit 4", - "nullable": true - }, - "addressLine3": { - "description": "Address line 3 for the Veteran's new address.", - "type": "string", - "pattern": "^([-a-zA-Z0-9'.,&#]([-a-zA-Z0-9'.,&# ])?)+$", - "maxLength": 20, - "example": "Room 1", - "nullable": true - }, - "city": { - "description": "City for the Veteran's new address.", - "type": "string", - "pattern": "^$|([a-zA-Z0-9\\'-'.# ]([a-zA-Z0-9\\'-'.# ])?)+$", - "minLength": 0, - "maxLength": 30, - "example": "Schenectady" - }, - "state": { - "description": "State for the Veteran's new address. Required if 'country' is 'USA'.", - "type": "string", - "pattern": "^$|^[a-z,A-Z]{2}$", - "example": "NY", - "nullable": true - }, - "country": { - "description": "Country for the Veteran's new address. Value must match the values returned by the /countries endpoint on the [Benefits Reference Data API](https://developer.va.gov/explore/benefits/docs/benefits_reference_data?version=current).", - "type": "string", - "maxLength": 1000, - "example": "USA" - }, - "zipFirstFive": { - "description": "Zip code (First 5 digits) for the Veteran's new address. Required if 'country' is 'USA'.", - "type": "string", - "pattern": "^$|^\\d{5}?$", - "example": "12345", - "nullable": true - }, - "zipLastFour": { - "description": "Zip code (Last 4 digits) for the Veteran's new address.", - "type": "string", - "nullable": true, - "pattern": "^$|^\\d{4}?$", - "example": "6789" - }, - "internationalPostalCode": { - "description": "International postal code for the Veteran's new address. Do not include if 'country' is 'USA'.", - "type": "string", - "maxLength": 16, - "nullable": true, - "pattern": "^[a-zA-Z0-9]*$" - }, - "dates": { - "type": "object", - "properties": { - "beginDate": { - "description": "Begin date for the Veteran's new address.", - "pattern": "^(?:[0-9]{4})-(?:0[1-9]|1[0-2])-(?:0[1-9]|[1-2][0-9]|3[0-1])$", - "type": "string", - "nullable": true, - "example": "2018-06-04" - }, - "endDate": { - "description": "Date in YYYY-MM-DD the changed address expires, if change is temporary.", - "type": "string", - "nullable": true, - "pattern": "^(?:[0-9]{4})-(?:0[1-9]|1[0-2])-(?:0[1-9]|[1-2][0-9]|3[0-1])$", - "example": "2018-06-04" - } - } + "multipleExposures": [ + { + "hazardExposedTo": "RADIATION", + "exposureLocation": "Guam", + "exposureDates": { + "beginDate": "2012-12", + "endDate": "2013-07" } } - }, - "homeless": { - "type": "object", - "nullable": true, - "additionalProperties": false, - "properties": { - "isCurrentlyHomeless": { - "type": "boolean", - "nullable": true, - "description": "Is the Veteran currently homeless?" - }, - "currentlyHomeless": { - "type": "object", - "nullable": true, - "additionalProperties": false, - "properties": { - "homelessSituationOptions": { - "description": "Veteran's living situation.", - "type": "string", - "nullable": true, - "default": "other", - "enum": [ - "LIVING_IN_A_HOMELESS_SHELTER", - "NOT_CURRENTLY_IN_A_SHELTERED_ENVIRONMENT", - "STAYING_WITH_ANOTHER_PERSON", - "FLEEING_CURRENT_RESIDENCE", - "OTHER" - ], - "example": "FLEEING_CURRENT_RESIDENCE" - }, - "otherDescription": { - "description": "Explanation of living situation. Required if 'homelessSituationOptions' is 'OTHER'.", - "type": "string", - "nullable": true, - "maxLength": 500, - "example": "other living situation" - } - } - }, - "isAtRiskOfBecomingHomeless": { - "type": "boolean", - "nullable": true, - "description": "Is the Veteran currently at risk of becoming homeless?" - }, - "riskOfBecomingHomeless": { - "type": "object", - "nullable": true, - "additionalProperties": false, - "properties": { - "livingSituationOptions": { - "type": "string", - "nullable": true, - "default": "HOUSING_WILL_BE_LOST_IN_30_DAYS", - "enum": [ - "HOUSING_WILL_BE_LOST_IN_30_DAYS", - "LEAVING_PUBLICLY_FUNDED_SYSTEM_OF_CARE", - "OTHER" - ] - }, - "otherDescription": { - "description": "Explanation of living situation. Required if 'livingSituationOptions' is 'OTHER'.", - "type": "string", - "nullable": true, - "maxLength": 500, - "example": "other living situation" - } - } - }, - "pointOfContact": { - "description": "Individual in direct contact with Veteran.", - "type": "string", - "nullable": true, - "minLength": 1, - "maxLength": 100, - "pattern": "^([-a-zA-Z0-9/']+( ?))*$", - "example": "Jane Doe" - }, - "pointOfContactNumber": { - "type": "object", - "nullable": true, - "additionalProperties": false, - "properties": { - "telephone": { - "description": "Ten digit primary phone of point of contact.", - "type": "string", - "pattern": "^\\d{10}?$", - "example": "5555555", - "nullable": true - }, - "internationalTelephone": { - "description": "International phone of point of contact.", - "type": "string", - "example": "+44 20 1234 5678", - "maxLength": 1000, - "nullable": true - } - } + ] + }, + "disabilities": [ + { + "name": "Traumatic Brain Injury", + "exposureOrEventOrInjury": "EXPOSURE", + "serviceRelevance": "ABCDEFG", + "approximateDate": "2018-03-11", + "disabilityActionType": "NEW", + "classificationCode": "9014", + "ratedDisabilityId": "ABCDEFGHIJKLMNOPQRSTUVWX", + "diagnosticCode": 9020, + "isRelatedToToxicExposure": true, + "secondaryDisabilities": [ + { + "name": "Post Traumatic Stress Disorder (PTSD) Combat - Mental Disorders", + "exposureOrEventOrInjury": "EXPOSURE", + "serviceRelevance": "ABCDEFGHIJKLMNOPQ", + "disabilityActionType": "SECONDARY", + "approximateDate": "2018-03-12", + "classificationCode": "9014" } - } + ] }, - "toxicExposure": { - "type": "object", - "nullable": true, - "properties": { - "gulfWarHazardService": { - "type": "object", - "nullable": true, - "description": "Toxic exposure related to the Gulf war.", - "properties": { - "servedInGulfWarHazardLocations": { - "type": "string", - "description": "Set to true if the Veteran served in any of the following Gulf War hazard locations: Iraq; Kuwait; Saudi Arabia; the neutral zone between Iraq and Saudi Arabia; Bahrain; Qatar; the United Arab Emirates; Oman; Yemen; Lebanon; Somalia; Afghanistan; Israel; Egypt; Turkey; Syria; Jordan; Djibouti; Uzbekistan; the Gulf of Aden; the Gulf of Oman; the Persian Gulf; the Arabian Sea; and the Red Sea.", - "example": "YES", - "enum": [ - "NO", - "YES" - ], - "nullable": true - }, - "serviceDates": { - "type": "object", - "nullable": true, - "description": "Date range for when the exposure happened.", - "properties": { - "beginDate": { - "type": "string", - "nullable": true, - "description": "Approximate begin date for serving in Gulf War hazard location.", - "pattern": "^(?:19|20)[0-9][0-9]$|^(?:19|20)[0-9][0-9]-(0[1-9]|1[0-2])$", - "example": "2018-06 or 2018" - }, - "endDate": { - "type": "string", - "nullable": true, - "description": "Approximate end date for serving in Gulf War hazard location.", - "pattern": "^(?:19|20)[0-9][0-9]$|^(?:19|20)[0-9][0-9]-(0[1-9]|1[0-2])$", - "example": "2018-06 or 2018" - } - } - } - } - }, - "herbicideHazardService": { - "description": "Toxic exposure related to herbicide (Agent Orange) hazards.", - "type": "object", - "nullable": true, - "properties": { - "servedInHerbicideHazardLocations": { - "type": "string", - "description": "Set to true if the Veteran served in any of the following herbicide/Agent Orange locations: Republic of Vietnam to include the 12 nautical mile territorial waters; Thailand at any United States or Royal Thai base; Laos; Cambodia at Mimot or Krek; Kampong Cham Province; Guam or American Samoa; or in the territorial waters thereof; Johnston Atoll or a ship that called at Johnston Atoll; Korean demilitarized zone; aboard (to include repeated operations and maintenance with) a C-123 aircraft known to have been used to spray an herbicide agent (during service in the Air Force and Air Force Reserves).", - "example": "YES", - "enum": [ - "NO", - "YES" - ], - "nullable": true - }, - "otherLocationsServed": { - "type": "string", - "nullable": true, - "pattern": "^$|([a-zA-Z0-9\"\\/&\\(\\)\\-'.,#\\[\\] ]([a-zA-Z0-9(\\)\\-'.,#\\[\\] ])?)+$", - "maxLength": 5000, - "description": "Other location(s) where Veteran served." - }, - "serviceDates": { - "description": "Date range for exposure in herbicide hazard location.", - "type": "object", - "nullable": true, - "properties": { - "beginDate": { - "type": "string", - "nullable": true, - "description": "Approximate begin date for serving in herbicide location.", - "pattern": "^(?:19|20)[0-9][0-9]$|^(?:19|20)[0-9][0-9]-(0[1-9]|1[0-2])$", - "example": "2018-06 or 2018" - }, - "endDate": { - "type": "string", - "nullable": true, - "description": "Approximate end date for serving in herbicide location.", - "pattern": "^(?:19|20)[0-9][0-9]$|^(?:19|20)[0-9][0-9]-(0[1-9]|1[0-2])$", - "example": "2018-06 or 2018" - } - } - } - } - }, - "additionalHazardExposures": { - "type": "object", - "nullable": true, - "description": "Additional hazardous exposures.", - "properties": { - "additionalExposures": { - "description": "Additional exposure incidents.", - "type": "array", - "nullable": true, - "uniqueItems": true, - "items": { - "type": "string", - "additionalProperties": false, - "enum": [ - "ASBESTOS", - "MUSTARD_GAS", - "RADIATION", - "SHIPBOARD_HAZARD_AND_DEFENSE", - "MILITARY_OCCUPATIONAL_SPECIALTY_RELATED_TOXIN", - "CONTAMINATED_WATER_AT_CAMP_LEJEUNE", - "OTHER" - ] - } - }, - "specifyOtherExposures": { - "type": "string", - "nullable": true, - "pattern": "^$|([a-zA-Z0-9\"\\/&\\(\\)\\-'.,#\\[\\] ]([a-zA-Z0-9(\\)\\-'.,#\\[\\] ])?)+$", - "maxLength": 5000, - "description": "Exposure to asbestos." - }, - "exposureDates": { - "type": "object", - "nullable": true, - "description": "Date range for when the exposure happened.", - "properties": { - "beginDate": { - "type": "string", - "nullable": true, - "description": "Approximate begin date for exposure.", - "pattern": "^(?:19|20)[0-9][0-9]$|^(?:19|20)[0-9][0-9]-(0[1-9]|1[0-2])$", - "example": "2018-06 or 2018" - }, - "endDate": { - "type": "string", - "nullable": true, - "description": "Approximate end date for exposure.", - "pattern": "^(?:19|20)[0-9][0-9]$|^(?:19|20)[0-9][0-9]-(0[1-9]|1[0-2])$", - "example": "2018-06 or 2018" - } - } - } - } - }, - "multipleExposures": { - "type": "array", - "nullable": true, - "minItems": 1, - "uniqueItems": true, - "items": { - "type": "object", - "additionalProperties": false, - "properties": { - "hazardExposedTo": { - "type": "string", - "nullable": true, - "pattern": "^([-a-zA-Z0-9'.,&# ])+$", - "maxLength": 1000, - "description": "Hazard the Veteran was exposed to." - }, - "exposureLocation": { - "type": "string", - "nullable": true, - "pattern": "^$|([a-zA-Z0-9\"\\/&\\(\\)\\-'.,#\\[\\] ]([a-zA-Z0-9(\\)\\-'.,#\\[\\] ])?)+$", - "maxLength": 1000, - "description": "Location where the exposure happened." - }, - "exposureDates": { - "type": "object", - "nullable": true, - "description": "Date range for when the exposure happened.", - "properties": { - "beginDate": { - "type": "string", - "nullable": true, - "description": "Approximate begin date for exposure.", - "pattern": "^(?:19|20)[0-9][0-9]$|^(?:19|20)[0-9][0-9]-(0[1-9]|1[0-2])$", - "example": "2018-06 or 2018" - }, - "endDate": { - "type": "string", - "nullable": true, - "description": "Approximate end date for exposure.", - "pattern": "^(?:19|20)[0-9][0-9]$|^(?:19|20)[0-9][0-9]-(0[1-9]|1[0-2])$", - "example": "2018-06 or 2018" - } - } - } - } - } - } + { + "name": "Cancer - Musculoskeletal - Elbow", + "exposureOrEventOrInjury": "EXPOSURE", + "approximateDate": "2018-03-02", + "serviceRelevance": "ABCDEFG", + "disabilityActionType": "NEW", + "classificationCode": "9014", + "ratedDisabilityId": "ABCDEFGHIJKLMNOPQRSTUVWX", + "diagnosticCode": 249470, + "isRelatedToToxicExposure": true + }, + { + "name": "Cancer - Musculoskeletal - Knee", + "exposureOrEventOrInjury": "EXPOSURE", + "approximateDate": "2015", + "serviceRelevance": "ABCDEFG", + "disabilityActionType": "NEW", + "classificationCode": "9014", + "ratedDisabilityId": "ABCDEFGHIJKLMNOPQRSTUVWX", + "diagnosticCode": 249470, + "isRelatedToToxicExposure": true + } + ], + "treatments": [ + { + "beginDate": "2009-03", + "treatedDisabilityNames": [ + "Traumatic Brain Injury", + "Post Traumatic Stress Disorder (PTSD) Combat - Mental Disorders", + "Cancer - Musculoskeletal - Elbow" + ], + "center": { + "name": "Center One", + "city": "Decatur", + "state": "GA" + } + } + ], + "serviceInformation": { + "alternateNames": [ + "john jacob", + "johnny smith" + ], + "servicePeriods": [ + { + "serviceBranch": "Public Health Service", + "serviceComponent": "Active", + "activeDutyBeginDate": "2008-11-14", + "activeDutyEndDate": "2023-10-30", + "separationLocationCode": "98282" } + ], + "servedInActiveCombatSince911": "NO", + "reservesNationalGuardService": { + "component": "National Guard", + "obligationTermsOfService": { + "beginDate": "2019-06-04", + "endDate": "2020-06-04" + }, + "unitName": "National Guard Unit Name", + "unitAddress": "1243 pine court", + "unitPhone": { + "areaCode": "555", + "phoneNumber": "5555555" + }, + "receivingInactiveDutyTrainingPay": "YES" }, - "disabilities": { - "description": "Any current disabilities or symptoms the Veteran is claiming are related to their military service and/or are service-connected.", - "type": "array", - "minItems": 1, - "items": { - "type": "object", - "additionalProperties": false, - "required": [ - "disabilityActionType", - "name" - ], - "properties": { - "name": { - "description": "Name of the disability. The /disabilities endpoint on the [Benefits Reference Data API](https://developer.va.gov/explore/benefits/docs/benefits_reference_data?version=current) may be used to retrieve possible disability names.", - "type": "string", - "pattern": "^$|([a-zA-Z0-9\"\\/&\\(\\)\\-'.,#\\[\\] ]([a-zA-Z0-9(\\)\\-'.,#\\[\\] ])?)+$", - "example": "PTSD (post traumatic stress disorder)", - "maxLength": 255 - }, - "exposureOrEventOrInjury": { - "type": "string", - "description": "What caused the disability?", - "nullable": true, - "maxLength": 1000, - "examples": [ - "Agent Orange", - "radiation", - "burn pits" - ] - }, - "serviceRelevance": { - "description": "Explanation of how the disability(ies) relates to the in-service event/exposure/injury. If the disabilityActionType is 'NEW', the serviceRelevance is required.", - "type": "string", - "nullable": true, - "maxLength": 1000, - "example": "Heavy equipment operator in service." - }, - "approximateDate": { - "description": "Approximate date disability began. Date must be in the past. \n Format can be either YYYY-MM-DD or YYYY-MM or YYYY", - "type": "string", - "pattern": "^(?:[0-9]{4}(?:-(?!00)(?:0[1-9]|1[0-2])(?:-(?:0[1-9]|[1-2][0-9]|3[0-1]))?)?)$", - "example": "2018-03-02 or 2018-03 or 2018", - "nullable": true - }, - "disabilityActionType": { - "description": "Action type requested for the disability. If 'INCREASE' or 'NONE', then 'ratedDisabilityId' and 'diagnosticCode' should be included. 'NONE' should be used when including a secondary disability.", - "type": "string", - "enum": [ - "NONE", - "NEW", - "INCREASE" - ], - "example": "NEW" - }, - "classificationCode": { - "type": "string", - "description": "Classification code for the associated body system. Must match an active code returned by the /disabilities endpoint on the [Benefits Reference Data API](https://developer.va.gov/explore/benefits/docs/benefits_reference_data?version=current).", - "example": "249470", - "nullable": true - }, - "ratedDisabilityId": { - "description": "When submitting a contention with action type 'INCREASE', the previously rated disability id may be included.", - "type": "string", - "example": "1100583", - "nullable": true - }, - "diagnosticCode": { - "description": "If the disabilityActionType is 'NONE' or 'INCREASE', the diagnosticCode should correspond to an existing rated disability.", - "type": "integer", - "example": 9999, - "nullable": true - }, - "isRelatedToToxicExposure": { - "type": "boolean", - "description": "Is the disability related to toxic exposures? If true, related 'toxicExposure' must be included.", - "example": true, - "default": false, - "nullable": true - }, - "specialIssues": { - "type": "array", - "nullable": true, - "uniqueItems": true, - "items": { - "maxItems": 2, - "additionalProperties": false, - "type": "string", - "enum": [ - "POW", - "EMP" - ] - } - }, - "secondaryDisabilities": { - "description": "If secondaryDisability is included, the following attributes are required: 'secondaryDisability.name', 'secondaryDisability.disabilityActionType' and 'secondaryDisability.serviceRelevance'", - "type": "array", - "items": { - "type": "object", - "additionalProperties": false, - "properties": { - "name": { - "description": "Name of the disability. The /disabilities endpoint on the [Benefits Reference Data API](https://developer.va.gov/explore/benefits/docs/benefits_reference_data?version=current) may be used to retrieve possible disability names.", - "type": "string", - "pattern": "^$|([a-zA-Z0-9\"\\/&\\(\\)\\-'.,# ]([a-zA-Z0-9(\\)\\-'.,#\\[\\] ])?)+$", - "example": "PTSD (post traumatic stress disorder)", - "maxLength": 255 - }, - "exposureOrEventOrInjury": { - "type": "string", - "description": "What caused the disability?", - "nullable": true, - "maxLength": 1000, - "examples": [ - "Agent Orange", - "radiation", - "burn pits" - ] - }, - "serviceRelevance": { - "description": "Explanation of how the disability(ies) relates to the in-service event/exposure/injury.", - "type": "string", - "nullable": true, - "maxLength": 1000, - "example": "Heavy equipment operator in service." - }, - "disabilityActionType": { - "description": "The status of the secondary disability.", - "type": "string", - "example": "SECONDARY", - "enum": [ - "SECONDARY" - ] - }, - "approximateDate": { - "description": "Approximate date disability began. Date must be in the past. \n Format can be either YYYY-MM-DD or YYYY-MM or YYYY", - "type": "string", - "pattern": "^(?:[0-9]{4}(?:-(?!00)(?:0[1-9]|1[0-2])(?:-(?:0[1-9]|[1-2][0-9]|3[0-1]))?)?)$", - "example": "2018-03-02 or 2018-03 or 2018", - "nullable": true - }, - "classificationCode": { - "type": "string", - "description": "Classification code for the associated body system. Must match an active code returned by the /disabilities endpoint on the [Benefits Reference Data API](https://developer.va.gov/explore/benefits/docs/benefits_reference_data?version=current).", - "example": "249470", - "nullable": true - } - } - } - } - } - } + "federalActivation": { + "activationDate": "2023-10-01", + "anticipatedSeparationDate": "2024-12-18" }, - "treatments": { - "description": "Identifies the Service Treatment information of the Veteran. The combination of treatedDisabilityName, center name, center city, and center state must be less than 1000 characters to successfully generate a PDF.", - "type": "array", - "nullable": true, - "uniqueItems": true, - "items": { - "type": "object", - "additionalProperties": false, - "properties": { - "beginDate": { - "description": "Begin date for treatment. If treatment began from 2005 to present, you do not need to provide dates. Each treatment begin date must be after the first 'servicePeriod.activeDutyBeginDate'.", - "type": "string", - "pattern": "^(?:19|20)[0-9][0-9]$|^(?:19|20)[0-9][0-9]-(0[1-9]|1[0-2])$", - "example": "2018-06 or 2018", - "nullable": true - }, - "treatedDisabilityNames": { - "description": "Name(s) of disabilities treated in this time frame.", - "type": "array", - "nullable": true, - "maxItems": 101, - "items": { - "type": "string", - "additionalProperties": false, - "example": [ - "PTSD (post traumatic stress disorder)", - "Trauma" - ] - } - }, - "center": { - "description": "VA Medical Center(s) and Department of Defense Military Treatment Facilities where the Veteran received treatment after discharge for any claimed disabilities.", - "type": "object", - "nullable": true, - "additionalProperties": false, - "properties": { - "name": { - "description": "Name of facility Veteran was treated in. The /treatment-centers endpoint on the [Benefits Reference Data API](https://developer.va.gov/explore/benefits/docs/benefits_reference_data?version=current) may be used to retrieve possible treatment center names.", - "type": "string", - "nullable": true, - "pattern": "([a-zA-Z0-9\"/&()\\'-'.,# ]([a-zA-Z0-9()\\'-'.,# ])?)+$", - "example": "Private Facility 2", - "minLength": 1, - "maxLength": 100 - }, - "city": { - "description": "City of treatment facility.", - "type": "string", - "pattern": "([a-zA-Z0-9\\-'.# ]([a-zA-Z0-9\\-'.# ])?)+$", - "example": "Portland", - "nullable": true, - "minLength": 0, - "maxLength": 30 - }, - "state": { - "description": "State of treatment facility.", - "type": "string", - "pattern": "^$|^[a-z,A-Z]{2}$", - "example": "OR", - "nullable": true - } - } - } - } + "confinements": [ + { + "approximateBeginDate": "2018-06-04", + "approximateEndDate": "2018-07-04" + }, + { + "approximateBeginDate": "2020-06", + "approximateEndDate": "2020-07" } + ] + }, + "servicePay": { + "receivingMilitaryRetiredPay": "NO", + "futureMilitaryRetiredPay": "YES", + "futureMilitaryRetiredPayExplanation": "ABCDEFGHIJKLMNOPQRSTUVW", + "militaryRetiredPay": { + "branchOfService": "Army", + "monthlyAmount": 840 }, - "serviceInformation": { - "type": "object", - "additionalProperties": false, - "required": [ - "servicePeriods" - ], - "properties": { - "alternateNames": { - "description": "List any other names under which the Veteran served, if applicable.", - "type": "array", - "nullable": true, - "maxItems": 100, - "uniqueItems": true, - "items": { - "type": "string", - "additionalProperties": false, - "examples": [ - "jane", - "janey lee", - "jane lee MacDonald" - ] - } - }, - "servicePeriods": { - "description": "Identifies the Service dates and Branch the Veteran served in.", - "type": "array", - "minItems": 1, - "items": { - "type": "object", - "required": [ - "serviceBranch", - "serviceComponent", - "activeDutyBeginDate", - "activeDutyEndDate" - ], - "properties": { - "serviceBranch": { - "description": "Branch of service during period. The /service-branches endpoint on the [Benefits Reference Data API](https://developer.va.gov/explore/benefits/docs/benefits_reference_data?version=current) may be used to retrieve list of possible service branches.", - "type": "string", - "maxLength": 1000, - "example": "Air Force" - }, - "serviceComponent": { - "type": "string", - "description": "", - "enum": [ - "Active", - "Reserves", - "National Guard" - ] - }, - "activeDutyBeginDate": { - "description": "Date started active duty.", - "type": "string", - "pattern": "^(?:[0-9]{4})-(?:0[1-9]|1[0-2])-(?:0[1-9]|[1-2][0-9]|3[0-1])$", - "example": "2018-06-06" - }, - "activeDutyEndDate": { - "description": "Date completed active duty.", - "type": "string", - "pattern": "^(?:[0-9]{4})-(?:0[1-9]|1[0-2])-(?:0[1-9]|[1-2][0-9]|3[0-1])$", - "example": "2018-06-06" - }, - "separationLocationCode": { - "description": "Location code for the facility the Veteran plans to separate from. Code must match the values returned by the /intake-sites endpoint on the [Benefits reference Data API](https://developer.va.gov/explore/benefits/docs/benefits_reference_data?version=current).", - "type": "string", - "nullable": true, - "example": "98283" - } - } - } - }, - "servedInActiveCombatSince911": { - "type": "string", - "enum": [ - "YES", - "NO" - ], - "description": "Did Veteran serve in a combat zone since 9-11-2001?", - "example": "YES", - "nullable": true - }, - "reservesNationalGuardService": { - "type": "object", - "nullable": true, - "additionalProperties": false, - "properties": { - "component": { - "type": "string", - "nullable": true, - "description": "", - "enum": [ - "Reserves", - "National Guard" - ] - }, - "obligationTermsOfService": { - "type": "object", - "nullable": true, - "description": "If 'obligationTermsOfService' is included, the following attributes are required: 'beginDate ' and 'endDate'.", - "additionalProperties": false, - "properties": { - "beginDate": { - "type": "string", - "nullable": true, - "pattern": "^(?:[0-9]{4})-(?:0[1-9]|1[0-2])-(?:0[1-9]|[1-2][0-9]|3[0-1])$", - "example": "2018-06-06" - }, - "endDate": { - "type": "string", - "nullable": true, - "pattern": "^(?:[0-9]{4})-(?:0[1-9]|1[0-2])-(?:0[1-9]|[1-2][0-9]|3[0-1])$", - "example": "2018-06-06" - } - } - }, - "unitName": { - "type": "string", - "nullable": true, - "maxLength": 1000, - "pattern": "^$|([a-zA-Z0-9\\-'.,# ][a-zA-Z0-9\\-'.,# ]?)*$" - }, - "unitAddress": { - "type": "string", - "maxLength": 1000, - "pattern": "^$|^([-a-zA-Z0-9'.,&# ])+$", - "nullable": true - }, - "unitPhone": { - "type": "object", - "nullable": true, - "additionalProperties": false, - "properties": { - "areaCode": { - "type": "string", - "nullable": true, - "maxLength": 3, - "pattern": "^$|^\\d{3}$", - "example": "555" - }, - "phoneNumber": { - "type": "string", - "nullable": true, - "maxLength": 20, - "example": "5555555" - } - } - }, - "receivingInactiveDutyTrainingPay": { - "type": "string", - "enum": [ - "YES", - "NO" - ], - "nullable": true, - "example": "YES" - } - } - }, - "federalActivation": { - "description": "If federalActivation is present then reservesNationalGuardService.obligationTermsOfService.beginDate, reservesNationalGuardService.obligationTermsOfService.endDate and reservesNationalGuardService.unitName are required", - "type": "object", - "nullable": true, - "additionalProperties": false, - "properties": { - "activationDate": { - "description": "Date cannot be in the future and must be after the earliest servicePeriod.activeDutyBeginDate.", - "type": "string", - "pattern": "^(?:[0-9]{4})-(?:0[1-9]|1[0-2])-(?:0[1-9]|[1-2][0-9]|3[0-1])$", - "example": "2018-06-06", - "nullable": true - }, - "anticipatedSeparationDate": { - "description": "Anticipated date of separation. Date must be in the future.", - "type": "string", - "pattern": "^(?:[0-9]{4})-(?:0[1-9]|1[0-2])-(?:0[1-9]|[1-2][0-9]|3[0-1])$", - "example": "2018-06-06", - "nullable": true - } - } - }, - "confinements": { - "type": "array", - "nullable": true, - "uniqueItems": true, - "items": { - "additionalProperties": false, - "type": "object", - "properties": { - "approximateBeginDate": { - "description": "The approximateBeginDate must be after the earliest servicePeriod activeDutyBeginDate.", - "type": "string", - "nullable": false, - "pattern": "^(?:[0-9]{4})-(?:0[1-9]|1[0-2])-(?:0[1-9]|[1-2][0-9]|3[0-1])$|(?:[0-9]{4})-(?:0[1-9]|1[0-2])$", - "example": "2018-06-06 or 2018-06" - }, - "approximateEndDate": { - "type": "string", - "nullable": false, - "pattern": "^(?:[0-9]{4})-(?:0[1-9]|1[0-2])-(?:0[1-9]|[1-2][0-9]|3[0-1])$|(?:[0-9]{4})-(?:0[1-9]|1[0-2])$", - "example": "2018-06-06 or 2018-06" - } - } - } - } + "retiredStatus": "PERMANENT_DISABILITY_RETIRED_LIST", + "favorMilitaryRetiredPay": false, + "receivedSeparationOrSeverancePay": "NO", + "separationSeverancePay": { + "datePaymentReceived": "2022-03-12", + "branchOfService": "Naval Academy", + "preTaxAmountReceived": 379 + }, + "favorTrainingPay": true + }, + "directDeposit": { + "noAccount": false, + "accountNumber": "ABCDEF", + "accountType": "CHECKING", + "financialInstitutionName": "Chase", + "routingNumber": "123123123" + }, + "claimantCertification": true + } + } + } + }, + "202 with a transactionId": { + "value": { + "data": { + "id": "f2c7cfd4-277b-4537-9b8d-ea53024b111e", + "type": "forms/526", + "attributes": { + "claimId": "600442191", + "claimProcessType": "STANDARD_CLAIM_PROCESS", + "claimNotes": "Some things that are important to know, and are not included in any other place.", + "veteranIdentification": { + "serviceNumber": "123456789", + "veteranNumber": { + "telephone": "5555555555", + "internationalTelephone": "+44 20 1234 5678" + }, + "mailingAddress": { + "addressLine1": "1234 Couch Street", + "addressLine2": "Unit 4", + "addressLine3": "Room 1", + "city": "Schenectady", + "state": "NY", + "country": "USA", + "zipFirstFive": "12345", + "zipLastFour": "1234" + }, + "emailAddress": { + "email": "valid@somedomain.com", + "agreeToEmailRelatedToClaim": true + }, + "currentVaEmployee": false + }, + "changeOfAddress": { + "typeOfAddressChange": "TEMPORARY", + "addressLine1": "10 Peach St", + "addressLine2": "Unit 4", + "addressLine3": "Room 1", + "city": "Schenectady", + "state": "NY", + "country": "USA", + "zipFirstFive": "12345", + "zipLastFour": "9897", + "dates": { + "beginDate": "2023-06-04", + "endDate": "2023-12-04" + } + }, + "homeless": { + "isCurrentlyHomeless": true, + "currentlyHomeless": { + "homelessSituationOptions": "FLEEING_CURRENT_RESIDENCE", + "otherDescription": "ABCDEFGHIJKLM" + }, + "isAtRiskOfBecomingHomeless": false, + "pointOfContact": "john stewart", + "pointOfContactNumber": { + "telephone": "5555555555", + "internationalTelephone": "+44 20 1234 5678" + } + }, + "toxicExposure": { + "gulfWarHazardService": { + "servedInGulfWarHazardLocations": "YES", + "serviceDates": { + "beginDate": "2018-07", + "endDate": "2018-08" } }, - "servicePay": { - "type": "object", - "nullable": true, - "additionalProperties": false, - "properties": { - "receivingMilitaryRetiredPay": { - "description": "Is the Veteran receiving military retired pay?", - "type": "string", - "enum": [ - "YES", - "NO" - ], - "example": "YES", - "nullable": true - }, - "futureMilitaryRetiredPay": { - "description": "Will the Veteran receive military retired pay pay in future? \n If true, then 'futurePayExplanation' is required.", - "type": "string", - "enum": [ - "YES", - "NO" - ], - "example": "YES", - "nullable": true - }, - "futureMilitaryRetiredPayExplanation": { - "description": "Explains why future pay will be received.", - "type": "string", - "maxLength": 1000, - "example": "Will be retiring soon.", - "nullable": true - }, - "militaryRetiredPay": { - "type": "object", - "nullable": true, - "description": "", - "properties": { - "branchOfService": { - "description": "Branch of service. The /service-branches endpoint on the [Benefits Reference Data API](https://developer.va.gov/explore/benefits/docs/benefits_reference_data?version=current) may be used to retrieve list of possible service branches.", - "type": "string", - "maxLength": 1000, - "nullable": true, - "example": "Air Force" - }, - "monthlyAmount": { - "description": "Amount being received.", - "type": "integer", - "nullable": true, - "minimum": 1, - "maximum": 999999, - "example": 100 - } - } - }, - "retiredStatus": { - "type": "string", - "nullable": true, - "description": "", - "enum": [ - "RETIRED", - "TEMPORARY_DISABILITY_RETIRED_LIST", - "PERMANENT_DISABILITY_RETIRED_LIST" - ] - }, - "favorMilitaryRetiredPay": { - "description": "Is the Veteran waiving VA benefits to retain military retired pay? See item 26 on form 21-526EZ for more details.", - "type": "boolean", - "nullable": true, - "example": true, - "default": false - }, - "receivedSeparationOrSeverancePay": { - "description": "Has the Veteran ever received separation pay, disability severance pay, or any other lump sum payment from their branch of service?", - "type": "string", - "enum": [ - "YES", - "NO" - ], - "example": "YES", - "nullable": true - }, - "separationSeverancePay": { - "type": "object", - "nullable": true, - "description": "", - "properties": { - "datePaymentReceived": { - "description": "Approximate date separation pay was received. \n Format can be either YYYY-MM-DD or YYYY-MM or YYYY", - "type": "string", - "pattern": "^(?:[0-9]{4})-(?:0[1-9]|1[0-2])-(?:0[1-9]|[1-2][0-9]|3[0-1])$|(?:[0-9]{4})$|(?:[0-9]{4})-(?:0[1-9]|1[0-2])$", - "example": "2018-03-02 or 2018-03 or 2018" - }, - "branchOfService": { - "description": "Branch of service. The /service-branches endpoint on the [Benefits Reference Data API](https://developer.va.gov/explore/benefits/docs/benefits_reference_data?version=current) may be used to retrieve list of possible service branches.", - "type": "string", - "nullable": true, - "maxLength": 1000, - "example": "Air Force" - }, - "preTaxAmountReceived": { - "description": "Amount being received.", - "type": "integer", - "nullable": true, - "minimum": 1, - "maximum": 999999, - "example": 100 - } - } - }, - "favorTrainingPay": { - "description": "Is the Veteran waiving VA benefits to retain training pay? See item 28 on form 21-526EZ for more details. ", - "type": "boolean", - "nullable": true, - "example": true, - "default": false - } + "herbicideHazardService": { + "servedInHerbicideHazardLocations": "YES", + "otherLocationsServed": "ABCDEFGHIJKLM", + "serviceDates": { + "beginDate": "2018-07", + "endDate": "2018-08" } }, - "directDeposit": { - "type": "object", - "nullable": true, - "additionalProperties": false, - "description": "If direct deposit information is included, the following attributes are required: accountType, accountNumber, routingNumber.", - "properties": { - "noAccount": { - "type": "boolean", - "nullable": true, - "description": "Claimant certifies that they do not have an account with a financial institution or certified payment agent.", - "default": false - }, - "accountNumber": { - "description": "Account number for the direct deposit.", - "pattern": "^(?:[a-zA-Z0-9-]{4,1000})?$", - "type": "string", - "maxLength": 1000, - "nullable": true, - "example": "123123123123" - }, - "accountType": { - "description": "Account type for the direct deposit.", - "type": "string", - "nullable": true, - "example": "CHECKING", - "enum": [ - "CHECKING", - "SAVINGS" - ] - }, - "financialInstitutionName": { - "description": "Provide the name of the financial institution where the Veteran wants the direct deposit.", - "maxLength": 1000, - "type": "string", - "nullable": true, - "example": "Some Bank" - }, - "routingNumber": { - "description": "Routing number for the direct deposit.", - "type": "string", - "maxLength": 1000, - "nullable": true, - "pattern": "^$|^\\d{0,1000}$", - "example": "123123123" - } + "additionalHazardExposures": { + "additionalExposures": [ + "ASBESTOS", + "SHIPBOARD_HAZARD_AND_DEFENSE" + ], + "specifyOtherExposures": "Other exposure details", + "exposureDates": { + "beginDate": "2018-07", + "endDate": "2018-08" } }, - "claimantCertification": { - "type": "boolean", - "description": "Claimant certifies and authorizes release of information.", - "default": false + "multipleExposures": [ + { + "hazardExposedTo": "RADIATION", + "exposureLocation": "Guam", + "exposureDates": { + "beginDate": "2012-12", + "endDate": "2013-07" + } + } + ] + }, + "disabilities": [ + { + "name": "Traumatic Brain Injury", + "exposureOrEventOrInjury": "EXPOSURE", + "serviceRelevance": "ABCDEFG", + "approximateDate": "2018-03-11", + "disabilityActionType": "NEW", + "classificationCode": "9014", + "ratedDisabilityId": "ABCDEFGHIJKLMNOPQRSTUVWX", + "diagnosticCode": 9020, + "isRelatedToToxicExposure": true, + "secondaryDisabilities": [ + { + "name": "Post Traumatic Stress Disorder (PTSD) Combat - Mental Disorders", + "exposureOrEventOrInjury": "EXPOSURE", + "serviceRelevance": "ABCDEFGHIJKLMNOPQ", + "disabilityActionType": "SECONDARY", + "approximateDate": "2018-03-12", + "classificationCode": "9014" + } + ] }, - "claimNotes": { - "type": "string", - "description": "An optional notes section.", - "maxLength": 4000 + { + "name": "Cancer - Musculoskeletal - Elbow", + "exposureOrEventOrInjury": "EXPOSURE", + "approximateDate": "2018-03-02", + "serviceRelevance": "ABCDEFG", + "disabilityActionType": "NEW", + "classificationCode": "9014", + "ratedDisabilityId": "ABCDEFGHIJKLMNOPQRSTUVWX", + "diagnosticCode": 249470, + "isRelatedToToxicExposure": true }, - "claimId": { - "type": "string", - "example": "600517517" + { + "name": "Cancer - Musculoskeletal - Knee", + "exposureOrEventOrInjury": "EXPOSURE", + "approximateDate": "2015", + "serviceRelevance": "ABCDEFG", + "disabilityActionType": "NEW", + "classificationCode": "9014", + "ratedDisabilityId": "ABCDEFGHIJKLMNOPQRSTUVWX", + "diagnosticCode": 249470, + "isRelatedToToxicExposure": true } - } - } - } - } - } - } - } - } - }, - "401": { - "description": "Unauthorized", - "content": { - "application/json": { - "example": { - "errors": [ - { - "title": "Not authorized", - "status": "401", - "detail": "Not authorized" - } - ] - }, - "schema": { - "required": [ - "errors" - ], - "properties": { - "errors": { - "type": "array", - "items": { - "additionalProperties": false, - "required": [ - "title", - "detail" - ], - "properties": { - "title": { - "type": "string", - "description": "HTTP error title" - }, - "detail": { - "type": "string", - "description": "HTTP error detail" - }, - "status": { - "type": "string", - "description": "HTTP error status code" - }, - "source": { - "type": "object", - "additionalProperties": false, - "description": "Source of error", - "properties": { - "pointer": { - "type": "string", - "description": "Pointer to source of error" + ], + "treatments": [ + { + "beginDate": "2009-03", + "treatedDisabilityNames": [ + "Traumatic Brain Injury", + "Post Traumatic Stress Disorder (PTSD) Combat - Mental Disorders", + "Cancer - Musculoskeletal - Elbow" + ], + "center": { + "name": "Center One", + "city": "Decatur", + "state": "GA" } } - } - } - } - } - } - } - } - } - }, - "404": { - "description": "Resource not found", - "content": { - "application/json": { - "example": { - "errors": [ - { - "status": "404", - "title": "Resource not found", - "detail": "Unable to locate Veteran's ID/ICN in Master Person Index (MPI). Please submit an issue at ask.va.gov or call 1-800-MyVA411 (800-698-2411) for assistance." - } - ] - }, - "schema": { - "required": [ - "errors" - ], - "properties": { - "errors": { - "type": "array", - "items": { - "additionalProperties": false, - "required": [ - "title", - "detail" - ], - "properties": { - "title": { - "type": "string", - "description": "HTTP error title" + ], + "serviceInformation": { + "alternateNames": [ + "john jacob", + "johnny smith" + ], + "servicePeriods": [ + { + "serviceBranch": "Public Health Service", + "serviceComponent": "Active", + "activeDutyBeginDate": "2008-11-14", + "activeDutyEndDate": "2024-12-18", + "separationLocationCode": "98282" + } + ], + "servedInActiveCombatSince911": "NO", + "reservesNationalGuardService": { + "component": "National Guard", + "obligationTermsOfService": { + "beginDate": "2019-06-04", + "endDate": "2020-06-04" + }, + "unitName": "National Guard Unit Name", + "unitAddress": "1243 pine court", + "unitPhone": { + "areaCode": "555", + "phoneNumber": "5555555" + }, + "receivingInactiveDutyTrainingPay": "YES" + }, + "federalActivation": { + "activationDate": "2023-10-01", + "anticipatedSeparationDate": "2024-12-18" + }, + "confinements": [ + { + "approximateBeginDate": "2018-06-04", + "approximateEndDate": "2018-07-04" + }, + { + "approximateBeginDate": "2020-06", + "approximateEndDate": "2020-07" + } + ] }, - "detail": { - "type": "string", - "description": "HTTP error detail" + "servicePay": { + "receivingMilitaryRetiredPay": "NO", + "futureMilitaryRetiredPay": "YES", + "futureMilitaryRetiredPayExplanation": "ABCDEFGHIJKLMNOPQRSTUVW", + "militaryRetiredPay": { + "branchOfService": "Army", + "monthlyAmount": 840 + }, + "retiredStatus": "PERMANENT_DISABILITY_RETIRED_LIST", + "favorMilitaryRetiredPay": false, + "receivedSeparationOrSeverancePay": "NO", + "separationSeverancePay": { + "datePaymentReceived": "2022-03-12", + "branchOfService": "Naval Academy", + "preTaxAmountReceived": 379 + }, + "favorTrainingPay": true }, - "status": { - "type": "string", - "description": "HTTP error status code" - } + "directDeposit": { + "noAccount": false, + "accountNumber": "ABCDEF", + "accountType": "CHECKING", + "financialInstitutionName": "Chase", + "routingNumber": "123123123" + }, + "claimantCertification": true } + }, + "meta": { + "transactionId": "00000000-0000-0000-0000-000000000000" } } } - } - } - } - }, - "422": { - "description": "Unprocessable entity", - "content": { - "application/json": { - "examples": { - "Violates JSON Schema": { - "value": { - "errors": [ - { - "title": "Unprocessable entity", - "detail": "The property / did not contain the required key claimProcessType", - "status": "422", - "source": { - "pointer": "data/attributes/" - } - }, - { - "title": "Unprocessable entity", - "detail": "The property / did not contain the required key disabilities", - "status": "422", - "source": { - "pointer": "data/attributes/" - } - }, - { - "title": "Unprocessable entity", - "detail": "The property / did not contain the required key serviceInformation", - "status": "422", - "source": { - "pointer": "data/attributes/" - } - }, - { - "title": "Unprocessable entity", - "detail": "The property / did not contain the required key veteranIdentification", - "status": "422", - "source": { - "pointer": "data/attributes/" - } - } - ] - } - }, - "Not a JSON Object": { - "value": { - "errors": [ - { - "title": "Unprocessable entity", - "status": "422", - "detail": "The request body is not a valid JSON object: This is not valid JSON", - "source": { - "pointer": null - } - } - ] - } - } }, "schema": { + "name": "data", "required": [ - "errors" + "data" ], "properties": { - "errors": { - "type": "array", - "items": { - "additionalProperties": false, - "required": [ - "title", - "status", - "detail" - ], - "properties": { - "status": { - "type": "string", - "description": "HTTP error code" - }, - "detail": { - "type": "string", - "description": "HTTP error detail" - }, - "source": { - "type": "object", - "pointer": { - "type": "string" - } - }, - "title": { - "type": "string" - } - } - } - } - } - } - } - } - } - }, - "requestBody": { - "content": { - "application/json": { - "schema": { - "type": "object", - "required": [ - "data" - ], - "properties": { - "data": { - "type": "object", - "required": [ - "attributes", - null - ], - "properties": { - "attributes": { - "$schema": "http://json-schema.org/draft-07/schema#", - "description": "Claims API 526 Schema", - "type": "object", - "additionalProperties": false, - "required": [ - "claimantCertification", - "claimProcessType", - "disabilities", - "serviceInformation", - "veteranIdentification" - ], - "properties": { - "claimProcessType": { - "type": "string", - "description": "Select type of claim program/process that applies to the Veteran.", - "enum": [ - "STANDARD_CLAIM_PROCESS", - "FDC_PROGRAM", - "BDD_PROGRAM" - ] - }, - "veteranIdentification": { - "type": "object", - "additionalProperties": false, - "required": [ - "mailingAddress", - "currentVaEmployee" - ], - "properties": { - "serviceNumber": { - "type": "string", - "description": "Service identification number", - "maxLength": 1000, - "nullable": true - }, - "veteranNumber": { - "description": "If there isn't a ten digit phone number in VBMS for the Veteran, the exams will not be ordered. Including the phone number is recommended to avoid claim processing delays.", - "type": "object", - "nullable": true, - "properties": { - "telephone": { - "description": "Veteran's phone number.", - "type": "string", - "pattern": "^\\d{10}?$", - "example": "5555555555", - "nullable": true - }, - "internationalTelephone": { - "type": "string", - "description": "Veteran's international phone number.", - "example": "+44 20 1234 5678", - "maxLength": 1000, - "nullable": true + "data": { + "type": "object", + "required": [ + "id", + "type", + "attributes" + ], + "properties": { + "id": { + "type": "string", + "example": "7d0de77e-b7bd-4db7-a8d9-69a25482c80a" + }, + "type": { + "type": "string", + "example": "form/8675309" + }, + "attributes": { + "description": "Claims API 526 Schema", + "type": "object", + "additionalProperties": false, + "required": [ + "claimantCertification", + "claimProcessType", + "disabilities", + "serviceInformation", + "veteranIdentification" + ], + "properties": { + "claimProcessType": { + "type": "string", + "description": "Select type of claim program/process that applies to the Veteran.", + "enum": [ + "STANDARD_CLAIM_PROCESS", + "FDC_PROGRAM", + "BDD_PROGRAM" + ] + }, + "veteranIdentification": { + "type": "object", + "additionalProperties": false, + "required": [ + "mailingAddress", + "currentVaEmployee" + ], + "properties": { + "serviceNumber": { + "type": "string", + "description": "Service identification number", + "maxLength": 1000, + "nullable": true + }, + "veteranNumber": { + "description": "If there isn't a ten digit phone number in VBMS for the Veteran, the exams will not be ordered. Including the phone number is recommended to avoid claim processing delays.", + "type": "object", + "nullable": true, + "properties": { + "telephone": { + "description": "Veteran's phone number.", + "type": "string", + "pattern": "^\\d{10}?$", + "example": "5555555555", + "nullable": true + }, + "internationalTelephone": { + "type": "string", + "description": "Veteran's international phone number.", + "example": "+44 20 1234 5678", + "maxLength": 1000, + "nullable": true + } + } + }, + "mailingAddress": { + "type": "object", + "additionalProperties": false, + "required": [ + "addressLine1", + "city", + "country" + ], + "properties": { + "addressLine1": { + "description": "Address line 1 for the Veteran's current mailing address.", + "type": "string", + "pattern": "^([-a-zA-Z0-9'.,&#]([-a-zA-Z0-9'.,&# ])?)+$", + "maxLength": 20, + "example": "1234 Couch Street" + }, + "addressLine2": { + "description": "Address line 2 for the Veteran's current mailing address.", + "type": "string", + "pattern": "^([-a-zA-Z0-9'.,&#]([-a-zA-Z0-9'.,&# ])?)+$", + "maxLength": 20, + "example": "Unit 4", + "nullable": true + }, + "addressLine3": { + "description": "Address line 3 for the Veteran's current mailing address.", + "type": "string", + "pattern": "^([-a-zA-Z0-9'.,&#]([-a-zA-Z0-9'.,&# ])?)+$", + "maxLength": 20, + "example": "Room 1", + "nullable": true + }, + "city": { + "description": "City for the Veteran's current mailing address.", + "type": "string", + "pattern": "^$|([a-zA-Z0-9\\'-'.# ]([a-zA-Z0-9\\'-'.# ])?)+$", + "minLength": 1, + "maxLength": 30, + "example": "Schenectady" + }, + "state": { + "description": "State for the Veteran's current mailing address. Required if 'country' is 'USA'.", + "type": "string", + "pattern": "^[a-z,A-Z]{2}$", + "example": "NY", + "nullable": true + }, + "country": { + "description": "Country for the Veteran's current mailing address. Must match the values returned by the /countries endpoint on the [Benefits Reference Data API](https://developer.va.gov/explore/benefits/docs/benefits_reference_data?version=current).", + "type": "string", + "maxLength": 1000, + "example": "USA" + }, + "zipFirstFive": { + "description": "Zip code (First 5 digits) for the Veteran's current mailing address. Required if 'country' is 'USA'.", + "type": "string", + "pattern": "^\\d{5}?$", + "example": "12345", + "nullable": true + }, + "zipLastFour": { + "description": "Zip code (Last 4 digits) for the Veteran's current mailing address.", + "type": "string", + "pattern": "^\\d{4}?$", + "example": "6789", + "nullable": true + }, + "internationalPostalCode": { + "description": "International postal code for the Veteran's current mailing address. Do not include if 'country' is 'USA'.", + "type": "string", + "maxLength": 16, + "nullable": true, + "pattern": "^[a-zA-Z0-9]*$" + } } + }, + "emailAddress": { + "description": "Information associated with the Veteran's email address.", + "type": "object", + "nullable": true, + "properties": { + "email": { + "type": "string", + "pattern": "^[^\\s@]+@([^\\s@.,]+\\.)+[^\\s@.,]{2,}$", + "description": "The most current email address of the Veteran.", + "maxLength": 80, + "nullable": true + }, + "agreeToEmailRelatedToClaim": { + "type": "boolean", + "description": "Agreement to email information relating to this claim.", + "example": true, + "default": false, + "nullable": true + } + } + }, + "currentVaEmployee": { + "type": "boolean", + "description": "Set to true if Veteran is a VA employee.", + "nullable": false } - }, - "mailingAddress": { - "type": "object", - "additionalProperties": false, - "required": [ - "addressLine1", - "city", - "country" - ], - "properties": { - "addressLine1": { - "description": "Address line 1 for the Veteran's current mailing address.", - "type": "string", - "pattern": "^([-a-zA-Z0-9'.,&#]([-a-zA-Z0-9'.,&# ])?)+$", - "maxLength": 20, - "example": "1234 Couch Street" - }, - "addressLine2": { - "description": "Address line 2 for the Veteran's current mailing address.", - "type": "string", - "pattern": "^([-a-zA-Z0-9'.,&#]([-a-zA-Z0-9'.,&# ])?)+$", - "maxLength": 20, - "example": "Unit 4", - "nullable": true - }, - "addressLine3": { - "description": "Address line 3 for the Veteran's current mailing address.", - "type": "string", - "pattern": "^([-a-zA-Z0-9'.,&#]([-a-zA-Z0-9'.,&# ])?)+$", - "maxLength": 20, - "example": "Room 1", - "nullable": true - }, - "city": { - "description": "City for the Veteran's current mailing address.", - "type": "string", - "pattern": "^$|([a-zA-Z0-9\\'-'.# ]([a-zA-Z0-9\\'-'.# ])?)+$", - "minLength": 1, - "maxLength": 30, - "example": "Schenectady" - }, - "state": { - "description": "State for the Veteran's current mailing address. Required if 'country' is 'USA'.", - "type": "string", - "pattern": "^[a-z,A-Z]{2}$", - "example": "NY", - "nullable": true - }, - "country": { - "description": "Country for the Veteran's current mailing address. Must match the values returned by the /countries endpoint on the [Benefits Reference Data API](https://developer.va.gov/explore/benefits/docs/benefits_reference_data?version=current).", - "type": "string", - "maxLength": 1000, - "example": "USA" - }, - "zipFirstFive": { - "description": "Zip code (First 5 digits) for the Veteran's current mailing address. Required if 'country' is 'USA'.", - "type": "string", - "pattern": "^\\d{5}?$", - "example": "12345", - "nullable": true - }, - "zipLastFour": { - "description": "Zip code (Last 4 digits) for the Veteran's current mailing address.", - "type": "string", - "pattern": "^\\d{4}?$", - "example": "6789", - "nullable": true - }, - "internationalPostalCode": { - "description": "International postal code for the Veteran's current mailing address. Do not include if 'country' is 'USA'.", - "type": "string", - "maxLength": 16, - "nullable": true, - "pattern": "^[a-zA-Z0-9]*$" + } + }, + "changeOfAddress": { + "description": "If 'changeOfAddress' is included, the following attributes are required: 'typeOfAddressChange', 'addressLine1', 'city', 'country'.", + "type": "object", + "nullable": true, + "additionalProperties": false, + "properties": { + "typeOfAddressChange": { + "description": "Temporary or Permanent change of address. If 'TEMPORARY', 'beginDate' and 'endDate' are required.", + "type": "string", + "enum": [ + "TEMPORARY", + "PERMANENT" + ], + "example": "PERMANENT" + }, + "addressLine1": { + "description": "Address line 1 for the Veteran's new address.", + "type": "string", + "pattern": "^([-a-zA-Z0-9'.,&#]([-a-zA-Z0-9'.,&# ])?)+$", + "maxLength": 20, + "example": "1234 Couch Street" + }, + "addressLine2": { + "description": "Address line 2 for the Veteran's new address.", + "type": "string", + "pattern": "^([-a-zA-Z0-9'.,&#]([-a-zA-Z0-9'.,&# ])?)+$", + "maxLength": 20, + "example": "Unit 4", + "nullable": true + }, + "addressLine3": { + "description": "Address line 3 for the Veteran's new address.", + "type": "string", + "pattern": "^([-a-zA-Z0-9'.,&#]([-a-zA-Z0-9'.,&# ])?)+$", + "maxLength": 20, + "example": "Room 1", + "nullable": true + }, + "city": { + "description": "City for the Veteran's new address.", + "type": "string", + "pattern": "^$|([a-zA-Z0-9\\'-'.# ]([a-zA-Z0-9\\'-'.# ])?)+$", + "minLength": 0, + "maxLength": 30, + "example": "Schenectady" + }, + "state": { + "description": "State for the Veteran's new address. Required if 'country' is 'USA'.", + "type": "string", + "pattern": "^$|^[a-z,A-Z]{2}$", + "example": "NY", + "nullable": true + }, + "country": { + "description": "Country for the Veteran's new address. Value must match the values returned by the /countries endpoint on the [Benefits Reference Data API](https://developer.va.gov/explore/benefits/docs/benefits_reference_data?version=current).", + "type": "string", + "maxLength": 1000, + "example": "USA" + }, + "zipFirstFive": { + "description": "Zip code (First 5 digits) for the Veteran's new address. Required if 'country' is 'USA'.", + "type": "string", + "pattern": "^$|^\\d{5}?$", + "example": "12345", + "nullable": true + }, + "zipLastFour": { + "description": "Zip code (Last 4 digits) for the Veteran's new address.", + "type": "string", + "nullable": true, + "pattern": "^$|^\\d{4}?$", + "example": "6789" + }, + "internationalPostalCode": { + "description": "International postal code for the Veteran's new address. Do not include if 'country' is 'USA'.", + "type": "string", + "maxLength": 16, + "nullable": true, + "pattern": "^[a-zA-Z0-9]*$" + }, + "dates": { + "type": "object", + "properties": { + "beginDate": { + "description": "Begin date for the Veteran's new address.", + "pattern": "^(?:[0-9]{4})-(?:0[1-9]|1[0-2])-(?:0[1-9]|[1-2][0-9]|3[0-1])$", + "type": "string", + "nullable": true, + "example": "2018-06-04" + }, + "endDate": { + "description": "Date in YYYY-MM-DD the changed address expires, if change is temporary.", + "type": "string", + "nullable": true, + "pattern": "^(?:[0-9]{4})-(?:0[1-9]|1[0-2])-(?:0[1-9]|[1-2][0-9]|3[0-1])$", + "example": "2018-06-04" + } } } - }, - "emailAddress": { - "description": "Information associated with the Veteran's email address.", - "type": "object", - "nullable": true, - "properties": { - "email": { - "type": "string", - "pattern": "^[^\\s@]+@([^\\s@.,]+\\.)+[^\\s@.,]{2,}$", - "description": "The most current email address of the Veteran.", - "maxLength": 80, - "nullable": true - }, - "agreeToEmailRelatedToClaim": { - "type": "boolean", - "description": "Agreement to email information relating to this claim.", - "example": true, - "default": false, - "nullable": true + } + }, + "homeless": { + "type": "object", + "nullable": true, + "additionalProperties": false, + "properties": { + "isCurrentlyHomeless": { + "type": "boolean", + "nullable": true, + "description": "Is the Veteran currently homeless?" + }, + "currentlyHomeless": { + "type": "object", + "nullable": true, + "additionalProperties": false, + "properties": { + "homelessSituationOptions": { + "description": "Veteran's living situation.", + "type": "string", + "nullable": true, + "default": "other", + "enum": [ + "LIVING_IN_A_HOMELESS_SHELTER", + "NOT_CURRENTLY_IN_A_SHELTERED_ENVIRONMENT", + "STAYING_WITH_ANOTHER_PERSON", + "FLEEING_CURRENT_RESIDENCE", + "OTHER" + ], + "example": "FLEEING_CURRENT_RESIDENCE" + }, + "otherDescription": { + "description": "Explanation of living situation. Required if 'homelessSituationOptions' is 'OTHER'.", + "type": "string", + "nullable": true, + "maxLength": 500, + "example": "other living situation" + } + } + }, + "isAtRiskOfBecomingHomeless": { + "type": "boolean", + "nullable": true, + "description": "Is the Veteran currently at risk of becoming homeless?" + }, + "riskOfBecomingHomeless": { + "type": "object", + "nullable": true, + "additionalProperties": false, + "properties": { + "livingSituationOptions": { + "type": "string", + "nullable": true, + "default": "HOUSING_WILL_BE_LOST_IN_30_DAYS", + "enum": [ + "HOUSING_WILL_BE_LOST_IN_30_DAYS", + "LEAVING_PUBLICLY_FUNDED_SYSTEM_OF_CARE", + "OTHER" + ] + }, + "otherDescription": { + "description": "Explanation of living situation. Required if 'livingSituationOptions' is 'OTHER'.", + "type": "string", + "nullable": true, + "maxLength": 500, + "example": "other living situation" + } + } + }, + "pointOfContact": { + "description": "Individual in direct contact with Veteran.", + "type": "string", + "nullable": true, + "minLength": 1, + "maxLength": 100, + "pattern": "^([-a-zA-Z0-9/']+( ?))*$", + "example": "Jane Doe" + }, + "pointOfContactNumber": { + "type": "object", + "nullable": true, + "additionalProperties": false, + "properties": { + "telephone": { + "description": "Ten digit primary phone of point of contact.", + "type": "string", + "pattern": "^\\d{10}?$", + "example": "5555555", + "nullable": true + }, + "internationalTelephone": { + "description": "International phone of point of contact.", + "type": "string", + "example": "+44 20 1234 5678", + "maxLength": 1000, + "nullable": true + } } } - }, - "currentVaEmployee": { - "type": "boolean", - "description": "Set to true if Veteran is a VA employee.", - "nullable": false } - } - }, - "changeOfAddress": { - "description": "If 'changeOfAddress' is included, the following attributes are required: 'typeOfAddressChange', 'addressLine1', 'city', 'country'.", - "type": "object", - "nullable": true, - "additionalProperties": false, - "properties": { - "typeOfAddressChange": { - "description": "Temporary or Permanent change of address. If 'TEMPORARY', 'beginDate' and 'endDate' are required.", - "type": "string", - "enum": [ - "TEMPORARY", - "PERMANENT" - ], - "example": "PERMANENT" - }, - "addressLine1": { - "description": "Address line 1 for the Veteran's new address.", - "type": "string", - "pattern": "^([-a-zA-Z0-9'.,&#]([-a-zA-Z0-9'.,&# ])?)+$", - "maxLength": 20, - "example": "1234 Couch Street" - }, - "addressLine2": { - "description": "Address line 2 for the Veteran's new address.", - "type": "string", - "pattern": "^([-a-zA-Z0-9'.,&#]([-a-zA-Z0-9'.,&# ])?)+$", - "maxLength": 20, - "example": "Unit 4", - "nullable": true - }, - "addressLine3": { - "description": "Address line 3 for the Veteran's new address.", - "type": "string", - "pattern": "^([-a-zA-Z0-9'.,&#]([-a-zA-Z0-9'.,&# ])?)+$", - "maxLength": 20, - "example": "Room 1", - "nullable": true - }, - "city": { - "description": "City for the Veteran's new address.", - "type": "string", - "pattern": "^$|([a-zA-Z0-9\\'-'.# ]([a-zA-Z0-9\\'-'.# ])?)+$", - "minLength": 0, - "maxLength": 30, - "example": "Schenectady" - }, - "state": { - "description": "State for the Veteran's new address. Required if 'country' is 'USA'.", - "type": "string", - "pattern": "^$|^[a-z,A-Z]{2}$", - "example": "NY", - "nullable": true - }, - "country": { - "description": "Country for the Veteran's new address. Value must match the values returned by the /countries endpoint on the [Benefits Reference Data API](https://developer.va.gov/explore/benefits/docs/benefits_reference_data?version=current).", - "type": "string", - "maxLength": 1000, - "example": "USA" - }, - "zipFirstFive": { - "description": "Zip code (First 5 digits) for the Veteran's new address. Required if 'country' is 'USA'.", - "type": "string", - "pattern": "^$|^\\d{5}?$", - "example": "12345", - "nullable": true - }, - "zipLastFour": { - "description": "Zip code (Last 4 digits) for the Veteran's new address.", - "type": "string", - "nullable": true, - "pattern": "^$|^\\d{4}?$", - "example": "6789" - }, - "internationalPostalCode": { - "description": "International postal code for the Veteran's new address. Do not include if 'country' is 'USA'.", - "type": "string", - "maxLength": 16, - "nullable": true, - "pattern": "^[a-zA-Z0-9]*$" - }, - "dates": { - "type": "object", - "properties": { - "beginDate": { - "description": "Begin date for the Veteran's new address.", - "pattern": "^(?:[0-9]{4})-(?:0[1-9]|1[0-2])-(?:0[1-9]|[1-2][0-9]|3[0-1])$", - "type": "string", - "nullable": true, - "example": "2018-06-04" - }, - "endDate": { - "description": "Date in YYYY-MM-DD the changed address expires, if change is temporary.", - "type": "string", - "nullable": true, - "pattern": "^(?:[0-9]{4})-(?:0[1-9]|1[0-2])-(?:0[1-9]|[1-2][0-9]|3[0-1])$", - "example": "2018-06-04" - } - } - } - } - }, - "homeless": { - "type": "object", - "nullable": true, - "additionalProperties": false, - "properties": { - "isCurrentlyHomeless": { - "type": "boolean", - "nullable": true, - "description": "Is the Veteran currently homeless?" - }, - "currentlyHomeless": { - "type": "object", - "nullable": true, - "additionalProperties": false, - "properties": { - "homelessSituationOptions": { - "description": "Veteran's living situation.", - "type": "string", - "nullable": true, - "default": "other", - "enum": [ - "LIVING_IN_A_HOMELESS_SHELTER", - "NOT_CURRENTLY_IN_A_SHELTERED_ENVIRONMENT", - "STAYING_WITH_ANOTHER_PERSON", - "FLEEING_CURRENT_RESIDENCE", - "OTHER" - ], - "example": "FLEEING_CURRENT_RESIDENCE" - }, - "otherDescription": { - "description": "Explanation of living situation. Required if 'homelessSituationOptions' is 'OTHER'.", - "type": "string", - "nullable": true, - "maxLength": 500, - "example": "other living situation" + }, + "toxicExposure": { + "type": "object", + "nullable": true, + "properties": { + "gulfWarHazardService": { + "type": "object", + "nullable": true, + "description": "Toxic exposure related to the Gulf war.", + "properties": { + "servedInGulfWarHazardLocations": { + "type": "string", + "description": "Set to true if the Veteran served in any of the following Gulf War hazard locations: Iraq; Kuwait; Saudi Arabia; the neutral zone between Iraq and Saudi Arabia; Bahrain; Qatar; the United Arab Emirates; Oman; Yemen; Lebanon; Somalia; Afghanistan; Israel; Egypt; Turkey; Syria; Jordan; Djibouti; Uzbekistan; the Gulf of Aden; the Gulf of Oman; the Persian Gulf; the Arabian Sea; and the Red Sea.", + "example": "YES", + "enum": [ + "NO", + "YES" + ], + "nullable": true + }, + "serviceDates": { + "type": "object", + "nullable": true, + "description": "Date range for when the exposure happened.", + "properties": { + "beginDate": { + "type": "string", + "nullable": true, + "description": "Approximate begin date for serving in Gulf War hazard location.", + "pattern": "^(?:19|20)[0-9][0-9]$|^(?:19|20)[0-9][0-9]-(0[1-9]|1[0-2])$", + "example": "2018-06 or 2018" + }, + "endDate": { + "type": "string", + "nullable": true, + "description": "Approximate end date for serving in Gulf War hazard location.", + "pattern": "^(?:19|20)[0-9][0-9]$|^(?:19|20)[0-9][0-9]-(0[1-9]|1[0-2])$", + "example": "2018-06 or 2018" + } + } + } } - } - }, - "isAtRiskOfBecomingHomeless": { - "type": "boolean", - "nullable": true, - "description": "Is the Veteran currently at risk of becoming homeless?" - }, - "riskOfBecomingHomeless": { - "type": "object", - "nullable": true, - "additionalProperties": false, - "properties": { - "livingSituationOptions": { - "type": "string", - "nullable": true, - "default": "HOUSING_WILL_BE_LOST_IN_30_DAYS", - "enum": [ - "HOUSING_WILL_BE_LOST_IN_30_DAYS", - "LEAVING_PUBLICLY_FUNDED_SYSTEM_OF_CARE", - "OTHER" - ] - }, - "otherDescription": { - "description": "Explanation of living situation. Required if 'livingSituationOptions' is 'OTHER'.", - "type": "string", - "nullable": true, - "maxLength": 500, - "example": "other living situation" + }, + "herbicideHazardService": { + "description": "Toxic exposure related to herbicide (Agent Orange) hazards.", + "type": "object", + "nullable": true, + "properties": { + "servedInHerbicideHazardLocations": { + "type": "string", + "description": "Set to true if the Veteran served in any of the following herbicide/Agent Orange locations: Republic of Vietnam to include the 12 nautical mile territorial waters; Thailand at any United States or Royal Thai base; Laos; Cambodia at Mimot or Krek; Kampong Cham Province; Guam or American Samoa; or in the territorial waters thereof; Johnston Atoll or a ship that called at Johnston Atoll; Korean demilitarized zone; aboard (to include repeated operations and maintenance with) a C-123 aircraft known to have been used to spray an herbicide agent (during service in the Air Force and Air Force Reserves).", + "example": "YES", + "enum": [ + "NO", + "YES" + ], + "nullable": true + }, + "otherLocationsServed": { + "type": "string", + "nullable": true, + "pattern": "^$|([a-zA-Z0-9\"\\/&\\(\\)\\-'.,#\\[\\] ]([a-zA-Z0-9(\\)\\-'.,#\\[\\] ])?)+$", + "maxLength": 5000, + "description": "Other location(s) where Veteran served." + }, + "serviceDates": { + "description": "Date range for exposure in herbicide hazard location.", + "type": "object", + "nullable": true, + "properties": { + "beginDate": { + "type": "string", + "nullable": true, + "description": "Approximate begin date for serving in herbicide location.", + "pattern": "^(?:19|20)[0-9][0-9]$|^(?:19|20)[0-9][0-9]-(0[1-9]|1[0-2])$", + "example": "2018-06 or 2018" + }, + "endDate": { + "type": "string", + "nullable": true, + "description": "Approximate end date for serving in herbicide location.", + "pattern": "^(?:19|20)[0-9][0-9]$|^(?:19|20)[0-9][0-9]-(0[1-9]|1[0-2])$", + "example": "2018-06 or 2018" + } + } + } } - } - }, - "pointOfContact": { - "description": "Individual in direct contact with Veteran.", - "type": "string", - "nullable": true, - "minLength": 1, - "maxLength": 100, - "pattern": "^([-a-zA-Z0-9/']+( ?))*$", - "example": "Jane Doe" - }, - "pointOfContactNumber": { - "type": "object", - "nullable": true, - "additionalProperties": false, - "properties": { - "telephone": { - "description": "Ten digit primary phone of point of contact.", - "type": "string", - "pattern": "^\\d{10}?$", - "example": "5555555", - "nullable": true - }, - "internationalTelephone": { - "description": "International phone of point of contact.", - "type": "string", - "example": "+44 20 1234 5678", - "maxLength": 1000, - "nullable": true - } - } - } - } - }, - "toxicExposure": { - "type": "object", - "nullable": true, - "properties": { - "gulfWarHazardService": { - "type": "object", - "nullable": true, - "description": "Toxic exposure related to the Gulf war.", - "properties": { - "servedInGulfWarHazardLocations": { - "type": "string", - "description": "Set to true if the Veteran served in any of the following Gulf War hazard locations: Iraq; Kuwait; Saudi Arabia; the neutral zone between Iraq and Saudi Arabia; Bahrain; Qatar; the United Arab Emirates; Oman; Yemen; Lebanon; Somalia; Afghanistan; Israel; Egypt; Turkey; Syria; Jordan; Djibouti; Uzbekistan; the Gulf of Aden; the Gulf of Oman; the Persian Gulf; the Arabian Sea; and the Red Sea.", - "example": "YES", - "enum": [ - "NO", - "YES" - ], - "nullable": true - }, - "serviceDates": { - "type": "object", - "nullable": true, - "description": "Date range for when the exposure happened.", - "properties": { - "beginDate": { - "type": "string", - "nullable": true, - "description": "Approximate begin date for serving in Gulf War hazard location.", - "pattern": "^(?:19|20)[0-9][0-9]$|^(?:19|20)[0-9][0-9]-(0[1-9]|1[0-2])$", - "example": "2018-06 or 2018" - }, - "endDate": { - "type": "string", - "nullable": true, - "description": "Approximate end date for serving in Gulf War hazard location.", - "pattern": "^(?:19|20)[0-9][0-9]$|^(?:19|20)[0-9][0-9]-(0[1-9]|1[0-2])$", - "example": "2018-06 or 2018" - } - } - } - } - }, - "herbicideHazardService": { - "description": "Toxic exposure related to herbicide (Agent Orange) hazards.", - "type": "object", - "nullable": true, - "properties": { - "servedInHerbicideHazardLocations": { - "type": "string", - "description": "Set to true if the Veteran served in any of the following herbicide/Agent Orange locations: Republic of Vietnam to include the 12 nautical mile territorial waters; Thailand at any United States or Royal Thai base; Laos; Cambodia at Mimot or Krek; Kampong Cham Province; Guam or American Samoa; or in the territorial waters thereof; Johnston Atoll or a ship that called at Johnston Atoll; Korean demilitarized zone; aboard (to include repeated operations and maintenance with) a C-123 aircraft known to have been used to spray an herbicide agent (during service in the Air Force and Air Force Reserves).", - "example": "YES", - "enum": [ - "NO", - "YES" - ], - "nullable": true - }, - "otherLocationsServed": { - "type": "string", - "nullable": true, - "pattern": "^$|([a-zA-Z0-9\"\\/&\\(\\)\\-'.,#\\[\\] ]([a-zA-Z0-9(\\)\\-'.,#\\[\\] ])?)+$", - "maxLength": 5000, - "description": "Other location(s) where Veteran served." - }, - "serviceDates": { - "description": "Date range for exposure in herbicide hazard location.", - "type": "object", - "nullable": true, - "properties": { - "beginDate": { - "type": "string", - "nullable": true, - "description": "Approximate begin date for serving in herbicide location.", - "pattern": "^(?:19|20)[0-9][0-9]$|^(?:19|20)[0-9][0-9]-(0[1-9]|1[0-2])$", - "example": "2018-06 or 2018" - }, - "endDate": { - "type": "string", - "nullable": true, - "description": "Approximate end date for serving in herbicide location.", - "pattern": "^(?:19|20)[0-9][0-9]$|^(?:19|20)[0-9][0-9]-(0[1-9]|1[0-2])$", - "example": "2018-06 or 2018" - } - } - } - } - }, - "additionalHazardExposures": { - "type": "object", - "nullable": true, - "description": "Additional hazardous exposures.", - "properties": { - "additionalExposures": { - "description": "Additional exposure incidents.", - "type": "array", - "nullable": true, - "uniqueItems": true, - "items": { - "type": "string", - "additionalProperties": false, - "enum": [ - "ASBESTOS", - "MUSTARD_GAS", - "RADIATION", - "SHIPBOARD_HAZARD_AND_DEFENSE", - "MILITARY_OCCUPATIONAL_SPECIALTY_RELATED_TOXIN", - "CONTAMINATED_WATER_AT_CAMP_LEJEUNE", - "OTHER" - ] - } - }, - "specifyOtherExposures": { - "type": "string", - "nullable": true, - "pattern": "^$|([a-zA-Z0-9\"\\/&\\(\\)\\-'.,#\\[\\] ]([a-zA-Z0-9(\\)\\-'.,#\\[\\] ])?)+$", - "maxLength": 5000, - "description": "Exposure to asbestos." - }, - "exposureDates": { - "type": "object", - "nullable": true, - "description": "Date range for when the exposure happened.", - "properties": { - "beginDate": { - "type": "string", - "nullable": true, - "description": "Approximate begin date for exposure.", - "pattern": "^(?:19|20)[0-9][0-9]$|^(?:19|20)[0-9][0-9]-(0[1-9]|1[0-2])$", - "example": "2018-06 or 2018" - }, - "endDate": { - "type": "string", - "nullable": true, - "description": "Approximate end date for exposure.", - "pattern": "^(?:19|20)[0-9][0-9]$|^(?:19|20)[0-9][0-9]-(0[1-9]|1[0-2])$", - "example": "2018-06 or 2018" - } - } - } - } - }, - "multipleExposures": { - "type": "array", - "nullable": true, - "minItems": 1, - "uniqueItems": true, - "items": { + }, + "additionalHazardExposures": { "type": "object", - "additionalProperties": false, + "nullable": true, + "description": "Additional hazardous exposures.", "properties": { - "hazardExposedTo": { - "type": "string", + "additionalExposures": { + "description": "Additional exposure incidents.", + "type": "array", "nullable": true, - "pattern": "^([-a-zA-Z0-9'.,&# ])+$", - "maxLength": 1000, - "description": "Hazard the Veteran was exposed to." + "uniqueItems": true, + "items": { + "type": "string", + "additionalProperties": false, + "enum": [ + "ASBESTOS", + "MUSTARD_GAS", + "RADIATION", + "SHIPBOARD_HAZARD_AND_DEFENSE", + "MILITARY_OCCUPATIONAL_SPECIALTY_RELATED_TOXIN", + "CONTAMINATED_WATER_AT_CAMP_LEJEUNE", + "OTHER" + ] + } }, - "exposureLocation": { + "specifyOtherExposures": { "type": "string", "nullable": true, "pattern": "^$|([a-zA-Z0-9\"\\/&\\(\\)\\-'.,#\\[\\] ]([a-zA-Z0-9(\\)\\-'.,#\\[\\] ])?)+$", - "maxLength": 1000, - "description": "Location where the exposure happened." + "maxLength": 5000, + "description": "Exposure to asbestos." }, "exposureDates": { "type": "object", @@ -2562,7477 +1320,4405 @@ } } } - } - } - } - }, - "disabilities": { - "description": "Any current disabilities or symptoms the Veteran is claiming are related to their military service and/or are service-connected.", - "type": "array", - "minItems": 1, - "items": { - "type": "object", - "additionalProperties": false, - "required": [ - "disabilityActionType", - "name" - ], - "properties": { - "name": { - "description": "Name of the disability. The /disabilities endpoint on the [Benefits Reference Data API](https://developer.va.gov/explore/benefits/docs/benefits_reference_data?version=current) may be used to retrieve possible disability names.", - "type": "string", - "pattern": "^$|([a-zA-Z0-9\"\\/&\\(\\)\\-'.,#\\[\\] ]([a-zA-Z0-9(\\)\\-'.,#\\[\\] ])?)+$", - "example": "PTSD (post traumatic stress disorder)", - "maxLength": 255 - }, - "exposureOrEventOrInjury": { - "type": "string", - "description": "What caused the disability?", - "nullable": true, - "maxLength": 1000, - "examples": [ - "Agent Orange", - "radiation", - "burn pits" - ] }, - "serviceRelevance": { - "description": "Explanation of how the disability(ies) relates to the in-service event/exposure/injury. If the disabilityActionType is 'NEW', the serviceRelevance is required.", - "type": "string", - "nullable": true, - "maxLength": 1000, - "example": "Heavy equipment operator in service." - }, - "approximateDate": { - "description": "Approximate date disability began. Date must be in the past. \n Format can be either YYYY-MM-DD or YYYY-MM or YYYY", - "type": "string", - "pattern": "^(?:[0-9]{4}(?:-(?!00)(?:0[1-9]|1[0-2])(?:-(?:0[1-9]|[1-2][0-9]|3[0-1]))?)?)$", - "example": "2018-03-02 or 2018-03 or 2018", - "nullable": true - }, - "disabilityActionType": { - "description": "Action type requested for the disability. If 'INCREASE' or 'NONE', then 'ratedDisabilityId' and 'diagnosticCode' should be included. 'NONE' should be used when including a secondary disability.", - "type": "string", - "enum": [ - "NONE", - "NEW", - "INCREASE" - ], - "example": "NEW" - }, - "classificationCode": { - "type": "string", - "description": "Classification code for the associated body system. Must match an active code returned by the /disabilities endpoint on the [Benefits Reference Data API](https://developer.va.gov/explore/benefits/docs/benefits_reference_data?version=current).", - "example": "249470", - "nullable": true - }, - "ratedDisabilityId": { - "description": "When submitting a contention with action type 'INCREASE', the previously rated disability id may be included.", - "type": "string", - "example": "1100583", - "nullable": true - }, - "diagnosticCode": { - "description": "If the disabilityActionType is 'NONE' or 'INCREASE', the diagnosticCode should correspond to an existing rated disability.", - "type": "integer", - "example": 9999, - "nullable": true - }, - "isRelatedToToxicExposure": { - "type": "boolean", - "description": "Is the disability related to toxic exposures? If true, related 'toxicExposure' must be included.", - "example": true, - "default": false, - "nullable": true - }, - "specialIssues": { - "type": "array", + "multipleExposures": { + "type": "array", "nullable": true, + "minItems": 1, "uniqueItems": true, - "items": { - "maxItems": 2, - "additionalProperties": false, - "type": "string", - "enum": [ - "POW", - "EMP" - ] - } - }, - "secondaryDisabilities": { - "description": "If secondaryDisability is included, the following attributes are required: 'secondaryDisability.name', 'secondaryDisability.disabilityActionType' and 'secondaryDisability.serviceRelevance'", - "type": "array", "items": { "type": "object", "additionalProperties": false, "properties": { - "name": { - "description": "Name of the disability. The /disabilities endpoint on the [Benefits Reference Data API](https://developer.va.gov/explore/benefits/docs/benefits_reference_data?version=current) may be used to retrieve possible disability names.", - "type": "string", - "pattern": "^$|([a-zA-Z0-9\"\\/&\\(\\)\\-'.,# ]([a-zA-Z0-9(\\)\\-'.,#\\[\\] ])?)+$", - "example": "PTSD (post traumatic stress disorder)", - "maxLength": 255 - }, - "exposureOrEventOrInjury": { + "hazardExposedTo": { "type": "string", - "description": "What caused the disability?", "nullable": true, + "pattern": "^([-a-zA-Z0-9'.,&# ])+$", "maxLength": 1000, - "examples": [ - "Agent Orange", - "radiation", - "burn pits" - ] + "description": "Hazard the Veteran was exposed to." }, - "serviceRelevance": { - "description": "Explanation of how the disability(ies) relates to the in-service event/exposure/injury.", + "exposureLocation": { "type": "string", "nullable": true, + "pattern": "^$|([a-zA-Z0-9\"\\/&\\(\\)\\-'.,#\\[\\] ]([a-zA-Z0-9(\\)\\-'.,#\\[\\] ])?)+$", "maxLength": 1000, - "example": "Heavy equipment operator in service." - }, - "disabilityActionType": { - "description": "The status of the secondary disability.", - "type": "string", - "example": "SECONDARY", - "enum": [ - "SECONDARY" - ] - }, - "approximateDate": { - "description": "Approximate date disability began. Date must be in the past. \n Format can be either YYYY-MM-DD or YYYY-MM or YYYY", - "type": "string", - "pattern": "^(?:[0-9]{4}(?:-(?!00)(?:0[1-9]|1[0-2])(?:-(?:0[1-9]|[1-2][0-9]|3[0-1]))?)?)$", - "example": "2018-03-02 or 2018-03 or 2018", - "nullable": true + "description": "Location where the exposure happened." }, - "classificationCode": { - "type": "string", - "description": "Classification code for the associated body system. Must match an active code returned by the /disabilities endpoint on the [Benefits Reference Data API](https://developer.va.gov/explore/benefits/docs/benefits_reference_data?version=current).", - "example": "249470", - "nullable": true + "exposureDates": { + "type": "object", + "nullable": true, + "description": "Date range for when the exposure happened.", + "properties": { + "beginDate": { + "type": "string", + "nullable": true, + "description": "Approximate begin date for exposure.", + "pattern": "^(?:19|20)[0-9][0-9]$|^(?:19|20)[0-9][0-9]-(0[1-9]|1[0-2])$", + "example": "2018-06 or 2018" + }, + "endDate": { + "type": "string", + "nullable": true, + "description": "Approximate end date for exposure.", + "pattern": "^(?:19|20)[0-9][0-9]$|^(?:19|20)[0-9][0-9]-(0[1-9]|1[0-2])$", + "example": "2018-06 or 2018" + } + } } } } } } - } - }, - "treatments": { - "description": "Identifies the Service Treatment information of the Veteran. The combination of treatedDisabilityName, center name, center city, and center state must be less than 1000 characters to successfully generate a PDF.", - "type": "array", - "nullable": true, - "uniqueItems": true, - "items": { - "type": "object", - "additionalProperties": false, - "properties": { - "beginDate": { - "description": "Begin date for treatment. If treatment began from 2005 to present, you do not need to provide dates. Each treatment begin date must be after the first 'servicePeriod.activeDutyBeginDate'.", - "type": "string", - "pattern": "^(?:19|20)[0-9][0-9]$|^(?:19|20)[0-9][0-9]-(0[1-9]|1[0-2])$", - "example": "2018-06 or 2018", - "nullable": true - }, - "treatedDisabilityNames": { - "description": "Name(s) of disabilities treated in this time frame.", - "type": "array", - "nullable": true, - "maxItems": 101, - "items": { + }, + "disabilities": { + "description": "Any current disabilities or symptoms the Veteran is claiming are related to their military service and/or are service-connected.", + "type": "array", + "minItems": 1, + "items": { + "type": "object", + "additionalProperties": false, + "required": [ + "disabilityActionType", + "name" + ], + "properties": { + "name": { + "description": "Name of the disability. The /disabilities endpoint on the [Benefits Reference Data API](https://developer.va.gov/explore/benefits/docs/benefits_reference_data?version=current) may be used to retrieve possible disability names.", "type": "string", - "additionalProperties": false, - "example": [ - "PTSD (post traumatic stress disorder)", - "Trauma" + "pattern": "^$|([a-zA-Z0-9\"\\/&\\(\\)\\-'.,#\\[\\] ]([a-zA-Z0-9(\\)\\-'.,#\\[\\] ])?)+$", + "example": "PTSD (post traumatic stress disorder)", + "maxLength": 255 + }, + "exposureOrEventOrInjury": { + "type": "string", + "description": "What caused the disability?", + "nullable": true, + "maxLength": 1000, + "examples": [ + "Agent Orange", + "radiation", + "burn pits" ] - } - }, - "center": { - "description": "VA Medical Center(s) and Department of Defense Military Treatment Facilities where the Veteran received treatment after discharge for any claimed disabilities.", - "type": "object", - "nullable": true, - "additionalProperties": false, - "properties": { - "name": { - "description": "Name of facility Veteran was treated in. The /treatment-centers endpoint on the [Benefits Reference Data API](https://developer.va.gov/explore/benefits/docs/benefits_reference_data?version=current) may be used to retrieve possible treatment center names.", - "type": "string", - "nullable": true, - "pattern": "([a-zA-Z0-9\"/&()\\'-'.,# ]([a-zA-Z0-9()\\'-'.,# ])?)+$", - "example": "Private Facility 2", - "minLength": 1, - "maxLength": 100 - }, - "city": { - "description": "City of treatment facility.", + }, + "serviceRelevance": { + "description": "Explanation of how the disability(ies) relates to the in-service event/exposure/injury. If the disabilityActionType is 'NEW', the serviceRelevance is required.", + "type": "string", + "nullable": true, + "maxLength": 1000, + "example": "Heavy equipment operator in service." + }, + "approximateDate": { + "description": "Approximate date disability began. Date must be in the past. \n Format can be either YYYY-MM-DD or YYYY-MM or YYYY", + "type": "string", + "pattern": "^(?:[0-9]{4}(?:-(?!00)(?:0[1-9]|1[0-2])(?:-(?:0[1-9]|[1-2][0-9]|3[0-1]))?)?)$", + "example": "2018-03-02 or 2018-03 or 2018", + "nullable": true + }, + "disabilityActionType": { + "description": "Action type requested for the disability. If 'INCREASE' or 'NONE', then 'ratedDisabilityId' and 'diagnosticCode' should be included. 'NONE' should be used when including a secondary disability.", + "type": "string", + "enum": [ + "NONE", + "NEW", + "INCREASE" + ], + "example": "NEW" + }, + "classificationCode": { + "type": "string", + "description": "Classification code for the associated body system. Must match an active code returned by the /disabilities endpoint on the [Benefits Reference Data API](https://developer.va.gov/explore/benefits/docs/benefits_reference_data?version=current).", + "example": "249470", + "nullable": true + }, + "ratedDisabilityId": { + "description": "When submitting a contention with action type 'INCREASE', the previously rated disability id may be included.", + "type": "string", + "example": "1100583", + "nullable": true + }, + "diagnosticCode": { + "description": "If the disabilityActionType is 'NONE' or 'INCREASE', the diagnosticCode should correspond to an existing rated disability.", + "type": "integer", + "example": 9999, + "nullable": true + }, + "isRelatedToToxicExposure": { + "type": "boolean", + "description": "Is the disability related to toxic exposures? If true, related 'toxicExposure' must be included.", + "example": true, + "default": false, + "nullable": true + }, + "specialIssues": { + "type": "array", + "nullable": true, + "uniqueItems": true, + "items": { + "maxItems": 2, + "additionalProperties": false, "type": "string", - "pattern": "([a-zA-Z0-9\\-'.# ]([a-zA-Z0-9\\-'.# ])?)+$", - "example": "Portland", - "nullable": true, - "minLength": 0, - "maxLength": 30 - }, - "state": { - "description": "State of treatment facility.", - "type": "string", - "pattern": "^$|^[a-z,A-Z]{2}$", - "example": "OR", - "nullable": true - } - } - } - } - } - }, - "serviceInformation": { - "type": "object", - "additionalProperties": false, - "required": [ - "servicePeriods" - ], - "properties": { - "alternateNames": { - "description": "List any other names under which the Veteran served, if applicable.", - "type": "array", - "nullable": true, - "maxItems": 100, - "uniqueItems": true, - "items": { - "type": "string", - "additionalProperties": false, - "examples": [ - "jane", - "janey lee", - "jane lee MacDonald" - ] - } - }, - "servicePeriods": { - "description": "Identifies the Service dates and Branch the Veteran served in.", - "type": "array", - "minItems": 1, - "items": { - "type": "object", - "required": [ - "serviceBranch", - "serviceComponent", - "activeDutyBeginDate", - "activeDutyEndDate" - ], - "properties": { - "serviceBranch": { - "description": "Branch of service during period. The /service-branches endpoint on the [Benefits Reference Data API](https://developer.va.gov/explore/benefits/docs/benefits_reference_data?version=current) may be used to retrieve list of possible service branches.", - "type": "string", - "maxLength": 1000, - "example": "Air Force" - }, - "serviceComponent": { - "type": "string", - "description": "", "enum": [ - "Active", - "Reserves", - "National Guard" + "POW", + "EMP" ] - }, - "activeDutyBeginDate": { - "description": "Date started active duty.", - "type": "string", - "pattern": "^(?:[0-9]{4})-(?:0[1-9]|1[0-2])-(?:0[1-9]|[1-2][0-9]|3[0-1])$", - "example": "2018-06-06" - }, - "activeDutyEndDate": { - "description": "Date completed active duty.", - "type": "string", - "pattern": "^(?:[0-9]{4})-(?:0[1-9]|1[0-2])-(?:0[1-9]|[1-2][0-9]|3[0-1])$", - "example": "2018-06-06" - }, - "separationLocationCode": { - "description": "Location code for the facility the Veteran plans to separate from. Code must match the values returned by the /intake-sites endpoint on the [Benefits reference Data API](https://developer.va.gov/explore/benefits/docs/benefits_reference_data?version=current).", - "type": "string", - "nullable": true, - "example": "98283" + } + }, + "secondaryDisabilities": { + "description": "If secondaryDisability is included, the following attributes are required: 'secondaryDisability.name', 'secondaryDisability.disabilityActionType' and 'secondaryDisability.serviceRelevance'", + "type": "array", + "items": { + "type": "object", + "additionalProperties": false, + "properties": { + "name": { + "description": "Name of the disability. The /disabilities endpoint on the [Benefits Reference Data API](https://developer.va.gov/explore/benefits/docs/benefits_reference_data?version=current) may be used to retrieve possible disability names.", + "type": "string", + "pattern": "^$|([a-zA-Z0-9\"\\/&\\(\\)\\-'.,# ]([a-zA-Z0-9(\\)\\-'.,#\\[\\] ])?)+$", + "example": "PTSD (post traumatic stress disorder)", + "maxLength": 255 + }, + "exposureOrEventOrInjury": { + "type": "string", + "description": "What caused the disability?", + "nullable": true, + "maxLength": 1000, + "examples": [ + "Agent Orange", + "radiation", + "burn pits" + ] + }, + "serviceRelevance": { + "description": "Explanation of how the disability(ies) relates to the in-service event/exposure/injury.", + "type": "string", + "nullable": true, + "maxLength": 1000, + "example": "Heavy equipment operator in service." + }, + "disabilityActionType": { + "description": "The status of the secondary disability.", + "type": "string", + "example": "SECONDARY", + "enum": [ + "SECONDARY" + ] + }, + "approximateDate": { + "description": "Approximate date disability began. Date must be in the past. \n Format can be either YYYY-MM-DD or YYYY-MM or YYYY", + "type": "string", + "pattern": "^(?:[0-9]{4}(?:-(?!00)(?:0[1-9]|1[0-2])(?:-(?:0[1-9]|[1-2][0-9]|3[0-1]))?)?)$", + "example": "2018-03-02 or 2018-03 or 2018", + "nullable": true + }, + "classificationCode": { + "type": "string", + "description": "Classification code for the associated body system. Must match an active code returned by the /disabilities endpoint on the [Benefits Reference Data API](https://developer.va.gov/explore/benefits/docs/benefits_reference_data?version=current).", + "example": "249470", + "nullable": true + } + } } } } - }, - "servedInActiveCombatSince911": { - "type": "string", - "enum": [ - "YES", - "NO" - ], - "description": "Did Veteran serve in a combat zone since 9-11-2001?", - "example": "YES", - "nullable": true - }, - "reservesNationalGuardService": { + } + }, + "treatments": { + "description": "Identifies the Service Treatment information of the Veteran. The combination of treatedDisabilityName, center name, center city, and center state must be less than 1000 characters to successfully generate a PDF.", + "type": "array", + "nullable": true, + "uniqueItems": true, + "items": { "type": "object", - "nullable": true, "additionalProperties": false, "properties": { - "component": { + "beginDate": { + "description": "Begin date for treatment. If treatment began from 2005 to present, you do not need to provide dates. Each treatment begin date must be after the first 'servicePeriod.activeDutyBeginDate'.", "type": "string", - "nullable": true, - "description": "", - "enum": [ - "Reserves", - "National Guard" - ] + "pattern": "^(?:19|20)[0-9][0-9]$|^(?:19|20)[0-9][0-9]-(0[1-9]|1[0-2])$", + "example": "2018-06 or 2018", + "nullable": true }, - "obligationTermsOfService": { - "type": "object", + "treatedDisabilityNames": { + "description": "Name(s) of disabilities treated in this time frame.", + "type": "array", "nullable": true, - "description": "If 'obligationTermsOfService' is included, the following attributes are required: 'beginDate ' and 'endDate'.", - "additionalProperties": false, - "properties": { - "beginDate": { - "type": "string", - "nullable": true, - "pattern": "^(?:[0-9]{4})-(?:0[1-9]|1[0-2])-(?:0[1-9]|[1-2][0-9]|3[0-1])$", - "example": "2018-06-06" - }, - "endDate": { - "type": "string", - "nullable": true, - "pattern": "^(?:[0-9]{4})-(?:0[1-9]|1[0-2])-(?:0[1-9]|[1-2][0-9]|3[0-1])$", - "example": "2018-06-06" - } + "maxItems": 101, + "items": { + "type": "string", + "additionalProperties": false, + "example": [ + "PTSD (post traumatic stress disorder)", + "Trauma" + ] } }, - "unitName": { - "type": "string", - "nullable": true, - "maxLength": 1000, - "pattern": "^$|([a-zA-Z0-9\\-'.,# ][a-zA-Z0-9\\-'.,# ]?)*$" - }, - "unitAddress": { - "type": "string", - "maxLength": 1000, - "pattern": "^$|^([-a-zA-Z0-9'.,&# ])+$", - "nullable": true - }, - "unitPhone": { + "center": { + "description": "VA Medical Center(s) and Department of Defense Military Treatment Facilities where the Veteran received treatment after discharge for any claimed disabilities.", "type": "object", "nullable": true, "additionalProperties": false, "properties": { - "areaCode": { + "name": { + "description": "Name of facility Veteran was treated in. The /treatment-centers endpoint on the [Benefits Reference Data API](https://developer.va.gov/explore/benefits/docs/benefits_reference_data?version=current) may be used to retrieve possible treatment center names.", "type": "string", "nullable": true, - "maxLength": 3, - "pattern": "^$|^\\d{3}$", - "example": "555" + "pattern": "([a-zA-Z0-9\"/&()\\'-'.,# ]([a-zA-Z0-9()\\'-'.,# ])?)+$", + "example": "Private Facility 2", + "minLength": 1, + "maxLength": 100 }, - "phoneNumber": { + "city": { + "description": "City of treatment facility.", "type": "string", + "pattern": "([a-zA-Z0-9\\-'.# ]([a-zA-Z0-9\\-'.# ])?)+$", + "example": "Portland", "nullable": true, - "maxLength": 20, - "example": "5555555" + "minLength": 0, + "maxLength": 30 + }, + "state": { + "description": "State of treatment facility.", + "type": "string", + "pattern": "^$|^[a-z,A-Z]{2}$", + "example": "OR", + "nullable": true } } - }, - "receivingInactiveDutyTrainingPay": { - "type": "string", - "enum": [ - "YES", - "NO" - ], - "nullable": true, - "example": "YES" } } - }, - "federalActivation": { - "description": "If federalActivation is present then reservesNationalGuardService.obligationTermsOfService.beginDate, reservesNationalGuardService.obligationTermsOfService.endDate and reservesNationalGuardService.unitName are required", - "type": "object", - "nullable": true, - "additionalProperties": false, - "properties": { - "activationDate": { - "description": "Date cannot be in the future and must be after the earliest servicePeriod.activeDutyBeginDate.", - "type": "string", - "pattern": "^(?:[0-9]{4})-(?:0[1-9]|1[0-2])-(?:0[1-9]|[1-2][0-9]|3[0-1])$", - "example": "2018-06-06", - "nullable": true - }, - "anticipatedSeparationDate": { - "description": "Anticipated date of separation. Date must be in the future.", + } + }, + "serviceInformation": { + "type": "object", + "additionalProperties": false, + "required": [ + "servicePeriods" + ], + "properties": { + "alternateNames": { + "description": "List any other names under which the Veteran served, if applicable.", + "type": "array", + "nullable": true, + "maxItems": 100, + "uniqueItems": true, + "items": { "type": "string", - "pattern": "^(?:[0-9]{4})-(?:0[1-9]|1[0-2])-(?:0[1-9]|[1-2][0-9]|3[0-1])$", - "example": "2018-06-06", - "nullable": true + "additionalProperties": false, + "examples": [ + "jane", + "janey lee", + "jane lee MacDonald" + ] } - } - }, - "confinements": { - "type": "array", - "nullable": true, - "uniqueItems": true, - "items": { + }, + "servicePeriods": { + "description": "Identifies the Service dates and Branch the Veteran served in.", + "type": "array", + "minItems": 1, + "items": { + "type": "object", + "required": [ + "serviceBranch", + "serviceComponent", + "activeDutyBeginDate", + "activeDutyEndDate" + ], + "properties": { + "serviceBranch": { + "description": "Branch of service during period. The /service-branches endpoint on the [Benefits Reference Data API](https://developer.va.gov/explore/benefits/docs/benefits_reference_data?version=current) may be used to retrieve list of possible service branches.", + "type": "string", + "maxLength": 1000, + "example": "Air Force" + }, + "serviceComponent": { + "type": "string", + "description": "", + "enum": [ + "Active", + "Reserves", + "National Guard" + ] + }, + "activeDutyBeginDate": { + "description": "Date started active duty.", + "type": "string", + "pattern": "^(?:[0-9]{4})-(?:0[1-9]|1[0-2])-(?:0[1-9]|[1-2][0-9]|3[0-1])$", + "example": "2018-06-06" + }, + "activeDutyEndDate": { + "description": "Date completed active duty.", + "type": "string", + "pattern": "^(?:[0-9]{4})-(?:0[1-9]|1[0-2])-(?:0[1-9]|[1-2][0-9]|3[0-1])$", + "example": "2018-06-06" + }, + "separationLocationCode": { + "description": "Location code for the facility the Veteran plans to separate from. Code must match the values returned by the /intake-sites endpoint on the [Benefits reference Data API](https://developer.va.gov/explore/benefits/docs/benefits_reference_data?version=current).", + "type": "string", + "nullable": true, + "example": "98283" + } + } + } + }, + "servedInActiveCombatSince911": { + "type": "string", + "enum": [ + "YES", + "NO" + ], + "description": "Did Veteran serve in a combat zone since 9-11-2001?", + "example": "YES", + "nullable": true + }, + "reservesNationalGuardService": { + "type": "object", + "nullable": true, "additionalProperties": false, + "properties": { + "component": { + "type": "string", + "nullable": true, + "description": "", + "enum": [ + "Reserves", + "National Guard" + ] + }, + "obligationTermsOfService": { + "type": "object", + "nullable": true, + "description": "If 'obligationTermsOfService' is included, the following attributes are required: 'beginDate ' and 'endDate'.", + "additionalProperties": false, + "properties": { + "beginDate": { + "type": "string", + "nullable": true, + "pattern": "^(?:[0-9]{4})-(?:0[1-9]|1[0-2])-(?:0[1-9]|[1-2][0-9]|3[0-1])$", + "example": "2018-06-06" + }, + "endDate": { + "type": "string", + "nullable": true, + "pattern": "^(?:[0-9]{4})-(?:0[1-9]|1[0-2])-(?:0[1-9]|[1-2][0-9]|3[0-1])$", + "example": "2018-06-06" + } + } + }, + "unitName": { + "type": "string", + "nullable": true, + "maxLength": 1000, + "pattern": "^$|([a-zA-Z0-9\\-'.,# ][a-zA-Z0-9\\-'.,# ]?)*$" + }, + "unitAddress": { + "type": "string", + "maxLength": 1000, + "pattern": "^$|^([-a-zA-Z0-9'.,&# ])+$", + "nullable": true + }, + "unitPhone": { + "type": "object", + "nullable": true, + "additionalProperties": false, + "properties": { + "areaCode": { + "type": "string", + "nullable": true, + "maxLength": 3, + "pattern": "^$|^\\d{3}$", + "example": "555" + }, + "phoneNumber": { + "type": "string", + "nullable": true, + "maxLength": 20, + "example": "5555555" + } + } + }, + "receivingInactiveDutyTrainingPay": { + "type": "string", + "enum": [ + "YES", + "NO" + ], + "nullable": true, + "example": "YES" + } + } + }, + "federalActivation": { + "description": "If federalActivation is present then reservesNationalGuardService.obligationTermsOfService.beginDate, reservesNationalGuardService.obligationTermsOfService.endDate and reservesNationalGuardService.unitName are required", "type": "object", + "nullable": true, + "additionalProperties": false, "properties": { - "approximateBeginDate": { - "description": "The approximateBeginDate must be after the earliest servicePeriod activeDutyBeginDate.", + "activationDate": { + "description": "Date cannot be in the future and must be after the earliest servicePeriod.activeDutyBeginDate.", "type": "string", - "nullable": false, - "pattern": "^(?:[0-9]{4})-(?:0[1-9]|1[0-2])-(?:0[1-9]|[1-2][0-9]|3[0-1])$|(?:[0-9]{4})-(?:0[1-9]|1[0-2])$", - "example": "2018-06-06 or 2018-06" + "pattern": "^(?:[0-9]{4})-(?:0[1-9]|1[0-2])-(?:0[1-9]|[1-2][0-9]|3[0-1])$", + "example": "2018-06-06", + "nullable": true }, - "approximateEndDate": { + "anticipatedSeparationDate": { + "description": "Anticipated date of separation. Date must be in the future.", "type": "string", - "nullable": false, - "pattern": "^(?:[0-9]{4})-(?:0[1-9]|1[0-2])-(?:0[1-9]|[1-2][0-9]|3[0-1])$|(?:[0-9]{4})-(?:0[1-9]|1[0-2])$", - "example": "2018-06-06 or 2018-06" + "pattern": "^(?:[0-9]{4})-(?:0[1-9]|1[0-2])-(?:0[1-9]|[1-2][0-9]|3[0-1])$", + "example": "2018-06-06", + "nullable": true + } + } + }, + "confinements": { + "type": "array", + "nullable": true, + "uniqueItems": true, + "items": { + "additionalProperties": false, + "type": "object", + "properties": { + "approximateBeginDate": { + "description": "The approximateBeginDate must be after the earliest servicePeriod activeDutyBeginDate.", + "type": "string", + "nullable": false, + "pattern": "^(?:[0-9]{4})-(?:0[1-9]|1[0-2])-(?:0[1-9]|[1-2][0-9]|3[0-1])$|(?:[0-9]{4})-(?:0[1-9]|1[0-2])$", + "example": "2018-06-06 or 2018-06" + }, + "approximateEndDate": { + "type": "string", + "nullable": false, + "pattern": "^(?:[0-9]{4})-(?:0[1-9]|1[0-2])-(?:0[1-9]|[1-2][0-9]|3[0-1])$|(?:[0-9]{4})-(?:0[1-9]|1[0-2])$", + "example": "2018-06-06 or 2018-06" + } } } } } - } - }, - "servicePay": { - "type": "object", - "nullable": true, - "additionalProperties": false, - "properties": { - "receivingMilitaryRetiredPay": { - "description": "Is the Veteran receiving military retired pay?", - "type": "string", - "enum": [ - "YES", - "NO" - ], - "example": "YES", - "nullable": true - }, - "futureMilitaryRetiredPay": { - "description": "Will the Veteran receive military retired pay pay in future? \n If true, then 'futurePayExplanation' is required.", - "type": "string", - "enum": [ - "YES", - "NO" - ], - "example": "YES", - "nullable": true - }, - "futureMilitaryRetiredPayExplanation": { - "description": "Explains why future pay will be received.", - "type": "string", - "maxLength": 1000, - "example": "Will be retiring soon.", - "nullable": true - }, - "militaryRetiredPay": { - "type": "object", - "nullable": true, - "description": "", - "properties": { - "branchOfService": { - "description": "Branch of service. The /service-branches endpoint on the [Benefits Reference Data API](https://developer.va.gov/explore/benefits/docs/benefits_reference_data?version=current) may be used to retrieve list of possible service branches.", - "type": "string", - "maxLength": 1000, - "nullable": true, - "example": "Air Force" - }, - "monthlyAmount": { - "description": "Amount being received.", - "type": "integer", - "nullable": true, - "minimum": 1, - "maximum": 999999, - "example": 100 + }, + "servicePay": { + "type": "object", + "nullable": true, + "additionalProperties": false, + "properties": { + "receivingMilitaryRetiredPay": { + "description": "Is the Veteran receiving military retired pay?", + "type": "string", + "enum": [ + "YES", + "NO" + ], + "example": "YES", + "nullable": true + }, + "futureMilitaryRetiredPay": { + "description": "Will the Veteran receive military retired pay pay in future? \n If true, then 'futurePayExplanation' is required.", + "type": "string", + "enum": [ + "YES", + "NO" + ], + "example": "YES", + "nullable": true + }, + "futureMilitaryRetiredPayExplanation": { + "description": "Explains why future pay will be received.", + "type": "string", + "maxLength": 1000, + "example": "Will be retiring soon.", + "nullable": true + }, + "militaryRetiredPay": { + "type": "object", + "nullable": true, + "description": "", + "properties": { + "branchOfService": { + "description": "Branch of service. The /service-branches endpoint on the [Benefits Reference Data API](https://developer.va.gov/explore/benefits/docs/benefits_reference_data?version=current) may be used to retrieve list of possible service branches.", + "type": "string", + "maxLength": 1000, + "nullable": true, + "example": "Air Force" + }, + "monthlyAmount": { + "description": "Amount being received.", + "type": "integer", + "nullable": true, + "minimum": 1, + "maximum": 999999, + "example": 100 + } } - } - }, - "retiredStatus": { - "type": "string", - "nullable": true, - "description": "", - "enum": [ - "RETIRED", - "TEMPORARY_DISABILITY_RETIRED_LIST", - "PERMANENT_DISABILITY_RETIRED_LIST" - ] - }, - "favorMilitaryRetiredPay": { - "description": "Is the Veteran waiving VA benefits to retain military retired pay? See item 26 on form 21-526EZ for more details.", - "type": "boolean", - "nullable": true, - "example": true, - "default": false - }, - "receivedSeparationOrSeverancePay": { - "description": "Has the Veteran ever received separation pay, disability severance pay, or any other lump sum payment from their branch of service?", - "type": "string", - "enum": [ - "YES", - "NO" - ], - "example": "YES", - "nullable": true - }, - "separationSeverancePay": { - "type": "object", - "nullable": true, - "description": "", - "properties": { - "datePaymentReceived": { - "description": "Approximate date separation pay was received. \n Format can be either YYYY-MM-DD or YYYY-MM or YYYY", - "type": "string", - "pattern": "^(?:[0-9]{4})-(?:0[1-9]|1[0-2])-(?:0[1-9]|[1-2][0-9]|3[0-1])$|(?:[0-9]{4})$|(?:[0-9]{4})-(?:0[1-9]|1[0-2])$", - "example": "2018-03-02 or 2018-03 or 2018" - }, - "branchOfService": { - "description": "Branch of service. The /service-branches endpoint on the [Benefits Reference Data API](https://developer.va.gov/explore/benefits/docs/benefits_reference_data?version=current) may be used to retrieve list of possible service branches.", - "type": "string", - "nullable": true, - "maxLength": 1000, - "example": "Air Force" - }, - "preTaxAmountReceived": { - "description": "Amount being received.", - "type": "integer", - "nullable": true, - "minimum": 1, - "maximum": 999999, - "example": 100 + }, + "retiredStatus": { + "type": "string", + "nullable": true, + "description": "", + "enum": [ + "RETIRED", + "TEMPORARY_DISABILITY_RETIRED_LIST", + "PERMANENT_DISABILITY_RETIRED_LIST" + ] + }, + "favorMilitaryRetiredPay": { + "description": "Is the Veteran waiving VA benefits to retain military retired pay? See item 26 on form 21-526EZ for more details.", + "type": "boolean", + "nullable": true, + "example": true, + "default": false + }, + "receivedSeparationOrSeverancePay": { + "description": "Has the Veteran ever received separation pay, disability severance pay, or any other lump sum payment from their branch of service?", + "type": "string", + "enum": [ + "YES", + "NO" + ], + "example": "YES", + "nullable": true + }, + "separationSeverancePay": { + "type": "object", + "nullable": true, + "description": "", + "properties": { + "datePaymentReceived": { + "description": "Approximate date separation pay was received. \n Format can be either YYYY-MM-DD or YYYY-MM or YYYY", + "type": "string", + "pattern": "^(?:[0-9]{4})-(?:0[1-9]|1[0-2])-(?:0[1-9]|[1-2][0-9]|3[0-1])$|(?:[0-9]{4})$|(?:[0-9]{4})-(?:0[1-9]|1[0-2])$", + "example": "2018-03-02 or 2018-03 or 2018" + }, + "branchOfService": { + "description": "Branch of service. The /service-branches endpoint on the [Benefits Reference Data API](https://developer.va.gov/explore/benefits/docs/benefits_reference_data?version=current) may be used to retrieve list of possible service branches.", + "type": "string", + "nullable": true, + "maxLength": 1000, + "example": "Air Force" + }, + "preTaxAmountReceived": { + "description": "Amount being received.", + "type": "integer", + "nullable": true, + "minimum": 1, + "maximum": 999999, + "example": 100 + } } + }, + "favorTrainingPay": { + "description": "Is the Veteran waiving VA benefits to retain training pay? See item 28 on form 21-526EZ for more details. ", + "type": "boolean", + "nullable": true, + "example": true, + "default": false } - }, - "favorTrainingPay": { - "description": "Is the Veteran waiving VA benefits to retain training pay? See item 28 on form 21-526EZ for more details. ", - "type": "boolean", - "nullable": true, - "example": true, - "default": false } + }, + "directDeposit": { + "type": "object", + "nullable": true, + "additionalProperties": false, + "description": "If direct deposit information is included, the following attributes are required: accountType, accountNumber, routingNumber.", + "properties": { + "noAccount": { + "type": "boolean", + "nullable": true, + "description": "Claimant certifies that they do not have an account with a financial institution or certified payment agent.", + "default": false + }, + "accountNumber": { + "description": "Account number for the direct deposit.", + "pattern": "^(?:[a-zA-Z0-9-]{4,1000})?$", + "type": "string", + "maxLength": 1000, + "nullable": true, + "example": "123123123123" + }, + "accountType": { + "description": "Account type for the direct deposit.", + "type": "string", + "nullable": true, + "example": "CHECKING", + "enum": [ + "CHECKING", + "SAVINGS" + ] + }, + "financialInstitutionName": { + "description": "Provide the name of the financial institution where the Veteran wants the direct deposit.", + "maxLength": 1000, + "type": "string", + "nullable": true, + "example": "Some Bank" + }, + "routingNumber": { + "description": "Routing number for the direct deposit.", + "type": "string", + "maxLength": 1000, + "nullable": true, + "pattern": "^$|^\\d{0,1000}$", + "example": "123123123" + } + } + }, + "claimantCertification": { + "type": "boolean", + "description": "Claimant certifies and authorizes release of information.", + "default": false + }, + "claimNotes": { + "type": "string", + "description": "An optional notes section.", + "maxLength": 4000 + }, + "claimId": { + "type": "string", + "example": "600517517" } - }, - "directDeposit": { - "type": "object", - "nullable": true, + } + } + } + } + } + } + } + } + }, + "401": { + "description": "Unauthorized", + "content": { + "application/json": { + "example": { + "errors": [ + { + "title": "Not authorized", + "status": "401", + "detail": "Not authorized" + } + ] + }, + "schema": { + "required": [ + "errors" + ], + "properties": { + "errors": { + "type": "array", + "items": { + "additionalProperties": false, + "required": [ + "title", + "detail" + ], + "properties": { + "title": { + "type": "string", + "description": "HTTP error title" + }, + "detail": { + "type": "string", + "description": "HTTP error detail" + }, + "status": { + "type": "string", + "description": "HTTP error status code" + }, + "source": { + "type": "object", "additionalProperties": false, - "description": "If direct deposit information is included, the following attributes are required: accountType, accountNumber, routingNumber.", + "description": "Source of error", "properties": { - "noAccount": { - "type": "boolean", - "nullable": true, - "description": "Claimant certifies that they do not have an account with a financial institution or certified payment agent.", - "default": false - }, - "accountNumber": { - "description": "Account number for the direct deposit.", - "pattern": "^(?:[a-zA-Z0-9-]{4,1000})?$", - "type": "string", - "maxLength": 1000, - "nullable": true, - "example": "123123123123" - }, - "accountType": { - "description": "Account type for the direct deposit.", - "type": "string", - "nullable": true, - "example": "CHECKING", - "enum": [ - "CHECKING", - "SAVINGS" - ] - }, - "financialInstitutionName": { - "description": "Provide the name of the financial institution where the Veteran wants the direct deposit.", - "maxLength": 1000, - "type": "string", - "nullable": true, - "example": "Some Bank" - }, - "routingNumber": { - "description": "Routing number for the direct deposit.", + "pointer": { "type": "string", - "maxLength": 1000, - "nullable": true, - "pattern": "^$|^\\d{0,1000}$", - "example": "123123123" + "description": "Pointer to source of error" } } + } + } + } + } + } + } + } + } + }, + "404": { + "description": "Resource not found", + "content": { + "application/json": { + "example": { + "errors": [ + { + "status": "404", + "title": "Resource not found", + "detail": "Unable to locate Veteran's ID/ICN in Master Person Index (MPI). Please submit an issue at ask.va.gov or call 1-800-MyVA411 (800-698-2411) for assistance." + } + ] + }, + "schema": { + "required": [ + "errors" + ], + "properties": { + "errors": { + "type": "array", + "items": { + "additionalProperties": false, + "required": [ + "title", + "detail" + ], + "properties": { + "title": { + "type": "string", + "description": "HTTP error title" }, - "claimantCertification": { - "type": "boolean", - "description": "Claimant certifies and authorizes release of information.", - "default": false + "detail": { + "type": "string", + "description": "HTTP error detail" }, - "claimNotes": { + "status": { "type": "string", - "description": "An optional notes section.", - "maxLength": 4000 + "description": "HTTP error status code" } } } } } - }, - "example": { - "data": { - "type": "form/526", - "attributes": { - "claimProcessType": "STANDARD_CLAIM_PROCESS", - "claimNotes": "Some things that are important to know, and are not included in any other place.", - "veteranIdentification": { - "serviceNumber": "123456789", - "veteranNumber": { - "telephone": "5555555555" - }, - "mailingAddress": { - "addressLine1": "123 Main Street", - "addressLine2": "Unit 1", - "addressLine3": "Room 2", - "city": "Schenectady", - "state": "NY", - "country": "USA", - "zipFirstFive": "12345", - "zipLastFour": "1234" - }, - "emailAddress": { - "email": "valid@somedomain.com", - "agreeToEmailRelatedToClaim": true - }, - "currentVaEmployee": false - }, - "changeOfAddress": { - "typeOfAddressChange": "TEMPORARY", - "addressLine1": "456 Main Street", - "addressLine2": "Unit 3", - "addressLine3": "Room 4", - "city": "Schenectady", - "state": "NY", - "country": "USA", - "zipFirstFive": "12345", - "zipLastFour": "9897", - "dates": { - "beginDate": "2025-06-04", - "endDate": "2026-06-04" - } - }, - "homeless": { - "currentlyHomeless": { - "homelessSituationOptions": "OTHER", - "otherDescription": "Other living situation" - }, - "pointOfContact": "John Doe", - "pointOfContactNumber": { - "telephone": "5555555555" - } - }, - "toxicExposure": { - "gulfWarHazardService": { - "servedInGulfWarHazardLocations": "NO" + } + } + } + }, + "422": { + "description": "Unprocessable entity", + "content": { + "application/json": { + "examples": { + "Violates JSON Schema": { + "value": { + "errors": [ + { + "title": "Unprocessable entity", + "detail": "The property / did not contain the required key claimProcessType", + "status": "422", + "source": { + "pointer": "data/attributes/" + } }, - "herbicideHazardService": { - "servedInHerbicideHazardLocations": "YES", - "otherLocationsServed": "Other locations served", - "serviceDates": { - "beginDate": "1972-05", - "endDate": "1980-10" + { + "title": "Unprocessable entity", + "detail": "The property / did not contain the required key disabilities", + "status": "422", + "source": { + "pointer": "data/attributes/" } }, - "additionalHazardExposures": { - "additionalExposures": [ - "OTHER" - ], - "specifyOtherExposures": "Agent Orange", - "exposureDates": { - "beginDate": "1972-05", - "endDate": "1980-10" + { + "title": "Unprocessable entity", + "detail": "The property / did not contain the required key serviceInformation", + "status": "422", + "source": { + "pointer": "data/attributes/" } }, - "multipleExposures": [ - { - "hazardExposedTo": "Agent Orange", - "exposureLocation": "Vietnam", - "exposureDates": { - "beginDate": "1972-05", - "endDate": "1973-01" - } - }, - { - "hazardExposedTo": "Agent Orange", - "exposureLocation": "Vietnam", - "exposureDates": { - "beginDate": "1979-04", - "endDate": "1980-10" - } - } - ] - }, - "disabilities": [ - { - "name": "Diabetes", - "exposureOrEventOrInjury": "Agent Orange", - "serviceRelevance": "Service in Vietnam War", - "approximateDate": "1975-05", - "disabilityActionType": "NEW", - "isRelatedToToxicExposure": true - }, { - "name": "Hearing Loss", - "exposureOrEventOrInjury": "Noise", - "serviceRelevance": "Heavy equipment operator in service", - "approximateDate": "1968-07", - "disabilityActionType": "INCREASE", - "classificationCode": "8987", - "ratedDisabilityId": "1234567", - "diagnosticCode": 5678, - "isRelatedToToxicExposure": false - } - ], - "treatments": [ - { - "beginDate": "2021-04", - "treatedDisabilityNames": [ - "Diabetes" - ], - "center": { - "name": "ATLANTA VA MEDICAL CENTER", - "state": "GA", - "city": "ATLANTA" + "title": "Unprocessable entity", + "detail": "The property / did not contain the required key veteranIdentification", + "status": "422", + "source": { + "pointer": "data/attributes/" } - }, + } + ] + } + }, + "Not a JSON Object": { + "value": { + "errors": [ { - "beginDate": "1996-03", - "treatedDisabilityNames": [ - "Hearing Loss" - ], - "center": { - "name": "ATLANTA VA MEDICAL CENTER", - "state": "GA", - "city": "ATLANTA" + "title": "Unprocessable entity", + "status": "422", + "detail": "The request body is not a valid JSON object: This is not valid JSON", + "source": { + "pointer": null } } - ], - "serviceInformation": { - "alternateNames": [ - "Jon Doe", - "Jane Doe" - ], - "servicePeriods": [ - { - "serviceBranch": "Air Force", - "serviceComponent": "Active", - "activeDutyBeginDate": "1964-11-14", - "activeDutyEndDate": "1980-10-30", - "separationLocationCode": "98289" - } + ] + } + } + }, + "schema": { + "required": [ + "errors" + ], + "properties": { + "errors": { + "type": "array", + "items": { + "additionalProperties": false, + "required": [ + "title", + "status", + "detail" ], - "servedInActiveCombatSince911": "NO", - "reservesNationalGuardService": { - "component": "National Guard", - "obligationTermsOfService": { - "beginDate": "1990-11-24", - "endDate": "1995-11-17" + "properties": { + "status": { + "type": "string", + "description": "HTTP error code" }, - "unitName": "National Guard Unit Name", - "unitAddress": "1243 Main Street", - "unitPhone": { - "areaCode": "555", - "phoneNumber": "5555555" + "detail": { + "type": "string", + "description": "HTTP error detail" }, - "receivingInactiveDutyTrainingPay": "YES" - }, - "confinements": [ - { - "approximateBeginDate": "1970-06-11", - "approximateEndDate": "1970-09-11" - } - ] - }, - "servicePay": { - "receivingMilitaryRetiredPay": "NO", - "futureMilitaryRetiredPay": "YES", - "futureMilitaryRetiredPayExplanation": "Explanation of future military retired pay", - "militaryRetiredPay": { - "branchOfService": "Air Force", - "monthlyAmount": 240 - }, - "retiredStatus": "PERMANENT_DISABILITY_RETIRED_LIST", - "favorMilitaryRetiredPay": false, - "receivedSeparationOrSeverancePay": "YES", - "separationSeverancePay": { - "datePaymentReceived": "2018-07-31", - "branchOfService": "Air Force", - "preTaxAmountReceived": 179 - }, - "favorTrainingPay": false - }, - "directDeposit": { - "accountNumber": "123123123123", - "accountType": "CHECKING", - "financialInstitutionName": "Chase", - "routingNumber": "123456789" - }, - "claimantCertification": true - } - } - } - }, - "examples": { - "Minimum Required Attributes": { - "value": { - "data": { - "type": "form/526", - "attributes": { - "claimProcessType": "STANDARD_CLAIM_PROCESS", - "veteranIdentification": { - "mailingAddress": { - "addressLine1": "1234 Couch Street", - "city": "Portland", - "state": "OR", - "country": "USA", - "zipFirstFive": "12345" + "source": { + "type": "object", + "pointer": { + "type": "string" + } }, - "currentVaEmployee": false - }, - "disabilities": [ - { - "name": "hearing loss", - "serviceRelevance": "Heavy equipment operator in service", - "approximateDate": "2017-07", - "disabilityActionType": "NEW" + "title": { + "type": "string" } - ], - "serviceInformation": { - "servicePeriods": [ - { - "serviceBranch": "Air Force", - "serviceComponent": "Active", - "activeDutyBeginDate": "2015-11-14", - "activeDutyEndDate": "2018-11-30" - } - ] - }, - "claimantCertification": true + } } } } - }, - "Maximum Attributes": { - "value": { - "data": { - "type": "form/526", + } + } + } + } + }, + "requestBody": { + "content": { + "application/json": { + "schema": { + "type": "object", + "required": [ + "data" + ], + "properties": { + "data": { + "type": "object", + "required": [ + "attributes", + null + ], + "properties": { "attributes": { - "claimProcessType": "STANDARD_CLAIM_PROCESS", - "claimNotes": "Some things that are important to know, and are not included in any other place.", - "veteranIdentification": { - "serviceNumber": "123456789", - "veteranNumber": { - "telephone": "5555555555", - "internationalTelephone": "+44 20 1234 5678" - }, - "mailingAddress": { - "addressLine1": "1234 Couch Street", - "addressLine2": "Unit 4", - "addressLine3": "Room 1", - "city": "Schenectady", - "state": "NY", - "country": "USA", - "zipFirstFive": "12345", - "zipLastFour": "1234" + "$schema": "http://json-schema.org/draft-07/schema#", + "description": "Claims API 526 Schema", + "type": "object", + "additionalProperties": false, + "required": [ + "claimantCertification", + "claimProcessType", + "disabilities", + "serviceInformation", + "veteranIdentification" + ], + "properties": { + "claimProcessType": { + "type": "string", + "description": "Select type of claim program/process that applies to the Veteran.", + "enum": [ + "STANDARD_CLAIM_PROCESS", + "FDC_PROGRAM", + "BDD_PROGRAM" + ] }, - "emailAddress": { - "email": "valid@somedomain.com", - "agreeToEmailRelatedToClaim": true - }, - "currentVaEmployee": false - }, - "changeOfAddress": { - "typeOfAddressChange": "TEMPORARY", - "addressLine1": "10 Peach St", - "addressLine2": "Unit 4", - "addressLine3": "Room 1", - "city": "Schenectady", - "state": "NY", - "country": "USA", - "zipFirstFive": "12345", - "zipLastFour": "9897", - "dates": { - "beginDate": "2023-06-04", - "endDate": "2023-12-04" - } - }, - "homeless": { - "isCurrentlyHomeless": true, - "currentlyHomeless": { - "homelessSituationOptions": "FLEEING_CURRENT_RESIDENCE", - "otherDescription": "ABCDEFGHIJKLM" - }, - "isAtRiskOfBecomingHomeless": false, - "pointOfContact": "john stewart", - "pointOfContactNumber": { - "telephone": "5555555555", - "internationalTelephone": "+44 20 1234 5678" - } - }, - "toxicExposure": { - "gulfWarHazardService": { - "servedInGulfWarHazardLocations": "YES", - "serviceDates": { - "beginDate": "2018-07", - "endDate": "2018-08" - } - }, - "herbicideHazardService": { - "servedInHerbicideHazardLocations": "YES", - "otherLocationsServed": "ABCDEFGHIJKLM", - "serviceDates": { - "beginDate": "2018-07", - "endDate": "2018-08" - } - }, - "additionalHazardExposures": { - "additionalExposures": [ - "ASBESTOS", - "SHIPBOARD_HAZARD_AND_DEFENSE" + "veteranIdentification": { + "type": "object", + "additionalProperties": false, + "required": [ + "mailingAddress", + "currentVaEmployee" ], - "specifyOtherExposures": "Other exposure details", - "exposureDates": { - "beginDate": "2018-07", - "endDate": "2018-08" - } - }, - "multipleExposures": [ - { - "hazardExposedTo": "RADIATION", - "exposureLocation": "Guam", - "exposureDates": { - "beginDate": "2012-12", - "endDate": "2013-07" + "properties": { + "serviceNumber": { + "type": "string", + "description": "Service identification number", + "maxLength": 1000, + "nullable": true + }, + "veteranNumber": { + "description": "If there isn't a ten digit phone number in VBMS for the Veteran, the exams will not be ordered. Including the phone number is recommended to avoid claim processing delays.", + "type": "object", + "nullable": true, + "properties": { + "telephone": { + "description": "Veteran's phone number.", + "type": "string", + "pattern": "^\\d{10}?$", + "example": "5555555555", + "nullable": true + }, + "internationalTelephone": { + "type": "string", + "description": "Veteran's international phone number.", + "example": "+44 20 1234 5678", + "maxLength": 1000, + "nullable": true + } + } + }, + "mailingAddress": { + "type": "object", + "additionalProperties": false, + "required": [ + "addressLine1", + "city", + "country" + ], + "properties": { + "addressLine1": { + "description": "Address line 1 for the Veteran's current mailing address.", + "type": "string", + "pattern": "^([-a-zA-Z0-9'.,&#]([-a-zA-Z0-9'.,&# ])?)+$", + "maxLength": 20, + "example": "1234 Couch Street" + }, + "addressLine2": { + "description": "Address line 2 for the Veteran's current mailing address.", + "type": "string", + "pattern": "^([-a-zA-Z0-9'.,&#]([-a-zA-Z0-9'.,&# ])?)+$", + "maxLength": 20, + "example": "Unit 4", + "nullable": true + }, + "addressLine3": { + "description": "Address line 3 for the Veteran's current mailing address.", + "type": "string", + "pattern": "^([-a-zA-Z0-9'.,&#]([-a-zA-Z0-9'.,&# ])?)+$", + "maxLength": 20, + "example": "Room 1", + "nullable": true + }, + "city": { + "description": "City for the Veteran's current mailing address.", + "type": "string", + "pattern": "^$|([a-zA-Z0-9\\'-'.# ]([a-zA-Z0-9\\'-'.# ])?)+$", + "minLength": 1, + "maxLength": 30, + "example": "Schenectady" + }, + "state": { + "description": "State for the Veteran's current mailing address. Required if 'country' is 'USA'.", + "type": "string", + "pattern": "^[a-z,A-Z]{2}$", + "example": "NY", + "nullable": true + }, + "country": { + "description": "Country for the Veteran's current mailing address. Must match the values returned by the /countries endpoint on the [Benefits Reference Data API](https://developer.va.gov/explore/benefits/docs/benefits_reference_data?version=current).", + "type": "string", + "maxLength": 1000, + "example": "USA" + }, + "zipFirstFive": { + "description": "Zip code (First 5 digits) for the Veteran's current mailing address. Required if 'country' is 'USA'.", + "type": "string", + "pattern": "^\\d{5}?$", + "example": "12345", + "nullable": true + }, + "zipLastFour": { + "description": "Zip code (Last 4 digits) for the Veteran's current mailing address.", + "type": "string", + "pattern": "^\\d{4}?$", + "example": "6789", + "nullable": true + }, + "internationalPostalCode": { + "description": "International postal code for the Veteran's current mailing address. Do not include if 'country' is 'USA'.", + "type": "string", + "maxLength": 16, + "nullable": true, + "pattern": "^[a-zA-Z0-9]*$" + } + } + }, + "emailAddress": { + "description": "Information associated with the Veteran's email address.", + "type": "object", + "nullable": true, + "properties": { + "email": { + "type": "string", + "pattern": "^[^\\s@]+@([^\\s@.,]+\\.)+[^\\s@.,]{2,}$", + "description": "The most current email address of the Veteran.", + "maxLength": 80, + "nullable": true + }, + "agreeToEmailRelatedToClaim": { + "type": "boolean", + "description": "Agreement to email information relating to this claim.", + "example": true, + "default": false, + "nullable": true + } + } + }, + "currentVaEmployee": { + "type": "boolean", + "description": "Set to true if Veteran is a VA employee.", + "nullable": false } } - ] - }, - "disabilities": [ - { - "name": "Traumatic Brain Injury", - "exposureOrEventOrInjury": "EXPOSURE", - "serviceRelevance": "ABCDEFG", - "approximateDate": "2018-03-11", - "disabilityActionType": "NEW", - "classificationCode": "9014", - "ratedDisabilityId": "ABCDEFGHIJKLMNOPQRSTUVWX", - "diagnosticCode": 9020, - "isRelatedToToxicExposure": true, - "secondaryDisabilities": [ - { - "name": "Post Traumatic Stress Disorder (PTSD) Combat - Mental Disorders", - "exposureOrEventOrInjury": "EXPOSURE", - "serviceRelevance": "ABCDEFGHIJKLMNOPQ", - "disabilityActionType": "SECONDARY", - "approximateDate": "2018-03-12", - "classificationCode": "9014" - } - ] }, - { - "name": "Cancer - Musculoskeletal - Elbow", - "exposureOrEventOrInjury": "EXPOSURE", - "approximateDate": "2018-03-02", - "serviceRelevance": "ABCDEFG", - "disabilityActionType": "NEW", - "classificationCode": "9014", - "ratedDisabilityId": "ABCDEFGHIJKLMNOPQRSTUVWX", - "diagnosticCode": 249470, - "isRelatedToToxicExposure": true - }, - { - "name": "Cancer - Musculoskeletal - Knee", - "exposureOrEventOrInjury": "EXPOSURE", - "approximateDate": "2015", - "serviceRelevance": "ABCDEFG", - "disabilityActionType": "NEW", - "classificationCode": "9014", - "ratedDisabilityId": "ABCDEFGHIJKLMNOPQRSTUVWX", - "diagnosticCode": 249470, - "isRelatedToToxicExposure": true - } - ], - "treatments": [ - { - "beginDate": "2009-03", - "treatedDisabilityNames": [ - "Traumatic Brain Injury", - "Post Traumatic Stress Disorder (PTSD) Combat - Mental Disorders", - "Cancer - Musculoskeletal - Elbow" - ], - "center": { - "name": "Center One", - "city": "Decatur", - "state": "GA" - } - } - ], - "serviceInformation": { - "alternateNames": [ - "john jacob", - "johnny smith" - ], - "servicePeriods": [ - { - "serviceBranch": "Public Health Service", - "serviceComponent": "Active", - "activeDutyBeginDate": "2008-11-14", - "activeDutyEndDate": "2023-10-30" + "changeOfAddress": { + "description": "If 'changeOfAddress' is included, the following attributes are required: 'typeOfAddressChange', 'addressLine1', 'city', 'country'.", + "type": "object", + "nullable": true, + "additionalProperties": false, + "properties": { + "typeOfAddressChange": { + "description": "Temporary or Permanent change of address. If 'TEMPORARY', 'beginDate' and 'endDate' are required.", + "type": "string", + "enum": [ + "TEMPORARY", + "PERMANENT" + ], + "example": "PERMANENT" + }, + "addressLine1": { + "description": "Address line 1 for the Veteran's new address.", + "type": "string", + "pattern": "^([-a-zA-Z0-9'.,&#]([-a-zA-Z0-9'.,&# ])?)+$", + "maxLength": 20, + "example": "1234 Couch Street" + }, + "addressLine2": { + "description": "Address line 2 for the Veteran's new address.", + "type": "string", + "pattern": "^([-a-zA-Z0-9'.,&#]([-a-zA-Z0-9'.,&# ])?)+$", + "maxLength": 20, + "example": "Unit 4", + "nullable": true + }, + "addressLine3": { + "description": "Address line 3 for the Veteran's new address.", + "type": "string", + "pattern": "^([-a-zA-Z0-9'.,&#]([-a-zA-Z0-9'.,&# ])?)+$", + "maxLength": 20, + "example": "Room 1", + "nullable": true + }, + "city": { + "description": "City for the Veteran's new address.", + "type": "string", + "pattern": "^$|([a-zA-Z0-9\\'-'.# ]([a-zA-Z0-9\\'-'.# ])?)+$", + "minLength": 0, + "maxLength": 30, + "example": "Schenectady" + }, + "state": { + "description": "State for the Veteran's new address. Required if 'country' is 'USA'.", + "type": "string", + "pattern": "^$|^[a-z,A-Z]{2}$", + "example": "NY", + "nullable": true + }, + "country": { + "description": "Country for the Veteran's new address. Value must match the values returned by the /countries endpoint on the [Benefits Reference Data API](https://developer.va.gov/explore/benefits/docs/benefits_reference_data?version=current).", + "type": "string", + "maxLength": 1000, + "example": "USA" + }, + "zipFirstFive": { + "description": "Zip code (First 5 digits) for the Veteran's new address. Required if 'country' is 'USA'.", + "type": "string", + "pattern": "^$|^\\d{5}?$", + "example": "12345", + "nullable": true + }, + "zipLastFour": { + "description": "Zip code (Last 4 digits) for the Veteran's new address.", + "type": "string", + "nullable": true, + "pattern": "^$|^\\d{4}?$", + "example": "6789" + }, + "internationalPostalCode": { + "description": "International postal code for the Veteran's new address. Do not include if 'country' is 'USA'.", + "type": "string", + "maxLength": 16, + "nullable": true, + "pattern": "^[a-zA-Z0-9]*$" + }, + "dates": { + "type": "object", + "properties": { + "beginDate": { + "description": "Begin date for the Veteran's new address.", + "pattern": "^(?:[0-9]{4})-(?:0[1-9]|1[0-2])-(?:0[1-9]|[1-2][0-9]|3[0-1])$", + "type": "string", + "nullable": true, + "example": "2018-06-04" + }, + "endDate": { + "description": "Date in YYYY-MM-DD the changed address expires, if change is temporary.", + "type": "string", + "nullable": true, + "pattern": "^(?:[0-9]{4})-(?:0[1-9]|1[0-2])-(?:0[1-9]|[1-2][0-9]|3[0-1])$", + "example": "2018-06-04" + } + } + } } - ], - "servedInActiveCombatSince911": "NO", - "reservesNationalGuardService": { - "component": "National Guard", - "obligationTermsOfService": { - "beginDate": "2019-06-04", - "endDate": "2020-06-04" - }, - "unitName": "National Guard Unit Name", - "unitAddress": "1243 pine court", - "unitPhone": { - "areaCode": "555", - "phoneNumber": "5555555" - }, - "receivingInactiveDutyTrainingPay": "YES" }, - "confinements": [ - { - "approximateBeginDate": "2018-06-04", - "approximateEndDate": "2018-07-04" - }, - { - "approximateBeginDate": "2020-06", - "approximateEndDate": "2020-07" - } - ] - }, - "servicePay": { - "receivingMilitaryRetiredPay": "NO", - "futureMilitaryRetiredPay": "YES", - "futureMilitaryRetiredPayExplanation": "ABCDEFGHIJKLMNOPQRSTUVW", - "militaryRetiredPay": { - "branchOfService": "Army", - "monthlyAmount": 840 - }, - "retiredStatus": "PERMANENT_DISABILITY_RETIRED_LIST", - "favorMilitaryRetiredPay": false, - "receivedSeparationOrSeverancePay": "NO", - "separationSeverancePay": { - "datePaymentReceived": "2022-03-12", - "branchOfService": "Naval Academy", - "preTaxAmountReceived": 379 - }, - "favorTrainingPay": true - }, - "directDeposit": { - "noAccount": false, - "accountNumber": "ABCDEF", - "accountType": "CHECKING", - "financialInstitutionName": "Chase", - "routingNumber": "123123123" - }, - "claimantCertification": true - } - } - } - } - } - } - } - } - } - }, - "/veterans/{veteranId}/526/synchronous": { - "post": { - "summary": "Submits disability compensation claim synchronously (restricted access)", - "tags": [ - "Disability Compensation Claims" - ], - "operationId": "post526ClaimSynchronous", - "security": [ - { - "productionOauth": [ - "system/526.override" - ] - }, - { - "sandboxOauth": [ - "system/526.override" - ] - } - ], - "description": "Automatically establishes a disability compensation claim (21-526EZ) in Veterans Benefits Management System (VBMS). This endpoint synchronously generates a filled and electronically signed 526EZ form and establishes the disability claim in VBMS. The 526EZ form is uploaded asynchronously.\n\nA 202 response indicates the API submission was accepted and the claim was established in VBMS. Check claim status using the GET veterans/{veteranId}/claims/{id} endpoint. The claim status details response will return the associated 526EZ PDF in the supportingDocuments list.\n\n**A substantially complete 526EZ claim must include:**\n* Veteran's name\n* Sufficient service information for VA to verify the claimed service\n* At least one claimed disability or medical condition and how it relates to service\n* Veteran and/or Representative signature\n\n**Standard and fully developed claims (FDCs)**\n\n[Fully developed claims (FDCs)](https://www.va.gov/disability/how-to-file-claim/evidence-needed/fully-developed-claims/)\nare claims certified by the submitter to include all information needed for processing. These claims process faster \nthan claims submitted through the standard claim process. If a claim is certified for the FDC, but is missing needed information, \nit will be processed as a standard claim.\n\nTo certify a claim for the FDC process, set the claimProcessType to FDC_PROGRAM.\n", - "parameters": [ - { - "name": "veteranId", - "in": "path", - "required": true, - "example": "1012667145V762142", - "description": "ID of Veteran", - "schema": { - "type": "string" - } - } - ], - "responses": { - "202": { - "description": "Successful response", - "content": { - "application/json": { - "examples": { - "202 without a transactionId": { - "value": { - "data": { - "id": "4b38f39c-9129-4966-acde-8cda8e8d5e27", - "type": "forms/526", - "attributes": { - "claimId": "600442191", - "claimProcessType": "STANDARD_CLAIM_PROCESS", - "claimNotes": "Some things that are important to know, and are not included in any other place.", - "veteranIdentification": { - "serviceNumber": "123456789", - "veteranNumber": { - "telephone": "5555555555", - "internationalTelephone": "+44 20 1234 5678" - }, - "mailingAddress": { - "addressLine1": "1234 Couch Street", - "addressLine2": "Unit 4", - "addressLine3": "Room 1", - "city": "Schenectady", - "state": "NY", - "country": "USA", - "zipFirstFive": "12345", - "zipLastFour": "1234" - }, - "emailAddress": { - "email": "valid@somedomain.com", - "agreeToEmailRelatedToClaim": true - }, - "currentVaEmployee": false - }, - "changeOfAddress": { - "typeOfAddressChange": "TEMPORARY", - "addressLine1": "10 Peach St", - "addressLine2": "Unit 4", - "addressLine3": "Room 1", - "city": "Schenectady", - "state": "NY", - "country": "USA", - "zipFirstFive": "12345", - "zipLastFour": "9897", - "dates": { - "beginDate": "2023-06-04", - "endDate": "2023-12-04" - } - }, - "homeless": { - "isCurrentlyHomeless": true, - "currentlyHomeless": { - "homelessSituationOptions": "FLEEING_CURRENT_RESIDENCE", - "otherDescription": "ABCDEFGHIJKLM" - }, - "isAtRiskOfBecomingHomeless": false, - "pointOfContact": "john stewart", - "pointOfContactNumber": { - "telephone": "5555555555", - "internationalTelephone": "+44 20 1234 5678" + "homeless": { + "type": "object", + "nullable": true, + "additionalProperties": false, + "properties": { + "isCurrentlyHomeless": { + "type": "boolean", + "nullable": true, + "description": "Is the Veteran currently homeless?" + }, + "currentlyHomeless": { + "type": "object", + "nullable": true, + "additionalProperties": false, + "properties": { + "homelessSituationOptions": { + "description": "Veteran's living situation.", + "type": "string", + "nullable": true, + "default": "other", + "enum": [ + "LIVING_IN_A_HOMELESS_SHELTER", + "NOT_CURRENTLY_IN_A_SHELTERED_ENVIRONMENT", + "STAYING_WITH_ANOTHER_PERSON", + "FLEEING_CURRENT_RESIDENCE", + "OTHER" + ], + "example": "FLEEING_CURRENT_RESIDENCE" + }, + "otherDescription": { + "description": "Explanation of living situation. Required if 'homelessSituationOptions' is 'OTHER'.", + "type": "string", + "nullable": true, + "maxLength": 500, + "example": "other living situation" + } + } + }, + "isAtRiskOfBecomingHomeless": { + "type": "boolean", + "nullable": true, + "description": "Is the Veteran currently at risk of becoming homeless?" + }, + "riskOfBecomingHomeless": { + "type": "object", + "nullable": true, + "additionalProperties": false, + "properties": { + "livingSituationOptions": { + "type": "string", + "nullable": true, + "default": "HOUSING_WILL_BE_LOST_IN_30_DAYS", + "enum": [ + "HOUSING_WILL_BE_LOST_IN_30_DAYS", + "LEAVING_PUBLICLY_FUNDED_SYSTEM_OF_CARE", + "OTHER" + ] + }, + "otherDescription": { + "description": "Explanation of living situation. Required if 'livingSituationOptions' is 'OTHER'.", + "type": "string", + "nullable": true, + "maxLength": 500, + "example": "other living situation" + } + } + }, + "pointOfContact": { + "description": "Individual in direct contact with Veteran.", + "type": "string", + "nullable": true, + "minLength": 1, + "maxLength": 100, + "pattern": "^([-a-zA-Z0-9/']+( ?))*$", + "example": "Jane Doe" + }, + "pointOfContactNumber": { + "type": "object", + "nullable": true, + "additionalProperties": false, + "properties": { + "telephone": { + "description": "Ten digit primary phone of point of contact.", + "type": "string", + "pattern": "^\\d{10}?$", + "example": "5555555", + "nullable": true + }, + "internationalTelephone": { + "description": "International phone of point of contact.", + "type": "string", + "example": "+44 20 1234 5678", + "maxLength": 1000, + "nullable": true + } + } + } } }, "toxicExposure": { - "gulfWarHazardService": { - "servedInGulfWarHazardLocations": "YES", - "serviceDates": { - "beginDate": "2018-07", - "endDate": "2018-08" - } - }, - "herbicideHazardService": { - "servedInHerbicideHazardLocations": "YES", - "otherLocationsServed": "ABCDEFGHIJKLM", - "serviceDates": { - "beginDate": "2018-07", - "endDate": "2018-08" - } - }, - "additionalHazardExposures": { - "additionalExposures": [ - "ASBESTOS", - "SHIPBOARD_HAZARD_AND_DEFENSE" - ], - "specifyOtherExposures": "Other exposure details", - "exposureDates": { - "beginDate": "2018-07", - "endDate": "2018-08" - } - }, - "multipleExposures": [ - { - "hazardExposedTo": "RADIATION", - "exposureLocation": "Guam", - "exposureDates": { - "beginDate": "2012-12", - "endDate": "2013-07" + "type": "object", + "nullable": true, + "properties": { + "gulfWarHazardService": { + "type": "object", + "nullable": true, + "description": "Toxic exposure related to the Gulf war.", + "properties": { + "servedInGulfWarHazardLocations": { + "type": "string", + "description": "Set to true if the Veteran served in any of the following Gulf War hazard locations: Iraq; Kuwait; Saudi Arabia; the neutral zone between Iraq and Saudi Arabia; Bahrain; Qatar; the United Arab Emirates; Oman; Yemen; Lebanon; Somalia; Afghanistan; Israel; Egypt; Turkey; Syria; Jordan; Djibouti; Uzbekistan; the Gulf of Aden; the Gulf of Oman; the Persian Gulf; the Arabian Sea; and the Red Sea.", + "example": "YES", + "enum": [ + "NO", + "YES" + ], + "nullable": true + }, + "serviceDates": { + "type": "object", + "nullable": true, + "description": "Date range for when the exposure happened.", + "properties": { + "beginDate": { + "type": "string", + "nullable": true, + "description": "Approximate begin date for serving in Gulf War hazard location.", + "pattern": "^(?:19|20)[0-9][0-9]$|^(?:19|20)[0-9][0-9]-(0[1-9]|1[0-2])$", + "example": "2018-06 or 2018" + }, + "endDate": { + "type": "string", + "nullable": true, + "description": "Approximate end date for serving in Gulf War hazard location.", + "pattern": "^(?:19|20)[0-9][0-9]$|^(?:19|20)[0-9][0-9]-(0[1-9]|1[0-2])$", + "example": "2018-06 or 2018" + } + } + } } - } - ] - }, - "disabilities": [ - { - "name": "Traumatic Brain Injury", - "exposureOrEventOrInjury": "EXPOSURE", - "serviceRelevance": "ABCDEFG", - "approximateDate": "2018-03-11", - "disabilityActionType": "NEW", - "classificationCode": "9014", - "ratedDisabilityId": "ABCDEFGHIJKLMNOPQRSTUVWX", - "diagnosticCode": 9020, - "isRelatedToToxicExposure": true, - "secondaryDisabilities": [ - { - "name": "Post Traumatic Stress Disorder (PTSD) Combat - Mental Disorders", - "exposureOrEventOrInjury": "EXPOSURE", - "serviceRelevance": "ABCDEFGHIJKLMNOPQ", - "disabilityActionType": "SECONDARY", - "approximateDate": "2018-03-12", - "classificationCode": "9014" + }, + "herbicideHazardService": { + "description": "Toxic exposure related to herbicide (Agent Orange) hazards.", + "type": "object", + "nullable": true, + "properties": { + "servedInHerbicideHazardLocations": { + "type": "string", + "description": "Set to true if the Veteran served in any of the following herbicide/Agent Orange locations: Republic of Vietnam to include the 12 nautical mile territorial waters; Thailand at any United States or Royal Thai base; Laos; Cambodia at Mimot or Krek; Kampong Cham Province; Guam or American Samoa; or in the territorial waters thereof; Johnston Atoll or a ship that called at Johnston Atoll; Korean demilitarized zone; aboard (to include repeated operations and maintenance with) a C-123 aircraft known to have been used to spray an herbicide agent (during service in the Air Force and Air Force Reserves).", + "example": "YES", + "enum": [ + "NO", + "YES" + ], + "nullable": true + }, + "otherLocationsServed": { + "type": "string", + "nullable": true, + "pattern": "^$|([a-zA-Z0-9\"\\/&\\(\\)\\-'.,#\\[\\] ]([a-zA-Z0-9(\\)\\-'.,#\\[\\] ])?)+$", + "maxLength": 5000, + "description": "Other location(s) where Veteran served." + }, + "serviceDates": { + "description": "Date range for exposure in herbicide hazard location.", + "type": "object", + "nullable": true, + "properties": { + "beginDate": { + "type": "string", + "nullable": true, + "description": "Approximate begin date for serving in herbicide location.", + "pattern": "^(?:19|20)[0-9][0-9]$|^(?:19|20)[0-9][0-9]-(0[1-9]|1[0-2])$", + "example": "2018-06 or 2018" + }, + "endDate": { + "type": "string", + "nullable": true, + "description": "Approximate end date for serving in herbicide location.", + "pattern": "^(?:19|20)[0-9][0-9]$|^(?:19|20)[0-9][0-9]-(0[1-9]|1[0-2])$", + "example": "2018-06 or 2018" + } + } + } } - ] - }, - { - "name": "Cancer - Musculoskeletal - Elbow", - "exposureOrEventOrInjury": "EXPOSURE", - "approximateDate": "2018-03-02", - "serviceRelevance": "ABCDEFG", - "disabilityActionType": "NEW", - "classificationCode": "9014", - "ratedDisabilityId": "ABCDEFGHIJKLMNOPQRSTUVWX", - "diagnosticCode": 249470, - "isRelatedToToxicExposure": true - }, - { - "name": "Cancer - Musculoskeletal - Knee", - "exposureOrEventOrInjury": "EXPOSURE", - "approximateDate": "2015", - "serviceRelevance": "ABCDEFG", - "disabilityActionType": "NEW", - "classificationCode": "9014", - "ratedDisabilityId": "ABCDEFGHIJKLMNOPQRSTUVWX", - "diagnosticCode": 249470, - "isRelatedToToxicExposure": true - } - ], - "treatments": [ - { - "beginDate": "2009-03", - "treatedDisabilityNames": [ - "Traumatic Brain Injury", - "Post Traumatic Stress Disorder (PTSD) Combat - Mental Disorders", - "Cancer - Musculoskeletal - Elbow" - ], - "center": { - "name": "Center One", - "city": "Decatur", - "state": "GA" - } - } - ], - "serviceInformation": { - "alternateNames": [ - "john jacob", - "johnny smith" - ], - "servicePeriods": [ - { - "serviceBranch": "Public Health Service", - "serviceComponent": "Active", - "activeDutyBeginDate": "2008-11-14", - "activeDutyEndDate": "2023-10-30", - "separationLocationCode": "98282" - } - ], - "servedInActiveCombatSince911": "NO", - "reservesNationalGuardService": { - "component": "National Guard", - "obligationTermsOfService": { - "beginDate": "2019-06-04", - "endDate": "2020-06-04" - }, - "unitName": "National Guard Unit Name", - "unitAddress": "1243 pine court", - "unitPhone": { - "areaCode": "555", - "phoneNumber": "5555555" }, - "receivingInactiveDutyTrainingPay": "YES" - }, - "federalActivation": { - "activationDate": "2023-10-01", - "anticipatedSeparationDate": "2024-12-06" - }, - "confinements": [ - { - "approximateBeginDate": "2018-06-04", - "approximateEndDate": "2018-07-04" + "additionalHazardExposures": { + "type": "object", + "nullable": true, + "description": "Additional hazardous exposures.", + "properties": { + "additionalExposures": { + "description": "Additional exposure incidents.", + "type": "array", + "nullable": true, + "uniqueItems": true, + "items": { + "type": "string", + "additionalProperties": false, + "enum": [ + "ASBESTOS", + "MUSTARD_GAS", + "RADIATION", + "SHIPBOARD_HAZARD_AND_DEFENSE", + "MILITARY_OCCUPATIONAL_SPECIALTY_RELATED_TOXIN", + "CONTAMINATED_WATER_AT_CAMP_LEJEUNE", + "OTHER" + ] + } + }, + "specifyOtherExposures": { + "type": "string", + "nullable": true, + "pattern": "^$|([a-zA-Z0-9\"\\/&\\(\\)\\-'.,#\\[\\] ]([a-zA-Z0-9(\\)\\-'.,#\\[\\] ])?)+$", + "maxLength": 5000, + "description": "Exposure to asbestos." + }, + "exposureDates": { + "type": "object", + "nullable": true, + "description": "Date range for when the exposure happened.", + "properties": { + "beginDate": { + "type": "string", + "nullable": true, + "description": "Approximate begin date for exposure.", + "pattern": "^(?:19|20)[0-9][0-9]$|^(?:19|20)[0-9][0-9]-(0[1-9]|1[0-2])$", + "example": "2018-06 or 2018" + }, + "endDate": { + "type": "string", + "nullable": true, + "description": "Approximate end date for exposure.", + "pattern": "^(?:19|20)[0-9][0-9]$|^(?:19|20)[0-9][0-9]-(0[1-9]|1[0-2])$", + "example": "2018-06 or 2018" + } + } + } + } }, - { - "approximateBeginDate": "2020-06", - "approximateEndDate": "2020-07" + "multipleExposures": { + "type": "array", + "nullable": true, + "minItems": 1, + "uniqueItems": true, + "items": { + "type": "object", + "additionalProperties": false, + "properties": { + "hazardExposedTo": { + "type": "string", + "nullable": true, + "pattern": "^([-a-zA-Z0-9'.,&# ])+$", + "maxLength": 1000, + "description": "Hazard the Veteran was exposed to." + }, + "exposureLocation": { + "type": "string", + "nullable": true, + "pattern": "^$|([a-zA-Z0-9\"\\/&\\(\\)\\-'.,#\\[\\] ]([a-zA-Z0-9(\\)\\-'.,#\\[\\] ])?)+$", + "maxLength": 1000, + "description": "Location where the exposure happened." + }, + "exposureDates": { + "type": "object", + "nullable": true, + "description": "Date range for when the exposure happened.", + "properties": { + "beginDate": { + "type": "string", + "nullable": true, + "description": "Approximate begin date for exposure.", + "pattern": "^(?:19|20)[0-9][0-9]$|^(?:19|20)[0-9][0-9]-(0[1-9]|1[0-2])$", + "example": "2018-06 or 2018" + }, + "endDate": { + "type": "string", + "nullable": true, + "description": "Approximate end date for exposure.", + "pattern": "^(?:19|20)[0-9][0-9]$|^(?:19|20)[0-9][0-9]-(0[1-9]|1[0-2])$", + "example": "2018-06 or 2018" + } + } + } + } + } } - ] - }, - "servicePay": { - "receivingMilitaryRetiredPay": "NO", - "futureMilitaryRetiredPay": "YES", - "futureMilitaryRetiredPayExplanation": "ABCDEFGHIJKLMNOPQRSTUVW", - "militaryRetiredPay": { - "branchOfService": "Army", - "monthlyAmount": 840 - }, - "retiredStatus": "PERMANENT_DISABILITY_RETIRED_LIST", - "favorMilitaryRetiredPay": false, - "receivedSeparationOrSeverancePay": "NO", - "separationSeverancePay": { - "datePaymentReceived": "2022-03-12", - "branchOfService": "Naval Academy", - "preTaxAmountReceived": 379 - }, - "favorTrainingPay": true - }, - "directDeposit": { - "noAccount": false, - "accountNumber": "ABCDEF", - "accountType": "CHECKING", - "financialInstitutionName": "Chase", - "routingNumber": "123123123" - }, - "claimantCertification": true - } - } - } - }, - "202 with a transactionId": { - "value": { - "data": { - "id": "06ff315d-b022-4268-91a3-8dc28612d935", - "type": "forms/526", - "attributes": { - "claimId": "600442191", - "claimProcessType": "STANDARD_CLAIM_PROCESS", - "claimNotes": "Some things that are important to know, and are not included in any other place.", - "veteranIdentification": { - "serviceNumber": "123456789", - "veteranNumber": { - "telephone": "5555555555", - "internationalTelephone": "+44 20 1234 5678" - }, - "mailingAddress": { - "addressLine1": "1234 Couch Street", - "addressLine2": "Unit 4", - "addressLine3": "Room 1", - "city": "Schenectady", - "state": "NY", - "country": "USA", - "zipFirstFive": "12345", - "zipLastFour": "1234" - }, - "emailAddress": { - "email": "valid@somedomain.com", - "agreeToEmailRelatedToClaim": true - }, - "currentVaEmployee": false - }, - "changeOfAddress": { - "typeOfAddressChange": "TEMPORARY", - "addressLine1": "10 Peach St", - "addressLine2": "Unit 4", - "addressLine3": "Room 1", - "city": "Schenectady", - "state": "NY", - "country": "USA", - "zipFirstFive": "12345", - "zipLastFour": "9897", - "dates": { - "beginDate": "2023-06-04", - "endDate": "2023-12-04" } }, - "homeless": { - "isCurrentlyHomeless": true, - "currentlyHomeless": { - "homelessSituationOptions": "FLEEING_CURRENT_RESIDENCE", - "otherDescription": "ABCDEFGHIJKLM" - }, - "isAtRiskOfBecomingHomeless": false, - "pointOfContact": "john stewart", - "pointOfContactNumber": { - "telephone": "5555555555", - "internationalTelephone": "+44 20 1234 5678" - } - }, - "toxicExposure": { - "gulfWarHazardService": { - "servedInGulfWarHazardLocations": "YES", - "serviceDates": { - "beginDate": "2018-07", - "endDate": "2018-08" - } - }, - "herbicideHazardService": { - "servedInHerbicideHazardLocations": "YES", - "otherLocationsServed": "ABCDEFGHIJKLM", - "serviceDates": { - "beginDate": "2018-07", - "endDate": "2018-08" - } - }, - "additionalHazardExposures": { - "additionalExposures": [ - "ASBESTOS", - "SHIPBOARD_HAZARD_AND_DEFENSE" - ], - "specifyOtherExposures": "Other exposure details", - "exposureDates": { - "beginDate": "2018-07", - "endDate": "2018-08" - } - }, - "multipleExposures": [ - { - "hazardExposedTo": "RADIATION", - "exposureLocation": "Guam", - "exposureDates": { - "beginDate": "2012-12", - "endDate": "2013-07" - } - } - ] - }, - "disabilities": [ - { - "name": "Traumatic Brain Injury", - "exposureOrEventOrInjury": "EXPOSURE", - "serviceRelevance": "ABCDEFG", - "approximateDate": "2018-03-11", - "disabilityActionType": "NEW", - "classificationCode": "9014", - "ratedDisabilityId": "ABCDEFGHIJKLMNOPQRSTUVWX", - "diagnosticCode": 9020, - "isRelatedToToxicExposure": true, - "secondaryDisabilities": [ - { - "name": "Post Traumatic Stress Disorder (PTSD) Combat - Mental Disorders", - "exposureOrEventOrInjury": "EXPOSURE", - "serviceRelevance": "ABCDEFGHIJKLMNOPQ", - "disabilityActionType": "SECONDARY", - "approximateDate": "2018-03-12", - "classificationCode": "9014" - } - ] - }, - { - "name": "Cancer - Musculoskeletal - Elbow", - "exposureOrEventOrInjury": "EXPOSURE", - "approximateDate": "2018-03-02", - "serviceRelevance": "ABCDEFG", - "disabilityActionType": "NEW", - "classificationCode": "9014", - "ratedDisabilityId": "ABCDEFGHIJKLMNOPQRSTUVWX", - "diagnosticCode": 249470, - "isRelatedToToxicExposure": true - }, - { - "name": "Cancer - Musculoskeletal - Knee", - "exposureOrEventOrInjury": "EXPOSURE", - "approximateDate": "2015", - "serviceRelevance": "ABCDEFG", - "disabilityActionType": "NEW", - "classificationCode": "9014", - "ratedDisabilityId": "ABCDEFGHIJKLMNOPQRSTUVWX", - "diagnosticCode": 249470, - "isRelatedToToxicExposure": true - } - ], - "treatments": [ - { - "beginDate": "2009-03", - "treatedDisabilityNames": [ - "Traumatic Brain Injury", - "Post Traumatic Stress Disorder (PTSD) Combat - Mental Disorders", - "Cancer - Musculoskeletal - Elbow" - ], - "center": { - "name": "Center One", - "city": "Decatur", - "state": "GA" - } - } - ], - "serviceInformation": { - "alternateNames": [ - "john jacob", - "johnny smith" - ], - "servicePeriods": [ - { - "serviceBranch": "Public Health Service", - "serviceComponent": "Active", - "activeDutyBeginDate": "2008-11-14", - "activeDutyEndDate": "2024-12-06", - "separationLocationCode": "98282" - } - ], - "servedInActiveCombatSince911": "NO", - "reservesNationalGuardService": { - "component": "National Guard", - "obligationTermsOfService": { - "beginDate": "2019-06-04", - "endDate": "2020-06-04" - }, - "unitName": "National Guard Unit Name", - "unitAddress": "1243 pine court", - "unitPhone": { - "areaCode": "555", - "phoneNumber": "5555555" - }, - "receivingInactiveDutyTrainingPay": "YES" - }, - "federalActivation": { - "activationDate": "2023-10-01", - "anticipatedSeparationDate": "2024-12-06" - }, - "confinements": [ - { - "approximateBeginDate": "2018-06-04", - "approximateEndDate": "2018-07-04" - }, - { - "approximateBeginDate": "2020-06", - "approximateEndDate": "2020-07" - } - ] - }, - "servicePay": { - "receivingMilitaryRetiredPay": "NO", - "futureMilitaryRetiredPay": "YES", - "futureMilitaryRetiredPayExplanation": "ABCDEFGHIJKLMNOPQRSTUVW", - "militaryRetiredPay": { - "branchOfService": "Army", - "monthlyAmount": 840 - }, - "retiredStatus": "PERMANENT_DISABILITY_RETIRED_LIST", - "favorMilitaryRetiredPay": false, - "receivedSeparationOrSeverancePay": "NO", - "separationSeverancePay": { - "datePaymentReceived": "2022-03-12", - "branchOfService": "Naval Academy", - "preTaxAmountReceived": 379 - }, - "favorTrainingPay": true - }, - "directDeposit": { - "noAccount": false, - "accountNumber": "ABCDEF", - "accountType": "CHECKING", - "financialInstitutionName": "Chase", - "routingNumber": "123123123" - }, - "claimantCertification": true - } - }, - "meta": { - "transactionId": "00000000-0000-0000-0000-000000000000" - } - } - } - }, - "schema": { - "name": "data", - "required": [ - "data" - ], - "properties": { - "data": { - "type": "object", - "required": [ - "id", - "type", - "attributes" - ], - "properties": { - "id": { - "type": "string", - "example": "7d0de77e-b7bd-4db7-a8d9-69a25482c80a" - }, - "type": { - "type": "string", - "example": "form/8675309" - }, - "attributes": { - "description": "Claims API 526 Schema", - "type": "object", - "additionalProperties": false, - "required": [ - "claimantCertification", - "claimProcessType", - "disabilities", - "serviceInformation", - "veteranIdentification" - ], - "properties": { - "claimProcessType": { - "type": "string", - "description": "Select type of claim program/process that applies to the Veteran.", - "enum": [ - "STANDARD_CLAIM_PROCESS", - "FDC_PROGRAM", - "BDD_PROGRAM" - ] - }, - "veteranIdentification": { + "disabilities": { + "description": "Any current disabilities or symptoms the Veteran is claiming are related to their military service and/or are service-connected.", + "type": "array", + "minItems": 1, + "items": { "type": "object", "additionalProperties": false, "required": [ - "mailingAddress", - "currentVaEmployee" + "disabilityActionType", + "name" ], "properties": { - "serviceNumber": { + "name": { + "description": "Name of the disability. The /disabilities endpoint on the [Benefits Reference Data API](https://developer.va.gov/explore/benefits/docs/benefits_reference_data?version=current) may be used to retrieve possible disability names.", "type": "string", - "description": "Service identification number", + "pattern": "^$|([a-zA-Z0-9\"\\/&\\(\\)\\-'.,#\\[\\] ]([a-zA-Z0-9(\\)\\-'.,#\\[\\] ])?)+$", + "example": "PTSD (post traumatic stress disorder)", + "maxLength": 255 + }, + "exposureOrEventOrInjury": { + "type": "string", + "description": "What caused the disability?", + "nullable": true, "maxLength": 1000, - "nullable": true + "examples": [ + "Agent Orange", + "radiation", + "burn pits" + ] }, - "veteranNumber": { - "description": "If there isn't a ten digit phone number in VBMS for the Veteran, the exams will not be ordered. Including the phone number is recommended to avoid claim processing delays.", - "type": "object", + "serviceRelevance": { + "description": "Explanation of how the disability(ies) relates to the in-service event/exposure/injury. If the disabilityActionType is 'NEW', the serviceRelevance is required.", + "type": "string", "nullable": true, - "properties": { - "telephone": { - "description": "Veteran's phone number.", - "type": "string", - "pattern": "^\\d{10}?$", - "example": "5555555555", - "nullable": true - }, - "internationalTelephone": { - "type": "string", - "description": "Veteran's international phone number.", - "example": "+44 20 1234 5678", - "maxLength": 1000, - "nullable": true - } - } - }, - "mailingAddress": { - "type": "object", - "additionalProperties": false, - "required": [ - "addressLine1", - "city", - "country" - ], - "properties": { - "addressLine1": { - "description": "Address line 1 for the Veteran's current mailing address.", - "type": "string", - "pattern": "^([-a-zA-Z0-9'.,&#]([-a-zA-Z0-9'.,&# ])?)+$", - "maxLength": 20, - "example": "1234 Couch Street" - }, - "addressLine2": { - "description": "Address line 2 for the Veteran's current mailing address.", - "type": "string", - "pattern": "^([-a-zA-Z0-9'.,&#]([-a-zA-Z0-9'.,&# ])?)+$", - "maxLength": 20, - "example": "Unit 4", - "nullable": true - }, - "addressLine3": { - "description": "Address line 3 for the Veteran's current mailing address.", - "type": "string", - "pattern": "^([-a-zA-Z0-9'.,&#]([-a-zA-Z0-9'.,&# ])?)+$", - "maxLength": 20, - "example": "Room 1", - "nullable": true - }, - "city": { - "description": "City for the Veteran's current mailing address.", - "type": "string", - "pattern": "^$|([a-zA-Z0-9\\'-'.# ]([a-zA-Z0-9\\'-'.# ])?)+$", - "minLength": 1, - "maxLength": 30, - "example": "Schenectady" - }, - "state": { - "description": "State for the Veteran's current mailing address. Required if 'country' is 'USA'.", - "type": "string", - "pattern": "^[a-z,A-Z]{2}$", - "example": "NY", - "nullable": true - }, - "country": { - "description": "Country for the Veteran's current mailing address. Must match the values returned by the /countries endpoint on the [Benefits Reference Data API](https://developer.va.gov/explore/benefits/docs/benefits_reference_data?version=current).", - "type": "string", - "maxLength": 1000, - "example": "USA" - }, - "zipFirstFive": { - "description": "Zip code (First 5 digits) for the Veteran's current mailing address. Required if 'country' is 'USA'.", - "type": "string", - "pattern": "^\\d{5}?$", - "example": "12345", - "nullable": true - }, - "zipLastFour": { - "description": "Zip code (Last 4 digits) for the Veteran's current mailing address.", - "type": "string", - "pattern": "^\\d{4}?$", - "example": "6789", - "nullable": true - }, - "internationalPostalCode": { - "description": "International postal code for the Veteran's current mailing address. Do not include if 'country' is 'USA'.", - "type": "string", - "maxLength": 16, - "nullable": true, - "pattern": "^[a-zA-Z0-9]*$" - } - } + "maxLength": 1000, + "example": "Heavy equipment operator in service." }, - "emailAddress": { - "description": "Information associated with the Veteran's email address.", - "type": "object", - "nullable": true, - "properties": { - "email": { - "type": "string", - "pattern": "^[^\\s@]+@([^\\s@.,]+\\.)+[^\\s@.,]{2,}$", - "description": "The most current email address of the Veteran.", - "maxLength": 80, - "nullable": true - }, - "agreeToEmailRelatedToClaim": { - "type": "boolean", - "description": "Agreement to email information relating to this claim.", - "example": true, - "default": false, - "nullable": true - } - } + "approximateDate": { + "description": "Approximate date disability began. Date must be in the past. \n Format can be either YYYY-MM-DD or YYYY-MM or YYYY", + "type": "string", + "pattern": "^(?:[0-9]{4}(?:-(?!00)(?:0[1-9]|1[0-2])(?:-(?:0[1-9]|[1-2][0-9]|3[0-1]))?)?)$", + "example": "2018-03-02 or 2018-03 or 2018", + "nullable": true }, - "currentVaEmployee": { - "type": "boolean", - "description": "Set to true if Veteran is a VA employee.", - "nullable": false - } - } - }, - "changeOfAddress": { - "description": "If 'changeOfAddress' is included, the following attributes are required: 'typeOfAddressChange', 'addressLine1', 'city', 'country'.", - "type": "object", - "nullable": true, - "additionalProperties": false, - "properties": { - "typeOfAddressChange": { - "description": "Temporary or Permanent change of address. If 'TEMPORARY', 'beginDate' and 'endDate' are required.", + "disabilityActionType": { + "description": "Action type requested for the disability. If 'INCREASE' or 'NONE', then 'ratedDisabilityId' and 'diagnosticCode' should be included. 'NONE' should be used when including a secondary disability.", "type": "string", "enum": [ - "TEMPORARY", - "PERMANENT" + "NONE", + "NEW", + "INCREASE" ], - "example": "PERMANENT" - }, - "addressLine1": { - "description": "Address line 1 for the Veteran's new address.", - "type": "string", - "pattern": "^([-a-zA-Z0-9'.,&#]([-a-zA-Z0-9'.,&# ])?)+$", - "maxLength": 20, - "example": "1234 Couch Street" + "example": "NEW" }, - "addressLine2": { - "description": "Address line 2 for the Veteran's new address.", + "classificationCode": { "type": "string", - "pattern": "^([-a-zA-Z0-9'.,&#]([-a-zA-Z0-9'.,&# ])?)+$", - "maxLength": 20, - "example": "Unit 4", + "description": "Classification code for the associated body system. Must match an active code returned by the /disabilities endpoint on the [Benefits Reference Data API](https://developer.va.gov/explore/benefits/docs/benefits_reference_data?version=current).", + "example": "249470", "nullable": true }, - "addressLine3": { - "description": "Address line 3 for the Veteran's new address.", + "ratedDisabilityId": { + "description": "When submitting a contention with action type 'INCREASE', the previously rated disability id may be included.", "type": "string", - "pattern": "^([-a-zA-Z0-9'.,&#]([-a-zA-Z0-9'.,&# ])?)+$", - "maxLength": 20, - "example": "Room 1", + "example": "1100583", "nullable": true }, - "city": { - "description": "City for the Veteran's new address.", - "type": "string", - "pattern": "^$|([a-zA-Z0-9\\'-'.# ]([a-zA-Z0-9\\'-'.# ])?)+$", - "minLength": 0, - "maxLength": 30, - "example": "Schenectady" - }, - "state": { - "description": "State for the Veteran's new address. Required if 'country' is 'USA'.", - "type": "string", - "pattern": "^$|^[a-z,A-Z]{2}$", - "example": "NY", + "diagnosticCode": { + "description": "If the disabilityActionType is 'NONE' or 'INCREASE', the diagnosticCode should correspond to an existing rated disability.", + "type": "integer", + "example": 9999, "nullable": true }, - "country": { - "description": "Country for the Veteran's new address. Value must match the values returned by the /countries endpoint on the [Benefits Reference Data API](https://developer.va.gov/explore/benefits/docs/benefits_reference_data?version=current).", - "type": "string", - "maxLength": 1000, - "example": "USA" - }, - "zipFirstFive": { - "description": "Zip code (First 5 digits) for the Veteran's new address. Required if 'country' is 'USA'.", - "type": "string", - "pattern": "^$|^\\d{5}?$", - "example": "12345", + "isRelatedToToxicExposure": { + "type": "boolean", + "description": "Is the disability related to toxic exposures? If true, related 'toxicExposure' must be included.", + "example": true, + "default": false, "nullable": true }, - "zipLastFour": { - "description": "Zip code (Last 4 digits) for the Veteran's new address.", - "type": "string", - "nullable": true, - "pattern": "^$|^\\d{4}?$", - "example": "6789" - }, - "internationalPostalCode": { - "description": "International postal code for the Veteran's new address. Do not include if 'country' is 'USA'.", - "type": "string", - "maxLength": 16, + "specialIssues": { + "type": "array", "nullable": true, - "pattern": "^[a-zA-Z0-9]*$" - }, - "dates": { - "type": "object", - "properties": { - "beginDate": { - "description": "Begin date for the Veteran's new address.", - "pattern": "^(?:[0-9]{4})-(?:0[1-9]|1[0-2])-(?:0[1-9]|[1-2][0-9]|3[0-1])$", - "type": "string", - "nullable": true, - "example": "2018-06-04" - }, - "endDate": { - "description": "Date in YYYY-MM-DD the changed address expires, if change is temporary.", - "type": "string", - "nullable": true, - "pattern": "^(?:[0-9]{4})-(?:0[1-9]|1[0-2])-(?:0[1-9]|[1-2][0-9]|3[0-1])$", - "example": "2018-06-04" - } + "uniqueItems": true, + "items": { + "maxItems": 2, + "additionalProperties": false, + "type": "string", + "enum": [ + "POW", + "EMP" + ] } - } - } - }, - "homeless": { - "type": "object", - "nullable": true, - "additionalProperties": false, - "properties": { - "isCurrentlyHomeless": { - "type": "boolean", - "nullable": true, - "description": "Is the Veteran currently homeless?" }, - "currentlyHomeless": { - "type": "object", - "nullable": true, - "additionalProperties": false, - "properties": { - "homelessSituationOptions": { - "description": "Veteran's living situation.", - "type": "string", - "nullable": true, - "default": "other", - "enum": [ - "LIVING_IN_A_HOMELESS_SHELTER", - "NOT_CURRENTLY_IN_A_SHELTERED_ENVIRONMENT", - "STAYING_WITH_ANOTHER_PERSON", - "FLEEING_CURRENT_RESIDENCE", - "OTHER" - ], - "example": "FLEEING_CURRENT_RESIDENCE" - }, - "otherDescription": { - "description": "Explanation of living situation. Required if 'homelessSituationOptions' is 'OTHER'.", - "type": "string", - "nullable": true, - "maxLength": 500, - "example": "other living situation" + "secondaryDisabilities": { + "description": "If secondaryDisability is included, the following attributes are required: 'secondaryDisability.name', 'secondaryDisability.disabilityActionType' and 'secondaryDisability.serviceRelevance'", + "type": "array", + "items": { + "type": "object", + "additionalProperties": false, + "properties": { + "name": { + "description": "Name of the disability. The /disabilities endpoint on the [Benefits Reference Data API](https://developer.va.gov/explore/benefits/docs/benefits_reference_data?version=current) may be used to retrieve possible disability names.", + "type": "string", + "pattern": "^$|([a-zA-Z0-9\"\\/&\\(\\)\\-'.,# ]([a-zA-Z0-9(\\)\\-'.,#\\[\\] ])?)+$", + "example": "PTSD (post traumatic stress disorder)", + "maxLength": 255 + }, + "exposureOrEventOrInjury": { + "type": "string", + "description": "What caused the disability?", + "nullable": true, + "maxLength": 1000, + "examples": [ + "Agent Orange", + "radiation", + "burn pits" + ] + }, + "serviceRelevance": { + "description": "Explanation of how the disability(ies) relates to the in-service event/exposure/injury.", + "type": "string", + "nullable": true, + "maxLength": 1000, + "example": "Heavy equipment operator in service." + }, + "disabilityActionType": { + "description": "The status of the secondary disability.", + "type": "string", + "example": "SECONDARY", + "enum": [ + "SECONDARY" + ] + }, + "approximateDate": { + "description": "Approximate date disability began. Date must be in the past. \n Format can be either YYYY-MM-DD or YYYY-MM or YYYY", + "type": "string", + "pattern": "^(?:[0-9]{4}(?:-(?!00)(?:0[1-9]|1[0-2])(?:-(?:0[1-9]|[1-2][0-9]|3[0-1]))?)?)$", + "example": "2018-03-02 or 2018-03 or 2018", + "nullable": true + }, + "classificationCode": { + "type": "string", + "description": "Classification code for the associated body system. Must match an active code returned by the /disabilities endpoint on the [Benefits Reference Data API](https://developer.va.gov/explore/benefits/docs/benefits_reference_data?version=current).", + "example": "249470", + "nullable": true + } } } + } + } + } + }, + "treatments": { + "description": "Identifies the Service Treatment information of the Veteran. The combination of treatedDisabilityName, center name, center city, and center state must be less than 1000 characters to successfully generate a PDF.", + "type": "array", + "nullable": true, + "uniqueItems": true, + "items": { + "type": "object", + "additionalProperties": false, + "properties": { + "beginDate": { + "description": "Begin date for treatment. If treatment began from 2005 to present, you do not need to provide dates. Each treatment begin date must be after the first 'servicePeriod.activeDutyBeginDate'.", + "type": "string", + "pattern": "^(?:19|20)[0-9][0-9]$|^(?:19|20)[0-9][0-9]-(0[1-9]|1[0-2])$", + "example": "2018-06 or 2018", + "nullable": true }, - "isAtRiskOfBecomingHomeless": { - "type": "boolean", + "treatedDisabilityNames": { + "description": "Name(s) of disabilities treated in this time frame.", + "type": "array", "nullable": true, - "description": "Is the Veteran currently at risk of becoming homeless?" + "maxItems": 101, + "items": { + "type": "string", + "additionalProperties": false, + "example": [ + "PTSD (post traumatic stress disorder)", + "Trauma" + ] + } }, - "riskOfBecomingHomeless": { + "center": { + "description": "VA Medical Center(s) and Department of Defense Military Treatment Facilities where the Veteran received treatment after discharge for any claimed disabilities.", "type": "object", "nullable": true, "additionalProperties": false, "properties": { - "livingSituationOptions": { + "name": { + "description": "Name of facility Veteran was treated in. The /treatment-centers endpoint on the [Benefits Reference Data API](https://developer.va.gov/explore/benefits/docs/benefits_reference_data?version=current) may be used to retrieve possible treatment center names.", "type": "string", "nullable": true, - "default": "HOUSING_WILL_BE_LOST_IN_30_DAYS", - "enum": [ - "HOUSING_WILL_BE_LOST_IN_30_DAYS", - "LEAVING_PUBLICLY_FUNDED_SYSTEM_OF_CARE", - "OTHER" - ] + "pattern": "([a-zA-Z0-9\"/&()\\'-'.,# ]([a-zA-Z0-9()\\'-'.,# ])?)+$", + "example": "Private Facility 2", + "minLength": 1, + "maxLength": 100 }, - "otherDescription": { - "description": "Explanation of living situation. Required if 'livingSituationOptions' is 'OTHER'.", + "city": { + "description": "City of treatment facility.", "type": "string", + "pattern": "([a-zA-Z0-9\\-'.# ]([a-zA-Z0-9\\-'.# ])?)+$", + "example": "Portland", "nullable": true, - "maxLength": 500, - "example": "other living situation" - } - } - }, - "pointOfContact": { - "description": "Individual in direct contact with Veteran.", - "type": "string", - "nullable": true, - "minLength": 1, - "maxLength": 100, - "pattern": "^([-a-zA-Z0-9/']+( ?))*$", - "example": "Jane Doe" - }, - "pointOfContactNumber": { - "type": "object", - "nullable": true, - "additionalProperties": false, - "properties": { - "telephone": { - "description": "Ten digit primary phone of point of contact.", - "type": "string", - "pattern": "^\\d{10}?$", - "example": "5555555", - "nullable": true + "minLength": 0, + "maxLength": 30 }, - "internationalTelephone": { - "description": "International phone of point of contact.", + "state": { + "description": "State of treatment facility.", "type": "string", - "example": "+44 20 1234 5678", - "maxLength": 1000, + "pattern": "^$|^[a-z,A-Z]{2}$", + "example": "OR", "nullable": true } } } } - }, - "toxicExposure": { - "type": "object", - "nullable": true, - "properties": { - "gulfWarHazardService": { + } + }, + "serviceInformation": { + "type": "object", + "additionalProperties": false, + "required": [ + "servicePeriods" + ], + "properties": { + "alternateNames": { + "description": "List any other names under which the Veteran served, if applicable.", + "type": "array", + "nullable": true, + "maxItems": 100, + "uniqueItems": true, + "items": { + "type": "string", + "additionalProperties": false, + "examples": [ + "jane", + "janey lee", + "jane lee MacDonald" + ] + } + }, + "servicePeriods": { + "description": "Identifies the Service dates and Branch the Veteran served in.", + "type": "array", + "minItems": 1, + "items": { "type": "object", - "nullable": true, - "description": "Toxic exposure related to the Gulf war.", + "required": [ + "serviceBranch", + "serviceComponent", + "activeDutyBeginDate", + "activeDutyEndDate" + ], "properties": { - "servedInGulfWarHazardLocations": { + "serviceBranch": { + "description": "Branch of service during period. The /service-branches endpoint on the [Benefits Reference Data API](https://developer.va.gov/explore/benefits/docs/benefits_reference_data?version=current) may be used to retrieve list of possible service branches.", "type": "string", - "description": "Set to true if the Veteran served in any of the following Gulf War hazard locations: Iraq; Kuwait; Saudi Arabia; the neutral zone between Iraq and Saudi Arabia; Bahrain; Qatar; the United Arab Emirates; Oman; Yemen; Lebanon; Somalia; Afghanistan; Israel; Egypt; Turkey; Syria; Jordan; Djibouti; Uzbekistan; the Gulf of Aden; the Gulf of Oman; the Persian Gulf; the Arabian Sea; and the Red Sea.", - "example": "YES", - "enum": [ - "NO", - "YES" - ], - "nullable": true + "maxLength": 1000, + "example": "Air Force" }, - "serviceDates": { - "type": "object", - "nullable": true, - "description": "Date range for when the exposure happened.", - "properties": { - "beginDate": { - "type": "string", - "nullable": true, - "description": "Approximate begin date for serving in Gulf War hazard location.", - "pattern": "^(?:19|20)[0-9][0-9]$|^(?:19|20)[0-9][0-9]-(0[1-9]|1[0-2])$", - "example": "2018-06 or 2018" - }, - "endDate": { - "type": "string", - "nullable": true, - "description": "Approximate end date for serving in Gulf War hazard location.", - "pattern": "^(?:19|20)[0-9][0-9]$|^(?:19|20)[0-9][0-9]-(0[1-9]|1[0-2])$", - "example": "2018-06 or 2018" - } - } - } - } - }, - "herbicideHazardService": { - "description": "Toxic exposure related to herbicide (Agent Orange) hazards.", - "type": "object", - "nullable": true, - "properties": { - "servedInHerbicideHazardLocations": { + "serviceComponent": { "type": "string", - "description": "Set to true if the Veteran served in any of the following herbicide/Agent Orange locations: Republic of Vietnam to include the 12 nautical mile territorial waters; Thailand at any United States or Royal Thai base; Laos; Cambodia at Mimot or Krek; Kampong Cham Province; Guam or American Samoa; or in the territorial waters thereof; Johnston Atoll or a ship that called at Johnston Atoll; Korean demilitarized zone; aboard (to include repeated operations and maintenance with) a C-123 aircraft known to have been used to spray an herbicide agent (during service in the Air Force and Air Force Reserves).", - "example": "YES", + "description": "", "enum": [ - "NO", - "YES" - ], - "nullable": true + "Active", + "Reserves", + "National Guard" + ] }, - "otherLocationsServed": { + "activeDutyBeginDate": { + "description": "Date started active duty.", "type": "string", - "nullable": true, - "pattern": "^$|([a-zA-Z0-9\"\\/&\\(\\)\\-'.,#\\[\\] ]([a-zA-Z0-9(\\)\\-'.,#\\[\\] ])?)+$", - "maxLength": 5000, - "description": "Other location(s) where Veteran served." - }, - "serviceDates": { - "description": "Date range for exposure in herbicide hazard location.", - "type": "object", - "nullable": true, - "properties": { - "beginDate": { - "type": "string", - "nullable": true, - "description": "Approximate begin date for serving in herbicide location.", - "pattern": "^(?:19|20)[0-9][0-9]$|^(?:19|20)[0-9][0-9]-(0[1-9]|1[0-2])$", - "example": "2018-06 or 2018" - }, - "endDate": { - "type": "string", - "nullable": true, - "description": "Approximate end date for serving in herbicide location.", - "pattern": "^(?:19|20)[0-9][0-9]$|^(?:19|20)[0-9][0-9]-(0[1-9]|1[0-2])$", - "example": "2018-06 or 2018" - } - } - } - } - }, - "additionalHazardExposures": { - "type": "object", - "nullable": true, - "description": "Additional hazardous exposures.", - "properties": { - "additionalExposures": { - "description": "Additional exposure incidents.", - "type": "array", - "nullable": true, - "uniqueItems": true, - "items": { - "type": "string", - "additionalProperties": false, - "enum": [ - "ASBESTOS", - "MUSTARD_GAS", - "RADIATION", - "SHIPBOARD_HAZARD_AND_DEFENSE", - "MILITARY_OCCUPATIONAL_SPECIALTY_RELATED_TOXIN", - "CONTAMINATED_WATER_AT_CAMP_LEJEUNE", - "OTHER" - ] - } + "pattern": "^(?:[0-9]{4})-(?:0[1-9]|1[0-2])-(?:0[1-9]|[1-2][0-9]|3[0-1])$", + "example": "2018-06-06" }, - "specifyOtherExposures": { + "activeDutyEndDate": { + "description": "Date completed active duty.", "type": "string", - "nullable": true, - "pattern": "^$|([a-zA-Z0-9\"\\/&\\(\\)\\-'.,#\\[\\] ]([a-zA-Z0-9(\\)\\-'.,#\\[\\] ])?)+$", - "maxLength": 5000, - "description": "Exposure to asbestos." + "pattern": "^(?:[0-9]{4})-(?:0[1-9]|1[0-2])-(?:0[1-9]|[1-2][0-9]|3[0-1])$", + "example": "2018-06-06" }, - "exposureDates": { - "type": "object", + "separationLocationCode": { + "description": "Location code for the facility the Veteran plans to separate from. Code must match the values returned by the /intake-sites endpoint on the [Benefits reference Data API](https://developer.va.gov/explore/benefits/docs/benefits_reference_data?version=current).", + "type": "string", "nullable": true, - "description": "Date range for when the exposure happened.", - "properties": { - "beginDate": { - "type": "string", - "nullable": true, - "description": "Approximate begin date for exposure.", - "pattern": "^(?:19|20)[0-9][0-9]$|^(?:19|20)[0-9][0-9]-(0[1-9]|1[0-2])$", - "example": "2018-06 or 2018" - }, - "endDate": { - "type": "string", - "nullable": true, - "description": "Approximate end date for exposure.", - "pattern": "^(?:19|20)[0-9][0-9]$|^(?:19|20)[0-9][0-9]-(0[1-9]|1[0-2])$", - "example": "2018-06 or 2018" - } - } + "example": "98283" } } - }, - "multipleExposures": { - "type": "array", - "nullable": true, - "minItems": 1, - "uniqueItems": true, - "items": { + } + }, + "servedInActiveCombatSince911": { + "type": "string", + "enum": [ + "YES", + "NO" + ], + "description": "Did Veteran serve in a combat zone since 9-11-2001?", + "example": "YES", + "nullable": true + }, + "reservesNationalGuardService": { + "type": "object", + "nullable": true, + "additionalProperties": false, + "properties": { + "component": { + "type": "string", + "nullable": true, + "description": "", + "enum": [ + "Reserves", + "National Guard" + ] + }, + "obligationTermsOfService": { "type": "object", + "nullable": true, + "description": "If 'obligationTermsOfService' is included, the following attributes are required: 'beginDate ' and 'endDate'.", "additionalProperties": false, "properties": { - "hazardExposedTo": { + "beginDate": { "type": "string", "nullable": true, - "pattern": "^([-a-zA-Z0-9'.,&# ])+$", - "maxLength": 1000, - "description": "Hazard the Veteran was exposed to." + "pattern": "^(?:[0-9]{4})-(?:0[1-9]|1[0-2])-(?:0[1-9]|[1-2][0-9]|3[0-1])$", + "example": "2018-06-06" }, - "exposureLocation": { + "endDate": { "type": "string", "nullable": true, - "pattern": "^$|([a-zA-Z0-9\"\\/&\\(\\)\\-'.,#\\[\\] ]([a-zA-Z0-9(\\)\\-'.,#\\[\\] ])?)+$", - "maxLength": 1000, - "description": "Location where the exposure happened." - }, - "exposureDates": { - "type": "object", - "nullable": true, - "description": "Date range for when the exposure happened.", - "properties": { - "beginDate": { - "type": "string", - "nullable": true, - "description": "Approximate begin date for exposure.", - "pattern": "^(?:19|20)[0-9][0-9]$|^(?:19|20)[0-9][0-9]-(0[1-9]|1[0-2])$", - "example": "2018-06 or 2018" - }, - "endDate": { - "type": "string", - "nullable": true, - "description": "Approximate end date for exposure.", - "pattern": "^(?:19|20)[0-9][0-9]$|^(?:19|20)[0-9][0-9]-(0[1-9]|1[0-2])$", - "example": "2018-06 or 2018" - } - } + "pattern": "^(?:[0-9]{4})-(?:0[1-9]|1[0-2])-(?:0[1-9]|[1-2][0-9]|3[0-1])$", + "example": "2018-06-06" } } - } - } - } - }, - "disabilities": { - "description": "Any current disabilities or symptoms the Veteran is claiming are related to their military service and/or are service-connected.", - "type": "array", - "minItems": 1, - "items": { - "type": "object", - "additionalProperties": false, - "required": [ - "disabilityActionType", - "name" - ], - "properties": { - "name": { - "description": "Name of the disability. The /disabilities endpoint on the [Benefits Reference Data API](https://developer.va.gov/explore/benefits/docs/benefits_reference_data?version=current) may be used to retrieve possible disability names.", - "type": "string", - "pattern": "^$|([a-zA-Z0-9\"\\/&\\(\\)\\-'.,#\\[\\] ]([a-zA-Z0-9(\\)\\-'.,#\\[\\] ])?)+$", - "example": "PTSD (post traumatic stress disorder)", - "maxLength": 255 }, - "exposureOrEventOrInjury": { + "unitName": { "type": "string", - "description": "What caused the disability?", "nullable": true, "maxLength": 1000, - "examples": [ - "Agent Orange", - "radiation", - "burn pits" - ] + "pattern": "^$|([a-zA-Z0-9\\-'.,# ][a-zA-Z0-9\\-'.,# ]?)*$" }, - "serviceRelevance": { - "description": "Explanation of how the disability(ies) relates to the in-service event/exposure/injury. If the disabilityActionType is 'NEW', the serviceRelevance is required.", + "unitAddress": { "type": "string", - "nullable": true, "maxLength": 1000, - "example": "Heavy equipment operator in service." - }, - "approximateDate": { - "description": "Approximate date disability began. Date must be in the past. \n Format can be either YYYY-MM-DD or YYYY-MM or YYYY", - "type": "string", - "pattern": "^(?:[0-9]{4}(?:-(?!00)(?:0[1-9]|1[0-2])(?:-(?:0[1-9]|[1-2][0-9]|3[0-1]))?)?)$", - "example": "2018-03-02 or 2018-03 or 2018", + "pattern": "^$|^([-a-zA-Z0-9'.,&# ])+$", "nullable": true }, - "disabilityActionType": { - "description": "Action type requested for the disability. If 'INCREASE' or 'NONE', then 'ratedDisabilityId' and 'diagnosticCode' should be included. 'NONE' should be used when including a secondary disability.", + "unitPhone": { + "type": "object", + "nullable": true, + "additionalProperties": false, + "properties": { + "areaCode": { + "type": "string", + "nullable": true, + "maxLength": 3, + "pattern": "^$|^\\d{3}$", + "example": "555" + }, + "phoneNumber": { + "type": "string", + "nullable": true, + "maxLength": 20, + "example": "5555555" + } + } + }, + "receivingInactiveDutyTrainingPay": { "type": "string", "enum": [ - "NONE", - "NEW", - "INCREASE" + "YES", + "NO" ], - "example": "NEW" - }, - "classificationCode": { + "nullable": true, + "example": "YES" + } + } + }, + "federalActivation": { + "description": "If federalActivation is present then reservesNationalGuardService.obligationTermsOfService.beginDate, reservesNationalGuardService.obligationTermsOfService.endDate and reservesNationalGuardService.unitName are required", + "type": "object", + "nullable": true, + "additionalProperties": false, + "properties": { + "activationDate": { + "description": "Date cannot be in the future and must be after the earliest servicePeriod.activeDutyBeginDate.", "type": "string", - "description": "Classification code for the associated body system. Must match an active code returned by the /disabilities endpoint on the [Benefits Reference Data API](https://developer.va.gov/explore/benefits/docs/benefits_reference_data?version=current).", - "example": "249470", + "pattern": "^(?:[0-9]{4})-(?:0[1-9]|1[0-2])-(?:0[1-9]|[1-2][0-9]|3[0-1])$", + "example": "2018-06-06", "nullable": true }, - "ratedDisabilityId": { - "description": "When submitting a contention with action type 'INCREASE', the previously rated disability id may be included.", + "anticipatedSeparationDate": { + "description": "Anticipated date of separation. Date must be in the future.", "type": "string", - "example": "1100583", - "nullable": true - }, - "diagnosticCode": { - "description": "If the disabilityActionType is 'NONE' or 'INCREASE', the diagnosticCode should correspond to an existing rated disability.", - "type": "integer", - "example": 9999, - "nullable": true - }, - "isRelatedToToxicExposure": { - "type": "boolean", - "description": "Is the disability related to toxic exposures? If true, related 'toxicExposure' must be included.", - "example": true, - "default": false, + "pattern": "^(?:[0-9]{4})-(?:0[1-9]|1[0-2])-(?:0[1-9]|[1-2][0-9]|3[0-1])$", + "example": "2018-06-06", "nullable": true - }, - "specialIssues": { - "type": "array", - "nullable": true, - "uniqueItems": true, - "items": { - "maxItems": 2, - "additionalProperties": false, + } + } + }, + "confinements": { + "type": "array", + "nullable": true, + "uniqueItems": true, + "items": { + "additionalProperties": false, + "type": "object", + "properties": { + "approximateBeginDate": { + "description": "The approximateBeginDate must be after the earliest servicePeriod activeDutyBeginDate.", "type": "string", - "enum": [ - "POW", - "EMP" - ] - } - }, - "secondaryDisabilities": { - "description": "If secondaryDisability is included, the following attributes are required: 'secondaryDisability.name', 'secondaryDisability.disabilityActionType' and 'secondaryDisability.serviceRelevance'", - "type": "array", - "items": { - "type": "object", - "additionalProperties": false, - "properties": { - "name": { - "description": "Name of the disability. The /disabilities endpoint on the [Benefits Reference Data API](https://developer.va.gov/explore/benefits/docs/benefits_reference_data?version=current) may be used to retrieve possible disability names.", - "type": "string", - "pattern": "^$|([a-zA-Z0-9\"\\/&\\(\\)\\-'.,# ]([a-zA-Z0-9(\\)\\-'.,#\\[\\] ])?)+$", - "example": "PTSD (post traumatic stress disorder)", - "maxLength": 255 - }, - "exposureOrEventOrInjury": { - "type": "string", - "description": "What caused the disability?", - "nullable": true, - "maxLength": 1000, - "examples": [ - "Agent Orange", - "radiation", - "burn pits" - ] - }, - "serviceRelevance": { - "description": "Explanation of how the disability(ies) relates to the in-service event/exposure/injury.", - "type": "string", - "nullable": true, - "maxLength": 1000, - "example": "Heavy equipment operator in service." - }, - "disabilityActionType": { - "description": "The status of the secondary disability.", - "type": "string", - "example": "SECONDARY", - "enum": [ - "SECONDARY" - ] - }, - "approximateDate": { - "description": "Approximate date disability began. Date must be in the past. \n Format can be either YYYY-MM-DD or YYYY-MM or YYYY", - "type": "string", - "pattern": "^(?:[0-9]{4}(?:-(?!00)(?:0[1-9]|1[0-2])(?:-(?:0[1-9]|[1-2][0-9]|3[0-1]))?)?)$", - "example": "2018-03-02 or 2018-03 or 2018", - "nullable": true - }, - "classificationCode": { - "type": "string", - "description": "Classification code for the associated body system. Must match an active code returned by the /disabilities endpoint on the [Benefits Reference Data API](https://developer.va.gov/explore/benefits/docs/benefits_reference_data?version=current).", - "example": "249470", - "nullable": true - } - } + "nullable": false, + "pattern": "^(?:[0-9]{4})-(?:0[1-9]|1[0-2])-(?:0[1-9]|[1-2][0-9]|3[0-1])$|(?:[0-9]{4})-(?:0[1-9]|1[0-2])$", + "example": "2018-06-06 or 2018-06" + }, + "approximateEndDate": { + "type": "string", + "nullable": false, + "pattern": "^(?:[0-9]{4})-(?:0[1-9]|1[0-2])-(?:0[1-9]|[1-2][0-9]|3[0-1])$|(?:[0-9]{4})-(?:0[1-9]|1[0-2])$", + "example": "2018-06-06 or 2018-06" } } } } - }, - "treatments": { - "description": "Identifies the Service Treatment information of the Veteran. The combination of treatedDisabilityName, center name, center city, and center state must be less than 1000 characters to successfully generate a PDF.", - "type": "array", - "nullable": true, - "uniqueItems": true, - "items": { + } + }, + "servicePay": { + "type": "object", + "nullable": true, + "additionalProperties": false, + "properties": { + "receivingMilitaryRetiredPay": { + "description": "Is the Veteran receiving military retired pay?", + "type": "string", + "enum": [ + "YES", + "NO" + ], + "example": "YES", + "nullable": true + }, + "futureMilitaryRetiredPay": { + "description": "Will the Veteran receive military retired pay pay in future? \n If true, then 'futurePayExplanation' is required.", + "type": "string", + "enum": [ + "YES", + "NO" + ], + "example": "YES", + "nullable": true + }, + "futureMilitaryRetiredPayExplanation": { + "description": "Explains why future pay will be received.", + "type": "string", + "maxLength": 1000, + "example": "Will be retiring soon.", + "nullable": true + }, + "militaryRetiredPay": { "type": "object", - "additionalProperties": false, + "nullable": true, + "description": "", "properties": { - "beginDate": { - "description": "Begin date for treatment. If treatment began from 2005 to present, you do not need to provide dates. Each treatment begin date must be after the first 'servicePeriod.activeDutyBeginDate'.", + "branchOfService": { + "description": "Branch of service. The /service-branches endpoint on the [Benefits Reference Data API](https://developer.va.gov/explore/benefits/docs/benefits_reference_data?version=current) may be used to retrieve list of possible service branches.", "type": "string", - "pattern": "^(?:19|20)[0-9][0-9]$|^(?:19|20)[0-9][0-9]-(0[1-9]|1[0-2])$", - "example": "2018-06 or 2018", - "nullable": true - }, - "treatedDisabilityNames": { - "description": "Name(s) of disabilities treated in this time frame.", - "type": "array", + "maxLength": 1000, "nullable": true, - "maxItems": 101, - "items": { - "type": "string", - "additionalProperties": false, - "example": [ - "PTSD (post traumatic stress disorder)", - "Trauma" - ] - } + "example": "Air Force" }, - "center": { - "description": "VA Medical Center(s) and Department of Defense Military Treatment Facilities where the Veteran received treatment after discharge for any claimed disabilities.", - "type": "object", + "monthlyAmount": { + "description": "Amount being received.", + "type": "integer", "nullable": true, - "additionalProperties": false, - "properties": { - "name": { - "description": "Name of facility Veteran was treated in. The /treatment-centers endpoint on the [Benefits Reference Data API](https://developer.va.gov/explore/benefits/docs/benefits_reference_data?version=current) may be used to retrieve possible treatment center names.", - "type": "string", - "nullable": true, - "pattern": "([a-zA-Z0-9\"/&()\\'-'.,# ]([a-zA-Z0-9()\\'-'.,# ])?)+$", - "example": "Private Facility 2", - "minLength": 1, - "maxLength": 100 - }, - "city": { - "description": "City of treatment facility.", - "type": "string", - "pattern": "([a-zA-Z0-9\\-'.# ]([a-zA-Z0-9\\-'.# ])?)+$", - "example": "Portland", - "nullable": true, - "minLength": 0, - "maxLength": 30 - }, - "state": { - "description": "State of treatment facility.", - "type": "string", - "pattern": "^$|^[a-z,A-Z]{2}$", - "example": "OR", - "nullable": true - } - } + "minimum": 1, + "maximum": 999999, + "example": 100 } } - } - }, - "serviceInformation": { - "type": "object", - "additionalProperties": false, - "required": [ - "servicePeriods" - ], - "properties": { - "alternateNames": { - "description": "List any other names under which the Veteran served, if applicable.", - "type": "array", - "nullable": true, - "maxItems": 100, - "uniqueItems": true, - "items": { - "type": "string", - "additionalProperties": false, - "examples": [ - "jane", - "janey lee", - "jane lee MacDonald" - ] - } - }, - "servicePeriods": { - "description": "Identifies the Service dates and Branch the Veteran served in.", - "type": "array", - "minItems": 1, - "items": { - "type": "object", - "required": [ - "serviceBranch", - "serviceComponent", - "activeDutyBeginDate", - "activeDutyEndDate" - ], - "properties": { - "serviceBranch": { - "description": "Branch of service during period. The /service-branches endpoint on the [Benefits Reference Data API](https://developer.va.gov/explore/benefits/docs/benefits_reference_data?version=current) may be used to retrieve list of possible service branches.", - "type": "string", - "maxLength": 1000, - "example": "Air Force" - }, - "serviceComponent": { - "type": "string", - "description": "", - "enum": [ - "Active", - "Reserves", - "National Guard" - ] - }, - "activeDutyBeginDate": { - "description": "Date started active duty.", - "type": "string", - "pattern": "^(?:[0-9]{4})-(?:0[1-9]|1[0-2])-(?:0[1-9]|[1-2][0-9]|3[0-1])$", - "example": "2018-06-06" - }, - "activeDutyEndDate": { - "description": "Date completed active duty.", - "type": "string", - "pattern": "^(?:[0-9]{4})-(?:0[1-9]|1[0-2])-(?:0[1-9]|[1-2][0-9]|3[0-1])$", - "example": "2018-06-06" - }, - "separationLocationCode": { - "description": "Location code for the facility the Veteran plans to separate from. Code must match the values returned by the /intake-sites endpoint on the [Benefits reference Data API](https://developer.va.gov/explore/benefits/docs/benefits_reference_data?version=current).", - "type": "string", - "nullable": true, - "example": "98283" - } - } - } - }, - "servedInActiveCombatSince911": { - "type": "string", - "enum": [ - "YES", - "NO" - ], - "description": "Did Veteran serve in a combat zone since 9-11-2001?", - "example": "YES", - "nullable": true - }, - "reservesNationalGuardService": { - "type": "object", - "nullable": true, - "additionalProperties": false, - "properties": { - "component": { - "type": "string", - "nullable": true, - "description": "", - "enum": [ - "Reserves", - "National Guard" - ] - }, - "obligationTermsOfService": { - "type": "object", - "nullable": true, - "description": "If 'obligationTermsOfService' is included, the following attributes are required: 'beginDate ' and 'endDate'.", - "additionalProperties": false, - "properties": { - "beginDate": { - "type": "string", - "nullable": true, - "pattern": "^(?:[0-9]{4})-(?:0[1-9]|1[0-2])-(?:0[1-9]|[1-2][0-9]|3[0-1])$", - "example": "2018-06-06" - }, - "endDate": { - "type": "string", - "nullable": true, - "pattern": "^(?:[0-9]{4})-(?:0[1-9]|1[0-2])-(?:0[1-9]|[1-2][0-9]|3[0-1])$", - "example": "2018-06-06" - } - } - }, - "unitName": { - "type": "string", - "nullable": true, - "maxLength": 1000, - "pattern": "^$|([a-zA-Z0-9\\-'.,# ][a-zA-Z0-9\\-'.,# ]?)*$" - }, - "unitAddress": { - "type": "string", - "maxLength": 1000, - "pattern": "^$|^([-a-zA-Z0-9'.,&# ])+$", - "nullable": true - }, - "unitPhone": { - "type": "object", - "nullable": true, - "additionalProperties": false, - "properties": { - "areaCode": { - "type": "string", - "nullable": true, - "maxLength": 3, - "pattern": "^$|^\\d{3}$", - "example": "555" - }, - "phoneNumber": { - "type": "string", - "nullable": true, - "maxLength": 20, - "example": "5555555" - } - } - }, - "receivingInactiveDutyTrainingPay": { - "type": "string", - "enum": [ - "YES", - "NO" - ], - "nullable": true, - "example": "YES" - } - } - }, - "federalActivation": { - "description": "If federalActivation is present then reservesNationalGuardService.obligationTermsOfService.beginDate, reservesNationalGuardService.obligationTermsOfService.endDate and reservesNationalGuardService.unitName are required", - "type": "object", - "nullable": true, - "additionalProperties": false, - "properties": { - "activationDate": { - "description": "Date cannot be in the future and must be after the earliest servicePeriod.activeDutyBeginDate.", - "type": "string", - "pattern": "^(?:[0-9]{4})-(?:0[1-9]|1[0-2])-(?:0[1-9]|[1-2][0-9]|3[0-1])$", - "example": "2018-06-06", - "nullable": true - }, - "anticipatedSeparationDate": { - "description": "Anticipated date of separation. Date must be in the future.", - "type": "string", - "pattern": "^(?:[0-9]{4})-(?:0[1-9]|1[0-2])-(?:0[1-9]|[1-2][0-9]|3[0-1])$", - "example": "2018-06-06", - "nullable": true - } - } - }, - "confinements": { - "type": "array", - "nullable": true, - "uniqueItems": true, - "items": { - "additionalProperties": false, - "type": "object", - "properties": { - "approximateBeginDate": { - "description": "The approximateBeginDate must be after the earliest servicePeriod activeDutyBeginDate.", - "type": "string", - "nullable": false, - "pattern": "^(?:[0-9]{4})-(?:0[1-9]|1[0-2])-(?:0[1-9]|[1-2][0-9]|3[0-1])$|(?:[0-9]{4})-(?:0[1-9]|1[0-2])$", - "example": "2018-06-06 or 2018-06" - }, - "approximateEndDate": { - "type": "string", - "nullable": false, - "pattern": "^(?:[0-9]{4})-(?:0[1-9]|1[0-2])-(?:0[1-9]|[1-2][0-9]|3[0-1])$|(?:[0-9]{4})-(?:0[1-9]|1[0-2])$", - "example": "2018-06-06 or 2018-06" - } - } + }, + "retiredStatus": { + "type": "string", + "nullable": true, + "description": "", + "enum": [ + "RETIRED", + "TEMPORARY_DISABILITY_RETIRED_LIST", + "PERMANENT_DISABILITY_RETIRED_LIST" + ] + }, + "favorMilitaryRetiredPay": { + "description": "Is the Veteran waiving VA benefits to retain military retired pay? See item 26 on form 21-526EZ for more details.", + "type": "boolean", + "nullable": true, + "example": true, + "default": false + }, + "receivedSeparationOrSeverancePay": { + "description": "Has the Veteran ever received separation pay, disability severance pay, or any other lump sum payment from their branch of service?", + "type": "string", + "enum": [ + "YES", + "NO" + ], + "example": "YES", + "nullable": true + }, + "separationSeverancePay": { + "type": "object", + "nullable": true, + "description": "", + "properties": { + "datePaymentReceived": { + "description": "Approximate date separation pay was received. \n Format can be either YYYY-MM-DD or YYYY-MM or YYYY", + "type": "string", + "pattern": "^(?:[0-9]{4})-(?:0[1-9]|1[0-2])-(?:0[1-9]|[1-2][0-9]|3[0-1])$|(?:[0-9]{4})$|(?:[0-9]{4})-(?:0[1-9]|1[0-2])$", + "example": "2018-03-02 or 2018-03 or 2018" + }, + "branchOfService": { + "description": "Branch of service. The /service-branches endpoint on the [Benefits Reference Data API](https://developer.va.gov/explore/benefits/docs/benefits_reference_data?version=current) may be used to retrieve list of possible service branches.", + "type": "string", + "nullable": true, + "maxLength": 1000, + "example": "Air Force" + }, + "preTaxAmountReceived": { + "description": "Amount being received.", + "type": "integer", + "nullable": true, + "minimum": 1, + "maximum": 999999, + "example": 100 } } + }, + "favorTrainingPay": { + "description": "Is the Veteran waiving VA benefits to retain training pay? See item 28 on form 21-526EZ for more details. ", + "type": "boolean", + "nullable": true, + "example": true, + "default": false } - }, - "servicePay": { - "type": "object", - "nullable": true, - "additionalProperties": false, - "properties": { - "receivingMilitaryRetiredPay": { - "description": "Is the Veteran receiving military retired pay?", - "type": "string", - "enum": [ - "YES", - "NO" - ], - "example": "YES", - "nullable": true - }, - "futureMilitaryRetiredPay": { - "description": "Will the Veteran receive military retired pay pay in future? \n If true, then 'futurePayExplanation' is required.", - "type": "string", - "enum": [ - "YES", - "NO" - ], - "example": "YES", - "nullable": true - }, - "futureMilitaryRetiredPayExplanation": { - "description": "Explains why future pay will be received.", - "type": "string", - "maxLength": 1000, - "example": "Will be retiring soon.", - "nullable": true - }, - "militaryRetiredPay": { - "type": "object", - "nullable": true, - "description": "", - "properties": { - "branchOfService": { - "description": "Branch of service. The /service-branches endpoint on the [Benefits Reference Data API](https://developer.va.gov/explore/benefits/docs/benefits_reference_data?version=current) may be used to retrieve list of possible service branches.", - "type": "string", - "maxLength": 1000, - "nullable": true, - "example": "Air Force" - }, - "monthlyAmount": { - "description": "Amount being received.", - "type": "integer", - "nullable": true, - "minimum": 1, - "maximum": 999999, - "example": 100 - } - } - }, - "retiredStatus": { - "type": "string", - "nullable": true, - "description": "", - "enum": [ - "RETIRED", - "TEMPORARY_DISABILITY_RETIRED_LIST", - "PERMANENT_DISABILITY_RETIRED_LIST" - ] - }, - "favorMilitaryRetiredPay": { - "description": "Is the Veteran waiving VA benefits to retain military retired pay? See item 26 on form 21-526EZ for more details.", - "type": "boolean", - "nullable": true, - "example": true, - "default": false - }, - "receivedSeparationOrSeverancePay": { - "description": "Has the Veteran ever received separation pay, disability severance pay, or any other lump sum payment from their branch of service?", - "type": "string", - "enum": [ - "YES", - "NO" - ], - "example": "YES", - "nullable": true - }, - "separationSeverancePay": { - "type": "object", - "nullable": true, - "description": "", - "properties": { - "datePaymentReceived": { - "description": "Approximate date separation pay was received. \n Format can be either YYYY-MM-DD or YYYY-MM or YYYY", - "type": "string", - "pattern": "^(?:[0-9]{4})-(?:0[1-9]|1[0-2])-(?:0[1-9]|[1-2][0-9]|3[0-1])$|(?:[0-9]{4})$|(?:[0-9]{4})-(?:0[1-9]|1[0-2])$", - "example": "2018-03-02 or 2018-03 or 2018" - }, - "branchOfService": { - "description": "Branch of service. The /service-branches endpoint on the [Benefits Reference Data API](https://developer.va.gov/explore/benefits/docs/benefits_reference_data?version=current) may be used to retrieve list of possible service branches.", - "type": "string", - "nullable": true, - "maxLength": 1000, - "example": "Air Force" - }, - "preTaxAmountReceived": { - "description": "Amount being received.", - "type": "integer", - "nullable": true, - "minimum": 1, - "maximum": 999999, - "example": 100 - } - } - }, - "favorTrainingPay": { - "description": "Is the Veteran waiving VA benefits to retain training pay? See item 28 on form 21-526EZ for more details. ", - "type": "boolean", - "nullable": true, - "example": true, - "default": false - } - } - }, - "directDeposit": { - "type": "object", - "nullable": true, - "additionalProperties": false, - "description": "If direct deposit information is included, the following attributes are required: accountType, accountNumber, routingNumber.", - "properties": { - "noAccount": { - "type": "boolean", - "nullable": true, - "description": "Claimant certifies that they do not have an account with a financial institution or certified payment agent.", - "default": false - }, - "accountNumber": { - "description": "Account number for the direct deposit.", - "pattern": "^(?:[a-zA-Z0-9-]{4,1000})?$", - "type": "string", - "maxLength": 1000, - "nullable": true, - "example": "123123123123" - }, - "accountType": { - "description": "Account type for the direct deposit.", - "type": "string", - "nullable": true, - "example": "CHECKING", - "enum": [ - "CHECKING", - "SAVINGS" - ] - }, - "financialInstitutionName": { - "description": "Provide the name of the financial institution where the Veteran wants the direct deposit.", - "maxLength": 1000, - "type": "string", - "nullable": true, - "example": "Some Bank" - }, - "routingNumber": { - "description": "Routing number for the direct deposit.", - "type": "string", - "maxLength": 1000, - "nullable": true, - "pattern": "^$|^\\d{0,1000}$", - "example": "123123123" - } - } - }, - "claimantCertification": { - "type": "boolean", - "description": "Claimant certifies and authorizes release of information.", - "default": false - }, - "claimNotes": { - "type": "string", - "description": "An optional notes section.", - "maxLength": 4000 - }, - "claimId": { - "type": "string", - "example": "600517517" } - } - } - } - } - } - } - } - } - }, - "401": { - "description": "Unauthorized", - "content": { - "application/json": { - "example": { - "errors": [ - { - "title": "Not authorized", - "status": "401", - "detail": "Not authorized" - } - ] - }, - "schema": { - "required": [ - "errors" - ], - "properties": { - "errors": { - "type": "array", - "items": { - "additionalProperties": false, - "required": [ - "title", - "detail" - ], - "properties": { - "title": { - "type": "string", - "description": "HTTP error title" - }, - "detail": { - "type": "string", - "description": "HTTP error detail" - }, - "status": { - "type": "string", - "description": "HTTP error status code" }, - "source": { + "directDeposit": { "type": "object", + "nullable": true, "additionalProperties": false, - "description": "Source of error", + "description": "If direct deposit information is included, the following attributes are required: accountType, accountNumber, routingNumber.", "properties": { - "pointer": { + "noAccount": { + "type": "boolean", + "nullable": true, + "description": "Claimant certifies that they do not have an account with a financial institution or certified payment agent.", + "default": false + }, + "accountNumber": { + "description": "Account number for the direct deposit.", + "pattern": "^(?:[a-zA-Z0-9-]{4,1000})?$", "type": "string", - "description": "Pointer to source of error" + "maxLength": 1000, + "nullable": true, + "example": "123123123123" + }, + "accountType": { + "description": "Account type for the direct deposit.", + "type": "string", + "nullable": true, + "example": "CHECKING", + "enum": [ + "CHECKING", + "SAVINGS" + ] + }, + "financialInstitutionName": { + "description": "Provide the name of the financial institution where the Veteran wants the direct deposit.", + "maxLength": 1000, + "type": "string", + "nullable": true, + "example": "Some Bank" + }, + "routingNumber": { + "description": "Routing number for the direct deposit.", + "type": "string", + "maxLength": 1000, + "nullable": true, + "pattern": "^$|^\\d{0,1000}$", + "example": "123123123" } } + }, + "claimantCertification": { + "type": "boolean", + "description": "Claimant certifies and authorizes release of information.", + "default": false + }, + "claimNotes": { + "type": "string", + "description": "An optional notes section.", + "maxLength": 4000 } } } } } - } - } - } - }, - "404": { - "description": "Resource not found", - "content": { - "application/json": { + }, "example": { - "errors": [ - { - "status": "404", - "title": "Resource not found", - "detail": "Unable to locate Veteran's ID/ICN in Master Person Index (MPI). Please submit an issue at ask.va.gov or call 1-800-MyVA411 (800-698-2411) for assistance." - } - ] - }, - "schema": { - "required": [ - "errors" - ], - "properties": { - "errors": { - "type": "array", - "items": { - "additionalProperties": false, - "required": [ - "title", - "detail" - ], - "properties": { - "title": { - "type": "string", - "description": "HTTP error title" - }, - "detail": { - "type": "string", - "description": "HTTP error detail" - }, - "status": { - "type": "string", - "description": "HTTP error status code" - } + "data": { + "type": "form/526", + "attributes": { + "claimProcessType": "STANDARD_CLAIM_PROCESS", + "claimNotes": "Some things that are important to know, and are not included in any other place.", + "veteranIdentification": { + "serviceNumber": "123456789", + "veteranNumber": { + "telephone": "5555555555" + }, + "mailingAddress": { + "addressLine1": "123 Main Street", + "addressLine2": "Unit 1", + "addressLine3": "Room 2", + "city": "Schenectady", + "state": "NY", + "country": "USA", + "zipFirstFive": "12345", + "zipLastFour": "1234" + }, + "emailAddress": { + "email": "valid@somedomain.com", + "agreeToEmailRelatedToClaim": true + }, + "currentVaEmployee": false + }, + "changeOfAddress": { + "typeOfAddressChange": "TEMPORARY", + "addressLine1": "456 Main Street", + "addressLine2": "Unit 3", + "addressLine3": "Room 4", + "city": "Schenectady", + "state": "NY", + "country": "USA", + "zipFirstFive": "12345", + "zipLastFour": "9897", + "dates": { + "beginDate": "2025-06-04", + "endDate": "2026-06-04" } - } - } - } - } - } - } - }, - "422": { - "description": "Unprocessable entity", - "content": { - "application/json": { - "examples": { - "Violates JSON Schema": { - "value": { - "errors": [ - { - "title": "Unprocessable entity", - "detail": "The property / did not contain the required key claimProcessType", - "status": "422", - "source": { - "pointer": "data/attributes/" + }, + "homeless": { + "currentlyHomeless": { + "homelessSituationOptions": "OTHER", + "otherDescription": "Other living situation" + }, + "pointOfContact": "John Doe", + "pointOfContactNumber": { + "telephone": "5555555555" + } + }, + "toxicExposure": { + "gulfWarHazardService": { + "servedInGulfWarHazardLocations": "NO" + }, + "herbicideHazardService": { + "servedInHerbicideHazardLocations": "YES", + "otherLocationsServed": "Other locations served", + "serviceDates": { + "beginDate": "1972-05", + "endDate": "1980-10" } }, - { - "title": "Unprocessable entity", - "detail": "The property / did not contain the required key disabilities", - "status": "422", - "source": { - "pointer": "data/attributes/" + "additionalHazardExposures": { + "additionalExposures": [ + "OTHER" + ], + "specifyOtherExposures": "Agent Orange", + "exposureDates": { + "beginDate": "1972-05", + "endDate": "1980-10" } }, - { - "title": "Unprocessable entity", - "detail": "The property / did not contain the required key serviceInformation", - "status": "422", - "source": { - "pointer": "data/attributes/" + "multipleExposures": [ + { + "hazardExposedTo": "Agent Orange", + "exposureLocation": "Vietnam", + "exposureDates": { + "beginDate": "1972-05", + "endDate": "1973-01" + } + }, + { + "hazardExposedTo": "Agent Orange", + "exposureLocation": "Vietnam", + "exposureDates": { + "beginDate": "1979-04", + "endDate": "1980-10" + } } + ] + }, + "disabilities": [ + { + "name": "Diabetes", + "exposureOrEventOrInjury": "Agent Orange", + "serviceRelevance": "Service in Vietnam War", + "approximateDate": "1975-05", + "disabilityActionType": "NEW", + "isRelatedToToxicExposure": true }, { - "title": "Unprocessable entity", - "detail": "The property / did not contain the required key veteranIdentification", - "status": "422", - "source": { - "pointer": "data/attributes/" - } + "name": "Hearing Loss", + "exposureOrEventOrInjury": "Noise", + "serviceRelevance": "Heavy equipment operator in service", + "approximateDate": "1968-07", + "disabilityActionType": "INCREASE", + "classificationCode": "8987", + "ratedDisabilityId": "1234567", + "diagnosticCode": 5678, + "isRelatedToToxicExposure": false } - ] - } - }, - "Not a JSON Object": { - "value": { - "errors": [ + ], + "treatments": [ { - "title": "Unprocessable entity", - "status": "422", - "detail": "The request body is not a valid JSON object: This is not valid JSON", - "source": { - "pointer": null + "beginDate": "2021-04", + "treatedDisabilityNames": [ + "Diabetes" + ], + "center": { + "name": "ATLANTA VA MEDICAL CENTER", + "state": "GA", + "city": "ATLANTA" + } + }, + { + "beginDate": "1996-03", + "treatedDisabilityNames": [ + "Hearing Loss" + ], + "center": { + "name": "ATLANTA VA MEDICAL CENTER", + "state": "GA", + "city": "ATLANTA" } } - ] - } - } - }, - "schema": { - "required": [ - "errors" - ], - "properties": { - "errors": { - "type": "array", - "items": { - "additionalProperties": false, - "required": [ - "title", - "status", - "detail" + ], + "serviceInformation": { + "alternateNames": [ + "Jon Doe", + "Jane Doe" ], - "properties": { - "status": { - "type": "string", - "description": "HTTP error code" - }, - "detail": { - "type": "string", - "description": "HTTP error detail" - }, - "source": { - "type": "object", - "pointer": { - "type": "string" - } - }, - "title": { - "type": "string" + "servicePeriods": [ + { + "serviceBranch": "Air Force", + "serviceComponent": "Active", + "activeDutyBeginDate": "1964-11-14", + "activeDutyEndDate": "1980-10-30", + "separationLocationCode": "98289" } - } - } + ], + "servedInActiveCombatSince911": "NO", + "reservesNationalGuardService": { + "component": "National Guard", + "obligationTermsOfService": { + "beginDate": "1990-11-24", + "endDate": "1995-11-17" + }, + "unitName": "National Guard Unit Name", + "unitAddress": "1243 Main Street", + "unitPhone": { + "areaCode": "555", + "phoneNumber": "5555555" + }, + "receivingInactiveDutyTrainingPay": "YES" + }, + "confinements": [ + { + "approximateBeginDate": "1970-06-11", + "approximateEndDate": "1970-09-11" + } + ] + }, + "servicePay": { + "receivingMilitaryRetiredPay": "NO", + "futureMilitaryRetiredPay": "YES", + "futureMilitaryRetiredPayExplanation": "Explanation of future military retired pay", + "militaryRetiredPay": { + "branchOfService": "Air Force", + "monthlyAmount": 240 + }, + "retiredStatus": "PERMANENT_DISABILITY_RETIRED_LIST", + "favorMilitaryRetiredPay": false, + "receivedSeparationOrSeverancePay": "YES", + "separationSeverancePay": { + "datePaymentReceived": "2018-07-31", + "branchOfService": "Air Force", + "preTaxAmountReceived": 179 + }, + "favorTrainingPay": false + }, + "directDeposit": { + "accountNumber": "123123123123", + "accountType": "CHECKING", + "financialInstitutionName": "Chase", + "routingNumber": "123456789" + }, + "claimantCertification": true } } } - } - } - } - }, - "requestBody": { - "content": { - "application/json": { - "schema": { - "type": "object", - "required": [ - "data" - ], - "properties": { - "data": { - "type": "object", - "required": [ - "attributes", - null - ], - "properties": { + }, + "examples": { + "Minimum Required Attributes": { + "value": { + "data": { + "type": "form/526", "attributes": { - "$schema": "http://json-schema.org/draft-07/schema#", - "description": "Claims API 526 Schema", - "type": "object", - "additionalProperties": false, - "required": [ - "claimantCertification", - "claimProcessType", - "disabilities", - "serviceInformation", - "veteranIdentification" + "claimProcessType": "STANDARD_CLAIM_PROCESS", + "veteranIdentification": { + "mailingAddress": { + "addressLine1": "1234 Couch Street", + "city": "Portland", + "state": "OR", + "country": "USA", + "zipFirstFive": "12345" + }, + "currentVaEmployee": false + }, + "disabilities": [ + { + "name": "hearing loss", + "serviceRelevance": "Heavy equipment operator in service", + "approximateDate": "2017-07", + "disabilityActionType": "NEW" + } ], - "properties": { - "claimProcessType": { - "type": "string", - "description": "Select type of claim program/process that applies to the Veteran.", - "enum": [ - "STANDARD_CLAIM_PROCESS", - "FDC_PROGRAM", - "BDD_PROGRAM" - ] + "serviceInformation": { + "servicePeriods": [ + { + "serviceBranch": "Air Force", + "serviceComponent": "Active", + "activeDutyBeginDate": "2015-11-14", + "activeDutyEndDate": "2018-11-30" + } + ] + }, + "claimantCertification": true + } + } + } + }, + "Maximum Attributes": { + "value": { + "data": { + "type": "form/526", + "attributes": { + "claimProcessType": "STANDARD_CLAIM_PROCESS", + "claimNotes": "Some things that are important to know, and are not included in any other place.", + "veteranIdentification": { + "serviceNumber": "123456789", + "veteranNumber": { + "telephone": "5555555555", + "internationalTelephone": "+44 20 1234 5678" }, - "veteranIdentification": { - "type": "object", - "additionalProperties": false, - "required": [ - "mailingAddress", - "currentVaEmployee" + "mailingAddress": { + "addressLine1": "1234 Couch Street", + "addressLine2": "Unit 4", + "addressLine3": "Room 1", + "city": "Schenectady", + "state": "NY", + "country": "USA", + "zipFirstFive": "12345", + "zipLastFour": "1234" + }, + "emailAddress": { + "email": "valid@somedomain.com", + "agreeToEmailRelatedToClaim": true + }, + "currentVaEmployee": false + }, + "changeOfAddress": { + "typeOfAddressChange": "TEMPORARY", + "addressLine1": "10 Peach St", + "addressLine2": "Unit 4", + "addressLine3": "Room 1", + "city": "Schenectady", + "state": "NY", + "country": "USA", + "zipFirstFive": "12345", + "zipLastFour": "9897", + "dates": { + "beginDate": "2023-06-04", + "endDate": "2023-12-04" + } + }, + "homeless": { + "isCurrentlyHomeless": true, + "currentlyHomeless": { + "homelessSituationOptions": "FLEEING_CURRENT_RESIDENCE", + "otherDescription": "ABCDEFGHIJKLM" + }, + "isAtRiskOfBecomingHomeless": false, + "pointOfContact": "john stewart", + "pointOfContactNumber": { + "telephone": "5555555555", + "internationalTelephone": "+44 20 1234 5678" + } + }, + "toxicExposure": { + "gulfWarHazardService": { + "servedInGulfWarHazardLocations": "YES", + "serviceDates": { + "beginDate": "2018-07", + "endDate": "2018-08" + } + }, + "herbicideHazardService": { + "servedInHerbicideHazardLocations": "YES", + "otherLocationsServed": "ABCDEFGHIJKLM", + "serviceDates": { + "beginDate": "2018-07", + "endDate": "2018-08" + } + }, + "additionalHazardExposures": { + "additionalExposures": [ + "ASBESTOS", + "SHIPBOARD_HAZARD_AND_DEFENSE" ], - "properties": { - "serviceNumber": { - "type": "string", - "description": "Service identification number", - "maxLength": 1000, - "nullable": true - }, - "veteranNumber": { - "description": "If there isn't a ten digit phone number in VBMS for the Veteran, the exams will not be ordered. Including the phone number is recommended to avoid claim processing delays.", - "type": "object", - "nullable": true, - "properties": { - "telephone": { - "description": "Veteran's phone number.", - "type": "string", - "pattern": "^\\d{10}?$", - "example": "5555555555", - "nullable": true - }, - "internationalTelephone": { - "type": "string", - "description": "Veteran's international phone number.", - "example": "+44 20 1234 5678", - "maxLength": 1000, - "nullable": true - } - } - }, - "mailingAddress": { - "type": "object", - "additionalProperties": false, - "required": [ - "addressLine1", - "city", - "country" - ], - "properties": { - "addressLine1": { - "description": "Address line 1 for the Veteran's current mailing address.", - "type": "string", - "pattern": "^([-a-zA-Z0-9'.,&#]([-a-zA-Z0-9'.,&# ])?)+$", - "maxLength": 20, - "example": "1234 Couch Street" - }, - "addressLine2": { - "description": "Address line 2 for the Veteran's current mailing address.", - "type": "string", - "pattern": "^([-a-zA-Z0-9'.,&#]([-a-zA-Z0-9'.,&# ])?)+$", - "maxLength": 20, - "example": "Unit 4", - "nullable": true - }, - "addressLine3": { - "description": "Address line 3 for the Veteran's current mailing address.", - "type": "string", - "pattern": "^([-a-zA-Z0-9'.,&#]([-a-zA-Z0-9'.,&# ])?)+$", - "maxLength": 20, - "example": "Room 1", - "nullable": true - }, - "city": { - "description": "City for the Veteran's current mailing address.", - "type": "string", - "pattern": "^$|([a-zA-Z0-9\\'-'.# ]([a-zA-Z0-9\\'-'.# ])?)+$", - "minLength": 1, - "maxLength": 30, - "example": "Schenectady" - }, - "state": { - "description": "State for the Veteran's current mailing address. Required if 'country' is 'USA'.", - "type": "string", - "pattern": "^[a-z,A-Z]{2}$", - "example": "NY", - "nullable": true - }, - "country": { - "description": "Country for the Veteran's current mailing address. Must match the values returned by the /countries endpoint on the [Benefits Reference Data API](https://developer.va.gov/explore/benefits/docs/benefits_reference_data?version=current).", - "type": "string", - "maxLength": 1000, - "example": "USA" - }, - "zipFirstFive": { - "description": "Zip code (First 5 digits) for the Veteran's current mailing address. Required if 'country' is 'USA'.", - "type": "string", - "pattern": "^\\d{5}?$", - "example": "12345", - "nullable": true - }, - "zipLastFour": { - "description": "Zip code (Last 4 digits) for the Veteran's current mailing address.", - "type": "string", - "pattern": "^\\d{4}?$", - "example": "6789", - "nullable": true - }, - "internationalPostalCode": { - "description": "International postal code for the Veteran's current mailing address. Do not include if 'country' is 'USA'.", - "type": "string", - "maxLength": 16, - "nullable": true, - "pattern": "^[a-zA-Z0-9]*$" - } - } - }, - "emailAddress": { - "description": "Information associated with the Veteran's email address.", - "type": "object", - "nullable": true, - "properties": { - "email": { - "type": "string", - "pattern": "^[^\\s@]+@([^\\s@.,]+\\.)+[^\\s@.,]{2,}$", - "description": "The most current email address of the Veteran.", - "maxLength": 80, - "nullable": true - }, - "agreeToEmailRelatedToClaim": { - "type": "boolean", - "description": "Agreement to email information relating to this claim.", - "example": true, - "default": false, - "nullable": true - } - } - }, - "currentVaEmployee": { - "type": "boolean", - "description": "Set to true if Veteran is a VA employee.", - "nullable": false - } + "specifyOtherExposures": "Other exposure details", + "exposureDates": { + "beginDate": "2018-07", + "endDate": "2018-08" } }, - "changeOfAddress": { - "description": "If 'changeOfAddress' is included, the following attributes are required: 'typeOfAddressChange', 'addressLine1', 'city', 'country'.", - "type": "object", - "nullable": true, - "additionalProperties": false, - "properties": { - "typeOfAddressChange": { - "description": "Temporary or Permanent change of address. If 'TEMPORARY', 'beginDate' and 'endDate' are required.", - "type": "string", - "enum": [ - "TEMPORARY", - "PERMANENT" - ], - "example": "PERMANENT" - }, - "addressLine1": { - "description": "Address line 1 for the Veteran's new address.", - "type": "string", - "pattern": "^([-a-zA-Z0-9'.,&#]([-a-zA-Z0-9'.,&# ])?)+$", - "maxLength": 20, - "example": "1234 Couch Street" - }, - "addressLine2": { - "description": "Address line 2 for the Veteran's new address.", - "type": "string", - "pattern": "^([-a-zA-Z0-9'.,&#]([-a-zA-Z0-9'.,&# ])?)+$", - "maxLength": 20, - "example": "Unit 4", - "nullable": true - }, - "addressLine3": { - "description": "Address line 3 for the Veteran's new address.", - "type": "string", - "pattern": "^([-a-zA-Z0-9'.,&#]([-a-zA-Z0-9'.,&# ])?)+$", - "maxLength": 20, - "example": "Room 1", - "nullable": true - }, - "city": { - "description": "City for the Veteran's new address.", - "type": "string", - "pattern": "^$|([a-zA-Z0-9\\'-'.# ]([a-zA-Z0-9\\'-'.# ])?)+$", - "minLength": 0, - "maxLength": 30, - "example": "Schenectady" - }, - "state": { - "description": "State for the Veteran's new address. Required if 'country' is 'USA'.", - "type": "string", - "pattern": "^$|^[a-z,A-Z]{2}$", - "example": "NY", - "nullable": true - }, - "country": { - "description": "Country for the Veteran's new address. Value must match the values returned by the /countries endpoint on the [Benefits Reference Data API](https://developer.va.gov/explore/benefits/docs/benefits_reference_data?version=current).", - "type": "string", - "maxLength": 1000, - "example": "USA" - }, - "zipFirstFive": { - "description": "Zip code (First 5 digits) for the Veteran's new address. Required if 'country' is 'USA'.", - "type": "string", - "pattern": "^$|^\\d{5}?$", - "example": "12345", - "nullable": true - }, - "zipLastFour": { - "description": "Zip code (Last 4 digits) for the Veteran's new address.", - "type": "string", - "nullable": true, - "pattern": "^$|^\\d{4}?$", - "example": "6789" - }, - "internationalPostalCode": { - "description": "International postal code for the Veteran's new address. Do not include if 'country' is 'USA'.", - "type": "string", - "maxLength": 16, - "nullable": true, - "pattern": "^[a-zA-Z0-9]*$" - }, - "dates": { - "type": "object", - "properties": { - "beginDate": { - "description": "Begin date for the Veteran's new address.", - "pattern": "^(?:[0-9]{4})-(?:0[1-9]|1[0-2])-(?:0[1-9]|[1-2][0-9]|3[0-1])$", - "type": "string", - "nullable": true, - "example": "2018-06-04" - }, - "endDate": { - "description": "Date in YYYY-MM-DD the changed address expires, if change is temporary.", - "type": "string", - "nullable": true, - "pattern": "^(?:[0-9]{4})-(?:0[1-9]|1[0-2])-(?:0[1-9]|[1-2][0-9]|3[0-1])$", - "example": "2018-06-04" - } - } + "multipleExposures": [ + { + "hazardExposedTo": "RADIATION", + "exposureLocation": "Guam", + "exposureDates": { + "beginDate": "2012-12", + "endDate": "2013-07" } } + ] + }, + "disabilities": [ + { + "name": "Traumatic Brain Injury", + "exposureOrEventOrInjury": "EXPOSURE", + "serviceRelevance": "ABCDEFG", + "approximateDate": "2018-03-11", + "disabilityActionType": "NEW", + "classificationCode": "9014", + "ratedDisabilityId": "ABCDEFGHIJKLMNOPQRSTUVWX", + "diagnosticCode": 9020, + "isRelatedToToxicExposure": true, + "secondaryDisabilities": [ + { + "name": "Post Traumatic Stress Disorder (PTSD) Combat - Mental Disorders", + "exposureOrEventOrInjury": "EXPOSURE", + "serviceRelevance": "ABCDEFGHIJKLMNOPQ", + "disabilityActionType": "SECONDARY", + "approximateDate": "2018-03-12", + "classificationCode": "9014" + } + ] }, - "homeless": { - "type": "object", - "nullable": true, - "additionalProperties": false, - "properties": { - "isCurrentlyHomeless": { - "type": "boolean", - "nullable": true, - "description": "Is the Veteran currently homeless?" - }, - "currentlyHomeless": { - "type": "object", - "nullable": true, - "additionalProperties": false, - "properties": { - "homelessSituationOptions": { - "description": "Veteran's living situation.", - "type": "string", - "nullable": true, - "default": "other", - "enum": [ - "LIVING_IN_A_HOMELESS_SHELTER", - "NOT_CURRENTLY_IN_A_SHELTERED_ENVIRONMENT", - "STAYING_WITH_ANOTHER_PERSON", - "FLEEING_CURRENT_RESIDENCE", - "OTHER" - ], - "example": "FLEEING_CURRENT_RESIDENCE" - }, - "otherDescription": { - "description": "Explanation of living situation. Required if 'homelessSituationOptions' is 'OTHER'.", - "type": "string", - "nullable": true, - "maxLength": 500, - "example": "other living situation" - } - } - }, - "isAtRiskOfBecomingHomeless": { - "type": "boolean", - "nullable": true, - "description": "Is the Veteran currently at risk of becoming homeless?" - }, - "riskOfBecomingHomeless": { - "type": "object", - "nullable": true, - "additionalProperties": false, - "properties": { - "livingSituationOptions": { - "type": "string", - "nullable": true, - "default": "HOUSING_WILL_BE_LOST_IN_30_DAYS", - "enum": [ - "HOUSING_WILL_BE_LOST_IN_30_DAYS", - "LEAVING_PUBLICLY_FUNDED_SYSTEM_OF_CARE", - "OTHER" - ] - }, - "otherDescription": { - "description": "Explanation of living situation. Required if 'livingSituationOptions' is 'OTHER'.", - "type": "string", - "nullable": true, - "maxLength": 500, - "example": "other living situation" - } - } - }, - "pointOfContact": { - "description": "Individual in direct contact with Veteran.", - "type": "string", - "nullable": true, - "minLength": 1, - "maxLength": 100, - "pattern": "^([-a-zA-Z0-9/']+( ?))*$", - "example": "Jane Doe" - }, - "pointOfContactNumber": { - "type": "object", - "nullable": true, - "additionalProperties": false, - "properties": { - "telephone": { - "description": "Ten digit primary phone of point of contact.", - "type": "string", - "pattern": "^\\d{10}?$", - "example": "5555555", - "nullable": true - }, - "internationalTelephone": { - "description": "International phone of point of contact.", - "type": "string", - "example": "+44 20 1234 5678", - "maxLength": 1000, - "nullable": true - } - } - } + { + "name": "Cancer - Musculoskeletal - Elbow", + "exposureOrEventOrInjury": "EXPOSURE", + "approximateDate": "2018-03-02", + "serviceRelevance": "ABCDEFG", + "disabilityActionType": "NEW", + "classificationCode": "9014", + "ratedDisabilityId": "ABCDEFGHIJKLMNOPQRSTUVWX", + "diagnosticCode": 249470, + "isRelatedToToxicExposure": true + }, + { + "name": "Cancer - Musculoskeletal - Knee", + "exposureOrEventOrInjury": "EXPOSURE", + "approximateDate": "2015", + "serviceRelevance": "ABCDEFG", + "disabilityActionType": "NEW", + "classificationCode": "9014", + "ratedDisabilityId": "ABCDEFGHIJKLMNOPQRSTUVWX", + "diagnosticCode": 249470, + "isRelatedToToxicExposure": true + } + ], + "treatments": [ + { + "beginDate": "2009-03", + "treatedDisabilityNames": [ + "Traumatic Brain Injury", + "Post Traumatic Stress Disorder (PTSD) Combat - Mental Disorders", + "Cancer - Musculoskeletal - Elbow" + ], + "center": { + "name": "Center One", + "city": "Decatur", + "state": "GA" + } + } + ], + "serviceInformation": { + "alternateNames": [ + "john jacob", + "johnny smith" + ], + "servicePeriods": [ + { + "serviceBranch": "Public Health Service", + "serviceComponent": "Active", + "activeDutyBeginDate": "2008-11-14", + "activeDutyEndDate": "2023-10-30" } + ], + "servedInActiveCombatSince911": "NO", + "reservesNationalGuardService": { + "component": "National Guard", + "obligationTermsOfService": { + "beginDate": "2019-06-04", + "endDate": "2020-06-04" + }, + "unitName": "National Guard Unit Name", + "unitAddress": "1243 pine court", + "unitPhone": { + "areaCode": "555", + "phoneNumber": "5555555" + }, + "receivingInactiveDutyTrainingPay": "YES" }, - "toxicExposure": { - "type": "object", - "nullable": true, - "properties": { - "gulfWarHazardService": { - "type": "object", - "nullable": true, - "description": "Toxic exposure related to the Gulf war.", - "properties": { - "servedInGulfWarHazardLocations": { - "type": "string", - "description": "Set to true if the Veteran served in any of the following Gulf War hazard locations: Iraq; Kuwait; Saudi Arabia; the neutral zone between Iraq and Saudi Arabia; Bahrain; Qatar; the United Arab Emirates; Oman; Yemen; Lebanon; Somalia; Afghanistan; Israel; Egypt; Turkey; Syria; Jordan; Djibouti; Uzbekistan; the Gulf of Aden; the Gulf of Oman; the Persian Gulf; the Arabian Sea; and the Red Sea.", - "example": "YES", - "enum": [ - "NO", - "YES" - ], - "nullable": true - }, - "serviceDates": { - "type": "object", - "nullable": true, - "description": "Date range for when the exposure happened.", - "properties": { - "beginDate": { - "type": "string", - "nullable": true, - "description": "Approximate begin date for serving in Gulf War hazard location.", - "pattern": "^(?:19|20)[0-9][0-9]$|^(?:19|20)[0-9][0-9]-(0[1-9]|1[0-2])$", - "example": "2018-06 or 2018" - }, - "endDate": { - "type": "string", - "nullable": true, - "description": "Approximate end date for serving in Gulf War hazard location.", - "pattern": "^(?:19|20)[0-9][0-9]$|^(?:19|20)[0-9][0-9]-(0[1-9]|1[0-2])$", - "example": "2018-06 or 2018" - } - } - } - } - }, - "herbicideHazardService": { - "description": "Toxic exposure related to herbicide (Agent Orange) hazards.", - "type": "object", - "nullable": true, - "properties": { - "servedInHerbicideHazardLocations": { - "type": "string", - "description": "Set to true if the Veteran served in any of the following herbicide/Agent Orange locations: Republic of Vietnam to include the 12 nautical mile territorial waters; Thailand at any United States or Royal Thai base; Laos; Cambodia at Mimot or Krek; Kampong Cham Province; Guam or American Samoa; or in the territorial waters thereof; Johnston Atoll or a ship that called at Johnston Atoll; Korean demilitarized zone; aboard (to include repeated operations and maintenance with) a C-123 aircraft known to have been used to spray an herbicide agent (during service in the Air Force and Air Force Reserves).", - "example": "YES", - "enum": [ - "NO", - "YES" - ], - "nullable": true - }, - "otherLocationsServed": { - "type": "string", - "nullable": true, - "pattern": "^$|([a-zA-Z0-9\"\\/&\\(\\)\\-'.,#\\[\\] ]([a-zA-Z0-9(\\)\\-'.,#\\[\\] ])?)+$", - "maxLength": 5000, - "description": "Other location(s) where Veteran served." - }, - "serviceDates": { - "description": "Date range for exposure in herbicide hazard location.", - "type": "object", - "nullable": true, - "properties": { - "beginDate": { - "type": "string", - "nullable": true, - "description": "Approximate begin date for serving in herbicide location.", - "pattern": "^(?:19|20)[0-9][0-9]$|^(?:19|20)[0-9][0-9]-(0[1-9]|1[0-2])$", - "example": "2018-06 or 2018" - }, - "endDate": { - "type": "string", - "nullable": true, - "description": "Approximate end date for serving in herbicide location.", - "pattern": "^(?:19|20)[0-9][0-9]$|^(?:19|20)[0-9][0-9]-(0[1-9]|1[0-2])$", - "example": "2018-06 or 2018" - } - } - } - } - }, - "additionalHazardExposures": { - "type": "object", - "nullable": true, - "description": "Additional hazardous exposures.", - "properties": { - "additionalExposures": { - "description": "Additional exposure incidents.", - "type": "array", - "nullable": true, - "uniqueItems": true, - "items": { - "type": "string", - "additionalProperties": false, - "enum": [ - "ASBESTOS", - "MUSTARD_GAS", - "RADIATION", - "SHIPBOARD_HAZARD_AND_DEFENSE", - "MILITARY_OCCUPATIONAL_SPECIALTY_RELATED_TOXIN", - "CONTAMINATED_WATER_AT_CAMP_LEJEUNE", - "OTHER" - ] - } - }, - "specifyOtherExposures": { - "type": "string", - "nullable": true, - "pattern": "^$|([a-zA-Z0-9\"\\/&\\(\\)\\-'.,#\\[\\] ]([a-zA-Z0-9(\\)\\-'.,#\\[\\] ])?)+$", - "maxLength": 5000, - "description": "Exposure to asbestos." - }, - "exposureDates": { - "type": "object", - "nullable": true, - "description": "Date range for when the exposure happened.", - "properties": { - "beginDate": { - "type": "string", - "nullable": true, - "description": "Approximate begin date for exposure.", - "pattern": "^(?:19|20)[0-9][0-9]$|^(?:19|20)[0-9][0-9]-(0[1-9]|1[0-2])$", - "example": "2018-06 or 2018" - }, - "endDate": { - "type": "string", - "nullable": true, - "description": "Approximate end date for exposure.", - "pattern": "^(?:19|20)[0-9][0-9]$|^(?:19|20)[0-9][0-9]-(0[1-9]|1[0-2])$", - "example": "2018-06 or 2018" - } - } - } - } - }, - "multipleExposures": { - "type": "array", - "nullable": true, - "minItems": 1, - "uniqueItems": true, - "items": { - "type": "object", - "additionalProperties": false, - "properties": { - "hazardExposedTo": { - "type": "string", - "nullable": true, - "pattern": "^([-a-zA-Z0-9'.,&# ])+$", - "maxLength": 1000, - "description": "Hazard the Veteran was exposed to." - }, - "exposureLocation": { - "type": "string", - "nullable": true, - "pattern": "^$|([a-zA-Z0-9\"\\/&\\(\\)\\-'.,#\\[\\] ]([a-zA-Z0-9(\\)\\-'.,#\\[\\] ])?)+$", - "maxLength": 1000, - "description": "Location where the exposure happened." - }, - "exposureDates": { - "type": "object", - "nullable": true, - "description": "Date range for when the exposure happened.", - "properties": { - "beginDate": { - "type": "string", - "nullable": true, - "description": "Approximate begin date for exposure.", - "pattern": "^(?:19|20)[0-9][0-9]$|^(?:19|20)[0-9][0-9]-(0[1-9]|1[0-2])$", - "example": "2018-06 or 2018" - }, - "endDate": { - "type": "string", - "nullable": true, - "description": "Approximate end date for exposure.", - "pattern": "^(?:19|20)[0-9][0-9]$|^(?:19|20)[0-9][0-9]-(0[1-9]|1[0-2])$", - "example": "2018-06 or 2018" - } - } - } - } - } - } + "confinements": [ + { + "approximateBeginDate": "2018-06-04", + "approximateEndDate": "2018-07-04" + }, + { + "approximateBeginDate": "2020-06", + "approximateEndDate": "2020-07" } + ] + }, + "servicePay": { + "receivingMilitaryRetiredPay": "NO", + "futureMilitaryRetiredPay": "YES", + "futureMilitaryRetiredPayExplanation": "ABCDEFGHIJKLMNOPQRSTUVW", + "militaryRetiredPay": { + "branchOfService": "Army", + "monthlyAmount": 840 }, - "disabilities": { - "description": "Any current disabilities or symptoms the Veteran is claiming are related to their military service and/or are service-connected.", - "type": "array", - "minItems": 1, - "items": { - "type": "object", - "additionalProperties": false, - "required": [ - "disabilityActionType", - "name" - ], - "properties": { - "name": { - "description": "Name of the disability. The /disabilities endpoint on the [Benefits Reference Data API](https://developer.va.gov/explore/benefits/docs/benefits_reference_data?version=current) may be used to retrieve possible disability names.", - "type": "string", - "pattern": "^$|([a-zA-Z0-9\"\\/&\\(\\)\\-'.,#\\[\\] ]([a-zA-Z0-9(\\)\\-'.,#\\[\\] ])?)+$", - "example": "PTSD (post traumatic stress disorder)", - "maxLength": 255 - }, - "exposureOrEventOrInjury": { - "type": "string", - "description": "What caused the disability?", - "nullable": true, - "maxLength": 1000, - "examples": [ - "Agent Orange", - "radiation", - "burn pits" - ] - }, - "serviceRelevance": { - "description": "Explanation of how the disability(ies) relates to the in-service event/exposure/injury. If the disabilityActionType is 'NEW', the serviceRelevance is required.", - "type": "string", - "nullable": true, - "maxLength": 1000, - "example": "Heavy equipment operator in service." - }, - "approximateDate": { - "description": "Approximate date disability began. Date must be in the past. \n Format can be either YYYY-MM-DD or YYYY-MM or YYYY", - "type": "string", - "pattern": "^(?:[0-9]{4}(?:-(?!00)(?:0[1-9]|1[0-2])(?:-(?:0[1-9]|[1-2][0-9]|3[0-1]))?)?)$", - "example": "2018-03-02 or 2018-03 or 2018", - "nullable": true - }, - "disabilityActionType": { - "description": "Action type requested for the disability. If 'INCREASE' or 'NONE', then 'ratedDisabilityId' and 'diagnosticCode' should be included. 'NONE' should be used when including a secondary disability.", - "type": "string", - "enum": [ - "NONE", - "NEW", - "INCREASE" - ], - "example": "NEW" - }, - "classificationCode": { - "type": "string", - "description": "Classification code for the associated body system. Must match an active code returned by the /disabilities endpoint on the [Benefits Reference Data API](https://developer.va.gov/explore/benefits/docs/benefits_reference_data?version=current).", - "example": "249470", - "nullable": true - }, - "ratedDisabilityId": { - "description": "When submitting a contention with action type 'INCREASE', the previously rated disability id may be included.", - "type": "string", - "example": "1100583", - "nullable": true - }, - "diagnosticCode": { - "description": "If the disabilityActionType is 'NONE' or 'INCREASE', the diagnosticCode should correspond to an existing rated disability.", - "type": "integer", - "example": 9999, - "nullable": true - }, - "isRelatedToToxicExposure": { - "type": "boolean", - "description": "Is the disability related to toxic exposures? If true, related 'toxicExposure' must be included.", - "example": true, - "default": false, - "nullable": true - }, - "specialIssues": { - "type": "array", - "nullable": true, - "uniqueItems": true, - "items": { - "maxItems": 2, - "additionalProperties": false, - "type": "string", - "enum": [ - "POW", - "EMP" - ] - } - }, - "secondaryDisabilities": { - "description": "If secondaryDisability is included, the following attributes are required: 'secondaryDisability.name', 'secondaryDisability.disabilityActionType' and 'secondaryDisability.serviceRelevance'", - "type": "array", - "items": { - "type": "object", - "additionalProperties": false, - "properties": { - "name": { - "description": "Name of the disability. The /disabilities endpoint on the [Benefits Reference Data API](https://developer.va.gov/explore/benefits/docs/benefits_reference_data?version=current) may be used to retrieve possible disability names.", - "type": "string", - "pattern": "^$|([a-zA-Z0-9\"\\/&\\(\\)\\-'.,# ]([a-zA-Z0-9(\\)\\-'.,#\\[\\] ])?)+$", - "example": "PTSD (post traumatic stress disorder)", - "maxLength": 255 - }, - "exposureOrEventOrInjury": { - "type": "string", - "description": "What caused the disability?", - "nullable": true, - "maxLength": 1000, - "examples": [ - "Agent Orange", - "radiation", - "burn pits" - ] - }, - "serviceRelevance": { - "description": "Explanation of how the disability(ies) relates to the in-service event/exposure/injury.", - "type": "string", - "nullable": true, - "maxLength": 1000, - "example": "Heavy equipment operator in service." - }, - "disabilityActionType": { - "description": "The status of the secondary disability.", - "type": "string", - "example": "SECONDARY", - "enum": [ - "SECONDARY" - ] - }, - "approximateDate": { - "description": "Approximate date disability began. Date must be in the past. \n Format can be either YYYY-MM-DD or YYYY-MM or YYYY", - "type": "string", - "pattern": "^(?:[0-9]{4}(?:-(?!00)(?:0[1-9]|1[0-2])(?:-(?:0[1-9]|[1-2][0-9]|3[0-1]))?)?)$", - "example": "2018-03-02 or 2018-03 or 2018", - "nullable": true - }, - "classificationCode": { - "type": "string", - "description": "Classification code for the associated body system. Must match an active code returned by the /disabilities endpoint on the [Benefits Reference Data API](https://developer.va.gov/explore/benefits/docs/benefits_reference_data?version=current).", - "example": "249470", - "nullable": true - } - } - } - } - } - } + "retiredStatus": "PERMANENT_DISABILITY_RETIRED_LIST", + "favorMilitaryRetiredPay": false, + "receivedSeparationOrSeverancePay": "NO", + "separationSeverancePay": { + "datePaymentReceived": "2022-03-12", + "branchOfService": "Naval Academy", + "preTaxAmountReceived": 379 }, - "treatments": { - "description": "Identifies the Service Treatment information of the Veteran. The combination of treatedDisabilityName, center name, center city, and center state must be less than 1000 characters to successfully generate a PDF.", - "type": "array", - "nullable": true, - "uniqueItems": true, - "items": { - "type": "object", - "additionalProperties": false, - "properties": { - "beginDate": { - "description": "Begin date for treatment. If treatment began from 2005 to present, you do not need to provide dates. Each treatment begin date must be after the first 'servicePeriod.activeDutyBeginDate'.", - "type": "string", - "pattern": "^(?:19|20)[0-9][0-9]$|^(?:19|20)[0-9][0-9]-(0[1-9]|1[0-2])$", - "example": "2018-06 or 2018", - "nullable": true - }, - "treatedDisabilityNames": { - "description": "Name(s) of disabilities treated in this time frame.", - "type": "array", - "nullable": true, - "maxItems": 101, - "items": { - "type": "string", - "additionalProperties": false, - "example": [ - "PTSD (post traumatic stress disorder)", - "Trauma" - ] - } - }, - "center": { - "description": "VA Medical Center(s) and Department of Defense Military Treatment Facilities where the Veteran received treatment after discharge for any claimed disabilities.", - "type": "object", - "nullable": true, - "additionalProperties": false, - "properties": { - "name": { - "description": "Name of facility Veteran was treated in. The /treatment-centers endpoint on the [Benefits Reference Data API](https://developer.va.gov/explore/benefits/docs/benefits_reference_data?version=current) may be used to retrieve possible treatment center names.", - "type": "string", - "nullable": true, - "pattern": "([a-zA-Z0-9\"/&()\\'-'.,# ]([a-zA-Z0-9()\\'-'.,# ])?)+$", - "example": "Private Facility 2", - "minLength": 1, - "maxLength": 100 - }, - "city": { - "description": "City of treatment facility.", - "type": "string", - "pattern": "([a-zA-Z0-9\\-'.# ]([a-zA-Z0-9\\-'.# ])?)+$", - "example": "Portland", - "nullable": true, - "minLength": 0, - "maxLength": 30 - }, - "state": { - "description": "State of treatment facility.", - "type": "string", - "pattern": "^$|^[a-z,A-Z]{2}$", - "example": "OR", - "nullable": true - } - } - } + "favorTrainingPay": true + }, + "directDeposit": { + "noAccount": false, + "accountNumber": "ABCDEF", + "accountType": "CHECKING", + "financialInstitutionName": "Chase", + "routingNumber": "123123123" + }, + "claimantCertification": true + } + } + } + }, + "Transaction ID": { + "value": { + "meta": { + "transactionId": "00000000-0000-0000-0000-000000000000" + }, + "data": { + "type": "form/526", + "attributes": { + "claimProcessType": "STANDARD_CLAIM_PROCESS", + "claimNotes": "Some things that are important to know, and are not included in any other place.", + "veteranIdentification": { + "serviceNumber": "123456789", + "veteranNumber": { + "telephone": "5555555555", + "internationalTelephone": "+44 20 1234 5678" + }, + "mailingAddress": { + "addressLine1": "1234 Couch Street", + "addressLine2": "Unit 4", + "addressLine3": "Room 1", + "city": "Schenectady", + "state": "NY", + "country": "USA", + "zipFirstFive": "12345", + "zipLastFour": "1234" + }, + "emailAddress": { + "email": "valid@somedomain.com", + "agreeToEmailRelatedToClaim": true + }, + "currentVaEmployee": false + }, + "changeOfAddress": { + "typeOfAddressChange": "TEMPORARY", + "addressLine1": "10 Peach St", + "addressLine2": "Unit 4", + "addressLine3": "Room 1", + "city": "Schenectady", + "state": "NY", + "country": "USA", + "zipFirstFive": "12345", + "zipLastFour": "9897", + "dates": { + "beginDate": "2023-06-04", + "endDate": "2023-12-04" + } + }, + "homeless": { + "isCurrentlyHomeless": true, + "currentlyHomeless": { + "homelessSituationOptions": "FLEEING_CURRENT_RESIDENCE", + "otherDescription": "ABCDEFGHIJKLM" + }, + "isAtRiskOfBecomingHomeless": false, + "pointOfContact": "john stewart", + "pointOfContactNumber": { + "telephone": "5555555555", + "internationalTelephone": "+44 20 1234 5678" + } + }, + "toxicExposure": { + "gulfWarHazardService": { + "servedInGulfWarHazardLocations": "YES", + "serviceDates": { + "beginDate": "2018-07", + "endDate": "2018-08" + } + }, + "herbicideHazardService": { + "servedInHerbicideHazardLocations": "YES", + "otherLocationsServed": "ABCDEFGHIJKLM", + "serviceDates": { + "beginDate": "2018-07", + "endDate": "2018-08" + } + }, + "additionalHazardExposures": { + "additionalExposures": [ + "ASBESTOS", + "SHIPBOARD_HAZARD_AND_DEFENSE" + ], + "specifyOtherExposures": "Other exposure details", + "exposureDates": { + "beginDate": "2018-07", + "endDate": "2018-08" + } + }, + "multipleExposures": [ + { + "hazardExposedTo": "RADIATION", + "exposureLocation": "Guam", + "exposureDates": { + "beginDate": "2012-12", + "endDate": "2013-07" } } + ] + }, + "disabilities": [ + { + "name": "Traumatic Brain Injury", + "exposureOrEventOrInjury": "EXPOSURE", + "serviceRelevance": "ABCDEFG", + "approximateDate": "2018-03-11", + "disabilityActionType": "NEW", + "classificationCode": "9014", + "ratedDisabilityId": "ABCDEFGHIJKLMNOPQRSTUVWX", + "diagnosticCode": 9020, + "isRelatedToToxicExposure": true, + "secondaryDisabilities": [ + { + "name": "Post Traumatic Stress Disorder (PTSD) Combat - Mental Disorders", + "exposureOrEventOrInjury": "EXPOSURE", + "serviceRelevance": "ABCDEFGHIJKLMNOPQ", + "disabilityActionType": "SECONDARY", + "approximateDate": "2018-03-12", + "classificationCode": "9014" + } + ] }, - "serviceInformation": { - "type": "object", - "additionalProperties": false, - "required": [ - "servicePeriods" + { + "name": "Cancer - Musculoskeletal - Elbow", + "exposureOrEventOrInjury": "EXPOSURE", + "approximateDate": "2018-03-02", + "serviceRelevance": "ABCDEFG", + "disabilityActionType": "NEW", + "classificationCode": "9014", + "ratedDisabilityId": "ABCDEFGHIJKLMNOPQRSTUVWX", + "diagnosticCode": 249470, + "isRelatedToToxicExposure": true + }, + { + "name": "Cancer - Musculoskeletal - Knee", + "exposureOrEventOrInjury": "EXPOSURE", + "approximateDate": "2015", + "serviceRelevance": "ABCDEFG", + "disabilityActionType": "NEW", + "classificationCode": "9014", + "ratedDisabilityId": "ABCDEFGHIJKLMNOPQRSTUVWX", + "diagnosticCode": 249470, + "isRelatedToToxicExposure": true + } + ], + "treatments": [ + { + "beginDate": "2009-03", + "treatedDisabilityNames": [ + "Traumatic Brain Injury", + "Post Traumatic Stress Disorder (PTSD) Combat - Mental Disorders", + "Cancer - Musculoskeletal - Elbow" ], - "properties": { - "alternateNames": { - "description": "List any other names under which the Veteran served, if applicable.", - "type": "array", - "nullable": true, - "maxItems": 100, - "uniqueItems": true, - "items": { - "type": "string", - "additionalProperties": false, - "examples": [ - "jane", - "janey lee", - "jane lee MacDonald" - ] - } - }, - "servicePeriods": { - "description": "Identifies the Service dates and Branch the Veteran served in.", - "type": "array", - "minItems": 1, - "items": { - "type": "object", - "required": [ - "serviceBranch", - "serviceComponent", - "activeDutyBeginDate", - "activeDutyEndDate" - ], - "properties": { - "serviceBranch": { - "description": "Branch of service during period. The /service-branches endpoint on the [Benefits Reference Data API](https://developer.va.gov/explore/benefits/docs/benefits_reference_data?version=current) may be used to retrieve list of possible service branches.", - "type": "string", - "maxLength": 1000, - "example": "Air Force" - }, - "serviceComponent": { - "type": "string", - "description": "", - "enum": [ - "Active", - "Reserves", - "National Guard" - ] - }, - "activeDutyBeginDate": { - "description": "Date started active duty.", - "type": "string", - "pattern": "^(?:[0-9]{4})-(?:0[1-9]|1[0-2])-(?:0[1-9]|[1-2][0-9]|3[0-1])$", - "example": "2018-06-06" - }, - "activeDutyEndDate": { - "description": "Date completed active duty.", - "type": "string", - "pattern": "^(?:[0-9]{4})-(?:0[1-9]|1[0-2])-(?:0[1-9]|[1-2][0-9]|3[0-1])$", - "example": "2018-06-06" - }, - "separationLocationCode": { - "description": "Location code for the facility the Veteran plans to separate from. Code must match the values returned by the /intake-sites endpoint on the [Benefits reference Data API](https://developer.va.gov/explore/benefits/docs/benefits_reference_data?version=current).", - "type": "string", - "nullable": true, - "example": "98283" - } - } - } - }, - "servedInActiveCombatSince911": { - "type": "string", - "enum": [ - "YES", - "NO" - ], - "description": "Did Veteran serve in a combat zone since 9-11-2001?", - "example": "YES", - "nullable": true - }, - "reservesNationalGuardService": { - "type": "object", - "nullable": true, - "additionalProperties": false, - "properties": { - "component": { - "type": "string", - "nullable": true, - "description": "", - "enum": [ - "Reserves", - "National Guard" - ] - }, - "obligationTermsOfService": { - "type": "object", - "nullable": true, - "description": "If 'obligationTermsOfService' is included, the following attributes are required: 'beginDate ' and 'endDate'.", - "additionalProperties": false, - "properties": { - "beginDate": { - "type": "string", - "nullable": true, - "pattern": "^(?:[0-9]{4})-(?:0[1-9]|1[0-2])-(?:0[1-9]|[1-2][0-9]|3[0-1])$", - "example": "2018-06-06" - }, - "endDate": { - "type": "string", - "nullable": true, - "pattern": "^(?:[0-9]{4})-(?:0[1-9]|1[0-2])-(?:0[1-9]|[1-2][0-9]|3[0-1])$", - "example": "2018-06-06" - } - } - }, - "unitName": { - "type": "string", - "nullable": true, - "maxLength": 1000, - "pattern": "^$|([a-zA-Z0-9\\-'.,# ][a-zA-Z0-9\\-'.,# ]?)*$" - }, - "unitAddress": { - "type": "string", - "maxLength": 1000, - "pattern": "^$|^([-a-zA-Z0-9'.,&# ])+$", - "nullable": true - }, - "unitPhone": { - "type": "object", - "nullable": true, - "additionalProperties": false, - "properties": { - "areaCode": { - "type": "string", - "nullable": true, - "maxLength": 3, - "pattern": "^$|^\\d{3}$", - "example": "555" - }, - "phoneNumber": { - "type": "string", - "nullable": true, - "maxLength": 20, - "example": "5555555" - } - } - }, - "receivingInactiveDutyTrainingPay": { - "type": "string", - "enum": [ - "YES", - "NO" - ], - "nullable": true, - "example": "YES" - } - } - }, - "federalActivation": { - "description": "If federalActivation is present then reservesNationalGuardService.obligationTermsOfService.beginDate, reservesNationalGuardService.obligationTermsOfService.endDate and reservesNationalGuardService.unitName are required", - "type": "object", - "nullable": true, - "additionalProperties": false, - "properties": { - "activationDate": { - "description": "Date cannot be in the future and must be after the earliest servicePeriod.activeDutyBeginDate.", - "type": "string", - "pattern": "^(?:[0-9]{4})-(?:0[1-9]|1[0-2])-(?:0[1-9]|[1-2][0-9]|3[0-1])$", - "example": "2018-06-06", - "nullable": true - }, - "anticipatedSeparationDate": { - "description": "Anticipated date of separation. Date must be in the future.", - "type": "string", - "pattern": "^(?:[0-9]{4})-(?:0[1-9]|1[0-2])-(?:0[1-9]|[1-2][0-9]|3[0-1])$", - "example": "2018-06-06", - "nullable": true - } - } - }, - "confinements": { - "type": "array", - "nullable": true, - "uniqueItems": true, - "items": { - "additionalProperties": false, - "type": "object", - "properties": { - "approximateBeginDate": { - "description": "The approximateBeginDate must be after the earliest servicePeriod activeDutyBeginDate.", - "type": "string", - "nullable": false, - "pattern": "^(?:[0-9]{4})-(?:0[1-9]|1[0-2])-(?:0[1-9]|[1-2][0-9]|3[0-1])$|(?:[0-9]{4})-(?:0[1-9]|1[0-2])$", - "example": "2018-06-06 or 2018-06" - }, - "approximateEndDate": { - "type": "string", - "nullable": false, - "pattern": "^(?:[0-9]{4})-(?:0[1-9]|1[0-2])-(?:0[1-9]|[1-2][0-9]|3[0-1])$|(?:[0-9]{4})-(?:0[1-9]|1[0-2])$", - "example": "2018-06-06 or 2018-06" - } - } - } - } + "center": { + "name": "Center One", + "city": "Decatur", + "state": "GA" + } + } + ], + "serviceInformation": { + "alternateNames": [ + "john jacob", + "johnny smith" + ], + "servicePeriods": [ + { + "serviceBranch": "Public Health Service", + "serviceComponent": "Active", + "activeDutyBeginDate": "2008-11-14", + "activeDutyEndDate": "2024-12-18", + "separationLocationCode": "98282" } + ], + "servedInActiveCombatSince911": "NO", + "reservesNationalGuardService": { + "component": "National Guard", + "obligationTermsOfService": { + "beginDate": "2019-06-04", + "endDate": "2020-06-04" + }, + "unitName": "National Guard Unit Name", + "unitAddress": "1243 pine court", + "unitPhone": { + "areaCode": "555", + "phoneNumber": "5555555" + }, + "receivingInactiveDutyTrainingPay": "YES" }, - "servicePay": { - "type": "object", - "nullable": true, - "additionalProperties": false, - "properties": { - "receivingMilitaryRetiredPay": { - "description": "Is the Veteran receiving military retired pay?", - "type": "string", - "enum": [ - "YES", - "NO" - ], - "example": "YES", - "nullable": true - }, - "futureMilitaryRetiredPay": { - "description": "Will the Veteran receive military retired pay pay in future? \n If true, then 'futurePayExplanation' is required.", - "type": "string", - "enum": [ - "YES", - "NO" - ], - "example": "YES", - "nullable": true - }, - "futureMilitaryRetiredPayExplanation": { - "description": "Explains why future pay will be received.", - "type": "string", - "maxLength": 1000, - "example": "Will be retiring soon.", - "nullable": true - }, - "militaryRetiredPay": { - "type": "object", - "nullable": true, - "description": "", - "properties": { - "branchOfService": { - "description": "Branch of service. The /service-branches endpoint on the [Benefits Reference Data API](https://developer.va.gov/explore/benefits/docs/benefits_reference_data?version=current) may be used to retrieve list of possible service branches.", - "type": "string", - "maxLength": 1000, - "nullable": true, - "example": "Air Force" - }, - "monthlyAmount": { - "description": "Amount being received.", - "type": "integer", - "nullable": true, - "minimum": 1, - "maximum": 999999, - "example": 100 - } - } - }, - "retiredStatus": { - "type": "string", - "nullable": true, - "description": "", - "enum": [ - "RETIRED", - "TEMPORARY_DISABILITY_RETIRED_LIST", - "PERMANENT_DISABILITY_RETIRED_LIST" - ] - }, - "favorMilitaryRetiredPay": { - "description": "Is the Veteran waiving VA benefits to retain military retired pay? See item 26 on form 21-526EZ for more details.", - "type": "boolean", - "nullable": true, - "example": true, - "default": false - }, - "receivedSeparationOrSeverancePay": { - "description": "Has the Veteran ever received separation pay, disability severance pay, or any other lump sum payment from their branch of service?", - "type": "string", - "enum": [ - "YES", - "NO" - ], - "example": "YES", - "nullable": true - }, - "separationSeverancePay": { - "type": "object", - "nullable": true, - "description": "", - "properties": { - "datePaymentReceived": { - "description": "Approximate date separation pay was received. \n Format can be either YYYY-MM-DD or YYYY-MM or YYYY", - "type": "string", - "pattern": "^(?:[0-9]{4})-(?:0[1-9]|1[0-2])-(?:0[1-9]|[1-2][0-9]|3[0-1])$|(?:[0-9]{4})$|(?:[0-9]{4})-(?:0[1-9]|1[0-2])$", - "example": "2018-03-02 or 2018-03 or 2018" - }, - "branchOfService": { - "description": "Branch of service. The /service-branches endpoint on the [Benefits Reference Data API](https://developer.va.gov/explore/benefits/docs/benefits_reference_data?version=current) may be used to retrieve list of possible service branches.", - "type": "string", - "nullable": true, - "maxLength": 1000, - "example": "Air Force" - }, - "preTaxAmountReceived": { - "description": "Amount being received.", - "type": "integer", - "nullable": true, - "minimum": 1, - "maximum": 999999, - "example": 100 - } - } - }, - "favorTrainingPay": { - "description": "Is the Veteran waiving VA benefits to retain training pay? See item 28 on form 21-526EZ for more details. ", - "type": "boolean", - "nullable": true, - "example": true, - "default": false - } - } + "federalActivation": { + "activationDate": "2023-10-01", + "anticipatedSeparationDate": "2024-12-18" }, - "directDeposit": { - "type": "object", - "nullable": true, - "additionalProperties": false, - "description": "If direct deposit information is included, the following attributes are required: accountType, accountNumber, routingNumber.", - "properties": { - "noAccount": { - "type": "boolean", - "nullable": true, - "description": "Claimant certifies that they do not have an account with a financial institution or certified payment agent.", - "default": false - }, - "accountNumber": { - "description": "Account number for the direct deposit.", - "pattern": "^(?:[a-zA-Z0-9-]{4,1000})?$", - "type": "string", - "maxLength": 1000, - "nullable": true, - "example": "123123123123" - }, - "accountType": { - "description": "Account type for the direct deposit.", - "type": "string", - "nullable": true, - "example": "CHECKING", - "enum": [ - "CHECKING", - "SAVINGS" - ] - }, - "financialInstitutionName": { - "description": "Provide the name of the financial institution where the Veteran wants the direct deposit.", - "maxLength": 1000, - "type": "string", - "nullable": true, - "example": "Some Bank" - }, - "routingNumber": { - "description": "Routing number for the direct deposit.", - "type": "string", - "maxLength": 1000, - "nullable": true, - "pattern": "^$|^\\d{0,1000}$", - "example": "123123123" - } + "confinements": [ + { + "approximateBeginDate": "2018-06-04", + "approximateEndDate": "2018-07-04" + }, + { + "approximateBeginDate": "2020-06", + "approximateEndDate": "2020-07" } + ] + }, + "servicePay": { + "receivingMilitaryRetiredPay": "NO", + "futureMilitaryRetiredPay": "YES", + "futureMilitaryRetiredPayExplanation": "ABCDEFGHIJKLMNOPQRSTUVW", + "militaryRetiredPay": { + "branchOfService": "Army", + "monthlyAmount": 840 }, - "claimantCertification": { - "type": "boolean", - "description": "Claimant certifies and authorizes release of information.", - "default": false + "retiredStatus": "PERMANENT_DISABILITY_RETIRED_LIST", + "favorMilitaryRetiredPay": false, + "receivedSeparationOrSeverancePay": "NO", + "separationSeverancePay": { + "datePaymentReceived": "2022-03-12", + "branchOfService": "Naval Academy", + "preTaxAmountReceived": 379 }, - "claimNotes": { - "type": "string", - "description": "An optional notes section.", - "maxLength": 4000 - } - } + "favorTrainingPay": true + }, + "directDeposit": { + "noAccount": false, + "accountNumber": "ABCDEF", + "accountType": "CHECKING", + "financialInstitutionName": "Chase", + "routingNumber": "123123123" + }, + "claimantCertification": true } } } - }, + } + } + } + } + } + } + }, + "/veterans/{veteranId}/526/validate": { + "post": { + "summary": "Validates a 526 claim form submission.", + "tags": [ + "Disability Compensation Claims" + ], + "operationId": "post526ClaimValidate", + "security": [ + { + "productionOauth": [ + "system/claim.read", + "system/claim.write" + ] + }, + { + "sandboxOauth": [ + "system/claim.read", + "system/claim.write" + ] + }, + { + "bearer_token": [] + } + ], + "description": "Validates a request for a disability compensation claim submission (21-526EZ).\nThis endpoint can be used to test the request parameters for your /526 submission.\n", + "parameters": [ + { + "name": "veteranId", + "in": "path", + "required": true, + "example": "1012667145V762142", + "description": "ID of Veteran", + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "Successful response with disability", + "content": { + "application/json": { "example": { "data": { - "type": "form/526", + "type": "claims_api_auto_established_claim_validation", "attributes": { - "claimProcessType": "STANDARD_CLAIM_PROCESS", - "claimNotes": "Some things that are important to know, and are not included in any other place.", - "veteranIdentification": { - "serviceNumber": "123456789", - "veteranNumber": { - "telephone": "5555555555" - }, - "mailingAddress": { - "addressLine1": "123 Main Street", - "addressLine2": "Unit 1", - "addressLine3": "Room 2", - "city": "Schenectady", - "state": "NY", - "country": "USA", - "zipFirstFive": "12345", - "zipLastFour": "1234" - }, - "emailAddress": { - "email": "valid@somedomain.com", - "agreeToEmailRelatedToClaim": true + "status": "valid" + } + } + }, + "schema": { + "$schema": "http://json-schema.org/draft-04/schema#", + "type": "object", + "required": [ + "data" + ], + "properties": { + "data": { + "type": "object", + "additionalProperties": false, + "required": [ + "type", + "attributes" + ], + "properties": { + "type": { + "type": "string" }, - "currentVaEmployee": false - }, - "changeOfAddress": { - "typeOfAddressChange": "TEMPORARY", - "addressLine1": "456 Main Street", - "addressLine2": "Unit 3", - "addressLine3": "Room 4", - "city": "Schenectady", - "state": "NY", - "country": "USA", - "zipFirstFive": "12345", - "zipLastFour": "9897", - "dates": { - "beginDate": "2025-06-04", - "endDate": "2026-06-04" + "attributes": { + "type": "object", + "additionalProperties": false, + "required": [ + "status" + ], + "properties": { + "status": { + "type": "string", + "enum": [ + "valid" + ], + "description": "Return whether or not whether or not the payload is valid" + } + } } - }, - "homeless": { - "currentlyHomeless": { - "homelessSituationOptions": "OTHER", - "otherDescription": "Other living situation" - }, - "pointOfContact": "John Doe", - "pointOfContactNumber": { - "telephone": "5555555555" - } - }, - "toxicExposure": { - "gulfWarHazardService": { - "servedInGulfWarHazardLocations": "NO" - }, - "herbicideHazardService": { - "servedInHerbicideHazardLocations": "YES", - "otherLocationsServed": "Other locations served", - "serviceDates": { - "beginDate": "1972-05", - "endDate": "1980-10" - } - }, - "additionalHazardExposures": { - "additionalExposures": [ - "OTHER" - ], - "specifyOtherExposures": "Agent Orange", - "exposureDates": { - "beginDate": "1972-05", - "endDate": "1980-10" - } - }, - "multipleExposures": [ - { - "hazardExposedTo": "Agent Orange", - "exposureLocation": "Vietnam", - "exposureDates": { - "beginDate": "1972-05", - "endDate": "1973-01" - } + } + } + } + } + } + } + }, + "401": { + "description": "Unauthorized", + "content": { + "application/json": { + "example": { + "errors": [ + { + "title": "Not authorized", + "status": "401", + "detail": "Not authorized" + } + ] + }, + "schema": { + "required": [ + "errors" + ], + "properties": { + "errors": { + "type": "array", + "items": { + "additionalProperties": false, + "required": [ + "title", + "detail" + ], + "properties": { + "title": { + "type": "string", + "description": "HTTP error title" }, - { - "hazardExposedTo": "Agent Orange", - "exposureLocation": "Vietnam", - "exposureDates": { - "beginDate": "1979-04", - "endDate": "1980-10" + "detail": { + "type": "string", + "description": "HTTP error detail" + }, + "status": { + "type": "string", + "description": "HTTP error status code" + }, + "source": { + "type": "object", + "additionalProperties": false, + "description": "Source of error", + "properties": { + "pointer": { + "type": "string", + "description": "Pointer to source of error" + } } } - ] - }, - "disabilities": [ - { - "name": "Diabetes", - "exposureOrEventOrInjury": "Agent Orange", - "serviceRelevance": "Service in Vietnam War", - "approximateDate": "1975-05", - "disabilityActionType": "NEW", - "isRelatedToToxicExposure": true - }, - { - "name": "Hearing Loss", - "exposureOrEventOrInjury": "Noise", - "serviceRelevance": "Heavy equipment operator in service", - "approximateDate": "1968-07", - "disabilityActionType": "INCREASE", - "classificationCode": "8987", - "ratedDisabilityId": "1234567", - "diagnosticCode": 5678, - "isRelatedToToxicExposure": false - } - ], - "treatments": [ - { - "beginDate": "2021-04", - "treatedDisabilityNames": [ - "Diabetes" - ], - "center": { - "name": "ATLANTA VA MEDICAL CENTER", - "state": "GA", - "city": "ATLANTA" - } - }, - { - "beginDate": "1996-03", - "treatedDisabilityNames": [ - "Hearing Loss" - ], - "center": { - "name": "ATLANTA VA MEDICAL CENTER", - "state": "GA", - "city": "ATLANTA" - } } - ], - "serviceInformation": { - "alternateNames": [ - "Jon Doe", - "Jane Doe" - ], - "servicePeriods": [ - { - "serviceBranch": "Air Force", - "serviceComponent": "Active", - "activeDutyBeginDate": "1964-11-14", - "activeDutyEndDate": "1980-10-30", - "separationLocationCode": "98289" - } + } + } + } + } + } + } + }, + "404": { + "description": "Resource not found", + "content": { + "application/json": { + "example": { + "errors": [ + { + "status": "404", + "title": "Resource not found", + "detail": "Unable to locate Veteran's ID/ICN in Master Person Index (MPI). Please submit an issue at ask.va.gov or call 1-800-MyVA411 (800-698-2411) for assistance." + } + ] + }, + "schema": { + "required": [ + "errors" + ], + "properties": { + "errors": { + "type": "array", + "items": { + "additionalProperties": false, + "required": [ + "title", + "detail" ], - "servedInActiveCombatSince911": "NO", - "reservesNationalGuardService": { - "component": "National Guard", - "obligationTermsOfService": { - "beginDate": "1990-11-24", - "endDate": "1995-11-17" + "properties": { + "title": { + "type": "string", + "description": "HTTP error title" }, - "unitName": "National Guard Unit Name", - "unitAddress": "1243 Main Street", - "unitPhone": { - "areaCode": "555", - "phoneNumber": "5555555" + "detail": { + "type": "string", + "description": "HTTP error detail" }, - "receivingInactiveDutyTrainingPay": "YES" - }, - "confinements": [ - { - "approximateBeginDate": "1970-06-11", - "approximateEndDate": "1970-09-11" + "status": { + "type": "string", + "description": "HTTP error status code" } - ] - }, - "servicePay": { - "receivingMilitaryRetiredPay": "NO", - "futureMilitaryRetiredPay": "YES", - "futureMilitaryRetiredPayExplanation": "Explanation of future military retired pay", - "militaryRetiredPay": { - "branchOfService": "Air Force", - "monthlyAmount": 240 - }, - "retiredStatus": "PERMANENT_DISABILITY_RETIRED_LIST", - "favorMilitaryRetiredPay": false, - "receivedSeparationOrSeverancePay": "YES", - "separationSeverancePay": { - "datePaymentReceived": "2018-07-31", - "branchOfService": "Air Force", - "preTaxAmountReceived": 179 - }, - "favorTrainingPay": false - }, - "directDeposit": { - "accountNumber": "123123123123", - "accountType": "CHECKING", - "financialInstitutionName": "Chase", - "routingNumber": "123456789" - }, - "claimantCertification": true + } + } } } } - }, - "examples": { - "Minimum Required Attributes": { - "value": { - "data": { - "type": "form/526", - "attributes": { - "claimProcessType": "STANDARD_CLAIM_PROCESS", - "veteranIdentification": { - "mailingAddress": { - "addressLine1": "1234 Couch Street", - "city": "Portland", - "state": "OR", - "country": "USA", - "zipFirstFive": "12345" - }, - "currentVaEmployee": false - }, - "disabilities": [ - { - "name": "hearing loss", - "serviceRelevance": "Heavy equipment operator in service", - "approximateDate": "2017-07", - "disabilityActionType": "NEW" - } - ], - "serviceInformation": { - "servicePeriods": [ - { - "serviceBranch": "Air Force", - "serviceComponent": "Active", - "activeDutyBeginDate": "2015-11-14", - "activeDutyEndDate": "2018-11-30" - } - ] - }, - "claimantCertification": true + } + } + }, + "422": { + "description": "Unprocessable entity", + "content": { + "application/json": { + "example": { + "errors": [ + { + "title": "Unprocessable entity", + "detail": "The property / did not contain the required key claimProcessType", + "status": "422", + "source": { + "pointer": "data/attributes/" + } + }, + { + "title": "Unprocessable entity", + "detail": "The property / did not contain the required key disabilities", + "status": "422", + "source": { + "pointer": "data/attributes/" + } + }, + { + "title": "Unprocessable entity", + "detail": "The property / did not contain the required key serviceInformation", + "status": "422", + "source": { + "pointer": "data/attributes/" + } + }, + { + "title": "Unprocessable entity", + "detail": "The property / did not contain the required key veteranIdentification", + "status": "422", + "source": { + "pointer": "data/attributes/" } } - } + ] }, - "Maximum Attributes": { - "value": { - "data": { - "type": "form/526", - "attributes": { - "claimProcessType": "STANDARD_CLAIM_PROCESS", - "claimNotes": "Some things that are important to know, and are not included in any other place.", - "veteranIdentification": { - "serviceNumber": "123456789", - "veteranNumber": { - "telephone": "5555555555", - "internationalTelephone": "+44 20 1234 5678" - }, - "mailingAddress": { - "addressLine1": "1234 Couch Street", - "addressLine2": "Unit 4", - "addressLine3": "Room 1", - "city": "Schenectady", - "state": "NY", - "country": "USA", - "zipFirstFive": "12345", - "zipLastFour": "1234" - }, - "emailAddress": { - "email": "valid@somedomain.com", - "agreeToEmailRelatedToClaim": true - }, - "currentVaEmployee": false - }, - "changeOfAddress": { - "typeOfAddressChange": "TEMPORARY", - "addressLine1": "10 Peach St", - "addressLine2": "Unit 4", - "addressLine3": "Room 1", - "city": "Schenectady", - "state": "NY", - "country": "USA", - "zipFirstFive": "12345", - "zipLastFour": "9897", - "dates": { - "beginDate": "2023-06-04", - "endDate": "2023-12-04" - } - }, - "homeless": { - "isCurrentlyHomeless": true, - "currentlyHomeless": { - "homelessSituationOptions": "FLEEING_CURRENT_RESIDENCE", - "otherDescription": "ABCDEFGHIJKLM" - }, - "isAtRiskOfBecomingHomeless": false, - "pointOfContact": "john stewart", - "pointOfContactNumber": { - "telephone": "5555555555", - "internationalTelephone": "+44 20 1234 5678" - } - }, - "toxicExposure": { - "gulfWarHazardService": { - "servedInGulfWarHazardLocations": "YES", - "serviceDates": { - "beginDate": "2018-07", - "endDate": "2018-08" - } + "schema": { + "required": [ + "errors" + ], + "properties": { + "errors": { + "type": "array", + "items": { + "additionalProperties": false, + "required": [ + "title", + "status", + "detail" + ], + "properties": { + "status": { + "type": "string", + "description": "HTTP error code" }, - "herbicideHazardService": { - "servedInHerbicideHazardLocations": "YES", - "otherLocationsServed": "ABCDEFGHIJKLM", - "serviceDates": { - "beginDate": "2018-07", - "endDate": "2018-08" - } + "detail": { + "type": "string", + "description": "HTTP error detail" }, - "additionalHazardExposures": { - "additionalExposures": [ - "ASBESTOS", - "SHIPBOARD_HAZARD_AND_DEFENSE" - ], - "specifyOtherExposures": "Other exposure details", - "exposureDates": { - "beginDate": "2018-07", - "endDate": "2018-08" + "source": { + "type": "object", + "pointer": { + "type": "string" } }, - "multipleExposures": [ - { - "hazardExposedTo": "RADIATION", - "exposureLocation": "Guam", - "exposureDates": { - "beginDate": "2012-12", - "endDate": "2013-07" - } - } - ] - }, - "disabilities": [ - { - "name": "Traumatic Brain Injury", - "exposureOrEventOrInjury": "EXPOSURE", - "serviceRelevance": "ABCDEFG", - "approximateDate": "2018-03-11", - "disabilityActionType": "NEW", - "classificationCode": "9014", - "ratedDisabilityId": "ABCDEFGHIJKLMNOPQRSTUVWX", - "diagnosticCode": 9020, - "isRelatedToToxicExposure": true, - "secondaryDisabilities": [ - { - "name": "Post Traumatic Stress Disorder (PTSD) Combat - Mental Disorders", - "exposureOrEventOrInjury": "EXPOSURE", - "serviceRelevance": "ABCDEFGHIJKLMNOPQ", - "disabilityActionType": "SECONDARY", - "approximateDate": "2018-03-12", - "classificationCode": "9014" - } + "title": { + "type": "string" + } + } + } + } + } + } + } + } + } + }, + "requestBody": { + "content": { + "application/json": { + "schema": { + "type": "object", + "required": [ + "data" + ], + "properties": { + "data": { + "type": "object", + "required": [ + "attributes", + null + ], + "properties": { + "attributes": { + "$schema": "http://json-schema.org/draft-07/schema#", + "description": "Claims API 526 Schema", + "type": "object", + "additionalProperties": false, + "required": [ + "claimantCertification", + "claimProcessType", + "disabilities", + "serviceInformation", + "veteranIdentification" + ], + "properties": { + "claimProcessType": { + "type": "string", + "description": "Select type of claim program/process that applies to the Veteran.", + "enum": [ + "STANDARD_CLAIM_PROCESS", + "FDC_PROGRAM", + "BDD_PROGRAM" ] }, - { - "name": "Cancer - Musculoskeletal - Elbow", - "exposureOrEventOrInjury": "EXPOSURE", - "approximateDate": "2018-03-02", - "serviceRelevance": "ABCDEFG", - "disabilityActionType": "NEW", - "classificationCode": "9014", - "ratedDisabilityId": "ABCDEFGHIJKLMNOPQRSTUVWX", - "diagnosticCode": 249470, - "isRelatedToToxicExposure": true - }, - { - "name": "Cancer - Musculoskeletal - Knee", - "exposureOrEventOrInjury": "EXPOSURE", - "approximateDate": "2015", - "serviceRelevance": "ABCDEFG", - "disabilityActionType": "NEW", - "classificationCode": "9014", - "ratedDisabilityId": "ABCDEFGHIJKLMNOPQRSTUVWX", - "diagnosticCode": 249470, - "isRelatedToToxicExposure": true - } - ], - "treatments": [ - { - "beginDate": "2009-03", - "treatedDisabilityNames": [ - "Traumatic Brain Injury", - "Post Traumatic Stress Disorder (PTSD) Combat - Mental Disorders", - "Cancer - Musculoskeletal - Elbow" + "veteranIdentification": { + "type": "object", + "additionalProperties": false, + "required": [ + "mailingAddress", + "currentVaEmployee" ], - "center": { - "name": "Center One", - "city": "Decatur", - "state": "GA" - } - } - ], - "serviceInformation": { - "alternateNames": [ - "john jacob", - "johnny smith" - ], - "servicePeriods": [ - { - "serviceBranch": "Public Health Service", - "serviceComponent": "Active", - "activeDutyBeginDate": "2008-11-14", - "activeDutyEndDate": "2023-10-30" - } - ], - "servedInActiveCombatSince911": "NO", - "reservesNationalGuardService": { - "component": "National Guard", - "obligationTermsOfService": { - "beginDate": "2019-06-04", - "endDate": "2020-06-04" - }, - "unitName": "National Guard Unit Name", - "unitAddress": "1243 pine court", - "unitPhone": { - "areaCode": "555", - "phoneNumber": "5555555" - }, - "receivingInactiveDutyTrainingPay": "YES" - }, - "confinements": [ - { - "approximateBeginDate": "2018-06-04", - "approximateEndDate": "2018-07-04" - }, - { - "approximateBeginDate": "2020-06", - "approximateEndDate": "2020-07" + "properties": { + "serviceNumber": { + "type": "string", + "description": "Service identification number", + "maxLength": 1000, + "nullable": true + }, + "veteranNumber": { + "description": "If there isn't a ten digit phone number in VBMS for the Veteran, the exams will not be ordered. Including the phone number is recommended to avoid claim processing delays.", + "type": "object", + "nullable": true, + "properties": { + "telephone": { + "description": "Veteran's phone number.", + "type": "string", + "pattern": "^\\d{10}?$", + "example": "5555555555", + "nullable": true + }, + "internationalTelephone": { + "type": "string", + "description": "Veteran's international phone number.", + "example": "+44 20 1234 5678", + "maxLength": 1000, + "nullable": true + } + } + }, + "mailingAddress": { + "type": "object", + "additionalProperties": false, + "required": [ + "addressLine1", + "city", + "country" + ], + "properties": { + "addressLine1": { + "description": "Address line 1 for the Veteran's current mailing address.", + "type": "string", + "pattern": "^([-a-zA-Z0-9'.,&#]([-a-zA-Z0-9'.,&# ])?)+$", + "maxLength": 20, + "example": "1234 Couch Street" + }, + "addressLine2": { + "description": "Address line 2 for the Veteran's current mailing address.", + "type": "string", + "pattern": "^([-a-zA-Z0-9'.,&#]([-a-zA-Z0-9'.,&# ])?)+$", + "maxLength": 20, + "example": "Unit 4", + "nullable": true + }, + "addressLine3": { + "description": "Address line 3 for the Veteran's current mailing address.", + "type": "string", + "pattern": "^([-a-zA-Z0-9'.,&#]([-a-zA-Z0-9'.,&# ])?)+$", + "maxLength": 20, + "example": "Room 1", + "nullable": true + }, + "city": { + "description": "City for the Veteran's current mailing address.", + "type": "string", + "pattern": "^$|([a-zA-Z0-9\\'-'.# ]([a-zA-Z0-9\\'-'.# ])?)+$", + "minLength": 1, + "maxLength": 30, + "example": "Schenectady" + }, + "state": { + "description": "State for the Veteran's current mailing address. Required if 'country' is 'USA'.", + "type": "string", + "pattern": "^[a-z,A-Z]{2}$", + "example": "NY", + "nullable": true + }, + "country": { + "description": "Country for the Veteran's current mailing address. Must match the values returned by the /countries endpoint on the [Benefits Reference Data API](https://developer.va.gov/explore/benefits/docs/benefits_reference_data?version=current).", + "type": "string", + "maxLength": 1000, + "example": "USA" + }, + "zipFirstFive": { + "description": "Zip code (First 5 digits) for the Veteran's current mailing address. Required if 'country' is 'USA'.", + "type": "string", + "pattern": "^\\d{5}?$", + "example": "12345", + "nullable": true + }, + "zipLastFour": { + "description": "Zip code (Last 4 digits) for the Veteran's current mailing address.", + "type": "string", + "pattern": "^\\d{4}?$", + "example": "6789", + "nullable": true + }, + "internationalPostalCode": { + "description": "International postal code for the Veteran's current mailing address. Do not include if 'country' is 'USA'.", + "type": "string", + "maxLength": 16, + "nullable": true, + "pattern": "^[a-zA-Z0-9]*$" + } + } + }, + "emailAddress": { + "description": "Information associated with the Veteran's email address.", + "type": "object", + "nullable": true, + "properties": { + "email": { + "type": "string", + "pattern": "^[^\\s@]+@([^\\s@.,]+\\.)+[^\\s@.,]{2,}$", + "description": "The most current email address of the Veteran.", + "maxLength": 80, + "nullable": true + }, + "agreeToEmailRelatedToClaim": { + "type": "boolean", + "description": "Agreement to email information relating to this claim.", + "example": true, + "default": false, + "nullable": true + } + } + }, + "currentVaEmployee": { + "type": "boolean", + "description": "Set to true if Veteran is a VA employee.", + "nullable": false + } } - ] - }, - "servicePay": { - "receivingMilitaryRetiredPay": "NO", - "futureMilitaryRetiredPay": "YES", - "futureMilitaryRetiredPayExplanation": "ABCDEFGHIJKLMNOPQRSTUVW", - "militaryRetiredPay": { - "branchOfService": "Army", - "monthlyAmount": 840 - }, - "retiredStatus": "PERMANENT_DISABILITY_RETIRED_LIST", - "favorMilitaryRetiredPay": false, - "receivedSeparationOrSeverancePay": "NO", - "separationSeverancePay": { - "datePaymentReceived": "2022-03-12", - "branchOfService": "Naval Academy", - "preTaxAmountReceived": 379 - }, - "favorTrainingPay": true - }, - "directDeposit": { - "noAccount": false, - "accountNumber": "ABCDEF", - "accountType": "CHECKING", - "financialInstitutionName": "Chase", - "routingNumber": "123123123" - }, - "claimantCertification": true - } - } - } - }, - "Transaction ID": { - "value": { - "meta": { - "transactionId": "00000000-0000-0000-0000-000000000000" - }, - "data": { - "type": "form/526", - "attributes": { - "claimProcessType": "STANDARD_CLAIM_PROCESS", - "claimNotes": "Some things that are important to know, and are not included in any other place.", - "veteranIdentification": { - "serviceNumber": "123456789", - "veteranNumber": { - "telephone": "5555555555", - "internationalTelephone": "+44 20 1234 5678" }, - "mailingAddress": { - "addressLine1": "1234 Couch Street", - "addressLine2": "Unit 4", - "addressLine3": "Room 1", - "city": "Schenectady", - "state": "NY", - "country": "USA", - "zipFirstFive": "12345", - "zipLastFour": "1234" - }, - "emailAddress": { - "email": "valid@somedomain.com", - "agreeToEmailRelatedToClaim": true - }, - "currentVaEmployee": false - }, - "changeOfAddress": { - "typeOfAddressChange": "TEMPORARY", - "addressLine1": "10 Peach St", - "addressLine2": "Unit 4", - "addressLine3": "Room 1", - "city": "Schenectady", - "state": "NY", - "country": "USA", - "zipFirstFive": "12345", - "zipLastFour": "9897", - "dates": { - "beginDate": "2023-06-04", - "endDate": "2023-12-04" - } - }, - "homeless": { - "isCurrentlyHomeless": true, - "currentlyHomeless": { - "homelessSituationOptions": "FLEEING_CURRENT_RESIDENCE", - "otherDescription": "ABCDEFGHIJKLM" - }, - "isAtRiskOfBecomingHomeless": false, - "pointOfContact": "john stewart", - "pointOfContactNumber": { - "telephone": "5555555555", - "internationalTelephone": "+44 20 1234 5678" - } - }, - "toxicExposure": { - "gulfWarHazardService": { - "servedInGulfWarHazardLocations": "YES", - "serviceDates": { - "beginDate": "2018-07", - "endDate": "2018-08" - } - }, - "herbicideHazardService": { - "servedInHerbicideHazardLocations": "YES", - "otherLocationsServed": "ABCDEFGHIJKLM", - "serviceDates": { - "beginDate": "2018-07", - "endDate": "2018-08" - } - }, - "additionalHazardExposures": { - "additionalExposures": [ - "ASBESTOS", - "SHIPBOARD_HAZARD_AND_DEFENSE" - ], - "specifyOtherExposures": "Other exposure details", - "exposureDates": { - "beginDate": "2018-07", - "endDate": "2018-08" - } - }, - "multipleExposures": [ - { - "hazardExposedTo": "RADIATION", - "exposureLocation": "Guam", - "exposureDates": { - "beginDate": "2012-12", - "endDate": "2013-07" - } - } - ] - }, - "disabilities": [ - { - "name": "Traumatic Brain Injury", - "exposureOrEventOrInjury": "EXPOSURE", - "serviceRelevance": "ABCDEFG", - "approximateDate": "2018-03-11", - "disabilityActionType": "NEW", - "classificationCode": "9014", - "ratedDisabilityId": "ABCDEFGHIJKLMNOPQRSTUVWX", - "diagnosticCode": 9020, - "isRelatedToToxicExposure": true, - "secondaryDisabilities": [ - { - "name": "Post Traumatic Stress Disorder (PTSD) Combat - Mental Disorders", - "exposureOrEventOrInjury": "EXPOSURE", - "serviceRelevance": "ABCDEFGHIJKLMNOPQ", - "disabilityActionType": "SECONDARY", - "approximateDate": "2018-03-12", - "classificationCode": "9014" + "changeOfAddress": { + "description": "If 'changeOfAddress' is included, the following attributes are required: 'typeOfAddressChange', 'addressLine1', 'city', 'country'.", + "type": "object", + "nullable": true, + "additionalProperties": false, + "properties": { + "typeOfAddressChange": { + "description": "Temporary or Permanent change of address. If 'TEMPORARY', 'beginDate' and 'endDate' are required.", + "type": "string", + "enum": [ + "TEMPORARY", + "PERMANENT" + ], + "example": "PERMANENT" + }, + "addressLine1": { + "description": "Address line 1 for the Veteran's new address.", + "type": "string", + "pattern": "^([-a-zA-Z0-9'.,&#]([-a-zA-Z0-9'.,&# ])?)+$", + "maxLength": 20, + "example": "1234 Couch Street" + }, + "addressLine2": { + "description": "Address line 2 for the Veteran's new address.", + "type": "string", + "pattern": "^([-a-zA-Z0-9'.,&#]([-a-zA-Z0-9'.,&# ])?)+$", + "maxLength": 20, + "example": "Unit 4", + "nullable": true + }, + "addressLine3": { + "description": "Address line 3 for the Veteran's new address.", + "type": "string", + "pattern": "^([-a-zA-Z0-9'.,&#]([-a-zA-Z0-9'.,&# ])?)+$", + "maxLength": 20, + "example": "Room 1", + "nullable": true + }, + "city": { + "description": "City for the Veteran's new address.", + "type": "string", + "pattern": "^$|([a-zA-Z0-9\\'-'.# ]([a-zA-Z0-9\\'-'.# ])?)+$", + "minLength": 0, + "maxLength": 30, + "example": "Schenectady" + }, + "state": { + "description": "State for the Veteran's new address. Required if 'country' is 'USA'.", + "type": "string", + "pattern": "^$|^[a-z,A-Z]{2}$", + "example": "NY", + "nullable": true + }, + "country": { + "description": "Country for the Veteran's new address. Value must match the values returned by the /countries endpoint on the [Benefits Reference Data API](https://developer.va.gov/explore/benefits/docs/benefits_reference_data?version=current).", + "type": "string", + "maxLength": 1000, + "example": "USA" + }, + "zipFirstFive": { + "description": "Zip code (First 5 digits) for the Veteran's new address. Required if 'country' is 'USA'.", + "type": "string", + "pattern": "^$|^\\d{5}?$", + "example": "12345", + "nullable": true + }, + "zipLastFour": { + "description": "Zip code (Last 4 digits) for the Veteran's new address.", + "type": "string", + "nullable": true, + "pattern": "^$|^\\d{4}?$", + "example": "6789" + }, + "internationalPostalCode": { + "description": "International postal code for the Veteran's new address. Do not include if 'country' is 'USA'.", + "type": "string", + "maxLength": 16, + "nullable": true, + "pattern": "^[a-zA-Z0-9]*$" + }, + "dates": { + "type": "object", + "properties": { + "beginDate": { + "description": "Begin date for the Veteran's new address.", + "pattern": "^(?:[0-9]{4})-(?:0[1-9]|1[0-2])-(?:0[1-9]|[1-2][0-9]|3[0-1])$", + "type": "string", + "nullable": true, + "example": "2018-06-04" + }, + "endDate": { + "description": "Date in YYYY-MM-DD the changed address expires, if change is temporary.", + "type": "string", + "nullable": true, + "pattern": "^(?:[0-9]{4})-(?:0[1-9]|1[0-2])-(?:0[1-9]|[1-2][0-9]|3[0-1])$", + "example": "2018-06-04" + } + } } - ] - }, - { - "name": "Cancer - Musculoskeletal - Elbow", - "exposureOrEventOrInjury": "EXPOSURE", - "approximateDate": "2018-03-02", - "serviceRelevance": "ABCDEFG", - "disabilityActionType": "NEW", - "classificationCode": "9014", - "ratedDisabilityId": "ABCDEFGHIJKLMNOPQRSTUVWX", - "diagnosticCode": 249470, - "isRelatedToToxicExposure": true - }, - { - "name": "Cancer - Musculoskeletal - Knee", - "exposureOrEventOrInjury": "EXPOSURE", - "approximateDate": "2015", - "serviceRelevance": "ABCDEFG", - "disabilityActionType": "NEW", - "classificationCode": "9014", - "ratedDisabilityId": "ABCDEFGHIJKLMNOPQRSTUVWX", - "diagnosticCode": 249470, - "isRelatedToToxicExposure": true - } - ], - "treatments": [ - { - "beginDate": "2009-03", - "treatedDisabilityNames": [ - "Traumatic Brain Injury", - "Post Traumatic Stress Disorder (PTSD) Combat - Mental Disorders", - "Cancer - Musculoskeletal - Elbow" - ], - "center": { - "name": "Center One", - "city": "Decatur", - "state": "GA" - } - } - ], - "serviceInformation": { - "alternateNames": [ - "john jacob", - "johnny smith" - ], - "servicePeriods": [ - { - "serviceBranch": "Public Health Service", - "serviceComponent": "Active", - "activeDutyBeginDate": "2008-11-14", - "activeDutyEndDate": "2024-12-06", - "separationLocationCode": "98282" } - ], - "servedInActiveCombatSince911": "NO", - "reservesNationalGuardService": { - "component": "National Guard", - "obligationTermsOfService": { - "beginDate": "2019-06-04", - "endDate": "2020-06-04" - }, - "unitName": "National Guard Unit Name", - "unitAddress": "1243 pine court", - "unitPhone": { - "areaCode": "555", - "phoneNumber": "5555555" - }, - "receivingInactiveDutyTrainingPay": "YES" }, - "federalActivation": { - "activationDate": "2023-10-01", - "anticipatedSeparationDate": "2024-12-06" - }, - "confinements": [ - { - "approximateBeginDate": "2018-06-04", - "approximateEndDate": "2018-07-04" - }, - { - "approximateBeginDate": "2020-06", - "approximateEndDate": "2020-07" - } - ] - }, - "servicePay": { - "receivingMilitaryRetiredPay": "NO", - "futureMilitaryRetiredPay": "YES", - "futureMilitaryRetiredPayExplanation": "ABCDEFGHIJKLMNOPQRSTUVW", - "militaryRetiredPay": { - "branchOfService": "Army", - "monthlyAmount": 840 - }, - "retiredStatus": "PERMANENT_DISABILITY_RETIRED_LIST", - "favorMilitaryRetiredPay": false, - "receivedSeparationOrSeverancePay": "NO", - "separationSeverancePay": { - "datePaymentReceived": "2022-03-12", - "branchOfService": "Naval Academy", - "preTaxAmountReceived": 379 - }, - "favorTrainingPay": true - }, - "directDeposit": { - "noAccount": false, - "accountNumber": "ABCDEF", - "accountType": "CHECKING", - "financialInstitutionName": "Chase", - "routingNumber": "123123123" - }, - "claimantCertification": true - } - } - } - } - } - } - } - } - } - }, - "/veterans/{veteranId}/526/validate": { - "post": { - "summary": "Validates a 526 claim form submission.", - "tags": [ - "Disability Compensation Claims" - ], - "operationId": "post526ClaimValidate", - "security": [ - { - "productionOauth": [ - "system/claim.read", - "system/claim.write" - ] - }, - { - "sandboxOauth": [ - "system/claim.read", - "system/claim.write" - ] - }, - { - "bearer_token": [ - - ] - } - ], - "description": "Validates a request for a disability compensation claim submission (21-526EZ).\nThis endpoint can be used to test the request parameters for your /526 submission.\n", - "parameters": [ - { - "name": "veteranId", - "in": "path", - "required": true, - "example": "1012667145V762142", - "description": "ID of Veteran", - "schema": { - "type": "string" - } - } - ], - "responses": { - "200": { - "description": "Successful response with disability", - "content": { - "application/json": { - "example": { - "data": { - "type": "claims_api_auto_established_claim_validation", - "attributes": { - "status": "valid" - } - } - }, - "schema": { - "$schema": "http://json-schema.org/draft-04/schema#", - "type": "object", - "required": [ - "data" - ], - "properties": { - "data": { - "type": "object", - "additionalProperties": false, - "required": [ - "type", - "attributes" - ], - "properties": { - "type": { - "type": "string" - }, - "attributes": { - "type": "object", - "additionalProperties": false, - "required": [ - "status" - ], - "properties": { - "status": { - "type": "string", - "enum": [ - "valid" - ], - "description": "Return whether or not whether or not the payload is valid" - } - } - } - } - } - } - } - } - } - }, - "401": { - "description": "Unauthorized", - "content": { - "application/json": { - "example": { - "errors": [ - { - "title": "Not authorized", - "status": "401", - "detail": "Not authorized" - } - ] - }, - "schema": { - "required": [ - "errors" - ], - "properties": { - "errors": { - "type": "array", - "items": { - "additionalProperties": false, - "required": [ - "title", - "detail" - ], - "properties": { - "title": { - "type": "string", - "description": "HTTP error title" - }, - "detail": { - "type": "string", - "description": "HTTP error detail" - }, - "status": { - "type": "string", - "description": "HTTP error status code" - }, - "source": { + "homeless": { "type": "object", + "nullable": true, "additionalProperties": false, - "description": "Source of error", "properties": { - "pointer": { - "type": "string", - "description": "Pointer to source of error" - } - } - } - } - } - } - } - } - } - } - }, - "404": { - "description": "Resource not found", - "content": { - "application/json": { - "example": { - "errors": [ - { - "status": "404", - "title": "Resource not found", - "detail": "Unable to locate Veteran's ID/ICN in Master Person Index (MPI). Please submit an issue at ask.va.gov or call 1-800-MyVA411 (800-698-2411) for assistance." - } - ] - }, - "schema": { - "required": [ - "errors" - ], - "properties": { - "errors": { - "type": "array", - "items": { - "additionalProperties": false, - "required": [ - "title", - "detail" - ], - "properties": { - "title": { - "type": "string", - "description": "HTTP error title" - }, - "detail": { - "type": "string", - "description": "HTTP error detail" - }, - "status": { - "type": "string", - "description": "HTTP error status code" - } - } - } - } - } - } - } - } - }, - "422": { - "description": "Unprocessable entity", - "content": { - "application/json": { - "example": { - "errors": [ - { - "title": "Unprocessable entity", - "detail": "The property / did not contain the required key claimProcessType", - "status": "422", - "source": { - "pointer": "data/attributes/" - } - }, - { - "title": "Unprocessable entity", - "detail": "The property / did not contain the required key disabilities", - "status": "422", - "source": { - "pointer": "data/attributes/" - } - }, - { - "title": "Unprocessable entity", - "detail": "The property / did not contain the required key serviceInformation", - "status": "422", - "source": { - "pointer": "data/attributes/" - } - }, - { - "title": "Unprocessable entity", - "detail": "The property / did not contain the required key veteranIdentification", - "status": "422", - "source": { - "pointer": "data/attributes/" - } - } - ] - }, - "schema": { - "required": [ - "errors" - ], - "properties": { - "errors": { - "type": "array", - "items": { - "additionalProperties": false, - "required": [ - "title", - "status", - "detail" - ], - "properties": { - "status": { - "type": "string", - "description": "HTTP error code" - }, - "detail": { - "type": "string", - "description": "HTTP error detail" - }, - "source": { - "type": "object", - "pointer": { - "type": "string" - } - }, - "title": { - "type": "string" - } - } - } - } - } - } - } - } - } - }, - "requestBody": { - "content": { - "application/json": { - "schema": { - "type": "object", - "required": [ - "data" - ], - "properties": { - "data": { - "type": "object", - "required": [ - "attributes", - null - ], - "properties": { - "attributes": { - "$schema": "http://json-schema.org/draft-07/schema#", - "description": "Claims API 526 Schema", - "type": "object", - "additionalProperties": false, - "required": [ - "claimantCertification", - "claimProcessType", - "disabilities", - "serviceInformation", - "veteranIdentification" - ], - "properties": { - "claimProcessType": { - "type": "string", - "description": "Select type of claim program/process that applies to the Veteran.", - "enum": [ - "STANDARD_CLAIM_PROCESS", - "FDC_PROGRAM", - "BDD_PROGRAM" - ] - }, - "veteranIdentification": { - "type": "object", - "additionalProperties": false, - "required": [ - "mailingAddress", - "currentVaEmployee" - ], - "properties": { - "serviceNumber": { - "type": "string", - "description": "Service identification number", - "maxLength": 1000, - "nullable": true - }, - "veteranNumber": { - "description": "If there isn't a ten digit phone number in VBMS for the Veteran, the exams will not be ordered. Including the phone number is recommended to avoid claim processing delays.", - "type": "object", + "isCurrentlyHomeless": { + "type": "boolean", "nullable": true, - "properties": { - "telephone": { - "description": "Veteran's phone number.", - "type": "string", - "pattern": "^\\d{10}?$", - "example": "5555555555", - "nullable": true - }, - "internationalTelephone": { - "type": "string", - "description": "Veteran's international phone number.", - "example": "+44 20 1234 5678", - "maxLength": 1000, - "nullable": true - } - } + "description": "Is the Veteran currently homeless?" }, - "mailingAddress": { + "currentlyHomeless": { "type": "object", + "nullable": true, "additionalProperties": false, - "required": [ - "addressLine1", - "city", - "country" - ], "properties": { - "addressLine1": { - "description": "Address line 1 for the Veteran's current mailing address.", - "type": "string", - "pattern": "^([-a-zA-Z0-9'.,&#]([-a-zA-Z0-9'.,&# ])?)+$", - "maxLength": 20, - "example": "1234 Couch Street" - }, - "addressLine2": { - "description": "Address line 2 for the Veteran's current mailing address.", - "type": "string", - "pattern": "^([-a-zA-Z0-9'.,&#]([-a-zA-Z0-9'.,&# ])?)+$", - "maxLength": 20, - "example": "Unit 4", - "nullable": true - }, - "addressLine3": { - "description": "Address line 3 for the Veteran's current mailing address.", - "type": "string", - "pattern": "^([-a-zA-Z0-9'.,&#]([-a-zA-Z0-9'.,&# ])?)+$", - "maxLength": 20, - "example": "Room 1", - "nullable": true - }, - "city": { - "description": "City for the Veteran's current mailing address.", - "type": "string", - "pattern": "^$|([a-zA-Z0-9\\'-'.# ]([a-zA-Z0-9\\'-'.# ])?)+$", - "minLength": 1, - "maxLength": 30, - "example": "Schenectady" - }, - "state": { - "description": "State for the Veteran's current mailing address. Required if 'country' is 'USA'.", - "type": "string", - "pattern": "^[a-z,A-Z]{2}$", - "example": "NY", - "nullable": true - }, - "country": { - "description": "Country for the Veteran's current mailing address. Must match the values returned by the /countries endpoint on the [Benefits Reference Data API](https://developer.va.gov/explore/benefits/docs/benefits_reference_data?version=current).", - "type": "string", - "maxLength": 1000, - "example": "USA" - }, - "zipFirstFive": { - "description": "Zip code (First 5 digits) for the Veteran's current mailing address. Required if 'country' is 'USA'.", - "type": "string", - "pattern": "^\\d{5}?$", - "example": "12345", - "nullable": true - }, - "zipLastFour": { - "description": "Zip code (Last 4 digits) for the Veteran's current mailing address.", + "homelessSituationOptions": { + "description": "Veteran's living situation.", "type": "string", - "pattern": "^\\d{4}?$", - "example": "6789", - "nullable": true + "nullable": true, + "default": "other", + "enum": [ + "LIVING_IN_A_HOMELESS_SHELTER", + "NOT_CURRENTLY_IN_A_SHELTERED_ENVIRONMENT", + "STAYING_WITH_ANOTHER_PERSON", + "FLEEING_CURRENT_RESIDENCE", + "OTHER" + ], + "example": "FLEEING_CURRENT_RESIDENCE" }, - "internationalPostalCode": { - "description": "International postal code for the Veteran's current mailing address. Do not include if 'country' is 'USA'.", + "otherDescription": { + "description": "Explanation of living situation. Required if 'homelessSituationOptions' is 'OTHER'.", "type": "string", - "maxLength": 16, "nullable": true, - "pattern": "^[a-zA-Z0-9]*$" - } - } - }, - "emailAddress": { - "description": "Information associated with the Veteran's email address.", - "type": "object", - "nullable": true, - "properties": { - "email": { - "type": "string", - "pattern": "^[^\\s@]+@([^\\s@.,]+\\.)+[^\\s@.,]{2,}$", - "description": "The most current email address of the Veteran.", - "maxLength": 80, - "nullable": true - }, - "agreeToEmailRelatedToClaim": { - "type": "boolean", - "description": "Agreement to email information relating to this claim.", - "example": true, - "default": false, - "nullable": true + "maxLength": 500, + "example": "other living situation" } } }, - "currentVaEmployee": { - "type": "boolean", - "description": "Set to true if Veteran is a VA employee.", - "nullable": false - } - } - }, - "changeOfAddress": { - "description": "If 'changeOfAddress' is included, the following attributes are required: 'typeOfAddressChange', 'addressLine1', 'city', 'country'.", - "type": "object", - "nullable": true, - "additionalProperties": false, - "properties": { - "typeOfAddressChange": { - "description": "Temporary or Permanent change of address. If 'TEMPORARY', 'beginDate' and 'endDate' are required.", - "type": "string", - "enum": [ - "TEMPORARY", - "PERMANENT" - ], - "example": "PERMANENT" - }, - "addressLine1": { - "description": "Address line 1 for the Veteran's new address.", - "type": "string", - "pattern": "^([-a-zA-Z0-9'.,&#]([-a-zA-Z0-9'.,&# ])?)+$", - "maxLength": 20, - "example": "1234 Couch Street" - }, - "addressLine2": { - "description": "Address line 2 for the Veteran's new address.", - "type": "string", - "pattern": "^([-a-zA-Z0-9'.,&#]([-a-zA-Z0-9'.,&# ])?)+$", - "maxLength": 20, - "example": "Unit 4", - "nullable": true - }, - "addressLine3": { - "description": "Address line 3 for the Veteran's new address.", - "type": "string", - "pattern": "^([-a-zA-Z0-9'.,&#]([-a-zA-Z0-9'.,&# ])?)+$", - "maxLength": 20, - "example": "Room 1", - "nullable": true - }, - "city": { - "description": "City for the Veteran's new address.", - "type": "string", - "pattern": "^$|([a-zA-Z0-9\\'-'.# ]([a-zA-Z0-9\\'-'.# ])?)+$", - "minLength": 0, - "maxLength": 30, - "example": "Schenectady" - }, - "state": { - "description": "State for the Veteran's new address. Required if 'country' is 'USA'.", - "type": "string", - "pattern": "^$|^[a-z,A-Z]{2}$", - "example": "NY", - "nullable": true - }, - "country": { - "description": "Country for the Veteran's new address. Value must match the values returned by the /countries endpoint on the [Benefits Reference Data API](https://developer.va.gov/explore/benefits/docs/benefits_reference_data?version=current).", - "type": "string", - "maxLength": 1000, - "example": "USA" - }, - "zipFirstFive": { - "description": "Zip code (First 5 digits) for the Veteran's new address. Required if 'country' is 'USA'.", - "type": "string", - "pattern": "^$|^\\d{5}?$", - "example": "12345", - "nullable": true - }, - "zipLastFour": { - "description": "Zip code (Last 4 digits) for the Veteran's new address.", - "type": "string", - "nullable": true, - "pattern": "^$|^\\d{4}?$", - "example": "6789" - }, - "internationalPostalCode": { - "description": "International postal code for the Veteran's new address. Do not include if 'country' is 'USA'.", - "type": "string", - "maxLength": 16, - "nullable": true, - "pattern": "^[a-zA-Z0-9]*$" - }, - "dates": { - "type": "object", - "properties": { - "beginDate": { - "description": "Begin date for the Veteran's new address.", - "pattern": "^(?:[0-9]{4})-(?:0[1-9]|1[0-2])-(?:0[1-9]|[1-2][0-9]|3[0-1])$", - "type": "string", - "nullable": true, - "example": "2018-06-04" - }, - "endDate": { - "description": "Date in YYYY-MM-DD the changed address expires, if change is temporary.", - "type": "string", - "nullable": true, - "pattern": "^(?:[0-9]{4})-(?:0[1-9]|1[0-2])-(?:0[1-9]|[1-2][0-9]|3[0-1])$", - "example": "2018-06-04" - } - } - } - } - }, - "homeless": { - "type": "object", - "nullable": true, - "additionalProperties": false, - "properties": { - "isCurrentlyHomeless": { - "type": "boolean", - "nullable": true, - "description": "Is the Veteran currently homeless?" - }, - "currentlyHomeless": { - "type": "object", - "nullable": true, - "additionalProperties": false, - "properties": { - "homelessSituationOptions": { - "description": "Veteran's living situation.", - "type": "string", - "nullable": true, - "default": "other", - "enum": [ - "LIVING_IN_A_HOMELESS_SHELTER", - "NOT_CURRENTLY_IN_A_SHELTERED_ENVIRONMENT", - "STAYING_WITH_ANOTHER_PERSON", - "FLEEING_CURRENT_RESIDENCE", - "OTHER" - ], - "example": "FLEEING_CURRENT_RESIDENCE" - }, - "otherDescription": { - "description": "Explanation of living situation. Required if 'homelessSituationOptions' is 'OTHER'.", - "type": "string", - "nullable": true, - "maxLength": 500, - "example": "other living situation" - } - } - }, - "isAtRiskOfBecomingHomeless": { - "type": "boolean", - "nullable": true, - "description": "Is the Veteran currently at risk of becoming homeless?" - }, - "riskOfBecomingHomeless": { - "type": "object", - "nullable": true, - "additionalProperties": false, - "properties": { - "livingSituationOptions": { - "type": "string", - "nullable": true, - "default": "HOUSING_WILL_BE_LOST_IN_30_DAYS", - "enum": [ - "HOUSING_WILL_BE_LOST_IN_30_DAYS", - "LEAVING_PUBLICLY_FUNDED_SYSTEM_OF_CARE", - "OTHER" - ] - }, - "otherDescription": { - "description": "Explanation of living situation. Required if 'livingSituationOptions' is 'OTHER'.", - "type": "string", - "nullable": true, - "maxLength": 500, - "example": "other living situation" - } - } - }, - "pointOfContact": { - "description": "Individual in direct contact with Veteran.", - "type": "string", - "nullable": true, - "minLength": 1, - "maxLength": 100, - "pattern": "^([-a-zA-Z0-9/']+( ?))*$", - "example": "Jane Doe" - }, - "pointOfContactNumber": { - "type": "object", - "nullable": true, - "additionalProperties": false, - "properties": { - "telephone": { - "description": "Ten digit primary phone of point of contact.", - "type": "string", - "pattern": "^\\d{10}?$", - "example": "5555555", - "nullable": true - }, - "internationalTelephone": { - "description": "International phone of point of contact.", - "type": "string", - "example": "+44 20 1234 5678", - "maxLength": 1000, - "nullable": true - } - } - } - } - }, - "toxicExposure": { - "type": "object", - "nullable": true, - "properties": { - "gulfWarHazardService": { - "type": "object", - "nullable": true, - "description": "Toxic exposure related to the Gulf war.", - "properties": { - "servedInGulfWarHazardLocations": { - "type": "string", - "description": "Set to true if the Veteran served in any of the following Gulf War hazard locations: Iraq; Kuwait; Saudi Arabia; the neutral zone between Iraq and Saudi Arabia; Bahrain; Qatar; the United Arab Emirates; Oman; Yemen; Lebanon; Somalia; Afghanistan; Israel; Egypt; Turkey; Syria; Jordan; Djibouti; Uzbekistan; the Gulf of Aden; the Gulf of Oman; the Persian Gulf; the Arabian Sea; and the Red Sea.", - "example": "YES", - "enum": [ - "NO", - "YES" - ], - "nullable": true - }, - "serviceDates": { - "type": "object", - "nullable": true, - "description": "Date range for when the exposure happened.", - "properties": { - "beginDate": { - "type": "string", - "nullable": true, - "description": "Approximate begin date for serving in Gulf War hazard location.", - "pattern": "^(?:19|20)[0-9][0-9]$|^(?:19|20)[0-9][0-9]-(0[1-9]|1[0-2])$", - "example": "2018-06 or 2018" - }, - "endDate": { - "type": "string", - "nullable": true, - "description": "Approximate end date for serving in Gulf War hazard location.", - "pattern": "^(?:19|20)[0-9][0-9]$|^(?:19|20)[0-9][0-9]-(0[1-9]|1[0-2])$", - "example": "2018-06 or 2018" - } - } - } - } - }, - "herbicideHazardService": { - "description": "Toxic exposure related to herbicide (Agent Orange) hazards.", - "type": "object", - "nullable": true, - "properties": { - "servedInHerbicideHazardLocations": { - "type": "string", - "description": "Set to true if the Veteran served in any of the following herbicide/Agent Orange locations: Republic of Vietnam to include the 12 nautical mile territorial waters; Thailand at any United States or Royal Thai base; Laos; Cambodia at Mimot or Krek; Kampong Cham Province; Guam or American Samoa; or in the territorial waters thereof; Johnston Atoll or a ship that called at Johnston Atoll; Korean demilitarized zone; aboard (to include repeated operations and maintenance with) a C-123 aircraft known to have been used to spray an herbicide agent (during service in the Air Force and Air Force Reserves).", - "example": "YES", - "enum": [ - "NO", - "YES" - ], - "nullable": true - }, - "otherLocationsServed": { - "type": "string", - "nullable": true, - "pattern": "^$|([a-zA-Z0-9\"\\/&\\(\\)\\-'.,#\\[\\] ]([a-zA-Z0-9(\\)\\-'.,#\\[\\] ])?)+$", - "maxLength": 5000, - "description": "Other location(s) where Veteran served." - }, - "serviceDates": { - "description": "Date range for exposure in herbicide hazard location.", - "type": "object", - "nullable": true, - "properties": { - "beginDate": { - "type": "string", - "nullable": true, - "description": "Approximate begin date for serving in herbicide location.", - "pattern": "^(?:19|20)[0-9][0-9]$|^(?:19|20)[0-9][0-9]-(0[1-9]|1[0-2])$", - "example": "2018-06 or 2018" - }, - "endDate": { - "type": "string", - "nullable": true, - "description": "Approximate end date for serving in herbicide location.", - "pattern": "^(?:19|20)[0-9][0-9]$|^(?:19|20)[0-9][0-9]-(0[1-9]|1[0-2])$", - "example": "2018-06 or 2018" - } - } - } - } - }, - "additionalHazardExposures": { - "type": "object", - "nullable": true, - "description": "Additional hazardous exposures.", - "properties": { - "additionalExposures": { - "description": "Additional exposure incidents.", - "type": "array", - "nullable": true, - "uniqueItems": true, - "items": { - "type": "string", - "additionalProperties": false, - "enum": [ - "ASBESTOS", - "MUSTARD_GAS", - "RADIATION", - "SHIPBOARD_HAZARD_AND_DEFENSE", - "MILITARY_OCCUPATIONAL_SPECIALTY_RELATED_TOXIN", - "CONTAMINATED_WATER_AT_CAMP_LEJEUNE", - "OTHER" - ] - } - }, - "specifyOtherExposures": { - "type": "string", - "nullable": true, - "pattern": "^$|([a-zA-Z0-9\"\\/&\\(\\)\\-'.,#\\[\\] ]([a-zA-Z0-9(\\)\\-'.,#\\[\\] ])?)+$", - "maxLength": 5000, - "description": "Exposure to asbestos." - }, - "exposureDates": { - "type": "object", - "nullable": true, - "description": "Date range for when the exposure happened.", - "properties": { - "beginDate": { - "type": "string", - "nullable": true, - "description": "Approximate begin date for exposure.", - "pattern": "^(?:19|20)[0-9][0-9]$|^(?:19|20)[0-9][0-9]-(0[1-9]|1[0-2])$", - "example": "2018-06 or 2018" - }, - "endDate": { - "type": "string", - "nullable": true, - "description": "Approximate end date for exposure.", - "pattern": "^(?:19|20)[0-9][0-9]$|^(?:19|20)[0-9][0-9]-(0[1-9]|1[0-2])$", - "example": "2018-06 or 2018" - } - } - } - } - }, - "multipleExposures": { - "type": "array", - "nullable": true, - "minItems": 1, - "uniqueItems": true, - "items": { - "type": "object", - "additionalProperties": false, - "properties": { - "hazardExposedTo": { - "type": "string", - "nullable": true, - "pattern": "^([-a-zA-Z0-9'.,&# ])+$", - "maxLength": 1000, - "description": "Hazard the Veteran was exposed to." - }, - "exposureLocation": { - "type": "string", - "nullable": true, - "pattern": "^$|([a-zA-Z0-9\"\\/&\\(\\)\\-'.,#\\[\\] ]([a-zA-Z0-9(\\)\\-'.,#\\[\\] ])?)+$", - "maxLength": 1000, - "description": "Location where the exposure happened." - }, - "exposureDates": { - "type": "object", - "nullable": true, - "description": "Date range for when the exposure happened.", - "properties": { - "beginDate": { - "type": "string", - "nullable": true, - "description": "Approximate begin date for exposure.", - "pattern": "^(?:19|20)[0-9][0-9]$|^(?:19|20)[0-9][0-9]-(0[1-9]|1[0-2])$", - "example": "2018-06 or 2018" - }, - "endDate": { - "type": "string", - "nullable": true, - "description": "Approximate end date for exposure.", - "pattern": "^(?:19|20)[0-9][0-9]$|^(?:19|20)[0-9][0-9]-(0[1-9]|1[0-2])$", - "example": "2018-06 or 2018" - } - } - } - } - } - } - } - }, - "disabilities": { - "description": "Any current disabilities or symptoms the Veteran is claiming are related to their military service and/or are service-connected.", - "type": "array", - "minItems": 1, - "items": { - "type": "object", - "additionalProperties": false, - "required": [ - "disabilityActionType", - "name" - ], - "properties": { - "name": { - "description": "Name of the disability. The /disabilities endpoint on the [Benefits Reference Data API](https://developer.va.gov/explore/benefits/docs/benefits_reference_data?version=current) may be used to retrieve possible disability names.", - "type": "string", - "pattern": "^$|([a-zA-Z0-9\"\\/&\\(\\)\\-'.,#\\[\\] ]([a-zA-Z0-9(\\)\\-'.,#\\[\\] ])?)+$", - "example": "PTSD (post traumatic stress disorder)", - "maxLength": 255 - }, - "exposureOrEventOrInjury": { - "type": "string", - "description": "What caused the disability?", - "nullable": true, - "maxLength": 1000, - "examples": [ - "Agent Orange", - "radiation", - "burn pits" - ] - }, - "serviceRelevance": { - "description": "Explanation of how the disability(ies) relates to the in-service event/exposure/injury. If the disabilityActionType is 'NEW', the serviceRelevance is required.", - "type": "string", - "nullable": true, - "maxLength": 1000, - "example": "Heavy equipment operator in service." - }, - "approximateDate": { - "description": "Approximate date disability began. Date must be in the past. \n Format can be either YYYY-MM-DD or YYYY-MM or YYYY", - "type": "string", - "pattern": "^(?:[0-9]{4}(?:-(?!00)(?:0[1-9]|1[0-2])(?:-(?:0[1-9]|[1-2][0-9]|3[0-1]))?)?)$", - "example": "2018-03-02 or 2018-03 or 2018", - "nullable": true - }, - "disabilityActionType": { - "description": "Action type requested for the disability. If 'INCREASE' or 'NONE', then 'ratedDisabilityId' and 'diagnosticCode' should be included. 'NONE' should be used when including a secondary disability.", - "type": "string", - "enum": [ - "NONE", - "NEW", - "INCREASE" - ], - "example": "NEW" - }, - "classificationCode": { - "type": "string", - "description": "Classification code for the associated body system. Must match an active code returned by the /disabilities endpoint on the [Benefits Reference Data API](https://developer.va.gov/explore/benefits/docs/benefits_reference_data?version=current).", - "example": "249470", - "nullable": true - }, - "ratedDisabilityId": { - "description": "When submitting a contention with action type 'INCREASE', the previously rated disability id may be included.", - "type": "string", - "example": "1100583", - "nullable": true - }, - "diagnosticCode": { - "description": "If the disabilityActionType is 'NONE' or 'INCREASE', the diagnosticCode should correspond to an existing rated disability.", - "type": "integer", - "example": 9999, - "nullable": true - }, - "isRelatedToToxicExposure": { - "type": "boolean", - "description": "Is the disability related to toxic exposures? If true, related 'toxicExposure' must be included.", - "example": true, - "default": false, - "nullable": true - }, - "specialIssues": { - "type": "array", - "nullable": true, - "uniqueItems": true, - "items": { - "maxItems": 2, - "additionalProperties": false, - "type": "string", - "enum": [ - "POW", - "EMP" - ] - } - }, - "secondaryDisabilities": { - "description": "If secondaryDisability is included, the following attributes are required: 'secondaryDisability.name', 'secondaryDisability.disabilityActionType' and 'secondaryDisability.serviceRelevance'", - "type": "array", - "items": { - "type": "object", - "additionalProperties": false, - "properties": { - "name": { - "description": "Name of the disability. The /disabilities endpoint on the [Benefits Reference Data API](https://developer.va.gov/explore/benefits/docs/benefits_reference_data?version=current) may be used to retrieve possible disability names.", - "type": "string", - "pattern": "^$|([a-zA-Z0-9\"\\/&\\(\\)\\-'.,# ]([a-zA-Z0-9(\\)\\-'.,#\\[\\] ])?)+$", - "example": "PTSD (post traumatic stress disorder)", - "maxLength": 255 - }, - "exposureOrEventOrInjury": { - "type": "string", - "description": "What caused the disability?", - "nullable": true, - "maxLength": 1000, - "examples": [ - "Agent Orange", - "radiation", - "burn pits" - ] - }, - "serviceRelevance": { - "description": "Explanation of how the disability(ies) relates to the in-service event/exposure/injury.", - "type": "string", - "nullable": true, - "maxLength": 1000, - "example": "Heavy equipment operator in service." - }, - "disabilityActionType": { - "description": "The status of the secondary disability.", - "type": "string", - "example": "SECONDARY", - "enum": [ - "SECONDARY" - ] - }, - "approximateDate": { - "description": "Approximate date disability began. Date must be in the past. \n Format can be either YYYY-MM-DD or YYYY-MM or YYYY", - "type": "string", - "pattern": "^(?:[0-9]{4}(?:-(?!00)(?:0[1-9]|1[0-2])(?:-(?:0[1-9]|[1-2][0-9]|3[0-1]))?)?)$", - "example": "2018-03-02 or 2018-03 or 2018", - "nullable": true - }, - "classificationCode": { - "type": "string", - "description": "Classification code for the associated body system. Must match an active code returned by the /disabilities endpoint on the [Benefits Reference Data API](https://developer.va.gov/explore/benefits/docs/benefits_reference_data?version=current).", - "example": "249470", - "nullable": true - } - } - } - } - } - } - }, - "treatments": { - "description": "Identifies the Service Treatment information of the Veteran. The combination of treatedDisabilityName, center name, center city, and center state must be less than 1000 characters to successfully generate a PDF.", - "type": "array", - "nullable": true, - "uniqueItems": true, - "items": { - "type": "object", - "additionalProperties": false, - "properties": { - "beginDate": { - "description": "Begin date for treatment. If treatment began from 2005 to present, you do not need to provide dates. Each treatment begin date must be after the first 'servicePeriod.activeDutyBeginDate'.", - "type": "string", - "pattern": "^(?:19|20)[0-9][0-9]$|^(?:19|20)[0-9][0-9]-(0[1-9]|1[0-2])$", - "example": "2018-06 or 2018", - "nullable": true - }, - "treatedDisabilityNames": { - "description": "Name(s) of disabilities treated in this time frame.", - "type": "array", - "nullable": true, - "maxItems": 101, - "items": { - "type": "string", - "additionalProperties": false, - "example": [ - "PTSD (post traumatic stress disorder)", - "Trauma" - ] - } - }, - "center": { - "description": "VA Medical Center(s) and Department of Defense Military Treatment Facilities where the Veteran received treatment after discharge for any claimed disabilities.", - "type": "object", - "nullable": true, - "additionalProperties": false, - "properties": { - "name": { - "description": "Name of facility Veteran was treated in. The /treatment-centers endpoint on the [Benefits Reference Data API](https://developer.va.gov/explore/benefits/docs/benefits_reference_data?version=current) may be used to retrieve possible treatment center names.", - "type": "string", - "nullable": true, - "pattern": "([a-zA-Z0-9\"/&()\\'-'.,# ]([a-zA-Z0-9()\\'-'.,# ])?)+$", - "example": "Private Facility 2", - "minLength": 1, - "maxLength": 100 - }, - "city": { - "description": "City of treatment facility.", - "type": "string", - "pattern": "([a-zA-Z0-9\\-'.# ]([a-zA-Z0-9\\-'.# ])?)+$", - "example": "Portland", - "nullable": true, - "minLength": 0, - "maxLength": 30 - }, - "state": { - "description": "State of treatment facility.", - "type": "string", - "pattern": "^$|^[a-z,A-Z]{2}$", - "example": "OR", - "nullable": true - } - } - } - } - } - }, - "serviceInformation": { - "type": "object", - "additionalProperties": false, - "required": [ - "servicePeriods" - ], - "properties": { - "alternateNames": { - "description": "List any other names under which the Veteran served, if applicable.", - "type": "array", - "nullable": true, - "maxItems": 100, - "uniqueItems": true, - "items": { - "type": "string", - "additionalProperties": false, - "examples": [ - "jane", - "janey lee", - "jane lee MacDonald" - ] - } - }, - "servicePeriods": { - "description": "Identifies the Service dates and Branch the Veteran served in.", - "type": "array", - "minItems": 1, - "items": { - "type": "object", - "required": [ - "serviceBranch", - "serviceComponent", - "activeDutyBeginDate", - "activeDutyEndDate" - ], - "properties": { - "serviceBranch": { - "description": "Branch of service during period. The /service-branches endpoint on the [Benefits Reference Data API](https://developer.va.gov/explore/benefits/docs/benefits_reference_data?version=current) may be used to retrieve list of possible service branches.", - "type": "string", - "maxLength": 1000, - "example": "Air Force" - }, - "serviceComponent": { - "type": "string", - "description": "", - "enum": [ - "Active", - "Reserves", - "National Guard" - ] - }, - "activeDutyBeginDate": { - "description": "Date started active duty.", - "type": "string", - "pattern": "^(?:[0-9]{4})-(?:0[1-9]|1[0-2])-(?:0[1-9]|[1-2][0-9]|3[0-1])$", - "example": "2018-06-06" - }, - "activeDutyEndDate": { - "description": "Date completed active duty.", - "type": "string", - "pattern": "^(?:[0-9]{4})-(?:0[1-9]|1[0-2])-(?:0[1-9]|[1-2][0-9]|3[0-1])$", - "example": "2018-06-06" - }, - "separationLocationCode": { - "description": "Location code for the facility the Veteran plans to separate from. Code must match the values returned by the /intake-sites endpoint on the [Benefits reference Data API](https://developer.va.gov/explore/benefits/docs/benefits_reference_data?version=current).", - "type": "string", - "nullable": true, - "example": "98283" - } - } - } - }, - "servedInActiveCombatSince911": { - "type": "string", - "enum": [ - "YES", - "NO" - ], - "description": "Did Veteran serve in a combat zone since 9-11-2001?", - "example": "YES", - "nullable": true - }, - "reservesNationalGuardService": { - "type": "object", - "nullable": true, - "additionalProperties": false, - "properties": { - "component": { - "type": "string", - "nullable": true, - "description": "", - "enum": [ - "Reserves", - "National Guard" - ] - }, - "obligationTermsOfService": { - "type": "object", - "nullable": true, - "description": "If 'obligationTermsOfService' is included, the following attributes are required: 'beginDate ' and 'endDate'.", - "additionalProperties": false, - "properties": { - "beginDate": { - "type": "string", - "nullable": true, - "pattern": "^(?:[0-9]{4})-(?:0[1-9]|1[0-2])-(?:0[1-9]|[1-2][0-9]|3[0-1])$", - "example": "2018-06-06" - }, - "endDate": { - "type": "string", - "nullable": true, - "pattern": "^(?:[0-9]{4})-(?:0[1-9]|1[0-2])-(?:0[1-9]|[1-2][0-9]|3[0-1])$", - "example": "2018-06-06" - } - } - }, - "unitName": { - "type": "string", - "nullable": true, - "maxLength": 1000, - "pattern": "^$|([a-zA-Z0-9\\-'.,# ][a-zA-Z0-9\\-'.,# ]?)*$" - }, - "unitAddress": { - "type": "string", - "maxLength": 1000, - "pattern": "^$|^([-a-zA-Z0-9'.,&# ])+$", - "nullable": true - }, - "unitPhone": { - "type": "object", - "nullable": true, - "additionalProperties": false, - "properties": { - "areaCode": { - "type": "string", - "nullable": true, - "maxLength": 3, - "pattern": "^$|^\\d{3}$", - "example": "555" - }, - "phoneNumber": { - "type": "string", - "nullable": true, - "maxLength": 20, - "example": "5555555" - } - } - }, - "receivingInactiveDutyTrainingPay": { - "type": "string", - "enum": [ - "YES", - "NO" - ], - "nullable": true, - "example": "YES" - } - } - }, - "federalActivation": { - "description": "If federalActivation is present then reservesNationalGuardService.obligationTermsOfService.beginDate, reservesNationalGuardService.obligationTermsOfService.endDate and reservesNationalGuardService.unitName are required", - "type": "object", - "nullable": true, - "additionalProperties": false, - "properties": { - "activationDate": { - "description": "Date cannot be in the future and must be after the earliest servicePeriod.activeDutyBeginDate.", - "type": "string", - "pattern": "^(?:[0-9]{4})-(?:0[1-9]|1[0-2])-(?:0[1-9]|[1-2][0-9]|3[0-1])$", - "example": "2018-06-06", - "nullable": true - }, - "anticipatedSeparationDate": { - "description": "Anticipated date of separation. Date must be in the future.", - "type": "string", - "pattern": "^(?:[0-9]{4})-(?:0[1-9]|1[0-2])-(?:0[1-9]|[1-2][0-9]|3[0-1])$", - "example": "2018-06-06", - "nullable": true - } - } - }, - "confinements": { - "type": "array", - "nullable": true, - "uniqueItems": true, - "items": { - "additionalProperties": false, - "type": "object", - "properties": { - "approximateBeginDate": { - "description": "The approximateBeginDate must be after the earliest servicePeriod activeDutyBeginDate.", - "type": "string", - "nullable": false, - "pattern": "^(?:[0-9]{4})-(?:0[1-9]|1[0-2])-(?:0[1-9]|[1-2][0-9]|3[0-1])$|(?:[0-9]{4})-(?:0[1-9]|1[0-2])$", - "example": "2018-06-06 or 2018-06" - }, - "approximateEndDate": { - "type": "string", - "nullable": false, - "pattern": "^(?:[0-9]{4})-(?:0[1-9]|1[0-2])-(?:0[1-9]|[1-2][0-9]|3[0-1])$|(?:[0-9]{4})-(?:0[1-9]|1[0-2])$", - "example": "2018-06-06 or 2018-06" - } - } - } - } - } - }, - "servicePay": { - "type": "object", - "nullable": true, - "additionalProperties": false, - "properties": { - "receivingMilitaryRetiredPay": { - "description": "Is the Veteran receiving military retired pay?", - "type": "string", - "enum": [ - "YES", - "NO" - ], - "example": "YES", - "nullable": true - }, - "futureMilitaryRetiredPay": { - "description": "Will the Veteran receive military retired pay pay in future? \n If true, then 'futurePayExplanation' is required.", - "type": "string", - "enum": [ - "YES", - "NO" - ], - "example": "YES", - "nullable": true - }, - "futureMilitaryRetiredPayExplanation": { - "description": "Explains why future pay will be received.", - "type": "string", - "maxLength": 1000, - "example": "Will be retiring soon.", - "nullable": true - }, - "militaryRetiredPay": { - "type": "object", - "nullable": true, - "description": "", - "properties": { - "branchOfService": { - "description": "Branch of service. The /service-branches endpoint on the [Benefits Reference Data API](https://developer.va.gov/explore/benefits/docs/benefits_reference_data?version=current) may be used to retrieve list of possible service branches.", - "type": "string", - "maxLength": 1000, - "nullable": true, - "example": "Air Force" - }, - "monthlyAmount": { - "description": "Amount being received.", - "type": "integer", - "nullable": true, - "minimum": 1, - "maximum": 999999, - "example": 100 - } - } - }, - "retiredStatus": { - "type": "string", - "nullable": true, - "description": "", - "enum": [ - "RETIRED", - "TEMPORARY_DISABILITY_RETIRED_LIST", - "PERMANENT_DISABILITY_RETIRED_LIST" - ] - }, - "favorMilitaryRetiredPay": { - "description": "Is the Veteran waiving VA benefits to retain military retired pay? See item 26 on form 21-526EZ for more details.", - "type": "boolean", - "nullable": true, - "example": true, - "default": false - }, - "receivedSeparationOrSeverancePay": { - "description": "Has the Veteran ever received separation pay, disability severance pay, or any other lump sum payment from their branch of service?", - "type": "string", - "enum": [ - "YES", - "NO" - ], - "example": "YES", - "nullable": true - }, - "separationSeverancePay": { - "type": "object", - "nullable": true, - "description": "", - "properties": { - "datePaymentReceived": { - "description": "Approximate date separation pay was received. \n Format can be either YYYY-MM-DD or YYYY-MM or YYYY", - "type": "string", - "pattern": "^(?:[0-9]{4})-(?:0[1-9]|1[0-2])-(?:0[1-9]|[1-2][0-9]|3[0-1])$|(?:[0-9]{4})$|(?:[0-9]{4})-(?:0[1-9]|1[0-2])$", - "example": "2018-03-02 or 2018-03 or 2018" - }, - "branchOfService": { - "description": "Branch of service. The /service-branches endpoint on the [Benefits Reference Data API](https://developer.va.gov/explore/benefits/docs/benefits_reference_data?version=current) may be used to retrieve list of possible service branches.", - "type": "string", - "nullable": true, - "maxLength": 1000, - "example": "Air Force" - }, - "preTaxAmountReceived": { - "description": "Amount being received.", - "type": "integer", - "nullable": true, - "minimum": 1, - "maximum": 999999, - "example": 100 - } - } - }, - "favorTrainingPay": { - "description": "Is the Veteran waiving VA benefits to retain training pay? See item 28 on form 21-526EZ for more details. ", - "type": "boolean", - "nullable": true, - "example": true, - "default": false - } - } - }, - "directDeposit": { - "type": "object", - "nullable": true, - "additionalProperties": false, - "description": "If direct deposit information is included, the following attributes are required: accountType, accountNumber, routingNumber.", - "properties": { - "noAccount": { - "type": "boolean", - "nullable": true, - "description": "Claimant certifies that they do not have an account with a financial institution or certified payment agent.", - "default": false - }, - "accountNumber": { - "description": "Account number for the direct deposit.", - "pattern": "^(?:[a-zA-Z0-9-]{4,1000})?$", - "type": "string", - "maxLength": 1000, - "nullable": true, - "example": "123123123123" - }, - "accountType": { - "description": "Account type for the direct deposit.", - "type": "string", - "nullable": true, - "example": "CHECKING", - "enum": [ - "CHECKING", - "SAVINGS" - ] - }, - "financialInstitutionName": { - "description": "Provide the name of the financial institution where the Veteran wants the direct deposit.", - "maxLength": 1000, - "type": "string", - "nullable": true, - "example": "Some Bank" - }, - "routingNumber": { - "description": "Routing number for the direct deposit.", - "type": "string", - "maxLength": 1000, - "nullable": true, - "pattern": "^$|^\\d{0,1000}$", - "example": "123123123" - } - } - }, - "claimantCertification": { - "type": "boolean", - "description": "Claimant certifies and authorizes release of information.", - "default": false - }, - "claimNotes": { - "type": "string", - "description": "An optional notes section.", - "maxLength": 4000 - } - } - } - } - } - }, - "example": { - "data": { - "type": "form/526", - "attributes": { - "claimProcessType": "STANDARD_CLAIM_PROCESS", - "claimNotes": "Some things that are important to know, and are not included in any other place.", - "veteranIdentification": { - "serviceNumber": "123456789", - "veteranNumber": { - "telephone": "5555555555" - }, - "mailingAddress": { - "addressLine1": "123 Main Street", - "addressLine2": "Unit 1", - "addressLine3": "Room 2", - "city": "Schenectady", - "state": "NY", - "country": "USA", - "zipFirstFive": "12345", - "zipLastFour": "1234" - }, - "emailAddress": { - "email": "valid@somedomain.com", - "agreeToEmailRelatedToClaim": true - }, - "currentVaEmployee": false - }, - "changeOfAddress": { - "typeOfAddressChange": "TEMPORARY", - "addressLine1": "456 Main Street", - "addressLine2": "Unit 3", - "addressLine3": "Room 4", - "city": "Schenectady", - "state": "NY", - "country": "USA", - "zipFirstFive": "12345", - "zipLastFour": "9897", - "dates": { - "beginDate": "2025-06-04", - "endDate": "2026-06-04" - } - }, - "homeless": { - "currentlyHomeless": { - "homelessSituationOptions": "OTHER", - "otherDescription": "Other living situation" - }, - "pointOfContact": "John Doe", - "pointOfContactNumber": { - "telephone": "5555555555" - } - }, - "toxicExposure": { - "gulfWarHazardService": { - "servedInGulfWarHazardLocations": "NO" - }, - "herbicideHazardService": { - "servedInHerbicideHazardLocations": "YES", - "otherLocationsServed": "Other locations served", - "serviceDates": { - "beginDate": "1972-05", - "endDate": "1980-10" - } - }, - "additionalHazardExposures": { - "additionalExposures": [ - "OTHER" - ], - "specifyOtherExposures": "Agent Orange", - "exposureDates": { - "beginDate": "1972-05", - "endDate": "1980-10" - } - }, - "multipleExposures": [ - { - "hazardExposedTo": "Agent Orange", - "exposureLocation": "Vietnam", - "exposureDates": { - "beginDate": "1972-05", - "endDate": "1973-01" - } - }, - { - "hazardExposedTo": "Agent Orange", - "exposureLocation": "Vietnam", - "exposureDates": { - "beginDate": "1979-04", - "endDate": "1980-10" - } - } - ] - }, - "disabilities": [ - { - "name": "Diabetes", - "exposureOrEventOrInjury": "Agent Orange", - "serviceRelevance": "Service in Vietnam War", - "approximateDate": "1975-05", - "disabilityActionType": "NEW", - "isRelatedToToxicExposure": true - }, - { - "name": "Hearing Loss", - "exposureOrEventOrInjury": "Noise", - "serviceRelevance": "Heavy equipment operator in service", - "approximateDate": "1968-07", - "disabilityActionType": "INCREASE", - "classificationCode": "8987", - "ratedDisabilityId": "1234567", - "diagnosticCode": 5678, - "isRelatedToToxicExposure": false - } - ], - "treatments": [ - { - "beginDate": "2021-04", - "treatedDisabilityNames": [ - "Diabetes" - ], - "center": { - "name": "ATLANTA VA MEDICAL CENTER", - "state": "GA", - "city": "ATLANTA" - } - }, - { - "beginDate": "1996-03", - "treatedDisabilityNames": [ - "Hearing Loss" - ], - "center": { - "name": "ATLANTA VA MEDICAL CENTER", - "state": "GA", - "city": "ATLANTA" - } - } - ], - "serviceInformation": { - "alternateNames": [ - "Jon Doe", - "Jane Doe" - ], - "servicePeriods": [ - { - "serviceBranch": "Air Force", - "serviceComponent": "Active", - "activeDutyBeginDate": "1964-11-14", - "activeDutyEndDate": "1980-10-30", - "separationLocationCode": "98289" - } - ], - "servedInActiveCombatSince911": "NO", - "reservesNationalGuardService": { - "component": "National Guard", - "obligationTermsOfService": { - "beginDate": "1990-11-24", - "endDate": "1995-11-17" - }, - "unitName": "National Guard Unit Name", - "unitAddress": "1243 Main Street", - "unitPhone": { - "areaCode": "555", - "phoneNumber": "5555555" - }, - "receivingInactiveDutyTrainingPay": "YES" - }, - "confinements": [ - { - "approximateBeginDate": "1970-06-11", - "approximateEndDate": "1970-09-11" - } - ] - }, - "servicePay": { - "receivingMilitaryRetiredPay": "NO", - "futureMilitaryRetiredPay": "YES", - "futureMilitaryRetiredPayExplanation": "Explanation of future military retired pay", - "militaryRetiredPay": { - "branchOfService": "Air Force", - "monthlyAmount": 240 - }, - "retiredStatus": "PERMANENT_DISABILITY_RETIRED_LIST", - "favorMilitaryRetiredPay": false, - "receivedSeparationOrSeverancePay": "YES", - "separationSeverancePay": { - "datePaymentReceived": "2018-07-31", - "branchOfService": "Air Force", - "preTaxAmountReceived": 179 - }, - "favorTrainingPay": false - }, - "directDeposit": { - "accountNumber": "123123123123", - "accountType": "CHECKING", - "financialInstitutionName": "Chase", - "routingNumber": "123456789" - }, - "claimantCertification": true - } - } - } - } - } - }, - "required": true - } - } - }, - "/veterans/{veteranId}/526/{id}/attachments": { - "post": { - "summary": "Upload documents supporting a 526 claim", - "tags": [ - "Disability Compensation Claims" - ], - "operationId": "upload526Attachments", - "security": [ - { - "productionOauth": [ - "system/claim.read", - "system/claim.write" - ] - }, - { - "sandboxOauth": [ - "system/claim.read", - "system/claim.write" - ] - }, - { - "bearer_token": [ - - ] - } - ], - "description": "Uploads supporting documents related to a disability compensation claim. This endpoint accepts a document binary PDF as part of a multi-part payload.\n", - "parameters": [ - { - "name": "id", - "in": "path", - "required": true, - "description": "UUID given when Disability Claim was submitted", - "schema": { - "type": "string" - } - }, - { - "name": "veteranId", - "in": "path", - "required": true, - "example": "1012667145V762142", - "description": "ID of Veteran", - "schema": { - "type": "string" - } - } - ], - "responses": { - "202": { - "description": "upload response", - "content": { - "application/json": { - "example": { - "data": { - "id": "a114a642-55bf-4aa3-ac74-82b5a17a8db0", - "type": "forms/526", - "attributes": { - "claimProcessType": "STANDARD_CLAIM_PROCESS", - "claimNotes": "Some things that are important to know, and are not included in any other place.", - "veteranIdentification": { - "serviceNumber": "123456789", - "veteranNumber": { - "telephone": "5555555555", - "internationalTelephone": "+44 20 1234 5678" - }, - "mailingAddress": { - "addressLine1": "1234 Couch Street", - "addressLine2": "Unit 4", - "addressLine3": "Room 1", - "city": "Schenectady", - "state": "NY", - "country": "USA", - "zipFirstFive": "12345", - "zipLastFour": "1234" - }, - "emailAddress": { - "email": "valid@somedomain.com", - "agreeToEmailRelatedToClaim": true - }, - "currentVaEmployee": false - }, - "changeOfAddress": { - "typeOfAddressChange": "TEMPORARY", - "addressLine1": "10 Peach St", - "addressLine2": "Unit 4", - "addressLine3": "Room 1", - "city": "Schenectady", - "state": "NY", - "country": "USA", - "zipFirstFive": "12345", - "zipLastFour": "9897", - "dates": { - "beginDate": "2023-06-04", - "endDate": "2023-12-04" - } - }, - "homeless": { - "isCurrentlyHomeless": true, - "currentlyHomeless": { - "homelessSituationOptions": "FLEEING_CURRENT_RESIDENCE", - "otherDescription": "ABCDEFGHIJKLM" - }, - "isAtRiskOfBecomingHomeless": false, - "pointOfContact": "john stewart", - "pointOfContactNumber": { - "telephone": "5555555555", - "internationalTelephone": "+44 20 1234 5678" - } - }, - "toxicExposure": { - "gulfWarHazardService": { - "servedInGulfWarHazardLocations": "YES", - "serviceDates": { - "beginDate": "2018-07", - "endDate": "2018-08" - } - }, - "herbicideHazardService": { - "servedInHerbicideHazardLocations": "YES", - "otherLocationsServed": "ABCDEFGHIJKLM", - "serviceDates": { - "beginDate": "2018-07", - "endDate": "2018-08" - } - }, - "additionalHazardExposures": { - "additionalExposures": [ - "ASBESTOS", - "SHIPBOARD_HAZARD_AND_DEFENSE" - ], - "specifyOtherExposures": "Other exposure details", - "exposureDates": { - "beginDate": "2018-07", - "endDate": "2018-08" - } - }, - "multipleExposures": [ - { - "hazardExposedTo": "RADIATION", - "exposureLocation": "Guam", - "exposureDates": { - "beginDate": "2012-12", - "endDate": "2013-07" - } - } - ] - }, - "disabilities": [ - { - "name": "Traumatic Brain Injury", - "exposureOrEventOrInjury": "EXPOSURE", - "serviceRelevance": "ABCDEFG", - "approximateDate": "2018-03-11", - "disabilityActionType": "NEW", - "classificationCode": "9014", - "ratedDisabilityId": "ABCDEFGHIJKLMNOPQRSTUVWX", - "diagnosticCode": 9020, - "isRelatedToToxicExposure": true, - "secondaryDisabilities": [ - { - "name": "Post Traumatic Stress Disorder (PTSD) Combat - Mental Disorders", - "exposureOrEventOrInjury": "EXPOSURE", - "serviceRelevance": "ABCDEFGHIJKLMNOPQ", - "disabilityActionType": "SECONDARY", - "approximateDate": "2018-03-12", - "classificationCode": "9014" + "isAtRiskOfBecomingHomeless": { + "type": "boolean", + "nullable": true, + "description": "Is the Veteran currently at risk of becoming homeless?" + }, + "riskOfBecomingHomeless": { + "type": "object", + "nullable": true, + "additionalProperties": false, + "properties": { + "livingSituationOptions": { + "type": "string", + "nullable": true, + "default": "HOUSING_WILL_BE_LOST_IN_30_DAYS", + "enum": [ + "HOUSING_WILL_BE_LOST_IN_30_DAYS", + "LEAVING_PUBLICLY_FUNDED_SYSTEM_OF_CARE", + "OTHER" + ] + }, + "otherDescription": { + "description": "Explanation of living situation. Required if 'livingSituationOptions' is 'OTHER'.", + "type": "string", + "nullable": true, + "maxLength": 500, + "example": "other living situation" + } + } + }, + "pointOfContact": { + "description": "Individual in direct contact with Veteran.", + "type": "string", + "nullable": true, + "minLength": 1, + "maxLength": 100, + "pattern": "^([-a-zA-Z0-9/']+( ?))*$", + "example": "Jane Doe" + }, + "pointOfContactNumber": { + "type": "object", + "nullable": true, + "additionalProperties": false, + "properties": { + "telephone": { + "description": "Ten digit primary phone of point of contact.", + "type": "string", + "pattern": "^\\d{10}?$", + "example": "5555555", + "nullable": true + }, + "internationalTelephone": { + "description": "International phone of point of contact.", + "type": "string", + "example": "+44 20 1234 5678", + "maxLength": 1000, + "nullable": true + } + } + } } - ] - }, - { - "name": "Cancer - Musculoskeletal - Elbow", - "exposureOrEventOrInjury": "EXPOSURE", - "approximateDate": "2018-03-02", - "serviceRelevance": "ABCDEFG", - "disabilityActionType": "NEW", - "classificationCode": "9014", - "ratedDisabilityId": "ABCDEFGHIJKLMNOPQRSTUVWX", - "diagnosticCode": 249470, - "isRelatedToToxicExposure": true - }, - { - "name": "Cancer - Musculoskeletal - Knee", - "exposureOrEventOrInjury": "EXPOSURE", - "approximateDate": "2015", - "serviceRelevance": "ABCDEFG", - "disabilityActionType": "NEW", - "classificationCode": "9014", - "ratedDisabilityId": "ABCDEFGHIJKLMNOPQRSTUVWX", - "diagnosticCode": 249470, - "isRelatedToToxicExposure": true - } - ], - "treatments": [ - { - "beginDate": "2009-03", - "treatedDisabilityNames": [ - "Traumatic Brain Injury", - "Post Traumatic Stress Disorder (PTSD) Combat - Mental Disorders", - "Cancer - Musculoskeletal - Elbow" - ], - "center": { - "name": "Center One", - "city": "Decatur", - "state": "GA" - } - } - ], - "serviceInformation": { - "alternateNames": [ - "john jacob", - "johnny smith" - ], - "servicePeriods": [ - { - "serviceBranch": "Public Health Service", - "serviceComponent": "Active", - "activeDutyBeginDate": "2008-11-14", - "activeDutyEndDate": "2023-10-30", - "separationLocationCode": "98282" - } - ], - "servedInActiveCombatSince911": "NO", - "reservesNationalGuardService": { - "component": "National Guard", - "obligationTermsOfService": { - "beginDate": "2019-06-04", - "endDate": "2020-06-04" - }, - "unitName": "National Guard Unit Name", - "unitAddress": "1243 pine court", - "unitPhone": { - "areaCode": "555", - "phoneNumber": "5555555" - }, - "receivingInactiveDutyTrainingPay": "YES" - }, - "federalActivation": { - "activationDate": "2023-10-01", - "anticipatedSeparationDate": "2025-10-31" - }, - "confinements": [ - { - "approximateBeginDate": "2018-06-04", - "approximateEndDate": "2018-07-04" }, - { - "approximateBeginDate": "2020-06", - "approximateEndDate": "2020-07" - } - ] - }, - "servicePay": { - "receivingMilitaryRetiredPay": "NO", - "futureMilitaryRetiredPay": "YES", - "futureMilitaryRetiredPayExplanation": "ABCDEFGHIJKLMNOPQRSTUVW", - "militaryRetiredPay": { - "branchOfService": "Army", - "monthlyAmount": 840 - }, - "retiredStatus": "PERMANENT_DISABILITY_RETIRED_LIST", - "favorMilitaryRetiredPay": false, - "receivedSeparationOrSeverancePay": "NO", - "separationSeverancePay": { - "datePaymentReceived": "2022-03-12", - "branchOfService": "Naval Academy", - "preTaxAmountReceived": 379 - }, - "favorTrainingPay": true - }, - "directDeposit": { - "noAccount": false, - "accountNumber": "ABCDEF", - "accountType": "CHECKING", - "financialInstitutionName": "Chase", - "routingNumber": "123123123" - }, - "claimantCertification": true - } - } - }, - "schema": { - "$schema": "http://json-schema.org/draft-04/schema#", - "type": "object", - "required": [ - "data" - ], - "properties": { - "data": { - "type": "object", - "additionalProperties": false, - "required": [ - "id", - "type", - "attributes" - ], - "properties": { - "id": { - "type": "string", - "description": "Internal vets-api Claim ID" - }, - "type": { - "type": "string" - }, - "attributes": { - "type": "object", - "additionalProperties": false, - "required": [ - "claimProcessType", - "veteranIdentification", - "disabilities", - "serviceInformation", - "claimantCertification" - ], - "properties": { - "claimProcessType": { - "type": "string" - }, - "veteranIdentification": { - "type": "object", - "properties": { - "serviceNumber": { - "type": "string" - }, - "veteranNumber": { - "type": "object", - "properties": { - "telephone": { - "type": "string" - }, - "internationalTelephone": { - "type": "string" + "toxicExposure": { + "type": "object", + "nullable": true, + "properties": { + "gulfWarHazardService": { + "type": "object", + "nullable": true, + "description": "Toxic exposure related to the Gulf war.", + "properties": { + "servedInGulfWarHazardLocations": { + "type": "string", + "description": "Set to true if the Veteran served in any of the following Gulf War hazard locations: Iraq; Kuwait; Saudi Arabia; the neutral zone between Iraq and Saudi Arabia; Bahrain; Qatar; the United Arab Emirates; Oman; Yemen; Lebanon; Somalia; Afghanistan; Israel; Egypt; Turkey; Syria; Jordan; Djibouti; Uzbekistan; the Gulf of Aden; the Gulf of Oman; the Persian Gulf; the Arabian Sea; and the Red Sea.", + "example": "YES", + "enum": [ + "NO", + "YES" + ], + "nullable": true + }, + "serviceDates": { + "type": "object", + "nullable": true, + "description": "Date range for when the exposure happened.", + "properties": { + "beginDate": { + "type": "string", + "nullable": true, + "description": "Approximate begin date for serving in Gulf War hazard location.", + "pattern": "^(?:19|20)[0-9][0-9]$|^(?:19|20)[0-9][0-9]-(0[1-9]|1[0-2])$", + "example": "2018-06 or 2018" + }, + "endDate": { + "type": "string", + "nullable": true, + "description": "Approximate end date for serving in Gulf War hazard location.", + "pattern": "^(?:19|20)[0-9][0-9]$|^(?:19|20)[0-9][0-9]-(0[1-9]|1[0-2])$", + "example": "2018-06 or 2018" + } + } + } + } + }, + "herbicideHazardService": { + "description": "Toxic exposure related to herbicide (Agent Orange) hazards.", + "type": "object", + "nullable": true, + "properties": { + "servedInHerbicideHazardLocations": { + "type": "string", + "description": "Set to true if the Veteran served in any of the following herbicide/Agent Orange locations: Republic of Vietnam to include the 12 nautical mile territorial waters; Thailand at any United States or Royal Thai base; Laos; Cambodia at Mimot or Krek; Kampong Cham Province; Guam or American Samoa; or in the territorial waters thereof; Johnston Atoll or a ship that called at Johnston Atoll; Korean demilitarized zone; aboard (to include repeated operations and maintenance with) a C-123 aircraft known to have been used to spray an herbicide agent (during service in the Air Force and Air Force Reserves).", + "example": "YES", + "enum": [ + "NO", + "YES" + ], + "nullable": true + }, + "otherLocationsServed": { + "type": "string", + "nullable": true, + "pattern": "^$|([a-zA-Z0-9\"\\/&\\(\\)\\-'.,#\\[\\] ]([a-zA-Z0-9(\\)\\-'.,#\\[\\] ])?)+$", + "maxLength": 5000, + "description": "Other location(s) where Veteran served." + }, + "serviceDates": { + "description": "Date range for exposure in herbicide hazard location.", + "type": "object", + "nullable": true, + "properties": { + "beginDate": { + "type": "string", + "nullable": true, + "description": "Approximate begin date for serving in herbicide location.", + "pattern": "^(?:19|20)[0-9][0-9]$|^(?:19|20)[0-9][0-9]-(0[1-9]|1[0-2])$", + "example": "2018-06 or 2018" + }, + "endDate": { + "type": "string", + "nullable": true, + "description": "Approximate end date for serving in herbicide location.", + "pattern": "^(?:19|20)[0-9][0-9]$|^(?:19|20)[0-9][0-9]-(0[1-9]|1[0-2])$", + "example": "2018-06 or 2018" + } + } + } + } + }, + "additionalHazardExposures": { + "type": "object", + "nullable": true, + "description": "Additional hazardous exposures.", + "properties": { + "additionalExposures": { + "description": "Additional exposure incidents.", + "type": "array", + "nullable": true, + "uniqueItems": true, + "items": { + "type": "string", + "additionalProperties": false, + "enum": [ + "ASBESTOS", + "MUSTARD_GAS", + "RADIATION", + "SHIPBOARD_HAZARD_AND_DEFENSE", + "MILITARY_OCCUPATIONAL_SPECIALTY_RELATED_TOXIN", + "CONTAMINATED_WATER_AT_CAMP_LEJEUNE", + "OTHER" + ] } - } - }, - "currentVaEmployee": { - "type": "boolean" - }, - "mailingAddress": { - "type": "object", - "properties": { - "addressLine1": { - "type": "string" - }, - "addressLine2": { - "type": "string" - }, - "addressLine3": { - "type": "string" - }, - "city": { - "type": "string" - }, - "state": { - "type": "string" - }, - "country": { - "type": "string" - }, - "zipFirstFive": { - "type": "string" - }, - "zipLastFour": { - "type": "string" + }, + "specifyOtherExposures": { + "type": "string", + "nullable": true, + "pattern": "^$|([a-zA-Z0-9\"\\/&\\(\\)\\-'.,#\\[\\] ]([a-zA-Z0-9(\\)\\-'.,#\\[\\] ])?)+$", + "maxLength": 5000, + "description": "Exposure to asbestos." + }, + "exposureDates": { + "type": "object", + "nullable": true, + "description": "Date range for when the exposure happened.", + "properties": { + "beginDate": { + "type": "string", + "nullable": true, + "description": "Approximate begin date for exposure.", + "pattern": "^(?:19|20)[0-9][0-9]$|^(?:19|20)[0-9][0-9]-(0[1-9]|1[0-2])$", + "example": "2018-06 or 2018" + }, + "endDate": { + "type": "string", + "nullable": true, + "description": "Approximate end date for exposure.", + "pattern": "^(?:19|20)[0-9][0-9]$|^(?:19|20)[0-9][0-9]-(0[1-9]|1[0-2])$", + "example": "2018-06 or 2018" + } } } - }, - "emailAddress": { + } + }, + "multipleExposures": { + "type": "array", + "nullable": true, + "minItems": 1, + "uniqueItems": true, + "items": { "type": "object", + "additionalProperties": false, "properties": { - "email": { - "type": "string" + "hazardExposedTo": { + "type": "string", + "nullable": true, + "pattern": "^([-a-zA-Z0-9'.,&# ])+$", + "maxLength": 1000, + "description": "Hazard the Veteran was exposed to." }, - "agreeToEmailRelatedToClaim": { - "type": "boolean" + "exposureLocation": { + "type": "string", + "nullable": true, + "pattern": "^$|([a-zA-Z0-9\"\\/&\\(\\)\\-'.,#\\[\\] ]([a-zA-Z0-9(\\)\\-'.,#\\[\\] ])?)+$", + "maxLength": 1000, + "description": "Location where the exposure happened." + }, + "exposureDates": { + "type": "object", + "nullable": true, + "description": "Date range for when the exposure happened.", + "properties": { + "beginDate": { + "type": "string", + "nullable": true, + "description": "Approximate begin date for exposure.", + "pattern": "^(?:19|20)[0-9][0-9]$|^(?:19|20)[0-9][0-9]-(0[1-9]|1[0-2])$", + "example": "2018-06 or 2018" + }, + "endDate": { + "type": "string", + "nullable": true, + "description": "Approximate end date for exposure.", + "pattern": "^(?:19|20)[0-9][0-9]$|^(?:19|20)[0-9][0-9]-(0[1-9]|1[0-2])$", + "example": "2018-06 or 2018" + } + } } } } } - }, - "changeOfAddress": { + } + }, + "disabilities": { + "description": "Any current disabilities or symptoms the Veteran is claiming are related to their military service and/or are service-connected.", + "type": "array", + "minItems": 1, + "items": { "type": "object", + "additionalProperties": false, + "required": [ + "disabilityActionType", + "name" + ], "properties": { - "typeOfAddressChange": { - "type": "string" + "name": { + "description": "Name of the disability. The /disabilities endpoint on the [Benefits Reference Data API](https://developer.va.gov/explore/benefits/docs/benefits_reference_data?version=current) may be used to retrieve possible disability names.", + "type": "string", + "pattern": "^$|([a-zA-Z0-9\"\\/&\\(\\)\\-'.,#\\[\\] ]([a-zA-Z0-9(\\)\\-'.,#\\[\\] ])?)+$", + "example": "PTSD (post traumatic stress disorder)", + "maxLength": 255 }, - "addressLine1": { - "type": "string" + "exposureOrEventOrInjury": { + "type": "string", + "description": "What caused the disability?", + "nullable": true, + "maxLength": 1000, + "examples": [ + "Agent Orange", + "radiation", + "burn pits" + ] }, - "addressLine2": { - "type": "string" + "serviceRelevance": { + "description": "Explanation of how the disability(ies) relates to the in-service event/exposure/injury. If the disabilityActionType is 'NEW', the serviceRelevance is required.", + "type": "string", + "nullable": true, + "maxLength": 1000, + "example": "Heavy equipment operator in service." }, - "addressLine3": { - "type": "string" + "approximateDate": { + "description": "Approximate date disability began. Date must be in the past. \n Format can be either YYYY-MM-DD or YYYY-MM or YYYY", + "type": "string", + "pattern": "^(?:[0-9]{4}(?:-(?!00)(?:0[1-9]|1[0-2])(?:-(?:0[1-9]|[1-2][0-9]|3[0-1]))?)?)$", + "example": "2018-03-02 or 2018-03 or 2018", + "nullable": true }, - "city": { - "type": "string" + "disabilityActionType": { + "description": "Action type requested for the disability. If 'INCREASE' or 'NONE', then 'ratedDisabilityId' and 'diagnosticCode' should be included. 'NONE' should be used when including a secondary disability.", + "type": "string", + "enum": [ + "NONE", + "NEW", + "INCREASE" + ], + "example": "NEW" }, - "state": { - "type": "string" + "classificationCode": { + "type": "string", + "description": "Classification code for the associated body system. Must match an active code returned by the /disabilities endpoint on the [Benefits Reference Data API](https://developer.va.gov/explore/benefits/docs/benefits_reference_data?version=current).", + "example": "249470", + "nullable": true }, - "country": { - "type": "string" + "ratedDisabilityId": { + "description": "When submitting a contention with action type 'INCREASE', the previously rated disability id may be included.", + "type": "string", + "example": "1100583", + "nullable": true }, - "zipFirstFive": { - "type": "string" + "diagnosticCode": { + "description": "If the disabilityActionType is 'NONE' or 'INCREASE', the diagnosticCode should correspond to an existing rated disability.", + "type": "integer", + "example": 9999, + "nullable": true }, - "zipLastFour": { - "type": "string" + "isRelatedToToxicExposure": { + "type": "boolean", + "description": "Is the disability related to toxic exposures? If true, related 'toxicExposure' must be included.", + "example": true, + "default": false, + "nullable": true }, - "dates": { - "type": "object", - "properties": { - "beginDate": { - "type": "string" - }, - "endDate": { - "type": "string" - } + "specialIssues": { + "type": "array", + "nullable": true, + "uniqueItems": true, + "items": { + "maxItems": 2, + "additionalProperties": false, + "type": "string", + "enum": [ + "POW", + "EMP" + ] } - } - } - }, - "homeless": { - "type": "object", - "properties": { - "currentlyHomeless": { - "type": "object", - "properties": { - "currentlyHomeless": { - "type": "object", - "properties": { - "homelessSituationOptions": { - "type": "string" - }, - "otherDescription": { - "type": "string" - } + }, + "secondaryDisabilities": { + "description": "If secondaryDisability is included, the following attributes are required: 'secondaryDisability.name', 'secondaryDisability.disabilityActionType' and 'secondaryDisability.serviceRelevance'", + "type": "array", + "items": { + "type": "object", + "additionalProperties": false, + "properties": { + "name": { + "description": "Name of the disability. The /disabilities endpoint on the [Benefits Reference Data API](https://developer.va.gov/explore/benefits/docs/benefits_reference_data?version=current) may be used to retrieve possible disability names.", + "type": "string", + "pattern": "^$|([a-zA-Z0-9\"\\/&\\(\\)\\-'.,# ]([a-zA-Z0-9(\\)\\-'.,#\\[\\] ])?)+$", + "example": "PTSD (post traumatic stress disorder)", + "maxLength": 255 + }, + "exposureOrEventOrInjury": { + "type": "string", + "description": "What caused the disability?", + "nullable": true, + "maxLength": 1000, + "examples": [ + "Agent Orange", + "radiation", + "burn pits" + ] + }, + "serviceRelevance": { + "description": "Explanation of how the disability(ies) relates to the in-service event/exposure/injury.", + "type": "string", + "nullable": true, + "maxLength": 1000, + "example": "Heavy equipment operator in service." + }, + "disabilityActionType": { + "description": "The status of the secondary disability.", + "type": "string", + "example": "SECONDARY", + "enum": [ + "SECONDARY" + ] + }, + "approximateDate": { + "description": "Approximate date disability began. Date must be in the past. \n Format can be either YYYY-MM-DD or YYYY-MM or YYYY", + "type": "string", + "pattern": "^(?:[0-9]{4}(?:-(?!00)(?:0[1-9]|1[0-2])(?:-(?:0[1-9]|[1-2][0-9]|3[0-1]))?)?)$", + "example": "2018-03-02 or 2018-03 or 2018", + "nullable": true + }, + "classificationCode": { + "type": "string", + "description": "Classification code for the associated body system. Must match an active code returned by the /disabilities endpoint on the [Benefits Reference Data API](https://developer.va.gov/explore/benefits/docs/benefits_reference_data?version=current).", + "example": "249470", + "nullable": true } } } - }, - "pointOfContact": { - "type": "string" - }, - "pointOfContactNumber": { - "type": "object", - "properties": { - "telephone": { - "type": "string" - }, - "internationalTelephone": { - "type": "string" - } - } } } - }, - "toxicExposure": { + } + }, + "treatments": { + "description": "Identifies the Service Treatment information of the Veteran. The combination of treatedDisabilityName, center name, center city, and center state must be less than 1000 characters to successfully generate a PDF.", + "type": "array", + "nullable": true, + "uniqueItems": true, + "items": { "type": "object", + "additionalProperties": false, "properties": { - "gulfWarHazardService": { - "type": "object", - "properties": { - "servedInGulfWarHazardLocations": { - "type": "string" - }, - "serviceDates": { - "type": "object", - "properties": { - "beginDate": { - "type": "string" - }, - "endDate": { - "type": "string" - } - } - } + "beginDate": { + "description": "Begin date for treatment. If treatment began from 2005 to present, you do not need to provide dates. Each treatment begin date must be after the first 'servicePeriod.activeDutyBeginDate'.", + "type": "string", + "pattern": "^(?:19|20)[0-9][0-9]$|^(?:19|20)[0-9][0-9]-(0[1-9]|1[0-2])$", + "example": "2018-06 or 2018", + "nullable": true + }, + "treatedDisabilityNames": { + "description": "Name(s) of disabilities treated in this time frame.", + "type": "array", + "nullable": true, + "maxItems": 101, + "items": { + "type": "string", + "additionalProperties": false, + "example": [ + "PTSD (post traumatic stress disorder)", + "Trauma" + ] } }, - "herbicideHazardService": { + "center": { + "description": "VA Medical Center(s) and Department of Defense Military Treatment Facilities where the Veteran received treatment after discharge for any claimed disabilities.", "type": "object", + "nullable": true, + "additionalProperties": false, "properties": { - "servedInHerbicideHazardLocations": { - "type": "string" + "name": { + "description": "Name of facility Veteran was treated in. The /treatment-centers endpoint on the [Benefits Reference Data API](https://developer.va.gov/explore/benefits/docs/benefits_reference_data?version=current) may be used to retrieve possible treatment center names.", + "type": "string", + "nullable": true, + "pattern": "([a-zA-Z0-9\"/&()\\'-'.,# ]([a-zA-Z0-9()\\'-'.,# ])?)+$", + "example": "Private Facility 2", + "minLength": 1, + "maxLength": 100 }, - "otherLocationsServed": { - "type": "string" + "city": { + "description": "City of treatment facility.", + "type": "string", + "pattern": "([a-zA-Z0-9\\-'.# ]([a-zA-Z0-9\\-'.# ])?)+$", + "example": "Portland", + "nullable": true, + "minLength": 0, + "maxLength": 30 }, - "serviceDates": { - "type": "object", - "properties": { - "beginDate": { - "type": "string" - }, - "endDate": { - "type": "string" - } - } + "state": { + "description": "State of treatment facility.", + "type": "string", + "pattern": "^$|^[a-z,A-Z]{2}$", + "example": "OR", + "nullable": true } } - }, - "additionalHazardExposures": { + } + } + } + }, + "serviceInformation": { + "type": "object", + "additionalProperties": false, + "required": [ + "servicePeriods" + ], + "properties": { + "alternateNames": { + "description": "List any other names under which the Veteran served, if applicable.", + "type": "array", + "nullable": true, + "maxItems": 100, + "uniqueItems": true, + "items": { + "type": "string", + "additionalProperties": false, + "examples": [ + "jane", + "janey lee", + "jane lee MacDonald" + ] + } + }, + "servicePeriods": { + "description": "Identifies the Service dates and Branch the Veteran served in.", + "type": "array", + "minItems": 1, + "items": { "type": "object", + "required": [ + "serviceBranch", + "serviceComponent", + "activeDutyBeginDate", + "activeDutyEndDate" + ], "properties": { - "additionalExposures": { - "type": "array", - "items": { - "type": "string" - } + "serviceBranch": { + "description": "Branch of service during period. The /service-branches endpoint on the [Benefits Reference Data API](https://developer.va.gov/explore/benefits/docs/benefits_reference_data?version=current) may be used to retrieve list of possible service branches.", + "type": "string", + "maxLength": 1000, + "example": "Air Force" }, - "specifyOtherExposures": { - "type": "string" + "serviceComponent": { + "type": "string", + "description": "", + "enum": [ + "Active", + "Reserves", + "National Guard" + ] }, - "exposureDates": { - "type": "object", - "properties": { - "beginDate": { - "type": "string" - }, - "endDate": { - "type": "string" - } - } - } - } - }, - "multipleExposures": { - "type": "array", - "items": { - "type": "object", - "properties": { - "hazardExposedTo": { - "type": "string" - }, - "exposureLocation": { - "type": "string" - }, - "exposureDates": { - "type": "object", - "properties": { - "beginDate": { - "type": "string" - }, - "endDate": { - "type": "string" - } - } - } - } - } - } - } - }, - "disabilities": { - "type": "array", - "items": { - "type": "object", - "properties": { - "name": { - "type": "string" - }, - "exposureOrEventOrInjury": { - "type": "string" - }, - "serviceRelevance": { - "type": "string" - }, - "approximateDate": { - "type": "string" - }, - "disabilityActionType": { - "type": "string" - }, - "classificationCode": { - "type": "string" - }, - "ratedDisabilityId": { - "type": "string" - }, - "diagnosticCode": { - "type": "integer" - }, - "isRelatedToToxicExposure": { - "type": "boolean" - }, - "secondaryDisabilities": { - "type": "array", - "items": { - "type": "object", - "properties": { - "name": { - "type": "string" - }, - "exposureOrEventOrInjury": { - "type": "string" - }, - "serviceRelevance": { - "type": "string" - }, - "disabilityActionType": { - "type": "string" - }, - "approximateDate": { - "type": "string" - }, - "classificationCode": { - "type": "string" - } - } + "activeDutyBeginDate": { + "description": "Date started active duty.", + "type": "string", + "pattern": "^(?:[0-9]{4})-(?:0[1-9]|1[0-2])-(?:0[1-9]|[1-2][0-9]|3[0-1])$", + "example": "2018-06-06" + }, + "activeDutyEndDate": { + "description": "Date completed active duty.", + "type": "string", + "pattern": "^(?:[0-9]{4})-(?:0[1-9]|1[0-2])-(?:0[1-9]|[1-2][0-9]|3[0-1])$", + "example": "2018-06-06" + }, + "separationLocationCode": { + "description": "Location code for the facility the Veteran plans to separate from. Code must match the values returned by the /intake-sites endpoint on the [Benefits reference Data API](https://developer.va.gov/explore/benefits/docs/benefits_reference_data?version=current).", + "type": "string", + "nullable": true, + "example": "98283" } } } - } - }, - "treatments": { - "type": "array", - "items": { + }, + "servedInActiveCombatSince911": { + "type": "string", + "enum": [ + "YES", + "NO" + ], + "description": "Did Veteran serve in a combat zone since 9-11-2001?", + "example": "YES", + "nullable": true + }, + "reservesNationalGuardService": { "type": "object", + "nullable": true, + "additionalProperties": false, "properties": { - "beginDate": { - "type": "string" - }, - "treatedDisabilityNames": { - "type": "array", - "items": { - "type": "string" - } + "component": { + "type": "string", + "nullable": true, + "description": "", + "enum": [ + "Reserves", + "National Guard" + ] }, - "center": { + "obligationTermsOfService": { "type": "object", + "nullable": true, + "description": "If 'obligationTermsOfService' is included, the following attributes are required: 'beginDate ' and 'endDate'.", + "additionalProperties": false, "properties": { - "name": { - "type": "string" - }, - "city": { - "type": "string" + "beginDate": { + "type": "string", + "nullable": true, + "pattern": "^(?:[0-9]{4})-(?:0[1-9]|1[0-2])-(?:0[1-9]|[1-2][0-9]|3[0-1])$", + "example": "2018-06-06" }, - "state": { - "type": "string" + "endDate": { + "type": "string", + "nullable": true, + "pattern": "^(?:[0-9]{4})-(?:0[1-9]|1[0-2])-(?:0[1-9]|[1-2][0-9]|3[0-1])$", + "example": "2018-06-06" } } - } - } - } - }, - "serviceInformation": { - "type": "object", - "properties": { - "alternateNames": { - "type": "array", - "items": { - "type": "string" - } - }, - "servicePeriods": { - "type": "array", - "items": { + }, + "unitName": { + "type": "string", + "nullable": true, + "maxLength": 1000, + "pattern": "^$|([a-zA-Z0-9\\-'.,# ][a-zA-Z0-9\\-'.,# ]?)*$" + }, + "unitAddress": { + "type": "string", + "maxLength": 1000, + "pattern": "^$|^([-a-zA-Z0-9'.,&# ])+$", + "nullable": true + }, + "unitPhone": { "type": "object", + "nullable": true, + "additionalProperties": false, "properties": { - "serviceBranch": { - "type": "string" - }, - "serviceComponent": { - "type": "string" - }, - "activeDutyBeginDate": { - "type": "string" - }, - "activeDutyEndDate": { - "type": "string" + "areaCode": { + "type": "string", + "nullable": true, + "maxLength": 3, + "pattern": "^$|^\\d{3}$", + "example": "555" }, - "separationLocationCode": { - "type": "string" + "phoneNumber": { + "type": "string", + "nullable": true, + "maxLength": 20, + "example": "5555555" } } + }, + "receivingInactiveDutyTrainingPay": { + "type": "string", + "enum": [ + "YES", + "NO" + ], + "nullable": true, + "example": "YES" } - }, - "servedInActiveCombatSince911": { - "type": "string" - }, - "reservesNationalGuardService": { - "type": "object", - "properties": { - "component": { - "type": "string" - }, - "obligationTermsOfService": { - "type": "object", - "properties": { - "beginDate": { - "type": "string" - }, - "endDate": { - "type": "string" - } - } - }, - "unitName": { - "type": "string" - }, - "unitAddress": { - "type": "string" - }, - "unitPhone": { - "type": "object", - "properties": { - "areaCode": { - "type": "string" - }, - "phoneNumber": { - "type": "string" - } - } - }, - "receivingInactiveDutyTrainingPay": { - "type": "string" - } + } + }, + "federalActivation": { + "description": "If federalActivation is present then reservesNationalGuardService.obligationTermsOfService.beginDate, reservesNationalGuardService.obligationTermsOfService.endDate and reservesNationalGuardService.unitName are required", + "type": "object", + "nullable": true, + "additionalProperties": false, + "properties": { + "activationDate": { + "description": "Date cannot be in the future and must be after the earliest servicePeriod.activeDutyBeginDate.", + "type": "string", + "pattern": "^(?:[0-9]{4})-(?:0[1-9]|1[0-2])-(?:0[1-9]|[1-2][0-9]|3[0-1])$", + "example": "2018-06-06", + "nullable": true + }, + "anticipatedSeparationDate": { + "description": "Anticipated date of separation. Date must be in the future.", + "type": "string", + "pattern": "^(?:[0-9]{4})-(?:0[1-9]|1[0-2])-(?:0[1-9]|[1-2][0-9]|3[0-1])$", + "example": "2018-06-06", + "nullable": true } - }, - "federalActivation": { + } + }, + "confinements": { + "type": "array", + "nullable": true, + "uniqueItems": true, + "items": { + "additionalProperties": false, "type": "object", "properties": { - "activationDate": { - "type": "string" + "approximateBeginDate": { + "description": "The approximateBeginDate must be after the earliest servicePeriod activeDutyBeginDate.", + "type": "string", + "nullable": false, + "pattern": "^(?:[0-9]{4})-(?:0[1-9]|1[0-2])-(?:0[1-9]|[1-2][0-9]|3[0-1])$|(?:[0-9]{4})-(?:0[1-9]|1[0-2])$", + "example": "2018-06-06 or 2018-06" }, - "anticipatedSeparationDate": { - "type": "string" + "approximateEndDate": { + "type": "string", + "nullable": false, + "pattern": "^(?:[0-9]{4})-(?:0[1-9]|1[0-2])-(?:0[1-9]|[1-2][0-9]|3[0-1])$|(?:[0-9]{4})-(?:0[1-9]|1[0-2])$", + "example": "2018-06-06 or 2018-06" } } } + } + } + }, + "servicePay": { + "type": "object", + "nullable": true, + "additionalProperties": false, + "properties": { + "receivingMilitaryRetiredPay": { + "description": "Is the Veteran receiving military retired pay?", + "type": "string", + "enum": [ + "YES", + "NO" + ], + "example": "YES", + "nullable": true + }, + "futureMilitaryRetiredPay": { + "description": "Will the Veteran receive military retired pay pay in future? \n If true, then 'futurePayExplanation' is required.", + "type": "string", + "enum": [ + "YES", + "NO" + ], + "example": "YES", + "nullable": true + }, + "futureMilitaryRetiredPayExplanation": { + "description": "Explains why future pay will be received.", + "type": "string", + "maxLength": 1000, + "example": "Will be retiring soon.", + "nullable": true + }, + "militaryRetiredPay": { + "type": "object", + "nullable": true, + "description": "", + "properties": { + "branchOfService": { + "description": "Branch of service. The /service-branches endpoint on the [Benefits Reference Data API](https://developer.va.gov/explore/benefits/docs/benefits_reference_data?version=current) may be used to retrieve list of possible service branches.", + "type": "string", + "maxLength": 1000, + "nullable": true, + "example": "Air Force" + }, + "monthlyAmount": { + "description": "Amount being received.", + "type": "integer", + "nullable": true, + "minimum": 1, + "maximum": 999999, + "example": 100 + } + } }, - "confinements": { - "type": "array", - "items": { - "type": "object", - "properties": { - "approximateBeginDate": { - "type": "string" - }, - "approximateEndDate": { - "type": "string" - } - } - } - } - }, - "servicePay": { - "type": "object", - "properties": { - "receivingMilitaryRetiredPay": { - "type": "string" - }, - "futureMilitaryRetiredPay": { - "type": "string" - }, - "futureMilitaryRetiredPayExplanation": { - "type": "string" - }, - "militaryRetiredPay": { - "type": "object", - "properties": { - "branchOfService": { - "type": "string" - }, - "monthlyAmount": { - "type": "integer" - } - } - }, - "retiredStatus": { - "type": "string" - }, - "favorMilitaryRetiredPay": { - "type": "boolean" - }, - "receivedSeparationOrSeverancePay": { - "type": "string" - }, - "separationSeverancePay": { - "type": "object", - "properties": { - "datePaymentReceived": { - "type": "string" - }, - "branchOfService": { - "type": "string" - }, - "preTaxAmountReceived": { - "type": "integer" - } + "retiredStatus": { + "type": "string", + "nullable": true, + "description": "", + "enum": [ + "RETIRED", + "TEMPORARY_DISABILITY_RETIRED_LIST", + "PERMANENT_DISABILITY_RETIRED_LIST" + ] + }, + "favorMilitaryRetiredPay": { + "description": "Is the Veteran waiving VA benefits to retain military retired pay? See item 26 on form 21-526EZ for more details.", + "type": "boolean", + "nullable": true, + "example": true, + "default": false + }, + "receivedSeparationOrSeverancePay": { + "description": "Has the Veteran ever received separation pay, disability severance pay, or any other lump sum payment from their branch of service?", + "type": "string", + "enum": [ + "YES", + "NO" + ], + "example": "YES", + "nullable": true + }, + "separationSeverancePay": { + "type": "object", + "nullable": true, + "description": "", + "properties": { + "datePaymentReceived": { + "description": "Approximate date separation pay was received. \n Format can be either YYYY-MM-DD or YYYY-MM or YYYY", + "type": "string", + "pattern": "^(?:[0-9]{4})-(?:0[1-9]|1[0-2])-(?:0[1-9]|[1-2][0-9]|3[0-1])$|(?:[0-9]{4})$|(?:[0-9]{4})-(?:0[1-9]|1[0-2])$", + "example": "2018-03-02 or 2018-03 or 2018" + }, + "branchOfService": { + "description": "Branch of service. The /service-branches endpoint on the [Benefits Reference Data API](https://developer.va.gov/explore/benefits/docs/benefits_reference_data?version=current) may be used to retrieve list of possible service branches.", + "type": "string", + "nullable": true, + "maxLength": 1000, + "example": "Air Force" + }, + "preTaxAmountReceived": { + "description": "Amount being received.", + "type": "integer", + "nullable": true, + "minimum": 1, + "maximum": 999999, + "example": 100 } - }, - "favorTrainingPay": { - "type": "boolean" } + }, + "favorTrainingPay": { + "description": "Is the Veteran waiving VA benefits to retain training pay? See item 28 on form 21-526EZ for more details. ", + "type": "boolean", + "nullable": true, + "example": true, + "default": false } - }, - "directDeposit": { - "type": "object", - "properties": { - "noAccount": { - "type": "boolean" - }, - "accountNumber": { - "type": "string" - }, - "accountType": { - "type": "string" - }, - "financialInstitutionName": { - "type": "string" - }, - "routingNumber": { - "type": "string" - } + } + }, + "directDeposit": { + "type": "object", + "nullable": true, + "additionalProperties": false, + "description": "If direct deposit information is included, the following attributes are required: accountType, accountNumber, routingNumber.", + "properties": { + "noAccount": { + "type": "boolean", + "nullable": true, + "description": "Claimant certifies that they do not have an account with a financial institution or certified payment agent.", + "default": false + }, + "accountNumber": { + "description": "Account number for the direct deposit.", + "pattern": "^(?:[a-zA-Z0-9-]{4,1000})?$", + "type": "string", + "maxLength": 1000, + "nullable": true, + "example": "123123123123" + }, + "accountType": { + "description": "Account type for the direct deposit.", + "type": "string", + "nullable": true, + "example": "CHECKING", + "enum": [ + "CHECKING", + "SAVINGS" + ] + }, + "financialInstitutionName": { + "description": "Provide the name of the financial institution where the Veteran wants the direct deposit.", + "maxLength": 1000, + "type": "string", + "nullable": true, + "example": "Some Bank" + }, + "routingNumber": { + "description": "Routing number for the direct deposit.", + "type": "string", + "maxLength": 1000, + "nullable": true, + "pattern": "^$|^\\d{0,1000}$", + "example": "123123123" } - }, - "claimantCertification": { - "type": "boolean" - }, - "claimNotes": { - "type": "string", - "description": "An optional notes section.", - "maxLength": 4000 } + }, + "claimantCertification": { + "type": "boolean", + "description": "Claimant certifies and authorizes release of information.", + "default": false + }, + "claimNotes": { + "type": "string", + "description": "An optional notes section.", + "maxLength": 4000 + } + } + } + } + } + }, + "example": { + "data": { + "type": "form/526", + "attributes": { + "claimProcessType": "STANDARD_CLAIM_PROCESS", + "claimNotes": "Some things that are important to know, and are not included in any other place.", + "veteranIdentification": { + "serviceNumber": "123456789", + "veteranNumber": { + "telephone": "5555555555" + }, + "mailingAddress": { + "addressLine1": "123 Main Street", + "addressLine2": "Unit 1", + "addressLine3": "Room 2", + "city": "Schenectady", + "state": "NY", + "country": "USA", + "zipFirstFive": "12345", + "zipLastFour": "1234" + }, + "emailAddress": { + "email": "valid@somedomain.com", + "agreeToEmailRelatedToClaim": true + }, + "currentVaEmployee": false + }, + "changeOfAddress": { + "typeOfAddressChange": "TEMPORARY", + "addressLine1": "456 Main Street", + "addressLine2": "Unit 3", + "addressLine3": "Room 4", + "city": "Schenectady", + "state": "NY", + "country": "USA", + "zipFirstFive": "12345", + "zipLastFour": "9897", + "dates": { + "beginDate": "2025-06-04", + "endDate": "2026-06-04" + } + }, + "homeless": { + "currentlyHomeless": { + "homelessSituationOptions": "OTHER", + "otherDescription": "Other living situation" + }, + "pointOfContact": "John Doe", + "pointOfContactNumber": { + "telephone": "5555555555" + } + }, + "toxicExposure": { + "gulfWarHazardService": { + "servedInGulfWarHazardLocations": "NO" + }, + "herbicideHazardService": { + "servedInHerbicideHazardLocations": "YES", + "otherLocationsServed": "Other locations served", + "serviceDates": { + "beginDate": "1972-05", + "endDate": "1980-10" + } + }, + "additionalHazardExposures": { + "additionalExposures": [ + "OTHER" + ], + "specifyOtherExposures": "Agent Orange", + "exposureDates": { + "beginDate": "1972-05", + "endDate": "1980-10" } - } - } - } - } - } - } - } - }, - "401": { - "description": "Unauthorized", - "content": { - "application/json": { - "example": { - "errors": [ - { - "title": "Not authorized", - "status": "401", - "detail": "Not authorized" - } - ] - }, - "schema": { - "required": [ - "errors" - ], - "properties": { - "errors": { - "type": "array", - "items": { - "additionalProperties": false, - "required": [ - "title", - "detail" - ], - "properties": { - "title": { - "type": "string", - "description": "HTTP error title" - }, - "detail": { - "type": "string", - "description": "HTTP error detail" - }, - "status": { - "type": "string", - "description": "HTTP error status code" + }, + "multipleExposures": [ + { + "hazardExposedTo": "Agent Orange", + "exposureLocation": "Vietnam", + "exposureDates": { + "beginDate": "1972-05", + "endDate": "1973-01" + } }, - "source": { - "type": "object", - "additionalProperties": false, - "description": "Source of error", - "properties": { - "pointer": { - "type": "string", - "description": "Pointer to source of error" - } + { + "hazardExposedTo": "Agent Orange", + "exposureLocation": "Vietnam", + "exposureDates": { + "beginDate": "1979-04", + "endDate": "1980-10" } } + ] + }, + "disabilities": [ + { + "name": "Diabetes", + "exposureOrEventOrInjury": "Agent Orange", + "serviceRelevance": "Service in Vietnam War", + "approximateDate": "1975-05", + "disabilityActionType": "NEW", + "isRelatedToToxicExposure": true + }, + { + "name": "Hearing Loss", + "exposureOrEventOrInjury": "Noise", + "serviceRelevance": "Heavy equipment operator in service", + "approximateDate": "1968-07", + "disabilityActionType": "INCREASE", + "classificationCode": "8987", + "ratedDisabilityId": "1234567", + "diagnosticCode": 5678, + "isRelatedToToxicExposure": false } - } - } - } - } - } - } - }, - "404": { - "description": "Resource not found", - "content": { - "application/json": { - "example": { - "errors": [ - { - "status": "404", - "title": "Resource not found", - "detail": "Resource not found" - } - ] - }, - "schema": { - "required": [ - "errors" - ], - "properties": { - "errors": { - "type": "array", - "items": { - "additionalProperties": false, - "required": [ - "title", - "detail" + ], + "treatments": [ + { + "beginDate": "2021-04", + "treatedDisabilityNames": [ + "Diabetes" + ], + "center": { + "name": "ATLANTA VA MEDICAL CENTER", + "state": "GA", + "city": "ATLANTA" + } + }, + { + "beginDate": "1996-03", + "treatedDisabilityNames": [ + "Hearing Loss" + ], + "center": { + "name": "ATLANTA VA MEDICAL CENTER", + "state": "GA", + "city": "ATLANTA" + } + } + ], + "serviceInformation": { + "alternateNames": [ + "Jon Doe", + "Jane Doe" ], - "properties": { - "title": { - "type": "string", - "description": "HTTP error title" + "servicePeriods": [ + { + "serviceBranch": "Air Force", + "serviceComponent": "Active", + "activeDutyBeginDate": "1964-11-14", + "activeDutyEndDate": "1980-10-30", + "separationLocationCode": "98289" + } + ], + "servedInActiveCombatSince911": "NO", + "reservesNationalGuardService": { + "component": "National Guard", + "obligationTermsOfService": { + "beginDate": "1990-11-24", + "endDate": "1995-11-17" }, - "detail": { - "type": "string", - "description": "HTTP error detail" + "unitName": "National Guard Unit Name", + "unitAddress": "1243 Main Street", + "unitPhone": { + "areaCode": "555", + "phoneNumber": "5555555" }, - "status": { - "type": "string", - "description": "HTTP error status code" + "receivingInactiveDutyTrainingPay": "YES" + }, + "confinements": [ + { + "approximateBeginDate": "1970-06-11", + "approximateEndDate": "1970-09-11" } - } - } + ] + }, + "servicePay": { + "receivingMilitaryRetiredPay": "NO", + "futureMilitaryRetiredPay": "YES", + "futureMilitaryRetiredPayExplanation": "Explanation of future military retired pay", + "militaryRetiredPay": { + "branchOfService": "Air Force", + "monthlyAmount": 240 + }, + "retiredStatus": "PERMANENT_DISABILITY_RETIRED_LIST", + "favorMilitaryRetiredPay": false, + "receivedSeparationOrSeverancePay": "YES", + "separationSeverancePay": { + "datePaymentReceived": "2018-07-31", + "branchOfService": "Air Force", + "preTaxAmountReceived": 179 + }, + "favorTrainingPay": false + }, + "directDeposit": { + "accountNumber": "123123123123", + "accountType": "CHECKING", + "financialInstitutionName": "Chase", + "routingNumber": "123456789" + }, + "claimantCertification": true } } } } } - } - }, - "requestBody": { - "content": { - "multipart/form-data": { - "schema": { - "type": "object", - "properties": { - "attachment1": { - "type": "file", - "description": "Attachment contents. Must be provided in binary PDF or [base64 string](https://raw.githubusercontent.com/department-of-veterans-affairs/vets-api/master/modules/claims_api/spec/fixtures/base64pdf) format and less than 11 in x 11 in.\n" - }, - "attachment2": { - "type": "file", - "description": "Attachment contents. Must be provided in binary PDF or [base64 string](https://raw.githubusercontent.com/department-of-veterans-affairs/vets-api/master/modules/claims_api/spec/fixtures/base64pdf) format and less than 11 in x 11 in.\n" - } - } - } - } - } + }, + "required": true } } }, @@ -10055,9 +5741,7 @@ ] }, { - "bearer_token": [ - - ] + "bearer_token": [] } ], "parameters": [ @@ -11567,9 +7251,7 @@ ] }, { - "bearer_token": [ - - ] + "bearer_token": [] } ], "parameters": [ @@ -11842,9 +7524,7 @@ ] }, { - "bearer_token": [ - - ] + "bearer_token": [] } ], "description": "Retrieves a specific claim for a Veteran", @@ -11925,9 +7605,7 @@ "documentsNeeded": false, "endProductCode": "404", "evidenceWaiverSubmitted5103": false, - "errors": [ - - ], + "errors": [], "jurisdiction": "National Work Queue", "lighthouseId": null, "maxEstClaimDate": null, @@ -11935,9 +7613,7 @@ "status": "CANCELED", "submitterApplicationCode": "EBN", "submitterRoleCode": "VET", - "supportingDocuments": [ - - ], + "supportingDocuments": [], "tempJurisdiction": null, "trackedItems": [ { @@ -12027,13 +7703,9 @@ "status": "ERRORED", "submitterApplicationCode": null, "submitterRoleCode": null, - "supportingDocuments": [ - - ], + "supportingDocuments": [], "tempJurisdiction": null, - "trackedItems": [ - - ] + "trackedItems": [] } } } @@ -12438,9 +8110,7 @@ "decision_notification_sent": "No", "development_letter_sent": "No", "end_prdct_type_cd": "404", - "errors": [ - - ], + "errors": [], "poa": "RANDOM E PERSON", "program_type": "CPL", "ptcpnt_clmant_id": "111111111", @@ -12599,9 +8269,7 @@ ] }, { - "bearer_token": [ - - ] + "bearer_token": [] } ], "description": "Returns Veteran's last active Intent to File submission for given benefit type of compensation, pension, or survivor.", @@ -12843,9 +8511,7 @@ ] }, { - "bearer_token": [ - - ] + "bearer_token": [] } ], "description": "Establishes an Intent to File for disability compensation, pension, and survivor claims.", @@ -12871,8 +8537,8 @@ "id": "1", "type": "intent_to_file", "attributes": { - "creationDate": "2024-12-04", - "expirationDate": "2025-12-04", + "creationDate": "2024-12-16", + "expirationDate": "2025-12-16", "type": "compensation", "status": "active" } @@ -13190,9 +8856,7 @@ ] }, { - "bearer_token": [ - - ] + "bearer_token": [] } ], "description": "Validates an Intent to File for disability compensation, pension, and survivor claims.", @@ -13454,9 +9118,7 @@ ] }, { - "bearer_token": [ - - ] + "bearer_token": [] } ], "description": "Retrieves current Power of Attorney for Veteran or empty data if no POA is assigned.", @@ -13743,9 +9405,7 @@ ] }, { - "bearer_token": [ - - ] + "bearer_token": [] } ], "parameters": [ @@ -13768,7 +9428,7 @@ "application/json": { "example": { "data": { - "id": "1a9a1a53-d16d-43fa-99da-33c7f1be7c18", + "id": "3fb853d6-fe4f-4593-9ae4-b44d866cb3b5", "type": "individual", "attributes": { "code": "067", @@ -14518,9 +10178,7 @@ ] }, { - "bearer_token": [ - - ] + "bearer_token": [] } ], "parameters": [ @@ -14542,7 +10200,7 @@ "application/json": { "example": { "data": { - "id": "f98553d4-04f6-4e30-acc5-4e47417ddc0e", + "id": "20da46c4-10d5-4985-8113-db92597ac85f", "type": "organization", "attributes": { "code": "083", @@ -15201,9 +10859,7 @@ ] }, { - "bearer_token": [ - - ] + "bearer_token": [] } ], "parameters": [ @@ -15887,9 +11543,7 @@ ] }, { - "bearer_token": [ - - ] + "bearer_token": [] } ], "parameters": [ @@ -16508,9 +12162,7 @@ ] }, { - "bearer_token": [ - - ] + "bearer_token": [] } ], "parameters": [ @@ -16542,10 +12194,10 @@ "application/json": { "example": { "data": { - "id": "32035d7d-53c9-4af8-bb60-ad2f90ba9152", + "id": "38b49aa2-1163-4b42-9bc1-331a42404117", "type": "claimsApiPowerOfAttorneys", "attributes": { - "dateRequestAccepted": "2024-12-04", + "dateRequestAccepted": "2024-12-16", "previousPoa": null, "representative": { "serviceOrganization": { diff --git a/modules/claims_api/config/routes.rb b/modules/claims_api/config/routes.rb index d52efd8ccf2..1b4663d59ce 100644 --- a/modules/claims_api/config/routes.rb +++ b/modules/claims_api/config/routes.rb @@ -37,7 +37,6 @@ namespace :v2, defaults: { format: 'json' } do mount OkComputer::Engine, at: '/healthcheck' - post '/veteran-id:find', to: 'veteran_identifier#find', constraints: { find: /:find/ } namespace :veterans do get '/:veteranId/claims', to: 'claims#index' get '/:veteranId/claims/:id', to: 'claims#show' @@ -60,9 +59,7 @@ post '/:veteranId/intent-to-file', to: 'intent_to_file#submit' post '/:veteranId/intent-to-file/validate', to: 'intent_to_file#validate' ## 526 Forms - post '/:veteranId/526', to: 'disability_compensation#submit' post '/:veteranId/526/validate', to: 'disability_compensation#validate' - post '/:veteranId/526/:id/attachments', to: 'disability_compensation#attachments' post '/:veteranId/526/generatePDF/minimum-validations', to: 'disability_compensation#generate_pdf' post '/:veteranId/526/synchronous', to: 'disability_compensation#synchronous' end diff --git a/modules/claims_api/spec/controllers/v2/veterans/power_of_attorney/request_controller_spec.rb b/modules/claims_api/spec/controllers/v2/veterans/power_of_attorney/request_controller_spec.rb index 34dec9b5d19..3051a28075e 100644 --- a/modules/claims_api/spec/controllers/v2/veterans/power_of_attorney/request_controller_spec.rb +++ b/modules/claims_api/spec/controllers/v2/veterans/power_of_attorney/request_controller_spec.rb @@ -212,12 +212,33 @@ allow(Lockbox).to receive(:new).and_return(mock_lockbox) end - it 'enqueues the VANotifyDeclinedJob' do - mock_ccg(scopes) do |auth_header| - expect do - decide_request_with(proc_id: '76529', decision: 'DECLINED', auth_header:, ptcpnt_id: '123456789', - representative_id: '456') - end.to change(ClaimsApi::VANotifyDeclinedJob.jobs, :size).by(1) + context 'when the feature flag is enabled' do + before do + allow(Flipper).to receive(:enabled?).with(:lighthouse_claims_api_v2_poa_va_notify).and_return(true) + end + + it 'enqueues the VANotifyDeclinedJob' do + mock_ccg(scopes) do |auth_header| + expect do + decide_request_with(proc_id: '76529', decision: 'DECLINED', auth_header:, ptcpnt_id: '123456789', + representative_id: '456') + end.to change(ClaimsApi::VANotifyDeclinedJob.jobs, :size).by(1) + end + end + end + + context 'when the feature flag is disabled' do + before do + allow(Flipper).to receive(:enabled?).with(:lighthouse_claims_api_v2_poa_va_notify).and_return(false) + end + + it 'does not enqueue the VANotifyDeclinedJob' do + mock_ccg(scopes) do |auth_header| + expect do + decide_request_with(proc_id: '76529', decision: 'DECLINED', auth_header:, ptcpnt_id: '123456789', + representative_id: '456') + end.not_to change(ClaimsApi::VANotifyDeclinedJob.jobs, :size) + end end end end diff --git a/modules/claims_api/spec/requests/v2/rswag_veteran_identifier_spec.rb b/modules/claims_api/spec/requests/v2/rswag_veteran_identifier_spec.rb index 685b9e4db0c..d91a1e1dbc6 100644 --- a/modules/claims_api/spec/requests/v2/rswag_veteran_identifier_spec.rb +++ b/modules/claims_api/spec/requests/v2/rswag_veteran_identifier_spec.rb @@ -6,7 +6,8 @@ require_relative '../../rails_helper' require_relative '../../support/swagger_shared_components/v2' -describe 'Veteran Identifier', openapi_spec: Rswag::TextHelpers.new.claims_api_docs do # rubocop:disable RSpec/DescribeClass +describe 'Veteran Identifier', openapi_spec: Rswag::TextHelpers.new.claims_api_docs, # rubocop:disable RSpec/DescribeClass + skip: 'Disabling tests for deactivated veteran-id:find endpoint' do before do stub_mpi(profile) end diff --git a/modules/claims_api/spec/requests/v2/veteran_identifier_spec.rb b/modules/claims_api/spec/requests/v2/veteran_identifier_spec.rb index b118054e425..44f2bd3281b 100644 --- a/modules/claims_api/spec/requests/v2/veteran_identifier_spec.rb +++ b/modules/claims_api/spec/requests/v2/veteran_identifier_spec.rb @@ -5,6 +5,7 @@ require_relative '../../rails_helper' RSpec.describe 'ClaimsApi::V2::VeteranIdentifier', openapi_spec: Rswag::TextHelpers.new.claims_api_docs, + skip: 'Disabling tests for deactivated veteran-id:find endpoint', type: :request do let(:path) { '/services/claims/v2/veteran-id:find' } let(:data) do diff --git a/modules/claims_api/spec/requests/v2/veterans/526_spec.rb b/modules/claims_api/spec/requests/v2/veterans/526_spec.rb index 9ce91a84bc5..08ff4a4a507 100644 --- a/modules/claims_api/spec/requests/v2/veterans/526_spec.rb +++ b/modules/claims_api/spec/requests/v2/veterans/526_spec.rb @@ -49,7 +49,7 @@ let(:schema) { Rails.root.join('modules', 'claims_api', 'config', 'schemas', 'v2', '526.json').read } let(:veteran_id) { '1013062086V794840' } - context 'submit' do + describe 'submit', skip: 'Disabling tests for deactivated /veterans/{veteranId}/526 endpoint' do let(:submit_path) { "/services/claims/v2/veterans/#{veteran_id}/526" } let(:validate_path) { "/services/claims/v2/veterans/#{veteran_id}/526/validate" } @@ -4073,93 +4073,95 @@ def update_json_and_submit(updated_json_lambda) end end - context 'attachments' do - let(:auto_claim) { create(:auto_established_claim) } - let(:attachments_path) do - "/services/claims/v2/veterans/#{veteran_id}/526/#{auto_claim.id}/attachments" - end - let(:target_veteran) do - OpenStruct.new( - icn: veteran_id, - first_name: 'abraham', - last_name: 'lincoln', - loa: { current: 3, highest: 3 }, - ssn: '796111863', - edipi: '8040545646', - participant_id: '600061742', - mpi: OpenStruct.new( + describe 'attachments', skip: 'Disabling tests for deactivated /veterans/{veteranId}/526/{id}/attachments' do + context 'attachments' do + let(:auto_claim) { create(:auto_established_claim) } + let(:attachments_path) do + "/services/claims/v2/veterans/#{veteran_id}/526/#{auto_claim.id}/attachments" + end + let(:target_veteran) do + OpenStruct.new( icn: veteran_id, - profile: OpenStruct.new(ssn: '796111863') + first_name: 'abraham', + last_name: 'lincoln', + loa: { current: 3, highest: 3 }, + ssn: '796111863', + edipi: '8040545646', + participant_id: '600061742', + mpi: OpenStruct.new( + icn: veteran_id, + profile: OpenStruct.new(ssn: '796111863') + ) ) - ) - end - - describe 'with binary params' do - let(:binary_params) do - { attachment1: Rack::Test::UploadedFile.new(Rails.root.join(*'/modules/claims_api/spec/fixtures/extras.pdf' - .split('/')).to_s), - attachment2: Rack::Test::UploadedFile.new(Rails.root.join(*'/modules/claims_api/spec/fixtures/extras.pdf' - .split('/')).to_s) } end - it 'responds with a 202' do - mock_ccg(scopes) do |auth_header| - allow_any_instance_of(ClaimsApi::V2::ApplicationController) - .to receive(:target_veteran).and_return(target_veteran) - post attachments_path, params: binary_params, headers: auth_header - expect(response).to have_http_status(:accepted) + describe 'with binary params' do + let(:binary_params) do + { attachment1: Rack::Test::UploadedFile.new(Rails.root.join(*'/modules/claims_api/spec/fixtures/extras.pdf' + .split('/')).to_s), + attachment2: Rack::Test::UploadedFile.new(Rails.root.join(*'/modules/claims_api/spec/fixtures/extras.pdf' + .split('/')).to_s) } end - end - end - describe 'with base 64 params' do - let(:base64_params) do - { attachment1: File.read(Rails.root.join(*'/modules/claims_api/spec/fixtures/base64pdf'.split('/')).to_s), - attachment2: File.read(Rails.root.join(*'/modules/claims_api/spec/fixtures/base64pdf'.split('/')).to_s) } + it 'responds with a 202' do + mock_ccg(scopes) do |auth_header| + allow_any_instance_of(ClaimsApi::V2::ApplicationController) + .to receive(:target_veteran).and_return(target_veteran) + post attachments_path, params: binary_params, headers: auth_header + expect(response).to have_http_status(:accepted) + end + end end - it 'responds with a 202' do - mock_ccg(scopes) do |auth_header| - allow_any_instance_of(ClaimsApi::V2::ApplicationController) - .to receive(:target_veteran).and_return(target_veteran) - post attachments_path, params: base64_params, headers: auth_header - expect(response).to have_http_status(:accepted) + describe 'with base 64 params' do + let(:base64_params) do + { attachment1: File.read(Rails.root.join(*'/modules/claims_api/spec/fixtures/base64pdf'.split('/')).to_s), + attachment2: File.read(Rails.root.join(*'/modules/claims_api/spec/fixtures/base64pdf'.split('/')).to_s) } + end + + it 'responds with a 202' do + mock_ccg(scopes) do |auth_header| + allow_any_instance_of(ClaimsApi::V2::ApplicationController) + .to receive(:target_veteran).and_return(target_veteran) + post attachments_path, params: base64_params, headers: auth_header + expect(response).to have_http_status(:accepted) + end end end - end - describe 'with more then 10 attachments' do - let(:binary_params) do - { attachment1: Rack::Test::UploadedFile.new(Rails.root.join(*'/modules/claims_api/spec/fixtures/extras.pdf' - .split('/')).to_s), - attachment2: Rack::Test::UploadedFile.new(Rails.root.join(*'/modules/claims_api/spec/fixtures/extras.pdf' - .split('/')).to_s), - attachment3: Rack::Test::UploadedFile.new(Rails.root.join(*'/modules/claims_api/spec/fixtures/extras.pdf' - .split('/')).to_s), - attachment4: Rack::Test::UploadedFile.new(Rails.root.join(*'/modules/claims_api/spec/fixtures/extras.pdf' - .split('/')).to_s), - attachment5: Rack::Test::UploadedFile.new(Rails.root.join(*'/modules/claims_api/spec/fixtures/extras.pdf' - .split('/')).to_s), - attachment7: Rack::Test::UploadedFile.new(Rails.root.join(*'/modules/claims_api/spec/fixtures/extras.pdf' - .split('/')).to_s), - attachment6: Rack::Test::UploadedFile.new(Rails.root.join(*'/modules/claims_api/spec/fixtures/extras.pdf' - .split('/')).to_s), - attachment8: Rack::Test::UploadedFile.new(Rails.root.join(*'/modules/claims_api/spec/fixtures/extras.pdf' - .split('/')).to_s), - attachment9: Rack::Test::UploadedFile.new(Rails.root.join(*'/modules/claims_api/spec/fixtures/extras.pdf' - .split('/')).to_s), - attachment10: Rack::Test::UploadedFile.new(Rails.root.join(*'/modules/claims_api/spec/fixtures/extras.pdf' - .split('/')).to_s), - attachment11: Rack::Test::UploadedFile.new(Rails.root.join(*'/modules/claims_api/spec/fixtures/extras.pdf' - .split('/')).to_s) } - end - - it 'responds with a 422' do - mock_ccg(scopes) do |auth_header| - allow_any_instance_of(ClaimsApi::V2::ApplicationController) - .to receive(:target_veteran).and_return(target_veteran) - post attachments_path, params: binary_params, headers: auth_header - expect(response).to have_http_status(:unprocessable_entity) + describe 'with more then 10 attachments' do + let(:binary_params) do + { attachment1: Rack::Test::UploadedFile.new(Rails.root.join(*'/modules/claims_api/spec/fixtures/extras.pdf' + .split('/')).to_s), + attachment2: Rack::Test::UploadedFile.new(Rails.root.join(*'/modules/claims_api/spec/fixtures/extras.pdf' + .split('/')).to_s), + attachment3: Rack::Test::UploadedFile.new(Rails.root.join(*'/modules/claims_api/spec/fixtures/extras.pdf' + .split('/')).to_s), + attachment4: Rack::Test::UploadedFile.new(Rails.root.join(*'/modules/claims_api/spec/fixtures/extras.pdf' + .split('/')).to_s), + attachment5: Rack::Test::UploadedFile.new(Rails.root.join(*'/modules/claims_api/spec/fixtures/extras.pdf' + .split('/')).to_s), + attachment7: Rack::Test::UploadedFile.new(Rails.root.join(*'/modules/claims_api/spec/fixtures/extras.pdf' + .split('/')).to_s), + attachment6: Rack::Test::UploadedFile.new(Rails.root.join(*'/modules/claims_api/spec/fixtures/extras.pdf' + .split('/')).to_s), + attachment8: Rack::Test::UploadedFile.new(Rails.root.join(*'/modules/claims_api/spec/fixtures/extras.pdf' + .split('/')).to_s), + attachment9: Rack::Test::UploadedFile.new(Rails.root.join(*'/modules/claims_api/spec/fixtures/extras.pdf' + .split('/')).to_s), + attachment10: Rack::Test::UploadedFile.new(Rails.root.join(*'/modules/claims_api/spec/fixtures/extras.pdf' + .split('/')).to_s), + attachment11: Rack::Test::UploadedFile.new(Rails.root.join(*'/modules/claims_api/spec/fixtures/extras.pdf' + .split('/')).to_s) } + end + + it 'responds with a 422' do + mock_ccg(scopes) do |auth_header| + allow_any_instance_of(ClaimsApi::V2::ApplicationController) + .to receive(:target_veteran).and_return(target_veteran) + post attachments_path, params: binary_params, headers: auth_header + expect(response).to have_http_status(:unprocessable_entity) + end end end end @@ -4243,7 +4245,8 @@ def update_json_and_submit(updated_json_lambda) end end - describe 'POST #submit not using md5 lookup' do + describe 'POST #submit not using md5 lookup', + skip: 'Disabling tests for deactivated /veterans/{veteranId}/526 endpoint' do let(:anticipated_separation_date) { 2.days.from_now.strftime('%Y-%m-%d') } let(:active_duty_end_date) { 2.days.from_now.strftime('%Y-%m-%d') } let(:data) do diff --git a/modules/claims_api/spec/requests/v2/veterans/rswag_526_spec.rb b/modules/claims_api/spec/requests/v2/veterans/rswag_526_spec.rb index c0d5ee0a3ce..f933317d761 100644 --- a/modules/claims_api/spec/requests/v2/veterans/rswag_526_spec.rb +++ b/modules/claims_api/spec/requests/v2/veterans/rswag_526_spec.rb @@ -26,77 +26,146 @@ def append_example_metadata(example, response) } end - path '/veterans/{veteranId}/526', vcr: 'claims_api/disability_comp' do - post 'Asynchronously establishes disability compensation claim' do - tags 'Disability Compensation Claims' - operationId 'post526Claim' - security [ - { productionOauth: ['system/claim.read', 'system/claim.write'] }, - { sandboxOauth: ['system/claim.read', 'system/claim.write'] }, - { bearer_token: [] } - ] - consumes 'application/json' - produces 'application/json' + describe '526 submit', skip: 'Disabling tests for deactivated /veterans/{veteranId}/526 endpoint' do + path '/veterans/{veteranId}/526', vcr: 'claims_api/disability_comp' do + post 'Asynchronously establishes disability compensation claim' do + tags 'Disability Compensation Claims' + operationId 'post526Claim' + security [ + { productionOauth: ['system/claim.read', 'system/claim.write'] }, + { sandboxOauth: ['system/claim.read', 'system/claim.write'] }, + { bearer_token: [] } + ] + consumes 'application/json' + produces 'application/json' + + get_schema_description = <<~VERBIAGE + Automatically establishes a disability compensation claim (21-526EZ) in Veterans Benefits Management System (VBMS).#{' '} + This endpoint generates a filled and electronically signed 526EZ form, establishes the disability claim in VBMS, and#{' '} + submits the form to the Veteran's eFolder. + + A 202 response indicates the API submission was accepted. The claim has not reached VBMS until it has a CLAIM_RECEIVED status.#{' '} + Check claim status using the GET veterans/{veteranId}/claims/{id} endpoint. + + **A substantially complete 526EZ claim must include:** + * Veteran's name + * Sufficient service information for VA to verify the claimed service + * At least one claimed disability or medical condition and how it relates to service + * Veteran and/or Representative signature + + **Standard and fully developed claims (FDCs)** + + [Fully developed claims (FDCs)](https://www.va.gov/disability/how-to-file-claim/evidence-needed/fully-developed-claims/) + are claims certified by the submitter to include all information needed for processing. These claims process faster#{' '} + than claims submitted through the standard claim process. If a claim is certified for the FDC, but is missing needed information,#{' '} + it will be processed as a standard claim. + + To certify a claim for the FDC process, set the claimProcessType to FDC_PROGRAM. + VERBIAGE + description get_schema_description + parameter name: 'veteranId', + in: :path, + required: true, + type: :string, + example: '1012667145V762142', + description: 'ID of Veteran' + + let(:veteranId) { '1013062086V794840' } # rubocop:disable RSpec/VariableName + let(:Authorization) { 'Bearer token' } + + let(:scopes) { %w[system/claim.read system/claim.write] } + + request_template = JSON.parse(Rails.root.join('modules', 'claims_api', 'spec', 'fixtures', 'v2', 'veterans', + 'disability_compensation', 'form_526_json_api.json').read) + request_template['data']['attributes']['serviceInformation'].delete('federalActivation') + request_template['data']['attributes']['serviceInformation']['servicePeriods'].each do |per| + per.delete('separationLocationCode') + end - get_schema_description = <<~VERBIAGE - Automatically establishes a disability compensation claim (21-526EZ) in Veterans Benefits Management System (VBMS).#{' '} - This endpoint generates a filled and electronically signed 526EZ form, establishes the disability claim in VBMS, and#{' '} - submits the form to the Veteran's eFolder. + parameter name: :disability_comp_request, in: :body, + schema: SwaggerSharedComponents::V2.body_examples[:disability_compensation][:schema] - A 202 response indicates the API submission was accepted. The claim has not reached VBMS until it has a CLAIM_RECEIVED status.#{' '} - Check claim status using the GET veterans/{veteranId}/claims/{id} endpoint. + parameter in: :body, examples: { + 'Minimum Required Attributes' => { + value: JSON.parse(Rails.root.join('modules', 'claims_api', 'spec', 'fixtures', 'v2', 'veterans', + 'disability_compensation', 'valid_526_minimum.json').read) + }, + 'Maximum Attributes' => { + value: request_template - **A substantially complete 526EZ claim must include:** - * Veteran's name - * Sufficient service information for VA to verify the claimed service - * At least one claimed disability or medical condition and how it relates to service - * Veteran and/or Representative signature + } + } - **Standard and fully developed claims (FDCs)** + describe 'Getting a successful response' do + response '202', 'Successful response' do + let(:claim_date) { (Time.zone.today - 1.day).to_s } + let(:anticipated_separation_date) { 2.days.from_now.strftime('%Y-%m-%d') } + let(:data) do + temp = Rails.root.join('modules', 'claims_api', 'spec', 'fixtures', 'v2', 'veterans', + 'disability_compensation', 'form_526_json_api.json').read + temp = JSON.parse(temp) + attributes = temp['data']['attributes'] + attributes['serviceInformation']['federalActivation']['anticipatedSeparationDate'] = + anticipated_separation_date + temp['data']['attributes'] = attributes + temp.to_json + temp + end - [Fully developed claims (FDCs)](https://www.va.gov/disability/how-to-file-claim/evidence-needed/fully-developed-claims/) - are claims certified by the submitter to include all information needed for processing. These claims process faster#{' '} - than claims submitted through the standard claim process. If a claim is certified for the FDC, but is missing needed information,#{' '} - it will be processed as a standard claim. + let(:disability_comp_request) do + data + end - To certify a claim for the FDC process, set the claimProcessType to FDC_PROGRAM. - VERBIAGE - description get_schema_description - parameter name: 'veteranId', - in: :path, - required: true, - type: :string, - example: '1012667145V762142', - description: 'ID of Veteran' + schema SwaggerSharedComponents::V2.schemas[:disability_compensation] - let(:veteranId) { '1013062086V794840' } # rubocop:disable RSpec/VariableName - let(:Authorization) { 'Bearer token' } + before do |example| + mock_ccg(scopes) do + submit_request(example.metadata) + end + end - let(:scopes) { %w[system/claim.read system/claim.write] } + it 'returns a valid 202 response' do |example| + assert_response_matches_metadata(example.metadata) + end + end + end - request_template = JSON.parse(Rails.root.join('modules', 'claims_api', 'spec', 'fixtures', 'v2', 'veterans', - 'disability_compensation', 'form_526_json_api.json').read) - request_template['data']['attributes']['serviceInformation'].delete('federalActivation') - request_template['data']['attributes']['serviceInformation']['servicePeriods'].each do |per| - per.delete('separationLocationCode') - end + describe 'Getting an unauthorized response' do + response '401', 'Unauthorized' do + schema JSON.parse(Rails.root.join('spec', 'support', 'schemas', 'claims_api', 'v2', 'errors', + 'disability_compensation', 'default.json').read) - parameter name: :disability_comp_request, in: :body, - schema: SwaggerSharedComponents::V2.body_examples[:disability_compensation][:schema] + let(:data) do + temp = Rails.root.join('modules', 'claims_api', 'spec', 'fixtures', 'v2', 'veterans', + 'disability_compensation', 'form_526_json_api.json').read + temp = JSON.parse(temp) + temp + end - parameter in: :body, examples: { - 'Minimum Required Attributes' => { - value: JSON.parse(Rails.root.join('modules', 'claims_api', 'spec', 'fixtures', 'v2', 'veterans', - 'disability_compensation', 'valid_526_minimum.json').read) - }, - 'Maximum Attributes' => { - value: request_template + let(:disability_comp_request) do + data + end - } - } + before do |example| + # skip ccg authorization to fail authorization + submit_request(example.metadata) + end - describe 'Getting a successful response' do - response '202', 'Successful response' do + after do |example| + example.metadata[:response][:content] = { + 'application/json' => { + example: JSON.parse(response.body, symbolize_names: true) + } + } + end + + it 'returns a 401 response' do |example| + assert_response_matches_metadata(example.metadata) + end + end + end + + describe 'Getting a 404 response' do let(:claim_date) { (Time.zone.today - 1.day).to_s } let(:anticipated_separation_date) { 2.days.from_now.strftime('%Y-%m-%d') } let(:data) do @@ -115,41 +184,14 @@ def append_example_metadata(example, response) data end - schema SwaggerSharedComponents::V2.schemas[:disability_compensation] - before do |example| + expect(ClaimsApi::Veteran).to receive(:new).and_return(veteran) + allow(veteran).to receive(:mpi).and_return(nil) mock_ccg(scopes) do submit_request(example.metadata) end end - it 'returns a valid 202 response' do |example| - assert_response_matches_metadata(example.metadata) - end - end - end - - describe 'Getting an unauthorized response' do - response '401', 'Unauthorized' do - schema JSON.parse(Rails.root.join('spec', 'support', 'schemas', 'claims_api', 'v2', 'errors', - 'disability_compensation', 'default.json').read) - - let(:data) do - temp = Rails.root.join('modules', 'claims_api', 'spec', 'fixtures', 'v2', 'veterans', - 'disability_compensation', 'form_526_json_api.json').read - temp = JSON.parse(temp) - temp - end - - let(:disability_comp_request) do - data - end - - before do |example| - # skip ccg authorization to fail authorization - submit_request(example.metadata) - end - after do |example| example.metadata[:response][:content] = { 'application/json' => { @@ -158,109 +200,69 @@ def append_example_metadata(example, response) } end - it 'returns a 401 response' do |example| - assert_response_matches_metadata(example.metadata) - end - end - end + response '404', 'Resource not found' do + schema JSON.parse( + Rails.root.join('spec', 'support', 'schemas', 'claims_api', 'v2', 'errors', + 'disability_compensation', 'default_without_source.json').read + ) - describe 'Getting a 404 response' do - let(:claim_date) { (Time.zone.today - 1.day).to_s } - let(:anticipated_separation_date) { 2.days.from_now.strftime('%Y-%m-%d') } - let(:data) do - temp = Rails.root.join('modules', 'claims_api', 'spec', 'fixtures', 'v2', 'veterans', - 'disability_compensation', 'form_526_json_api.json').read - temp = JSON.parse(temp) - attributes = temp['data']['attributes'] - attributes['serviceInformation']['federalActivation']['anticipatedSeparationDate'] = - anticipated_separation_date - temp['data']['attributes'] = attributes - temp.to_json - temp - end - - let(:disability_comp_request) do - data - end - - before do |example| - expect(ClaimsApi::Veteran).to receive(:new).and_return(veteran) - allow(veteran).to receive(:mpi).and_return(nil) - mock_ccg(scopes) do - submit_request(example.metadata) + it 'returns a 404 response' do |example| + assert_response_matches_metadata(example.metadata) + end end end - after do |example| - example.metadata[:response][:content] = { - 'application/json' => { - example: JSON.parse(response.body, symbolize_names: true) - } - } - end - - response '404', 'Resource not found' do - schema JSON.parse( - Rails.root.join('spec', 'support', 'schemas', 'claims_api', 'v2', 'errors', - 'disability_compensation', 'default_without_source.json').read - ) - - it 'returns a 404 response' do |example| - assert_response_matches_metadata(example.metadata) - end - end - end + describe 'Getting an unprocessable entity response' do + response '422', 'Unprocessable entity' do + schema JSON.parse(Rails.root.join('spec', 'support', 'schemas', 'claims_api', 'v2', 'errors', + 'disability_compensation', 'default_with_source.json').read) - describe 'Getting an unprocessable entity response' do - response '422', 'Unprocessable entity' do - schema JSON.parse(Rails.root.join('spec', 'support', 'schemas', 'claims_api', 'v2', 'errors', - 'disability_compensation', 'default_with_source.json').read) - - def make_request(example) - mock_ccg(scopes) do - submit_request(example.metadata) + def make_request(example) + mock_ccg(scopes) do + submit_request(example.metadata) + end end - end - context 'Violates JSON Schema' do - let(:data) { { data: { attributes: nil } } } + context 'Violates JSON Schema' do + let(:data) { { data: { attributes: nil } } } - let(:disability_comp_request) do - data - end + let(:disability_comp_request) do + data + end - before do |example| - make_request(example) - end + before do |example| + make_request(example) + end - after do |example| - append_example_metadata(example, response) - end + after do |example| + append_example_metadata(example, response) + end - it 'returns a 422 response' do |example| - assert_response_matches_metadata(example.metadata) + it 'returns a 422 response' do |example| + assert_response_matches_metadata(example.metadata) + end end - end - context 'Not a JSON Object' do - let(:data) do - 'This is not valid JSON' - end + context 'Not a JSON Object' do + let(:data) do + 'This is not valid JSON' + end - let(:disability_comp_request) do - data - end + let(:disability_comp_request) do + data + end - before do |example| - make_request(example) - end + before do |example| + make_request(example) + end - after do |example| - append_example_metadata(example, response) - end + after do |example| + append_example_metadata(example, response) + end - it 'returns a 422 response' do |example| - assert_response_matches_metadata(example.metadata) + it 'returns a 422 response' do |example| + assert_response_matches_metadata(example.metadata) + end end end end @@ -730,175 +732,177 @@ def make_request(example) end end - path '/veterans/{veteranId}/526/{id}/attachments', vcr: 'claims_api/disability_comp' do - post 'Upload documents supporting a 526 claim' do - tags 'Disability Compensation Claims' - operationId 'upload526Attachments' - security [ - { productionOauth: ['system/claim.read', 'system/claim.write'] }, - { sandboxOauth: ['system/claim.read', 'system/claim.write'] }, - { bearer_token: [] } - ] - consumes 'multipart/form-data' - produces 'application/json' - put_description = <<~VERBIAGE - Uploads supporting documents related to a disability compensation claim. This endpoint accepts a document binary PDF as part of a multi-part payload. - VERBIAGE - description put_description - - parameter name: :id, in: :path, required: true, type: :string, - description: 'UUID given when Disability Claim was submitted' - - parameter name: 'veteranId', - in: :path, - required: true, - type: :string, - example: '1012667145V762142', - description: 'ID of Veteran' - - let(:veteranId) { '1013062086V794840' } # rubocop:disable RSpec/VariableName - let(:Authorization) { 'Bearer token' } - - attachment_description = <<~VERBIAGE - Attachment contents. Must be provided in binary PDF or [base64 string](https://raw.githubusercontent.com/department-of-veterans-affairs/vets-api/master/modules/claims_api/spec/fixtures/base64pdf) format and less than 11 in x 11 in. - VERBIAGE - parameter name: :attachment1, - in: :formData, - schema: { - type: :object, - properties: { - attachment1: { - type: :file, - description: attachment_description - }, - attachment2: { - type: :file, - description: attachment_description + describe '526 attachments', skip: 'Disabling tests for deactivated /veterans/{veteranId}/526/{id}/attachments' do + path '/veterans/{veteranId}/526/{id}/attachments', vcr: 'claims_api/disability_comp' do + post 'Upload documents supporting a 526 claim' do + tags 'Disability Compensation Claims' + operationId 'upload526Attachments' + security [ + { productionOauth: ['system/claim.read', 'system/claim.write'] }, + { sandboxOauth: ['system/claim.read', 'system/claim.write'] }, + { bearer_token: [] } + ] + consumes 'multipart/form-data' + produces 'application/json' + put_description = <<~VERBIAGE + Uploads supporting documents related to a disability compensation claim. This endpoint accepts a document binary PDF as part of a multi-part payload. + VERBIAGE + description put_description + + parameter name: :id, in: :path, required: true, type: :string, + description: 'UUID given when Disability Claim was submitted' + + parameter name: 'veteranId', + in: :path, + required: true, + type: :string, + example: '1012667145V762142', + description: 'ID of Veteran' + + let(:veteranId) { '1013062086V794840' } # rubocop:disable RSpec/VariableName + let(:Authorization) { 'Bearer token' } + + attachment_description = <<~VERBIAGE + Attachment contents. Must be provided in binary PDF or [base64 string](https://raw.githubusercontent.com/department-of-veterans-affairs/vets-api/master/modules/claims_api/spec/fixtures/base64pdf) format and less than 11 in x 11 in. + VERBIAGE + parameter name: :attachment1, + in: :formData, + schema: { + type: :object, + properties: { + attachment1: { + type: :file, + description: attachment_description + }, + attachment2: { + type: :file, + description: attachment_description + } } } - } - describe 'Getting an accepted response' do - response '202', 'upload response' do - schema JSON.parse(Rails.root.join('spec', 'support', 'schemas', 'claims_api', 'v2', - 'veterans', 'disability_compensation', 'attachments.json').read) + describe 'Getting an accepted response' do + response '202', 'upload response' do + schema JSON.parse(Rails.root.join('spec', 'support', 'schemas', 'claims_api', 'v2', + 'veterans', 'disability_compensation', 'attachments.json').read) - let(:data) do - temp = Rails.root.join('modules', 'claims_api', 'spec', 'fixtures', 'v2', 'veterans', - 'disability_compensation', 'form_526_json_api.json').read - temp = JSON.parse(temp) + let(:data) do + temp = Rails.root.join('modules', 'claims_api', 'spec', 'fixtures', 'v2', 'veterans', + 'disability_compensation', 'form_526_json_api.json').read + temp = JSON.parse(temp) - temp - end + temp + end - let(:scopes) { %w[system/claim.write] } - let(:auto_claim) { create(:auto_established_claim_v2) } - let(:attachment1) do - Rack::Test::UploadedFile.new(Rails.root.join(*'/modules/claims_api/spec/fixtures/extras.pdf'.split('/')) - .to_s) - end - let(:attachment2) do - Rack::Test::UploadedFile.new(Rails.root.join(*'/modules/claims_api/spec/fixtures/extras.pdf'.split('/')) - .to_s) - end - let(:id) { auto_claim.id } + let(:scopes) { %w[system/claim.write] } + let(:auto_claim) { create(:auto_established_claim_v2) } + let(:attachment1) do + Rack::Test::UploadedFile.new(Rails.root.join(*'/modules/claims_api/spec/fixtures/extras.pdf'.split('/')) + .to_s) + end + let(:attachment2) do + Rack::Test::UploadedFile.new(Rails.root.join(*'/modules/claims_api/spec/fixtures/extras.pdf'.split('/')) + .to_s) + end + let(:id) { auto_claim.id } - before do |example| - mock_ccg(scopes) do - submit_request(example.metadata) + before do |example| + mock_ccg(scopes) do + submit_request(example.metadata) + end end - end - after do |example| - example.metadata[:response][:content] = { - 'application/json' => { - example: JSON.parse(response.body, symbolize_names: true) + after do |example| + example.metadata[:response][:content] = { + 'application/json' => { + example: JSON.parse(response.body, symbolize_names: true) + } } - } - end + end - it 'returns a valid 202 response' do |example| - assert_response_matches_metadata(example.metadata) + it 'returns a valid 202 response' do |example| + assert_response_matches_metadata(example.metadata) + end end end - end - describe 'Getting a 401 response' do - response '401', 'Unauthorized' do - schema JSON.parse(Rails.root.join('spec', 'support', 'schemas', 'claims_api', 'v2', 'errors', - 'disability_compensation', 'default.json').read) + describe 'Getting a 401 response' do + response '401', 'Unauthorized' do + schema JSON.parse(Rails.root.join('spec', 'support', 'schemas', 'claims_api', 'v2', 'errors', + 'disability_compensation', 'default.json').read) - let(:data) do - temp = Rails.root.join('modules', 'claims_api', 'spec', 'fixtures', 'v2', 'veterans', - 'disability_compensation', 'form_526_json_api.json').read - temp = JSON.parse(temp) + let(:data) do + temp = Rails.root.join('modules', 'claims_api', 'spec', 'fixtures', 'v2', 'veterans', + 'disability_compensation', 'form_526_json_api.json').read + temp = JSON.parse(temp) - temp - end + temp + end - let(:scopes) { %w[system/claim.write] } - let(:auto_claim) { create(:auto_established_claim) } - let(:attachment1) do - Rack::Test::UploadedFile.new(Rails.root.join(*'/modules/claims_api/spec/fixtures/extras.pdf'.split('/')) - .to_s) - end - let(:attachment2) do - Rack::Test::UploadedFile.new(Rails.root.join(*'/modules/claims_api/spec/fixtures/extras.pdf'.split('/')) - .to_s) - end - let(:id) { auto_claim.id } - let(:Authorization) { nil } + let(:scopes) { %w[system/claim.write] } + let(:auto_claim) { create(:auto_established_claim) } + let(:attachment1) do + Rack::Test::UploadedFile.new(Rails.root.join(*'/modules/claims_api/spec/fixtures/extras.pdf'.split('/')) + .to_s) + end + let(:attachment2) do + Rack::Test::UploadedFile.new(Rails.root.join(*'/modules/claims_api/spec/fixtures/extras.pdf'.split('/')) + .to_s) + end + let(:id) { auto_claim.id } + let(:Authorization) { nil } - before do |example| - submit_request(example.metadata) - end + before do |example| + submit_request(example.metadata) + end - after do |example| - example.metadata[:response][:content] = { - 'application/json' => { - example: JSON.parse(response.body, symbolize_names: true) + after do |example| + example.metadata[:response][:content] = { + 'application/json' => { + example: JSON.parse(response.body, symbolize_names: true) + } } - } - end + end - it 'returns a 401 response' do |example| - assert_response_matches_metadata(example.metadata) + it 'returns a 401 response' do |example| + assert_response_matches_metadata(example.metadata) + end end end - end - describe 'Getting a 404 response' do - response '404', 'Resource not found' do - schema JSON.parse(Rails.root.join('spec', 'support', 'schemas', 'claims_api', 'v2', 'errors', - 'disability_compensation', 'default_without_source.json').read) + describe 'Getting a 404 response' do + response '404', 'Resource not found' do + schema JSON.parse(Rails.root.join('spec', 'support', 'schemas', 'claims_api', 'v2', 'errors', + 'disability_compensation', 'default_without_source.json').read) - let(:scopes) { %w[claim.write] } - let(:attachment1) do - Rack::Test::UploadedFile.new(Rails.root.join(*'/modules/claims_api/spec/fixtures/extras.pdf'.split('/')) - .to_s) - end - let(:attachment2) do - Rack::Test::UploadedFile.new(Rails.root.join(*'/modules/claims_api/spec/fixtures/extras.pdf'.split('/')) - .to_s) - end - let(:id) { 999_999_999 } + let(:scopes) { %w[claim.write] } + let(:attachment1) do + Rack::Test::UploadedFile.new(Rails.root.join(*'/modules/claims_api/spec/fixtures/extras.pdf'.split('/')) + .to_s) + end + let(:attachment2) do + Rack::Test::UploadedFile.new(Rails.root.join(*'/modules/claims_api/spec/fixtures/extras.pdf'.split('/')) + .to_s) + end + let(:id) { 999_999_999 } - before do |example| - mock_ccg(scopes) do - submit_request(example.metadata) + before do |example| + mock_ccg(scopes) do + submit_request(example.metadata) + end end - end - after do |example| - example.metadata[:response][:content] = { - 'application/json' => { - example: JSON.parse(response.body, symbolize_names: true) + after do |example| + example.metadata[:response][:content] = { + 'application/json' => { + example: JSON.parse(response.body, symbolize_names: true) + } } - } - end + end - it 'returns a 404 response' do |example| - assert_response_matches_metadata(example.metadata) + it 'returns a 404 response' do |example| + assert_response_matches_metadata(example.metadata) + end end end end diff --git a/modules/claims_api/spec/requests/v2/veterans/rswag_power_of_attorney_spec.rb b/modules/claims_api/spec/requests/v2/veterans/rswag_power_of_attorney_spec.rb index 086123a0ce6..0f6e8117e31 100644 --- a/modules/claims_api/spec/requests/v2/veterans/rswag_power_of_attorney_spec.rb +++ b/modules/claims_api/spec/requests/v2/veterans/rswag_power_of_attorney_spec.rb @@ -1053,9 +1053,10 @@ 'power_of_attorney', 'request_representative', 'submit.json'))) before do |example| + allow(Flipper).to receive(:enabled?).with(:lighthouse_claims_v2_poa_requests_skip_bgs).and_return false allow_any_instance_of(ClaimsApi::PowerOfAttorneyRequestService::Orchestrator) .to receive(:submit_request) - .and_return(true) + .and_return({ 'procId' => '12345' }) FactoryBot.create(:veteran_representative, representative_id: '999999999999', poa_codes: ['067'], first_name: 'Abraham', last_name: 'Lincoln', user_types: ['veteran_service_officer']) @@ -1069,10 +1070,7 @@ after do |example| example.metadata[:response][:content] = { 'application/json' => { - example: JSON.parse(response.body, symbolize_names: true).tap do |json| - json[:data][:attributes] - .merge!(procId: '3857415') - end + example: JSON.parse(response.body, symbolize_names: true) } } end diff --git a/modules/claims_api/spec/support/rswag_config.rb b/modules/claims_api/spec/support/rswag_config.rb index 264da3585fb..589e7b121c8 100644 --- a/modules/claims_api/spec/support/rswag_config.rb +++ b/modules/claims_api/spec/support/rswag_config.rb @@ -98,10 +98,6 @@ def config # rubocop:disable Metrics/MethodLength description: File.read(ClaimsApi::Engine.root.join('app', 'swagger', 'claims_api', 'description', 'v2.md')) }, tags: [ - { - name: 'Veteran Identifier', - description: "Allows authenticated veterans and veteran representatives to retrieve a veteran's id." - }, { name: 'Claims', description: <<~VERBIAGE diff --git a/modules/debts_api/app/models/debts_api/v0/form5655_submission.rb b/modules/debts_api/app/models/debts_api/v0/form5655_submission.rb index e4b578a14c2..e09a3f25242 100644 --- a/modules/debts_api/app/models/debts_api/v0/form5655_submission.rb +++ b/modules/debts_api/app/models/debts_api/v0/form5655_submission.rb @@ -73,7 +73,7 @@ def set_vha_completed_state(status, options) submission.submitted! StatsD.increment("#{STATS_KEY}.vha.success") else - submission.failed! + submission.register_failure("VHA set completed state: #{status.failure_info}") StatsD.increment("#{STATS_KEY}.vha.failure") Rails.logger.error('Batch FSR Processing Failed', status.failure_info) end @@ -81,6 +81,9 @@ def set_vha_completed_state(status, options) def register_failure(message) failed! + if message.blank? + message = "An unknown error occurred while submitting the form from call_location: #{caller_locations&.first}" + end update(error_message: message) Rails.logger.error("Form5655Submission id: #{id} failed", message) StatsD.increment("#{STATS_KEY}.failure") diff --git a/modules/debts_api/spec/models/debt_api/v0/form5655_submission_spec.rb b/modules/debts_api/spec/models/debt_api/v0/form5655_submission_spec.rb index 929a557b1b0..fc465ce2415 100644 --- a/modules/debts_api/spec/models/debt_api/v0/form5655_submission_spec.rb +++ b/modules/debts_api/spec/models/debt_api/v0/form5655_submission_spec.rb @@ -153,7 +153,7 @@ it 'sets the submission as failed' do allow(Rails.logger).to receive(:error) described_class.new.set_vha_completed_state(status, { 'submission_id' => form5655_submission.id }) - expect(form5655_submission.failed?).to eq(true) + expect(form5655_submission.error_message).to eq("VHA set completed state: [\"#{id}\"]") expect(Rails.logger).to have_received(:error).with('Batch FSR Processing Failed', [id]) end end @@ -173,6 +173,13 @@ expect(form5655_submission.error_message).to eq(message) end + it 'saves generic error message with call_location when message is blank' do + form5655_submission.register_failure(nil) + expect(form5655_submission.error_message).to start_with( + 'An unknown error occurred while submitting the form from call_location:' + ) + end + context 'combined form' do it 'saves error message and logs error' do form5655_submission.public_metadata = { combined: true } diff --git a/modules/decision_reviews/spec/dr_spec_helper.rb b/modules/decision_reviews/spec/dr_spec_helper.rb new file mode 100644 index 00000000000..72f4efcade9 --- /dev/null +++ b/modules/decision_reviews/spec/dr_spec_helper.rb @@ -0,0 +1,78 @@ +# frozen_string_literal: true + +# This file is copied to spec/ when you run 'rails generate rspec:install' +ENV['RAILS_ENV'] ||= 'test' +ENV['RACK_ENV'] ||= 'test' # Shrine uses this to determine log levels +require File.expand_path('../../../config/environment', __dir__) +# Prevent database truncation if the environment is production +abort('The Rails environment is running in production mode!') if Rails.env.production? +require 'statsd-instrument' +require 'statsd/instrument/matchers' +require 'rspec/rails' +require 'webmock/rspec' +require 'shoulda/matchers' +require 'support/stub_va_profile' +require 'support/mpi/stub_mpi' +require 'support/factory_bot' + +WebMock.disable_net_connect!(allow_localhost: true) + +# Helper function for testing changes to the global Settings object +# Pass in the particular settings object that you want to change, +# along with temporary values that should be set on that object. +# For example, +# +# with_settings(Settings.some_group, {foo: 'temp1', bar: 'temp2'}) do +# expect(something).to equal(2) +# end +def with_settings(settings, temp_values) + old_settings = temp_values.keys.index_with { |k| settings[k] } + + # The `Config` object doesn't support `.merge!`, so manually copy + # the updated values. + begin + temp_values.each do |k, v| + settings[k] = v + end + + yield + ensure + old_settings.each do |k, v| + settings[k] = v + end + end +end + +ActiveRecord::Migration.maintain_test_schema! + +FactoryBot::SyntaxRunner.class_eval do + include RSpec::Mocks::ExampleMethods +end + +RSpec.configure do |config| + # Adding support for url_helper + config.include Rails.application.routes.url_helpers + + # If you're not using ActiveRecord, or you'd prefer not to run each of your + # examples within a transaction, remove the following line or assign false + # instead of true. + config.use_transactional_fixtures = true + + config.infer_spec_type_from_file_location! + + # Filter lines from Rails gems in backtraces. + config.filter_rails_from_backtrace! + # arbitrary gems may also be filtered via: + # config.filter_gems_from_backtrace("gem name") + + config.include StatsD::Instrument::Matchers +end + +Gem::Deprecate.skip = true + +Shoulda::Matchers.configure do |config| + config.integrate do |with| + with.test_framework :rspec + with.library :rails + end +end diff --git a/modules/decision_reviews/spec/factories/secondary_appeal_forms.rb b/modules/decision_reviews/spec/factories/secondary_appeal_forms.rb new file mode 100644 index 00000000000..da0c3042904 --- /dev/null +++ b/modules/decision_reviews/spec/factories/secondary_appeal_forms.rb @@ -0,0 +1,55 @@ +# frozen_string_literal: true + +FactoryBot.define do + factory :secondary_appeal_form4142_module, class: 'SecondaryAppealForm' do + guid { SecureRandom.uuid } + form_id { '21-4142' } + form do + { + veteran: { + fullName: { + first: 'Person', + last: 'McPerson' + }, + dateOfBirth: '1983-01-23', + ssn: '111223333', + address: {}, + homePhone: '123-456-7890' + }, + patientIdentification: { + isRequestingOwnMedicalRecords: true + + }, + providerFacility: [{ + providerFacilityName: 'provider 1', + treatmentDateRange: [ + { + from: '1980-1-1', + to: '1985-1-1' + }, + { + from: '1986-1-1', + to: '1987-1-1' + } + ], + providerFacilityAddress: { + street: '123 Main Street', + street2: '1B', + city: 'Baltimore', + state: 'MD', + country: 'USA', + postalCode: '21200-1111' + } + }], + preparerIdentification: { + relationshipToVeteran: 'self' + }, + acknowledgeToReleaseInformation: true, + limitedConsent: 'some string', + privacyAgreementAccepted: true + }.to_json + end + delete_date { nil } + appeal_submission { create(:appeal_submission_module) } + end +end diff --git a/modules/decision_reviews/spec/lib/v1/service_spec.rb b/modules/decision_reviews/spec/lib/v1/service_spec.rb index 4224b69c165..0d9bb6cf2d3 100644 --- a/modules/decision_reviews/spec/lib/v1/service_spec.rb +++ b/modules/decision_reviews/spec/lib/v1/service_spec.rb @@ -1,6 +1,7 @@ # frozen_string_literal: true -require 'rails_helper' +require './modules/decision_reviews/spec/dr_spec_helper' +require './modules/decision_reviews/spec/support/vcr_helper' require 'decision_reviews/v1/service' describe DecisionReviews::V1::Service do diff --git a/modules/decision_reviews/spec/sidekiq/delete_saved_claim_records_job_spec.rb b/modules/decision_reviews/spec/sidekiq/delete_saved_claim_records_job_spec.rb index 46ca6d9afed..2d7198699b8 100644 --- a/modules/decision_reviews/spec/sidekiq/delete_saved_claim_records_job_spec.rb +++ b/modules/decision_reviews/spec/sidekiq/delete_saved_claim_records_job_spec.rb @@ -1,6 +1,7 @@ # frozen_string_literal: true -require 'rails_helper' +require './modules/decision_reviews/spec/dr_spec_helper' +require './modules/decision_reviews/spec/support/sidekiq_helper' RSpec.describe DecisionReviews::DeleteSavedClaimRecordsJob, type: :job do subject { described_class } diff --git a/modules/decision_reviews/spec/sidekiq/failure_notification_email_job_spec.rb b/modules/decision_reviews/spec/sidekiq/failure_notification_email_job_spec.rb index b6305ae3e98..62f60158ab9 100644 --- a/modules/decision_reviews/spec/sidekiq/failure_notification_email_job_spec.rb +++ b/modules/decision_reviews/spec/sidekiq/failure_notification_email_job_spec.rb @@ -1,6 +1,7 @@ # frozen_string_literal: true -require 'rails_helper' +require './modules/decision_reviews/spec/dr_spec_helper' +require './modules/decision_reviews/spec/support/sidekiq_helper' require 'decision_review_v1/service' RSpec.describe DecisionReviews::FailureNotificationEmailJob, type: :job do diff --git a/modules/decision_reviews/spec/sidekiq/form4142_submit_spec.rb b/modules/decision_reviews/spec/sidekiq/form4142_submit_spec.rb index e72ea88e98a..763cb002a60 100644 --- a/modules/decision_reviews/spec/sidekiq/form4142_submit_spec.rb +++ b/modules/decision_reviews/spec/sidekiq/form4142_submit_spec.rb @@ -1,6 +1,8 @@ # frozen_string_literal: true -require 'rails_helper' +require './modules/decision_reviews/spec/dr_spec_helper' +require './modules/decision_reviews/spec/support/sidekiq_helper' +require './modules/decision_reviews/spec/support/vcr_helper' require 'decision_reviews/v1/service' require 'decision_reviews/v1/helpers' diff --git a/modules/decision_reviews/spec/sidekiq/hlr_status_updater_job_spec.rb b/modules/decision_reviews/spec/sidekiq/hlr_status_updater_job_spec.rb index 82739894a03..6fc43fedb37 100644 --- a/modules/decision_reviews/spec/sidekiq/hlr_status_updater_job_spec.rb +++ b/modules/decision_reviews/spec/sidekiq/hlr_status_updater_job_spec.rb @@ -1,12 +1,11 @@ # frozen_string_literal: true -require 'rails_helper' -require './modules/decision_reviews/spec/sidekiq/shared_examples_for_status_updater_jobs' +require './modules/decision_reviews/spec/support/engine_shared_examples_for_status_updater_jobs' RSpec.describe DecisionReviews::HlrStatusUpdaterJob, type: :job do subject { described_class } - include_context 'status updater job context', SavedClaim::HigherLevelReview + include_context 'engine status updater job context', SavedClaim::HigherLevelReview describe 'perform' do context 'with flag enabled', :aggregate_failures do @@ -14,7 +13,7 @@ Flipper.enable :decision_review_saved_claim_hlr_status_updater_job_enabled end - include_examples 'status updater job with base forms', SavedClaim::HigherLevelReview + include_examples 'engine status updater job with base forms', SavedClaim::HigherLevelReview end context 'with flag disabled' do diff --git a/modules/decision_reviews/spec/sidekiq/nod_email_loader_job_spec.rb b/modules/decision_reviews/spec/sidekiq/nod_email_loader_job_spec.rb index 65dfa92d900..4feb43ad8d8 100644 --- a/modules/decision_reviews/spec/sidekiq/nod_email_loader_job_spec.rb +++ b/modules/decision_reviews/spec/sidekiq/nod_email_loader_job_spec.rb @@ -1,6 +1,7 @@ # frozen_string_literal: true -require 'rails_helper' +require './modules/decision_reviews/spec/dr_spec_helper' +require './modules/decision_reviews/spec/support/sidekiq_helper' RSpec.describe DecisionReviews::NodEmailLoaderJob, type: :job do subject { described_class } diff --git a/modules/decision_reviews/spec/sidekiq/nod_send_email_job_spec.rb b/modules/decision_reviews/spec/sidekiq/nod_send_email_job_spec.rb index 57947348057..76e4c81313c 100644 --- a/modules/decision_reviews/spec/sidekiq/nod_send_email_job_spec.rb +++ b/modules/decision_reviews/spec/sidekiq/nod_send_email_job_spec.rb @@ -1,6 +1,7 @@ # frozen_string_literal: true -require 'rails_helper' +require './modules/decision_reviews/spec/dr_spec_helper' +require './modules/decision_reviews/spec/support/sidekiq_helper' require 'decision_review_v1/service' RSpec.describe DecisionReviews::NodSendEmailJob, type: :job do diff --git a/modules/decision_reviews/spec/sidekiq/nod_status_updater_job_spec.rb b/modules/decision_reviews/spec/sidekiq/nod_status_updater_job_spec.rb index 4cf61deefb5..921e7a07318 100644 --- a/modules/decision_reviews/spec/sidekiq/nod_status_updater_job_spec.rb +++ b/modules/decision_reviews/spec/sidekiq/nod_status_updater_job_spec.rb @@ -1,12 +1,11 @@ # frozen_string_literal: true -require 'rails_helper' -require './modules/decision_reviews/spec/sidekiq/shared_examples_for_status_updater_jobs' +require './modules/decision_reviews/spec/support/engine_shared_examples_for_status_updater_jobs' RSpec.describe DecisionReviews::NodStatusUpdaterJob, type: :job do subject { described_class } - include_context 'status updater job context', SavedClaim::NoticeOfDisagreement + include_context 'engine status updater job context', SavedClaim::NoticeOfDisagreement describe 'perform' do context 'with flag enabled', :aggregate_failures do @@ -14,8 +13,8 @@ Flipper.enable :decision_review_saved_claim_nod_status_updater_job_enabled end - include_examples 'status updater job with base forms', SavedClaim::NoticeOfDisagreement - include_examples 'status updater job when forms include evidence', SavedClaim::NoticeOfDisagreement + include_examples 'engine status updater job with base forms', SavedClaim::NoticeOfDisagreement + include_examples 'engine status updater job when forms include evidence', SavedClaim::NoticeOfDisagreement end context 'with flag disabled' do diff --git a/modules/decision_reviews/spec/sidekiq/sc_status_updater_job_spec.rb b/modules/decision_reviews/spec/sidekiq/sc_status_updater_job_spec.rb index df225707942..7f1f39bf5b3 100644 --- a/modules/decision_reviews/spec/sidekiq/sc_status_updater_job_spec.rb +++ b/modules/decision_reviews/spec/sidekiq/sc_status_updater_job_spec.rb @@ -1,12 +1,11 @@ # frozen_string_literal: true -require 'rails_helper' -require './modules/decision_reviews/spec/sidekiq/shared_examples_for_status_updater_jobs' +require './modules/decision_reviews/spec/support/engine_shared_examples_for_status_updater_jobs' RSpec.describe DecisionReviews::ScStatusUpdaterJob, type: :job do subject { described_class } - include_context 'status updater job context', SavedClaim::SupplementalClaim + include_context 'engine status updater job context', SavedClaim::SupplementalClaim describe 'perform' do context 'with flag enabled', :aggregate_failures do @@ -14,8 +13,169 @@ Flipper.enable :decision_review_saved_claim_sc_status_updater_job_enabled end - include_examples 'status updater job with base forms', SavedClaim::SupplementalClaim - include_examples 'status updater job when forms include evidence', SavedClaim::SupplementalClaim + include_examples 'engine status updater job with base forms', SavedClaim::SupplementalClaim + include_examples 'engine status updater job when forms include evidence', SavedClaim::SupplementalClaim + + context 'SavedClaim records are present with completed status in LH and have associated secondary forms' do + let(:benefits_intake_service) { instance_double(BenefitsIntake::Service) } + let!(:secondary_form1) { create(:secondary_appeal_form4142_module, guid: SecureRandom.uuid) } + let!(:secondary_form2) { create(:secondary_appeal_form4142_module, guid: SecureRandom.uuid) } + let!(:secondary_form3) { create(:secondary_appeal_form4142_module, guid: SecureRandom.uuid) } + let!(:secondary_form_with_delete_date) do + create(:secondary_appeal_form4142_module, guid: SecureRandom.uuid, delete_date: 10.days.from_now) + end + let!(:saved_claim1) do + SavedClaim::SupplementalClaim.create(guid: secondary_form1.appeal_submission.submitted_appeal_uuid, + form: '{}') + end + let!(:saved_claim2) do + SavedClaim::SupplementalClaim.create(guid: secondary_form2.appeal_submission.submitted_appeal_uuid, + form: '{}') + end + let!(:saved_claim3) do + SavedClaim::SupplementalClaim.create(guid: secondary_form3.appeal_submission.submitted_appeal_uuid, + form: '{}') + end + let!(:saved_claim4) do + SavedClaim::SupplementalClaim + .create(guid: secondary_form_with_delete_date.appeal_submission.submitted_appeal_uuid, form: '{}') + end + + let(:upload_response_4142_vbms) do + response = JSON.parse(File.read('spec/fixtures/supplemental_claims/SC_4142_show_response_200.json')) + instance_double(Faraday::Response, body: response) + end + + let(:upload_response_4142_processing) do + response = JSON.parse(File.read('spec/fixtures/supplemental_claims/SC_4142_show_response_200.json')) + response['data']['attributes']['status'] = 'processing' + instance_double(Faraday::Response, body: response) + end + + let(:upload_response_4142_error) do + response = JSON.parse(File.read('spec/fixtures/supplemental_claims/SC_4142_show_response_200.json')) + response['data']['attributes']['status'] = 'error' + response['data']['attributes']['detail'] = 'Invalid PDF' + instance_double(Faraday::Response, body: response) + end + + before do + allow(DecisionReviews::V1::Service).to receive(:new).and_return(service) + allow(BenefitsIntake::Service).to receive(:new).and_return(benefits_intake_service) + allow(service).to receive(:get_supplemental_claim).with(saved_claim1.guid).and_return(response_complete) + allow(service).to receive(:get_supplemental_claim).with(saved_claim2.guid).and_return(response_complete) + allow(service).to receive(:get_supplemental_claim).with(saved_claim3.guid).and_return(response_complete) + allow(service).to receive(:get_supplemental_claim).with(saved_claim4.guid).and_return(response_complete) + + allow(StatsD).to receive(:increment) + allow(Rails.logger).to receive(:info) + end + + it 'does NOT check status for 4142 records that already have a delete_date' do + expect(benefits_intake_service).to receive(:get_status).with(uuid: secondary_form1.guid) + expect(benefits_intake_service).to receive(:get_status).with(uuid: secondary_form2.guid) + expect(benefits_intake_service).to receive(:get_status).with(uuid: secondary_form3.guid) + expect(benefits_intake_service).not_to receive(:get_status) + .with(uuid: secondary_form_with_delete_date.guid) + subject.new.perform + end + + context 'updating 4142 information' do + let(:frozen_time) { DateTime.new(2024, 1, 1).utc } + + before do + allow(benefits_intake_service).to receive(:get_status) + .with(uuid: secondary_form1.guid).and_return(upload_response_4142_vbms) + allow(benefits_intake_service).to receive(:get_status) + .with(uuid: secondary_form2.guid).and_return(upload_response_4142_processing) + allow(benefits_intake_service).to receive(:get_status) + .with(uuid: secondary_form3.guid).and_return(upload_response_4142_error) + end + + it 'updates the status and sets delete_date if appropriate' do + Timecop.freeze(frozen_time) do + subject.new.perform + end + expect(secondary_form1.reload.status).to include('vbms') + expect(secondary_form1.reload.status_updated_at).to eq frozen_time + expect(secondary_form1.reload.delete_date).to eq frozen_time + 59.days + + expect(secondary_form2.reload.status).to include('processing') + expect(secondary_form2.reload.status_updated_at).to eq frozen_time + expect(secondary_form2.reload.delete_date).to be_nil + + expect(secondary_form3.reload.status).to include('error') + expect(secondary_form3.reload.status_updated_at).to eq frozen_time + expect(secondary_form3.reload.delete_date).to be_nil + end + + it 'logs ands increments metrics for updates to the 4142 status' do + Timecop.freeze(frozen_time) do + subject.new.perform + end + + expect(StatsD).to have_received(:increment) + .with('worker.decision_review.saved_claim_sc_status_updater_secondary_form.delete_date_update') + .exactly(1).time + expect(StatsD).to have_received(:increment) + .with('worker.decision_review.saved_claim_sc_status_updater_secondary_form.status', tags: ['status:vbms']) + .exactly(1).time + expect(StatsD).to have_received(:increment) + .with('worker.decision_review.saved_claim_sc_status_updater_secondary_form.status', + tags: ['status:processing']) + .exactly(1).time + + expect(Rails.logger).to have_received(:info) + .with('DecisionReviews::SavedClaimScStatusUpdaterJob secondary form status error', anything) + end + + context 'when the 4142 status is unchanged' do + let(:previous_status) do + { + 'status' => 'processing' + } + end + + before do + secondary_form2.update!(status: previous_status.to_json, status_updated_at: frozen_time - 3.days) + end + + it 'does not log or increment metrics for a status change' do + Timecop.freeze(frozen_time) do + subject.new.perform + end + + expect(secondary_form2.reload.status_updated_at).to eq frozen_time + expect(StatsD).not_to have_received(:increment) + .with('worker.decision_review.saved_claim_sc_status_updater_secondary_form.status', + tags: ['status:processing']) + end + end + + context 'when at least one secondary form is not in vbms status' do + it 'does not set the delete_date for the related SavedCalim::SupplementlClaim' do + Timecop.freeze(frozen_time) do + subject.new.perform + end + + expect(saved_claim1.reload.delete_date).to eq frozen_time + 59.days + expect(saved_claim2.delete_date).to be_nil + end + end + end + + context 'with 4142 flag disabled' do + before do + Flipper.disable :decision_review_track_4142_submissions + end + + it 'does not query SecondaryAppealForm records' do + expect(SecondaryAppealForm).not_to receive(:where) + + subject.new.perform + end + end + end end context 'with flag disabled' do diff --git a/modules/decision_reviews/spec/sidekiq/submit_upload_spec.rb b/modules/decision_reviews/spec/sidekiq/submit_upload_spec.rb index eea8bda8221..d8a0c4abbd1 100644 --- a/modules/decision_reviews/spec/sidekiq/submit_upload_spec.rb +++ b/modules/decision_reviews/spec/sidekiq/submit_upload_spec.rb @@ -1,6 +1,8 @@ # frozen_string_literal: true -require 'rails_helper' +require './modules/decision_reviews/spec/dr_spec_helper' +require './modules/decision_reviews/spec/support/sidekiq_helper' +require './modules/decision_reviews/spec/support/vcr_helper' RSpec.describe DecisionReviews::SubmitUpload, type: :job do subject { described_class } diff --git a/modules/decision_reviews/spec/spec_helper.rb b/modules/decision_reviews/spec/spec_helper.rb deleted file mode 100644 index 9b94ee05d3c..00000000000 --- a/modules/decision_reviews/spec/spec_helper.rb +++ /dev/null @@ -1,8 +0,0 @@ -# frozen_string_literal: true - -# Configure Rails Envinronment -ENV['RAILS_ENV'] = 'test' - -require 'rspec/rails' - -RSpec.configure { |config| config.use_transactional_fixtures = true } diff --git a/modules/decision_reviews/spec/sidekiq/shared_examples_for_status_updater_jobs.rb b/modules/decision_reviews/spec/support/engine_shared_examples_for_status_updater_jobs.rb similarity index 93% rename from modules/decision_reviews/spec/sidekiq/shared_examples_for_status_updater_jobs.rb rename to modules/decision_reviews/spec/support/engine_shared_examples_for_status_updater_jobs.rb index 3c34ff63196..59b55ba78d1 100644 --- a/modules/decision_reviews/spec/sidekiq/shared_examples_for_status_updater_jobs.rb +++ b/modules/decision_reviews/spec/support/engine_shared_examples_for_status_updater_jobs.rb @@ -1,9 +1,10 @@ # frozen_string_literal: true -require 'rails_helper' +require './modules/decision_reviews/spec/dr_spec_helper' +require './modules/decision_reviews/spec/support/sidekiq_helper' require 'decision_reviews/v1/service' -SUBCLASS_INFO = { +ENGINE_SUBCLASS_INFO = { SavedClaim::SupplementalClaim => { service_method: 'get_supplemental_claim', evidence_service_method: 'get_supplemental_claim_upload', statsd_prefix: 'worker.decision_review.saved_claim_sc_status_updater', @@ -21,7 +22,7 @@ service_tag: 'service:board-appeal' } }.freeze -RSpec.shared_context 'status updater job context' do |subclass| +RSpec.shared_context 'engine status updater job context' do |subclass| subject { described_class } let(:service) { instance_double(DecisionReviews::V1::Service) } @@ -29,15 +30,15 @@ let(:guid1) { SecureRandom.uuid } let(:guid2) { SecureRandom.uuid } let(:guid3) { SecureRandom.uuid } - let(:other_subclass1) { SUBCLASS_INFO.keys.excluding(subclass)[0] } - let(:other_subclass2) { SUBCLASS_INFO.keys.excluding(subclass)[1] } - let(:service_method) { SUBCLASS_INFO[subclass][:service_method].to_sym } - let(:other_service_method1) { SUBCLASS_INFO[other_subclass1][:service_method].to_sym } - let(:other_service_method2) { SUBCLASS_INFO[other_subclass2][:service_method].to_sym } + let(:other_subclass1) { ENGINE_SUBCLASS_INFO.keys.excluding(subclass)[0] } + let(:other_subclass2) { ENGINE_SUBCLASS_INFO.keys.excluding(subclass)[1] } + let(:service_method) { ENGINE_SUBCLASS_INFO[subclass][:service_method].to_sym } + let(:other_service_method1) { ENGINE_SUBCLASS_INFO[other_subclass1][:service_method].to_sym } + let(:other_service_method2) { ENGINE_SUBCLASS_INFO[other_subclass2][:service_method].to_sym } - let(:statsd_prefix) { SUBCLASS_INFO[subclass][:statsd_prefix] } - let(:log_prefix) { SUBCLASS_INFO[subclass][:log_prefix] } - let(:service_tag) { SUBCLASS_INFO[subclass][:service_tag] } + let(:statsd_prefix) { ENGINE_SUBCLASS_INFO[subclass][:statsd_prefix] } + let(:log_prefix) { ENGINE_SUBCLASS_INFO[subclass][:log_prefix] } + let(:service_tag) { ENGINE_SUBCLASS_INFO[subclass][:service_tag] } let(:response_complete) do response = JSON.parse(VetsJsonSchema::EXAMPLES.fetch('HLR-SHOW-RESPONSE-200_V2').to_json) # deep copy @@ -62,7 +63,7 @@ end end -RSpec.shared_examples 'status updater job with base forms' do |subclass| +RSpec.shared_examples 'engine status updater job with base forms' do |subclass| context 'SavedClaim records are present' do before do subclass.create(guid: guid1, form: '{}') @@ -206,7 +207,7 @@ end end -RSpec.shared_examples 'status updater job when forms include evidence' do |subclass| +RSpec.shared_examples 'engine status updater job when forms include evidence' do |subclass| let(:upload_response_vbms) do response = JSON.parse(File.read('spec/fixtures/supplemental_claims/SC_upload_show_response_200.json')) instance_double(Faraday::Response, body: response) @@ -226,7 +227,7 @@ instance_double(Faraday::Response, body: response) end - let(:evidence_service_method) { SUBCLASS_INFO[subclass][:evidence_service_method].to_sym } + let(:evidence_service_method) { ENGINE_SUBCLASS_INFO[subclass][:evidence_service_method].to_sym } context 'SavedClaim records are present with completed status in LH and have associated evidence uploads' do let(:guid4) { SecureRandom.uuid } diff --git a/modules/decision_reviews/spec/support/pdf_helper.rb b/modules/decision_reviews/spec/support/pdf_helper.rb new file mode 100644 index 00000000000..0b657889fbd --- /dev/null +++ b/modules/decision_reviews/spec/support/pdf_helper.rb @@ -0,0 +1,9 @@ +# frozen_string_literal: true + +require 'support/pdf_fill_helper' + +RSpec.configure do |config| + %i[model controller request].each do |type| + config.include PdfFillHelper, type: + end +end diff --git a/modules/decision_reviews/spec/support/sidekiq_helper.rb b/modules/decision_reviews/spec/support/sidekiq_helper.rb new file mode 100644 index 00000000000..ca28e6cdc49 --- /dev/null +++ b/modules/decision_reviews/spec/support/sidekiq_helper.rb @@ -0,0 +1,18 @@ +# frozen_string_literal: true + +require 'sidekiq/semantic_logging' +require 'sidekiq/error_tag' +require 'sidekiq/testing' + +Sidekiq::Testing.fake! +Sidekiq::Testing.server_middleware do |chain| + chain.add Sidekiq::SemanticLogging + chain.add SidekiqStatsInstrumentation::ServerMiddleware + chain.add Sidekiq::ErrorTag +end + +RSpec.configure do |config| + config.before do + Sidekiq::Job.clear_all + end +end diff --git a/modules/decision_reviews/spec/support/vcr_helper.rb b/modules/decision_reviews/spec/support/vcr_helper.rb new file mode 100644 index 00000000000..b166c095bfc --- /dev/null +++ b/modules/decision_reviews/spec/support/vcr_helper.rb @@ -0,0 +1,20 @@ +# frozen_string_literal: true + +require 'support/vcr' +require 'support/vcr_multipart_matcher_helper' + +VCR::MATCH_EVERYTHING = { match_requests_on: %i[method uri headers body] }.freeze + +module VCR + def self.all_matches + %i[method uri body] + end +end + +VCR.configure(&:configure_rspec_metadata!) + +VCR.configure do |c| + c.before_record(:force_utf8) do |interaction| + interaction.response.body.force_encoding('UTF-8') + end +end diff --git a/modules/ivc_champva/app/controllers/ivc_champva/v1/uploads_controller.rb b/modules/ivc_champva/app/controllers/ivc_champva/v1/uploads_controller.rb index e453aaaf9bd..25eb41aca09 100644 --- a/modules/ivc_champva/app/controllers/ivc_champva/v1/uploads_controller.rb +++ b/modules/ivc_champva/app/controllers/ivc_champva/v1/uploads_controller.rb @@ -36,10 +36,42 @@ def submit render json: { error_message: "Error: #{e.message}" }, status: :internal_server_error end + # Modified from claim_documents_controller.rb: + def unlock_file(file, file_password) + return file unless File.extname(file) == '.pdf' && file_password + + pdftk = PdfForms.new(Settings.binaries.pdftk) + tmpf = Tempfile.new(['decrypted_form_attachment', '.pdf']) + + begin + pdftk.call_pdftk(file.tempfile.path, 'input_pw', file_password, 'output', tmpf.path) + rescue PdfForms::PdftkError => e + file_regex = %r{/(?:\w+/)*[\w-]+\.pdf\b} + password_regex = /(input_pw).*?(output)/ + sanitized_message = e.message.gsub(file_regex, '[FILTERED FILENAME]').gsub(password_regex, '\1 [FILTERED] \2') + log_message_to_sentry(sanitized_message, 'warn') + raise Common::Exceptions::UnprocessableEntity.new( + detail: I18n.t('errors.messages.uploads.pdf.incorrect_password'), + source: 'IvcChampva::V1::UploadsController' + ) + end + + file.tempfile.unlink + file.tempfile = tmpf + file + end + def submit_supporting_documents if %w[10-10D 10-7959C 10-7959F-2 10-7959A].include?(params[:form_id]) attachment = PersistentAttachments::MilitaryRecords.new(form_id: params[:form_id]) - attachment.file = params['file'] + + if Flipper.enabled?(:champva_pdf_decrypt, @current_user) + unlocked = unlock_file(params['file'], params['password']) + attachment.file = params['password'] ? unlocked : params['file'] + else + attachment.file = params['file'] + end + raise Common::Exceptions::ValidationErrors, attachment unless attachment.valid? attachment.save @@ -49,20 +81,48 @@ def submit_supporting_documents private - def handle_file_uploads(form_id, parsed_form_data) - file_paths, metadata = get_file_paths_and_metadata(parsed_form_data) - statuses, error_message = FileUploader.new(form_id, metadata, file_paths, true).handle_uploads - statuses = Array(statuses) + if Flipper.enabled?(:champva_multiple_stamp_retry, @current_user) + def handle_file_uploads(form_id, parsed_form_data) + attempt = 0 + max_attempts = 1 + + begin + file_paths, metadata = get_file_paths_and_metadata(parsed_form_data) + file_uploader = FileUploader.new(form_id, metadata, file_paths, true) + statuses, error_message = file_uploader.handle_uploads + rescue => e + attempt += 1 + error_message_downcase = e.message.downcase + Rails.logger.error "Error handling file uploads (attempt #{attempt}): #{e.message}" + + if error_message_downcase.include?('failed to generate stamped file') || + (error_message_downcase.include?('unable to find file') && attempt <= max_attempts) + Rails.logger.error 'Retrying in 1 seconds...' + sleep 1 + retry + else + return [[], 'Error handling file uploads'] + end + end - # Retry attempt if specific error message is found - if statuses.any? do |status| - status.is_a?(String) && status.include?('No such file or directory @ rb_sysopen') + [statuses, error_message] end + else + def handle_file_uploads(form_id, parsed_form_data) file_paths, metadata = get_file_paths_and_metadata(parsed_form_data) statuses, error_message = FileUploader.new(form_id, metadata, file_paths, true).handle_uploads - end + statuses = Array(statuses) + + # Retry attempt if specific error message is found + if statuses.any? do |status| + status.is_a?(String) && status.include?('No such file or directory @ rb_sysopen') + end + file_paths, metadata = get_file_paths_and_metadata(parsed_form_data) + statuses, error_message = FileUploader.new(form_id, metadata, file_paths, true).handle_uploads + end - [statuses, error_message] + [statuses, error_message] + end end def get_attachment_ids_and_form(parsed_form_data) diff --git a/modules/ivc_champva/app/form_mappings/vha_10_7959a.json.erb b/modules/ivc_champva/app/form_mappings/vha_10_7959a.json.erb index 187ca5e087e..b30cec049f7 100644 --- a/modules/ivc_champva/app/form_mappings/vha_10_7959a.json.erb +++ b/modules/ivc_champva/app/form_mappings/vha_10_7959a.json.erb @@ -24,7 +24,7 @@ "form1[0].#subform[0].#area[0].OutsdWrkAccdnt[0]": "<%= ['true', true].include?(form.data.dig('claims', 0, 'claim_is_auto_related')) ? 0 : 1 %>", "form1[0].#subform[0].PtntCverage[0]": "<%= ['true', true].include?(form.data.dig('has_ohi')) ? 0 : 1 %>", "form1[0].#subform[0].#area[1].RadioButtonList[0]": "<%= form.data.dig('policies', 0, 'type') === 'group' ? 1 : - form.data.dig('policies', 0, 'type') === 'non_group' ? 2 : + form.data.dig('policies', 0, 'type') === 'nonGroup' ? 2 : form.data.dig('policies', 0, 'type') === 'medicare' ? 3 : form.data.dig('policies', 0, 'type') === 'other' ? 4 : 0 %>", "form1[0].#subform[0].#area[1].SpecifyOtherPrimaryHealthInsurance[0]": "<%= form.data.dig('policies', 0, 'other_type') %>", diff --git a/modules/ivc_champva/app/services/ivc_champva/attachments.rb b/modules/ivc_champva/app/services/ivc_champva/attachments.rb index 3720f51aead..60bb476d2ed 100644 --- a/modules/ivc_champva/app/services/ivc_champva/attachments.rb +++ b/modules/ivc_champva/app/services/ivc_champva/attachments.rb @@ -4,7 +4,7 @@ module IvcChampva module Attachments attr_accessor :form_id, :uuid, :data - def handle_attachments(file_path) + def handle_attachments(file_path) # rubocop:disable Metrics/MethodLength file_paths = [file_path] attachments = get_attachments @@ -15,8 +15,21 @@ def handle_attachments(file_path) else "#{uuid}_#{form_id}_supporting_doc-#{index}.pdf" end - new_file_path = File.join(File.dirname(attachment), new_file_name) - File.rename(attachment, new_file_path) + + new_file_path = if Flipper.enabled?(:champva_pdf_decrypt, @current_user) + File.join('tmp', new_file_name) + else + File.join(File.dirname(attachment), new_file_name) + end + + if Flipper.enabled?(:champva_pdf_decrypt, @current_user) + # Use FileUtils.mv to handle `Errno::EXDEV` error since encrypted PDFs + # get stashed in the clamav_tmp dir which is a different device on staging, apparently + FileUtils.mv(attachment, new_file_path) # Performs a copy automatically if mv fails + else + File.rename(attachment, new_file_path) + end + file_paths << new_file_path end diff --git a/modules/ivc_champva/spec/requests/ivc_champva/v1/forms/uploads_spec.rb b/modules/ivc_champva/spec/requests/ivc_champva/v1/forms/uploads_spec.rb index 5f7b9cd9c76..b603e2d2537 100644 --- a/modules/ivc_champva/spec/requests/ivc_champva/v1/forms/uploads_spec.rb +++ b/modules/ivc_champva/spec/requests/ivc_champva/v1/forms/uploads_spec.rb @@ -127,6 +127,38 @@ end end + describe '#unlock_file' do + before do + allow(Flipper).to receive(:enabled?) + .with(:champva_pdf_decrypt, @current_user) + .and_return(true) + end + + context 'with locked PDF and no provided password' do + let(:locked_file) { fixture_file_upload('locked_pdf_password_is_test.pdf', 'application/pdf') } + + it 'rejects locked PDFs if no password is provided' do + post '/ivc_champva/v1/forms/submit_supporting_documents', params: { form_id: '10-10D', file: locked_file } + expect(response).to have_http_status(:unprocessable_entity) + expect( + response.parsed_body['errors'].first['title'] + ).to eq("File #{I18n.t('errors.messages.uploads.pdf.invalid')}") + end + + it 'accepts locked PDFs with the correct password' do + post '/ivc_champva/v1/forms/submit_supporting_documents', + params: { form_id: '10-10D', file: locked_file, password: 'test' } + expect(response).to have_http_status(:ok) + end + + it 'rejects locked PDFs with the incorrect password' do + post '/ivc_champva/v1/forms/submit_supporting_documents', + params: { form_id: '10-10D', file: locked_file, password: 'bad' } + expect(response).to have_http_status(:unprocessable_entity) + end + end + end + describe '#supporting_document_ids' do it 'returns the correct supporting document ids' do documents = [double('Document', id: 1), double('Document', id: 2)] @@ -304,6 +336,39 @@ expect(error_message).to eq('Upload failed') end end + + context 'when file uploads fail with other errors retry once' do + subject(:result) { controller.send(:handle_file_uploads, form_id, parsed_form_data) } + + let(:failure_response) { [[400], 'Upload failed'] } + let(:expected_statuses) { [400] } + let(:expected_error_message) { 'Upload failed' } + + before do + allow(Flipper).to receive(:enabled?).with(:champva_multiple_stamp_retry, @current_user).and_return(true) + allow(file_uploader).to receive(:handle_uploads).and_return(failure_response) + end + + it 'returns the error statuses and error message' do + expect(result).to eq([expected_statuses, expected_error_message]) + end + end + + context 'when a document is loaded and is missing' do + before do + allow(Flipper).to receive(:enabled?).with(:champva_multiple_stamp_retry, @current_user).and_return(true) + allow(file_uploader).to receive(:handle_uploads).and_return([['No such file '], + 'File not found']) + end + + it 'retries the file uploads and returns the error message' do + allow(file_uploader).to receive(:handle_uploads).and_return([[200], nil]) + + statuses, error_message = controller.send(:handle_file_uploads, form_id, parsed_form_data) + expect(statuses).to eq([200]) + expect(error_message).to be_nil + end + end end end end diff --git a/modules/ivc_champva/spec/services/attachments_spec.rb b/modules/ivc_champva/spec/services/attachments_spec.rb index b759188d0d2..5ca272f7312 100644 --- a/modules/ivc_champva/spec/services/attachments_spec.rb +++ b/modules/ivc_champva/spec/services/attachments_spec.rb @@ -14,6 +14,12 @@ def initialize(form_id, uuid, data) end RSpec.describe IvcChampva::Attachments do + before do + allow(Flipper).to receive(:enabled?) + .with(:champva_pdf_decrypt, @current_user) + .and_return(false) + end + # Mocking a class to include the Attachments module let(:form_id) { 'vha_10_7959c' } let(:uuid) { 'f4ae6102-7f05-485a-948c-c0d9ef028983' } diff --git a/modules/mobile/docs/index.html b/modules/mobile/docs/index.html index 1bdb44d63b7..7bfe6d06a54 100755 --- a/modules/mobile/docs/index.html +++ b/modules/mobile/docs/index.html @@ -12,7 +12,7 @@ margin: 0; } -