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

# Submit the CS reviewer's approve/reject decision

> Customer Success only (the caller must additionally be on the configured approver allowlist). Approving moves Requested -> CsApproved, which arms the migration job, and is refused with 422 unprocessable_error.run_time_expired if the requested run time has already passed. Rejecting requires a reason and moves the request to Rejected. Idempotent: repeating the same decision returns the current state rather than erroring.



## OpenAPI

````yaml https://service.my.delogue.com/openapi/external.json post /api/organizations/{organizationId}/migration-approval/cs-decisions
openapi: 3.1.1
info:
  title: Delogue External API - (Production)
  description: Integration endpoints for Delogue API
  version: 1.0.0
servers:
  - url: /
    description: The Delogue environment serving this document.
  - url: https://{host}
    description: Per-customer Delogue API host.
    variables:
      host:
        default: service.my.delogue.com
        description: >-
          The API host for your Delogue environment, e.g.
          service.<customer>.delogue.com.
security: []
tags:
  - name: Barcodes
  - name: Brands
  - name: CareInstructionIcons
  - name: CareInstructionLayers
  - name: CareInstructionMaterials
  - name: CareInstructions
  - name: Color Groups
  - name: Colors
  - name: ComplianceCategories
  - name: ComplianceCustomFields
  - name: Facilities
  - name: Groups
  - name: ItemCategories
  - name: Items
  - name: MeasurementCharts
  - name: MigrationApproval
  - name: MigrationVerification
  - name: OrganizationMigration
  - name: Organizations
  - name: SampleRequests
  - name: SampleTypes
  - name: Seasons
  - name: SizeRanges
  - name: Style Prices
  - name: StyleCareInstructions
  - name: StyleCategories
  - name: StyleColors
  - name: StyleContacts
  - name: StyleCustomFields
  - name: StyleFiles
  - name: StyleItems
  - name: StyleRelations
  - name: Styles
  - name: StyleSkus
  - name: StyleSupplierFacilities
  - name: SubSuppliers
  - name: Suppliers
