> ## 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.

# Request the organization's D2 migration

> Submits a request to migrate this organization to the D2 data model at the given future run time. All three acknowledgements (one-way migration, read-only lock from run start, D2-only after Confirm) must be true. This only submits a request -- the run itself is gated by the Customer Success approval and the scheduled job. Fails with 409 if the organization already has a migration in flight.



## OpenAPI

````yaml https://service.my.delogue.com/openapi/external.json post /api/organizations/{organizationId}/migration-requests
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-requests:
    post:
      tags:
        - OrganizationMigration
      summary: Request the organization's D2 migration
      description: >-
        Submits a request to migrate this organization to the D2 data model at
        the given future run time. All three acknowledgements (one-way
        migration, read-only lock from run start, D2-only after Confirm) must be
        true. This only submits a request -- the run itself is gated by the
        Customer Success approval and the scheduled job. Fails with 409 if the
        organization already has a migration in flight.
      operationId: OrganizationMigration_RequestMigration
      parameters:
        - name: organizationId
          in: path
          description: Identifier of the organization requesting migration.
          required: true
          schema:
            pattern: ^-?(?:0|[1-9]\d*)$
            type: integer
            format: int32
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/OrganizationMigrationRequestCreateDto'
          application/*+json:
            schema:
              $ref: '#/components/schemas/OrganizationMigrationRequestCreateDto'
        required: true
      responses:
        '201':
          description: Created
          content:
            application/json:
              schema:
                $ref: >-
                  #/components/schemas/ApiResponseOfOrganizationMigrationStatusDto
        '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'
        '404':
          description: Not Found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiErrorResponse'
        '409':
          description: Conflict
          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:
    OrganizationMigrationRequestCreateDto:
      type: object
      properties:
        requestedRunTimeUtc:
          type: string
          description: >-
            The future UTC time the organization picked for its migration run,
            chosen from the permitted nightly window. Must fall on a night that
            is not already at capacity.
          format: date-time
        acknowledgeOneWayMigration:
          type: boolean
          description: >-
            Acknowledges that the migration is one-way: once the final run is
            verified there is no route back to the legacy data model. Must be
            true to submit the request.
        acknowledgeReadOnlyLock:
          type: boolean
          description: >-
            Acknowledges that the migration runs twice: the legacy site and D2
            both stay open while the organization verifies the first run, then a
            second run clears D2 and re-migrates from the legacy data,
            discarding anything entered directly into D2 in the meantime. Must
            be true to submit the request.
        acknowledgeD2Only:
          type: boolean
          description: >-
            Acknowledges that once the second migration is verified the
            organization is on Delogue 2.0 only and the legacy site is blocked
            for everyone in it. Must be true to submit the request.
      additionalProperties: false
    ApiResponseOfOrganizationMigrationStatusDto:
      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/OrganizationMigrationStatusDto'
              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.
    OrganizationMigrationStatusDto:
      type: object
      properties:
        organizationId:
          pattern: ^-?(?:0|[1-9]\d*)$
          type:
            - integer
            - string
          description: >-
            Identifier of the organization whose migration status this
            describes.
          format: int32
        status:
          $ref: '#/components/schemas/MigrationRequestStatus'
          description: >-
            The current lifecycle status of the organization's migration, in the
            shared migration status vocabulary.
        requestId:
          type:
            - 'null'
            - integer
          description: >-
            Identifier of the current migration request, or null when none has
            ever been submitted.
          format: int64
        requestedRunTimeUtc:
          type:
            - 'null'
            - string
          description: >-
            The UTC run time the organization requested, or null when none has
            been requested.
          format: date-time
        scheduledRunTimeUtc:
          type:
            - 'null'
            - string
          description: >-
            The UTC slot the migration job was actually armed for, or null
            before it has been scheduled.
          format: date-time
        csApprovedOnUtc:
          type:
            - 'null'
            - string
          description: >-
            UTC time Customer Success approved the request, or null when it has
            not been approved.
          format: date-time
        failureReason:
          type:
            - 'null'
            - string
          description: >-
            The recorded reason the run stopped, present when the migration has
            failed.
        rejectionFeedback:
          type:
            - 'null'
            - string
          description: >-
            The organization's own feedback when it rejected its migrated data,
            or null when it did not.
        properties:
          type: array
          items:
            type: string
          description: >-
            Zero or more flags that are currently true of the request, such as
            needs-reschedule when the requested time has passed while still
            awaiting approval, as an additive string array rather than one
            boolean per flag.
      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

````