mirror of
https://github.com/netbox-community/netbox.git
synced 2024-05-10 07:54:54 +00:00
* Fix typos in migration-v4.md * Replace typing.List with list typing.List is deprecated since Python 3.9 * Also replace typing.List with list in graphql-api.md
49 lines
1.0 KiB
Markdown
49 lines
1.0 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 strawberry
|
|
import strawberry_django
|
|
|
|
from . import models
|
|
|
|
|
|
@strawberry_django.type(
|
|
models.MyModel,
|
|
fields='__all__',
|
|
)
|
|
class MyModelType:
|
|
pass
|
|
|
|
|
|
@strawberry.type
|
|
class MyQuery:
|
|
@strawberry.field
|
|
def dummymodel(self, id: int) -> DummyModelType:
|
|
return None
|
|
dummymodel_list: list[DummyModelType] = strawberry_django.field()
|
|
|
|
|
|
schema = [
|
|
MyQuery,
|
|
]
|
|
```
|
|
|
|
## GraphQL Objects
|
|
|
|
NetBox provides two object type classes for use by plugins.
|
|
|
|
::: netbox.graphql.types.BaseObjectType
|
|
options:
|
|
members: false
|
|
|
|
::: netbox.graphql.types.NetBoxObjectType
|
|
options:
|
|
members: false
|