---
title: "Create Mission Request From Intent"
method: POST
path: "/api/v1/mission-intents"
tags: ["mission requests"]
---

# Create Mission Request From Intent

`POST /api/v1/mission-intents`

## Request

- Base URL: `https://api.brumby.com` (the document declares no server; this is the origin it was published from)
- URL: `https://api.brumby.com/api/v1/mission-intents`
- Auth: HTTP bearer

THE TESTING DOOR: intent in, a canonical mission request out.

The profile is decided here from the device and the caller, the world from the
profile (the customer's own data for a rehearsal, FleetOps' cache otherwise), and
the mission by the one builder. A refusal names what could not be resolved.

## Headers

- `Idempotency-Key` string, nullable

## Request body

- MissionIntentRequest: What an operator asks for, in the farm's words. The server builds the mission. `profile` may only ask for `rehearsal`: a production-equivalent build over the customer's own farm data, launched at this device. Every other profile is the device's own (`fleetops/missions/profiles.profile_for`), and `production` is the customer system's door alone.
  - `farm_id` string, required
  - `device_id` string, required
  - `mission_id` string, nullable
  - `purpose` 'commercial' | 'testing'
  - `profile` 'rehearsal', nullable
  - `intent` union, required
    - MusterIntent
      - `notes` unknown
      - `operation_label` string, nullable
      - `geofence` object, nullable
      - `mode` 'muster'
      - `source` PaddockRef, required: A paddock by name, by the customer's id, or both. The builder resolves it.
        - `name` string, nullable
        - `id` string, nullable
      - `destination` PaddockRef: A paddock by name, by the customer's id, or both. The builder resolves it.
        - `name` string, nullable
        - `id` string, nullable
      - `gate` GateSelection: A gate someone chose: the farmer on the phone, an engineer on a map.
        - `latitude` number, required
        - `longitude` number, required
      - `mob` MobRef
        - `name` string, nullable
        - `id` string, nullable
      - `parameters` union
        - object
        - unknown[]
          - unknown
    - SurveyIntent
      - `notes` unknown
      - `operation_label` string, nullable
      - `geofence` object, nullable
      - `mode` 'survey'
      - `paddock` PaddockRef, required: A paddock by name, by the customer's id, or both. The builder resolves it.
        - `name` string, nullable
        - `id` string, nullable
      - `herdview_pipeline` boolean, nullable
      - `include_thermal` boolean, nullable
      - `pre_live_count` boolean, nullable
      - `detector_mode` string, nullable
      - `upload_complete_key` string, nullable
      - `parameters` union
        - object
        - unknown[]
          - unknown
    - PointSurveyIntent
      - `notes` unknown
      - `operation_label` string, nullable
      - `geofence` object, nullable
      - `mode` 'point_survey'
      - `spot` SpotRef
        - `name` string, nullable
        - `id` string, nullable
      - `target` TargetPoint
        - `latitude` number, required
        - `longitude` number, required
        - `altitude` number, nullable
      - `parameters` union
        - object
        - unknown[]
          - unknown
    - FlightPlanIntent
      - `notes` unknown
      - `operation_label` string, nullable
      - `geofence` object, nullable
      - `mode` 'flight_plan'
      - `flight_plan` object, required
      - `plan` PlanRef: A frozen mission-plan revision. The builder copies its flight plan verbatim.
        - `plan_id` string, required
        - `revision` integer, required
  - `mission_plan_id` string, uuid, nullable
  - `mission_plan_revision` integer, nullable

## Response `201`

Successful Response

- MissionRequestResponse
  - `execution_type` 'deployment' | 'hitl' | 'sitl'
  - `simulation` object, nullable
  - `request_id` string, uuid, required
  - `purpose` 'commercial' | 'testing'
  - `execution_profile` string, nullable
  - `origin` string, nullable
  - `readiness` string, nullable
  - `schema_version` string, nullable
  - `farm_id` string, required
  - `device_id` string, nullable, required
  - `mission_id` string, required
  - `mission_plan_id` string, uuid, nullable
  - `mission_plan_revision` integer, nullable
  - `config_sha256` string, required
  - `state` string, required
  - `requested_for` string, date-time, nullable, required
  - `requested_at` string, date-time, required
  - `requested_by` string, required
  - `action_id` string, uuid, nullable, required
  - `decided_at` string, date-time, nullable, required
  - `decided_by` string, nullable, required
  - `decision_note` string, nullable, required
  - `config_check` MissionConfigCheck, required: What the dock would find missing or invalid in the config as asked.
    - `ok` boolean, required
    - `missing` string[], required
    - `invalid` string[], required
  - `preparation_config_check` MissionConfigCheck, required: What the dock would find missing or invalid in the config as asked.
    - `ok` boolean, required
    - `missing` string[], required
    - `invalid` string[], required
  - `flight_record_id` string, uuid, nullable, required
  - `stage_failed` boolean, required
  - `preflight_overrides` LaunchOverrideRecord[], nullable
    - `check` string, required
    - `reason` string, required
    - `by` string, required
    - `at` string, date-time, required
  - `dock_position` DockPositionView: Where the launching dock says it is, and what is wrong with that. `services/dock_position`. `position` is `{latitude, longitude}` as the dock reported it whatever its provenance or age, so a pilot can be shown what an override would stamp. A dock that has reported none has `overridable` false and no reason unlocks it: the aircraft refuses a mission with no `base_stations[0]`, so there would be nothing to fly.
    - `position` object, nullable, required
    - `simulated` boolean, required
    - `stale` boolean, required
    - `age_s` number, nullable, required
    - `overridable` boolean, required
    - `source` string, nullable
    - `line` string, nullable
  - `dock_aircraft` DockAircraftCheckView: Whether the aircraft's own fix agrees with the dock position LAUNCH would stamp. `services/dock_aircraft_position`, computed on read without any pilot override. `state` is `ok`, `mismatch`, `no_aircraft_position` (refuses: no fresh 3D aircraft fix), or `not_checked` (no dock position to compare, or a simulated aircraft that is not publishing one). `detail` is the pilot's sentence when it refuses.
    - `state` 'ok' | 'mismatch' | 'no_aircraft_position' | 'not_checked', required
    - `distance_m` number, nullable, required
    - `max_distance_m` number, required
    - `detail` string, nullable, required
    - `overridable` boolean, required
  - `preparation` MissionPreparation, required
    - `state` 'needs_preparation' | 'awaiting_signoff' | 'ready' | 'invalidated' | 'active' | 'complete', required
    - `reason` string, nullable
    - `record_id` string, uuid, nullable
    - `prepared_at` string, date-time, nullable
    - `prepared_by` string, nullable
  - `rig_manifest` object, nullable

## Other responses

- `422`: Validation Error

---

[API](https://skmtc.dev/brumby/apis/brumby-platform-api.md) - [All operations](https://skmtc.dev/brumby/apis/brumby-platform-api/llms.txt) - [OpenAPI document](https://skmtc.dev/brumby/apis/brumby-platform-api/revisions/fe185e20813e?raw)
