Green Screens AI Pricing API

Pricing service v1 — priority rules, combination rules and threshold rules (full CRUD each), 3PL pricing, and marketplace broker partners. Spec version 1.1.0, 8 paths. The largest service surface.

Operations 17

POST /pricing/priority-rules Create a priority rule #
GET /pricing/priority-rules Get priority rules #
GET /pricing/priority-rules/{ruleId} Get a priority rule #
PUT /pricing/priority-rules/{ruleId} Update a priority rule #
DELETE /pricing/priority-rules/{ruleId} Delete a priority rule #
POST /pricing/combination-rules Create a combination rule #
GET /pricing/combination-rules Get combination rules #
GET /pricing/combination-rules/{ruleId} Get a combination rule #
PUT /pricing/combination-rules/{ruleId} Update a combination rule #
DELETE /pricing/combination-rules/{ruleId} Delete a combination rule #
POST /pricing/threshold-rules Create a threshold rule #
GET /pricing/threshold-rules Get threshold rules #
GET /pricing/threshold-rules/{ruleId} Get a threshold rule #
PUT /pricing/threshold-rules/{ruleId} Update a threshold rule #
DELETE /pricing/threshold-rules/{ruleId} Delete a threshold rule #
POST /pricing/tpl-pricing Calculate pricing, based on TPL data #
POST /pricing/marketplace/my-broker-partners Get sell rates of partner brokers #

Work with this as data

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

MCP server

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

https://apis.io/mcp

Tools for apis

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

Call it yourself

curl for this page
This API
curl "https://apis.io/api/v1/apis/green-screens-ai-pricing-api"
All apis
curl "https://apis.io/api/v1/apis?limit=25"

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

Get an API key

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

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

OpenAPI Specification

green-screens-ai-pricing-api-openapi.yml Raw ↑
# harvested: 2026-09-12
# method: searched
# source: https://connect.greenscreens.ai/pricing/v1/openapi.yaml
# note: >-
#   Verbatim first-party OpenAPI served from the provider's own documentation host connect.greenscreens.ai. Ownership confirmed: info.contact.email support@greenscreens.ai, x-logo static.greenscreens.ai, servers[] api.greenscreens.ai; termsOfService points at triumph.io because Triumph Financial acquired Greenscreens.ai (closed 2025) and the product now ships as Triumph Intelligence.
openapi: 3.0.2
info:
  title: Pricing
  version: 1.1.0
  description: Pricing service v1
  x-logo:
    url: https://static.greenscreens.ai/main-logo.svg
    backgroundColor: "#fafafa"
    altText: Triumph Intelligence
  termsOfService: https://triumph.io/terms-of-service/
  contact:
    name: API Support
    email: support@greenscreens.ai
    url: https://connect.intelligence.triumph.io
tags:
  - name: Pricing
    description: Pricing related endpoints
