naftiko: 1.0.0-alpha2 info: label: Userpilot API description: 'Userpilot API. 15 operations. Lead operation: Trigger an Export Job. Self-contained Naftiko capability covering one Userpilot business surface.' tags: - Userpilot - Userpilot API created: '2026-05-19' modified: '2026-05-19' binds: - namespace: env keys: USERPILOT_API_KEY: USERPILOT_API_KEY capability: consumes: - type: http namespace: appex baseUri: https://appex.userpilot.io description: Userpilot API business capability. Self-contained, no shared references. resources: - name: api-v1-analytics-exports path: /api/v1/analytics/exports operations: - name: post method: POST description: Trigger an Export Job outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: Content-Type in: header type: string description: The content type of the request body. Must be `application/json`. - name: Accept in: header type: string description: The content type of the response body. Must be `application/json`. - name: body in: body type: object description: Request body (JSON). required: false - name: api-v1-analytics-exports-jobs path: /api/v1/analytics/exports/jobs/ operations: - name: get method: GET description: Show Jobs outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: Accept in: header type: string - name: api-v1-analytics-exports-jobs-job_id path: /api/v1/analytics/exports/jobs/{job_id} operations: - name: get method: GET description: Show Job by Job ID outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: Accept in: header type: string - name: api-v1-analytics-exports-lookups-banners path: /api/v1/analytics/exports/lookups/banners operations: - name: get method: GET description: Get banners outputRawFormat: json outputParameters: - name: result type: object value: $. - name: api-v1-analytics-exports-lookups-checklists path: /api/v1/analytics/exports/lookups/checklists operations: - name: get method: GET description: Get checklists (with tasks) outputRawFormat: json outputParameters: - name: result type: object value: $. - name: api-v1-analytics-exports-lookups-company_properties path: /api/v1/analytics/exports/lookups/company_properties operations: - name: get method: GET description: Get company properties outputRawFormat: json outputParameters: - name: result type: object value: $. - name: api-v1-analytics-exports-lookups-embeds path: /api/v1/analytics/exports/lookups/embeds operations: - name: get method: GET description: Get embeds outputRawFormat: json outputParameters: - name: result type: object value: $. - name: api-v1-analytics-exports-lookups-events_properties path: /api/v1/analytics/exports/lookups/events_properties operations: - name: get method: GET description: Get trackable events' properties/attributes (paginated) outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: after_cursor in: query type: string description: Cursor for pagination. Use the value from the previous response's metadata.cursor.after. - name: api-v1-analytics-exports-lookups-features_events path: /api/v1/analytics/exports/lookups/features_events operations: - name: get method: GET description: Get features & events outputRawFormat: json outputParameters: - name: result type: object value: $. - name: api-v1-analytics-exports-lookups-flows path: /api/v1/analytics/exports/lookups/flows operations: - name: get method: GET description: Get flows (experiences) outputRawFormat: json outputParameters: - name: result type: object value: $. - name: api-v1-analytics-exports-lookups-resource_center_modules path: /api/v1/analytics/exports/lookups/resource_center_modules operations: - name: get method: GET description: Get resource center modules outputRawFormat: json outputParameters: - name: result type: object value: $. - name: api-v1-analytics-exports-lookups-segments path: /api/v1/analytics/exports/lookups/segments operations: - name: get method: GET description: Get segments outputRawFormat: json outputParameters: - name: result type: object value: $. - name: api-v1-analytics-exports-lookups-spotlights path: /api/v1/analytics/exports/lookups/spotlights operations: - name: get method: GET description: Get spotlights outputRawFormat: json outputParameters: - name: result type: object value: $. - name: api-v1-analytics-exports-lookups-surveys path: /api/v1/analytics/exports/lookups/surveys operations: - name: get method: GET description: Get surveys (with modules) outputRawFormat: json outputParameters: - name: result type: object value: $. - name: api-v1-analytics-exports-lookups-user_properties path: /api/v1/analytics/exports/lookups/user_properties operations: - name: get method: GET description: Get user properties outputRawFormat: json outputParameters: - name: result type: object value: $. exposes: - type: rest namespace: appex-rest port: 8080 description: REST adapter for Userpilot API. One Spectral-compliant resource per consumed operation, prefixed with /v1. resources: - path: /v1/api/v1/analytics/exports name: api-v1-analytics-exports description: REST surface for api-v1-analytics-exports. operations: - method: POST name: post description: Trigger an Export Job call: appex.post with: Content-Type: rest.Content-Type Accept: rest.Accept body: rest.body outputParameters: - type: object mapping: $. - path: /v1/api/v1/analytics/exports/jobs name: api-v1-analytics-exports-jobs description: REST surface for api-v1-analytics-exports-jobs. operations: - method: GET name: get description: Show Jobs call: appex.get with: Accept: rest.Accept outputParameters: - type: object mapping: $. - path: /v1/api/v1/analytics/exports/jobs/{job-id} name: api-v1-analytics-exports-jobs-job-id description: REST surface for api-v1-analytics-exports-jobs-job_id. operations: - method: GET name: get description: Show Job by Job ID call: appex.get with: Accept: rest.Accept outputParameters: - type: object mapping: $. - path: /v1/api/v1/analytics/exports/lookups/banners name: api-v1-analytics-exports-lookups-banners description: REST surface for api-v1-analytics-exports-lookups-banners. operations: - method: GET name: get description: Get banners call: appex.get outputParameters: - type: object mapping: $. - path: /v1/api/v1/analytics/exports/lookups/checklists name: api-v1-analytics-exports-lookups-checklists description: REST surface for api-v1-analytics-exports-lookups-checklists. operations: - method: GET name: get description: Get checklists (with tasks) call: appex.get outputParameters: - type: object mapping: $. - path: /v1/api/v1/analytics/exports/lookups/company-properties name: api-v1-analytics-exports-lookups-company-properties description: REST surface for api-v1-analytics-exports-lookups-company_properties. operations: - method: GET name: get description: Get company properties call: appex.get outputParameters: - type: object mapping: $. - path: /v1/api/v1/analytics/exports/lookups/embeds name: api-v1-analytics-exports-lookups-embeds description: REST surface for api-v1-analytics-exports-lookups-embeds. operations: - method: GET name: get description: Get embeds call: appex.get outputParameters: - type: object mapping: $. - path: /v1/api/v1/analytics/exports/lookups/events-properties name: api-v1-analytics-exports-lookups-events-properties description: REST surface for api-v1-analytics-exports-lookups-events_properties. operations: - method: GET name: get description: Get trackable events' properties/attributes (paginated) call: appex.get with: after_cursor: rest.after_cursor outputParameters: - type: object mapping: $. - path: /v1/api/v1/analytics/exports/lookups/features-events name: api-v1-analytics-exports-lookups-features-events description: REST surface for api-v1-analytics-exports-lookups-features_events. operations: - method: GET name: get description: Get features & events call: appex.get outputParameters: - type: object mapping: $. - path: /v1/api/v1/analytics/exports/lookups/flows name: api-v1-analytics-exports-lookups-flows description: REST surface for api-v1-analytics-exports-lookups-flows. operations: - method: GET name: get description: Get flows (experiences) call: appex.get outputParameters: - type: object mapping: $. - path: /v1/api/v1/analytics/exports/lookups/resource-center-modules name: api-v1-analytics-exports-lookups-resource-center-modules description: REST surface for api-v1-analytics-exports-lookups-resource_center_modules. operations: - method: GET name: get description: Get resource center modules call: appex.get outputParameters: - type: object mapping: $. - path: /v1/api/v1/analytics/exports/lookups/segments name: api-v1-analytics-exports-lookups-segments description: REST surface for api-v1-analytics-exports-lookups-segments. operations: - method: GET name: get description: Get segments call: appex.get outputParameters: - type: object mapping: $. - path: /v1/api/v1/analytics/exports/lookups/spotlights name: api-v1-analytics-exports-lookups-spotlights description: REST surface for api-v1-analytics-exports-lookups-spotlights. operations: - method: GET name: get description: Get spotlights call: appex.get outputParameters: - type: object mapping: $. - path: /v1/api/v1/analytics/exports/lookups/surveys name: api-v1-analytics-exports-lookups-surveys description: REST surface for api-v1-analytics-exports-lookups-surveys. operations: - method: GET name: get description: Get surveys (with modules) call: appex.get outputParameters: - type: object mapping: $. - path: /v1/api/v1/analytics/exports/lookups/user-properties name: api-v1-analytics-exports-lookups-user-properties description: REST surface for api-v1-analytics-exports-lookups-user_properties. operations: - method: GET name: get description: Get user properties call: appex.get outputParameters: - type: object mapping: $. - type: mcp namespace: appex-mcp port: 9090 transport: http description: MCP adapter for Userpilot API. One tool per consumed operation, routed inline through this capability's consumes block. tools: - name: trigger-export-job description: Trigger an Export Job hints: readOnly: false destructive: false idempotent: false call: appex.post with: Content-Type: tools.Content-Type Accept: tools.Accept body: tools.body outputParameters: - type: object mapping: $. - name: show-jobs description: Show Jobs hints: readOnly: true destructive: false idempotent: true call: appex.get with: Accept: tools.Accept outputParameters: - type: object mapping: $. - name: show-job-job-id description: Show Job by Job ID hints: readOnly: true destructive: false idempotent: true call: appex.get with: Accept: tools.Accept outputParameters: - type: object mapping: $. - name: get-banners description: Get banners hints: readOnly: true destructive: false idempotent: true call: appex.get outputParameters: - type: object mapping: $. - name: get-checklists-tasks description: Get checklists (with tasks) hints: readOnly: true destructive: false idempotent: true call: appex.get outputParameters: - type: object mapping: $. - name: get-company-properties description: Get company properties hints: readOnly: true destructive: false idempotent: true call: appex.get outputParameters: - type: object mapping: $. - name: get-embeds description: Get embeds hints: readOnly: true destructive: false idempotent: true call: appex.get outputParameters: - type: object mapping: $. - name: get-trackable-events-properties-attributes description: Get trackable events' properties/attributes (paginated) hints: readOnly: true destructive: false idempotent: true call: appex.get with: after_cursor: tools.after_cursor outputParameters: - type: object mapping: $. - name: get-features-events description: Get features & events hints: readOnly: true destructive: false idempotent: true call: appex.get outputParameters: - type: object mapping: $. - name: get-flows-experiences description: Get flows (experiences) hints: readOnly: true destructive: false idempotent: true call: appex.get outputParameters: - type: object mapping: $. - name: get-resource-center-modules description: Get resource center modules hints: readOnly: true destructive: false idempotent: true call: appex.get outputParameters: - type: object mapping: $. - name: get-segments description: Get segments hints: readOnly: true destructive: false idempotent: true call: appex.get outputParameters: - type: object mapping: $. - name: get-spotlights description: Get spotlights hints: readOnly: true destructive: false idempotent: true call: appex.get outputParameters: - type: object mapping: $. - name: get-surveys-modules description: Get surveys (with modules) hints: readOnly: true destructive: false idempotent: true call: appex.get outputParameters: - type: object mapping: $. - name: get-user-properties description: Get user properties hints: readOnly: true destructive: false idempotent: true call: appex.get outputParameters: - type: object mapping: $.