SlideShare una empresa de Scribd logo
1 de 21
Descargar para leer sin conexión
1
APIinMagento2:
whatyoucanandyoucan'tdo
Andralungu @iamspringerin
2
WhoAmi
Andra Lungu - @iamspringerin
Magento Developer @Bitbull_IT
3+ magento development
3+ .net/java development
Andralungu @iamspringerin
3
WhY
ERP
SHOPPING
APP
CRM CMS
Javascript
widgets
WAREHOUSE
Andralungu @iamspringerin
4
APIinMagento1
Supported Protocols
● XML-RPC
● SOAP V1
● SOAP V2 since M1.3, WS-I compliant since M1.6
● REST since M1.7 with less business logic then others protocols *
Authentication:
● API user with assigned roles similar to ACL roles
● * 3-legged OAuth 1.0a
Documentation
● http://devdocs.magento.com/guides/m1x/api/soap/introduction.html
● http://devdocs.magento.com/guides/m1x/api/rest-api-index.html
Andralungu @iamspringerin
5
APIinMagento2
Supported Protocols
● SOAP
● REST
Authentication:
● OAuth 1.0a 2-legged suggested for third-party applications
● Tokens suggested for mobile applications
● Session based
Documentation
● http://devdocs.magento.com/guides/v2.1/rest/bk-rest.html
● http://devdocs.magento.com/guides/v2.1/soap/bk-soap.html
Andralungu @iamspringerin
6
AUTHmagento2
User type
● Administrator or Integration
● Customer
● Guest user
Authorized resources. Example if authorized for the
Magento_Customer::group resource, they can make a GET
/V1/customerGroups/:id call.
Resources with anonymous or self permission.
Resources with anonymous permission.
Andralungu @iamspringerin
7
AUTHmagento2acl.xml permissions to access the resources
…...
<acl>
<resources>
<resource id="Magento_Backend::admin">
<resource id="Magento_Backend::stores">
<resource id="Magento_Backend::stores_settings">
<resource id="Magento_Config::config">
<resource id="Magento_Customer::config_customer" title="Customers Section" translate="title" sortOrder="50" />
</resource>
</resource>
<resource id="Magento_Backend::stores_other_settings">
<resource id="Magento_Customer::group" title="Customer Groups" translate="title" sortOrder="10" />
</resource>
</resource>
……….
Andralungu @iamspringerin
8
AUTHmagento2
webapi.xml reference the permission needed for each api resource
<route url="/V1/customers/:email/activate" method="PUT">
<service class="MagentoCustomerApiAccountManagementInterface" method="activate"/>
<resources>
<resource ref="Magento_Customer::manage"/>
</resources>
</route>
<route url="/V1/customers/me/password" method="PUT">
<service class="MagentoCustomerApiAccountManagementInterface" method="changePasswordById"/>
<resources>
<resource ref="self"/>
</resources>
<data>
<parameter name="customerId" force="true">%customer_id%</parameter>
</data>
</route>
<route url="/V1/customers/:customerId/password/resetLinkToken/:resetPasswordLinkToken" method="GET">
<service class="MagentoCustomerApiAccountManagementInterface" method="validateResetPasswordLinkToken"/>
<resources>
<resource ref="anonymous"/>
</resources>
Andralungu @iamspringerin
9
OAUTH1.0abasedauth
● Requires implementation of the protocol on client side
● Add integration in the admin area and activate it
Andralungu @iamspringerin
10
Tokenbasedauthcurl -X POST
"https://magento.host/index.php/rest/V1/integration/customer/token"  -H
"Content-Type:application/json"  -d '{"username":"customer1@example.com",
"password":"customer1pw"}'
authorization: Bearer nj9plnx828w23ppp5u8e0po9sjrkqe0d
Andralungu @iamspringerin
11
SeSsionbasedauth
Self access enables a user to access resources they own.
For example, GET /V1/customers/me fetches the logged-in customer's
details typically useful for JavaScript-based widgets.
Andralungu @iamspringerin
12
BACKWARDSCOMPATIBILITY
&PHPannotations
Semantic Versioning MAJOR.MINOR.PATCH
● MAJOR indicates incompatible API changes
● MINOR indicates backward-compatible functionality has been added
● PATCH indicates backward-compatible bug fixes
Andralungu @iamspringerin
13
BACKWARDSCOMPATIBILITY
&PHPannotationsBackward compatible applies for classes and methods annotated
with @api within MINOR and PATCH updates to our components.
As changes are introduced, methods are annotated with
@deprecated and removed only with the next MAJOR component
version.
BACKWARDSCOMPATIBILITY
&PHPannotations
Andralungu @iamspringerin
14
BACKWARDSCOMPATIBILITY
&PHPannotationsMagento uses reflection to automatically create classes and sets data submitted in JSON or HTTP
array syntax onto an instance of the expected PHP class when calling the service method.
Conversely, if an object is returned from one of these methods, Magento automatically converts
that PHP object into a JSON or SOAP object before sending it over the web API.
BACKWARDSCOMPATIBILITY
&PHPannotations
Andralungu @iamspringerin
15
BACKWARDSCOMPATIBILITY
&PHPannotationsAll methods exposed by the web API must follow these rules
● Parameters must be defined in the doc block as * @param type $paramName
● Return type must be defined in the doc block as * @return type
● Valid object types include a fully qualified class name or a fully qualified interface name.
● Any parameters or return values of type array can be denoted by following any of the previous types by
an empty set of square brackets []
BACKWARDSCOMPATIBILITY
&PHPannotations
Andralungu @iamspringerin
16
cuSTOMIZEANAPI:
Extension Attributes
<config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:noNamespaceSchemaLocation="urn:magento:framework:Api/etc/extension_attributes.xsd">
<extension_attributes for="MagentoCatalogApiDataProductInterface">
<attribute code="stock_item" type="MagentoCatalogInventoryApiDataStockItemInterface">
<resources>
<resource ref="Magento_CatalogInventory::cataloginventory"/>
</resources>
</attribute>
</extension_attributes>
</config>
Andralungu @iamspringerin
17
CREATEANAPI
18
CREATEANAPI
Never been easier !!!
Bitbull/CustomApi/etc/di.xml
<config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:noNamespaceSchemaLocation="urn:magento:framework:ObjectManager/etc/config.xsd">
<preference for="BitbullCustomApiApiMagentoSeminarInterface"
type="BitbullCustomApiModelMagentoSeminar" />
</config>
Bitbull/CustomApi/etc/webapi.xml
<routes xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:noNamespaceSchemaLocation="urn:magento:module:Magento_Webapi:etc/webapi.xsd">
<route url="/V1/magentoseminar/:eventName" method="GET">
<service class="BitbullCustomApiApiMagentoSeminarInterface" method="getAwesomeEvent"/>
<resources>
<resource ref="Magento_Catalog::products" />
</resources>
</route>
</routes>
Andralungu @iamspringerin
19
CREATEANAPI
Bitbull/CustomApi/Api/MagentoSeminarInterface.php
namespace BitbullCustomApiApi;
/**
* @api
*/
interface MagentoSeminarInterface
{
/**
* Get info about the conference
* @api
* @param string $eventName
* @return string
*/
public function getAwesomeEvent($eventName);
}
Andralungu @iamspringerin
20
CREATEANAPI
Bitbull/CustomApi/Model/MagentoSeminar.php
namespace BitbullCustomApiModel;
class MagentoSeminar implements BitbullCustomApiApiMagentoSeminarInterface
{
/*
* @api
* @param string $conferenceName
* @return string
*/
public function getAwesomeEvent($eventName)
{
return $eventName . ' is an awesome event';
}
}
Andralungu @iamspringerin
21
QUestions
Thank you
Andralungu @iamspringerin

