SoilOptix Analyses - Billable API

Create a new analysis for a field, make changes to an existing Analysis, or view Messages and Files related to an Analysis. To submit a new Analysis, you would generally follow these steps: - **Create Analysis**: Create an analysis for an existing Field (usually a Resample) or create the Field and provide the FieldId when creating the Analysis. You will need to specify which Contract this Analysis will be billed to if you have access to more than one Contract. - **Upload Files**: Provide the required files including Survey, Activities (in Survey subfolder), Boundary, and available Labs. If this is a Resample then Survey and Activities may not be required. You may also submit a Boundary as WKT or use the Boundary Editor on the Portal to make any required changes. Labs do not need to be provided prior to submitting, however you must submit the Analysis again after adding additional or delayed Labs. - **Select Packages**: Select which Packages are to be included with this Analysis prior to submitting your Analysis for the first time. The available Packages are determined by your Contract. (**Tip:** You can include Packages when making a GET request for your Analysis details to see the selected and available Packages. Default Packages are selected when an Analysis is created). - **Submit**: You must submit an Analysis for processing before work will begin. You may submit an Analysis prior to providing all relevant Labs to recieve partial results as quickly as possible, however you must use the Submit action again after providing additional Labs or other data. At any time, you can use Messages to reach out to our team regarding this Analysis and view the responses. (**Tip:** When marking a message as read, it will be marked as read for all Users with Billable access to this Analysis. You can also discover all of your unread Messages using Notifications).

Operations 13

POST /api/v4/analyses/ Create a new analysis #
PATCH /api/v4/analyses/{analysis_id} Update an existing analysis #
GET /api/v4/analyses/{analysis_id}/files Get a list of all uploaded files to provided analysis #
GET /api/v4/analyses/{analysis_id}/files/{subfolder} Get a list of uploaded files to provided analysis by folder #
GET /api/v4/analyses/{analysis_id}/files/{subfolder}/{filename} Download a file from an analysis #
DELETE /api/v4/analyses/{analysis_id}/files/{subfolder}/{filename} Delete a file from an analysis #
POST /api/v4/analyses/{analysis_id}/boundary Save Boundary to Analysis in WKT format #
PATCH /api/v4/analyses/{analysis_id}/packages Select packages for an analysis or provide an empty list to deselect all #
PUT /api/v4/analyses/{analysis_id}/submit Submit an analysis #
POST /api/v4/analyses/{analysis_id}/files/upload/ Upload a file to an analysis #
GET /api/v4/analyses/{analysis_id}/messages/ Get all messages for a given analysis #
POST /api/v4/analyses/{analysis_id}/messages/ Create a new message for a given analysis #
PUT /api/v4/analyses/{analysis_id}/messages/{message_id}/read Mark a message as read for a given analysis #

Work with this as data

Every API here is available over the APIs.io API and to AI agents over MCP.

MCP server

One button, every client — Claude, Cursor, VS Code and the rest.

https://apis.io/mcp

Tools for apis

7 MCP tools reach this
  • find_apisBrowse and filter every API in the catalog.
  • get_api_artifactsOne API's artifacts, grouped by type.
  • get_openapiThe primary OpenAPI for this API.
  • find_similar_apisAPIs that look like this one.
  • apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.
  • resolveTurn a domain, URL or GitHub org into the provider it belongs to.
  • find_cohortsEvery scored population of providers in the catalog.
All 92 tools →

Call it yourself

curl for this page
This API
curl "https://apis.io/api/v1/apis/soiloptix:soiloptix-analyses-billable-api"
All apis
curl "https://apis.io/api/v1/apis?limit=25"

Discovery needs no key. Ratings and market analysis are Pro.

Get an API key

Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.

A second provider on the same verified email joins the account you already have.

OpenAPI Specification

soiloptix-analyses-billable-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  title: SoilOptix Client Analyses - Billable API
  version: '1.0'
  description: Service to retrieve data from SoilOptix Db for Clients portal
  termsOfService: https://soiloptix.com/terms-of-service/
  contact:
    name: Get Help with this API
    url: http://www.soiloptix.com
    email: dev@soiloptix.com
    copyright: SoilOptix 2022-2025
