Skip to content

Commit a225063

Browse files
committed
Add open extensions management endpoints
Added endpoints for managing open extensions on DriveItems, including listing, retrieving, creating, updating, and deleting extensions.
1 parent 7fb96d4 commit a225063

1 file changed

Lines changed: 261 additions & 0 deletions

File tree

api/openapi-spec/v1.0.yaml

Lines changed: 261 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2086,6 +2086,227 @@ paths:
20862086
default:
20872087
$ref: '#/components/responses/error'
20882088
x-ms-docs-operation-type: operation
2089+
'/v1beta1/drives/{drive-id}/items/{item-id}/extensions':
2090+
get:
2091+
tags:
2092+
- driveItem.extensions
2093+
summary: List all extensions on a DriveItem
2094+
operationId: ListExtensions
2095+
description: |
2096+
Get the collection of open extensions on the specified DriveItem.
2097+
2098+
Each extension is identified by its `extensionName`, which follows a reverse DNS naming convention
2099+
(e.g. `com.example.myApp`).
2100+
parameters:
2101+
- name: drive-id
2102+
in: path
2103+
description: "key: id of drive"
2104+
required: true
2105+
schema:
2106+
type: string
2107+
example: a0ca6a90-a365-4782-871e-d44447bbc668$a0ca6a90-a365-4782-871e-d44447bbc668
2108+
x-ms-docs-key-type: drive
2109+
- name: item-id
2110+
in: path
2111+
description: "key: id of item"
2112+
required: true
2113+
schema:
2114+
type: string
2115+
example: a0ca6a90-a365-4782-871e-d44447bbc668$a0ca6a90-a365-4782-871e-d44447bbc668!share-id
2116+
x-ms-docs-key-type: item
2117+
responses:
2118+
"200":
2119+
description: Retrieved extensions
2120+
content:
2121+
application/json:
2122+
schema:
2123+
title: Collection of openTypeExtensions
2124+
type: object
2125+
properties:
2126+
value:
2127+
type: array
2128+
items:
2129+
$ref: '#/components/schemas/openTypeExtension'
2130+
examples:
2131+
list extensions:
2132+
value:
2133+
value:
2134+
- extensionName: "com.example.project"
2135+
status: "reviewed"
2136+
assignee: "alice"
2137+
- extensionName: "eu.opencloud.workflow"
2138+
step: "approval"
2139+
default:
2140+
$ref: '#/components/responses/error'
2141+
x-ms-docs-operation-type: operation
2142+
'/v1beta1/drives/{drive-id}/items/{item-id}/extensions/{extensionName}':
2143+
get:
2144+
tags:
2145+
- driveItem.extensions
2146+
summary: Get an extension by name
2147+
operationId: GetExtension
2148+
description: |
2149+
Get a specific open extension identified by the extension name.
2150+
parameters:
2151+
- name: drive-id
2152+
in: path
2153+
description: "key: id of drive"
2154+
required: true
2155+
schema:
2156+
type: string
2157+
example: a0ca6a90-a365-4782-871e-d44447bbc668$a0ca6a90-a365-4782-871e-d44447bbc668
2158+
x-ms-docs-key-type: drive
2159+
- name: item-id
2160+
in: path
2161+
description: "key: id of item"
2162+
required: true
2163+
schema:
2164+
type: string
2165+
example: a0ca6a90-a365-4782-871e-d44447bbc668$a0ca6a90-a365-4782-871e-d44447bbc668!share-id
2166+
x-ms-docs-key-type: item
2167+
- name: extensionName
2168+
in: path
2169+
description: "The unique name of the extension, using reverse DNS notation (e.g. com.example.myApp)"
2170+
required: true
2171+
schema:
2172+
type: string
2173+
example: com.example.project
2174+
responses:
2175+
"200":
2176+
description: Retrieved extension
2177+
content:
2178+
application/json:
2179+
schema:
2180+
$ref: '#/components/schemas/openTypeExtension'
2181+
examples:
2182+
get extension:
2183+
value:
2184+
extensionName: "com.example.project"
2185+
status: "reviewed"
2186+
assignee: "alice"
2187+
priority: 3
2188+
"404":
2189+
description: Extension not found
2190+
default:
2191+
$ref: '#/components/responses/error'
2192+
x-ms-docs-operation-type: operation
2193+
put:
2194+
tags:
2195+
- driveItem.extensions
2196+
summary: Create or update an extension
2197+
operationId: UpsertExtension
2198+
description: |
2199+
Create or update an open extension on the specified DriveItem.
2200+
2201+
If the extension does not exist, it is created. If it already exists, the provided properties
2202+
are merged with the existing data:
2203+
2204+
* Properties included in the request body are added or updated.
2205+
* Properties set to `null` are removed from the extension.
2206+
* Properties not included in the request body remain unchanged.
2207+
2208+
The extension name should follow reverse DNS naming conventions (e.g. `com.example.myApp`)
2209+
to avoid collisions between applications.
2210+
parameters:
2211+
- name: drive-id
2212+
in: path
2213+
description: "key: id of drive"
2214+
required: true
2215+
schema:
2216+
type: string
2217+
example: a0ca6a90-a365-4782-871e-d44447bbc668$a0ca6a90-a365-4782-871e-d44447bbc668
2218+
x-ms-docs-key-type: drive
2219+
- name: item-id
2220+
in: path
2221+
description: "key: id of item"
2222+
required: true
2223+
schema:
2224+
type: string
2225+
example: a0ca6a90-a365-4782-871e-d44447bbc668$a0ca6a90-a365-4782-871e-d44447bbc668!share-id
2226+
x-ms-docs-key-type: item
2227+
- name: extensionName
2228+
in: path
2229+
description: "The unique name of the extension, using reverse DNS notation (e.g. com.example.myApp)"
2230+
required: true
2231+
schema:
2232+
type: string
2233+
example: com.example.project
2234+
requestBody:
2235+
description: Extension properties to set. Use `null` values to remove individual properties.
2236+
required: true
2237+
content:
2238+
application/json:
2239+
schema:
2240+
$ref: '#/components/schemas/openTypeExtensionUpdate'
2241+
examples:
2242+
create extension:
2243+
value:
2244+
status: "reviewed"
2245+
assignee: "alice"
2246+
priority: 3
2247+
update single property:
2248+
value:
2249+
status: "approved"
2250+
remove a property:
2251+
value:
2252+
priority: null
2253+
responses:
2254+
"200":
2255+
description: Extension updated
2256+
content:
2257+
application/json:
2258+
schema:
2259+
$ref: '#/components/schemas/openTypeExtension'
2260+
"201":
2261+
description: Extension created
2262+
content:
2263+
application/json:
2264+
schema:
2265+
$ref: '#/components/schemas/openTypeExtension'
2266+
default:
2267+
$ref: '#/components/responses/error'
2268+
x-ms-docs-operation-type: operation
2269+
delete:
2270+
tags:
2271+
- driveItem.extensions
2272+
summary: Delete an extension
2273+
operationId: DeleteExtension
2274+
description: |
2275+
Delete an open extension from the specified DriveItem.
2276+
2277+
This removes the extension and all its properties.
2278+
parameters:
2279+
- name: drive-id
2280+
in: path
2281+
description: "key: id of drive"
2282+
required: true
2283+
schema:
2284+
type: string
2285+
example: a0ca6a90-a365-4782-871e-d44447bbc668$a0ca6a90-a365-4782-871e-d44447bbc668
2286+
x-ms-docs-key-type: drive
2287+
- name: item-id
2288+
in: path
2289+
description: "key: id of item"
2290+
required: true
2291+
schema:
2292+
type: string
2293+
example: a0ca6a90-a365-4782-871e-d44447bbc668$a0ca6a90-a365-4782-871e-d44447bbc668!share-id
2294+
x-ms-docs-key-type: item
2295+
- name: extensionName
2296+
in: path
2297+
description: "The unique name of the extension, using reverse DNS notation (e.g. com.example.myApp)"
2298+
required: true
2299+
schema:
2300+
type: string
2301+
example: com.example.project
2302+
responses:
2303+
"204":
2304+
description: Extension deleted
2305+
"404":
2306+
description: Extension not found
2307+
default:
2308+
$ref: '#/components/responses/error'
2309+
x-ms-docs-operation-type: operation
20892310
'/v1.0/drives/{drive-id}/root':
20902311
get:
20912312
tags:
@@ -4990,6 +5211,12 @@ components:
49905211
'@UI.Hidden':
49915212
description: Properties or facets (see UI.Facet) annotated with this term will not be rendered if the annotation evaluates to true. Users can set this to hide permissions.
49925213
type: boolean
5214+
extensions:
5215+
description: The collection of open extensions defined for this DriveItem. Nullable. Returned only on `$expand`.
5216+
type: array
5217+
items:
5218+
$ref: '#/components/schemas/openTypeExtension'
5219+
readOnly: true
49935220
sharingLinkType:
49945221
type: string
49955222
enum: [ internal, view, upload, edit, createOnly, blocksDownload ]
@@ -5556,6 +5783,40 @@ components:
55565783
password:
55575784
type: string
55585785
description: Password. It may require a password policy.
5786+
openTypeExtension:
5787+
type: object
5788+
description: |
5789+
Represents an open extension on a DriveItem, providing a flexible way to attach
5790+
untyped custom data to a resource.
5791+
5792+
Extensions are identified by their `extensionName`, which should follow reverse DNS
5793+
naming conventions (e.g. `com.example.myApp`) to avoid collisions between applications.
5794+
properties:
5795+
extensionName:
5796+
type: string
5797+
description: |
5798+
The unique identifier of the extension. Use reverse DNS naming conventions
5799+
(e.g. `com.example.myApp`).
5800+
readOnly: true
5801+
additionalProperties: true
5802+
example:
5803+
extensionName: "com.example.project"
5804+
status: "reviewed"
5805+
assignee: "alice"
5806+
priority: 3
5807+
openTypeExtensionUpdate:
5808+
type: object
5809+
description: |
5810+
Properties to set or remove on an open extension.
5811+
5812+
* Properties included in the request body are added or updated.
5813+
* Properties set to `null` are removed from the extension.
5814+
* Properties not included in the request body remain unchanged.
5815+
additionalProperties:
5816+
nullable: true
5817+
example:
5818+
status: "approved"
5819+
priority: null
55595820
audio:
55605821
type: object
55615822
description: |

0 commit comments

Comments
 (0)