附属書Bは,操作要求の結果であるセマンティクス情報の提供に使用される状態コード列挙キーワード及び状態コード列挙値を定義する。各操作応答は,必ず状態コードを含んでいなければならず,状態の短テキスト記述である状態メッセージを含んでいてもよい。状態コードは,オートマトンによって使用されることを意図し,状態メッセージは,人間のエンドユーザを意図する。状態メッセージは操作応答のオプションの構成要素であり,IPPアプリケーション(ブラウザ,GUI,プリンタドライバ,ゲートウェイなど)に返されない場合もあってもよいので,アプリケーションは状態メッセージを調べたり表示したりしなくてよい。
状態キーワードの接頭辞は,応答のクラスを次のとおりに定義する。
type2 enums,IPP状態コードは拡張可能である。IPPクライアントは,すべての登録された状態コードの意味を理解することが明らかに望ましいが,必ずしも必要なことではない。しかし,IPPクライアントは, どの状態コードにおいても,接頭辞に示されるクラスを理解し,ある未認識の応答はキャッシュされてはいけないという例外はあるが,どの未認識の応答においてもそのクラスの最初の状態コードに同等であるとして取り扱わなければならない。例えば, 未認識の状態コード"client-error-xxx-yyy"がクライアントに受信された場合,その要求に何らかの間違えがあったとみなし,あたかも"client-error-bad-request" 状態コードを受信したかのように応答を安全に取り扱うことができる。その場合,IPPアプリケーションは,異常な状態を説明する人間可読な情報をおそらく含んでいるオプションのメッセージ(存在する場合)をエンドユーザに対して示すことが望ましい。列挙の名前は,アメリカ英語の推奨する状態メッセージである。
状態コード値は, 0x0000〜0x7FFFに及ぶ。各状態コードクラス値の範囲を,表B.1に示す。
"successful" | 0x0000〜0x00FF |
"informational" | 0x0100〜0x01FF |
"redirection" | 0x0200〜0x02FF |
"client-error" | 0x0400〜0x04FF |
"server-error" | 0x0500〜0x05FF |
各範囲の(0x0n40〜0x0nFF, n = 0〜5に対して)上位(128値)は,各状態コードクラス内でベンダ使用のために予約されている。0x0600〜0x7FFFの値は,IETF標準化過程の規定によって,将来のために予約されていて, 使用してはいけない。
各状態コードをB.1に記述する。B.2は,どの状態コードがどの操作に適用するかを示す表を含み,Implementer's Guide [IPP-IIG]は,すべての操作におけるIPP属性の処理手順を,返される状態コードを含めて規定する。
このクラスの状態コードは仮の応答を示し,情報を提供する目的だけに使用される。
IPP/1.1は,このクラスの状態コードを定義していない。
このクラスの状態コードは,クライアントの要求が受信,理解及び受付けに成功したことを示す。
要求は成功し,要求属性は置換又は無視されなかった。生成要求に対しての応答の場合,'successful-ok'状態コードは要求が受信され,有効になり,さらにジョブオブジェクトの生成に成功したことを示す。これはジョブが処理されたことは示さない。ジョブオブジェクトの'completed'状態への遷移だけが,ジョブが印刷されたことを示す。
要求は成功したが,幾つかの供給された属性は無視され,又は未サポート値はサポートされている値に代用されたか操作を拒否せずに実行するために無視された。Unsupported Attributes,属性構文又は属性値は,すべての操作において,応答のUnsupported Attributesグループに返されなければならない。次の問合せ操作に関するこの規則には例外がある。つまり,"requested-attributes"の操作属性だけに関するGet-Printer-Attributes, Get-Jobs及びGet-Job-Attributes。"requested-attributes"操作属性の供給された値がサポートされていない属性を要求している場合,IPPオブジェクトは,必す(須)ではないが,Unsupported Attribute応答グループにおいて"requested-attributes"の属性(サポートされていない値だけと共に)を返してもよい。3.1.7及び3.2.1.2を参照。
要求は成功したが,幾つかの供給された属性値は,他の供給された値と競合していた。これら競合した値は,サポートしている値で置換された,又は属性がジョブを拒否せずに処理するために削除された。他の属性と競合し,置換されたか無視された属性又は属性値は,クライアントによって供給されるすべての操作に関する応答のUnsupported Attributesグループに返されなければならない。3.1.7及び3.2.1.2を参照。
このクラスの状態コードは,要求を満すにはさらにアクションが必要であることを示す。
IPP/1.1 では,このクラスの状態コードは定義されていない。
このクラスの状態コードは,クライアントがエラーを起こしたと思われる場合を意図する。IPPオブジェクトは,エラー状態の説明及びそれが一時的なものか又は永久的なものかを示すどちらかのメッセージを返すことが望ましい。
要求は,形のくずれた構文(例えば,その属性の規定する長さと固定長の長さとが一致しない属性の値など。実装者ガイド[IPP-IIG]を参照)のため,IPPオブジェクトに理解されなかった。IPPアプリケーションは, 修正無しには要求を繰り返さないことが望ましい。
IPPオブジェクトは要求を理解したが,その実行を拒否している。追加認証情報又は認定信任は何も役に立たないので,その要求を繰り返さないことが望ましい。この状態コードは,通常,IPPオブジェクトが,要求が拒否された理由を正確に表したくないとき,又は他の応答が全く当てはまらないときに使用される。
要求はユーザ認証を必要としている。IPPクライアントは適切な認証情報で要求を繰り返すことができる。要求が既に認証情報を含んでいる場合,この状態コードは,その証明に対して,権限が拒否されたことを示す。この応答が以前と同様な問題を含み,ユーザエージェントが既に認証を少なくても一度は試みている場合,応答メッセージは妥当な診断情報を含むかもしれない。この状態コードは,"client-error-forbidden"よりも多くの情報を含む。
要求者は,要求を実行する権限をもたない。追加認証情報又は認定信任は何も役に立たない,要求を繰り返さないことが望ましい。この状態コードは,IPPオブジェクトが認証情報は理解可能であるが,要求者は要求を実行する権限をもたないことを明らかにしたい場合に使用される。この状態コードは,"client-error-forbidden"及び"client-error-not-authenticated"よりも多くの情報を含む。
この状態コードは,何も起こすことができない要求があるときに使用する。例えば,既にシステムによって取り消されるか中断されたジョブを取り消す要求があるかも知れない。IPPクライアントは,この要求を繰り返さないことが望ましい。
クライアントは,IPPオブジェクトが待機できる時間内に要求を生成しなかった。例えば,クライアントはCreate-Job操作を発行し,しばらく後に,Send-Document操作を発行したが,このエラー状態コードがSend-Document要求に応答して返された(3.3.1参照)。IPPオブジェクトは,追加Documents待ちのために一次停止していた資源を一掃することを強いられたかもしれない。IPPオブジェクトは,クライアントがあまりに長い時間を費やしたので,Jobを終了することを強いられた。クライアントは,修正無しにはこの要求を繰り返さないことが望ましい。
IPPオブジェクトは,要求URIと一致するものを何も見つけられなかった。この状態が一時的又は永久的なものであるかについては何も示されていない。例えば,Job(URI)への古い参照をもつクライアントがJobの取消しを試みるが,その間にJobは完了し,PrinterにあるJobの記録はすべて削除されている場合がこれに対応する。この状態コード'client-error-not-found'は,参照されたジョブが見つからないことを示すときに返される。このエラー状態コードは,クライアントがPrint-URI操作又はSend-URI操作のどちらかの文書データに対して参照としてURIを供給したときに,文書が見つけられない場合にも使用される。
実際には,IPPアプリケーションは見つからない状態を回避するために,エンドユーザに対して有効Printer URI及びJob URIのリストを最初に問い合わせ,表示することが望ましい。
要求されたオブジェクトはすでに利用不可能であり,転送先アドレスも知られていない。この状態は永久的と考えることが望ましく,リンク編集機能を持つクライアントはユーザ承認後,要求URIへの参照を削除することが望ましい。IPPオブジェクトが,この状態が永久的であるかどうかわからない場合,又は決定する手段が無い場合には,代わりに状態コード"client-error-not-found"を使用することが望ましい。
この応答は.主として,資源が意図的に利用不可能であること,及びIPPオブジェクト管理者がその資源に対しての遠隔リンクの削除を望んでいることを受信者に知らせることによって,保守のタスク支援を行なうことを意図する。すべての永久的に利用不可能な資源を"gone"として表記したり,その表記をある時間保つ必要はない。これは,IPPオブジェクト管理者及び/又はPrinter実装の自由な判断に委ねられる。
要求実体が,IPPオブジェクトが処理不可能な大きさ又は処理したくない大きさであるために,IPPオブジェクトはその要求の処理を拒否している。IPP Printerは,この状態コードを印刷ジョブのサイズを制限していてその制限を超える場合又は属性が多すぎて,それらの符号化によって,要求実体はIPPオブジェクト容量を超えてしまう場合に返す。
IPPオブジェクトは,一つ以上のクライアント供給属性がその属性に対して指定されている最大長よりも長い可変長値であるため,要求のサービスを拒否している。IPPオブジェクトは,最大長よりも長い値を処理(一時的にでも)処理,解釈,及び/又は無視するための十分な資源(メモリ,バッファなど)をもっていないかもしれない。他には,IPPオブジェクトが,最大長より小さい大きな値の処理をサポートしていても,その要求の全体的な処理中に,その大きな値を処理できない他のシステム構成要素にその値をパスした場合にもこのエラーコードが使用される。詳細は,実装者ガイド[IPP-IIG]を参照。
備考 URIである属性値において,このまれな状態は,クライアントが不正に長い問合せ情報の要求(例えば,IPPアプリケーションはエンドユーザに無効URIを入力することを認める。)を提出した場合,クライアントがリダイレクションのURI "black hole"(例えば,それ自体の接尾辞を指すリダイレクトされたURI接頭辞)に落ちた場合,又はIPPオブジェクトがRequest-URIを読む又は処理するために固定長バッファを使用して,幾つかのIPPオブジェクトに存在するセキュリティホールを利用しようとするクライアントに攻撃を受ける場合だけに起こり得る。
IPPオブジェクトは,"document-foramt"操作属性で指定される文書データが,Printerオブジェクトではサポートされていないフォーマットであるので,要求のサービスを拒否する。このエラーは,クライアント供給の"ipp-attribute-fidelity"に依存せず返される。Printerオブジェクトは,このエラーがJob Template属性の問題より重大なので,他にサポートされていないJob Template属性があってもこの状態コードを返さなければならない。3.1.6.1,3.1.7及び3.2.1.1を参照。
生成要求において,Printerオブジェクトが要求された一つ以上の属性,属性構文,又は属性値をサポートしていなくて,さらにクライアントが'真(true)'の値で"ipp-attributes-fidelity"操作属性を供給した場合,Printerオブジェクトはこの状態コードを返さなければならない。Printerオブジェクトは,クライアントによって供給されたサポートされていないすべての属性及び/又は属性値をUnsupported Attributes Groupに返さなければならない。3.1.7を参照。
例えば,要求が'iso-a4'メディアを指定しているが,そのメディア型は,Printerオブジェクトによってサポートされていない場合,又はクライアントがJob Template属性を供給し,その属性自体がPrinterによってサポートさえされていない場合。"ipp-attribute-fidelity"属性が'偽(false)'の場合は,PrinterはサポートされていないJob Template属性及び属性値に対して,要求を拒否したり,この状態コードを返すのではなく,むしろその属性値を無視するか置換しなければならない。
クライアントが属性を要求する操作(Get-Jobs操作,Get-Printer-Attributes操作,Get-Job-Attributes操作など)において,IPPオブジェクトは要求された属性のうちIPPオブジェクトが一つ以上の属性をサポートしていない場合,IPPオブジェクトは,この状態コードを返すより,むしろ,あたかもそれらが供給されていなかったかのように,単に,サポートしない要求された属性を無視し,その要求を処理する。この場合,IPPオブジェクトは,'successful-ok-ignored-or-substituted-attributes'状態コードを必ず返さなければならないが,Unsupported Attributes Groupには"requested-attributes"の値として未サポート属性を返してもよい(B.1.2.2を参照)。
Print-URI操作又はSend-URI操作において,クライアントの供給するURIのスキーマがサポートされていない。3.1.6.1及び3.1.7を参照。
どのような操作においても,IPP Printerが"attributes-charset"操作属性でクライアントにて供給されるcharsetをサポートしていない場合,Printerは操作を拒否し,'utf-8' charsetを使用して,この状態及び何らかの'text'属性又は'name'属性を返さなければならない(3.1.4.1を参照)。3.1.6.1及び3.1.7を参照すること。
要求は,幾つかの属性値がこの規定で置換又は無視されることを認めていない他の属性値と競合していたために,拒否された。Printerオブジェクトは,クライアントにて供給された競合している属性をUnsupported Attributes Groupに返さなければならない。3.1.7及び3.2.1.2を参照。
IPPオブジェクトは,"compression"操作属性で指定する文書データがPrinterオブジェクトによってサポートされていない方法で圧縮されているので,要求のサービスを拒否している。このエラーは,クライアントが供給する"ipp-attribute-fidelity"には依存しないで返される。Printerオブジェクトは,このエラーがJob Template属性の問題より重要なので,他のサポートされていないJob Template属性に問題があったとしてもこの状態コードを返さなければならない。3.1.6.1,3.1.7及び3.2.1.1を参照。
IPPオブジェクトは,文書データが"compression"操作属性によって指定された圧縮を使っているが,その圧縮が解凍されず要求のサービスを拒否している。このエラーは,クライアントが供給する"ipp-attribute-fidelity"には依存しないで返される。Printerオブジェクトは,このエラーがJob Template属性の問題より重要なので,他のサポートされていないJob Template属性に問題があってもこの状態コードを返さなければならない。3.1.7及び3.2.1.1を参照。
IPPオブジェクトは,Printerが文書データを解釈している間にそのデータでエラーにであったので,要求のサービスを拒否している。このエラーは,クライアントが供給する"ipp-attribute-fidelity"には依存しないで返される。Printerオブジェクトは,このエラーがJob Template属性の問題より重要なので,他のサポートされていないJob Template属性に問題があってもこの状態コードを返さなければならない。3.1.7及び3.2.1.1を参照。
IPPオブジェクトは,Printerがアクセスを確認しようと試行しているか,又は"document-uri"操作属性で指定する文書データをアクセスしている間にアクセスエラーにであったので,Print-URI要求又はSend-URIの要求のサービスを拒否している。このエラーは,クライアントが供給する"ipp-attribute-fidelity"には依存しないで返される。Printerオブジェクトは,このエラーがJob Template属性の問題より重要なので,他のサポートされていないJob Template属性に問題があってもこの状態コードを返さなければならない。3.1.6.1及び3.1.7を参照。
このクラスの状態コードは,IPPオブジェクト自体が起こしたエラーに気付いた場合,又は要求を実行することができない場合を示す。IPPオブジェクトは,エラー状態を説明するメッセージを含み,それが一時的な状態か永久的な状態かを説明するメッセージを含むことが望ましい。
IPPオブジェクトは,要求を満たすことを妨げる予期できない状態にであった。このエラー状態コードは,もっと永久的な型の内部エラーを暗示する意味で"server-error-temporary-error"とは異なる。予期できない状態を暗示する意味で,"server-error-device-error"とも異なる(望ましくはないが,予期できる紙詰まり,又はトナー切れ問題とは違って)。このエラー状態コードは,知識のある人間の介入が必要であろうことを示す。
IPPオブジェクトは,要求を実行するために必要とする機能をサポートしていない。これは,IPP オブジェクトが操作を認識しない,又はサポートできない場合に適切な応答である。3.1.6.1及び3.1.7を参照。
IPPオブジェクトは,現在,IPPオブジェクトの一時的な過負荷,又は保守のために,要求を扱うことができない。これには,後に解放される一時的な状態であるという含みがある。分かっている場合には,遅延時間の長さをメッセージで示してもよい。遅延時間が分からない場合には,IPPアプリケーションは,"server-error-temporary-error"応答を扱うように応答を扱うことが望ましい。状態がもっと永久的なものである場合には,"client-error-gone"又は"client-error-not-found"のエラー状態コードを使用することができる。
IPPオブジェクトは,要求にある"version-number"操作パラメタの値として供給されたIPPプロトコル版をサポートしない,又はサポートを拒否している。IPPオブジェクトは,このエラーメッセージ以外では,要求で供給されたものと同じ主版数及び副版数を使って要求を完了することができないか,したくないことを示している。エラー応答は,その版がサポートされていない理由及び他の版がそのIPPオブジェクトにてサポートされていることを記述する"status-message"属性(3.1.6.2)を含んでいることが望ましい。3.1.6.1,3.1.7及び3.1.8を参照。
エラー応答は,IPPオブジェクトがサポートする最も近い版数を"version-number"操作パラメタの中で識別しなければならない。例えば,クライアントが"1.0"版を供給し,IPP/1.1のオブジェクトが"1.0"版をサポートする場合,
紙詰まりなどのプリンタエラーは,IPPオブジェクトがPrint操作又はSend操作を処理している間に発生する。応答は,本当のJob Status("job-state"属性及び"job-state-reasons"属性の値)を含む。追加情報は,オプションである"job-state-message"の属性値又はエラーを詳細に記述するオプションである状態メッセージにて返されることができる。このエラー状態コードは,Printerがそれらのデバイスエラーのため生成要求を受け取ることができない状態である場合だけでしか返されない。例えば,Printerがスプール不可能でジョブを一つずつしか受け取ることができない場合,生成要求を拒否してしまう理由は,Printerが現在紙詰まりを起こしているためである。しかし,Printerオブジェクトは,Printerに何らかのエラー状態が発生していても,要求を受け取ることができる多くの場合,'successful-ok'の状態コードが返される。その場合には,クライアントは返されたJob Object Attributesを調べるか,状態及び状態理由を確認するために後でPrinterに問い合わせる。
バッファが一杯の書込みエラー,メモリオーバフロー(例えば,文書データがPrinterのメモリを超えてしまう),又はディスクがいっぱいの状態などの一時的なエラーは,IPP Printerが操作を処理している間に発生する。クライアントは,しはらくしてからこの一時的な内部エラー状態が解除されているかもしれないことを期待して,再度修正無しの要求を試してよい。実装のオプションとして,Printerオブジェクトがエラーを返さないで一時的状態が解除されるまで応答を遅らせてもよい。
管理者が,(このIPP/1.1規定の適用範囲外の方法において)Printerの"printer-is-not-accepting-jobs"の属性を'偽(false)'に設定したため,Printerは現在ジョブを受け付けていないことを示す一時的エラー。
Printerがジョブ及び/又は他の要求の処理を実行中で手がふさがっていることを示す一時的エラー。クライアントは.しばらくしてからこの一時的なビジー状態が解除されていることを期待して,再度修正無しの要求を試してみることが望ましい。
クライアントがIPP Printerにデータを送信している間に操作者又はシステムによってジョブが取り消されたことを示すエラー。job-id及びjob-uriが生成された場合,それらは通常と同様に,Print-Job,Send-Document又はSend-URIの応答によって返される。そうでない場合には,応答としてjob-id及びjob-uriは返されない。
IPPオブジェクトは,一つのジョブとして複数の文書をサポートせず,クライアントは,2回目のSend-Document操作又はSend-URI操作として文書データを供給することを試した。
B.2は,IPP操作のための状態コードの一覧を表B.2及び表B.3に示す。
表B.2は,次の短縮形を使用する。
IPP 状態キーワード |
IPP操作 | ||||||||
PJ |
PU |
CJ |
SD |
SU |
V |
GA |
GJ |
C |
|
successful-ok |
x |
x |
x |
x |
x |
x |
x |
x |
x |
successful-ok-ignored-or-substituted-attributes |
x |
x |
x |
x |
x |
x |
x |
x |
x |
successful-ok-conflicting-attributes |
x |
x |
x |
x |
x |
x |
x |
x |
x |
client-error-bad-request |
x |
x |
x |
x |
x |
x |
x |
x |
x |
client-error-forbidden |
x |
x |
x |
x |
x |
x |
x |
x |
x |
client-error-not-authenticated |
x |
x |
x |
x |
x |
x |
x |
x |
x |
client-error-not-authorized |
x |
x |
x |
x |
x |
x |
x |
x |
x |
client-error-not-possible |
x |
x |
x |
x |
x |
x |
x |
x |
x |
client-error-timeout |
x |
x |
|||||||
client-error-not-found |
x |
x |
x |
x |
x |
x |
x |
x |
x |
client-error-gone |
x |
x |
x |
x |
x |
x |
x |
x |
x |
client-error-request-entity-too-large |
x |
x |
x |
x |
x |
x |
x |
x |
x |
client-error-request-value-too-long |
x |
x |
x |
x |
x |
x |
x |
x |
x |
client-error-document-format-not-supported |
x |
x |
x |
x |
x |
x |
|||
client-error-attributes-or-values-not-supported |
x |
x |
x |
x |
x |
x |
x |
x |
x |
client-error-uri-scheme-not-supported |
x |
x |
|||||||
client-error-charset-not-supported |
x |
x |
x |
x |
x |
x |
x |
x |
x |
client-error-conflicting-attributes |
x |
x |
x |
x |
x |
x |
x |
x |
x |
client-error-compression-not-supported |
x |
x |
x |
x |
x |
||||
client-compression-error |
x |
x |
x |
x |
|||||
client-document-format-error |
x |
x |
x |
x |
|||||
client-document-access-error |
x |
x |
|||||||
server-error-internal-error |
x |
x |
x |
x |
x |
x |
x |
x |
x |
server-error-operation-not-supported |
x |
x |
x |
x |
|||||
server-error-service-unavailable |
x |
x |
x |
x |
x |
x |
x |
x |
x |
server-error-version-not-supported |
x |
x |
x |
x |
x |
x |
x |
x |
x |
server-error-device-error |
x |
x |
x |
x |
x |
||||
server-error-temporary-error |
x |
x |
x |
x |
x |
||||
server-error-not-accepting-jobs |
x |
x |
x |
x |
|||||
server-error-busy |
x |
x |
x |
x |
x |
x |
x |
x |
x |
server-error-job-canceled |
x |
x |
|||||||
server-error-version-not-supported |
x |
x |
x |
x |
x |
x |
x |
x |
x |
server-error-multiple-document-jobs-not-supported |
x |
x |
表B.3は,次の短縮形を使用する。
IPP 状態キーワード |
IPP操作(続き) | |||||
HJ |
RJ |
RS |
PP |
RP |
PJ |
|
successful-ok |
x |
x |
x |
x |
x |
x |
successful-ok-ignored-or-substituted-attributes |
x |
x |
x |
x |
x |
x |
successful-ok-conflicting-attributes |
x |
x |
x |
x |
x |
x |
client-error-bad-request |
x |
x |
x |
x |
x |
x |
client-error-forbidden |
x |
x |
x |
x |
x |
x |
client-error-not-authenticated |
x |
x |
x |
x |
x |
x |
client-error-not-authorized |
x |
x |
x |
x |
x |
x |
client-error-not-possible |
x |
x |
x |
x |
x |
x |
client-error-timeout |
||||||
client-error-not-found |
x |
x |
x |
x |
x |
x |
client-error-gone |
x |
x |
x |
x |
x |
x |
client-error-request-entity-too-large |
x |
x |
x |
x |
x |
x |
client-error-request-value-too-long |
x |
x |
x |
x |
x |
x |
client-error-document-format-not-supported |
||||||
client-error-attributes-or-values-not-supported |
x |
x |
x |
x |
x |
x |
client-error-uri-scheme-not-supported |
||||||
client-error-charset-not-supported |
x |
x |
x |
x |
x |
x |
client-error-conflicting-attributes |
x |
x |
x |
x |
x |
x |
client-error-compression-supported |
||||||
client-error-compression-error |
||||||
client-error-document-format-error |
||||||
client-error-document-access-error |
||||||
server-error-internal-error |
x |
x |
x |
x |
x |
x |
server-error-operation-not-supported |
x |
x |
x |
x |
x |
x |
server-error-service-unavailable |
x |
x |
x |
x |
x |
x |
server-error-version-not-supported |
x |
x |
x |
x |
x |
x |
server-error-device-error |
||||||
server-error-temporary-error |
x |
x |
x |
x |
x |
x |
server-error-not-accepting-jobs |
||||||
server-error-busy |
x |
x |
x |
x |
x |
x |
server-error-job-canceled |
||||||
server-error-multiple-document-jobs-not-supported |