Skip to content

Instantly share code, notes, and snippets.

@hamletmun
Created November 19, 2021 01:51
Show Gist options
  • Save hamletmun/c0e3700a1a8369f020ea96cfe0989367 to your computer and use it in GitHub Desktop.
Save hamletmun/c0e3700a1a8369f020ea96cfe0989367 to your computer and use it in GitHub Desktop.
NetBox API (REST, GraphQL) with Powershell

NetBox API (REST, GraphQL) with Powershell

REST API

(Invoke-RestMethod -Headers @{'Authorization'='Token 0123456789abcdef0123456789abcdef01234567'} -Uri "https://netbox.my.org/api/circuits/circuits/?site_id=123").results
(Invoke-RestMethod -Headers @{'Authorization'='Token 0123456789abcdef0123456789abcdef01234567'} -Uri "https://netbox.my.org/api/dcim/sites/?region=amer&tenant=tenantname").results | Select-Object name,status
(Invoke-RestMethod -Headers @{'Authorization'='Token 0123456789abcdef0123456789abcdef01234567'} -Uri "https://netbox.my.org/api/ipam/prefixes/?tenant=tenantname").results | Select-Object prefix,site
(Invoke-RestMethod -Headers @{'Authorization'='Token 0123456789abcdef0123456789abcdef01234567'} -Uri "https://netbox.my.org/api/dcim/devices/?tenant=tenantname").results | Select-Object name,status

GraphQL - GET

(Invoke-RestMethod -Headers @{'Authorization'='Token 0123456789abcdef0123456789abcdef01234567'} -Uri 'https://netbox.my.org/graphql/?query={circuit_list(site_id:"123") {cid provider {name} status}}').data.circuit_list
(Invoke-RestMethod -Headers @{'Authorization'='Token 0123456789abcdef0123456789abcdef01234567'} -Uri 'https://netbox.my.org/graphql/?query={site_list(region:"amer", tenant:"tenantname") {name, status, custom_fields}}').data.site_list
(Invoke-RestMethod -Headers @{'Authorization'='Token 0123456789abcdef0123456789abcdef01234567'} -Uri 'https://netbox.my.org/graphql/?query={prefix_list(tenant:"tenantname") {prefix, status, site {name}, vrf {name}}}').data.prefix_list
(Invoke-RestMethod -Headers @{'Authorization'='Token 0123456789abcdef0123456789abcdef01234567'} -Uri 'https://netbox.my.org/graphql/?query={device_list(tenant:"tenantname") {name, status}}').data.device_list

GraphQL - POST

(Invoke-RestMethod -Headers @{'Authorization'='Token 0123456789abcdef0123456789abcdef01234567';'Content-Type'='application/json'} -Uri https://netbox.my.org/graphql/ -Method POST -Body '{"query": "query {circuit_list(site_id:\"123\") {cid provider {name} status}}"}').data.circuit_list
(Invoke-RestMethod -Headers @{'Authorization'='Token 0123456789abcdef0123456789abcdef01234567';'Content-Type'='application/json'} -Uri https://netbox.my.org/graphql/ -Method POST -Body '{"query": "query {site_list(region:\"amer\", tenant:\"tenantname\") {name, status, custom_fields}}"}').data.site_list
(Invoke-RestMethod -Headers @{'Authorization'='Token 0123456789abcdef0123456789abcdef01234567';'Content-Type'='application/json'} -Uri https://netbox.my.org/graphql/ -Method POST -Body '{"query": "query {prefix_list(tenant:\"tenantname\") {prefix, status, site {name}, vrf {name}}}"}').data.prefix_list
(Invoke-RestMethod -Headers @{'Authorization'='Token 0123456789abcdef0123456789abcdef01234567';'Content-Type'='application/json'} -Uri https://netbox.my.org/graphql/ -Method POST -Body '{"query": "query {device_list(tenant:\"tenantname\") {name, status}}"}').data.device_list

Reference

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment