RESTfulサービスを使用したOracle Sales Automationデータへのアクセス

Oracle Sales Automationには、複数のRESTful APIが用意されています。これらのAPIを使用して、標準オブジェクト・データおよびカスタム・データにアクセスしたり、外部アプリケーションと統合したりできます。RESTfulの直接メソッド・コールは、HTTPプロトコルを介して正しく構造化されたURLを使用して行われます。

各APIには、標準のOracle Sales Automationオブジェクトが含まれており、各オブジェクトはRESTリソースまたはリソース・コレクションに関連付けられています。たとえば、RESTful APIでは、潜在的な販売に関する情報を追跡するためにOpportunitiesリソース・エンドポイントが使用されます。ただし、Oracle Sales Automation RESTful Webサービスを使用する前に、アクセスを取得するためのセキュリティ要件を考慮し、使用するWebサービスとともに、対応するサポート対象のメソッドや予想されるペイロード構造も特定する必要があります。

Oracle Sales Automation RESTful API内のリソースについて

Oracle Sales Automationには、標準オブジェクトとカスタム・オブジェクト用のRESTリソースのコレクションが用意されています。

RESTful APIにおける重要なコンセプトは、リソースです。リソースとは、タイプ(「商談」など)、関連データ、他のリソースとの関係、およびリソースに対して動作する一連のメソッドを持つオブジェクトです。これらのリソースは、次が含まれる階層形式で編成されています。

  • ルート・リソース: 商談やリードなどの論理オブジェクトに対応しています。

  • サブリソース: これらは、親リソースに属するリソースです(たとえば、商談の担当者など)。

  • 値リスト・リソース: フィールドの値の設定時に使用できる有効な値のリスト。参照(静的リスト)または動的(コンテキスト・ベース)の2つのタイプがあります。

Oracle Sales Automation RESTful APIには、単一リソースまたはコレクション・リソースという2つのタイプのリソースがあります。単一リソースは、従業員や購買オーダーなどの単一エンティティを表すことができます。一方、コレクション・リソースは、ページ付け可能な従業員のリストや購買オーダーのリストのように、より包括的なものにできます。

カスタム・オブジェクト用のRESTのサポートについて

Oracle Sales Automationには、多くのビジネス・ニーズやシナリオに対応する標準オブジェクトがあります。ただし、一意のビジネス・ニーズがある場合は、標準オブジェクト以外にも、アプリケーション・コンポーザ・ツールを使用して、最上位のカスタム・オブジェクトと子カスタム・オブジェクトの両方を作成できます。

アプリケーション・コンポーザは、(開発者だけでなく)ビジネス・アナリストや管理者がOracle Sales Automationをカスタマイズするために使用できるブラウザ・ベースのツールです。このツールを使用することにより、以前は開発者によってのみ行われたデータ・モデルのタイプの変更を行うことができます。アプリケーション・コンポーザ・ツールでは、オンザフライ方式で変更を行うと、アプリケーションに再度サインインする必要なく、これらの変更が即時使用可能になります。これには、Oracle Sales Automation RESTful APIに追加できるカスタム・オブジェクトの作成が含まれます。

パフォーマンス上のヒント

Oracle Fusion Sales Cloud REST APIから最高のパフォーマンスを得るには、次のヒントに従います。

必要なデータのみを問い合せます。たとえば、商談RESTサービスを問い合せると、ペイロードが非常に大きくなり、レスポンス時間が長くなります。次の場合は、この応答時間を短縮できます。
  • 必要なデータのみを問い合せます。
  • メタデータではなく、データのみを問い合せます。
たとえば、問合せを入力します。
salesApi/resources/latest/opportunities
大きなペイロードが返され、問合せを入力する。
salesApi/resources/latest/opportunities?fields=Name,OptyNum&onlyData=true
問合せ基準を絞り込んだため、より小さいペイロードを返します。

describeエンドポイントを使用したRESTfulリソースの検索

様々なOracle Sales Automation RESTful APIに関する特定の詳細は、リソース情報および補足メタデータを含むJSONオブジェクトを返すHTTP GETリクエストを送信することによって取得できます。

