<?xml version="1.0" encoding="UTF-8"?>
<rss xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:taxo="http://purl.org/rss/1.0/modules/taxonomy/" version="2.0">
  <channel>
    <title>topic Re: XMC Client API Access Documentation in ExtremeCloud IQ- Site Engine Management Center</title>
    <link>https://community.extremenetworks.com/t5/extremecloud-iq-site-engine/xmc-client-api-access-documentation/m-p/81502#M9044</link>
    <description>&lt;P&gt;Hi Marwin,&lt;/P&gt;  &lt;P&gt;here are code snippets from a script from my colleague that might help:&lt;/P&gt;  &lt;OL type="1"&gt;&lt;LI&gt;Get Token&lt;/LI&gt; &lt;/OL&gt;&lt;P&gt;token_url&amp;nbsp;=&amp;nbsp;'https://'+&amp;nbsp;self.host&amp;nbsp;+':'+&amp;nbsp;str(self.port)&amp;nbsp;+'/oauth/token/access-token?grant_type=client_credentials'&lt;/P&gt;  &lt;P&gt;headers&amp;nbsp;&amp;nbsp;&amp;nbsp;=&amp;nbsp;{"Content-Type"&amp;nbsp;:&amp;nbsp;"application/x-www-form-urlencoded"}&lt;/P&gt;  &lt;P&gt;response&amp;nbsp;=&amp;nbsp;requests.post(token_url,&amp;nbsp;auth=(id,&amp;nbsp;secret),&amp;nbsp;headers=headers,&amp;nbsp;verify=False,&amp;nbsp;timeout=5)&lt;/P&gt;  &lt;P&gt;result&amp;nbsp;=&amp;nbsp;response.json()&lt;/P&gt;  &lt;P&gt;self.token&amp;nbsp;&amp;nbsp;=&amp;nbsp;result[u'access_token']&lt;/P&gt;  &lt;P&gt;&amp;nbsp;&lt;/P&gt;  &lt;OL start="2" type="1"&gt;&lt;LI&gt;Build session (from requests import Session)&lt;/LI&gt; &lt;/OL&gt;&lt;P&gt;session&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;=&amp;nbsp;Session()&lt;/P&gt;  &lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;session.verify&amp;nbsp;&amp;nbsp;=&amp;nbsp;False&lt;/P&gt;  &lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;session.timeout&amp;nbsp;=&amp;nbsp;self.timeout&lt;/P&gt;  &lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;session.headers.update({'Accept':&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;'application/json',&lt;/P&gt;  &lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;'Content-type':&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;'application/json',&lt;/P&gt;  &lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;'Authorization':&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;'Bearer&amp;nbsp;'&amp;nbsp;+&amp;nbsp;self.token,&lt;/P&gt;  &lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;'Cache-Control':&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;'no-cache',&lt;/P&gt;  &lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;})&lt;/P&gt;  &lt;P&gt;&amp;nbsp;&lt;/P&gt;  &lt;OL start="3" type="1"&gt;&lt;LI&gt;Use that session to query the NBI&lt;/LI&gt; &lt;/OL&gt;&lt;P&gt;self.session.post(&amp;nbsp;self.nbiUrl,&amp;nbsp;json=&amp;nbsp;{'query':&amp;nbsp;nbi_query}&amp;nbsp;)&lt;/P&gt;  &lt;P&gt;&amp;nbsp;&lt;/P&gt;  &lt;P&gt;Let me know if that helped.&lt;/P&gt;  &lt;P&gt;Kurt&lt;/P&gt;</description>
    <pubDate>Fri, 05 Jun 2020 16:43:06 GMT</pubDate>
    <dc:creator>Kurt_Semba</dc:creator>
    <dc:date>2020-06-05T16:43:06Z</dc:date>
    <item>
      <title>XMC Client API Access Documentation</title>
      <link>https://community.extremenetworks.com/t5/extremecloud-iq-site-engine/xmc-client-api-access-documentation/m-p/81501#M9043</link>
      <description>&lt;P&gt;Hi&lt;/P&gt;  &lt;P&gt;We’re using Extreme Networks Management with Access Control and I’m looking for a way to access Nothbound Interface (NBI) from external.&lt;/P&gt;  &lt;P&gt;It is working right now with Basic Auth (Username/Password), but as I don’t want to maintain an “API” user, I would rellay like to use the API Client Access.&lt;/P&gt;  &lt;P&gt;I was able to get a ticket from /oauth/token/access-token?grant_type=client_credentials and then access /nbi/graphql with that token.&lt;/P&gt;  &lt;P&gt;But at the moment it’s a blackbox. What other “grant_type”s are supportet? What’s the proper workflow to renew tokens.&lt;/P&gt;  &lt;P&gt;Unfortunately I’m not able to find any documentation for XMC OAuth. Anybody able to help?&lt;/P&gt;</description>
      <pubDate>Fri, 05 Jun 2020 13:13:30 GMT</pubDate>
      <guid>https://community.extremenetworks.com/t5/extremecloud-iq-site-engine/xmc-client-api-access-documentation/m-p/81501#M9043</guid>
      <dc:creator>marwin79</dc:creator>
      <dc:date>2020-06-05T13:13:30Z</dc:date>
    </item>
    <item>
      <title>Re: XMC Client API Access Documentation</title>
      <link>https://community.extremenetworks.com/t5/extremecloud-iq-site-engine/xmc-client-api-access-documentation/m-p/81502#M9044</link>
      <description>&lt;P&gt;Hi Marwin,&lt;/P&gt;  &lt;P&gt;here are code snippets from a script from my colleague that might help:&lt;/P&gt;  &lt;OL type="1"&gt;&lt;LI&gt;Get Token&lt;/LI&gt; &lt;/OL&gt;&lt;P&gt;token_url&amp;nbsp;=&amp;nbsp;'https://'+&amp;nbsp;self.host&amp;nbsp;+':'+&amp;nbsp;str(self.port)&amp;nbsp;+'/oauth/token/access-token?grant_type=client_credentials'&lt;/P&gt;  &lt;P&gt;headers&amp;nbsp;&amp;nbsp;&amp;nbsp;=&amp;nbsp;{"Content-Type"&amp;nbsp;:&amp;nbsp;"application/x-www-form-urlencoded"}&lt;/P&gt;  &lt;P&gt;response&amp;nbsp;=&amp;nbsp;requests.post(token_url,&amp;nbsp;auth=(id,&amp;nbsp;secret),&amp;nbsp;headers=headers,&amp;nbsp;verify=False,&amp;nbsp;timeout=5)&lt;/P&gt;  &lt;P&gt;result&amp;nbsp;=&amp;nbsp;response.json()&lt;/P&gt;  &lt;P&gt;self.token&amp;nbsp;&amp;nbsp;=&amp;nbsp;result[u'access_token']&lt;/P&gt;  &lt;P&gt;&amp;nbsp;&lt;/P&gt;  &lt;OL start="2" type="1"&gt;&lt;LI&gt;Build session (from requests import Session)&lt;/LI&gt; &lt;/OL&gt;&lt;P&gt;session&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;=&amp;nbsp;Session()&lt;/P&gt;  &lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;session.verify&amp;nbsp;&amp;nbsp;=&amp;nbsp;False&lt;/P&gt;  &lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;session.timeout&amp;nbsp;=&amp;nbsp;self.timeout&lt;/P&gt;  &lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;session.headers.update({'Accept':&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;'application/json',&lt;/P&gt;  &lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;'Content-type':&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;'application/json',&lt;/P&gt;  &lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;'Authorization':&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;'Bearer&amp;nbsp;'&amp;nbsp;+&amp;nbsp;self.token,&lt;/P&gt;  &lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;'Cache-Control':&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;'no-cache',&lt;/P&gt;  &lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;})&lt;/P&gt;  &lt;P&gt;&amp;nbsp;&lt;/P&gt;  &lt;OL start="3" type="1"&gt;&lt;LI&gt;Use that session to query the NBI&lt;/LI&gt; &lt;/OL&gt;&lt;P&gt;self.session.post(&amp;nbsp;self.nbiUrl,&amp;nbsp;json=&amp;nbsp;{'query':&amp;nbsp;nbi_query}&amp;nbsp;)&lt;/P&gt;  &lt;P&gt;&amp;nbsp;&lt;/P&gt;  &lt;P&gt;Let me know if that helped.&lt;/P&gt;  &lt;P&gt;Kurt&lt;/P&gt;</description>
      <pubDate>Fri, 05 Jun 2020 16:43:06 GMT</pubDate>
      <guid>https://community.extremenetworks.com/t5/extremecloud-iq-site-engine/xmc-client-api-access-documentation/m-p/81502#M9044</guid>
      <dc:creator>Kurt_Semba</dc:creator>
      <dc:date>2020-06-05T16:43:06Z</dc:date>
    </item>
    <item>
      <title>Re: XMC Client API Access Documentation</title>
      <link>https://community.extremenetworks.com/t5/extremecloud-iq-site-engine/xmc-client-api-access-documentation/m-p/81503#M9045</link>
      <description>&lt;P&gt;Thanks for your reply. That’s basically what I found inbetween by trying. Just if somebody else finds itself lost in that topic, here some hints:&lt;/P&gt;  &lt;P&gt;This one helps a lot to understand:&lt;/P&gt;  &lt;P&gt;&lt;A href="https://gitlab.com/rbrt-weiler/go-module-xmcnbiclient" target="_blank" rel="nofollow noreferrer noopener"&gt;https://gitlab.com/rbrt-weiler/go-module-xmcnbiclient&lt;/A&gt;&lt;/P&gt;  &lt;P&gt;Then the ‘grant_type=client_credentials’ is following the RFC&lt;/P&gt;  &lt;P&gt;&lt;A href="https://tools.ietf.org/html/rfc6749#section-4.4.2" target="_blank" rel="nofollow noreferrer noopener"&gt;https://tools.ietf.org/html/rfc6749#section-4.4.2&lt;/A&gt;&lt;/P&gt;  &lt;P&gt;&amp;nbsp;&lt;/P&gt;  &lt;P&gt;Additionally I found out that the error 405 means that GET is used instead of POST.&lt;/P&gt;  &lt;P&gt;&amp;nbsp;&lt;/P&gt;  &lt;P&gt;So I’m a big step further, but an official documentation for using oauth would be very nice.&lt;/P&gt;</description>
      <pubDate>Fri, 05 Jun 2020 17:00:02 GMT</pubDate>
      <guid>https://community.extremenetworks.com/t5/extremecloud-iq-site-engine/xmc-client-api-access-documentation/m-p/81503#M9045</guid>
      <dc:creator>marwin79</dc:creator>
      <dc:date>2020-06-05T17:00:02Z</dc:date>
    </item>
  </channel>
</rss>

