Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revision Previous revision
indigo_2023.2_documentation:api [2024/12/20 16:25] – [Authentication] davel17indigo_2023.2_documentation:api [2025/02/18 20:36] (current) – external edit 127.0.0.1
Line 16: Line 16:
 A quick note on versioning: all APIs will be versioned under the following scheme: A quick note on versioning: all APIs will be versioned under the following scheme:
  
-  * ''%%/v2/%%'' - this is the top level version number and will change as necessary+  * ''<nowiki>/v2/</nowiki>'' - this is the top level version number and will change as necessary
  
 ==== Python vs JavaScript ==== ==== Python vs JavaScript ====
Line 32: Line 32:
  
  
-Python developers will notice the use of ''%%null%%'' in the message descriptions. This corresponds to the Python ''%%None%%'' object. Also of note are the booleans ''%%true%%'' and ''%%false%%'', which are capitalized in Python but not in JSON. Here’s a handy cheat sheet:+Python developers will notice the use of ''null'' in the message descriptions. This corresponds to the Python ''None'' object. Also of note are the booleans ''true'' and ''false'', which are capitalized in Python but not in JSON. Here’s a handy cheat sheet:
  
 ^Python^JSON Equivalent^ ^Python^JSON Equivalent^
Line 52: Line 52:
 There are 5 WebSocket feeds that that are available in this release: There are 5 WebSocket feeds that that are available in this release:
  
-  * ''%%/v2/api/ws/device-feed%%'' - WebSocket to do all communication about devices +  * ''<nowiki>/v2/api/ws/device-feed</nowiki>'' - WebSocket to do all communication about devices 
-  * ''%%/v2/api/ws/variable-feed%%'' - WebSocket to do all communication about variables +  * ''<nowiki>/v2/api/ws/variable-feed</nowiki>'' - WebSocket to do all communication about variables 
-  * ''%%/v2/api/ws/action-feed%%'' - WebSocket to do all communication about action groups +  * ''<nowiki>/v2/api/ws/action-feed</nowiki>'' - WebSocket to do all communication about action groups 
-  * ''%%/v2/api/ws/page-feed%%'' - WebSocket to do all communication about control pages +  * ''<nowiki>/v2/api/ws/page-feed</nowiki>'' - WebSocket to do all communication about control pages 
-  * ''%%/v2/api/ws/log-feed%%'' - WebSocket to do all communication about logs+  * ''<nowiki>/v2/api/ws/log-feed</nowiki>'' - WebSocket to do all communication about logs
  
 Each feed (except log feed) sends the following server messages: Each feed (except log feed) sends the following server messages:
Line 87: Line 87:
 ''//<nowiki>wss://YOUR-REFLECTOR-NAME.indigodomo.net/v2/api/ws/device-feed?api-key=YOUR-API-KEY</nowiki>//'' ''//<nowiki>wss://YOUR-REFLECTOR-NAME.indigodomo.net/v2/api/ws/device-feed?api-key=YOUR-API-KEY</nowiki>//''
  
-Note the protocol: ''**wss**''. WebSockets actually begin their life as HTTP/HTTPS connections, which the WebSocket client then requests the server to upgrade to a WebSocket. In this respect, you can think of WSS as HTTPS (protected) and WS as HTTP (unprotected). When using WSS, such as when you are using your Indigo Reflector, then your API Key (in both instances) is protected by the TLS security used by the HTTPS protocol. You may use the API locally (or thorough your own router port forwarding), but those connections will be WS and **will not be secure**. It is highly recommended that you always use your Indigo Reflector because it provides a very simple and **secure** solution for accessing your system. +Note the protocol: ''**wss**''. WebSockets actually begin their life as HTTP/HTTPS connections, which the WebSocket client then requests the server to upgrade to a WebSocket. In this respect, you can think of WSS as HTTPS (protected) and WS as HTTP (unprotected). When using WSS, such as when you are using your Indigo Reflector, then your API Key (in both instances) is protected by the TLS security used by the HTTPS protocol. You may use the API locally (or thorough your own router port forwarding), but those connections will be WS and **will not be secure**. It is highly recommended that you always use your Indigo Reflector because it provides a very simple and **secure** solution for accessing your system.
  