paths:
  /pricing/priority-rules:
    post:
      tags:
        - Pricing
      summary: Create a priority rule
      description: Create a priority rule
      operationId: pricingPriorityRulesCreate
      security:
        - bearerAuth: []
      requestBody:
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/PricingPriorityRuleRequest"
        required: true
      responses:
        "201":
          description: Success
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/PriorityRule"
        "400":
          $ref: "#/paths/~1pricing~1tpl-pricing/post/responses/400"
        "401":
          $ref: "#/paths/~1pricing~1tpl-pricing/post/responses/401"
        "403":
          $ref: "#/paths/~1pricing~1priority-rules/get/responses/403"
        "422":
          $ref: "#/paths/~1pricing~1tpl-pricing/post/responses/422"
        "429":
          $ref: "#/paths/~1pricing~1tpl-pricing/post/responses/429"
        "500":
          $ref: "#/paths/~1pricing~1tpl-pricing/post/responses/500"
    get:
      tags:
        - Pricing
      summary: Get priority rules
      description: Get priority rules
      operationId: pricingPriorityRulesGetAll
      security:
        - bearerAuth: []
      parameters:
        - in: query
          name: pricingTypeGroup
          schema:
            $ref: "#/components/schemas/PricingRuleGroup"
          required: false
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/PricingPriorityRulesResponse"
        "400":
          $ref: "#/paths/~1pricing~1tpl-pricing/post/responses/400"
        "401":
          $ref: "#/paths/~1pricing~1tpl-pricing/post/responses/401"
        "403":
          description: Forbidden
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Error"
              examples:
                error403Example:
                  value:
                    code: access_forbidden
                    message: Access is forbidden
        "404":
          $ref: "#/paths/~1pricing~1tpl-pricing/post/responses/404"
        "422":
          $ref: "#/paths/~1pricing~1tpl-pricing/post/responses/422"
        "429":
          $ref: "#/paths/~1pricing~1tpl-pricing/post/responses/429"
        "500":
          $ref: "#/paths/~1pricing~1tpl-pricing/post/responses/500"
  "/pricing/priority-rules/{ruleId}":
    get:
      tags:
        - Pricing
      summary: Get a priority rule
      description: Get a priority rule
      operationId: pricingPriorityRuleGet
      security:
        - bearerAuth: []
      parameters:
        - in: path
          name: ruleId
          description: Id of the priority rule to get
          schema:
            type: integer
            format: int64
            example: 12345
          required: true
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/PriorityRule"
        "400":
          $ref: "#/paths/~1pricing~1tpl-pricing/post/responses/400"
        "401":
          $ref: "#/paths/~1pricing~1tpl-pricing/post/responses/401"
        "403":
          $ref: "#/paths/~1pricing~1priority-rules/get/responses/403"
        "404":
          $ref: "#/paths/~1pricing~1tpl-pricing/post/responses/404"
        "422":
          $ref: "#/paths/~1pricing~1tpl-pricing/post/responses/422"
        "429":
          $ref: "#/paths/~1pricing~1tpl-pricing/post/responses/429"
        "500":
          $ref: "#/paths/~1pricing~1tpl-pricing/post/responses/500"
    put:
      tags:
        - Pricing
      summary: Update a priority rule
      description: Update a priority rule
      operationId: pricingPriorityRuleUpdate
      security:
        - bearerAuth: []
      parameters:
        - in: path
          name: ruleId
          description: Id of the priority rule to update
          required: true
          schema:
            type: integer
            format: int64
            example: 12345
      requestBody:
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/PricingPriorityRuleRequest"
        required: true
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/PriorityRule"
        "400":
          $ref: "#/paths/~1pricing~1tpl-pricing/post/responses/400"
        "401":
          $ref: "#/paths/~1pricing~1tpl-pricing/post/responses/401"
        "403":
          $ref: "#/paths/~1pricing~1priority-rules/get/responses/403"
        "404":
          $ref: "#/paths/~1pricing~1tpl-pricing/post/responses/404"
        "422":
          $ref: "#/paths/~1pricing~1tpl-pricing/post/responses/422"
        "429":
          $ref: "#/paths/~1pricing~1tpl-pricing/post/responses/429"
        "500":
          $ref: "#/paths/~1pricing~1tpl-pricing/post/responses/500"
    delete:
      tags:
        - Pricing
      summary: Delete a priority rule
      description: Delete a priority rule
      operationId: pricingPriorityRuleDelete
      security:
        - bearerAuth: []
      parameters:
        - in: path
          name: ruleId
          description: Id of the priority rule to delete
          schema:
            type: integer
            format: int64
            example: 12345
          required: true
      responses:
        "204":
          description: Success
        "400":
          $ref: "#/paths/~1pricing~1tpl-pricing/post/responses/400"
        "401":
          $ref: "#/paths/~1pricing~1tpl-pricing/post/responses/401"
        "403":
          $ref: "#/paths/~1pricing~1priority-rules/get/responses/403"
        "404":
          $ref: "#/paths/~1pricing~1tpl-pricing/post/responses/404"
        "429":
          $ref: "#/paths/~1pricing~1tpl-pricing/post/responses/429"
        "500":
          $ref: "#/paths/~1pricing~1tpl-pricing/post/responses/500"
  /pricing/combination-rules:
    post:
      tags:
        - Pricing
      summary: Create a combination rule
      description: Create a combination rule
      operationId: pricingCombinationRuleCreate
      security:
        - bearerAuth: []
      requestBody:
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/PricingCombinationRuleRequest"
        required: true
      responses:
        "201":
          description: Success
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/CombinationRule"
        "400":
          $ref: "#/paths/~1pricing~1tpl-pricing/post/responses/400"
        "401":
          $ref: "#/paths/~1pricing~1tpl-pricing/post/responses/401"
        "403":
          $ref: "#/paths/~1pricing~1priority-rules/get/responses/403"
        "422":
          $ref: "#/paths/~1pricing~1tpl-pricing/post/responses/422"
        "429":
          $ref: "#/paths/~1pricing~1tpl-pricing/post/responses/429"
        "500":
          $ref: "#/paths/~1pricing~1tpl-pricing/post/responses/500"
    get:
      tags:
        - Pricing
      summary: Get combination rules
      description: Get combination rules
      operationId: pricingCombinationRulesGetAll
      security:
        - bearerAuth: []
      parameters:
        - in: query
          name: pricingTypeGroup
          schema:
            $ref: "#/components/schemas/PricingRuleGroup"
          required: false
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/PricingCombinationRulesResponse"
        "400":
          $ref: "#/paths/~1pricing~1tpl-pricing/post/responses/400"
        "401":
          $ref: "#/paths/~1pricing~1tpl-pricing/post/responses/401"
        "403":
          $ref: "#/paths/~1pricing~1priority-rules/get/responses/403"
        "404":
          $ref: "#/paths/~1pricing~1tpl-pricing/post/responses/404"
        "422":
          $ref: "#/paths/~1pricing~1tpl-pricing/post/responses/422"
        "429":
          $ref: "#/paths/~1pricing~1tpl-pricing/post/responses/429"
        "500":
          $ref: "#/paths/~1pricing~1tpl-pricing/post/responses/500"
  "/pricing/combination-rules/{ruleId}":
    get:
      tags:
        - Pricing
      summary: Get a combination rule
      description: Get a combination rule
      operationId: pricingCombinationRuleGet
      security:
        - bearerAuth: []
      parameters:
        - in: path
          name: ruleId
          description: Id of the combination rule to get
          schema:
            type: integer
            format: int64
            example: 12345
          required: true
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/CombinationRule"
        "400":
          $ref: "#/paths/~1pricing~1tpl-pricing/post/responses/400"
        "401":
          $ref: "#/paths/~1pricing~1tpl-pricing/post/responses/401"
        "403":
          $ref: "#/paths/~1pricing~1priority-rules/get/responses/403"
        "404":
          $ref: "#/paths/~1pricing~1tpl-pricing/post/responses/404"
        "422":
          $ref: "#/paths/~1pricing~1tpl-pricing/post/responses/422"
        "429":
          $ref: "#/paths/~1pricing~1tpl-pricing/post/responses/429"
        "500":
          $ref: "#/paths/~1pricing~1tpl-pricing/post/responses/500"
    put:
      tags:
        - Pricing
      summary: Update a combination rule
      description: Update a combination rule
      operationId: pricingCombinationRuleUpdate
      security:
        - bearerAuth: []
      parameters:
        - in: path
          name: ruleId
          description: Id of the combination rule to update
          required: true
          schema:
            type: integer
            format: int64
            example: 12345
      requestBody:
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/PricingCombinationRuleRequest"
        required: true
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/CombinationRule"
        "400":
          $ref: "#/paths/~1pricing~1tpl-pricing/post/responses/400"
        "401":
          $ref: "#/paths/~1pricing~1tpl-pricing/post/responses/401"
        "403":
          $ref: "#/paths/~1pricing~1priority-rules/get/responses/403"
        "404":
          $ref: "#/paths/~1pricing~1tpl-pricing/post/responses/404"
        "422":
          $ref: "#/paths/~1pricing~1tpl-pricing/post/responses/422"
        "429":
          $ref: "#/paths/~1pricing~1tpl-pricing/post/responses/429"
        "500":
          $ref: "#/paths/~1pricing~1tpl-pricing/post/responses/500"
    delete:
      tags:
        - Pricing
      summary: Delete a combination rule
      description: Delete a combination rule
      operationId: pricingCombinationRuleDelete
      security:
        - bearerAuth: []
      parameters:
        - in: path
          name: ruleId
          description: Id of the combination rule to delete
          schema:
            type: integer
            format: int64
            example: 12345
          required: true
      responses:
        "204":
          description: Success
        "400":
          $ref: "#/paths/~1pricing~1tpl-pricing/post/responses/400"
        "401":
          $ref: "#/paths/~1pricing~1tpl-pricing/post/responses/401"
        "403":
          $ref: "#/paths/~1pricing~1priority-rules/get/responses/403"
        "404":
          $ref: "#/paths/~1pricing~1tpl-pricing/post/responses/404"
        "429":
          $ref: "#/paths/~1pricing~1tpl-pricing/post/responses/429"
        "500":
          $ref: "#/paths/~1pricing~1tpl-pricing/post/responses/500"
  /pricing/threshold-rules:
    post:
      tags:
        - Pricing
      summary: Create a threshold rule
      description: Create a min/max threshold rule
      operationId: pricingThresholdRulesCreate
      security:
        - bearerAuth: []
      requestBody:
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/PricingThresholdRuleRequest"
        required: true
      responses:
        "201":
          description: Success
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ThresholdRule"
        "400":
          $ref: "#/paths/~1pricing~1tpl-pricing/post/responses/400"
        "401":
          $ref: "#/paths/~1pricing~1tpl-pricing/post/responses/401"
        "403":
          $ref: "#/paths/~1pricing~1priority-rules/get/responses/403"
        "422":
          $ref: "#/paths/~1pricing~1tpl-pricing/post/responses/422"
        "429":
          $ref: "#/paths/~1pricing~1tpl-pricing/post/responses/429"
        "500":
          $ref: "#/paths/~1pricing~1tpl-pricing/post/responses/500"
    get:
      tags:
        - Pricing
      summary: Get threshold rules
      description: Get min/max threshold rules
      operationId: pricingThresholdRulesGetAll
      security:
        - bearerAuth: []
      parameters:
        - in: query
          name: pricingTypeGroup
          schema:
            $ref: "#/components/schemas/PricingRuleGroup"
          required: false
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/PricingThresholdRulesResponse"
        "400":
          $ref: "#/paths/~1pricing~1tpl-pricing/post/responses/400"
        "401":
          $ref: "#/paths/~1pricing~1tpl-pricing/post/responses/401"
        "403":
          $ref: "#/paths/~1pricing~1priority-rules/get/responses/403"
        "404":
          $ref: "#/paths/~1pricing~1tpl-pricing/post/responses/404"
        "422":
          $ref: "#/paths/~1pricing~1tpl-pricing/post/responses/422"
        "429":
          $ref: "#/paths/~1pricing~1tpl-pricing/post/responses/429"
        "500":
          $ref: "#/paths/~1pricing~1tpl-pricing/post/responses/500"
  "/pricing/threshold-rules/{ruleId}":
    get:
      tags:
        - Pricing
      summary: Get a threshold rule
      description: Get a min/max threshold rule
      operationId: pricingThresholdRuleGet
      security:
        - bearerAuth: []
      parameters:
        - in: path
          name: ruleId
          description: Id of the threshold rule to get
          schema:
            type: integer
            format: int64
            example: 12345
          required: true
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ThresholdRule"
        "400":
          $ref: "#/paths/~1pricing~1tpl-pricing/post/responses/400"
        "401":
          $ref: "#/paths/~1pricing~1tpl-pricing/post/responses/401"
        "403":
          $ref: "#/paths/~1pricing~1priority-rules/get/responses/403"
        "404":
          $ref: "#/paths/~1pricing~1tpl-pricing/post/responses/404"
        "422":
          $ref: "#/paths/~1pricing~1tpl-pricing/post/responses/422"
        "429":
          $ref: "#/paths/~1pricing~1tpl-pricing/post/responses/429"
        "500":
          $ref: "#/paths/~1pricing~1tpl-pricing/post/responses/500"
    put:
      tags:
        - Pricing
      summary: Update a threshold rule
      description: Update a min/max threshold rule
      operationId: pricingThresholdRuleUpdate
      security:
        - bearerAuth: []
      parameters:
        - in: path
          name: ruleId
          description: Id of the threshold rule to update
          required: true
          schema:
            type: integer
            format: int64
            example: 12345
      requestBody:
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/PricingThresholdRuleRequest"
        required: true
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ThresholdRule"
        "400":
          $ref: "#/paths/~1pricing~1tpl-pricing/post/responses/400"
        "401":
          $ref: "#/paths/~1pricing~1tpl-pricing/post/responses/401"
        "403":
          $ref: "#/paths/~1pricing~1priority-rules/get/responses/403"
        "404":
          $ref: "#/paths/~1pricing~1tpl-pricing/post/responses/404"
        "422":
          $ref: "#/paths/~1pricing~1tpl-pricing/post/responses/422"
        "429":
          $ref: "#/paths/~1pricing~1tpl-pricing/post/responses/429"
        "500":
          $ref: "#/paths/~1pricing~1tpl-pricing/post/responses/500"
    delete:
      tags:
        - Pricing
      summary: Delete a threshold rule
      description: Delete a min/max threshold rule
      operationId: pricingThresholdRuleDelete
      security:
        - bearerAuth: []
      parameters:
        - in: path
          name: ruleId
          description: Id of the threshold rule to delete
          schema:
            type: integer
            format: int64
            example: 12345
          required: true
      responses:
        "204":
          description: Success
        "400":
          $ref: "#/paths/~1pricing~1tpl-pricing/post/responses/400"
        "401":
          $ref: "#/paths/~1pricing~1tpl-pricing/post/responses/401"
        "403":
          $ref: "#/paths/~1pricing~1priority-rules/get/responses/403"
        "404":
          $ref: "#/paths/~1pricing~1tpl-pricing/post/responses/404"
        "429":
          $ref: "#/paths/~1pricing~1tpl-pricing/post/responses/429"
        "500":
          $ref: "#/paths/~1pricing~1tpl-pricing/post/responses/500"
  /pricing/tpl-pricing:
    post:
      tags:
        - Pricing
      summary: Calculate pricing, based on TPL data
      description: >
        Returns all pricing suggestions: statistical, rule related, etc. 

        intended for TPL pricing and calculated using TPL data.


        Most of the fields in the request and response are optional.


        Response fields are related to request fields e.g. if you do not provide

        the customer name in the request, there will be no customer related

        pricing data in the response, and the pricing rules that use customer name predicates

        will not be found.


        To get the most possible data in the response, provide all the data you can 

        in the request. However if for example you only need customer related pricing data,

        you can provide only the customer name in the request.


        Also note that if providing addresses, 

        origin and destination country is required.

        The state code can be provided without city and zip, 

        and the city name can be provided without a zip code,

        and the zip code can be provided without a city or a state.

        This will also affect what kind of rules are found and what statistical data

        is calculated and returned.


        Parameter notes:

        * __region__ - defaults to ZIP if not provided
      operationId: pricingTplPricing
      security:
        - bearerAuth: []
      requestBody:
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/PricingRequest"
        required: true
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/PricingResponse"
        "400":
          description: Bad request
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Error"
              examples:
                error400Example:
                  value:
                    code: missing_required_parameter
                    message: Your request was missing a {par_name} parameter
        "401":
          description: Unauthenticated
        "404":
          description: Item not found
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Error"
              examples:
                error404Example:
                  value:
                    code: item_not_found
                    message: Item not found
        "422":
          description: Unprocessable Entity with multiple errors.
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Error422UnprocessableEntityMulti"
              examples:
                error422MultiExample:
                  value:
                    code: request_validation
                    message: You have one or more errors in request structure
                    errors:
                      - field: carrierName
                        message: field contains wrong data type (int), should be string
                        value: "22"
                      - field: shipperId
                        message: "shipperId: must not be null"
                        value: null
                      - field: loadSource.loadId
                        message: "loadId: must not be null"
                        value: null
        "424":
          description: Failed Dependency.
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Error"
              examples:
                error424Example:
                  value:
                    code: distance_calculation_error
                    message: "Unable to calculate distance between zips {key}, reason:  {exc}"
        "429":
          description: Too Many Requests
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Error"
              examples:
                error429TooManyRequests:
                  value:
                    code: too_many_requests
                    message: Request limit exceeded
        "500":
          description: Unhandled server error
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Error"
              examples:
                error500Example:
                  value:
                    code: internal_error
                    message: Internal server error
  /pricing/marketplace/my-broker-partners:
    post:
      tags:
        - Pricing
      summary: Get sell rates of partner brokers
      description: |
        Intended to be used by a shipper-broker marketplace (a.k.a Shipper TMS).

        Returns a list of brokers that confirmed that they want to work with
        the marketplace that is requesting the rates.

        Each broker in the list will contain a sell rate that they are
        willing to move the load for
      operationId: pricingMarketplaceMyBrokerPartners
      security:
        - bearerAuth: []
      requestBody:
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/PricingMarketplaceMyBrokerPartnersRequest"
        required: true
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/PricingMarketplaceMyBrokerPartnersResponse"
        "400":
          $ref: "#/paths/~1pricing~1tpl-pricing/post/responses/400"
        "401":
          $ref: "#/paths/~1pricing~1tpl-pricing/post/responses/401"
        "404":
          $ref: "#/paths/~1pricing~1tpl-pricing/post/responses/404"
        "422":
          $ref: "#/paths/~1pricing~1tpl-pricing/post/responses/422"
        "424":
          $ref: "#/paths/~1pricing~1tpl-pricing/post/responses/424"
        "429":
          $ref: "#/paths/~1pricing~1tpl-pricing/post/responses/429"
        "500":
          $ref: "#/paths/~1pricing~1tpl-pricing/post/responses/500"
