Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.
Comment: Add before/after section: what the OSF receives today (OFF on TDA/PDX) vs after the OFF migrates to the draft REST interface

...

Error — hosted OFF responded with TDA code 5 ("Not published, no authorization to permit access filed"):

Code Block
themeDefault
languagejson
{
  "systemId": "WIPO_DAS",
  "notificationCategory": "available",
  "dateTime": "2026-10-19T10:00:00.000Z",
  "totalQuantity": 1,
  "documentRetrievalRequestStatusBag": [
    {
      "requestAckId": "USIB20260101010101",
      "requestStatusCategory": "failure",
      "errorCode": "-6",
      "statusMessage": "ACCESS NOT AUTHORIZED"
    }
  ]
}

TDA/PDX code → what the OSF actually receives in the notification today (OFF on legacy TDA/PDX)

TDA codeTDA/PDX meaningerrorCode sentstatusMessage sent
0 / 14 / 15Successful / Registered / Updated0Operation Successful
1Application number not found (or withdrawn/missing-field, see 5.1.1)-7APPLICATION NUMBER NOT FOUND — ⚠️ even the "document withdrawn" case ends up with this same generic text
2File is not available (security)-8FILE WAS NOT AVAILABLE (REQUESTED APPLICATION EXISTS BUT IS NOT CLEARED FOR DISSEMINATION, e.g. security)
3Document(s) not found-9DOCUMENT(S) WAS NOT AVAILABLE (COMPLETE SET OF REQUIRED DOCUMENTS FOR CERTIFIED COPY IS NOT AVAILABLE)
5Not published / no authorization-6ACCESS NOT AUTHORIZED
7Oversize document, CD will be mailed(none)(none — getEDIMessageByTDACode(7) returns undefined, no EDI entry defined)
11ACC invalid-4INVALID DATA
12Request under processing(none)(none — no EDI entry; also flagged obsolete in the code)
16ACC and priority date mismatch-15MISMATCH ACCESS CODE AND PRIORITY FILING DATE
17Priority date mismatch-12MISMATCH PRIORITY FILING DATE OR ACCESS CODE
18ACC mismatch (or missing, reused)-14MISMATCH ACCESS CODE
19Priority date not provided-13MISSING PRIORITY FILING DATE
-1System scheduled downtime(none)(none — no EDI entry)
-2System unavailable (back-end)(none)(none — no EDI entry)
-6XML output processing failure (duplicate doc / already registered)-1DUPLICATE (ENTRY ALREADY EXISTS)

🆕 What changes once this OFF migrates from TDA/PDX to REST

This EDI-translation step only happens for offices answering over the TDA/PDX protocol:

Code Block
themeDefault
languagenone
if ('tda' == event.respondingProtocol) {
    let ediErrorMsg = getEDIMessageByTDACode(parseInt(errorCode));
    ediCode        = getEDICodeByTDACode(parseInt(errorCode));
    data.documentRetrievalRequestStatusBag[0].errorCode = ediCode;
    data.documentRetrievalRequestStatusBag[0].statusMessage = ediErrorMsg;
} else {
    // REST / remote OFF: passed through AS-IS, no translation at all
    data.documentRetrievalRequestStatusBag[0].errorCode = errorCode;
    data.documentRetrievalRequestStatusBag[0].statusMessage = errorMessage;
}
sm-rest-retrieval-service.ts)

Once an OFF implements the draft REST interface instead (5.1.1.- Responses from OFF to DAS (TDA/PDX codes)), DAS stops translating anything — whatever errorCode/statusMessage the OFF's own REST endpoint sends is forwarded to the OSF verbatim.

Today (OFF on TDA/PDX)After migration (OFF on REST, per the draft)
Translation stepTDA numeric code → EDI numeric code/message, via the fixed lookup table aboveNone — DAS passes through whatever the OFF sent
errorCodeFixed legacy EDI number (e.g. -6)Whatever the OFF's REST endpoint put in errorCode — the draft types this as a loosely-defined string with no fixed enum. In every example in the draft itself, errorCode is null; only statusMessage actually carries information
statusMessageLegacy ALL-CAPS EDI phrase (e.g. "ACCESS NOT AUTHORIZED")Whatever free text the OFF sent — expected, per the draft, to reuse the same vocabulary DAS itself uses internally (das-status.ts), e.g. "document awaiting security clearance" instead of "ACCESS NOT AUTHORIZED"
Consistency guaranteeStrong — DAS controls the translation table, so the vocabulary is fixed and documented above⚠️ Weak — since nothing is validated or translated, the OSF only gets whatever text that specific OFF chose to send. Treat statusMessage as advisory/free text, not a stable enum, until the draft defines and enforces a closed vocabulary

Worked example — TDA code 5 ("Not published, no authorization to permit access filed"): - Today: errorCode: "-6", statusMessage: "ACCESS NOT AUTHORIZED" - After migration (per the 5.1.1 migration table): errorCode: null, statusMessage: "document awaiting security clearance" (the OFF's own choice — no guarantee it matches exactly this text until the vocabulary is formally closed)

Caveats (legacy TDA/PDX translation)

  1. Lossy translation: because the reverse mapping only keeps a single defaultReverseMapping per TDA code, distinct real-world situations can collapse into one generic EDI phrase (e.g. TDA 1 for a withdrawn document still produces APPLICATION NUMBER NOT FOUND).
  2. Missing EDI entries: OPERATION_IN_PROGRESS (oversize 7) and DAS_SYSTEM_ERROR (-1, -2) have no EDI translation registered — the notification fields are simply absent for these.
  3. This only fires for requests answered via the TDA/PDX protocol. If the office responded over plain REST/API instead, DAS forwards the raw errorMessage/errorCode it received, unmodified (see migration section above).
  4. If the OSF is not registered for push notifications, none of this applies — they must poll instead, see 5.1.3.- Responses from DAS to OSF via GET.