特定のバージョンのAPIに関する情報を取得するには:
  1. 営業管理者としてOracle Sales Automationにサインインします。
  2. サインイン後に表示されるURLには、Oracle Sales Automationインスタンスのサーバー名とポート番号が表示されます。
    たとえば、URLが http://˂crm_server:PortNumber˃/customer/faces/CrmFusionHomeの場合、サーバー名は crm_server、ポート番号は PortNumberです。

    残りのステップで使用するサーバー名とポート番号をノートにとります。

  3. Oracle Sales AutomationインスタンスのAPIメタデータを取得するには、WebブラウザでAPIリソースのURLを指定します。

    https://˂crm_server:PortNumber˃/salesApi/resources/

    salesAPIは、アプリケーション・コンテナのAPI名です。サーバーからの応答により、オブジェクト・アイテムの配列が含まれるJSONオブジェクトが返されます。この場合、各アイテムは、特定のバージョンのAPIを表します。たとえば、1つのアイテムに関する情報が含まれる結果の配列の一部を次に示します。

    {
        "version" : "11.1.10",
        "isLatest" : true,
        "links" : [ {
          "rel" : "self",
          "href" : " https://˂crm_server:PortNumber˃/salesApi/resources/11.1.10",
          "name" : "self",
          "kind" : "item"
        }, {
          "rel" : "canonical",
          "href" : " https://˂crm_server:PortNumber˃/salesApi/resources/11.1.10",
          "name" : "canonical",
          "kind" : "item"
        }, {
          "rel" : "predecessor-version",
          "href" : " https://˂crm_server:PortNumber˃/salesApi/resources/11.1.9",
          "name" : "predecessor-version",
          "kind" : "item"
        }, {
          "rel" : "describe",
          "href" : " https://˂crm_server:PortNumber˃/salesApi/resources/11.1.10/describe",
          "name" : "describe",
          "kind" : "describe"
        } ]
      }
  4. 特定のAPIバージョンによって公開されるオブジェクトをすべて表示するには、目的のバージョンをURL内に指定して、そのdescribeエンドポイントにアクセスします。

    https://˂crm_server:PortNumber˃/salesApi/resources/11.1.10/describe

    または、latestのAPIバージョンに関する情報を取得することもできます。

    https://˂crm_server:PortNumber˃/salesApi/resources/latest/describe

    これにより、APIでサポートされるOracle Sales Automationオブジェクトの最新バージョンとその子オブジェクトを含む長いJSONオブジェクト、サポートされるすべてのメソッド、パラメータ、戻り値の包括的な説明、およびオブジェクト・リソースURIが返されます。

カスタム・オブジェクトに関連付けられたRESTfulリソースの検索

Oracle Sales Automationのカスタム・オブジェクトのリソースURIを検索するには、次のステップを実行します。

  1. アプリケーション・コンポーザに移動します(営業管理者、CRMアプリケーション管理者、またはアプリケーション実装コンサルタントとしてログインしている必要があります)。
  2. 「カスタム・オブジェクト」をクリックし、「オブジェクト」表内のカスタム・オブジェクトのリストを表示します。
  3. 特定のオブジェクトのURIを表示するには、「RESTリソース」列内で、そのオブジェクトに対応する「サービス」リンクをクリックします。

    ヒント :

    URIは、ブラウザのアドレス・バーからカット・アンド・ペーストできます。

  4. (オプション)特定のカスタム・オブジェクトの説明を表示するには、「RESTリソース」列で、そのオブジェクトに対応する「説明」リンクをクリックします。

    ノート:

    URIの末尾に/describeを追加すると、カスタム・オブジェクトの説明を取得できます。

RESTful Webサービスのサービス・エンドポイントの取得

Oracle Sales Automation RESTful Webサービス・エンドポイントの名前は、API URLでキーワードdescribeのかわりにサービス名を指定することによって推測できます。