paths:
  /api/organizations/{organizationId}/migration-approval/cs-decisions:
    post:
      tags:
        - MigrationApproval
      summary: Submit the CS reviewer's approve/reject decision
      description: >-
        Customer Success only (the caller must additionally be on the configured
        approver allowlist). Approving moves Requested -> CsApproved, which arms
        the migration job, and is refused with 422
        unprocessable_error.run_time_expired if the requested run time has
        already passed. Rejecting requires a reason and moves the request to
        Rejected. Idempotent: repeating the same decision returns the current
        state rather than erroring.
      operationId: MigrationApproval_SubmitCsDecision
      parameters:
        - name: organizationId
          in: path
          description: Identifier of the organization the reviewer's decision applies to.
          required: true
          schema:
            pattern: ^-?(?:0|[1-9]\d*)$
            type: integer
            format: int32
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/MigrationApprovalDecisionDto'
          application/*+json:
            schema:
              $ref: '#/components/schemas/MigrationApprovalDecisionDto'
        required: true
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiResponseOfMigrationApprovalStateDto'
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiErrorResponse'
        '401':
          description: Unauthorized
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/ApiErrorResponse'
        '403':
          description: Forbidden
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiErrorResponse'
        '422':
          description: Unprocessable Entity
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiErrorResponse'
        '500':
          description: Internal Server Error
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/ApiErrorResponse'
      security:
        - {}
components:
  schemas:
    MigrationApprovalDecisionDto:
      type: object
      properties:
        approve:
          type: boolean
          description: >-
            Whether the reviewer approves the organization's migration request.
            Approving arms the run; rejecting returns the organization to an
            unbooked state.
        rejectionReason:
          type:
            - 'null'
            - string
          description: >-
            Reason the request was rejected. Required when approve is false and
            ignored when it is true.
      additionalProperties: false
    ApiResponseOfMigrationApprovalStateDto:
      required:
        - status
        - code
        - data
      type: object
      properties:
        status:
          $ref: '#/components/schemas/ApiResponseStatus'
          description: >-
            The coarse outcome of the request, indicating whether it succeeded
            or failed.
        code:
          type: string
          description: >-
            The specific machine-readable outcome code, such as ok on success or
            the most specific error code on failure. Always lowercase on the
            wire.
        data:
          oneOf:
            - type: 'null'
            - $ref: '#/components/schemas/MigrationApprovalStateDto'
              description: >-
                The response payload, either a single object for a by-id read or
                an array for a bulk operation. Omitted from the body when there
                is no value.
          description: >-
            The response payload, either a single object for a by-id read or an
            array for a bulk operation. Omitted from the body when there is no
            value.
      additionalProperties: false
    ApiErrorResponse:
      type: object
      properties:
        status:
          $ref: '#/components/schemas/ApiResponseStatus'
          description: >-
            The coarse outcome of the request, indicating whether it succeeded
            or failed.
        code:
          type: string
          description: >-
            The specific machine-readable outcome code, such as ok on success or
            the most specific error code on failure. Always lowercase on the
            wire.
        error:
          $ref: '#/components/schemas/ErrorWrapper'
          description: >-
            The error payload, present instead of data on a failed response. It
            wraps the list of detail rows describing what went wrong.
      additionalProperties: false
    ApiResponseStatus:
      enum:
        - success
        - error
      type: string
      description: >-
        The coarse outcome of the request, indicating whether it succeeded or
        failed.
    MigrationApprovalStateDto:
      type: object
      properties:
        organizationId:
          pattern: ^-?(?:0|[1-9]\d*)$
          type:
            - integer
            - string
          description: >-
            Identifier of the organization this migration approval state belongs
            to.
          format: int32
        status:
          $ref: '#/components/schemas/MigrationRequestStatus'
          description: >-
            The current lifecycle status of the organization's migration
            request, in the shared migration status vocabulary.
        requestedRunAt:
          type:
            - 'null'
            - string
          description: >-
            The UTC run time the organization requested, or null when no request
            is pending.
          format: date-time
        csApprovedByUserId:
          type:
            - 'null'
            - string
          description: >-
            Identifier of the Customer Success reviewer who approved the
            request, or null when it has not been approved.
          format: uuid
        csApprovedAt:
          type:
            - 'null'
            - string
          description: >-
            UTC time the request was approved by Customer Success, or null when
            it has not been approved.
          format: date-time
        rejectedByReviewerRole:
          type:
            - 'null'
            - string
          description: >-
            The reviewer role that rejected the request, such as CS, or null
            when it was not rejected. Historical records may carry Technical.
        rejectedByUserId:
          type:
            - 'null'
            - string
          description: >-
            Identifier of the reviewer who rejected the request, or null when it
            was not rejected.
          format: uuid
        rejectedAt:
          type:
            - 'null'
            - string
          description: UTC time the request was rejected, or null when it was not rejected.
          format: date-time
        rejectionFeedback:
          type:
            - 'null'
            - string
          description: >-
            The reviewer's reason for rejecting the request, or null when it was
            not rejected.
        scheduledRunAt:
          type:
            - 'null'
            - string
          description: >-
            The UTC slot the migration job was actually armed for, or null
            before it has been scheduled.
          format: date-time
      additionalProperties: false
      description: >-
        The response payload, either a single object for a by-id read or an
        array for a bulk operation. Omitted from the body when there is no
        value.
    ErrorWrapper:
      type: object
      properties:
        details:
          type: array
          items:
            $ref: '#/components/schemas/ErrorDetailDto'
          description: >-
            The list of individual error detail rows for this failure, one per
            field or rule that failed.
      additionalProperties: false
      description: >-
        The error payload, present instead of data on a failed response. It
        wraps the list of detail rows describing what went wrong.
    MigrationRequestStatus:
      enum:
        - legacy
        - requested
        - csApproved
        - techApproved
        - scheduled
        - running
        - completed
        - confirmed
        - rejected
        - failed
      type: string
      description: >-
        The current lifecycle status of the organization's migration request, in
        the shared migration status vocabulary.
    ErrorDetailDto:
      required:
        - type
        - field
        - value
      type: object
      properties:
        type:
          type: string
          description: >-
            The hierarchical error code identifying the specific failure, such
            as validation_error.required_field. Consumers branch on this rather
            than on the message text.
        field:
          type:
            - 'null'
            - string
          description: >-
            The input field that caused the failure. Omitted when no specific
            field is at fault, such as an authorization denial or a server
            error.
        value:
          type:
            - 'null'
            - string
          description: >-
            A human-readable message describing the failure, or the offending
            value or limit that triggered it.
      additionalProperties: false

````