Loading…
Loading…
Explains the publish readiness assessment for an API version. Details the checks, statuses, and suggested actions to resolve issues before activation.
The Publish Readiness Assessment is a service that analyzes a draft version of an API to determine if it is ready to be activated and published. It acts as a quality gate, preventing the activation of incomplete or improperly configured API versions.
The service aggregates data from multiple sources to build its assessment:
Based on this analysis, the service produces a comprehensive report that includes a final readiness status, a list of blocking issues, warnings, informational notes, and a set of suggested actions for the API publisher to resolve any identified problems.
The readiness assessment process is initiated by calling the assess service with a serviceId and a versionId. The service then performs a series of data gathering and analysis steps.
draft, published, etc.) and its associated WSDL artifact.AUTO_READY, AUTO_READY_WITH_WARNINGS, or MANUAL_REQUIRED.application or application-generated. It calculates the total number of successful and failed tests, the number of unique operations with successful or failed tests, and the timestamps of the most recent tests.After gathering this data, the service evaluates a set of rules to generate lists of blockingIssues, warnings, and notes. These lists determine the final status, a numeric score, and a recommendation. Finally, it generates a list of suggestedActions to guide the API publisher in resolving any issues.
The following diagram illustrates the flow of data into the readiness assessment service.
flowchart TD
subgraph "Input"
ServiceVersion[API Service Version<br/>(serviceId, versionId)]
end
subgraph "Data Gathering"
A[Load Version Context]
B[Load Operations]
C[Diagnose Mappings<br/>(per operation)]
D[Load Backend Summary]
E[Load Backend Test Summary<br/>(Previews)]
F[Load WSDL Import &<br/>Comparison Summary]
G{Has successful tests?}
H[Check for Inheritable<br/>Test Coverage]
end
subgraph "Assessment Logic"
I[Build PublishContext]
J[Evaluate Rules:<br/>- Blockers<br/>- Warnings<br/>- Notes]
K[Determine Status & Score]
L[Generate Suggested Actions]
end
subgraph "Output"
Assessment[Readiness Assessment Report<br/>- Status<br/>- Score<br/>- Issues<br/>- Actions]
end
ServiceVersion --> A
ServiceVersion --> B
ServiceVersion --> D
ServiceVersion --> E
ServiceVersion --> H
A --> I
B --> C
C --> I
D --> I
E --> G
A --> F
F --> I
G -- No --> H
G -- Yes --> I
H --> I
I --> J
J --> K
J --> L
K --> Assessment
L --> AssessmentTo streamline the publishing of versions with minor, non-functional changes (e.g., updating a timeout), the assessment service can inherit backend test coverage from a previously published version.
This mechanism is triggered when a draft version has zero successful backend tests. The process is as follows:
When coverage is inherited, the "No successful backend SOAP test" blocker is downgraded to an informational note, and the response payload includes an inheritedPreviews object detailing the source of the inherited coverage.
NOTE
This inheritance logic is a best-effort enhancement. If an error occurs during the fingerprinting or comparison process, the assessment will proceed as if no inheritable coverage was found, and it will not fail the overall readiness check.
The service exposes a single function to perform the assessment.
assess(serviceId, versionId)Triggers a publish readiness assessment for a specific API service version.
| Name | Type | Required | Description |
|---|---|---|---|
serviceId | UUID | Yes | The unique identifier for the API service. |
versionId | UUID | Yes | The unique identifier for the API version. |
The method returns a JSON object containing the full assessment report.
| Field | Type | Description |
|---|---|---|
serviceId | String (UUID) | The ID of the service being assessed. |
versionId | String (UUID) | The ID of the version being assessed. |
status | String | The overall readiness status. See Readiness Statuses. |
score | Integer | A numeric score from 0 to 100, where 100 is perfectly ready. |
recommendation | String | A human-readable summary of the next steps. |
summary | Object | A collection of key metrics about the version. See summary Object. |
checks | Object | A map of boolean flags for specific readiness checks. See checks Object. |
blockingIssues | Array of Strings | A list of critical issues that prevent publishing. The version status will be BLOCKED. |
warnings | Array of Strings | A list of non-critical issues that should be reviewed. The version status will be READY_WITH_RISK. |
notes | Array of Strings | A list of informational messages about the version. |
suggestedActions | Array of Objects | A list of recommended actions to improve readiness. See suggestedActions Object. |
importSummary | Object | A summary of the WSDL import analysis. The source does not define the full structure of this object. |
comparison | Object | A summary of the WSDL comparison against a previous version. The source does not define the full structure of this object. |
operations | Array of Objects | A list of diagnostic details for each operation in the version. See operations Object. |
summary Object| Field | Type | Description |
|---|---|---|
operationCount | Integer | The total number of operations in this version. |
autoReady | Integer | The number of operations with a mapping readiness of AUTO_READY. |
autoReadyWithWarnings | Integer | The number of operations with a mapping readiness of AUTO_READY_WITH_WARNINGS. |
manualRequired | Integer | The number of operations with a mapping readiness of MANUAL_REQUIRED. |
backendProfileCount | Integer | The total number of backend profiles configured for the service. |
successfulPreviewCount | Integer | The total count of successful backend SOAP tests. |
failedPreviewCount | Integer | The total count of failed backend SOAP tests. |
successfulPreviewOperationCount | Integer | The number of unique operations that have at least one successful backend test. |
failedPreviewOperationCount | Integer | The number of unique operations that have at least one failed backend test. |
breakingChanges | Integer | The number of breaking changes detected in the WSDL comparison. |
routeFallbacks | Integer | The number of REST routes that fell back to a non-standard pattern during generation. |
routeCollisions | Integer | The number of generated REST routes that required collision resolution. |
inheritedPreviews | Object | Present if test coverage was inherited from a prior version. See inheritedPreviews Object. |
inheritedPreviews ObjectThis object is only present if the draft inherited test coverage from a prior version.
| Field | Type | Description |
|---|---|---|
fromVersionNo | Integer | The version number of the API from which coverage was inherited. |
fromVersionId | String (UUID) | The version ID of the API from which coverage was inherited. |
successCount | Integer | The number of successful tests from the inherited version. |
successOperationCount | Integer | The number of unique operations with successful tests in the inherited version. |
latestSuccessAt | String (ISO 8601) | The timestamp of the latest successful test from the inherited version. |
checks ObjectThis object provides a quick-reference map of boolean flags for key readiness criteria.
| Field | Type | Description |
|---|---|---|
draftVersion | Boolean | true if the version is an inactive draft. |
backendConfigured | Boolean | true if at least one backend profile is configured. |
defaultBackendConfigured | Boolean | true if a default backend profile is configured. |
successfulSoapTest | Boolean | true if there is at least one successful backend test or if coverage was inherited. |
soapTestCoverageComplete | Boolean | true if all operations have a successful test or if coverage was inherited. |
mappingAutoReady | Boolean | true if no operations require manual mapping review. |
noWsdlBreakingChanges | Boolean | true if the WSDL comparison found no breaking changes. |
routeCollisionsResolved | Boolean | true if the WSDL import resulted in no REST route collisions. |
suggestedActions Object| Field | Type | Description |
|---|---|---|
key | String | A machine-readable key for the action (e.g., configure_backend). |
label | String | A human-readable label for the action (e.g., "Configure Backend Settings"). |
reason | String | A description of why this action is suggested. |
automated | Boolean | true if the platform can perform this action automatically. |
operations Object| Field | Type | Description |
|---|---|---|
operationId | String (UUID) | The unique identifier for the operation. |
operationKey | String | The human-readable key for the operation. |
readiness | String | The mapping readiness status for this operation. |
score | Integer | The mapping readiness score for this operation. |
warningCount | Integer | The number of warnings found during mapping diagnosis for this operation. |
errorCount | Integer | The number of errors found during mapping diagnosis for this operation. |
The assessment returns one of three possible statuses.
| Status | Score Range | Meaning |
|---|---|---|
BLOCKED | 0-79 | The version has one or more critical issues that must be resolved before it can be activated. |
READY_WITH_RISK | 80-99 | The version is technically ready to be activated, but has warnings that should be reviewed first. |
READY_TO_PUBLISH | 100 | The version has passed all readiness checks and has no known issues. |
The assessment report lists specific issues in the blockingIssues and warnings arrays. The following are common messages and their resolutions.
MANUAL_REQUIRED.readyWithReview, complexReview, routeFallbacks, or routeCollisions.