始めるには、次のステップを実行します。
  1. ブラウザを開き、エンドポイントURLにアクセスします。初めて開く場合、Oracle Sales Automationのユーザー資格証明を入力するよう求められます。
    たとえば、Oracle Sales Automationリリース12のREST APIで、最新のAPIバージョンの商談サービス・エンドポイントにアクセスするためのURLは次のとおりです:

    https://˂crm_server:PortNumber˃/salesApi/resources/latest/opportunities

  2. (オプション)特定のリソースに関する追加情報を取得するには、リソースのdescribe URLを使用して、フィールド、実行可能なアクション、子オブジェクトおよび値リスト・リソースを含む追加メタデータを取得します。
    たとえば、Oracle Sales Automationリリース12のREST APIで、商談サービス・エンドポイントの説明URLは次のとおりです:

    https://˂crm_server:PortNumber˃/salesApi/resources/latest/opportunities/describe

    Oracle Sales Automation REST APIには、次のRESTful Webサービス・エンドポイントが含まれます。一部のエンドポイントURLがR12からR13に変更されていることに注意してください。
    リリース12 リリース13
     /crmCommonApi/resources/latest/accounts /crmRestApi/resources/latest/accounts
    /salesApi/resources/latest/activities /crmRestApi/resources/latest/activities
    /serviceApi/resources/latest/categories /crmRestApi/resources/latest/assets
    /incentiveCompensationApi/resources/latest/compensationPlans /crmRestApi/resources/latest/businessPlans
    /salesApi/resources/latest/competitors  /crmRestApi/resources/latest/categories
    /crmCommonApi/resources/latest/contacts /crmRestApi/resources/latest/channels
    /incentiveCompensationApi/resources/latest/creditCategories /fscmRestApi/resources/latest/compensationPlans
    /salesApi/resources/latest/deals /crmRestApi/resources/latest/competitors
    /salesApi/resources/latest/territoryForecasts /crmRestApi/resources/latest/contacts
    /crmCommonApi/resources/latest/households /fscmRestApi/resources/latest/creditCategories
    /crmCommonApi/resources/latest/lightboxDocuments /crmRestApi/resources/latest/deals
    /salesApi/resources/latest/opportunities /crmRestApi/resources/latest/territoryForecasts
    /incentiveCompensationApi/resources/latest/incentiveCompensationParticipants /crmRestApi/resources/latest/households
     /salesApi/resources/latest/partnerPrograms /crmRestApi/resources/latest/inboundMsgFilters
    /salesApi/resources/latest/partnerTiers /crmRestApi/resources/latest/inboundMessages
    /salesApi/resources/latest/partners /crmRestApi/resources/latest/interactions
    /incentiveCompensationApi/resources/latest/paymentBatches /crmRestApi/resources/latest/lightboxDocuments
     /incentiveCompensationApi/resources/latest/paymentTransactions  /crmRestApi/resources/latest/presentationSessionFeedback
    /incentiveCompensationApi/resources/latest/paysheets  /crmRestApi/resources/latest/presentationSessions
    /incentiveCompensationApi/resources/latest/incentiveCompensationPerformanceMeasures  /crmRestApi/resources/latest/mySelfServiceRoles
    /incentiveCompensationApi/resources/latest/planComponents /crmRestApi/resources/latest/salesObjectives
    /salesApi/resources/latest/priceBookHeaders /crmRestApi/resources/latest/opportunities
    /salesApi/resources/latest/setupSalesCatalogs /fscmRestApi/resources/latest/incentiveCompensationParticipants
    /salesApi/resources/latest/products /crmRestApi/resources/latest/partnerPrograms
     /salesApi/resources/latest/partnerProgramBenefits /crmRestApi/resources/latest/partnerTiers
     /salesApi/resources/latest/programEnrollments  /crmRestApi/resources/latest/partners
    /serviceApi/resources/latest/queues /fscmRestApi/resources/latest/paymentBatches
     /incentiveCompensationApi/resources/latest/rateDimensions /fscmRestApi/resources/latest/paymentTransactions
    /incentiveCompensationApi/resources/latest/rateTables /fscmRestApi/resources/latest/paysheets
    /crmCommonApi/resources/latest/resources /fscmRestApi/resources/latest/incentiveCompensationPerformanceMeasures
     /incentiveCompensationApi/resources/latest/incentiveCompensationRoles /fscmRestApi/resources/latest/planComponents
    /salesApi/resources/latest/leads /crmRestApi/resources/latest/priceBookHeaders
    /crmCommonApi/resources/latest/salesOrders /crmRestApi/resources/latest/setupSalesCatalogs
    /salesApi/resources/latest/salesPromotions /crmRestApi/resources/latest/products
    /crmPerformanceApi/resources/latest/territories /crmRestApi/resources/latest/partnerProgramBenefits
     /serviceApi/resources/latest/serviceRequests /crmRestApi/resources/latest/programEnrollments
    /salesApi/resources/latest/sourcecodes /crmRestApi/resources/latest/queues
    - /fscmRestApi/resources/latest/rateDimensions
    - /fscmRestApi/resources/latest/rateTables
    - /crmRestApi/resources/latest/resources
    - /fscmRestApi/resources/latest/incentiveCompensationRoles
    - /crmRestApi/resources/latest/leads
    - /crmRestApi/resources/latest/salesOrders
    - /crmRestApi/resources/latest/salesPromotions
    - /crmRestApi/resources/latest/territories
    - /crmRestApi/resources/latest/proposals
    - /crmRestApi/resources/latest/screenPopPages
    - /crmRestApi/resources/latest/screenPopTokens
    - /crmRestApi/resources/latest/selfRegistrations
    - /crmRestApi/resources/latest/selfServiceRoles
    - /crmRestApi/resources/latest/selfServiceUsers
    - /crmRestApi/resources/latest/serviceDetails
    - /crmRestApi/resources/latest/serviceProviders
    - /crmRestApi/resources/latest/serviceRequests
    - /crmRestApi/resources/latest/socialPosts
    - /crmRestApi/resources/latest/sourcecodes
    - /crmRestApi/resources/latest/wrapUps

    ノート:

    API名は、リソース・オブジェクトが属するOracle Sales Automationアプリケーション・コンテナによって異なります。