Más contenido relacionado

Similar a Api in magento 2

Similar a Api in magento 2 (20)

Crafting APIs
Crafting APIsCrafting APIs
Crafting APIs
 
7 network programmability concepts python-ansible
7 network programmability concepts python-ansible7 network programmability concepts python-ansible
7 network programmability concepts python-ansible
 
The Complete Guide to API Development in 2022.pdf
The Complete Guide to API Development in 2022.pdfThe Complete Guide to API Development in 2022.pdf
The Complete Guide to API Development in 2022.pdf
 
APIdays Paris 2014 - Workshop - Craft and Deploy Your API in a Few Clicks Wit...
APIdays Paris 2014 - Workshop - Craft and Deploy Your API in a Few Clicks Wit...APIdays Paris 2014 - Workshop - Craft and Deploy Your API in a Few Clicks Wit...
APIdays Paris 2014 - Workshop - Craft and Deploy Your API in a Few Clicks Wit...
 
Highlights of WSO2 API Manager 4.0.0
Highlights of WSO2 API Manager 4.0.0Highlights of WSO2 API Manager 4.0.0
Highlights of WSO2 API Manager 4.0.0
 
MuleSoft Surat Virtual Meetup#21 - MuleSoft API and RAML Design Best Practice...
MuleSoft Surat Virtual Meetup#21 - MuleSoft API and RAML Design Best Practice...MuleSoft Surat Virtual Meetup#21 - MuleSoft API and RAML Design Best Practice...
MuleSoft Surat Virtual Meetup#21 - MuleSoft API and RAML Design Best Practice...
 
