UNPKG

openapi-directory

Version:

Building & bundling https://github.com/APIs-guru/openapi-directory for easy use from JS

1 lines 81.4 kB
{"openapi":"3.0.0","info":{"contact":{"email":"contact@ijenko.com","name":"IJENKO","url":"http://developers.ijenko.com/"},"title":"IoE² IoT API - to create end-user applications","version":"3.0.0","x-apisguru-categories":["iot"],"x-logo":{"backgroundColor":"#383D41","url":"https://pbs.twimg.com/profile_images/1706275304/_0_logo_carr__fd_gris_400x400.png"},"x-origin":[{"format":"swagger","url":"http://developers.ijenko.com/swagger.json","version":"2.0"}],"x-providerName":"ijenko.net"},"security":[{"Token_in_query":[]},{"Token_in_Access-Token_header":[]}],"tags":[{"name":"Entry points"},{"name":"Authentication"},{"name":"Account"},{"name":"User"},{"name":"Place"},{"name":"Device"},{"name":"Functionality"},{"name":"Action"},{"name":"Program"},{"name":"Notification"},{"name":"Electricity"}],"paths":{"/account/change-password":{"post":{"description":"Set a new password for the account.\n\n**Note**: requires full access to the *Account*.\n","operationId":"Account.changePassword","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AuthChangePassword"}}},"description":"Old and new password","required":true},"responses":{"204":{"description":"Change successful."},"403":{"$ref":"#/components/responses/ErrorAccessAccount"},"default":{"$ref":"#/components/responses/DefaultError"}},"summary":"Change the password","tags":["Account"]}},"/account/places":{"get":{"description":"List the *Places* of the account.\n\n**Note:** requires full access to the *Account*.\n","operationId":"Account.places","responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"items":{"$ref":"#/components/schemas/PlaceItem"},"type":"array","uniqueItems":true}}}},"403":{"$ref":"#/components/responses/ErrorAccessAccount"}},"summary":"List Places of the Account","tags":["Account"]},"parameters":[],"post":{"description":"Create a new *Place*.\n\nA *Device* (`class`: `MINT`, `address`: `0`) is automatically created and attached to the new *Place*.\n\n**Note:** requires full access to the *Account*.\n","operationId":"Account.newPlace","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PlaceNew"}}}},"responses":{"201":{"description":"*Place* successfully created.","headers":{"Location":{"description":"Path of the Place created (`/places/{id}`)","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PlaceCreated"}}}},"403":{"$ref":"#/components/responses/ErrorAccessAccount"},"default":{"$ref":"#/components/responses/DefaultError"}},"summary":"Create a Place","tags":["Account"]}},"/account/tokens":{"get":{"description":"List the active *Tokens* on the account.\n\n**Note:** requires full access to the *Account*.\n","operationId":"Account.tokens","responses":{"200":{"description":"Successful.","content":{"application/json":{"schema":{"items":{"$ref":"#/components/schemas/UserTokenItem"},"type":"array","uniqueItems":true}}}},"403":{"$ref":"#/components/responses/ErrorAccessAccount"},"default":{"$ref":"#/components/responses/DefaultError"}},"summary":"List active Tokens of the Account","tags":["Account"]},"parameters":[]},"/account/tokens/{tokenId}":{"delete":{"description":"Revoke the given *Token*.\n\n**Note:** requires full access to the *Account*.\n","operationId":"Account.revokeToken","responses":{"204":{"$ref":"#/components/responses/DeleteOK"},"403":{"$ref":"#/components/responses/ErrorAccessAccount"},"default":{"$ref":"#/components/responses/DefaultError"}},"summary":"Revoke a Token","tags":["Account"]},"parameters":[{"$ref":"#/components/parameters/tokenId"}]},"/account/users":{"get":{"description":"Get the list of *Users* of this *Account*.","operationId":"Account.users","parameters":[{"$ref":"#/components/parameters/embedMetadata"}],"responses":{"200":{"description":"Successful.","content":{"application/json":{"schema":{"items":{"$ref":"#/components/schemas/UserItem"},"type":"array","uniqueItems":true}}}}},"summary":"List Users of the Account","tags":["Account"]},"parameters":[],"post":{"description":"Add a *User*.\n\n**Note**: requires full access to the *Account*.\n","operationId":"Account.newUser","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UserNew"}}},"required":true},"responses":{"201":{"description":"*User* successfully created.","headers":{"Location":{"description":"Path of the User created","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UserCreated"}}}},"403":{"$ref":"#/components/responses/ErrorAccessAccount"},"default":{"$ref":"#/components/responses/DefaultError"}},"summary":"New User","tags":["Account"]}},"/account/users/{userId}":{"delete":{"description":"Delete a *User* from this *Account*, and revoke all his/her *Tokens*.\n\n**Note**: requires full access to the *Account*.\n","operationId":"Account.deleteUser","responses":{"204":{"$ref":"#/components/responses/DeleteOK"},"403":{"$ref":"#/components/responses/ErrorAccessAccount"},"default":{"$ref":"#/components/responses/DefaultError"}},"summary":"Delete a User","tags":["Account"]},"get":{"description":"Get information about a *User* in the same *Account*.","operationId":"Account.getUser","responses":{"200":{"description":"*User* information.\n","content":{"application/json":{"schema":{"$ref":"#/components/schemas/User"}}}},"default":{"$ref":"#/components/responses/DefaultError"}},"summary":"Information about a User","tags":["Account"]},"parameters":[{"$ref":"#/components/parameters/userId"}],"patch":{"description":"Modify a *User*.\n\n**Note**: requires full access to the *Account*.\n","operationId":"Account.patchUser","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UserPatch"}}},"required":true},"responses":{"204":{"$ref":"#/components/responses/PatchOK"},"304":{"$ref":"#/components/responses/PatchNotModified"},"403":{"$ref":"#/components/responses/ErrorAccessAccount"},"default":{"$ref":"#/components/responses/DefaultError"}},"summary":"Modify a User","tags":["Account"]}},"/account/users/{userId}/metadata":{"get":{"description":"Get the metadata.","operationId":"User.getMetadata","responses":{"200":{"description":"Successful.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Metadata"}}}},"default":{"$ref":"#/components/responses/DefaultError"}},"summary":"List metadata","tags":["Account"]},"parameters":[{"$ref":"#/components/parameters/userId"}],"patch":{"description":"Modify the metadata.\nKeys are limited to the same format as tags (up to 21 characters, [a-z0-9], starting with [a-z]). Values can be any JSON value.\n","operationId":"User.patchMetadata","requestBody":{"$ref":"#/components/requestBodies/MetadataPatch"},"responses":{"200":{"description":"Successful. The new metadata is returned.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Metadata"}}}},"304":{"$ref":"#/components/responses/PatchNotModified"},"403":{"$ref":"#/components/responses/ErrorAccessUser"},"default":{"$ref":"#/components/responses/DefaultError"}},"summary":"Modify metadata","tags":["Account"]}},"/auth/login":{"post":{"description":"Get an access+refresh tokens pair from login and password information.\n\nThe *access token* obtained with this request can then be used in\nan `Access-Token` HTTP header or in a `token` URL query parameter\nin requests that require authentication.\n\nThe *refresh token* can be used with `/auth/refresh` when the *access\ntoken* expires to retrieve a new *access token*. The lifetime of the\nrefresh token is the maximum lifetime of this authentication request.\n\nThe default lifetime of the *refresh token* is defined by the `appId`\nused. The `ttl` input parameter allows to request a *refresh token*\nwith a shorter lifetime.\n\nTo implement *logout*, use `/auth/revoke`.\n","operationId":"AuthAccountLogin","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AuthLogin"}}},"description":"Login information.","required":true},"responses":{"200":{"description":"Login successful. The access token is given to use the API. The refresh token must be stored in a safe place.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AuthTokens"}}}},"401":{"description":"Authentication failure.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DefaultError"}}}},"default":{"$ref":"#/components/responses/DefaultError"}},"security":[],"summary":"Get a token using login+password","tags":["Authentication","Entry points"]}},"/auth/refresh":{"post":{"description":"Get a new *access token* using a valid *refresh token*.\n\nThis is a **replacement** of the *access token*: if an existing *access\ntoken* was still not expired, it is invalidated.\n","operationId":"AuthRefreshToken","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AuthRefresh"}}},"description":"Refresh token information.","required":true},"responses":{"200":{"description":"Refresh successful. A new access token is given to use the API.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AuthTokens"}}}},"401":{"description":"Authentication failure.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DefaultError"}}}},"default":{"$ref":"#/components/responses/DefaultError"}},"security":[],"summary":"Refresh a token","tags":["Authentication"]}},"/auth/reset-password":{"post":{"description":"Trigger the request of a new password.\n\nThe account administrator will receive an e-mail with an URL pointing to a form\nto allow him/her to enter a new password.\nThe old password is still functional until a new one is submitted.\n\nEither the login or e-mail of the account must be given.\n","operationId":"AuthResetPassword","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AuthResetPassword"}}},"description":"Account identification information","required":true},"responses":{"204":{"description":"As this request is not authenticated, response is always successful to not reveal (in)existence of accounts."},"default":{"$ref":"#/components/responses/DefaultError"}},"security":[],"summary":"Ask for a new password","tags":["Authentication"]}},"/auth/revoke":{"post":{"description":"Invalidate the authentication used for the request. The access token and the refresh token will be invalid after this request.\nThis request is typically called to implement logout.\n","operationId":"AuthRevokeToken","responses":{"204":{"description":"Revocation successful. The token used for the request is now invalid."},"401":{"description":"Authentication failure.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DefaultError"}}}},"default":{"$ref":"#/components/responses/DefaultError"}},"summary":"Revoke a token","tags":["Authentication"]}},"/devices/{deviceId}":{"get":{"description":"Get information about a *Device*.","operationId":"Devices.get","responses":{"200":{"description":"Successful.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Device"}}}},"default":{"$ref":"#/components/responses/DefaultError"}},"summary":"Information about a Device","tags":["Device"]},"parameters":[{"$ref":"#/components/parameters/deviceId"}],"patch":{"description":"Modify information about a *Device*: its name.\n","operationId":"Devices.patch","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/DevicePatch"}}},"required":true},"responses":{"204":{"$ref":"#/components/responses/PatchOK"},"304":{"$ref":"#/components/responses/PatchNotModified"},"403":{"$ref":"#/components/responses/ErrorAccessDevice"},"default":{"$ref":"#/components/responses/DefaultError"}},"summary":"Update a Device","tags":["Device"]}},"/devices/{deviceId}/functionalities":{"post":{"description":"Add a *Functionality* to the device.\n\nRequired parameters are :\n- functionality class\n- endpoint\n\nEach device class has its own restrictions on which Functionality classes can be added and on which endpoints.\nOnly a few devices allow to add Functionalities.\n\n|Device class|Functionality class|Endpoints|\n|------------|-------------------|---------|\n|MINT |CurrentPeriod |1,2,3 |\n|MINT |ElectricityRates |1,2,3 |\n|MINT |GenericRate |1,2,3 |\n\n**Note**: requires full access to the *Account*.\n","operationId":"Device.addFunctionality","parameters":[{"$ref":"#/components/parameters/deviceId"}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/FunctionalityNew"}}},"required":true},"responses":{"201":{"description":"*Functionality* successfully created.","headers":{"Location":{"description":"Path of the Functionality created","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/FunctionalityCreated"}}}},"403":{"$ref":"#/components/responses/ErrorAccessDevice"},"default":{"$ref":"#/components/responses/DefaultError"}},"summary":"Add dynamically a functionality","tags":["Device","Functionality"]}},"/devices/{deviceId}/metadata":{"get":{"description":"Get the metadata.","operationId":"Device.getMetadata","responses":{"200":{"description":"Successful.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Metadata"}}}},"default":{"$ref":"#/components/responses/DefaultError"}},"summary":"List metadata","tags":["Device"]},"parameters":[{"$ref":"#/components/parameters/deviceId"}],"patch":{"description":"Modify the metadata.\nKeys are limited to the same format as tags (up to 21 characters, [a-z0-9], starting with [a-z]). Values can be any JSON value.\n","operationId":"Device.patchMetadata","requestBody":{"$ref":"#/components/requestBodies/MetadataPatch"},"responses":{"200":{"description":"Successful. The new metadata is returned.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Metadata"}}}},"304":{"$ref":"#/components/responses/PatchNotModified"},"403":{"$ref":"#/components/responses/ErrorAccessDevice"},"default":{"$ref":"#/components/responses/DefaultError"}},"summary":"Modify metadata","tags":["Device"]}},"/devices/{deviceId}/run/{action}":{"post":{"description":"Run an *Action* on zero, one or multiple Functionalities selected with tags.\n","operationId":"Device.run","parameters":[{"$ref":"#/components/parameters/deviceId"},{"$ref":"#/components/parameters/action"},{"$ref":"#/components/parameters/functionalitiesSelector.Req"}],"requestBody":{"$ref":"#/components/requestBodies/ActionArgs"},"responses":{"200":{"$ref":"#/components/responses/ActionMultiResultOK"},"450":{"$ref":"#/components/responses/ErrorGatewayUnreachable"},"default":{"$ref":"#/components/responses/DefaultError"}},"summary":"Run actions","tags":["Action"]}},"/devices/{deviceId}/tags":{"get":{"description":"Get the tags of a *Device*.","operationId":"Device.getTags","responses":{"200":{"description":"Successful.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Tags"}}}},"default":{"$ref":"#/components/responses/DefaultError"}},"summary":"List tags","tags":["Device"]},"parameters":[{"$ref":"#/components/parameters/deviceId"}],"patch":{"description":"Modify the tags of a *Device*.","operationId":"Device.patchTags","requestBody":{"$ref":"#/components/requestBodies/TagsPatch"},"responses":{"200":{"description":"Successful. The new list of tags is returned.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Tags"}}}},"304":{"$ref":"#/components/responses/PatchNotModified"},"403":{"$ref":"#/components/responses/ErrorAccessDevice"},"default":{"$ref":"#/components/responses/DefaultError"}},"summary":"Modify tags","tags":["Device"]}},"/functionalities/{functionalityId}":{"get":{"description":"Get the *Functionality*.","operationId":"Functionalities.get","responses":{"200":{"description":"Successful.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Functionality"}}}},"default":{"$ref":"#/components/responses/DefaultError"}},"summary":"Information about a Functionality","tags":["Functionality"]},"parameters":[{"$ref":"#/components/parameters/functionalityId"}],"patch":{"description":"Modify information about a *Functionality*: its name.\n","operationId":"Functionality.patch","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/FunctionalityPatch"}}},"required":true},"responses":{"204":{"$ref":"#/components/responses/PatchOK"},"304":{"$ref":"#/components/responses/PatchNotModified"},"403":{"$ref":"#/components/responses/ErrorAccessFunctionality"},"default":{"$ref":"#/components/responses/DefaultError"}},"summary":"Modify a Functionality","tags":["Functionality"]}},"/functionalities/{functionalityId}/attributes":{"get":{"description":"Get the values of multiple *Attributes* and their history.\n\nIf the `names` parameter is not given, all the attributes of the *Functionality*\nare returned. As the list may be huge, this must be avoided.\n\nIf the `to` parameter is set, `from` must also be set.\n\nIf `from` is not set, only the last value is returned.\n\nThe `surround` parameter allows to ask also for one value beyond each interval boundaries.\n\nThe request may fail if too many values are asked.\n","operationId":"Functionality.values","parameters":[{"$ref":"#/components/parameters/attributesNames"},{"$ref":"#/components/parameters/from.Opt"},{"$ref":"#/components/parameters/to"},{"description":"If true, return also one value before from and one value after to","in":"query","name":"surround","required":false,"schema":{"type":"boolean"}}],"responses":{"200":{"description":"Successful.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AttributesValues"}}}},"default":{"$ref":"#/components/responses/DefaultError"}},"summary":"Get history of multiple attributes","tags":["Functionality"]},"parameters":[{"$ref":"#/components/parameters/functionalityId"}]},"/functionalities/{functionalityId}/attributes/{attributeName}":{"get":{"description":"Get the *Attribute* value and the last time when it changed.","operationId":"Functionality.value","responses":{"200":{"description":"Successful.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AttributeValue"}}}},"204":{"description":"No value has yet been set on this attribute."},"default":{"$ref":"#/components/responses/DefaultError"}},"summary":"Get an Attribute value","tags":["Functionality"]},"parameters":[{"$ref":"#/components/parameters/functionalityId"},{"$ref":"#/components/parameters/attributeName"}],"put":{"description":"Modify the value of the *Attribute*.","operationId":"Functionality.set","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AnyJSON"}}},"description":"New value for the *Attribute*.","required":true},"responses":{"204":{"description":"Successful."},"405":{"$ref":"#/components/responses/ErrorWriteAttribute"},"default":{"$ref":"#/components/responses/DefaultError"}},"summary":"Modify an Attribute value","tags":["Functionality"]}},"/functionalities/{functionalityId}/metadata":{"get":{"description":"Get the metadata.","operationId":"Functionality.getMetadata","responses":{"200":{"description":"Successful.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Metadata"}}}},"default":{"$ref":"#/components/responses/DefaultError"}},"summary":"List metadata","tags":["Functionality"]},"parameters":[{"$ref":"#/components/parameters/functionalityId"}],"patch":{"description":"Modify the metadata.\nKeys are limited to the same format as tags (up to 21 characters, [a-z0-9], starting with [a-z]). Values can be any JSON value.\n","operationId":"Functionality.patchMetadata","requestBody":{"$ref":"#/components/requestBodies/MetadataPatch"},"responses":{"200":{"description":"Successful. The new metadata is returned.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Metadata"}}}},"304":{"$ref":"#/components/responses/PatchNotModified"},"403":{"$ref":"#/components/responses/ErrorAccessFunctionality"},"default":{"$ref":"#/components/responses/DefaultError"}},"summary":"Modify metadata","tags":["Functionality"]}},"/functionalities/{functionalityId}/run/{action}":{"post":{"description":"Run an action on the Functionality.\n","operationId":"Functionality.run","parameters":[{"$ref":"#/components/parameters/functionalityId"},{"$ref":"#/components/parameters/action"}],"requestBody":{"$ref":"#/components/requestBodies/ActionArgs"},"responses":{"200":{"description":"Successful.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ActionResult"}}}},"450":{"$ref":"#/components/responses/ErrorGatewayUnreachable"},"default":{"$ref":"#/components/responses/DefaultError"}},"summary":"Run an action","tags":["Action"]}},"/functionalities/{functionalityId}/tags":{"get":{"description":"Get the tags of a *Functionality*.","operationId":"Functionality.getTags","responses":{"200":{"description":"Successful.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Tags"}}}},"default":{"$ref":"#/components/responses/DefaultError"}},"summary":"List tags","tags":["Functionality"]},"parameters":[{"$ref":"#/components/parameters/functionalityId"}],"patch":{"description":"Modify the tags of a *Functionality*.","operationId":"Functionality.patchTags","requestBody":{"$ref":"#/components/requestBodies/TagsPatch"},"responses":{"200":{"description":"Successful. The new list of tags is returned.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Tags"}}}},"304":{"$ref":"#/components/responses/PatchNotModified"},"403":{"$ref":"#/components/responses/ErrorAccessFunctionality"},"default":{"$ref":"#/components/responses/DefaultError"}},"summary":"Modify tags","tags":["Functionality"]}},"/me":{"get":{"description":"Get information on the authenticated *User* who does the request.\n\nThe *login* property is returned only if the *User* is the administrator of\nthe *Account*.\n","operationId":"Me.get","responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/UserMe"}}}}},"summary":"Information about the User","tags":["Entry points"]},"patch":{"description":"Update *User* information (locale).\n","operationId":"Me.patch","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UserMePatch"}}},"description":"Updated user info.","required":true},"responses":{"204":{"$ref":"#/components/responses/PatchOK"},"304":{"$ref":"#/components/responses/PatchNotModified"},"default":{"$ref":"#/components/responses/DefaultError"}},"summary":"Update User information","tags":["Entry points"]}},"/notifications/{notificationId}":{"delete":{"description":"Delete a *Notification*.\n","operationId":"Notification.delete","responses":{"204":{"$ref":"#/components/responses/DeleteOK"},"403":{"$ref":"#/components/responses/ErrorAccessNotification"},"default":{"$ref":"#/components/responses/DefaultError"}},"summary":"Delete a Notification","tags":["Notification"]},"get":{"description":"Get information about a *Notification*.\n","operationId":"Notifications.get","responses":{"200":{"description":"Successful.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Notification"}}}},"403":{"$ref":"#/components/responses/ErrorAccessNotification"},"default":{"$ref":"#/components/responses/DefaultError"}},"summary":"Information about a Notification","tags":["Notification"]},"parameters":[{"$ref":"#/components/parameters/notificationId"}],"patch":{"description":"Modify a *Notification*.\n","operationId":"Notification.patch","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/NotificationPatch"}}},"required":true},"responses":{"204":{"$ref":"#/components/responses/PatchOK"},"304":{"$ref":"#/components/responses/PatchNotModified"},"403":{"$ref":"#/components/responses/ErrorAccessNotification"},"default":{"$ref":"#/components/responses/DefaultError"}},"summary":"Modify a Notification","tags":["Notification"]}},"/notifications/{notificationId}/metadata":{"get":{"description":"Get the metadata of the *Notification*.","operationId":"Notification.getMetadata","responses":{"200":{"description":"Successful.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Metadata"}}}},"default":{"$ref":"#/components/responses/DefaultError"}},"summary":"List metadata","tags":["Notification"]},"parameters":[{"$ref":"#/components/parameters/notificationId"}],"patch":{"description":"Modify the metadata of a *Notification*.\nKeys are limited to the same format as tags (up to 21 characters, [a-z0-9], starting with [a-z]). Values can be any JSON value.\n","operationId":"Notification.patchMetadata","requestBody":{"$ref":"#/components/requestBodies/MetadataPatch"},"responses":{"200":{"description":"Successful. The new metadata is returned.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Metadata"}}}},"304":{"$ref":"#/components/responses/PatchNotModified"},"403":{"$ref":"#/components/responses/ErrorAccessNotification"},"default":{"$ref":"#/components/responses/DefaultError"}},"summary":"Modify metadata of a Notification","tags":["Notification"]}},"/places":{"get":{"description":"List the *Places* to which the *Token* has access.","operationId":"Me.places","parameters":[{"$ref":"#/components/parameters/embedMetadata"}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"items":{"$ref":"#/components/schemas/PlaceItem"},"type":"array","uniqueItems":true}}}}},"summary":"List accessible Places","tags":["Entry points"]}},"/places/{placeId}":{"get":{"description":"Get information about a *Place*.","operationId":"Places.get","responses":{"200":{"description":"Successful response.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Place"}}}},"400":{"$ref":"#/components/responses/ErrorAccessPlace"}},"summary":"Information about a Place","tags":["Place"]},"parameters":[{"$ref":"#/components/parameters/placeId"}],"patch":{"description":"Change information about a *Place*.\n\n**Note**: requires full access to the *Account*.\n","operationId":"Place.patch","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PlacePatch"}}},"required":true},"responses":{"204":{"$ref":"#/components/responses/PatchOK"},"304":{"$ref":"#/components/responses/PatchNotModified"},"403":{"$ref":"#/components/responses/ErrorAccessAccount"},"default":{"$ref":"#/components/responses/DefaultError"}},"summary":"Update a Place","tags":["Place"]}},"/places/{placeId}/buses":{"get":{"description":"Get the list of *Buses* available on the gateway of this *Place*.\nIf `withPairing` is `true`, return only buses that allow device pairing (see `/places/{placeId}/buses/{busId}/pairing`).","operationId":"Place.buses","parameters":[{"description":"Filter out buses that have no pairing window","in":"query","name":"withPairing","required":false,"schema":{"type":"boolean","default":false}}],"responses":{"200":{"description":"Successful.","content":{"application/json":{"schema":{"items":{"$ref":"#/components/schemas/BusItem"},"type":"array","uniqueItems":true}}}},"403":{"$ref":"#/components/responses/ErrorAccessBus"}},"summary":"List Buses","tags":["Place"]},"parameters":[{"$ref":"#/components/parameters/placeId"}]},"/places/{placeId}/buses/{busId}/pairing":{"get":{"description":"Get the state of the pairing window of the *Bus*.\n\n**Note**: requires full access to the *Account*.\n","operationId":"Place.pairing","responses":{"200":{"description":"State information.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BusPairing"}}}},"403":{"$ref":"#/components/responses/ErrorAccessBus"}},"summary":"State of the pairing window","tags":["Place"]},"parameters":[{"$ref":"#/components/parameters/placeId"},{"$ref":"#/components/parameters/busId"}],"put":{"description":"Open/Close the pairing window.\n\n**Note**: requires full access to the *Account*.\n","operationId":"Place.openPairing","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/BusPairing"}}},"required":true},"responses":{"200":{"description":"State information.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BusPairing"}}}},"403":{"$ref":"#/components/responses/ErrorAccessBus"},"default":{"$ref":"#/components/responses/DefaultError"}},"summary":"Open/Close the pairing window","tags":["Place"]}},"/places/{placeId}/devices":{"get":{"description":"Get the list of *Devices* available in this *Place*.","operationId":"Place.devices","parameters":[{"$ref":"#/components/parameters/devicesSelector.Opt"},{"$ref":"#/components/parameters/embedMetadata"}],"responses":{"200":{"description":"Successful.","content":{"application/json":{"schema":{"items":{"$ref":"#/components/schemas/DeviceItem"},"type":"array","uniqueItems":true}}}},"default":{"$ref":"#/components/responses/DefaultError"}},"summary":"List of Devices","tags":["Device"]},"parameters":[{"$ref":"#/components/parameters/placeId"}]},"/places/{placeId}/electricity/autonomy":{"get":{"description":"Compute the autonomy rate of the *Place* on a time period.\n\n`autonomy = 1 - (elec_drawn / elec_total_usage)`\n","operationId":"Place.Electricity.autonomy","parameters":[{"$ref":"#/components/parameters/when.Req"},{"$ref":"#/components/parameters/span.Req"}],"responses":{"200":{"description":"Successful.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ElectricityAutonomy"}}}},"default":{"$ref":"#/components/responses/DefaultError"}},"summary":"Get autonomy rate of the place","tags":["Electricity"]},"parameters":[{"$ref":"#/components/parameters/placeId"}]},"/places/{placeId}/electricity/flows":{"get":{"description":"Get the mapping of virtual electricity flows to functionalities.\n\nSome rules are applied to expand the virtual flows using the concrete\nflows available.\n\nThe `factor` tells how each energy value coming from a functionality\nmust be added with values from other functionality to compute the\nenergy of the virtual flow. Factors are usually `1` or `-1`.\n\nThe `code` property gives the result which may be partial:\n- If all flows are available, `200000` is returned.\n- If no flows are available (indicating that the place has no\n electricity functionality or that no functionality has been attached\n to a flow), the `code` is `200001`. The `missing` property contains\n all the requested flows.\n- If some flows are missing, the `code` is `200002` and the `missing`\n property lists them.\n","operationId":"Place.Electricity.getFlows","parameters":[{"description":"Names of the flows requested","in":"query","name":"flows","required":true,"style":"form","explode":false,"schema":{"type":"array","items":{"enum":["battery_charge","battery_discharge","battery_grid","elec_total_gen","elec_total_usage","elec_feed_in","elec_drawn","elec_local","elec_from_household","elec_to_pv","elec_usage"],"type":"string"}}}],"responses":{"200":{"description":"Place is available. `code` gives the functional result.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ElectricityFlows"}}}},"default":{"$ref":"#/components/responses/DefaultError"}},"summary":"Get electricity virtual flows","tags":["Electricity"]},"parameters":[{"$ref":"#/components/parameters/placeId"}]},"/places/{placeId}/electricity/flows/setup":{"get":{"description":"Get the mapping of functionalities to electricity flows.\n\nA functionality is attached to *at most* one flow.\n","operationId":"Place.Electricity.getFlowsSetup","responses":{"200":{"description":"Successful.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ElectricityFlowsSetup"}}}},"default":{"$ref":"#/components/responses/DefaultError"}},"summary":"Get electricity flows setup","tags":["Electricity"]},"parameters":[{"$ref":"#/components/parameters/placeId"}]},"/places/{placeId}/electricity/self-consumption":{"get":{"description":"Compute the self-consumption rate of the *Place* on a time period.\n\n`selfConsumption = 1 - (elec_feed_in / elec_total_usage)`\n","operationId":"Place.Electricity.selfConsumption","parameters":[{"$ref":"#/components/parameters/when.Req"},{"$ref":"#/components/parameters/span.Req"}],"responses":{"200":{"description":"Successful.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ElectricitySelfConsumption"}}}},"default":{"$ref":"#/components/responses/DefaultError"}},"summary":"Get self-consumption rate of the place","tags":["Electricity"]},"parameters":[{"$ref":"#/components/parameters/placeId"}]},"/places/{placeId}/functionalities":{"get":{"description":"Get the list of *Functionalities* available in this *Place*.","operationId":"Place.functionalities","parameters":[{"$ref":"#/components/parameters/embedMetadata"}],"responses":{"200":{"description":"Successful.","content":{"application/json":{"schema":{"items":{"$ref":"#/components/schemas/FunctionalityItem"},"type":"array","uniqueItems":true}}}},"default":{"$ref":"#/components/responses/DefaultError"}},"summary":"List Functionalities","tags":["Functionality"]},"parameters":[{"$ref":"#/components/parameters/placeId"},{"$ref":"#/components/parameters/devicesSelector.Opt"},{"$ref":"#/components/parameters/functionalitiesSelector.Opt"}]},"/places/{placeId}/metadata":{"get":{"description":"Get the metadata.","operationId":"Place.getMetadata","responses":{"200":{"description":"Successful.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Metadata"}}}},"default":{"$ref":"#/components/responses/DefaultError"}},"summary":"List metadata","tags":["Place"]},"parameters":[{"$ref":"#/components/parameters/placeId"}],"patch":{"description":"Modify the metadata.\nKeys are limited to the same format as tags (up to 21 characters, [a-z0-9], starting with [a-z]). Values can be any JSON value.\n","operationId":"Place.patchMetadata","requestBody":{"$ref":"#/components/requestBodies/MetadataPatch"},"responses":{"200":{"description":"Successful. The new metadata is returned.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Metadata"}}}},"304":{"$ref":"#/components/responses/PatchNotModified"},"403":{"$ref":"#/components/responses/ErrorAccessPlace"},"default":{"$ref":"#/components/responses/DefaultError"}},"summary":"Modify metadata","tags":["Place"]}},"/places/{placeId}/notifications":{"get":{"description":"Get the list of *Notifications* available in this *Place*.","operationId":"Place.notifications","parameters":[{"$ref":"#/components/parameters/embedMetadata"}],"responses":{"200":{"description":"Successful.","content":{"application/json":{"schema":{"items":{"$ref":"#/components/schemas/NotificationItem"},"type":"array","uniqueItems":true}}}},"default":{"$ref":"#/components/responses/DefaultError"}},"summary":"List Notifications","tags":["Notification"]},"parameters":[{"$ref":"#/components/parameters/placeId"}],"post":{"description":"Create a new *Notification*.","operationId":"Place.newNotification","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/NotificationNew"}}},"required":true},"responses":{"201":{"description":"*Notification* successfully created.","headers":{"Location":{"description":"Path of the Notification created (`/notifications/{id}`)","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/NotificationCreated"}}}},"403":{"$ref":"#/components/responses/ErrorAccessPlace"},"default":{"$ref":"#/components/responses/DefaultError"}},"summary":"Create a Notification","tags":["Notification"]}},"/places/{placeId}/programs":{"get":{"description":"Get the list of *Programs* available in this *Place*.","operationId":"Place.programs","parameters":[{"$ref":"#/components/parameters/embedMetadata"}],"responses":{"200":{"description":"Successful.","content":{"application/json":{"schema":{"items":{"$ref":"#/components/schemas/ProgramItem"},"type":"array","uniqueItems":true}}}},"default":{"$ref":"#/components/responses/DefaultError"}},"summary":"List Programs","tags":["Program"]},"parameters":[{"$ref":"#/components/parameters/placeId"}],"post":{"description":"Create a new *Program*.\n\n**Note**: requires full access to the *Account*.\n","operationId":"Place.newProgram","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProgramNew"}}},"required":true},"responses":{"201":{"description":"*Program* successfully created.","headers":{"Location":{"description":"Path of the Program created (`/programs/{id}`)","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProgramCreated"}}}},"403":{"$ref":"#/components/responses/ErrorAccessPlace"},"default":{"$ref":"#/components/responses/DefaultError"}},"summary":"Create a Program","tags":["Program"]}},"/places/{placeId}/run/{action}":{"post":{"description":"Run an *Action* on zero, one or multiple *Functionalities* selected with tags.\n\n*Device* and *Functionality* selection are combined with « AND ».\n\nIf no functionality is matched by the device/functionality selection, an empty array is returned.\n","operationId":"Place.run","parameters":[{"$ref":"#/components/parameters/placeId"},{"$ref":"#/components/parameters/action"},{"$ref":"#/components/parameters/devicesSelector.Req"},{"$ref":"#/components/parameters/functionalitiesSelector.Req"}],"requestBody":{"$ref":"#/components/requestBodies/ActionArgs"},"responses":{"200":{"$ref":"#/components/responses/ActionMultiResultOK"},"450":{"$ref":"#/components/responses/ErrorGatewayUnreachable"},"default":{"$ref":"#/components/responses/DefaultError"}},"summary":"Run actions","tags":["Action"]}},"/programs/{programId}":{"delete":{"description":"Delete a *Program*.\n\n**Note**: requires full access to the *Account*.\n","operationId":"Program.delete","responses":{"204":{"$ref":"#/components/responses/DeleteOK"},"403":{"$ref":"#/components/responses/ErrorAccessProgram"},"default":{"$ref":"#/components/responses/DefaultError"}},"summary":"Delete a Program","tags":["Program"]},"get":{"description":"Get information about a *Program*.\n","operationId":"Programs.get","responses":{"200":{"description":"Successful.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Program"}}}},"403":{"$ref":"#/components/responses/ErrorAccessProgram"},"default":{"$ref":"#/components/responses/DefaultError"}},"summary":"Information about a Program","tags":["Program"]},"parameters":[{"$ref":"#/components/parameters/programId"}],"patch":{"description":"Modify a *Program*:\n- name\n- status (enabled/disabled)\n- code\n\n**Note**: requires full access to the *Account*.\n","operationId":"Program.patch","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProgramPatch"}}},"required":true},"responses":{"204":{"$ref":"#/components/responses/PatchOK"},"304":{"$ref":"#/components/responses/PatchNotModified"},"403":{"$ref":"#/components/responses/ErrorAccessProgram"},"default":{"$ref":"#/components/responses/DefaultError"}},"summary":"Modify a Program","tags":["Program"]}},"/programs/{programId}/log":{"get":{"description":"Get the execution history list of this *Program*.","operationId":"Program.log","parameters":[{"$ref":"#/components/parameters/from.Req"},{"$ref":"#/components/parameters/to"}],"responses":{"200":{"description":"Successful.","content":{"application/json":{"schema":{"items":{"$ref":"#/components/schemas/ProgramLog"},"type":"array","uniqueItems":true}}}},"403":{"$ref":"#/components/responses/ErrorAccessProgram"},"default":{"$ref":"#/components/responses/DefaultError"}},"summary":"History of executions of a Program","tags":["Program"]},"parameters":[{"$ref":"#/components/parameters/programId"}]},"/programs/{programId}/metadata":{"get":{"description":"Get the metadata of the *Program*.","operationId":"Program.getMetadata","responses":{"200":{"description":"Successful.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Metadata"}}}},"default":{"$ref":"#/components/responses/DefaultError"}},"summary":"List metadata","tags":["Program"]},"parameters":[{"$ref":"#/components/parameters/programId"}],"patch":{"description":"Modify the metadata of a *Program*.\nKeys are limited to the same format as tags (up to 21 characters, [a-z0-9], starting with [a-z]). Values can be any JSON value.\n","operationId":"Program.patchMetadata","requestBody":{"$ref":"#/components/requestBodies/MetadataPatch"},"responses":{"200":{"description":"Successful. The new metadata is returned.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Metadata"}}}},"304":{"$ref":"#/components/responses/PatchNotModified"},"403":{"$ref":"#/components/responses/ErrorAccessProgram"},"default":{"$ref":"#/components/responses/DefaultError"}},"summary":"Modify metadata of a Program","tags":["Program"]}},"/programs/{programId}/run":{"parameters":[{"$ref":"#/components/parameters/programId"}],"post":{"description":"Launch the *Program*.\nThe result will be available later in the run history.","operationId":"Program.run","responses":{"204":{"description":"*Program* successfully launched."},"403":{"$ref":"#/components/responses/ErrorAccessProgram"},"default":{"$ref":"#/components/responses/DefaultError"}},"summary":"Run the Program","tags":["Program"]}}},"servers":[{"url":"https://ioe2api.ijenko.net"}],"components":{"parameters":{"accountId":{"description":"Unique identifier of an *Account*.","in":"path","name":"accountId","required":true,"schema":{"type":"string"}},"action":{"description":"Identifier of an *Action* inside a *Functionality*.","in":"path","name":"action","required":true,"schema":{"type":"string"}},"attributeName":{"description":"Identifier of an *Attribute* inside a *Functionality*.","in":"path","name":"attributeName","required":true,"schema":{"type":"string"}},"attributesNames":{"description":"One or multiple *Attribute* names separated by commas","in":"query","name":"names","required":false,"style":"form","explode":false,"schema":{"type":"array","items":{"type":"string"}}},"busId":{"description":"Unique identifier of a *Bus*.","in":"path","name":"busId","required":true,"schema":{"type":"string"}},"deviceId":{"description":"Unique identifier of a *Device*.","in":"path","name":"deviceId","required":true,"schema":{"type":"string"}},"devicesSelector.Opt":{"description":"Devices selector. Device tags or device classes or device ids or '*' for any. Multiple values are separated by '|' and interpreted as « OR ».","in":"query","name":"devices","required":false,"schema":{"type":"string","pattern":"^(?:\\\\*|(?:[A-Z][A-Z0-9]{3}|[a-z][a-z0-9_:]{0,20}|[A-Za-z0-9-_]{22})(?:\\\\|(?:[A-Z][A-Z0-9]{3}|[a-z][a-z0-9_:]{0,20}|[A-Za-z0-9-_]{22}))*)$"}},"devicesSelector.Req":{"description":"Devices selector. Device tags or device classes or device ids or '*' for any. Multiple values are separated by '|' and interpreted as « OR ».","in":"query","name":"devices","required":true,"schema":{"type":"string","pattern":"^(?:\\\\*|(?:[A-Z][A-Z0-9]{3}|[a-z][a-z0-9_:]{0,20}|[A-Za-z0-9-_]{22})(?:\\\\|(?:[A-Z][A-Z0-9]{3}|[a-z][a-z0-9_:]{0,20}|[A-Za-z0-9-_]{22}))*)$"}},"embedMetadata":{"description":"Request to include the given keys of metadata in the response. If a key doesn't exist on the resource it is ignored.\n**Note:** This only applies to the top level resources.\n","in":"query","name":"embed-metadata","required":false,"style":"form","explode":false,"schema":{"type":"array","items":{"type":"string"}}},"from.Opt":{"description":"Beginning of the time interval.","in":"query","name":"from","required":false,"schema":{"type":"string","format":"date-time"}},"from.Req":{"description":"Beginning of the time interval.","in":"query","name":"from","required":true,"schema":{"type":"string","format":"date-time"}},"functionalitiesSelector.Opt":{"description":"Functionality selector: Functionality tags or functionality class (optionally, '@' followed by a endpoint in decimal) or '*' for all. Multiple values are separated by '|' and are interpreted as « OR ».\n","in":"query","name":"functionalities","required":false,"schema":{"type":"string","pattern":"^(?:\\\\*|(?:[A-Z][A-Za-z0-9]+(?:@(?:0|1[0-9]{,2}|[3-9][0-9]?|2(?:[0-4][0-9]?|5[0-5]?|[6-9])?))?|[a-z][a-z0-9_:]{0,20}|[A-Za-z0-9-_]{22})(?:\\\\|(?:[A-Z][A-Za-z0-9]+(?:@(?:0|1[0-9]{,2}|[3-9][0-9]?|2(?:[0-4][0-9]?|5[0-5]?|[6-9])?))?|[a-z][a-z0-9_:]{0,20}|[A-Za-z0-9-_]{22}))*)$"}},"functionalitiesSelector.Req":{"description":"Functionality selector: Functionality tags or functionality class (optionally, '@' followed by a endpoint in decimal) or '*' for all. Multiple values are separated by '|' and are interpreted as « OR ».\n","in":"query","name":"functionalities","required":true,"schema":{"type":"string","pattern":"^(?:\\\\*|(?:[A-Z][A-Za-z0-9]+(?:@(?:0|1[0-9]{,2}|[3-9][0-9]?|2(?:[0-4][0-9]?|5[0-5]?|[6-9])?))?|[a-z][a-z0-9_:]{0,20}|[A-Za-z0-9-_]{22})(?:\\\\|(?:[A-Z][A-Za-z0-9]+(?:@(?:0|1[0-9]{,2}|[3-9][0-9]?|2(?:[0-4][0-9]?|5[0-5]?|[6-9])?))?|[a-z][a-z0-9_:]{0,20}|[A-Za-z0-9-_]{22}))*)$"}},"functionalityId":{"description":"Unique identifier of a *Functionality*.","in":"path","name":"functionalityId","required":true,"schema":{"type":"string"}},"notificationId":{"description":"Unique identifier of a *Notification*.","in":"path","name":"notificationId","required":true,"schema":{"type":"string"}},"placeId":{"description":"Unique identifier of a *Place*.","in":"path","name":"placeId","required":true,"schema":{"type":"string"}},"programId":{"description":"Unique identifier of a *Program*.","in":"path","name":"programId","required":true,"schema":{"type":"string"}},"span.Req":{"description":"Timespan: H (hour), D (day), Wmo (week starting on Monday), Wsu (week starting on Sunday), M (month), Y (year)","in":"query","name":"span","required":true,"schema":{"type":"string","enum":["H","D","Wmo","Wsu","M","Y"]}},"to":{"description":"End of the interval. Default: now.\n","in":"query","name":"to","required":false,"schema":{"type":"string","format":"date-time"}},"tokenId":{"description":"Identifier of the token","in":"path","name":"tokenId","required":true,"schema":{"type":"string"}},"userId":{"description":"Unique identifier of a *User*.","in":"path","name":"userId","required":true,"schema":{"type":"string"}},"when.Req":{"description":"A time part of the time span.","in":"query","name":"when","required":true,"schema":{"type":"string","format":"date-time"}}},"responses":{"ActionMultiResultOK":{"description":"Successful.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ActionMultiResult"}}}},"DefaultError":{"description":"Other error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DefaultError"}}}},"DeleteOK":{"description":"Resource successfully deleted."},"ErrorAccessAccount":{"description":"The authentication token doesn't allow to modify the *Account*.\n","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEntity"}}}},"ErrorAccessBus":{"description":"*Bus* doesn't exist or the requester doesn't have appropriate access to the *Place*.\n","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorSubEntity"}}}},"ErrorAccessDevice":{"description":"*Device* doesn't exist or the requester doesn't have appropriate access to the *Place*.\n","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEntity"}}}},"ErrorAccessFunctionality":{"description":"*Functionality* doesn't exist or the requester doesn't have appropriate access to the *Place*.\n","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEntity"}}}},"ErrorAccessNotification":{"description":"*Notification* doesn't exist or the requester doesn't have appropriate access to the *Place*.\n","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEntity"}}}},"ErrorAccessPlace":{"description":"*Place* doesn't exist or the requester doesn't have access.\n","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEntity"}}}},"ErrorAccessProgram":{"description":"*Program* doesn't exist or the requester doesn't have appropriate access to the *Place*.\n","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEntity"}}}},"ErrorAccessUser":{"description":"*User* doesn't exist in this *Account* or the requester doesn't have access to a *Place* on which this *User* has access.\n","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEntity"}}}},"ErrorGatewayUnreachable":{"description":"The gateway of the Place is not reachable.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorGatewayUnreachable"}}}},"ErrorWriteAttribute":{"description":"*Attribute* is not writable.\n","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorSubEntity"}}}},"PatchNotModified":{"description":"Successful, but nothing changed."},"PatchOK":{"description":"Modification successful."}},"requestBodies":{"ActionArgs":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ActionArgs"}}},"required":true},"MetadataPatch":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/MetadataPatch"}}},"description":"Modifications to apply to the metadata of the resource.\n","required":true},"TagsPatch":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/TagsPatch"}}},"description":"Modifications to apply to the tags list of the resource.\n","required":true}},"securitySchemes":{"Token_in_Access-Token_header":{"description":"Token in Access-Token header","in":"header","name":"Access-Token","type":"apiKey"},"Token_in_query":{"description":"Token in query","in":"query","name":"token","type":"apiKey"}},"schemas":{"AccountId":{"description":"Unique identifier of the *Account*","example":"t1hqYcQITCFX-AObjs_t4Q","maxLength":22,"minLength":22,"pattern":"^[A-Za-z0-9-_]{22}