REST操作およびペイロード構造について

標準のOracle Sales AutomationオブジェクトごとにRESTful Webサービスには、複数の作成、読取り、更新および削除(CRUD)操作が用意されています。

URLを介して単一のリソースまたはリソース・コレクションと対話するために次の標準メソッドを実行できます。

Method 単一のリソースに使用できます リソース・コレクションに使用できます
取得 はい N
転記 N はい
パッチ はい N
削除 はい N

Getメソッドについて

このメソッドを使用して、情報を問い合わせて取得します。ただし、単一のリソースで検索を微調整したり、結果を絞り込むために問合せで使用するパラメータは、リソース・コレクションで使用されるパラメータとは異なります。

単一のリソースとコレクション・リソースの両方のパラメータ

単一のリソースとコレクション・リソースの問合せ用のメソッドでは、次のパラメータを使用します。

パラメータ 書式 説明
expand

expand=<childResource1>,<childResource2>...

または

expand=all

子を含む親リソースを返します。デフォルトでは、子を返しません。
fields fields=<FieldName1>,<FieldName2>... 情報が必要とする特定のフィールドのみを選択します。
onlyData

onlyData=true

または

onlyData=false

データのみを取得し、リソースのURLは取得しません。デフォルトでは、すべてのリソースの子URLが返されます。

コレクション・リソースのパラメータ

コレクション・リソース用のGETメソッドは、前述のパラメータおよび次のパラメータを使用します。

パラメータ 書式 説明
limit

limit=<Integer>

サーバーによって返されるアイテムの最大数を指定する0より大きい整数。制限値が指定されない場合、サーバーはデフォルトの制限値を使用します。
offset offset=<Integer> 返される最初のアイテムの索引を指定する整数値。オフセット索引は0から開始されます。
q

q=<condition1>;<condition2>;…

コレクションで返されるアイテムを制限するフィルタ条件を指定します。この問合せパラメータの値には、「; 」で区切られた1つ以上の式が含まれます。たとえば、q=deptno>=10 and <=30;loc!=NYなどです。

サポートされている演算子:

>