Backward Compatibility Developer's Guide in Magento 2
Backward Compatibility Developer's Guide in Magento 2Backward Compatibility Developer's Guide in Magento 2
Backward Compatibility Developer's Guide in Magento 2
 
REST API Basics
REST API BasicsREST API Basics
REST API Basics
 
API Design Best Practices by Igor Miniailo
API Design Best Practices by Igor MiniailoAPI Design Best Practices by Igor Miniailo
API Design Best Practices by Igor Miniailo
 
INTERFACE by apidays_What's your Type? Understanding API Types and Choosing t...
INTERFACE by apidays_What's your Type? Understanding API Types and Choosing t...INTERFACE by apidays_What's your Type? Understanding API Types and Choosing t...
INTERFACE by apidays_What's your Type? Understanding API Types and Choosing t...
 
Extend soa with api management Sangam18
Extend soa with api management Sangam18Extend soa with api management Sangam18
Extend soa with api management Sangam18
 
Best practices and advantages of REST APIs
Best practices and advantages of REST APIsBest practices and advantages of REST APIs
Best practices and advantages of REST APIs
 
A Practical Guide to Automating End-to-End API Testing
A Practical Guide to Automating End-to-End API TestingA Practical Guide to Automating End-to-End API Testing
A Practical Guide to Automating End-to-End API Testing
 
Api Testing.pdf
Api Testing.pdfApi Testing.pdf
Api Testing.pdf
 
[Madrid-Meetup Octubre 22] Seguridad fuerte como el vinagre de Jerez. Políti...
[Madrid-Meetup Octubre 22] Seguridad fuerte como el vinagre de Jerez. Políti...[Madrid-Meetup Octubre 22] Seguridad fuerte como el vinagre de Jerez. Políti...
[Madrid-Meetup Octubre 22] Seguridad fuerte como el vinagre de Jerez. Políti...
 
RefCard API Architecture Strategy
RefCard API Architecture StrategyRefCard API Architecture Strategy
RefCard API Architecture Strategy
 
API (Application program interface)
API (Application program interface)API (Application program interface)
API (Application program interface)
 
How to build Simple yet powerful API.pptx
How to build Simple yet powerful API.pptxHow to build Simple yet powerful API.pptx
How to build Simple yet powerful API.pptx
 
SVQdotNET: Building APIs with OpenApi
SVQdotNET: Building APIs with OpenApiSVQdotNET: Building APIs with OpenApi
SVQdotNET: Building APIs with OpenApi
 
Nordic API days 2016 - APIs.guru Wikipedia for Web APIs
Nordic API days 2016 - APIs.guru Wikipedia for Web APIsNordic API days 2016 - APIs.guru Wikipedia for Web APIs
Nordic API days 2016 - APIs.guru Wikipedia for Web APIs
 

Último

Call Girls In Sukhdev Vihar Delhi 💯Call Us 🔝8264348440🔝
Call Girls In Sukhdev Vihar Delhi 💯Call Us 🔝8264348440🔝Call Girls In Sukhdev Vihar Delhi 💯Call Us 🔝8264348440🔝
Call Girls In Sukhdev Vihar Delhi 💯Call Us 🔝8264348440🔝
soniya singh
 
CALL ON ➥8923113531 🔝Call Girls Lucknow Lucknow best sexual service Online
CALL ON ➥8923113531 🔝Call Girls Lucknow Lucknow best sexual service OnlineCALL ON ➥8923113531 🔝Call Girls Lucknow Lucknow best sexual service Online
CALL ON ➥8923113531 🔝Call Girls Lucknow Lucknow best sexual service Online
anilsa9823
 
Call Girls In Defence Colony Delhi 💯Call Us 🔝8264348440🔝
Call Girls In Defence Colony Delhi 💯Call Us 🔝8264348440🔝Call Girls In Defence Colony Delhi 💯Call Us 🔝8264348440🔝
Call Girls In Defence Colony Delhi 💯Call Us 🔝8264348440🔝
soniya singh
 
