chore: update v3 OpenAPI specs to v3.837.0 - #37
Conversation
PR Reviewer Guide 🔍Here are some key observations to aid the review process:
|
| example: | ||
| status: Request Timeout | ||
| message: >- | ||
| The screening provider did not respond in time. The job is still recorded — | ||
| retrieve its result from /v3/status/{job_id}. |
There was a problem hiding this comment.
Suggestion: The 408 description says the job is terminal in error and callers should resubmit rather than poll, but the example message instructs them to retrieve the result from /v3/status/{job_id}. This contradiction will push integrators into a useless polling loop; make the example consistent with the documented behaviour. [general, importance: 5]
| example: | |
| status: Request Timeout | |
| message: >- | |
| The screening provider did not respond in time. The job is still recorded — | |
| retrieve its result from /v3/status/{job_id}. | |
| example: | |
| status: Request Timeout | |
| message: >- | |
| The screening provider did not respond in time. No result was produced and | |
| nothing was billed — resubmit with the same SmileID-Idempotency-Key. |
| headers: | ||
| SmileID-Job-ID: | ||
| description: The Smile job id to poll for this screening. | ||
| schema: | ||
| type: string | ||
| example: job_01h8x9y2z3a4b5c6d7e8f9g0h1 | ||
| content: | ||
| application/json: | ||
| schema: | ||
| $ref: '#/components/schemas/ApiErrorResponse' | ||
| example: | ||
| status: Request Timeout | ||
| message: >- | ||
| The screening provider did not respond in time. The job is still recorded — | ||
| retrieve its result from /v3/status/{job_id}. |
There was a problem hiding this comment.
Suggestion: For the 408 case the spec simultaneously says the job is terminal in error (resubmit, do not poll) and tells the caller to poll /v3/status/{job_id}. Align both the header description and the example message with the resubmit-with-idempotency-key guidance. [general, importance: 5]
| headers: | |
| SmileID-Job-ID: | |
| description: The Smile job id to poll for this screening. | |
| schema: | |
| type: string | |
| example: job_01h8x9y2z3a4b5c6d7e8f9g0h1 | |
| content: | |
| application/json: | |
| schema: | |
| $ref: '#/components/schemas/ApiErrorResponse' | |
| example: | |
| status: Request Timeout | |
| message: >- | |
| The screening provider did not respond in time. The job is still recorded — | |
| retrieve its result from /v3/status/{job_id}. | |
| headers: | |
| SmileID-Job-ID: | |
| description: The Smile job id recorded for this screening (terminal in `error`). | |
| schema: | |
| type: string | |
| example: job_01h8x9y2z3a4b5c6d7e8f9g0h1 | |
| content: | |
| application/json: | |
| schema: | |
| $ref: '#/components/schemas/ApiErrorResponse' | |
| example: | |
| status: Request Timeout | |
| message: >- | |
| The screening provider did not respond in time. No result was produced and | |
| nothing was billed — resubmit with the same SmileID-Idempotency-Key. |
| - name: SmileID-Idempotency-Key | ||
| in: header | ||
| required: false | ||
| description: >- | ||
| Opaque key, 16 to 128 characters of `A-Z a-z 0-9 - _`, that makes a submission safe to | ||
| repeat. The job id is derived from it, so a request carrying a key you have already used | ||
| resolves to that same job: it returns the original result and screens — and bills — | ||
| nothing a second time. Send one whenever you might retry, since a retry without a key | ||
| starts a new, separately billed screening. | ||
| schema: | ||
| type: string | ||
| example: kuda-onboarding-8f14e45fceea167a |
There was a problem hiding this comment.
Suggestion: The documented 16–128 character and character-set constraints for the idempotency key are not expressed in the schema, so generated clients and validators will happily send keys that the API rejects (or worse, silently start a new billed screening). Encode the constraints as minLength, maxLength, and pattern. [general, importance: 5]
| - name: SmileID-Idempotency-Key | |
| in: header | |
| required: false | |
| description: >- | |
| Opaque key, 16 to 128 characters of `A-Z a-z 0-9 - _`, that makes a submission safe to | |
| repeat. The job id is derived from it, so a request carrying a key you have already used | |
| resolves to that same job: it returns the original result and screens — and bills — | |
| nothing a second time. Send one whenever you might retry, since a retry without a key | |
| starts a new, separately billed screening. | |
| schema: | |
| type: string | |
| example: kuda-onboarding-8f14e45fceea167a | |
| - name: SmileID-Idempotency-Key | |
| in: header | |
| required: false | |
| description: >- | |
| Opaque key, 16 to 128 characters of `A-Z a-z 0-9 - _`, that makes a submission safe to | |
| repeat. The job id is derived from it, so a request carrying a key you have already used | |
| resolves to that same job: it returns the original result and screens — and bills — | |
| nothing a second time. Send one whenever you might retry, since a retry without a key | |
| starts a new, separately billed screening. | |
| schema: | |
| type: string | |
| minLength: 16 | |
| maxLength: 128 | |
| pattern: '^[A-Za-z0-9_-]{16,128}$' | |
| example: kuda-onboarding-8f14e45fceea167a |
User description
Automated v3 OpenAPI spec update for v3.837.0.
Triggered by Solomon Nsubuga (@solnsubuga) - assigned to you in case it needs a manual merge.
PR Type
Enhancement, Documentation
Description
Add synchronous
POST /v3/aml/syncOpenAPI specDocument headers, idempotency, signatures, 200/408/500 flows
Update
kyc_receiptexamples to real URLBump spec version, README table, CHANGELOG
Diagram Walkthrough
File Walkthrough
v3-one-time-aml-entry.yaml
Add synchronous One-Time AML endpoint to entry specspecs/v3/v3-one-time-aml-entry.yaml
POST /v3/aml/syncpath with full description, headers,multipart request body, and response examples (clear, block,
attention, high risk).
429, 500 including
SmileID-Job-IDheaders.infodescription to cover both async and sync endpoints;bumped version to
1.1.0.kyc_receiptexample fromnullto a receipts URL.openapi.yaml
Add /v3/aml/sync operation to aggregated specspecs/v3/openapi.yaml
/v3/aml/syncPOST operation into the aggregatedOpenAPI spec with parameters, request body, and all response
codes/examples.
kyc_receiptexample value in the existing async AML callbackexample.
README.md
Document new sync AML endpoint in READMEREADME.md
POST /v3/aml/syncfor inline One-Time AMLresults.
CHANGELOG.md
Add v3.837.0 changelog entryCHANGELOG.md
v3.837.0release entry noting updates toopenapiandv3-one-time-aml-entry.