Acessar Dados do Oracle Sales Automation Usando Serviços RESTful

O Oracle Sales Automation fornece várias APIs RESTful que você pode usar para acessar dados de objetos padrão e personalizados e integrar-se a aplicativos externos. As chamadas do método direto RESTful são feitas usando um URL estruturado corretamente por meio do protocolo HTTP.

Cada API contém objetos padrão do Oracle Sales Automation e cada objeto é associado a um Recurso ou a uma Coleta de Recursos REST. Por exemplo, na API RESTful, o ponto final do recurso Opportunities é usado para rastrear informações sobre uma venda potencial. No entanto, antes de usar os web services do Oracle Sales Automation RESTful, você deve levar em consideração os requisitos de segurança para obter acesso e também identificar quais web services usar, juntamente com seus métodos suportados correspondentes e estruturas de payload esperadas.

Sobre recursos nas APIs do Oracle Sales Automation RESTful

O Oracle Sales Automation fornece um conjunto de recursos REST para objetos padrão e personalizados.

Um conceito importante em qualquer API RESTful é o recurso. Um recurso é um objeto com um tipo (por exemplo, Oportunidades), dados associados, relacionamentos com outros recursos e um conjunto de métodos que operam nele. Esses recursos são organizados de forma hierárquica que inclui:

  • Recurso raiz: Corresponde a um objeto lógico, como uma Oportunidade ou um Lead.

  • Sub-recurso(s): São recursos que pertencem a um recurso pai; por exemplo, um contato para uma oportunidade.

  • Recurso Lista de Valores: Uma lista de valores válidos que podem ser usados ao definir um valor para um campo. Há dois tipos: Pesquisa (lista estática) ou Dinâmica (com base no contexto).

Na API RESTful do Oracle Sales Automation, há dois tipos de recursos: um único recurso ou um recurso de coleta. Um único recurso pode representar uma única entidade, como um funcionário ou uma ordem de compra, enquanto um recurso de cobrança pode ser mais abrangente, como uma lista de funcionários ou uma lista de ordens de compra que podem ser paginadas.

Sobre o Suporte REST para Objetos Personalizados

O Oracle Sales Automation inclui objetos padrão que atendem a muitas necessidades e cenários de negócios. No entanto, além dos objetos padrão, você pode usar a ferramenta Application Composer para criar objetos personalizados de nível superior e objetos personalizados filhos se tiver uma necessidade de negócios exclusiva.

O Application Composer é uma ferramenta baseada em navegador que analistas de negócios e administradores (não apenas desenvolvedores) podem usar para personalizar o Oracle Sales Automation. Ao usar essa ferramenta, você pode fazer os tipos de alterações no modelo de dados que no passado foram feitas apenas por desenvolvedores. Na ferramenta Application Composer, você pode fazer alterações instantaneamente e elas ficam imediatamente disponíveis para uso sem precisar acessar novamente o aplicativo. Isso inclui a criação de Objetos Personalizados que podem ser adicionados à API do Oracle Sales Automation RESTful.

Dicas de Desempenho

Para obter o melhor desempenho das APIs REST do Oracle Fusion Sales Cloud, siga estas dicas.

Consulte somente os dados necessários. Por exemplo, se você consultar o serviço REST da oportunidade, o payload será muito grande e você terá um longo tempo de resposta. Você pode reduzir esse tempo de resposta se:
  • Consulte apenas os dados necessários.
  • Consulte apenas os dados, não os metadados.
Por exemplo, informando a consulta
salesApi/resources/latest/opportunities
retornará um payload grande, enquanto informar a consulta
salesApi/resources/latest/opportunities?fields=Name,OptyNum&onlyData=true
porque você restringiu os critérios de consulta, retornará um payload menor.

Procurar Recursos RESTful Usando Pontos Finais "Descrever"

Você pode obter detalhes específicos sobre as diferentes APIs RESTful do Oracle Sales Automation enviando uma solicitação HTTP GET que retorna um objeto JSON contendo informações de recursos e metadados complementares.

