arazzo: 1.0.1 info: title: Azure Synapse Analytics Build Data Integration Pipeline summary: Stand up a linked service, a dataset, a pipeline, and trigger a run. description: >- The full data integration provisioning chain in Azure Synapse Analytics: a linked service defines the connection, a dataset shapes the data over that connection, a pipeline orchestrates the movement, and a pipeline run executes it. This workflow creates each resource in dependency order and then submits a run of the resulting pipeline. Every step spells out its request inline so the flow can be read and executed without opening the underlying OpenAPI description. version: 1.0.0 sourceDescriptions: - name: linkedServiceApi url: ../openapi/azure-synapse-analytics-linked-service-openapi.yml type: openapi - name: datasetApi url: ../openapi/azure-synapse-analytics-dataset-openapi.yml type: openapi - name: pipelineApi url: ../openapi/azure-synapse-analytics-pipeline-openapi.yml type: openapi workflows: - workflowId: build-data-integration-pipeline summary: >- Create a linked service, a dataset bound to it, a pipeline, and run the pipeline. description: >- Provisions a linked service, then a dataset that references it, then a pipeline, and finally submits a pipeline run, capturing the run identifier. inputs: type: object required: - apiVersion - linkedServiceName - linkedService - datasetName - dataset - pipelineName - pipeline properties: apiVersion: type: string description: The Synapse data plane API version (e.g. 2020-12-01). linkedServiceName: type: string description: The name of the linked service to create. linkedService: type: object description: The LinkedServiceResource definition. datasetName: type: string description: The name of the dataset to create. dataset: type: object description: >- The DatasetResource definition; its linkedServiceName reference should point at the linked service created here. pipelineName: type: string description: The name of the pipeline to create. pipeline: type: object description: The PipelineResource definition. runParameters: type: object description: Optional run-time parameters passed to the pipeline run. steps: - stepId: createLinkedService description: >- Create or update the linked service that defines the connection to the backing data store. operationId: LinkedService_CreateOrUpdateLinkedService parameters: - name: api-version in: query value: $inputs.apiVersion - name: linkedServiceName in: path value: $inputs.linkedServiceName requestBody: contentType: application/json payload: $inputs.linkedService successCriteria: - condition: $statusCode == 200 outputs: linkedServiceId: $response.body#/id - stepId: createDataset description: >- Create or update the dataset that references the linked service. operationId: Dataset_CreateOrUpdateDataset parameters: - name: api-version in: query value: $inputs.apiVersion - name: datasetName in: path value: $inputs.datasetName requestBody: contentType: application/json payload: $inputs.dataset successCriteria: - condition: $statusCode == 200 outputs: datasetId: $response.body#/id - stepId: createPipeline description: >- Create or update the pipeline that orchestrates movement using the dataset and linked service above. operationId: Pipeline_CreateOrUpdatePipeline parameters: - name: api-version in: query value: $inputs.apiVersion - name: pipelineName in: path value: $inputs.pipelineName requestBody: contentType: application/json payload: $inputs.pipeline successCriteria: - condition: $statusCode == 200 outputs: pipelineId: $response.body#/id - stepId: runPipeline description: >- Submit a run of the newly built pipeline, passing any optional run-time parameters. operationId: Pipeline_CreatePipelineRun parameters: - name: api-version in: query value: $inputs.apiVersion - name: pipelineName in: path value: $inputs.pipelineName requestBody: contentType: application/json payload: $inputs.runParameters successCriteria: - condition: $statusCode == 202 outputs: runId: $response.body#/runId outputs: linkedServiceId: $steps.createLinkedService.outputs.linkedServiceId datasetId: $steps.createDataset.outputs.datasetId pipelineId: $steps.createPipeline.outputs.pipelineId runId: $steps.runPipeline.outputs.runId