Accesso ai dati di Oracle Sales Automation mediante i servizi RESTful

Oracle Sales Automation fornisce diverse API RESTful che è possibile utilizzare per accedere ai dati degli oggetti standard e personalizzati e per l'integrazione con applicazioni esterne. Le chiamate con metodo diretto RESTful vengono effettuate utilizzando un URL strutturato correttamente tramite il protocollo HTTP.

Ogni API contiene oggetti Oracle Sales Automation standard e ogni oggetto è associato a una risorsa o a una raccolta risorse REST. Ad esempio, nell'API RESTful l'endpoint risorsa Opportunities viene utilizzato per tenere traccia delle informazioni su una vendita potenziale. Tuttavia, prima di utilizzare i servizi Web Oracle Sales Automation RESTful è necessario tenere conto dei requisiti di sicurezza per l'accesso e identificare anche i servizi Web da utilizzare, insieme ai metodi supportati corrispondenti e alle strutture payload previste.

Informazioni sulle risorse nelle API Oracle Sales Automation RESTful

Oracle Sales Automation fornisce una raccolta di risorse REST per oggetti standard e personalizzati.

Un concetto importante in qualsiasi API RESTful è la risorsa. Una risorsa è un oggetto con un tipo (ad esempio, Opportunità), dati associati, relazioni con altre risorse e un set di metodi che vi operano. Queste risorse sono organizzate in modo gerarchico e comprendono:

  • Risorsa radice: corrisponde a un oggetto logico, ad esempio un'opportunità o un lead.

  • Risorse secondarie: si tratta di risorse che appartengono a una risorsa padre, ad esempio un contatto per un'opportunità.

  • Risorsa elenco di valori: elenco di valori validi che è possibile utilizzare quando si imposta un valore per un campo. Esistono due tipi: Ricerca (elenco statico) o Dinamico (in base al contesto).

Nell'API Oracle Sales Automation RESTful sono disponibili due tipi di risorse: una singola risorsa o una risorsa di raccolta. Una singola risorsa può rappresentare una singola entità, ad esempio un dipendente o un ordine di acquisto, mentre una risorsa di riscossione può essere più completa, ad esempio un elenco di dipendenti o un elenco di ordini di acquisto di cui è possibile eseguire il paging.

Informazioni sul supporto REST per gli oggetti personalizzati

Oracle Sales Automation include oggetti standard che tengono conto di molte esigenze e scenari aziendali. Tuttavia, oltre agli oggetti standard, è possibile utilizzare lo strumento Creazione applicazione per creare sia oggetti personalizzati di livello superiore che oggetti personalizzati figlio se si ha un'esigenza aziendale univoca.

Application Composer è uno strumento basato su browser che gli analisti aziendali e gli amministratori (non solo gli sviluppatori) possono utilizzare per personalizzare Oracle Sales Automation. Utilizzando questo strumento, è possibile apportare i tipi di modifiche al modello dati che in passato sono state apportate solo dagli sviluppatori. Lo strumento Creazione applicazioni consente di apportare modifiche in tempo reale e diventano immediatamente disponibili per l'uso senza dover accedere di nuovo all'applicazione, tra cui la creazione di oggetti personalizzati che possono essere aggiunti all'API Oracle Sales Automation RESTful.

Suggerimenti sulle prestazioni

Per ottenere le migliori prestazioni dalle API REST di Oracle Fusion Sales Cloud, segui questi suggerimenti.

Eseguire la query solo sui dati necessari. Ad esempio, se si esegue una query sul servizio REST dell'opportunità, il payload sarà piuttosto grande e si verificherà un tempo di risposta lungo. È possibile ridurre il tempo di risposta se:
  • Eseguire una query solo sui dati necessari.
  • Eseguire una query solo sui dati, non sui metadati.
Ad esempio, immettere la query
salesApi/resources/latest/opportunities
restituirà un payload di grandi dimensioni, mentre l'immissione della query
salesApi/resources/latest/opportunities?fields=Name,OptyNum&onlyData=true
Poiché i criteri di query sono stati limitati, verrà restituito un payload più piccolo.

Cerca risorse RESTful utilizzando gli endpoint "Descrivi"

È possibile ottenere dettagli specifici sulle diverse API Oracle Sales Automation RESTful inviando una richiesta HTTP GET che restituisce un oggetto JSON contenente informazioni sulle risorse e metadati complementari.

