generated: '2026-08-13' method: probed source: live anonymous requests to https://openapi.fastship.co/api/v2 (2026-08-13) note: >- Cross-cutting runtime semantics for the FastShip Open API. Cloud Commerce publishes no developer reference, so every entry here is either OBSERVED on the wire or explicitly marked unknown. Nothing is inferred from convention or from what a Laravel application usually does. api: FastShip Open API baseURL: https://openapi.fastship.co/api/v2 versioning: style: path pattern: /api/v{major} current: v2 observed: - path: /api/v2 status: 200 body: Welcome to API Version 2.0 - path: /api/v1 status: 200 body: Welcome to API Version 2.0 note: >- /api/v1 answers with the v2 banner. Either v1 is aliased to v2 or the banner is hard-coded; a client cannot tell which version it is talking to from the path. - path: /api/v3 status: 404 header_negotiation: false media_type_versioning: false authentication: style: credential exchange for a token endpoint: /api/v2/login detail: see authentication/cloud-commerce-authentication.yml error_envelope: shape: custom rfc9457: false content_type: application/json fields: - field: message observed_values: - failed note: A coarse status word, not an error code. - field: description observed_values: - Login failed - Email or Password incorrect. Please try again. - For logged in and generate Token. note: >- Human-readable prose. Doubles as the endpoint's purpose statement on a 400, so it is not a stable machine-readable error string. - field: data note: >- Either an empty array on a bare failure, or an object carrying data.error with per-field validation messages (Laravel validator output). machine_readable_code: false machine_readable_code_note: >- No error code, type URI or enum is returned. A client must string-match on `description` — or on the HTTP status alone — to distinguish failures. status_codes_observed: - 200 - 301 - 400 - 401 - 404 debug_mode: enabled: true evidence: >- Unmatched routes under /api/v2 return a JSON body containing "exception": "Symfony\\Component\\HttpKernel\\Exception\\NotFoundHttpException" together with the server-side file path of the throwing class, rather than a plain 404 envelope. note: >- Recorded as an API-quality observation about the error contract: the 404 shape does not match the documented-by-behavior {message, description, data} envelope used by the routes that do exist, so a client cannot parse errors uniformly. idempotency: supported: unknown header: null note: >- No Idempotency-Key or equivalent header was observed or documented. NOT claimed — no Idempotency pointer is emitted in apis.yml. pagination: style: unknown note: No collection endpoint is reachable anonymously, so pagination is unobservable. field_expansion: supported: unknown sparse_fieldsets: supported: unknown metadata: supported: unknown request_tracing: request_id_header: null observed: false note: No X-Request-Id, X-Correlation-Id or traceparent header on any response. rate_limit_signaling: headers: - X-RateLimit-Limit - X-RateLimit-Remaining detail: see rate-limits/cloud-commerce-rate-limits.yml cors: enabled: true access_control_allow_origin: '*' access_control_allow_credentials: true access_control_allow_methods: POST, GET, OPTIONS, PUT, PATCH, DELETE observed_on: - https://api.fastship.co/ - https://openapi.fastship.co/api/v2/login note: >- Browser clients can call the API cross-origin from any origin. Recorded as an observed runtime fact about the surface. transport: https: true http2: true hsts: api.fastship.co: 'max-age=31536000; includeSubDomains' openapi.fastship.co: not observed server_banner: openapi.fastship.co: Apache/2.4.52 (Unix) OpenSSL/1.1.1n, PHP/7.4.27, Laravel 8.83.29 api.fastship.co: PHP/7.4.33 cross_links: - authentication/cloud-commerce-authentication.yml - rate-limits/cloud-commerce-rate-limits.yml - lifecycle/cloud-commerce-lifecycle.yml - well-known/cloud-commerce-well-known.yml