Cedarai LindaService API

The LindaService API from Cedarai — 9 operation(s) for lindaservice.

OpenAPI Specification

cedarai-lindaservice-api-openapi.yml Raw ↑
openapi: 3.0.1
info:
  title: protobuf/arms/charge.proto ChargeService LindaService API
  version: version not set
servers:
- description: Production (US)
  url: https://api-lg-k-h1.arms.cedarai.com
- description: Production (EU)
  url: https://api-lg-k-h1.arms.cedarai.se
security:
- ApiKeyAuth: []
  AssumeUserAuth: []
tags:
- name: LindaService
paths:
  /v1/notes/search-references:
    post:
      tags:
      - LindaService
      summary: Search referenceable entities for mentions
      description: Searches across all configured entity types in parallel and returns the top N matches per type. Used by the note editor's `@`-mention typeahead to look up equipment, shipments, customers, waybills, work orders, invoices, etc. by identifier or display text.
      operationId: SearchReferences
      parameters:
      - description: Carrier ID the request is scoped to.
        in: header
        name: Carrier
        required: true
        schema:
          type: string
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/lindaSearchReferencesReq'
        description: 'Request for the `@`-mention typeahead. Searches across configured entity

          types in parallel and returns the top N matches per type. Use the result

          fields to construct the inline `<<ref:...>>` token in your note''s

          `content` and the matching `NoteReference` entry in `references`.'
        required: true
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/lindaSearchReferencesResp'
          description: A successful response.
        default:
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/rpcStatus'
          description: An unexpected error response.
      security:
      - ApiKeyAuth: []
        AssumeUserAuth: []
  /v1/notes/batch-get-summaries:
    post:
      tags:
      - LindaService
      summary: Batch get note summaries
      description: Returns note summaries for many entities in one round trip. Designed for list/grid pages that show a notes-count column. Entities with zero notes are omitted from the response.
      operationId: BatchGetNoteSummaries
      parameters:
      - description: Carrier ID the request is scoped to.
        in: header
        name: Carrier
        required: true
        schema:
          type: string
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/lindaBatchGetNoteSummariesReq'
        required: true
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/lindaBatchGetNoteSummariesResp'
          description: A successful response.
        default:
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/rpcStatus'
          description: An unexpected error response.
      security:
      - ApiKeyAuth: []
        AssumeUserAuth: []
  /v1/notes/list:
    post:
      tags:
      - LindaService
      summary: List notes
      description: Returns notes on a given entity in descending chronological order (newest first). Supports cursor-based pagination via `page_size` and `page_token`. When both `referenced_entity_type` and `referenced_entity_id` are set, the request switches to reverse-lookup mode (notes mentioning the given entity), capped at 100 results without pagination.
      operationId: ListNotes
      parameters:
      - description: Carrier ID the request is scoped to.
        in: header
        name: Carrier
        required: true
        schema:
          type: string
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/lindaListNotesReq'
        required: true
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/lindaListNotesResp'
          description: A successful response.
        default:
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/rpcStatus'
          description: An unexpected error response.
      security:
      - ApiKeyAuth: []
        AssumeUserAuth: []
  /v1/notes/delete:
    post:
      tags:
      - LindaService
      summary: Delete a note
      description: Soft-deletes a note. The row is retained for audit but excluded from all reads. Owners may always delete; non-owners require the `linda.notes.deleteAny` permission.
      operationId: DeleteNote
      parameters:
      - description: Carrier ID the request is scoped to.
        in: header
        name: Carrier
        required: true
        schema:
          type: string
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/lindaDeleteNoteReq'
        required: true
      responses:
        '200':
          content:
            application/json:
              schema:
                type: object
          description: A successful response.
        default:
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/rpcStatus'
          description: An unexpected error response.
      security:
      - ApiKeyAuth: []
        AssumeUserAuth: []
  /v1/notes/search:
    post:
      tags:
      - LindaService
      summary: Search notes (full-text)
      description: Full-text search across all notes for the carrier, ranked by Postgres `ts_rank`. Returns `<mark>`-highlighted snippets via `ts_headline`. The index strips `<<ref:...>>` reference token wrappers and normalizes hashtag-group syntax (`#group(content)`) so chip text and automation-written hashtag content are searchable as plain words.
      operationId: SearchNotes
      parameters:
      - description: Carrier ID the request is scoped to.
        in: header
        name: Carrier
        required: true
        schema:
          type: string
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/lindaSearchNotesReq'
        required: true
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/lindaSearchNotesResp'
          description: A successful response.
        default:
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/rpcStatus'
          description: An unexpected error response.
      security:
      - ApiKeyAuth: []
        AssumeUserAuth: []
  /v1/notes/get-summary:
    post:
      tags:
      - LindaService
      summary: Get note summary for one entity
      description: 'Returns a one-row summary for a single entity: total note count and the latest note. Use this to populate badges/counters without fetching the full thread.'
      operationId: GetNoteSummary
      parameters:
      - description: Carrier ID the request is scoped to.
        in: header
        name: Carrier
        required: true
        schema:
          type: string
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/lindaGetNoteSummaryReq'
        required: true
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/lindaGetNoteSummaryResp'
          description: A successful response.
        default:
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/rpcStatus'
          description: An unexpected error response.
      security:
      - ApiKeyAuth: []
        AssumeUserAuth: []
  /v1/notes/create:
    post:
      tags:
      - LindaService
      summary: Create a note
      description: Creates a new threaded note on an entity (shipment, equipment, waybill, etc.). The caller's verified identity (from JWT or assumed user) becomes the note author. Reference tokens (`<<ref:type:id:displayText>>`) embedded in `content` should also be supplied as structured `references` for reverse-lookup.
      operationId: CreateNote
      parameters:
      - description: Carrier ID the request is scoped to. Notes are isolated per carrier.
        in: header
        name: Carrier
        required: true
        schema:
          type: string
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/lindaCreateNoteReq'
        required: true
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/lindaCreateNoteResp'
          description: A successful response.
        default:
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/rpcStatus'
          description: An unexpected error response.
      security:
      - ApiKeyAuth: []
        AssumeUserAuth: []
  /v1/notes/update:
    post:
      tags:
      - LindaService
      summary: Update a note
      description: Edits an existing note's content and (optionally) its references. Owners may always edit; non-owners require the `linda.notes.editAny` permission. Set `update_references=true` to replace the prior reference set; otherwise prior references are preserved.
      operationId: UpdateNote
      parameters:
      - description: Carrier ID the request is scoped to.
        in: header
        name: Carrier
        required: true
        schema:
          type: string
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/lindaUpdateNoteReq'
        required: true
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/lindaUpdateNoteResp'
          description: A successful response.
        default:
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/rpcStatus'
          description: An unexpected error response.
      security:
      - ApiKeyAuth: []
        AssumeUserAuth: []
  /v1/notes/summarize-entity:
    post:
      tags:
      - LindaService
      summary: AI summary of a note thread
      description: 'Generates a one-paragraph AI summary of the note thread for an entity. Synchronous LLM call — expect 2 to 6 seconds latency. Cache results client-side if you display them frequently; the response is not cached server-side.


        **Billing:** This endpoint invokes a Cedar.AI language model and is billed under AI pricing. The other notes endpoints (`/v1/notes/list`, `/v1/notes/create`, `/v1/notes/search`, etc.) are not AI-backed and follow standard API metering.'
      operationId: SummarizeEntityNotes
      parameters:
      - description: Carrier ID the request is scoped to.
        in: header
        name: Carrier
        required: true
        schema:
          type: string
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/lindaSummarizeEntityNotesReq'
        required: true
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/lindaSummarizeEntityNotesResp'
          description: A successful response.
        default:
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/rpcStatus'
          description: An unexpected error response.
      security:
      - ApiKeyAuth: []
        AssumeUserAuth: []
