---
title: "SAIFPIPELINES001: Pipeline Generation API is Experimental"
description: Explains why the SAIF pipeline generation APIs raise SAIFPIPELINES001 and how to suppress it with a pragma or NoWarn.
---

# SAIFPIPELINES001: Pipeline Generation API is Experimental

## Cause

You are using a type or member from the SAIF pipeline generation API that is marked as experimental.

## Rule Description

The pipeline generation APIs in `SAIF.Platform.Aspire.Hosting.Generation.Pipelines` are currently in preview and may change in future releases. These APIs generate Azure DevOps pipeline YAML and variable files in `.azdo/` when you run `aspire publish`. They allow you to:

- Customize API pipeline variables such as the API tier and OpenAPI file name
- Customize event service pipeline variables such as the OpenAPI file name
- Mark project resources with the pipeline role they play (API, web frontend, event service, or subscription)
- Run the pipeline publishing step and Bicep artifact cleanup from custom tooling or tests

`AddSaifEnvironment()` registers the pipeline resource and Bicep cleanup automatically, so most AppHosts only touch the options types. See [Aspire Publish](../../build/deploy/aspire-publish.md) for usage.

## How to Fix

The compiler reports SAIFPIPELINES001 as an error by default. If you want to use these experimental APIs, suppress the diagnostic:

### Option 1: Suppress in code

```csharp
#pragma warning disable SAIFPIPELINES001
var api = builder.AddApiService<Projects.MyApp_Api>("myapp",
    new ApiPipelineOptions { Type = ApiType.Process });
#pragma warning restore SAIFPIPELINES001
```

### Option 2: Suppress in project file

```xml
<PropertyGroup>
  <NoWarn>$(NoWarn);SAIFPIPELINES001</NoWarn>
</PropertyGroup>
```

## Affected APIs

| Type                            | Description                                                                         |
| ------------------------------- | ----------------------------------------------------------------------------------- |
| `ApiPipelineOptions`            | API pipeline options that map to `.azdo/vars/api.yml`                               |
| `ApiType`                       | API tier classification: `Experience`, `Process`, `System`, or `None`               |
| `EventServicePipelineOptions`   | Event service pipeline options that map to `.azdo/vars/event-service.yml`           |
| `PipelineProjectRole`           | Role a project plays in pipeline generation                                         |
| `PipelineProjectAnnotation`     | Annotation that marks a project resource with its `PipelineProjectRole`             |
| `PipelineResource`              | Resource that owns the publish step for Azure DevOps pipeline files                 |
| `PipelineResourceExtensions`    | Extension methods for adding the pipeline resource                                  |
| `SaifPipelinePublishingContext` | Context that writes pipeline YAML and variable files from the application model     |
| `BicepCleanup`                  | Utilities that remove Aspire-generated Bicep artifacts from the publish output      |

## When Will This Be Stable?

These APIs are being introduced as experimental in Forge 3.3. We are gathering feedback on:

- Pipeline options and the variables they expose
- Project role detection across API, frontend, event service, and subscription resources
- Generated pipeline and variable file layout in `.azdo/`
- Bicep artifact cleanup behavior after publish

Once we have sufficient feedback and the API design has stabilized, we will remove the experimental designation in a future release.

Please provide feedback via the [Forge repository](https://github.com/saif-corp/forge/issues).
