AI Agent Reference

Compact reasoning layer for automated agents. The agent reads params, schemas, enums, and status codes directly from the OpenAPI spec; this section supplies only what the spec cannot express.

Operation Intent Table

operation_idGoal
createInquirySubmit a VIN to start an NMVTIS lookup; returns an inquiry identifier.
LoadInquiryByIdRetrieve an inquiry's status/metadata by server-assigned inquiry ID.
LoadInquiryByRefNumberRetrieve an inquiry's status/metadata by client-supplied reference number.
LoadInquiryRecordRetrieve the structured history record for a processed inquiry.
GetReportRetrieve the PDF report for a processed inquiry.

Prerequisite / Dependency Tree

Valid OAuth token (scope: oneapi:access)
- createInquiry
  - inquiry exists (has inquiryId + refNumber)
    - LoadInquiryById / LoadInquiryByRefNumber  (any time after creation)
    - inquiry processed (processedDate set, error empty)
      - LoadInquiryRecord
      - GetReport

Per-Operation Reasoning Contracts

OPERATION: createInquiry
AUTH: REQUIRED — oneVituOauth, scope oneapi:access
PRECONDITIONS:
  - REQUIRED: valid token
  - REQUIRED: unique refNumber (UUID) generated by caller
  - REQUIRED: vin
  - OPTIONAL: x-location-id, x-on-behalf-user-id headers
SIDE_EFFECTS: Creates a new inquiry; triggers async NMVTIS processing.
SUCCESS_SIGNAL: Response body contains inquiryId (InquiryIdResponseDTO). Creation != completion.
AGENT_NOTE: Persist your refNumber as the correlation key.
OPERATION: LoadInquiryById
AUTH: REQUIRED — oneVituOauth, scope oneapi:access
PRECONDITIONS:
  - REQUIRED: an inquiry created via createInquiry
  - REQUIRED: inquiryId
SIDE_EFFECTS: None (read-only).
SUCCESS_SIGNAL: 2xx with InquiryResponseDTO. Completion = processedDate populated AND error empty.
OPERATION: LoadInquiryByRefNumber
AUTH: REQUIRED — oneVituOauth, scope oneapi:access
PRECONDITIONS:
  - REQUIRED: an inquiry created with this refNumber
  - REQUIRED: refNumber
SIDE_EFFECTS: None (read-only).
SUCCESS_SIGNAL: 2xx with InquiryResponseDTO. Completion = processedDate populated AND error empty.
OPERATION: LoadInquiryRecord
AUTH: REQUIRED — oneVituOauth, scope oneapi:access
PRECONDITIONS:
  - REQUIRED: inquiry processed successfully (processedDate set, error empty)
  - REQUIRED: inquiryId
SIDE_EFFECTS: None (read-only).
SUCCESS_SIGNAL: 2xx with InquiryRecordDTO. Missing sub-sections = no data reported, NOT failure.
AGENT_NOTE: Calling before processing completes may yield empty/partial data.
OPERATION: GetReport
AUTH: REQUIRED — oneVituOauth, scope oneapi:access
PRECONDITIONS:
  - REQUIRED: inquiry processed successfully
  - REQUIRED: inquiryId
SIDE_EFFECTS: None (read-only).
SUCCESS_SIGNAL: 2xx with application/pdf binary body.

Safety Classification Table

operation_idClassification
createInquirymutating (creates resource; triggers external processing)
LoadInquiryByIdsafe (read-only)
LoadInquiryByRefNumbersafe (read-only)
LoadInquiryRecordsafe (read-only)
GetReportsafe (read-only)

No irreversible operations are defined.

Failure-Handling Rules

ON_FAILURE_AUTH (not-authenticated class):
  MEANING: token missing/expired/invalid.
  RETRY: yes, once, after obtaining a fresh token.
  STOP_CONDITION: second consecutive auth failure -> treat as credential/config error; stop.
ON_FAILURE_AUTHZ (not-authorized class):
  MEANING: valid token, insufficient permission.
  RETRY: no.
  STOP_CONDITION: immediate; escalate to credential owner.
ON_FAILURE_VALIDATION (bad-request class):
  MEANING: malformed/invalid input; details in Errors[].field/message.
  RETRY: no (not without changing the request).
  STOP_CONDITION: immediate; surface field-level messages.
ON_FAILURE_NOT_FOUND:
  MEANING: referenced inquiry not found (or not yet visible) for the given id/refNumber.
  RETRY: conditional — if immediately after createInquiry, brief retry for consistency; else no.
  STOP_CONDITION: after bounded retries, stop.
  AGENT_NOTE: spec does not declare a distinct 404 body; may surface via bad-request or empty result.
ON_FAILURE_RATE_LIMIT (too-many-requests class):
  MEANING: request throttled.
  RETRY: yes.
  STRATEGY: honor retry header if present; else exponential backoff with jitter.
  STOP_CONDITION: max attempts/time budget exceeded.
ON_FAILURE_SERVER (server-error class):
  MEANING: server-side failure.
  RETRY: yes, bounded.
  STRATEGY: exponential backoff with jitter; idempotent for read ops. For createInquiry, reuse the same refNumber to avoid duplicate inquiries.
  STOP_CONDITION: max attempts exceeded -> escalate.

Workflow Recipes

RECIPE: Lookup via polling

1. createInquiry {vin, refNumber} -> capture inquiryId
2. LOOP: LoadInquiryById(inquiryId)
   - - until processedDate populated (success) OR error populated (fail)
   - - backoff between polls
3. IF success: LoadInquiryRecord(inquiryId)
4. OPTIONAL: GetReport(inquiryId)
RECIPE: Lookup via callback (pending callback-URL confirmation)

1. createInquiry {vin, refNumber, callback destination}
2. RECEIVE transactionCompleted callback -> match by refNumber
3. IF callback.error empty: LoadInquiryRecord(inquiryId)
4. OPTIONAL: GetReport(inquiryId)
FALLBACK: if callback mechanism unconfirmed/unavailable, use polling recipe.
RECIPE: Retrieve report for an already-processed inquiry

1. LoadInquiryById(inquiryId) -> confirm processedDate set, error empty
2. GetReport(inquiryId)