IPS Web サービス WSDL のバージョン
作成対象:
- 開発者
- 管理者
IPS Web サービスは、IPS Web サービスコンポーネントがインストールされている IPS インストールからアクセスする WSDL (Web Services Description Language) ドキュメントのセットによってサポートされています。 各 IPS API リリースには、バージョン管理されたターゲット XML 名前空間を参照する新しい WSDL ファイルが含まれています。 既存のアプリケーションとの下位互換性を保つために、以前のバージョンの WSDL 名前空間もサポートされています。
WSDL アクセス
Scene7 WSDL にアクセスします(下図を参照)。
https://<IPS_hostname:<IPS_port>/<IPS_webapp>/
webservice/IpsApi[-<API_version>].wsdl
<IPS_webapp>
のデフォルト値は scene7
です。
サービスの場所
サービス URL は、IPS web サービス WSDL ドキュメントのサービスセクションで指定されます。 サービス URL は、通常、次の形式で指定します。
https://<IPS_hostname>:<IPS_port>/<IPS_webapp>/
services/IpsApiService
Dynamic Media リージョンのアクセス URL
サポートされる WSDL
最新バージョンの IPS API の機能を使用する場合は、コードを変更する必要がある場合があります。 IPS API では、次のバージョンの WSDL がサポートされています。
新しい機能を使用するために変更が必要な既存のアプリケーションは、最新の API バージョンにアップグレードする必要があり、既存のコードを変更する必要が生じる場合があります。 詳しくは、変更ログを参照してください。
SOAP
バインディング
IPS API web サービスは、SOAP バインディングのみをサポートしています。
サポートされるトランスポート
IPS API のSOAP バインディングは、HTTP トランスポートのみをサポートしています。 すべてのSOAP リクエストは HTTPS POST方式を使用して行います。
SOAP アクションヘッダー
リクエストを処理するには、SOAPAction HTTP ヘッダーをリクエストされた操作の名前に設定します。 WSDL 結合セクションの操作名属性が名前を指定します。
メッセージの形式
ドキュメント/リテラルスタイルは、XML スキーマ定義言語(https://www.w3.org/TR/xmlschema-0/)に基づき、WSDL ファイルで指定された型を持つすべての入力および出力メッセージで使用されます。 すべてのタイプには、WSDL ファイルで指定されたターゲット名前空間の値を使用して、修飾名が必要です。
認証をリクエスト
API リクエストで認証資格情報を渡すための推奨される方法は、IPS API WSDL で定義された authHeader
要素を使用することです。
<element name="authHeader">
<complexType>
<sequence>
<element name="user" type="xsd:string"/>
<element name="password" type="xsd:string"/>
<element name="locale" type="xsd:string" minOccurs="0"/>
<element name="appName" type="xsd:string" minOccurs="0"/>
<element name="appVersion" type="xsd:string" minOccurs="0"/>
<element name="gzipResponse" type="xsd:boolean" minOccurs="0"/>
<element name="faultHttpStatusCode" type="xsd:int" minOccurs="0"/>
</sequence>
</complexType>
</element>
フィールド
authHeader
要素は、API のバージョンに関係なく、常に名前空間 http://www.scene7.com/IpsApi/xsd
で定義されます。
リクエスト SOAP ヘッダーで authHeader
要素を使用する例を次に示します。
<soap:Header xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
<authHeader xmlns="http://www.scene7.com/IpsApi/xsd">
<user>user@scene7.com</user>
<password>mypassword</password>
<appName>MyApp</appName>
<appVersion>1.0</appVersion>
</authHeader>
</soap:Header>
その他のリクエスト認証方法
何らかの理由でクライアントアプリケーションが authHeader
SOAP ヘッダーを渡すことができない場合、API リクエストは、HTTP 基本認証(RFC 2617 で指定)を使用して資格情報を指定することもできます。
HTTP 基本認証の場合、各SOAPPOSTリクエストの HTTP ヘッダーセクションには、次の形式のヘッダーを含める必要があります。
Authorization: Basic base64(<IPS_user_email>:<password>)
base64()
は標準の Base64 エンコーディングを適用します。<IPS_user_email>
は有効な IPS ユーザーのメールアドレスで、<password>
はユーザーのパスワードです。
最初のリクエストで Authorization ヘッダーを事前に送信します。 認証資格情報がリクエストに含まれていない場合、IpsApiService
はステータスコード 401 (Unauthorized)
で応答しません。 代わりに、500 (Internal Server Error)
のステータスコードが、リクエストを認証できなかったことを示すSOAP フォールト本文と共に返されます。
IPS 3.8 以前は、名前空間 http://www.scene7.com/IpsApi
の AuthUser
要素と AuthPassword
要素を使用して、SOAP Header を介した認証が実装されていました。 以下に例を挙げます。
<soap:Header xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
<AuthUser xmlns="http://www.scene7.com/IpsApi">user@scene7.com</AuthUser>
<AuthPassword xmlns="http://www.scene7.com/IpsApi">mypassword</AuthPassword>
</soap:Header>
このスタイルは後方互換性のために引き続きサポートされますが、authHeader
要素を優先して非推奨になりました。
リクエストの認証
呼び出し元の資格情報が認証されると、リクエストがチェックされ、呼び出し元がリクエストされた操作を実行する権限を持っていることが確認されます。 認証は呼び出し元のユーザーの役割に基づいており、ターゲットの会社、ターゲットユーザー、その他の操作パラメーターの確認が必要になる場合もあります。 また、Image Portal ユーザーは、特定のフォルダーおよびアセット操作を実行するために必要な権限を持つグループに属している必要があります。 操作のリファレンスセクションでは、各操作の認証要件の詳細を説明します。
SOAP リクエストと応答のサンプル
次の例は、HTTP ヘッダーを含む、完全な addCompany
操作を示しています。
POST /scene7/services/IpsApiService HTTP/1.1
User-Agent: Axis/2.0
SOAPAction: addCompany
Content-Type: text/xml; charset=UTF-8
<?xml version='1.0' encoding='UTF-8'?>
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/">
<soapenv:Header>
<authHeader xmlns="http://www.scene7.com/IpsApi/xsd">
<user>user@scene7.com</user>
<password>mypassword</password>
<appName>MyApp</appName>
<appVersion>1.0</appVersion>
</authHeader>
</soapenv:Header>
<soapenv:Body>
<ns1:addCompanyParam xmlns:ns1="http://www.scene7.com/IpsApi/xsd/2008-01-15">
<ns1:companyName>Sample Company</ns1:companyName>
<ns1:expires>2008-07-31T12:00:00-06:00</ns1:expires>
</ns1:addCompanyParam>
</soapenv:Body>
</soapenv:Envelope>
対応する応答:
HTTP/1.1 200 OK
Server: Apache-Coyote/1.1
Content-Type: text/xml;charset=UTF-8
Transfer-Encoding: chunked
Date: Fri, 21 Jul 2006 20:47:55 GMT
<?xml version='1.0' encoding='utf-8'?><soapenv:Envelope
xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/">
<soapenv:Header />
<soapenv:Body>
<ns1:addCompanyReturn xmlns:ns1="http://www.scene7.com/IpsApi/xsd/2008-01-15">
<ns1:companyInfo>
<ns1:companyHandle>2</ns1:companyHandle>
<ns1:name>Sample Company</ns1:name>
<ns1:rootPath>SampleCompany/</ns1:rootPath>
<ns1:expires>2008-07-31T18:00:00.000Z</ns1:expires>
</ns1:companyInfo>
</ns1:addCompanyReturn>
</soapenv:Body>
</soapenv:Envelope>
SOAP フォールト
オペレーションが例外条件に遭遇すると、通常のレスポンスの代わりにSOAPフォルトがSOAPメッセージの本文として返されます。 例えば、管理者以外のユーザーが前の addCompany
リクエストを送信しようとすると、次の応答が返されます。
HTTP/1.1 500 Internal Server Error
Server: Apache-Coyote/1.1
Content-Type: text/xml;charset=UTF-8
Transfer-Encoding: chunked
Date: Fri, 21 Jul 2006 16:36:20 GMT
Connection: close
<?xml version='1.0' encoding='utf-8'?>
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/">
<soapenv:Header />
<soapenv:Body>
<soapenv:Fault>
<faultcode>soapenv:Client</faultcode>
<faultstring>AuthorizationException</faultstring>
<detail>
<ns1:authorizationFault xmlns:ns1="http://www.scene7.com/IpsApi/xsd">
<code xmlns="http://www.scene7.com/IpsApi/xsd">20003</code>
<reason xmlns="http://www.scene7.com/IpsApi/xsd">User does not
have permission to access operation 'addCompany'</reason>
</ns1:authorizationFault>
</detail>
</soapenv:Fault>
</soapenv:Body>
</soapenv:Envelope>