mirror of
https://github.com/netbox-community/netbox.git
synced 2024-05-10 07:54:54 +00:00
53 lines
1.3 KiB
Markdown
53 lines
1.3 KiB
Markdown
# GraphQL API
|
|
|
|
## Defining the Schema Class
|
|
|
|
A plugin can extend NetBox's GraphQL API by registering its own schema class. By default, NetBox will attempt to import `graphql.schema` from the plugin, if it exists. This path can be overridden by defining `graphql_schema` on the PluginConfig instance as the dotted path to the desired Python class. This class must be a subclass of `graphene.ObjectType`.
|
|
|
|
### Example
|
|
|
|
```python
|
|
# graphql.py
|
|
import graphene
|
|
from netbox.graphql.types import NetBoxObjectType
|
|
from netbox.graphql.fields import ObjectField, ObjectListField
|
|
from . import filtersets, models
|
|
|
|
class MyModelType(NetBoxObjectType):
|
|
|
|
class Meta:
|
|
model = models.MyModel
|
|
fields = '__all__'
|
|
filterset_class = filtersets.MyModelFilterSet
|
|
|
|
class MyQuery(graphene.ObjectType):
|
|
mymodel = ObjectField(MyModelType)
|
|
mymodel_list = ObjectListField(MyModelType)
|
|
|
|
schema = MyQuery
|
|
```
|
|
|
|
## GraphQL Objects
|
|
|
|
NetBox provides two object type classes for use by plugins.
|
|
|
|
::: netbox.graphql.types.BaseObjectType
|
|
selection:
|
|
members: false
|
|
|
|
::: netbox.graphql.types.NetBoxObjectType
|
|
selection:
|
|
members: false
|
|
|
|
## GraphQL Fields
|
|
|
|
NetBox provides two field classes for use by plugins.
|
|
|
|
::: netbox.graphql.fields.ObjectField
|
|
selection:
|
|
members: false
|
|
|
|
::: netbox.graphql.fields.ObjectListField
|
|
selection:
|
|
members: false
|