naftiko: 1.0.0-alpha2 info: label: Salesforce UI API — Records description: 'Salesforce UI API — Records. 4 operations. Lead operation: Salesforce Create a Record. Self-contained Naftiko capability covering one Salesforce business surface.' tags: - Salesforce - Records created: '2026-05-19' modified: '2026-05-19' binds: - namespace: env keys: SALESFORCE_API_KEY: SALESFORCE_API_KEY capability: consumes: - type: http namespace: ui-records baseUri: https://{instanceName}.salesforce.com/services/data/v{version}/ui-api description: Salesforce UI API — Records business capability. Self-contained, no shared references. resources: - name: records path: /records operations: - name: createrecord method: POST description: Salesforce Create a Record outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: body in: body type: object description: Request body (JSON). required: true - name: records-recordId path: /records/{recordId} operations: - name: getrecord method: GET description: Salesforce Get a Record outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: fields in: query type: string description: Comma-separated list of field API names to return (e.g., Account.Name,Account.Type) - name: layoutTypes in: query type: string description: Layout types to use for determining which fields to return (Full, Compact) - name: modes in: query type: string description: View mode(s) for the layout (View, Edit, Create) - name: optionalFields in: query type: string description: Fields to include if accessible, without error if inaccessible - name: updaterecord method: PATCH description: Salesforce Update a Record outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: If-Modified-Since in: header type: string description: Conditional update based on record modification timestamp - name: body in: body type: object description: Request body (JSON). required: true - name: deleterecord method: DELETE description: Salesforce Delete a Record outputRawFormat: json outputParameters: - name: result type: object value: $. authentication: type: bearer token: '{{env.SALESFORCE_API_KEY}}' exposes: - type: rest namespace: ui-records-rest port: 8080 description: REST adapter for Salesforce UI API — Records. One Spectral-compliant resource per consumed operation, prefixed with /v1. resources: - path: /v1/records name: records description: REST surface for records. operations: - method: POST name: createrecord description: Salesforce Create a Record call: ui-records.createrecord with: body: rest.body outputParameters: - type: object mapping: $. - path: /v1/records/{recordid} name: records-recordid description: REST surface for records-recordId. operations: - method: GET name: getrecord description: Salesforce Get a Record call: ui-records.getrecord with: fields: rest.fields layoutTypes: rest.layoutTypes modes: rest.modes optionalFields: rest.optionalFields outputParameters: - type: object mapping: $. - method: PATCH name: updaterecord description: Salesforce Update a Record call: ui-records.updaterecord with: If-Modified-Since: rest.If-Modified-Since body: rest.body outputParameters: - type: object mapping: $. - method: DELETE name: deleterecord description: Salesforce Delete a Record call: ui-records.deleterecord outputParameters: - type: object mapping: $. - type: mcp namespace: ui-records-mcp port: 9090 transport: http description: MCP adapter for Salesforce UI API — Records. One tool per consumed operation, routed inline through this capability's consumes block. tools: - name: salesforce-create-record description: Salesforce Create a Record hints: readOnly: false destructive: false idempotent: false call: ui-records.createrecord with: body: tools.body outputParameters: - type: object mapping: $. - name: salesforce-get-record description: Salesforce Get a Record hints: readOnly: true destructive: false idempotent: true call: ui-records.getrecord with: fields: tools.fields layoutTypes: tools.layoutTypes modes: tools.modes optionalFields: tools.optionalFields outputParameters: - type: object mapping: $. - name: salesforce-update-record description: Salesforce Update a Record hints: readOnly: false destructive: false idempotent: true call: ui-records.updaterecord with: If-Modified-Since: tools.If-Modified-Since body: tools.body outputParameters: - type: object mapping: $. - name: salesforce-delete-record description: Salesforce Delete a Record hints: readOnly: false destructive: true idempotent: true call: ui-records.deleterecord outputParameters: - type: object mapping: $.