# SPDX-License-Identifier: CC-BY-NC-SA-4.0 arazzo: 1.0.1 info: title: CKAN Action API core conformance version: 1.0.0 summary: Identify the portal, search it, then read one dataset it returned. description: 'Three core actions in the order a real client uses them, each consuming the previous step''s output. Read-only throughout — these are public-sector servers and this flow never writes. Every step asserts on `success` in the body, never on the status code. CKAN answers with the same envelope whether an action succeeded, was refused for credentials, was given bad arguments, or does not exist — so a flow that checks only the status passes against a portal that served an error.' sourceDescriptions: - name: profile url: ../openapi.yml type: openapi workflows: - workflowId: core-conformance summary: status_show, then package_search, then package_show on the first result. description: 'The three highest-served core actions, chained. The portal''s CKAN version comes back from the first step, which matters here: this is a version-drift cohort and the release explains most divergence.' inputs: type: object properties: {} steps: - stepId: statusShow description: status_show — identify the portal and its CKAN release. operationId: $sourceDescriptions.profile.status_show successCriteria: - context: $response.body condition: $.success type: jsonpath - context: $response.body condition: $.result.ckan_version type: jsonpath outputs: ckanVersion: $response.body#/result/ckan_version - stepId: packageSearch description: package_search — the action that makes a portal useful. operationId: $sourceDescriptions.profile.package_search successCriteria: - context: $response.body condition: $.success type: jsonpath - context: $response.body condition: $.result.results[0].name type: jsonpath outputs: datasetName: $response.body#/result/results/0/name - stepId: packageShow description: package_show for the dataset the search returned. operationId: $sourceDescriptions.profile.package_show parameters: - name: id in: query value: $steps.packageSearch.outputs.datasetName successCriteria: - context: $response.body condition: $.success type: jsonpath - context: $response.body condition: $.result.id type: jsonpath outputs: datasetId: $response.body#/result/id outputs: ckanVersion: $steps.statusShow.outputs.ckanVersion datasetId: $steps.packageShow.outputs.datasetId