-<color red>**IMPORTANT!** In order to use API Key authentication, you MUST have enabled //''Enable OAuth and API Key authentication''// in the Indigo [[https://www.indigodomo.com/docs/getting_started#starting_indigo_server|"Start Local Server"]] dialog box. Don't share your API keys with anyone who isnot authorized to use them — especially in posts to the Indigo user forums. Note that disabling this feature disables both API Keys and secrets.</color>+<color red>**IMPORTANT!** In order to use API Key authentication, you MUST have enabled //''Enable OAuth and API Key authentication''// in the Indigo [[https://www.indigodomo.com/docs/getting_started#starting_indigo_server|"Start Local Server"]] dialog box. Don't share your API keys with anyone who is not authorized to use them — especially in posts to the Indigo user forums. Note that disabling this feature disables both API Keys and secrets.</color>
  
 ==== Examples ==== ==== Examples ====
Line 231: Line 231:
 Here are the URLs you will use to connect to this feed. Here are the URLs you will use to connect to this feed.
  
-''%%ws://localhost:8176/v2/api/ws/device-feed%%''+''<nowiki>ws://localhost:8176/v2/api/ws/device-feed</nowiki>''
  
-''%%wss://YOUR-REFLECTOR-NAME.indigodomo.net/v2/api/ws/device-feed%%''+''<nowiki>wss://YOUR-REFLECTOR-NAME.indigodomo.net/v2/api/ws/device-feed</nowiki>''
  
 === Device messages from the server === === Device messages from the server ===
Line 372: Line 372:
 }</code> }</code>
  