tags:
- name: Analyses - Billable
  description: 'Create a new analysis for a field, make changes to an existing Analysis, or view Messages and Files related to an Analysis. To submit a new Analysis, you would generally follow these steps:


    - **Create Analysis**: Create an analysis for an existing Field (usually a Resample) or create the Field and provide the FieldId when creating the Analysis. You will need to specify which Contract this Analysis will be billed to if you have access to more than one Contract.


    - **Upload Files**: Provide the required files including Survey, Activities (in Survey subfolder), Boundary, and available Labs. If this is a Resample then Survey and Activities may not be required. You may also submit a Boundary as WKT or use the Boundary Editor on the Portal to make any required changes. Labs do not need to be provided prior to submitting, however you must submit the Analysis again after adding additional or delayed Labs.


    - **Select Packages**: Select which Packages are to be included with this Analysis prior to submitting your Analysis for the first time. The available Packages are determined by your Contract. (**Tip:** You can include Packages when making a GET request for your Analysis details to see the selected and available Packages. Default Packages are selected when an Analysis is created).


    - **Submit**: You must submit an Analysis for processing before work will begin. You may submit an Analysis prior to providing all relevant Labs to recieve partial results as quickly as possible, however you must use the Submit action again after providing additional Labs or other data.


    At any time, you can use Messages to reach out to our team regarding this Analysis and view the responses. (**Tip:** When marking a message as read, it will be marked as read for all Users with Billable access to this Analysis. You can also discover all of your unread Messages using Notifications).'
