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

# Sync Delivery Request

<p align="center">
  <img src="https://mintcdn.com/canpeker/ezlmTUGMKwmp_MYx/images/delivery_request_sync_lucid_flow.svg?fit=max&auto=format&n=ezlmTUGMKwmp_MYx&q=85&s=f1c018dcfd5bc73e577ee97b2bbb7882" width="2659" height="770" data-path="images/delivery_request_sync_lucid_flow.svg" />
</p>

**Endpoint specification**

* This endpoint helps Service Provider to map AccessRC delivery request with own delivery request.
* deliveryRequestId is provided to Service Provider within the DELIVERY\_REQUEST\_SENT event callback body
* At this step if Service Provider can't create delivery records for each assistance item, providerDelivery list can be empty.
* providerDeliveryRequestId is optional but recommended: when supplied, AccessRC stores it against the deliveryRequestId for cross-system status tracking and operational integrity. It may be omitted, empty, or null.

**Status**

* PENDING\_APPROVAL -> Delivery request is in an approval process
* REJECTED -> Delivery request is rejected
* APPROVED -> Delivery request is approved

**Sync Status**

* SUCCESS -> Delivery request delivery is successfully synced to Service Provider
* FAILED -> Delivery request delivery is failed to sync to Service Provider


## OpenAPI

````yaml POST /api/DeliveryRequest/Sync
openapi: 3.0.4
info:
  title: ServiceProvider API
  version: v1
servers: []
security:
  - ApiKeyAuth: []