Para obter informações sobre uma versão específica da API:
  1. Acesse o Oracle Sales Automation como Administrador de Vendas.
  2. O URL que é exibido depois que você acessa mostra o nome do servidor e o número da porta da instância do Oracle Sales Automation:
    Por exemplo, se o URL for http://˂crm_server:PortNumber˃/customer/faces/CrmFusionHome, o nome do servidor será crm_server e o número da porta será PortNumber.

    Anote o nome do servidor e o número da porta, que você usa nas etapas restantes.

  3. Aponte seu web browser para o URL de recurso da API para obter os metadados da API da instância do Oracle Sales Automation:

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

    Em que salesAPI é o nome da API para o contêiner de aplicativos. A resposta do servidor retornará um objeto JSON contendo um array de itens de objeto, em que cada item representa uma versão específica da API; por exemplo, abaixo está uma parte do array de resultados com informações sobre um item:

    {
        "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. Se quiser ver todos os objetos expostos por uma versão de API específica, você poderá acessar seu ponto final "descrever", especificando a versão desejada no URL:

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

    Ou você também pode obter informações sobre a versão "mais recente" da API:

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

    Isso retornará um objeto JSON longo contendo a versão mais recente dos objetos do Oracle Sales Automation suportados na API, seus objetos filhos, uma descrição abrangente de todos os métodos, parâmetros, valores de retorno suportados, bem como os URIs de recursos de objeto.

Procurar Recursos RESTful Associados a Objetos Personalizados

Para localizar URIs de recursos para objetos personalizados do Oracle Sales Automation, siga estas etapas:

  1. Navegue até o Application Composer (você deverá estar registrado como Administrador de Vendas, Administrador de Aplicativos CRM ou Consultor de Implementação de Aplicativos).
  2. Clique em Objetos Personalizados para exibir a lista de objetos personalizados na tabela Objetos.
  3. Para exibir o URI de um objeto específico, na coluna Recurso REST, clique no link Serviço que corresponde a esse objeto.

    Dica:

    Você pode recortar e colar o URI na barra de endereços do navegador.

  4. (Opcional) Para exibir a descrição de um objeto personalizado específico, na coluna Recurso REST, clique no link Descrever que corresponde a esse objeto.

    Observação:

    Você pode anexar /describe ao final do URI para obter uma descrição de um Objeto Personalizado.

Obter os Pontos Finais do Serviço para Web Services RESTful

Você pode inferir o nome de um ponto final do Web Service do Oracle Sales Automation RESTful especificando o nome do serviço em vez da palavra-chave "describe" no URL da API.

Para começar, siga estas etapas:
  1. Abra seu browser e acesse o URL do ponto final. Se for a primeira vez que você a abrir, será solicitado que você informe suas credenciais de usuário do Oracle Sales Automation.
    Por exemplo, na API REST do Oracle Sales Automation Release 12, para acessar o ponto final do serviço Opportunities para a versão de API mais recente, o URL é:

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

  2. (Opcional) Se quiser obter informações adicionais sobre um recurso específico, você poderá usar o URL de descrição do recurso para obter metadados adicionais contendo campos, ações que podem ser executadas, objetos filhos e uma lista de recursos de valor.
    Por exemplo, na API REST do Oracle Sales Automation Release 12, no ponto final do serviço Opportunities, o URL de descrição é:

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

    A API REST do Oracle Sales Automation inclui os seguintes pontos finais do web service RESTful; observe que alguns URLs de ponto final foram alterados de R12 para R13:
    Versão 12 Versão 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

    Observação:

    Os nomes da API mudam dependendo do contêiner de aplicativos do Oracle Sales Automation ao qual o objeto de recurso pertence.

Sobre Operações REST e Estruturas de Carga Útil

O serviço Web RESTful para cada objeto padrão do Oracle Sales Automation fornece várias operações de criação, leitura, atualização e exclusão (CRUD).

Você pode executar os seguintes métodos padrão para interagir com um recurso singular ou com uma coleção de recursos por meio de seus URLs:

Método Disponível para um Recurso Singular Disponível para uma coleção de recursos
Get S N
Post N S
Patch S N
Excluir S N

Sobre o Método Get

Use esse método para consultar e recuperar informações. No entanto, os parâmetros usados na consulta para refinar a pesquisa ou restringir os resultados em um recurso singular são diferentes daqueles usados em uma coleção de recursos.

Parâmetros para Recursos Singulares e de Coleta

Os seguintes parâmetros são usados no método para consultar um recurso singular, bem como um recurso de coleta:

Parâmetro Formatar Descrição
expand

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

ou

expand=all

Retorna o recurso pai, incluindo seus filhos. Por padrão, não retorna nenhum filho.
fields fields=<FieldName1>,<FieldName2>... Selecione somente determinados campos cujas informações são exigidas.
onlyData

onlyData=true

ou

onlyData=false

Recupere apenas dados e não URLs de recursos. Por padrão, todos os URLs filhos do recurso são retornados.

Parâmetros para Recursos de Coleta

Um método GET para recurso de coleta usa os parâmetros discutidos acima, bem como os seguintes parâmetros:

Parâmetro Formatar Descrição
limit

limit=<Integer>

Um número inteiro maior que 0 que especifica o número máximo de itens retornados pelo servidor. Se nenhum valor limite for especificado, o servidor usará um valor padrão.
offset offset=<Integer> Um valor inteiro que especifica o índice do primeiro item a ser retornado. O índice de deslocamento começa em 0.
q

q=<condition1>;<condition2>;…

Especifique uma condição de filtro para restringir os itens retornados na coleção. O valor desse parâmetro de consulta contém uma ou mais expressões separadas por ";". Por exemplo, q=deptno>=10 and <=30;loc!=NY

Operadores compatíveis:

>

<

>=

<=

!=

AND

OR

=

LIKE

Caracteres especiais:

  • Aspas duplas ou simples para literais, isto é: "valor literal 1" ou "literal value2"

  • Barra invertida para caracteres de escape: \

  • Asterisco para curinga: *

totalResults

totalResults=true

ou

totalResults=false

Um valor booliano que especifica se o número total de itens que correspondem ao parâmetro de consulta "q" deve ser retornado.
orderBy

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

Especifica a ordem dos itens retornados na carga útil da resposta. O valor do parâmetro de consulta é uma string separada por vírgulas de nomes de campo, cada um opcionalmente seguido por dois-pontos e a palavra-chave asc ou desc.

Se não for especificado, o servidor retorna itens em ordem crescente.

finder

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

Usa uma "consulta" predefinida que tem seus próprios parâmetros especiais.

Por exemplo, o recurso Opportunities tem uma função finder chamada MyOpportunitiesFinder, essa função tem um parâmetro Name cujo valor pode ser definido como Auto. Esta chamada recuperará todas as oportunidades que o usuário atual possui cujo nome começa com "Auto".

dependency

dependency=<attr1>=<val1>

Usado para recursos da Lista de Valores em cascata. Por exemplo, se um recurso Location tiver um campo State, esses valores serão derivados de outro recurso States que retorna uma lista de Estados para um País específico (local). Se, por exemplo, Local for: EUA e Estado for CA. O recurso Estados contém uma lista de todos os Estados Unidos, mas se o usuário na página da web alterar a localidade para o Brasil, a maneira de recuperar todos os estados brasileiros seria com uma chamada como esta:

States?dependency=Country=BR

Sobre o método Post

Use este método para criar um novo item. O cabeçalho do tipo de mídia da solicitação é:

application/vnd.oracle.adf.resourceitem+json

Por exemplo, para criar uma nova oportunidade no recurso Opportunities, a solicitação passa o novo parâmetro de nome da Oportunidade em um objeto JSON:

{
"Name" : "New Opportunity Name"
}

O corpo da resposta do objeto JSON retornado pela solicitação POST seria algo assim:


{
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"
…
}

Sobre o Método de Patch

Use este método para fazer atualizações parciais em um recurso. Somente os campos contidos no corpo da solicitação serão atualizados.

O tipo de mídia da solicitação é:

application/vnd.oracle.adf.resourceitem+json

Por exemplo, para atualizar uma Oportunidade existente do recurso Oppurtunities, a solicitação HTTP PATCH passa o seguinte objeto JSON como o corpo da solicitação:

{
"Name": "Opportunity Name Updated"
}

A resposta desta solicitação é um objeto JSON semelhante a este:


{
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"
…
}

Sobre o Método Delete

Use este método para excluir um recurso. Não requer um corpo de solicitação.

Por exemplo, para excluir um objeto Oportunidade do recurso Opportunities, a solicitação DELETE precisa ser feita diretamente para o URI do recurso Opportunity filho a ser excluído, sem especificar nenhum parâmetro para ele:

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

Sobre os Métodos de Ação Personalizados

Às vezes, um recurso expõe uma ação personalizada que não se encaixa no padrão CRUD. Uma ação personalizada é sempre chamada com POST (para coleções singulares e de recursos) e seu tipo de mídia de solicitação é:

application/vnd.oracle.adf.action+json

O tipo de mídia de resposta é:

application/vnd.oracle.adf.actionresult+json

Por exemplo, no Oracle Sales Automation, o recurso leads em https://<crm_server:portNumber>/salesApi/resources/latest/describe/leads/ tem uma ação personalizada para converter um lead em uma oportunidade chamada: 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" ]
        },