Delhi Call Girls Rohini 9711199171 ☎✔👌✔ Whatsapp Hard And Sexy Vip Call
Delhi Call Girls Rohini 9711199171 ☎✔👌✔ Whatsapp Hard And Sexy Vip CallDelhi Call Girls Rohini 9711199171 ☎✔👌✔ Whatsapp Hard And Sexy Vip Call
Delhi Call Girls Rohini 9711199171 ☎✔👌✔ Whatsapp Hard And Sexy Vip Call
shivangimorya083
 
Call Girls Service Chandigarh Lucky ❤️ 7710465962 Independent Call Girls In C...
Call Girls Service Chandigarh Lucky ❤️ 7710465962 Independent Call Girls In C...Call Girls Service Chandigarh Lucky ❤️ 7710465962 Independent Call Girls In C...
Call Girls Service Chandigarh Lucky ❤️ 7710465962 Independent Call Girls In C...
Sheetaleventcompany
 
Rohini Sector 22 Call Girls Delhi 9999965857 @Sabina Saikh No Advance
Rohini Sector 22 Call Girls Delhi 9999965857 @Sabina Saikh No AdvanceRohini Sector 22 Call Girls Delhi 9999965857 @Sabina Saikh No Advance
Rohini Sector 22 Call Girls Delhi 9999965857 @Sabina Saikh No Advance
Call Girls In Delhi Whatsup 9873940964 Enjoy Unlimited Pleasure
 
Hot Service (+9316020077 ) Goa Call Girls Real Photos and Genuine Service
Hot Service (+9316020077 ) Goa  Call Girls Real Photos and Genuine ServiceHot Service (+9316020077 ) Goa  Call Girls Real Photos and Genuine Service
Hot Service (+9316020077 ) Goa Call Girls Real Photos and Genuine Service
sexy call girls service in goa
 

Último (20)

WhatsApp 📞 8448380779 ✅Call Girls In Mamura Sector 66 ( Noida)
WhatsApp 📞 8448380779 ✅Call Girls In Mamura Sector 66 ( Noida)WhatsApp 📞 8448380779 ✅Call Girls In Mamura Sector 66 ( Noida)
WhatsApp 📞 8448380779 ✅Call Girls In Mamura Sector 66 ( Noida)
 
Call Girls In Sukhdev Vihar Delhi 💯Call Us 🔝8264348440🔝
Call Girls In Sukhdev Vihar Delhi 💯Call Us 🔝8264348440🔝Call Girls In Sukhdev Vihar Delhi 💯Call Us 🔝8264348440🔝
Call Girls In Sukhdev Vihar Delhi 💯Call Us 🔝8264348440🔝
 
Russian Call Girls in %(+971524965298 )# Call Girls in Dubai
Russian Call Girls in %(+971524965298  )#  Call Girls in DubaiRussian Call Girls in %(+971524965298  )#  Call Girls in Dubai
Russian Call Girls in %(+971524965298 )# Call Girls in Dubai
 
CALL ON ➥8923113531 🔝Call Girls Lucknow Lucknow best sexual service Online
CALL ON ➥8923113531 🔝Call Girls Lucknow Lucknow best sexual service OnlineCALL ON ➥8923113531 🔝Call Girls Lucknow Lucknow best sexual service Online
CALL ON ➥8923113531 🔝Call Girls Lucknow Lucknow best sexual service Online
 
Call Girls In Defence Colony Delhi 💯Call Us 🔝8264348440🔝
Call Girls In Defence Colony Delhi 💯Call Us 🔝8264348440🔝Call Girls In Defence Colony Delhi 💯Call Us 🔝8264348440🔝
Call Girls In Defence Colony Delhi 💯Call Us 🔝8264348440🔝
 
Delhi Call Girls Rohini 9711199171 ☎✔👌✔ Whatsapp Hard And Sexy Vip Call
Delhi Call Girls Rohini 9711199171 ☎✔👌✔ Whatsapp Hard And Sexy Vip CallDelhi Call Girls Rohini 9711199171 ☎✔👌✔ Whatsapp Hard And Sexy Vip Call
Delhi Call Girls Rohini 9711199171 ☎✔👌✔ Whatsapp Hard And Sexy Vip Call
 
