使用 RESTful 服务访问 Oracle Sales Automation 数据

Oracle Sales Automation 提供了多个 RESTful 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 中的一个重要概念。资源是具有类型(例如业务机会)、关联数据、与其他资源的关系以及对其执行操作的一组方法的对象。这些资源以分层方式组织,其中包括:

  • 根资源:对应于逻辑对象,如业务机会或销售线索。

  • 子资源:这些是属于父资源的资源;例如,业务机会的联系人。

  • 值列表资源:为字段设置值时可以使用的有效值列表。有两种类型:查找(静态列表)或动态(基于上下文)。

Oracle Sales Automation RESTful API 中,有两种类型的资源:单个资源或集合资源。单个资源可以表示单个实体(如员工或采购订单),而集合资源可以更全面(如员工列表或可分页采购订单列表)。

关于对定制对象的 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
将返回较小的有效负载,因为您缩小了查询条件。

使用“描述”端点搜索 RESTful 资源

您可以通过发送 HTTP GET 请求来获取有关不同 Oracle Sales Automation RESTful API 的特定详细信息,该请求返回包含资源信息和补充元数据的 JSON 对象。

要获取有关特定版本的 API 的信息,请执行以下操作:
  1. 以销售管理员身份登录到 Oracle Sales Automation
  2. 登录后显示的 URL 显示 Oracle Sales Automation 实例的服务器名称和端口号:
    例如,如果 URL 为 http://˂crm_server:PortNumber˃/customer/faces/CrmFusionHome,则服务器名称为 crm_server,端口号为 PortNumber

    记下在剩余步骤中使用的服务器名称和端口号。

  3. 将 Web 浏览器指向 API 资源 URL 以获取 Oracle Sales Automation 实例的 API 元数据:

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

    其中,salesAPI 是应用程序容器的 API 名称。服务器响应将返回包含对象项数组的 JSON 对象,其中每个项表示 API 的特定版本;例如,下面是包含有关一个项的信息的结果数组的一部分:

    {
        "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 中指定所需的版本:

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

    或者,您也可以获得有关“最新”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 服务的服务端点

您可以通过在 API URL 中指定服务名称而不是关键字“描述”来推断 Oracle Sales Automation RESTful Web 服务端点的名称。

要开始,请执行以下步骤:
  1. 打开浏览器并访问端点 URL。如果是第一次打开它,系统将提示您输入 Oracle Sales Automation 用户凭据。
    例如,在适用于 Oracle Sales Automation 发行版 12 的 REST API 中,要访问最新 API 版本的商机服务端点,URL 为:

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

  2. (可选)如果要获取有关特定资源的附加信息,可以使用资源的描述 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 与单个资源或资源集合进行交互:

方法 可用于单数资源 可用于资源收集
获取 Y N
发布 N Y
补丁程序 Y N
删除 Y N

关于 Get 方法

使用此方法可以查询和检索信息。但是,查询中用于细化搜索或缩小奇异资源结果的参数不同于资源集合中使用的参数。

单数资源和收集资源的参数

在查询单数资源和集合资源的方法中使用以下参数:

Parameter (参数) 格式化 说明
expand

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

或者

expand=all

返回父资源,包括其子资源。默认情况下,它不返回任何子项。
fields fields=<FieldName1>,<FieldName2>... 只选择需要其信息的特定字段。
onlyData

onlyData=true

或者

onlyData=false

仅检索数据,不检索任何资源 URL。默认情况下,将返回所有资源子 URL。

收集资源的参数

收集资源的 GET 方法使用上面讨论的参数以及以下参数:

Parameter (参数) 格式化 说明
limit

limit=<Integer>

一个大于 0 的整数,指定服务器返回的最大项数。如果未指定限制值,服务器将使用默认限制值。
offset offset=<Integer> 一个整数值,用于指定要返回的第一个项的索引。偏移指数从 0 开始。
q

q=<condition1>;<condition2>;…

指定筛选条件以限制集合中返回的项。此查询参数的值包含一个或多个用 ";" 分隔的表达式。例如 q=deptno>=10 and <=30;loc!=NY

支持的运算符:

>

<

>=

<=

!=

AND

OR

=

LIKE

特殊字符:

  • 文字的双引号或单引号,即:“文字值 1”或“文字值 value2”

  • 返回斜杠以转义字符:\

  • 通配符的星号:*

totalResults

totalResults=true

或者

totalResults=false

一个布尔值,用于指定是否返回与 "q" 查询参数匹配的项总数。
orderBy

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

指定响应有效负载中返回的项的顺序。查询参数值是字段名的逗号分隔字符串,每个字符串后跟冒号和关键字 ascdesc(可选)。

如果未指定,服务器将按升序返回项。

finder

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

使用具有自己的特殊参数的预定义“查询”。

例如,Opportunities 资源具有名为 MyOpportunitiesFinderfinder 函数,此函数具有 Name 参数,该参数的值可设置为 Auto。此调用将检索当前用户拥有的名称以“自动”开头的所有机会。

dependency

dependency=<attr1>=<val1>

用于级联值列表资源。例如,如果 Location 资源具有 State 字段,则这些值将派生自另一个 States 资源,该资源返回特定国家(地区)的状态列表。例如,如果位置为:US,State 为 CA。States 资源包含所有美国州的列表,但是如果网页中的用户将语言环境更改为 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"
…
}

关于补丁程序方法

使用此方法对资源进行部分更新。将仅更新请求正文中包含的字段。

请求介质类型为:

application/vnd.oracle.adf.resourceitem+json

例如,要从 Oppurtunities 资源更新现有商机,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"
…
}

关于删除方法

使用此方法可以删除资源。它不需要请求正文。

例如,要从 Opportunities 资源中删除 Opportunity 对象,需要直接向要删除的子 Opportunity 资源的 URI 发出 DELETE 请求,而不向其传递任何参数:

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 响应对象在“结果”字段中保存 custom action 方法的结果。

关于批量支持

为了提高性能,可以通过发送包含名为“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 命令行工具通过受支持的协议之一(例如 HTTP 或 HTTPS)将数据从服务器传输或传输到服务器。

在本示例中,我们将使用 cURL 工具访问 RESTful API:
  1. 确保您具有有效的 REST URL(端点),例如,在 Oracle Sales Automation 发行版 12 中,accounts 资源的端点为:

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

  2. 方便您使用安全凭据。
  3. 确保已安装 cURL 工具,否则:
    1. 在浏览器中,导航到位于 http://curl.haxx.se/download.html 的 cURL 主页,然后单击左侧导航菜单中的下载
    2. 在“cURL 发行版和下载”页上,找到与操作系统相对应的启用了 SSL 的 cURL 软件版本,单击链接以下载 ZIP 文件并安装软件。
    3. 导航到位于 http://curl.haxx.se/docs/caextract.html 的 cURL CA 证书页面,然后将 ca-bundle.crt SSL CA 证书包下载到安装了 cURL 的文件夹中。
    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 命令以创建资源。