Skip to content

Commit f9b1c2a

Browse files
PijukatelCopilot
andauthored
docs(openapi): Add undocumented kvs endpoints (#2438)
### Description - Add undocumented, but public API endpoints related to kvs: - Actor run default kvs - last Actor run default kvs - Abstract reusable parts of nearly duplicate endpoints and use references. - Create subgroups in `Convenience endpoints`, to avoid cluttering the documentation. (More undocumented endpoints will be added in follow-up PRs) ### Issues Partially implements: #2286 --------- Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>
1 parent 9aedfaf commit f9b1c2a

29 files changed

Lines changed: 1216 additions & 668 deletions

AGENTS.md

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -59,6 +59,8 @@ Add code samples by creating files in `apify-api/openapi/code_samples/{javascrip
5959
- Request parameters and path parameters defined in `/openapi/components/parameters`
6060
- Request/response schemas defined in `/openapi/components/schemas`
6161
- Explicit non-automatic examples defined in `/openapi/components/examples`
62+
- Objects that are not standardized in the OpenAPI specification defined in `/openapi/components/objects`
63+
- Objects that exist in several variants with only minor differences across different files can be extracted into file in `/openapi/components/objects`. Within one file the YAML anchor syntax can be used to define a shared and unique portion of such objects and avoid some code duplication. These objects will be used only during bundling process through references, but they will not be standalone entities in the generated specification.
6264
- When changing files in `/openapi/paths` look for opportunities to extract shared duplicate objects into re-usable components saved in `/openapi/components`.
6365
- When adding new endpoints, check first if any existing path is similar and if yes, try to re-use same components. If by adding new paths you create new duplication, try to extract it into a new components and reference it instead.
6466
- Prefer automatically generated examples from schema over explicit examples.

apify-api/openapi/components/objects/datasets/dataset-items.yaml

Lines changed: 61 additions & 61 deletions
Original file line numberDiff line numberDiff line change
@@ -16,35 +16,35 @@ sharedTagById: &sharedTagById
1616

1717
sharedTagDefault: &sharedTagDefault
1818
tags:
19-
- Default storages
19+
- Default dataset
2020

2121
sharedTagLastRun: &sharedTagLastRun
2222
tags:
23-
- Last Actor run
23+
- Last Actor run's default dataset
2424

2525
parametersGetHeadById: &parametersGetHeadById
2626
parameters:
27-
- $ref: "../../parameters/storageParameters.yaml#/datasetId"
28-
- $ref: "../../parameters/datasetItemsParameters.yaml#/format"
29-
- $ref: "../../parameters/datasetItemsParameters.yaml#/clean"
27+
- $ref: "../../parameters/datasetParameters.yaml#/datasetId"
28+
- $ref: "../../parameters/datasetParameters.yaml#/format"
29+
- $ref: "../../parameters/datasetParameters.yaml#/clean"
3030
- $ref: "../../parameters/paginationParameters.yaml#/offset"
31-
- $ref: "../../parameters/datasetItemsParameters.yaml#/limit"
32-
- $ref: "../../parameters/datasetItemsParameters.yaml#/fields"
33-
- $ref: "../../parameters/datasetItemsParameters.yaml#/omit"
34-
- $ref: "../../parameters/datasetItemsParameters.yaml#/unwind"
35-
- $ref: "../../parameters/datasetItemsParameters.yaml#/flatten"
36-
- $ref: "../../parameters/datasetItemsParameters.yaml#/descDataset"
37-
- $ref: "../../parameters/datasetItemsParameters.yaml#/attachment"
38-
- $ref: "../../parameters/datasetItemsParameters.yaml#/delimiter"
39-
- $ref: "../../parameters/datasetItemsParameters.yaml#/bom"
40-
- $ref: "../../parameters/datasetItemsParameters.yaml#/xmlRoot"
41-
- $ref: "../../parameters/datasetItemsParameters.yaml#/xmlRow"
42-
- $ref: "../../parameters/datasetItemsParameters.yaml#/skipHeaderRow"
43-
- $ref: "../../parameters/datasetItemsParameters.yaml#/skipHidden"
44-
- $ref: "../../parameters/datasetItemsParameters.yaml#/skipEmpty"
45-
- $ref: "../../parameters/datasetItemsParameters.yaml#/simplified"
46-
- $ref: "../../parameters/datasetItemsParameters.yaml#/view"
47-
- $ref: "../../parameters/datasetItemsParameters.yaml#/skipFailedPages"
31+
- $ref: "../../parameters/datasetParameters.yaml#/limit"
32+
- $ref: "../../parameters/datasetParameters.yaml#/fields"
33+
- $ref: "../../parameters/datasetParameters.yaml#/omit"
34+
- $ref: "../../parameters/datasetParameters.yaml#/unwind"
35+
- $ref: "../../parameters/datasetParameters.yaml#/flatten"
36+
- $ref: "../../parameters/datasetParameters.yaml#/descDataset"
37+
- $ref: "../../parameters/datasetParameters.yaml#/attachment"
38+
- $ref: "../../parameters/datasetParameters.yaml#/delimiter"
39+
- $ref: "../../parameters/datasetParameters.yaml#/bom"
40+
- $ref: "../../parameters/datasetParameters.yaml#/xmlRoot"
41+
- $ref: "../../parameters/datasetParameters.yaml#/xmlRow"
42+
- $ref: "../../parameters/datasetParameters.yaml#/skipHeaderRow"
43+
- $ref: "../../parameters/datasetParameters.yaml#/skipHidden"
44+
- $ref: "../../parameters/datasetParameters.yaml#/skipEmpty"
45+
- $ref: "../../parameters/datasetParameters.yaml#/simplified"
46+
- $ref: "../../parameters/datasetParameters.yaml#/view"
47+
- $ref: "../../parameters/datasetParameters.yaml#/skipFailedPages"
4848
- $ref: "../../parameters/storageParameters.yaml#/signature"
4949

5050
sharedGet: &sharedGet
@@ -264,26 +264,26 @@ getDefault:
264264
operationId: actorRun_dataset_items_get
265265
parameters:
266266
- $ref: "../../parameters/runAndBuildParameters.yaml#/runId"
267-
- $ref: "../../parameters/datasetItemsParameters.yaml#/format"
268-
- $ref: "../../parameters/datasetItemsParameters.yaml#/clean"
267+
- $ref: "../../parameters/datasetParameters.yaml#/format"
268+
- $ref: "../../parameters/datasetParameters.yaml#/clean"
269269
- $ref: "../../parameters/paginationParameters.yaml#/offset"
270-
- $ref: "../../parameters/datasetItemsParameters.yaml#/limit"
271-
- $ref: "../../parameters/datasetItemsParameters.yaml#/fields"
272-
- $ref: "../../parameters/datasetItemsParameters.yaml#/omit"
273-
- $ref: "../../parameters/datasetItemsParameters.yaml#/unwind"
274-
- $ref: "../../parameters/datasetItemsParameters.yaml#/flatten"
275-
- $ref: "../../parameters/datasetItemsParameters.yaml#/descDataset"
276-
- $ref: "../../parameters/datasetItemsParameters.yaml#/attachment"
277-
- $ref: "../../parameters/datasetItemsParameters.yaml#/delimiter"
278-
- $ref: "../../parameters/datasetItemsParameters.yaml#/bom"
279-
- $ref: "../../parameters/datasetItemsParameters.yaml#/xmlRoot"
280-
- $ref: "../../parameters/datasetItemsParameters.yaml#/xmlRow"
281-
- $ref: "../../parameters/datasetItemsParameters.yaml#/skipHeaderRow"
282-
- $ref: "../../parameters/datasetItemsParameters.yaml#/skipHidden"
283-
- $ref: "../../parameters/datasetItemsParameters.yaml#/skipEmpty"
284-
- $ref: "../../parameters/datasetItemsParameters.yaml#/simplified"
285-
- $ref: "../../parameters/datasetItemsParameters.yaml#/view"
286-
- $ref: "../../parameters/datasetItemsParameters.yaml#/skipFailedPages"
270+
- $ref: "../../parameters/datasetParameters.yaml#/limit"
271+
- $ref: "../../parameters/datasetParameters.yaml#/fields"
272+
- $ref: "../../parameters/datasetParameters.yaml#/omit"
273+
- $ref: "../../parameters/datasetParameters.yaml#/unwind"
274+
- $ref: "../../parameters/datasetParameters.yaml#/flatten"
275+
- $ref: "../../parameters/datasetParameters.yaml#/descDataset"
276+
- $ref: "../../parameters/datasetParameters.yaml#/attachment"
277+
- $ref: "../../parameters/datasetParameters.yaml#/delimiter"
278+
- $ref: "../../parameters/datasetParameters.yaml#/bom"
279+
- $ref: "../../parameters/datasetParameters.yaml#/xmlRoot"
280+
- $ref: "../../parameters/datasetParameters.yaml#/xmlRow"
281+
- $ref: "../../parameters/datasetParameters.yaml#/skipHeaderRow"
282+
- $ref: "../../parameters/datasetParameters.yaml#/skipHidden"
283+
- $ref: "../../parameters/datasetParameters.yaml#/skipEmpty"
284+
- $ref: "../../parameters/datasetParameters.yaml#/simplified"
285+
- $ref: "../../parameters/datasetParameters.yaml#/view"
286+
- $ref: "../../parameters/datasetParameters.yaml#/skipFailedPages"
287287
- $ref: "../../parameters/storageParameters.yaml#/signature"
288288

289289
getLastRun:
@@ -298,26 +298,26 @@ getLastRun:
298298
parameters:
299299
- $ref: "../../parameters/runAndBuildParameters.yaml#/actorId"
300300
- $ref: "../../parameters/runAndBuildParameters.yaml#/statusLastRun"
301-
- $ref: "../../parameters/datasetItemsParameters.yaml#/format"
302-
- $ref: "../../parameters/datasetItemsParameters.yaml#/clean"
301+
- $ref: "../../parameters/datasetParameters.yaml#/format"
302+
- $ref: "../../parameters/datasetParameters.yaml#/clean"
303303
- $ref: "../../parameters/paginationParameters.yaml#/offset"
304-
- $ref: "../../parameters/datasetItemsParameters.yaml#/limit"
305-
- $ref: "../../parameters/datasetItemsParameters.yaml#/fields"
306-
- $ref: "../../parameters/datasetItemsParameters.yaml#/omit"
307-
- $ref: "../../parameters/datasetItemsParameters.yaml#/unwind"
308-
- $ref: "../../parameters/datasetItemsParameters.yaml#/flatten"
309-
- $ref: "../../parameters/datasetItemsParameters.yaml#/descDataset"
310-
- $ref: "../../parameters/datasetItemsParameters.yaml#/attachment"
311-
- $ref: "../../parameters/datasetItemsParameters.yaml#/delimiter"
312-
- $ref: "../../parameters/datasetItemsParameters.yaml#/bom"
313-
- $ref: "../../parameters/datasetItemsParameters.yaml#/xmlRoot"
314-
- $ref: "../../parameters/datasetItemsParameters.yaml#/xmlRow"
315-
- $ref: "../../parameters/datasetItemsParameters.yaml#/skipHeaderRow"
316-
- $ref: "../../parameters/datasetItemsParameters.yaml#/skipHidden"
317-
- $ref: "../../parameters/datasetItemsParameters.yaml#/skipEmpty"
318-
- $ref: "../../parameters/datasetItemsParameters.yaml#/simplified"
319-
- $ref: "../../parameters/datasetItemsParameters.yaml#/view"
320-
- $ref: "../../parameters/datasetItemsParameters.yaml#/skipFailedPages"
304+
- $ref: "../../parameters/datasetParameters.yaml#/limit"
305+
- $ref: "../../parameters/datasetParameters.yaml#/fields"
306+
- $ref: "../../parameters/datasetParameters.yaml#/omit"
307+
- $ref: "../../parameters/datasetParameters.yaml#/unwind"
308+
- $ref: "../../parameters/datasetParameters.yaml#/flatten"
309+
- $ref: "../../parameters/datasetParameters.yaml#/descDataset"
310+
- $ref: "../../parameters/datasetParameters.yaml#/attachment"
311+
- $ref: "../../parameters/datasetParameters.yaml#/delimiter"
312+
- $ref: "../../parameters/datasetParameters.yaml#/bom"
313+
- $ref: "../../parameters/datasetParameters.yaml#/xmlRoot"
314+
- $ref: "../../parameters/datasetParameters.yaml#/xmlRow"
315+
- $ref: "../../parameters/datasetParameters.yaml#/skipHeaderRow"
316+
- $ref: "../../parameters/datasetParameters.yaml#/skipHidden"
317+
- $ref: "../../parameters/datasetParameters.yaml#/skipEmpty"
318+
- $ref: "../../parameters/datasetParameters.yaml#/simplified"
319+
- $ref: "../../parameters/datasetParameters.yaml#/view"
320+
- $ref: "../../parameters/datasetParameters.yaml#/skipFailedPages"
321321
- $ref: "../../parameters/storageParameters.yaml#/signature"
322322

323323
headById:
@@ -391,7 +391,7 @@ postById:
391391
**IMPORTANT:** The limit of request payload size for the dataset is 5 MB. If the array exceeds the size, you'll need to split it into a number of smaller arrays.
392392
operationId: dataset_items_post
393393
parameters:
394-
- $ref: "../../parameters/storageParameters.yaml#/datasetId"
394+
- $ref: "../../parameters/datasetParameters.yaml#/datasetId"
395395
x-legacy-doc-urls:
396396
- https://docs.apify.com/api/v2#/reference/datasets/item-collection/put-items
397397
- https://docs.apify.com/api/v2#/reference/datasets/put-items

apify-api/openapi/components/objects/datasets/dataset-statistics.yaml

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -31,12 +31,12 @@ getById:
3131
3232
operationId: dataset_statistics_get
3333
parameters:
34-
- $ref: "../../parameters/storageParameters.yaml#/datasetId"
34+
- $ref: "../../parameters/datasetParameters.yaml#/datasetId"
3535

3636
getDefault:
3737
<<: *sharedGet
3838
tags:
39-
- Default storages
39+
- Default dataset
4040
summary: Get default dataset statistics
4141
description: |
4242
Returns statistics for the Actor run's default dataset.
@@ -50,7 +50,7 @@ getDefault:
5050
getLastRun:
5151
<<: *sharedGet
5252
tags:
53-
- Last Actor run
53+
- Last Actor run's default dataset
5454
summary: Get last run's dataset statistics
5555
description: |
5656
Returns statistics for the last Actor run's default dataset.

apify-api/openapi/components/objects/datasets/dataset.yaml

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -25,17 +25,17 @@ sharedById: &sharedById
2525
tags:
2626
- Storage/Datasets
2727
parameters:
28-
- $ref: "../../parameters/storageParameters.yaml#/datasetId"
28+
- $ref: "../../parameters/datasetParameters.yaml#/datasetId"
2929

3030
sharedDefault: &sharedDefault
3131
tags:
32-
- Default storages
32+
- Default dataset
3333
parameters:
3434
- $ref: "../../parameters/runAndBuildParameters.yaml#/runId"
3535

3636
sharedLastRun: &sharedLastRun
3737
tags:
38-
- Last Actor run
38+
- Last Actor run's default dataset
3939
parameters:
4040
- $ref: "../../parameters/runAndBuildParameters.yaml#/actorId"
4141
- $ref: "../../parameters/runAndBuildParameters.yaml#/statusLastRun"
Lines changed: 100 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,100 @@
1+
commonErrors: &commonErrors
2+
"400":
3+
$ref: ../../responses/BadRequest.yaml
4+
"401":
5+
$ref: ../../responses/Unauthorized.yaml
6+
"403":
7+
$ref: ../../responses/Forbidden.yaml
8+
"404":
9+
$ref: ../../responses/NotFound.yaml
10+
"405":
11+
$ref: ../../responses/MethodNotAllowed.yaml
12+
"429":
13+
$ref: ../../responses/TooManyRequests.yaml
14+
15+
sharedTagById: &sharedTagById
16+
tags:
17+
- Storage/Key-value stores
18+
19+
sharedTagDefault: &sharedTagDefault
20+
tags:
21+
- Default key-value store
22+
23+
sharedTagLastRun: &sharedTagLastRun
24+
tags:
25+
- Last Actor run's default key-value store
26+
27+
sharedGet: &sharedGet
28+
responses:
29+
<<: *commonErrors
30+
"200":
31+
description: ""
32+
headers: {}
33+
content:
34+
application/json:
35+
schema:
36+
$ref: ../../schemas/key-value-stores/ListOfKeysResponse.yaml
37+
deprecated: false
38+
39+
getById:
40+
<<: [*sharedGet, *sharedTagById]
41+
summary: Get list of keys
42+
description: |
43+
Returns a list of objects describing keys of a given key-value store, as
44+
well as some information about the values (e.g. size).
45+
46+
This endpoint is paginated using `exclusiveStartKey` and `limit` parameters
47+
- see [Pagination](/api/v2#using-key) for more details.
48+
operationId: keyValueStore_keys_get
49+
parameters:
50+
- $ref: "../../parameters/keyValueStoreParameters.yaml#/storeId"
51+
- $ref: "../../parameters/keyValueStoreParameters.yaml#/exclusiveStartKey"
52+
- $ref: "../../parameters/keyValueStoreParameters.yaml#/limit"
53+
- $ref: "../../parameters/keyValueStoreParameters.yaml#/collectionKeys"
54+
- $ref: "../../parameters/keyValueStoreParameters.yaml#/prefixKeys"
55+
- $ref: "../../parameters/storageParameters.yaml#/signature"
56+
x-legacy-doc-urls:
57+
- https://docs.apify.com/api/v2#/reference/key-value-stores/key-collection/get-list-of-keys
58+
- https://docs.apify.com/api/v2#/reference/key-value-stores/get-list-of-keys
59+
- https://docs.apify.com/api/v2#tag/Key-value-storesKey-collection/operation/keyValueStore_keys_get
60+
x-js-parent: KeyValueStoreClient
61+
x-js-name: listKeys
62+
x-js-doc-url: https://docs.apify.com/api/client/js/reference/class/KeyValueStoreClient#listKeys
63+
x-py-parent: KeyValueStoreClientAsync
64+
x-py-name: list_keys
65+
x-py-doc-url: https://docs.apify.com/api/client/python/reference/class/KeyValueStoreClientAsync#list_keys
66+
67+
getDefault:
68+
<<: [*sharedGet, *sharedTagDefault]
69+
summary: Get default store's list of keys
70+
description: |
71+
Returns a list of keys for the default key-value store of the Actor run.
72+
73+
This endpoint is a shortcut for getting the run's `defaultKeyValueStoreId` and then using the
74+
[Get list of keys](/api/v2/key-value-store-keys-get) endpoint.
75+
operationId: actorRun_keyValueStore_keys_get
76+
parameters:
77+
- $ref: "../../parameters/runAndBuildParameters.yaml#/runId"
78+
- $ref: "../../parameters/keyValueStoreParameters.yaml#/exclusiveStartKey"
79+
- $ref: "../../parameters/keyValueStoreParameters.yaml#/limit"
80+
- $ref: "../../parameters/keyValueStoreParameters.yaml#/collectionKeys"
81+
- $ref: "../../parameters/keyValueStoreParameters.yaml#/prefixKeys"
82+
- $ref: "../../parameters/storageParameters.yaml#/signature"
83+
84+
getLastRun:
85+
<<: [*sharedGet, *sharedTagLastRun]
86+
summary: Get last run's default store's list of keys
87+
description: |
88+
Returns a list of keys for the default key-value store of the last Actor run.
89+
90+
This endpoint is a shortcut for getting the last run's `defaultKeyValueStoreId` and then using the
91+
[Get list of keys](/api/v2/key-value-store-keys-get) endpoint.
92+
operationId: act_runs_last_keyValueStore_keys_get
93+
parameters:
94+
- $ref: "../../parameters/runAndBuildParameters.yaml#/actorId"
95+
- $ref: "../../parameters/runAndBuildParameters.yaml#/statusLastRun"
96+
- $ref: "../../parameters/keyValueStoreParameters.yaml#/exclusiveStartKey"
97+
- $ref: "../../parameters/keyValueStoreParameters.yaml#/limit"
98+
- $ref: "../../parameters/keyValueStoreParameters.yaml#/collectionKeys"
99+
- $ref: "../../parameters/keyValueStoreParameters.yaml#/prefixKeys"
100+
- $ref: "../../parameters/storageParameters.yaml#/signature"

0 commit comments

Comments
 (0)