openapi: 3.0.0
info:
  title: Leaf API
  description: >-
    Food and Agriculture developers use Leaf's API to access clean,
    standardized, and aggregated Farm data from all major sources.
  version: 1.0.0
servers:
  - url: https://api.withleaf.io
components:
  securitySchemes:
    bearerAuth:
      type: http
      scheme: bearer
security:
  - bearerAuth: []
tags:
  - name: Authentication
  - name: Authentication > JohnDeere
  - name: Authentication > ClimateFieldView
  - name: Authentication > CNHi
  - name: Authentication > Raven
  - name: Authentication > Stara
  - name: Authentication > Trimble
  - name: Authentication > Lindsay
  - name: Leaf Users
  - name: Provider Credentials > ClimateFieldView
  - name: Provider Credentials > JohnDeere
  - name: Provider Credentials > AgLeader
  - name: Provider Credentials > Agvance
  - name: Provider Credentials > CNHi
  - name: Provider Credentials > Lindsay
  - name: Provider Credentials > Raven
  - name: Provider Credentials > RavenSlingshot
  - name: Provider Credentials > Sentera
  - name: Provider Credentials > Stara
  - name: Provider Credentials > Trimble
  - name: Provider Credentials > Valley
  - name: Provider Credentials > Agrimatics
  - name: Provider Credentials > Organizations
  - name: Configurations
  - name: Alerts
  - name: Field Uploads
  - name: Fields
  - name: Boundaries
  - name: Farms
  - name: Growers
  - name: Field Operations
  - name: Machine File Conversion
  - name: Operations
  - name: Crop Monitoring
  - name: Weather
  - name: Irrigation
  - name: Beta > Products
  - name: Beta > Varieties
  - name: Beta > Tank Mixes
  - name: Beta > Machines
  - name: Beta > Layers
  - name: Beta > Prescriptions
  - name: Beta > Implements
  - name: Beta > Operators
  - name: Leaf Connect
  - name: Leaf Link > API Keys
  - name: Leaf Link > AgLeader App Keys
  - name: Leaf Link > CNHi App Keys
  - name: Leaf Link > ClimateFieldView App Keys
  - name: Leaf Link > JohnDeere App Keys
  - name: Leaf Link > Trimble App Keys
  - name: Leaf Link > RavenSlingshot App Keys
  - name: Leaf Link > Stara App Keys
  - name: Magic Link > Provider
  - name: Magic Link > Authentication
  - name: Magic Link > File Upload
  - name: Magic Link > With User Creation
  - name: Integrations
  - name: Usage Tracking