-Patch objects are created via the [[https://dictdiffer.readthedocs.io/en/latest/|dictdiffer python module]], by comparing the device dictionary (''%%dict(some_device)%%'') for the old device with the one for the new dictionary as they are received in the ''%%device_updated()%%'' plugin method call. We've implemented a JavaScript library, [[https://github.com/IndigoDomotics/dictdiffer-js|dictdiffer-js]], to patch JavaScript objects given the patch object created by the dictdiffer Python library. You can use it in your projects if you like.+Patch objects are created via the [[https://dictdiffer.readthedocs.io/en/latest/|dictdiffer python module]], by comparing the device dictionary (''dict(some_device)'') for the old device with the one for the new dictionary as they are received in the ''device_updated()'' plugin method call. We've implemented a JavaScript library, [[https://github.com/IndigoDomotics/dictdiffer-js|dictdiffer-js]], to patch JavaScript objects given the patch object created by the dictdiffer Python library. You can use it in your projects if you like.
  
 == device refresh messages == == device refresh messages ==
Line 450: Line 450:
 Here are the URLs you will use to connect to this feed. Here are the URLs you will use to connect to this feed.
  
-''%%ws://localhost:8176/v2/api/ws/variable-feed%%''+''<nowiki>ws://localhost:8176/v2/api/ws/variable-feed</nowiki>''
  
-''%%wss://YOUR-REFLECTOR-NAME.indigodomo.net/v2/api/ws/variable-feed%%''+''<nowiki>wss://YOUR-REFLECTOR-NAME.indigodomo.net/v2/api/ws/variable-feed</nowiki>''
  
 === Variable messages from the server === === Variable messages from the server ===
Line 501: Line 501:
 </code> </code>
  
-Variable patch objects are created via the [[https://dictdiffer.readthedocs.io/en/latest/|dictdiffer python module]] by comparing the variable dictionary (''%%dict(some_variable)%%'') for the old variable with the one for the new dictionary as they are received in the ''%%variable_updated()%%'' Plugin method call.+Variable patch objects are created via the [[https://dictdiffer.readthedocs.io/en/latest/|dictdiffer python module]] by comparing the variable dictionary (''dict(some_variable)'') for the old variable with the one for the new dictionary as they are received in the ''variable_updated()'' Plugin method call.
  
 == delete variable message == == delete variable message ==
Line 565: Line 565:
 Here are the URLs you will use to connect to this feed. Here are the URLs you will use to connect to this feed.
  
-''%%ws://localhost:8176/v2/api/ws/action-feed%%''+''<nowiki>ws://localhost:8176/v2/api/ws/action-feed</nowiki>''
  
-''%%wss://YOUR-REFLECTOR-NAME.indigodomo.net/v2/api/ws/action-feed%%''+''<nowiki>wss://YOUR-REFLECTOR-NAME.indigodomo.net/v2/api/ws/action-feed</nowiki>''
  
 === Action Group messages from the server === === Action Group messages from the server ===
Line 622: Line 622:
 </code> </code>
  
-Action group patch objects are created via the [[https://dictdiffer.readthedocs.io/en/latest/|dictdiffer python module]], by comparing the action dictionary (''%%dict(some_action_group)%%'') for the old action with the one for the new dictionary as they are received in the ''%%action_group_updated()%%'' Plugin method call.+Action group patch objects are created via the [[https://dictdiffer.readthedocs.io/en/latest/|dictdiffer python module]], by comparing the action dictionary (''dict(some_action_group)'') for the old action with the one for the new dictionary as they are received in the ''action_group_updated()'' Plugin method call.
  
 == delete action group message == == delete action group message ==
Line 681: Line 681:
 Here are the URLs you will use to connect to this feed. Here are the URLs you will use to connect to this feed.
  
-''%%ws://localhost:8176/v2/api/ws/page-feed%%''+''<nowiki>ws://localhost:8176/v2/api/ws/page-feed</nowiki>''
  
-''%%wss://YOUR-REFLECTOR-NAME.indigodomo.net/v2/api/ws/page-feed%%''+''<nowiki>wss://YOUR-REFLECTOR-NAME.indigodomo.net/v2/api/ws/page-feed</nowiki>''
  
 === Control Page messages from the server === === Control Page messages from the server ===
Line 732: Line 732:
 </code> </code>
  
-Page patch objects are created via the [[https://dictdiffer.readthedocs.io/en/latest/|dictdiffer python module]], by comparing the device dictionary (''%%dict(some_page)%%'') for the old page with the one for the new dictionary as they are received in the ''%%control_page_updated()%%'' Plugin method call.+Page patch objects are created via the [[https://dictdiffer.readthedocs.io/en/latest/|dictdiffer python module]], by comparing the device dictionary (''dict(some_page)'') for the old page with the one for the new dictionary as they are received in the ''control_page_updated()'' Plugin method call.
  
 == delete control page message == == delete control page message ==
Line 786: Line 786:
 ==== Log Feed ==== ==== Log Feed ====
  
-Use this feed to catch all log messages as they happen in the Indigo Server. When you first open the log-feed WebSocket, you will receive the last 25 log messages from the server **//in chronological order//**. After that, the messages come through the socket as they are generated (chronological order). See the [[#Log Messages]] section below for a description of a log message object. +Use this feed to catch all log messages as they happen in the Indigo Server. When you first open the log-feed WebSocket, you will receive the last 25 log messages from the server **//in chronological order//**. After that, the messages come through the socket as they are generated (chronological order). See the [[#Log Messages]] section below for a description of a log message object.
  
 Here are the URLs you will use to connect to this feed: Here are the URLs you will use to connect to this feed:
Line 819: Line 819:
 The following is a summary of endpoints (URLs that you will need to use the API) that are available in this release (detail on each is further down): The following is a summary of endpoints (URLs that you will need to use the API) that are available in this release (detail on each is further down):
  
-  * ''%%/v2/api/indigo.devices%%'' - endpoint to get a list of devices +  * ''<nowiki>/v2/api/indigo.devices</nowiki>'' - endpoint to get a list of devices 
-  * ''%%/v2/api/indigo.devices/123456789%%'' - endpoint to get a specific device instance (See [[api#device_objects|Device Objects]] below) +  * ''<nowiki>/v2/api/indigo.devices/123456789</nowiki>'' - endpoint to get a specific device instance (See [[api#device_objects|Device Objects]] below) 
-  * ''%%/v2/api/indigo.variables%%'' - endpoint to get a list of variables +  * ''<nowiki>/v2/api/indigo.variables</nowiki>'' - endpoint to get a list of variables 
-  * ''%%/v2/api/indigo.variables/123456789%%'' - endpoint to specific variable object  (See [[api#variable_objects|Variable Objects]] below) +  * ''<nowiki>/v2/api/indigo.variables/123456789</nowiki>'' - endpoint to specific variable object  (See [[api#variable_objects|Variable Objects]] below) 
-  * ''%%/v2/api/indigo.actionGroups%%'' - endpoint to get a list of action groups +  * ''<nowiki>/v2/api/indigo.actionGroups</nowiki>'' - endpoint to get a list of action groups 
-  * ''%%/v2/api/indigo.actionGroups/123456789%%'' - endpoint to get a specific action group (See [[api#action_group_objects|Action Group Objects]] below) +  * ''<nowiki>/v2/api/indigo.actionGroups/123456789</nowiki>'' - endpoint to get a specific action group (See [[api#action_group_objects|Action Group Objects]] below) 
-  * ''%%/v2/api/command%%'' - endpoint to send Indigo a command (device control, variable update, action execution).+  * ''<nowiki>/v2/api/command</nowiki>'' - endpoint to send Indigo a command (device control, variable update, action execution).
  
 You’ll receive full JSON objects which represent either a list of all instances of the object type requested (for example, a list of all action groups) or an individual Indigo object instance (a single device, variable, etc.) Each individual object will be different based on the object type, class and its definition (a custom device, for example). See the [[https://www.indigodomo.com/docs/object_model_reference | Indigo Object Model]] docs for details about each object type. You’ll receive full JSON objects which represent either a list of all instances of the object type requested (for example, a list of all action groups) or an individual Indigo object instance (a single device, variable, etc.) Each individual object will be different based on the object type, class and its definition (a custom device, for example). See the [[https://www.indigodomo.com/docs/object_model_reference | Indigo Object Model]] docs for details about each object type.
Line 836: Line 836:
 The best way to use an API Key is to include it in an **Authorization** header on your HTTP request. All the examples below show this approach. If you are using a system which does not allow you to set headers for your HTTP request, you can include the API Key as a query argument with the URL: The best way to use an API Key is to include it in an **Authorization** header on your HTTP request. All the examples below show this approach. If you are using a system which does not allow you to set headers for your HTTP request, you can include the API Key as a query argument with the URL:
  
-''%%https://YOUR-REFLECTOR-NAME.indigodomo.net/v2/api/indigo.devices/123456789?api-key=YOUR-API-KEY%%''+''<nowiki>https://YOUR-REFLECTOR-NAME.indigodomo.net/v2/api/indigo.devices/123456789?api-key=YOUR-API-KEY</nowiki>''
  
 When using HTTPS, such as when you are using your Indigo Reflector, then your API Key (in both instances) is protected by the TLS security used by the HTTPS protocol. You may use the API locally (or thorough your own router port forwarding), but those connections will be HTTP and **will not be secure**. It is highly recommended that you always use your Indigo Reflector because it provides a very simple and **secure** solution for accessing your system. <color red>IMPORTANT! Don't share your API keys with anyone who is not authorized to use them — especially in posts to the user forums.</color> When using HTTPS, such as when you are using your Indigo Reflector, then your API Key (in both instances) is protected by the TLS security used by the HTTPS protocol. You may use the API locally (or thorough your own router port forwarding), but those connections will be HTTP and **will not be secure**. It is highly recommended that you always use your Indigo Reflector because it provides a very simple and **secure** solution for accessing your system. <color red>IMPORTANT! Don't share your API keys with anyone who is not authorized to use them — especially in posts to the user forums.</color>
Line 848: Line 848:
 [[api#device_objects|Device Objects]] are JSON representations of an Indigo device instance. This JSON object will contain all information about the object, which you can use in your solutions. By using the endpoint without specifying a specific device id, you can get the complete list of all devices in your Indigo database: [[api#device_objects|Device Objects]] are JSON representations of an Indigo device instance. This JSON object will contain all information about the object, which you can use in your solutions. By using the endpoint without specifying a specific device id, you can get the complete list of all devices in your Indigo database:
  
-''%%/v2/api/indigo.devices%%''+''<nowiki>/v2/api/indigo.devices</nowiki>''
  
 Here are some examples in different languages/technologies that illustrate how to get all devices. Here are some examples in different languages/technologies that illustrate how to get all devices.
Line 1184: Line 1184:
 [[api#variable_objects|Variable Objects]] are JSON representations of an Indigo variable instance. This JSON object will contain all information about the object, which you can use in your solutions. By using the endpoint without specifying a specific variable id, you can get the complete list of all variables in your Indigo database: [[api#variable_objects|Variable Objects]] are JSON representations of an Indigo variable instance. This JSON object will contain all information about the object, which you can use in your solutions. By using the endpoint without specifying a specific variable id, you can get the complete list of all variables in your Indigo database:
  
-''%%/v2/api/indigo.variables%%''+''<nowiki>/v2/api/indigo.variables</nowiki>''
  
 Here are some examples in different languages/technologies that illustrate how to get all variables. Here are some examples in different languages/technologies that illustrate how to get all variables.
Line 1429: Line 1429:
 [[api#action_group_objects|Action Group Objects]] are JSON representations of an Indigo action group instance. This JSON object will contain all information about the object, which you can use in your solutions. By using the endpoint without specifying a specific action group id, you can get the complete list of all action groups in your Indigo database: [[api#action_group_objects|Action Group Objects]] are JSON representations of an Indigo action group instance. This JSON object will contain all information about the object, which you can use in your solutions. By using the endpoint without specifying a specific action group id, you can get the complete list of all action groups in your Indigo database:
  
-''%%/v2/api/indigo.actionGroups%%''+''<nowiki>/v2/api/indigo.actionGroups</nowiki>''
  
 Here are some examples in different languages/technologies that illustrate how to get all action groups. Here are some examples in different languages/technologies that illustrate how to get all action groups.
Line 1685: Line 1685:
 Message that contain device objects generate those objects by first converting the device to a python dictionary and then converting the python dictionary to JSON. See the [[device_class#generating_a_dictionary_for_a_device |Generating a Dictionary for a device]] section of the IOM Reference for details. Message that contain device objects generate those objects by first converting the device to a python dictionary and then converting the python dictionary to JSON. See the [[device_class#generating_a_dictionary_for_a_device |Generating a Dictionary for a device]] section of the IOM Reference for details.
  
-<html><span style="color#3B6C35; background: rgba(92, 142, 55, .4); border: #5C8E37 solid 1px; border-radius: 4px; display: inline-block; width: 80px; text-align: center;">HTTP</span></html> The ''**folder**'' element is only available in the HTTP API. Folders are handled differently in the WebSocket API.+<color red>Note:</color>The ''**folder**'' element is only available in the HTTP API. Folders are handled differently in the WebSocket API.
  
 === Device Command Messages === === Device Command Messages ===
Line 1709: Line 1709:
 **Note:** This message will work on any Indigo device type, though the device that it targets may not respond to status request messages in which case it will do nothing. **Note:** This message will work on any Indigo device type, though the device that it targets may not respond to status request messages in which case it will do nothing.
  
-<html><span style="color: #4F00B7; background: #bcb8e0; border: #9542FF solid 1px; border-radius: 4px; display: inline-block; width: 80px; text-align: center;">WebSocket</span></html> This won't necessarily cause a device update message - if the device didn't have any changes after the status request, there will be no updates to the device in the server, so no update message will be sent out the websocket.+This won't necessarily cause a device update message - if the device didn't have any changes after the status request, there will be no updates to the device in the server, so no update message will be sent out the websocket.
  
 **toggle** ''[[device_class#toggle|indigo.device.toggle(123456789, delay=5, duration=10)]]'' **toggle** ''[[device_class#toggle|indigo.device.toggle(123456789, delay=5, duration=10)]]''
Line 2214: Line 2214:
 Messages that contain variable objects generate those objects by first converting the variable to a python dictionary and then converting the python dictionary to JSON. See the [[variable_class#generating_a_dictionary_for_a_variable |Generating a Dictionary for a variable]] section of the IOM Reference for details. Messages that contain variable objects generate those objects by first converting the variable to a python dictionary and then converting the python dictionary to JSON. See the [[variable_class#generating_a_dictionary_for_a_variable |Generating a Dictionary for a variable]] section of the IOM Reference for details.
  
-<html><span style="color#3B6C35; background: rgba(92, 142, 55, .4); border: #5C8E37 solid 1px; border-radius: 4px; display: inline-block; width: 80px; text-align: center;">HTTP</span></html> The ''**folder**'' element is only available in the HTTP API. Folders are handled differently in the WebSocket API.+<color red>Note:</color> The ''**folder**'' element is only available in the HTTP API. Folders are handled differently in the WebSocket API.
  
 === Variable Command Messages === === Variable Command Messages ===
Line 2271: Line 2271:
 </code> </code>
  
-<html><span style="color#3B6C35; background: rgba(92, 142, 55, .4); border: #5C8E37 solid 1px; border-radius: 4px; display: inline-block; width: 80px; text-align: center;">HTTP</span></html> The ''**folder**'' element is only available in the HTTP API. Folders are handled differently in the WebSocket API.+<color red>Note:</color> The ''**folder**'' element is only available in the HTTP API. Folders are handled differently in the WebSocket API.
  
 === Action Group Command Messages === === Action Group Command Messages ===
Line 2291: Line 2291:
 ==== Log Messages ==== ==== Log Messages ====
  
-We convert the event Indigo dictionary into a python dictionary in the ''%%event_log_line_received%%'' plugin method.+We convert the event Indigo dictionary into a python dictionary in the ''event_log_line_received'' plugin method.
  
 === Example Log Message === === Example Log Message ===
Line 2305: Line 2305:
 </code> </code>
  
-Note that ''%%typeVal%%'' will be one of the following values:+Note that ''typeVal'' will be one of the following values:
  
 <code python> <code python>
Line 2368: Line 2368:
 </code> </code>
  
-where the value of the JSON name (or key) ''%%validationErrors%%'' is a dictionary with a field name and a description of the error in that field that came from the client. For instance, if you pass a float ''%%value%%'' to the ''%%indigo.variable.updateValue%%'' message:+where the value of the JSON name (or key) ''validationErrors'' is a dictionary with a field name and a description of the error in that field that came from the client. For instance, if you pass a float ''value'' to the ''indigo.variable.updateValue'' message:
  
 == Example API Call == == Example API Call ==
Line 2397: Line 2397:
 </code> </code>
  
-The ''%%error%%'' key is the indicator that the response is some kind of error. ''%%validationErrors%%'' is a dict which contains all the validation errors for the message, in this case the ''%%value%%'' that was passed in was not a string (it was the float ''%%1234.56%%''). The possible keys in the error message reply ''%%validationErrors%%'' could be:+The ''error'' key is the indicator that the response is some kind of error. ''validationErrors'' is a dict which contains all the validation errors for the message, in this case the ''value'' that was passed in was not a string (it was the float ''1234.56''). The possible keys in the error message reply ''validationErrors'' could be:
  
-  - ''%%message%%'', +  - ''message'', 
-  - ''%%objectId%%'', +  - ''objectId'', 
-  - ''%%parameters%%'', and +  - ''parameters'', and 
-  - ''%%value%%''+  - ''value''
  
-based on the ''%%indigo.variable.updateValue%%'' message format (we do **no validation** on the ''%%id%%'' value passed in, we pass it through, and if your message doesn’t contain one then the value will be ''%%null%%''). Only the keys from your message that have errors will be returned. So in the example error above, only the ''%%value%%'' key had a validation error (because we passed in a float) so that was the only key returned.+based on the ''indigo.variable.updateValue'' message format (we do **no validation** on the ''id'' value passed in, we pass it through, and if your message doesn’t contain one then the value will be ''null''). Only the keys from your message that have errors will be returned. So in the example error above, only the ''value'' key had a validation error (because we passed in a float) so that was the only key returned.
  
 ''id'' is the ID you (may have) passed in when you sent the command message. ''id'' is the ID you (may have) passed in when you sent the command message.
Line 2432: Line 2432:
 ^  Code  ^  Condition  ^  Description  ^ ^  Code  ^  Condition  ^  Description  ^
 |  200  |  OK or Success  |Indicates that the request has succeeded. | |  200  |  OK or Success  |Indicates that the request has succeeded. |
-|  400  |  Bad Request  |Indicates that the server cannot or will not process the request due to something that is perceived to be a client error <HTML><BR></HTML>(for example, malformed request syntax, invalid request message framing, or deceptive request routing) | +|  400  |  Bad Request  |Indicates that the server cannot or will not process the request due to something that is perceived to be a client error (for example, malformed request syntax, invalid request message framing, or deceptive request routing) | 
-|  401  |  Unauthorized  |Indicates that the client request has not been completed because it lacks valid authentication credentials for the <HTML><BR></HTML>requested resource. |+|  401  |  Unauthorized  |Indicates that the client request has not been completed because it lacks valid authentication credentials for the requested resource. |
 |  404  |  Not Found  |Indicates that the server cannot find the requested resource. | |  404  |  Not Found  |Indicates that the server cannot find the requested resource. |
 |  405  |  Method Not Allowed  |Indicates the server has received your request, but the resource you are requesting doesn't support the request method. For example, using a POST when a GET is expected. | |  405  |  Method Not Allowed  |Indicates the server has received your request, but the resource you are requesting doesn't support the request method. For example, using a POST when a GET is expected. |
Line 2441: Line 2441:
  
 === Other Errors and Warnings === === Other Errors and Warnings ===
 +
  • /www/perceptive/wiki/data/attic/indigo_2023.2_documentation/api.1734711948.txt.gz
  • Last modified: 2024/12/20 16:25
  • by davel17