Per ottenere informazioni su una versione particolare dell'API, effettuare le operazioni riportate di seguito.
  1. Accedere a Oracle Sales Automation come amministratore vendite.
  2. L'URL visualizzato dopo l'accesso mostra il nome e il numero di porta del server per l'istanza di Oracle Sales Automation:
    Ad esempio, se l'URL è http://˂crm_server:PortNumber˃/customer/faces/CrmFusionHome, il nome del server è crm_server e il numero di porta è PortNumber.

    Prendere nota del nome del server e del numero di porta, utilizzati nei passi rimanenti.

  3. Inviare il browser Web all'URL della risorsa API per ottenere i metadati API dell'istanza di Oracle Sales Automation:

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

    Dove salesAPI è il nome API per il contenitore dell'applicazione. La risposta del server restituirà un oggetto JSON contenente un array di elementi oggetto, in cui ogni elemento rappresenta una versione particolare dell'API; ad esempio, di seguito è riportata una parte dell'array di risultati con informazioni su un elemento:

    {
        "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 si desidera visualizzare tutti gli oggetti esposti da una determinata versione dell'API, è possibile accedere al relativo endpoint di descrizione, specificando la versione desiderata nell'URL:

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

    Oppure puoi anche ottenere informazioni sull'ultima versione dell'API:

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

    Verrà restituito un oggetto JSON lungo contenente la versione più recente degli oggetti Oracle Sales Automation supportati nell'API, i relativi oggetti figlio, una descrizione completa di tutti i metodi, i parametri, i valori restituiti supportati e gli URI delle risorse oggetto.

Cerca risorse RESTful associate a oggetti personalizzati

Per trovare gli URI delle risorse per gli oggetti personalizzati di Oracle Sales Automation, effettuare le operazioni riportate di seguito.

  1. Passare a Creazione applicazione (è necessario essere registrati come Amministratore vendite, Amministratore applicazione CRM o Consulente implementazione applicazione).
  2. Fare clic su Oggetti personalizzati per visualizzare la lista degli oggetti personalizzati nella tabella Oggetti.
  3. Per visualizzare l'URI per un oggetto specifico, nella colonna Risorsa REST fare clic sul collegamento Servizio corrispondente a tale oggetto.

    Suggerimento

    È possibile tagliare e incollare l'URI dalla barra degli indirizzi del browser.

  4. (Facoltativo) Per visualizzare la descrizione di un oggetto personalizzato specifico, nella colonna Risorsa REST fare clic sul collegamento Descrivi corrispondente all'oggetto.

    Nota

    È possibile aggiungere /describe alla fine dell'URI per ottenere una descrizione di un oggetto personalizzato.

Ottenere gli endpoint dei servizi per i servizi Web RESTful

È possibile derivare il nome di un endpoint del servizio Web Oracle Sales Automation RESTful specificando il nome del servizio anziché la parola chiave "describe" nell'URL dell'API.

Per iniziare, procedere come segue:
  1. Aprire il browser e accedere all'URL dell'endpoint. Se si apre per la prima volta, verranno richieste le credenziali utente di Oracle Sales Automation.
    Ad esempio, nell'API REST per Oracle Sales Automation Release 12, per accedere all'endpoint del servizio Opportunities per la versione API più recente, l'URL è:

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

  2. (Facoltativo) Se si desidera ottenere informazioni aggiuntive su una risorsa specifica, è possibile utilizzare l'URL di descrizione della risorsa per ottenere metadati aggiuntivi contenenti campi, azioni che è possibile eseguire, oggetti figlio e un elenco di risorse valore.
    Ad esempio, nell'API REST per Oracle Sales Automation Release 12, nell'endpoint del servizio Opportunities, l'URL describe è:

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

    L'API REST di Oracle Sales Automation include gli endpoint del servizio Web RESTful riportati di seguito. Tenere presente che alcuni URL degli endpoint sono stati modificati da R12 a R13.
    Release 12 Release 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

    Nota

    I nomi delle API cambiano a seconda del contenitore dell'applicazione Oracle Sales Automation a cui appartiene l'oggetto risorsa.

Informazioni sulle operazioni REST e sulle strutture dei payload

Il servizio Web RESTful per ogni oggetto standard di Oracle Sales Automation fornisce diverse operazioni di creazione, lettura, aggiornamento ed eliminazione (CRUD).

È possibile eseguire i seguenti metodi standard per interagire con una singola risorsa o con una raccolta di risorse tramite i relativi URL:

Metodo Disponibile per una risorsa singolare Disponibile per una raccolta risorse
Recupera Y N
Invia N Y
Patch Y N
Eliminazione Y N

Informazioni sul metodo Get

Utilizzare questo metodo per eseguire query e recuperare informazioni. Tuttavia, i parametri utilizzati nella query per perfezionare la ricerca o limitare i risultati in una singola risorsa sono diversi da quelli utilizzati in una raccolta di risorse.

Parametri per le risorse singolari e di raccolta

Nel metodo di interrogazione di una singola risorsa e di una risorsa di raccolta vengono utilizzati i parametri riportati di seguito.

Parametro Formato Descrizione
expand

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

o

expand=all

Restituisce la risorsa padre, inclusi i relativi figli. Per impostazione predefinita non restituisce alcun figlio.
fields fields=<FieldName1>,<FieldName2>... Selezionare solo i campi le cui informazioni sono obbligatorie.
onlyData

onlyData=true

o

onlyData=false

Recupera solo i dati e non gli URL delle risorse. Per impostazione predefinita vengono restituiti tutti gli URL figlio risorsa.

Parametri per le risorse di raccolta

Un metodo GET per la risorsa di raccolta utilizza i parametri sopra descritti e i seguenti parametri:

Parametro Formato Descrizione
limit

limit=<Integer>

Numero intero maggiore di 0 che specifica il numero massimo di elementi restituiti dal server. Se non viene specificato alcun valore limite, il server utilizzerà un valore limite predefinito.
offset offset=<Integer> Valore intero che specifica l'indice del primo elemento da restituire. L'indice di offset inizia con 0.
q

q=<condition1>;<condition2>;…

Specificare una condizione di filtro per limitare gli articoli restituiti nella raccolta. Il valore di questo parametro di query contiene una o più espressioni separate da ";". Ad esempio q=deptno>=10 and <=30;loc!=NY

Operatori supportati:

>

<

>=

<=

!=

AND

OR

=

LIKE

Caratteri speciali:

  • Virgolette doppie o singole per i valori letterali, ad esempio "valore letterale 1" o "valore letterale value2"

  • Barra rovesciata per caratteri di escape: \

  • Asterisco per il carattere jolly: *

totalResults

totalResults=true

o

totalResults=false

Valore booleano che specifica se restituire il numero totale di elementi che corrispondono al parametro di query "q".
orderBy

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

Specifica l'ordine degli articoli restituiti nel payload della risposta. Il valore del parametro di query è una stringa separata da virgole di nomi di campo, ciascuno seguito facoltativamente da due punti e dalla parola chiave asc o desc.

Se non specificato, il server restituisce gli elementi in ordine crescente.

finder

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

Utilizza una "query" predefinita che ha i propri parametri speciali.

Ad esempio, la risorsa Opportunities dispone di una funzione finder denominata MyOpportunitiesFinder, con un parametro Name che può essere impostato come Auto. Questa chiamata recupererà tutte le opportunità di proprietà dell'utente corrente il cui nome inizia con "Automatico".

dependency

dependency=<attr1>=<val1>

Utilizzato per le risorse elenco di valori a catena. Ad esempio, se una risorsa Location dispone di un campo State, tali valori verranno derivati da un'altra risorsa States che restituisce una lista di stati per un paese (posizione) specifico. Se ad esempio Location è: US e State è CA. La risorsa Stati contiene un elenco di tutti gli Stati Uniti, ma se l'utente nella pagina web cambia le impostazioni nazionali in Brasile, il modo per recuperare tutti gli stati brasiliani sarebbe con una chiamata come questa:

States?dependency=Country=BR

Informazioni sul metodo Post

Utilizzare questo metodo per creare un nuovo elemento. L'intestazione del tipo di supporto della richiesta è:

application/vnd.oracle.adf.resourceitem+json

Ad esempio, per creare una nuova opportunità nella risorsa Opportunities, la richiesta passa il nuovo parametro del nome Opportunità in un oggetto JSON:

{
"Name" : "New Opportunity Name"
}

Il corpo della risposta dell'oggetto JSON restituito dalla richiesta POST sarebbe simile al seguente:


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

Informazioni sul metodo di patch

Utilizzare questo metodo per effettuare aggiornamenti parziali a una risorsa. Verranno aggiornati solo i campi contenuti nel corpo della richiesta.

Il tipo di supporto della richiesta è:

application/vnd.oracle.adf.resourceitem+json

Ad esempio, per aggiornare un'opportunità esistente dalla risorsa Oppurtunities, la richiesta HTTP PATCH passa come corpo della richiesta il seguente oggetto JSON:

{
"Name": "Opportunity Name Updated"
}

La risposta di questa richiesta è un oggetto JSON simile al seguente:


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

Informazioni sul metodo di eliminazione

Utilizzare questo metodo per eliminare una risorsa. Non richiede un corpo della richiesta.

Ad esempio, per eliminare un oggetto Opportunità dalla risorsa Opportunities, è necessario effettuare la richiesta DELETE direttamente all'URI della risorsa Opportunity figlio da eliminare, senza passare alcun parametro:

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

Informazioni sui metodi di azione personalizzati

A volte, una risorsa espone un'azione personalizzata che non rientra nello standard CRUD. Un'azione personalizzata viene sempre richiamata con POST (sia per le raccolte singole che per quelle di risorse) e il relativo tipo di supporto di richiesta è:

application/vnd.oracle.adf.action+json

Il tipo di supporto di risposta è:

application/vnd.oracle.adf.actionresult+json

Ad esempio, in Oracle Sales Automation la risorsa leads in https://<crm_server:portNumber>/salesApi/resources/latest/describe/leads/ dispone di un'azione personalizzata per convertire un lead in opportunità denominata 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" ]
        },

