IBM Maximo: Dicas de APIs Rest: Difference between revisions
(→URLs) |
|||
(133 intermediate revisions by the same user not shown) | |||
Line 1: | Line 1: | ||
= Arquitetura = | |||
[[File:Maximo-rest-api-arch.png]] | |||
* '''BO/OS''': BO/Object Structure | |||
* '''MMI''': Maximo Management Interface | |||
= Documentação, Artigos e Technotes = | |||
* '''Documentação''': [https://community.ibm.com/community/user/iot/viewdocument/maximos-rest-api-aka-json-api-os?CommunityKey=ed77c224-45e2-47b0-b574-cc31496f9a41&tab=librarydocuments&LibraryFolderKey=6daea7e7-5628-48a6-9791-c272c1e15bae&DefaultView=folder Maximo's REST API (aka JSON API, OSLC API) Documentation] | |||
* '''Documentação''': [https://developer.ibm.com/apis/catalog/maximo--maximo-manage-rest-api/Introduction/ Maximo Manage REST APIs] | |||
* '''Artigo''': [https://www.linkedin.com/pulse/send-notifications-slack-via-maximo-integration-yasutaka-nishimura/ Send notifications to Slack via Maximo Integration Framework] | |||
* '''Artigo''': [https://www.linkedin.com/pulse/custom-autoscript-end-point-realizes-access-oauth2-yasutaka-nishimura/ Custom autoscript end point realizes to access OAuth2 protected resources] | |||
* '''Technote''': [https://www.ibm.com/support/pages/maximo-json-mapping-looking-example Maximo JSON mapping - looking for an example?] | |||
= URLs = | = URLs = | ||
== | <big>Important: starting on MAS 8, default context change from '''/maximo/oslc/''' to '''/maximo/api/'''</big> | ||
* '''/maximo/oas3/maximoapis.html'''-> Maximo RESTful API By Category | |||
* '''/maximo/oas3/api.html'''-> Maximo RESTful API - Swagger | |||
* '''/maximo/api/oas?includeactions=1'''-> Maximo RESTful API - Swagger include actions | |||
* '''maximo/oslc/login''' or '''/j_security_check''' | |||
** [[IBM Maximo: REST API Authentication]] | |||
* '''/maximo/api/''' -> Default uri os oslc | |||
* '''/maximo/api/apimeta''' -> APIs Metadata. Metadata for all the object structures that are API eligible | |||
* '''/maximo/api/license''' -> License Keys | |||
* '''/maximo/api/log''' | |||
** [[IBM Maximo: REST API Troubleshooting]] | |||
* '''/maximo/api/members''' -> Server Members, API for the Maximo Management Interface (MMI). | |||
* '''/maximo/api/members/thisserver''' ->This Server | |||
* '''/maximo/api/products''' -> Installed Products | |||
* '''/maximo/api/systeminfo''' -> System Info | |||
* '''/maximo/api/version''' -> Version | |||
* '''/maximo/api/whoami''' -> Who am I | |||
* '''/maximo/api/service/system''' | |||
** [[IBM Maximo: REST API working with system properties]] | |||
* '''/maximo/api/sp''' -> Service Provider | |||
= Object Structures = | |||
* '''/maximo/api/os/MXINTOBJECT''' | |||
** [[IBM Maximo: Get a list of Object Structures using REST API]] | |||
*'''/maximo/api/os/MXOBJECTCFG''' | |||
** [[IBM Maximo: Get the attributes of Object Structures using REST API]] | |||
* '''/maximo/api/jsonschema/<object structure>''' | |||
** GET jsonschema/mxapiwodetail – gets the schema for the OS, but one object at a time. | |||
** GET jsonschema/mxapiwodetail?oslc.select=* - gets the full schema | |||
** Support child object schemas GET jsonschema/mxapiasset/assetmeter | |||
** Support schema views - Get jsonschema/mxapiasset?oslc.select=attr1,rel1.attr2 | |||
= Headers = | |||
{| class="wikitable sortable" | |||
|- | |||
! Key !! Value!! Description | |||
|- | |||
| '''maxauth'''=base64(username:password) || required || Username and Password encoded as base64 | |||
|- | |||
| Content-Type=application/json || - || - | |||
|- | |||
| Accept=application/json || - || - | |||
|- | |||
| '''properties'''=*<br>'''properties'''=attr1,attr2 || usado no POST || Usar o header de properties elimina a necessidade de fazer um GET extra após um create ou update. Dever estar definido na variável mxe.oslc.aclallowheaders | |||
|- | |||
| '''x-method-override: PATCH'''|| usado no POST || informa ao servidor que será um update | |||
|- | |||
| '''x-method-override: PATCH'''<br>'''patchtype: MERGE'''|| usado no POST || informa ao servidor que será um update e atualiza os filhos | |||
|- | |||
| '''batcherror: 1'''|| usado no POST || Suportado a partir do 7.6.1.2. ??? | |||
|- | |||
| '''x-method-override: SYNC'''<br>'''patchtype: MERGE'''|| usado no POST || informa ao servidor que será um update e atualiza os filhos | |||
|- | |||
| '''filetype'''|| usado no POST || Usado na importação de arquivos (<os>?action=importfile), os valores são FLAT ou XML | |||
|- | |||
| '''delimiter: ,'''|| usado no POST || Usado na importação de arquivos (<os>?action=importfile). Delimitador de CSV | |||
|- | |||
| '''textqualifier: "'''|| usado no POST || Usado na importação de arquivos (<os>?action=importfile). Delimitador de texto em CSV | |||
|- | |||
| '''msgtype: '''|| usado no POST || Usado na importação de arquivos (<os>?action=importfile). The message type Sync,Create,Update or default (null) to be used for this import | |||
|- | |||
| '''preview: 1'''|| usado no POST || Usado na importação de arquivos (<os>?action=importfile). API is running in preview mode | |||
|- | |||
| '''transactionid: NNNNN'''|| usado no POST || Avoid duplicating the transaction processing. | |||
|} | |||
= Parameters = | |||
{| class="wikitable sortable" | |||
|- | |||
! Key !! Description | |||
|- | |||
| uri?'''lean'''=1 || simple notation | |||
|- | |||
| uri?'''oslc.select''' || especifica o conjunto de atributos a serem buscados nas estruturas de objetos, bem como nos objetos relacionados. Veja seção [[IBM Maximo: Dicas de APIs Rest#OSLC.SELECT|OSLC.SELECT]] abaixo. | |||
|- | |||
| uri?'''oslc.where''' || especifica a cláusula WHERE para filtrar o conjunto de resultados de uma consulta. Veja seção [[IBM Maximo: Dicas de APIs Rest#OSLC.WHERE|OSLC.WHERE]] abaixo. | |||
|- | |||
| uri?'''actions'''=name || veja seção [[IBM Maximo: Dicas de APIs Rest#ACTIONS|ACTIONS]] abaixo | |||
|- | |||
| uri?'''oslc.orderBy'''<br>uri?'''oslc.orderBy'''=-attr1,+attr2 || especifica como os resultados de uma consulta são ordenados. O sinal de '''(-)''' para ordem decrescente e sinal de '''(+)''' para ordem crescente, sendo que o sinal + deve estar encoded. | |||
|- | |||
| uri?'''oslc.paging'''=true || - | |||
|- | |||
|uri?'''oslc.pageSize'''=N <br>uri?'''oslc.pageSize'''=N&'''stablepaging=true''' | |||
|| | |||
especifica os recursos para cada página de uma consulta. | |||
* Stable Paging – good for downloading large data sets. | |||
* Auto paging – Helps prevent OOM for large dataset requests when no page size specified. Default 1000 records | |||
* Limit Paging – Helps prevent OOM for large dataset requests when high page size specified. | |||
** '''mxe.oslc.maxpagesize''': define o valor para todos as Object Structures | |||
** '''mxe.oslc.<os name in lower case>.maxpagesize''': define o valor para uma Object Structures, sobrepõe mxe.oslc.maxpagesize | |||
|- | |||
| POST uri?'''interactive'''=1 || Handling Yes/No/Cancel interactions | |||
|- | |||
|uri?'''collectioncount'''=1 ||retorna o totalCount e totalPages na reposta<br>Set mxe.oslc.collectioncount system property to 1, the totalCount and totalPages parameters are included by default as part of the responseInfo. | |||
"responseInfo": { | |||
... | |||
"totalCount": 1 | |||
} | |||
|- | |||
| uri?'''ignorecollectionref'''=1 || Stop to return collectionref like the following: | |||
{ | |||
"woactivity_collectionref": "...", | |||
"locations_collectionref": "...", | |||
|- | |||
| uri?'''relativeuri'''=1 || returns a relative url instead of the complete url. | |||
Default | |||
{ | |||
"localref": "<nowiki>http://server/maximo/</nowiki>oslc/os/mxapisr/_SUV.....g0", | |||
} | |||
with '''relativeuri'''=1 | |||
''' | { | ||
"localref": "oslc/os/mxapisr/_SUV.....g0", | |||
} | |||
|- | |||
| uri?'''inlinedoc'''=1 || getting attachments inline as part of a json document. | |||
|- | |||
| uri?'''internalvalues'''=1 || ??? | |||
|- | |||
| uri?'''addschema'''=1 || ??? | |||
|- | |||
| uri?'''docdownloadid'''=1 || ??? | |||
|} | |||
* | {| class="wikitable sortable" | ||
|- | |||
! Key !! Description | |||
|- | |||
| uri?'''savedQuery'''=name || Saved query can be SQL, Java, Auto Script. <br>'''/apimeta/<os name>''' lists all saved queries for an Object Structure. <br>savedQuery=KPI:ASSETKPI | |||
|- | |||
| uri?'''tlrange'''=-3M&'''tlattribute'''=dateattr[=indexdate] | |||
|| | |||
* tlattribute - the timeline attribute to which the range applies. If no index data specified, its defaulted to the current date-time. | |||
* tlrange – The range in Months (M)/Years (Y)/ Week (W)/ Days (D)/ Hour (h)/Min (m)/ Seconds (s). + and - indicates whether to add or substract from tlattribute date-time. | |||
|- | |||
| POST uri?'''interactive'''=1 || Handling Yes/No/Cancel interactions | |||
|- | |||
| GET uri?gbcols=status,'''count'''.*,'''sum.attr1'''&'''gbsortby'''=-count.* | |||
|| | |||
Aggregation APIs. | |||
Also supports date histograms – yearly/quarterly/monthly/weekly. <br>For example: <br>GET /mxapiwodetail? gbcols=year$statusdate,quarter$statusdate,sum.actlabhrs | |||
|- | |||
|uri?'''count'''=1 ||only the total count of records that match the query and not the records | |||
|- | |||
|uri?'''_dropnulls'''=0 ||To force the response to add null value attributes, API response skips the null value attributes by default | |||
|- | |||
|uri?'''_format'''=xml<br>uri?'''_format'''=csv || Usado no export de arquivos | |||
|- | |||
| uri/<os>?'''distinct'''=attr1&oslc.where=... || select DISTINCT Exemplo: <br>/os/mxapiasset?distinct=siteid&oslc.where=... | |||
|- | |||
| uri/<os>?'''attributesearch'''=[CLASSIFICATION] || Classification attribute search. <br>/maximo/api/os/mxapiasset?attributesearch=[SPEED:>=50;AREA;ELEV:=300] | |||
|} | |||
< | |||
=== OSLC.SELECT === | |||
{| class="wikitable sortable" | |||
|- | |||
! Key !! Description | |||
|- | |||
| oslc.select=assetnum,location'''—'''mylocation || Apelido para atributo, para resolver conflitos de mesmo nome. Senão adicionado retorna $alias_this_attr$ | |||
|- | |||
| oslc.select=attr1,attr2,child{attr4,attr5,grandchild{*}} || - | |||
|- | |||
| oslc.select=attr1,rel1.attr1,rel.rel2{attr1,attr2},rel.rel3.os {*} || | |||
} | * rel1.attr1 – 1:1 relations. Results in a JSON Object for property named “rel1”. | ||
* rel.rel2 {attr1,attr2} – 1:* relations. Results in a JSON Array for property named “rel2”. | |||
* rel.rel3.os {*} – 1:* relations. Results in a JSON Array with OS json (for the named os) as array members. | |||
|- | |||
| /oslc/os/mxasset?oslc.select=assetnum,status,exp.myreplacecost || | |||
create a object formula called MYREPLACECOST for asset object by using the Object Formula action in the Database Configuration application. The formula is purchaseprice/NVL(priority,1). | |||
|- | |||
|/oslc/os/mxasset/{id}?oslc.select=assetnum,openwo.actlabhrs.'''_dbmax''', ... | |||
|| | |||
database aggregation (max,min,avg,sum,count, and exists) functions on related MboSets, must add _db prefix. | |||
|- | |||
|oslc.select=assetnum,status&'''internalvalues=1''' | |||
|| | |||
Domain internal values. Returns as <attribute name>_maxvalue property. | |||
|} | |||
=== OSLC.WHERE === | |||
{| class="wikitable sortable" | |||
|- | |||
! Key !! Description | |||
|- | |||
| uri?oslc.where=attr1 in ["val1","val2"] and attr2>200|| - | |||
|- | |||
| uri?oslc.where=status in ["OPERATING","ACTIVE"] and priority=3 and statusdate>"ISO date string" and linear=false|| - | |||
|- | |||
| uri?oslc.where=objectname IN ["WORKORDER","WOACTIVITY] || - | |||
|- | |||
| uri?oslc.where=priority in [1,2,3] || - | |||
|- | |||
| uri?oslc.where=status="%APPR%" || like "%APPR%", aceita também "APPR%" e "%APPR" | |||
|- | |||
| uri?oslc.where=status="*" || status is not null | |||
|- | |||
| uri?oslc.where=status!="*" || status is null | |||
|- | |||
| uri?oslc.where=usewith="INTEGRATION" || - | |||
|} | |||
=== ACTIONS === | |||
{| class="wikitable sortable" | |||
|- | |||
! Key !! Description | |||
|- | |||
| uri/<os>/{id}?'''action=wsmethod:changeStatus''' | |||
|| | |||
Chama actions. Exemplo: | |||
POST uri/mxasset/{id}?action=wsmethod:changeStatus | |||
{ | |||
"rollToAllChildren": true, | |||
"removeFromActiveSP": true, | |||
"removeFromActiveRoutes": true, | |||
"status": "string", | |||
"changePMStatus": true | |||
} | |||
|- | |||
| uri/<os>/{id}?'''action=workflow:<workflow name> | |||
|| | |||
This invokes the named workflow in the context of the MBO that is identified in the URI. | |||
POST uri/<os>/{id}?'''action=workflow:<workflow name>''' | |||
X-method-override: PATCH | |||
|- | |||
| uri/<os>?'''action=listreports''' | |||
|| | |||
Get the list of available reports for a given user and a given application. | |||
GET uri/mxapiwodetail?action=listreports | |||
|- | |||
| uri/<os>?'''action=genreport&reportname=<reportname>''' | |||
|| | |||
Generate a report for a given set of mbos | |||
GET uri/MXAPIWODETAIL?action=genreport&reportname=woprint.rptdesign | |||
|} | |||
= Response Data= | |||
{ | |||
"members": [{ | |||
"href": "uri" | |||
} | |||
... | |||
], | |||
"responseInfo": { | |||
"nextPage": { | |||
"href": "next page uri" | |||
}, | }, | ||
"href": "request uri", | |||
"pagenum": 1 | |||
} | |||
} | |||
} | |||
= Ver também = | = Ver também = | ||
Line 53: | Line 301: | ||
[[Category:IBM Maximo]] | [[Category:IBM Maximo]] | ||
[[Category:ibm-maximo- | [[Category:ibm-maximo-restapi]] | ||
Latest revision as of 00:45, 29 October 2024
Arquitetura
- BO/OS: BO/Object Structure
- MMI: Maximo Management Interface
Documentação, Artigos e Technotes
- Documentação: Maximo's REST API (aka JSON API, OSLC API) Documentation
- Documentação: Maximo Manage REST APIs
- Artigo: Send notifications to Slack via Maximo Integration Framework
- Artigo: Custom autoscript end point realizes to access OAuth2 protected resources
URLs
Important: starting on MAS 8, default context change from /maximo/oslc/ to /maximo/api/
- /maximo/oas3/maximoapis.html-> Maximo RESTful API By Category
- /maximo/oas3/api.html-> Maximo RESTful API - Swagger
- /maximo/api/oas?includeactions=1-> Maximo RESTful API - Swagger include actions
- maximo/oslc/login or /j_security_check
- /maximo/api/ -> Default uri os oslc
- /maximo/api/apimeta -> APIs Metadata. Metadata for all the object structures that are API eligible
- /maximo/api/license -> License Keys
- /maximo/api/log
- /maximo/api/members -> Server Members, API for the Maximo Management Interface (MMI).
- /maximo/api/members/thisserver ->This Server
- /maximo/api/products -> Installed Products
- /maximo/api/systeminfo -> System Info
- /maximo/api/version -> Version
- /maximo/api/whoami -> Who am I
- /maximo/api/service/system
- /maximo/api/sp -> Service Provider
Object Structures
- /maximo/api/os/MXINTOBJECT
- /maximo/api/os/MXOBJECTCFG
- /maximo/api/jsonschema/<object structure>
- GET jsonschema/mxapiwodetail – gets the schema for the OS, but one object at a time.
- GET jsonschema/mxapiwodetail?oslc.select=* - gets the full schema
- Support child object schemas GET jsonschema/mxapiasset/assetmeter
- Support schema views - Get jsonschema/mxapiasset?oslc.select=attr1,rel1.attr2
Headers
Key | Value | Description |
---|---|---|
maxauth=base64(username:password) | required | Username and Password encoded as base64 |
Content-Type=application/json | - | - |
Accept=application/json | - | - |
properties=* properties=attr1,attr2 |
usado no POST | Usar o header de properties elimina a necessidade de fazer um GET extra após um create ou update. Dever estar definido na variável mxe.oslc.aclallowheaders |
x-method-override: PATCH | usado no POST | informa ao servidor que será um update |
x-method-override: PATCH patchtype: MERGE |
usado no POST | informa ao servidor que será um update e atualiza os filhos |
batcherror: 1 | usado no POST | Suportado a partir do 7.6.1.2. ??? |
x-method-override: SYNC patchtype: MERGE |
usado no POST | informa ao servidor que será um update e atualiza os filhos |
filetype | usado no POST | Usado na importação de arquivos (<os>?action=importfile), os valores são FLAT ou XML |
delimiter: , | usado no POST | Usado na importação de arquivos (<os>?action=importfile). Delimitador de CSV |
textqualifier: " | usado no POST | Usado na importação de arquivos (<os>?action=importfile). Delimitador de texto em CSV |
msgtype: | usado no POST | Usado na importação de arquivos (<os>?action=importfile). The message type Sync,Create,Update or default (null) to be used for this import |
preview: 1 | usado no POST | Usado na importação de arquivos (<os>?action=importfile). API is running in preview mode |
transactionid: NNNNN | usado no POST | Avoid duplicating the transaction processing. |
Parameters
Key | Description |
---|---|
uri?lean=1 | simple notation |
uri?oslc.select | especifica o conjunto de atributos a serem buscados nas estruturas de objetos, bem como nos objetos relacionados. Veja seção OSLC.SELECT abaixo. |
uri?oslc.where | especifica a cláusula WHERE para filtrar o conjunto de resultados de uma consulta. Veja seção OSLC.WHERE abaixo. |
uri?actions=name | veja seção ACTIONS abaixo |
uri?oslc.orderBy uri?oslc.orderBy=-attr1,+attr2 |
especifica como os resultados de uma consulta são ordenados. O sinal de (-) para ordem decrescente e sinal de (+) para ordem crescente, sendo que o sinal + deve estar encoded. |
uri?oslc.paging=true | - |
uri?oslc.pageSize=N uri?oslc.pageSize=N&stablepaging=true |
especifica os recursos para cada página de uma consulta.
|
POST uri?interactive=1 | Handling Yes/No/Cancel interactions |
uri?collectioncount=1 | retorna o totalCount e totalPages na reposta Set mxe.oslc.collectioncount system property to 1, the totalCount and totalPages parameters are included by default as part of the responseInfo. "responseInfo": { ... "totalCount": 1 } |
uri?ignorecollectionref=1 | Stop to return collectionref like the following:
{ "woactivity_collectionref": "...", "locations_collectionref": "...", |
uri?relativeuri=1 | returns a relative url instead of the complete url.
Default { "localref": "http://server/maximo/oslc/os/mxapisr/_SUV.....g0", } with relativeuri=1 { "localref": "oslc/os/mxapisr/_SUV.....g0", } |
uri?inlinedoc=1 | getting attachments inline as part of a json document. |
uri?internalvalues=1 | ??? |
uri?addschema=1 | ??? |
uri?docdownloadid=1 | ??? |
Key | Description |
---|---|
uri?savedQuery=name | Saved query can be SQL, Java, Auto Script. /apimeta/<os name> lists all saved queries for an Object Structure. savedQuery=KPI:ASSETKPI |
uri?tlrange=-3M&tlattribute=dateattr[=indexdate] |
|
POST uri?interactive=1 | Handling Yes/No/Cancel interactions |
GET uri?gbcols=status,count.*,sum.attr1&gbsortby=-count.* |
Aggregation APIs.
Also supports date histograms – yearly/quarterly/monthly/weekly. |
uri?count=1 | only the total count of records that match the query and not the records |
uri?_dropnulls=0 | To force the response to add null value attributes, API response skips the null value attributes by default |
uri?_format=xml uri?_format=csv |
Usado no export de arquivos |
uri/<os>?distinct=attr1&oslc.where=... | select DISTINCT Exemplo: /os/mxapiasset?distinct=siteid&oslc.where=... |
uri/<os>?attributesearch=[CLASSIFICATION] | Classification attribute search. /maximo/api/os/mxapiasset?attributesearch=[SPEED:>=50;AREA;ELEV:=300] |
OSLC.SELECT
Key | Description |
---|---|
oslc.select=assetnum,location—mylocation | Apelido para atributo, para resolver conflitos de mesmo nome. Senão adicionado retorna $alias_this_attr$ |
oslc.select=attr1,attr2,child{attr4,attr5,grandchild{*}} | - |
oslc.select=attr1,rel1.attr1,rel.rel2{attr1,attr2},rel.rel3.os {*} |
|
/oslc/os/mxasset?oslc.select=assetnum,status,exp.myreplacecost |
create a object formula called MYREPLACECOST for asset object by using the Object Formula action in the Database Configuration application. The formula is purchaseprice/NVL(priority,1). |
/oslc/os/mxasset/{id}?oslc.select=assetnum,openwo.actlabhrs._dbmax, ... |
database aggregation (max,min,avg,sum,count, and exists) functions on related MboSets, must add _db prefix. |
oslc.select=assetnum,status&internalvalues=1 |
Domain internal values. Returns as <attribute name>_maxvalue property. |
OSLC.WHERE
Key | Description |
---|---|
uri?oslc.where=attr1 in ["val1","val2"] and attr2>200 | - |
uri?oslc.where=status in ["OPERATING","ACTIVE"] and priority=3 and statusdate>"ISO date string" and linear=false | - |
uri?oslc.where=objectname IN ["WORKORDER","WOACTIVITY] | - |
uri?oslc.where=priority in [1,2,3] | - |
uri?oslc.where=status="%APPR%" | like "%APPR%", aceita também "APPR%" e "%APPR" |
uri?oslc.where=status="*" | status is not null |
uri?oslc.where=status!="*" | status is null |
uri?oslc.where=usewith="INTEGRATION" | - |
ACTIONS
Key | Description |
---|---|
uri/<os>/{id}?action=wsmethod:changeStatus |
Chama actions. Exemplo: POST uri/mxasset/{id}?action=wsmethod:changeStatus { "rollToAllChildren": true, "removeFromActiveSP": true, "removeFromActiveRoutes": true, "status": "string", "changePMStatus": true } |
uri/<os>/{id}?action=workflow:<workflow name> |
This invokes the named workflow in the context of the MBO that is identified in the URI. POST uri/<os>/{id}?action=workflow:<workflow name> X-method-override: PATCH |
uri/<os>?action=listreports |
Get the list of available reports for a given user and a given application. GET uri/mxapiwodetail?action=listreports |
uri/<os>?action=genreport&reportname=<reportname> |
Generate a report for a given set of mbos GET uri/MXAPIWODETAIL?action=genreport&reportname=woprint.rptdesign |
Response Data
{ "members": [{ "href": "uri" } ... ], "responseInfo": { "nextPage": { "href": "next page uri" }, "href": "request uri", "pagenum": 1 } }