> ## Documentation Index
> Fetch the complete documentation index at: https://api-docs.jarvi.tech/llms.txt
> Use this file to discover all available pages before exploring further.

# GraphQL

> The complete API to do everything else!

This API allows you to do absolutely anything you wish. You can customize your requests to read/write whatever you need.

<Warning>
  We do not guarantee that the information available in this API won't change without notice. We advise you not to use
  this API for critical applications without discussing it with us first.
</Warning>

<CardGroup cols={1}>
  <Card title="Open the query editor" icon="circle-play" href="https://cloud.hasura.io/public/graphiql?header=content-type%3Aapplication%2Fjson&header=X-Api-Key%3AREPLACEWITHYOURAPIKEY&endpoint=https%3A%2F%2Ffunctions.prod.jarvi.tech%2Fv1%2Fpublic-api%2Fgraphql" target="_blank">
    The editor provides you with an interface detailing all possibilities and allowing you to test your queries in
    real-time.
  </Card>
</CardGroup>

Here's a video showing how to use the query editor:

<iframe width="100%" height="400" src="https://www.loom.com/embed/0f55b83295ec456b89e83eca52535bcb?sid=1ba88143-dade-42e9-b354-1f348b42077f" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen />


## OpenAPI

````yaml POST /graphql
openapi: 3.0.1
info:
  title: Jarvi API
  description: An API to help you read and manage your projects, profiles, and more.
  license:
    name: MIT
  version: 2.0.0
servers:
  - url: https://functions.prod.jarvi.tech/v1/public-api
security:
  - ApiKeyAuth: []
paths:
  /graphql:
    post:
      summary: Send a graphql query or mutation
      description: >-
        Use the playground console to build and test your requests and see all
        the possibilies
      requestBody:
        required: true
        content:
          application/json:
            schema:
              properties:
                operationName:
                  type: string
                  description: >-
                    The name of the operation. Used for log and debugging. If
                    not provided, will be the first word of the query or
                    mutation
                  example: fields
                query:
                  type: string
                  description: >-
                    The graphQL query as a SourcesEnum. You can use the
                    playground console to build and test your requests and see
                    all the possibilies
                  example: >-
                    query fields($limit: Int, $offset: Int, $order_by:
                    [fields_order_by!]!, $where: fields_bool_exp) {
                                        items: fields(
                                          limit: $limit
                                          offset: $offset
                                          order_by: $order_by
                                          where: $where
                                        ) {
                                          id
                                          createdAt
                                          updatedAt
                                          deletedAt
                                          name
                                          userId
                                          type
                                          order
                                          targetedEntity
                                          isHidden
                                          defaultValue
                                          purpose
                                          isMadeForSales
                                          isMadeForRecruitment
                                          values(where: {deletedAt: {_is_null: true}}, order_by: {name: asc}) {
                                            id
                                            fieldId
                                            name
                                            isDefault
                                            technicalValue
                                            __typename
                                          }
                                          parentId
                                          parent {
                                            id
                                            name
                                            isMadeForSales
                                            isMadeForRecruitment
                                            __typename
                                          }
                                          children(where: {deletedAt: {_is_null: true}}, order_by: {order: asc}) {
                                            id
                                            createdAt
                                            updatedAt
                                            deletedAt
                                            name
                                            userId
                                            type
                                            order
                                            targetedEntity
                                            isHidden
                                            defaultValue
                                            purpose
                                            isMadeForSales
                                            isMadeForRecruitment
                                            values(where: {deletedAt: {_is_null: true}}, order_by: {name: asc}) {
                                              id
                                              fieldId
                                              name
                                              isDefault
                                              technicalValue
                                              __typename
                                            }
                                            parentId
                                            parent {
                                              id
                                              name
                                              isMadeForSales
                                              isMadeForRecruitment
                                              __typename
                                            }
                                            __typename
                                          }
                                          __typename
                                        }
                                        total: fields_aggregate(order_by: $order_by, where: $where) {
                                          aggregate {
                                            count
                                            __typename
                                          }
                                          __typename
                                        }
                                      }
                variables:
                  type: object
                  description: >-
                    If you have variables in your query or mutation, you can
                    provide them here. You can use the playground console to
                    build and test your requests and see all the possibilies
                  example:
                    where:
                      _and:
                        - parentId:
                            _is_null: true
                        - deletedAt:
                            _is_null: true
                    limit: 1000
                    offset: 0
                    order_by:
                      order: asc
      responses:
        '200':
          description: GraphQL response (can contain errors)
          content:
            application/json:
              schema:
                properties:
                  data:
                    type: object
                    example: The data you wanted to get
                  errors:
                    type: object
                    example: Errors details if any
        '401':
          description: Unauthorized, check your API key
        '500':
          description: Unknown error
      security:
        - ApiKeyAuth: []
components:
  securitySchemes:
    ApiKeyAuth:
      type: apiKey
      in: header
      name: X-API-KEY

````