2 |
7 |
--------------------------------------------------------------------------------
/wsdl/ver20/media/wsdl/index.html:
--------------------------------------------------------------------------------
1 |
2 |
7 |
--------------------------------------------------------------------------------
/wsdl/ver10/appmgmt/wsdl/index.html:
--------------------------------------------------------------------------------
1 |
2 |
7 |
--------------------------------------------------------------------------------
/wsdl/ver10/events/wsdl/index.html:
--------------------------------------------------------------------------------
1 |
2 |
7 |
--------------------------------------------------------------------------------
/wsdl/ver10/thermal/wsdl/index.html:
--------------------------------------------------------------------------------
1 |
2 |
7 |
--------------------------------------------------------------------------------
/wsdl/ver10/uplink/wsdl/index.html:
--------------------------------------------------------------------------------
1 |
2 |
7 |
--------------------------------------------------------------------------------
/wsdl/ver10/credential/wsdl/index.html:
--------------------------------------------------------------------------------
1 |
2 |
7 |
--------------------------------------------------------------------------------
/wsdl/ver10/schedule/wsdl/index.html:
--------------------------------------------------------------------------------
1 |
2 |
7 |
--------------------------------------------------------------------------------
/wsdl/ver20/analytics/wsdl/index.html:
--------------------------------------------------------------------------------
1 |
2 |
7 |
--------------------------------------------------------------------------------
/wsdl/ver10/accessrules/wsdl/index.html:
--------------------------------------------------------------------------------
1 |
2 |
7 |
--------------------------------------------------------------------------------
/doc/media/CloudIntegration/openapi_based_development_principles.dia:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/onvif/specs/HEAD/doc/media/CloudIntegration/openapi_based_development_principles.dia
--------------------------------------------------------------------------------
/wsdl/ver10/advancedsecurity/wsdl/index.html:
--------------------------------------------------------------------------------
1 |
2 |
7 |
--------------------------------------------------------------------------------
/wsdl/ver10/doorcontrol/wsdl/index.html:
--------------------------------------------------------------------------------
1 |
2 |
7 |
--------------------------------------------------------------------------------
/wsdl/ver10/accesscontrol/wsdl/index.html:
--------------------------------------------------------------------------------
1 |
2 |
7 |
--------------------------------------------------------------------------------
/wsdl/ver10/authenticationbehavior/wsdl/index.html:
--------------------------------------------------------------------------------
1 |
2 |
7 |
--------------------------------------------------------------------------------
/wsdl/ver20/util/fedsearch-docu-viewer.xsl:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
--------------------------------------------------------------------------------
/doc/yaml.php:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | OpenAPI viewer
5 |
6 |
7 |
8 |
9 |
10 |
13 |
19 |
20 |
21 | '>
22 |
23 |
24 |
25 |
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | # ONVIF Technical Specification Development
2 | This repository is dedicated to future extensions of the ONVIF Network Interface Specifications which include
3 |
4 | - Network Interface Specification Documents
5 | - Schemas and wsdl files
6 |
7 | Note that officially released specifications are available at [onvif.org](https://www.onvif.org/profiles/specifications/).
8 |
9 | You may browse the repository for proposals and corrections that have been assigned to a release.
10 |
11 | ## Guidelines
12 |
13 | For participation in the development please study our [guidelines](guidelines.md).
14 |
15 | ## License
16 |
17 | Due to legal reasons based on earlier contributions by ONVIF members, contributions to the specifications are goverened by a dual license.
18 | The ONVIF specifications themselves are published using the ONVIF no-derivatives license while the contributions themselves
19 | are applicable to the Apache license allowing contributors to collaborate and derive contributions. For the license texts see [LICENSE](LICENSE.md).
20 |
--------------------------------------------------------------------------------
/wsdl/ver10/topics/topicns.xml:
--------------------------------------------------------------------------------
1 |
2 |
12 |
13 |
14 |
--------------------------------------------------------------------------------
/doc/README.md:
--------------------------------------------------------------------------------
1 | # ONVIF Technical Specifications
2 | This folder contains the sources of the ONVIF Technical Specifications.
3 |
4 | ## Document preview
5 |
6 | For a preview of the merged documents visit:
7 | https://developer.onvif.org/pub/specs/branches/development/doc/index.html
8 |
9 | For a preview of branches select the branch via:
10 | https://developer.onvif.org/pub/specs
11 |
12 | Note on branches and forks: the above links do not automatically update.
13 |
14 | For security reasons browsers do not execute stylesheets when accessing local html files.
15 | Use a web server for serving your specs checkout in order to view both wsdl and DocBook files.
16 |
17 | One compact option is to use [Python 3](https://www.python.org/downloads/) with
18 | the following script
19 |
20 | ```
21 | #!/usr/bin/env python3
22 |
23 | import http.server
24 | import socketserver
25 | import threading
26 | import webbrowser
27 | import time
28 |
29 | HOST = "localhost"
30 | PORT = 80
31 |
32 |
33 | class HttpRequestHandler(http.server.SimpleHTTPRequestHandler):
34 | extensions_map = {
35 | "": "application/octet-stream",
36 | ".css": "text/css",
37 | ".html": "text/html",
38 | ".jpg": "image/jpg",
39 | ".js": "application/x-javascript",
40 | ".json": "application/json",
41 | ".manifest": "text/cache-manifest",
42 | ".pdf": "application/pdf",
43 | ".png": "image/png",
44 | ".svg": "image/svg+xml",
45 | ".wasm": "application/wasm",
46 | ".xml": "application/xml",
47 | ".xslt": "application/xml",
48 | ".wsdl": "text/xml",
49 | }
50 |
51 | def spawn_browser():
52 | time.sleep (1)
53 | webbrowser.open(f"http://{HOST}:{PORT}")
54 |
55 | try:
56 | with socketserver.TCPServer((HOST, PORT), HttpRequestHandler) as httpd:
57 | print(f"serving at http://{HOST}:{PORT}")
58 | print(f"to stop, close the browser and press CTRL+C")
59 | threading.Thread(target=spawn_browser).start()
60 | httpd.serve_forever()
61 | except KeyboardInterrupt:
62 | pass
63 | ```
64 |
--------------------------------------------------------------------------------
/yaml/storagerenewal.yaml:
--------------------------------------------------------------------------------
1 | openapi: 3.0.3
2 | info:
3 | title: Storage Configuration Renewal
4 | contact:
5 | name: ONVIF Technical Specification
6 | url: https://github.com/onvif/specs
7 | email: help@onvif.org
8 | license:
9 | name: ONVIF Contributor License Agreement
10 | url: https://github.com/onvif/specs/blob/development/LICENSE.md
11 | version: "25.06"
12 | x-logo:
13 | url: https://www.onvif.org/logo.gif
14 | background: "#ffffff"
15 | altText: "ONVIF logo"
16 | paths:
17 | /Configuration-Renewal:
18 | get:
19 | responses:
20 | '200':
21 | description: successful operation
22 | content:
23 | application/json:
24 | schema:
25 | $ref: '#/components/schemas/storageConfigurationRenewal'
26 | components:
27 | schemas:
28 | storageConfigurationRenewal:
29 | type: object
30 | properties:
31 | region:
32 | type: string
33 | example: "us-east-1"
34 | description: "Optional region of the storage server"
35 | storageUri:
36 | type: string
37 | example: "https://.s3.us-east-1.amazonaws.com/"
38 | description: "Storage server address"
39 | user:
40 | type: object
41 | description: "User credentials for the storage server"
42 | properties:
43 | username:
44 | type: string
45 | example: ""
46 | description: "Optional user name used to access the storage server"
47 | password:
48 | type: string
49 | example: ""
50 | description: "Optional password used to access the storage server"
51 | token:
52 | type: string
53 | example: null
54 | description: "Optional token used to access the storage server"
55 | expiresAt:
56 | type: string
57 | example: "2024-08-14T15:31:24Z"
58 | description: "Expiration date of the storage configuration as an ISO 8601 date-time"
59 |
--------------------------------------------------------------------------------
/doc/media/AccessControl/source/flow.uml:
--------------------------------------------------------------------------------
1 | @startuml
2 | actor "Outside user" as Outside
3 | entity "AccessPoint\nProfile D device" as Reader
4 | entity "Door\nProfile C or D device" as Door
5 | entity "Controller\nProfile D client,\nProfile A or C device" as Controller
6 | database "Event\nLogger" as Logger
7 | actor "Inside user" as Inside
8 |
9 | note over Reader : Idle
10 | /note over Door : DoorLocked
11 | /note over Controller : Idle
12 | activate Inside
13 | note over Inside : Approaches door\nand pushes REX button
14 | Inside -> Controller : Internal REX
15 | activate Controller
16 | note over Controller : Grant access
17 | Controller -> Logger : AccessControl/AccessGranted/Anonymous
18 | Controller ->Door : AccessDoor()
19 | activate Door
20 | Controller ->Reader : Feedback(DoorUnlocked)
21 | Door -> Controller : Door/DoorMode=Accessed
22 | note over Inside : Does not open the door\nand goes away
23 | destroy Inside
24 | note over Door : Access times out
25 | Door -> Controller : Door/DoorMode=DoorLocked
26 | destroy Door
27 |
28 | note over Controller : Access not taken
29 | Controller -> Logger : AccessControl/AccessNotTaken/Anonymous
30 | Controller ->Reader : Feedback(DoorLocked)
31 | destroy Controller
32 |
33 | activate Outside
34 | note over Outside : User approaches\nand presents his card
35 | Outside -> Reader : Card presented
36 | Reader -> Controller : AccessControl/Request/Identifier (pt:Card)
37 | activate Controller
38 | note over Controller : PIN required
39 | Controller ->Reader : Feedback(RequireIdentifier, pt:PIN)
40 |
41 | note over Outside : User enters PIN
42 | Outside -> Reader : PIN presented
43 | Reader -> Controller : AccessControl/Request/Identifier (pt:PIN)
44 | note over Controller : Grant access
45 | Controller -> Logger : AccessControl/AccessGranted/Credential
46 |
47 | Controller -> Door : AccessDoor()
48 | activate Door
49 | Door -> Controller : Door/DoorMode=Accessed
50 | Controller ->Reader : ExternalAuthorization(Decision=Granted)
51 | Controller ->Reader : Feedback(AccessGranted)
52 |
53 | note over Outside : User opens door and enters
54 | Outside -> Door : Open door
55 | Door -> Controller : Door/DoorPhysicalState=DoorOpen
56 |
57 | note over Controller : Access taken
58 | destroy Outside
59 | Controller -> Logger : AccessControl/AccessNotTaken/Credential
60 | Controller ->Reader : Feedback(DoorUnlocked)
61 | Door -> Controller : Door/DoorPhysicalState=DoorClosed
62 | Door -> Controller : Door/DoorMode=DoorLocked
63 | destroy Door
64 | Controller ->Reader : Feedback(DoorLocked)
65 | destroy Controller
66 | @enduml
--------------------------------------------------------------------------------
/doc/media/Analytics/image13.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
5 |
--------------------------------------------------------------------------------
/doc/media/Analytics/image14.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
5 |
--------------------------------------------------------------------------------
/doc/media/Analytics/image5.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
5 |
--------------------------------------------------------------------------------
/doc/media/Analytics/image11.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
5 |
--------------------------------------------------------------------------------
/doc/media/Analytics/image12.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
5 |
--------------------------------------------------------------------------------
/doc/media/Analytics/image6.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
5 |
--------------------------------------------------------------------------------
/doc/media/Analytics/image7.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
5 |
--------------------------------------------------------------------------------
/doc/media/Analytics/image8.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
5 |
--------------------------------------------------------------------------------
/doc/media/Analytics/image17.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
5 |
--------------------------------------------------------------------------------
/doc/media/Analytics/image18.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
5 |
--------------------------------------------------------------------------------
/guidelines.md:
--------------------------------------------------------------------------------
1 | ## Development and Change Guidelines
2 |
3 | This document describes the guidelines for ONVIF specification evolution. Its goal is to provide a transparent and open mechanism.
4 | The ONVIF Technical Committee implements the process described below when merging changes from internal or external contributors.
5 |
6 | ## Specification Change Categories
7 |
8 | Changes should fall into the following three categories:
9 |
10 | * Clarification. The current description either doesn't make sense, is ambiguous, overly complicated, or unclear.
11 |
12 | * Consistency. A portion of the specification is not consistent with the rest, or contraditcs to underlying specifications.
13 |
14 | * New functionality. The proposal adds one or more features to the specifications.
15 |
16 | ## Repository branches
17 |
18 | ONVIF will maintain the following active branches:
19 |
20 | * master - Current stable version reflecting the released specifications.
21 | Update from development branches only.
22 |
23 | * development - Development branch for next version
24 | Change requests for clarifications and consistency should be submitted to this branch. Minimal additions or features in
25 | IPR review may be submitted to this branch.
26 | Implementers may use this branch. However in the unlikely case of IPR notices indiviual changes may be revoked.
27 |
28 | Beside the above branches the following temporary branches may be established:
29 | * issue-xx-yyyyy - Change request for issue XX with short title YYYY.
30 |
31 | * xxxx/yyyy-zzzz - Feature branch for group xxxx with short title yyyy-zzzz. ## Specification Change Process
32 |
33 | ## Specification change workflow
34 |
35 | Any party may file a change request. A change request must include a complete change proposal and be
36 | submitted as pull request to one of the development branches.
37 | The comment of a pull request shall include the following information:
38 | * Reason: containing a problem description and a description of the solution proposal.
39 | * Compatibility analysis: An analysis describing possible impact on forward and or backward compatibility.
40 |
41 | A pull request to any of the development branches shall be reviewed by at least two TC member companies before being merged.
42 | Note that a pull request typically also needs to await a 14 day review period in order to enable any interested party to review or comment.
43 |
44 | For larger additions affecting more than a simple type please see section "Feature Development Process" below.
45 |
46 | ## Feature Development Process
47 |
48 | New features shall not be developed on development branches but in separate feature branches.
49 | Feature branches may be part of the main ONVIF specification repository, but are typically located in separate repositories.
50 |
51 | * Once an author or group has completed the specification development for a feature the respective feature needs to be verified by writing and executing test cases.
52 | * When all activities have been completed the pull request shall include the following information:
53 | * Reason: containing a problem description and a description of the solution proposal.
54 | * Compatibility analysis: An analysis describing possible impact on forward and or backward compatibility.
55 | * Unit tests covering the additional features
56 | * Information which parties implemented client and server side as well as a test report from at least two different entities.
57 |
58 | ## Tools
59 |
60 | All documents are designed such that they can be edited by any text editor. Better use e.g.
61 | * Notepad++ www.notepad-plus-plus.org with XML Tools plugin for syntax checking.
62 | * Wysiwyg editing is supported by
63 | * Oxygen www.oxygenxml.com
64 | * XMLmind www.xmlmind.com/xmleditor/download.shtml
65 | Be careful when using this editor because it tends to reformat the complete document. Usage for creating snippets is ok.
66 |
67 | For text documents DocBook5 is used. For details on DocBook editing and formatting see https://docbook.org/ .
68 |
69 | For instructions regarding document and wsdl preview see [link](doc/README.md).
70 | ## Maintainers
71 |
72 | The elected ONVIF Technical Committee members act as change control board and maintainers of this repository. Typically any change proposals is kept pending for at least two weeks to collect comments. Decisions on pull requests and issues will be documented in place.
73 |
74 | Note that this repository sole purpose is technical specification evolution. Any possible product incompatiblities must be directed to vendors.
75 |
76 | ## Participation
77 |
78 | While governance of the specification is the role of the ONVIF Technical Committee, the evolution of the specification happens through the participation of members of the developer community at large.
79 | Any person willing to contribute to the effort is welcome, and contributions may include filing or participating in issues, creating pull requests, or helping others with such activities.
80 |
81 |
--------------------------------------------------------------------------------
/doc/media/Analytics/image10.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
5 |
--------------------------------------------------------------------------------
/doc/media/Core/image7.drawio:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
29 |
30 |
31 |
32 |
33 |
34 |
35 |
36 |
37 |
38 |
39 |
40 |
41 |
42 |
43 |
44 |
45 |
46 |
47 |
48 |
49 |
50 |
51 |
52 |
53 |
54 |
55 |
56 |
57 |
58 |
59 |
60 |
61 |
62 |
--------------------------------------------------------------------------------
/doc/media/Analytics/image16.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
5 |
--------------------------------------------------------------------------------
/doc/media/CloudIntegration/openapi_based_development_principles.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
96 |
--------------------------------------------------------------------------------
/doc/media/Analytics/image9.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
5 |
--------------------------------------------------------------------------------
/wsdl/ver20/analytics/rules.xsd:
--------------------------------------------------------------------------------
1 |
2 |
10 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 | The total number of Motion Region Detector rules that can be created on the device.
24 | This element is deprecated. maxInstances in the GetSupportedRules shall be used instead.
25 |
26 |
27 |
28 |
29 |
30 |
31 | True if the device supports disarming a Motion Region Detector rule.
32 |
33 |
34 |
35 |
36 |
37 |
38 | True if the device supports defining a region using a Polygon instead of a rectangle.
39 | The rectangle points are still passed using a Polygon element if the device does not support polygon regions.
40 | In this case, the points provided in the Polygon element shall represent a rectangle.
41 |
42 |
43 |
44 |
45 |
46 |
47 | For devices that support Polygons with limitations on the number of sides,
48 | provides the minimum and maximum number of sides that can be defined in the
49 | Polygon.
50 |
51 |
52 |
53 |
54 |
55 |
56 | Indicates the device can only support one sensitivity level for all defines
57 | motion detection regions. Changing the sensitivity for one region would be
58 | applied to all regions.
59 |
60 |
61 |
62 |
63 |
64 |
65 | True if the device will include the Name of the Rule to indicate the region
66 | that motion was detected in.
67 |
68 |
69 |
70 |
71 |
72 |
73 |
74 |
75 | Indicates the support for PTZ preset based motion detection, if supported Preset token can be associated with a motion region.
76 |
77 |
78 |
79 |
80 |
81 |
82 |
83 |
84 |
85 |
86 |
87 |
88 |
89 | Provides the points of a Polygon in the VideoSourceConfiguration's Bounds
90 | element. If the device does not support Polygons, this structure must contain
91 | four points that represent a Rectangle.
92 |
93 |
94 |
95 |
96 |
97 |
98 | Preset position associated with the motion region defined by Polygon.
99 |
100 |
101 |
102 |
103 |
104 |
105 |
106 |
107 | Indicates if the Motion Region is Armed (detecting motion) or Disarmed (motion is
108 | not being detected).
109 |
110 |
111 |
112 |
113 |
114 |
115 | Indicates the sensitivity level of the motion detector for this region. The
116 | sensitivity value is normalized where 0 represents the lower sensitivity where
117 | significant motion is required to trigger an alarm and 1 represents the higher
118 | sensitivity where very little motion is required to trigger an alarm.
119 |
120 |
121 |
122 |
123 |
124 |
125 |
126 |
127 |
--------------------------------------------------------------------------------
/doc/index.html:
--------------------------------------------------------------------------------
1 |
11 |
12 |
Document preview
13 |
14 |
The links below allow to preview the documents. The document preview is using a simplified html stylesheet with similar rendering than the published pdf files.
15 |
16 |
Note that the target does not change on branching or forking. As alternative you may serve the files using a local web server.
17 | Rendering files does not activate the necessary stylesheets and hence do not show the resulting layout. Similarly for wsdl files github pages does use a Content-Type that tends to trigger a download.
18 | For the default branch of onvif/specs ONVIF provides a proxy that fixes this behavior.