Pense em uma ação personalizada como uma série de etapas, um processo ou uma combinação de diferentes operações CRUD para atingir um objetivo específico. No exemplo acima, o corpo da solicitação de uma Ação Personalizada deve informar o "nome" que será esse nome de ação personalizada (ou seja, convertLeadToOpty) e, opcionalmente, um array de parâmetros de entrada para a ação personalizada (ou seja, leadId).

Em geral, o corpo JSON da solicitação POST contém:

{
"$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"
]
}

O objeto de resposta JSON contém o resultado do método de ação personalizada no campo "resultados".

Sobre o suporte em lote

Para melhorar o desempenho, várias operações podem ser combinadas em uma única solicitação HTTP enviando um objeto JSON contendo um campo chamado "partes" como uma matriz de objetos. Cada objeto dentro do array contém um id exclusivo, um caminho relativo para o recurso, uma operação e, opcionalmente, um payload.

O esquema JSON da solicitação HTTP é:


{
"$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"
]
}

Por exemplo, a seguinte solicitação extrairá um funcionário existente e atualizará outro funcionário:


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
}
}
]
}

A resposta da solicitação anterior usa o mesmo tipo de mídia da solicitação e retorna um objeto JSON, como:

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

Testar uma solicitação de serviço Web do Oracle Sales Automation RESTful