Call Now ☎ 8264348440 !! Call Girls in Sarai Rohilla Escort Service Delhi N.C.R.
Call Now ☎ 8264348440 !! Call Girls in Sarai Rohilla Escort Service Delhi N.C.R.Call Now ☎ 8264348440 !! Call Girls in Sarai Rohilla Escort Service Delhi N.C.R.
Call Now ☎ 8264348440 !! Call Girls in Sarai Rohilla Escort Service Delhi N.C.R.
 
Call Now ☎ 8264348440 !! Call Girls in Shahpur Jat Escort Service Delhi N.C.R.
Call Now ☎ 8264348440 !! Call Girls in Shahpur Jat Escort Service Delhi N.C.R.Call Now ☎ 8264348440 !! Call Girls in Shahpur Jat Escort Service Delhi N.C.R.
Call Now ☎ 8264348440 !! Call Girls in Shahpur Jat Escort Service Delhi N.C.R.
 
Top Rated Pune Call Girls Daund ⟟ 6297143586 ⟟ Call Me For Genuine Sex Servi...
Top Rated  Pune Call Girls Daund ⟟ 6297143586 ⟟ Call Me For Genuine Sex Servi...Top Rated  Pune Call Girls Daund ⟟ 6297143586 ⟟ Call Me For Genuine Sex Servi...
Top Rated Pune Call Girls Daund ⟟ 6297143586 ⟟ Call Me For Genuine Sex Servi...
 
Call Now ☎ 8264348440 !! Call Girls in Green Park Escort Service Delhi N.C.R.
Call Now ☎ 8264348440 !! Call Girls in Green Park Escort Service Delhi N.C.R.Call Now ☎ 8264348440 !! Call Girls in Green Park Escort Service Delhi N.C.R.
Call Now ☎ 8264348440 !! Call Girls in Green Park Escort Service Delhi N.C.R.
 
Hot Call Girls |Delhi |Hauz Khas ☎ 9711199171 Book Your One night Stand
Hot Call Girls |Delhi |Hauz Khas ☎ 9711199171 Book Your One night StandHot Call Girls |Delhi |Hauz Khas ☎ 9711199171 Book Your One night Stand
Hot Call Girls |Delhi |Hauz Khas ☎ 9711199171 Book Your One night Stand
 
Call Girls Service Chandigarh Lucky ❤️ 7710465962 Independent Call Girls In C...
Call Girls Service Chandigarh Lucky ❤️ 7710465962 Independent Call Girls In C...Call Girls Service Chandigarh Lucky ❤️ 7710465962 Independent Call Girls In C...
Call Girls Service Chandigarh Lucky ❤️ 7710465962 Independent Call Girls In C...
 
Nanded City ( Call Girls ) Pune 6297143586 Hot Model With Sexy Bhabi Ready ...
Nanded City ( Call Girls ) Pune  6297143586  Hot Model With Sexy Bhabi Ready ...Nanded City ( Call Girls ) Pune  6297143586  Hot Model With Sexy Bhabi Ready ...
Nanded City ( Call Girls ) Pune 6297143586 Hot Model With Sexy Bhabi Ready ...
 
Enjoy Night⚡Call Girls Dlf City Phase 3 Gurgaon >༒8448380779 Escort Service
Enjoy Night⚡Call Girls Dlf City Phase 3 Gurgaon >༒8448380779 Escort ServiceEnjoy Night⚡Call Girls Dlf City Phase 3 Gurgaon >༒8448380779 Escort Service
Enjoy Night⚡Call Girls Dlf City Phase 3 Gurgaon >༒8448380779 Escort Service
 
Rohini Sector 22 Call Girls Delhi 9999965857 @Sabina Saikh No Advance
Rohini Sector 22 Call Girls Delhi 9999965857 @Sabina Saikh No AdvanceRohini Sector 22 Call Girls Delhi 9999965857 @Sabina Saikh No Advance
Rohini Sector 22 Call Girls Delhi 9999965857 @Sabina Saikh No Advance
 
𓀤Call On 7877925207 𓀤 Ahmedguda Call Girls Hot Model With Sexy Bhabi Ready Fo...
𓀤Call On 7877925207 𓀤 Ahmedguda Call Girls Hot Model With Sexy Bhabi Ready Fo...𓀤Call On 7877925207 𓀤 Ahmedguda Call Girls Hot Model With Sexy Bhabi Ready Fo...
𓀤Call On 7877925207 𓀤 Ahmedguda Call Girls Hot Model With Sexy Bhabi Ready Fo...
 