<

>=

<=

!=

AND

OR

=

LIKE

特殊文字:

  • リテラルの二重引用符または単一引用符: "literal value 1"または'literal value2'

  • 文字をエスケープするためのバック・スラッシュ: \

  • ワイルドカード用のアスタリスク: *

totalResults

totalResults=true

または

totalResults=false

q問合せパラメータと一致するアイテムの合計数を返すかどうかを指定するブール値。
orderBy

orderBy=<field1:asc>,<field2:desc>.

レスポンス・ペイロードで返されるアイテムの順序を指定します。問合せパラメータ値は、カンマ区切りのフィールド名の文字列であり、オプションで各文字列の後にコロンとキーワードascまたはdescが付きます。

指定しない場合、アイテムが昇順で返されます。

finder

finder=FinderName;<attr1>=<val1>,<attr2>=<value2>

独自の特殊パラメータを持つ事前定義済の「問合せ」を使用します。

たとえば、Opportunitiesリソースには、MyOpportunitiesFinderと呼ばれるfinderファンクションがあり、このファンクションには、値をAutoとして設定できるNameパラメータがあります。このコールは、現在のユーザーが所有し、名前がAutoで始まるすべての商談を取得します。

dependency

dependency=<attr1>=<val1>

カスケード値リスト・リソースに使用されます。たとえば、LocationリソースにStateフィールドがある場合、これらの値は、特定の国(場所)の州のリストを返す別のStatesリソースから導出されます。たとえば、LocationがUS、StateがCAのようになります。Statesリソースには、すべてのUS Statesのリストが含まれますが、Webページ内のユーザーがロケールをBrazilに変更した場合、ブラジルのすべての州を取得する方法は、次のようなコールを使用したものになります。

States?dependency=Country=BR

Postメソッドについて

このメソッドを使用して、新しいアイテムを作成します。リクエスト・メディア・タイプのヘッダーは、次のとおりです。

application/vnd.oracle.adf.resourceitem+json

たとえば、Opportunitiesリソースの下に新しい商談を作成するには、リクエストが新しい「商談」名パラメータをJSONオブジェクトに渡します:

{
"Name" : "New Opportunity Name"
}

POSTリクエストから返されるJSONオブジェクトのレスポンス本体は、次のようになります。


{
BudgetAvailableDate: null
BudgetedFlag: false
PrimaryOrganizationId: 204
ChampionFlag: false
CreatedBy: "SALES_ADMIN"
CreationDate: "2015-06-04T03:08:27-07:00"
CurrencyCode: "USD"
SalesMethodId: 100000012430001
SalesStageId: 100000012430007
Name: "New Opportunity Name"
OptyId: 300100111705686
OptyNumber: "CDRM_332708"
OwnerResourcePartyId: 3807
StatusCode: "OPEN"
PrimaryRevenueId: 300100111705687
SalesMethod: "Standard Sales Process"
SalesStage: "01 - Qualification"
DescriptionText: "Looking for the Right Contacts, Characteristics,
Determining the Need, Budget and Sponsor"
AverageDaysAtStage: 30
MaximumDaysInStage: 800
PhaseCd: "QUALIFICATION-DISCOVERY"
QuotaFactor: 3
RcmndWinProb: 0
StageStatusCd: "OPEN"
StgOrder: 1
EffectiveDate: "2015-06-24"
Revenue: 0
WinProb: 0
PartyName1: "Charles Taylor"
DownsideAmount: 0
UpsideAmount: 0
EmailAddress: "firstname lastname@orcl.com"
ExpectAmount: 0
ForecastOverrideCode: "CRITERIA"
SalesChannelCd: "ZPM_DIRECT_CHANNEL_TYPES"
…
}

Patchメソッドについて

リソースを部分的に更新するには、このメソッドを使用します。リクエスト体に含まれるフィールドのみが更新されます。

リクエスト・メディア・タイプは、次のとおりです。

application/vnd.oracle.adf.resourceitem+json

たとえば、Oppurtunitiesリソースから既存のOpportunityを更新するには、HTTP PATCHリクエストが次のJSONオブジェクトをリクエスト本体として渡します。

