Skip to content

overlane operator discounts grant

Grant a workspace an open-source or startup discount (Overlane staff)

Updated View as MarkdownOpen in ChatGPTOpen in Claude

Grants the workspace a discount of kind open_source or startup: open_source takes 100 percent off the Team plan, startup takes 50 percent off. The percentage comes from the kind. A second grant replaces the first. Each grant is written to the audit log before it takes effect. Only the Overlane staff team can call it.

Usage

overlane operator discounts grant --team TEAM_ID --kind KIND [--note TEXT] [--service URL] [--dry-run]

Flags

Flag Type Required Default Description
--team string yes The workspace the discount is for
--kind one of open_source, startup yes open_source or startup
--note string no Why, up to 500 characters (for example the repository or program)
--service string no The service address (default: OVERLANE_SERVICE_URL, then the project’s binding, then the hosted service)
--dry-run boolean no Print the requests and file changes this command would make, then stop. Needs no credentials.

Examples

overlane operator discounts grant --team tm-1234 --kind startup --note "program 2026"
overlane operator discounts grant --team tm-1234 --kind open_source --dry-run

Behavior

  • Effect: write (changes local or hosted state).
  • Needs credentials: yes. Uses the network: yes.
  • Supports --dry-run: yes. Accepts --force: no.
  • Machine-readable description: overlane schema operator discounts grant.

Result

With --json (the default when stdout is not a terminal) the command prints this JSON Schema’s shape on stdout.

{
  "anyOf": [
    {
      "type": "object",
      "properties": {
        "tenantId": {
          "type": "string",
          "minLength": 1,
          "maxLength": 128,
          "pattern": "^[A-Za-z0-9][A-Za-z0-9_.:-]*$",
          "description": "tenant identifier"
        },
        "kind": {
          "type": "string",
          "enum": [
            "open_source",
            "startup"
          ]
        },
        "percentOff": {
          "type": "integer",
          "minimum": 1,
          "maximum": 100
        },
        "grantedBy": {
          "type": "string",
          "minLength": 1
        },
        "grantedAt": {
          "type": "string",
          "format": "date-time",
          "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
        },
        "note": {
          "type": "string",
          "maxLength": 500
        }
      },
      "required": [
        "tenantId",
        "kind",
        "percentOff",
        "grantedBy",
        "grantedAt"
      ],
      "additionalProperties": false
    },
    {
      "type": "object",
      "properties": {
        "dryRun": {
          "type": "boolean",
          "const": true
        },
        "service": {
          "type": "string"
        },
        "requests": {
          "type": "array",
          "items": {
            "type": "object",
            "properties": {
              "method": {
                "type": "string"
              },
              "path": {
                "type": "string"
              },
              "body": {},
              "note": {
                "type": "string"
              }
            },
            "required": [
              "method",
              "path"
            ],
            "additionalProperties": false
          }
        },
        "commands": {
          "type": "array",
          "items": {
            "type": "string"
          }
        },
        "writes": {
          "type": "array",
          "items": {
            "type": "object",
            "properties": {
              "path": {
                "type": "string"
              },
              "action": {
                "type": "string",
                "enum": [
                  "write",
                  "append",
                  "delete"
                ]
              },
              "description": {
                "type": "string"
              }
            },
            "required": [
              "path",
              "action",
              "description"
            ],
            "additionalProperties": false
          }
        },
        "notes": {
          "type": "array",
          "items": {
            "type": "string"
          }
        }
      },
      "required": [
        "dryRun",
        "requests",
        "commands",
        "writes",
        "notes"
      ],
      "additionalProperties": false
    }
  ]
}

See exit codes for the status the process returns.

Navigation

Type to search…

↑↓ navigate↵ selectEsc close

Overlane Agent

Ask about the docs. Answers are quoted from the pages, with links. This panel cannot change anything.

    Questions are answered in your browser from the docs index. Nothing you type here is stored or sent anywhere.