> ## Documentation Index
> Fetch the complete documentation index at: https://docs.sterndesk.com/llms.txt
> Use this file to discover all available pages before exploring further.

# WaitForSearchSync

> Wait until the changes already saved to job postings and crew profiles are visible to the search methods
 such as SearchJobPostings and SearchCrewProfiles. Call it after a successful create, update or delete
 with the ids of the changed records, then refetch the list. It returns as soon as every record is
 searchable, or after at most 10 seconds with the records that are still pending. It makes no change.



## OpenAPI

````yaml https://edge.sterndesk.com/api/openapi.yaml post /rpc/rpc.v1.OrganizationService/WaitForSearchSync
openapi: 3.1.0
info:
  title: Sterndesk API
  version: 1.0.0
  description: >
    HTTP/JSON access to the Sterndesk data available to your account.


    Every Sterndesk operation is a Connect RPC: send `POST <path>` with a JSON
    body and the

    `Connect-Protocol-Version: 1` header. Authenticate with a personal API key

    (Settings → My account → API keys) using `Authorization: Bearer <key>`.


    A key reads everything documented here. The one write operation is uploading
    candidate

    documents, which needs a key carrying the `sterndesk:documents:write`
    permission; permissions

    are chosen when the key is created and are never added to an existing key.
    Every other write

    operation is rejected.


    ## Uploading candidate documents


    An upload is a batch of documents, the same batch a recruiter hands to
    Sterndesk from the

    dashboard. It may hold the documents of one candidate or of several people:
    Sterndesk groups

    them by identity and creates one candidate per person. Sending them takes
    two calls.


    1. `POST /rpc/rpc.v1.OrganizationService/CreateManualUpload` creates the
    upload and returns a
       signed, time-limited instruction: `upload_url`, `params`, `signature` and `expires_at`,
       together with the limits the upload must satisfy.
    2. `POST /assemblies` sends the files to Transloadit, the upload processor,
    as
       `multipart/form-data`, with `params` and `signature` as form fields. Send both verbatim:
       the signature covers those exact bytes, so pretty-printing `params`, reordering its keys,
       or parsing and re-encoding it invalidates the signature. The files go straight to
       Transloadit and never pass through Sterndesk.

    Processing then continues asynchronously, exactly as it does for a dashboard
    upload.

    `POST /rpc/rpc.v1.OrganizationService/ListManualUploads` reports the
    progress of the upload

    created in step 1.
servers:
  - url: https://edge.sterndesk.com
security:
  - apiKey: []
tags:
  - name: rpc.v1.OrganizationService
    description: Organization service RPC for organization method.
  - name: rpc.v1.RootService
    description: RootService provides top-level RPCs.
paths:
  /rpc/rpc.v1.OrganizationService/WaitForSearchSync:
    post:
      tags:
        - rpc.v1.OrganizationService
      summary: WaitForSearchSync
      description: >-
        Wait until the changes already saved to job postings and crew profiles
        are visible to the search methods
         such as SearchJobPostings and SearchCrewProfiles. Call it after a successful create, update or delete
         with the ids of the changed records, then refetch the list. It returns as soon as every record is
         searchable, or after at most 10 seconds with the records that are still pending. It makes no change.
      operationId: rpc.v1.OrganizationService.WaitForSearchSync
      parameters:
        - name: Connect-Protocol-Version
          in: header
          description: Define the version of the Connect protocol
          required: true
          schema:
            $ref: '#/components/schemas/connect-protocol-version'
          example: 1
        - name: Connect-Timeout-Ms
          in: header
          description: Define the timeout, in ms
          schema:
            $ref: '#/components/schemas/connect-timeout-header'
          example: 1000
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/rpc.v1.WaitForSearchSyncRequest'
        required: true
      responses:
        '200':
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/rpc.v1.WaitForSearchSyncResponse'
        default:
          description: Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/connect.error'
components:
  schemas:
    connect-protocol-version:
      type: number
      examples:
        - 1
      title: Connect-Protocol-Version
      description: Define the version of the Connect protocol
      const: 1
    connect-timeout-header:
      type: number
      examples:
        - 1000
      title: Connect-Timeout-Ms
      description: Define the timeout, in ms
    rpc.v1.WaitForSearchSyncRequest:
      type: object
      properties:
        jobPostingIds:
          type: array
          items:
            type: string
            format: uuid
          title: job_posting_ids
          maxItems: 100
          description: >-
            ids of the job postings that were just created, changed or deleted,
            at most 100
        crewProfileIds:
          type: array
          items:
            type: string
            format: uuid
          title: crew_profile_ids
          maxItems: 100
          description: >-
            ids of the crew profiles that were just created, changed or deleted,
            at most 100
      title: WaitForSearchSyncRequest
      additionalProperties: false
      description: >-
        request to wait until changes of job postings and crew profiles are
        searchable
    rpc.v1.WaitForSearchSyncResponse:
      type: object
      properties:
        synced:
          type: boolean
          title: synced
          description: >-
            true when every requested record is searchable, false when the wait
            ended with records still pending
        pendingJobPostingIds:
          type: array
          items:
            type: string
          title: pending_job_posting_ids
          description: >-
            ids of the requested job postings whose changes are not yet
            searchable
        pendingCrewProfileIds:
          type: array
          items:
            type: string
          title: pending_crew_profile_ids
          description: >-
            ids of the requested crew profiles whose changes are not yet
            searchable
      title: WaitForSearchSyncResponse
      additionalProperties: false
      description: >-
        response of waiting until changes of job postings and crew profiles are
        searchable
    connect.error:
      type: object
      properties:
        code:
          type: string
          examples:
            - not_found
          enum:
            - canceled
            - unknown
            - invalid_argument
            - deadline_exceeded
            - not_found
            - already_exists
            - permission_denied
            - resource_exhausted
            - failed_precondition
            - aborted
            - out_of_range
            - unimplemented
            - internal
            - unavailable
            - data_loss
            - unauthenticated
          description: >-
            The status code, which should be an enum value of
            [google.rpc.Code][google.rpc.Code].
        message:
          type: string
          description: >-
            A developer-facing error message, which should be in English. Any
            user-facing error message should be localized and sent in the
            [google.rpc.Status.details][google.rpc.Status.details] field, or
            localized by the client.
        details:
          type: array
          items:
            $ref: '#/components/schemas/connect.error_details.Any'
          description: >-
            A list of messages that carry the error details. There is no limit
            on the number of messages.
      title: Connect Error
      additionalProperties: true
      description: >-
        Error type returned by Connect:
        https://connectrpc.com/docs/go/errors/#http-representation
    connect.error_details.Any:
      type: object
      properties:
        type:
          type: string
          description: >-
            A URL that acts as a globally unique identifier for the type of the
            serialized message. For example:
            `type.googleapis.com/google.rpc.ErrorInfo`.
        value:
          type: string
          format: binary
          description: >-
            The Protobuf message, serialized as bytes and base64-encoded. The
            specific message type is identified by the `type` field.
        debug:
          type: object
          title: Debug
          additionalProperties: true
          description: >-
            Deserialized error detail payload. The 'type' field indicates the
            schema. This field is for easier debugging and should not be relied
            upon for application logic.
      additionalProperties: true
      description: >-
        Contains an arbitrary serialized message along with a @type that
        describes the type of the serialized message, with an additional debug
        field for ConnectRPC error details.
  securitySchemes:
    apiKey:
      type: http
      scheme: bearer
      description: 'Personal API key, sent as `Authorization: Bearer <key>`.'

````

This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.