{
"Name": "Opportunity Name Updated"
}

このリクエストからのレスポンスは、次のようなJSONオブジェクトになります。


{
BudgetAvailableDate: null
BudgetedFlag: false
PrimaryOrganizationId: 204
ChampionFlag: false
CreatedBy: "SALES_ADMIN"
CreationDate: "2015-06-04T03:08:27-07:00"
CurrencyCode: "USD"
SalesMethodId: 100000012430001
SalesStageId: 100000012430007
Name: "Opportunity Name Updated"
OptyId: 300100111705686
OptyNumber: "CDRM_332708"
OwnerResourcePartyId: 3807
StatusCode: "OPEN"
PrimaryRevenueId: 300100111705687,
SalesMethod: "Standard Sales Process"
SalesStage: "01 - Qualification"
DescriptionText: "Looking for the Right Contacts, Characteristics,
Determining the Need, Budget and Sponsor"
AverageDaysAtStage: 30
MaximumDaysInStage: 800
PhaseCd: "QUALIFICATION-DISCOVERY"
QuotaFactor: 3
RcmndWinProb: 0
StageStatusCd: "OPEN"
StgOrder: 1
EffectiveDate: "2015-06-24"
Revenue: 0
WinProb: 0
PartyName1: "Charles Taylor"
DownsideAmount: 0
UpsideAmount: 0
EmailAddress: "firstname_lastname@orcl.com"
ExpectAmount: 0
ForecastOverrideCode: "CRITERIA"
SalesChannelCd: "ZPM_DIRECT_CHANNEL_TYPES"
…
}

Deleteメソッドについて

リソースを削除するには、このメソッドを使用します。これには、リクエスト本体は必要ありません。

たとえば、OpportunitiesリソースからOpportunityオブジェクトを削除するには、DELETEリクエストを、パラメータを渡すことなく、削除される子OpportunityリソースのURIに直接実行する必要があります。

https://<crm_server:PortNumber>/salesApi/resources/latest/opportunities/<OpportunityNumber>

カスタム・アクション・メソッドについて

場合によっては、CRUD標準に適合しないカスタム・アクションをリソースが公開します。カスタム・アクションは常に、(単一のリソースとリソース・コレクションの両方で) POSTを使用して起動され、そのリクエスト・メディア・タイプは次のとおりです。

application/vnd.oracle.adf.action+json

レスポンス・メディア・タイプは、次のとおりです。

application/vnd.oracle.adf.actionresult+json

たとえば、Oracle Sales Automationでは、https://<crm_server:portNumber>/salesApi/resources/latest/describe/leads/の下のleadsリソースには、リードを商談に変換するカスタム・アクション(convertLeadToOpty)があります。

{
          "name" : "convertLeadToOpty",
          "parameters" : [ {
            "name" : "leadId",
            "type" : "number",
            "mandatory" : false
          } ],
          "resultType" : "string",
          "method" : "POST",
          "requestType" : [ "application/vnd.oracle.adf.action+json" ],
          "responseType" : [ "application/json", "application/vnd.oracle.adf.actionresult+json" ]
        },

カスタム・アクションは、特定の目標を達成するための一連のステップ、プロセス、または様々なCRUD操作の組合せであると考えています。上記の例では、カスタム・アクションのリクエスト本体は、そのカスタム・アクション名(convertLeadToOpty)になる"name"、およびオプションでカスタム・アクションの入力パラメータの配列(leadId)を渡す必要があります。

通常、POSTリクエストのJSON本体には、次が含まれます。

{
"$schema": "http://json-schema.org/draft-04/schema#",
"type": "object",
"title": "Action execution representation.",
"description": "Represents the action execution and its
parameters.",
"properties": {
"name": {
"type": "string",
"description": "Action name."
},
"parameters": {
"type": "array",
"description": "Parameter name/value pair.",
}
},
"required": [
"name"
]
}

JSONレスポンス・オブジェクトには、resultsフィールド内のカスタム・アクション・メソッドの結果が保持されています。

バッチ・サポートについて