paths:
  /api/v4/analyses/:
    post:
      tags:
      - Analyses - Billable
      summary: Create a new analysis
      operationId: create_analysis_api_v4_analyses__post
      security:
      - Authorization: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/AnalysisCreate'
      responses:
        '201':
          description: Successful Response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Analysis'
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
  /api/v4/analyses/{analysis_id}:
    patch:
      tags:
      - Analyses - Billable
      summary: Update an existing analysis
      operationId: update_analysis_api_v4_analyses__analysis_id__patch
      security:
      - Authorization: []
      parameters:
      - name: analysis_id
        in: path
        required: true
        schema:
          type: integer
          title: Analysis Id
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/AnalysisUpdate'
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Analysis'
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
  /api/v4/analyses/{analysis_id}/files:
    get:
      tags:
      - Analyses - Billable
      summary: Get a list of all uploaded files to provided analysis
      operationId: list_all_files_in_analysis_api_v4_analyses__analysis_id__files_get
      security:
      - Authorization: []
      parameters:
      - name: analysis_id
        in: path
        required: true
        schema:
          type: integer
          title: Analysis Id
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema:
                type: array
                items:
                  type: string
                title: Response List All Files In Analysis Api V4 Analyses  Analysis Id  Files Get
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
  /api/v4/analyses/{analysis_id}/files/{subfolder}:
    get:
      tags:
      - Analyses - Billable
      summary: Get a list of uploaded files to provided analysis by folder
      operationId: list_files_in_analysis_api_v4_analyses__analysis_id__files__subfolder__get
      security:
      - Authorization: []
      parameters:
      - name: analysis_id
        in: path
        required: true
        schema:
          type: integer
          title: Analysis Id
      - name: subfolder
        in: path
        required: true
        schema:
          $ref: '#/components/schemas/AnalysisFileSubfolder'
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/EnumNameEntity'
                title: Response List Files In Analysis Api V4 Analyses  Analysis Id  Files  Subfolder  Get
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
  /api/v4/analyses/{analysis_id}/files/{subfolder}/{filename}:
    get:
      tags:
      - Analyses - Billable
      summary: Download a file from an analysis
      operationId: download_analysis_file_api_v4_analyses__analysis_id__files__subfolder___filename__get
      security:
      - Authorization: []
      parameters:
      - name: analysis_id
        in: path
        required: true
        schema:
          type: integer
          title: Analysis Id
      - name: subfolder
        in: path
        required: true
        schema:
          $ref: '#/components/schemas/AnalysisFileSubfolder'
      - name: filename
        in: path
        required: true
        schema:
          type: string
          maxLength: 255
          title: Filename
      responses:
        '200':
          description: Successful Response
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
    delete:
      tags:
      - Analyses - Billable
      summary: Delete a file from an analysis
      operationId: delete_raw_upload_file_api_v4_analyses__analysis_id__files__subfolder___filename__delete
      security:
      - Authorization: []
      parameters:
      - name: analysis_id
        in: path
        required: true
        schema:
          type: integer
          title: Analysis Id
      - name: subfolder
        in: path
        required: true
        schema:
          $ref: '#/components/schemas/AnalysisFileUploadSubfolder'
      - name: filename
        in: path
        required: true
        schema:
          type: string
          maxLength: 255
          title: Filename
      responses:
        '204':
          description: Successful Response
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
  /api/v4/analyses/{analysis_id}/boundary:
    post:
      tags:
      - Analyses - Billable
      summary: Save Boundary to Analysis in WKT format
      operationId: save_boundary_wkt_api_v4_analyses__analysis_id__boundary_post
      security:
      - Authorization: []
      parameters:
      - name: analysis_id
        in: path
        required: true
        schema:
          type: integer
          title: Analysis Id
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              additionalProperties: true
              title: Geojson
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema: {}
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
  /api/v4/analyses/{analysis_id}/packages:
    patch:
      tags:
      - Analyses - Billable
      summary: Select packages for an analysis or provide an empty list to deselect all
      operationId: select_packages_api_v4_analyses__analysis_id__packages_patch
      security:
      - Authorization: []
      parameters:
      - name: analysis_id
        in: path
        required: true
        schema:
          type: integer
          title: Analysis Id
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: array
              items:
                type: integer
              title: Package Ids
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema: {}
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
  /api/v4/analyses/{analysis_id}/submit:
    put:
      tags:
      - Analyses - Billable
      summary: Submit an analysis
      operationId: submit_analysis_api_v4_analyses__analysis_id__submit_put
      security:
      - Authorization: []
      parameters:
      - name: analysis_id
        in: path
        required: true
        schema:
          type: integer
          title: Analysis Id
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AnalysisStatusResponse'
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
  /api/v4/analyses/{analysis_id}/files/upload/:
    post:
      tags:
      - Analyses - Billable
      summary: Upload a file to an analysis
      description: 'This endpoint implements the tus protocol for resumable file uploads. This allows you to upload large files and resume those files after an interuption without resending the previous data.


        Example Usage

        ```

        # python

        !pip install -U tus.py

        tus-upload --header Authorization "Bearer " --file_name https://api.soiloptix.com/api/v4/analyses//files/upload/?subfolder=survey

        ```


        Requirements

        - You must provide the filename when uploading a file'
      operationId: tus_upload_docs_api_v4_analyses__analysis_id__files_upload__post
      security:
      - Authorization: []
      parameters:
      - name: analysis_id
        in: path
        required: true
        schema:
          type: integer
          title: Analysis Id
      - name: subfolder
        in: query
        required: true
        schema:
          $ref: '#/components/schemas/AnalysisFileUploadSubfolder'
      - name: upload-metadata
        in: header
        required: false
        schema:
          type: string
          description: When creating a new upload, upload-metadata must be provided and include the filename
          title: Upload-Metadata
        description: When creating a new upload, upload-metadata must be provided and include the filename
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema: {}
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
  /api/v4/analyses/{analysis_id}/messages/:
    get:
      tags:
      - Analyses - Billable
      summary: Get all messages for a given analysis
      operationId: get_messages_api_v4_analyses__analysis_id__messages__get
      security:
      - Authorization: []
      parameters:
      - name: analysis_id
        in: path
        required: true
        schema:
          type: integer
          title: Analysis Id
      - name: include
        in: query
        required: false
        schema:
          type: array
          items:
            $ref: '#/components/schemas/MessageRelationEnum'
          description: Include additional relations to the entity
          default: []
          title: Include
        description: Include additional relations to the entity
      - name: sortBy
        in: query
        required: false
        schema:
          $ref: '#/components/schemas/MessageSortByEnum'
          default: CreatedOn
      - name: isNew
        in: query
        required: false
        schema:
          anyOf:
          - type: boolean
          - type: 'null'
          title: Isnew
      - name: limit
        in: query
        required: false
        schema:
          type: integer
          maximum: 500
          minimum: 1
          description: Page size
          default: 5
          title: Limit
        description: Page size
      - name: page
        in: query
        required: false
        schema:
          type: integer
          minimum: 0
          description: Current page, starts from 0
          default: 0
          title: Page
        description: Current page, starts from 0
      - name: sortAsc
        in: query
        required: false
        schema:
          type: boolean
          description: Sort direction, ascending if true
          default: true
          title: Sortasc
        description: Sort direction, ascending if true
      - name: returnEnum
        in: query
        required: false
        schema:
          type: boolean
          description: Return short entity version, containing only Id and Name
          default: false
          title: Returnenum
        description: Return short entity version, containing only Id and Name
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/AnalysisMessage'
                title: Response Get Messages Api V4 Analyses  Analysis Id  Messages  Get
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
    post:
      tags:
      - Analyses - Billable
      summary: Create a new message for a given analysis
      operationId: create_message_api_v4_analyses__analysis_id__messages__post
      security:
      - Authorization: []
      parameters:
      - name: analysis_id
        in: path
        required: true
        schema:
          type: integer
          title: Analysis Id
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/Body_create_message_api_v4_analyses__analysis_id__messages__post'
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AnalysisMessage'
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
  /api/v4/analyses/{analysis_id}/messages/{message_id}/read:
    put:
      tags:
      - Analyses - Billable
      summary: Mark a message as read for a given analysis
      operationId: mark_as_read_api_v4_analyses__analysis_id__messages__message_id__read_put
      security:
      - Authorization: []
      parameters:
      - name: analysis_id
        in: path
        required: true
        schema:
          type: integer
          title: Analysis Id
      - name: message_id
        in: path
        required: true
        schema:
          type: integer
          title: Message Id
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AnalysisMessage'
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
components:
  schemas:
    MessageRelationEnum:
      type: string
      enum:
      - Field
      title: MessageRelationEnum
    AnalysisCreate:
      properties:
        FieldId:
          type: integer
          title: Fieldid
        ContractId:
          anyOf:
          - type: integer
          - type: 'null'
          title: Contractid
        Resample:
          type: boolean
          title: Resample
          default: false
        IsActive:
          type: boolean
          title: Isactive
          default: true
      type: object
      required:
      - FieldId
      title: AnalysisCreate
    AnalysisStatusResponse:
      properties:
        Status:
          type: string
          title: Status
        Message:
          type: string
          title: Message
      type: object
      required:
      - Status
      - Message
      title: AnalysisStatusResponse
    BusinessPublic:
      properties:
        Name:
          type: string
          title: Name
        ContactName:
          anyOf:
          - type: string
            maxLength: 200
          - type: 'null'
          title: Contactname
        ContactEmail:
          anyOf:
          - type: string
            maxLength: 200
          - type: 'null'
          title: Contactemail
        Phone:
          anyOf:
          - type: string
          - type: 'null'
          title: Phone
        Address:
          anyOf:
          - type: string
            maxLength: 200
          - type: 'null'
          title: Address
        City:
          anyOf:
          - type: string
            maxLength: 200
          - type: 'null'
          title: City
        PostalCode:
          anyOf:
          - type: string
            maxLength: 200
          - type: 'null'
          title: Postalcode
        ProvinceState:
          anyOf:
          - type: string
            maxLength: 200
          - type: 'null'
          title: Provincestate
        CountryId:
          type: integer
          title: Countryid
        BusinessTypeId:
          type: integer
          title: Businesstypeid
          default: 1
        Id:
          type: integer
          title: Id
      type: object
      required:
      - Name
      - CountryId
      - Id
      title: BusinessPublic
    Analysis:
      properties:
        Name:
          type: string
          title: Name
        FieldId:
          type: integer
          title: Fieldid
        Id:
          type: integer
          title: Id
        LastUpdated:
          anyOf:
          - type: string
            format: date-time
          - type: 'null'
          title: Lastupdated
        CreatedOn:
          anyOf:
          - type: string
            format: date-time
          - type: 'null'
          title: Createdon
        AreaSquareM:
          anyOf:
          - type: number
          - type: 'null'
          title: Areasquarem
        IsActive:
          anyOf:
          - type: boolean
          - type: 'null'
          title: Isactive
        Resample:
          anyOf:
          - type: boolean
          - type: 'null'
          title: Resample
        Business:
          anyOf:
          - $ref: '#/components/schemas/Business'
          - type: 'null'
        Farm:
          anyOf:
          - $ref: '#/components/schemas/Farm'
          - type: 'null'
        Field:
          anyOf:
          - $ref: '#/components/schemas/Field'
          - type: 'null'
        Models:
          items:
            $ref: '#/components/schemas/Model'
          type: array
          title: Models
        Boundary:
          anyOf:
          - type: string
          - type: 'null'
          title: Boundary
        Status:
          anyOf:
          - type: string
          - type: 'null'
          title: Status
        Packages:
          anyOf:
          - items:
              $ref: '#/components/schemas/AnalysisPackage'
            type: array
          - type: 'null'
          title: Packages
        CanModify:
          anyOf:
          - type: boolean
          - type: 'null'
          title: Canmodify
        CanModifyBillable:
          anyOf:
          - type: boolean
          - type: 'null'
          title: Canmodifybillable
      type: object
      required:
      - Name
      - FieldId
      - Id
      title: Analysis
    Field:
      properties:
        Name:
          type: string
          title: Name
        CountryId:
          type: integer
          title: Countryid
        FarmId:
          type: integer
          title: Farmid
        Id:
          type: integer
          title: Id
        CreatedOn:
          anyOf:
          - type: string
            format: date-time
          - type: 'null'
          title: Createdon
        Farm:
          anyOf:
          - $ref: '#/components/schemas/Farm'
          - type: 'null'
        Business:
          anyOf:
          - $ref: '#/components/schemas/Business'
          - type: 'null'
        Country:
          anyOf:
          - $ref: '#/components/schemas/EnumEntity'
          - type: 'null'
        Analyses:
          items:
            $ref: '#/components/schemas/Analysis'
          type: array
          title: Analyses
        Boundary:
          anyOf:
          - type: string
          - type: 'null'
          title: Boundary
        Status:
          anyOf:
          - type: string
          - type: 'null'
          title: Status
        CanModify:
          anyOf:
          - type: boolean
          - type: 'null'
          title: Canmodify
      type: object
      required:
      - Name
      - CountryId
      - FarmId
      - Id
      title: Field
    Business:
      properties:
        Name:
          type: string
          title: Name
        ContactName:
          anyOf:
          - type: string
            maxLength: 200
          - type: 'null'
          title: Contactname
        ContactEmail:
          anyOf:
          - type: string
            maxLength: 200
          - type: 'null'
          title: Contactemail
        Phone:
          anyOf:
          - type: string
          - type: 'null'
          title: Phone
        Address:
          anyOf:
          - type: string
            maxLength: 200
          - type: 'null'
          title: Address
        City:
          anyOf:
          - type: string
            maxLength: 200
          - type: 'null'
          title: City
        PostalCode:
          anyOf:
          - type: string
            maxLength: 200
          - type: 'null'
          title: Postalcode
        ProvinceState:
          anyOf:
          - type: string
            maxLength: 200
          - type: 'null'
          title: Provincestate
        CountryId:
          type: integer
          title: Countryid
        BusinessTypeId:
          type: integer
          title: Businesstypeid
          default: 1
        Id:
          type: integer
          title: Id
        ParentBusinesses:
          anyOf:
          - items:
              $ref: '#/components/schemas/BusinessPublic'
            type: array
          - type: 'null'
          title: Parentbusinesses
        Customers:
          anyOf:
          - items:
              $ref: '#/components/schemas/CustomerBusinessRelationship'
            type: array
          - type: 'null'
          title: Customers
        Invites:
          anyOf:
          - items:
              $ref: '#/components/schemas/Invite'
            type: array
          - type: 'null'
          title: Invites
        Farms:
          anyOf:
          - items:
              $ref: '#/components/schemas/Farm'
            type: array
          - type: 'null'
          title: Farms
        Country:
          anyOf:
          - $ref: '#/components/schemas/EnumEntity'
          - type: 'null'
        ChildBusinesses:
          anyOf:
          - items:
              $ref: '#/components/schemas/BusinessPublic'
            type: array
          - type: 'null'
          title: Childbusinesses
        ContractId:
          anyOf:
          - type: integer
          - type: 'null'
          title: Contractid
        ZCTTemplates:
          anyOf:
          - additionalProperties: true
            type: object
          - type: 'null'
          title: Zcttemplates
        CreatedOn:
          type: string
          format: date-time
          title: Createdon
        CanModify:
          anyOf:
          - type: boolean
          - type: 'null'
          title: Canmodify
      type: object
      required:
      - Name
      - CountryId
      - Id
      - CreatedOn
      title: Business
    HTTPValidationError:
      properties:
        detail:
          items:
            $ref: '#/components/schemas/ValidationError'
          type: array
          title: Detail
      type: object
      title: HTTPValidationError
    AnalysisUpdate:
      properties:
        FieldId:
          anyOf:
          - type: integer
          - type: 'null'
          title: Fieldid
        Resample:
          anyOf:
          - type: boolean
          - type: 'null'
          title: Resample
        IsActive:
          anyOf:
          - type: boolean
          - type: 'null'
          title: Isactive
      type: object
      title: AnalysisUpdate
    MessageSortByEnum:
      type: string
      enum:
      - Id
      - CreatedOn
      - IsNew
      title: MessageSortByEnum
    Farm:
      properties:
        Name:
          type: string
          title: Name
        CountryId:
          type: integer
          title: Countryid
        BusinessId:
          type: integer
          title: Businessid
        Id:
          type: integer
          title: Id
        CreatedOn:
          anyOf:
          - type: string
            format: date-time
          - type: 'null'
          title: Createdon
        Business:
          anyOf:
          - $ref: '#/components/schemas/Business'
          - type: 'null'
        Fields:
          anyOf:
          - items:
              $ref: '#/components/schemas/Field'
            type: array
          - type: 'null'
          title: Fields
        Country:
          anyOf:
          - $ref: '#/components/schemas/EnumEntity'
          - type: 'null'
        Area:
          type: number
          title: Area
        CanModify:
          anyOf:
          - type: boolean
          - type: 'null'
          title: Canmodify
      type: object
      required:
      - Name
      - CountryId
      - BusinessId
      - Id
      title: Farm
    Body_create_message_api_v4_analyses__analysis_id__messages__post:
      properties:
        message:
          type: string
          title: Message
      type: object
      required:
      - message
      title: Body_create_message_api_v4_analyses__analysis_id__messages__post
    CustomerBusinessRelationship:
      properties:
        Id:
          type: integer
          title: Id
        Name:
          anyOf:
          - type: string
          - type: 'null'
          title: Name
        Email:
          anyOf:
          - type: string
          - type: 'null'
          title: Email
        BusinessTypeId:
          type: integer
          title: Businesstypeid
          default: 1
        IsAdmin:
          type: boolean
          title: Isadmin
          default: false
        IsSubscribed:
          type: boolean
          title: Issubscribed
          default: false
      type: object
      required:
      - Id
      title: CustomerBusinessRelationship
    AnalysisFileUploadSubfolder:
      type: string
      enum:
      - survey
      - boundary
      - lab
      title: AnalysisFileUploadSubfolder
    AnalysisPackage:
      properties:
        PackageId:
          type: integer
          title: Packageid
        PackageName:
          type: string
          title: Packagename
        IsSelected:
          type: boolean
          title: Isselected
      type: object
      required:
      - PackageId
      - PackageName
      - IsSelected
      title: AnalysisPackage
    ValidationError:
      properties:
        loc:
          items:
            anyOf:
            - type: string
            - type: integer
          type: array
          title: Location
        msg:
          type: string
          title: Message
        type:
          type: string
          title: Error Type
        input:
          title: Input
        ctx:
          type: object
          title: Context
      type: object
      required:
      - loc
      - msg
      - type
      title: ValidationError
    AnalysisFileSubfolder:
      type: string
      enum:
      - survey
      - boundary
      - lab
      title: AnalysisFileSubfolder
    AnalysisMessage:
      properties:
        AnalysisId:
          type: integer
          title: Analysisid
        IsNew:
          anyOf:
          - type: boolean
          - type: 'null'
          title: Isnew
        CreatedOn:
          type: string
          format: date-time
          title: Createdon
        IsFromCustomer:
          anyOf:
          - type: boolean
          - type: 'null'
          title: Isfromcustomer
        Message:
          type: string
          title: Message
        Id:
          type: integer
          title: Id
        Analysis:
          type: 'null'
          title: Analysis
        Field:
          anyOf:
          - $ref: '#/components/schemas/FieldName'
          - type: 'null'
      type: object
      required:
      - AnalysisId
      - CreatedOn
      - Message
      - Id
      title: AnalysisMessage
    FieldName:
      properties:
        Name:
          type: string
          title: Name
      type: object
      required:
      - Name
      title: FieldName
    Invite:
      properties:
        Id:
          type: integer
          title: Id
        Email:
          anyOf:
          - type: string
            format: email
          - type: 'null'
          title: Email
        InvitedAsAdmin:
          type: boolean
          title: Invitedasadmin
        Business:
          $ref: '#/components/schemas/BusinessPublic'
      type: object
      required:
      - Id
      - InvitedAsAdmin
      title: Invite
    Model:
      properties:
        Id:
          type: integer
          title: Id
        Name:
          type: string
          title: Name
        Resolution:
          type: number
          title: Resolution
        PublishedDate:
          anyOf:
          - type: string
            format: date-time
          - type: 'null'
          title: Publisheddate
      type: object
      required:
      - Id
      - Name
      - Resolution
      - PublishedDate
      title: Model
    EnumEntity:
      properties:
        Id:
          type: integer
          title: Id
        Name:
          type: string
          title: Name
      type: object
      required:
      - Id
      - Name
      title: EnumEntity
    EnumNameEntity:
      properties:
        Name:
          type: string
          title: Name
      type: object
      required:
      - Name
      title: EnumNameEntity
  securitySchemes:
    Authorization:
      type: http
      scheme: bearer