openapi: 3.0.1
info:
title: Address Validation 5103 Waiver Power of Attorney API
description: "The Address Validation API accepts and validates an address and standardizes it for mailing. It can also help you process an address by:\n* Inferring missing or incorrect address components\n* Supplementing an address with additional information, such as geocode, latitude and longitude, and postal service metadata (when available)\n## Technical Overview\nThe Address Validation API returns validated addresses as they appear in the USPS database for domestic addresses. It validates by separating the address into individual components and then providing component-level validation checks.\n\nThis API is certified by the United States Postal Service (USPS) Coding Accuracy Support System (CASS) and adheres to [United States Postal Service (USPS) Publication 28 standards](https://pe.usps.com/text/pub28/welcome.htm) for domestic, military, and US territory addresses.\n\nFor international addresses, validation relies on Universal Postal Union (UPU) standards. \n\n## Validation\nIf an address is found, it is considered valid based on metadata returned by the Address Validation service, such as the confidence score and the [Delivery Point Validation (DPV)](https://postalpro.usps.com/address-quality/dpv).\n\nIf an address is found, there are multiple checks performed on the validated address. The address can fail validation for a variety of reasons, such as the inability to deliver (for domestic mailing addresses) or the format. For specific reasons why an address failed, refer to the error messages returned.\n\nIf an address is not found, it automatically fails validation.\n\n## Address override indicator\nSometimes an entered address is accurate for a Veteran but does not pass validation rules. These instances can occur when an address is newer than what is in the CASS software or in regions where address data is less accurate.\n\nSystems can accept these addresses despite the lack of address validation by submitting an \"accepted address\" (usually confirmed by the Veteran) to the Contact Information API (see Requirements below). An address is considered accepted after the address has been sent to the validation API and has failed validation, but the Veteran has confirmed the address is correct as entered. The accepted address can then be passed to the Contact Information API using an address override indicator set to show that the validation was overridden. To set an override indicator, the original address and the `overrideValidationKey` returned in the validation API response must be provided to the Contact Information API, in order to prove that a validation attempt has been made before overriding.\n\n## Version Interoperability\n\nTo ensure interoperability between APIs and eliminate the need for transforming data as one API feeds into the other, we strongly recommend using versions of the following APIs that are compatible.\n\n|
If Using
| Then Use...
|\n| :------------------------------:|:----------------------------------------------:|\n| Address Validation API v1/v2 | Contact Information API v1
Profile Service API v1/v2 |\n| Address Validation API v3 | Contact Information API v2
Profile Service API v3 |\n\n## Authorization\nAPI requests are authorized through a symmetric API token provided in an HTTP header with name apikey.\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)."
license:
name: Creative Commons
url: https://developer.va.gov/terms-of-service
version: '3'
servers:
- url: https://sandbox-api.va.gov/services/address-validation/{version}
description: Sandbox
variables:
version:
default: v3
- url: https://api.va.gov/services/address-validation/{version}
description: Production
variables:
version:
default: v3
security:
- apikey: []
tags:
- name: Power of Attorney
description: Used for 21-22 and 21-22a form submissions.
paths:
/forms/2122:
get:
summary: Gets schema for POA form.
deprecated: true
tags:
- Power of Attorney
operationId: GET:/forms/2122
description: Returns schema to automatically generate a POA form.
responses:
'200':
description: schema response
content:
application/json:
example:
data:
- $schema: http://json-schema.org/draft-07/schema#
description: Form 2122 Schema
type: object
additionalProperties: false
required:
- serviceOrganization
properties:
veteran:
type: object
additionalProperties: false
required:
- address
properties:
address:
type: object
additionalProperties: false
required:
- numberAndStreet
- city
- country
allOf:
- if:
properties:
country:
const: US
then:
required:
- zipFirstFive
properties:
numberAndStreet:
description: Street address with number and name.
type: string
pattern: ^([-a-zA-Z0-9'.,]([-a-zA-Z0-9'., ])?)+$
maxLength: 30
aptUnitNumber:
oneOf:
- type: integer
- type: string
city:
description: City for the address.
type: string
example: Portland
state:
description: State or province for the address.
type: string
example: OR
country:
description: Country of the address.
type: string
example: US
zipFirstFive:
description: Zip code (First 5 digits) of the address. Required if country is 'US'.
type: string
pattern: ^\d{5}?$
example: '12345'
zipLastFour:
description: Zip code (Last 4 digits) of the address.
type: string
pattern: ^\d{4}?$
example: '6789'
phone:
$comment: the phone fields must not exceed 20 chars, when concatenated
type: object
additionalProperties: false
required:
- phoneNumber
properties:
countryCode:
description: Country code of the phone number. Required for international phone numbers.
type: string
pattern: ^[0-9]+$
areaCode:
description: Area code of the phone number. Required if countryCode is '1' or not included.
type: string
pattern: ^[2-9][0-9]{2}$
example: '555'
phoneNumber:
description: Phone number.
type: string
pattern: ^[0-9]{1,14}$
example: '5555555'
phoneNumberExt:
type: string
pattern: ^[a-zA-Z0-9]{1,10}$
if:
properties:
countryCode:
anyOf:
- type: string
enum:
- '1'
then:
required:
- areaCode
else:
anyOf:
- required:
- countryCode
- required:
- areaCode
email:
description: Email address of the veteran.
type: string
pattern: .@.
maxLength: 61
example: veteran@example.com
serviceBranch:
description: Service Branch for the veteran.
type: string
enum:
- AIR FORCE
- ARMY
- COAST GUARD
- MARINE CORPS
- NAVY
- SPACE FORCE
- OTHER
example: ARMY
serviceBranchOther:
description: For a 'service branch' of value 'other', please provide the service branch name.
type: string
maxLength: 50
example: Air National Guard
claimant:
type: object
additionalProperties: false
required:
- firstName
- lastName
- address
- relationship
properties:
firstName:
description: First name of Claimant.
type: string
example: John
middleInitial:
description: Middle initial of Claimant.
type: string
example: M
lastName:
description: Last name of Claimant.
type: string
example: Dow
address:
type: object
additionalProperties: false
required:
- numberAndStreet
- city
- country
allOf:
- if:
properties:
country:
const: US
then:
required:
- zipFirstFive
properties:
numberAndStreet:
description: Street address with number and name.
type: string
pattern: ^([-a-zA-Z0-9'.,]([-a-zA-Z0-9'., ])?)+$
maxLength: 30
aptUnitNumber:
oneOf:
- type: integer
- type: string
city:
description: City for the address.
type: string
example: Portland
state:
description: State or province for the address.
type: string
example: OR
country:
description: Country of the address.
type: string
example: US
zipFirstFive:
description: Zip code (First 5 digits) of the address. Required if country is 'US'.
type: string
pattern: ^\d{5}?$
example: '12345'
zipLastFour:
description: Zip code (Last 4 digits) of the address.
type: string
pattern: ^\d{4}?$
example: '6789'
additionalProperties:
type: boolean
phone:
$comment: the phone fields must not exceed 20 chars, when concatenated
type: object
additionalProperties: false
required:
- phoneNumber
properties:
countryCode:
description: Country code of the phone number. Required for international phone numbers.
type: string
pattern: ^[0-9]+$
areaCode:
description: Area code of the phone number. Required if countryCode is '1' or not included.
type: string
pattern: ^[2-9][0-9]{2}$
example: '555'
phoneNumber:
description: Phone number.
type: string
pattern: ^[0-9]{1,14}$
example: '5555555'
phoneNumberExt:
type: string
pattern: ^[a-zA-Z0-9]{1,10}$
if:
properties:
countryCode:
anyOf:
- type: string
enum:
- '1'
then:
required:
- areaCode
else:
anyOf:
- required:
- countryCode
- required:
- areaCode
email:
description: Email address of the claimant.
type: string
pattern: .@.
maxLength: 61
example: claimant@example.com
relationship:
description: Relationship of claimant to the veteran.
type: string
example: Spouse
serviceOrganization:
description: Details of the service organization or individual representing the veteran.
type: object
additionalProperties: false
required:
- poaCode
properties:
poaCode:
description: The POA code of the organization or individual representative
type: string
example: A1Q
organizationName:
description: Name of the service organization.
type: string
example: I help vets LLC.
firstName:
description: First Name of the representative
type: string
example: John
lastName:
description: Last Name of the representative
type: string
example: Doe
jobTitle:
description: Job title of the representative
type: string
example: Veteran Service representative
address:
type: object
description: address details for an individual representative
additionalProperties: false
required:
- numberAndStreet
- city
- country
allOf:
- if:
properties:
country:
const: US
then:
required:
- zipFirstFive
properties:
numberAndStreet:
description: Street address with number and name.
type: string
pattern: ^([-a-zA-Z0-9'.,]([-a-zA-Z0-9'., ])?)+$
maxLength: 30
aptUnitNumber:
oneOf:
- type: integer
- type: string
city:
description: City for the address.
type: string
example: Portland
state:
description: State or province for the address.
type: string
example: OR
country:
description: Country of the address.
type: string
example: US
zipFirstFive:
description: Zip code (First 5 digits) of the address. Required if country is 'US'.
type: string
pattern: ^\d{5}?$
example: '12345'
zipLastFour:
description: Zip code (Last 4 digits) of the address.
type: string
pattern: ^\d{4}?$
example: '6789'
additionalProperties:
type: boolean
email:
description: Email address of the service organization or representative.
type: string
pattern: .@.
maxLength: 61
example: veteran_representative@example.com
appointmentDate:
description: Date of appointment with Veteran.
type: string
pattern: ^(\d{4})-(0[1-9]|1[0-2])-(0[1-9]|[1-2][0-9]|3[0-1])$
recordConsent:
description: AUTHORIZATION FOR REPRESENTATIVE'S ACCESS TO RECORDS PROTECTED BY SECTION 7332, TITLE 38, U.S.C.
type: boolean
consentLimits:
description: Consent in Item 19 for the disclosure of records relating to treatment for drug abuse, alcoholism or alcohol abuse, infection with the human immunodeficiency virus (HIV), or sickle cell anemia is limited as follows.
type: array
items:
type: string
enum:
- DRUG ABUSE
- ALCOHOLISM
- HIV
- SICKLE CELL
example: DRUG ABUSE
consentAddressChange:
description: AUTHORIZATION FOR REPRESENTATIVE TO ACT ON CLAIMANT'S BEHALF TO CHANGE CLAIMANT'S ADDRESS.
type: boolean
signatures:
type: object
additionalProperties: false
required:
- veteran
- representative
properties:
veteran:
description: Base64 encoded png image of the veteran or claimant signature.
title: Signature of the Veteran
type: string
representative:
description: Base64 encoded png image of the representative signature.
title: Signature of the Veteran Representative
type: string
'413':
description: Payload too large
content:
application/json:
schema:
type: object
properties:
message:
type: string
example:
message: Request size limit exceeded
'429':
description: Too many requests
content:
application/json:
schema:
type: object
properties:
message:
type: string
example:
message: API rate limit exceeded
'504':
description: Gateway Timeout
content:
application/json:
schema:
type: object
properties:
message:
type: string
example:
message: The server took too long to respond
post:
summary: Submit a POA form.
tags:
- Power of Attorney
operationId: POST:/forms/2122
security:
- productionOauth:
- claim.read
- claim.write
- sandboxOauth:
- claim.read
- claim.write
- bearer_token: []
description: "Signature images\n\n\n\nIf the request includes signature images for both the Veteran and the representative, the API will:\n\n - Generate VA Form 21-22 PDF for organizations or VA Form 21-22a PDF for individual representatives.\n\n - Automatically establish POA for the representative.\n\n\n\nThe signature can be provided in either of these formats:\n\n - Base64-encoded image or signature block. This allows the API to auto-populate and attach the VA Form\n 21-22 without requiring a manual PDF upload.\n\n - PDF of VA Form 21-22 with an ink signature. This should be attached using the PUT /forms/2122/{id}\n endpoint.\n\n\n\n If signature images are not included in the initial request, the response will return an id which must be\n used to submit the signed PDF via the PUT /forms/2122/{id} endpoint.\n\n\n\nDependent claimant information:\n\n - If dependent claimant information is included in the request, the dependentʼs relationship to the Veteran\n will be validated.\n\n - In this case, the representative will be appointed to the dependent claimant, not the Veteran.\n\n\n\nResponse information:\n\n - A successful submission returns a 200 response, indicating that the request was successfully processed.\n\n - A 200 response does not confirm that the POA has been appointed.\n\n - To check the status of a POA submission, use the GET /forms/2122/{id} endpoint.\n\n"
parameters:
- in: header
name: X-VA-SSN
required: false
description: Claimant SSN if consumer is representative
schema:
type: string
- in: header
name: X-VA-First-Name
required: false
description: Claimant first name if consumer is representative
schema:
type: string
- in: header
name: X-VA-Last-Name
required: false
description: Claimant last name if consumer is representative
schema:
type: string
- in: header
name: X-VA-Birth-Date
required: false
description: Claimant birthdate if consumer is representative, in iso8601 format
schema:
type: string
responses:
'200':
description: 2122 Response
content:
application/json:
example:
data:
id: 00000000-0000-0000-0000-000000000001
type: claims_api_power_of_attorneys
attributes:
date_request_accepted: '2024-01-01'
previous_poa: null
representative:
service_organization:
poa_code: '074'
status: pending
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: Power of Attorney Submission UUID
type:
type: string
attributes:
type: object
additionalProperties: false
required:
- status
- date_request_accepted
- representative
properties:
status:
type: string
description: Says if the power of attorney is pending, submitted, updated or errored
enum:
- pending
- submitted
- updated
- errored
date_request_accepted:
type: string
description: Date request was first accepted
format: date
representative:
type: object
additionalProperties: false
required:
- service_organization
properties:
service_organization:
type: object
additionalProperties: true
required:
- poa_code
properties:
poa_code:
type: string
description: Power of Attorney Code submitted for Veteran
previous_poa:
type: string
nullable: true
description: Current or Previous Power of Attorney Code submitted for Veteran
'401':
description: Unauthorized
content:
application/json:
example:
errors:
- title: Not authorized
detail: Not authorized
code: '401'
status: '401'
schema:
required:
- errors
properties:
errors:
type: array
items:
additionalProperties: false
required:
- title
- detail
- code
- status
properties:
title:
type: string
description: HTTP error title
detail:
type: string
description: HTTP error detail
code:
type: string
description: HTTP error code
status:
type: string
description: HTTP error code
source:
type: object
additionalProperties: false
description: Source of error
properties:
pointer:
type: string
description: Pointer to source of error
'413':
description: Payload too large
content:
application/json:
schema:
type: object
properties:
message:
type: string
example:
message: Request size limit exceeded
'422':
description: Unprocessable entity
content:
application/json:
example:
errors:
- status: 422
detail: 'The property /serviceOrganization/poaCode did not match the following requirements: {"description"=>"The POA code of the organization or individual representative", "type"=>"string", "example"=>"A1Q"}'
source: /serviceOrganization/poaCode
schema:
required:
- errors
properties:
errors:
type: array
items:
additionalProperties: false
required:
- status
- detail
- source
properties:
status:
type: integer
description: HTTP error code
detail:
type: string
description: HTTP error detail
source:
type: string
'429':
description: Too many requests
content:
application/json:
schema:
type: object
properties:
message:
type: string
example:
message: API rate limit exceeded
'504':
description: Gateway Timeout
content:
application/json:
schema:
type: object
properties:
message:
type: string
example:
message: The server took too long to respond
requestBody:
content:
application/json:
schema:
type: object
required:
- data
properties:
data:
type: object
required:
- attributes
example:
type: form/21-22
attributes:
serviceOrganization:
poaCode: A1Q
properties:
attributes:
$schema: http://json-schema.org/draft-07/schema#
description: Form 2122 Schema
type: object
additionalProperties: false
required:
- serviceOrganization
properties:
veteran:
type: object
additionalProperties: false
required:
- address
properties:
address:
type: object
additionalProperties: false
required:
- numberAndStreet
- city
- country
allOf:
- if:
properties:
country:
const: US
then:
required:
- zipFirstFive
properties:
numberAndStreet:
description: Street address with number and name.
type: string
pattern: ^([-a-zA-Z0-9'.,]([-a-zA-Z0-9'., ])?)+$
maxLength: 30
aptUnitNumber:
oneOf:
- type: integer
- type: string
city:
description: City for the address.
type: string
example: Portland
state:
description: State or province for the address.
type: string
example: OR
country:
description: Country of the address.
type: string
example: US
zipFirstFive:
description: Zip code (First 5 digits) of the address. Required if country is 'US'.
type: string
pattern: ^\d{5}?$
example: '12345'
zipLastFour:
description: Zip code (Last 4 digits) of the address.
type: string
pattern: ^\d{4}?$
example: '6789'
phone:
$comment: the phone fields must not exceed 20 chars, when concatenated
type: object
additionalProperties: false
required:
- phoneNumber
properties:
countryCode:
description: Country code of the phone number. Required for international phone numbers.
type: string
pattern: ^[0-9]+$
areaCode:
description: Area code of the phone number. Required if countryCode is '1' or not included.
type: string
pattern: ^[2-9][0-9]{2}$
example: '555'
phoneNumber:
description: Phone number.
type: string
pattern: ^[0-9]{1,14}$
example: '5555555'
phoneNumberExt:
type: string
pattern: ^[a-zA-Z0-9]{1,10}$
if:
properties:
countryCode:
anyOf:
- type: string
enum:
- '1'
then:
required:
- areaCode
else:
anyOf:
- required:
- countryCode
- required:
- areaCode
email:
description: Email address of the veteran.
type: string
pattern: .@.
maxLength: 61
example: veteran@example.com
serviceBranch:
description: Service Branch for the veteran.
type: string
enum:
- AIR FORCE
- ARMY
- COAST GUARD
- MARINE CORPS
- NAVY
- SPACE FORCE
- OTHER
example: ARMY
serviceBranchOther:
description: For a 'service branch' of value 'other', please provide the service branch name.
type: string
maxLength: 50
example: Air National Guard
claimant:
type: object
additionalProperties: false
required:
- firstName
- lastName
- address
- relationship
properties:
firstName:
description: First name of Claimant.
type: string
example: John
middleInitial:
description: Middle initial of Claimant.
type: string
example: M
lastName:
description: Last name of Claimant.
type: string
example: Dow
address:
type: object
additionalProperties: false
required:
- numberAndStreet
- city
- country
allOf:
- if:
properties:
country:
const: US
then:
required:
- zipFirstFive
properties:
numberAndStreet:
description: Street address with number and name.
type: string
pattern: ^([-a-zA-Z0-9'.,]([-a-zA-Z0-9'., ])?)+$
maxLength: 30
aptUnitNumber:
oneOf:
- type: integer
- type: string
city:
description: City for the address.
type: string
example: Portland
state:
description: State or province for the address.
type: string
example: OR
country:
description: Country of the address.
type: string
example: US
zipFirstFive:
description: Zip code (First 5 digits) of the address. Required if country is 'US'.
type: string
pattern: ^\d{5}?$
example: '12345'
zipLastFour:
description: Zip code (Last 4 digits) of the address.
type: string
pattern: ^\d{4}?$
example: '6789'
additionalProperties:
type: boolean
phone:
$comment: the phone fields must not exceed 20 chars, when concatenated
type: object
additionalProperties: false
required:
- phoneNumber
properties:
countryCode:
description: Country code of the phone number. Required for international phone numbers.
type: string
pattern: ^[0-9]+$
areaCode:
description: Area code of the phone number. Required if countryCode is '1' or not included.
type: string
pattern: ^[2-9][0-9]{2}$
example: '555'
phoneNumber:
description: Phone number.
type: string
pattern: ^[0-9]{1,14}$
example: '5555555'
phoneNumberExt:
type: string
pattern: ^[a-zA-Z0-9]{1,10}$
if:
properties:
countryCode:
anyOf:
- type: string
enum:
- '1'
then:
required:
- areaCode
else:
anyOf:
- required:
- countryCode
- required:
- areaCode
email:
description: Email address of the claimant.
type: string
pattern: .@.
maxLength: 61
example: claimant@example.com
relationship:
description: Relationship of claimant to the veteran.
type: string
example: Spouse
serviceOrganization:
description: Details of the service organization or individual representing the veteran.
type: object
additionalProperties: false
required:
- poaCode
properties:
poaCode:
description: The POA code of the organization or individual representative
type: string
example: A1Q
organizationName:
description: Name of the service organization.
type: string
example: I help vets LLC.
firstName:
description: First Name of the representative
type: string
example: John
lastName:
description: Last Name of the representative
type: string
example: Doe
jobTitle:
description: Job title of the representative
type: string
example: Veteran Service representative
address:
type: object
description: address details for an individual representative
additionalProperties: false
required:
- numberAndStreet
- city
- country
allOf:
- if:
properties:
country:
const: US
then:
required:
- zipFirstFive
properties:
numberAndStreet:
description: Street address with number and name.
type: string
pattern: ^([-a-zA-Z0-9'.,]([-a-zA-Z0-9'., ])?)+$
maxLength: 30
aptUnitNumber:
oneOf:
- type: integer
- type: string
city:
description: City for the address.
type: string
example: Portland
state:
description: State or province for the address.
type: string
example: OR
country:
description: Country of the address.
type: string
example: US
zipFirstFive:
description: Zip code (First 5 digits) of the address. Required if country is 'US'.
type: string
pattern: ^\d{5}?$
example: '12345'
zipLastFour:
description: Zip code (Last 4 digits) of the address.
type: string
pattern: ^\d{4}?$
example: '6789'
additionalProperties:
type: boolean
email:
description: Email address of the service organization or representative.
type: string
pattern: .@.
maxLength: 61
example: veteran_representative@example.com
appointmentDate:
description: Date of appointment with Veteran.
type: string
pattern: ^(\d{4})-(0[1-9]|1[0-2])-(0[1-9]|[1-2][0-9]|3[0-1])$
recordConsent:
description: AUTHORIZATION FOR REPRESENTATIVE'S ACCESS TO RECORDS PROTECTED BY SECTION 7332, TITLE 38, U.S.C.
type: boolean
consentLimits:
description: Consent in Item 19 for the disclosure of records relating to treatment for drug abuse, alcoholism or alcohol abuse, infection with the human immunodeficiency virus (HIV), or sickle cell anemia is limited as follows.
type: array
items:
type: string
enum:
- DRUG ABUSE
- ALCOHOLISM
- HIV
- SICKLE CELL
example: DRUG ABUSE
consentAddressChange:
description: AUTHORIZATION FOR REPRESENTATIVE TO ACT ON CLAIMANT'S BEHALF TO CHANGE CLAIMANT'S ADDRESS.
type: boolean
signatures:
type: object
additionalProperties: false
required:
- veteran
- representative
properties:
veteran:
description: Base64 encoded png image of the veteran or claimant signature.
title: Signature of the Veteran
type: string
representative:
description: Base64 encoded png image of the representative signature.
title: Signature of the Veteran Representative
type: string
examples:
POA for Veteran:
value:
data:
type: form/2122
attributes:
serviceOrganization:
poaCode: '074'
POA for Dependent Claimant:
value:
data:
type: form/2122
attributes:
serviceOrganization:
poaCode: '074'
claimant:
firstName: Mary
lastName: Lincoln
address:
numberAndStreet: 123 anystreet
city: anytown
state: OR
country: USA
zipFirstFive: '12345'
relationship: Spouse
/forms/2122/{id}:
put:
summary: Upload a signed 21-22 document.
tags:
- Power of Attorney
operationId: PUT:/forms/2122/{id}
security:
- productionOauth:
- claim.read
- claim.write
- sandboxOauth:
- claim.read
- claim.write
- bearer_token: []
description: 'Accepts a document binary as part of a multipart payload.
Use this PUT endpoint after the POST endpoint for uploading the signed 21-22 PDF form.
'
parameters:
- name: id
in: path
description: UUID given when Power of Attorney was submitted
required: true
schema:
type: string
- in: header
name: X-VA-SSN
required: false
description: Claimant SSN if consumer is representative
schema:
type: string
- in: header
name: X-VA-First-Name
required: false
description: Claimant first name if consumer is representative
schema:
type: string
- in: header
name: X-VA-Last-Name
required: false
description: Claimant last name if consumer is representative
schema:
type: string
- in: header
name: X-VA-Birth-Date
required: false
description: Claimant birthdate if consumer is representative, in iso8601 format
schema:
type: string
responses:
'200':
description: 2122 Response
content:
application/json:
example:
data:
id: 00000000-0000-0000-0000-000000000002
type: claims_api_power_of_attorneys
attributes:
date_request_accepted: '2024-01-01'
previous_poa: '074'
representative:
service_organization:
poa_code: '074'
status: submitted
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: Power of Attorney Submission UUID
type:
type: string
attributes:
type: object
additionalProperties: false
required:
- status
- date_request_accepted
- representative
properties:
status:
type: string
description: Says if the power of attorney is pending, submitted, updated or errored
enum:
- pending
- submitted
- updated
- errored
date_request_accepted:
type: string
description: Date request was first accepted
format: date
representative:
type: object
additionalProperties: false
required:
- service_organization
properties:
service_organization:
type: object
additionalProperties: true
required:
- poa_code
properties:
poa_code:
type: string
description: Power of Attorney Code submitted for Veteran
previous_poa:
type: string
nullable: true
description: Current or Previous Power of Attorney Code submitted for Veteran
'400':
description: Bad Request
content:
application/json:
example:
errors:
- title: Missing parameter
detail: Must include attachment
code: '108'
status: '400'
schema:
required:
- errors
properties:
errors:
type: array
items:
additionalProperties: false
required:
- title
- detail
- code
- status
properties:
title:
type: string
description: HTTP error title
detail:
type: string
description: HTTP error detail
code:
type: string
description: HTTP error code
status:
type: string
description: HTTP error 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
code: '401'
status: '401'
schema:
required:
- errors
properties:
errors:
type: array
items:
additionalProperties: false
required:
- title
- detail
- code
- status
properties:
title:
type: string
description: HTTP error title
detail:
type: string
description: HTTP error detail
code:
type: string
description: HTTP error code
status:
type: string
description: HTTP error 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
code: '404'
status: '404'
schema:
required:
- errors
properties:
errors:
type: array
items:
additionalProperties: false
required:
- title
- detail
- code
- status
properties:
title:
type: string
description: HTTP error title
detail:
type: string
description: HTTP error detail
code:
type: string
description: HTTP error code
status:
type: string
description: HTTP error code
source:
type: object
additionalProperties: false
description: Source of error
properties:
pointer:
type: string
description: Pointer to source of error
'413':
description: Payload too large
content:
application/json:
schema:
type: object
properties:
message:
type: string
example:
message: Request size limit exceeded
'422':
description: Unprocessable Entity
content:
application/json:
example:
errors:
- title: Unprocessable Entity
detail: The SSN provided does not match Master Person Index (MPI). Please correct the SSN or submit an issue at ask.va.gov or call 1-800-MyVA411 (800-698-2411) for assistance.
code: '422'
status: '422'
schema:
required:
- errors
properties:
errors:
type: array
items:
additionalProperties: false
required:
- title
- detail
- code
- status
properties:
title:
type: string
description: HTTP error title
detail:
type: string
description: HTTP error detail
code:
type: string
description: HTTP error code
status:
type: string
description: HTTP error code
source:
type: object
additionalProperties: false
description: Source of error
properties:
pointer:
type: string
description: Pointer to source of error
'424':
description: Failed Dependency
content:
application/json:
example:
errors:
- title: Failed Dependency
detail: Failure occurred in a system dependency
code: '424'
status: '424'
schema:
required:
- errors
properties:
errors:
type: array
items:
additionalProperties: false
required:
- title
- detail
- code
- status
properties:
title:
type: string
description: HTTP error title
detail:
type: string
description: HTTP error detail
code:
type: string
description: HTTP error code
status:
type: string
description: HTTP error code
source:
type: object
additionalProperties: false
description: Source of error
properties:
pointer:
type: string
description: Pointer to source of error
'429':
description: Too many requests
content:
application/json:
schema:
type: object
properties:
message:
type: string
example:
message: API rate limit exceeded
'504':
description: Gateway Timeout
content:
application/json:
schema:
type: object
properties:
message:
type: string
example:
message: The server took too long to respond
requestBody:
content:
multipart/form-data:
schema:
type: object
properties:
attachment:
type: file
description: 'Attachment contents. Must be provided in binary PDF or [base64 string](https://va.ghe.com/software/vets-api/blob/master/modules/claims_api/spec/fixtures/base64pdf) format and less than 11 in x 11 in.
'
required: true
get:
summary: Check POA status by ID.
tags:
- Power of Attorney
operationId: GET:/forms/2122/{id}
security:
- productionOauth:
- claim.read
- sandboxOauth:
- claim.read
- bearer_token: []
description: Based on ID, returns a 21-22 submission and current status.
parameters:
- name: id
in: path
description: The ID of the 21-22 submission
required: true
schema:
type: string
- in: header
name: X-VA-SSN
required: false
description: Claimant SSN if consumer is representative
schema:
type: string
- in: header
name: X-VA-First-Name
required: false
description: Claimant first name if consumer is representative
schema:
type: string
- in: header
name: X-VA-Last-Name
required: false
description: Claimant last name if consumer is representative
schema:
type: string
- in: header
name: X-VA-Birth-Date
required: false
description: Claimant birthdate if consumer is representative, in iso8601 format
schema:
type: string
responses:
'200':
description: 2122 response
content:
application/json:
example:
data:
id: 00000000-0000-0000-0000-000000000003
type: claims_api_power_of_attorneys
attributes:
date_request_accepted: '2024-01-01'
previous_poa: '074'
representative:
service_organization:
poa_code: '074'
status: errored
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: Power of Attorney Submission UUID
type:
type: string
attributes:
type: object
additionalProperties: false
required:
- status
- date_request_accepted
- representative
properties:
status:
type: string
description: Says if the power of attorney is pending, submitted, updated or errored
enum:
- pending
- submitted
- updated
- errored
date_request_accepted:
type: string
description: Date request was first accepted
format: date
representative:
type: object
additionalProperties: false
required:
- service_organization
properties:
service_organization:
type: object
additionalProperties: true
required:
- poa_code
properties:
poa_code:
type: string
description: Power of Attorney Code submitted for Veteran
previous_poa:
type: string
nullable: true
description: Current or Previous Power of Attorney Code submitted for Veteran
'401':
description: Unauthorized
content:
application/json:
example:
errors:
- title: Not authorized
detail: Not authorized
code: '401'
status: '401'
schema:
required:
- errors
properties:
errors:
type: array
items:
additionalProperties: false
required:
- title
- detail
- code
- status
properties:
title:
type: string
description: HTTP error title
detail:
type: string
description: HTTP error detail
code:
type: string
description: HTTP error code
status:
type: string
description: HTTP error 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
code: '404'
status: '404'
schema:
required:
- errors
properties:
errors:
type: array
items:
additionalProperties: false
required:
- title
- detail
- code
- status
properties:
title:
type: string
description: HTTP error title
detail:
type: string
description: HTTP error detail
code:
type: string
description: HTTP error code
status:
type: string
description: HTTP error code
source:
type: object
additionalProperties: false
description: Source of error
properties:
pointer:
type: string
description: Pointer to source of error
'413':
description: Payload too large
content:
application/json:
schema:
type: object
properties:
message:
type: string
example:
message: Request size limit exceeded
'429':
description: Too many requests
content:
application/json:
schema:
type: object
properties:
message:
type: string
example:
message: API rate limit exceeded
'504':
description: Gateway Timeout
content:
application/json:
schema:
type: object
properties:
message:
type: string
example:
message: The server took too long to respond
/forms/2122/active:
get:
summary: Check active POA status.
tags:
- Power of Attorney
operationId: GET:/forms/2122/active
security:
- productionOauth:
- claim.read
- sandboxOauth:
- claim.read
- bearer_token: []
description: 'Returns the last active POA for a claimant.
To check the status of new POA submissions, use the GET /forms/2122/{id} endpoint.
'
parameters:
- in: header
name: X-VA-SSN
required: false
description: Claimant SSN if consumer is representative
schema:
type: string
- in: header
name: X-VA-First-Name
required: false
description: Claimant first name if consumer is representative
schema:
type: string
- in: header
name: X-VA-Last-Name
required: false
description: Claimant last name if consumer is representative
schema:
type: string
- in: header
name: X-VA-Birth-Date
required: false
description: Claimant birthdate if consumer is representative, in iso8601 format
schema:
type: string
responses:
'200':
description: 2122 response
content:
application/json:
example:
data:
id: null
type: claims_api_power_of_attorneys
attributes:
status: updated
date_request_accepted: null
representative:
service_organization:
first_name: Jane
last_name: Doe
organization_name: null
phone_number: 555-555-5555
poa_code: A01
previous_poa: null
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: 'null'
type:
type: string
attributes:
type: object
additionalProperties: false
required:
- status
- date_request_accepted
- representative
properties:
status:
type: string
description: Status of Power of Attorney establishment
enum:
- pending
- submitted
- updated
- errored
date_request_accepted:
type: string
nullable: true
description: Date request was first accepted
format: date
representative:
type: object
additionalProperties: false
required:
- service_organization
properties:
service_organization:
type: object
additionalProperties: false
required:
- poa_code
properties:
poa_code:
type: string
description: Power of Attorney Code submitted for Veteran
first_name:
description: First name of representative, null if representative is an organization
type: string
nullable: true
example: Jane
last_name:
description: Last name of representative, null if representative is an organization
type: string
nullable: true
example: Doe
organization_name:
description: Name of representing organization, null if representative is an individual
type: string
nullable: true
example: Some Great Organization
phone_number:
description: Phone number of representative. Can be organization or individual phone number.
type: string
example: 555-555-5555
previous_poa:
type: string
nullable: true
description: Current or Previous Power of Attorney Code submitted for Veteran
'401':
description: Unauthorized
content:
application/json:
example:
errors:
- title: Not authorized
detail: Not authorized
code: '401'
status: '401'
schema:
required:
- errors
properties:
errors:
type: array
items:
additionalProperties: false
required:
- title
- detail
- code
- status
properties:
title:
type: string
description: HTTP error title
detail:
type: string
description: HTTP error detail
code:
type: string
description: HTTP error code
status:
type: string
description: HTTP error 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: Power of Attorney not found
code: '404'
status: '404'
schema:
required:
- errors
properties:
errors:
type: array
items:
additionalProperties: false
required:
- title
- detail
- code
- status
properties:
title:
type: string
description: HTTP error title
detail:
type: string
description: HTTP error detail
code:
type: string
description: HTTP error code
status:
type: string
description: HTTP error code
source:
type: object
additionalProperties: false
description: Source of error
properties:
pointer:
type: string
description: Pointer to source of error
'413':
description: Payload too large
content:
application/json:
schema:
type: object
properties:
message:
type: string
example:
message: Request size limit exceeded
'429':
description: Too many requests
content:
application/json:
schema:
type: object
properties:
message:
type: string
example:
message: API rate limit exceeded
'504':
description: Gateway Timeout
content:
application/json:
schema:
type: object
properties:
message:
type: string
example:
message: The server took too long to respond
/forms/2122/validate:
post:
summary: 21-22 POA form submission test run.
deprecated: true
tags:
- Power of Attorney
operationId: POST:/forms/2122/validate
security:
- productionOauth:
- claim.read
- claim.write
- sandboxOauth:
- claim.read
- claim.write
- bearer_token: []
description: 'Test to make sure the form submission works with your parameters.
'
parameters:
- in: header
name: X-VA-SSN
required: false
description: Claimant SSN if consumer is representative
schema:
type: string
- in: header
name: X-VA-First-Name
required: false
description: Claimant first name if consumer is representative
schema:
type: string
- in: header
name: X-VA-Last-Name
required: false
description: Claimant last name if consumer is representative
schema:
type: string
- in: header
name: X-VA-Birth-Date
required: false
description: Claimant birthdate if consumer is representative, in iso8601 format
schema:
type: string
responses:
'200':
description: 2122 Response
content:
application/json:
example:
data:
type: powerOfAttorneyValidation
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
description: Says if the power of attorney is pending, submitted, updated or errored
enum:
- valid
'401':
description: Unauthorized
content:
application/json:
example:
errors:
- title: Not authorized
detail: Not authorized
code: '401'
status: '401'
schema:
required:
- errors
properties:
errors:
type: array
items:
additionalProperties: false
required:
- title
- detail
- code
- status
properties:
title:
type: string
description: HTTP error title
detail:
type: string
description: HTTP error detail
code:
type: string
description: HTTP error code
status:
type: string
description: HTTP error code
source:
type: object
additionalProperties: false
description: Source of error
properties:
pointer:
type: string
description: Pointer to source of error
'413':
description: Payload too large
content:
application/json:
schema:
type: object
properties:
message:
type: string
example:
message: Request size limit exceeded
'422':
description: Unprocessable entity
content:
application/json:
example:
errors:
- status: 422
detail: The property / did not contain the required key serviceOrganization
source: /
schema:
required:
- errors
properties:
errors:
type: array
items:
additionalProperties: false
required:
- status
- detail
- source
properties:
status:
type: integer
description: HTTP error code
detail:
type: string
description: HTTP error detail
source:
type: string
'429':
description: Too many requests
content:
application/json:
schema:
type: object
properties:
message:
type: string
example:
message: API rate limit exceeded
'504':
description: Gateway Timeout
content:
application/json:
schema:
type: object
properties:
message:
type: string
example:
message: The server took too long to respond
requestBody:
content:
application/json:
schema:
type: object
required:
- data
properties:
data:
type: object
required:
- attributes
example:
type: form/21-22
attributes:
serviceOrganization:
poaCode: A1Q
properties:
attributes:
$schema: http://json-schema.org/draft-07/schema#
description: Form 2122 Schema
type: object
additionalProperties: false
required:
- serviceOrganization
properties:
veteran:
type: object
additionalProperties: false
required:
- address
properties:
address:
type: object
additionalProperties: false
required:
- numberAndStreet
- city
- country
allOf:
- if:
properties:
country:
const: US
then:
required:
- zipFirstFive
properties:
numberAndStreet:
description: Street address with number and name.
type: string
pattern: ^([-a-zA-Z0-9'.,]([-a-zA-Z0-9'., ])?)+$
maxLength: 30
aptUnitNumber:
oneOf:
- type: integer
- type: string
city:
description: City for the address.
type: string
example: Portland
state:
description: State or province for the address.
type: string
example: OR
country:
description: Country of the address.
type: string
example: US
zipFirstFive:
description: Zip code (First 5 digits) of the address. Required if country is 'US'.
type: string
pattern: ^\d{5}?$
example: '12345'
zipLastFour:
description: Zip code (Last 4 digits) of the address.
type: string
pattern: ^\d{4}?$
example: '6789'
phone:
$comment: the phone fields must not exceed 20 chars, when concatenated
type: object
additionalProperties: false
required:
- phoneNumber
properties:
countryCode:
description: Country code of the phone number. Required for international phone numbers.
type: string
pattern: ^[0-9]+$
areaCode:
description: Area code of the phone number. Required if countryCode is '1' or not included.
type: string
pattern: ^[2-9][0-9]{2}$
example: '555'
phoneNumber:
description: Phone number.
type: string
pattern: ^[0-9]{1,14}$
example: '5555555'
phoneNumberExt:
type: string
pattern: ^[a-zA-Z0-9]{1,10}$
if:
properties:
countryCode:
anyOf:
- type: string
enum:
- '1'
then:
required:
- areaCode
else:
anyOf:
- required:
- countryCode
- required:
- areaCode
email:
description: Email address of the veteran.
type: string
pattern: .@.
maxLength: 61
example: veteran@example.com
serviceBranch:
description: Service Branch for the veteran.
type: string
enum:
- AIR FORCE
- ARMY
- COAST GUARD
- MARINE CORPS
- NAVY
- SPACE FORCE
- OTHER
example: ARMY
serviceBranchOther:
description: For a 'service branch' of value 'other', please provide the service branch name.
type: string
maxLength: 50
example: Air National Guard
claimant:
type: object
additionalProperties: false
required:
- firstName
- lastName
- address
- relationship
properties:
firstName:
description: First name of Claimant.
type: string
example: John
middleInitial:
description: Middle initial of Claimant.
type: string
example: M
lastName:
description: Last name of Claimant.
type: string
example: Dow
address:
type: object
additionalProperties: false
required:
- numberAndStreet
- city
- country
allOf:
- if:
properties:
country:
const: US
then:
required:
- zipFirstFive
properties:
numberAndStreet:
description: Street address with number and name.
type: string
pattern: ^([-a-zA-Z0-9'.,]([-a-zA-Z0-9'., ])?)+$
maxLength: 30
aptUnitNumber:
oneOf:
- type: integer
- type: string
city:
description: City for the address.
type: string
example: Portland
state:
description: State or province for the address.
type: string
example: OR
country:
description: Country of the address.
type: string
example: US
zipFirstFive:
description: Zip code (First 5 digits) of the address. Required if country is 'US'.
type: string
pattern: ^\d{5}?$
example: '12345'
zipLastFour:
description: Zip code (Last 4 digits) of the address.
type: string
pattern: ^\d{4}?$
example: '6789'
additionalProperties:
type: boolean
phone:
$comment: the phone fields must not exceed 20 chars, when concatenated
type: object
additionalProperties: false
required:
- phoneNumber
properties:
countryCode:
description: Country code of the phone number. Required for international phone numbers.
type: string
pattern: ^[0-9]+$
areaCode:
description: Area code of the phone number. Required if countryCode is '1' or not included.
type: string
pattern: ^[2-9][0-9]{2}$
example: '555'
phoneNumber:
description: Phone number.
type: string
pattern: ^[0-9]{1,14}$
example: '5555555'
phoneNumberExt:
type: string
pattern: ^[a-zA-Z0-9]{1,10}$
if:
properties:
countryCode:
anyOf:
- type: string
enum:
- '1'
then:
required:
- areaCode
else:
anyOf:
- required:
- countryCode
- required:
- areaCode
email:
description: Email address of the claimant.
type: string
pattern: .@.
maxLength: 61
example: claimant@example.com
relationship:
description: Relationship of claimant to the veteran.
type: string
example: Spouse
serviceOrganization:
description: Details of the service organization or individual representing the veteran.
type: object
additionalProperties: false
required:
- poaCode
properties:
poaCode:
description: The POA code of the organization or individual representative
type: string
example: A1Q
organizationName:
description: Name of the service organization.
type: string
example: I help vets LLC.
firstName:
description: First Name of the representative
type: string
example: John
lastName:
description: Last Name of the representative
type: string
example: Doe
jobTitle:
description: Job title of the representative
type: string
example: Veteran Service representative
address:
type: object
description: address details for an individual representative
additionalProperties: false
required:
- numberAndStreet
- city
- country
allOf:
- if:
properties:
country:
const: US
then:
required:
- zipFirstFive
properties:
numberAndStreet:
description: Street address with number and name.
type: string
pattern: ^([-a-zA-Z0-9'.,]([-a-zA-Z0-9'., ])?)+$
maxLength: 30
aptUnitNumber:
oneOf:
- type: integer
- type: string
city:
description: City for the address.
type: string
example: Portland
state:
description: State or province for the address.
type: string
example: OR
country:
description: Country of the address.
type: string
example: US
zipFirstFive:
description: Zip code (First 5 digits) of the address. Required if country is 'US'.
type: string
pattern: ^\d{5}?$
example: '12345'
zipLastFour:
description: Zip code (Last 4 digits) of the address.
type: string
pattern: ^\d{4}?$
example: '6789'
additionalProperties:
type: boolean
email:
description: Email address of the service organization or representative.
type: string
pattern: .@.
maxLength: 61
example: veteran_representative@example.com
appointmentDate:
description: Date of appointment with Veteran.
type: string
pattern: ^(\d{4})-(0[1-9]|1[0-2])-(0[1-9]|[1-2][0-9]|3[0-1])$
recordConsent:
description: AUTHORIZATION FOR REPRESENTATIVE'S ACCESS TO RECORDS PROTECTED BY SECTION 7332, TITLE 38, U.S.C.
type: boolean
consentLimits:
description: Consent in Item 19 for the disclosure of records relating to treatment for drug abuse, alcoholism or alcohol abuse, infection with the human immunodeficiency virus (HIV), or sickle cell anemia is limited as follows.
type: array
items:
type: string
enum:
- DRUG ABUSE
- ALCOHOLISM
- HIV
- SICKLE CELL
example: DRUG ABUSE
consentAddressChange:
description: AUTHORIZATION FOR REPRESENTATIVE TO ACT ON CLAIMANT'S BEHALF TO CHANGE CLAIMANT'S ADDRESS.
type: boolean
signatures:
type: object
additionalProperties: false
required:
- veteran
- representative
properties:
veteran:
description: Base64 encoded png image of the veteran or claimant signature.
title: Signature of the Veteran
type: string
representative:
description: Base64 encoded png image of the representative signature.
title: Signature of the Veteran Representative
type: string
required: true
/veterans/{veteranId}/power-of-attorney:
get:
summary: Retrieves current power of attorney
tags:
- Power of Attorney
operationId: GET:/veterans/{veteranId}/power-of-attorney
security:
- productionOauth:
- system/claim.read
- system/claim.write
- sandboxOauth:
- system/claim.read
- system/claim.write
- bearer_token: []
description: Retrieve a claimant’s currently appointed accredited representative with power of attorney (General POA) for the claimant. Returns empty data if no General POA is assigned.
parameters:
- name: veteranId
in: path
required: true
example: 1012667145V762142
description: ID of claimant
schema:
type: string
responses:
'200':
description: Successful response with a current Power of Attorney
content:
application/json:
example:
data:
type: individual
attributes:
code: A1Q
name: Firstname Lastname
phoneNumber: 555-555-5555
schema:
type: object
required:
- data
properties:
data:
type: object
additionalProperties: false
required:
- type
- attributes
properties:
type:
type: string
nullable: true
description: Type of representative, organization or individual
example: individual
attributes:
type: object
additionalProperties: false
required:
- code
- name
- phoneNumber
properties:
code:
type: string
nullable: true
description: Power of Attorney Code currently assigned to Veteran
name:
description: Name of individual representative or organization
type: string
nullable: true
example: Jane Smith
phoneNumber:
description: Phone number of representative. Can be organization or individual phone number.
type: string
nullable: true
example: 555-555-5555
'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: 'Could not retrieve Power of Attorney with code: A1Q'
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
'413':
description: Payload too large
content:
application/json:
schema:
type: object
properties:
message:
type: string
example:
message: Request size limit exceeded
'422':
description: Unprocessable Entity
content:
application/json:
example:
errors:
- title: Unprocessable entity
status: '422'
detail: 'Could not retrieve Power of Attorney due to multiple representatives with code: A1Q'
source:
pointer: /modules/claims_api/app/controllers/claims_api/v2/veterans/power_of_attorney/base_controller.rb:191:in `representative'
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
'429':
description: Too many requests
content:
application/json:
schema:
type: object
properties:
message:
type: string
example:
message: API rate limit exceeded
'504':
description: Gateway Timeout
content:
application/json:
schema:
type: object
properties:
message:
type: string
example:
message: The server took too long to respond
/veterans/{veteranId}/power-of-attorney-request:
post:
summary: Creates power of attorney request for an accredited representative
description: Request the appointment of an accredited representative, on behalf of a claimant.
tags:
- Power of Attorney
operationId: POST:/veterans/{veteranId}/power-of-attorney-request
security:
- productionOauth:
- system/claim.read
- system/claim.write
- sandboxOauth:
- system/claim.read
- system/claim.write
- bearer_token: []
parameters:
- name: veteranId
in: path
required: true
example: 1012667145V762142
description: ID of claimant
schema:
type: string
responses:
'201':
description: Valid request response
content:
application/json:
example:
data:
id: 00000000-0000-0000-0000-000000000009
type: power-of-attorney-request
attributes:
veteran:
serviceNumber: '123678453'
serviceBranch: ARMY
address:
addressLine1: 2719 Hyperion Ave
addressLine2: Apt 2
city: Los Angeles
stateCode: CA
countryCode: US
zipCode: '92264'
zipCodeSuffix: '0200'
phone:
countryCode: null
areaCode: '555'
phoneNumber: '5551234'
email: test@test.com
insuranceNumber: '1234567890'
claimant:
claimantId: null
address:
addressLine1: null
addressLine2: null
city: null
stateCode: null
countryCode: null
zipCode: null
zipCodeSuffix: null
phone:
countryCode: null
areaCode: null
phoneNumber: null
email: null
relationship: null
representative:
poaCode: '067'
recordConsent: true
consentLimits:
- DRUG_ABUSE
- SICKLE_CELL
- HIV
- ALCOHOLISM
consentAddressChange: true
schema:
type: object
required:
- data
properties:
data:
type: object
required:
- type
- attributes
properties:
id:
type: string
format: uuid
type:
type: string
enum:
- power-of-attorney-request
attributes:
type: object
required:
- veteran
- claimant
- representative
properties:
veteran:
type: object
properties:
serviceNumber:
type: string
serviceBranch:
type: string
phone:
type: object
properties:
countryCode:
type: string
areaCode:
type: string
phoneNumber:
type: string
address:
type: object
properties:
addressLine1:
type: string
addressLine2:
type: string
city:
type: string
stateCode:
type: string
countryCode:
type: string
zipCode:
type: string
zipCodeSuffix:
type: string
email:
type: string
insuranceNumber:
type: string
claimant:
type: object
properties:
claimantId:
type: string
phone:
type: object
properties:
countryCode:
type: string
areaCode:
type: string
phoneNumber:
type: string
address:
type: object
properties:
addressLine1:
type: string
addressLine2:
type: string
city:
type: string
stateCode:
type: string
countryCode:
type: string
zipCode:
type: string
zipCodeSuffix:
type: string
email:
type: string
relationship:
type: string
representative:
type: object
properties:
poaCode:
type: string
consentLimits:
type: array
items:
type: string
enum:
- DRUG_ABUSE
- ALCOHOLISM
- HIV
- SICKLE_CELL
consentAddressChange:
description: Authorization for Representative to Act on Claimant's Behalf to Change Claimant's Address.
type: boolean
recordConsent:
description: Authorization for Representative's Access to Records Protected by Section 7332, Title 38, U.S.C.
type: boolean
'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: 'Could not find an Accredited Representative with poa code: 067'
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
'413':
description: Payload too large
content:
application/json:
schema:
type: object
properties:
message:
type: string
example:
message: Request size limit exceeded
'422':
description: Unprocessable Entity
content:
application/json:
example:
errors:
- title: Unprocessable entity
detail: The property /representative did not contain the required key poaCode
status: '422'
source:
pointer: data/attributes/representative
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
'429':
description: Too many requests
content:
application/json:
schema:
type: object
properties:
message:
type: string
example:
message: API rate limit exceeded
'504':
description: Gateway Timeout
content:
application/json:
schema:
type: object
properties:
message:
type: string
example:
message: The server took too long to respond
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: POA Request (21-22/a) Schema
type: object
additionalProperties: false
required:
- veteran
- representative
- recordConsent
- consentAddressChange
properties:
veteran:
type: object
additionalProperties: false
required:
- address
properties:
serviceNumber:
description: Service number for the veteran.
type: string
maxLength: 9
serviceBranch:
description: Service branch for the veteran.
type: string
enum:
- AIR_FORCE
- ARMY
- COAST_GUARD
- MARINE_CORPS
- NAVY
- SPACE_FORCE
- OTHER
example: ARMY
address:
type: object
additionalProperties: false
required:
- addressLine1
- city
- stateCode
- countryCode
- zipCode
properties:
addressLine1:
description: Street number and name for the veteran's address.
type: string
pattern: ^([-a-zA-Z0-9'.,]([-a-zA-Z0-9'., ])?)+$
maxLength: 30
addressLine2:
description: Apartment or unit number for the veteran's address.
type: string
maxLength: 5
city:
description: City for the veteran's address.
type: string
example: Portland
maxLength: 18
stateCode:
description: State abbreviation for the veteran's address.
type: string
pattern: ^[a-z,A-Z]{2}$
example: OR
countryCode:
description: Two-letter country code for the veteran's address.
type: string
example: US
pattern: ^[A-Za-z0-9-]{2,6}$
zipCode:
description: Zip code (first 5 digits) for the veteran's address.
type: string
pattern: ^\d{5}?$
example: '12345'
zipCodeSuffix:
description: Zip code suffix (last 4 digits) for the veteran's address.
type: string
pattern: ^\d{4}?$
example: '6789'
phone:
$comment: the phone fields must not exceed 20 chars, when concatenated
type: object
additionalProperties: false
required:
- phoneNumber
properties:
countryCode:
description: Country code for the veteran's phone number. Required for international phone numbers.
type: string
pattern: ^[0-9]+$
areaCode:
description: Area code for the veteran's phone number. Required if countryCode is '1' or not included.
type: string
pattern: ^[0-9]{1,5}$
example: '555'
phoneNumber:
description: Phone number for the veteran.
type: string
pattern: ^\d(?:[- ]?\d){0,14}$
example: '5555555'
minLength: 1
maxLength: 23
if:
properties:
countryCode:
anyOf:
- type: string
enum:
- '1'
then:
required:
- areaCode
else:
anyOf:
- required:
- countryCode
- required:
- areaCode
email:
description: Email address for the veteran.
type: string
pattern: .@.
maxLength: 61
example: veteran@example.com
insuranceNumber:
type: string
maxLength: 10
description: Insurance number for the veteran, if applicable. Include letter prefix.
claimant:
description: Include claimant information for dependent claimants.
type: object
additionalProperties: false
properties:
claimantId:
description: Integration Control Number (ICN) for the dependent claimant.
type: string
example: '123456789'
address:
type: object
additionalProperties: false
properties:
addressLine1:
description: Street number and name for the dependent claimant's address. Required if claimant information provided.
type: string
pattern: ^([-a-zA-Z0-9'.,]([-a-zA-Z0-9'., ])?)+$
maxLength: 30
addressLine2:
description: Apartment or unit number for the dependent claimant's address.
type: string
maxLength: 5
city:
description: City for the dependent claimant's address. Required if claimant information provided.
type: string
example: Portland
maxLength: 18
stateCode:
description: State abbreviation for the dependent claimant's address. Required if claimant information provided.
type: string
pattern: ^[a-z,A-Z]{2}$
example: OR
countryCode:
description: Two-letter country code for the dependent claimant's address. Required if claimant information provided.
type: string
example: US
pattern: ^[A-Za-z0-9-]{2,6}$
zipCode:
description: Zip code (first 5 digits) for the dependent claimant's address. Required if claimant information provided.
type: string
pattern: ^\d{5}?$
example: '12345'
zipCodeSuffix:
description: Zip code suffix (last 4 digits) for the dependent claimant's address.
type: string
pattern: ^\d{4}?$
example: '6789'
phone:
$comment: the phone fields must not exceed 20 chars, when concatenated
type: object
additionalProperties: false
required:
- phoneNumber
properties:
countryCode:
description: Country code for the dependent claimant's phone number. Required for international phone numbers.
type: string
pattern: ^[0-9]+$
areaCode:
description: Area code for the dependent claimant's phone number. Required if countryCode is '1' or not included.
type: string
pattern: ^[0-9]{1,5}$
example: '555'
phoneNumber:
description: Phone number for the dependent claimant.
type: string
pattern: ^\d(?:[- ]?\d){0,14}$
example: '5555555'
minLength: 1
maxLength: 23
if:
properties:
countryCode:
anyOf:
- type: string
enum:
- '1'
then:
required:
- areaCode
else:
anyOf:
- required:
- countryCode
- required:
- areaCode
email:
description: Email address for the dependent claimant.
type: string
pattern: .@.
maxLength: 61
example: claimant@example.com
relationship:
description: Relationship of claimant to the veteran. Required if claimant information provided.
type: string
example: Spouse
representative:
description: Details of the requested Power of Attorney representing the veteran.
type: object
additionalProperties: false
required:
- poaCode
properties:
poaCode:
description: The POA code of the accredited representative or organization.
type: string
example: A1Q
recordConsent:
description: Authorization for Representative's Access to Records Protected by Section 7332, Title 38, U.S.C. Explicitly permits the designated representative to access sensitive medical records within VA. Setting 'recordConsent' to false will prevent the designated representative from accessing the claimant's documents in VBMS.
type: boolean
consentLimits:
description: Consent for the disclosure of records relating to treatment for drug abuse, alcoholism or alcohol abuse, infection with the human immunodeficiency virus (HIV), or sickle cell anemia is limited to this list. Including 'consentLimits' will prevent the designated representative from accessing the claimant's documents in VBMS.
type: array
items:
type: string
enum:
- DRUG_ABUSE
- ALCOHOLISM
- HIV
- SICKLE_CELL
example: DRUG ABUSE
consentAddressChange:
description: Authorization for Representative to Act on Claimant's Behalf to Change Claimant's Address.
type: boolean
example:
data:
attributes:
veteran:
serviceNumber: '123678453'
serviceBranch: ARMY
address:
addressLine1: 2719 Hyperion Ave
addressLine2: Apt 2
city: Los Angeles
countryCode: US
stateCode: CA
zipCode: '92264'
zipCodeSuffix: '0200'
phone:
areaCode: '555'
phoneNumber: '5551234'
email: test@test.com
insuranceNumber: '1234567890'
representative:
poaCode: '067'
recordConsent: true
consentAddressChange: true
consentLimits:
- DRUG_ABUSE
- SICKLE_CELL
- HIV
- ALCOHOLISM
required: true
/veterans/power-of-attorney-requests:
post:
summary: Retrieves power of attorney requests for accredited representatives
tags:
- Power of Attorney
operationId: POST:/veterans/power-of-attorney-requests
security:
- productionOauth:
- system/claim.read
- system/claim.write
- sandboxOauth:
- system/claim.read
- system/claim.write
- bearer_token: []
description: Search for power of attorney requests by specified POA codes. Optional filters include searching by status, city, state, and country.
parameters:
- name: page[size]
in: query
required: false
example: '20'
description: Number of results to return per page. Max value allowed is 100.
- name: page[number]
in: query
required: false
example: '1'
description: Number of pages of results to return. Max value allowed is 100.
responses:
'200':
description: Search results
content:
application/json:
example:
data:
- id: null
type: power-of-attorney-request
attributes:
veteran:
firstName: '[Vet First Name]'
middleName: null
lastName: '[Vet Last Name]'
claimant:
firstName: '[Claimant First Name]'
lastName: '[Claimant Last Name]'
address:
city: Charlottesville
stateCode: null
zipCode: '00123'
countryCode: USA
representative:
poaCode: 083
receivedDate: '2012-11-23T16:49:16-06:00'
actionedDate: '2024-05-25T13:45:00-05:00'
status: New
declinedReason: null
consentAddressChange: true
recordConsent: true
- id: null
type: power-of-attorney-request
attributes:
veteran:
firstName: first
middleName: null
lastName: last
claimant:
firstName: null
lastName: null
address:
city: USAG J
stateCode: null
zipCode: '01234'
countryCode: USA
representative:
poaCode: '002'
receivedDate: '2013-01-14T08:50:17-06:00'
actionedDate: '2013-01-14T08:50:17-06:00'
status: New
declinedReason: null
consentAddressChange: true
recordConsent: true
- id: null
type: power-of-attorney-request
attributes:
veteran:
firstName: first
middleName: null
lastName: last
claimant:
firstName: null
lastName: null
address:
city: Bourges
stateCode: null
zipCode: '00123'
countryCode: France
representative:
poaCode: '002'
receivedDate: '2013-01-14T08:51:25-06:00'
actionedDate: '2013-01-14T08:51:25-06:00'
status: New
declinedReason: null
consentAddressChange: true
recordConsent: true
meta:
pagination:
pageNumber: 1
pageSize: 10
pages: 1
records: 3
schema:
type: object
required:
- data
- meta
properties:
data:
type: array
items:
type: object
required:
- type
- attributes
properties:
id:
type: string
format: uuid
type:
type: string
enum:
- power-of-attorney-request
attributes:
type: object
required:
- veteran
- claimant
- representative
properties:
veteran:
type: object
properties:
firstName:
description: First name for the veteran.
type: string
lastName:
description: Last name for the veteran.
type: string
middleName:
description: Middle name for the veteran.
type: string
claimant:
type: object
properties:
firstName:
description: First name for the dependent claimant.
type: string
lastName:
description: Last name for the dependent claimant.
type: string
middleName:
description: Middle name for the dependent claimant.
type: string
address:
city:
type: string
country:
type: string
militaryPo:
type: string
militaryPostalCode:
type: string
state:
type: string
zip:
type: string
representative:
type: object
properties:
poaCode:
type: string
vsoUserEmail:
type: string
vsoUserFirstName:
type: string
vsoUserLastName:
type: string
receivedDate:
description: Date the request for representation was established.
type: string
format: date-time
actionedDate:
description: Date the request for representation was accepted or declined by a representative.
type: string
format: date-time
status:
description: Status of the request for representation.
type: string
declinedReason:
description: Reason for declining the request for representation.
type: string
consentAddressChange:
description: Authorization for Representative to Act on Claimant's Behalf to Change Claimant's Address.
type: boolean
enum:
- true
- false
recordConsent:
description: Authorization for Representative's Access to Records Protected by Section 7332, Title 38, U.S.C.
type: boolean
enum:
- true
- false
meta:
type: object
required:
- pagination
properties:
pagination:
type: object
required:
- pageNumber
- pageSize
- pages
- records
properties:
pageNumber:
description: Current page number.
type: integer
pageSize:
description: Number of results per page.
type: integer
pages:
description: Total number of pages.
type: integer
records:
description: Total number of records.
type: integer
'400':
description: Invalid request
content:
application/json:
example:
errors:
- title: Missing parameter
detail: poaCodes is required and cannot be empty
code: '108'
status: '400'
schema:
type: object
required:
- errors
properties:
errors:
type: array
items:
additionalProperties: false
required:
- title
- detail
- code
- status
properties:
title:
type: string
detail:
type: string
code:
type: string
status:
type: string
enum:
- '400'
'401':
description: Unauthorized
content:
application/json:
example:
errors:
- title: Not authorized
status: '401'
detail: Not authorized
schema:
type: object
required:
- errors
properties:
errors:
type: array
items:
additionalProperties: false
required:
- title
- detail
- status
properties:
title:
type: string
enum:
- Not authorized
detail:
type: string
enum:
- Not authorized
status:
type: string
enum:
- '401'
'413':
description: Payload too large
content:
application/json:
schema:
type: object
properties:
message:
type: string
example:
message: Request size limit exceeded
'429':
description: Too many requests
content:
application/json:
schema:
type: object
properties:
message:
type: string
example:
message: API rate limit exceeded
'504':
description: Gateway Timeout
content:
application/json:
schema:
type: object
properties:
message:
type: string
example:
message: The server took too long to respond
requestBody:
content:
application/json:
schema:
type: object
required:
- data
properties:
data:
type: object
additionalProperties: false
required:
- attributes
properties:
attributes:
type: object
additionalProperties: false
required:
- poaCodes
properties:
poaCodes:
type: array
minItems: 1
items:
type: string
minLength: 1
pageSize:
type: string
pageIndex:
type: string
filter:
type: object
additionalProperties: false
properties:
status:
type: array
items:
type: string
enum:
- NEW
- ACCEPTED
- DECLINED
state:
type: string
city:
type: string
country:
type: string
example:
data:
attributes:
poaCodes:
- '002'
- '003'
- 083
filter:
status:
- NEW
- ACCEPTED
- DECLINED
state: OR
city: Portland
country: USA
required: true
/veterans/power-of-attorney-requests/{id}:
get:
summary: Retrieves a power of attorney request
tags:
- Power of Attorney
operationId: GET:/veterans/power-of-attorney-requests/{id}
security:
- productionOauth:
- system/claim.read
- system/claim.write
- sandboxOauth:
- system/claim.read
- system/claim.write
- bearer_token: []
description: Retrieve a power of attorney request by id.
parameters:
- name: id
in: path
required: true
example: 00000000-0000-0000-0000-000000000010
description: The ID of the Power of Attorney request
schema:
type: string
responses:
'200':
description: Successful response with a current Power of Attorney request
content:
application/json:
example:
data:
id: 00000000-0000-0000-0000-000000000011
type: power-of-attorney-request
attributes:
veteran:
firstName: ANDREA
middleName: L
lastName: MITCHELL
claimant:
firstName: null
lastName: null
address:
city: Portland
stateCode: OR
zipCode: '56789'
countryCode: USA
representative:
poaCode: '074'
receivedDate: '2024-10-30T08:22:07-05:00'
actionedDate: '2025-01-09T10:19:26-06:00'
status: Accepted
declinedReason: null
consentAddressChange: true
recordConsent: true
schema:
type: object
required:
- data
properties:
data:
type: object
required:
- type
- attributes
properties:
id:
type: string
format: uuid
type:
type: string
enum:
- power-of-attorney-request
attributes:
type: object
required:
- veteran
- claimant
- representative
properties:
veteran:
type: object
properties:
firstName:
description: First name for the veteran.
type: string
lastName:
description: Last name for the veteran.
type: string
middleName:
description: Middle name for the veteran.
type: string
claimant:
type: object
properties:
firstName:
description: First name for the dependent claimant.
type: string
lastName:
description: Last name for the dependent claimant.
type: string
middleName:
description: Middle name for the dependent claimant.
type: string
address:
city:
type: string
country:
type: string
militaryPo:
type: string
militaryPostalCode:
type: string
state:
type: string
zip:
type: string
representative:
type: object
properties:
poaCode:
type: string
vsoUserEmail:
type: string
vsoUserFirstName:
type: string
vsoUserLastName:
type: string
receivedDate:
description: Date the request for representation was established.
type: string
format: date-time
actionedDate:
description: Date the request for representation was accepted or declined by a representative.
type: string
format: date-time
status:
description: Status of the request for representation.
type: string
declinedReason:
description: Reason for declining the request for representation.
type: string
consentAddressChange:
description: Authorization for Representative to Act on Claimant's Behalf to Change Claimant's Address.
type: boolean
enum:
- true
- false
recordConsent:
description: Authorization for Representative's Access to Records Protected by Section 7332, Title 38, U.S.C.
type: boolean
enum:
- true
- false
'401':
description: Unauthorized
content:
application/json:
example:
errors:
- title: Not authorized
status: '401'
detail: Not authorized
schema:
type: object
required:
- errors
properties:
errors:
type: array
items:
additionalProperties: false
required:
- title
- detail
- status
properties:
title:
type: string
enum:
- Not authorized
detail:
type: string
enum:
- Not authorized
status:
type: string
enum:
- '401'
'404':
description: Resource not found
content:
application/json:
example:
errors:
- status: '404'
title: Resource not found
detail: 'Could not find Power of Attorney Request with id: 12e13134-7229-4e44-90ae-bcea2a4525fa'
schema:
type: object
required:
- errors
properties:
errors:
type: array
items:
additionalProperties: false
required:
- title
- detail
- status
properties:
title:
type: string
enum:
- Resource not found
detail:
type: string
status:
type: string
enum:
- '404'
'413':
description: Payload too large
content:
application/json:
schema:
type: object
properties:
message:
type: string
example:
message: Request size limit exceeded
'429':
description: Too many requests
content:
application/json:
schema:
type: object
properties:
message:
type: string
example:
message: API rate limit exceeded
'504':
description: Gateway Timeout
content:
application/json:
schema:
type: object
properties:
message:
type: string
example:
message: The server took too long to respond
/veterans/power-of-attorney-requests/{id}/decide:
post:
summary: Submits representative decision for a power of attorney request
tags:
- Power of Attorney
operationId: POST:/veterans/power-of-attorney-requests/{id}/decide
security:
- productionOauth:
- system/claim.read
- system/claim.write
- sandboxOauth:
- system/claim.read
- system/claim.write
- bearer_token: []
description: Approve or decline a power of attorney request. If approved, the power of attorney request will be submitted to VA. The claimant will be notified of the decision by email.
parameters:
- name: id
in: path
required: true
example: 00000000-0000-0000-0000-000000000012
description: The ID of the request for representation
schema:
type: string
responses:
'200':
description: Submit decision
content:
application/json:
example:
data:
id: 5ff6a995-5b29-4819-91af-13f1bb312fg5
type: power-of-attorney-request
attributes:
veteran:
firstName: ANDREA
middleName: L
lastName: MITCHELL
claimant:
firstName: null
lastName: null
address:
city: Portland
stateCode: OR
zipCode: '56789'
countryCode: USA
representative:
poaCode: '074'
receivedDate: '2024-10-30T08:22:07-05:00'
actionedDate: '2025-01-09T10:19:26-06:00'
status: Accepted
declinedReason: null
consentAddressChange: true
recordConsent: true
schema:
type: object
required:
- data
properties:
data:
type: object
required:
- type
- attributes
properties:
id:
type: string
format: uuid
type:
type: string
enum:
- power-of-attorney-request
attributes:
type: object
required:
- veteran
- claimant
- representative
properties:
veteran:
type: object
properties:
firstName:
description: First name for the veteran.
type: string
lastName:
description: Last name for the veteran.
type: string
middleName:
description: Middle name for the veteran.
type: string
claimant:
type: object
properties:
firstName:
description: First name for the dependent claimant.
type: string
lastName:
description: Last name for the dependent claimant.
type: string
middleName:
description: Middle name for the dependent claimant.
type: string
address:
city:
type: string
country:
type: string
militaryPo:
type: string
militaryPostalCode:
type: string
state:
type: string
zip:
type: string
representative:
type: object
properties:
poaCode:
type: string
vsoUserEmail:
type: string
vsoUserFirstName:
type: string
vsoUserLastName:
type: string
receivedDate:
description: Date the request for representation was established.
type: string
format: date-time
actionedDate:
description: Date the request for representation was accepted or declined by a representative.
type: string
format: date-time
status:
description: Status of the request for representation.
type: string
declinedReason:
description: Reason for declining the request for representation.
type: string
consentAddressChange:
description: Authorization for Representative to Act on Claimant's Behalf to Change Claimant's Address.
type: boolean
enum:
- true
- false
recordConsent:
description: Authorization for Representative's Access to Records Protected by Section 7332, Title 38, U.S.C.
type: boolean
enum:
- true
- false
'401':
description: Unauthorized
content:
application/json:
example:
errors:
- title: Not authorized
status: '401'
detail: Not authorized
schema:
type: object
required:
- errors
properties:
errors:
type: array
items:
additionalProperties: false
required:
- title
- detail
properties:
title:
type: string
enum:
- Not authorized
detail:
type: string
enum:
- Not authorized
status:
type: string
enum:
- '401'
'404':
description: Resource not found
content:
application/json:
example:
errors:
- status: '404'
title: Resource not found
detail: 'Could not find Power of Attorney request with id: 348fa995-5b29-4819-91af-13f1bb3c7d77'
schema_validation_error:
summary: Schema validation error
value:
errors:
- status: '404'
title: Resource not found
detail: 'Could not find Power of Attorney request with id: 348fa995-5b29-4819-91af-13f1bb3c7d77'
schema:
type: object
required:
- errors
properties:
errors:
type: array
items:
additionalProperties: false
required:
- title
- detail
- status
properties:
title:
type: string
enum:
- Resource not found
detail:
type: string
status:
type: string
enum:
- '404'
'413':
description: Payload too large
content:
application/json:
schema:
type: object
properties:
message:
type: string
example:
message: Request size limit exceeded
'422':
description: Malformed request body
content:
application/json:
example:
errors:
- title: Unprocessable entity
status: '422'
detail: 'The request body is not a valid JSON object: Hash/Object not terminated (after ) at line 1'
source:
pointer: ' at line 1'
schema:
type: object
required:
- errors
properties:
errors:
type: array
items:
additionalProperties: false
required:
- title
- detail
- status
properties:
title:
type: string
detail:
type: string
source:
type: object
status:
type: string
enum:
- '422'
'429':
description: Too many requests
content:
application/json:
schema:
type: object
properties:
message:
type: string
example:
message: API rate limit exceeded
'504':
description: Gateway Timeout
content:
application/json:
schema:
type: object
properties:
message:
type: string
example:
message: The server took too long to respond
requestBody:
content:
application/json:
schema:
$schema: http://json-schema.org/draft-07/schema#
description: Power Of Attorney Request Decision
type: object
required:
- data
properties:
data:
type: object
additionalProperties: false
required:
- attributes
properties:
attributes:
type: object
additionalProperties: false
required:
- decision
- representativeId
properties:
decision:
type: string
description: The decision of the request.
enum:
- ACCEPTED
- DECLINED
declinedReason:
type: string
description: The reason for declining the request.
nullable: true
representativeId:
type: string
description: The unique identifier of the requestʼs representative.
example:
data:
attributes:
decision: ACCEPTED
representativeId: '12345678'
declinedReason: null
required: true
/veterans/{veteranId}/2122/validate:
post:
summary: Validates request to establish an organization as a claimant’s accredited representative
tags:
- Power of Attorney
operationId: POST:/veterans/{veteranId}/2122/validate
security:
- productionOauth:
- system/claim.read
- system/claim.write
- sandboxOauth:
- system/claim.read
- system/claim.write
- bearer_token: []
parameters:
- name: veteranId
in: path
required: true
example: 1012667145V762142
description: ID of claimant
schema:
type: string
description: 'Validate a request to establish an organization with power of attorney (VA Form 21-22). Use POST
/veterans/{veteranId}/2122 to automatically establish submit VA Form 21-22.
'
responses:
'200':
description: Valid request response
content:
application/json:
example:
data:
type: form/21-22/validation
attributes:
status: valid
schema:
$schema: http://json-schema.org/draft-07/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
description: Says if submission of 21-22 would work with the given parameters
enum:
- 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:
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: 'Could not find an Accredited Representative with registration number: 999999999999 and poa code: 083'
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
'413':
description: Payload too large
content:
application/json:
schema:
type: object
properties:
message:
type: string
example:
message: Request size limit exceeded
'422':
description: Unprocessable Entity
content:
application/json:
example:
errors:
- title: Unprocessable entity
detail: The property /serviceOrganization did not contain the required key poaCode
status: '422'
source:
pointer: data/attributes/serviceOrganization
- title: Unprocessable entity
detail: The property /serviceOrganization did not contain the required key registrationNumber
status: '422'
source:
pointer: data/attributes/serviceOrganization
- title: Unprocessable entity
detail: The property / did not contain the required key veteran
status: '422'
source:
pointer: data/attributes/
- title: Unprocessable entity
detail: The property /serviceOrganization/withoutPoaCode is not defined on the schema. Additional properties are not allowed
status: '422'
source:
pointer: data/attributes/serviceOrganization/withoutPoaCode
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
'429':
description: Too many requests
content:
application/json:
schema:
type: object
properties:
message:
type: string
example:
message: API rate limit exceeded
'504':
description: Gateway Timeout
content:
application/json:
schema:
type: object
properties:
message:
type: string
example:
message: The server took too long to respond
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: Form 2122 Schema
type: object
additionalProperties: false
required:
- veteran
- serviceOrganization
properties:
veteran:
type: object
additionalProperties: false
required:
- address
properties:
address:
type: object
additionalProperties: false
required:
- addressLine1
- city
- stateCode
- countryCode
properties:
addressLine1:
description: Street number and name for the veteran's address.
type: string
pattern: ^([-a-zA-Z0-9'.,]([-a-zA-Z0-9'., ])?)+$
maxLength: 30
addressLine2:
description: Apartment or unit number for the veteran's address.
type: string
maxLength: 5
city:
description: City for the veteran's address.
type: string
example: Portland
maxLength: 18
stateCode:
description: State abbreviation for the veteran's address.
type: string
pattern: ^[a-z,A-Z]{2}$
example: OR
countryCode:
description: Two-letter country code for the veteran's address.
type: string
pattern: ^[a-z,A-Z]{2}$
example: US
zipCode:
description: Zip code (first 5 digits) for the veteran's address. Required if 'countryCode' is 'US'.
type: string
pattern: ^\d{5}?$
example: '12345'
zipCodeSuffix:
description: Zip code suffix (last 4 digits) for the veteran's address.
type: string
pattern: ^\d{4}?$
example: '6789'
phone:
$comment: the phone fields must not exceed 20 chars, when concatenated
type: object
additionalProperties: false
required:
- phoneNumber
properties:
countryCode:
description: Country code for the veteran's phone number. Required for international phone numbers.
type: string
pattern: ^[0-9]+$
areaCode:
description: Area code for the veteran's phone number. Required if countryCode is '1' or not included.
type: string
pattern: ^[0-9]{1,5}$
example: '555'
phoneNumber:
description: Phone number for the veteran.
type: string
pattern: ^\d(?:[- ]?\d){0,14}$
example: '5555555'
minLength: 1
maxLength: 23
if:
properties:
countryCode:
anyOf:
- type: string
enum:
- '1'
then:
required:
- areaCode
else:
anyOf:
- required:
- countryCode
- required:
- areaCode
email:
description: Email address for the veteran.
type: string
pattern: ^(?!.*\s).+@.+\..+|^$
maxLength: 61
example: veteran@example.com
serviceNumber:
description: Service number for the veteran.
type: string
pattern: ^\d{9}?$
example: '123456789'
insuranceNumber:
type: string
maxLength: 60
description: Insurance number for the veteran, if applicable. Include letter prefix.
claimant:
description: Include claimant information for dependent claimants.
type: object
additionalProperties: false
properties:
claimantId:
type: string
example: '123456789'
description: Integration Control Number (ICN) for the dependent claimant.
address:
type: object
additionalProperties: false
properties:
addressLine1:
description: Street number and name for the dependent claimant's address. Required if claimant information provided.
type: string
pattern: ^([-a-zA-Z0-9'.,]([-a-zA-Z0-9'., ])?)+$
maxLength: 30
addressLine2:
description: Apartment or unit number for the dependent claimant's address.
type: string
maxLength: 5
city:
description: City for the dependent claimant's address. Required if claimant information provided.
type: string
example: Portland
maxLength: 18
stateCode:
description: State abbreviation for the dependent claimant's address. Required if claimant information provided.
type: string
pattern: ^[a-z,A-Z]{2}$
example: OR
countryCode:
description: Two-letter country code for the dependent claimant's address. Required if claimant information provided.
type: string
pattern: ^[a-z,A-Z]{2}$
example: US
zipCode:
description: Zip code (first 5 digits) for the dependent claimant's address. Required if 'countryCode' is 'US'.
type: string
pattern: ^\d{5}?$
example: '12345'
zipCodeSuffix:
description: Zip code suffix (last 4 digits) for the dependent claimant's address.
type: string
pattern: ^\d{4}?$
example: '6789'
additionalProperties:
type: boolean
phone:
$comment: the phone fields must not exceed 20 chars, when concatenated
type: object
additionalProperties: false
required:
- phoneNumber
properties:
countryCode:
description: Country code for the dependent claimant's phone number. Required for international phone numbers.
type: string
pattern: ^[0-9]+$
areaCode:
description: Area code for the dependent claimant's phone number. Required if countryCode is '1' or not included.
type: string
pattern: ^[0-9]{1,5}$
example: '555'
phoneNumber:
description: Phone number for the dependent claimant.
type: string
pattern: ^\d(?:[- ]?\d){0,14}$
example: '5555555'
minLength: 1
maxLength: 23
if:
properties:
countryCode:
anyOf:
- type: string
enum:
- '1'
then:
required:
- areaCode
else:
anyOf:
- required:
- countryCode
- required:
- areaCode
email:
description: Email address for the dependent claimant.
type: string
pattern: ^(?!.*\s).+@.+\..+|^$
maxLength: 30
example: claimant@example.com
relationship:
description: Relationship of claimant to the veteran. Required if claimant information provided.
type: string
example: Spouse
serviceOrganization:
description: Details of the Service Organization representing the veteran.
type: object
additionalProperties: false
required:
- poaCode
- registrationNumber
properties:
poaCode:
description: The POA code of the organization.
type: string
example: A1Q
registrationNumber:
description: Registration Number of representative.
type: string
example: '12345'
jobTitle:
description: Job title of the representative.
type: string
example: Veteran Service representative
email:
description: Email address of the service organization or representative.
type: string
pattern: ^(?!.*\s).+@.+\..+|^$
maxLength: 61
example: veteran_representative@example.com
recordConsent:
description: Authorization for Representative's Access to Records Protected by Section 7332, Title 38, U.S.C. Explicitly permits the designated representative to access sensitive medical records within VA. Setting 'recordConsent' to false will prevent the designated representative from accessing the claimant's documents in VBMS.
type: boolean
consentLimits:
description: Consent for the disclosure of records relating to treatment for drug abuse, alcoholism or alcohol abuse, infection with the human immunodeficiency virus (HIV), or sickle cell anemia is limited to this list. Including 'consentLimits' will prevent the designated representative from accessing the claimant's documents in VBMS.
type: array
items:
type: string
enum:
- DRUG_ABUSE
- ALCOHOLISM
- HIV
- SICKLE_CELL
example: DRUG_ABUSE
consentAddressChange:
description: Authorization for Representative to Act on Claimant's Behalf to Change Claimant's Address.
type: boolean
example:
data:
attributes:
veteran:
address:
addressLine1: '123'
city: city
stateCode: OR
countryCode: US
zipCode: '12345'
serviceOrganization:
poaCode: 083
registrationNumber: '999999999999'
required: true
/veterans/{veteranId}/2122:
post:
summary: Automatically establishes an organization as a claimant’s accredited representative (VA Form 21-22)
description: 'Submit VA Form 21-22 to automatically establish a VA accredited organization with power of attorney
(General POA).
'
tags:
- Power of Attorney
operationId: POST:/veterans/{veteranId}/2122
security:
- productionOauth:
- system/claim.read
- system/claim.write
- sandboxOauth:
- system/claim.read
- system/claim.write
- bearer_token: []
parameters:
- name: veteranId
in: path
required: true
example: 1012667145V762142
description: ID of claimant
schema:
type: string
responses:
'202':
description: Valid request response
content:
application/json:
example:
data:
id: 00000000-0000-0000-0000-000000000013
type: organization
attributes:
code: 083
name: 083 - DISABLED AMERICAN VETERANS
phoneNumber: 555-555-5555
schema:
$schema: http://json-schema.org/draft-07/schema#
type: object
required:
- data
properties:
data:
type: object
additionalProperties: false
required:
- type
- attributes
properties:
type:
type: string
id:
type: string
attributes:
type: object
additionalProperties: false
required:
- code
properties:
code:
type: string
description: code for Power of attorney
phoneNumber:
type: string
name:
type: string
'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: 'Could not find an Accredited Representative with registration number: 999999999999 and poa code: 083'
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
'413':
description: Payload too large
content:
application/json:
schema:
type: object
properties:
message:
type: string
example:
message: Request size limit exceeded
'422':
description: Unprocessable Entity
content:
application/json:
example:
errors:
- title: Unprocessable entity
detail: The property /serviceOrganization did not contain the required key poaCode
status: '422'
source:
pointer: data/attributes/serviceOrganization
- title: Unprocessable entity
detail: The property /serviceOrganization did not contain the required key registrationNumber
status: '422'
source:
pointer: data/attributes/serviceOrganization
- title: Unprocessable entity
detail: The property / did not contain the required key veteran
status: '422'
source:
pointer: data/attributes/
- title: Unprocessable entity
detail: The property /serviceOrganization/withoutPoaCode is not defined on the schema. Additional properties are not allowed
status: '422'
source:
pointer: data/attributes/serviceOrganization/withoutPoaCode
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
'429':
description: Too many requests
content:
application/json:
schema:
type: object
properties:
message:
type: string
example:
message: API rate limit exceeded
'504':
description: Gateway Timeout
content:
application/json:
schema:
type: object
properties:
message:
type: string
example:
message: The server took too long to respond
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: Form 2122 Schema
type: object
additionalProperties: false
required:
- veteran
- serviceOrganization
properties:
veteran:
type: object
additionalProperties: false
required:
- address
properties:
address:
type: object
additionalProperties: false
required:
- addressLine1
- city
- stateCode
- countryCode
properties:
addressLine1:
description: Street number and name for the veteran's address.
type: string
pattern: ^([-a-zA-Z0-9'.,]([-a-zA-Z0-9'., ])?)+$
maxLength: 30
addressLine2:
description: Apartment or unit number for the veteran's address.
type: string
maxLength: 5
city:
description: City for the veteran's address.
type: string
example: Portland
maxLength: 18
stateCode:
description: State abbreviation for the veteran's address.
type: string
pattern: ^[a-z,A-Z]{2}$
example: OR
countryCode:
description: Two-letter country code for the veteran's address.
type: string
pattern: ^[a-z,A-Z]{2}$
example: US
zipCode:
description: Zip code (first 5 digits) for the veteran's address. Required if 'countryCode' is 'US'.
type: string
pattern: ^\d{5}?$
example: '12345'
zipCodeSuffix:
description: Zip code suffix (last 4 digits) for the veteran's address.
type: string
pattern: ^\d{4}?$
example: '6789'
phone:
$comment: the phone fields must not exceed 20 chars, when concatenated
type: object
additionalProperties: false
required:
- phoneNumber
properties:
countryCode:
description: Country code for the veteran's phone number. Required for international phone numbers.
type: string
pattern: ^[0-9]+$
areaCode:
description: Area code for the veteran's phone number. Required if countryCode is '1' or not included.
type: string
pattern: ^[0-9]{1,5}$
example: '555'
phoneNumber:
description: Phone number for the veteran.
type: string
pattern: ^\d(?:[- ]?\d){0,14}$
example: '5555555'
minLength: 1
maxLength: 23
if:
properties:
countryCode:
anyOf:
- type: string
enum:
- '1'
then:
required:
- areaCode
else:
anyOf:
- required:
- countryCode
- required:
- areaCode
email:
description: Email address for the veteran.
type: string
pattern: ^(?!.*\s).+@.+\..+|^$
maxLength: 61
example: veteran@example.com
serviceNumber:
description: Service number for the veteran.
type: string
pattern: ^\d{9}?$
example: '123456789'
insuranceNumber:
type: string
maxLength: 60
description: Insurance number for the veteran, if applicable. Include letter prefix.
claimant:
description: Include claimant information for dependent claimants.
type: object
additionalProperties: false
properties:
claimantId:
type: string
example: '123456789'
description: Integration Control Number (ICN) for the dependent claimant.
address:
type: object
additionalProperties: false
properties:
addressLine1:
description: Street number and name for the dependent claimant's address. Required if claimant information provided.
type: string
pattern: ^([-a-zA-Z0-9'.,]([-a-zA-Z0-9'., ])?)+$
maxLength: 30
addressLine2:
description: Apartment or unit number for the dependent claimant's address.
type: string
maxLength: 5
city:
description: City for the dependent claimant's address. Required if claimant information provided.
type: string
example: Portland
maxLength: 18
stateCode:
description: State abbreviation for the dependent claimant's address. Required if claimant information provided.
type: string
pattern: ^[a-z,A-Z]{2}$
example: OR
countryCode:
description: Two-letter country code for the dependent claimant's address. Required if claimant information provided.
type: string
pattern: ^[a-z,A-Z]{2}$
example: US
zipCode:
description: Zip code (first 5 digits) for the dependent claimant's address. Required if 'countryCode' is 'US'.
type: string
pattern: ^\d{5}?$
example: '12345'
zipCodeSuffix:
description: Zip code suffix (last 4 digits) for the dependent claimant's address.
type: string
pattern: ^\d{4}?$
example: '6789'
additionalProperties:
type: boolean
phone:
$comment: the phone fields must not exceed 20 chars, when concatenated
type: object
additionalProperties: false
required:
- phoneNumber
properties:
countryCode:
description: Country code for the dependent claimant's phone number. Required for international phone numbers.
type: string
pattern: ^[0-9]+$
areaCode:
description: Area code for the dependent claimant's phone number. Required if countryCode is '1' or not included.
type: string
pattern: ^[0-9]{1,5}$
example: '555'
phoneNumber:
description: Phone number for the dependent claimant.
type: string
pattern: ^\d(?:[- ]?\d){0,14}$
example: '5555555'
minLength: 1
maxLength: 23
if:
properties:
countryCode:
anyOf:
- type: string
enum:
- '1'
then:
required:
- areaCode
else:
anyOf:
- required:
- countryCode
- required:
- areaCode
email:
description: Email address for the dependent claimant.
type: string
pattern: ^(?!.*\s).+@.+\..+|^$
maxLength: 30
example: claimant@example.com
relationship:
description: Relationship of claimant to the veteran. Required if claimant information provided.
type: string
example: Spouse
serviceOrganization:
description: Details of the Service Organization representing the veteran.
type: object
additionalProperties: false
required:
- poaCode
- registrationNumber
properties:
poaCode:
description: The POA code of the organization.
type: string
example: A1Q
registrationNumber:
description: Registration Number of representative.
type: string
example: '12345'
jobTitle:
description: Job title of the representative.
type: string
example: Veteran Service representative
email:
description: Email address of the service organization or representative.
type: string
pattern: ^(?!.*\s).+@.+\..+|^$
maxLength: 61
example: veteran_representative@example.com
recordConsent:
description: Authorization for Representative's Access to Records Protected by Section 7332, Title 38, U.S.C. Explicitly permits the designated representative to access sensitive medical records within VA. Setting 'recordConsent' to false will prevent the designated representative from accessing the claimant's documents in VBMS.
type: boolean
consentLimits:
description: Consent for the disclosure of records relating to treatment for drug abuse, alcoholism or alcohol abuse, infection with the human immunodeficiency virus (HIV), or sickle cell anemia is limited to this list. Including 'consentLimits' will prevent the designated representative from accessing the claimant's documents in VBMS.
type: array
items:
type: string
enum:
- DRUG_ABUSE
- ALCOHOLISM
- HIV
- SICKLE_CELL
example: DRUG_ABUSE
consentAddressChange:
description: Authorization for Representative to Act on Claimant's Behalf to Change Claimant's Address.
type: boolean
example:
data:
attributes:
veteran:
address:
addressLine1: '123'
city: city
stateCode: OR
countryCode: US
zipCode: '12345'
serviceOrganization:
poaCode: 083
registrationNumber: '999999999999'
examples:
POA for Veteran:
value:
data:
attributes:
veteran:
address:
addressLine1: '123'
city: city
stateCode: OR
countryCode: US
zipCode: '12345'
serviceOrganization:
poaCode: 083
registrationNumber: '999999999999'
POA for Dependent Claimant:
value:
data:
attributes:
veteran:
address:
addressLine1: '123'
city: city
stateCode: OR
countryCode: US
zipCode: '12345'
serviceOrganization:
poaCode: 083
registrationNumber: '999999999999'
claimant:
claimantId: 1013093331V548481
address:
addressLine1: 123 anystreet
city: anytown
stateCode: OR
countryCode: US
zipCode: '12345'
relationship: Spouse
required: true
/veterans/{veteranId}/2122a/validate:
post:
summary: Validates request to establish an individual as a claimant’s accredited representative (VA Form 21-22a)
tags:
- Power of Attorney
operationId: POST:/veterans/{veteranId}/2122a/validate
security:
- productionOauth:
- system/claim.read
- system/claim.write
- sandboxOauth:
- system/claim.read
- system/claim.write
- bearer_token: []
parameters:
- name: veteranId
in: path
required: true
example: 1012667145V762142
description: ID of claimant
schema:
type: string
description: 'Validate a request to establish an individual with power of attorney (VA Form 21-22a). Use POST
/veterans/{veteranId}/2122a to automatically establish submit VA Form 21-22a.
'
responses:
'200':
description: Valid request response
content:
application/json:
example:
data:
type: form/21-22a/validation
attributes:
status: valid
schema:
$schema: http://json-schema.org/draft-07/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
description: Says if submission of 21-22a would work with the given parameters
enum:
- 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:
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: 'Could not find an Accredited Representative with registration number: 999999999999 and poa code: 067'
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
'413':
description: Payload too large
content:
application/json:
schema:
type: object
properties:
message:
type: string
example:
message: Request size limit exceeded
'422':
description: Unprocessable Entity
content:
application/json:
example:
errors:
- title: Unprocessable entity
detail: The property /representative did not contain the required key poaCode
status: '422'
source:
pointer: data/attributes/representative
- title: Unprocessable entity
detail: The property /representative did not contain the required key registrationNumber
status: '422'
source:
pointer: data/attributes/representative
- title: Unprocessable entity
detail: The property / did not contain the required key veteran
status: '422'
source:
pointer: data/attributes/
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
'429':
description: Too many requests
content:
application/json:
schema:
type: object
properties:
message:
type: string
example:
message: API rate limit exceeded
'504':
description: Gateway Timeout
content:
application/json:
schema:
type: object
properties:
message:
type: string
example:
message: The server took too long to respond
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: Form 2122a Schema
type: object
additionalProperties: false
required:
- veteran
- representative
properties:
veteran:
type: object
additionalProperties: false
required:
- address
properties:
serviceNumber:
description: Service number for the veteran.
type: string
maxLength: 9
serviceBranch:
description: Service Branch for the veteran.
type: string
enum:
- AIR_FORCE
- ARMY
- COAST_GUARD
- MARINE_CORPS
- NAVY
- SPACE_FORCE
- OTHER
example: ARMY
serviceBranchOther:
description: For a 'service branch' of value 'other', please provide the service branch name.
type: string
maxLength: 27
example: Air National Guard
address:
type: object
additionalProperties: false
required:
- addressLine1
- city
- stateCode
- countryCode
properties:
addressLine1:
description: Street number and name for the veteran's address.
type: string
pattern: ^([-a-zA-Z0-9'.,]([-a-zA-Z0-9'., ])?)+$
maxLength: 30
addressLine2:
description: Apartment or unit number for the veteran's address.
type: string
maxLength: 5
city:
description: City for the veteran's address.
type: string
example: Portland
maxLength: 18
stateCode:
description: State abbreviation for the veteran's address.
type: string
pattern: ^[a-z,A-Z]{2}$
example: OR
countryCode:
description: Two-letter country code for the veteran's address.
type: string
pattern: ^[a-z,A-Z]{2}$
example: US
zipCode:
description: Zip code (first 5 digits) for the veteran's address. Required if 'countryCode' is 'US'.
type: string
pattern: ^\d{5}?$
example: '12345'
zipCodeSuffix:
description: Zip code suffix (last 4 digits) for the veteran's address.
type: string
pattern: ^\d{4}?$
example: '6789'
phone:
$comment: the phone fields must not exceed 20 chars, when concatenated
type: object
additionalProperties: false
required:
- phoneNumber
properties:
countryCode:
description: Country code for the veteran's phone number. Required for international phone numbers.
type: string
pattern: ^[0-9]+$
areaCode:
description: Area code for the veteran's phone number. Required if countryCode is '1' or not included.
type: string
pattern: ^[0-9]{1,5}$
example: '555'
phoneNumber:
description: Phone number for the veteran.
type: string
pattern: ^\d(?:[- ]?\d){0,14}$
example: '5555555'
minLength: 1
maxLength: 23
if:
properties:
countryCode:
anyOf:
- type: string
enum:
- '1'
then:
required:
- areaCode
else:
anyOf:
- required:
- countryCode
- required:
- areaCode
email:
description: Email address for the veteran.
type: string
pattern: ^(?!.*\s).+@.+\..+|^$
maxLength: 61
example: veteran@example.com
claimant:
description: Include claimant information for dependent claimants.
type: object
additionalProperties: false
properties:
claimantId:
type: string
example: '123456789'
description: Integration Control Number (ICN) for the dependent claimant.
address:
type: object
additionalProperties: false
properties:
addressLine1:
description: Street number and name for the dependent claimant's address. Required if claimant information provided.
type: string
pattern: ^([-a-zA-Z0-9'.,]([-a-zA-Z0-9'., ])?)+$
maxLength: 30
addressLine2:
description: Apartment or unit number for the dependent claimant's address.
type: string
maxLength: 5
city:
description: City for the dependent claimant's address. Required if claimant information provided.
type: string
example: Portland
maxLength: 18
stateCode:
description: State abbreviation for the dependent claimant's address. Required if claimant information provided.
type: string
pattern: ^[a-z,A-Z]{2}$
example: OR
countryCode:
description: Two-letter country code for the dependent claimant's address. Required if claimant information provided.
type: string
pattern: ^[a-z,A-Z]{2}$
example: USA
zipCode:
description: Zip code (first 5 digits) for the dependent claimant's address. Required if 'countryCode' is 'US'.
type: string
pattern: ^\d{5}?$
example: '12345'
zipCodeSuffix:
description: Zip code suffix (last 4 digits) for the dependent claimant's address.
type: string
pattern: ^\d{4}?$
example: '6789'
phone:
$comment: the phone fields must not exceed 20 chars, when concatenated
type: object
additionalProperties: false
required:
- phoneNumber
properties:
countryCode:
description: Country code for the dependent claimant's phone number. Required for international phone numbers.
type: string
pattern: ^[0-9]+$
areaCode:
description: Area code for the dependent claimant's phone number. Required if countryCode is '1' or not included.
type: string
pattern: ^[0-9]{1,5}$
example: '555'
phoneNumber:
description: Phone number for the dependent claimant.
type: string
pattern: ^\d(?:[- ]?\d){0,14}$
example: '5555555'
minLength: 1
maxLength: 23
if:
properties:
countryCode:
anyOf:
- type: string
enum:
- '1'
then:
required:
- areaCode
else:
anyOf:
- required:
- countryCode
- required:
- areaCode
email:
description: Email address for the dependent claimant.
type: string
pattern: ^(?!.*\s).+@.+\..+|^$
maxLength: 30
example: claimant@example.com
relationship:
description: Relationship of claimant to the veteran. Required if claimant information provided.
type: string
example: Spouse
representative:
description: Details of the individual representative representing the veteran.
type: object
additionalProperties: false
required:
- poaCode
- registrationNumber
- type
properties:
poaCode:
description: The POA code of the representative.
type: string
example: A1Q
registrationNumber:
description: Registration Number of representative.
type: string
example: '12345'
type:
description: Type of individual representative
type: string
enum:
- ATTORNEY
- AGENT
example: ATTORNEY
address:
type: object
additionalProperties: false
properties:
addressLine1:
description: Street number and name for the representative's address.
type: string
pattern: ^([-a-zA-Z0-9'.,]([-a-zA-Z0-9'., ])?)+$
maxLength: 30
addressLine2:
description: Apartment or unit number for the representative's address.
type: string
maxLength: 5
city:
description: City for the representative's address.
type: string
example: Portland
maxLength: 18
stateCode:
description: State abbreviation for the representative's address.
type: string
pattern: ^[a-z,A-Z]{2}$
example: OR
countryCode:
description: Two-letter country code for the representative's address.
type: string
pattern: ^[a-z,A-Z]{2}$
example: US
zipCode:
description: Zip code (first 5 digits) for the representative's address. Required if 'countryCode' is 'US'.
type: string
pattern: ^\d{5}?$
example: '12345'
zipCodeSuffix:
description: Zip code suffix (last 4 digits) for the representative's address.
type: string
pattern: ^\d{4}?$
example: '6789'
recordConsent:
description: Authorization for Representative's Access to Records Protected by Section 7332, Title 38, U.S.C. Explicitly permits the designated representative to access sensitive medical records within VA. Setting 'recordConsent' to false will prevent the designated representative from accessing the claimant's documents in VBMS.
type: boolean
consentLimits:
description: Consent for the disclosure of records relating to treatment for drug abuse, alcoholism or alcohol abuse, infection with the human immunodeficiency virus (HIV), or sickle cell anemia is limited to this list. Including 'consentLimits' will prevent the designated representative from accessing the claimant's documents in VBMS.
type: array
items:
type: string
enum:
- DRUG_ABUSE
- ALCOHOLISM
- HIV
- SICKLE_CELL
example: DRUG ABUSE
consentAddressChange:
description: Authorization for Representative to Act on Claimant's Behalf to Change Claimant's Address.
type: boolean
conditionsOfAppointment:
description: If the individual named in Item 15A is an accredited agent or attorney, the scope of representation provided before VA may be limited by the agent or attorney as indicated below in Item 23
type: array
items:
type: string
example:
data:
attributes:
veteran:
address:
addressLine1: '123'
addressLine2: 2a
city: city
countryCode: US
stateCode: OR
zipCode: '12345'
zipCodeSuffix: '6789'
representative:
poaCode: '067'
registrationNumber: '999999999999'
type: ATTORNEY
address:
addressLine1: '123'
addressLine2: 2a
city: city
countryCode: US
stateCode: OR
zipCode: '12345'
zipCodeSuffix: '6789'
required: true
/veterans/{veteranId}/2122a:
post:
summary: Automatically establishes an individual as a claimant’s accredited representative (VA Form 21-22a)
tags:
- Power of Attorney
operationId: POST:/veterans/{veteranId}/2122a
security:
- productionOauth:
- system/claim.read
- system/claim.write
- sandboxOauth:
- system/claim.read
- system/claim.write
- bearer_token: []
parameters:
- name: veteranId
in: path
required: true
example: 1012667145V762142
description: ID of claimant
schema:
type: string
description: 'Submit VA Form 21-22 to automatically establish a VA accredited individual with power of attorney (General POA).
'
responses:
'202':
description: Valid request response
content:
application/json:
example:
data:
id: 00000000-0000-0000-0000-000000000014
type: individual
attributes:
code: '067'
name: Firstname Lastname
phoneNumber: 555-555-5555
schema:
$schema: http://json-schema.org/draft-07/schema#
type: object
required:
- data
properties:
data:
type: object
additionalProperties: false
required:
- type
- attributes
properties:
type:
type: string
id:
type: string
attributes:
type: object
additionalProperties: false
required:
- code
properties:
code:
type: string
description: code for Power of attorney
phoneNumber:
type: string
name:
type: string
'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: 'Could not find an Accredited Representative with registration number: 999999999999 and poa code: 067'
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
'413':
description: Payload too large
content:
application/json:
schema:
type: object
properties:
message:
type: string
example:
message: Request size limit exceeded
'422':
description: Unprocessable Entity
content:
application/json:
example:
errors:
- title: Unprocessable entity
detail: The property /representative did not contain the required key poaCode
status: '422'
source:
pointer: data/attributes/representative
- title: Unprocessable entity
detail: The property /representative did not contain the required key registrationNumber
status: '422'
source:
pointer: data/attributes/representative
- title: Unprocessable entity
detail: The property / did not contain the required key veteran
status: '422'
source:
pointer: data/attributes/
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
'429':
description: Too many requests
content:
application/json:
schema:
type: object
properties:
message:
type: string
example:
message: API rate limit exceeded
'504':
description: Gateway Timeout
content:
application/json:
schema:
type: object
properties:
message:
type: string
example:
message: The server took too long to respond
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: Form 2122a Schema
type: object
additionalProperties: false
required:
- veteran
- representative
properties:
veteran:
type: object
additionalProperties: false
required:
- address
properties:
serviceNumber:
description: Service number for the veteran.
type: string
maxLength: 9
serviceBranch:
description: Service Branch for the veteran.
type: string
enum:
- AIR_FORCE
- ARMY
- COAST_GUARD
- MARINE_CORPS
- NAVY
- SPACE_FORCE
- OTHER
example: ARMY
serviceBranchOther:
description: For a 'service branch' of value 'other', please provide the service branch name.
type: string
maxLength: 27
example: Air National Guard
address:
type: object
additionalProperties: false
required:
- addressLine1
- city
- stateCode
- countryCode
properties:
addressLine1:
description: Street number and name for the veteran's address.
type: string
pattern: ^([-a-zA-Z0-9'.,]([-a-zA-Z0-9'., ])?)+$
maxLength: 30
addressLine2:
description: Apartment or unit number for the veteran's address.
type: string
maxLength: 5
city:
description: City for the veteran's address.
type: string
example: Portland
maxLength: 18
stateCode:
description: State abbreviation for the veteran's address.
type: string
pattern: ^[a-z,A-Z]{2}$
example: OR
countryCode:
description: Two-letter country code for the veteran's address.
type: string
pattern: ^[a-z,A-Z]{2}$
example: US
zipCode:
description: Zip code (first 5 digits) for the veteran's address. Required if 'countryCode' is 'US'.
type: string
pattern: ^\d{5}?$
example: '12345'
zipCodeSuffix:
description: Zip code suffix (last 4 digits) for the veteran's address.
type: string
pattern: ^\d{4}?$
example: '6789'
phone:
$comment: the phone fields must not exceed 20 chars, when concatenated
type: object
additionalProperties: false
required:
- phoneNumber
properties:
countryCode:
description: Country code for the veteran's phone number. Required for international phone numbers.
type: string
pattern: ^[0-9]+$
areaCode:
description: Area code for the veteran's phone number. Required if countryCode is '1' or not included.
type: string
pattern: ^[0-9]{1,5}$
example: '555'
phoneNumber:
description: Phone number for the veteran.
type: string
pattern: ^\d(?:[- ]?\d){0,14}$
example: '5555555'
minLength: 1
maxLength: 23
if:
properties:
countryCode:
anyOf:
- type: string
enum:
- '1'
then:
required:
- areaCode
else:
anyOf:
- required:
- countryCode
- required:
- areaCode
email:
description: Email address for the veteran.
type: string
pattern: ^(?!.*\s).+@.+\..+|^$
maxLength: 61
example: veteran@example.com
claimant:
description: Include claimant information for dependent claimants.
type: object
additionalProperties: false
properties:
claimantId:
type: string
example: '123456789'
description: Integration Control Number (ICN) for the dependent claimant.
address:
type: object
additionalProperties: false
properties:
addressLine1:
description: Street number and name for the dependent claimant's address. Required if claimant information provided.
type: string
pattern: ^([-a-zA-Z0-9'.,]([-a-zA-Z0-9'., ])?)+$
maxLength: 30
addressLine2:
description: Apartment or unit number for the dependent claimant's address.
type: string
maxLength: 5
city:
description: City for the dependent claimant's address. Required if claimant information provided.
type: string
example: Portland
maxLength: 18
stateCode:
description: State abbreviation for the dependent claimant's address. Required if claimant information provided.
type: string
pattern: ^[a-z,A-Z]{2}$
example: OR
countryCode:
description: Two-letter country code for the dependent claimant's address. Required if claimant information provided.
type: string
pattern: ^[a-z,A-Z]{2}$
example: USA
zipCode:
description: Zip code (first 5 digits) for the dependent claimant's address. Required if 'countryCode' is 'US'.
type: string
pattern: ^\d{5}?$
example: '12345'
zipCodeSuffix:
description: Zip code suffix (last 4 digits) for the dependent claimant's address.
type: string
pattern: ^\d{4}?$
example: '6789'
phone:
$comment: the phone fields must not exceed 20 chars, when concatenated
type: object
additionalProperties: false
required:
- phoneNumber
properties:
countryCode:
description: Country code for the dependent claimant's phone number. Required for international phone numbers.
type: string
pattern: ^[0-9]+$
areaCode:
description: Area code for the dependent claimant's phone number. Required if countryCode is '1' or not included.
type: string
pattern: ^[0-9]{1,5}$
example: '555'
phoneNumber:
description: Phone number for the dependent claimant.
type: string
pattern: ^\d(?:[- ]?\d){0,14}$
example: '5555555'
minLength: 1
maxLength: 23
if:
properties:
countryCode:
anyOf:
- type: string
enum:
- '1'
then:
required:
- areaCode
else:
anyOf:
- required:
- countryCode
- required:
- areaCode
email:
description: Email address for the dependent claimant.
type: string
pattern: ^(?!.*\s).+@.+\..+|^$
maxLength: 30
example: claimant@example.com
relationship:
description: Relationship of claimant to the veteran. Required if claimant information provided.
type: string
example: Spouse
representative:
description: Details of the individual representative representing the veteran.
type: object
additionalProperties: false
required:
- poaCode
- registrationNumber
- type
properties:
poaCode:
description: The POA code of the representative.
type: string
example: A1Q
registrationNumber:
description: Registration Number of representative.
type: string
example: '12345'
type:
description: Type of individual representative
type: string
enum:
- ATTORNEY
- AGENT
example: ATTORNEY
address:
type: object
additionalProperties: false
properties:
addressLine1:
description: Street number and name for the representative's address.
type: string
pattern: ^([-a-zA-Z0-9'.,]([-a-zA-Z0-9'., ])?)+$
maxLength: 30
addressLine2:
description: Apartment or unit number for the representative's address.
type: string
maxLength: 5
city:
description: City for the representative's address.
type: string
example: Portland
maxLength: 18
stateCode:
description: State abbreviation for the representative's address.
type: string
pattern: ^[a-z,A-Z]{2}$
example: OR
countryCode:
description: Two-letter country code for the representative's address.
type: string
pattern: ^[a-z,A-Z]{2}$
example: US
zipCode:
description: Zip code (first 5 digits) for the representative's address. Required if 'countryCode' is 'US'.
type: string
pattern: ^\d{5}?$
example: '12345'
zipCodeSuffix:
description: Zip code suffix (last 4 digits) for the representative's address.
type: string
pattern: ^\d{4}?$
example: '6789'
recordConsent:
description: Authorization for Representative's Access to Records Protected by Section 7332, Title 38, U.S.C. Explicitly permits the designated representative to access sensitive medical records within VA. Setting 'recordConsent' to false will prevent the designated representative from accessing the claimant's documents in VBMS.
type: boolean
consentLimits:
description: Consent for the disclosure of records relating to treatment for drug abuse, alcoholism or alcohol abuse, infection with the human immunodeficiency virus (HIV), or sickle cell anemia is limited to this list. Including 'consentLimits' will prevent the designated representative from accessing the claimant's documents in VBMS.
type: array
items:
type: string
enum:
- DRUG_ABUSE
- ALCOHOLISM
- HIV
- SICKLE_CELL
example: DRUG ABUSE
consentAddressChange:
description: Authorization for Representative to Act on Claimant's Behalf to Change Claimant's Address.
type: boolean
conditionsOfAppointment:
description: If the individual named in Item 15A is an accredited agent or attorney, the scope of representation provided before VA may be limited by the agent or attorney as indicated below in Item 23
type: array
items:
type: string
example:
data:
attributes:
veteran:
address:
addressLine1: '123'
addressLine2: 2a
city: city
countryCode: US
stateCode: OR
zipCode: '12345'
zipCodeSuffix: '6789'
representative:
poaCode: '067'
registrationNumber: '999999999999'
type: ATTORNEY
address:
addressLine1: '123'
addressLine2: 2a
city: city
countryCode: US
stateCode: OR
zipCode: '12345'
zipCodeSuffix: '6789'
examples:
POA for Veteran:
value:
data:
attributes:
veteran:
address:
addressLine1: '123'
addressLine2: 2a
city: city
countryCode: US
stateCode: OR
zipCode: '12345'
zipCodeSuffix: '6789'
representative:
poaCode: '067'
registrationNumber: '999999999999'
type: ATTORNEY
address:
addressLine1: '123'
addressLine2: 2a
city: city
countryCode: US
stateCode: OR
zipCode: '12345'
zipCodeSuffix: '6789'
POA for Dependent Claimant:
value:
data:
attributes:
veteran:
address:
addressLine1: '123'
addressLine2: 2a
city: city
countryCode: US
stateCode: OR
zipCode: '12345'
zipCodeSuffix: '6789'
representative:
poaCode: '067'
registrationNumber: '999999999999'
type: ATTORNEY
address:
addressLine1: '123'
addressLine2: 2a
city: city
countryCode: US
stateCode: OR
zipCode: '12345'
zipCodeSuffix: '6789'
claimant:
claimantId: 1013093331V548481
address:
addressLine1: 123 anystreet
city: anytown
stateCode: OR
countryCode: US
zipCode: '12345'
relationship: Spouse
required: true
/veterans/{veteranId}/power-of-attorney/{id}:
get:
summary: Checks status of power of attorney submission (VA Forms 21-22 or 21-22a)
description: Check the submissions status of a request to appoint power of attorney (VA Forms 21-22 or 21-22a).
tags:
- Power of Attorney
operationId: GET:/veterans/{veteranId}/power-of-attorney/{id}
security:
- productionOauth:
- system/claim.read
- system/claim.write
- sandboxOauth:
- system/claim.read
- system/claim.write
- bearer_token: []
parameters:
- name: veteranId
in: path
required: true
example: 1012667145V762142
description: ID of claimant
schema:
type: string
- name: id
in: path
required: true
example: 00000000-0000-0000-0000-000000000015
description: The ID of the 21-22 submission
schema:
type: string
responses:
'200':
description: Valid request response
content:
application/json:
example:
data:
id: 00000000-0000-0000-0000-000000000016
type: claimsApiPowerOfAttorneys
attributes:
createdAt: 2024-01-01 00:00:00 UTC
representative:
poaCode: '074'
status: pending
errors: []
steps:
- type: PDF_SUBMISSION
status: NOT_STARTED
completedAt: null
nextStep: POA_UPDATE
- type: POA_UPDATE
status: NOT_STARTED
completedAt: null
nextStep: POA_ACCESS_UPDATE
- type: POA_ACCESS_UPDATE
status: NOT_STARTED
completedAt: null
nextStep: CLAIMANT_NOTIFICATION
- type: CLAIMANT_NOTIFICATION
status: NOT_STARTED
completedAt: null
nextStep: null
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: Power of Attorney Submission UUID
type:
type: string
attributes:
type: object
additionalProperties: false
required:
- status
- createdAt
- representative
properties:
status:
type: string
description: Says if the power of attorney is pending, submitted, updated or errored
enum:
- pending
- submitted
- updated
- errored
createdAt:
type: string
description: Date request was first accepted
format: date
errors:
type: array
description: Error details if applicable
items:
type: object
additionalProperties: false
properties:
title:
type: string
detail:
type: string
code:
type: string
enum:
- PDF_SUBMISSION
- POA_UPDATE
- POA_ACCESS_UPDATE
- CLAIMANT_NOTIFICATION
steps:
type: array
items:
type: object
additionalProperties: false
properties:
type:
type: string
enum:
- PDF_SUBMISSION
- POA_UPDATE
- POA_ACCESS_UPDATE
- CLAIMANT_NOTIFICATION
status:
type: string
enum:
- NOT_STARTED
- IN_PROGRESS
- SUCCESS
- FAILED
completedAt:
type: string
format: date
nextStep:
type: string
enum:
- POA_UPDATE
- POA_ACCESS_UPDATE
- CLAIMANT_NOTIFICATION
representative:
type: object
additionalProperties: false
required:
- poaCode
properties:
poaCode:
type: string
description: Power of Attorney Code submitted for Veteran
'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: 'Could not find Power of Attorney with id: -1'
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
'413':
description: Payload too large
content:
application/json:
schema:
type: object
properties:
message:
type: string
example:
message: Request size limit exceeded
'429':
description: Too many requests
content:
application/json:
schema:
type: object
properties:
message:
type: string
example:
message: API rate limit exceeded
'504':
description: Gateway Timeout
content:
application/json:
schema:
type: object
properties:
message:
type: string
example:
message: The server took too long to respond
components:
securitySchemes:
apikey:
type: apiKey
name: apikey
in: header