{ "openapi": "3.1.0", "info": { "title": "Stedi Enrollment", "version": "2024-09-01", "description": "The Stedi Enrollment Service manages provider enrollments with healthcare payers.\nIt tracks enrollment status, provider details, and supports batch enrollment processing\nto ensure providers have the necessary credentials before processing healthcare transactions.\n", "contact": { "email": "healthcare@stedi.com" }, "license": { "name": "Proprietary", "url": "https://stedi.com" } }, "paths": { "/documents/{documentId}": { "delete": { "description": "Deletes the specified PDF document associated with a transaction enrollment.", "operationId": "DeleteEnrollmentDocument", "parameters": [ { "name": "documentId", "in": "path", "description": "The document ID for the PDF document you want to delete. The document ID is returned in the responses for the [Retrieve Enrollment](/healthcare/api-reference/get-enrollment) and [List Enrollments](/healthcare/api-reference/get-enrollment-list-enrollments) endpoints.", "schema": { "type": "string", "description": "The document ID for the PDF document you want to delete. The document ID is returned in the responses for the [Retrieve Enrollment](/healthcare/api-reference/get-enrollment) and [List Enrollments](/healthcare/api-reference/get-enrollment-list-enrollments) endpoints." }, "required": true, "examples": { "DeleteEnrollmentDocument_example1": { "summary": "Delete Enrollment Document", "description": "", "value": "doc-123e4567-e89b-12d3-a456-426614174000" } } } ], "responses": { "200": { "description": "DeleteEnrollmentDocument 200 response" }, "400": { "description": "ValidationException 400 response", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ValidationExceptionResponseContent" } } } }, "401": { "description": "UnauthorizedException 401 response", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/UnauthorizedExceptionResponseContent" } } } }, "403": { "description": "AccessDeniedException 403 response", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/AccessDeniedExceptionResponseContent" } } } }, "404": { "description": "ResourceNotFoundException 404 response", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ResourceNotFoundExceptionResponseContent" } } } }, "500": { "description": "InternalFailureException 500 response", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/InternalFailureExceptionResponseContent" } } } } } } }, "/documents/{documentId}/download": { "get": { "description": "Returns a pre-signed URL to download the specified enrollment document.", "operationId": "CreateEnrollmentDocumentDownload", "parameters": [ { "name": "documentId", "in": "path", "description": "The document ID for the PDF document you want to download. The document ID is returned in the responses for the [Retrieve Enrollment](/healthcare/api-reference/get-enrollment) and [List Enrollments](/healthcare/api-reference/get-enrollment-list-enrollments) endpoints.", "schema": { "type": "string", "description": "The document ID for the PDF document you want to download. The document ID is returned in the responses for the [Retrieve Enrollment](/healthcare/api-reference/get-enrollment) and [List Enrollments](/healthcare/api-reference/get-enrollment-list-enrollments) endpoints." }, "required": true, "examples": { "CreateEnrollmentDocumentDownload_example1": { "summary": "Create Enrollment Document Download", "description": "", "value": "doc-123e4567-e89b-12d3-a456-426614174000" } } } ], "responses": { "200": { "description": "CreateEnrollmentDocumentDownload 200 response", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/CreateEnrollmentDocumentDownloadResponseContent" }, "examples": { "CreateEnrollmentDocumentDownload_example1": { "summary": "Create Enrollment Document Download", "description": "", "value": { "documentId": "doc-123e4567-e89b-12d3-a456-426614174000", "downloadUrl": "https://s3.amazonaws.com/enrollment-documents/doc-123e4567-e89b-12d3-a456-426614174000/provider-license.pdf?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=..." } } } } } }, "400": { "description": "ValidationException 400 response", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ValidationExceptionResponseContent" } } } }, "401": { "description": "UnauthorizedException 401 response", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/UnauthorizedExceptionResponseContent" } } } }, "403": { "description": "AccessDeniedException 403 response", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/AccessDeniedExceptionResponseContent" } } } }, "404": { "description": "ResourceNotFoundException 404 response", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ResourceNotFoundExceptionResponseContent" } } } }, "500": { "description": "InternalFailureException 500 response", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/InternalFailureExceptionResponseContent" } } } } } } }, "/enrollments": { "get": { "description": "Lists transaction enrollment records with optional filtering and pagination.", "operationId": "ListEnrollments", "parameters": [ { "name": "pageSize", "in": "query", "description": "The maximum number of elements to return in a page. If not specified, the default is 100.", "schema": { "type": "number", "maximum": 500, "minimum": 1, "description": "The maximum number of elements to return in a page. If not specified, the default is 100." } }, { "name": "pageToken", "in": "query", "description": "An opaque token returned by a previous call to this endpoint in the `nextPageToken` property. You can use it to request the next page of results. If not specified, Stedi returns the first page of results.", "schema": { "type": "string", "maxLength": 1024, "minLength": 1, "description": "An opaque token returned by a previous call to this endpoint in the `nextPageToken` property. You can use it to request the next page of results. If not specified, Stedi returns the first page of results." } }, { "name": "filter", "in": "query", "description": "Filter for enrollments with properties matching a query string. You can provide all or part of a provider name, NPI, or tax ID. You can also provide all or part of a payer's [Stedi payer ID](https://www.stedi.com/docs/healthcare/supported-payers#stedi-payer-id) - primary payer IDs and aliases aren't supported. The search is case-insensitive and supports fuzzy matching.\n\nFor example, providing `?filter=OS` returns enrollments with `provider.name` containing `os` or `OS` (such as `Joseph`) and Stedi payer IDs containing `OS`, such as `OSBLI` for OptumHealth Salt Lake County.", "schema": { "type": "string", "description": "Filter for enrollments with properties matching a query string. You can provide all or part of a provider name, NPI, or tax ID. You can also provide all or part of a payer's [Stedi payer ID](https://www.stedi.com/docs/healthcare/supported-payers#stedi-payer-id) - primary payer IDs and aliases aren't supported. The search is case-insensitive and supports fuzzy matching.\n\nFor example, providing `?filter=OS` returns enrollments with `provider.name` containing `os` or `OS` (such as `Joseph`) and Stedi payer IDs containing `OS`, such as `OSBLI` for OptumHealth Salt Lake County." } }, { "name": "status", "in": "query", "description": "Filter for enrollments with specific statuses. You can include this parameter multiple times to filter for multiple statuses.\n\nFor example, `?status=LIVE&status=REJECTED` returns enrollments that are in either `LIVE` or `REJECTED` status.", "style": "form", "schema": { "type": "array", "items": { "$ref": "#/components/schemas/EnrollmentStatus" }, "description": "Filter for enrollments with specific statuses. You can include this parameter multiple times to filter for multiple statuses.\n\nFor example, `?status=LIVE&status=REJECTED` returns enrollments that are in either `LIVE` or `REJECTED` status." }, "explode": true }, { "name": "providerNpis", "in": "query", "description": "Filter for enrollments associated with specific provider NPIs. You can include this parameter multiple times to filter for multiple NPIs.\n\nFor example, `?providerNpis=1234567890&providerNpis=0987654321` returns enrollments associated with either of the specified NPIs.", "style": "form", "schema": { "type": "array", "items": { "type": "string" }, "description": "Filter for enrollments associated with specific provider NPIs. You can include this parameter multiple times to filter for multiple NPIs.\n\nFor example, `?providerNpis=1234567890&providerNpis=0987654321` returns enrollments associated with either of the specified NPIs." }, "explode": true }, { "name": "providerTaxIds", "in": "query", "description": "Filter for enrollments associated with specific provider tax IDs. You can include this parameter multiple times to filter for multiple tax IDs.\n\nFor example, `?providerTaxIds=123456789&providerTaxIds=987654321` returns enrollments associated with either of the specified tax IDs.", "style": "form", "schema": { "type": "array", "items": { "type": "string" }, "description": "Filter for enrollments associated with specific provider tax IDs. You can include this parameter multiple times to filter for multiple tax IDs.\n\nFor example, `?providerTaxIds=123456789&providerTaxIds=987654321` returns enrollments associated with either of the specified tax IDs." }, "explode": true }, { "name": "providerNames", "in": "query", "description": "Filter for enrollments associated with specific provider names. You can include this parameter multiple times to filter for multiple names.\n\nFor example, `?providerNames=John%20Doe&providerNames=Jane%20Doe` returns enrollments associated with either John Doe or Jane Doe.\n\nThis search is case-sensitive and doesn't support fuzzy matching. The name you provide must match the provider's name exactly, including spaces and capitalization.", "style": "form", "schema": { "type": "array", "items": { "type": "string" }, "description": "Filter for enrollments associated with specific provider names. You can include this parameter multiple times to filter for multiple names.\n\nFor example, `?providerNames=John%20Doe&providerNames=Jane%20Doe` returns enrollments associated with either John Doe or Jane Doe.\n\nThis search is case-sensitive and doesn't support fuzzy matching. The name you provide must match the provider's name exactly, including spaces and capitalization." }, "explode": true }, { "name": "payerIds", "in": "query", "description": "Filter for enrollments associated with specific [Stedi payer IDs](https://www.stedi.com/docs/healthcare/supported-payers#stedi-payer-id). You can include this parameter multiple times to filter for multiple payer IDs.\n\nFor example, `?payerIds=HGJLR&payerIds=EWDCI` returns enrollments associated with either of the specified payer IDs.\n\nThis parameter only supports Stedi payer IDs, not primary payer IDs or aliases. It also doesn't support fuzzy matching. The payer ID you provide must match the Stedi payer ID exactly, including capitalization.", "style": "form", "schema": { "type": "array", "items": { "type": "string" }, "description": "Filter for enrollments associated with specific [Stedi payer IDs](https://www.stedi.com/docs/healthcare/supported-payers#stedi-payer-id). You can include this parameter multiple times to filter for multiple payer IDs.\n\nFor example, `?payerIds=HGJLR&payerIds=EWDCI` returns enrollments associated with either of the specified payer IDs.\n\nThis parameter only supports Stedi payer IDs, not primary payer IDs or aliases. It also doesn't support fuzzy matching. The payer ID you provide must match the Stedi payer ID exactly, including capitalization." }, "explode": true }, { "name": "sources", "in": "query", "description": "Filter for enrollments submitted through specific sources, such as the API or UI. You can include this parameter multiple times to filter for multiple sources.\n\nFor example, `?sources=API&sources=UI` returns enrollments submitted through either of the specified sources.", "style": "form", "schema": { "type": "array", "items": { "$ref": "#/components/schemas/EnrollmentSource" }, "description": "Filter for enrollments submitted through specific sources, such as the API or UI. You can include this parameter multiple times to filter for multiple sources.\n\nFor example, `?sources=API&sources=UI` returns enrollments submitted through either of the specified sources." }, "explode": true }, { "name": "transactions", "in": "query", "description": "Filter for enrollments for specific transaction types. You can include this parameter multiple times to filter for multiple types.\n\nFor example, `?transactions=eligibilityCheck&transactions=claimStatus` returns enrollments for both 270/271 eligibility checks and 276/277 real-time claim status.", "style": "form", "schema": { "type": "array", "items": { "$ref": "#/components/schemas/TransactionType" }, "description": "Filter for enrollments for specific transaction types. You can include this parameter multiple times to filter for multiple types.\n\nFor example, `?transactions=eligibilityCheck&transactions=claimStatus` returns enrollments for both 270/271 eligibility checks and 276/277 real-time claim status." }, "explode": true }, { "name": "createdFrom", "in": "query", "description": "Filter for enrollments created from a specific date.\n\nFor example, if you set this to `2025-01-01T00:00:00Z`, Stedi returns enrollments with a `createdAt` timestamp on or after this date.", "schema": { "type": "string", "description": "Filter for enrollments created from a specific date.\n\nFor example, if you set this to `2025-01-01T00:00:00Z`, Stedi returns enrollments with a `createdAt` timestamp on or after this date.", "format": "date-time" } }, { "name": "createdTo", "in": "query", "description": "Filter for enrollments created before a specific date.\n\nFor example, if you set this to `2025-01-01T00:00:00Z`, Stedi only returns enrollments with a `createdAt` timestamp before this date.\n\nThe time must be later than `createdFrom`, if present.", "schema": { "type": "string", "description": "Filter for enrollments created before a specific date.\n\nFor example, if you set this to `2025-01-01T00:00:00Z`, Stedi only returns enrollments with a `createdAt` timestamp before this date.\n\nThe time must be later than `createdFrom`, if present.", "format": "date-time" } }, { "name": "statusUpdatedFrom", "in": "query", "description": "Filter for enrollments whose status was last updated from a specific date.\n\nFor example, if you set this to `2025-01-01T00:00:00Z`, Stedi returns enrollments with a `statusLastUpdatedAt` timestamp on or after this date.", "schema": { "type": "string", "description": "Filter for enrollments whose status was last updated from a specific date.\n\nFor example, if you set this to `2025-01-01T00:00:00Z`, Stedi returns enrollments with a `statusLastUpdatedAt` timestamp on or after this date.", "format": "date-time" } }, { "name": "statusUpdatedTo", "in": "query", "description": "Filter for enrollments whose status was last updated before a specific date.\n\nFor example, if you set this to `2025-01-01T00:00:00Z`, Stedi only returns enrollments with a `statusLastUpdatedAt` before this date.\n\nThe time must be later than `statusUpdatedFrom`, if present.", "schema": { "type": "string", "description": "Filter for enrollments whose status was last updated before a specific date.\n\nFor example, if you set this to `2025-01-01T00:00:00Z`, Stedi only returns enrollments with a `statusLastUpdatedAt` before this date.\n\nThe time must be later than `statusUpdatedFrom`, if present.", "format": "date-time" } }, { "name": "importId", "in": "query", "description": "The import ID associated with an enrollment through a CSV bulk import. This ID is only available for enrollments created through the CSV import process.", "schema": { "type": "string", "description": "The import ID associated with an enrollment through a CSV bulk import. This ID is only available for enrollments created through the CSV import process." } }, { "name": "sortBy", "in": "query", "description": "Sort the results by one or more properties. By default, Stedi sorts results by the `createdAt` property in descending order.\n\nSupply a query string with each property appended using `&`. Each property must be provided in a `property:direction` format, where `property` is the name of the property to sort by and `direction` is the sort direction, either `asc` (ascending) or `desc` (descending).\n - When you don't include `id`, Stedi automatically adds it as the final sort criterion to ensure deterministic results.\n - When you provide multiple properties, Stedi sorts by their order in the query string. For example, if you provide `?sortBy=updatedAt:desc&sortBy=id:asc`, Stedi sorts first by `updatedAt` in descending order. If multiple records share the same `updatedAt` date, Stedi then sorts those records by `id` in ascending order.\n\n**Supported properties:** `updatedAt`, `statusLastUpdatedAt`, `id`\n\nExamples:\n - Sort by `updatedAt` in descending order: `?sortBy=updatedAt:desc`\n - Sort by `statusLastUpdatedAt` in ascending order: `?sortBy=statusLastUpdatedAt:asc`\n - Sort by `updatedAt` and then by `id`: `?sortBy=updatedAt:desc&sortBy=id:asc`", "style": "form", "schema": { "type": "array", "items": { "type": "string", "pattern": "^\\w+:(asc|desc)$" }, "description": "Sort the results by one or more properties. By default, Stedi sorts results by the `createdAt` property in descending order.\n\nSupply a query string with each property appended using `&`. Each property must be provided in a `property:direction` format, where `property` is the name of the property to sort by and `direction` is the sort direction, either `asc` (ascending) or `desc` (descending).\n - When you don't include `id`, Stedi automatically adds it as the final sort criterion to ensure deterministic results.\n - When you provide multiple properties, Stedi sorts by their order in the query string. For example, if you provide `?sortBy=updatedAt:desc&sortBy=id:asc`, Stedi sorts first by `updatedAt` in descending order. If multiple records share the same `updatedAt` date, Stedi then sorts those records by `id` in ascending order.\n\n**Supported properties:** `updatedAt`, `statusLastUpdatedAt`, `id`\n\nExamples:\n - Sort by `updatedAt` in descending order: `?sortBy=updatedAt:desc`\n - Sort by `statusLastUpdatedAt` in ascending order: `?sortBy=statusLastUpdatedAt:asc`\n - Sort by `updatedAt` and then by `id`: `?sortBy=updatedAt:desc&sortBy=id:asc`" }, "explode": true } ], "responses": { "200": { "description": "ListEnrollments 200 response", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ListEnrollmentsResponseContent" }, "examples": { "ListEnrollments_example1": { "summary": "List Enrollments", "description": "", "value": { "nextPageToken": "945ff6de213d3ef481d028065d4c12fb996a166a3a90ef98564318decfae50ce4b36d74b7e9d9bafa6e1d169", "totalCount": 42, "items": [ { "id": "db6675c5-7bg7-4af9-8c68-a54a336d2911", "provider": { "name": "Test Medical Provider", "id": "db6665c5-7b97-4af9-8c68-a00a336c2998", "npi": "1234567890", "taxId": "123456789", "taxIdType": "EIN" }, "payer": { "name": "UnitedHealthcare", "stediPayerId": "KMQTZ", "submittedPayerIdOrAlias": "87726" }, "transactions": { "claimPayment": { "enroll": true } }, "status": "LIVE", "source": "API", "statusLastUpdatedAt": "2025-05-01T12:00:00Z", "createdAt": "2025-04-01T12:00:00Z", "updatedAt": "2025-05-01T12:00:00Z", "documents": [ { "id": "dc6665a5-7b97-4agh-8c74-a00a336c2989", "enrollmentId": "db6675c5-7bg7-4af9-8c68-a54a336d2911", "status": "UPLOADED", "name": "pdf-agreement.pdf", "createdAt": "2025-04-01T12:00:00Z", "updatedAt": "2025-04-02T12:00:00Z" } ], "history": [ { "newStatus": "DRAFT", "changedBy": "user@example.com", "changedAt": "2025-04-15T09:00:00Z", "type": "STATUS_CHANGE" }, { "previousStatus": "DRAFT", "newStatus": "SUBMITTED", "changedBy": "user@example.com", "changedAt": "2025-04-15T09:05:00Z", "type": "STATUS_CHANGE" }, { "previousStatus": "SUBMITTED", "newStatus": "PROVISIONING", "changedBy": "system", "changedAt": "2025-04-20T14:30:00Z", "type": "STATUS_CHANGE" }, { "previousStatus": "PROVISIONING", "newStatus": "LIVE", "changedBy": "system", "changedAt": "2025-05-01T12:00:00Z", "type": "STATUS_CHANGE" } ], "tasks": [ { "id": "ac6665a5-7b97-4agh-8c74-a00a336c2989", "responsibleParty": "PROVIDER", "isComplete": false, "rank": 0, "definition": { "followInstructions": { "instructions": "Upload a document to support your enrollment." } } } ] } ] } } } } } }, "400": { "description": "ValidationException 400 response", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ValidationExceptionResponseContent" } } } }, "401": { "description": "UnauthorizedException 401 response", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/UnauthorizedExceptionResponseContent" } } } }, "403": { "description": "AccessDeniedException 403 response", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/AccessDeniedExceptionResponseContent" } } } }, "500": { "description": "InternalFailureException 500 response", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/InternalFailureExceptionResponseContent" } } } } } }, "post": { "description": "Creates a new transaction enrollment request. Transaction enrollment registers a provider to exchange specific transaction types with a payer.", "operationId": "CreateEnrollment", "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/CreateEnrollmentRequestContent" }, "examples": { "CreateEnrollment_example1": { "summary": "Create Enrollment", "description": "", "value": { "transactions": { "claimPayment": { "enroll": true } }, "primaryContact": { "firstName": "John", "lastName": "Doe", "email": "test@example.com", "phone": "5551234567", "streetAddress1": "123 Some Str.", "city": "A City", "state": "MD", "zipCode": "20814" }, "userEmail": "test@example.com", "payer": { "idOrAlias": "87726" }, "provider": { "id": "db6665c5-7b97-4af9-8c68-a00a336c2998" }, "status": "SUBMITTED" } } } } }, "required": true }, "responses": { "200": { "description": "CreateEnrollment 200 response", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/CreateEnrollmentResponseContent" }, "examples": { "CreateEnrollment_example1": { "summary": "Create Enrollment", "description": "", "value": { "id": "db6675c5-7bg7-4af9-8c68-a54a336d2911", "primaryContact": { "firstName": "John", "lastName": "Doe", "email": "test@example.com", "phone": "5551234567", "streetAddress1": "123 Some Str.", "city": "A City", "state": "MD", "zipCode": "20814" }, "userEmail": "test@example.com", "createdAt": "2023-11-07T05:31:56Z", "updatedAt": "2023-11-07T05:31:56Z", "submittedAt": "2023-11-07T05:31:56Z", "transactions": { "claimPayment": { "enroll": true } }, "status": "SUBMITTED", "provider": { "name": "Test Medical Provider", "id": "db6665c5-7b97-4af9-8c68-a00a336c2998", "npi": "1234567890", "taxId": "123456789", "taxIdType": "EIN" }, "payer": { "name": "UnitedHealthcare", "stediPayerId": "KMQTZ", "submittedPayerIdOrAlias": "87726" }, "source": "API", "statusLastUpdatedAt": "2023-11-07T05:31:56Z", "history": [ { "newStatus": "DRAFT", "changedBy": "test@example.com", "changedAt": "2023-11-07T05:31:56Z", "type": "STATUS_CHANGE" }, { "previousStatus": "DRAFT", "newStatus": "SUBMITTED", "changedBy": "test@example.com", "changedAt": "2023-11-07T05:31:56Z", "type": "STATUS_CHANGE" } ] } } } } } }, "400": { "description": "ValidationException 400 response", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ValidationExceptionResponseContent" } } } }, "401": { "description": "UnauthorizedException 401 response", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/UnauthorizedExceptionResponseContent" } } } }, "403": { "description": "AccessDeniedException 403 response", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/AccessDeniedExceptionResponseContent" } } } }, "404": { "description": "ResourceNotFoundException 404 response", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ResourceNotFoundExceptionResponseContent" } } } }, "500": { "description": "InternalFailureException 500 response", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/InternalFailureExceptionResponseContent" } } } } } } }, "/enrollments/export": { "post": { "description": "Exports enrollment records as a CSV file with optional filtering. Supports the same filtering parameters as ListEnrollments operation. Returns a presigned URL to download the generated CSV file from S3.", "operationId": "ExportEnrollmentsCsv", "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ExportEnrollmentsCsvRequestContent" }, "examples": { "ExportEnrollmentsCsv_example1": { "summary": "Export All Enrollments as CSV", "description": "", "value": {} }, "ExportEnrollmentsCsv_example2": { "summary": "Export Filtered Enrollments as CSV", "description": "", "value": { "status": [ "LIVE", "SUBMITTED" ], "createdFrom": "2025-01-01T00:00:00Z", "createdTo": "2025-12-31T23:59:59Z" } }, "ExportEnrollmentsCsv_example3": { "summary": "No Enrollments Found", "description": "", "value": { "status": [ "CANCELED" ] } } } } } }, "responses": { "200": { "description": "ExportEnrollmentsCsv 200 response", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ExportEnrollmentsCsvResponseContent" }, "examples": { "ExportEnrollmentsCsv_example1": { "summary": "Export All Enrollments as CSV", "description": "", "value": { "downloadUrl": "https://s3.amazonaws.com/stedi-enrollment-exports/stedi_enrollment_records_export_20250625.csv?presigned-params", "filename": "stedi_enrollment_records_export_20250625.csv", "recordCount": 150 } }, "ExportEnrollmentsCsv_example2": { "summary": "Export Filtered Enrollments as CSV", "description": "", "value": { "downloadUrl": "https://s3.amazonaws.com/stedi-enrollment-exports/stedi_enrollment_records_export_20250625.csv?presigned-params", "filename": "stedi_enrollment_records_export_20250625.csv", "recordCount": 75 } }, "ExportEnrollmentsCsv_example3": { "summary": "No Enrollments Found", "description": "", "value": { "recordCount": 0 } } } } } }, "400": { "description": "ValidationException 400 response", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ValidationExceptionResponseContent" } } } }, "401": { "description": "UnauthorizedException 401 response", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/UnauthorizedExceptionResponseContent" } } } }, "403": { "description": "AccessDeniedException 403 response", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/AccessDeniedExceptionResponseContent" } } } }, "500": { "description": "InternalFailureException 500 response", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/InternalFailureExceptionResponseContent" } } } } } } }, "/enrollments/{enrollmentId}": { "delete": { "description": "Deletes an enrollment request. Only enrollments in DRAFT status can be deleted. This operation is idempotent.", "operationId": "DeleteEnrollment", "parameters": [ { "name": "enrollmentId", "in": "path", "description": "The Stedi-assigned identifier for the enrollment you want to delete.", "schema": { "type": "string", "description": "The Stedi-assigned identifier for the enrollment you want to delete." }, "required": true, "examples": { "DeleteEnrollment_example1": { "summary": "Delete Enrollment", "description": "", "value": "db6675c5-7bg7-4af9-8c68-a54a336d2911" } } } ], "responses": { "200": { "description": "DeleteEnrollment 200 response" }, "400": { "description": "ValidationException 400 response", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ValidationExceptionResponseContent" } } } }, "401": { "description": "UnauthorizedException 401 response", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/UnauthorizedExceptionResponseContent" } } } }, "403": { "description": "AccessDeniedException 403 response", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/AccessDeniedExceptionResponseContent" } } } }, "404": { "description": "ResourceNotFoundException 404 response", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ResourceNotFoundExceptionResponseContent" } } } }, "500": { "description": "InternalFailureException 500 response", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/InternalFailureExceptionResponseContent" } } } } } }, "get": { "description": "Retrieves an enrollment request by its ID. This operation returns the complete enrollment details including provider and payer information.", "operationId": "GetEnrollment", "parameters": [ { "name": "enrollmentId", "in": "path", "description": "The Stedi-assigned identifier for the enrollment you want to retrieve.", "schema": { "type": "string", "description": "The Stedi-assigned identifier for the enrollment you want to retrieve." }, "required": true, "examples": { "GetEnrollment_example1": { "summary": "Get Enrollment", "description": "", "value": "db6675c5-7bg7-4af9-8c68-a54a336d2911" } } } ], "responses": { "200": { "description": "GetEnrollment 200 response", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/GetEnrollmentResponseContent" }, "examples": { "GetEnrollment_example1": { "summary": "Get Enrollment", "description": "", "value": { "id": "db6675c5-7bg7-4af9-8c68-a54a336d2911", "primaryContact": { "firstName": "John", "lastName": "Doe", "email": "test@example.com", "phone": "5551234567", "streetAddress1": "123 Some Str.", "city": "A City", "state": "MD", "zipCode": "20814" }, "userEmail": "test@example.com", "createdAt": "2023-11-07T05:31:56Z", "updatedAt": "2023-11-07T05:31:56Z", "submittedAt": "2023-11-07T05:31:56Z", "transactions": { "professionalClaimSubmission": { "enroll": true } }, "status": "PROVISIONING", "provider": { "name": "Test Medical Provider", "id": "db6665c5-7b97-4af9-8c68-a00a336c2998", "npi": "1234567890", "taxId": "123456789", "taxIdType": "EIN" }, "payer": { "name": "UnitedHealthcare", "stediPayerId": "KMQTZ", "submittedPayerIdOrAlias": "87726" }, "source": "API", "statusLastUpdatedAt": "2023-11-07T06:15:22Z", "documents": [ { "id": "dc6665a5-7b97-4agh-8c74-a00a336c2989", "enrollmentId": "db6675c5-7bg7-4af9-8c68-a54a336d2911", "status": "UPLOADED", "name": "pdf-agreement.pdf", "createdAt": "2025-04-01T12:00:00Z", "updatedAt": "2025-04-02T12:00:00Z" } ], "history": [ { "newStatus": "DRAFT", "changedBy": "user@example.com", "changedAt": "2023-11-07T05:31:56Z", "type": "STATUS_CHANGE" }, { "previousStatus": "DRAFT", "newStatus": "SUBMITTED", "changedBy": "user@example.com", "changedAt": "2023-11-07T05:31:56Z", "type": "STATUS_CHANGE" }, { "previousStatus": "SUBMITTED", "newStatus": "PROVISIONING", "changedBy": "system", "changedAt": "2023-11-07T06:15:22Z", "type": "STATUS_CHANGE" } ], "tasks": [ { "id": "ac6665a5-7b97-4agh-8c74-a00a336c2989", "responsibleParty": "PROVIDER", "isComplete": false, "rank": 0, "definition": { "followInstructions": { "instructions": "Upload a document to support your enrollment." } } } ] } } } } } }, "400": { "description": "ValidationException 400 response", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ValidationExceptionResponseContent" } } } }, "401": { "description": "UnauthorizedException 401 response", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/UnauthorizedExceptionResponseContent" } } } }, "403": { "description": "AccessDeniedException 403 response", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/AccessDeniedExceptionResponseContent" } } } }, "404": { "description": "ResourceNotFoundException 404 response", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ResourceNotFoundExceptionResponseContent" } } } }, "500": { "description": "InternalFailureException 500 response", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/InternalFailureExceptionResponseContent" } } } } } }, "post": { "description": "Updates an existing enrollment request. Only enrollments in DRAFT status can be updated. Once an enrollment is submitted, it cannot be modified.", "operationId": "UpdateEnrollment", "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/UpdateEnrollmentRequestContent" }, "examples": { "UpdateEnrollment_example1": { "summary": "Update Enrollment", "description": "", "value": { "status": "SUBMITTED", "transactions": { "claimPayment": { "enroll": true } }, "primaryContact": { "firstName": "Updated First Name", "lastName": "Updated Last Name", "email": "test@example.com", "phone": "3331234567", "streetAddress1": "123 Some Str.", "city": "A City", "state": "MD", "zipCode": "20814" }, "userEmail": "test@example.com", "payer": { "idOrAlias": "87726" }, "provider": { "id": "db6665c5-7b97-4af9-8c68-a00a336c2998" } } } } } }, "required": true }, "parameters": [ { "name": "enrollmentId", "in": "path", "description": "The Stedi-assigned identifier for the enrollment.", "schema": { "type": "string", "description": "The Stedi-assigned identifier for the enrollment." }, "required": true, "examples": { "UpdateEnrollment_example1": { "summary": "Update Enrollment", "description": "", "value": "db6675c5-7bg7-4af9-8c68-a54a336d2911" } } } ], "responses": { "200": { "description": "UpdateEnrollment 200 response", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/UpdateEnrollmentResponseContent" }, "examples": { "UpdateEnrollment_example1": { "summary": "Update Enrollment", "description": "", "value": { "id": "db6675c5-7bg7-4af9-8c68-a54a336d2911", "primaryContact": { "firstName": "Updated First Name", "lastName": "Updated Last Name", "email": "test@example.com", "phone": "3331234567", "streetAddress1": "123 Some Str.", "city": "A City", "state": "MD", "zipCode": "20814" }, "userEmail": "test@example.com", "createdAt": "2024-11-07T05:31:56Z", "updatedAt": "2024-11-18T07:25:42Z", "transactions": { "claimPayment": { "enroll": true } }, "status": "SUBMITTED", "provider": { "id": "db6665c5-7b97-4af9-8c68-a00a336c2998", "name": "Test Medical Provider", "npi": "1234567890", "taxId": "123456789", "taxIdType": "EIN" }, "payer": { "name": "UnitedHealthcare", "stediPayerId": "KMQTZ", "submittedPayerIdOrAlias": "87726" }, "source": "API", "statusLastUpdatedAt": "2024-11-07T05:31:56Z", "history": [ { "newStatus": "SUBMITTED", "changedBy": "test@example.com", "changedAt": "2025-11-07T05:31:56Z", "type": "STATUS_CHANGE" }, { "newStatus": "DRAFT", "changedBy": "test@example.com", "changedAt": "2024-11-07T05:31:56Z", "type": "STATUS_CHANGE" } ] } } } } } }, "400": { "description": "ValidationException 400 response", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ValidationExceptionResponseContent" } } } }, "401": { "description": "UnauthorizedException 401 response", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/UnauthorizedExceptionResponseContent" } } } }, "403": { "description": "AccessDeniedException 403 response", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/AccessDeniedExceptionResponseContent" } } } }, "404": { "description": "ResourceNotFoundException 404 response", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ResourceNotFoundExceptionResponseContent" } } } }, "500": { "description": "InternalFailureException 500 response", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/InternalFailureExceptionResponseContent" } } } } } } }, "/enrollments/{enrollmentId}/documents": { "post": { "description": "Returns a pre-signed URL to upload a PDF document for the specified transaction enrollment.", "operationId": "CreateEnrollmentDocumentUpload", "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/CreateEnrollmentDocumentUploadRequestContent" }, "examples": { "CreateEnrollmentDocumentUpload_example1": { "summary": "Create Enrollment Document Upload", "description": "", "value": { "name": "provider-license.pdf" } } } } }, "required": true }, "parameters": [ { "name": "enrollmentId", "in": "path", "description": "The enrollment ID for the transaction enrollment where you want to upload the PDF document. The enrollment ID is returned in the responses for the [Create Enrollment](/healthcare/api-reference/post-enrollment-create-enrollment) and [List Enrollments](/healthcare/api-reference/get-enrollment-list-enrollments) endpoints. It's also listed at the top of the [enrollment's details page](https://portal.stedi.com/app/healthcare/enrollments) in the Stedi portal.", "schema": { "type": "string", "description": "The enrollment ID for the transaction enrollment where you want to upload the PDF document. The enrollment ID is returned in the responses for the [Create Enrollment](/healthcare/api-reference/post-enrollment-create-enrollment) and [List Enrollments](/healthcare/api-reference/get-enrollment-list-enrollments) endpoints. It's also listed at the top of the [enrollment's details page](https://portal.stedi.com/app/healthcare/enrollments) in the Stedi portal." }, "required": true, "examples": { "CreateEnrollmentDocumentUpload_example1": { "summary": "Create Enrollment Document Upload", "description": "", "value": "db6675c5-7bg7-4af9-8c68-a54a336d2911" } } } ], "responses": { "200": { "description": "CreateEnrollmentDocumentUpload 200 response", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/CreateEnrollmentDocumentUploadResponseContent" }, "examples": { "CreateEnrollmentDocumentUpload_example1": { "summary": "Create Enrollment Document Upload", "description": "", "value": { "enrollmentId": "db6675c5-7bg7-4af9-8c68-a54a336d2911", "uploadUrl": "https://s3.amazonaws.com/enrollment-documents/db6675c5-7bg7-4af9-8c68-a54a336d2911/provider-license.pdf?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=...", "documentId": "doc-123e4567-e89b-12d3-a456-426614174000" } } } } } }, "400": { "description": "ValidationException 400 response", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ValidationExceptionResponseContent" } } } }, "401": { "description": "UnauthorizedException 401 response", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/UnauthorizedExceptionResponseContent" } } } }, "403": { "description": "AccessDeniedException 403 response", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/AccessDeniedExceptionResponseContent" } } } }, "404": { "description": "ResourceNotFoundException 404 response", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ResourceNotFoundExceptionResponseContent" } } } }, "500": { "description": "InternalFailureException 500 response", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/InternalFailureExceptionResponseContent" } } } } } } }, "/providers": { "get": { "description": "Lists providers with optional filtering and pagination.", "operationId": "ListProviders", "parameters": [ { "name": "pageSize", "in": "query", "description": "The maximum number of elements to return in a page. If not specified, the default is 100.", "schema": { "type": "number", "maximum": 500, "minimum": 1, "description": "The maximum number of elements to return in a page. If not specified, the default is 100." } }, { "name": "pageToken", "in": "query", "description": "An opaque token returned by a previous call to this endpoint in the `nextPageToken` property. You can use it to request the next page of results. If not specified, Stedi returns the first page of results.", "schema": { "type": "string", "maxLength": 1024, "minLength": 1, "description": "An opaque token returned by a previous call to this endpoint in the `nextPageToken` property. You can use it to request the next page of results. If not specified, Stedi returns the first page of results." } }, { "name": "filter", "in": "query", "description": "Filter for providers with properties matching a query string. You can provide all or part of a provider name, NPI, or tax ID. The search is case-insensitive and supports fuzzy matching.\n\nFor example, providing `?filter=OS` returns providers with names containing `os` (such as `Joseph`).", "schema": { "type": "string", "description": "Filter for providers with properties matching a query string. You can provide all or part of a provider name, NPI, or tax ID. The search is case-insensitive and supports fuzzy matching.\n\nFor example, providing `?filter=OS` returns providers with names containing `os` (such as `Joseph`)." } }, { "name": "providerNpis", "in": "query", "description": "Filter for providers with NPIs matching any value in this list.", "style": "form", "schema": { "type": "array", "items": { "type": "string", "description": "The provider NPI." }, "description": "Filter for providers with NPIs matching any value in this list." }, "explode": true }, { "name": "providerTaxIds", "in": "query", "description": "Filter for providers with tax IDs matching any value in this list.", "style": "form", "schema": { "type": "array", "items": { "type": "string", "description": "The provider tax ID." }, "description": "Filter for providers with tax IDs matching any value in this list." }, "explode": true } ], "responses": { "200": { "description": "ListProviders 200 response", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ListProvidersResponseContent" }, "examples": { "ListProviders_example1": { "summary": "List Providers", "description": "", "value": { "items": [ { "id": "10334e76-f073-4b5d-8984-81d8e5107857", "name": "BDQ Dental Inc", "npi": "1999999992", "taxIdType": "EIN", "taxId": "555123456" }, { "id": "10234e76-f067-4b5d-8984-81d8e5107123", "name": "Example Medical Associates", "npi": "1999999984", "taxIdType": "EIN", "taxId": "100100111" } ] } } } } } }, "400": { "description": "ValidationException 400 response", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ValidationExceptionResponseContent" } } } }, "401": { "description": "UnauthorizedException 401 response", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/UnauthorizedExceptionResponseContent" } } } }, "403": { "description": "AccessDeniedException 403 response", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/AccessDeniedExceptionResponseContent" } } } }, "500": { "description": "InternalFailureException 500 response", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/InternalFailureExceptionResponseContent" } } } } } }, "post": { "description": "Creates a new provider record. Providers must be created before they can be enrolled with payers.", "operationId": "CreateProvider", "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/CreateProviderRequestContent" }, "examples": { "CreateProvider_example1": { "summary": "Create Provider", "description": "", "value": { "name": "BDQ Dental Inc", "npi": "1999999992", "taxIdType": "EIN", "taxId": "555123456", "contacts": [ { "firstName": "Bob", "lastName": "Dentist", "email": "bob@fortdental.center", "phone": "5551232135", "streetAddress1": "123 Some Str", "city": "Chevy Chase", "zipCode": "20814", "state": "MD" }, { "firstName": "Tom", "lastName": "Dentist", "email": "tom@fortdental.center", "phone": "5551232133", "streetAddress1": "123 Some Str", "city": "Chevy Chase", "zipCode": "20814", "state": "MD" } ] } } } } }, "required": true }, "responses": { "200": { "description": "CreateProvider 200 response", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/CreateProviderResponseContent" }, "examples": { "CreateProvider_example1": { "summary": "Create Provider", "description": "", "value": { "createdAt": "2024-11-18T17:39:52.406Z", "id": "10334e76-f073-4b5d-8984-81d8e5107857", "name": "BDQ Dental Inc", "npi": "1999999992", "taxId": "555123456", "taxIdType": "EIN", "updatedAt": "2024-11-18T17:39:52.406Z", "contacts": [ { "organizationName": "", "firstName": "Bob", "lastName": "Dentist", "email": "bob@fortdental.center", "phone": "5551232135", "streetAddress1": "123 Some Str", "city": "Chevy Chase", "zipCode": "20814", "state": "MD" }, { "organizationName": "", "firstName": "Tom", "lastName": "Dentist", "email": "tom@fortdental.center", "phone": "5551232133", "streetAddress1": "123 Some Str", "city": "Chevy Chase", "zipCode": "20814", "state": "MD" } ] } } } } } }, "400": { "description": "ValidationException 400 response", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ValidationExceptionResponseContent" } } } }, "401": { "description": "UnauthorizedException 401 response", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/UnauthorizedExceptionResponseContent" } } } }, "403": { "description": "AccessDeniedException 403 response", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/AccessDeniedExceptionResponseContent" } } } }, "404": { "description": "ResourceNotFoundException 404 response", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ResourceNotFoundExceptionResponseContent" } } } }, "500": { "description": "InternalFailureException 500 response", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/InternalFailureExceptionResponseContent" } } } } } } }, "/providers/{providerId}": { "delete": { "description": "Deletes a provider record. Providers can only be deleted if they have no associated enrollments. This operation is idempotent.", "operationId": "DeleteProvider", "parameters": [ { "name": "providerId", "in": "path", "description": "The Stedi-assigned identifier for the provider you want to delete.", "schema": { "type": "string", "description": "The Stedi-assigned identifier for the provider you want to delete." }, "required": true, "examples": { "DeleteProvider_example1": { "summary": "Delete Provider", "description": "", "value": "10334e76-f073-4b5d-8984-81d8e5107857" } } } ], "responses": { "200": { "description": "DeleteProvider 200 response" }, "400": { "description": "ValidationException 400 response", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ValidationExceptionResponseContent" } } } }, "401": { "description": "UnauthorizedException 401 response", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/UnauthorizedExceptionResponseContent" } } } }, "403": { "description": "AccessDeniedException 403 response", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/AccessDeniedExceptionResponseContent" } } } }, "404": { "description": "ResourceNotFoundException 404 response", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ResourceNotFoundExceptionResponseContent" } } } }, "500": { "description": "InternalFailureException 500 response", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/InternalFailureExceptionResponseContent" } } } } } }, "get": { "description": "Retrieves a provider record by its ID. This operation returns the complete provider details including contact information.", "operationId": "GetProvider", "parameters": [ { "name": "providerId", "in": "path", "description": "The unique ID Stedi assigned to the provider when it was created in the system.", "schema": { "type": "string", "description": "The unique ID Stedi assigned to the provider when it was created in the system." }, "required": true, "examples": { "GetProvider_example1": { "summary": "Get Provider", "description": "", "value": "10334e76-f073-4b5d-8984-81d8e5107857" } } } ], "responses": { "200": { "description": "GetProvider 200 response", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/GetProviderResponseContent" }, "examples": { "GetProvider_example1": { "summary": "Get Provider", "description": "", "value": { "createdAt": "2024-11-18T17:39:52.406Z", "id": "10334e76-f073-4b5d-8984-81d8e5107857", "name": "BDQ Dental Inc", "npi": "1999999992", "taxId": "555123456", "taxIdType": "EIN", "updatedAt": "2024-11-18T17:39:52.406Z", "contacts": [ { "organizationName": "", "firstName": "Bob", "lastName": "Dentist", "email": "bob@fortdental.center", "phone": "5551234567", "streetAddress1": "123 Some Str", "city": "Chevy Chase", "zipCode": "20814", "state": "MD" }, { "organizationName": "", "firstName": "Tom", "lastName": "Dentist", "email": "tom@fortdental.center", "phone": "5551234568", "streetAddress1": "123 Some Str", "city": "Chevy Chase", "zipCode": "20814", "state": "MD" } ] } } } } } }, "400": { "description": "ValidationException 400 response", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ValidationExceptionResponseContent" } } } }, "401": { "description": "UnauthorizedException 401 response", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/UnauthorizedExceptionResponseContent" } } } }, "403": { "description": "AccessDeniedException 403 response", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/AccessDeniedExceptionResponseContent" } } } }, "404": { "description": "ResourceNotFoundException 404 response", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ResourceNotFoundExceptionResponseContent" } } } }, "500": { "description": "InternalFailureException 500 response", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/InternalFailureExceptionResponseContent" } } } } } }, "post": { "description": "Updates an existing provider's information. Note that NPI and tax ID cannot be changed after creation.", "operationId": "UpdateProvider", "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/UpdateProviderRequestContent" }, "examples": { "UpdateProvider_example1": { "summary": "Update Provider", "description": "", "value": { "name": "TEST Updated Dental Inc", "contacts": [ { "firstName": "Test", "lastName": "Tester", "email": "bob@fortdental.center", "phone": "5551234567", "streetAddress1": "123 Some Str", "city": "A City", "zipCode": "12345", "state": "WA" } ] } } } } }, "required": true }, "parameters": [ { "name": "providerId", "in": "path", "description": "The Stedi-assigned identifier for the provider you want to update.", "schema": { "type": "string", "description": "The Stedi-assigned identifier for the provider you want to update." }, "required": true, "examples": { "UpdateProvider_example1": { "summary": "Update Provider", "description": "", "value": "10334e76-f073-4b5d-8984-81d8e5107857" } } } ], "responses": { "200": { "description": "UpdateProvider 200 response", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/UpdateProviderResponseContent" }, "examples": { "UpdateProvider_example1": { "summary": "Update Provider", "description": "", "value": { "createdAt": "2024-11-18T17:39:52.406Z", "id": "10334e76-f073-4b5d-8984-81d8e5107857", "name": "TEST Updated Dental Inc", "npi": "1999999999", "taxId": "111222333", "taxIdType": "EIN", "updatedAt": "2024-11-19T19:24:33.246Z", "contacts": [ { "organizationName": "", "firstName": "Test", "lastName": "Tester", "email": "bob@fortdental.center", "phone": "5551234567", "streetAddress1": "123 Some Str", "city": "A City", "zipCode": "12345", "state": "WA" } ] } } } } } }, "400": { "description": "ValidationException 400 response", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ValidationExceptionResponseContent" } } } }, "401": { "description": "UnauthorizedException 401 response", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/UnauthorizedExceptionResponseContent" } } } }, "403": { "description": "AccessDeniedException 403 response", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/AccessDeniedExceptionResponseContent" } } } }, "404": { "description": "ResourceNotFoundException 404 response", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ResourceNotFoundExceptionResponseContent" } } } }, "500": { "description": "InternalFailureException 500 response", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/InternalFailureExceptionResponseContent" } } } } } } }, "/tasks/{taskId}": { "post": { "description": "Updates a task associated with an enrollment.", "operationId": "UpdateTaskPost", "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/UpdateTaskPostRequestContent" }, "examples": { "UpdateTaskPost_example1": { "summary": "Update task", "description": "", "value": { "completed": true, "responseData": { "provideInformation": { "response": "I have completed the required steps as instructed." } } } } } } } }, "parameters": [ { "name": "taskId", "in": "path", "description": "The Stedi-assigned identifier for the task to complete. You can get the task ID from either the [Retrieve Enrollment](/healthcare/api-reference/get-enrollment) or [List Enrollments](/healthcare/api-reference/get-enrollment-list-enrollments) endpoint.", "schema": { "type": "string", "description": "The Stedi-assigned identifier for the task to complete. You can get the task ID from either the [Retrieve Enrollment](/healthcare/api-reference/get-enrollment) or [List Enrollments](/healthcare/api-reference/get-enrollment-list-enrollments) endpoint." }, "required": true, "examples": { "UpdateTaskPost_example1": { "summary": "Update task", "description": "", "value": "01937d50-1234-7890-abcd-567890abcdef" } } } ], "responses": { "200": { "description": "UpdateTaskPost 200 response", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/UpdateTaskPostResponseContent" }, "examples": { "UpdateTaskPost_example1": { "summary": "Update task", "description": "", "value": { "task": { "id": "01937d50-1234-7890-abcd-567890abcdef", "definition": { "provideInformation": { "instructions": "Please provide a brief summary of your experience." } }, "isComplete": true, "completedAt": "2024-06-01T12:00:00Z", "responsibleParty": "PROVIDER", "rank": 1, "responseData": { "provideInformation": { "response": "I have completed the required steps as instructed." } } } } } } } } }, "400": { "description": "ValidationException 400 response", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ValidationExceptionResponseContent" } } } }, "401": { "description": "UnauthorizedException 401 response", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/UnauthorizedExceptionResponseContent" } } } }, "403": { "description": "AccessDeniedException 403 response", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/AccessDeniedExceptionResponseContent" } } } }, "404": { "description": "ResourceNotFoundException 404 response", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ResourceNotFoundExceptionResponseContent" } } } }, "500": { "description": "InternalFailureException 500 response", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/InternalFailureExceptionResponseContent" } } } } } } } }, "components": { "schemas": { "AccessDeniedExceptionResponseContent": { "type": "object", "description": "The server response for authorization failure.", "properties": { "message": { "type": "string", "description": "Human-readable error message" }, "code": { "type": "string", "description": "Error classification code" } }, "required": [ "message" ] }, "AllEnrolledProviderFields": { "type": "object", "description": "Complete provider information including both read-only and mutable fields.", "properties": { "name": { "type": "string", "description": "The provider's name, such as `Example Dental Associates, LLC`." }, "npi": { "type": "string", "description": "The provider's National Provider Identifier (NPI). This is a 10-digit number assigned by the Centers for Medicare & Medicaid Services (CMS) to healthcare providers in the United States. It is used to identify providers in healthcare transactions." }, "taxId": { "type": "string", "description": "The provider's tax identification number (SSN or EIN). This is used to identify the provider for tax and administrative purposes." }, "taxIdType": { "type": "string", "description": "The type of tax identification number. This indicates whether the tax ID is a Social Security Number (SSN) or Employer Identification Number (EIN)." }, "id": { "type": "string", "description": "The Stedi-assigned identifier for the provider. The [Create Provider](https://www.stedi.com/docs/api-reference/healthcare/post-enrollment-create-provider) endpoint returns this as the `id` property." } }, "required": [ "id", "name", "npi", "taxId", "taxIdType" ] }, "CreateEnrollmentDocumentDownloadResponseContent": { "type": "object", "description": "Response containing the document ID and pre-signed URL for download.", "properties": { "documentId": { "type": "string", "description": "The document ID for the PDF document associated with the `downloadUrl`." }, "downloadUrl": { "type": "string", "description": "The pre-signed URL to download the document." } }, "required": [ "documentId", "downloadUrl" ] }, "CreateEnrollmentDocumentUploadRequestContent": { "type": "object", "description": "Input for CreateDocumentUpload.", "properties": { "name": { "type": "string", "description": "The file name of the PDF document you want to upload. The name should include the file extension, such as `provider-license.pdf`. This name will be displayed in the Stedi portal." }, "taskId": { "type": "string", "description": "The ID for the task associated with this PDF upload. Only include this property when the PDF upload is related to completing a specific task on the transaction enrollment." } }, "required": [ "name" ] }, "CreateEnrollmentDocumentUploadResponseContent": { "type": "object", "description": "Response containing the enrollment ID, document ID, and pre-signed URL.", "properties": { "enrollmentId": { "type": "string", "description": "The enrollment ID for the transaction enrollment request associated with the PDF document." }, "uploadUrl": { "type": "string", "description": "The pre-signed URL you can use to upload the PDF document. This URL expires after 24 hours." }, "documentId": { "type": "string", "description": "A unique identifier for the document record within Stedi." } }, "required": [ "documentId", "enrollmentId", "uploadUrl" ] }, "CreateEnrollmentRequestContent": { "type": "object", "description": "Input for CreateEnrollment.", "properties": { "transactions": { "$ref": "#/components/schemas/EnrolledTransactionsList", "description": "The type of transactions included in the enrollment." }, "primaryContact": { "$ref": "#/components/schemas/ProviderContact", "description": "The contact information for the provider. This is where the payer will send communications about the enrollment, if needed.\n - The name and address should match exactly what the payer has on file for the provider. Some payers reject enrollment requests with addresses that don't match their records.\n - If you're submitting enrollment requests on a provider's behalf, you may want to set the phone number or email to your own contact details. Do this when you want the payer to contact you about the enrollment status instead of the provider directly.\n - This contact information doesn't need to match existing contacts defined on the provider record. It also doesn't modify or replace contacts on the provider record." }, "userEmail": { "type": "string", "minLength": 5, "pattern": "^[a-zA-Z0-9.!#$%&'*+/=?^_`{|}~-]+@[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)*$", "description": "The email address where Stedi should send updates about the enrollment. We'll use it to notify you when there are next steps and send updates on the enrollment's status.\n\nThis email address can be different from the `primaryContact.email` where the payer sends communications about the enrollment." }, "source": { "$ref": "#/components/schemas/EnrollmentSource", "deprecated": true, "description": "This shape is deprecated since 2025-12-23: Stedi ignores this property for API requests, and it will be removed in a future release. The enrollment source is always set to `API`." }, "reason": { "type": "string", "deprecated": true, "description": "This shape is deprecated since 2025-10-07: Only Stedi can set or update this property, and it will be removed in a future release." }, "providerTransactionAccessNumber": { "type": "string", "maxLength": 10, "minLength": 5, "pattern": "^[a-zA-Z0-9]+$", "description": "This property is required for payers that require a Provider Transaction Access Number (PTAN).\n\nThe PTAN is a Medicare-issued number given to providers upon enrollment with Medicare. This number is usually six digits and is assigned based on the type of service and the location of the provider. Upon enrollment, Medicare Administrating Contracting (MAC) providers should receive their assigned PTAN number in their approval letter." }, "provider": { "$ref": "#/components/schemas/EnrolledProviderInput", "description": "Information about the provider enrolling with the payer. You **must** use the [Create Provider](https://www.stedi.com/docs/api-reference/healthcare/post-enrollment-create-provider) endpoint to add the provider to Stedi before you can enroll them with one or more payers." }, "payer": { "$ref": "#/components/schemas/EnrolledPayerInput", "description": "Information about the payer the provider is enrolling with." }, "status": { "$ref": "#/components/schemas/InitialEnrollmentStatus", "description": "The status of the enrollment. You can submit enrollments with either `DRAFT` or `STEDI_ACTION_REQUIRED` status. The default status is `DRAFT` if not specified. When you're ready for Stedi to begin processing the enrollment, set the status to `STEDI_ACTION_REQUIRED`. Once an enrollment is `STEDI_ACTION_REQUIRED`, only Stedi can set or update its status.\n - `DRAFT` - You're still editing the enrollment and haven't submitted it to Stedi.\n - `STEDI_ACTION_REQUIRED` - You have submitted the enrollment and it is ready for Stedi to begin processing.\n - `SUBMITTED` - (Deprecated) Legacy status being phased out in favor of the more specific action-required statuses. If you set an enrollment request to `SUBMITTED`, Stedi treats it as `STEDI_ACTION_REQUIRED`." } }, "required": [ "payer", "primaryContact", "provider", "transactions", "userEmail" ] }, "CreateEnrollmentResponseContent": { "type": "object", "description": "Output containing the created enrollment details.", "properties": { "id": { "type": "string", "description": "The Stedi-assigned identifier for the enrollment request." }, "primaryContact": { "$ref": "#/components/schemas/ProviderContact", "description": "The contact information for the provider. This is where the payer will send communications about the enrollment, if needed.\n - The name and address should match exactly what the payer has on file for the provider. Some payers reject enrollment requests with addresses that don't match their records.\n - If you're submitting enrollment requests on a provider's behalf, you may want to set the phone number or email to your own contact details. Do this when you want the payer to contact you about the enrollment status instead of the provider directly." }, "createdAt": { "type": "string", "description": "The date and time when the enrollment was created within Stedi.", "format": "date-time" }, "updatedAt": { "type": "string", "description": "The date and time when the enrollment was updated.", "format": "date-time" }, "submittedAt": { "type": "string", "description": "The date and time when the enrollment was submitted. If the enrollment is in `DRAFT` status, `submittedAt` is not present. When the enrollment transitions from draft to `STEDI_ACTION_REQUIRED`, `submittedAt` is updated to the submission time. If the enrollment was created and submitted immediately, the `submittedAt` time will be equal or close to the `createdAt` time.", "format": "date-time" }, "statusLastUpdatedAt": { "type": "string", "description": "The date and time when the enrollment status was last updated. This timestamp is used to track enrollment processing durations and enables filtering to identify recently changed enrollments. It automatically updates whenever an enrollment's status changes but remains unchanged during other updates.", "format": "date-time" }, "history": { "type": "array", "items": { "$ref": "#/components/schemas/EnrollmentHistoryEntry" }, "description": "The history of updates to this enrollment, such as status changes. This property is experimental and may change in the future." }, "documents": { "type": "array", "items": { "$ref": "#/components/schemas/EnrollmentDocument" }, "description": "Documents associated with this enrollment, excluding deleted documents." }, "status": { "$ref": "#/components/schemas/EnrollmentStatus", "description": "The status of the enrollment. You can submit enrollments with either `DRAFT` or `STEDI_ACTION_REQUIRED` status. The default status is `DRAFT` if not specified. When you're ready for Stedi to begin processing the enrollment, set the status to `STEDI_ACTION_REQUIRED`. Once an enrollment is `STEDI_ACTION_REQUIRED`, only Stedi can set or update its status.\n - `DRAFT` - You're still editing the enrollment and haven't submitted it to Stedi.\n - `STEDI_ACTION_REQUIRED` - You have submitted the enrollment and it is ready for Stedi to begin processing.\n - `PROVIDER_ACTION_REQUIRED` - The enrollment requires action from the healthcare provider to proceed, such as providing additional documentation. Stedi will add a note to your enrollment request with clear instructions.\n - `SUBMITTED` - (Deprecated) Legacy status being phased out in favor of the more specific action-required statuses. If you set an enrollment request to `SUBMITTED`, Stedi treats it as `STEDI_ACTION_REQUIRED`.\n - `PROVISIONING` - Stedi has begun the process of completing the enrollment with the payer.\n - `LIVE` - The enrollment process is complete, and the specified provider can begin exchanging the listed transaction types with the payer.\n - `REJECTED` - The payer rejected the enrollment. Common reasons for rejection include incorrect details in the request and that the provider is not credentialed with the payer. Customer support will contact you with reasons for rejection and next steps.\n - `CANCELED` - The enrollment has been terminated per customer or provider request." }, "tasks": { "type": "array", "items": { "$ref": "#/components/schemas/Task" }, "description": "Tasks associated with this enrollment representing work that needs to be completed. Each task has a responsible party and specific definition." }, "transactions": { "$ref": "#/components/schemas/EnrolledTransactionsList", "description": "The type of transactions included in the enrollment." }, "userEmail": { "type": "string", "minLength": 5, "pattern": "^[a-zA-Z0-9.!#$%&'*+/=?^_`{|}~-]+@[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)*$", "description": "The email address where Stedi should send updates about the enrollment. We'll use it to notify you when there are next steps and send updates on the enrollment's status.\n\nThis email address can be different from the `primaryContact.email` where the payer sends communications about the enrollment." }, "source": { "$ref": "#/components/schemas/EnrollmentSource", "description": "The source of this enrollment." }, "reason": { "type": "string", "description": "Reasons why the enrollment request is still in `PROVISIONING` status, may take additional time to process, or was rejected by the payer. Only Stedi can set or update this property." }, "providerTransactionAccessNumber": { "type": "string", "maxLength": 10, "minLength": 5, "pattern": "^[a-zA-Z0-9]+$", "description": "This property is required for payers that require a Provider Transaction Access Number (PTAN).\n\nThe PTAN is a Medicare-issued number given to providers upon enrollment with Medicare. This number is usually six digits and is assigned based on the type of service and the location of the provider. Upon enrollment, Medicare Administrating Contracting (MAC) providers should receive their assigned PTAN number in their approval letter." }, "provider": { "$ref": "#/components/schemas/AllEnrolledProviderFields", "description": "Information about the provider enrolling with the payer." }, "payer": { "$ref": "#/components/schemas/EnrolledPayerOutput", "description": "Information about the payer the provider is enrolling with." } }, "required": [ "createdAt", "id", "payer", "primaryContact", "provider", "statusLastUpdatedAt", "transactions", "updatedAt", "userEmail" ] }, "CreateProviderRequestContent": { "type": "object", "description": "Information about the provider you want to add to your account. The provider **must** have a unique NPI from other providers in your account.", "properties": { "npi": { "type": "string", "pattern": "^[0-9]{10}$", "description": "The provider's [National Provider Identifier (NPI)](https://npiregistry.cms.hhs.gov/search). This is a 10-digit number that is unique to the provider.\n\nEach provider record must have a unique `npi` and `taxId` combination. For example, you can create two provider records with the same `npi` as long as they have different values for `taxId`." }, "taxIdType": { "$ref": "#/components/schemas/TaxIdType", "description": "The type of tax ID. Can be either an `EIN` - Employer Identification Number, or an `SSN` - Social Security Number." }, "taxId": { "type": "string", "pattern": "^\\d{9}$", "description": "The provider's tax ID, as specified by `taxIdType`. This identifier has to be provided without any separators, such as dashes or spaces. For example 111-22-3333 is invalid but `111223333` is valid.\n\nEach provider record must have a unique `npi` and `taxId` combination. For example, you can create two provider records with the same `taxId` as long as they have different values for `npi`." }, "name": { "type": "string", "minLength": 5, "description": "The provider's business name. This is typically the provider's practice name, such as `Dental Associates, LLC`, but it can also be the provider's first and last name." }, "contacts": { "type": "array", "items": { "$ref": "#/components/schemas/ProviderContact" }, "description": "The contact information for the provider. This is where the payer will send communications about the enrollment, if needed.\n - Either `organizationName` _or_ `firstName` and `lastName` are required.\n - The name and address should match exactly what the payer has on file for the provider. Some payers reject enrollment requests with addresses that don't match their records.\n - If you're submitting enrollment requests on a provider's behalf, you may want to set the phone number and email to your own contact details. Do this when you want the payer to contact you about the enrollment status instead of the provider directly." } }, "required": [ "name", "npi", "taxId", "taxIdType" ] }, "CreateProviderResponseContent": { "type": "object", "description": "Output containing the created provider details.", "properties": { "id": { "type": "string", "description": "A unique identifier Stedi assigns to this provider." }, "createdAt": { "type": "string", "description": "The date and time Stedi created the provider record.", "format": "date-time" }, "updatedAt": { "type": "string", "description": "The date and time Stedi last updated the provider record.", "format": "date-time" }, "npi": { "type": "string", "pattern": "^[0-9]{10}$", "description": "The provider's [National Provider Identifier (NPI)](https://npiregistry.cms.hhs.gov/search). This is a 10-digit number that is unique to the provider.\n\nEach provider record must have a unique `npi` and `taxId` combination. For example, you can create two provider records with the same `npi` as long as they have different values for `taxId`." }, "taxIdType": { "$ref": "#/components/schemas/TaxIdType", "description": "The type of tax ID. Can be either an `EIN` - Employer Identification Number, or an `SSN` - Social Security Number." }, "taxId": { "type": "string", "pattern": "^\\d{9}$", "description": "The provider's tax ID, as specified by `taxIdType`. This identifier has to be provided without any separators, such as dashes or spaces. For example 111-22-3333 is invalid but `111223333` is valid.\n\nEach provider record must have a unique `npi` and `taxId` combination. For example, you can create two provider records with the same `taxId` as long as they have different values for `npi`." }, "name": { "type": "string", "minLength": 5, "description": "The provider's business name. This is typically the provider's practice name, such as `Dental Associates, LLC`, but it can also be the provider's first and last name." }, "contacts": { "type": "array", "items": { "$ref": "#/components/schemas/ProviderContact" }, "description": "The contact information for the provider. This is where the payer will send communications about the enrollment, if needed.\n - Either `organizationName` _or_ `firstName` and `lastName` are required.\n - The name and address should match exactly what the payer has on file for the provider. Some payers reject enrollment requests with addresses that don't match their records.\n - If you're submitting enrollment requests on a provider's behalf, you may want to set the phone number and email to your own contact details. Do this when you want the payer to contact you about the enrollment status instead of the provider directly." } }, "required": [ "id", "name", "npi" ] }, "DocumentStatus": { "type": "string", "description": "Indicates whether the document file has been successfully uploaded to Stedi.", "enum": [ "PENDING", "UPLOADED", "FAILED", "DELETED" ] }, "EnrolledPayerInput": { "type": "object", "description": "The payer you want to enroll with.", "properties": { "id": { "type": "string", "deprecated": true, "description": "Use `idOrAlias` instead. This property will be removed in the future." }, "idOrAlias": { "type": "string", "description": "The Payer ID. This can be the primary Payer ID, the Stedi Payer ID, or any listed aliases for the payer. Visit the [Payer Network](https://www.stedi.com/healthcare/network) for a complete list." } } }, "EnrolledPayerOutput": { "type": "object", "description": "Output structure containing payer information in enrollment responses.", "properties": { "name": { "type": "string", "description": "The payer's name, such as `Cigna` or `UnitedHealthcare`." }, "stediPayerId": { "type": "string", "description": "The unique Stedi assigned identifier for the payer." }, "submittedPayerIdOrAlias": { "type": "string", "description": "The payer ID or alias used when creating the enrollment request. For example, `62308` and `CIGNA` are both supported for Cigna. You can find a list of all supported payer IDs and aliases in the [Payer Network](https://www.stedi.com/healthcare/network)." } }, "required": [ "stediPayerId" ] }, "EnrolledProviderInput": { "type": "object", "description": "The provider you want to enroll with the payer. This must be an existing provider record within Stedi.", "properties": { "id": { "type": "string", "description": "The Stedi-assigned identifier for the provider. The [Create Provider](https://www.stedi.com/docs/api-reference/healthcare/post-enrollment-create-provider) endpoint returns this as the `id` property." } }, "required": [ "id" ] }, "EnrolledTransaction": { "type": "object", "description": "Represents the enrollment status for a specific transaction type.", "properties": { "enroll": { "type": "boolean" } }, "required": [ "enroll" ] }, "EnrolledTransactionsList": { "description": "Specifies which transaction types are included in the enrollment.", "oneOf": [ { "type": "object", "title": "eligibilityCheck", "properties": { "eligibilityCheck": { "$ref": "#/components/schemas/EnrolledTransaction", "description": "Whether 270 eligibility checks are included in the enrollment." } }, "required": [ "eligibilityCheck" ] }, { "type": "object", "title": "claimStatus", "properties": { "claimStatus": { "$ref": "#/components/schemas/EnrolledTransaction", "description": "Whether 276 claim status requests are included in the enrollment." } }, "required": [ "claimStatus" ] }, { "type": "object", "title": "professionalClaimSubmission", "properties": { "professionalClaimSubmission": { "$ref": "#/components/schemas/EnrolledTransaction", "description": "Whether 837P professional claims are included in the enrollment." } }, "required": [ "professionalClaimSubmission" ] }, { "type": "object", "title": "institutionalClaimSubmission", "properties": { "institutionalClaimSubmission": { "$ref": "#/components/schemas/EnrolledTransaction", "description": "Whether 837I institutional claims are included in the enrollment." } }, "required": [ "institutionalClaimSubmission" ] }, { "type": "object", "title": "dentalClaimSubmission", "properties": { "dentalClaimSubmission": { "$ref": "#/components/schemas/EnrolledTransaction", "description": "Whether 837D dental claims are included in the enrollment." } }, "required": [ "dentalClaimSubmission" ] }, { "type": "object", "title": "claimPayment", "properties": { "claimPayment": { "$ref": "#/components/schemas/EnrolledTransaction", "description": "Whether 835 Electronic Remittance Advice (ERAs) are included in the enrollment." } }, "required": [ "claimPayment" ] }, { "type": "object", "title": "solicitedClaimAttachment", "properties": { "solicitedClaimAttachment": { "$ref": "#/components/schemas/EnrolledTransaction", "description": "Whether solicited claim attachments are included in the enrollment." } }, "required": [ "solicitedClaimAttachment" ] }, { "type": "object", "title": "unsolicitedClaimAttachment", "properties": { "unsolicitedClaimAttachment": { "$ref": "#/components/schemas/EnrolledTransaction", "description": "Whether unsolicited claim attachments are included in the enrollment." } }, "required": [ "unsolicitedClaimAttachment" ] } ] }, "EnrollmentDocument": { "type": "object", "description": "A collection of metadata about an enrollment document, including its name, status, last updated date, and the associated enrollment Id.", "properties": { "id": { "type": "string", "description": "The unique identifier for the document." }, "enrollmentId": { "type": "string", "description": "The enrollment ID this document is associated with." }, "name": { "type": "string", "description": "The name of the document." }, "contentType": { "type": "string", "description": "The content type of the document." }, "size": { "type": "number", "description": "The size of the document in bytes." }, "status": { "$ref": "#/components/schemas/DocumentStatus", "description": "Indicates whether the document file has been successfully uploaded to Stedi." }, "taskId": { "type": "string", "description": "The task ID associated with this document, if it was created or processed as part of a task." }, "createdAt": { "type": "string", "description": "The date and time when the document was created.", "format": "date-time" }, "updatedAt": { "type": "string", "description": "The date and time when the document was last updated.", "format": "date-time" } }, "required": [ "createdAt", "enrollmentId", "id", "name", "status", "updatedAt" ] }, "EnrollmentHistoryChangeType": { "type": "string", "description": "The type of change recorded in the enrollment history.", "enum": [ "STATUS_CHANGE" ] }, "EnrollmentHistoryEntry": { "type": "object", "description": "An update to an enrollment, such as a change in the enrollment's status. This object is experimental and may change in the future.", "properties": { "previousStatus": { "$ref": "#/components/schemas/EnrollmentStatus", "description": "The status before this change occurred. This will be `UNDEFINED` for the enrollment's initial status after creation." }, "newStatus": { "$ref": "#/components/schemas/EnrollmentStatus", "description": "The status after this change occurred." }, "changedBy": { "type": "string", "description": "The source or system that triggered this change." }, "changedAt": { "type": "string", "description": "The date and time when this change occurred.", "format": "date-time" }, "type": { "$ref": "#/components/schemas/EnrollmentHistoryChangeType", "description": "The type of change that occurred." } }, "required": [ "changedAt", "changedBy", "newStatus", "type" ] }, "EnrollmentSource": { "type": "string", "description": "The source of the enrollment.", "enum": [ "API", "UI", "IMPORT", "AUTO_ENROLLMENT" ] }, "EnrollmentStatus": { "type": "string", "description": "The status of the enrollment. You can submit enrollments with either `DRAFT` or `STEDI_ACTION_REQUIRED` status - the default is `DRAFT` if not included. Set this to `STEDI_ACTION_REQUIRED` when you're ready for Stedi to begin processing the enrollment. Once an enrollment is `STEDI_ACTION_REQUIRED`, only Stedi can set or update its status.", "enum": [ "DRAFT", "SUBMITTED", "PROVISIONING", "LIVE", "REJECTED", "CANCELED", "STEDI_ACTION_REQUIRED", "PROVIDER_ACTION_REQUIRED" ] }, "EnrollmentSummary": { "type": "object", "description": "Summary of an enrollment with essential fields for list operations.", "properties": { "id": { "type": "string", "description": "The Stedi-assigned identifier for the enrollment." }, "provider": { "$ref": "#/components/schemas/AllEnrolledProviderFields", "description": "Information about the provider enrolling with the payer." }, "payer": { "$ref": "#/components/schemas/EnrolledPayerOutput", "description": "Information about the payer the provider is enrolling with." }, "transactions": { "$ref": "#/components/schemas/EnrolledTransactionsList", "description": "The type of transactions included in the enrollment." }, "status": { "$ref": "#/components/schemas/EnrollmentStatus", "description": "The status of the enrollment.\n - `DRAFT` - You are still editing the record and it has not been submitted to Stedi.\n - `STEDI_ACTION_REQUIRED` - You have submitted the enrollment and it is ready for Stedi to begin processing.\n - `PROVIDER_ACTION_REQUIRED` - The enrollment requires action from the healthcare provider to proceed, such as providing additional documentation. Stedi will add a note to your enrollment request with clear instructions.\n - `SUBMITTED` - (Deprecated) Legacy status being phased out in favor of the more specific action-required statuses.\n - `PROVISIONING` - Stedi has begun the process of completing the enrollment with the payer.\n - `LIVE` - The enrollment process is complete, and the specified provider can begin exchanging the listed transaction types with the payer.\n - `REJECTED` - The payer rejected the enrollment. Common reasons for rejection include incorrect details in the request and that the provider is not credentialed with the payer. Customer support will contact you with reasons for rejection and next steps.\n - `CANCELED` - The enrollment has been terminated per customer or provider request." }, "source": { "$ref": "#/components/schemas/EnrollmentSource", "description": "The source of the enrollment." }, "createdAt": { "type": "string", "description": "The date and time when the enrollment was created within Stedi.", "format": "date-time" }, "updatedAt": { "type": "string", "description": "The date and time when the enrollment was updated.", "format": "date-time" }, "submittedAt": { "type": "string", "description": "The date and time when the enrollment was submitted. If the enrollment is in draft status, `submittedAt` is not present. When the enrollment transitions from draft to submitted, `submittedAt` will be updated to the submission time. If the enrollment was created and submitted immediately, `submittedAt` will be equal or close to `createdAt`.", "format": "date-time" }, "statusLastUpdatedAt": { "type": "string", "description": "The date and time when the enrollment status was last updated. This timestamp is used to track enrollment processing durations and enables filtering to identify recently changed enrollments. It automatically updates whenever an enrollment's status changes but remains unchanged during other updates.", "format": "date-time" }, "history": { "type": "array", "items": { "$ref": "#/components/schemas/EnrollmentHistoryEntry" }, "description": "The history of updates to this enrollment, such as status changes. This property is experimental and may change in the future." }, "documents": { "type": "array", "items": { "$ref": "#/components/schemas/EnrollmentDocument" }, "description": "Documents associated with this enrollment, such as signed enrollment forms. This list doesn't include deleted documents.\n\nEach document object contains metadata such as the document's name, status, and timestamps for creation and last update." }, "tasks": { "type": "array", "items": { "$ref": "#/components/schemas/Task" }, "description": "Tasks associated with this enrollment, such as reminders or follow-ups." }, "importId": { "type": "string", "description": "The import ID associated with the enrollment if it was created through a CSV bulk import (`source` is set to `IMPORT`). This property is only present for enrollments created through the CSV import process." } }, "required": [ "createdAt", "id", "payer", "provider", "source", "status", "statusLastUpdatedAt", "transactions", "updatedAt" ] }, "ExportEnrollmentsCsvRequestContent": { "type": "object", "description": "Input for ExportEnrollmentsCsv operation. Supports the same filtering options as ListEnrollments (excluding pagination).", "properties": { "filter": { "type": "string", "description": "Filter for enrollments with properties matching a query string. You can provide all or part of a provider name, NPI, or tax ID. You can also provide all or part of a payer's [Stedi payer ID](https://www.stedi.com/docs/healthcare/supported-payers#stedi-payer-id) - primary payer IDs and aliases aren't supported. The search is case-insensitive and supports fuzzy matching.\n\nFor example, providing `?filter=OS` returns enrollments with `provider.name` containing `os` or `OS` (such as `Joseph`) and Stedi payer IDs containing `OS`, such as `OSBLI` for OptumHealth Salt Lake County." }, "status": { "type": "array", "items": { "$ref": "#/components/schemas/EnrollmentStatus" }, "description": "Filter for enrollments with specific statuses. You can include this parameter multiple times to filter for multiple statuses.\n\nFor example, `?status=LIVE&status=REJECTED` returns enrollments that are in either `LIVE` or `REJECTED` status." }, "providerNpis": { "type": "array", "items": { "type": "string" }, "description": "Filter for enrollments associated with specific provider NPIs. You can include this parameter multiple times to filter for multiple NPIs.\n\nFor example, `?providerNpis=1234567890&providerNpis=0987654321` returns enrollments associated with either of the specified NPIs." }, "providerTaxIds": { "type": "array", "items": { "type": "string" }, "description": "Filter for enrollments associated with specific provider tax IDs. You can include this parameter multiple times to filter for multiple tax IDs.\n\nFor example, `?providerTaxIds=123456789&providerTaxIds=987654321` returns enrollments associated with either of the specified tax IDs." }, "providerNames": { "type": "array", "items": { "type": "string" }, "description": "Filter for enrollments associated with specific provider names. You can include this parameter multiple times to filter for multiple names.\n\nFor example, `?providerNames=John%20Doe&providerNames=Jane%20Doe` returns enrollments associated with either John Doe or Jane Doe.\n\nThis search is case-sensitive and doesn't support fuzzy matching. The name you provide must match the provider's name exactly, including spaces and capitalization." }, "payerIds": { "type": "array", "items": { "type": "string" }, "description": "Filter for enrollments associated with specific [Stedi payer IDs](https://www.stedi.com/docs/healthcare/supported-payers#stedi-payer-id). You can include this parameter multiple times to filter for multiple payer IDs.\n\nFor example, `?payerIds=HGJLR&payerIds=EWDCI` returns enrollments associated with either of the specified payer IDs.\n\nThis parameter only supports Stedi payer IDs, not primary payer IDs or aliases. It also doesn't support fuzzy matching. The payer ID you provide must match the Stedi payer ID exactly, including capitalization." }, "sources": { "type": "array", "items": { "$ref": "#/components/schemas/EnrollmentSource" }, "description": "Filter for enrollments submitted through specific sources, such as the API or UI. You can include this parameter multiple times to filter for multiple sources.\n\nFor example, `?sources=API&sources=UI` returns enrollments submitted through either of the specified sources." }, "transactions": { "type": "array", "items": { "$ref": "#/components/schemas/TransactionType" }, "description": "Filter for enrollments for specific transaction types. You can include this parameter multiple times to filter for multiple types.\n\nFor example, `?transactions=eligibilityCheck&transactions=claimStatus` returns enrollments for both 270/271 eligibility checks and 276/277 real-time claim status." }, "createdFrom": { "type": "string", "description": "Filter for enrollments created from a specific date.\n\nFor example, if you set this to `2025-01-01T00:00:00Z`, Stedi returns enrollments with a `createdAt` timestamp on or after this date.", "format": "date-time" }, "createdTo": { "type": "string", "description": "Filter for enrollments created before a specific date.\n\nFor example, if you set this to `2025-01-01T00:00:00Z`, Stedi only returns enrollments with a `createdAt` timestamp before this date.\n\nThe time must be later than `createdFrom`, if present.", "format": "date-time" }, "statusUpdatedFrom": { "type": "string", "description": "Filter for enrollments whose status was last updated from a specific date.\n\nFor example, if you set this to `2025-01-01T00:00:00Z`, Stedi returns enrollments with a `statusLastUpdatedAt` timestamp on or after this date.", "format": "date-time" }, "statusUpdatedTo": { "type": "string", "description": "Filter for enrollments whose status was last updated before a specific date.\n\nFor example, if you set this to `2025-01-01T00:00:00Z`, Stedi only returns enrollments with a `statusLastUpdatedAt` before this date.\n\nThe time must be later than `statusUpdatedFrom`, if present.", "format": "date-time" }, "importId": { "type": "string", "description": "The import ID associated with an enrollment through a CSV bulk import. This ID is only available for enrollments created through the CSV import process." } } }, "ExportEnrollmentsCsvResponseContent": { "type": "object", "description": "Output containing export results. If no enrollments found, downloadUrl and filename will be undefined and recordCount will be 0.", "properties": { "downloadUrl": { "type": "string", "description": "A presigned URL for downloading the generated CSV file from S3. Undefined if no enrollments found." }, "filename": { "type": "string", "description": "The filename of the generated CSV file. Undefined if no enrollments found." }, "recordCount": { "type": "number", "description": "The number of enrollment records exported to the CSV file. 0 if no enrollments found." } }, "required": [ "recordCount" ] }, "FollowInstructionsTask": { "type": "object", "description": "Follow-instructions task data containing text instructions for a user to follow.", "properties": { "instructions": { "type": "string", "minLength": 1, "description": "Human-readable instructions for the responsible party to follow." } }, "required": [ "instructions" ] }, "GetEnrollmentResponseContent": { "type": "object", "description": "Output containing the enrollment details.", "properties": { "id": { "type": "string", "description": "The Stedi-assigned identifier for the enrollment request." }, "primaryContact": { "$ref": "#/components/schemas/ProviderContact", "description": "The contact information for the provider. This is where the payer will send communications about the enrollment, if needed.\n - The name and address should match exactly what the payer has on file for the provider. Some payers reject enrollment requests with addresses that don't match their records.\n - If you're submitting enrollment requests on a provider's behalf, you may want to set the phone number or email to your own contact details. Do this when you want the payer to contact you about the enrollment status instead of the provider directly." }, "createdAt": { "type": "string", "description": "The date and time when the enrollment was created within Stedi.", "format": "date-time" }, "updatedAt": { "type": "string", "description": "The date and time when the enrollment was updated.", "format": "date-time" }, "submittedAt": { "type": "string", "description": "The date and time when the enrollment was submitted. If the enrollment is in `DRAFT` status, `submittedAt` is not present. When the enrollment transitions from draft to `STEDI_ACTION_REQUIRED`, `submittedAt` is updated to the submission time. If the enrollment was created and submitted immediately, the `submittedAt` time will be equal or close to the `createdAt` time.", "format": "date-time" }, "statusLastUpdatedAt": { "type": "string", "description": "The date and time when the enrollment status was last updated. This timestamp is used to track enrollment processing durations and enables filtering to identify recently changed enrollments. It automatically updates whenever an enrollment's status changes but remains unchanged during other updates.", "format": "date-time" }, "history": { "type": "array", "items": { "$ref": "#/components/schemas/EnrollmentHistoryEntry" }, "description": "The history of updates to this enrollment, such as status changes. This property is experimental and may change in the future." }, "documents": { "type": "array", "items": { "$ref": "#/components/schemas/EnrollmentDocument" }, "description": "Documents associated with this enrollment, such as signed enrollment forms. This list doesn't include deleted documents.\n\nEach document object contains metadata such as the document's name, status, and timestamps for creation and last update." }, "status": { "$ref": "#/components/schemas/EnrollmentStatus", "description": "The status of the enrollment. You can submit enrollments with either `DRAFT` or `STEDI_ACTION_REQUIRED` status. The default status is `DRAFT` if not specified. When you're ready for Stedi to begin processing the enrollment, set the status to `STEDI_ACTION_REQUIRED`. Once an enrollment is `STEDI_ACTION_REQUIRED`, only Stedi can set or update its status.\n - `DRAFT` - You're still editing the enrollment and haven't submitted it to Stedi.\n - `STEDI_ACTION_REQUIRED` - You have submitted the enrollment and it is ready for Stedi to begin processing.\n - `PROVIDER_ACTION_REQUIRED` - The enrollment requires action from the healthcare provider to proceed, such as providing additional documentation. Stedi will add a note to your enrollment request with clear instructions.\n - `SUBMITTED` - (Deprecated) Legacy status being phased out in favor of the more specific action-required statuses. If you set an enrollment request to `SUBMITTED`, Stedi treats it as `STEDI_ACTION_REQUIRED`.\n - `PROVISIONING` - Stedi has begun the process of completing the enrollment with the payer.\n - `LIVE` - The enrollment process is complete, and the specified provider can begin exchanging the listed transaction types with the payer.\n - `REJECTED` - The payer rejected the enrollment. Common reasons for rejection include incorrect details in the request and that the provider is not credentialed with the payer. Customer support will contact you with reasons for rejection and next steps.\n - `CANCELED` - The enrollment has been terminated per customer or provider request." }, "tasks": { "type": "array", "items": { "$ref": "#/components/schemas/Task" }, "description": "Tasks associated with this enrollment representing work that needs to be completed. Each task has a responsible party and specific definition." }, "transactions": { "$ref": "#/components/schemas/EnrolledTransactionsList", "description": "The type of transactions included in the enrollment." }, "userEmail": { "type": "string", "minLength": 5, "pattern": "^[a-zA-Z0-9.!#$%&'*+/=?^_`{|}~-]+@[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)*$", "description": "The email address where Stedi should send updates about the enrollment. We'll use it to notify you when there are next steps and send updates on the enrollment's status.\n\nThis email address can be different from the `primaryContact.email` where the payer sends communications about the enrollment." }, "source": { "$ref": "#/components/schemas/EnrollmentSource", "description": "The source of this enrollment." }, "reason": { "type": "string", "description": "Reasons why the enrollment request is still in `PROVISIONING` status, may take additional time to process, or was rejected by the payer. Only Stedi can set or update this property." }, "providerTransactionAccessNumber": { "type": "string", "maxLength": 10, "minLength": 5, "pattern": "^[a-zA-Z0-9]+$", "description": "This property is required for payers that require a Provider Transaction Access Number (PTAN).\n\nThe PTAN is a Medicare-issued number given to providers upon enrollment with Medicare. This number is usually six digits and is assigned based on the type of service and the location of the provider. Upon enrollment, Medicare Administrating Contracting (MAC) providers should receive their assigned PTAN number in their approval letter." }, "provider": { "$ref": "#/components/schemas/AllEnrolledProviderFields", "description": "Information about the provider enrolling with the payer." }, "payer": { "$ref": "#/components/schemas/EnrolledPayerOutput", "description": "Information about the payer the provider is enrolling with." } }, "required": [ "createdAt", "id", "payer", "primaryContact", "provider", "statusLastUpdatedAt", "transactions", "updatedAt", "userEmail" ] }, "GetProviderResponseContent": { "type": "object", "description": "Output containing the provider details.", "properties": { "id": { "type": "string", "description": "A unique identifier Stedi assigns to this provider." }, "createdAt": { "type": "string", "description": "The date and time Stedi created the provider record.", "format": "date-time" }, "updatedAt": { "type": "string", "description": "The date and time Stedi last updated the provider record.", "format": "date-time" }, "npi": { "type": "string", "pattern": "^[0-9]{10}$", "description": "The provider's [National Provider Identifier (NPI)](https://npiregistry.cms.hhs.gov/search). This is a 10-digit number that is unique to the provider." }, "taxIdType": { "$ref": "#/components/schemas/TaxIdType", "description": "The type of tax ID. Can be either an `EIN` - Employer Identification Number, or an `SSN` - Social Security Number." }, "taxId": { "type": "string", "pattern": "^\\d{9}$", "description": "The provider's tax ID, as specified by `taxIdType`. This identifier is formatted without any separators, such as dashes or spaces. For example 111-22-3333 is represented as `111223333`." }, "name": { "type": "string", "minLength": 5, "description": "The provider's business name. This is typically the provider's practice name, such as `Dental Associates, LLC`, but it can also be the provider's first and last name." }, "contacts": { "type": "array", "items": { "$ref": "#/components/schemas/ProviderContact" }, "description": "The contact information for the provider. This is where the payer will send communications about the enrollment, if needed.\n - Either `organizationName` _or_ `firstName` and `lastName` are required.\n - The name and address should match exactly what the payer has on file for the provider. Some payers reject enrollment requests with addresses that don't match their records.\n - If you're submitting enrollment requests on a provider's behalf, you may want to set the phone number and email to your own contact details. Do this when you want the payer to contact you about the enrollment status instead of the provider directly." } }, "required": [ "id", "name", "npi" ] }, "InitialEnrollmentStatus": { "type": "string", "description": "The enrollment's status when it is first created. You can create enrollments in either `DRAFT` or `STEDI_ACTION_REQUIRED` status. The default status is `DRAFT` if not specified. When you're ready for Stedi to begin processing the enrollment, set the status to `STEDI_ACTION_REQUIRED`. Once an enrollment is set to `STEDI_ACTION_REQUIRED`, only Stedi can set or update its status.", "enum": [ "DRAFT", "SUBMITTED", "STEDI_ACTION_REQUIRED" ] }, "InternalFailureExceptionResponseContent": { "type": "object", "description": "The server response when an unexpected error occurred while processing request.", "properties": { "message": { "type": "string", "description": "Human-readable error message" }, "code": { "type": "string", "description": "Error classification code" } }, "required": [ "message" ] }, "ListEnrollmentsResponseContent": { "type": "object", "description": "Output containing a paginated list of enrollments.", "properties": { "nextPageToken": { "type": "string", "maxLength": 1024, "minLength": 1, "description": "Token for pagination to retrieve the next page of results; null if there are no more results" }, "items": { "type": "array", "items": { "$ref": "#/components/schemas/EnrollmentSummary" }, "description": "Details about the enrollments matching the search criteria." }, "totalCount": { "type": "number", "description": "The total count of enrollments matching the filter criteria, regardless of pagination." } } }, "ListProvidersResponseContent": { "type": "object", "description": "Output containing a paginated list of providers.", "properties": { "nextPageToken": { "type": "string", "maxLength": 1024, "minLength": 1, "description": "Token for pagination to retrieve the next page of results; null if there are no more results" }, "items": { "type": "array", "items": { "$ref": "#/components/schemas/ProviderSummary" }, "description": "Details about every provider your organization has created within Stedi." } } }, "ProvideInformationResponse": { "type": "object", "description": "Response data for `ProvideInformation` task completion.", "properties": { "response": { "type": "string", "minLength": 1, "description": "Notes or confirmation text from the responsible party in response to completing a `ProvideInformation` task." } }, "required": [ "response" ] }, "ProvideInformationTask": { "type": "object", "description": "Task for collecting specific information from the provider.", "properties": { "instructions": { "type": "string", "minLength": 1, "description": "Instructions explaining how to provide the necessary information." } }, "required": [ "instructions" ] }, "ProviderContact": { "type": "object", "description": "The contact information for the provider. These contacts appear as prepopulated options for contact information when creating enrollment requests for this provider in the Stedi portal. They aren't automatically added to enrollment requests.\n\nThese contacts should specify where payers should send communications about the enrollment, if needed.\n - Either `organizationName` _or_ `firstName` and `lastName` are required.\n - The name and address should match exactly what the payer has on file for the provider. Some payers reject enrollment requests with addresses that don't match their records.\n - If you're submitting enrollment requests on a provider's behalf, you may want to set the phone number and email to your own contact details. Do this when you want the payer to contact you about the enrollment status instead of the provider directly.\n - These contacts are for convenience only. You can specify different contacts on enrollment requests as needed.", "properties": { "organizationName": { "type": "string", "description": "The contact's business name. This should match exactly what the payer has on file for the provider." }, "firstName": { "type": "string", "description": "The contact's first name. This should match exactly what the payer has on file for the provider." }, "lastName": { "type": "string", "description": "The contact's last name. This should match exactly what the payer has on file for the provider." }, "email": { "type": "string", "minLength": 5, "pattern": "^\\S+@\\S+\\.\\S+$", "description": "The contact's email address. Set this to where you want the payer to send communications regarding the enrollment. This can be different from the provider's email if needed." }, "phone": { "type": "string", "pattern": "^(?:[\\s().-]*\\d){10}[\\s().-]*$", "description": "The contact's phone number. Set this to where you want the payer to direct communications regarding the enrollment. This can be different from the provider's phone number if needed." }, "streetAddress1": { "type": "string", "minLength": 5, "description": "The contact's street address, including the street number, name, and any suite or apartment number. This should match exactly what the payer has on file for the provider." }, "streetAddress2": { "type": "string", "description": "The contact's street address continued. This should match exactly what the payer has on file for the provider." }, "city": { "type": "string", "minLength": 2, "description": "The contact's city. This should match exactly what the payer has on file for the provider." }, "zipCode": { "type": "string", "minLength": 5, "description": "The contact's five-digit ZIP code. This should match exactly what the payer has on file for the provider." }, "state": { "$ref": "#/components/schemas/UsState", "description": "The contact's two-letter state abbreviation. For example, `PA`, or `MD`. This should match exactly what the payer has on file for the provider." } }, "required": [ "city", "email", "phone", "state", "streetAddress1", "zipCode" ] }, "ProviderSummary": { "type": "object", "description": "Summary information for a provider, typically used in list operations.", "properties": { "id": { "type": "string", "description": "A unique identifier Stedi assigns to this provider internally." }, "name": { "type": "string", "description": "The provider's business name. This is typically the provider's practice name, such as `Dental Associates, LLC`, but it can also be the provider's first and last name." }, "npi": { "type": "string", "description": "The provider's [National Provider Identifier (NPI)](https://npiregistry.cms.hhs.gov/search)." }, "taxIdType": { "$ref": "#/components/schemas/TaxIdType", "description": "The type of tax ID. Can be either an `EIN` - Employer Identification Number, or an `SSN` - Social Security Number." }, "taxId": { "type": "string", "description": "The provider's tax ID, as specified by `taxIdType`. This identifier is formatted without any separators, such as dashes or spaces. For example 111-22-3333 is represented as `111223333`." } }, "required": [ "id", "name", "npi" ] }, "ResourceNotFoundExceptionResponseContent": { "type": "object", "description": "The requested resource could not be found.", "properties": { "message": { "type": "string", "description": "Human readable exception message." }, "code": { "type": "string", "description": "Classification of the exception type." } }, "required": [ "message" ] }, "ResponsibleParty": { "type": "string", "description": "The party responsible for completing a task.", "enum": [ "PROVIDER", "STEDI" ] }, "Task": { "type": "object", "description": "A task representing work that needs to be completed.", "properties": { "responsibleParty": { "$ref": "#/components/schemas/ResponsibleParty", "description": "The party responsible for completing this task." }, "definition": { "$ref": "#/components/schemas/TaskDefinition", "description": "A definition that determines the task's behavior, requirements, and data." }, "rank": { "type": "number", "minimum": 0, "description": "The rank order of this task. Tasks with lower numbers must be completed first. For example, a task with rank `1` must be completed before a task with rank `2`." }, "completedAt": { "type": "string", "description": "The timestamp when the task was completed.", "format": "date-time" }, "responseData": { "$ref": "#/components/schemas/TaskResponseData", "description": "Data collected when the task was completed. This object currently only applies to tasks with `definition.provideInformation`." }, "isComplete": { "type": "boolean", "description": "Whether the task has been marked as complete through either the API or the Stedi portal." }, "id": { "type": "string", "description": "The unique, Stedi-assigned identifier for the task." } }, "required": [ "definition", "id", "isComplete", "rank", "responsibleParty" ] }, "TaskDefinition": { "description": "A discriminated union of task definitions. Supports multiple task types with future extensibility.", "oneOf": [ { "type": "object", "title": "followInstructions", "properties": { "followInstructions": { "$ref": "#/components/schemas/FollowInstructionsTask", "description": "A task that requires the responsible party to follow specific instructions." } }, "required": [ "followInstructions" ] }, { "type": "object", "title": "provideInformation", "properties": { "provideInformation": { "$ref": "#/components/schemas/ProvideInformationTask", "description": "A task that requires the provider to supply specific information." } }, "required": [ "provideInformation" ] } ] }, "TaskResponseData": { "description": "A discriminated union of task response data. Contains structured data collected when completing specific task types.", "oneOf": [ { "type": "object", "title": "provideInformation", "properties": { "provideInformation": { "$ref": "#/components/schemas/ProvideInformationResponse", "description": "Provide notes or confirmation text to Stedi." } }, "required": [ "provideInformation" ] } ] }, "TaxIdType": { "type": "string", "description": "The type of tax identification number.", "enum": [ "EIN", "SSN" ] }, "TransactionType": { "type": "string", "description": "Types of healthcare transactions supported for enrollment.", "enum": [ "claimStatus", "eligibilityCheck", "institutionalClaimSubmission", "professionalClaimSubmission", "dentalClaimSubmission", "claimPayment", "solicitedClaimAttachment", "unsolicitedClaimAttachment" ] }, "UnauthorizedExceptionResponseContent": { "type": "object", "description": "The server response when the authorizer failed to authenticate the caller.", "properties": { "message": { "type": "string", "description": "Human-readable error message" }, "code": { "type": "string", "description": "Error classification code" } }, "required": [ "message" ] }, "UpdateEnrollmentRequestContent": { "type": "object", "description": "Input for UpdateEnrollment.", "properties": { "transactions": { "$ref": "#/components/schemas/EnrolledTransactionsList", "description": "The type of transactions included in the enrollment." }, "primaryContact": { "$ref": "#/components/schemas/ProviderContact", "description": "The contact information for the provider. This is where the payer will send communications about the enrollment, if needed.\n - The name and address should match exactly what the payer has on file for the provider. Some payers reject enrollment requests with addresses that don't match their records.\n - If you're submitting enrollment requests on a provider's behalf, you may want to set the phone number or email to your own contact details. Do this when you want the payer to contact you about the enrollment status instead of the provider directly.\n - This contact information doesn't need to match existing contacts defined on the provider record. It also doesn't modify or replace contacts on the provider record." }, "userEmail": { "type": "string", "minLength": 5, "pattern": "^[a-zA-Z0-9.!#$%&'*+/=?^_`{|}~-]+@[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)*$", "description": "The email address where Stedi should send updates about the enrollment. We'll use it to notify you when there are next steps and send updates on the enrollment's status.\n\nThis email address can be different from the `primaryContact.email` where the payer sends communications about the enrollment." }, "source": { "$ref": "#/components/schemas/EnrollmentSource", "deprecated": true, "description": "This shape is deprecated since 2025-12-23: Stedi ignores this property for API requests, and it will be removed in a future release. The enrollment source is always set to `API`." }, "reason": { "type": "string", "deprecated": true, "description": "This shape is deprecated since 2025-10-07: Only Stedi can set or update this property, and it will be removed in a future release." }, "providerTransactionAccessNumber": { "type": "string", "maxLength": 10, "minLength": 5, "pattern": "^[a-zA-Z0-9]+$", "description": "This property is required for payers that require a Provider Transaction Access Number (PTAN).\n\nThe PTAN is a Medicare-issued number given to providers upon enrollment with Medicare. This number is usually six digits and is assigned based on the type of service and the location of the provider. Upon enrollment, Medicare Administrating Contracting (MAC) providers should receive their assigned PTAN number in their approval letter." }, "provider": { "$ref": "#/components/schemas/EnrolledProviderInput", "description": "Information about the provider enrolling with the payer." }, "payer": { "$ref": "#/components/schemas/EnrolledPayerInput", "description": "Information about the payer the provider is enrolling with." }, "status": { "$ref": "#/components/schemas/EnrollmentStatus", "description": "The status of the enrollment. You can submit enrollments with either `DRAFT` or `STEDI_ACTION_REQUIRED` status. The default status is `DRAFT` if not specified. When you're ready for Stedi to begin processing the enrollment, set the status to `STEDI_ACTION_REQUIRED`. Once an enrollment is `STEDI_ACTION_REQUIRED`, only Stedi can set or update its status.\n - `DRAFT` - You're still editing the enrollment and haven't submitted it to Stedi.\n - `STEDI_ACTION_REQUIRED` - You have submitted the enrollment and it is ready for Stedi to begin processing.\n - `SUBMITTED` - (Deprecated) Legacy status being phased out in favor of the more specific action-required statuses. If you set an enrollment request to `SUBMITTED`, Stedi treats it as `STEDI_ACTION_REQUIRED`." } }, "required": [ "payer", "primaryContact", "provider", "transactions", "userEmail" ] }, "UpdateEnrollmentResponseContent": { "type": "object", "description": "Output containing the updated enrollment details.", "properties": { "id": { "type": "string", "description": "The Stedi-assigned identifier for the enrollment request." }, "primaryContact": { "$ref": "#/components/schemas/ProviderContact", "description": "The contact information for the provider. This is where the payer will send communications about the enrollment, if needed.\n - The name and address should match exactly what the payer has on file for the provider. Some payers reject enrollment requests with addresses that don't match their records.\n - If you're submitting enrollment requests on a provider's behalf, you may want to set the phone number or email to your own contact details. Do this when you want the payer to contact you about the enrollment status instead of the provider directly." }, "createdAt": { "type": "string", "description": "The date and time when the enrollment was created within Stedi.", "format": "date-time" }, "updatedAt": { "type": "string", "description": "The date and time when the enrollment was updated.", "format": "date-time" }, "submittedAt": { "type": "string", "description": "The date and time when the enrollment was submitted. If the enrollment is in `DRAFT` status, `submittedAt` is not present. When the enrollment transitions from draft to `STEDI_ACTION_REQUIRED`, `submittedAt` is updated to the submission time. If the enrollment was created and submitted immediately, the `submittedAt` time will be equal or close to the `createdAt` time.", "format": "date-time" }, "statusLastUpdatedAt": { "type": "string", "description": "The date and time when the enrollment status was last updated. This timestamp is used to track enrollment processing durations and enables filtering to identify recently changed enrollments. It automatically updates whenever an enrollment's status changes but remains unchanged during other updates.", "format": "date-time" }, "history": { "type": "array", "items": { "$ref": "#/components/schemas/EnrollmentHistoryEntry" }, "description": "The history of updates to this enrollment, such as status changes. This property is experimental and may change in the future." }, "documents": { "type": "array", "items": { "$ref": "#/components/schemas/EnrollmentDocument" }, "description": "Documents associated with this enrollment, excluding deleted documents." }, "status": { "$ref": "#/components/schemas/EnrollmentStatus", "description": "The status of the enrollment. You can submit enrollments with either `DRAFT` or `STEDI_ACTION_REQUIRED` status. The default status is `DRAFT` if not specified. When you're ready for Stedi to begin processing the enrollment, set the status to `STEDI_ACTION_REQUIRED`. Once an enrollment is `STEDI_ACTION_REQUIRED`, only Stedi can set or update its status.\n - `DRAFT` - You're still editing the enrollment and haven't submitted it to Stedi.\n - `STEDI_ACTION_REQUIRED` - You have submitted the enrollment and it is ready for Stedi to begin processing.\n - `PROVIDER_ACTION_REQUIRED` - The enrollment requires action from the healthcare provider to proceed, such as providing additional documentation. Stedi will add a note to your enrollment request with clear instructions.\n - `SUBMITTED` - (Deprecated) Legacy status being phased out in favor of the more specific action-required statuses. If you set an enrollment request to `SUBMITTED`, Stedi treats it as `STEDI_ACTION_REQUIRED`.\n - `PROVISIONING` - Stedi has begun the process of completing the enrollment with the payer.\n - `LIVE` - The enrollment process is complete, and the specified provider can begin exchanging the listed transaction types with the payer.\n - `REJECTED` - The payer rejected the enrollment. Common reasons for rejection include incorrect details in the request and that the provider is not credentialed with the payer. Customer support will contact you with reasons for rejection and next steps.\n - `CANCELED` - The enrollment has been terminated per customer or provider request." }, "tasks": { "type": "array", "items": { "$ref": "#/components/schemas/Task" }, "description": "Tasks associated with this enrollment representing work that needs to be completed. Each task has a responsible party and specific definition." }, "transactions": { "$ref": "#/components/schemas/EnrolledTransactionsList", "description": "The type of transactions included in the enrollment." }, "userEmail": { "type": "string", "minLength": 5, "pattern": "^[a-zA-Z0-9.!#$%&'*+/=?^_`{|}~-]+@[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)*$", "description": "The email address where Stedi should send updates about the enrollment. We'll use it to notify you when there are next steps and send updates on the enrollment's status.\n\nThis email address can be different from the `primaryContact.email` where the payer sends communications about the enrollment." }, "source": { "$ref": "#/components/schemas/EnrollmentSource", "description": "The source of this enrollment." }, "reason": { "type": "string", "description": "Reasons why the enrollment request is still in `PROVISIONING` status, may take additional time to process, or was rejected by the payer. Only Stedi can set or update this property." }, "providerTransactionAccessNumber": { "type": "string", "maxLength": 10, "minLength": 5, "pattern": "^[a-zA-Z0-9]+$", "description": "This property is required for payers that require a Provider Transaction Access Number (PTAN).\n\nThe PTAN is a Medicare-issued number given to providers upon enrollment with Medicare. This number is usually six digits and is assigned based on the type of service and the location of the provider. Upon enrollment, Medicare Administrating Contracting (MAC) providers should receive their assigned PTAN number in their approval letter." }, "provider": { "$ref": "#/components/schemas/AllEnrolledProviderFields", "description": "Information about the provider enrolling with the payer." }, "payer": { "$ref": "#/components/schemas/EnrolledPayerOutput", "description": "Information about the payer the provider is enrolling with." } }, "required": [ "createdAt", "id", "payer", "primaryContact", "provider", "statusLastUpdatedAt", "transactions", "updatedAt", "userEmail" ] }, "UpdateProviderRequestContent": { "type": "object", "description": "Input for UpdateProvider.", "properties": { "name": { "type": "string", "minLength": 5, "description": "The provider's business name. This is typically the provider's practice name, such as `Dental Associates, LLC`, but it can also be the provider's first and last name." }, "contacts": { "type": "array", "items": { "$ref": "#/components/schemas/ProviderContact" }, "description": "The contact information for the provider. This is where the payer will send communications about the enrollment, if needed.\n - Either `organizationName` _or_ `firstName` and `lastName` are required.\n - The name and address should match exactly what the payer has on file for the provider. Some payers reject enrollment requests with addresses that don't match their records.\n - If you're submitting enrollment requests on a provider's behalf, you may want to set the phone number and email to your own contact details. Do this when you want the payer to contact you about the enrollment status instead of the provider directly." } }, "required": [ "name" ] }, "UpdateProviderResponseContent": { "type": "object", "description": "Output containing the updated provider details.", "properties": { "id": { "type": "string", "description": "A unique identifier Stedi assigns to this provider." }, "createdAt": { "type": "string", "description": "The date and time Stedi created the provider record.", "format": "date-time" }, "updatedAt": { "type": "string", "description": "The date and time Stedi last updated the provider record.", "format": "date-time" }, "npi": { "type": "string", "pattern": "^[0-9]{10}$", "description": "The provider's [National Provider Identifier (NPI)](https://npiregistry.cms.hhs.gov/search). This is a 10-digit number that is unique to the provider.\n\nEach provider record must have a unique `npi` and `taxId` combination. For example, you can create two provider records with the same `npi` as long as they have different values for `taxId`." }, "taxIdType": { "$ref": "#/components/schemas/TaxIdType", "description": "The type of tax ID. Can be either an `EIN` - Employer Identification Number, or an `SSN` - Social Security Number." }, "taxId": { "type": "string", "pattern": "^\\d{9}$", "description": "The provider's tax ID, as specified by `taxIdType`. This identifier has to be provided without any separators, such as dashes or spaces. For example 111-22-3333 is invalid but `111223333` is valid.\n\nEach provider record must have a unique `npi` and `taxId` combination. For example, you can create two provider records with the same `taxId` as long as they have different values for `npi`." }, "name": { "type": "string", "minLength": 5, "description": "The provider's business name. This is typically the provider's practice name, such as `Dental Associates, LLC`, but it can also be the provider's first and last name." }, "contacts": { "type": "array", "items": { "$ref": "#/components/schemas/ProviderContact" }, "description": "The contact information for the provider. This is where the payer will send communications about the enrollment, if needed.\n - Either `organizationName` _or_ `firstName` and `lastName` are required.\n - The name and address should match exactly what the payer has on file for the provider. Some payers reject enrollment requests with addresses that don't match their records.\n - If you're submitting enrollment requests on a provider's behalf, you may want to set the phone number and email to your own contact details. Do this when you want the payer to contact you about the enrollment status instead of the provider directly." } }, "required": [ "id", "name", "npi" ] }, "UpdateTaskPostRequestContent": { "type": "object", "description": "Input for UpdateTaskPost operation. Identical to UpdateTaskInput.", "properties": { "completed": { "type": "boolean", "description": "Indicates whether the task is completed. Set to `true` to mark the task as complete. If omitted, the default is `false`." }, "responseData": { "$ref": "#/components/schemas/TaskResponseData", "description": "Additional data you can submit to Stedi when completing a task with `definition.provideInformation`.\n\nStedi ignores this object when you complete a task with `definition.followInstructions`." } } }, "UpdateTaskPostResponseContent": { "type": "object", "description": "Output for UpdateTaskPost operation. Identical to UpdateTaskOutput.", "properties": { "task": { "$ref": "#/components/schemas/Task", "description": "The updated task record." } }, "required": [ "task" ] }, "UsState": { "type": "string", "description": "United States state and territory codes using standard two-letter abbreviations.", "enum": [ "AA", "AE", "AK", "AL", "AP", "AR", "AS", "AZ", "CA", "CO", "CT", "DC", "DE", "FL", "FM", "GA", "GU", "HI", "IA", "ID", "IL", "IN", "KS", "KY", "LA", "MA", "MD", "ME", "MH", "MI", "MN", "MO", "MP", "MS", "MT", "NC", "ND", "NE", "NH", "NJ", "NM", "NV", "NY", "OH", "OK", "OR", "PA", "PR", "PW", "RI", "SC", "SD", "TN", "TX", "UT", "VT", "VA", "VI", "WA", "WV", "WI", "WY" ] }, "ValidationExceptionField": { "type": "object", "description": "Describes one specific validation failure for an input member.", "properties": { "path": { "type": "string", "description": "A JSONPointer expression to the structure member whose value failed to satisfy the modeled constraints." }, "message": { "type": "string", "description": "A detailed description of the validation failure." } }, "required": [ "message", "path" ] }, "ValidationExceptionResponseContent": { "type": "object", "description": "A standard error for input validation failures.\nThis should be thrown by services when a member of the input structure\nfalls outside of the modeled or documented constraints.", "properties": { "message": { "type": "string", "description": "A summary of the validation failure." }, "fieldList": { "type": "array", "items": { "$ref": "#/components/schemas/ValidationExceptionField" }, "description": "A list of specific failures encountered while validating the input.\nA member can appear in this list more than once if it failed to satisfy multiple constraints." } }, "required": [ "message" ] } }, "securitySchemes": { "httpApiKeyAuth": { "type": "apiKey", "description": "A [Stedi API Key](https://portal.stedi.com/app/settings/api-keys) for authentication.", "name": "Authorization", "in": "header" } } }, "security": [ { "httpApiKeyAuth": [] } ], "x-stedi": { "lifecycle": "general_availability", "product": "enrollment", "public": true }, "tags": [], "servers": [ { "url": "https://enrollments.us.stedi.com/2024-09-01", "description": "Production" } ] }