Networking in the Penumbra presented by Geoff Huston at NZNOG
Networking in the Penumbra presented by Geoff Huston at NZNOGNetworking in the Penumbra presented by Geoff Huston at NZNOG
Networking in the Penumbra presented by Geoff Huston at NZNOG
 
Hot Service (+9316020077 ) Goa Call Girls Real Photos and Genuine Service
Hot Service (+9316020077 ) Goa  Call Girls Real Photos and Genuine ServiceHot Service (+9316020077 ) Goa  Call Girls Real Photos and Genuine Service
Hot Service (+9316020077 ) Goa Call Girls Real Photos and Genuine Service
 
✂️ 👅 Independent Andheri Escorts With Room Vashi Call Girls 💃 9004004663
✂️ 👅 Independent Andheri Escorts With Room Vashi Call Girls 💃 9004004663✂️ 👅 Independent Andheri Escorts With Room Vashi Call Girls 💃 9004004663
✂️ 👅 Independent Andheri Escorts With Room Vashi Call Girls 💃 9004004663
 
Pune Airport ( Call Girls ) Pune 6297143586 Hot Model With Sexy Bhabi Ready...
Pune Airport ( Call Girls ) Pune  6297143586  Hot Model With Sexy Bhabi Ready...Pune Airport ( Call Girls ) Pune  6297143586  Hot Model With Sexy Bhabi Ready...
Pune Airport ( Call Girls ) Pune 6297143586 Hot Model With Sexy Bhabi Ready...
 

