# CreateUpdateAppointment - Creates or updates appointments with a lighter payload designed for external APIM consumers

This API is called by external customers through APIM. APIM authenticates the client and derives
the Bearer Token and Request Source Identifier, which are passed to this API via request headers.
Request Fields:
- IndexedClientVisitRequests (required): A list of visit requests, each containing:
  - Facility_Cd (required): The facility code (e.g., "ITS", "PCT").
  - Trkc_Scac (required): The trucking company SCAC code.
  - TruckPlate_Num: The truck plate number.
  - Driver_Name: The driver name.
  - TruckVisit_Id: The existing truck visit ID (0 for new).
  - VisitMoveDate (required): The visit/move date (format: yyyy-MM-dd).
  - Moves (required): A list of moves, each containing:
    - UserAction (required): A = Add, E = Edit, C = Check IN, R = Reschedule.
    - GateAppt_Id: The existing appointment ID (0 for new).
    - Pool_Id: The pool ID representing a filter matching the appointment data.
    - ApptType_Cd (required): The appointment type code (e.g., "IP", "EF").
    - Container_Num, ShippingLine_Cd, EquipmentIso_Cd, etc.
    - Tare_Weight: Optional tare weight value.
    - Tare_Weight_UOM: Unit of measurement (kg, lb, tn, t).
Headers:
- Authorization: Bearer token derived by APIM.
- X-Request-Source-Identifier: Request source identifier derived by APIM.

Endpoint: POST /api/appointment/createupdateappointment
Version: 1.0

## Header parameters:

  - `X-Cargosprint-Api-Key` (string, required)
    The company API key provided by Cargosprint.

  - `X-Cargosprint-User-Key` (string, required)
    The API key of the user to be impersonated.

## Request body:

  - `application/json` (unknown)
    The request containing visit and move details for creating or updating appointments.

## Request fields (application/json):

  - `indexedClientVisitRequests` (array, required)

  - `indexedClientVisitRequests.facility_Cd` (string, required)

  - `indexedClientVisitRequests.trkc_Scac` (string, required)

  - `indexedClientVisitRequests.truckPlate_Num` (string)

  - `indexedClientVisitRequests.driver_Name` (string)

  - `indexedClientVisitRequests.truckVisit_Id` (integer)

  - `indexedClientVisitRequests.visitMoveDate` (string, required)

  - `indexedClientVisitRequests.moves` (array, required)

  - `indexedClientVisitRequests.moves.userAction` (string, required)

  - `indexedClientVisitRequests.moves.gateAppt_Id` (integer)

  - `indexedClientVisitRequests.moves.pool_Id` (string)

  - `indexedClientVisitRequests.moves.apptType_Cd` (string, required)

  - `indexedClientVisitRequests.moves.cargoRef_Num` (string)

  - `indexedClientVisitRequests.moves.container_Num` (string)

  - `indexedClientVisitRequests.moves.shippingLine_Cd` (string)

  - `indexedClientVisitRequests.moves.equipmentIso_Cd` (string)

  - `indexedClientVisitRequests.moves.piN_Num` (string)

  - `indexedClientVisitRequests.moves.isOwnChs` (boolean)

  - `indexedClientVisitRequests.moves.chassis_Num` (string)

  - `indexedClientVisitRequests.moves.genset_Num` (string)

  - `indexedClientVisitRequests.moves.seal1_Num` (string)

  - `indexedClientVisitRequests.moves.seal2_Num` (string)

  - `indexedClientVisitRequests.moves.seal3_Num` (string)

  - `indexedClientVisitRequests.moves.seal4_Num` (string)

  - `indexedClientVisitRequests.moves.isOD` (boolean)

  - `indexedClientVisitRequests.moves.isReefer` (boolean)

  - `indexedClientVisitRequests.moves.isHaz` (boolean)

  - `indexedClientVisitRequests.moves.tare_Weight` (number)

  - `indexedClientVisitRequests.moves.tare_Weight_UOM` (string)

## Request examples:

  - `Create a new visit appointment.` (unknown)

## Response 200:

  - `200` (unknown)
    Appointment created or updated successfully.

## Response 200 fields (application/json):

  - `status` (object)

  - `status.statusCode` (integer)

  - `status.reasonPhrase` (string)

  - `visits` (array)

  - `visits.truckVisit_Id` (integer)

  - `visits.facility_Cd` (string)

  - `visits.moves` (array)

  - `visits.moves.gateAppt_Id` (integer)

  - `visits.moves.apptType_Cd` (string)

  - `visits.moves.container_Num` (string)

  - `visits.moves.userAction` (string)

  - `visits.moves.status` (string)

  - `visits.moves.messages` (array)

  - `visits.moves.messages.gateApptErr_Num` (integer)

  - `visits.moves.messages.gateApptErr_Dsc` (string)

  - `visits.moves.messages.errSeverity_Ind` (integer)

  - `visits.messages` (array)

  - `visits.messages.gateApptErr_Num` (integer)

  - `visits.messages.gateApptErr_Dsc` (string)

  - `visits.messages.errSeverity_Ind` (integer)

## Response 400:

  - `400` (unknown)
    Bad request due to missing or invalid required fields.

## Response 400 fields (application/json):

  - `type` (string)

  - `title` (string)

  - `status` (integer)

  - `detail` (string)

  - `instance` (string)

## Response 401:

  - `401` (unknown)
    Unauthorized. The client must authenticate itself to get the requested response.

## Response 401 fields (application/json):

  - `type` (string)

  - `title` (string)

  - `status` (integer)

  - `detail` (string)

  - `instance` (string)

## Response 403:

  - `403` (unknown)
    Forbidden. The client does not have access rights to the content.

## Response 403 fields (application/json):

  - `type` (string)

  - `title` (string)

  - `status` (integer)

  - `detail` (string)

  - `instance` (string)

## Response 500:

  - `500` (unknown)
    An internal server error occurred while processing the request.

## Response 200 examples:

  - `Created or updated visit result with messages and slots.` (unknown)