paths:
  /api/DeliveryRequest/Sync:
    post:
      tags:
        - DeliveryRequest
      requestBody:
        content:
          application/json-patch+json:
            schema:
              $ref: '#/components/schemas/DeliveryRequestSyncRequest'
            examples:
              Initial Sync (Pending Approval):
                summary: A newly created delivery request waiting for approval.
                value:
                  deliveryRequestId: 2372dd86-1e5d-4110-97ba-ff3c4237a74f
                  providerDeliveryRequestId: 4d6c8838-dce2-473f-a6e1-6f91c0ebc87c
                  providerDelivery:
                    - providerDeliveryId: e05b049a-a93a-4b04-af96-5824e0af6684
                      deliveryId: 6fd1ca79-1a5d-4bd9-a4c9-b41c48ff6b7a
                      syncStatus: SUCCESS
                      comment: ''
                      providerStatus: Completed
                  message: Delivery Request successfully created
                  providerStatus: WaitingSecondaryLevelTopUpApproval
                  status: PENDING_APPROVAL
              Failed Sync (Rejected):
                summary: >-
                  A delivery request rejected due to invalid or missing
                  information.
                value:
                  deliveryRequestId: 2372dd86-1e5d-4110-97ba-ff3c4237a74f
                  providerDeliveryRequestId: 4d6c8838-dce2-473f-a6e1-6f91c0ebc87c
                  providerDelivery:
                    - providerDeliveryId: ''
                      deliveryId: 6fd1ca79-1a5d-4bd9-a4c9-b41c48ff6b7a
                      syncStatus: FAILED
                      comment: IBAN is missing
                      providerStatus: Failed
                  message: >-
                    Delivery Request cannot be synced. Deliveries contain
                    inconsistencies. Please check the delivery details.
                  providerStatus: Rejected
                  status: REJECTED
              Update Sync (Approved / Completed):
                summary: An approved delivery request successfully completed.
                value:
                  deliveryRequestId: 2372dd86-1e5d-4110-97ba-ff3c4237a74f
                  providerDeliveryRequestId: 4d6c8838-dce2-473f-a6e1-6f91c0ebc87c
                  providerDelivery:
                    - providerDeliveryId: e05b049a-a93a-4b04-af96-5824e0af6684
                      deliveryId: 6fd1ca79-1a5d-4bd9-a4c9-b41c48ff6b7a
                      syncStatus: SUCCESS
                      comment: ''
                      providerStatus: Completed
                  message: >-
                    Approved 146,515 UAH of payment to 27 beneficiaries at
                    Location: Bulgarian Red Cross, Bulgaria via Activity:
                    Winterization MoneyGram Bulgaria - IBAN UAH.
                  providerStatus: Completed
                  status: APPROVED
          application/json:
            schema:
              $ref: '#/components/schemas/DeliveryRequestSyncRequest'
            examples:
              Initial Sync (Pending Approval):
                summary: A newly created delivery request waiting for approval.
                value:
                  deliveryRequestId: 2372dd86-1e5d-4110-97ba-ff3c4237a74f
                  providerDeliveryRequestId: 4d6c8838-dce2-473f-a6e1-6f91c0ebc87c
                  providerDelivery:
                    - providerDeliveryId: e05b049a-a93a-4b04-af96-5824e0af6684
                      deliveryId: 6fd1ca79-1a5d-4bd9-a4c9-b41c48ff6b7a
                      syncStatus: SUCCESS
                      comment: ''
                      providerStatus: Completed
                  message: Delivery Request successfully created
                  providerStatus: WaitingSecondaryLevelTopUpApproval
                  status: PENDING_APPROVAL
              Failed Sync (Rejected):
                summary: >-
                  A delivery request rejected due to invalid or missing
                  information.
                value:
                  deliveryRequestId: 2372dd86-1e5d-4110-97ba-ff3c4237a74f
                  providerDeliveryRequestId: 4d6c8838-dce2-473f-a6e1-6f91c0ebc87c
                  providerDelivery:
                    - providerDeliveryId: ''
                      deliveryId: 6fd1ca79-1a5d-4bd9-a4c9-b41c48ff6b7a
                      syncStatus: FAILED
                      comment: IBAN is missing
                      providerStatus: Failed
                  message: >-
                    Delivery Request cannot be synced. Deliveries contain
                    inconsistencies. Please check the delivery details.
                  providerStatus: Rejected
                  status: REJECTED
              Update Sync (Approved / Completed):
                summary: An approved delivery request successfully completed.
                value:
                  deliveryRequestId: 2372dd86-1e5d-4110-97ba-ff3c4237a74f
                  providerDeliveryRequestId: 4d6c8838-dce2-473f-a6e1-6f91c0ebc87c
                  providerDelivery:
                    - providerDeliveryId: e05b049a-a93a-4b04-af96-5824e0af6684
                      deliveryId: 6fd1ca79-1a5d-4bd9-a4c9-b41c48ff6b7a
                      syncStatus: SUCCESS
                      comment: ''
                      providerStatus: Completed
                  message: >-
                    Approved 146,515 UAH of payment to 27 beneficiaries at
                    Location: Bulgarian Red Cross, Bulgaria via Activity:
                    Winterization MoneyGram Bulgaria - IBAN UAH.
                  providerStatus: Completed
                  status: APPROVED
          text/json:
            schema:
              $ref: '#/components/schemas/DeliveryRequestSyncRequest'
            examples:
              Initial Sync (Pending Approval):
                summary: A newly created delivery request waiting for approval.
                value:
                  deliveryRequestId: 2372dd86-1e5d-4110-97ba-ff3c4237a74f
                  providerDeliveryRequestId: 4d6c8838-dce2-473f-a6e1-6f91c0ebc87c
                  providerDelivery:
                    - providerDeliveryId: e05b049a-a93a-4b04-af96-5824e0af6684
                      deliveryId: 6fd1ca79-1a5d-4bd9-a4c9-b41c48ff6b7a
                      syncStatus: SUCCESS
                      comment: ''
                      providerStatus: Completed
                  message: Delivery Request successfully created
                  providerStatus: WaitingSecondaryLevelTopUpApproval
                  status: PENDING_APPROVAL
              Failed Sync (Rejected):
                summary: >-
                  A delivery request rejected due to invalid or missing
                  information.
                value:
                  deliveryRequestId: 2372dd86-1e5d-4110-97ba-ff3c4237a74f
                  providerDeliveryRequestId: 4d6c8838-dce2-473f-a6e1-6f91c0ebc87c
                  providerDelivery:
                    - providerDeliveryId: ''
                      deliveryId: 6fd1ca79-1a5d-4bd9-a4c9-b41c48ff6b7a
                      syncStatus: FAILED
                      comment: IBAN is missing
                      providerStatus: Failed
                  message: >-
                    Delivery Request cannot be synced. Deliveries contain
                    inconsistencies. Please check the delivery details.
                  providerStatus: Rejected
                  status: REJECTED
              Update Sync (Approved / Completed):
                summary: An approved delivery request successfully completed.
                value:
                  deliveryRequestId: 2372dd86-1e5d-4110-97ba-ff3c4237a74f
                  providerDeliveryRequestId: 4d6c8838-dce2-473f-a6e1-6f91c0ebc87c
                  providerDelivery:
                    - providerDeliveryId: e05b049a-a93a-4b04-af96-5824e0af6684
                      deliveryId: 6fd1ca79-1a5d-4bd9-a4c9-b41c48ff6b7a
                      syncStatus: SUCCESS
                      comment: ''
                      providerStatus: Completed
                  message: >-
                    Approved 146,515 UAH of payment to 27 beneficiaries at
                    Location: Bulgarian Red Cross, Bulgaria via Activity:
                    Winterization MoneyGram Bulgaria - IBAN UAH.
                  providerStatus: Completed
                  status: APPROVED
          application/*+json:
            schema:
              $ref: '#/components/schemas/DeliveryRequestSyncRequest'
            examples:
              Initial Sync (Pending Approval):
                summary: A newly created delivery request waiting for approval.
                value:
                  deliveryRequestId: 2372dd86-1e5d-4110-97ba-ff3c4237a74f
                  providerDeliveryRequestId: 4d6c8838-dce2-473f-a6e1-6f91c0ebc87c
                  providerDelivery:
                    - providerDeliveryId: e05b049a-a93a-4b04-af96-5824e0af6684
                      deliveryId: 6fd1ca79-1a5d-4bd9-a4c9-b41c48ff6b7a
                      syncStatus: SUCCESS
                      comment: ''
                      providerStatus: Completed
                  message: Delivery Request successfully created
                  providerStatus: WaitingSecondaryLevelTopUpApproval
                  status: PENDING_APPROVAL
              Failed Sync (Rejected):
                summary: >-
                  A delivery request rejected due to invalid or missing
                  information.
                value:
                  deliveryRequestId: 2372dd86-1e5d-4110-97ba-ff3c4237a74f
                  providerDeliveryRequestId: 4d6c8838-dce2-473f-a6e1-6f91c0ebc87c
                  providerDelivery:
                    - providerDeliveryId: ''
                      deliveryId: 6fd1ca79-1a5d-4bd9-a4c9-b41c48ff6b7a
                      syncStatus: FAILED
                      comment: IBAN is missing
                      providerStatus: Failed
                  message: >-
                    Delivery Request cannot be synced. Deliveries contain
                    inconsistencies. Please check the delivery details.
                  providerStatus: Rejected
                  status: REJECTED
              Update Sync (Approved / Completed):
                summary: An approved delivery request successfully completed.
                value:
                  deliveryRequestId: 2372dd86-1e5d-4110-97ba-ff3c4237a74f
                  providerDeliveryRequestId: 4d6c8838-dce2-473f-a6e1-6f91c0ebc87c
                  providerDelivery:
                    - providerDeliveryId: e05b049a-a93a-4b04-af96-5824e0af6684
                      deliveryId: 6fd1ca79-1a5d-4bd9-a4c9-b41c48ff6b7a
                      syncStatus: SUCCESS
                      comment: ''
                      providerStatus: Completed
                  message: >-
                    Approved 146,515 UAH of payment to 27 beneficiaries at
                    Location: Bulgarian Red Cross, Bulgaria via Activity:
                    Winterization MoneyGram Bulgaria - IBAN UAH.
                  providerStatus: Completed
                  status: APPROVED
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties:
                  Error:
                    type: object
                    properties:
                      Code:
                        type: integer
                        format: int32
                      Type:
                        type: string
                      Message:
                        type: string
                      Title:
                        type: string
                  Data:
                    type: object
                    properties:
                      Error:
                        type: object
                        properties:
                          Code:
                            type: integer
                            format: int32
                          Type:
                            type: string
                          Message:
                            type: string
                          Title:
                            type: string
                      Data:
                        $ref: '#/components/schemas/BaseResponse'
                      Paging:
                        type: object
                        properties:
                          Skip:
                            type: integer
                            format: int32
                          Take:
                            type: integer
                            format: int32
                          Total:
                            type: integer
                            format: int32
                      Token:
                        type: object
              example:
                error: null
                data:
                  message: Delivery Request is synced successfully
                  providerDeliveryRequestId: ced2396b-32b5-4b08-bd98-7830dfb2b622
                  date: '2025-04-04T14:07:49Z'
                status: success
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                type: object
                properties:
                  Error:
                    type: object
                    properties:
                      Code:
                        type: integer
                        format: int32
                      Type:
                        type: string
                      Message:
                        type: string
                      Title:
                        type: string
                  Data:
                    type: object
                    properties:
                      Error:
                        type: object
                        properties:
                          Code:
                            type: integer
                            format: int32
                          Type:
                            type: string
                          Message:
                            type: string
                          Title:
                            type: string
                      Data:
                        $ref: '#/components/schemas/BaseResponse'
                      Paging:
                        type: object
                        properties:
                          Skip:
                            type: integer
                            format: int32
                          Take:
                            type: integer
                            format: int32
                          Total:
                            type: integer
                            format: int32
                      Token:
                        type: object
              example:
                error:
                  guid: 95bd740b-755b-4f95-8549-fa9acfc31a41
                  code: 400
                  type: ValidationError
                  message: >-
                    Invalid request body format. Please check your request
                    format from AccessRC API specifications.
                  title: Invalid Request Body
                data: null
                status: failed
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                type: object
                properties:
                  Error:
                    type: object
                    properties:
                      Code:
                        type: integer
                        format: int32
                      Type:
                        type: string
                      Message:
                        type: string
                      Title:
                        type: string
                  Data:
                    type: object
                    properties:
                      Error:
                        type: object
                        properties:
                          Code:
                            type: integer
                            format: int32
                          Type:
                            type: string
                          Message:
                            type: string
                          Title:
                            type: string
                      Data:
                        $ref: '#/components/schemas/BaseResponse'
                      Paging:
                        type: object
                        properties:
                          Skip:
                            type: integer
                            format: int32
                          Take:
                            type: integer
                            format: int32
                          Total:
                            type: integer
                            format: int32
                      Token:
                        type: object
              example:
                error:
                  guid: 2c77f4b6-6ff8-4017-8bb8-1d7a5c8e01f3
                  code: 401
                  type: Unauthorized
                  message: null
                  title: API Key is missing
                data: null
                status: failed
        '500':
          description: Internal Server Error
          content:
            application/json:
              schema:
                type: object
                properties:
                  Error:
                    type: object
                    properties:
                      Code:
                        type: integer
                        format: int32
                      Type:
                        type: string
                      Message:
                        type: string
                      Title:
                        type: string
                  Data:
                    type: object
                    properties:
                      Error:
                        type: object
                        properties:
                          Code:
                            type: integer
                            format: int32
                          Type:
                            type: string
                          Message:
                            type: string
                          Title:
                            type: string
                      Data:
                        $ref: '#/components/schemas/BaseResponse'
                      Paging:
                        type: object
                        properties:
                          Skip:
                            type: integer
                            format: int32
                          Take:
                            type: integer
                            format: int32
                          Total:
                            type: integer
                            format: int32
                      Token:
                        type: object
              example:
                error:
                  guid: 2c77f4b6-6ff8-4017-8bb8-1d7a5c8e01f3
                  code: 500
                  type: Exception
                  message: null
                  title: Internal Server Error
                data: null
                status: failed
components:
  schemas:
    DeliveryRequestSyncRequest:
      required:
        - deliveryRequestId
        - message
        - providerStatus
        - status
      type: object
      properties:
        deliveryRequestId:
          maxLength: 64
          minLength: 0
          type: string
          description: >-
            Unique identifier (UUID) of the delivery request within AccessRC.
            Used to track and reference the specific delivery transaction
            initiated by the system.
        providerDeliveryRequestId:
          maxLength: 64
          minLength: 0
          type: string
          description: >-
            Unique identifier (UUID) assigned by the external service provider
            for the same delivery request, enabling cross-system tracking and
            synchronization.
          nullable: true
        providerDelivery:
          type: array
          items:
            $ref: '#/components/schemas/ProviderDeliveryItem'
          description: >-
            Array containing detailed records of delivery transactions handled
            by the provider, including status and synchronization results.
            providerDelivery can be an empty array ("providerDelivery": []) if
            delivery records are planned to be synced with /api/Delivery/Sync
            method later on.
          nullable: true
        message:
          maxLength: 1024
          minLength: 0
          type: string
          description: >-
            A descriptive summary of the delivery request, typically used for
            logging, notifications, or administrative review (e.g., “Approve
            146,515 UAH of payment to 27 beneficiaries…”).
        providerStatus:
          maxLength: 64
          minLength: 0
          type: string
          description: >-
            Aggregated status received from the external provider for the entire
            delivery request (e.g., Pending, Completed, Failed).
        status:
          enum:
            - DRAFT
            - SENT_TO_SERVICE_PROVIDER
            - PENDING_APPROVAL
            - APPROVED
            - REJECTED
            - DELIVERED
            - FAILED
            - DISPATCH_IN_PROGRESS
            - FAILED_RESPONSE_UNKNOWN
          type: string
          description: >-
            Internal AccessRC status of the delivery request, indicating its
            approval or workflow state (e.g., PENDING_APPROVAL, APPROVED,
            REJECTED).
          example: DRAFT
      additionalProperties: false
    BaseResponse:
      type: object
      properties:
        error:
          $ref: '#/components/schemas/Error'
        data:
          nullable: true
        status:
          type: string
          nullable: true
      additionalProperties: false
    ProviderDeliveryItem:
      required:
        - deliveryId
        - syncStatus
      type: object
      properties:
        providerDeliveryId:
          maxLength: 150
          minLength: 0
          type: string
          description: >-
            Unique identifier (UUID) of the provider’s delivery record.
            Represents a single delivery instance linked to this request.
          nullable: true
        deliveryId:
          maxLength: 64
          minLength: 0
          type: string
          description: >-
            Internal AccessRC delivery identifier associated with this provider
            delivery.
        syncStatus:
          enum:
            - PENDING
            - SUCCESS
            - FAILED
          type: string
          description: >-
            Indicates the result of data synchronization with the provider
            (e.g., SUCCESS, FAILED).
          example: PENDING
        comment:
          maxLength: 1024
          minLength: 0
          type: string
          description: >-
            Optional remarks or system-generated notes regarding the delivery or
            synchronization outcome.
          nullable: true
        providerStatus:
          maxLength: 64
          minLength: 0
          type: string
          description: >-
            The current status of the delivery as reported by the external
            provider (e.g., Processing, Completed, Rejected).
          nullable: true
      additionalProperties: false
    Error:
      type: object
      properties:
        guid:
          type: string
          nullable: true
        code:
          type: integer
          format: int32
        type:
          type: string
          nullable: true
        message:
          type: string
          nullable: true
        title:
          type: string
          nullable: true
      additionalProperties: false
  securitySchemes:
    ApiKeyAuth:
      type: apiKey
      in: header
      name: x-api-key
      description: API Key required in `x-api-key` header

````