Provider-independent APIs
API concepts capture externally visible operations, routes, and error behavior before API Gateway or another delivery technology is selected.
Source: mde/metamodels/pim/pim-api.emf.
Api
Represents api in the PIM vocabulary. It specializes TraceableElement, DeployableElement, FlowEndpoint, PolicyTarget, ProtectedResource, ConfigurableElement with the details needed for this modeling concern.
Direct supertypes: TraceableElement, DeployableElement, FlowEndpoint, PolicyTarget, ProtectedResource, ConfigurableElement. Inherited attributes and marker capabilities are documented in the shared kernel; this section lists every attribute declared by this class.
Declared attributes
| Attribute | Type and multiplicity | What it captures and why it exists | Accepted values and example |
|---|---|---|---|
publicName |
String [1] |
The consumer-facing API name, kept separate from the internal model name so documentation and generated OpenAPI can use a deliberate public identity. Semantic validation: ConsumerFacingApiHasPublicMetadata (consumer facing api has public metadata) in mde/validation/pim/rules/api.evl the value must be present and non-blank. Transformation role: ETL rule Api2HttpApi in mde/transformations/pim-to-awspsm/compute-api.etl assigns or materializes this feature while refining Api. ETL rule Api2RestApi in mde/transformations/pim-to-awspsm/compute-api.etl assigns or materializes this feature while refining Api. |
A free-form String, subject to this class's semantic meaning and any EVL constraints. Example: Orders API. |
version |
String [1] |
The externally visible API contract version. It supports compatibility decisions independent from deployment revisions or implementation package versions. Semantic validation: ConsumerFacingApiHasPublicMetadata (consumer facing api has public metadata) in mde/validation/pim/rules/api.evl the value must be present and non-blank. |
A free-form String, subject to this class's semantic meaning and any EVL constraints. Example: 1.0. |
authRequired |
Boolean [1] |
Whether the API boundary requires authentication/authorization by default. Individual routes can refine the decision, but the default prevents accidental public exposure. Semantic validation: ProtectedApiHasAuthPolicy (protected api has auth policy) in mde/validation/pim/rules/api.evl the feature participates in a semantic validation condition. |
Either true or false. Example: true. |
corsRequired |
Boolean [1] |
Whether browser-origin policy is part of the API's contract. It signals the need for explicit allowed origins, methods, and headers rather than an unreviewed permissive default. Transformation role: ETL rule Api2HttpApi in mde/transformations/pim-to-awspsm/compute-api.etl assigns or materializes this feature while refining Api. ETL rule Api2HttpApi in mde/transformations/pim-to-awspsm/compute-api.etl reads or derives this feature while refining Api. |
Either true or false. Example: true. |
externalConsumerFacing |
Boolean [1] |
Whether consumers outside the owning service or organization depend on the API. External consumers raise compatibility, documentation, and change-management expectations. Semantic validation: ConsumerFacingApiHasPublicMetadata (consumer facing api has public metadata) in mde/validation/pim/rules/api.evl the feature participates in a semantic validation condition. |
Either true or false. Example: false. |
generatedOpenApiRequired |
Boolean [1] |
Whether the API must produce an OpenAPI artifact. This keeps contract publication an explicit delivery obligation instead of an accidental generator feature. Semantic validation: GeneratedOpenApiNeedsContract (generated open api needs contract) in mde/validation/pim/rules/api.evl the feature participates in a semantic validation condition. Transformation role: ETL rule Api2HttpApi in mde/transformations/pim-to-awspsm/compute-api.etl reads or derives this feature while refining Api. |
Either true or false. Example: true. |
basePath |
String [1] |
The stable URL namespace shared by the API's routes. It separates public resource addressing from internal service or stack names. Semantic validation: ConsumerFacingApiHasPublicMetadata (consumer facing api has public metadata) in mde/validation/pim/rules/api.evl the value must be present and non-blank. Generation role: The artifact generator references this feature in mde/generation/awspsm-to-artifacts/lib/cfn.eol. |
A free-form String, subject to this class's semantic meaning and any EVL constraints. Example: /orders. |
apiStyle |
ApiStyle [1] |
The interaction style, resource-oriented HTTP, RPC, GraphQL, event API, or webhook, that determines which route and contract concepts are meaningful. Transformation role: ETL rule Api2HttpApi in mde/transformations/pim-to-awspsm/compute-api.etl assigns or materializes this feature while refining Api. ETL rule Api2RestApi in mde/transformations/pim-to-awspsm/compute-api.etl assigns or materializes this feature while refining Api. |
Exactly one of: RESOURCE_ORIENTED_HTTP, RPC_HTTP, GRAPHQL, EVENT_API, WEBHOOK. Example: RESOURCE_ORIENTED_HTTP. |
Relationships
| Relationship | Kind and multiplicity | Meaning in the model |
|---|---|---|
routes → ApiRoute |
containment, [*]; opposite api |
Contains the api route element(s) that make up this api; the contained objects belong to this model element. |
contract → ApiContract |
containment, [?] | Contains the api contract element(s) that make up this api; the contained objects belong to this model element. |
service → ServerlessService |
reference; read-only, [1]; opposite apis |
References the serverless service element(s) used as service by this api; the target may be shared elsewhere in the model. |
auth → AuthPolicy |
reference, [?] | References the auth policy element(s) used as auth by this api; the target may be shared elsewhere in the model. |
cors → CorsPolicy |
reference, [?] | References the cors policy element(s) used as cors by this api; the target may be shared elsewhere in the model. |
rateLimit → RateLimitPolicy |
reference, [?] | References the rate limit policy element(s) used as rate limit by this api; the target may be shared elsewhere in the model. |
observability → ObservabilityConfig |
reference, [?] | References the observability config element(s) used as observability by this api; the target may be shared elsewhere in the model. |
ApiRoute
Represents api route in the PIM vocabulary. It specializes TraceableElement, InvocationSource, FlowEndpoint, RouteEndpoint, PolicyTarget, ProtectedResource, ConfigurableElement with the details needed for this modeling concern.
Direct supertypes: TraceableElement, InvocationSource, FlowEndpoint, RouteEndpoint, PolicyTarget, ProtectedResource, ConfigurableElement. Inherited attributes and marker capabilities are documented in the shared kernel; this section lists every attribute declared by this class.
Declared attributes
| Attribute | Type and multiplicity | What it captures and why it exists | Accepted values and example |
|---|---|---|---|
pathTemplate |
String [1] |
The consumer-facing route pattern, including path parameters. It is transformed into API Gateway resources/routes and must remain stable enough for clients to rely on. Semantic validation: UniqueMethodPathWithinApi (unique method path within api) in mde/validation/pim/rules/api.evl the rule's diagnostic or remediation guidance refers to this feature. RoutePathStartsWithSlash (route path starts with slash) in mde/validation/pim/rules/api.evl the value must be present and non-blank. Transformation role: ETL rule UserInitiatedCommand2ApiRoute in mde/transformations/cim-to-pim/behavior-contracts.etl assigns or materializes this feature while refining ApiRoute. ETL rule Query2ApiRoute in mde/transformations/cim-to-pim/behavior-contracts.etl assigns or materializes this feature while refining ApiRoute. |
A free-form String, subject to this class's semantic meaning and any EVL constraints. Example: /orders/{orderId}. |
operationId |
String [1] |
The unique contract operation name used by generated OpenAPI and client tooling; it gives a route an identity beyond its path and verb. Transformation role: ETL rule UserInitiatedCommand2ApiRoute in mde/transformations/cim-to-pim/behavior-contracts.etl assigns or materializes this feature while refining ApiRoute. ETL rule Query2ApiRoute in mde/transformations/cim-to-pim/behavior-contracts.etl assigns or materializes this feature while refining ApiRoute. Generation role: The artifact generator references this feature in mde/generation/awspsm-to-artifacts/lib/contracts.eol. |
A free-form String, subject to this class's semantic meaning and any EVL constraints. Example: getOrder. |
publicRoute |
Boolean [1] |
Whether this route is intentionally exposed at the public edge. It is a route-level override/clarification of the broader API boundary decision. Semantic validation: PublicRouteShouldDescribeConsumers (public route should describe consumers) in mde/validation/pim/rules/api.evl the feature participates in a semantic validation condition. Transformation role: ETL rule UserInitiatedCommand2ApiRoute in mde/transformations/cim-to-pim/behavior-contracts.etl assigns or materializes this feature while refining ApiRoute. ETL rule Query2ApiRoute in mde/transformations/cim-to-pim/behavior-contracts.etl assigns or materializes this feature while refining ApiRoute. |
Either true or false. Example: true. |
authRequired |
Boolean [1] |
Whether callers must be authenticated/authorized for this particular operation. Public APIs can still protect selected routes, and private APIs can model explicit exceptions. Semantic validation: ProtectedRouteHasAuthorization (protected route has authorization) in mde/validation/pim/rules/api.evl the feature participates in a semantic validation condition. Transformation role: ETL rule UserInitiatedCommand2ApiRoute in mde/transformations/cim-to-pim/behavior-contracts.etl assigns or materializes this feature while refining ApiRoute. ETL rule UserInitiatedCommand2ApiRoute in mde/transformations/cim-to-pim/behavior-contracts.etl reads or derives this feature while refining ApiRoute. |
Either true or false. Example: true. |
descriptionForConsumers |
String [1] |
The explanation shown to API consumers, which should describe business behavior, input expectations, and outcome rather than implementation internals. Semantic validation: PublicRouteShouldDescribeConsumers (public route should describe consumers) in mde/validation/pim/rules/api.evl the value must be present and non-blank. Transformation role: ETL rule UserInitiatedCommand2ApiRoute in mde/transformations/cim-to-pim/behavior-contracts.etl assigns or materializes this feature while refining ApiRoute. ETL rule Query2ApiRoute in mde/transformations/cim-to-pim/behavior-contracts.etl assigns or materializes this feature while refining ApiRoute. |
A free-form String, subject to this class's semantic meaning and any EVL constraints. Example: Processes confirmed orders for the owning capability.. |
expectedSuccessStatus |
Integer [1] |
The normal successful HTTP status promised by the contract, allowing generated responses and tests to distinguish creation, acceptance, retrieval, and update semantics. Transformation role: ETL rule UserInitiatedCommand2ApiRoute in mde/transformations/cim-to-pim/behavior-contracts.etl assigns or materializes this feature while refining ApiRoute. ETL rule Query2ApiRoute in mde/transformations/cim-to-pim/behavior-contracts.etl assigns or materializes this feature while refining ApiRoute. |
A numeric Integer value; use the unit or boundary documented for this attribute. Example: 200. |
paginationStyle |
String [1] |
The client-visible pagination convention for this route, such as cursor or page/offset, kept explicit because it affects request/response schemas and stable ordering. Transformation role: ETL rule Query2ApiRoute in mde/transformations/cim-to-pim/behavior-contracts.etl assigns or materializes this feature while refining ApiRoute. |
A free-form String, subject to this class's semantic meaning and any EVL constraints. Example: Api Route Pagination Style. |
requestValidationRequired |
Boolean [1] |
Whether invalid request shape should be rejected at the edge before business code runs, protecting functions from malformed input and making the contract enforceable. Semantic validation: RequestValidationNeedsRequestSchema (request validation needs request schema) in mde/validation/pim/rules/api.evl the feature participates in a semantic validation condition. Transformation role: ETL rule UserInitiatedCommand2ApiRoute in mde/transformations/cim-to-pim/behavior-contracts.etl assigns or materializes this feature while refining ApiRoute. ETL rule Query2ApiRoute in mde/transformations/cim-to-pim/behavior-contracts.etl assigns or materializes this feature while refining ApiRoute. |
Either true or false. Example: true. |
responseValidationRequired |
Boolean [1] |
Whether the service must verify its response against the declared schema, catching contract drift before it reaches consumers. Semantic validation: ResponseValidationNeedsResponseSchema (response validation needs response schema) in mde/validation/pim/rules/api.evl the feature participates in a semantic validation condition. Transformation role: ETL rule UserInitiatedCommand2ApiRoute in mde/transformations/cim-to-pim/behavior-contracts.etl assigns or materializes this feature while refining ApiRoute. ETL rule Query2ApiRoute in mde/transformations/cim-to-pim/behavior-contracts.etl assigns or materializes this feature while refining ApiRoute. |
Either true or false. Example: true. |
method |
HttpMethod [1] |
The HTTP operation semantics of the route. It is used with path and integration to derive the concrete API Gateway method or route definition. Semantic validation: ExactlyOneIntegration (exactly one integration) in mde/validation/pim/rules/api.evl the feature participates in a semantic validation condition. UniqueMethodPathWithinApi (unique method path within api) in mde/validation/pim/rules/api.evl the rule's diagnostic or remediation guidance refers to this feature. Transformation role: ETL rule UserInitiatedCommand2ApiRoute in mde/transformations/cim-to-pim/behavior-contracts.etl assigns or materializes this feature while refining ApiRoute. ETL rule Query2ApiRoute in mde/transformations/cim-to-pim/behavior-contracts.etl assigns or materializes this feature while refining ApiRoute. Generation role: The artifact generator references this feature in mde/generation/awspsm-to-artifacts/lib/cfn.eol. The artifact generator references this feature in mde/generation/awspsm-to-artifacts/lib/contracts.eol. |
Exactly one of: GET, POST, PUT, PATCH, DELETE, OPTIONS, HEAD, ANY. Example: GET. |
Relationships
| Relationship | Kind and multiplicity | Meaning in the model |
|---|---|---|
errorMappings → ErrorMapping |
containment, [*]; opposite apiRoute |
Contains the error mapping element(s) that make up this api route; the contained objects belong to this model element. |
api → Api |
reference; read-only, [1]; opposite routes |
References the api element(s) used as api by this api route; the target may be shared elsewhere in the model. |
requestSchema → Schema |
reference, [?] | References the schema element(s) used as request schema by this api route; the target may be shared elsewhere in the model. |
responseSchema → Schema |
reference, [?] | References the schema element(s) used as response schema by this api route; the target may be shared elsewhere in the model. |
functionIntegration → Function |
reference, [?] | References the function element(s) used as function integration by this api route; the target may be shared elsewhere in the model. |
workflowIntegration → Workflow |
reference, [?] | References the workflow element(s) used as workflow integration by this api route; the target may be shared elsewhere in the model. |
authorization → AuthorizationPolicy |
reference, [?] | References the authorization policy element(s) used as authorization by this api route; the target may be shared elsewhere in the model. |
timeout → TimeoutPolicy |
reference, [?] | References the timeout policy element(s) used as timeout by this api route; the target may be shared elsewhere in the model. |
ErrorMapping
Represents error mapping in the PIM vocabulary. It specializes TraceableElement with the details needed for this modeling concern.
Direct supertypes: TraceableElement. Inherited attributes and marker capabilities are documented in the shared kernel; this section lists every attribute declared by this class.
Declared attributes
| Attribute | Type and multiplicity | What it captures and why it exists | Accepted values and example |
|---|---|---|---|
domainErrorCode |
String [1] |
The business error code that this route translates into an API response, preserving domain semantics across the HTTP boundary. Semantic validation: ErrorMappingShouldBeActionable (error mapping should be actionable) in mde/validation/pim/rules/api.evl the value must be present and non-blank. |
A free-form String, subject to this class's semantic meaning and any EVL constraints. Example: ORDER_NOT_FOUND. |
abstractStatusClass |
String [1] |
The response class chosen for the domain failure, such as client, authorization, conflict, or server error, without hard-wiring every business code to a single transport detail. Semantic validation: ErrorMappingShouldBeActionable (error mapping should be actionable) in mde/validation/pim/rules/api.evl the value must be present and non-blank. |
A free-form String, subject to this class's semantic meaning and any EVL constraints. Example: ACTIVE. |
responseMessage |
String [1] |
The safe consumer-facing message for the mapped error, intentionally separate from internal diagnostics or exception text. Semantic validation: ErrorMappingShouldBeActionable (error mapping should be actionable) in mde/validation/pim/rules/api.evl the value must be present and non-blank. |
A free-form String, subject to this class's semantic meaning and any EVL constraints. Example: Order could not be completed.. |
Relationships
| Relationship | Kind and multiplicity | Meaning in the model |
|---|---|---|
apiRoute → ApiRoute |
reference; read-only, [1]; opposite errorMappings |
References the api route element(s) used as api route by this error mapping; the target may be shared elsewhere in the model. |
errorSchema → Schema |
reference, [?] | References the schema element(s) used as error schema by this error mapping; the target may be shared elsewhere in the model. |