openapi: 3.2.0 info: title: MCP Gateway Custom Server Credential Binding Backfill API description: API for MCP Gateway operations version: v1 servers: - url: https://dev.stormmcp.ai/ tags: - name: CustomServerCredentialBindingBackfill paths: /api/v1/admin/CustomServerCredentialBindingBackfill: post: tags: - CustomServerCredentialBindingBackfill summary: Copies legacy credential handles onto the typed columns for the caller's… parameters: - name: batchSize in: query description: 'Rows written per save (1-1000, default 200). Also the size of each UCS batch resolve of pending legacy ids. The run''s batch guard is a batch count, not a row count, so this also sets the ceiling for one call (1000 batches times this size). A small value can end the run at `truncated: true` with rows still pending; that means rerun and investigate why rows are not settling.' schema: pattern: ^-?(?:0|[1-9]\d*)$ type: - integer - string format: int32 default: 200 responses: '200': description: OK content: text/plain: schema: $ref: '#/components/schemas/CustomServerCredentialBindingBackfillResult' application/json: schema: $ref: '#/components/schemas/CustomServerCredentialBindingBackfillResult' text/json: schema: $ref: '#/components/schemas/CustomServerCredentialBindingBackfillResult' text/csv: schema: $ref: '#/components/schemas/CustomServerCredentialBindingBackfillResult' application/csv: schema: $ref: '#/components/schemas/CustomServerCredentialBindingBackfillResult' '401': description: Unauthorized content: text/plain: schema: $ref: '#/components/schemas/ProblemDetails' application/json: schema: $ref: '#/components/schemas/ProblemDetails' text/json: schema: $ref: '#/components/schemas/ProblemDetails' text/csv: schema: $ref: '#/components/schemas/ProblemDetails' application/csv: schema: $ref: '#/components/schemas/ProblemDetails' '403': description: Forbidden content: text/plain: schema: $ref: '#/components/schemas/ProblemDetails' application/json: schema: $ref: '#/components/schemas/ProblemDetails' text/json: schema: $ref: '#/components/schemas/ProblemDetails' text/csv: schema: $ref: '#/components/schemas/ProblemDetails' application/csv: schema: $ref: '#/components/schemas/ProblemDetails' operationId: postApiV1AdminCustomServerCredentialBindingBackfill x-operation-id-source: derived components: schemas: ProblemDetails: type: object properties: type: type: - 'null' - string title: type: - 'null' - string status: pattern: ^-?(?:0|[1-9]\d*)$ type: - 'null' - integer - string format: int32 detail: type: - 'null' - string instance: type: - 'null' - string CustomServerCredentialBindingBackfillResult: type: object properties: pending: pattern: ^-?(?:0|[1-9]\d*)$ type: - integer - string description: 'Gets the number of rows that still needed a typed column or a disagreement repair when the run started.' format: int32 written: pattern: ^-?(?:0|[1-9]\d*)$ type: - integer - string description: Gets the number of both-null rows the run wrote a typed column onto. format: int32 repaired: pattern: ^-?(?:0|[1-9]\d*)$ type: - integer - string description: 'Gets the number of disagreement rows the run rewrote to the UCS-classified family, clearing the wrong family''s column, or typed-only residue it repaired to cleared.' format: int32 noHandle: pattern: ^-?(?:0|[1-9]\d*)$ type: - integer - string description: 'Gets the number of pending rows skipped because they had no legacy handle after typed-only residue was repaired. Those rows stay pending; they hold the flag-ramp.' format: int32 unclassified: pattern: ^-?(?:0|[1-9]\d*)$ type: - integer - string description: 'Gets the number of rows whose legacy id UCS did not positively classify, including batch-resolve and provider-read faults. Those rows stay pending; they hold the flag-ramp.' format: int32 familyDisagreement: pattern: ^-?(?:0|[1-9]\d*)$ type: - integer - string description: 'Gets the number of rows whose UCS-classified family conflicts with `AuthenticationType`. Those rows stay pending; they hold the flag-ramp.' format: int32 personalBinder: pattern: ^-?(?:0|[1-9]\d*)$ type: - integer - string description: 'Gets the number of rows skipped because a personal OAuth binder for the server equals the classified id. The static column is not written.' format: int32 unconfiguredAuth: pattern: ^-?(?:0|[1-9]\d*)$ type: - integer - string description: 'Gets the number of working legacy rows skipped because `AuthenticationType` is None or unset, including when UCS cannot classify the handle. The run leaves the handle on the legacy column; flag-on hydration still serves it through the both-typed-null fallback, so this count does not hold the flag-ramp.' format: int32 v1Origin: pattern: ^-?(?:0|[1-9]\d*)$ type: - integer - string description: 'Gets the number of rows whose legacy id is a live V1 credential. The run leaves `CredentialBinderId` null and keeps the legacy handle; flag-on hydration still serves that handle through the both-typed-null fallback, so this count does not hold the flag-ramp.' format: int32 truncated: type: boolean description: 'Gets a value indicating whether the run stopped on its iteration guard rather than because there was nothing left. A true here means run it again, and look at why rows are not settling.' description: The outcome of one typed credential-binding backfill run. Every counter is a row count.