Api in magento 2

  • 2. 2 WhoAmi Andra Lungu - @iamspringerin Magento Developer @Bitbull_IT 3+ magento development 3+ .net/java development Andralungu @iamspringerin
  • 4. 4 APIinMagento1 Supported Protocols ● XML-RPC ● SOAP V1 ● SOAP V2 since M1.3, WS-I compliant since M1.6 ● REST since M1.7 with less business logic then others protocols * Authentication: ● API user with assigned roles similar to ACL roles ● * 3-legged OAuth 1.0a Documentation ● http://devdocs.magento.com/guides/m1x/api/soap/introduction.html ● http://devdocs.magento.com/guides/m1x/api/rest-api-index.html Andralungu @iamspringerin
  • 5. 5 APIinMagento2 Supported Protocols ● SOAP ● REST Authentication: ● OAuth 1.0a 2-legged suggested for third-party applications ● Tokens suggested for mobile applications ● Session based Documentation ● http://devdocs.magento.com/guides/v2.1/rest/bk-rest.html ● http://devdocs.magento.com/guides/v2.1/soap/bk-soap.html Andralungu @iamspringerin
  • 6. 6 AUTHmagento2 User type ● Administrator or Integration ● Customer ● Guest user Authorized resources. Example if authorized for the Magento_Customer::group resource, they can make a GET /V1/customerGroups/:id call. Resources with anonymous or self permission. Resources with anonymous permission. Andralungu @iamspringerin
  • 7. 7 AUTHmagento2acl.xml permissions to access the resources …... <acl> <resources> <resource id="Magento_Backend::admin"> <resource id="Magento_Backend::stores"> <resource id="Magento_Backend::stores_settings"> <resource id="Magento_Config::config"> <resource id="Magento_Customer::config_customer" title="Customers Section" translate="title" sortOrder="50" /> </resource> </resource> <resource id="Magento_Backend::stores_other_settings"> <resource id="Magento_Customer::group" title="Customer Groups" translate="title" sortOrder="10" /> </resource> </resource> ………. Andralungu @iamspringerin
  • 8. 8 AUTHmagento2 webapi.xml reference the permission needed for each api resource <route url="/V1/customers/:email/activate" method="PUT"> <service class="MagentoCustomerApiAccountManagementInterface" method="activate"/> <resources> <resource ref="Magento_Customer::manage"/> </resources> </route> <route url="/V1/customers/me/password" method="PUT"> <service class="MagentoCustomerApiAccountManagementInterface" method="changePasswordById"/> <resources> <resource ref="self"/> </resources> <data> <parameter name="customerId" force="true">%customer_id%</parameter> </data> </route> <route url="/V1/customers/:customerId/password/resetLinkToken/:resetPasswordLinkToken" method="GET"> <service class="MagentoCustomerApiAccountManagementInterface" method="validateResetPasswordLinkToken"/> <resources> <resource ref="anonymous"/> </resources> Andralungu @iamspringerin
  • 9. 9 OAUTH1.0abasedauth ● Requires implementation of the protocol on client side ● Add integration in the admin area and activate it Andralungu @iamspringerin
  • 10. 10 Tokenbasedauthcurl -X POST "https://magento.host/index.php/rest/V1/integration/customer/token" -H "Content-Type:application/json" -d '{"username":"customer1@example.com", "password":"customer1pw"}' authorization: Bearer nj9plnx828w23ppp5u8e0po9sjrkqe0d Andralungu @iamspringerin
  • 11. 11 SeSsionbasedauth Self access enables a user to access resources they own. For example, GET /V1/customers/me fetches the logged-in customer's details typically useful for JavaScript-based widgets. Andralungu @iamspringerin
  • 12. 12 BACKWARDSCOMPATIBILITY &PHPannotations Semantic Versioning MAJOR.MINOR.PATCH ● MAJOR indicates incompatible API changes ● MINOR indicates backward-compatible functionality has been added ● PATCH indicates backward-compatible bug fixes Andralungu @iamspringerin
  • 13. 13 BACKWARDSCOMPATIBILITY &PHPannotationsBackward compatible applies for classes and methods annotated with @api within MINOR and PATCH updates to our components. As changes are introduced, methods are annotated with @deprecated and removed only with the next MAJOR component version. BACKWARDSCOMPATIBILITY &PHPannotations Andralungu @iamspringerin
  • 14. 14 BACKWARDSCOMPATIBILITY &PHPannotationsMagento uses reflection to automatically create classes and sets data submitted in JSON or HTTP array syntax onto an instance of the expected PHP class when calling the service method. Conversely, if an object is returned from one of these methods, Magento automatically converts that PHP object into a JSON or SOAP object before sending it over the web API. BACKWARDSCOMPATIBILITY &PHPannotations Andralungu @iamspringerin
  • 15. 15 BACKWARDSCOMPATIBILITY &PHPannotationsAll methods exposed by the web API must follow these rules ● Parameters must be defined in the doc block as * @param type $paramName ● Return type must be defined in the doc block as * @return type ● Valid object types include a fully qualified class name or a fully qualified interface name. ● Any parameters or return values of type array can be denoted by following any of the previous types by an empty set of square brackets [] BACKWARDSCOMPATIBILITY &PHPannotations Andralungu @iamspringerin
  • 16. 16 cuSTOMIZEANAPI: Extension Attributes <config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:framework:Api/etc/extension_attributes.xsd"> <extension_attributes for="MagentoCatalogApiDataProductInterface"> <attribute code="stock_item" type="MagentoCatalogInventoryApiDataStockItemInterface"> <resources> <resource ref="Magento_CatalogInventory::cataloginventory"/> </resources> </attribute> </extension_attributes> </config> Andralungu @iamspringerin
  • 18. 18 CREATEANAPI Never been easier !!! Bitbull/CustomApi/etc/di.xml <config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:framework:ObjectManager/etc/config.xsd"> <preference for="BitbullCustomApiApiMagentoSeminarInterface" type="BitbullCustomApiModelMagentoSeminar" /> </config> Bitbull/CustomApi/etc/webapi.xml <routes xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:module:Magento_Webapi:etc/webapi.xsd"> <route url="/V1/magentoseminar/:eventName" method="GET"> <service class="BitbullCustomApiApiMagentoSeminarInterface" method="getAwesomeEvent"/> <resources> <resource ref="Magento_Catalog::products" /> </resources> </route> </routes> Andralungu @iamspringerin
  • 19. 19 CREATEANAPI Bitbull/CustomApi/Api/MagentoSeminarInterface.php namespace BitbullCustomApiApi; /** * @api */ interface MagentoSeminarInterface { /** * Get info about the conference * @api * @param string $eventName * @return string */ public function getAwesomeEvent($eventName); } Andralungu @iamspringerin
  • 20. 20 CREATEANAPI Bitbull/CustomApi/Model/MagentoSeminar.php namespace BitbullCustomApiModel; class MagentoSeminar implements BitbullCustomApiApiMagentoSeminarInterface { /* * @api * @param string $conferenceName * @return string */ public function getAwesomeEvent($eventName) { return $eventName . ' is an awesome event'; } } Andralungu @iamspringerin