Para testar uma API RESTful e obter os dados necessários, você pode usar a ferramenta de linha de comando cURL para transferir dados de ou para um servidor usando um dos protocolos suportados, como HTTP ou HTTPS.

Neste exemplo, usaremos a ferramenta cURL para acessar uma API RESTful:
  1. Certifique-se de ter um URL REST (ponto final) válido; por exemplo, no Oracle Sales Automation release 12, o ponto final do recurso accounts é:

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

  2. Tenha suas credenciais de segurança à mão.
  3. Certifique-se de ter a ferramenta cURL instalada; caso contrário:
    1. No navegador, acesse a home page do cURL em http://curl.haxx.se/download.html e clique em Fazer Download no menu de navegação esquerdo.
    2. Na página Releases e Downloads do cURL, localize a versão habilitada para SSL do software cURL que corresponde ao seu sistema operacional, clique no link para fazer download do arquivo ZIP e instale o software.
    3. Navegue até a página CA certs do cURL em http://curl.haxx.se/docs/caextract.html e faça download do pacote de certificados SSL CA ca-bundle.crt na pasta em que você instalou o cURL.
    4. Abra uma janela de comando, navegue até o diretório em que você instalou o cURL e defina a variável de ambiente cURL, CURL_CA_BUNDLE, para o local de um pacote de certificados *CA de autoridade de certificado SSL. Por exemplo:
      C:\curl> set CURL_CA_BUNDLE=ca-bundle.crt

      Agora você está pronto para usar o cURL.

  4. Usando a ferramenta cURL, emita uma solicitação HTTP no recurso:
    $ curl –k –u <userName> https://<crm_server:PortNumber>/crmCommonApi/resources/latest/accounts
  5. Você pode esperar uma resposta semelhante à mostrada a seguir:
    {
    "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. No corpo da resposta, você pode ver os links para cada recurso que contém as ações que podem ser executadas neles.
  7. (Opcional) Você pode usar o URI /describe para obter os metadados de um recurso, como:
    $ curl –k –u <userName> https://<crm_server:PortNumber>/crmCommonApi/resources/latest/accounts/describe

    Ele retorna algo assim:

    
    {
    "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" ]
    } ]
    }
    ...

    Nos metadados, você pode observar que pode emitir um comando POST no recurso /accounts para criar um recurso.