Pensa a un'azione personalizzata come a una serie di passi, a un processo o a una combinazione di diverse operazioni CRUD per raggiungere un obiettivo specifico. Nell'esempio riportato sopra, il corpo della richiesta di un'azione personalizzata deve passare il "nome" che sarà il nome dell'azione personalizzata (ad esempio convertLeadToOpty) e facoltativamente un array di parametri di input per l'azione personalizzata (ad esempio leadId).

Di solito il corpo JSON della richiesta POST contiene:

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

L'oggetto risposta JSON contiene il risultato del metodo azione personalizzata nel campo "risultati".

Informazioni sul supporto batch

Per migliorare le prestazioni, è possibile combinare più operazioni in una singola richiesta HTTP inviando un oggetto JSON contenente un campo denominato "parti" come array di oggetti. Ogni oggetto all'interno dell'array contiene un ID univoco, un percorso relativo alla risorsa, un'operazione e, facoltativamente, un payload.

Lo schema JSON della richiesta 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"
]
}

Ad esempio, la richiesta seguente recupererà un dipendente esistente e aggiornerà un altro dipendente:


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

La risposta della richiesta precedente utilizza lo stesso tipo di supporto della richiesta e restituisce un oggetto JSON come il seguente:

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

Test di una richiesta di servizio Web Oracle Sales Automation RESTful

