Publish Object

Use PublishObject to create or update a single Object. The operation is an upsert: an existing object.id updates that Object, a new object.id creates a new Object, and an omitted ID lets the service assign one.

Lifecycle Operations

Operation How to model it

Create

Omit object.id or provide a new unique ID.

Update

Provide an existing object.id with the fields that are known and relevant.

Delete

Publish the Object with status set to OBJECT_STATUS_DELETED.

Publish Guidance

  • Include provenance.updated_at on every publish.

  • Populate only fields that are known for the represented Object.

  • Prefer domain-specific type_info and strongly typed fields over generic details.

  • Do not send zero/default values for unknown data.

  • Use PublishObjects (client-streaming RPC) only when you need high-throughput batch publishing.

Minimal Shape

{
  "object": {
    "name": "TRACK-4721",
    "status": "OBJECT_STATUS_ACTIVE",
    "location": {
      "position": {
        "latitude_degrees": 36.12,
        "longitude_degrees": 42.88
      }
    },
    "assessment": {
      "affiliation": "AFFILIATION_HOSTILE"
    },
    "provenance": {
      "name": "radar-feed",
      "updated_at": "2026-04-15T10:30:10Z"
    }
  }
}

Use Search for paginated snapshot queries. Use Get when you already know the Object ID. Use Stream for live updates.