paths:
  /api/authenticate:
    post:
      tags:
        - Authentication
      summary: Get Leaf Token
      security: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                username:
                  type: string
                password:
                  type: string
                rememberMe:
                  type: boolean
      responses:
        '200':
          description: Successful authentication
  /api/oauth/john-deere/get-url:
    post:
      tags:
        - Authentication > JohnDeere
      summary: Get John Deere auth URL
      security:
        - bearerAuth: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                clientKey:
                  type: string
                clientSecret:
                  type: string
                clientRedirectUrl:
                  type: string
      responses:
        '200':
          description: Successful response
  /api/oauth/john-deere/get-token:
    post:
      tags:
        - Authentication > JohnDeere
      summary: Get John Deere Tokens
      security:
        - bearerAuth: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                clientKey:
                  type: string
                clientSecret:
                  type: string
                responseUrl:
                  type: string
                clientRedirectUrl:
                  type: string
      responses:
        '200':
          description: Successful response
  /api/oauth/cfv/url:
    post:
      tags:
        - Authentication > ClimateFieldView
      summary: Get CFV auth URL
      security:
        - bearerAuth: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                client_id:
                  type: string
                redirect_uri:
                  type: string
      responses:
        '200':
          description: Successful response
  /api/oauth/cfv/token:
    post:
      tags:
        - Authentication > ClimateFieldView
      summary: Get CFV Tokens
      security:
        - bearerAuth: []
      requestBody:
        required: true
        content:
          application/x-www-form-urlencoded:
            schema:
              type: object
              properties:
                code:
                  type: string
                redirect_uri:
                  type: string
                grant_type:
                  type: string
      responses:
        '200':
          description: Successful response
  /api/oauth/cnhi/get-url:
    post:
      tags:
        - Authentication > CNHi
      summary: Get CNHi auth URL
      security:
        - bearerAuth: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                client_id:
                  type: string
                client_secret:
                  type: string
                client_redirect_url:
                  type: string
                production:
                  type: boolean
      responses:
        '200':
          description: Successful response
  /api/oauth/cnhi/get-token:
    post:
      tags:
        - Authentication > CNHi
      summary: Get CNHi Refresh Token
      security:
        - bearerAuth: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                client_id:
                  type: string
                client_secret:
                  type: string
                client_redirect_url:
                  type: string
                response_url:
                  type: string
                production:
                  type: boolean
      responses:
        '200':
          description: Successful response
  /api/oauth/raven/get-url:
    post:
      tags:
        - Authentication > Raven
      summary: Get Raven auth URL
      security:
        - bearerAuth: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                client_id:
                  type: string
                client_redirect_url:
                  type: string
      responses:
        '200':
          description: Successful response
  /api/oauth/raven/get-token:
    post:
      tags:
        - Authentication > Raven
      summary: Get Raven Token
      security:
        - bearerAuth: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                client_id:
                  type: string
                client_secret:
                  type: string
                redirect_url:
                  type: string
                code:
                  type: string
      responses:
        '200':
          description: Successful response
  /api/oauth/stara/authenticate:
    post:
      tags:
        - Authentication > Stara
      summary: Get Stara API key
      security:
        - bearerAuth: []
      requestBody:
        required: true
        content:
          application/x-www-form-urlencoded:
            schema:
              type: object
              properties:
                user:
                  type: string
                pwd:
                  type: string
      responses:
        '200':
          description: Successful response
  /api/oauth/stara/token:
    post:
      tags:
        - Authentication > Stara
      summary: Get Stara Tokens
      security:
        - bearerAuth: []
      requestBody:
        required: true
        content:
          application/x-www-form-urlencoded:
            schema:
              type: object
              properties:
                accessTokenClient:
                  type: string
                apiKey:
                  type: string
      responses:
        '200':
          description: Successful response
  /api/oauth/trimble/get-url:
    post:
      tags:
        - Authentication > Trimble
      summary: Get Trimble auth URL
      security:
        - bearerAuth: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                application_name:
                  type: string
                client_id:
                  type: string
                client_redirect_url:
                  type: string
      responses:
        '200':
          description: Successful response
  /api/oauth/trimble/get-token:
    post:
      tags:
        - Authentication > Trimble
      summary: Get Trimble Token
      security:
        - bearerAuth: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                client_id:
                  type: string
                redirect_url:
                  type: string
                client_secret:
                  type: string
                code:
                  type: string
      responses:
        '200':
          description: Successful response
  /api/oauth/lindsay/url:
    post:
      tags:
        - Authentication > Lindsay
      summary: Get Lindsay auth URL
      security:
        - bearerAuth: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                clientId:
                  type: string
                redirectUri:
                  type: string
                environment:
                  type: string
      responses:
        '200':
          description: Successful response
  /api/oauth/lindsay/token:
    post:
      tags:
        - Authentication > Lindsay
      summary: Get Lindsay Token
      security:
        - bearerAuth: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                clientId:
                  type: string
                clientSecret:
                  type: string
                redirectUri:
                  type: string
                responseUrl:
                  type: string
                codeVerifier:
                  type: string
                environment:
                  type: string
      responses:
        '200':
          description: Successful response
  /services/usermanagement/api/users/:
    get:
      tags:
        - Leaf Users
      summary: Get all Leaf Users
      security:
        - bearerAuth: []
      parameters:
        - name: page
          in: query
          schema:
            type: integer
        - name: size
          in: query
          schema:
            type: integer
        - name: sort
          in: query
          schema:
            type: string
      responses:
        '200':
          description: Successful response
    post:
      tags:
        - Leaf Users
      summary: Create a Leaf User
      security:
        - bearerAuth: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                name:
                  type: string
                email:
                  type: string
                address:
                  type: object
                phone:
                  type: string
      responses:
        '200':
          description: Successful response
    put:
      tags:
        - Leaf Users
      summary: Update a Leaf User
      security:
        - bearerAuth: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                id:
                  type: string
                name:
                  type: string
                email:
                  type: string
                address:
                  type: object
                phone:
                  type: string
      responses:
        '200':
          description: Successful response
  /services/usermanagement/api/users/{leafUserId}:
    get:
      tags:
        - Leaf Users
      summary: Get a Leaf User
      security:
        - bearerAuth: []
      parameters:
        - name: leafUserId
          in: path
          required: true
          schema:
            type: string
            format: uuid
      responses:
        '200':
          description: Successful response
    delete:
      tags:
        - Leaf Users
      summary: Delete a Leaf User
      security:
        - bearerAuth: []
      parameters:
        - name: leafUserId
          in: path
          required: true
          schema:
            type: string
            format: uuid
      responses:
        '200':
          description: Successful response
  /services/usermanagement/api/users/{leafUserId}/climate-field-view-credentials:
    get:
      tags:
        - Provider Credentials > ClimateFieldView
      summary: Get ClimateFieldView credentials
      security:
        - bearerAuth: []
      parameters:
        - name: leafUserId
          in: path
          required: true
          schema:
            type: string
            format: uuid
      responses:
        '200':
          description: Successful response
    post:
      tags:
        - Provider Credentials > ClimateFieldView
      summary: Add ClimateFieldView credentials
      security:
        - bearerAuth: []
      parameters:
        - name: leafUserId
          in: path
          required: true
          schema:
            type: string
            format: uuid
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
      responses:
        '200':
          description: Successful response
    delete:
      tags:
        - Provider Credentials > ClimateFieldView
      summary: Delete ClimateFieldView credentials
      security:
        - bearerAuth: []
      parameters:
        - name: leafUserId
          in: path
          required: true
          schema:
            type: string
            format: uuid
      responses:
        '200':
          description: Successful response
  /services/usermanagement/api/users/{leafUserId}/climate-field-view-credentials/events:
    get:
      tags:
        - Provider Credentials > ClimateFieldView
      summary: Get ClimateFieldView credential events
      security:
        - bearerAuth: []
      parameters:
        - name: leafUserId
          in: path
          required: true
          schema:
            type: string
            format: uuid
      responses:
        '200':
          description: Successful response
  /services/usermanagement/api/users/{leafUserId}/john-deere-credentials:
    get:
      tags:
        - Provider Credentials > JohnDeere
      summary: Get JohnDeere credentials
      security:
        - bearerAuth: []
      parameters:
        - name: leafUserId
          in: path
          required: true
          schema:
            type: string
            format: uuid
      responses:
        '200':
          description: Successful response
    post:
      tags:
        - Provider Credentials > JohnDeere
      summary: Add JohnDeere credentials
      security:
        - bearerAuth: []
      parameters:
        - name: leafUserId
          in: path
          required: true
          schema:
            type: string
            format: uuid
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
      responses:
        '200':
          description: Successful response
    delete:
      tags:
        - Provider Credentials > JohnDeere
      summary: Delete JohnDeere credentials
      security:
        - bearerAuth: []
      parameters:
        - name: leafUserId
          in: path
          required: true
          schema:
            type: string
            format: uuid
      responses:
        '200':
          description: Successful response
  /services/usermanagement/api/users/{leafUserId}/john-deere-credentials/events:
    get:
      tags:
        - Provider Credentials > JohnDeere
      summary: Get JohnDeere credential events
      security:
        - bearerAuth: []
      parameters:
        - name: leafUserId
          in: path
          required: true
          schema:
            type: string
            format: uuid
      responses:
        '200':
          description: Successful response
  /services/usermanagement/api/users/{leafUserId}/ag-leader-credentials:
    get:
      tags:
        - Provider Credentials > AgLeader
      summary: Get AgLeader credentials
      security:
        - bearerAuth: []
      parameters:
        - name: leafUserId
          in: path
          required: true
          schema:
            type: string
            format: uuid
      responses:
        '200':
          description: Successful response
    post:
      tags:
        - Provider Credentials > AgLeader
      summary: Add AgLeader credentials
      security:
        - bearerAuth: []
      parameters:
        - name: leafUserId
          in: path
          required: true
          schema:
            type: string
            format: uuid
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
      responses:
        '200':
          description: Successful response
    delete:
      tags:
        - Provider Credentials > AgLeader
      summary: Delete AgLeader credentials
      security:
        - bearerAuth: []
      parameters:
        - name: leafUserId
          in: path
          required: true
          schema:
            type: string
            format: uuid
      responses:
        '200':
          description: Successful response
  /services/usermanagement/api/users/{leafUserId}/ag-leader-credentials/events:
    get:
      tags:
        - Provider Credentials > AgLeader
      summary: Get AgLeader credential events
      security:
        - bearerAuth: []
      parameters:
        - name: leafUserId
          in: path
          required: true
          schema:
            type: string
            format: uuid
      responses:
        '200':
          description: Successful response
  /services/usermanagement/api/users/{leafUserId}/agvance-credentials:
    get:
      tags:
        - Provider Credentials > Agvance
      summary: Get Agvance credentials
      security:
        - bearerAuth: []
      parameters:
        - name: leafUserId
          in: path
          required: true
          schema:
            type: string
            format: uuid
      responses:
        '200':
          description: Successful response
    post:
      tags:
        - Provider Credentials > Agvance
      summary: Add Agvance credentials
      security:
        - bearerAuth: []
      parameters:
        - name: leafUserId
          in: path
          required: true
          schema:
            type: string
            format: uuid
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
      responses:
        '200':
          description: Successful response
    delete:
      tags:
        - Provider Credentials > Agvance
      summary: Delete Agvance credentials
      security:
        - bearerAuth: []
      parameters:
        - name: leafUserId
          in: path
          required: true
          schema:
            type: string
            format: uuid
      responses:
        '200':
          description: Successful response
  /services/usermanagement/api/users/{leafUserId}/agvance-credentials/events:
    get:
      tags:
        - Provider Credentials > Agvance
      summary: Get Agvance credential events
      security:
        - bearerAuth: []
      parameters:
        - name: leafUserId
          in: path
          required: true
          schema:
            type: string
            format: uuid
      responses:
        '200':
          description: Successful response
  /services/usermanagement/api/users/{leafUserId}/cnhi-credentials:
    get:
      tags:
        - Provider Credentials > CNHi
      summary: Get CNHi credentials
      security:
        - bearerAuth: []
      parameters:
        - name: leafUserId
          in: path
          required: true
          schema:
            type: string
            format: uuid
      responses:
        '200':
          description: Successful response
    post:
      tags:
        - Provider Credentials > CNHi
      summary: Add CNHi credentials
      security:
        - bearerAuth: []
      parameters:
        - name: leafUserId
          in: path
          required: true
          schema:
            type: string
            format: uuid
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
      responses:
        '200':
          description: Successful response
    delete:
      tags:
        - Provider Credentials > CNHi
      summary: Delete CNHi credentials
      security:
        - bearerAuth: []
      parameters:
        - name: leafUserId
          in: path
          required: true
          schema:
            type: string
            format: uuid
      responses:
        '200':
          description: Successful response
  /services/usermanagement/api/users/{leafUserId}/cnhi-credentials/events:
    get:
      tags:
        - Provider Credentials > CNHi
      summary: Get CNHi credential events
      security:
        - bearerAuth: []
      parameters:
        - name: leafUserId
          in: path
          required: true
          schema:
            type: string
            format: uuid
      responses:
        '200':
          description: Successful response
  /services/usermanagement/api/users/{leafUserId}/lindsay-credentials:
    get:
      tags:
        - Provider Credentials > Lindsay
      summary: Get Lindsay credentials
      security:
        - bearerAuth: []
      parameters:
        - name: leafUserId
          in: path
          required: true
          schema:
            type: string
            format: uuid
      responses:
        '200':
          description: Successful response
    post:
      tags:
        - Provider Credentials > Lindsay
      summary: Add Lindsay credentials
      security:
        - bearerAuth: []
      parameters:
        - name: leafUserId
          in: path
          required: true
          schema:
            type: string
            format: uuid
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
      responses:
        '200':
          description: Successful response
    delete:
      tags:
        - Provider Credentials > Lindsay
      summary: Delete Lindsay credentials
      security:
        - bearerAuth: []
      parameters:
        - name: leafUserId
          in: path
          required: true
          schema:
            type: string
            format: uuid
      responses:
        '200':
          description: Successful response
  /services/usermanagement/api/users/{leafUserId}/lindsay-credentials/events:
    get:
      tags:
        - Provider Credentials > Lindsay
      summary: Get Lindsay credential events
      security:
        - bearerAuth: []
      parameters:
        - name: leafUserId
          in: path
          required: true
          schema:
            type: string
            format: uuid
      responses:
        '200':
          description: Successful response
  /services/usermanagement/api/users/{leafUserId}/raven-credentials:
    get:
      tags:
        - Provider Credentials > Raven
      summary: Get Raven credentials
      security:
        - bearerAuth: []
      parameters:
        - name: leafUserId
          in: path
          required: true
          schema:
            type: string
            format: uuid
      responses:
        '200':
          description: Successful response
    post:
      tags:
        - Provider Credentials > Raven
      summary: Add Raven credentials
      security:
        - bearerAuth: []
      parameters:
        - name: leafUserId
          in: path
          required: true
          schema:
            type: string
            format: uuid
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
      responses:
        '200':
          description: Successful response
    delete:
      tags:
        - Provider Credentials > Raven
      summary: Delete Raven credentials
      security:
        - bearerAuth: []
      parameters:
        - name: leafUserId
          in: path
          required: true
          schema:
            type: string
            format: uuid
      responses:
        '200':
          description: Successful response
  /services/usermanagement/api/users/{leafUserId}/raven-credentials/events:
    get:
      tags:
        - Provider Credentials > Raven
      summary: Get Raven credential events
      security:
        - bearerAuth: []
      parameters:
        - name: leafUserId
          in: path
          required: true
          schema:
            type: string
            format: uuid
      responses:
        '200':
          description: Successful response
  /services/usermanagement/api/users/{leafUserId}/raven-slingshot-credentials:
    get:
      tags:
        - Provider Credentials > RavenSlingshot
      summary: Get RavenSlingshot credentials
      security:
        - bearerAuth: []
      parameters:
        - name: leafUserId
          in: path
          required: true
          schema:
            type: string
            format: uuid
      responses:
        '200':
          description: Successful response
    post:
      tags:
        - Provider Credentials > RavenSlingshot
      summary: Add RavenSlingshot credentials
      security:
        - bearerAuth: []
      parameters:
        - name: leafUserId
          in: path
          required: true
          schema:
            type: string
            format: uuid
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
      responses:
        '200':
          description: Successful response
    delete:
      tags:
        - Provider Credentials > RavenSlingshot
      summary: Delete RavenSlingshot credentials
      security:
        - bearerAuth: []
      parameters:
        - name: leafUserId
          in: path
          required: true
          schema:
            type: string
            format: uuid
      responses:
        '200':
          description: Successful response
  /services/usermanagement/api/users/{leafUserId}/raven-slingshot-credentials/events:
    get:
      tags:
        - Provider Credentials > RavenSlingshot
      summary: Get RavenSlingshot credential events
      security:
        - bearerAuth: []
      parameters:
        - name: leafUserId
          in: path
          required: true
          schema:
            type: string
            format: uuid
      responses:
        '200':
          description: Successful response
  /services/usermanagement/api/users/{leafUserId}/sentera-credentials:
    get:
      tags:
        - Provider Credentials > Sentera
      summary: Get Sentera credentials
      security:
        - bearerAuth: []
      parameters:
        - name: leafUserId
          in: path
          required: true
          schema:
            type: string
            format: uuid
      responses:
        '200':
          description: Successful response
    post:
      tags:
        - Provider Credentials > Sentera
      summary: Add Sentera credentials
      security:
        - bearerAuth: []
      parameters:
        - name: leafUserId
          in: path
          required: true
          schema:
            type: string
            format: uuid
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
      responses:
        '200':
          description: Successful response
    delete:
      tags:
        - Provider Credentials > Sentera
      summary: Delete Sentera credentials
      security:
        - bearerAuth: []
      parameters:
        - name: leafUserId
          in: path
          required: true
          schema:
            type: string
            format: uuid
      responses:
        '200':
          description: Successful response
  /services/usermanagement/api/users/{leafUserId}/sentera-credentials/events:
    get:
      tags:
        - Provider Credentials > Sentera
      summary: Get Sentera credential events
      security:
        - bearerAuth: []
      parameters:
        - name: leafUserId
          in: path
          required: true
          schema:
            type: string
            format: uuid
      responses:
        '200':
          description: Successful response
  /services/usermanagement/api/users/{leafUserId}/stara-credentials:
    get:
      tags:
        - Provider Credentials > Stara
      summary: Get Stara credentials
      security:
        - bearerAuth: []
      parameters:
        - name: leafUserId
          in: path
          required: true
          schema:
            type: string
            format: uuid
      responses:
        '200':
          description: Successful response
    post:
      tags:
        - Provider Credentials > Stara
      summary: Add Stara credentials
      security:
        - bearerAuth: []
      parameters:
        - name: leafUserId
          in: path
          required: true
          schema:
            type: string
            format: uuid
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
      responses:
        '200':
          description: Successful response
    delete:
      tags:
        - Provider Credentials > Stara
      summary: Delete Stara credentials
      security:
        - bearerAuth: []
      parameters:
        - name: leafUserId
          in: path
          required: true
          schema:
            type: string
            format: uuid
      responses:
        '200':
          description: Successful response
  /services/usermanagement/api/users/{leafUserId}/stara-credentials/events:
    get:
      tags:
        - Provider Credentials > Stara
      summary: Get Stara credential events
      security:
        - bearerAuth: []
      parameters:
        - name: leafUserId
          in: path
          required: true
          schema:
            type: string
            format: uuid
      responses:
        '200':
          description: Successful response
  /services/usermanagement/api/users/{leafUserId}/trimble-credentials:
    get:
      tags:
        - Provider Credentials > Trimble
      summary: Get Trimble credentials
      security:
        - bearerAuth: []
      parameters:
        - name: leafUserId
          in: path
          required: true
          schema:
            type: string
            format: uuid
      responses:
        '200':
          description: Successful response
    post:
      tags:
        - Provider Credentials > Trimble
      summary: Add Trimble credentials
      security:
        - bearerAuth: []
      parameters:
        - name: leafUserId
          in: path
          required: true
          schema:
            type: string
            format: uuid
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
      responses:
        '200':
          description: Successful response
    delete:
      tags:
        - Provider Credentials > Trimble
      summary: Delete Trimble credentials
      security:
        - bearerAuth: []
      parameters:
        - name: leafUserId
          in: path
          required: true
          schema:
            type: string
            format: uuid
      responses:
        '200':
          description: Successful response
  /services/usermanagement/api/users/{leafUserId}/trimble-credentials/events:
    get:
      tags:
        - Provider Credentials > Trimble
      summary: Get Trimble credential events
      security:
        - bearerAuth: []
      parameters:
        - name: leafUserId
          in: path
          required: true
          schema:
            type: string
            format: uuid
      responses:
        '200':
          description: Successful response
  /services/usermanagement/api/users/{leafUserId}/valley-credentials:
    get:
      tags:
        - Provider Credentials > Valley
      summary: Get Valley credentials
      security:
        - bearerAuth: []
      parameters:
        - name: leafUserId
          in: path
          required: true
          schema:
            type: string
            format: uuid
      responses:
        '200':
          description: Successful response
    post:
      tags:
        - Provider Credentials > Valley
      summary: Add Valley credentials
      security:
        - bearerAuth: []
      parameters:
        - name: leafUserId
          in: path
          required: true
          schema:
            type: string
            format: uuid
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
      responses:
        '200':
          description: Successful response
    delete:
      tags:
        - Provider Credentials > Valley
      summary: Delete Valley credentials
      security:
        - bearerAuth: []
      parameters:
        - name: leafUserId
          in: path
          required: true
          schema:
            type: string
            format: uuid
      responses:
        '200':
          description: Successful response
  /services/usermanagement/api/users/{leafUserId}/valley-credentials/events:
    get:
      tags:
        - Provider Credentials > Valley
      summary: Get Valley credential events
      security:
        - bearerAuth: []
      parameters:
        - name: leafUserId
          in: path
          required: true
          schema:
            type: string
            format: uuid
      responses:
        '200':
          description: Successful response
  /services/usermanagement/api/users/{leafUserId}/agrimatics-credentials:
    get:
      tags:
        - Provider Credentials > Agrimatics
      summary: Get Agrimatics credentials
      security:
        - bearerAuth: []
      parameters:
        - name: leafUserId
          in: path
          required: true
          schema:
            type: string
            format: uuid
      responses:
        '200':
          description: Successful response
    post:
      tags:
        - Provider Credentials > Agrimatics
      summary: Add Agrimatics credentials
      security:
        - bearerAuth: []
      parameters:
        - name: leafUserId
          in: path
          required: true
          schema:
            type: string
            format: uuid
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
      responses:
        '200':
          description: Successful response
    delete:
      tags:
        - Provider Credentials > Agrimatics
      summary: Delete Agrimatics credentials
      security:
        - bearerAuth: []
      parameters:
        - name: leafUserId
          in: path
          required: true
          schema:
            type: string
            format: uuid
      responses:
        '200':
          description: Successful response
  /services/usermanagement/api/users/{leafUserId}/agrimatics-credentials/events:
    get:
      tags:
        - Provider Credentials > Agrimatics
      summary: Get Agrimatics credential events
      security:
        - bearerAuth: []
      parameters:
        - name: leafUserId
          in: path
          required: true
          schema:
            type: string
            format: uuid
      responses:
        '200':
          description: Successful response
  /services/usermanagement/api/users/{leafUserId}/organizations/JohnDeere:
    get:
      tags:
        - Provider Credentials > Organizations
      summary: Get John Deere Organizations List
      security:
        - bearerAuth: []
      parameters:
        - name: leafUserId
          in: path
          required: true
          schema:
            type: string
            format: uuid
      responses:
        '200':
          description: Successful response
  /services/usermanagement/api/users/{leafUserId}/organizations/Trimble:
    get:
      tags:
        - Provider Credentials > Organizations
      summary: Get Trimble Organizations List
      security:
        - bearerAuth: []
      parameters:
        - name: leafUserId
          in: path
          required: true
          schema:
            type: string
            format: uuid
      responses:
        '200':
          description: Successful response
  /services/config/api/configs/{leafUserId}:
    get:
      tags:
        - Configurations
      summary: Get leaf user config
      operationId: getLeafUserConfig
      security:
        - bearerAuth: []
      parameters:
        - name: leafUserId
          in: path
          required: true
          schema:
            type: string
      responses:
        '200':
          description: Successful response
    post:
      tags:
        - Configurations
      summary: Create leaf user config
      operationId: createLeafUserConfig
      security:
        - bearerAuth: []
      parameters:
        - name: leafUserId
          in: path
          required: true
          schema:
            type: string
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                operationsImageCreation:
                  type: boolean
                geoimagesResolution:
                  type: number
                geoimagesShape:
                  type: string
                geoimagesProjection:
                  type: string
                geoimagesColorRamp:
                  type: object
                fieldsAutoSync:
                  type: boolean
      responses:
        '201':
          description: Config created
    patch:
      tags:
        - Configurations
      summary: Update leaf user config
      operationId: updateLeafUserConfig
      security:
        - bearerAuth: []
      parameters:
        - name: leafUserId
          in: path
          required: true
          schema:
            type: string
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                operationsImageCreation:
                  type: boolean
                geoimagesResolution:
                  type: number
                geoimagesShape:
                  type: string
                geoimagesProjection:
                  type: string
                geoimagesColorRamp:
                  type: object
                fieldsAutoSync:
                  type: boolean
      responses:
        '200':
          description: Config updated
    delete:
      tags:
        - Configurations
      summary: Delete leaf user config
      operationId: deleteLeafUserConfig
      security:
        - bearerAuth: []
      parameters:
        - name: leafUserId
          in: path
          required: true
          schema:
            type: string
      responses:
        '204':
          description: Config deleted
  /services/config/api/configs:
    get:
      tags:
        - Configurations
      summary: Get default config
      operationId: getDefaultConfig
      security:
        - bearerAuth: []
      responses:
        '200':
          description: Successful response
    patch:
      tags:
        - Configurations
      summary: Update default config
      operationId: updateDefaultConfig
      security:
        - bearerAuth: []
      responses:
        '200':
          description: Config updated
  /services/alerts/api/alerts/webhooks:
    post:
      tags:
        - Alerts
      summary: Register a webhook
      operationId: registerWebhook
      security:
        - bearerAuth: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                name:
                  type: string
                url:
                  type: string
                secret:
                  type: string
                events:
                  type: array
                  items:
                    type: string
      responses:
        '201':
          description: Webhook registered
    get:
      tags:
        - Alerts
      summary: Get all webhooks
      operationId: getAllWebhooks
      security:
        - bearerAuth: []
      responses:
        '200':
          description: Successful response
  /services/alerts/api/alerts/webhooks/{webhookId}:
    get:
      tags:
        - Alerts
      summary: Get a webhook
      operationId: getWebhook
      security:
        - bearerAuth: []
      parameters:
        - name: webhookId
          in: path
          required: true
          schema:
            type: string
      responses:
        '200':
          description: Successful response
    delete:
      tags:
        - Alerts
      summary: Delete a webhook
      operationId: deleteWebhook
      security:
        - bearerAuth: []
      parameters:
        - name: webhookId
          in: path
          required: true
          schema:
            type: string
      responses:
        '204':
          description: Webhook deleted
  /services/uploadservice/api/upload:
    post:
      tags:
        - Field Uploads
      summary: Upload a field file
      operationId: uploadFieldFile
      security:
        - bearerAuth: []
      parameters:
        - name: leafUserId
          in: query
          required: true
          schema:
            type: string
      requestBody:
        required: true
        content:
          multipart/form-data:
            schema:
              type: object
              properties:
                file:
                  type: string
                  format: binary
      responses:
        '201':
          description: File uploaded
    get:
      tags:
        - Field Uploads
      summary: Get all uploads
      operationId: getAllUploads
      security:
        - bearerAuth: []
      responses:
        '200':
          description: Successful response
  /services/uploadservice/api/upload/{uploadId}:
    get:
      tags:
        - Field Uploads
      summary: Get an upload
      operationId: getUpload
      security:
        - bearerAuth: []
      parameters:
        - name: uploadId
          in: path
          required: true
          schema:
            type: string
      responses:
        '200':
          description: Successful response
  /services/uploadservice/api/upload/{uploadId}/entries:
    get:
      tags:
        - Field Uploads
      summary: Get upload entries
      operationId: getUploadEntries
      security:
        - bearerAuth: []
      parameters:
        - name: uploadId
          in: path
          required: true
          schema:
            type: string
      responses:
        '200':
          description: Successful response
  /services/fields/api/fields:
    get:
      tags:
        - Fields
      summary: Get all fields
      operationId: getAllFields
      security:
        - bearerAuth: []
      parameters:
        - name: leafUserId
          in: query
          schema:
            type: string
        - name: provider
          in: query
          schema:
            type: string
        - name: type
          in: query
          schema:
            type: string
        - name: beforeCreatedTime
          in: query
          schema:
            type: string
            format: date-time
        - name: afterCreatedTime
          in: query
          schema:
            type: string
            format: date-time
        - name: beforeUpdatedTime
          in: query
          schema:
            type: string
            format: date-time
        - name: afterUpdatedTime
          in: query
          schema:
            type: string
            format: date-time
        - name: farmId
          in: query
          schema:
            type: string
      responses:
        '200':
          description: Successful response
  /services/fields/api/users/{leafUserId}/fields/{fieldId}:
    get:
      tags:
        - Fields
      summary: Get a field
      operationId: getField
      security:
        - bearerAuth: []
      parameters:
        - name: leafUserId
          in: path
          required: true
          schema:
            type: string
        - name: fieldId
          in: path
          required: true
          schema:
            type: string
      responses:
        '200':
          description: Successful response
    delete:
      tags:
        - Fields
      summary: Delete a field
      operationId: deleteField
      security:
        - bearerAuth: []
      parameters:
        - name: leafUserId
          in: path
          required: true
          schema:
            type: string
        - name: fieldId
          in: path
          required: true
          schema:
            type: string
      responses:
        '204':
          description: Field deleted
    patch:
      tags:
        - Fields
      summary: Update a field
      operationId: updateField
      security:
        - bearerAuth: []
      parameters:
        - name: leafUserId
          in: path
          required: true
          schema:
            type: string
        - name: fieldId
          in: path
          required: true
          schema:
            type: string
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                name:
                  type: string
                farmId:
                  type: string
                geometry:
                  type: object
      responses:
        '200':
          description: Field updated
  /services/fields/api/users/{leafUserId}/fields:
    post:
      tags:
        - Fields
      summary: Create a field
      operationId: createField
      security:
        - bearerAuth: []
      parameters:
        - name: leafUserId
          in: path
          required: true
          schema:
            type: string
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                geometry:
                  type: object
                  properties:
                    type:
                      type: string
                      example: MultiPolygon
                    coordinates:
                      type: array
                      items:
                        type: array
      responses:
        '201':
          description: Field created
  /services/fields/api/users/{leafUserId}/fields/{fieldId}/integration/{providerName}:
    post:
      tags:
        - Fields
      summary: Upload field to provider
      operationId: uploadFieldToProvider
      security:
        - bearerAuth: []
      parameters:
        - name: leafUserId
          in: path
          required: true
          schema:
            type: string
        - name: fieldId
          in: path
          required: true
          schema:
            type: string
        - name: providerName
          in: path
          required: true
          schema:
            type: string
        - name: organizationId
          in: query
          schema:
            type: string
      responses:
        '200':
          description: Field uploaded to provider
  /services/fields/api/fields/query/intersects:
    post:
      tags:
        - Fields
      summary: Get fields by geometry
      operationId: getFieldsByGeometry
      security:
        - bearerAuth: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                geometry:
                  type: object
                  properties:
                    type:
                      type: string
                      example: MultiPolygon
                    coordinates:
                      type: array
                      items:
                        type: array
      responses:
        '200':
          description: Successful response
  /services/fields/api/users/{leafUserId}/fields/intersect:
    post:
      tags:
        - Fields
      summary: Get intersection of fields
      operationId: getFieldsIntersection
      security:
        - bearerAuth: []
      parameters:
        - name: leafUserId
          in: path
          required: true
          schema:
            type: string
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: array
              items:
                type: string
      responses:
        '200':
          description: Successful response
  /services/fields/api/users/{leafUserId}/fields/{fieldId}/boundaries:
    get:
      tags:
        - Boundaries
      summary: Get all boundaries
      operationId: getAllBoundaries
      security:
        - bearerAuth: []
      parameters:
        - name: leafUserId
          in: path
          required: true
          schema:
            type: string
        - name: fieldId
          in: path
          required: true
          schema:
            type: string
      responses:
        '200':
          description: Successful response
  /services/fields/api/users/{leafUserId}/fields/{fieldId}/boundaries/{boundaryId}:
    get:
      tags:
        - Boundaries
      summary: Get a boundary
      operationId: getBoundary
      security:
        - bearerAuth: []
      parameters:
        - name: leafUserId
          in: path
          required: true
          schema:
            type: string
        - name: fieldId
          in: path
          required: true
          schema:
            type: string
        - name: boundaryId
          in: path
          required: true
          schema:
            type: string
      responses:
        '200':
          description: Successful response
  /services/fields/api/users/{leafUserId}/fields/{fieldId}/boundary:
    get:
      tags:
        - Boundaries
      summary: Get active boundary
      operationId: getActiveBoundary
      security:
        - bearerAuth: []
      parameters:
        - name: leafUserId
          in: path
          required: true
          schema:
            type: string
        - name: fieldId
          in: path
          required: true
          schema:
            type: string
      responses:
        '200':
          description: Successful response
    put:
      tags:
        - Boundaries
      summary: Update active boundary
      operationId: updateActiveBoundary
      security:
        - bearerAuth: []
      parameters:
        - name: leafUserId
          in: path
          required: true
          schema:
            type: string
        - name: fieldId
          in: path
          required: true
          schema:
            type: string
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                geometry:
                  type: object
                  properties:
                    type:
                      type: string
                      example: MultiPolygon
                    coordinates:
                      type: array
                      items:
                        type: array
      responses:
        '200':
          description: Boundary updated
  /services/fields/api/farms:
    get:
      tags:
        - Farms
      summary: Get all farms
      operationId: getAllFarms
      security:
        - bearerAuth: []
      parameters:
        - name: leafUserId
          in: query
          schema:
            type: string
        - name: growerId
          in: query
          schema:
            type: string
        - name: provider
          in: query
          schema:
            type: string
        - name: page
          in: query
          schema:
            type: integer
        - name: size
          in: query
          schema:
            type: integer
      responses:
        '200':
          description: Successful response
  /services/fields/api/users/{leafUserId}/farms/{farmId}:
    get:
      tags:
        - Farms
      summary: Get a farm
      operationId: getFarm
      security:
        - bearerAuth: []
      parameters:
        - name: leafUserId
          in: path
          required: true
          schema:
            type: string
        - name: farmId
          in: path
          required: true
          schema:
            type: string
      responses:
        '200':
          description: Successful response
    put:
      tags:
        - Farms
      summary: Update a farm
      operationId: updateFarm
      security:
        - bearerAuth: []
      parameters:
        - name: leafUserId
          in: path
          required: true
          schema:
            type: string
        - name: farmId
          in: path
          required: true
          schema:
            type: string
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                name:
                  type: string
                growerId:
                  type: string
      responses:
        '200':
          description: Farm updated
  /services/fields/api/users/{leafUserId}/farms:
    post:
      tags:
        - Farms
      summary: Create a farm
      operationId: createFarm
      security:
        - bearerAuth: []
      parameters:
        - name: leafUserId
          in: path
          required: true
          schema:
            type: string
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                name:
                  type: string
                growerId:
                  type: string
      responses:
        '201':
          description: Farm created
  /services/fields/api/growers:
    get:
      tags:
        - Growers
      summary: Get all growers
      operationId: getAllGrowers
      security:
        - bearerAuth: []
      parameters:
        - name: leafUserId
          in: query
          schema:
            type: string
        - name: page
          in: query
          schema:
            type: integer
        - name: size
          in: query
          schema:
            type: integer
      responses:
        '200':
          description: Successful response
  /services/fields/api/growers/{growerId}:
    get:
      tags:
        - Growers
      summary: Get a grower
      operationId: getGrower
      security:
        - bearerAuth: []
      parameters:
        - name: growerId
          in: path
          required: true
          schema:
            type: string
      responses:
        '200':
          description: Successful response
  /services/fields/api/users/{leafUserId}/growers:
    post:
      tags:
        - Growers
      summary: Create a grower
      operationId: createGrower
      security:
        - bearerAuth: []
      parameters:
        - name: leafUserId
          in: path
          required: true
          schema:
            type: string
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                name:
                  type: string
      responses:
        '201':
          description: Grower created
  /services/fields/api/users/{leafUserId}/growers/{growerId}:
    put:
      tags:
        - Growers
      summary: Update a grower
      operationId: updateGrower
      security:
        - bearerAuth: []
      parameters:
        - name: leafUserId
          in: path
          required: true
          schema:
            type: string
        - name: growerId
          in: path
          required: true
          schema:
            type: string
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                name:
                  type: string
      responses:
        '200':
          description: Grower updated
  /services/fields/api/growers/enableSync:
    post:
      tags:
        - Growers
      summary: Enable preview fields by grower
      operationId: enableSyncByGrower
      security:
        - bearerAuth: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                growerIds:
                  type: array
                  items:
                    type: string
      responses:
        '200':
          description: Sync enabled
  /services/fields/api/users/{leafUserId}/fields/{fieldId}/operations/{fileId}:
    get:
      tags:
        - Field Operations
      summary: Get an operation of a field
      operationId: getFieldOperation
      security:
        - bearerAuth: []
      parameters:
        - name: leafUserId
          in: path
          required: true
          schema:
            type: string
        - name: fieldId
          in: path
          required: true
          schema:
            type: string
        - name: fileId
          in: path
          required: true
          schema:
            type: string
      responses:
        '200':
          description: Successful response
  /services/fields/api/users/{leafUserId}/fields/{fieldId}/operations:
    get:
      tags:
        - Field Operations
      summary: Get all operations of a field
      operationId: getAllFieldOperations
      security:
        - bearerAuth: []
      parameters:
        - name: leafUserId
          in: path
          required: true
          schema:
            type: string
        - name: fieldId
          in: path
          required: true
          schema:
            type: string
        - name: origin
          in: query
          schema:
            type: string
        - name: operationType
          in: query
          schema:
            type: string
        - name: operationCrop
          in: query
          schema:
            type: string
        - name: operationProvider
          in: query
          schema:
            type: string
        - name: operationStartTime
          in: query
          schema:
            type: string
            format: date-time
        - name: operationEndTime
          in: query
          schema:
            type: string
            format: date-time
        - name: organizationId
          in: query
          schema:
            type: string
        - name: page
          in: query
          schema:
            type: integer
        - name: size
          in: query
          schema:
            type: integer
        - name: sort
          in: query
          schema:
            type: string
      responses:
        '200':
          description: Successful response
  /services/operations/api/files:
    get:
      tags:
        - Machine File Conversion
      summary: Get all files
      operationId: getAllFiles
      security:
        - bearerAuth: []
      parameters:
        - name: leafUserId
          in: query
          schema:
            type: string
        - name: provider
          in: query
          schema:
            type: string
        - name: origin
          in: query
          schema:
            type: string
        - name: status
          in: query
          schema:
            type: string
        - name: createdTime
          in: query
          schema:
            type: string
            format: date-time
        - name: startTime
          in: query
          schema:
            type: string
            format: date-time
        - name: endTime
          in: query
          schema:
            type: string
            format: date-time
        - name: operationType
          in: query
          schema:
            type: string
        - name: minArea
          in: query
          schema:
            type: number
        - name: organizationId
          in: query
          schema:
            type: string
        - name: size
          in: query
          schema:
            type: integer
        - name: page
          in: query
          schema:
            type: integer
        - name: batchId
          in: query
          schema:
            type: string
      responses:
        '200':
          description: Successful response
  /services/operations/api/files/{fileId}:
    get:
      tags:
        - Machine File Conversion
      summary: Get a file
      operationId: getFile
      security:
        - bearerAuth: []
      parameters:
        - name: fileId
          in: path
          required: true
          schema:
            type: string
      responses:
        '200':
          description: Successful response
  /services/operations/api/files/{fileId}/images:
    get:
      tags:
        - Machine File Conversion
      summary: Get file images
      operationId: getFileImages
      security:
        - bearerAuth: []
      parameters:
        - name: fileId
          in: path
          required: true
          schema:
            type: string
      responses:
        '200':
          description: Successful response
  /services/operations/api/files/{fileId}/summary:
    get:
      tags:
        - Machine File Conversion
      summary: Get file summary
      operationId: getFileSummary
      security:
        - bearerAuth: []
      parameters:
        - name: fileId
          in: path
          required: true
          schema:
            type: string
      responses:
        '200':
          description: Successful response
  /services/operations/api/files/{fileId}/units:
    get:
      tags:
        - Machine File Conversion
      summary: Get file units
      operationId: getFileUnits
      security:
        - bearerAuth: []
      parameters:
        - name: fileId
          in: path
          required: true
          schema:
            type: string
      responses:
        '200':
          description: Successful response
  /services/operations/api/files/{fileId}/status:
    get:
      tags:
        - Machine File Conversion
      summary: Get file status
      operationId: getFileStatus
      security:
        - bearerAuth: []
      parameters:
        - name: fileId
          in: path
          required: true
          schema:
            type: string
      responses:
        '200':
          description: Successful response
  /services/operations/api/files/uncoveredFiles:
    get:
      tags:
        - Machine File Conversion
      summary: Get uncovered files
      operationId: getUncoveredFiles
      security:
        - bearerAuth: []
      parameters:
        - name: leafUserId
          in: query
          schema:
            type: string
      responses:
        '200':
          description: Successful response
  /services/operations/api/batch:
    post:
      tags:
        - Machine File Conversion
      summary: Upload operation file
      operationId: uploadOperationFile
      security:
        - bearerAuth: []
      parameters:
        - name: leafUserId
          in: query
          required: true
          schema:
            type: string
        - name: provider
          in: query
          schema:
            type: string
      requestBody:
        required: true
        content:
          multipart/form-data:
            schema:
              type: object
              properties:
                file:
                  type: string
                  format: binary
      responses:
        '201':
          description: File uploaded
    get:
      tags:
        - Machine File Conversion
      summary: Get all batches
      operationId: getAllBatches
      security:
        - bearerAuth: []
      responses:
        '200':
          description: Successful response
  /services/operations/api/batch/{batchId}:
    get:
      tags:
        - Machine File Conversion
      summary: Get batch
      operationId: getBatch
      security:
        - bearerAuth: []
      parameters:
        - name: batchId
          in: path
          required: true
          schema:
            type: string
      responses:
        '200':
          description: Successful response
  /services/operations/api/batch/{batchId}/status:
    get:
      tags:
        - Machine File Conversion
      summary: Get batch files status
      operationId: getBatchFilesStatus
      security:
        - bearerAuth: []
      parameters:
        - name: batchId
          in: path
          required: true
          schema:
            type: string
      responses:
        '200':
          description: Successful response
  /services/operations/api/files/merge:
    post:
      tags:
        - Machine File Conversion
      summary: Merge operation files
      operationId: mergeOperationFiles
      security:
        - bearerAuth: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                ids:
                  type: array
                  items:
                    type: string
      responses:
        '200':
          description: Files merged
  /services/operations/api/operations:
    get:
      tags:
        - Operations
      summary: Get all operations
      operationId: getAllOperations
      security:
        - bearerAuth: []
      parameters:
        - name: leafUserId
          in: query
          schema:
            type: string
        - name: provider
          in: query
          schema:
            type: string
        - name: fieldId
          in: query
          schema:
            type: string
        - name: updatedTime
          in: query
          schema:
            type: string
            format: date-time
        - name: startTime
          in: query
          schema:
            type: string
            format: date-time
        - name: endTime
          in: query
          schema:
            type: string
            format: date-time
        - name: operationType
          in: query
          schema:
            type: string
        - name: size
          in: query
          schema:
            type: integer
        - name: page
          in: query
          schema:
            type: integer
      responses:
        '200':
          description: Successful response
  /services/operations/api/operations/{operationId}:
    get:
      tags:
        - Operations
      summary: Get an operation
      operationId: getOperation
      security:
        - bearerAuth: []
      parameters:
        - name: operationId
          in: path
          required: true
          schema:
            type: string
      responses:
        '200':
          description: Successful response
  /services/operations/api/operations/{operationId}/summary:
    get:
      tags:
        - Operations
      summary: Get operation summary
      operationId: getOperationSummary
      security:
        - bearerAuth: []
      parameters:
        - name: operationId
          in: path
          required: true
          schema:
            type: string
      responses:
        '200':
          description: Successful response
  /services/operations/api/operations/{operationId}/filteredGeojson:
    get:
      tags:
        - Operations
      summary: Get filtered GeoJSON
      operationId: getFilteredGeojson
      security:
        - bearerAuth: []
      parameters:
        - name: operationId
          in: path
          required: true
          schema:
            type: string
      responses:
        '200':
          description: Successful response
  /services/operations/api/operations/{operationId}/standardGeojson:
    get:
      tags:
        - Operations
      summary: Get standard GeoJSON
      operationId: getStandardGeojson
      security:
        - bearerAuth: []
      parameters:
        - name: operationId
          in: path
          required: true
          schema:
            type: string
      responses:
        '200':
          description: Successful response
  /services/operations/api/operations/{operationId}/images:
    get:
      tags:
        - Operations
      summary: Get operation images
      operationId: getOperationImages
      security:
        - bearerAuth: []
      parameters:
        - name: operationId
          in: path
          required: true
          schema:
            type: string
      responses:
        '200':
          description: Successful response
  /services/operations/api/operations/{operationId}/imagesV2:
    get:
      tags:
        - Operations
      summary: Get operation images v2
      operationId: getOperationImagesV2
      security:
        - bearerAuth: []
      parameters:
        - name: operationId
          in: path
          required: true
          schema:
            type: string
      responses:
        '200':
          description: Successful response
  /services/operations/api/operations/{operationId}/geotiffImages:
    get:
      tags:
        - Operations
      summary: Get operation geotiff images
      operationId: getOperationGeotiffImages
      security:
        - bearerAuth: []
      parameters:
        - name: operationId
          in: path
          required: true
          schema:
            type: string
      responses:
        '200':
          description: Successful response
  /services/operations/api/operations/{operationId}/units:
    get:
      tags:
        - Operations
      summary: Get operation units
      operationId: getOperationUnits
      security:
        - bearerAuth: []
      parameters:
        - name: operationId
          in: path
          required: true
          schema:
            type: string
      responses:
        '200':
          description: Successful response
  /services/operations/api/operations/{operationId}/reprocess:
    post:
      tags:
        - Operations
      summary: Reprocess an operation
      operationId: reprocessOperation
      security:
        - bearerAuth: []
      parameters:
        - name: operationId
          in: path
          required: true
          schema:
            type: string
      responses:
        '200':
          description: Operation reprocessed
  /services/operations/api/operations/CropOperationByField:
    post:
      tags:
        - Operations
      summary: Crop operation by field
      operationId: cropOperationByField
      security:
        - bearerAuth: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                id:
                  type: string
      responses:
        '200':
          description: Operation cropped
  /services/satellite/api/fields:
    get:
      tags:
        - Crop Monitoring
      summary: Get all satellite fields
      operationId: getAllSatelliteFields
      security:
        - bearerAuth: []
      parameters:
        - name: page
          in: query
          schema:
            type: integer
        - name: size
          in: query
          schema:
            type: integer
        - name: sort
          in: query
          schema:
            type: string
      responses:
        '200':
          description: OK
    post:
      tags:
        - Crop Monitoring
      summary: Create a satellite field
      operationId: createSatelliteField
      security:
        - bearerAuth: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                assetTypes:
                  type: array
                  items:
                    type: string
                externalId:
                  type: string
                daysBefore:
                  type: integer
                geometry:
                  type: object
                providers:
                  type: array
                  items:
                    type: string
      responses:
        '201':
          description: Created
  /services/satellite/api/fields/{externalId}:
    get:
      tags:
        - Crop Monitoring
      summary: Get a satellite field
      operationId: getSatelliteField
      security:
        - bearerAuth: []
      parameters:
        - name: externalId
          in: path
          required: true
          schema:
            type: string
      responses:
        '200':
          description: OK
    delete:
      tags:
        - Crop Monitoring
      summary: Delete a satellite field
      operationId: deleteSatelliteField
      security:
        - bearerAuth: []
      parameters:
        - name: externalId
          in: path
          required: true
          schema:
            type: string
      responses:
        '204':
          description: No Content
  /services/satellite/api/fields/{externalId}/processes:
    get:
      tags:
        - Crop Monitoring
      summary: Get satellite images
      operationId: getSatelliteImages
      security:
        - bearerAuth: []
      parameters:
        - name: externalId
          in: path
          required: true
          schema:
            type: string
        - name: endDate
          in: query
          schema:
            type: string
        - name: endProcessedTimestamp
          in: query
          schema:
            type: string
        - name: maxClouds
          in: query
          schema:
            type: number
        - name: minCoverage
          in: query
          schema:
            type: number
        - name: status
          in: query
          schema:
            type: string
        - name: page
          in: query
          schema:
            type: integer
        - name: provider
          in: query
          schema:
            type: string
        - name: size
          in: query
          schema:
            type: integer
        - name: sort
          in: query
          schema:
            type: string
      responses:
        '200':
          description: OK
  /services/satellite/api/fields/{externalId}/processes/{processId}:
    get:
      tags:
        - Crop Monitoring
      summary: Get a satellite image
      operationId: getSatelliteImage
      security:
        - bearerAuth: []
      parameters:
        - name: externalId
          in: path
          required: true
          schema:
            type: string
        - name: processId
          in: path
          required: true
          schema:
            type: string
      responses:
        '200':
          description: OK
  /services/satellite/api/fields/{externalId}/subscription:
    get:
      tags:
        - Crop Monitoring
      summary: Get Planet subscription
      operationId: getPlanetSubscription
      security:
        - bearerAuth: []
      parameters:
        - name: externalId
          in: path
          required: true
          schema:
            type: string
      responses:
        '200':
          description: OK
  /services/satellite/api/fields/{externalId}/processes/{processId}/reprocess:
    post:
      tags:
        - Crop Monitoring
      summary: Reprocess satellite images
      operationId: reprocessSatelliteImages
      security:
        - bearerAuth: []
      parameters:
        - name: externalId
          in: path
          required: true
          schema:
            type: string
        - name: processId
          in: path
          required: true
          schema:
            type: string
      responses:
        '200':
          description: OK
  /services/weather/api/users/{leafUserId}/weather/forecast/field/{fieldId}/daily:
    get:
      tags:
        - Weather
      summary: Daily forecast by field
      operationId: getDailyForecastByField
      security:
        - bearerAuth: []
      parameters:
        - name: leafUserId
          in: path
          required: true
          schema:
            type: string
        - name: fieldId
          in: path
          required: true
          schema:
            type: string
        - name: endTime
          in: query
          schema:
            type: string
        - name: startTime
          in: query
          schema:
            type: string
        - name: model
          in: query
          schema:
            type: string
        - name: units
          in: query
          schema:
            type: string
      responses:
        '200':
          description: OK
  /services/weather/api/users/{leafUserId}/weather/forecast/field/{fieldId}/hourly:
    get:
      tags:
        - Weather
      summary: Hourly forecast by field
      operationId: getHourlyForecastByField
      security:
        - bearerAuth: []
      parameters:
        - name: leafUserId
          in: path
          required: true
          schema:
            type: string
        - name: fieldId
          in: path
          required: true
          schema:
            type: string
        - name: endTime
          in: query
          schema:
            type: string
        - name: startTime
          in: query
          schema:
            type: string
        - name: model
          in: query
          schema:
            type: string
        - name: units
          in: query
          schema:
            type: string
      responses:
        '200':
          description: OK
  /services/weather/api/weather/forecast/daily/{lat},{lon}:
    get:
      tags:
        - Weather
      summary: Daily forecast by lat/lon
      operationId: getDailyForecastByLatLon
      security:
        - bearerAuth: []
      parameters:
        - name: lat
          in: path
          required: true
          schema:
            type: number
        - name: lon
          in: path
          required: true
          schema:
            type: number
        - name: endTime
          in: query
          schema:
            type: string
        - name: startTime
          in: query
          schema:
            type: string
        - name: model
          in: query
          schema:
            type: string
        - name: units
          in: query
          schema:
            type: string
      responses:
        '200':
          description: OK
  /services/weather/api/weather/forecast/hourly/{lat},{lon}:
    get:
      tags:
        - Weather
      summary: Hourly forecast by lat/lon
      operationId: getHourlyForecastByLatLon
      security:
        - bearerAuth: []
      parameters:
        - name: lat
          in: path
          required: true
          schema:
            type: number
        - name: lon
          in: path
          required: true
          schema:
            type: number
        - name: endTime
          in: query
          schema:
            type: string
        - name: startTime
          in: query
          schema:
            type: string
        - name: model
          in: query
          schema:
            type: string
        - name: units
          in: query
          schema:
            type: string
      responses:
        '200':
          description: OK
  /services/weather/api/users/{leafUserId}/weather/historical/field/{fieldId}/daily:
    get:
      tags:
        - Weather
      summary: Daily historical by field
      operationId: getDailyHistoricalByField
      security:
        - bearerAuth: []
      parameters:
        - name: leafUserId
          in: path
          required: true
          schema:
            type: string
        - name: fieldId
          in: path
          required: true
          schema:
            type: string
        - name: endTime
          in: query
          schema:
            type: string
        - name: startTime
          in: query
          schema:
            type: string
        - name: model
          in: query
          schema:
            type: string
        - name: units
          in: query
          schema:
            type: string
      responses:
        '200':
          description: OK
  /services/weather/api/users/{leafUserId}/weather/historical/field/{fieldId}/hourly:
    get:
      tags:
        - Weather
      summary: Hourly historical by field
      operationId: getHourlyHistoricalByField
      security:
        - bearerAuth: []
      parameters:
        - name: leafUserId
          in: path
          required: true
          schema:
            type: string
        - name: fieldId
          in: path
          required: true
          schema:
            type: string
        - name: endTime
          in: query
          schema:
            type: string
        - name: startTime
          in: query
          schema:
            type: string
        - name: model
          in: query
          schema:
            type: string
        - name: units
          in: query
          schema:
            type: string
      responses:
        '200':
          description: OK
  /services/weather/api/weather/historical/daily/{lat},{lon}:
    get:
      tags:
        - Weather
      summary: Daily historical by lat/lon
      operationId: getDailyHistoricalByLatLon
      security:
        - bearerAuth: []
      parameters:
        - name: lat
          in: path
          required: true
          schema:
            type: number
        - name: lon
          in: path
          required: true
          schema:
            type: number
        - name: endTime
          in: query
          schema:
            type: string
        - name: startTime
          in: query
          schema:
            type: string
        - name: model
          in: query
          schema:
            type: string
        - name: units
          in: query
          schema:
            type: string
      responses:
        '200':
          description: OK
  /services/weather/api/weather/historical/hourly/{lat},{lon}:
    get:
      tags:
        - Weather
      summary: Hourly historical by lat/lon
      operationId: getHourlyHistoricalByLatLon
      security:
        - bearerAuth: []
      parameters:
        - name: lat
          in: path
          required: true
          schema:
            type: number
        - name: lon
          in: path
          required: true
          schema:
            type: number
        - name: endTime
          in: query
          schema:
            type: string
        - name: startTime
          in: query
          schema:
            type: string
        - name: model
          in: query
          schema:
            type: string
        - name: units
          in: query
          schema:
            type: string
      responses:
        '200':
          description: OK
  /services/irrigation/api/users/{leafUserId}/irrigation-equipment/:
    get:
      tags:
        - Irrigation
      summary: Get all irrigation equipment
      operationId: getAllIrrigationEquipment
      security:
        - bearerAuth: []
      parameters:
        - name: leafUserId
          in: path
          required: true
          schema:
            type: string
        - name: providerEquipmentId
          in: query
          schema:
            type: string
        - name: provider
          in: query
          schema:
            type: string
      responses:
        '200':
          description: OK
  /services/irrigation/api/users/{leafUserId}/irrigation-equipment/{equipmentId}:
    get:
      tags:
        - Irrigation
      summary: Get an irrigation equipment
      operationId: getIrrigationEquipment
      security:
        - bearerAuth: []
      parameters:
        - name: leafUserId
          in: path
          required: true
          schema:
            type: string
        - name: equipmentId
          in: path
          required: true
          schema:
            type: string
      responses:
        '200':
          description: OK
  /services/irrigation/api/users/{leafUserId}/irrigation/applied-irrigation:
    get:
      tags:
        - Irrigation
      summary: Get as-applied irrigation
      operationId: getAppliedIrrigation
      security:
        - bearerAuth: []
      parameters:
        - name: leafUserId
          in: path
          required: true
          schema:
            type: string
        - name: provider
          in: query
          schema:
            type: string
        - name: startTime
          in: query
          schema:
            type: string
        - name: endTime
          in: query
          schema:
            type: string
      responses:
        '200':
          description: OK
  /services/irrigation/api/users/{leafUserId}/irrigation/fields:
    get:
      tags:
        - Irrigation
      summary: Get all irrigated fields
      operationId: getAllIrrigatedFields
      security:
        - bearerAuth: []
      parameters:
        - name: leafUserId
          in: path
          required: true
          schema:
            type: string
        - name: equipmentId
          in: query
          schema:
            type: string
        - name: startTime
          in: query
          schema:
            type: string
        - name: endTime
          in: query
          schema:
            type: string
      responses:
        '200':
          description: OK
  /services/irrigation/api/users/{leafUserId}/irrigation/fields/{fieldId}:
    get:
      tags:
        - Irrigation
      summary: Get an irrigated field
      operationId: getIrrigatedField
      security:
        - bearerAuth: []
      parameters:
        - name: leafUserId
          in: path
          required: true
          schema:
            type: string
        - name: fieldId
          in: path
          required: true
          schema:
            type: string
        - name: irrigationId
          in: query
          schema:
            type: string
        - name: provider
          in: query
          schema:
            type: string
        - name: startTime
          in: query
          schema:
            type: string
        - name: endTime
          in: query
          schema:
            type: string
      responses:
        '200':
          description: OK
  /services/beta/api/products:
    get:
      tags:
        - Beta > Products
      summary: Get all products
      operationId: getAllProducts
      security:
        - bearerAuth: []
      parameters:
        - name: leafUserId
          in: query
          schema:
            type: string
        - name: provider
          in: query
          schema:
            type: string
        - name: size
          in: query
          schema:
            type: integer
        - name: page
          in: query
          schema:
            type: integer
        - name: sort
          in: query
          schema:
            type: string
      responses:
        '200':
          description: OK
  /services/beta/api/users/{leafUserId}/products/summary:
    get:
      tags:
        - Beta > Products
      summary: Get summarized products
      operationId: getSummarizedProducts
      security:
        - bearerAuth: []
      parameters:
        - name: leafUserId
          in: path
          required: true
          schema:
            type: string
        - name: name
          in: query
          schema:
            type: string
        - name: size
          in: query
          schema:
            type: integer
        - name: page
          in: query
          schema:
            type: integer
        - name: sort
          in: query
          schema:
            type: string
      responses:
        '200':
          description: OK
  /services/beta/api/products/search:
    get:
      tags:
        - Beta > Products
      summary: Search products
      operationId: searchProducts
      security:
        - bearerAuth: []
      parameters:
        - name: name
          in: query
          schema:
            type: string
        - name: maxResults
          in: query
          schema:
            type: integer
      responses:
        '200':
          description: OK
  /services/beta/api/products/{productId}:
    get:
      tags:
        - Beta > Products
      summary: Get a product
      operationId: getProduct
      security:
        - bearerAuth: []
      parameters:
        - name: productId
          in: path
          required: true
          schema:
            type: string
      responses:
        '200':
          description: OK
  /services/beta/api/products/matching/operations/{operationId}:
    get:
      tags:
        - Beta > Products
      summary: Get matching products
      operationId: getMatchingProducts
      security:
        - bearerAuth: []
      parameters:
        - name: operationId
          in: path
          required: true
          schema:
            type: string
      responses:
        '200':
          description: OK
  /services/beta/api/products/matching/operations/{operationId}/matches/{matchId}:
    put:
      tags:
        - Beta > Products
      summary: Update product match
      operationId: updateProductMatch
      security:
        - bearerAuth: []
      parameters:
        - name: operationId
          in: path
          required: true
          schema:
            type: string
        - name: matchId
          in: path
          required: true
          schema:
            type: string
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                status:
                  type: string
      responses:
        '200':
          description: OK
  /services/beta/api/products/matching/operations/{operationId}/matches/{matchId}/historical:
    get:
      tags:
        - Beta > Products
      summary: Get match history
      operationId: getMatchHistory
      security:
        - bearerAuth: []
      parameters:
        - name: operationId
          in: path
          required: true
          schema:
            type: string
        - name: matchId
          in: path
          required: true
          schema:
            type: string
      responses:
        '200':
          description: OK
  /services/beta/api/varieties:
    get:
      tags:
        - Beta > Varieties
      summary: Get all varieties
      operationId: getAllVarieties
      security:
        - bearerAuth: []
      parameters:
        - name: leafUserId
          in: query
          schema:
            type: string
        - name: provider
          in: query
          schema:
            type: string
        - name: size
          in: query
          schema:
            type: integer
        - name: page
          in: query
          schema:
            type: integer
        - name: sort
          in: query
          schema:
            type: string
      responses:
        '200':
          description: OK
  /services/beta/api/varieties/{varietyId}:
    get:
      tags:
        - Beta > Varieties
      summary: Get a variety
      operationId: getVariety
      security:
        - bearerAuth: []
      parameters:
        - name: varietyId
          in: path
          required: true
          schema:
            type: string
      responses:
        '200':
          description: OK
  /services/beta/api/users/{leafUserId}/varieties/summary:
    get:
      tags:
        - Beta > Varieties
      summary: Get summarized varieties
      operationId: getSummarizedVarieties
      security:
        - bearerAuth: []
      parameters:
        - name: leafUserId
          in: path
          required: true
          schema:
            type: string
        - name: name
          in: query
          schema:
            type: string
        - name: size
          in: query
          schema:
            type: integer
        - name: page
          in: query
          schema:
            type: integer
        - name: sort
          in: query
          schema:
            type: string
        - name: crops
          in: query
          schema:
            type: string
      responses:
        '200':
          description: OK
  /services/beta/api/varieties/search:
    get:
      tags:
        - Beta > Varieties
      summary: Search varieties
      operationId: searchVarieties
      security:
        - bearerAuth: []
      parameters:
        - name: name
          in: query
          schema:
            type: string
        - name: maxResults
          in: query
          schema:
            type: integer
        - name: crop
          in: query
          schema:
            type: string
      responses:
        '200':
          description: OK
  /services/beta/api/tankMixes:
    get:
      tags:
        - Beta > Tank Mixes
      summary: Get all tank mixes
      operationId: getAllTankMixes
      security:
        - bearerAuth: []
      parameters:
        - name: leafUserId
          in: query
          schema:
            type: string
        - name: provider
          in: query
          schema:
            type: string
        - name: size
          in: query
          schema:
            type: integer
        - name: page
          in: query
          schema:
            type: integer
        - name: sort
          in: query
          schema:
            type: string
      responses:
        '200':
          description: OK
  /services/beta/api/tankMixes/search:
    get:
      tags:
        - Beta > Tank Mixes
      summary: Search tank mixes
      operationId: searchTankMixes
      security:
        - bearerAuth: []
      parameters:
        - name: name
          in: query
          schema:
            type: string
        - name: maxResults
          in: query
          schema:
            type: integer
      responses:
        '200':
          description: OK
  /services/beta/api/users/{leafUserId}/machines:
    get:
      tags:
        - Beta > Machines
      summary: Get all machines
      operationId: getAllMachines
      security:
        - bearerAuth: []
      parameters:
        - name: leafUserId
          in: path
          required: true
          schema:
            type: string
        - name: page
          in: query
          schema:
            type: integer
        - name: size
          in: query
          schema:
            type: integer
        - name: sort
          in: query
          schema:
            type: string
        - name: name
          in: query
          schema:
            type: string
        - name: provider
          in: query
          schema:
            type: string
        - name: providerOrganizationId
          in: query
          schema:
            type: string
        - name: serialNumber
          in: query
          schema:
            type: string
        - name: originType
          in: query
          schema:
            type: string
        - name: createdTime
          in: query
          schema:
            type: string
        - name: beforeCreatedTime
          in: query
          schema:
            type: string
        - name: afterCreatedTime
          in: query
          schema:
            type: string
        - name: vin
          in: query
          schema:
            type: string
      responses:
        '200':
          description: OK
    post:
      tags:
        - Beta > Machines
      summary: Create a machine
      operationId: createMachine
      security:
        - bearerAuth: []
      parameters:
        - name: leafUserId
          in: path
          required: true
          schema:
            type: string
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                name:
                  type: string
      responses:
        '201':
          description: Created
  /services/beta/api/users/{leafUserId}/machines/{machineId}:
    get:
      tags:
        - Beta > Machines
      summary: Get a machine
      operationId: getMachine
      security:
        - bearerAuth: []
      parameters:
        - name: leafUserId
          in: path
          required: true
          schema:
            type: string
        - name: machineId
          in: path
          required: true
          schema:
            type: string
      responses:
        '200':
          description: OK
    patch:
      tags:
        - Beta > Machines
      summary: Update a machine
      operationId: updateMachine
      security:
        - bearerAuth: []
      parameters:
        - name: leafUserId
          in: path
          required: true
          schema:
            type: string
        - name: machineId
          in: path
          required: true
          schema:
            type: string
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                name:
                  type: string
      responses:
        '200':
          description: OK
    delete:
      tags:
        - Beta > Machines
      summary: Delete a machine
      operationId: deleteMachine
      security:
        - bearerAuth: []
      parameters:
        - name: leafUserId
          in: path
          required: true
          schema:
            type: string
        - name: machineId
          in: path
          required: true
          schema:
            type: string
      responses:
        '204':
          description: No Content
  /services/beta/api/users/{leafUserId}/machines/{machineId}/files:
    get:
      tags:
        - Beta > Machines
      summary: Get machine files
      operationId: getMachineFiles
      security:
        - bearerAuth: []
      parameters:
        - name: leafUserId
          in: path
          required: true
          schema:
            type: string
        - name: machineId
          in: path
          required: true
          schema:
            type: string
        - name: page
          in: query
          schema:
            type: integer
        - name: size
          in: query
          schema:
            type: integer
        - name: sort
          in: query
          schema:
            type: string
        - name: leafFileId
          in: query
          schema:
            type: string
        - name: startTime
          in: query
          schema:
            type: string
        - name: endTime
          in: query
          schema:
            type: string
        - name: originType
          in: query
          schema:
            type: string
        - name: createdTime
          in: query
          schema:
            type: string
        - name: beforeCreatedTime
          in: query
          schema:
            type: string
        - name: afterCreatedTime
          in: query
          schema:
            type: string
      responses:
        '200':
          description: OK
  /services/beta/api/users/{leafUserId}/layers:
    get:
      tags:
        - Beta > Layers
      summary: Get all layers
      operationId: getAllLayers
      security:
        - bearerAuth: []
      parameters:
        - name: leafUserId
          in: path
          required: true
          schema:
            type: string
        - name: type
          in: query
          schema:
            type: string
        - name: page
          in: query
          schema:
            type: integer
        - name: size
          in: query
          schema:
            type: integer
      responses:
        '200':
          description: OK
  /services/beta/api/users/{leafUserId}/layers/climateFieldView:
    post:
      tags:
        - Beta > Layers
      summary: Upload layer to CFV
      operationId: uploadLayerToCFV
      security:
        - bearerAuth: []
      parameters:
        - name: leafUserId
          in: path
          required: true
          schema:
            type: string
        - name: uploadType
          in: query
          schema:
            type: string
      responses:
        '200':
          description: OK
  /services/beta/prescription/api/users/{leafUserId}/ravenSlingshot:
    get:
      tags:
        - Beta > Prescriptions
      summary: Get Raven prescriptions
      operationId: getRavenPrescriptions
      security:
        - bearerAuth: []
      parameters:
        - name: leafUserId
          in: path
          required: true
          schema:
            type: string
      responses:
        '200':
          description: OK
    post:
      tags:
        - Beta > Prescriptions
      summary: Upload Raven prescription
      operationId: uploadRavenPrescription
      security:
        - bearerAuth: []
      parameters:
        - name: leafUserId
          in: path
          required: true
          schema:
            type: string
      responses:
        '200':
          description: OK
  /services/beta/prescription/api/users/{leafUserId}/climateFieldView:
    post:
      tags:
        - Beta > Prescriptions
      summary: Upload CFV prescription
      operationId: uploadCFVPrescription
      security:
        - bearerAuth: []
      parameters:
        - name: leafUserId
          in: path
          required: true
          schema:
            type: string
      responses:
        '200':
          description: OK
  /services/beta/prescription/api/users/{leafUserId}/johnDeere:
    post:
      tags:
        - Beta > Prescriptions
      summary: Upload JD prescription
      operationId: uploadJDPrescription
      security:
        - bearerAuth: []
      parameters:
        - name: leafUserId
          in: path
          required: true
          schema:
            type: string
        - name: organizationId
          in: query
          schema:
            type: string
      responses:
        '200':
          description: OK
    get:
      tags:
        - Beta > Prescriptions
      summary: Get JD prescriptions
      operationId: getJDPrescriptions
      security:
        - bearerAuth: []
      parameters:
        - name: leafUserId
          in: path
          required: true
          schema:
            type: string
        - name: organizationId
          in: query
          schema:
            type: string
      responses:
        '200':
          description: OK
  /services/beta/prescription/api/users/{leafUserId}/cnhi:
    get:
      tags:
        - Beta > Prescriptions
      summary: Get CNHi prescriptions
      operationId: getCNHiPrescriptions
      security:
        - bearerAuth: []
      parameters:
        - name: leafUserId
          in: path
          required: true
          schema:
            type: string
        - name: companyId
          in: query
          schema:
            type: string
      responses:
        '200':
          description: OK
    post:
      tags:
        - Beta > Prescriptions
      summary: Upload CNHi prescription
      operationId: uploadCNHiPrescription
      security:
        - bearerAuth: []
      parameters:
        - name: leafUserId
          in: path
          required: true
          schema:
            type: string
        - name: companyId
          in: query
          schema:
            type: string
      responses:
        '200':
          description: OK
  /services/beta/prescription/api/users/{leafUserId}/trimble:
    post:
      tags:
        - Beta > Prescriptions
      summary: Upload Trimble prescription
      operationId: uploadTrimblePrescription
      security:
        - bearerAuth: []
      parameters:
        - name: leafUserId
          in: path
          required: true
          schema:
            type: string
        - name: organizationId
          in: query
          schema:
            type: string
        - name: rateColumn
          in: query
          schema:
            type: string
        - name: rateUnits
          in: query
          schema:
            type: string
      responses:
        '200':
          description: OK
  /services/beta/prescription/api/users/{leafUserId}/agLeader:
    post:
      tags:
        - Beta > Prescriptions
      summary: Upload AgLeader prescription
      operationId: uploadAgLeaderPrescription
      security:
        - bearerAuth: []
      parameters:
        - name: leafUserId
          in: path
          required: true
          schema:
            type: string
      responses:
        '200':
          description: OK
  /services/beta/api/users/{leafUserId}/implements:
    get:
      tags:
        - Beta > Implements
      summary: Get all implements
      operationId: getAllImplements
      security:
        - bearerAuth: []
      parameters:
        - name: leafUserId
          in: path
          required: true
          schema:
            type: string
        - name: page
          in: query
          schema:
            type: integer
        - name: size
          in: query
          schema:
            type: integer
        - name: sort
          in: query
          schema:
            type: string
        - name: name
          in: query
          schema:
            type: string
        - name: provider
          in: query
          schema:
            type: string
        - name: providerOrganizationId
          in: query
          schema:
            type: string
        - name: createdTime
          in: query
          schema:
            type: string
        - name: providerImplementId
          in: query
          schema:
            type: string
      responses:
        '200':
          description: OK
  /services/beta/api/users/{leafUserId}/implements/{implementId}:
    get:
      tags:
        - Beta > Implements
      summary: Get an implement
      operationId: getImplement
      security:
        - bearerAuth: []
      parameters:
        - name: leafUserId
          in: path
          required: true
          schema:
            type: string
        - name: implementId
          in: path
          required: true
          schema:
            type: string
      responses:
        '200':
          description: OK
  /services/beta/api/users/{leafUserId}/operators:
    get:
      tags:
        - Beta > Operators
      summary: Get all operators
      operationId: getAllOperators
      security:
        - bearerAuth: []
      parameters:
        - name: leafUserId
          in: path
          required: true
          schema:
            type: string
        - name: page
          in: query
          schema:
            type: integer
        - name: size
          in: query
          schema:
            type: integer
        - name: provider
          in: query
          schema:
            type: string
      responses:
        '200':
          description: OK
  /services/beta/api/users/{leafUserId}/operators/{operatorId}:
    get:
      tags:
        - Beta > Operators
      summary: Get an operator
      operationId: getOperator
      security:
        - bearerAuth: []
      parameters:
        - name: leafUserId
          in: path
          required: true
          schema:
            type: string
        - name: operatorId
          in: path
          required: true
          schema:
            type: string
      responses:
        '200':
          description: OK
  /services/usermanagement/api/api-owners/sharing-relation/{sharingRelationRole}:
    get:
      operationId: getSharingRelation
      summary: Get sharing relation
      tags:
        - Leaf Connect
      security:
        - bearerAuth: []
      parameters:
        - name: sharingRelationRole
          in: path
          required: true
          schema:
            type: string
      responses:
        '200':
          description: OK
  /services/usermanagement/api/api-owners/sharing-relation/{sharingRelationRole}/{targetApiOwner}/status:
    get:
      operationId: getSharingRelationStatus
      summary: Get sharing relation status
      tags:
        - Leaf Connect
      security:
        - bearerAuth: []
      parameters:
        - name: sharingRelationRole
          in: path
          required: true
          schema:
            type: string
        - name: targetApiOwner
          in: path
          required: true
          schema:
            type: string
      responses:
        '200':
          description: OK
  /services/usermanagement/api/api-owners/sharing-relation/receiver:
    post:
      operationId: createSharingRelation
      summary: Create sharing relation
      tags:
        - Leaf Connect
      security:
        - bearerAuth: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                receiverApiOwner:
                  type: string
      responses:
        '201':
          description: Created
  /services/usermanagement/api/api-owners/sharing-relation/{sharingRelationRole}/{targetApiOwner}:
    patch:
      operationId: updateSharingRelationStatus
      summary: Update sharing relation status
      tags:
        - Leaf Connect
      security:
        - bearerAuth: []
      parameters:
        - name: sharingRelationRole
          in: path
          required: true
          schema:
            type: string
        - name: targetApiOwner
          in: path
          required: true
          schema:
            type: string
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                status:
                  type: string
      responses:
        '200':
          description: OK
  /services/usermanagement/api/api-owners/sharing-relation/{sharingRelationRole}/{targetApiOwner}/users-permissions/{leafUserId}:
    get:
      operationId: getUserPermissions
      summary: Get user permissions
      tags:
        - Leaf Connect
      security:
        - bearerAuth: []
      parameters:
        - name: sharingRelationRole
          in: path
          required: true
          schema:
            type: string
        - name: targetApiOwner
          in: path
          required: true
          schema:
            type: string
        - name: leafUserId
          in: path
          required: true
          schema:
            type: string
      responses:
        '200':
          description: OK
    delete:
      operationId: deleteUserPermissions
      summary: Delete user permissions
      tags:
        - Leaf Connect
      security:
        - bearerAuth: []
      parameters:
        - name: sharingRelationRole
          in: path
          required: true
          schema:
            type: string
        - name: targetApiOwner
          in: path
          required: true
          schema:
            type: string
        - name: leafUserId
          in: path
          required: true
          schema:
            type: string
      responses:
        '204':
          description: No Content
  /services/usermanagement/api/api-owners/sharing-relation/receiver/{receiverApiOwner}/users-permissions/{leafUserId}:
    post:
      operationId: createUserPermissions
      summary: Create user permissions
      tags:
        - Leaf Connect
      security:
        - bearerAuth: []
      parameters:
        - name: receiverApiOwner
          in: path
          required: true
          schema:
            type: string
        - name: leafUserId
          in: path
          required: true
          schema:
            type: string
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                permissions:
                  type: object
                  properties:
                    FIELDS:
                      type: object
                    OPERATIONS:
                      type: object
      responses:
        '201':
          description: Created
  /services/usermanagement/api/api-owners/sharing-relation/receiver/{receiverApiOwner}/users-permissions/{leafUserId}/{sharingRelationResource}:
    patch:
      operationId: updateUserPermissions
      summary: Update user permissions
      tags:
        - Leaf Connect
      security:
        - bearerAuth: []
      parameters:
        - name: receiverApiOwner
          in: path
          required: true
          schema:
            type: string
        - name: leafUserId
          in: path
          required: true
          schema:
            type: string
        - name: sharingRelationResource
          in: path
          required: true
          schema:
            type: string
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                actions:
                  type: array
                  items:
                    type: string
                types:
                  type: array
                  items:
                    type: string
      responses:
        '200':
          description: OK
  /services/usermanagement/api/api-owners/sharing-relation/{sharingRelationRole}/{targetApiOwner}/invalidate-tokens:
    post:
      operationId: invalidateTokens
      summary: Invalidate tokens
      tags:
        - Leaf Connect
      security:
        - bearerAuth: []
      parameters:
        - name: sharingRelationRole
          in: path
          required: true
          schema:
            type: string
        - name: targetApiOwner
          in: path
          required: true
          schema:
            type: string
      responses:
        '200':
          description: OK
  /services/usermanagement/api/api-keys:
    get:
      operationId: getAllApiKeys
      summary: Get all API keys
      tags:
        - Leaf Link > API Keys
      security:
        - bearerAuth: []
      parameters:
        - name: leafUserId
          in: query
          schema:
            type: string
      responses:
        '200':
          description: OK
    post:
      operationId: createApiKey
      summary: Create an API key
      tags:
        - Leaf Link > API Keys
      security:
        - bearerAuth: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                leafUserId:
                  type: string
                expiresIn:
                  type: integer
                description:
                  type: string
      responses:
        '201':
          description: Created
  /services/usermanagement/api/api-keys/{apiKeyId}:
    delete:
      operationId: revokeApiKey
      summary: Revoke an API key
      tags:
        - Leaf Link > API Keys
      security:
        - bearerAuth: []
      parameters:
        - name: apiKeyId
          in: path
          required: true
          schema:
            type: string
      responses:
        '204':
          description: No Content
  /services/usermanagement/api/app-keys/AgLeader:
    get:
      operationId: getAllAgLeaderAppKeys
      summary: Get all AgLeader app keys
      tags:
        - Leaf Link > AgLeader App Keys
      security:
        - bearerAuth: []
      responses:
        '200':
          description: OK
    post:
      operationId: createAgLeaderAppKey
      summary: Create AgLeader app key
      tags:
        - Leaf Link > AgLeader App Keys
      security:
        - bearerAuth: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
      responses:
        '201':
          description: Created
  /services/usermanagement/api/app-keys/AgLeader/{appName}:
    get:
      operationId: getAgLeaderAppKey
      summary: Get an AgLeader app key
      tags:
        - Leaf Link > AgLeader App Keys
      security:
        - bearerAuth: []
      parameters:
        - name: appName
          in: path
          required: true
          schema:
            type: string
      responses:
        '200':
          description: OK
    put:
      operationId: updateAgLeaderAppKey
      summary: Update AgLeader app key
      tags:
        - Leaf Link > AgLeader App Keys
      security:
        - bearerAuth: []
      parameters:
        - name: appName
          in: path
          required: true
          schema:
            type: string
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
      responses:
        '200':
          description: OK
    delete:
      operationId: deleteAgLeaderAppKey
      summary: Delete AgLeader app key
      tags:
        - Leaf Link > AgLeader App Keys
      security:
        - bearerAuth: []
      parameters:
        - name: appName
          in: path
          required: true
          schema:
            type: string
      responses:
        '204':
          description: No Content
  /services/usermanagement/api/app-keys/CNHI:
    get:
      operationId: getAllCNHiAppKeys
      summary: Get all CNHi app keys
      tags:
        - Leaf Link > CNHi App Keys
      security:
        - bearerAuth: []
      responses:
        '200':
          description: OK
    post:
      operationId: createCNHiAppKey
      summary: Create CNHi app key
      tags:
        - Leaf Link > CNHi App Keys
      security:
        - bearerAuth: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
      responses:
        '201':
          description: Created
  /services/usermanagement/api/app-keys/CNHI/{appName}/{clientEnvironment}:
    get:
      operationId: getCNHiAppKey
      summary: Get a CNHi app key
      tags:
        - Leaf Link > CNHi App Keys
      security:
        - bearerAuth: []
      parameters:
        - name: appName
          in: path
          required: true
          schema:
            type: string
        - name: clientEnvironment
          in: path
          required: true
          schema:
            type: string
      responses:
        '200':
          description: OK
    put:
      operationId: updateCNHiAppKey
      summary: Update CNHi app key
      tags:
        - Leaf Link > CNHi App Keys
      security:
        - bearerAuth: []
      parameters:
        - name: appName
          in: path
          required: true
          schema:
            type: string
        - name: clientEnvironment
          in: path
          required: true
          schema:
            type: string
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
      responses:
        '200':
          description: OK
    delete:
      operationId: deleteCNHiAppKey
      summary: Delete CNHi app key
      tags:
        - Leaf Link > CNHi App Keys
      security:
        - bearerAuth: []
      parameters:
        - name: appName
          in: path
          required: true
          schema:
            type: string
        - name: clientEnvironment
          in: path
          required: true
          schema:
            type: string
      responses:
        '204':
          description: No Content
  /services/usermanagement/api/app-keys/ClimateFieldView:
    get:
      operationId: getAllClimateFieldViewAppKeys
      summary: Get all ClimateFieldView app keys
      tags:
        - Leaf Link > ClimateFieldView App Keys
      security:
        - bearerAuth: []
      responses:
        '200':
          description: OK
    post:
      operationId: createClimateFieldViewAppKey
      summary: Create ClimateFieldView app key
      tags:
        - Leaf Link > ClimateFieldView App Keys
      security:
        - bearerAuth: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
      responses:
        '201':
          description: Created
  /services/usermanagement/api/app-keys/ClimateFieldView/{appName}:
    get:
      operationId: getClimateFieldViewAppKey
      summary: Get a ClimateFieldView app key
      tags:
        - Leaf Link > ClimateFieldView App Keys
      security:
        - bearerAuth: []
      parameters:
        - name: appName
          in: path
          required: true
          schema:
            type: string
      responses:
        '200':
          description: OK
    put:
      operationId: updateClimateFieldViewAppKey
      summary: Update ClimateFieldView app key
      tags:
        - Leaf Link > ClimateFieldView App Keys
      security:
        - bearerAuth: []
      parameters:
        - name: appName
          in: path
          required: true
          schema:
            type: string
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
      responses:
        '200':
          description: OK
    delete:
      operationId: deleteClimateFieldViewAppKey
      summary: Delete ClimateFieldView app key
      tags:
        - Leaf Link > ClimateFieldView App Keys
      security:
        - bearerAuth: []
      parameters:
        - name: appName
          in: path
          required: true
          schema:
            type: string
      responses:
        '204':
          description: No Content
  /services/usermanagement/api/app-keys/JohnDeere:
    get:
      operationId: getAllJohnDeereAppKeys
      summary: Get all JohnDeere app keys
      tags:
        - Leaf Link > JohnDeere App Keys
      security:
        - bearerAuth: []
      responses:
        '200':
          description: OK
    post:
      operationId: createJohnDeereAppKey
      summary: Create JohnDeere app key
      tags:
        - Leaf Link > JohnDeere App Keys
      security:
        - bearerAuth: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
      responses:
        '201':
          description: Created
  /services/usermanagement/api/app-keys/JohnDeere/{appName}/{clientEnvironment}:
    get:
      operationId: getJohnDeereAppKey
      summary: Get a JohnDeere app key
      tags:
        - Leaf Link > JohnDeere App Keys
      security:
        - bearerAuth: []
      parameters:
        - name: appName
          in: path
          required: true
          schema:
            type: string
        - name: clientEnvironment
          in: path
          required: true
          schema:
            type: string
      responses:
        '200':
          description: OK
    put:
      operationId: updateJohnDeereAppKey
      summary: Update JohnDeere app key
      tags:
        - Leaf Link > JohnDeere App Keys
      security:
        - bearerAuth: []
      parameters:
        - name: appName
          in: path
          required: true
          schema:
            type: string
        - name: clientEnvironment
          in: path
          required: true
          schema:
            type: string
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
      responses:
        '200':
          description: OK
    delete:
      operationId: deleteJohnDeereAppKey
      summary: Delete JohnDeere app key
      tags:
        - Leaf Link > JohnDeere App Keys
      security:
        - bearerAuth: []
      parameters:
        - name: appName
          in: path
          required: true
          schema:
            type: string
        - name: clientEnvironment
          in: path
          required: true
          schema:
            type: string
      responses:
        '204':
          description: No Content
  /services/usermanagement/api/app-keys/Trimble:
    get:
      operationId: getAllTrimbleAppKeys
      summary: Get all Trimble app keys
      tags:
        - Leaf Link > Trimble App Keys
      security:
        - bearerAuth: []
      responses:
        '200':
          description: OK
    post:
      operationId: createTrimbleAppKey
      summary: Create Trimble app key
      tags:
        - Leaf Link > Trimble App Keys
      security:
        - bearerAuth: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
      responses:
        '201':
          description: Created
  /services/usermanagement/api/app-keys/Trimble/{appName}:
    get:
      operationId: getTrimbleAppKey
      summary: Get a Trimble app key
      tags:
        - Leaf Link > Trimble App Keys
      security:
        - bearerAuth: []
      parameters:
        - name: appName
          in: path
          required: true
          schema:
            type: string
      responses:
        '200':
          description: OK
    put:
      operationId: updateTrimbleAppKey
      summary: Update Trimble app key
      tags:
        - Leaf Link > Trimble App Keys
      security:
        - bearerAuth: []
      parameters:
        - name: appName
          in: path
          required: true
          schema:
            type: string
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
      responses:
        '200':
          description: OK
    delete:
      operationId: deleteTrimbleAppKey
      summary: Delete Trimble app key
      tags:
        - Leaf Link > Trimble App Keys
      security:
        - bearerAuth: []
      parameters:
        - name: appName
          in: path
          required: true
          schema:
            type: string
      responses:
        '204':
          description: No Content
  /services/usermanagement/api/app-keys/RavenSlingshot:
    get:
      operationId: getAllRavenSlingshotAppKeys
      summary: Get all RavenSlingshot app keys
      tags:
        - Leaf Link > RavenSlingshot App Keys
      security:
        - bearerAuth: []
      responses:
        '200':
          description: OK
    post:
      operationId: createRavenSlingshotAppKey
      summary: Create RavenSlingshot app key
      tags:
        - Leaf Link > RavenSlingshot App Keys
      security:
        - bearerAuth: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
      responses:
        '201':
          description: Created
  /services/usermanagement/api/app-keys/RavenSlingshot/{appName}:
    get:
      operationId: getRavenSlingshotAppKey
      summary: Get a RavenSlingshot app key
      tags:
        - Leaf Link > RavenSlingshot App Keys
      security:
        - bearerAuth: []
      parameters:
        - name: appName
          in: path
          required: true
          schema:
            type: string
      responses:
        '200':
          description: OK
    put:
      operationId: updateRavenSlingshotAppKey
      summary: Update RavenSlingshot app key
      tags:
        - Leaf Link > RavenSlingshot App Keys
      security:
        - bearerAuth: []
      parameters:
        - name: appName
          in: path
          required: true
          schema:
            type: string
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
      responses:
        '200':
          description: OK
    delete:
      operationId: deleteRavenSlingshotAppKey
      summary: Delete RavenSlingshot app key
      tags:
        - Leaf Link > RavenSlingshot App Keys
      security:
        - bearerAuth: []
      parameters:
        - name: appName
          in: path
          required: true
          schema:
            type: string
      responses:
        '204':
          description: No Content
  /services/usermanagement/api/app-keys/Stara:
    get:
      operationId: getAllStaraAppKeys
      summary: Get all Stara app keys
      tags:
        - Leaf Link > Stara App Keys
      security:
        - bearerAuth: []
      responses:
        '200':
          description: OK
    post:
      operationId: createStaraAppKey
      summary: Create Stara app key
      tags:
        - Leaf Link > Stara App Keys
      security:
        - bearerAuth: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
      responses:
        '201':
          description: Created
  /services/usermanagement/api/app-keys/Stara/{appName}:
    get:
      operationId: getStaraAppKey
      summary: Get a Stara app key
      tags:
        - Leaf Link > Stara App Keys
      security:
        - bearerAuth: []
      parameters:
        - name: appName
          in: path
          required: true
          schema:
            type: string
      responses:
        '200':
          description: OK
    put:
      operationId: updateStaraAppKey
      summary: Update Stara app key
      tags:
        - Leaf Link > Stara App Keys
      security:
        - bearerAuth: []
      parameters:
        - name: appName
          in: path
          required: true
          schema:
            type: string
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
      responses:
        '200':
          description: OK
    delete:
      operationId: deleteStaraAppKey
      summary: Delete Stara app key
      tags:
        - Leaf Link > Stara App Keys
      security:
        - bearerAuth: []
      parameters:
        - name: appName
          in: path
          required: true
          schema:
            type: string
      responses:
        '204':
          description: No Content
  /services/widgets/api/magic-link/provider:
    get:
      operationId: getAllProviderMagicLinks
      summary: Get all provider magic links
      tags:
        - Magic Link > Provider
      security:
        - bearerAuth: []
      responses:
        '200':
          description: OK
    post:
      operationId: createProviderMagicLinkWithUser
      summary: Create provider magic link with user creation
      tags:
        - Magic Link > With User Creation
      security:
        - bearerAuth: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                name:
                  type: string
                email:
                  type: string
                externalId:
                  type: string
                expiresIn:
                  type: integer
                allowedProviders:
                  type: array
                  items:
                    type: string
                settings:
                  type: object
      responses:
        '201':
          description: Created
  /services/widgets/api/magic-link/provider/{magicLinkId}:
    get:
      operationId: getProviderMagicLink
      summary: Get a provider magic link
      tags:
        - Magic Link > Provider
      security:
        - bearerAuth: []
      parameters:
        - name: magicLinkId
          in: path
          required: true
          schema:
            type: string
      responses:
        '200':
          description: OK
    delete:
      operationId: deleteProviderMagicLink
      summary: Delete provider magic link
      tags:
        - Magic Link > Provider
      security:
        - bearerAuth: []
      parameters:
        - name: magicLinkId
          in: path
          required: true
          schema:
            type: string
      responses:
        '204':
          description: No Content
  /services/widgets/api/magic-link/users/{leafUserId}/provider:
    post:
      operationId: createProviderMagicLink
      summary: Create provider magic link
      tags:
        - Magic Link > Provider
      security:
        - bearerAuth: []
      parameters:
        - name: leafUserId
          in: path
          required: true
          schema:
            type: string
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                expiresIn:
                  type: integer
                allowedProviders:
                  type: array
                  items:
                    type: string
                settings:
                  type: object
      responses:
        '201':
          description: Created
  /services/widgets/api/magic-link/authentication:
    get:
      operationId: getAllAuthMagicLinks
      summary: Get all auth magic links
      tags:
        - Magic Link > Authentication
      security:
        - bearerAuth: []
      responses:
        '200':
          description: OK
    post:
      operationId: createAuthMagicLinkWithUser
      summary: Create auth magic link with user creation
      tags:
        - Magic Link > With User Creation
      security:
        - bearerAuth: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                name:
                  type: string
                email:
                  type: string
                externalId:
                  type: string
                expiresIn:
                  type: integer
                provider:
                  type: string
                settings:
                  type: object
      responses:
        '201':
          description: Created
  /services/widgets/api/magic-link/authentication/{magicLinkId}:
    get:
      operationId: getAuthMagicLink
      summary: Get an auth magic link
      tags:
        - Magic Link > Authentication
      security:
        - bearerAuth: []
      parameters:
        - name: magicLinkId
          in: path
          required: true
          schema:
            type: string
      responses:
        '200':
          description: OK
    delete:
      operationId: deleteAuthMagicLink
      summary: Delete auth magic link
      tags:
        - Magic Link > Authentication
      security:
        - bearerAuth: []
      parameters:
        - name: magicLinkId
          in: path
          required: true
          schema:
            type: string
      responses:
        '204':
          description: No Content
  /services/widgets/api/magic-link/users/{leafUserId}/authentication:
    post:
      operationId: createAuthMagicLink
      summary: Create auth magic link
      tags:
        - Magic Link > Authentication
      security:
        - bearerAuth: []
      parameters:
        - name: leafUserId
          in: path
          required: true
          schema:
            type: string
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                expiresIn:
                  type: integer
                provider:
                  type: string
                settings:
                  type: object
      responses:
        '201':
          description: Created
  /services/widgets/api/magic-link/file-upload:
    get:
      operationId: getAllFileUploadMagicLinks
      summary: Get all file upload magic links
      tags:
        - Magic Link > File Upload
      security:
        - bearerAuth: []
      responses:
        '200':
          description: OK
    post:
      operationId: createFileUploadMagicLinkWithUser
      summary: Create file upload magic link with user creation
      tags:
        - Magic Link > With User Creation
      security:
        - bearerAuth: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                name:
                  type: string
                email:
                  type: string
                externalId:
                  type: string
                expiresIn:
                  type: integer
                settings:
                  type: object
      responses:
        '201':
          description: Created
  /services/widgets/api/magic-link/file-upload/{magicLinkId}:
    get:
      operationId: getFileUploadMagicLink
      summary: Get a file upload magic link
      tags:
        - Magic Link > File Upload
      security:
        - bearerAuth: []
      parameters:
        - name: magicLinkId
          in: path
          required: true
          schema:
            type: string
      responses:
        '200':
          description: OK
    delete:
      operationId: deleteFileUploadMagicLink
      summary: Delete file upload magic link
      tags:
        - Magic Link > File Upload
      security:
        - bearerAuth: []
      parameters:
        - name: magicLinkId
          in: path
          required: true
          schema:
            type: string
      responses:
        '204':
          description: No Content
  /services/widgets/api/magic-link/users/{leafUserId}/file-upload:
    post:
      operationId: createFileUploadMagicLink
      summary: Create file upload magic link
      tags:
        - Magic Link > File Upload
      security:
        - bearerAuth: []
      parameters:
        - name: leafUserId
          in: path
          required: true
          schema:
            type: string
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                expiresIn:
                  type: integer
                settings:
                  type: object
      responses:
        '201':
          description: Created
  /services/integrations/api/resources:
    get:
      operationId: getIntegrationResources
      summary: Get integration resources
      tags:
        - Integrations
      security:
        - bearerAuth: []
      parameters:
        - name: leafUserId
          in: query
          schema:
            type: string
        - name: provider
          in: query
          schema:
            type: string
        - name: page
          in: query
          schema:
            type: integer
        - name: size
          in: query
          schema:
            type: integer
      responses:
        '200':
          description: OK
  /services/billingapplication/api/billing/contracts:
    get:
      operationId: listContracts
      summary: List contracts
      tags:
        - Usage Tracking
      security:
        - bearerAuth: []
      responses:
        '200':
          description: OK
  /services/billingapplication/api/billing/contracts/{contractId}:
    get:
      operationId: getContract
      summary: Get a contract
      tags:
        - Usage Tracking
      security:
        - bearerAuth: []
      parameters:
        - name: contractId
          in: path
          required: true
          schema:
            type: string
      responses:
        '200':
          description: OK
  /services/billingapplication/api/billing/contracts/{contractId}/consumption:
    get:
      operationId: getContractConsumption
      summary: Get contract consumption
      tags:
        - Usage Tracking
      security:
        - bearerAuth: []
      parameters:
        - name: contractId
          in: path
          required: true
          schema:
            type: string
      responses:
        '200':
          description: OK
  /services/billingapplication/api/billing/contracts/{contractId}/consumption/api-owner:
    get:
      operationId: getConsumptionForApiOwner
      summary: Get consumption for API owner
      tags:
        - Usage Tracking
      security:
        - bearerAuth: []
      parameters:
        - name: contractId
          in: path
          required: true
          schema:
            type: string
      responses:
        '200':
          description: OK
  /services/billingapplication/api/billing/contracts/{contractId}/consumption/leaf-user/{leafUserId}:
    get:
      operationId: getConsumptionForLeafUser
      summary: Get consumption for Leaf user
      tags:
        - Usage Tracking
      security:
        - bearerAuth: []
      parameters:
        - name: contractId
          in: path
          required: true
          schema:
            type: string
        - name: leafUserId
          in: path
          required: true
          schema:
            type: string
      responses:
        '200':
          description: OK