components:
  schemas:
    lindaSummarizeEntityNotesReq:
      properties:
        entity_id:
          description: Entity ID whose note thread to summarize.
          type: string
        entity_type:
          description: Entity type whose note thread to summarize.
          type: string
      type: object
    lindaReferenceSearchResultEntry:
      description: 'One match from `SearchReferences`. The fields map directly onto a

        `NoteReference`: copy `entity_type`, `entity_id`, and `display_text`

        when building a request to `CreateNote`/`UpdateNote`, and embed the

        inline token `<<ref:{entity_type}:{entity_id}:{display_text}>>` in

        the note `content` at the cursor position.'
      properties:
        display_text:
          description: 'Primary label for the chip (e.g. `BNSF 54321`, `Acme Corp`). Copy

            verbatim into `NoteReference.display_text`.'
          type: string
        entity_id:
          description: ID of the matched entity. Copy verbatim into `NoteReference.entity_id`.
          type: string
        entity_type:
          description: 'Type of the matched entity (e.g. `equipment`, `shipment`, `customer`).

            Copy verbatim into `NoteReference.entity_type`.'
          type: string
        score:
          description: 'Provider-supplied relevance score (higher = better match). Results

            are returned in descending score order.'
          format: float
          type: number
        subtitle:
          description: 'Secondary line shown under `display_text` in the typeahead

            (e.g. equipment ICHR time, carrier code, or grouping type).'
          type: string
        url:
          description: Optional pre-resolved URL for the entity's detail page.
          type: string
      type: object
    lindaNoteAttachmentUpload:
      description: 'Metadata describing a file the client intends to attach. Currently

        reserved for future inline-upload support on `CreateNote`/`UpdateNote`;

        for now, attach files via `UploadNoteAttachment` (or

        `GetNoteAttachmentUploadUrl` for files larger than 50 MiB).'
      properties:
        file_name:
          description: Filename to record on the attachment.
          type: string
        media_type:
          description: MIME type of the file (e.g. `image/png`, `application/pdf`).
          type: string
        size_bytes:
          description: Size of the file in bytes.
          format: int64
          type: string
      type: object
    lindaCreateNoteResp:
      properties:
        note:
          $ref: '#/components/schemas/lindaNoteEntry'
      type: object
    lindaBatchGetNoteSummariesReq:
      properties:
        entities:
          description: 'Entities to fetch summaries for. The server groups by entity type

            internally and runs one SQL query per type. No hard cap on the

            number of entries, but practical limits apply (page sizes of a few

            hundred entities per request are typical).'
          items:
            $ref: '#/components/schemas/lindaEntityRef'
          type: array
      type: object
    lindaListNotesResp:
      properties:
        next_page_token:
          description: 'Opaque cursor for the next page. Empty when there are no more

            results, or always empty in reverse-lookup mode (which caps at 100

            results without paging). Pass back as `page_token` on the next

            request.'
          type: string
        notes:
          description: 'Notes for the requested entity in descending chronological order

            (newest first). Each entry has resolved attachments and references

            with `is_stale` populated.'
          items:
            $ref: '#/components/schemas/lindaNoteEntry'
          type: array
      type: object
    lindaSearchNotesReq:
      properties:
        entity_type:
          description: 'Restrict results to one entity type (e.g. `shipment`). Empty string

            searches all entity types for the carrier.'
          type: string
        page_size:
          description: Page size for cursor pagination. Defaults to 20 if unset or zero.
          format: int32
          type: integer
        page_token:
          description: Opaque cursor from a previous response's `next_page_token`.
          type: string
        query:
          description: 'Free-text query. Tokenized via Postgres `plainto_tsquery(''english'',

            ...)`. Entity reference chips and `#group(content)` hashtag syntax

            are normalized server-side so chip text and automation-written

            hashtag content are searchable as plain words. Empty query returns

            an empty result set.'
          type: string
      type: object
    lindaSearchNotesResp:
      properties:
        next_page_token:
          description: 'Opaque cursor for the next page. Empty when there are no more

            results. Pass back as `page_token` on the next request.'
          type: string
        results:
          description: Matching notes ordered by `score` descending.
          items:
            $ref: '#/components/schemas/lindaSearchNoteResult'
          type: array
        total_count:
          description: 'Total matching notes across all pages — useful for displaying

            "showing X of Y results" labels.'
          format: int32
          type: integer
      type: object
    lindaNoteSummaryEntry:
      description: 'One row of summary data for a single entity, returned by

        `GetNoteSummary` and `BatchGetNoteSummaries`. Designed for list-page

        badges and counters.'
      properties:
        entity_id:
          description: The entity ID these summary numbers describe.
          type: string
        entity_type:
          description: The entity these summary numbers describe.
          type: string
        latest_note:
          $ref: '#/components/schemas/lindaNoteEntry'
        total_count:
          description: Total non-deleted notes on this entity.
          format: int32
          type: integer
      type: object
    lindaListNotesReq:
      properties:
        entity_id:
          description: Host entity ID. Required in default mode; ignored in reverse-lookup mode.
          type: string
        entity_type:
          description: 'Host entity to list notes for. Required in default mode; ignored in

            reverse-lookup mode (see `referenced_entity_type` below).'
          type: string
        page_size:
          description: Page size for cursor pagination. Unset/zero disables paging.
          format: int32
          type: integer
        page_token:
          description: Opaque cursor from a previous response's `next_page_token`.
          type: string
        referenced_entity_id:
          description: Pair with `referenced_entity_type`. See above.
          type: string
        referenced_entity_type:
          description: "Reverse-lookup mode: when both `referenced_entity_type` and\n`referenced_entity_id` are set, returns notes whose `references`\ninclude this `(entity_type, entity_id)` pair — i.e. notes that\nmentioned this entity via `<<ref:...>>`. Hard-capped at 100 results,\npagination is disabled in this mode.\n\nExample: to list every note that mentions equipment `54321`:\n\n    {\n      \"referenced_entity_type\": \"equipment\",\n      \"referenced_entity_id\":   \"54321\"\n    }"
          type: string
      type: object
    protobufAny:
      additionalProperties:
        type: object
      description: "`Any` contains an arbitrary serialized protocol buffer message along with a\nURL that describes the type of the serialized message.\n\nProtobuf library provides support to pack/unpack Any values in the form\nof utility functions or additional generated methods of the Any type.\n\nExample 1: Pack and unpack a message in C++.\n\n    Foo foo = ...;\n    Any any;\n    any.PackFrom(foo);\n    ...\n    if (any.UnpackTo(&foo)) {\n      ...\n    }\n\nExample 2: Pack and unpack a message in Java.\n\n    Foo foo = ...;\n    Any any = Any.pack(foo);\n    ...\n    if (any.is(Foo.class)) {\n      foo = any.unpack(Foo.class);\n    }\n    // or ...\n    if (any.isSameTypeAs(Foo.getDefaultInstance())) {\n      foo = any.unpack(Foo.getDefaultInstance());\n    }\n\n Example 3: Pack and unpack a message in Python.\n\n    foo = Foo(...)\n    any = Any()\n    any.Pack(foo)\n    ...\n    if any.Is(Foo.DESCRIPTOR):\n      any.Unpack(foo)\n      ...\n\n Example 4: Pack and unpack a message in Go\n\n     foo := &pb.Foo{...}\n     any, err := anypb.New(foo)\n     if err != nil {\n       ...\n     }\n     ...\n     foo := &pb.Foo{}\n     if err := any.UnmarshalTo(foo); err != nil {\n       ...\n     }\n\nThe pack methods provided by protobuf library will by default use\n'type.googleapis.com/full.type.name' as the type URL and the unpack\nmethods only use the fully qualified type name after the last '/'\nin the type URL, for example \"foo.bar.com/x/y.z\" will yield type\nname \"y.z\".\n\nJSON\n====\nThe JSON representation of an `Any` value uses the regular\nrepresentation of the deserialized, embedded message, with an\nadditional field `@type` which contains the type URL. Example:\n\n    package google.profile;\n    message Person {\n      string first_name = 1;\n      string last_name = 2;\n    }\n\n    {\n      \"@type\": \"type.googleapis.com/google.profile.Person\",\n      \"firstName\": <string>,\n      \"lastName\": <string>\n    }\n\nIf the embedded message type is well-known and has a custom JSON\nrepresentation, that representation will be embedded adding a field\n`value` which holds the custom JSON in addition to the `@type`\nfield. Example (for message [google.protobuf.Duration][]):\n\n    {\n      \"@type\": \"type.googleapis.com/google.protobuf.Duration\",\n      \"value\": \"1.212s\"\n    }"
      properties:
        '@type':
          description: "A URL/resource name that uniquely identifies the type of the serialized\nprotocol buffer message. This string must contain at least\none \"/\" character. The last segment of the URL's path must represent\nthe fully qualified name of the type (as in\n`path/google.protobuf.Duration`). The name should be in a canonical form\n(e.g., leading \".\" is not accepted).\n\nIn practice, teams usually precompile into the binary all types that they\nexpect it to use in the context of Any. However, for URLs which use the\nscheme `http`, `https`, or no scheme, one can optionally set up a type\nserver that maps type URLs to message definitions as follows:\n\n* If no scheme is provided, `https` is assumed.\n* An HTTP GET on the URL must yield a [google.protobuf.Type][]\n  value in binary format, or produce an error.\n* Applications are allowed to cache lookup results based on the\n  URL, or have them precompiled into a binary to avoid any\n  lookup. Therefore, binary compatibility needs to be preserved\n  on changes to types. (Use versioned type names to manage\n  breaking changes.)\n\nNote: this functionality is not currently available in the official\nprotobuf release, and it is not used for type URLs beginning with\ntype.googleapis.com. As of May 2023, there are no widely used type server\nimplementations and no plans to implement one.\n\nSchemes other than `http`, `https` (or the empty scheme) might be\nused with implementation specific semantics."
          type: string
      type: object
    lindaSearchNoteResult:
      description: One match returned from `SearchNotes`.
      properties:
        content_snippet:
          description: 'Highlighted snippet from `ts_headline` containing only `<mark>`

            tags around matched terms. **Sanitize before rendering as HTML**:

            escape all other HTML, then re-allow `<mark>` tags only.'
          type: string
        created_at:
          format: date-time
          type: string
        created_by_name:
          description: Display name of the note's author at the time the note was written.
          type: string
        entity_id:
          description: Host entity ID the note was attached to.
          type: string
        entity_type:
          description: Host entity type the note was attached to.
          type: string
        note_id:
          description: ID of the matched note.
          type: string
        score:
          description: Postgres `ts_rank` relevance score (higher is more relevant).
          format: float
          type: number
      type: object
    lindaNoteReference:
      description: "A structured reference to another Cedar entity from inside a note. References\nare how `@`-mentions persist: each chip in the editor becomes both an inline\ntoken in `NoteEntry.content` (e.g. `<<ref:equipment:54321:BNSF 54321>>`) and\na sidecar `NoteReference` row that powers reverse-lookup queries via\n`ListNotes.referenced_entity_type`/`referenced_entity_id`.\n\nExample:\n\n    {\n      \"entity_type\":  \"equipment\",\n      \"entity_id\":    \"54321\",\n      \"display_text\": \"BNSF 54321\"\n    }"
      properties:
        display_text:
          description: 'Human-readable label for the chip at the time the note was authored

            (e.g. `BNSF 54321`). Stored as-is so old notes keep their original

            wording even if the entity is later renamed.'
          type: string
        entity_id:
          description: 'The referenced entity''s ID, encoded as a string. Format depends on

            entity type: int64 for equipment/waybill/customer/invoice/charge/grouping,

            UUID for shipment/work_order/trip_plan/booking/commodity_unit, or a

            composite string for `interchange` (`direction:trainId:timestamp`).'
          type: string
        entity_type:
          description: 'The entity type being referenced. Must be one of the registered types

            (e.g. `equipment`, `shipment`, `waybill`, `work_order`, `customer`,

            `invoice`, `charge`, `trip_plan`, `booking`). See `SearchReferences` for

            the full list of searchable types.'
          type: string
        is_stale:
          description: 'Server-set on read responses: true if the referenced entity has been

            deleted. Frontends render stale chips as dimmed strikethrough so users

            can tell the link is broken without losing the note''s history.'
          type: boolean
        url:
          description: 'Optional pre-resolved URL hint. Frontends usually ignore this and

            resolve the URL from the entity type + ID via their own route registry.'
          type: string
      type: object
    lindaNoteAttachment:
      description: 'A file attached to a note. Attachments are stored in S3 and surfaced

        to clients via short-lived presigned download URLs.'
      properties:
        attachment_id:
          description: Server-assigned UUID for this attachment.
          type: string
        created_at:
          format: date-time
          type: string
        file_name:
          description: 'Original filename as supplied at upload time. Path components are

            stripped server-side; only the base name is kept.'
          type: string
        media_type:
          description: 'MIME type. Defaults to `application/octet-stream` if the upload did

            not specify one.'
          type: string
        note_id:
          description: ID of the parent note this file is attached to.
          type: string
        size_bytes:
          description: Size of the file in bytes.
          format: int64
          type: string
        url:
          description: 'Presigned GET URL for downloading the file. **Expires after 1 hour.**

            Re-fetch the parent note to get a fresh URL — never persist this

            value past its TTL.'
          type: string
      type: object
    lindaUpdateNoteReq:
      properties:
        content:
          description: 'New markdown body. Replaces the prior content. May contain inline

            reference tokens like `<<ref:equipment:54321:BNSF 54321>>`. Whenever

            you change `<<ref:...>>` tokens in `content`, also send the new

            `references` array and set `update_references=true` so the sidecar

            rows stay in sync with the inline tokens.'
          type: string
        note_id:
          description: ID of the note to edit (returned by `CreateNote`).
          type: string
        references:
          description: 'Replacement set of references. Only honored when

            `update_references=true`. Maximum 100 entries.'
          items:
            $ref: '#/components/schemas/lindaNoteReference'
          type: array
        update_references:
          description: 'If true, the `references` array fully replaces the prior set. If

            false (the default), the existing references are left untouched —

            use this when only the prose changes and the `<<ref:...>>` tokens

            are the same as before.'
          type: boolean
        uploads:
          description: Reserved for future inline upload support; currently a no-op.
          items:
            $ref: '#/components/schemas/lindaNoteAttachmentUpload'
          type: array
      type: object
    lindaDeleteNoteReq:
      properties:
        note_id:
          description: ID of the note to soft-delete.
          type: string
      type: object
    lindaBatchGetNoteSummariesResp:
      properties:
        summaries:
          description: 'One summary per entity that has at least one note. **Entities with

            zero notes are omitted from the response** — clients should default

            missing entries to "0 notes" rather than expecting one row per

            requested entity.'
          items:
            $ref: '#/components/schemas/lindaNoteSummaryEntry'
          type: array
      type: object
    lindaEntityRef:
      description: "A lightweight `(entity_type, entity_id)` pair used by\n`BatchGetNoteSummaries` to fetch summaries for many entities at once.\n\nExample:\n\n    { \"entity_type\": \"shipment\", \"entity_id\": \"5f3c...\" }"
      properties:
        entity_id:
          description: 'Entity ID as a string. Format depends on entity type — see

            `NoteReference.entity_id` for the per-type breakdown.'
          type: string
        entity_type:
          description: Entity type (e.g. `shipment`, `equipment`, `waybill`).
          type: string
      type: object
    lindaSummarizeEntityNotesResp:
      properties:
        note_count:
          description: 'Number of notes that were summarized — useful for showing "summary

            of N notes" alongside the digest.'
          format: int32
          type: integer
        summary_text:
          description: 'One-paragraph plain-text digest covering key themes, latest status,

            and unresolved concerns. Empty string if the thread had no notes.'
          type: string
      type: object
    lindaCreateNoteReq:
      properties:
        content:
          description: "Markdown body. Embed `@`-mentions as inline reference tokens of the\nform `<<ref:{entity_type}:{entity_id}:{display_text}>>` and pass a\nmatching entry in `references` for each one.\n\nExample:\n\n    \"Held at <<ref:equipment:54321:BNSF 54321>> waiting on clearance.\""
          type: string
        entity_id:
          description: 'Entity ID as a string. UUID for `shipment`/`work_order`/etc., or a

            stringified int64 for `equipment`/`waybill`/`invoice`/`charge`.'
          type: string
        entity_type:
          description: 'Entity type to attach the note to. Must be a registered type (e.g.

            `shipment`, `equipment`, `waybill`, `work_order`, `invoice`, `charge`).'
          type: string
        references:
          description: "Sidecar reference rows for every `<<ref:...>>` token in `content`.\nUsed for reverse-lookup queries and stale-entity detection. Maximum\n100 references per note. Use `SearchReferences` to look up the\n`entity_type`/`entity_id`/`display_text` triples to insert here.\n\nExample for the `content` above:\n\n    [\n      { \"entity_type\": \"equipment\", \"entity_id\": \"54321\",\n        \"display_text\": \"BNSF 54321\" }\n    ]"
          items:
            $ref: '#/components/schemas/lindaNoteReference'
          type: array
        uploads:
          description: 'Reserved for future inline upload support; currently a no-op. Use

            `UploadNoteAttachment` after the note is created to attach files.'
          items:
            $ref: '#/components/schemas/lindaNoteAttachmentUpload'
          type: array
      type: object
    lindaGetNoteSummaryResp:
      properties:
  

# --- truncated at 32 KB (36 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/cedarai/refs/heads/main/openapi/cedarai-lindaservice-api-openapi.yml