Per eseguire il test di un'interfaccia API RESTful e ottenere i dati richiesti, è possibile utilizzare lo strumento della riga di comando cURL per trasferire dati da o verso un server utilizzando uno dei protocolli supportati, ad esempio HTTP o HTTPS.

In questo esempio verrà utilizzato lo strumento cURL per accedere a un'API RESTful:
  1. Assicurarsi di disporre di un URL REST (endpoint) valido, ad esempio in Oracle Sales Automation release 12, l'endpoint per la risorsa accounts è:

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

  2. Aiutare le credenziali di sicurezza.
  3. Assicurarsi di avere installato lo strumento cURL, altrimenti:
    1. Nel browser passare alla home page cURL all'indirizzo http://curl.haxx.se/download.html e fare clic su Scarica nel menu di navigazione a sinistra.
    2. Nella pagina Release e download cURL, individuare la versione del software cURL abilitata per SSL corrispondente al sistema operativo in uso, fare clic sul collegamento per scaricare il file ZIP e installare il software.
    3. Passare alla pagina Certificati CA cURL all'indirizzo http://curl.haxx.se/docs/caextract.html e scaricare il bundle di certificati CA SSL ca-bundle.crt nella cartella in cui è stato installato cURL.
    4. Aprire una finestra di comando, accedere alla directory in cui è stato installato cURL e impostare la variabile di ambiente cURL, CURL_CA_BUNDLE, sulla posizione di un bundle di certificati *CA dell'autorità di certificazione SSL. Ad esempio:
      C:\curl> set CURL_CA_BUNDLE=ca-bundle.crt

      Ora è possibile utilizzare cURL.

  4. Utilizzando lo strumento cURL, eseguire una richiesta HTTP sulla risorsa:
    $ curl –k –u <userName> https://<crm_server:PortNumber>/crmCommonApi/resources/latest/accounts
  5. Puoi aspettarti una risposta simile a quella mostrata di seguito:
    {
    "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. Nel corpo della risposta è possibile visualizzare i collegamenti a ogni risorsa contenente le azioni che è possibile eseguire su di esse.
  7. (Facoltativo) È possibile utilizzare l'URI /describe per ottenere i metadati di una risorsa, ad esempio:
    $ curl –k –u <userName> https://<crm_server:PortNumber>/crmCommonApi/resources/latest/accounts/describe

    Restituisce qualcosa del genere:

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

    Dai metadati si può osservare che è possibile eseguire un comando POST sulla risorsa /accounts per creare una risorsa.