パフォーマンスを向上させるために、partsという名前のフィールドが含まれるJSONオブジェクトをオブジェクトの配列として送信することにより、複数の操作を単一のHTTPリクエストに結合できます。配列内の各オブジェクトには、一意のID、リソースへの相対パス、操作、およびオプションのペイロードが含まれます。

HTTPリクエストのJSONスキーマは、次のとおりです。


{
"$schema": "http://json-schema.org/draft-04/schema#",
"type": "object",
"title": "Batch execution",
"description": "Group multiple requests together ('part').",
"definitions": {
"Part": {
"type": "object",
"allOf": [
{
"properties": {
"id": {
"type": "string",
"description": "An identification
provided by the client to distinguish each part provided in the
batch request."
},
"path": {
"type": "string",
"description": "Resource's location."
},
"operation": {
"type": "string",
"enum": [
"get",
"create",
"update",
"replace",
"delete"
],
"description": "The operation that will
be performed."
},
"preconditionSucceeded": {
"type": "boolean",
"description": "This attribute is set in
the batch response only when ifMatch or ifNoneMatch are provided in
the request. It will be 'true' if the precondition
(ifMatch/ifNoneMatch) was satisfied, otherwise 'false'."
},
"payload": {
"oneOf": [
{
"$ref": "resource-item.json",
"description": "The payload that
will be used in the operation. Example: a resource instance should
be provided in order to execute a 'create'."
},
{
"type": "null"
}
]
}
},
"required": [
"id",
"path",
"operation"
]
}
],
"anyOf": [
{
"properties": {
"ifMatch": {
"type": "string",
"description": "This attribute is
analogous to the If-Match header. It represents a precondition to
execute this operation. The value can be null (same effect of 'If-
Match: *') or an array of resource versions."
}
}
},
{
"properties": {
"ifNoneMatch": {
"type": "string",
"description": "This attribute is
analogous to the If-None-Match header. It represents a precondition
to execute this operation. The value can be null (same effect of
'If-None-Match: *') or an array of resource versions."
}
}
}
],
"description": "Represents a request."
}
},
"properties": {
"parts": {
"type": "array",
"items": {
"$ref": "#/definitions/Part"
},
"description": "Array that represents multiple
requests."
}
},
"required": [
"parts"
]
}

たとえば、次のリクエストの場合、既存の従業員をフェッチし、別の従業員を更新します。


POST /myapi/resources/latest/hremployees HTTP/1.1
Host: example.oracle.com
Content-type:application/vnd.oracle.adf.batch+json
{
"parts": [
{
"id": "part1",
"path": "/latest/hremployees/101",
"operation": "get"
},
{
"id": "part2",
"path": "/latest/hremployees/102",
"operation": "update",
"payload": {
"Salary": 18000
}
}
]
}

以前のリクエストのレスポンスでは、リクエストと同じメディア・タイプを使用し、次のようなJSONオブジェクトを返します。

{"parts":[
{
"id":"part1",
"path":"/latest/hremployees/101",
"operation":"get",
"payload" : {
"EmployeeId" : 101
…
},
{
"id" : "part2",
"path" : "/latest/hremployees/102",
"operation" : "update",
"payload" : {
"EmployeeId" : 102,
} ]}

Oracle Sales Automation RESTful Webサービス・リクエストのテスト

RESTful APIをテストし、必要なデータを取得するには、cURLコマンド・ライン・ツールを使用して、サポートされているプロトコルの1つ(HTTPやHTTPSなど)を使用してサーバーとデータをやり取りできます。

この例では、cURLツールを使用してRESTful APIにアクセスします。
  1. たとえば、Oracle Sales Automationリリース12で、accountsリソースのエンドポイントとして次のような有効なREST URL (エンドポイント)があることを確認します。

    https://<crm_server:PortNumber>/crmCommonApi/resources/latest/accounts

  2. セキュリティ資格証明を手元に用意してください。
  3. cURLツールがインストールされていることを確認してください。そうでない場合は:
    1. ブラウザで、cURLのホーム・ページ(http://curl.haxx.se/download.html)にナビゲートし、左側のナビゲーション・メニューの「Download」をクリックします。
    2. 「cURL Releases and Downloads」ページで、オペレーティング・システムに応じたSSL対応バージョンのcURLソフトウェアを探し、ZIPファイルをダウンロードするリンクをクリックし、ソフトウェアをインストールします。
    3. 「cURL CA Certs」ページ(http://curl.haxx.se/docs/caextract.html )に移動し、cURLをインストールしたフォルダにCA-bundle.crt SSL CA証明書バンドルをダウンロードします。
    4. コマンド・ウィンドウを開いて、cURLをインストールしたディレクトリに移動し、cURL環境変数CURL_CA_BUNDLEにSSL認証局*CA証明書バンドルの場所を設定します。次に例を示します。
      C:\curl> set CURL_CA_BUNDLE=ca-bundle.crt

      これで、cURLを使用できるようになります。

  4. cURLツールを使用して、リソースに対してHTTPリクエストを発行します。
    $ curl –k –u <userName> https://<crm_server:PortNumber>/crmCommonApi/resources/latest/accounts
  5. 次のようなレスポンスを予測できます。
    {
    "items" : [ {
    "PartyId" : 300100010648746,
    "PartyNumber" : "CDRM_2260",
    "SourceSystem" : null,
    "SourceSystemReferenceValue" : null,
    "OrganizationName" : "DLAKWRVBBU",
    "UniqueNameSuffix" : "US)",
    "PartyUniqueName" : "DLAKWRVBBU US)",
    "Type" : "ZCA_CUSTOMER",
    "OwnerPartyId" : 100010025532672,
    "OwnerPartyNumber" : "100010025532672",
    "OwnerEmailAddress" : "sendmail-test-discard@oracle.com",
    ...
    },
    {
    ...
    } ],
    "count" : 25,
    "hasMore" : true,
    "limit" : 25,
    "offset" : 0,
    "links" : [ {
    "rel" : "self",
    "href" :
    "https://host:port/crmCommonApi/resources/latest/accounts",
    "name" : "accounts",
    "kind" : "collection"
    } ]
    }
  6. レスポンス本体で、各リソースへのリンクを確認できます。このリンクには、リソース上で実行できるアクションが含まれています。
  7. (オプション) /describe URIを使用して、次のようなリソースのメタデータを取得できます。
    $ curl –k –u <userName> https://<crm_server:PortNumber>/crmCommonApi/resources/latest/accounts/describe

    次のようなものが返されます。

    
    {
    "Resources" : {
    "accounts" : {
    "discrColumnType" : false,
    "title" : "Sales Cloud Account SDO",
    "attributes" : [ {
    "name" : "PartyId",
    "type" : "integer",
    "updatable" : false,
    "mandatory" : true,
    "queryable" : true,
    "precision" : 18,
    "properties" : {
    "fnd:GLOBALLY_UNIQUE" : "true"
    }
    }, {
    "name" : "PartyNumber",
    "type" : "string",
    "updatable" : true,
    "mandatory" : true,
    "queryable" : true,
    "precision" : 30,
    "maxLength" : "30",
    "properties" : {
    "DISPLAYWIDTH" : "40"
    }
    }, {
    "name" : "SourceSystem",
    "type" : "string",
    "updatable" : true,
    "mandatory" : false,
    "queryable" : true
    }, {
    ...],
    "links" : [ {
    "rel" : "self",
    "href" :
    "https://host:port/crmCommonApi/latest/latest/accounts",
    "name" : "self",
    "kind" : "collection"
    } ],
    "actions" : [ {
    "name" : "get",
    "method" : "GET",
    "responseType" : [ "application/json",
    "application/vnd.oracle.adf.resourcecollection+json" ]
    }, {
    "name" : "create",
    "method" : "POST",
    "requestType" : [
    "application/vnd.oracle.adf.resourceitem+json" ],
    "responseType" : [ "application/json",
    "application/vnd.oracle.adf.resourceitem+json" ]
    } ]
    }
    ...

    メタデータから、/accountsリソースに対してPOSTコマンドを発行してリソースを作成することを監視できます。