components:
  securitySchemes:
    bearerAuth:
      type: http
      scheme: bearer
      bearerFormat: JWT
  schemas:
    PricingStatistics:
      type: object
      description: Statistical pricing percentages based on your historical load data
      properties:
        average:
          type: number
          description: Average pricing percentage
          example: 11
        minimum:
          type: number
          description: Minimum pricing percentage
          example: 10
        maximum:
          type: number
          description: Maximum pricing percentage
          example: 13
      required:
        - average
        - minimum
        - maximum
    PricingStatisticsCalculation:
      type: object
      description: |
        Contains historical pricing statistics 
        and if possible a calculated `targetSellCost`
      properties:
        pricing:
          $ref: "#/components/schemas/PricingStatistics"
        targetSellCost:
          type: number
          example: 1250
          description: |
            Flat target sell cost calculated by applying the rule
            to the provided flat buy cost
      required:
        - pricing
    PricingPriorityRuleRequest:
      type: object
      properties:
        name:
          type: string
          description: Name of the rule
          example: Customer`s rule
        priority:
          type: integer
          description: Priority of the rule
          example: 3
        active:
          type: boolean
          description: Status of the rule
          example: false
        conditions:
          $ref: "#/components/schemas/RuleRequestConditions"
        effects:
          $ref: "#/components/schemas/PriorityRuleEffectsInput"
        pricingTypeGroup:
          $ref: "#/components/schemas/PricingRuleGroup"
      required:
        - name
        - priority
        - active
        - conditions
        - effects
    RuleRequestConditions:
      type: object
      description: |
        Conditions in which this rule is applicable.

        When multuple conditions are provided the rule is only applied 
        if all of them are met.
      properties:
        commodity:
          type: array
          description: >
            List of commodities to which the rule is applicable.

            At least one commodity from this list has to match for the rule to apply
          items:
            type: string
          example:
            - Apples
        confidenceLevel:
          $ref: "#/components/schemas/ConfidenceLevelRange"
        customers:
          type: array
          description: >
            List of customers to which the rule is applicable. 

            At least one customer from this list has to match for the rule to apply.
          items:
            type: string
            description: Customer name
          example:
            - LTR and Co
            - CocaCola
            - Walmart
        lanes:
          type: array
          description: |
            List of lanes to which the rule is applicable. 
            At least one lane from this list has to match for the rule to apply.
          items:
            $ref: "#/components/schemas/RuleRequestLane"
        lengthOfHaul:
          $ref: "#/components/schemas/LengthOfHaulRange"
        matchingTime:
          $ref: "#/components/schemas/MatchingTimeRange"
        transitTime:
          $ref: "#/components/schemas/TransitTimeRange"
        transportTypes:
          type: array
          maxItems: 3
          description: >
            List of transport types to which the rule is applicable.

            At least one transport type from this list has to match for the rule to apply
          items:
            $ref: "#/components/schemas/TransportType"
        users:
          type: array
          description: |
            List of users to whom the rule is applicable. 
            At least one user from this list has to match for the rule to apply
          items:
            type: string
        weight:
          $ref: "#/components/schemas/WeightRange"
        stopsCount:
          $ref: "#/components/schemas/StopsCountRange"
        mileageDifference:
          $ref: "#/components/schemas/MileageDifferenceRange"
        volumeFrequency:
          $ref: "#/components/schemas/VolumeFrequency"
        loadingTypes:
          type: array
          maxItems: 4
          description: >
            List of loading types (load/unload methods) to which the rule is
            applicable.

            At least one loading type from this list has to match for the rule to apply.
          items:
            $ref: "#/components/schemas/LoadingType"
        contractLength:
          $ref: "#/components/schemas/ContractLengthRange"
        dateCondition:
          $ref: "#/components/schemas/DateCondition"
    RuleRequestLane:
      type: object
      description: A lane that the rule is applicable to
      properties:
        origins:
          $ref: "#/components/schemas/RuleRequestLocations"
        destinations:
          $ref: "#/components/schemas/RuleRequestLocations"
      required:
        - origins
        - destinations
    RuleRequestLocations:
      type: array
      description: A list of locations that the rule is applicable to
      items:
        $ref: "#/components/schemas/RuleRequestLocation"
      example:
        - type: ANYWHERE
        - type: STATE
          country: US
          state: IL
        - type: CITY
          country: US
          state: IL
          city: Chicago
        - type: MARKET
          country: US
          marketCode: NY_ALB
    RuleRequestLocation:
      type: object
      description: Lane stop
      properties:
        type:
          type: string
          enum:
            - ANYWHERE
            - STATE
            - CITY
            - MARKET
          example: ANYWHERE
          description: |
            The location type. 

            For type ANYWHERE no fields are required.

            For type STATE - "country" and "state" fields are required.

            For type CITY - "country", "state" and "city" fields are required.

            For type MARKET - "country" and "marketCode" fields are required.
        country:
          type: string
          description: Two letter country code in ISO 3166-1 alpha-2 format
          example: US
        state:
          type: string
          description: State
          example: NY
        city:
          type: string
          description: City
          example: Schenectady
        marketCode:
          type: string
          description: Market code
          example: NY_ALB
      required:
        - type
    PriorityRuleCalculation:
      type: object
      description: |
        Contains an applicable priority rule 
        and if possible a calculated `targetSellCost`
      properties:
        rule:
          $ref: "#/components/schemas/PriorityRule"
        targetSellCost:
          type: number
          example: 1250
          description: |
            Flat target sell cost calculated by applying the rule
            to the provided flat buy cost
      required:
        - rule
    PricingCombinationRuleRequest:
      type: object
      properties:
        name:
          type: string
          description: Name of the rule
          example: Customer`s rule
        active:
          type: boolean
          description: Status of the rule
       

# --- truncated at 32 KB (86 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/green-screens-ai/refs/heads/main/openapi/green-screens-ai-pricing-api-openapi.yml