Contractor portal

documentRequests.portal

View and send the requested receipt for your own purchase request. Use view, begin with the original file manifest, prepare each private upload, confirm each SHA-256, then complete. Uploading originals is separate from reading and matching the receipt; company finance access is never granted.

POST/api/v1/contractor/documentRequests.portal

Permissions

contractor:readcontractor:write

Who can call it

contractor

Retries

No idempotency key

MCP

contractor_document_requests_portal

Fields

Shape 1: action: "view"

  • idstring (ID)Required

    The record's ID.

  • action"view"Required

Shape 2: action: "begin"

  • idstring (ID)Required

    The record's ID.

  • action"begin"Required
  • filesarray of objectsRequired

    1–25 items

Shape 3: action: "prepare"

  • filenamestringRequired

    The file's name, including its extension.

    1–180 characters

  • mimeTypeenumRequired

    The file's type, such as image/jpeg or application/pdf.

    application/pdfimage/jpegimage/pngimage/webpimage/heicimage/heif
  • sizeBytesintegerRequired

    The file's size in bytes.

    1 to 20971520

  • sha256stringRequired

    The SHA-256 hash of the file's exact bytes, as 64 lowercase hex characters.

    SHA-256 hash as 64 lowercase hex characters

  • idstring (ID)Required

    The record's ID.

  • action"prepare"Required

Shape 4: action: "confirm"

  • idstring (ID)Required

    The record's ID.

  • action"confirm"Required
  • sha256string

    The SHA-256 hash of the file's exact bytes, as 64 lowercase hex characters.

    SHA-256 hash as 64 lowercase hex characters

Shape 5: action: "complete"

  • idstring (ID)Required

    The record's ID.

  • action"complete"Required

Example

curl https://app.getoatmilk.com/api/v1/contractor/documentRequests.portal \
  -H "Authorization: Bearer $OATMILK_OAUTH_TOKEN" \
  -H "X-Accounting-Organization: $OATMILK_ORGANIZATION_ID" \
  -H "Content-Type: application/json" \
  -d '{
  "id": "9a8b7c6d-5e4f-4a3b-8c2d-1e0f9a8b7c6d",
  "action": "view"
}'
Response
{
  "data": { … }
}

Try it

Try it

Checks your input with this action’s real schema and answers like the API, with synthetic data. No key needed, and nothing changes.

POST/api/v1/contractor/documentRequests.portal
curl https://app.getoatmilk.com/api/v1/contractor/documentRequests.portal \
  -H "Authorization: Bearer $OATMILK_OAUTH_TOKEN" \
  -H "X-Accounting-Organization: $OATMILK_ORGANIZATION_ID" \
  -H "Content-Type: application/json" \
  -d '{
  "id": "9a8b7c6d-5e4f-4a3b-8c2d-1e0f9a8b7c6d",
  "action": "view"
}'

More in Contractor portal.