pax_global_header00006660000000000000000000000064133211713130014505gustar00rootroot0000000000000052 comment=bce47c9386f9ecd6b86f450478a80103c3fe1402 golang-github-go-openapi-spec-0.15.0/000077500000000000000000000000001332117131300173035ustar00rootroot00000000000000golang-github-go-openapi-spec-0.15.0/.editorconfig000066400000000000000000000010331332117131300217550ustar00rootroot00000000000000# top-most EditorConfig file root = true # Unix-style newlines with a newline ending every file [*] end_of_line = lf insert_final_newline = true indent_style = space indent_size = 2 trim_trailing_whitespace = true # Set default charset [*.{js,py,go,scala,rb,java,html,css,less,sass,md}] charset = utf-8 # Tab indentation (no size specified) [*.go] indent_style = tab [*.md] trim_trailing_whitespace = false # Matches the exact files either package.json or .travis.yml [{package.json,.travis.yml}] indent_style = space indent_size = 2 golang-github-go-openapi-spec-0.15.0/.github/000077500000000000000000000000001332117131300206435ustar00rootroot00000000000000golang-github-go-openapi-spec-0.15.0/.github/CONTRIBUTING.md000066400000000000000000000114601332117131300230760ustar00rootroot00000000000000## Contribution Guidelines ### Pull requests are always welcome We are always thrilled to receive pull requests, and do our best to process them as fast as possible. Not sure if that typo is worth a pull request? Do it! We will appreciate it. If your pull request is not accepted on the first try, don't be discouraged! If there's a problem with the implementation, hopefully you received feedback on what to improve. We're trying very hard to keep go-swagger lean and focused. We don't want it to do everything for everybody. This means that we might decide against incorporating a new feature. However, there might be a way to implement that feature *on top of* go-swagger. ### Conventions Fork the repo and make changes on your fork in a feature branch: - If it's a bugfix branch, name it XXX-something where XXX is the number of the issue - If it's a feature branch, create an enhancement issue to announce your intentions, and name it XXX-something where XXX is the number of the issue. Submit unit tests for your changes. Go has a great test framework built in; use it! Take a look at existing tests for inspiration. Run the full test suite on your branch before submitting a pull request. Update the documentation when creating or modifying features. Test your documentation changes for clarity, concision, and correctness, as well as a clean documentation build. See ``docs/README.md`` for more information on building the docs and how docs get released. Write clean code. Universally formatted code promotes ease of writing, reading, and maintenance. Always run `gofmt -s -w file.go` on each changed file before committing your changes. Most editors have plugins that do this automatically. Pull requests descriptions should be as clear as possible and include a reference to all the issues that they address. Pull requests must not contain commits from other users or branches. Commit messages must start with a capitalized and short summary (max. 50 chars) written in the imperative, followed by an optional, more detailed explanatory text which is separated from the summary by an empty line. Code review comments may be added to your pull request. Discuss, then make the suggested modifications and push additional commits to your feature branch. Be sure to post a comment after pushing. The new commits will show up in the pull request automatically, but the reviewers will not be notified unless you comment. Before the pull request is merged, make sure that you squash your commits into logical units of work using `git rebase -i` and `git push -f`. After every commit the test suite should be passing. Include documentation changes in the same commit so that a revert would remove all traces of the feature or fix. Commits that fix or close an issue should include a reference like `Closes #XXX` or `Fixes #XXX`, which will automatically close the issue when merged. ### Sign your work The sign-off is a simple line at the end of the explanation for the patch, which certifies that you wrote it or otherwise have the right to pass it on as an open-source patch. The rules are pretty simple: if you can certify the below (from [developercertificate.org](http://developercertificate.org/)): ``` Developer Certificate of Origin Version 1.1 Copyright (C) 2004, 2006 The Linux Foundation and its contributors. 660 York Street, Suite 102, San Francisco, CA 94110 USA Everyone is permitted to copy and distribute verbatim copies of this license document, but changing it is not allowed. Developer's Certificate of Origin 1.1 By making a contribution to this project, I certify that: (a) The contribution was created in whole or in part by me and I have the right to submit it under the open source license indicated in the file; or (b) The contribution is based upon previous work that, to the best of my knowledge, is covered under an appropriate open source license and I have the right under that license to submit that work with modifications, whether created in whole or in part by me, under the same open source license (unless I am permitted to submit under a different license), as indicated in the file; or (c) The contribution was provided directly to me by some other person who certified (a), (b) or (c) and I have not modified it. (d) I understand and agree that this project and the contribution are public and that a record of the contribution (including all personal information I submit with it, including my sign-off) is maintained indefinitely and may be redistributed consistent with this project or the open source license(s) involved. ``` then you just add a line to every git commit message: Signed-off-by: Joe Smith using your real name (sorry, no pseudonyms or anonymous contributions.) You can add the sign off when creating the git commit via `git commit -s`. golang-github-go-openapi-spec-0.15.0/.gitignore000066400000000000000000000000311332117131300212650ustar00rootroot00000000000000secrets.yml coverage.out golang-github-go-openapi-spec-0.15.0/.golangci.yml000066400000000000000000000004521332117131300216700ustar00rootroot00000000000000linters-settings: govet: check-shadowing: true golint: min-confidence: 0 gocyclo: min-complexity: 25 maligned: suggest-new: true dupl: threshold: 100 goconst: min-len: 2 min-occurrences: 2 linters: enable-all: true disable: - maligned - unparam golang-github-go-openapi-spec-0.15.0/.travis.yml000066400000000000000000000021251332117131300214140ustar00rootroot00000000000000language: go go: - 1.7 - 1.8 - 1.9 install: - go get -u github.com/stretchr/testify - go get -u github.com/go-openapi/swag - go get -u gopkg.in/yaml.v2 - go get -u github.com/go-openapi/jsonpointer - go get -u github.com/go-openapi/jsonreference script: - go test -v -race -cover -coverprofile=coverage.txt -covermode=atomic ./... after_success: - bash <(curl -s https://codecov.io/bash) notifications: slack: secure: QUWvCkBBK09GF7YtEvHHVt70JOkdlNBG0nIKu/5qc4/nW5HP8I2w0SEf/XR2je0eED1Qe3L/AfMCWwrEj+IUZc3l4v+ju8X8R3Lomhme0Eb0jd1MTMCuPcBT47YCj0M7RON7vXtbFfm1hFJ/jLe5+9FXz0hpXsR24PJc5ZIi/ogNwkaPqG4BmndzecpSh0vc2FJPZUD9LT0I09REY/vXR0oQAalLkW0asGD5taHZTUZq/kBpsNxaAFrLM23i4mUcf33M5fjLpvx5LRICrX/57XpBrDh2TooBU6Qj3CgoY0uPRYUmSNxbVx1czNzl2JtEpb5yjoxfVPQeg0BvQM00G8LJINISR+ohrjhkZmAqchDupAX+yFrxTtORa78CtnIL6z/aTNlgwwVD8kvL/1pFA/JWYmKDmz93mV/+6wubGzNSQCstzjkFA4/iZEKewKUoRIAi/fxyscP6L/rCpmY/4llZZvrnyTqVbt6URWpopUpH4rwYqreXAtJxJsfBJIeSmUIiDIOMGkCTvyTEW3fWGmGoqWtSHLoaWDyAIGb7azb+KvfpWtEcoPFWfSWU+LGee0A/YsUhBl7ADB9A0CJEuR8q4BPpKpfLwPKSiKSAXL7zDkyjExyhtgqbSl2jS+rKIHOZNL8JkCcTP2MKMVd563C5rC5FMKqu3S9m2b6380E= golang-github-go-openapi-spec-0.15.0/CODE_OF_CONDUCT.md000066400000000000000000000062411332117131300221050ustar00rootroot00000000000000# Contributor Covenant Code of Conduct ## Our Pledge In the interest of fostering an open and welcoming environment, we as contributors and maintainers pledge to making participation in our project and our community a harassment-free experience for everyone, regardless of age, body size, disability, ethnicity, gender identity and expression, level of experience, nationality, personal appearance, race, religion, or sexual identity and orientation. ## Our Standards Examples of behavior that contributes to creating a positive environment include: * Using welcoming and inclusive language * Being respectful of differing viewpoints and experiences * Gracefully accepting constructive criticism * Focusing on what is best for the community * Showing empathy towards other community members Examples of unacceptable behavior by participants include: * The use of sexualized language or imagery and unwelcome sexual attention or advances * Trolling, insulting/derogatory comments, and personal or political attacks * Public or private harassment * Publishing others' private information, such as a physical or electronic address, without explicit permission * Other conduct which could reasonably be considered inappropriate in a professional setting ## Our Responsibilities Project maintainers are responsible for clarifying the standards of acceptable behavior and are expected to take appropriate and fair corrective action in response to any instances of unacceptable behavior. Project maintainers have the right and responsibility to remove, edit, or reject comments, commits, code, wiki edits, issues, and other contributions that are not aligned to this Code of Conduct, or to ban temporarily or permanently any contributor for other behaviors that they deem inappropriate, threatening, offensive, or harmful. ## Scope This Code of Conduct applies both within project spaces and in public spaces when an individual is representing the project or its community. Examples of representing a project or community include using an official project e-mail address, posting via an official social media account, or acting as an appointed representative at an online or offline event. Representation of a project may be further defined and clarified by project maintainers. ## Enforcement Instances of abusive, harassing, or otherwise unacceptable behavior may be reported by contacting the project team at ivan+abuse@flanders.co.nz. All complaints will be reviewed and investigated and will result in a response that is deemed necessary and appropriate to the circumstances. The project team is obligated to maintain confidentiality with regard to the reporter of an incident. Further details of specific enforcement policies may be posted separately. Project maintainers who do not follow or enforce the Code of Conduct in good faith may face temporary or permanent repercussions as determined by other members of the project's leadership. ## Attribution This Code of Conduct is adapted from the [Contributor Covenant][homepage], version 1.4, available at [http://contributor-covenant.org/version/1/4][version] [homepage]: http://contributor-covenant.org [version]: http://contributor-covenant.org/version/1/4/ golang-github-go-openapi-spec-0.15.0/LICENSE000066400000000000000000000261361332117131300203200ustar00rootroot00000000000000 Apache License Version 2.0, January 2004 http://www.apache.org/licenses/ TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION 1. Definitions. "License" shall mean the terms and conditions for use, reproduction, and distribution as defined by Sections 1 through 9 of this document. "Licensor" shall mean the copyright owner or entity authorized by the copyright owner that is granting the License. "Legal Entity" shall mean the union of the acting entity and all other entities that control, are controlled by, or are under common control with that entity. For the purposes of this definition, "control" means (i) the power, direct or indirect, to cause the direction or management of such entity, whether by contract or otherwise, or (ii) ownership of fifty percent (50%) or more of the outstanding shares, or (iii) beneficial ownership of such entity. "You" (or "Your") shall mean an individual or Legal Entity exercising permissions granted by this License. "Source" form shall mean the preferred form for making modifications, including but not limited to software source code, documentation source, and configuration files. "Object" form shall mean any form resulting from mechanical transformation or translation of a Source form, including but not limited to compiled object code, generated documentation, and conversions to other media types. "Work" shall mean the work of authorship, whether in Source or Object form, made available under the License, as indicated by a copyright notice that is included in or attached to the work (an example is provided in the Appendix below). "Derivative Works" shall mean any work, whether in Source or Object form, that is based on (or derived from) the Work and for which the editorial revisions, annotations, elaborations, or other modifications represent, as a whole, an original work of authorship. For the purposes of this License, Derivative Works shall not include works that remain separable from, or merely link (or bind by name) to the interfaces of, the Work and Derivative Works thereof. "Contribution" shall mean any work of authorship, including the original version of the Work and any modifications or additions to that Work or Derivative Works thereof, that is intentionally submitted to Licensor for inclusion in the Work by the copyright owner or by an individual or Legal Entity authorized to submit on behalf of the copyright owner. For the purposes of this definition, "submitted" means any form of electronic, verbal, or written communication sent to the Licensor or its representatives, including but not limited to communication on electronic mailing lists, source code control systems, and issue tracking systems that are managed by, or on behalf of, the Licensor for the purpose of discussing and improving the Work, but excluding communication that is conspicuously marked or otherwise designated in writing by the copyright owner as "Not a Contribution." "Contributor" shall mean Licensor and any individual or Legal Entity on behalf of whom a Contribution has been received by Licensor and subsequently incorporated within the Work. 2. Grant of Copyright License. Subject to the terms and conditions of this License, each Contributor hereby grants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free, irrevocable copyright license to reproduce, prepare Derivative Works of, publicly display, publicly perform, sublicense, and distribute the Work and such Derivative Works in Source or Object form. 3. Grant of Patent License. Subject to the terms and conditions of this License, each Contributor hereby grants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free, irrevocable (except as stated in this section) patent license to make, have made, use, offer to sell, sell, import, and otherwise transfer the Work, where such license applies only to those patent claims licensable by such Contributor that are necessarily infringed by their Contribution(s) alone or by combination of their Contribution(s) with the Work to which such Contribution(s) was submitted. If You institute patent litigation against any entity (including a cross-claim or counterclaim in a lawsuit) alleging that the Work or a Contribution incorporated within the Work constitutes direct or contributory patent infringement, then any patent licenses granted to You under this License for that Work shall terminate as of the date such litigation is filed. 4. Redistribution. You may reproduce and distribute copies of the Work or Derivative Works thereof in any medium, with or without modifications, and in Source or Object form, provided that You meet the following conditions: (a) You must give any other recipients of the Work or Derivative Works a copy of this License; and (b) You must cause any modified files to carry prominent notices stating that You changed the files; and (c) You must retain, in the Source form of any Derivative Works that You distribute, all copyright, patent, trademark, and attribution notices from the Source form of the Work, excluding those notices that do not pertain to any part of the Derivative Works; and (d) If the Work includes a "NOTICE" text file as part of its distribution, then any Derivative Works that You distribute must include a readable copy of the attribution notices contained within such NOTICE file, excluding those notices that do not pertain to any part of the Derivative Works, in at least one of the following places: within a NOTICE text file distributed as part of the Derivative Works; within the Source form or documentation, if provided along with the Derivative Works; or, within a display generated by the Derivative Works, if and wherever such third-party notices normally appear. The contents of the NOTICE file are for informational purposes only and do not modify the License. You may add Your own attribution notices within Derivative Works that You distribute, alongside or as an addendum to the NOTICE text from the Work, provided that such additional attribution notices cannot be construed as modifying the License. You may add Your own copyright statement to Your modifications and may provide additional or different license terms and conditions for use, reproduction, or distribution of Your modifications, or for any such Derivative Works as a whole, provided Your use, reproduction, and distribution of the Work otherwise complies with the conditions stated in this License. 5. Submission of Contributions. Unless You explicitly state otherwise, any Contribution intentionally submitted for inclusion in the Work by You to the Licensor shall be under the terms and conditions of this License, without any additional terms or conditions. Notwithstanding the above, nothing herein shall supersede or modify the terms of any separate license agreement you may have executed with Licensor regarding such Contributions. 6. Trademarks. This License does not grant permission to use the trade names, trademarks, service marks, or product names of the Licensor, except as required for reasonable and customary use in describing the origin of the Work and reproducing the content of the NOTICE file. 7. Disclaimer of Warranty. Unless required by applicable law or agreed to in writing, Licensor provides the Work (and each Contributor provides its Contributions) on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied, including, without limitation, any warranties or conditions of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A PARTICULAR PURPOSE. You are solely responsible for determining the appropriateness of using or redistributing the Work and assume any risks associated with Your exercise of permissions under this License. 8. Limitation of Liability. In no event and under no legal theory, whether in tort (including negligence), contract, or otherwise, unless required by applicable law (such as deliberate and grossly negligent acts) or agreed to in writing, shall any Contributor be liable to You for damages, including any direct, indirect, special, incidental, or consequential damages of any character arising as a result of this License or out of the use or inability to use the Work (including but not limited to damages for loss of goodwill, work stoppage, computer failure or malfunction, or any and all other commercial damages or losses), even if such Contributor has been advised of the possibility of such damages. 9. Accepting Warranty or Additional Liability. While redistributing the Work or Derivative Works thereof, You may choose to offer, and charge a fee for, acceptance of support, warranty, indemnity, or other liability obligations and/or rights consistent with this License. However, in accepting such obligations, You may act only on Your own behalf and on Your sole responsibility, not on behalf of any other Contributor, and only if You agree to indemnify, defend, and hold each Contributor harmless for any liability incurred by, or claims asserted against, such Contributor by reason of your accepting any such warranty or additional liability. END OF TERMS AND CONDITIONS APPENDIX: How to apply the Apache License to your work. To apply the Apache License to your work, attach the following boilerplate notice, with the fields enclosed by brackets "[]" replaced with your own identifying information. (Don't include the brackets!) The text should be enclosed in the appropriate comment syntax for the file format. We also recommend that a file or class name and description of purpose be included on the same "printed page" as the copyright notice for easier identification within third-party archives. Copyright [yyyy] [name of copyright owner] Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. golang-github-go-openapi-spec-0.15.0/README.md000066400000000000000000000016261332117131300205670ustar00rootroot00000000000000# OAI object model [![Build Status](https://travis-ci.org/go-openapi/spec.svg?branch=master)](https://travis-ci.org/go-openapi/spec) [![codecov](https://codecov.io/gh/go-openapi/spec/branch/master/graph/badge.svg)](https://codecov.io/gh/go-openapi/spec) [![Slack Status](https://slackin.goswagger.io/badge.svg)](https://slackin.goswagger.io) [![license](http://img.shields.io/badge/license-Apache%20v2-orange.svg)](https://raw.githubusercontent.com/go-openapi/spec/master/LICENSE) [![GoDoc](https://godoc.org/github.com/go-openapi/spec?status.svg)](http://godoc.org/github.com/go-openapi/spec) [![GolangCI](https://golangci.com/badges/github.com/go-openapi/spec.svg)](https://golangci.com) [![Go Report Card](https://goreportcard.com/badge/github.com/go-openapi/spec)](https://goreportcard.com/report/github.com/go-openapi/spec) The object model for OpenAPI specification documents. Currently supports Swagger 2.0. golang-github-go-openapi-spec-0.15.0/auth_test.go000066400000000000000000000110361332117131300216330ustar00rootroot00000000000000// Copyright 2015 go-swagger maintainers // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. // You may obtain a copy of the License at // // http://www.apache.org/licenses/LICENSE-2.0 // // Unless required by applicable law or agreed to in writing, software // distributed under the License is distributed on an "AS IS" BASIS, // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. // See the License for the specific language governing permissions and // limitations under the License. package spec import ( "testing" ) func TestSerialization_AuthSerialization(t *testing.T) { assertSerializeJSON(t, BasicAuth(), `{"type":"basic"}`) assertSerializeJSON(t, APIKeyAuth("api-key", "header"), `{"type":"apiKey","name":"api-key","in":"header"}`) assertSerializeJSON( t, OAuth2Implicit("http://foo.com/authorization"), `{"type":"oauth2","flow":"implicit","authorizationUrl":"http://foo.com/authorization"}`) assertSerializeJSON( t, OAuth2Password("http://foo.com/token"), `{"type":"oauth2","flow":"password","tokenUrl":"http://foo.com/token"}`) assertSerializeJSON(t, OAuth2Application("http://foo.com/token"), `{"type":"oauth2","flow":"application","tokenUrl":"http://foo.com/token"}`) assertSerializeJSON( t, OAuth2AccessToken("http://foo.com/authorization", "http://foo.com/token"), `{"type":"oauth2","flow":"accessCode","authorizationUrl":"http://foo.com/authorization","tokenUrl":"http://foo.com/token"}`) auth1 := OAuth2Implicit("http://foo.com/authorization") auth1.AddScope("email", "read your email") assertSerializeJSON( t, auth1, `{"type":"oauth2","flow":"implicit","authorizationUrl":"http://foo.com/authorization","scopes":{"email":"read your email"}}`) auth2 := OAuth2Password("http://foo.com/authorization") auth2.AddScope("email", "read your email") assertSerializeJSON( t, auth2, `{"type":"oauth2","flow":"password","tokenUrl":"http://foo.com/authorization","scopes":{"email":"read your email"}}`) auth3 := OAuth2Application("http://foo.com/token") auth3.AddScope("email", "read your email") assertSerializeJSON( t, auth3, `{"type":"oauth2","flow":"application","tokenUrl":"http://foo.com/token","scopes":{"email":"read your email"}}`) auth4 := OAuth2AccessToken("http://foo.com/authorization", "http://foo.com/token") auth4.AddScope("email", "read your email") assertSerializeJSON( t, auth4, `{"type":"oauth2","flow":"accessCode","authorizationUrl":"http://foo.com/authorization","tokenUrl":"http://foo.com/token","scopes":{"email":"read your email"}}`) } func TestSerialization_AuthDeserialization(t *testing.T) { assertParsesJSON(t, `{"type":"basic"}`, BasicAuth()) assertParsesJSON( t, `{"in":"header","name":"api-key","type":"apiKey"}`, APIKeyAuth("api-key", "header")) assertParsesJSON( t, `{"authorizationUrl":"http://foo.com/authorization","flow":"implicit","type":"oauth2"}`, OAuth2Implicit("http://foo.com/authorization")) assertParsesJSON( t, `{"flow":"password","tokenUrl":"http://foo.com/token","type":"oauth2"}`, OAuth2Password("http://foo.com/token")) assertParsesJSON( t, `{"flow":"application","tokenUrl":"http://foo.com/token","type":"oauth2"}`, OAuth2Application("http://foo.com/token")) assertParsesJSON( t, `{"authorizationUrl":"http://foo.com/authorization","flow":"accessCode","tokenUrl":"http://foo.com/token","type":"oauth2"}`, OAuth2AccessToken("http://foo.com/authorization", "http://foo.com/token")) auth1 := OAuth2Implicit("http://foo.com/authorization") auth1.AddScope("email", "read your email") assertParsesJSON(t, `{"authorizationUrl":"http://foo.com/authorization","flow":"implicit","scopes":{"email":"read your email"},"type":"oauth2"}`, auth1) auth2 := OAuth2Password("http://foo.com/token") auth2.AddScope("email", "read your email") assertParsesJSON(t, `{"flow":"password","scopes":{"email":"read your email"},"tokenUrl":"http://foo.com/token","type":"oauth2"}`, auth2) auth3 := OAuth2Application("http://foo.com/token") auth3.AddScope("email", "read your email") assertParsesJSON(t, `{"flow":"application","scopes":{"email":"read your email"},"tokenUrl":"http://foo.com/token","type":"oauth2"}`, auth3) auth4 := OAuth2AccessToken("http://foo.com/authorization", "http://foo.com/token") auth4.AddScope("email", "read your email") assertParsesJSON( t, `{"authorizationUrl":"http://foo.com/authorization","flow":"accessCode","scopes":{"email":"read your email"},"tokenUrl":"http://foo.com/token","type":"oauth2"}`, auth4) } golang-github-go-openapi-spec-0.15.0/bindata.go000066400000000000000000000554161332117131300212470ustar00rootroot00000000000000// Code generated by go-bindata. // sources: // schemas/jsonschema-draft-04.json // schemas/v2/schema.json // DO NOT EDIT! package spec import ( "bytes" "compress/gzip" "fmt" "io" "io/ioutil" "os" "path/filepath" "strings" "time" ) func bindataRead(data []byte, name string) ([]byte, error) { gz, err := gzip.NewReader(bytes.NewBuffer(data)) if err != nil { return nil, fmt.Errorf("Read %q: %v", name, err) } var buf bytes.Buffer _, err = io.Copy(&buf, gz) clErr := gz.Close() if err != nil { return nil, fmt.Errorf("Read %q: %v", name, err) } if clErr != nil { return nil, err } return buf.Bytes(), nil } type asset struct { bytes []byte info os.FileInfo } type bindataFileInfo struct { name string size int64 mode os.FileMode modTime time.Time } func (fi bindataFileInfo) Name() string { return fi.name } func (fi bindataFileInfo) Size() int64 { return fi.size } func (fi bindataFileInfo) Mode() os.FileMode { return fi.mode } func (fi bindataFileInfo) ModTime() time.Time { return fi.modTime } func (fi bindataFileInfo) IsDir() bool { return false } func (fi bindataFileInfo) Sys() interface{} { return nil } var _jsonschemaDraft04JSON = []byte("\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\xc4\x57\x3d\x6f\xdb\x3c\x10\xde\xf3\x2b\x08\x26\x63\xf2\x2a\x2f\xd0\xc9\x5b\xd1\x2e\x01\x5a\x34\x43\x37\x23\x03\x6d\x9d\x6c\x06\x14\xa9\x50\x54\x60\xc3\xd0\x7f\x2f\x28\x4a\x14\x29\x91\x92\x2d\xa7\x8d\x97\x28\xbc\xaf\xe7\x8e\xf7\xc5\xd3\x0d\x42\x08\x61\x9a\xe2\x15\xc2\x7b\xa5\x8a\x55\x92\xbc\x96\x82\x3f\x94\xdb\x3d\xe4\xe4\x3f\x21\x77\x49\x2a\x49\xa6\x1e\x1e\xbf\x24\xe6\xec\x16\xdf\x1b\xa1\x3b\xf3\xff\x02\xc9\x14\xca\xad\xa4\x85\xa2\x82\x6b\xe9\x6f\x42\x02\x32\x2c\x28\x07\x45\x5a\x15\x3d\x77\x46\x39\xd5\xcc\x25\x5e\x21\x83\xb8\x21\x18\xb6\xaf\x52\x92\xa3\x47\x68\x88\xea\x58\x80\x56\x4e\x1a\xf2\xbd\x4f\xcc\x29\x7f\x52\x90\x6b\x7d\xff\x0f\x48\xb4\x3d\x3f\x21\x7c\x27\x21\xd3\x2a\x6e\x31\xaa\x2d\x53\xdd\xf3\xe3\x42\x94\x54\xd1\x77\x78\xe2\x0a\x76\x20\xe3\x20\x68\xcb\x30\x86\x41\xf3\x2a\xc7\x2b\xf4\x78\x8e\xfe\xef\x90\x91\x8a\xa9\xc7\xb1\x1d\xc2\xd8\x2f\x0d\x75\xed\xc1\x4e\x9c\xc8\x25\x43\xac\xa8\xbe\xd7\xcc\xa9\xd1\xa9\x21\xa0\x1a\xbd\x04\x61\x94\x34\x2f\x18\xfc\x3e\x16\x50\x8e\x4d\x03\x6f\x1c\x58\xdb\x48\x23\xbc\x11\x82\x01\xe1\xfa\xd3\x3a\x8e\x30\xaf\x18\x33\x7f\xf3\x8d\x39\x11\x9b\x57\xd8\x2a\xfd\x55\x2a\x49\xf9\x0e\xc7\xec\x37\xd4\x25\xf7\xec\x5c\x66\xc7\xd7\x99\xaa\xcf\x4f\x89\x8a\xd3\xb7\x0a\x3a\xaa\x92\x15\xf4\x30\x6f\x1c\xb0\xd6\x46\xe7\x98\x39\x2d\xa4\x28\x40\x2a\x3a\x88\x9e\x29\xba\x88\x37\x2d\xca\x60\x38\xfa\xba\x5b\x20\xac\xa8\x62\xb0\x4c\xd4\xaf\xda\x45\x0a\xba\x5c\x3b\xb9\xc7\x79\xc5\x14\x2d\x18\x34\x19\x1c\x51\xdb\x25\x4d\xb4\x7e\x06\x14\x38\x6c\x59\x55\xd2\x77\xf8\x69\x59\xfc\x7b\x73\xed\x93\x43\xcb\x32\x6d\x3c\x28\xdc\x1b\x9a\xd3\x62\xab\xc2\x27\xf7\x41\xc9\x08\x2b\x23\x08\xad\x13\x57\x21\x9c\xd3\x72\x0d\x42\x72\xf8\x01\x7c\xa7\xf6\x83\xce\x39\xd7\x82\x3c\x1f\x2f\xd6\x60\x1b\xa2\xdf\x35\x89\x52\x20\xe7\x73\x74\xe0\x66\x26\x64\x4e\xb4\x97\x58\xc2\x0e\x0e\xe1\x60\x92\x34\x6d\xa0\x10\xd6\xb5\x83\x61\x27\xe6\x47\xd3\x89\xbd\x63\xfd\x3b\x8d\x03\x3d\x6c\x42\x2d\x5b\x70\xee\xe8\xdf\x4b\xf4\x66\x4e\xe1\x01\x45\x17\x80\x74\xad\x4f\xc3\xf3\xae\xc6\x1d\xc6\xd7\xc2\xce\xc9\xe1\x29\x30\x86\x2f\x4a\xa6\x4b\x15\x84\x73\xc9\x6f\xfd\x7f\xa5\x6e\x9e\xbd\xf1\xb0\xd4\xdd\x45\x5a\xc2\x3e\x4b\x78\xab\xa8\x84\x74\x4a\x91\x3b\x92\x23\x05\xf2\x1c\x1e\x7b\xf3\x09\xf8\xcf\xab\x24\xb6\x60\xa2\xe8\x4c\x9f\x75\x77\xaa\x8c\xe6\x01\x45\x36\x86\xcf\xc3\x63\x3a\xea\xd4\x8d\x7e\x06\xac\x14\x0a\xe0\x29\xf0\xed\x07\x22\x1a\x65\xda\x44\xae\xa2\x73\x1a\xe6\x90\x69\xa2\x8c\x46\xb2\x2f\xde\x49\x38\x08\xed\xfe\xfd\x41\xaf\x9f\xa9\x55\xd7\xdd\x22\x8d\xfa\x45\x63\xc5\x0f\x80\xf3\xb4\x08\xd6\x79\x30\x9e\x93\xee\x59\xa6\xd0\x4b\xee\x22\xe3\x33\xc1\x3a\x27\x68\x36\x78\x7e\x87\x0a\x06\xd5\x2e\x20\xd3\xaf\x15\xfb\xd8\x3b\x73\x14\xbb\x92\xed\x05\x5d\x2e\x29\x38\x2c\x94\xe4\x42\x45\x5e\xd3\xb5\x7d\xdf\x47\xca\x38\xb4\x5c\xaf\xfb\x7d\xdd\x6d\xf4\xa1\x2d\x77\xdd\x2f\xce\x6d\xc4\x7b\x8b\x4e\x67\xa9\x6f\xfe\x04\x00\x00\xff\xff\xb1\xd1\x27\x78\x05\x11\x00\x00") func jsonschemaDraft04JSONBytes() ([]byte, error) { return bindataRead( _jsonschemaDraft04JSON, "jsonschema-draft-04.json", ) } func jsonschemaDraft04JSON() (*asset, error) { bytes, err := jsonschemaDraft04JSONBytes() if err != nil { return nil, err } info := bindataFileInfo{name: "jsonschema-draft-04.json", size: 4357, mode: os.FileMode(420), modTime: time.Unix(1523760398, 0)} a := &asset{bytes: bytes, info: info} return a, nil } var _v2SchemaJSON = []byte("\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\xec\x5d\x4f\x93\xdb\x36\xb2\xbf\xfb\x53\xa0\x14\x57\xd9\xae\xd8\x92\xe3\xf7\x2e\xcf\x97\xd4\xbc\xd8\x49\x66\x37\x5e\x4f\x79\x26\xbb\x87\x78\x5c\x05\x91\x2d\x09\x09\x09\x30\x00\x38\x33\x5a\xef\x7c\xf7\x2d\xf0\x9f\x08\x02\x20\x41\x8a\xd2\xc8\x0e\x0f\xa9\x78\x28\xa0\xd1\xdd\x68\x34\x7e\xdd\xf8\xf7\xf9\x11\x42\x33\x49\x64\x04\xb3\xd7\x68\x76\x86\xfe\x76\xf9\xfe\x1f\xe8\x32\xd8\x40\x8c\xd1\x8a\x71\x74\x79\x8b\xd7\x6b\xe0\xe8\xd5\xfc\x25\x3a\xbb\x38\x9f\xcf\x9e\xab\x0a\x24\x54\xa5\x37\x52\x26\xaf\x17\x0b\x91\x17\x99\x13\xb6\xb8\x79\xb5\x10\x59\xdd\xf9\xef\x82\xd1\x6f\xf2\xc2\x8f\xf3\x4f\xb5\x1a\xea\xc7\x17\x45\x41\xc6\xd7\x8b\x90\xe3\x95\x7c\xf1\xf2\x7f\x8b\xca\x45\x3d\xb9\x4d\x32\xa6\xd8\xf2\x77\x08\x64\xfe\x8d\xc3\x9f\x29\xe1\xa0\x9a\xff\xed\x11\x42\x08\xcd\x8a\xd6\xb3\x9f\x15\x67\x74\xc5\xca\x7f\x27\x58\x6e\xc4\xec\x11\x42\xd7\x59\x5d\x1c\x86\x44\x12\x46\x71\x74\xc1\x59\x02\x5c\x12\x10\xb3\xd7\x68\x85\x23\x01\x59\x81\x04\x4b\x09\x9c\x6a\xbf\x7e\xce\x49\x7d\xba\x7b\x51\xfd\xa1\x44\xe2\xb0\x52\xac\x7d\xb3\x08\x61\x45\x68\x46\x56\x2c\x6e\x80\x86\x8c\xbf\xbd\x93\x40\x05\x61\x74\x96\x95\xbe\x7f\x84\xd0\x7d\x4e\xde\x42\xb7\xe4\xbe\x46\xbb\x14\x5b\x48\x4e\xe8\xba\x90\x05\xa1\x19\xd0\x34\xae\xc4\xce\xbe\xbc\x9a\xbf\x9c\x15\x7f\x5d\x57\xc5\x42\x10\x01\x27\x89\xe2\x48\x51\xb9\xda\x40\xd5\x87\x37\xc0\x15\x5f\x88\xad\x90\xdc\x10\x81\x42\x16\xa4\x31\x50\x39\x2f\x38\xad\xab\xb0\x53\xd8\xac\x94\x56\x6f\xc3\x84\xf4\x11\xa4\x50\xb3\xfa\xe9\xd3\x6f\x9f\x3e\xdf\x2f\xd0\xeb\x8f\x1f\x3f\x7e\xbc\xfe\xf6\xe9\xf7\xaf\x5f\x7f\xfc\x18\x7e\xfb\xec\xfb\xc7\xb3\x36\x79\x54\x43\xe8\x29\xc5\x31\x20\xc6\x11\x49\x9e\xe5\x12\x41\x66\xa0\xe8\xed\x1d\x8e\x93\x08\x5e\xa3\x27\x3b\xc3\x7c\xa2\x73\xba\xc4\x02\x2e\xb0\xdc\xf4\xe5\x76\xd1\xca\x96\xa2\x8a\x94\xcd\x21\xc9\x6c\xec\x2c\x70\x42\x9e\x34\x74\x9d\x19\x7c\xcd\x20\x9c\xea\x2e\x0a\xfe\x42\x84\xd4\x29\x04\x8c\x8a\xb4\x41\xa2\xc1\xdc\x19\x8a\x88\x90\x4a\x49\xef\xce\xdf\xbd\x45\x4a\x52\x81\x70\x10\x40\x22\x21\x44\xcb\x6d\xc5\xec\x4e\x3c\x1c\x45\xef\x57\x9a\xb5\x7d\xae\xfe\xe5\xe4\x31\x86\x90\xe0\xab\x6d\x02\x3b\x2e\xcb\x11\x90\xd9\xa8\xc6\x77\xc2\x59\x98\x06\xfd\xf9\x2e\x78\x45\x01\xa6\xa8\xa0\x71\x5c\xbe\x33\xa7\xd2\xd9\x5f\x95\xef\xd9\xd5\xac\xfd\xdc\x5d\xbf\x5e\xb8\xd1\x3e\xc7\x31\x48\xe0\x5e\x4c\x14\x65\xdf\xb8\xa8\x71\x10\x09\xa3\xc2\xc7\x02\xcb\xa2\x4e\x5a\x02\x82\x94\x13\xb9\xf5\x30\xe6\xb2\xa4\xb5\xfe\x9b\x3e\x7a\xb2\x55\xd2\xa8\x4a\xbc\x16\xb6\x71\x8e\x39\xc7\xdb\x9d\xe1\x10\x09\x71\xbd\x9c\xb3\x41\x89\xd7\xa5\x89\xdc\x57\xb5\x53\x4a\xfe\x4c\xe1\xbc\xa0\x21\x79\x0a\x1a\x0f\x70\xa7\x5c\x08\x8e\xde\xb0\xc0\x43\x24\xad\x74\x63\x0e\xb1\xd9\x90\xe1\xb0\x2d\x13\xa7\x6d\x78\xfd\x04\x14\x38\x8e\x90\xaa\xce\x63\xac\x3e\x23\xbc\x64\xa9\xb4\xf8\x03\x63\xde\xcd\xbe\x16\x13\x4a\x55\xac\x82\x12\xc6\xac\xd4\x35\xf7\x22\xd4\x3a\xff\x22\x73\x0e\x6e\x51\xa0\x75\x1e\xae\x8f\xe8\x5d\xc7\x59\xe6\xe4\x9a\x18\x8d\xd6\x1c\x53\x84\x4d\xb7\x67\x28\x37\x09\x84\x69\x88\x12\x0e\x01\x11\x80\x32\xa2\xf5\xb9\xaa\xc6\xd9\x73\x53\xab\xfb\xb4\x2e\x20\xc6\x54\x92\xa0\x9a\xf3\x69\x1a\x2f\x81\x77\x37\xae\x53\x1a\xce\x40\xc4\xa8\x82\x1c\xb5\xef\xda\x24\x7d\xb9\x61\x69\x14\xa2\x25\xa0\x90\xac\x56\xc0\x81\x4a\xb4\xe2\x2c\xce\x4a\x64\x7a\x9a\x23\xf4\x13\x91\x3f\xa7\x4b\xf4\x63\x84\x6f\x18\x87\x10\xbd\xc3\xfc\x8f\x90\xdd\x52\x44\x04\xc2\x51\xc4\x6e\x21\x74\x48\x21\x81\xc7\xe2\xfd\xea\x12\xf8\x0d\x09\xf6\xe9\x47\x35\xaf\x67\xc4\x14\xf7\x22\x27\x97\xe1\xe2\x76\x2d\x06\x8c\x4a\x1c\x48\x3f\x73\x2d\x0b\x5b\x29\x45\x24\x00\x2a\x0c\x11\xec\x94\xca\xc2\xa6\xc1\x37\x21\x43\x83\x3b\x5f\x97\xf1\x43\x5e\x53\x73\x19\xa5\x36\xd8\x2d\x05\x2e\x34\x0b\xeb\x39\xfc\x1d\x63\x51\x01\xbd\x3d\xbb\x90\x84\x40\x25\x59\x6d\x09\x5d\xa3\x1c\x37\xe6\x5c\x16\x9a\x40\x09\x70\xc1\xe8\x82\xf1\x35\xa6\xe4\xdf\x99\x5c\x8e\x9e\x4d\x79\xb4\x27\x2f\xbf\x7e\xf8\x05\x25\x8c\x50\xa9\x98\x29\x90\x62\x60\xea\x75\xae\x13\xca\xbf\x2b\x1a\x29\x27\x76\xd6\x20\xc6\x64\x5f\xe6\x32\x1a\x08\x87\x21\x07\x21\xbc\xb4\xe4\xe0\x32\x67\xa6\xcd\xf3\x1e\xcd\xd9\x6b\xb6\x6f\x8e\x27\xa7\xed\xdb\xe7\xbc\xcc\x1a\x07\xce\x6f\x87\x33\xf0\xba\x51\x17\x22\x66\x78\x79\x8e\xce\xe5\x13\x81\x80\x06\x2c\xe5\x78\x0d\xa1\xb2\xb8\x54\xa8\x79\x09\xbd\xbf\x3c\x47\x01\x8b\x13\x2c\xc9\x32\xaa\xaa\x1d\xd5\xee\xab\x36\xbd\x6c\xfd\x54\x6c\xc8\x08\x01\x3c\xbd\xe7\x07\x88\xb0\x24\x37\x79\x90\x28\x4a\x1d\x10\x1a\x92\x1b\x12\xa6\x38\x42\x40\xc3\x4c\x43\x62\x8e\xae\x36\xb0\x45\x71\x2a\xa4\x9a\x23\x79\x59\xb1\xa8\xf2\xa4\x0c\x60\x9f\xcc\x8d\x40\xf5\x80\xca\xa8\x99\xc3\xa7\x85\x1f\x31\x25\xa9\x82\xc5\x6d\xbd\xd8\x36\x76\x7c\x02\x28\x97\xf6\x1d\x74\x3b\x11\x7e\x91\xae\x32\xf8\x6c\xf4\xe6\x7b\x9a\xa5\x1f\x62\xc6\x21\xcf\x9a\xe5\xed\x8b\x02\xf3\x2c\x33\x33\xdf\x00\xca\xc9\x09\xb4\x04\xf5\xa5\x08\xd7\xc3\x02\x18\x66\xf1\xab\x1e\x83\x37\x4c\xcd\x12\xc1\x1d\x50\xf6\xaa\xbd\xfe\xe2\x73\x48\x38\x08\xa0\x32\x9b\x18\x44\x86\x0b\x6a\xc1\xaa\x26\x96\x2d\x96\x3c\xa0\x54\x65\x73\x87\x15\xca\x15\xe5\xf5\x94\x46\x9f\x33\x1a\x0c\x9a\xb1\x5a\xd9\x6a\x95\xcd\xcb\x7e\xec\x9a\xc5\x94\x3b\x37\x26\x31\xd7\xfc\xe4\x1f\x13\x8c\x31\x75\x9c\xba\xf7\x87\x3c\xa1\xb7\x4f\x17\x1b\x09\x82\x98\xc4\x70\x95\xd3\xe8\x4c\x48\x5a\xa6\xd6\x2a\x3d\x56\x42\x80\x9f\xaf\xae\x2e\x50\x0c\x42\xe0\x35\x34\x3c\x8a\x62\x03\x37\xba\xb2\x27\x04\xda\x25\x8d\x06\xe2\xa0\x13\x8a\xf3\xf5\xec\x10\x72\x67\x88\x90\x3d\x4b\x64\xeb\xaa\xda\x8f\xf7\x5a\x75\x47\x9a\xa8\x51\x70\x26\xd2\x38\xc6\x7c\xbb\x57\xfc\xbd\xe4\x04\x56\xa8\xa0\x54\x9a\x45\xd5\xf7\x0f\x16\xfc\x57\x1c\x3c\xdf\x23\xba\x77\x38\xda\x16\x4b\x31\x53\x6a\x4d\x9a\x15\x63\xe7\xe1\x18\x69\x9f\x22\xe0\x24\xbb\x94\x4b\x97\xee\x2d\xf9\x70\x87\x72\x7b\xe6\xc4\x33\x2a\x66\x5e\x1c\x35\x72\xe3\x2d\xda\x73\xe4\xc7\x51\x6d\xa4\xa1\x2a\x4f\xde\x94\xcb\xb2\x3e\x31\x48\xae\x82\xce\xc9\xc8\x65\xcd\xc3\xb7\x34\xb6\x2b\xdf\x58\x65\x78\x6e\x73\xac\x5e\x24\x0d\x3f\xdc\x70\x23\xc6\xda\x52\x0b\x2d\x63\x7d\xa9\x49\x2d\x54\x48\x28\xc0\x12\x9c\xe3\x63\xc9\x58\x04\x98\x36\x07\xc8\x0a\xa7\x91\xd4\xf0\xbc\xc1\xa8\xb9\x70\xd0\xc6\xa9\xb6\x78\x80\x5a\xa3\xb4\x2c\xf4\x18\x0b\x8a\x9d\xd0\xb4\x55\x10\xee\x0d\xc5\xd6\xe0\x99\x93\xdc\xa1\x04\xbb\xf1\xa7\x23\xd1\xd1\x97\x8c\x87\x13\x0a\x21\x02\xe9\x99\x25\xed\x20\xc5\x92\x66\x3c\x32\x9c\xd6\x06\xb0\x31\x5c\x86\x29\x0a\xcb\x60\x33\x12\xa5\x91\xfc\x96\x75\xd0\x59\xd7\x13\xbd\xd3\x23\x79\xdd\x2a\x90\xa6\x38\x06\x91\x39\x7f\x20\x72\x03\x1c\x2d\x01\x61\xba\x45\x37\x38\x22\x61\x8e\x71\x85\xc4\x32\x15\x28\x60\x61\x16\xb8\x3d\x29\xdc\x4d\x3d\x2f\x12\x13\x7d\xc8\x7e\x37\xee\xa8\x7f\xfa\xdb\xcb\x17\xff\x77\xfd\xf9\x7f\xee\x9f\x3d\xfe\xcf\xa7\xa7\x45\xfb\xcf\x1e\xf7\xf3\xe0\xff\xc4\x51\x0a\x8e\x4c\xcb\x01\xdc\x0a\x65\xb2\x01\x83\xed\x3d\xe4\xa9\xa3\x4e\x2d\x59\xc5\xe8\x2f\x48\x7d\x5a\x6e\x37\xbf\x5c\x9f\x35\x13\x64\x14\xfa\xef\x0b\x68\xa6\x0d\xb4\x8e\xf1\xa8\xff\xbb\x60\xf4\x03\x64\xab\x5b\x81\x65\x51\xe6\xda\xca\xfa\xf0\xb0\xac\x3e\x9c\xca\x26\x0e\x1d\xdb\x57\x5b\xbb\xb4\x9a\xa6\xb6\x9b\x1a\x6b\xd1\x9a\x9e\x7e\x33\x9a\xec\x41\x69\x45\x22\xb8\xb4\x51\xeb\x04\x77\xca\x6f\x7b\x7b\xc8\xb2\xb0\x95\x92\x25\x5b\xd0\x42\xaa\x2a\xdd\x32\x78\x4f\x0c\xab\x68\x46\x6c\xea\x6d\xf4\x5c\x5e\xde\xc4\xac\xa5\xf9\xd1\x00\x9f\x7d\x98\x65\x24\xbd\xc7\x97\xd4\xb3\x3a\xa8\x2b\xa0\x34\x76\xf9\x65\x5f\x2d\x25\x95\x1b\xcf\xd6\xf4\x9b\x5f\x09\x95\xb0\x36\x3f\xdb\xd0\x39\x2a\x93\x1c\x9d\x03\xa2\x4a\xca\xf5\xf6\x10\xb6\x94\x89\x0b\x6a\x70\x12\x13\x49\x6e\x40\xe4\x29\x12\x2b\xbd\x80\x45\x11\x04\xaa\xc2\x8f\x56\x9e\x5c\x6b\xec\x8d\x5a\x0e\x14\x59\x06\x2b\x1e\x24\xcb\xc2\x56\x4a\x31\xbe\x23\x71\x1a\xfb\x51\x2a\x0b\x3b\x1c\x48\x10\xa5\x82\xdc\xc0\xbb\x3e\x24\x8d\x5a\x76\x2e\x09\xed\xc1\x65\x51\xb8\x83\xcb\x3e\x24\x8d\x5a\x2e\x5d\xfe\x02\x74\x2d\x3d\xf1\xef\xae\xb8\x4b\xe6\x5e\xd4\xaa\xe2\x2e\x5c\x5e\xec\x0e\xf5\x5b\x0c\xcb\x0a\xbb\xa4\x3c\xf7\x1f\x2a\x55\x69\x97\x8c\x7d\x68\x95\xa5\xad\xb4\xf4\x9c\xa5\x07\xb9\x7a\x05\xbb\xad\x50\x6f\xfb\xa0\x4e\x9b\x48\x23\x49\x92\x28\x87\x19\x3e\x32\xee\xca\x3b\x46\x7e\x7f\x18\x64\xcc\xcc\x0f\x34\xe9\x36\x8b\xb7\x6c\xa8\xa5\x5b\x54\x4c\x54\x5b\x15\x3a\xf1\x6c\x2d\xfe\x96\xc8\x0d\xba\x7b\x81\x88\xc8\x23\xab\xee\x7d\x3b\x92\xa7\x60\x29\xe3\xdc\xff\xb8\x64\xe1\xf6\xa2\x5a\x59\xdc\x6f\xeb\x45\x7d\x6a\xd1\x76\x1e\xea\xb8\xf1\xfa\x14\xd3\x36\x63\xe5\xd7\xf3\xe4\xbe\x25\xbd\x5e\x05\xeb\x73\x74\xb5\x21\x2a\x2e\x4e\xa3\x30\xdf\xbf\x43\x28\x2a\xd1\xa5\x2a\x9d\x8a\xfd\x76\xd8\x8d\xbc\x67\x65\xc7\xb8\x03\x45\xec\xa3\xb0\x37\x8a\x70\x4c\x68\x91\x51\x8e\x58\x80\xed\x4a\xf3\x81\x62\xca\x96\xbb\xf1\x52\xcd\x80\xfb\xe4\x4a\x5d\x6c\xdf\x6e\x20\x4b\x80\x30\x8e\x28\x93\xf9\xe9\x8d\x8a\x6d\xd5\x59\x65\x7b\xaa\x44\x9e\xc0\xc2\xd1\x7c\x40\x26\xd6\x1a\xce\xf9\xc5\x69\x7b\x6c\xec\xc8\x71\x7b\xe5\x21\x2e\xd3\xe5\x65\x93\x91\x53\x0b\x7b\x3a\xc7\xfa\x17\x6a\x01\xa7\x33\xd0\xf4\x40\x0f\x39\x87\xda\xe4\x54\x87\x3a\xd5\xe3\xc7\xa6\x8e\x20\xd4\x11\xb2\x4e\xb1\xe9\x14\x9b\x4e\xb1\xe9\x14\x9b\xfe\x15\x63\xd3\x47\xf5\xff\x97\x38\xe9\xcf\x14\xf8\x76\x82\x49\x13\x4c\xaa\x7d\xcd\x6c\x62\x42\x49\x87\x43\x49\x19\x33\x6f\xe3\x44\x6e\x9b\xab\x8a\x3e\x86\xaa\x99\x52\x1b\x5b\x59\x33\x02\x09\xa0\x21\xa1\x6b\x84\x6b\x66\xbb\xdc\x16\x0c\xd3\x68\xab\xec\x36\x4b\xd8\x60\x8a\x40\x31\x85\x6e\x14\x57\x13\xc2\xfb\x92\x10\xde\xbf\x88\xdc\xbc\x53\x5e\x7f\x82\x7a\x13\xd4\x9b\xa0\xde\x04\xf5\x90\x01\xf5\x94\xcb\x7b\x83\x25\x9e\xd0\xde\x84\xf6\x6a\x5f\x4b\xb3\x98\x00\xdf\x04\xf8\x6c\xbc\x7f\x19\x80\xaf\xf1\x71\x45\x22\x98\x40\xe0\x04\x02\x27\x10\xd8\x29\xf5\x04\x02\xff\x4a\x20\x30\xc1\x72\xf3\x65\x02\x40\xd7\xc1\xd1\xe2\x6b\xf1\xa9\x7b\xfb\xe4\x20\xc0\x68\x9d\xd4\xb4\xd3\x96\xb5\xa6\xd1\x41\x20\xe6\x89\xc3\x48\x65\x58\x13\x84\x9c\x56\x56\x3b\x0c\xe0\x6b\x83\x5c\x13\xd2\x9a\x90\xd6\x84\xb4\x26\xa4\x85\x0c\xa4\x45\x19\xfd\xff\x63\x6c\x52\xb5\x1f\x1e\x19\x74\x3a\xcd\xb9\x69\xce\xa6\x3a\x0f\x7a\x2d\x19\xc7\x81\x14\x5d\xcb\xd5\x03\xc9\x39\xd0\xb0\xd1\xb3\xcd\xfb\x7a\x2d\x5d\x3a\x48\xe1\xfa\x2e\xe6\x81\x42\x18\x86\xd6\xc1\xbe\xb1\x23\xd3\xf7\x34\xed\x19\x0a\x0b\xc4\x48\x44\xfd\x22\x50\xb6\x42\x58\xbb\xe5\x3d\xa7\x73\xd4\x8b\xc4\x8c\x70\x61\xec\x73\xee\xc3\x81\x8b\xf5\xe2\xd7\x52\x3e\xcf\xeb\xeb\x17\x3b\x71\x16\xda\x7d\xb8\xde\xf0\x7a\x8f\x06\x2d\xa7\x40\x7b\xc1\x9d\x41\x4d\xb6\x61\xa2\x4e\x9f\x3d\xa0\xc5\xae\xe3\x1c\x1d\x40\x6c\x48\x8b\x63\xa0\xb5\x01\xed\x8e\x02\xe9\x86\xc8\x3b\x06\xee\xdb\x4b\xde\xbd\xc0\xa1\x6f\xcb\xda\xfc\xc2\x44\x16\x87\x9c\x17\x31\xd3\x30\x20\x39\x42\xcb\x6f\xf2\xf1\xf4\x72\x10\xf8\x1c\xa0\xf3\xbd\x10\xea\x21\x35\x7d\xe8\x86\xdb\x15\xed\x81\x81\x07\x28\xbb\x13\x28\xc7\xf8\xce\x7d\x8d\xc2\x31\xb4\x7e\x94\xd6\xdb\x55\xef\x4a\xfb\xed\xc3\x40\x3e\xeb\x9f\xe9\x99\x0f\xdf\x08\x65\x88\x27\x73\x86\x31\x9d\x47\xdf\x55\x19\xba\x3d\xee\x15\x0a\xcd\x8c\xaa\x5e\xb9\xf6\x57\x33\x73\x5a\xa1\x89\x7b\x3b\xa0\xb2\xa4\xc2\xf6\xc1\x53\xb5\x00\xca\x23\xe5\xf4\x60\x6a\xb4\x2d\x74\xea\x4e\xed\x3b\xe3\x47\xfb\xed\x82\x3d\x19\xd4\x3b\x6b\xaf\xae\x2b\x2f\x57\xb3\x82\x68\xcb\xed\x88\x2e\xe1\x5c\xd7\x26\xfa\x0a\x65\xe7\xce\x11\x33\xb4\xdd\x66\xe3\x37\xf6\xfa\x70\xd6\x4f\xa1\x21\x51\xd8\x3c\x26\x14\x4b\xc6\x87\x44\x27\x1c\x70\xf8\x9e\x46\xce\xab\x21\x07\x5f\xc1\x76\x17\x1b\x77\xb4\xda\x75\xa0\x0a\x3a\x30\xe1\xf8\x97\x32\x16\x2b\x00\x75\x85\xee\x62\x46\xef\xd3\x85\xb5\x6b\x60\xbe\xf2\x30\x7a\x8c\x0b\x4b\xa6\xd0\xf9\x64\x42\xe7\x07\x41\x41\xe3\x2c\x5d\xf9\x6d\xe9\x39\x98\x3b\x3b\x5d\x67\xd4\x5c\xed\xf2\xf0\x48\x7b\xbd\x2d\x31\xdd\x3f\x34\xad\x44\x76\x51\x9a\x56\x22\xa7\x95\xc8\x69\x25\xf2\xe1\x56\x22\x1f\x00\x32\x6a\x73\x92\xed\xe1\xc6\x7d\x9f\x49\x2c\x69\x7e\xc8\x31\x4c\x0c\xb4\xf2\x54\x3b\x79\x3b\x9e\x4d\xb4\xd1\x18\x3e\x5f\x9a\x93\xa2\x11\xc3\xda\x27\x0b\xaf\x37\x2e\x5c\x37\xfb\xeb\x9a\xd6\xc3\xac\xc3\xcc\xf8\x1e\x5b\x9d\xac\x22\x64\xb7\xed\x26\xb8\xf3\xb9\x3c\xbb\x1f\xe2\xb0\x22\x77\x43\x6a\x62\x29\x39\x59\xa6\xe6\xe5\xcd\x7b\x83\xc0\x5b\x8e\x93\x64\xac\xeb\xca\x4f\x65\xac\x4a\xbc\x1e\xcd\x82\xfa\x3c\x70\x36\xb6\xb5\xed\x79\xef\xec\x68\x00\xff\x54\xfa\xb5\xe3\xf1\xdb\xe1\xbe\xce\x76\x17\xaf\x57\xb6\x6b\x89\x05\x09\xce\x52\xb9\x01\x2a\x49\xbe\xd9\xf4\xd2\xb8\x7a\xbf\x91\x02\xf3\x22\x8c\x13\xf2\x77\xd8\x8e\x43\x8b\xe1\x54\x6e\x5e\x9d\xc7\x49\x44\x02\x22\xc7\xa4\x79\x81\x85\xb8\x65\x3c\x1c\x93\xe6\x59\xa2\xf8\x1c\x51\x95\x05\xd9\x20\x00\x21\x7e\x60\x21\x58\xa9\x56\xff\xbe\xb6\x5a\x5e\x5b\x3f\x1f\xd6\xd3\x3c\xc4\x4d\xba\x99\xb4\x63\x6e\x7d\x3e\x3d\x57\xd2\x18\x5f\x47\xe8\xc3\x06\x8a\x68\x6c\x7f\x3b\x72\x0f\xe7\xe2\x77\x77\xf1\xd0\x99\xab\xdf\x2e\xfe\xd6\xbb\xcd\x1a\xb9\x90\xd1\xaf\xf2\x38\x3d\xdb\x74\xf8\xeb\xe3\xda\xe8\x2a\x62\xb7\xda\x1b\x07\xa9\xdc\x30\x5e\xbc\x68\xfb\x6b\x9f\x97\xf1\xc6\xb1\xd8\x5c\x29\x1e\x49\x30\xc5\xf7\xde\xad\x91\x42\xf9\xdd\xed\x89\x80\x25\xbe\x37\xd7\xe7\x32\x5c\xe6\x35\xac\xd4\x0c\x2d\xf7\x90\xc4\xe3\xf5\xe3\x2f\x7f\x54\x18\x88\xe3\x61\x47\x85\x64\x7f\xc0\xd7\x3f\x1a\x92\x42\xe9\xc7\x1e\x0d\x95\x76\xa7\x51\xa0\x8f\x02\x1b\x46\x9e\x06\x42\xd1\xf2\x01\x07\x02\xde\xe9\x7d\x1a\x0b\xa7\x32\x16\xcc\xc0\xee\xc4\x90\xd2\x5f\x6f\x98\x54\x5d\xf2\x95\xe1\xa7\x69\x10\x3a\x06\xe1\x65\xb3\x17\x47\x58\x78\xd0\x45\xd6\x5b\xd5\x5f\x25\x1d\x71\x49\xa6\x7a\x64\xda\xd0\x6f\xc7\x3a\x4c\xe3\x09\xc0\x6e\x96\x2c\xa7\xa7\x77\x34\x10\x05\x08\x21\x44\x92\x65\x77\xdf\x20\x5c\xbc\xe7\x97\x3f\xf4\x1a\x45\xd6\xe7\x27\x4a\xde\x74\x27\x66\x11\x7d\x70\xba\xd3\x78\xf9\x1e\x0d\xca\xc8\x39\xde\x7c\xb3\xa6\xe1\xbc\xd7\xc1\x6a\x6f\xb3\x0e\x52\xbe\xe4\x98\x8a\x15\x70\x94\x70\x26\x59\xc0\xa2\xf2\x1c\xfb\xd9\xc5\xf9\xbc\xd5\x92\x9c\xa3\xdf\xe6\x1e\xb3\x0d\x49\xba\x87\x50\x5f\x84\xfe\xe9\xd6\xf8\xbb\xe6\xf0\x7a\xeb\xa6\x65\x3b\x86\x8b\x79\x93\xf5\x59\x20\x6e\xb4\xa7\x44\xf4\x3f\xa5\xfe\x67\x42\x12\xdb\xd3\xe7\xbb\xa5\xa3\x8c\x5c\x2b\x97\xbb\xbb\x7f\x8e\xc5\x6e\xed\x43\x5c\xbf\x74\xc8\x8f\xff\xe6\xd6\xbe\x91\xb6\xf5\x95\xe4\xed\x93\xc4\xa8\x5b\xf9\x76\x4d\x35\xb7\xd8\x8c\xb6\x7d\xaf\x72\xe0\xb6\xbd\x01\x63\x9e\x76\xab\x1a\x32\x76\xe4\x8c\x76\xc2\xad\x6c\xa2\x65\xf7\xcf\xf8\xa7\xda\x2a\xb9\x8c\x3d\x3c\xa3\x9d\x64\x33\xe5\x1a\xb5\x2d\xfb\x86\xa2\x5a\x7f\x19\x5b\x7f\xc6\x3f\xd1\x53\xd3\xe2\x41\x5b\xd3\x4f\xf0\xec\xb0\x42\x73\x43\xd2\x68\x27\xd3\x6a\x6a\x34\xf6\x4e\x1e\x52\x8b\x87\x6c\xcc\xae\x44\xfb\x9e\xa7\x51\x4f\x9d\x55\x03\x81\x8e\x67\xfc\xb4\x69\xf0\x3a\x18\xf2\x40\xd0\xf6\xa8\x34\xe3\xc9\x98\xaf\xf6\xda\x24\xd3\xeb\x60\xb9\x0e\xd3\x1f\xa9\xff\xee\x1f\xfd\x37\x00\x00\xff\xff\x69\x5d\x0a\x6a\x39\x9d\x00\x00") func v2SchemaJSONBytes() ([]byte, error) { return bindataRead( _v2SchemaJSON, "v2/schema.json", ) } func v2SchemaJSON() (*asset, error) { bytes, err := v2SchemaJSONBytes() if err != nil { return nil, err } info := bindataFileInfo{name: "v2/schema.json", size: 40249, mode: os.FileMode(420), modTime: time.Unix(1523760397, 0)} a := &asset{bytes: bytes, info: info} return a, nil } // Asset loads and returns the asset for the given name. // It returns an error if the asset could not be found or // could not be loaded. func Asset(name string) ([]byte, error) { cannonicalName := strings.Replace(name, "\\", "/", -1) if f, ok := _bindata[cannonicalName]; ok { a, err := f() if err != nil { return nil, fmt.Errorf("Asset %s can't read by error: %v", name, err) } return a.bytes, nil } return nil, fmt.Errorf("Asset %s not found", name) } // MustAsset is like Asset but panics when Asset would return an error. // It simplifies safe initialization of global variables. func MustAsset(name string) []byte { a, err := Asset(name) if err != nil { panic("asset: Asset(" + name + "): " + err.Error()) } return a } // AssetInfo loads and returns the asset info for the given name. // It returns an error if the asset could not be found or // could not be loaded. func AssetInfo(name string) (os.FileInfo, error) { cannonicalName := strings.Replace(name, "\\", "/", -1) if f, ok := _bindata[cannonicalName]; ok { a, err := f() if err != nil { return nil, fmt.Errorf("AssetInfo %s can't read by error: %v", name, err) } return a.info, nil } return nil, fmt.Errorf("AssetInfo %s not found", name) } // AssetNames returns the names of the assets. func AssetNames() []string { names := make([]string, 0, len(_bindata)) for name := range _bindata { names = append(names, name) } return names } // _bindata is a table, holding each asset generator, mapped to its name. var _bindata = map[string]func() (*asset, error){ "jsonschema-draft-04.json": jsonschemaDraft04JSON, "v2/schema.json": v2SchemaJSON, } // AssetDir returns the file names below a certain // directory embedded in the file by go-bindata. // For example if you run go-bindata on data/... and data contains the // following hierarchy: // data/ // foo.txt // img/ // a.png // b.png // then AssetDir("data") would return []string{"foo.txt", "img"} // AssetDir("data/img") would return []string{"a.png", "b.png"} // AssetDir("foo.txt") and AssetDir("notexist") would return an error // AssetDir("") will return []string{"data"}. func AssetDir(name string) ([]string, error) { node := _bintree if len(name) != 0 { cannonicalName := strings.Replace(name, "\\", "/", -1) pathList := strings.Split(cannonicalName, "/") for _, p := range pathList { node = node.Children[p] if node == nil { return nil, fmt.Errorf("Asset %s not found", name) } } } if node.Func != nil { return nil, fmt.Errorf("Asset %s not found", name) } rv := make([]string, 0, len(node.Children)) for childName := range node.Children { rv = append(rv, childName) } return rv, nil } type bintree struct { Func func() (*asset, error) Children map[string]*bintree } var _bintree = &bintree{nil, map[string]*bintree{ "jsonschema-draft-04.json": &bintree{jsonschemaDraft04JSON, map[string]*bintree{}}, "v2": &bintree{nil, map[string]*bintree{ "schema.json": &bintree{v2SchemaJSON, map[string]*bintree{}}, }}, }} // RestoreAsset restores an asset under the given directory func RestoreAsset(dir, name string) error { data, err := Asset(name) if err != nil { return err } info, err := AssetInfo(name) if err != nil { return err } err = os.MkdirAll(_filePath(dir, filepath.Dir(name)), os.FileMode(0755)) if err != nil { return err } err = ioutil.WriteFile(_filePath(dir, name), data, info.Mode()) if err != nil { return err } err = os.Chtimes(_filePath(dir, name), info.ModTime(), info.ModTime()) if err != nil { return err } return nil } // RestoreAssets restores an asset under the given directory recursively func RestoreAssets(dir, name string) error { children, err := AssetDir(name) // File if err != nil { return RestoreAsset(dir, name) } // Dir for _, child := range children { err = RestoreAssets(dir, filepath.Join(name, child)) if err != nil { return err } } return nil } func _filePath(dir, name string) string { cannonicalName := strings.Replace(name, "\\", "/", -1) return filepath.Join(append([]string{dir}, strings.Split(cannonicalName, "/")...)...) } golang-github-go-openapi-spec-0.15.0/contact_info.go000066400000000000000000000015521332117131300223030ustar00rootroot00000000000000// Copyright 2015 go-swagger maintainers // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. // You may obtain a copy of the License at // // http://www.apache.org/licenses/LICENSE-2.0 // // Unless required by applicable law or agreed to in writing, software // distributed under the License is distributed on an "AS IS" BASIS, // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. // See the License for the specific language governing permissions and // limitations under the License. package spec // ContactInfo contact information for the exposed API. // // For more information: http://goo.gl/8us55a#contactObject type ContactInfo struct { Name string `json:"name,omitempty"` URL string `json:"url,omitempty"` Email string `json:"email,omitempty"` } golang-github-go-openapi-spec-0.15.0/contact_info_test.go000066400000000000000000000023541332117131300233430ustar00rootroot00000000000000// Copyright 2015 go-swagger maintainers // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. // You may obtain a copy of the License at // // http://www.apache.org/licenses/LICENSE-2.0 // // Unless required by applicable law or agreed to in writing, software // distributed under the License is distributed on an "AS IS" BASIS, // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. // See the License for the specific language governing permissions and // limitations under the License. package spec import ( "testing" ) var contactInfoJSON = `{"name":"wordnik api team","url":"http://developer.wordnik.com","email":"some@mailayada.dkdkd"}` var contactInfoYAML = `name: wordnik api team url: http://developer.wordnik.com email: some@mailayada.dkdkd ` var contactInfo = ContactInfo{ Name: "wordnik api team", URL: "http://developer.wordnik.com", Email: "some@mailayada.dkdkd", } func TestIntegrationContactInfo(t *testing.T) { assertSerializeJSON(t, contactInfo, contactInfoJSON) assertSerializeYAML(t, contactInfo, contactInfoYAML) assertParsesJSON(t, contactInfoJSON, contactInfo) assertParsesYAML(t, contactInfoYAML, contactInfo) } golang-github-go-openapi-spec-0.15.0/debug.go000066400000000000000000000024411332117131300207210ustar00rootroot00000000000000// Copyright 2015 go-swagger maintainers // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. // You may obtain a copy of the License at // // http://www.apache.org/licenses/LICENSE-2.0 // // Unless required by applicable law or agreed to in writing, software // distributed under the License is distributed on an "AS IS" BASIS, // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. // See the License for the specific language governing permissions and // limitations under the License. package spec import ( "fmt" "log" "os" "path/filepath" "runtime" ) var ( // Debug is true when the SWAGGER_DEBUG env var is not empty. // It enables a more verbose logging of validators. Debug = os.Getenv("SWAGGER_DEBUG") != "" // validateLogger is a debug logger for this package specLogger *log.Logger ) func init() { debugOptions() } func debugOptions() { specLogger = log.New(os.Stdout, "spec:", log.LstdFlags) } func debugLog(msg string, args ...interface{}) { // A private, trivial trace logger, based on go-openapi/spec/expander.go:debugLog() if Debug { _, file1, pos1, _ := runtime.Caller(1) specLogger.Printf("%s:%d: %s", filepath.Base(file1), pos1, fmt.Sprintf(msg, args...)) } } golang-github-go-openapi-spec-0.15.0/debug_test.go000066400000000000000000000024541332117131300217640ustar00rootroot00000000000000// Copyright 2015 go-swagger maintainers // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. // You may obtain a copy of the License at // // http://www.apache.org/licenses/LICENSE-2.0 // // Unless required by applicable law or agreed to in writing, software // distributed under the License is distributed on an "AS IS" BASIS, // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. // See the License for the specific language governing permissions and // limitations under the License. package spec import ( "io/ioutil" "os" "sync" "testing" "github.com/stretchr/testify/assert" ) var ( logMutex = &sync.Mutex{} ) func TestDebug(t *testing.T) { tmpFile, _ := ioutil.TempFile("", "debug-test") tmpName := tmpFile.Name() defer func() { Debug = false // mutex for -race logMutex.Unlock() _ = os.Remove(tmpName) }() // mutex for -race logMutex.Lock() Debug = true debugOptions() defer func() { specLogger.SetOutput(os.Stdout) }() specLogger.SetOutput(tmpFile) debugLog("A debug") Debug = false _ = tmpFile.Close() flushed, _ := os.Open(tmpName) buf := make([]byte, 500) _, _ = flushed.Read(buf) specLogger.SetOutput(os.Stdout) assert.Contains(t, string(buf), "A debug") } golang-github-go-openapi-spec-0.15.0/expander.go000066400000000000000000001023531332117131300214440ustar00rootroot00000000000000// Copyright 2015 go-swagger maintainers // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. // You may obtain a copy of the License at // // http://www.apache.org/licenses/LICENSE-2.0 // // Unless required by applicable law or agreed to in writing, software // distributed under the License is distributed on an "AS IS" BASIS, // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. // See the License for the specific language governing permissions and // limitations under the License. package spec import ( "encoding/json" "fmt" "log" "net/url" "os" "path" "path/filepath" "reflect" "strings" "sync" "github.com/go-openapi/jsonpointer" "github.com/go-openapi/swag" ) // ExpandOptions provides options for expand. type ExpandOptions struct { RelativeBase string SkipSchemas bool ContinueOnError bool } // ResolutionCache a cache for resolving urls type ResolutionCache interface { Get(string) (interface{}, bool) Set(string, interface{}) } type simpleCache struct { lock sync.RWMutex store map[string]interface{} } var resCache ResolutionCache func init() { resCache = initResolutionCache() } // initResolutionCache initializes the URI resolution cache func initResolutionCache() ResolutionCache { return &simpleCache{store: map[string]interface{}{ "http://swagger.io/v2/schema.json": MustLoadSwagger20Schema(), "http://json-schema.org/draft-04/schema": MustLoadJSONSchemaDraft04(), }} } // resolverContext allows to share a context during spec processing. // At the moment, it just holds the index of circular references found. type resolverContext struct { // circulars holds all visited circular references, which allows shortcuts. // NOTE: this is not just a performance improvement: it is required to figure out // circular references which participate several cycles. // This structure is privately instantiated and needs not be locked against // concurrent access, unless we chose to implement a parallel spec walking. circulars map[string]bool basePath string } func newResolverContext(originalBasePath string) *resolverContext { return &resolverContext{ circulars: make(map[string]bool), basePath: originalBasePath, // keep the root base path in context } } // Get retrieves a cached URI func (s *simpleCache) Get(uri string) (interface{}, bool) { debugLog("getting %q from resolution cache", uri) s.lock.RLock() v, ok := s.store[uri] debugLog("got %q from resolution cache: %t", uri, ok) s.lock.RUnlock() return v, ok } // Set caches a URI func (s *simpleCache) Set(uri string, data interface{}) { s.lock.Lock() s.store[uri] = data s.lock.Unlock() } // ResolveRefWithBase resolves a reference against a context root with preservation of base path func ResolveRefWithBase(root interface{}, ref *Ref, opts *ExpandOptions) (*Schema, error) { resolver, err := defaultSchemaLoader(root, opts, nil, nil) if err != nil { return nil, err } specBasePath := "" if opts != nil && opts.RelativeBase != "" { specBasePath, _ = absPath(opts.RelativeBase) } result := new(Schema) if err := resolver.Resolve(ref, result, specBasePath); err != nil { return nil, err } return result, nil } // ResolveRef resolves a reference against a context root // ref is guaranteed to be in root (no need to go to external files) // ResolveRef is ONLY called from the code generation module func ResolveRef(root interface{}, ref *Ref) (*Schema, error) { res, _, err := ref.GetPointer().Get(root) if err != nil { panic(err) } switch sch := res.(type) { case Schema: return &sch, nil case *Schema: return sch, nil case map[string]interface{}: b, _ := json.Marshal(sch) newSch := new(Schema) _ = json.Unmarshal(b, newSch) return newSch, nil default: return nil, fmt.Errorf("unknown type for the resolved reference") } } // ResolveParameter resolves a parameter reference against a context root func ResolveParameter(root interface{}, ref Ref) (*Parameter, error) { return ResolveParameterWithBase(root, ref, nil) } // ResolveParameterWithBase resolves a parameter reference against a context root and base path func ResolveParameterWithBase(root interface{}, ref Ref, opts *ExpandOptions) (*Parameter, error) { resolver, err := defaultSchemaLoader(root, opts, nil, nil) if err != nil { return nil, err } result := new(Parameter) if err := resolver.Resolve(&ref, result, ""); err != nil { return nil, err } return result, nil } // ResolveResponse resolves response a reference against a context root func ResolveResponse(root interface{}, ref Ref) (*Response, error) { return ResolveResponseWithBase(root, ref, nil) } // ResolveResponseWithBase resolves response a reference against a context root and base path func ResolveResponseWithBase(root interface{}, ref Ref, opts *ExpandOptions) (*Response, error) { resolver, err := defaultSchemaLoader(root, opts, nil, nil) if err != nil { return nil, err } result := new(Response) if err := resolver.Resolve(&ref, result, ""); err != nil { return nil, err } return result, nil } // ResolveItems resolves header and parameter items reference against a context root and base path func ResolveItems(root interface{}, ref Ref, opts *ExpandOptions) (*Items, error) { resolver, err := defaultSchemaLoader(root, opts, nil, nil) if err != nil { return nil, err } basePath := "" if opts.RelativeBase != "" { basePath = opts.RelativeBase } result := new(Items) if err := resolver.Resolve(&ref, result, basePath); err != nil { return nil, err } return result, nil } // ResolvePathItem resolves response a path item against a context root and base path func ResolvePathItem(root interface{}, ref Ref, opts *ExpandOptions) (*PathItem, error) { resolver, err := defaultSchemaLoader(root, opts, nil, nil) if err != nil { return nil, err } basePath := "" if opts.RelativeBase != "" { basePath = opts.RelativeBase } result := new(PathItem) if err := resolver.Resolve(&ref, result, basePath); err != nil { return nil, err } return result, nil } type schemaLoader struct { root interface{} options *ExpandOptions cache ResolutionCache context *resolverContext loadDoc func(string) (json.RawMessage, error) } var idPtr, _ = jsonpointer.New("/id") var refPtr, _ = jsonpointer.New("/$ref") // PathLoader function to use when loading remote refs var PathLoader func(string) (json.RawMessage, error) func init() { PathLoader = func(path string) (json.RawMessage, error) { data, err := swag.LoadFromFileOrHTTP(path) if err != nil { return nil, err } return json.RawMessage(data), nil } } func defaultSchemaLoader( root interface{}, expandOptions *ExpandOptions, cache ResolutionCache, context *resolverContext) (*schemaLoader, error) { if cache == nil { cache = resCache } if expandOptions == nil { expandOptions = &ExpandOptions{} } absBase, _ := absPath(expandOptions.RelativeBase) if context == nil { context = newResolverContext(absBase) } return &schemaLoader{ root: root, options: expandOptions, cache: cache, context: context, loadDoc: func(path string) (json.RawMessage, error) { debugLog("fetching document at %q", path) return PathLoader(path) }, }, nil } func idFromNode(node interface{}) (*Ref, error) { if idValue, _, err := idPtr.Get(node); err == nil { if refStr, ok := idValue.(string); ok && refStr != "" { idRef, err := NewRef(refStr) if err != nil { return nil, err } return &idRef, nil } } return nil, nil } func nextRef(startingNode interface{}, startingRef *Ref, ptr *jsonpointer.Pointer) *Ref { if startingRef == nil { return nil } if ptr == nil { return startingRef } ret := startingRef var idRef *Ref node := startingNode for _, tok := range ptr.DecodedTokens() { node, _, _ = jsonpointer.GetForToken(node, tok) if node == nil { break } idRef, _ = idFromNode(node) if idRef != nil { nw, err := ret.Inherits(*idRef) if err != nil { break } ret = nw } refRef, _, _ := refPtr.Get(node) if refRef != nil { var rf Ref switch value := refRef.(type) { case string: rf, _ = NewRef(value) } nw, err := ret.Inherits(rf) if err != nil { break } nwURL := nw.GetURL() if nwURL.Scheme == "file" || (nwURL.Scheme == "" && nwURL.Host == "") { nwpt := filepath.ToSlash(nwURL.Path) if filepath.IsAbs(nwpt) { _, err := os.Stat(nwpt) if err != nil { nwURL.Path = filepath.Join(".", nwpt) } } } ret = nw } } return ret } // normalize absolute path for cache. // on Windows, drive letters should be converted to lower as scheme in net/url.URL func normalizeAbsPath(path string) string { u, err := url.Parse(path) if err != nil { debugLog("normalize absolute path failed: %s", err) return path } return u.String() } // base or refPath could be a file path or a URL // given a base absolute path and a ref path, return the absolute path of refPath // 1) if refPath is absolute, return it // 2) if refPath is relative, join it with basePath keeping the scheme, hosts, and ports if exists // base could be a directory or a full file path func normalizePaths(refPath, base string) string { refURL, _ := url.Parse(refPath) if path.IsAbs(refURL.Path) || filepath.IsAbs(refPath) { // refPath is actually absolute if refURL.Host != "" { return refPath } parts := strings.Split(refPath, "#") result := filepath.FromSlash(parts[0]) if len(parts) == 2 { result += "#" + parts[1] } return result } // relative refPath baseURL, _ := url.Parse(base) if !strings.HasPrefix(refPath, "#") { // combining paths if baseURL.Host != "" { baseURL.Path = path.Join(path.Dir(baseURL.Path), refURL.Path) } else { // base is a file newBase := fmt.Sprintf("%s#%s", filepath.Join(filepath.Dir(base), filepath.FromSlash(refURL.Path)), refURL.Fragment) return newBase } } // copying fragment from ref to base baseURL.Fragment = refURL.Fragment return baseURL.String() } // denormalizePaths returns to simplest notation on file $ref, // i.e. strips the absolute path and sets a path relative to the base path. // // This is currently used when we rewrite ref after a circular ref has been detected func denormalizeFileRef(ref *Ref, relativeBase, originalRelativeBase string) *Ref { debugLog("denormalizeFileRef for: %s", ref.String()) if ref.String() == "" || ref.IsRoot() || ref.HasFragmentOnly { return ref } // strip relativeBase from URI relativeBaseURL, _ := url.Parse(relativeBase) relativeBaseURL.Fragment = "" if relativeBaseURL.IsAbs() && strings.HasPrefix(ref.String(), relativeBase) { // this should work for absolute URI (e.g. http://...): we have an exact match, just trim prefix r, _ := NewRef(strings.TrimPrefix(ref.String(), relativeBase)) return &r } if relativeBaseURL.IsAbs() { // other absolute URL get unchanged (i.e. with a non-empty scheme) return ref } // for relative file URIs: originalRelativeBaseURL, _ := url.Parse(originalRelativeBase) originalRelativeBaseURL.Fragment = "" if strings.HasPrefix(ref.String(), originalRelativeBaseURL.String()) { // the resulting ref is in the expanded spec: return a local ref r, _ := NewRef(strings.TrimPrefix(ref.String(), originalRelativeBaseURL.String())) return &r } // check if we may set a relative path, considering the original base path for this spec. // Example: // spec is located at /mypath/spec.json // my normalized ref points to: /mypath/item.json#/target // expected result: item.json#/target parts := strings.Split(ref.String(), "#") relativePath, err := filepath.Rel(path.Dir(originalRelativeBaseURL.String()), parts[0]) if err != nil { // there is no common ancestor (e.g. different drives on windows) // leaves the ref unchanged return ref } if len(parts) == 2 { relativePath += "#" + parts[1] } r, _ := NewRef(relativePath) return &r } // relativeBase could be an ABSOLUTE file path or an ABSOLUTE URL func normalizeFileRef(ref *Ref, relativeBase string) *Ref { // This is important for when the reference is pointing to the root schema if ref.String() == "" { r, _ := NewRef(relativeBase) return &r } debugLog("normalizing %s against %s (%s)", ref.String(), relativeBase, ref.GetURL().String()) s := normalizePaths(ref.String(), relativeBase) r, _ := NewRef(s) return &r } func (r *schemaLoader) resolveRef(ref *Ref, target interface{}, basePath string) error { tgt := reflect.ValueOf(target) if tgt.Kind() != reflect.Ptr { return fmt.Errorf("resolve ref: target needs to be a pointer") } refURL := ref.GetURL() if refURL == nil { return nil } var res interface{} var data interface{} var err error // Resolve against the root if it isn't nil, and if ref is pointing at the root, or has a fragment only which means // it is pointing somewhere in the root. root := r.root if (ref.IsRoot() || ref.HasFragmentOnly) && root == nil && basePath != "" { if baseRef, erb := NewRef(basePath); erb == nil { root, _, _, _ = r.load(baseRef.GetURL()) } } if (ref.IsRoot() || ref.HasFragmentOnly) && root != nil { data = root } else { baseRef := normalizeFileRef(ref, basePath) debugLog("current ref is: %s", ref.String()) debugLog("current ref normalized file: %s", baseRef.String()) data, _, _, err = r.load(baseRef.GetURL()) if err != nil { return err } } res = data if ref.String() != "" { res, _, err = ref.GetPointer().Get(data) if err != nil { return err } } if err := swag.DynamicJSONToStruct(res, target); err != nil { return err } return nil } func (r *schemaLoader) load(refURL *url.URL) (interface{}, url.URL, bool, error) { debugLog("loading schema from url: %s", refURL) toFetch := *refURL toFetch.Fragment = "" normalized := normalizeAbsPath(toFetch.String()) data, fromCache := r.cache.Get(normalized) if !fromCache { b, err := r.loadDoc(normalized) if err != nil { return nil, url.URL{}, false, err } if err := json.Unmarshal(b, &data); err != nil { return nil, url.URL{}, false, err } r.cache.Set(normalized, data) } return data, toFetch, fromCache, nil } // Resolve resolves a reference against basePath and stores the result in target // Resolve is not in charge of following references, it only resolves ref by following its URL // if the schema that ref is referring to has more refs in it. Resolve doesn't resolve them // if basePath is an empty string, ref is resolved against the root schema stored in the schemaLoader struct func (r *schemaLoader) Resolve(ref *Ref, target interface{}, basePath string) error { return r.resolveRef(ref, target, basePath) } // absPath returns the absolute path of a file func absPath(fname string) (string, error) { if strings.HasPrefix(fname, "http") { return fname, nil } if filepath.IsAbs(fname) { return fname, nil } wd, err := os.Getwd() return filepath.Join(wd, fname), err } // ExpandSpec expands the references in a swagger spec func ExpandSpec(spec *Swagger, options *ExpandOptions) error { resolver, err := defaultSchemaLoader(spec, options, nil, nil) // Just in case this ever returns an error. if shouldStopOnError(err, resolver.options) { return err } // getting the base path of the spec to adjust all subsequent reference resolutions specBasePath := "" if options != nil && options.RelativeBase != "" { specBasePath, _ = absPath(options.RelativeBase) } if options == nil || !options.SkipSchemas { for key, definition := range spec.Definitions { var def *Schema var err error if def, err = expandSchema(definition, []string{fmt.Sprintf("#/definitions/%s", key)}, resolver, specBasePath); shouldStopOnError(err, resolver.options) { return err } if def != nil { spec.Definitions[key] = *def } } } for key, parameter := range spec.Parameters { if err := expandParameter(¶meter, resolver, specBasePath); shouldStopOnError(err, resolver.options) { return err } spec.Parameters[key] = parameter } for key, response := range spec.Responses { if err := expandResponse(&response, resolver, specBasePath); shouldStopOnError(err, resolver.options) { return err } spec.Responses[key] = response } if spec.Paths != nil { for key, path := range spec.Paths.Paths { if err := expandPathItem(&path, resolver, specBasePath); shouldStopOnError(err, resolver.options) { return err } spec.Paths.Paths[key] = path } } return nil } func shouldStopOnError(err error, opts *ExpandOptions) bool { if err != nil && !opts.ContinueOnError { return true } if err != nil { log.Println(err) } return false } // ExpandSchema expands the refs in the schema object with reference to the root object // go-openapi/validate uses this function // notice that it is impossible to reference a json scema in a different file other than root func ExpandSchema(schema *Schema, root interface{}, cache ResolutionCache) error { // Only save the root to a tmp file if it isn't nil. var base string if root != nil { base, _ = absPath("root") if cache == nil { cache = resCache } cache.Set(normalizeAbsPath(base), root) base = "root" } opts := &ExpandOptions{ RelativeBase: base, SkipSchemas: false, ContinueOnError: false, } return ExpandSchemaWithBasePath(schema, cache, opts) } // ExpandSchemaWithBasePath expands the refs in the schema object, base path configured through expand options func ExpandSchemaWithBasePath(schema *Schema, cache ResolutionCache, opts *ExpandOptions) error { if schema == nil { return nil } var basePath string if opts.RelativeBase != "" { basePath, _ = absPath(opts.RelativeBase) } resolver, err := defaultSchemaLoader(nil, opts, cache, nil) if err != nil { return err } refs := []string{""} var s *Schema if s, err = expandSchema(*schema, refs, resolver, basePath); err != nil { return err } *schema = *s return nil } func expandItems(target Schema, parentRefs []string, resolver *schemaLoader, basePath string) (*Schema, error) { if target.Items != nil { if target.Items.Schema != nil { t, err := expandSchema(*target.Items.Schema, parentRefs, resolver, basePath) if err != nil { return nil, err } *target.Items.Schema = *t } for i := range target.Items.Schemas { t, err := expandSchema(target.Items.Schemas[i], parentRefs, resolver, basePath) if err != nil { return nil, err } target.Items.Schemas[i] = *t } } return &target, nil } // basePathFromSchemaID returns a new basePath based on an existing basePath and a schema ID func basePathFromSchemaID(oldBasePath, id string) string { u, err := url.Parse(oldBasePath) if err != nil { panic(err) } uid, err := url.Parse(id) if err != nil { panic(err) } if path.IsAbs(uid.Path) { return id } u.Path = path.Join(path.Dir(u.Path), uid.Path) return u.String() } // isCircular detects cycles in sequences of $ref. // It relies on a private context (which needs not be locked). func (r *schemaLoader) isCircular(ref *Ref, basePath string, parentRefs ...string) (foundCycle bool) { normalizedRef := normalizePaths(ref.String(), basePath) if _, ok := r.context.circulars[normalizedRef]; ok { // circular $ref has been already detected in another explored cycle foundCycle = true return } foundCycle = swag.ContainsStringsCI(parentRefs, normalizedRef) if foundCycle { r.context.circulars[normalizedRef] = true } return } func updateBasePath(transitive *schemaLoader, resolver *schemaLoader, basePath string) string { if transitive != resolver { debugLog("got a new resolver") if transitive.options != nil && transitive.options.RelativeBase != "" { basePath, _ = absPath(transitive.options.RelativeBase) debugLog("new basePath = %s", basePath) } } return basePath } func expandSchema(target Schema, parentRefs []string, resolver *schemaLoader, basePath string) (*Schema, error) { if target.Ref.String() == "" && target.Ref.IsRoot() { // normalizing is important newRef := normalizeFileRef(&target.Ref, basePath) target.Ref = *newRef return &target, nil } /* change the base path of resolution when an ID is encountered otherwise the basePath should inherit the parent's */ // important: ID can be relative path if target.ID != "" { // handling the case when id is a folder // remember that basePath has to be a file refPath := target.ID if strings.HasSuffix(target.ID, "/") { // path.Clean here would not work correctly if basepath is http refPath = fmt.Sprintf("%s%s", refPath, "placeholder.json") } basePath = normalizePaths(refPath, basePath) } /* Explain here what this function does */ var t *Schema /* if Ref is found, everything else doesn't matter */ /* Ref also changes the resolution scope of children expandSchema */ if target.Ref.String() != "" { /* Here the resolution scope is changed because a $ref was encountered */ normalizedRef := normalizeFileRef(&target.Ref, basePath) normalizedBasePath := normalizedRef.RemoteURI() if resolver.isCircular(normalizedRef, basePath, parentRefs...) { // this means there is a cycle in the recursion tree: return the Ref // - circular refs cannot be expanded. We leave them as ref. // - denormalization means that a new local file ref is set relative to the original basePath debugLog("shortcut circular ref") debugLog("basePath: %s", basePath) debugLog("normalized basePath: %s", normalizedBasePath) debugLog("normalized ref: %s", normalizedRef.String()) target.Ref = *denormalizeFileRef(normalizedRef, normalizedBasePath, resolver.context.basePath) return &target, nil } debugLog("basePath: %s", basePath) if Debug { b, _ := json.Marshal(target) debugLog("calling Resolve with target: %s", string(b)) } if err := resolver.Resolve(&target.Ref, &t, basePath); shouldStopOnError(err, resolver.options) { return nil, err } if t != nil { parentRefs = append(parentRefs, normalizedRef.String()) var err error transitiveResolver, err := transitiveResolver(basePath, target.Ref, resolver) if shouldStopOnError(err, resolver.options) { return nil, err } basePath = updateBasePath(transitiveResolver, resolver, normalizedBasePath) return expandSchema(*t, parentRefs, transitiveResolver, basePath) } } t, err := expandItems(target, parentRefs, resolver, basePath) if shouldStopOnError(err, resolver.options) { return &target, err } if t != nil { target = *t } for i := range target.AllOf { t, err := expandSchema(target.AllOf[i], parentRefs, resolver, basePath) if shouldStopOnError(err, resolver.options) { return &target, err } target.AllOf[i] = *t } for i := range target.AnyOf { t, err := expandSchema(target.AnyOf[i], parentRefs, resolver, basePath) if shouldStopOnError(err, resolver.options) { return &target, err } target.AnyOf[i] = *t } for i := range target.OneOf { t, err := expandSchema(target.OneOf[i], parentRefs, resolver, basePath) if shouldStopOnError(err, resolver.options) { return &target, err } if t != nil { target.OneOf[i] = *t } } if target.Not != nil { t, err := expandSchema(*target.Not, parentRefs, resolver, basePath) if shouldStopOnError(err, resolver.options) { return &target, err } if t != nil { *target.Not = *t } } for k := range target.Properties { t, err := expandSchema(target.Properties[k], parentRefs, resolver, basePath) if shouldStopOnError(err, resolver.options) { return &target, err } if t != nil { target.Properties[k] = *t } } if target.AdditionalProperties != nil && target.AdditionalProperties.Schema != nil { t, err := expandSchema(*target.AdditionalProperties.Schema, parentRefs, resolver, basePath) if shouldStopOnError(err, resolver.options) { return &target, err } if t != nil { *target.AdditionalProperties.Schema = *t } } for k := range target.PatternProperties { t, err := expandSchema(target.PatternProperties[k], parentRefs, resolver, basePath) if shouldStopOnError(err, resolver.options) { return &target, err } if t != nil { target.PatternProperties[k] = *t } } for k := range target.Dependencies { if target.Dependencies[k].Schema != nil { t, err := expandSchema(*target.Dependencies[k].Schema, parentRefs, resolver, basePath) if shouldStopOnError(err, resolver.options) { return &target, err } if t != nil { *target.Dependencies[k].Schema = *t } } } if target.AdditionalItems != nil && target.AdditionalItems.Schema != nil { t, err := expandSchema(*target.AdditionalItems.Schema, parentRefs, resolver, basePath) if shouldStopOnError(err, resolver.options) { return &target, err } if t != nil { *target.AdditionalItems.Schema = *t } } for k := range target.Definitions { t, err := expandSchema(target.Definitions[k], parentRefs, resolver, basePath) if shouldStopOnError(err, resolver.options) { return &target, err } if t != nil { target.Definitions[k] = *t } } return &target, nil } func derefPathItem(pathItem *PathItem, parentRefs []string, resolver *schemaLoader, basePath string) error { curRef := pathItem.Ref.String() if curRef != "" { normalizedRef := normalizeFileRef(&pathItem.Ref, basePath) normalizedBasePath := normalizedRef.RemoteURI() if resolver.isCircular(normalizedRef, basePath, parentRefs...) { return nil } if err := resolver.Resolve(&pathItem.Ref, pathItem, basePath); shouldStopOnError(err, resolver.options) { return err } if pathItem.Ref.String() != "" && pathItem.Ref.String() != curRef && basePath != normalizedBasePath { parentRefs = append(parentRefs, normalizedRef.String()) return derefPathItem(pathItem, parentRefs, resolver, normalizedBasePath) } } return nil } func expandPathItem(pathItem *PathItem, resolver *schemaLoader, basePath string) error { if pathItem == nil { return nil } parentRefs := []string{} if err := derefPathItem(pathItem, parentRefs, resolver, basePath); shouldStopOnError(err, resolver.options) { return err } if pathItem.Ref.String() != "" { var err error resolver, err = transitiveResolver(basePath, pathItem.Ref, resolver) if shouldStopOnError(err, resolver.options) { return err } } pathItem.Ref = Ref{} // Currently unused: //parentRefs = parentRefs[0:] for idx := range pathItem.Parameters { if err := expandParameter(&(pathItem.Parameters[idx]), resolver, basePath); shouldStopOnError(err, resolver.options) { return err } } if err := expandOperation(pathItem.Get, resolver, basePath); shouldStopOnError(err, resolver.options) { return err } if err := expandOperation(pathItem.Head, resolver, basePath); shouldStopOnError(err, resolver.options) { return err } if err := expandOperation(pathItem.Options, resolver, basePath); shouldStopOnError(err, resolver.options) { return err } if err := expandOperation(pathItem.Put, resolver, basePath); shouldStopOnError(err, resolver.options) { return err } if err := expandOperation(pathItem.Post, resolver, basePath); shouldStopOnError(err, resolver.options) { return err } if err := expandOperation(pathItem.Patch, resolver, basePath); shouldStopOnError(err, resolver.options) { return err } if err := expandOperation(pathItem.Delete, resolver, basePath); shouldStopOnError(err, resolver.options) { return err } return nil } func expandOperation(op *Operation, resolver *schemaLoader, basePath string) error { if op == nil { return nil } for i, param := range op.Parameters { if err := expandParameter(¶m, resolver, basePath); shouldStopOnError(err, resolver.options) { return err } op.Parameters[i] = param } if op.Responses != nil { responses := op.Responses if err := expandResponse(responses.Default, resolver, basePath); shouldStopOnError(err, resolver.options) { return err } for code, response := range responses.StatusCodeResponses { if err := expandResponse(&response, resolver, basePath); shouldStopOnError(err, resolver.options) { return err } responses.StatusCodeResponses[code] = response } } return nil } func transitiveResolver(basePath string, ref Ref, resolver *schemaLoader) (*schemaLoader, error) { if ref.IsRoot() || ref.HasFragmentOnly { return resolver, nil } baseRef, _ := NewRef(basePath) currentRef := normalizeFileRef(&ref, basePath) // Set a new root to resolve against if !strings.HasPrefix(currentRef.String(), baseRef.String()) { rootURL := currentRef.GetURL() rootURL.Fragment = "" root, _ := resolver.cache.Get(rootURL.String()) var err error // shallow copy of resolver options to set a new RelativeBase when // traversing multiple documents newOptions := resolver.options newOptions.RelativeBase = rootURL.String() debugLog("setting new root: %s", newOptions.RelativeBase) resolver, err = defaultSchemaLoader(root, newOptions, resolver.cache, resolver.context) if err != nil { return nil, err } } return resolver, nil } // ExpandResponse expands a response based on a basepath // This is the exported version of expandResponse // all refs inside response will be resolved relative to basePath func ExpandResponse(response *Response, basePath string) error { opts := &ExpandOptions{ RelativeBase: basePath, } resolver, err := defaultSchemaLoader(nil, opts, nil, nil) if err != nil { return err } return expandResponse(response, resolver, basePath) } func derefResponse(response *Response, parentRefs []string, resolver *schemaLoader, basePath string) error { curRef := response.Ref.String() if curRef != "" { /* Here the resolution scope is changed because a $ref was encountered */ normalizedRef := normalizeFileRef(&response.Ref, basePath) normalizedBasePath := normalizedRef.RemoteURI() if resolver.isCircular(normalizedRef, basePath, parentRefs...) { return nil } if err := resolver.Resolve(&response.Ref, response, basePath); shouldStopOnError(err, resolver.options) { return err } if response.Ref.String() != "" && response.Ref.String() != curRef && basePath != normalizedBasePath { parentRefs = append(parentRefs, normalizedRef.String()) return derefResponse(response, parentRefs, resolver, normalizedBasePath) } } return nil } func expandResponse(response *Response, resolver *schemaLoader, basePath string) error { if response == nil { return nil } parentRefs := []string{} if err := derefResponse(response, parentRefs, resolver, basePath); shouldStopOnError(err, resolver.options) { return err } if response.Ref.String() != "" { transitiveResolver, err := transitiveResolver(basePath, response.Ref, resolver) if shouldStopOnError(err, transitiveResolver.options) { return err } basePath = updateBasePath(transitiveResolver, resolver, basePath) resolver = transitiveResolver } if response.Schema != nil && response.Schema.Ref.String() != "" { // schema expanded to a $ref in another root var ern error response.Schema.Ref, ern = NewRef(normalizePaths(response.Schema.Ref.String(), response.Ref.RemoteURI())) if ern != nil { return ern } } response.Ref = Ref{} parentRefs = parentRefs[0:] if !resolver.options.SkipSchemas && response.Schema != nil { // parentRefs = append(parentRefs, response.Schema.Ref.String()) s, err := expandSchema(*response.Schema, parentRefs, resolver, basePath) if shouldStopOnError(err, resolver.options) { return err } *response.Schema = *s } return nil } // ExpandParameter expands a parameter based on a basepath // This is the exported version of expandParameter // all refs inside parameter will be resolved relative to basePath func ExpandParameter(parameter *Parameter, basePath string) error { opts := &ExpandOptions{ RelativeBase: basePath, } resolver, err := defaultSchemaLoader(nil, opts, nil, nil) if err != nil { return err } return expandParameter(parameter, resolver, basePath) } func derefParameter(parameter *Parameter, parentRefs []string, resolver *schemaLoader, basePath string) error { curRef := parameter.Ref.String() if curRef != "" { normalizedRef := normalizeFileRef(¶meter.Ref, basePath) normalizedBasePath := normalizedRef.RemoteURI() if resolver.isCircular(normalizedRef, basePath, parentRefs...) { return nil } if err := resolver.Resolve(¶meter.Ref, parameter, basePath); shouldStopOnError(err, resolver.options) { return err } if parameter.Ref.String() != "" && parameter.Ref.String() != curRef && basePath != normalizedBasePath { parentRefs = append(parentRefs, normalizedRef.String()) return derefParameter(parameter, parentRefs, resolver, normalizedBasePath) } } return nil } func expandParameter(parameter *Parameter, resolver *schemaLoader, basePath string) error { if parameter == nil { return nil } parentRefs := []string{} if err := derefParameter(parameter, parentRefs, resolver, basePath); shouldStopOnError(err, resolver.options) { return err } if parameter.Ref.String() != "" { transitiveResolver, err := transitiveResolver(basePath, parameter.Ref, resolver) if shouldStopOnError(err, transitiveResolver.options) { return err } basePath = updateBasePath(transitiveResolver, resolver, basePath) resolver = transitiveResolver } if parameter.Schema != nil && parameter.Schema.Ref.String() != "" { // schema expanded to a $ref in another root var ern error parameter.Schema.Ref, ern = NewRef(normalizePaths(parameter.Schema.Ref.String(), parameter.Ref.RemoteURI())) if ern != nil { return ern } } parameter.Ref = Ref{} parentRefs = parentRefs[0:] if !resolver.options.SkipSchemas && parameter.Schema != nil { s, err := expandSchema(*parameter.Schema, parentRefs, resolver, basePath) if shouldStopOnError(err, resolver.options) { return err } *parameter.Schema = *s } return nil } golang-github-go-openapi-spec-0.15.0/expander_test.go000066400000000000000000001462121332117131300225050ustar00rootroot00000000000000// Copyright 2015 go-swagger maintainers // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. // You may obtain a copy of the License at // // http://www.apache.org/licenses/LICENSE-2.0 // // Unless required by applicable law or agreed to in writing, software // distributed under the License is distributed on an "AS IS" BASIS, // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. // See the License for the specific language governing permissions and // limitations under the License. package spec import ( "encoding/json" "io/ioutil" "log" "net/http" "net/http/httptest" "os" "path/filepath" "regexp" "runtime" "strings" "testing" "github.com/go-openapi/jsonpointer" "github.com/go-openapi/swag" "github.com/stretchr/testify/assert" ) func jsonDoc(path string) (json.RawMessage, error) { data, err := swag.LoadFromFileOrHTTP(path) if err != nil { return nil, err } return json.RawMessage(data), nil } // tests that paths are normalized correctly func TestNormalizePaths(t *testing.T) { type testNormalizePathsTestCases []struct { refPath string base string expOutput string } testCases := func() testNormalizePathsTestCases { testCases := testNormalizePathsTestCases{ { // http basePath, absolute refPath refPath: "http://www.anotherexample.com/another/base/path/swagger.json#/definitions/Pet", base: "http://www.example.com/base/path/swagger.json", expOutput: "http://www.anotherexample.com/another/base/path/swagger.json#/definitions/Pet", }, { // http basePath, relative refPath refPath: "another/base/path/swagger.json#/definitions/Pet", base: "http://www.example.com/base/path/swagger.json", expOutput: "http://www.example.com/base/path/another/base/path/swagger.json#/definitions/Pet", }, } if runtime.GOOS == "windows" { testCases = append(testCases, testNormalizePathsTestCases{ { // file basePath, absolute refPath, no fragment refPath: `C:\another\base\path.json`, base: `C:\base\path.json`, expOutput: `C:\another\base\path.json`, }, { // file basePath, absolute refPath refPath: `C:\another\base\path.json#/definitions/Pet`, base: `C:\base\path.json`, expOutput: `C:\another\base\path.json#/definitions/Pet`, }, { // file basePath, relative refPath refPath: `another\base\path.json#/definitions/Pet`, base: `C:\base\path.json`, expOutput: `C:\base\another\base\path.json#/definitions/Pet`, }, }...) return testCases } // linux case testCases = append(testCases, testNormalizePathsTestCases{ { // file basePath, absolute refPath, no fragment refPath: "/another/base/path.json", base: "/base/path.json", expOutput: "/another/base/path.json", }, { // file basePath, absolute refPath refPath: "/another/base/path.json#/definitions/Pet", base: "/base/path.json", expOutput: "/another/base/path.json#/definitions/Pet", }, { // file basePath, relative refPath refPath: "another/base/path.json#/definitions/Pet", base: "/base/path.json", expOutput: "/base/another/base/path.json#/definitions/Pet", }, }...) return testCases }() for _, tcase := range testCases { out := normalizePaths(tcase.refPath, tcase.base) assert.Equal(t, tcase.expOutput, out) } } func TestExpandsKnownRef(t *testing.T) { schema := RefProperty("http://json-schema.org/draft-04/schema#") if assert.NoError(t, ExpandSchema(schema, nil, nil)) { assert.Equal(t, "Core schema meta-schema", schema.Description) } } func TestExpandResponseSchema(t *testing.T) { fp := "./fixtures/local_expansion/spec.json" b, err := jsonDoc(fp) if assert.NoError(t, err) { var spec Swagger if err := json.Unmarshal(b, &spec); assert.NoError(t, err) { err := ExpandSpec(&spec, &ExpandOptions{RelativeBase: fp}) if assert.NoError(t, err) { sch := spec.Paths.Paths["/item"].Get.Responses.StatusCodeResponses[200].Schema if assert.NotNil(t, sch) { assert.Empty(t, sch.Ref.String()) assert.Contains(t, sch.Type, "object") assert.Len(t, sch.Properties, 2) } } } } } func TestSpecExpansion(t *testing.T) { spec := new(Swagger) // resolver, err := defaultSchemaLoader(spec, nil, nil,nil) // assert.NoError(t, err) err := ExpandSpec(spec, nil) assert.NoError(t, err) specDoc, err := jsonDoc("fixtures/expansion/all-the-things.json") assert.NoError(t, err) specPath, _ := absPath("fixtures/expansion/all-the-things.json") opts := &ExpandOptions{ RelativeBase: specPath, } spec = new(Swagger) err = json.Unmarshal(specDoc, spec) assert.NoError(t, err) pet := spec.Definitions["pet"] errorModel := spec.Definitions["errorModel"] petResponse := spec.Responses["petResponse"] petResponse.Schema = &pet stringResponse := spec.Responses["stringResponse"] tagParam := spec.Parameters["tag"] idParam := spec.Parameters["idParam"] err = ExpandSpec(spec, opts) assert.NoError(t, err) assert.Equal(t, tagParam, spec.Parameters["query"]) assert.Equal(t, petResponse, spec.Responses["petResponse"]) assert.Equal(t, petResponse, spec.Responses["anotherPet"]) assert.Equal(t, pet, *spec.Responses["petResponse"].Schema) assert.Equal(t, stringResponse, *spec.Paths.Paths["/"].Get.Responses.Default) assert.Equal(t, petResponse, spec.Paths.Paths["/"].Get.Responses.StatusCodeResponses[200]) assert.Equal(t, pet, *spec.Paths.Paths["/pets"].Get.Responses.StatusCodeResponses[200].Schema.Items.Schema) assert.Equal(t, errorModel, *spec.Paths.Paths["/pets"].Get.Responses.Default.Schema) assert.Equal(t, pet, spec.Definitions["petInput"].AllOf[0]) assert.Equal(t, spec.Definitions["petInput"], *spec.Paths.Paths["/pets"].Post.Parameters[0].Schema) assert.Equal(t, petResponse, spec.Paths.Paths["/pets"].Post.Responses.StatusCodeResponses[200]) assert.Equal(t, errorModel, *spec.Paths.Paths["/pets"].Post.Responses.Default.Schema) pi := spec.Paths.Paths["/pets/{id}"] assert.Equal(t, idParam, pi.Get.Parameters[0]) assert.Equal(t, petResponse, pi.Get.Responses.StatusCodeResponses[200]) assert.Equal(t, errorModel, *pi.Get.Responses.Default.Schema) assert.Equal(t, idParam, pi.Delete.Parameters[0]) assert.Equal(t, errorModel, *pi.Delete.Responses.Default.Schema) } func TestResolveRef(t *testing.T) { var root interface{} err := json.Unmarshal([]byte(PetStore20), &root) assert.NoError(t, err) ref, err := NewRef("#/definitions/Category") assert.NoError(t, err) sch, err := ResolveRef(root, &ref) assert.NoError(t, err) b, _ := sch.MarshalJSON() assert.JSONEq(t, `{"id":"Category","properties":{"id":{"type":"integer","format":"int64"},"name":{"type":"string"}}}`, string(b)) } func TestResponseExpansion(t *testing.T) { specDoc, err := jsonDoc("fixtures/expansion/all-the-things.json") assert.NoError(t, err) basePath, err := absPath("fixtures/expansion/all-the-things.json") assert.NoError(t, err) spec := new(Swagger) err = json.Unmarshal(specDoc, spec) assert.NoError(t, err) resolver, err := defaultSchemaLoader(spec, nil, nil, nil) assert.NoError(t, err) resp := spec.Responses["anotherPet"] expected := spec.Responses["petResponse"] err = expandResponse(&expected, resolver, basePath) assert.NoError(t, err) err = expandResponse(&resp, resolver, basePath) // b, _ := resp.MarshalJSON() // log.Printf(string(b)) // b, _ = expected.MarshalJSON() // log.Printf(string(b)) assert.NoError(t, err) assert.Equal(t, expected, resp) resp2 := spec.Paths.Paths["/"].Get.Responses.Default expected = spec.Responses["stringResponse"] err = expandResponse(resp2, resolver, basePath) assert.NoError(t, err) assert.Equal(t, expected, *resp2) resp = spec.Paths.Paths["/"].Get.Responses.StatusCodeResponses[200] expected = spec.Responses["petResponse"] err = expandResponse(&resp, resolver, basePath) assert.NoError(t, err) // assert.Equal(t, expected, resp) } // test the exported version of ExpandResponse func TestExportedResponseExpansion(t *testing.T) { specDoc, err := jsonDoc("fixtures/expansion/all-the-things.json") assert.NoError(t, err) basePath, err := absPath("fixtures/expansion/all-the-things.json") assert.NoError(t, err) spec := new(Swagger) err = json.Unmarshal(specDoc, spec) assert.NoError(t, err) resp := spec.Responses["anotherPet"] expected := spec.Responses["petResponse"] err = ExpandResponse(&expected, basePath) assert.NoError(t, err) err = ExpandResponse(&resp, basePath) // b, _ := resp.MarshalJSON() // log.Printf(string(b)) // b, _ = expected.MarshalJSON() // log.Printf(string(b)) assert.NoError(t, err) assert.Equal(t, expected, resp) resp2 := spec.Paths.Paths["/"].Get.Responses.Default expected = spec.Responses["stringResponse"] err = ExpandResponse(resp2, basePath) assert.NoError(t, err) assert.Equal(t, expected, *resp2) resp = spec.Paths.Paths["/"].Get.Responses.StatusCodeResponses[200] expected = spec.Responses["petResponse"] err = ExpandResponse(&resp, basePath) assert.NoError(t, err) // assert.Equal(t, expected, resp) } func TestIssue3(t *testing.T) { spec := new(Swagger) specDoc, err := jsonDoc("fixtures/expansion/overflow.json") assert.NoError(t, err) specPath, _ := absPath("fixtures/expansion/overflow.json") opts := &ExpandOptions{ RelativeBase: specPath, } err = json.Unmarshal(specDoc, spec) assert.NoError(t, err) assert.NotPanics(t, func() { err = ExpandSpec(spec, opts) assert.NoError(t, err) }, "Calling expand spec with circular refs, should not panic!") } func TestParameterExpansion(t *testing.T) { paramDoc, err := jsonDoc("fixtures/expansion/params.json") assert.NoError(t, err) spec := new(Swagger) err = json.Unmarshal(paramDoc, spec) assert.NoError(t, err) basePath, err := absPath("fixtures/expansion/params.json") assert.NoError(t, err) resolver, err := defaultSchemaLoader(spec, nil, nil, nil) assert.NoError(t, err) param := spec.Parameters["query"] expected := spec.Parameters["tag"] err = expandParameter(¶m, resolver, basePath) assert.NoError(t, err) assert.Equal(t, expected, param) param = spec.Paths.Paths["/cars/{id}"].Parameters[0] expected = spec.Parameters["id"] err = expandParameter(¶m, resolver, basePath) assert.NoError(t, err) assert.Equal(t, expected, param) } func TestExportedParameterExpansion(t *testing.T) { paramDoc, err := jsonDoc("fixtures/expansion/params.json") assert.NoError(t, err) spec := new(Swagger) err = json.Unmarshal(paramDoc, spec) assert.NoError(t, err) basePath, err := absPath("fixtures/expansion/params.json") assert.NoError(t, err) param := spec.Parameters["query"] expected := spec.Parameters["tag"] err = ExpandParameter(¶m, basePath) assert.NoError(t, err) assert.Equal(t, expected, param) param = spec.Paths.Paths["/cars/{id}"].Parameters[0] expected = spec.Parameters["id"] err = ExpandParameter(¶m, basePath) assert.NoError(t, err) assert.Equal(t, expected, param) } func TestCircularRefsExpansion(t *testing.T) { carsDoc, err := jsonDoc("fixtures/expansion/circularRefs.json") assert.NoError(t, err) basePath, _ := absPath("fixtures/expansion/circularRefs.json") spec := new(Swagger) err = json.Unmarshal(carsDoc, spec) assert.NoError(t, err) resolver, err := defaultSchemaLoader(spec, &ExpandOptions{RelativeBase: basePath}, nil, nil) assert.NoError(t, err) schema := spec.Definitions["car"] assert.NotPanics(t, func() { _, err := expandSchema(schema, []string{"#/definitions/car"}, resolver, basePath) assert.NoError(t, err) }, "Calling expand schema with circular refs, should not panic!") } func TestCircularSpec2Expansion(t *testing.T) { // TODO: assert repeatable results (see commented section below) fixturePath := filepath.Join("fixtures", "expansion", "circular-minimal.json") jazon := expandThisOrDieTrying(t, fixturePath) assert.NotEmpty(t, jazon) // assert stripped $ref in result assert.NotContainsf(t, jazon, "circular-minimal.json#/", "expected %s to be expanded with stripped circular $ref", fixturePath) fixturePath = "fixtures/expansion/circularSpec2.json" jazon = expandThisOrDieTrying(t, fixturePath) assert.NotEmpty(t, jazon) assert.NotContainsf(t, jazon, "circularSpec.json#/", "expected %s to be expanded with stripped circular $ref", fixturePath) /* At the moment, the result of expanding circular references is not stable, when several cycles have intersections: the spec structure is randomly walked through and mutating as expansion is carried out. detected cycles in $ref are not necessarily the shortest matches. This may result in different, functionally correct expanded spec (e.g. with same validations) for i := 0; i < 1; i++ { bbb := expandThisOrDieTrying(t, fixturePath) t.Log(bbb) if !assert.JSONEqf(t, jazon, bbb, "on iteration %d, we should have stable expanded spec", i) { t.FailNow() return } } */ } func Test_MoreCircular(t *testing.T) { // Additional testcase for circular $ref (from go-openapi/validate): // - $ref with file = current file // - circular is located in remote file // // There are 4 variants to run: // - with/without $ref with local file (so its not really remote) // - with circular in a schema in #/responses // - with circular in a schema in #/parameters fixturePath := "fixtures/more_circulars/spec.json" jazon := expandThisOrDieTrying(t, fixturePath) rex := regexp.MustCompile(`"\$ref":\s*"(.+)"`) m := rex.FindAllStringSubmatch(jazon, -1) if assert.NotNil(t, m) { for _, matched := range m { subMatch := matched[1] assert.True(t, strings.HasPrefix(subMatch, "item.json#/item"), "expected $ref to be relative, got: %s", matched[0]) } } fixturePath = "fixtures/more_circulars/spec2.json" jazon = expandThisOrDieTrying(t, fixturePath) rex = regexp.MustCompile(`"\$ref":\s*"(.+)"`) m = rex.FindAllStringSubmatch(jazon, -1) if assert.NotNil(t, m) { for _, matched := range m { subMatch := matched[1] assert.True(t, strings.HasPrefix(subMatch, "item2.json#/item"), "expected $ref to be relative, got: %s", matched[0]) } } fixturePath = "fixtures/more_circulars/spec3.json" jazon = expandThisOrDieTrying(t, fixturePath) rex = regexp.MustCompile(`"\$ref":\s*"(.+)"`) m = rex.FindAllStringSubmatch(jazon, -1) if assert.NotNil(t, m) { for _, matched := range m { subMatch := matched[1] assert.True(t, strings.HasPrefix(subMatch, "item.json#/item"), "expected $ref to be relative, got: %s", matched[0]) } } fixturePath = "fixtures/more_circulars/spec4.json" jazon = expandThisOrDieTrying(t, fixturePath) rex = regexp.MustCompile(`"\$ref":\s*"(.+)"`) m = rex.FindAllStringSubmatch(jazon, -1) if assert.NotNil(t, m) { for _, matched := range m { subMatch := matched[1] assert.True(t, strings.HasPrefix(subMatch, "item4.json#/item"), "expected $ref to be relative, got: %s", matched[0]) } } } func Test_Issue957(t *testing.T) { fixturePath := "fixtures/bugs/957/fixture-957.json" jazon := expandThisOrDieTrying(t, fixturePath) if assert.NotEmpty(t, jazon) { assert.NotContainsf(t, jazon, "fixture-957.json#/", "expected %s to be expanded with stripped circular $ref", fixturePath) rex := regexp.MustCompile(`"\$ref":\s*"(.+)"`) m := rex.FindAllStringSubmatch(jazon, -1) if assert.NotNil(t, m) { for _, matched := range m { subMatch := matched[1] assert.True(t, strings.HasPrefix(subMatch, "#/definitions/"), "expected $ref to be inlined, got: %s", matched[0]) } } //t.Log(jazon) } } func Test_Bitbucket(t *testing.T) { // Additional testcase for circular $ref (from bitbucket api) fixturePath := "fixtures/more_circulars/bitbucket.json" jazon := expandThisOrDieTrying(t, fixturePath) rex := regexp.MustCompile(`"\$ref":\s*"(.+)"`) m := rex.FindAllStringSubmatch(jazon, -1) if assert.NotNil(t, m) { for _, matched := range m { subMatch := matched[1] assert.True(t, strings.HasPrefix(subMatch, "#/definitions/"), "expected $ref to be inlined, got: %s", matched[0]) } } } func Test_ExpandJSONSchemaDraft4(t *testing.T) { fixturePath := filepath.Join("schemas", "jsonschema-draft-04.json") jazon := expandThisSchemaOrDieTrying(t, fixturePath) // assert all $ref maches "$ref": "http://json-schema.org/draft-04/something" rex := regexp.MustCompile(`"\$ref":\s*"(.+)"`) m := rex.FindAllStringSubmatch(jazon, -1) if assert.NotNil(t, m) { for _, matched := range m { subMatch := matched[1] assert.True(t, strings.HasPrefix(subMatch, "http://json-schema.org/draft-04/"), "expected $ref to be remote, got: %s", matched[0]) } } } func Test_ExpandSwaggerSchema(t *testing.T) { fixturePath := filepath.Join("schemas", "v2", "schema.json") jazon := expandThisSchemaOrDieTrying(t, fixturePath) // assert all $ref maches "$ref": "#/definitions/something" rex := regexp.MustCompile(`"\$ref":\s*"(.+)"`) m := rex.FindAllStringSubmatch(jazon, -1) if assert.NotNil(t, m) { for _, matched := range m { subMatch := matched[1] assert.True(t, strings.HasPrefix(subMatch, "#/definitions/"), "expected $ref to be inlined, got: %s", matched[0]) } } } func expandThisSchemaOrDieTrying(t *testing.T, fixturePath string) string { doc, err := jsonDoc(fixturePath) if !assert.NoError(t, err) { t.FailNow() return "" } specPath, _ := absPath(fixturePath) opts := &ExpandOptions{ RelativeBase: specPath, } sch := new(Schema) err = json.Unmarshal(doc, sch) if !assert.NoError(t, err) { t.FailNow() return "" } assert.NotPanics(t, func() { err = ExpandSchemaWithBasePath(sch, nil, opts) assert.NoError(t, err) }, "Calling expand schema circular refs, should not panic!") bbb, _ := json.MarshalIndent(sch, "", " ") return string(bbb) } func expandThisOrDieTrying(t *testing.T, fixturePath string) string { doc, err := jsonDoc(fixturePath) if !assert.NoError(t, err) { t.FailNow() return "" } specPath, _ := absPath(fixturePath) opts := &ExpandOptions{ RelativeBase: specPath, } spec := new(Swagger) err = json.Unmarshal(doc, spec) if !assert.NoError(t, err) { t.FailNow() return "" } assert.NotPanics(t, func() { err = ExpandSpec(spec, opts) assert.NoError(t, err) }, "Calling expand spec with circular refs, should not panic!") bbb, _ := json.MarshalIndent(spec, "", " ") return string(bbb) } func TestContinueOnErrorExpansion(t *testing.T) { defer log.SetOutput(os.Stdout) log.SetOutput(ioutil.Discard) missingRefDoc, err := jsonDoc("fixtures/expansion/missingRef.json") assert.NoError(t, err) specPath, _ := absPath("fixtures/expansion/missingRef.json") testCase := struct { Input *Swagger `json:"input"` Expected *Swagger `json:"expected"` }{} err = json.Unmarshal(missingRefDoc, &testCase) assert.NoError(t, err) opts := &ExpandOptions{ ContinueOnError: true, RelativeBase: specPath, } err = ExpandSpec(testCase.Input, opts) assert.NoError(t, err) // b, _ := testCase.Input.MarshalJSON() // log.Printf(string(b)) assert.Equal(t, testCase.Input, testCase.Expected, "Should continue expanding spec when a definition can't be found.") doc, err := jsonDoc("fixtures/expansion/missingItemRef.json") spec := new(Swagger) err = json.Unmarshal(doc, spec) assert.NoError(t, err) assert.NotPanics(t, func() { err = ExpandSpec(spec, opts) assert.NoError(t, err) }, "Array of missing refs should not cause a panic, and continue to expand spec.") } func TestIssue415(t *testing.T) { doc, err := jsonDoc("fixtures/expansion/clickmeter.json") assert.NoError(t, err) specPath, _ := absPath("fixtures/expansion/clickmeter.json") opts := &ExpandOptions{ RelativeBase: specPath, } spec := new(Swagger) err = json.Unmarshal(doc, spec) assert.NoError(t, err) assert.NotPanics(t, func() { err = ExpandSpec(spec, opts) assert.NoError(t, err) }, "Calling expand spec with response schemas that have circular refs, should not panic!") } func TestCircularSpecExpansion(t *testing.T) { doc, err := jsonDoc("fixtures/expansion/circularSpec.json") assert.NoError(t, err) specPath, _ := absPath("fixtures/expansion/circularSpec.json") opts := &ExpandOptions{ RelativeBase: specPath, } spec := new(Swagger) err = json.Unmarshal(doc, spec) assert.NoError(t, err) assert.NotPanics(t, func() { err = ExpandSpec(spec, opts) assert.NoError(t, err) }, "Calling expand spec with circular refs, should not panic!") } func TestItemsExpansion(t *testing.T) { carsDoc, err := jsonDoc("fixtures/expansion/schemas2.json") assert.NoError(t, err) basePath, _ := absPath("fixtures/expansion/schemas2.json") spec := new(Swagger) err = json.Unmarshal(carsDoc, spec) assert.NoError(t, err) resolver, err := defaultSchemaLoader(spec, nil, nil, nil) assert.NoError(t, err) schema := spec.Definitions["car"] oldBrand := schema.Properties["brand"] assert.NotEmpty(t, oldBrand.Items.Schema.Ref.String()) assert.NotEqual(t, spec.Definitions["brand"], oldBrand) _, err = expandSchema(schema, []string{"#/definitions/car"}, resolver, basePath) assert.NoError(t, err) newBrand := schema.Properties["brand"] assert.Empty(t, newBrand.Items.Schema.Ref.String()) assert.Equal(t, spec.Definitions["brand"], *newBrand.Items.Schema) schema = spec.Definitions["truck"] assert.NotEmpty(t, schema.Items.Schema.Ref.String()) s, err := expandSchema(schema, []string{"#/definitions/truck"}, resolver, basePath) schema = *s assert.NoError(t, err) assert.Empty(t, schema.Items.Schema.Ref.String()) assert.Equal(t, spec.Definitions["car"], *schema.Items.Schema) sch := new(Schema) _, err = expandSchema(*sch, []string{""}, resolver, basePath) assert.NoError(t, err) schema = spec.Definitions["batch"] s, err = expandSchema(schema, []string{"#/definitions/batch"}, resolver, basePath) schema = *s assert.NoError(t, err) assert.Empty(t, schema.Items.Schema.Items.Schema.Ref.String()) assert.Equal(t, *schema.Items.Schema.Items.Schema, spec.Definitions["brand"]) schema = spec.Definitions["batch2"] s, err = expandSchema(schema, []string{"#/definitions/batch2"}, resolver, basePath) schema = *s assert.NoError(t, err) assert.Empty(t, schema.Items.Schemas[0].Items.Schema.Ref.String()) assert.Empty(t, schema.Items.Schemas[1].Items.Schema.Ref.String()) assert.Equal(t, *schema.Items.Schemas[0].Items.Schema, spec.Definitions["brand"]) assert.Equal(t, *schema.Items.Schemas[1].Items.Schema, spec.Definitions["tag"]) schema = spec.Definitions["allofBoth"] s, err = expandSchema(schema, []string{"#/definitions/allofBoth"}, resolver, basePath) schema = *s assert.NoError(t, err) assert.Empty(t, schema.AllOf[0].Items.Schema.Ref.String()) assert.Empty(t, schema.AllOf[1].Items.Schema.Ref.String()) assert.Equal(t, *schema.AllOf[0].Items.Schema, spec.Definitions["brand"]) assert.Equal(t, *schema.AllOf[1].Items.Schema, spec.Definitions["tag"]) schema = spec.Definitions["anyofBoth"] s, err = expandSchema(schema, []string{"#/definitions/anyofBoth"}, resolver, basePath) schema = *s assert.NoError(t, err) assert.Empty(t, schema.AnyOf[0].Items.Schema.Ref.String()) assert.Empty(t, schema.AnyOf[1].Items.Schema.Ref.String()) assert.Equal(t, *schema.AnyOf[0].Items.Schema, spec.Definitions["brand"]) assert.Equal(t, *schema.AnyOf[1].Items.Schema, spec.Definitions["tag"]) schema = spec.Definitions["oneofBoth"] s, err = expandSchema(schema, []string{"#/definitions/oneofBoth"}, resolver, basePath) schema = *s assert.NoError(t, err) assert.Empty(t, schema.OneOf[0].Items.Schema.Ref.String()) assert.Empty(t, schema.OneOf[1].Items.Schema.Ref.String()) assert.Equal(t, *schema.OneOf[0].Items.Schema, spec.Definitions["brand"]) assert.Equal(t, *schema.OneOf[1].Items.Schema, spec.Definitions["tag"]) schema = spec.Definitions["notSomething"] s, err = expandSchema(schema, []string{"#/definitions/notSomething"}, resolver, basePath) schema = *s assert.NoError(t, err) assert.Empty(t, schema.Not.Items.Schema.Ref.String()) assert.Equal(t, *schema.Not.Items.Schema, spec.Definitions["tag"]) schema = spec.Definitions["withAdditional"] s, err = expandSchema(schema, []string{"#/definitions/withAdditional"}, resolver, basePath) schema = *s assert.NoError(t, err) assert.Empty(t, schema.AdditionalProperties.Schema.Items.Schema.Ref.String()) assert.Equal(t, *schema.AdditionalProperties.Schema.Items.Schema, spec.Definitions["tag"]) schema = spec.Definitions["withAdditionalItems"] s, err = expandSchema(schema, []string{"#/definitions/withAdditionalItems"}, resolver, basePath) schema = *s assert.NoError(t, err) assert.Empty(t, schema.AdditionalItems.Schema.Items.Schema.Ref.String()) assert.Equal(t, *schema.AdditionalItems.Schema.Items.Schema, spec.Definitions["tag"]) schema = spec.Definitions["withPattern"] s, err = expandSchema(schema, []string{"#/definitions/withPattern"}, resolver, basePath) schema = *s assert.NoError(t, err) prop := schema.PatternProperties["^x-ab"] assert.Empty(t, prop.Items.Schema.Ref.String()) assert.Equal(t, *prop.Items.Schema, spec.Definitions["tag"]) schema = spec.Definitions["deps"] s, err = expandSchema(schema, []string{"#/definitions/deps"}, resolver, basePath) schema = *s assert.NoError(t, err) prop2 := schema.Dependencies["something"] assert.Empty(t, prop2.Schema.Items.Schema.Ref.String()) assert.Equal(t, *prop2.Schema.Items.Schema, spec.Definitions["tag"]) schema = spec.Definitions["defined"] s, err = expandSchema(schema, []string{"#/definitions/defined"}, resolver, basePath) schema = *s assert.NoError(t, err) prop = schema.Definitions["something"] assert.Empty(t, prop.Items.Schema.Ref.String()) assert.Equal(t, *prop.Items.Schema, spec.Definitions["tag"]) } func TestSchemaExpansion(t *testing.T) { carsDoc, err := jsonDoc("fixtures/expansion/schemas1.json") assert.NoError(t, err) basePath, _ := absPath("fixtures/expansion/schemas1.json") spec := new(Swagger) err = json.Unmarshal(carsDoc, spec) assert.NoError(t, err) resolver, err := defaultSchemaLoader(spec, nil, nil, nil) assert.NoError(t, err) schema := spec.Definitions["car"] oldBrand := schema.Properties["brand"] assert.NotEmpty(t, oldBrand.Ref.String()) assert.NotEqual(t, spec.Definitions["brand"], oldBrand) s, err := expandSchema(schema, []string{"#/definitions/car"}, resolver, basePath) schema = *s assert.NoError(t, err) newBrand := schema.Properties["brand"] assert.Empty(t, newBrand.Ref.String()) assert.Equal(t, spec.Definitions["brand"], newBrand) schema = spec.Definitions["truck"] assert.NotEmpty(t, schema.Ref.String()) s, err = expandSchema(schema, []string{"#/definitions/truck"}, resolver, basePath) schema = *s assert.NoError(t, err) assert.Empty(t, schema.Ref.String()) assert.Equal(t, spec.Definitions["car"], schema) sch := new(Schema) _, err = expandSchema(*sch, []string{""}, resolver, basePath) assert.NoError(t, err) schema = spec.Definitions["batch"] s, err = expandSchema(schema, []string{"#/definitions/batch"}, resolver, basePath) schema = *s assert.NoError(t, err) assert.Empty(t, schema.Items.Schema.Ref.String()) assert.Equal(t, *schema.Items.Schema, spec.Definitions["brand"]) schema = spec.Definitions["batch2"] s, err = expandSchema(schema, []string{"#/definitions/batch2"}, resolver, basePath) schema = *s assert.NoError(t, err) assert.Empty(t, schema.Items.Schemas[0].Ref.String()) assert.Empty(t, schema.Items.Schemas[1].Ref.String()) assert.Equal(t, schema.Items.Schemas[0], spec.Definitions["brand"]) assert.Equal(t, schema.Items.Schemas[1], spec.Definitions["tag"]) schema = spec.Definitions["allofBoth"] s, err = expandSchema(schema, []string{"#/definitions/allofBoth"}, resolver, basePath) schema = *s assert.NoError(t, err) assert.Empty(t, schema.AllOf[0].Ref.String()) assert.Empty(t, schema.AllOf[1].Ref.String()) assert.Equal(t, schema.AllOf[0], spec.Definitions["brand"]) assert.Equal(t, schema.AllOf[1], spec.Definitions["tag"]) schema = spec.Definitions["anyofBoth"] s, err = expandSchema(schema, []string{"#/definitions/anyofBoth"}, resolver, basePath) schema = *s assert.NoError(t, err) assert.Empty(t, schema.AnyOf[0].Ref.String()) assert.Empty(t, schema.AnyOf[1].Ref.String()) assert.Equal(t, schema.AnyOf[0], spec.Definitions["brand"]) assert.Equal(t, schema.AnyOf[1], spec.Definitions["tag"]) schema = spec.Definitions["oneofBoth"] s, err = expandSchema(schema, []string{"#/definitions/oneofBoth"}, resolver, basePath) schema = *s assert.NoError(t, err) assert.Empty(t, schema.OneOf[0].Ref.String()) assert.Empty(t, schema.OneOf[1].Ref.String()) assert.Equal(t, schema.OneOf[0], spec.Definitions["brand"]) assert.Equal(t, schema.OneOf[1], spec.Definitions["tag"]) schema = spec.Definitions["notSomething"] s, err = expandSchema(schema, []string{"#/definitions/notSomething"}, resolver, basePath) schema = *s assert.NoError(t, err) assert.Empty(t, schema.Not.Ref.String()) assert.Equal(t, *schema.Not, spec.Definitions["tag"]) schema = spec.Definitions["withAdditional"] s, err = expandSchema(schema, []string{"#/definitions/withAdditional"}, resolver, basePath) schema = *s assert.NoError(t, err) assert.Empty(t, schema.AdditionalProperties.Schema.Ref.String()) assert.Equal(t, *schema.AdditionalProperties.Schema, spec.Definitions["tag"]) schema = spec.Definitions["withAdditionalItems"] s, err = expandSchema(schema, []string{"#/definitions/withAdditionalItems"}, resolver, basePath) schema = *s assert.NoError(t, err) assert.Empty(t, schema.AdditionalItems.Schema.Ref.String()) assert.Equal(t, *schema.AdditionalItems.Schema, spec.Definitions["tag"]) schema = spec.Definitions["withPattern"] s, err = expandSchema(schema, []string{"#/definitions/withPattern"}, resolver, basePath) schema = *s assert.NoError(t, err) prop := schema.PatternProperties["^x-ab"] assert.Empty(t, prop.Ref.String()) assert.Equal(t, prop, spec.Definitions["tag"]) schema = spec.Definitions["deps"] s, err = expandSchema(schema, []string{"#/definitions/deps"}, resolver, basePath) schema = *s assert.NoError(t, err) prop2 := schema.Dependencies["something"] assert.Empty(t, prop2.Schema.Ref.String()) assert.Equal(t, *prop2.Schema, spec.Definitions["tag"]) schema = spec.Definitions["defined"] s, err = expandSchema(schema, []string{"#/definitions/defined"}, resolver, basePath) schema = *s assert.NoError(t, err) prop = schema.Definitions["something"] assert.Empty(t, prop.Ref.String()) assert.Equal(t, prop, spec.Definitions["tag"]) } func TestDefaultResolutionCache(t *testing.T) { cache := initResolutionCache() sch, ok := cache.Get("not there") assert.False(t, ok) assert.Nil(t, sch) sch, ok = cache.Get("http://swagger.io/v2/schema.json") assert.True(t, ok) assert.Equal(t, swaggerSchema, sch) sch, ok = cache.Get("http://json-schema.org/draft-04/schema") assert.True(t, ok) assert.Equal(t, jsonSchema, sch) cache.Set("something", "here") sch, ok = cache.Get("something") assert.True(t, ok) assert.Equal(t, "here", sch) } func TestRelativeBaseURI(t *testing.T) { server := httptest.NewServer(http.FileServer(http.Dir("fixtures/remote"))) defer server.Close() spec := new(Swagger) // resolver, err := defaultSchemaLoader(spec, nil, nil,nil) // assert.NoError(t, err) err := ExpandSpec(spec, nil) assert.NoError(t, err) specDoc, err := jsonDoc("fixtures/remote/all-the-things.json") assert.NoError(t, err) opts := &ExpandOptions{ RelativeBase: server.URL + "/all-the-things.json", } spec = new(Swagger) err = json.Unmarshal(specDoc, spec) assert.NoError(t, err) pet := spec.Definitions["pet"] errorModel := spec.Definitions["errorModel"] petResponse := spec.Responses["petResponse"] petResponse.Schema = &pet stringResponse := spec.Responses["stringResponse"] tagParam := spec.Parameters["tag"] idParam := spec.Parameters["idParam"] anotherPet := spec.Responses["anotherPet"] anotherPet.Ref = MustCreateRef(server.URL + "/" + anotherPet.Ref.String()) err = ExpandResponse(&anotherPet, opts.RelativeBase) assert.NoError(t, err) spec.Responses["anotherPet"] = anotherPet circularA := spec.Responses["circularA"] circularA.Ref = MustCreateRef(server.URL + "/" + circularA.Ref.String()) err = ExpandResponse(&circularA, opts.RelativeBase) assert.NoError(t, err) spec.Responses["circularA"] = circularA err = ExpandSpec(spec, opts) assert.NoError(t, err) assert.Equal(t, tagParam, spec.Parameters["query"]) assert.Equal(t, petResponse, spec.Responses["petResponse"]) assert.Equal(t, petResponse, spec.Responses["anotherPet"]) assert.Equal(t, pet, *spec.Responses["petResponse"].Schema) assert.Equal(t, stringResponse, *spec.Paths.Paths["/"].Get.Responses.Default) assert.Equal(t, petResponse, spec.Paths.Paths["/"].Get.Responses.StatusCodeResponses[200]) assert.Equal(t, pet, *spec.Paths.Paths["/pets"].Get.Responses.StatusCodeResponses[200].Schema.Items.Schema) assert.Equal(t, errorModel, *spec.Paths.Paths["/pets"].Get.Responses.Default.Schema) assert.Equal(t, pet, spec.Definitions["petInput"].AllOf[0]) assert.Equal(t, spec.Definitions["petInput"], *spec.Paths.Paths["/pets"].Post.Parameters[0].Schema) assert.Equal(t, petResponse, spec.Paths.Paths["/pets"].Post.Responses.StatusCodeResponses[200]) assert.Equal(t, errorModel, *spec.Paths.Paths["/pets"].Post.Responses.Default.Schema) pi := spec.Paths.Paths["/pets/{id}"] assert.Equal(t, idParam, pi.Get.Parameters[0]) assert.Equal(t, petResponse, pi.Get.Responses.StatusCodeResponses[200]) assert.Equal(t, errorModel, *pi.Get.Responses.Default.Schema) assert.Equal(t, idParam, pi.Delete.Parameters[0]) assert.Equal(t, errorModel, *pi.Delete.Responses.Default.Schema) } func resolutionContextServer() *httptest.Server { var servedAt string server := httptest.NewServer(http.HandlerFunc(func(rw http.ResponseWriter, req *http.Request) { // fmt.Println("got a request for", req.URL.String()) if req.URL.Path == "/resolution.json" { b, _ := ioutil.ReadFile("fixtures/specs/resolution.json") var ctnt map[string]interface{} json.Unmarshal(b, &ctnt) ctnt["id"] = servedAt rw.Header().Set("Content-Type", "application/json") rw.WriteHeader(200) bb, _ := json.Marshal(ctnt) rw.Write(bb) return } if req.URL.Path == "/resolution2.json" { b, _ := ioutil.ReadFile("fixtures/specs/resolution2.json") var ctnt map[string]interface{} json.Unmarshal(b, &ctnt) ctnt["id"] = servedAt rw.Header().Set("Content-Type", "application/json") rw.WriteHeader(200) bb, _ := json.Marshal(ctnt) rw.Write(bb) return } if req.URL.Path == "/boolProp.json" { rw.Header().Set("Content-Type", "application/json") rw.WriteHeader(200) b, _ := json.Marshal(map[string]interface{}{ "type": "boolean", }) _, _ = rw.Write(b) return } if req.URL.Path == "/deeper/stringProp.json" { rw.Header().Set("Content-Type", "application/json") rw.WriteHeader(200) b, _ := json.Marshal(map[string]interface{}{ "type": "string", }) rw.Write(b) return } if req.URL.Path == "/deeper/arrayProp.json" { rw.Header().Set("Content-Type", "application/json") rw.WriteHeader(200) b, _ := json.Marshal(map[string]interface{}{ "type": "array", "items": map[string]interface{}{ "type": "file", }, }) rw.Write(b) return } rw.WriteHeader(http.StatusNotFound) })) servedAt = server.URL return server } func TestResolveRemoteRef_RootSame(t *testing.T) { specs := "fixtures/specs/" fileserver := http.FileServer(http.Dir(specs)) server := httptest.NewServer(fileserver) defer server.Close() rootDoc := new(Swagger) b, err := ioutil.ReadFile("fixtures/specs/refed.json") // the filename doesn't matter because ref will eventually point to refed.json specBase, _ := absPath("fixtures/specs/anyotherfile.json") if assert.NoError(t, err) && assert.NoError(t, json.Unmarshal(b, rootDoc)) { var result0 Swagger ref0, _ := NewRef(server.URL + "/refed.json#") resolver0, _ := defaultSchemaLoader(rootDoc, nil, nil, nil) if assert.NoError(t, resolver0.Resolve(&ref0, &result0, "")) { assertSpecs(t, result0, *rootDoc) } var result1 Swagger ref1, _ := NewRef("./refed.json") resolver1, _ := defaultSchemaLoader(rootDoc, &ExpandOptions{ RelativeBase: specBase, }, nil, nil) if assert.NoError(t, resolver1.Resolve(&ref1, &result1, specBase)) { assertSpecs(t, result1, *rootDoc) } } } func TestResolveRemoteRef_FromFragment(t *testing.T) { specs := "fixtures/specs" fileserver := http.FileServer(http.Dir(specs)) server := httptest.NewServer(fileserver) defer server.Close() rootDoc := new(Swagger) b, err := ioutil.ReadFile("fixtures/specs/refed.json") if assert.NoError(t, err) && assert.NoError(t, json.Unmarshal(b, rootDoc)) { var tgt Schema ref, err := NewRef(server.URL + "/refed.json#/definitions/pet") if assert.NoError(t, err) { resolver := &schemaLoader{root: rootDoc, cache: initResolutionCache(), loadDoc: jsonDoc} if assert.NoError(t, resolver.Resolve(&ref, &tgt, "")) { assert.Equal(t, []string{"id", "name"}, tgt.Required) } } } } func TestResolveRemoteRef_FromInvalidFragment(t *testing.T) { specs := "fixtures/specs" fileserver := http.FileServer(http.Dir(specs)) server := httptest.NewServer(fileserver) defer server.Close() rootDoc := new(Swagger) b, err := ioutil.ReadFile("fixtures/specs/refed.json") if assert.NoError(t, err) && assert.NoError(t, json.Unmarshal(b, rootDoc)) { var tgt Schema ref, err := NewRef(server.URL + "/refed.json#/definitions/NotThere") if assert.NoError(t, err) { resolver, _ := defaultSchemaLoader(rootDoc, nil, nil, nil) assert.Error(t, resolver.Resolve(&ref, &tgt, "")) } } } func TestResolveRemoteRef_WithResolutionContext(t *testing.T) { server := resolutionContextServer() defer server.Close() var tgt Schema ref, err := NewRef(server.URL + "/resolution.json#/definitions/bool") if assert.NoError(t, err) { tgt.Ref = ref ExpandSchema(&tgt, nil, nil) assert.Equal(t, StringOrArray([]string{"boolean"}), tgt.Type) } } func TestResolveRemoteRef_WithNestedResolutionContext(t *testing.T) { server := resolutionContextServer() defer server.Close() var tgt Schema ref, err := NewRef(server.URL + "/resolution.json#/items") if assert.NoError(t, err) { tgt.Ref = ref ExpandSchema(&tgt, nil, nil) assert.Equal(t, StringOrArray([]string{"string"}), tgt.Items.Schema.Type) } } /* This next test will have to wait until we do full $ID analysis for every subschema on every file that is referenced */ /* For now, TestResolveRemoteRef_WithNestedResolutionContext replaces this next test */ // func TestResolveRemoteRef_WithNestedResolutionContext_WithParentID(t *testing.T) { // server := resolutionContextServer() // defer server.Close() // var tgt Schema // ref, err := NewRef(server.URL + "/resolution.json#/items/items") // if assert.NoError(t, err) { // tgt.Ref = ref // ExpandSchema(&tgt, nil, nil) // assert.Equal(t, StringOrArray([]string{"string"}), tgt.Type) // } // } func TestResolveRemoteRef_WithNestedResolutionContextWithFragment(t *testing.T) { server := resolutionContextServer() defer server.Close() var tgt Schema ref, err := NewRef(server.URL + "/resolution2.json#/items") if assert.NoError(t, err) { tgt.Ref = ref ExpandSchema(&tgt, nil, nil) assert.Equal(t, StringOrArray([]string{"file"}), tgt.Items.Schema.Type) } } /* This next test will have to wait until we do full $ID analysis for every subschema on every file that is referenced */ /* For now, TestResolveRemoteRef_WithNestedResolutionContext replaces this next test */ // func TestResolveRemoteRef_WithNestedResolutionContextWithFragment_WithParentID(t *testing.T) { // server := resolutionContextServer() // defer server.Close() // rootDoc := new(Swagger) // b, err := ioutil.ReadFile("fixtures/specs/refed.json") // if assert.NoError(t, err) && assert.NoError(t, json.Unmarshal(b, rootDoc)) { // var tgt Schema // ref, err := NewRef(server.URL + "/resolution2.json#/items/items") // if assert.NoError(t, err) { // resolver, _ := defaultSchemaLoader(rootDoc, nil, nil,nil) // if assert.NoError(t, resolver.Resolve(&ref, &tgt, "")) { // assert.Equal(t, StringOrArray([]string{"file"}), tgt.Type) // } // } // } // } func TestResolveRemoteRef_ToParameter(t *testing.T) { specs := "fixtures/specs" fileserver := http.FileServer(http.Dir(specs)) server := httptest.NewServer(fileserver) defer server.Close() rootDoc := new(Swagger) b, err := ioutil.ReadFile("fixtures/specs/refed.json") if assert.NoError(t, err) && assert.NoError(t, json.Unmarshal(b, rootDoc)) { var tgt Parameter ref, err := NewRef(server.URL + "/refed.json#/parameters/idParam") if assert.NoError(t, err) { resolver, _ := defaultSchemaLoader(rootDoc, nil, nil, nil) if assert.NoError(t, resolver.Resolve(&ref, &tgt, "")) { assert.Equal(t, "id", tgt.Name) assert.Equal(t, "path", tgt.In) assert.Equal(t, "ID of pet to fetch", tgt.Description) assert.True(t, tgt.Required) assert.Equal(t, "integer", tgt.Type) assert.Equal(t, "int64", tgt.Format) } } } } func TestResolveRemoteRef_ToPathItem(t *testing.T) { specs := "fixtures/specs" fileserver := http.FileServer(http.Dir(specs)) server := httptest.NewServer(fileserver) defer server.Close() rootDoc := new(Swagger) b, err := ioutil.ReadFile("fixtures/specs/refed.json") if assert.NoError(t, err) && assert.NoError(t, json.Unmarshal(b, rootDoc)) { var tgt PathItem ref, err := NewRef(server.URL + "/refed.json#/paths/" + jsonpointer.Escape("/pets/{id}")) if assert.NoError(t, err) { resolver, _ := defaultSchemaLoader(rootDoc, nil, nil, nil) if assert.NoError(t, resolver.Resolve(&ref, &tgt, "")) { assert.Equal(t, rootDoc.Paths.Paths["/pets/{id}"].Get, tgt.Get) } } } } func TestResolveRemoteRef_ToResponse(t *testing.T) { specs := "fixtures/specs" fileserver := http.FileServer(http.Dir(specs)) server := httptest.NewServer(fileserver) defer server.Close() rootDoc := new(Swagger) b, err := ioutil.ReadFile("fixtures/specs/refed.json") if assert.NoError(t, err) && assert.NoError(t, json.Unmarshal(b, rootDoc)) { var tgt Response ref, err := NewRef(server.URL + "/refed.json#/responses/petResponse") if assert.NoError(t, err) { resolver, _ := defaultSchemaLoader(rootDoc, nil, nil, nil) if assert.NoError(t, resolver.Resolve(&ref, &tgt, "")) { assert.Equal(t, rootDoc.Responses["petResponse"], tgt) } } } } func TestResolveLocalRef_SameRoot(t *testing.T) { rootDoc := new(Swagger) json.Unmarshal(PetStoreJSONMessage, rootDoc) result := new(Swagger) ref, _ := NewRef("#") resolver, _ := defaultSchemaLoader(rootDoc, nil, nil, nil) err := resolver.Resolve(&ref, result, "") if assert.NoError(t, err) { assert.Equal(t, rootDoc, result) } } func TestResolveLocalRef_FromFragment(t *testing.T) { rootDoc := new(Swagger) json.Unmarshal(PetStoreJSONMessage, rootDoc) var tgt Schema ref, err := NewRef("#/definitions/Category") if assert.NoError(t, err) { resolver, _ := defaultSchemaLoader(rootDoc, nil, nil, nil) err := resolver.Resolve(&ref, &tgt, "") if assert.NoError(t, err) { assert.Equal(t, "Category", tgt.ID) } } } func TestResolveLocalRef_FromInvalidFragment(t *testing.T) { rootDoc := new(Swagger) json.Unmarshal(PetStoreJSONMessage, rootDoc) var tgt Schema ref, err := NewRef("#/definitions/NotThere") if assert.NoError(t, err) { resolver, _ := defaultSchemaLoader(rootDoc, nil, nil, nil) err := resolver.Resolve(&ref, &tgt, "") assert.Error(t, err) } } func TestResolveLocalRef_Parameter(t *testing.T) { rootDoc := new(Swagger) b, err := ioutil.ReadFile("fixtures/specs/refed.json") basePath, _ := absPath("fixtures/specs/refed.json") if assert.NoError(t, err) && assert.NoError(t, json.Unmarshal(b, rootDoc)) { var tgt Parameter ref, err := NewRef("#/parameters/idParam") if assert.NoError(t, err) { resolver, _ := defaultSchemaLoader(rootDoc, nil, nil, nil) if assert.NoError(t, resolver.Resolve(&ref, &tgt, basePath)) { assert.Equal(t, "id", tgt.Name) assert.Equal(t, "path", tgt.In) assert.Equal(t, "ID of pet to fetch", tgt.Description) assert.True(t, tgt.Required) assert.Equal(t, "integer", tgt.Type) assert.Equal(t, "int64", tgt.Format) } } } } func TestResolveLocalRef_PathItem(t *testing.T) { rootDoc := new(Swagger) b, err := ioutil.ReadFile("fixtures/specs/refed.json") basePath, _ := absPath("fixtures/specs/refed.json") if assert.NoError(t, err) && assert.NoError(t, json.Unmarshal(b, rootDoc)) { var tgt PathItem ref, err := NewRef("#/paths/" + jsonpointer.Escape("/pets/{id}")) if assert.NoError(t, err) { resolver, _ := defaultSchemaLoader(rootDoc, nil, nil, nil) if assert.NoError(t, resolver.Resolve(&ref, &tgt, basePath)) { assert.Equal(t, rootDoc.Paths.Paths["/pets/{id}"].Get, tgt.Get) } } } } func TestResolveLocalRef_Response(t *testing.T) { rootDoc := new(Swagger) b, err := ioutil.ReadFile("fixtures/specs/refed.json") basePath, _ := absPath("fixtures/specs/refed.json") if assert.NoError(t, err) && assert.NoError(t, json.Unmarshal(b, rootDoc)) { var tgt Response ref, err := NewRef("#/responses/petResponse") if assert.NoError(t, err) { resolver, _ := defaultSchemaLoader(rootDoc, nil, nil, nil) if assert.NoError(t, resolver.Resolve(&ref, &tgt, basePath)) { assert.Equal(t, rootDoc.Responses["petResponse"], tgt) } } } } func TestResolveForTransitiveRefs(t *testing.T) { var spec *Swagger rawSpec, err := ioutil.ReadFile("fixtures/specs/todos.json") assert.NoError(t, err) basePath, err := absPath("fixtures/specs/todos.json") assert.NoError(t, err) opts := &ExpandOptions{ RelativeBase: basePath, } err = json.Unmarshal(rawSpec, &spec) assert.NoError(t, err) err = ExpandSpec(spec, opts) assert.NoError(t, err) } // PetStoreJSONMessage json raw message for Petstore20 var PetStoreJSONMessage = json.RawMessage([]byte(PetStore20)) // PetStore20 json doc for swagger 2.0 pet store const PetStore20 = `{ "swagger": "2.0", "info": { "version": "1.0.0", "title": "Swagger Petstore", "contact": { "name": "Wordnik API Team", "url": "http://developer.wordnik.com" }, "license": { "name": "Creative Commons 4.0 International", "url": "http://creativecommons.org/licenses/by/4.0/" } }, "host": "petstore.swagger.wordnik.com", "basePath": "/api", "schemes": [ "http" ], "paths": { "/pets": { "get": { "security": [ { "basic": [] } ], "tags": [ "Pet Operations" ], "operationId": "getAllPets", "parameters": [ { "name": "status", "in": "query", "description": "The status to filter by", "type": "string" }, { "name": "limit", "in": "query", "description": "The maximum number of results to return", "type": "integer", "format": "int64" } ], "summary": "Finds all pets in the system", "responses": { "200": { "description": "Pet response", "schema": { "type": "array", "items": { "$ref": "#/definitions/Pet" } } }, "default": { "description": "Unexpected error", "schema": { "$ref": "#/definitions/Error" } } } }, "post": { "security": [ { "basic": [] } ], "tags": [ "Pet Operations" ], "operationId": "createPet", "summary": "Creates a new pet", "consumes": ["application/x-yaml"], "produces": ["application/x-yaml"], "parameters": [ { "name": "pet", "in": "body", "description": "The Pet to create", "required": true, "schema": { "$ref": "#/definitions/newPet" } } ], "responses": { "200": { "description": "Created Pet response", "schema": { "$ref": "#/definitions/Pet" } }, "default": { "description": "Unexpected error", "schema": { "$ref": "#/definitions/Error" } } } } }, "/pets/{id}": { "delete": { "security": [ { "apiKey": [] } ], "description": "Deletes the Pet by id", "operationId": "deletePet", "parameters": [ { "name": "id", "in": "path", "description": "ID of pet to delete", "required": true, "type": "integer", "format": "int64" } ], "responses": { "204": { "description": "pet deleted" }, "default": { "description": "unexpected error", "schema": { "$ref": "#/definitions/Error" } } } }, "get": { "tags": [ "Pet Operations" ], "operationId": "getPetById", "summary": "Finds the pet by id", "responses": { "200": { "description": "Pet response", "schema": { "$ref": "#/definitions/Pet" } }, "default": { "description": "Unexpected error", "schema": { "$ref": "#/definitions/Error" } } } }, "parameters": [ { "name": "id", "in": "path", "description": "ID of pet", "required": true, "type": "integer", "format": "int64" } ] } }, "definitions": { "Category": { "id": "Category", "properties": { "id": { "format": "int64", "type": "integer" }, "name": { "type": "string" } } }, "Pet": { "id": "Pet", "properties": { "category": { "$ref": "#/definitions/Category" }, "id": { "description": "unique identifier for the pet", "format": "int64", "maximum": 100.0, "minimum": 0.0, "type": "integer" }, "name": { "type": "string" }, "photoUrls": { "items": { "type": "string" }, "type": "array" }, "status": { "description": "pet status in the store", "enum": [ "available", "pending", "sold" ], "type": "string" }, "tags": { "items": { "$ref": "#/definitions/Tag" }, "type": "array" } }, "required": [ "id", "name" ] }, "newPet": { "anyOf": [ { "$ref": "#/definitions/Pet" }, { "required": [ "name" ] } ] }, "Tag": { "id": "Tag", "properties": { "id": { "format": "int64", "type": "integer" }, "name": { "type": "string" } } }, "Error": { "required": [ "code", "message" ], "properties": { "code": { "type": "integer", "format": "int32" }, "message": { "type": "string" } } } }, "consumes": [ "application/json", "application/xml" ], "produces": [ "application/json", "application/xml", "text/plain", "text/html" ], "securityDefinitions": { "basic": { "type": "basic" }, "apiKey": { "type": "apiKey", "in": "header", "name": "X-API-KEY" } } } ` golang-github-go-openapi-spec-0.15.0/external_docs.go000066400000000000000000000016261332117131300224710ustar00rootroot00000000000000// Copyright 2015 go-swagger maintainers // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. // You may obtain a copy of the License at // // http://www.apache.org/licenses/LICENSE-2.0 // // Unless required by applicable law or agreed to in writing, software // distributed under the License is distributed on an "AS IS" BASIS, // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. // See the License for the specific language governing permissions and // limitations under the License. package spec // ExternalDocumentation allows referencing an external resource for // extended documentation. // // For more information: http://goo.gl/8us55a#externalDocumentationObject type ExternalDocumentation struct { Description string `json:"description,omitempty"` URL string `json:"url,omitempty"` } golang-github-go-openapi-spec-0.15.0/external_docs_test.go000066400000000000000000000020341332117131300235220ustar00rootroot00000000000000// Copyright 2015 go-swagger maintainers // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. // You may obtain a copy of the License at // // http://www.apache.org/licenses/LICENSE-2.0 // // Unless required by applicable law or agreed to in writing, software // distributed under the License is distributed on an "AS IS" BASIS, // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. // See the License for the specific language governing permissions and // limitations under the License. package spec import ( "testing" ) func TestIntegrationExternalDocs(t *testing.T) { var extDocs = ExternalDocumentation{"the name", "the url"} const extDocsYAML = "description: the name\nurl: the url\n" const extDocsJSON = `{"description":"the name","url":"the url"}` assertSerializeJSON(t, extDocs, extDocsJSON) assertSerializeYAML(t, extDocs, extDocsYAML) assertParsesJSON(t, extDocsJSON, extDocs) assertParsesYAML(t, extDocsYAML, extDocs) } golang-github-go-openapi-spec-0.15.0/fixtures/000077500000000000000000000000001332117131300211545ustar00rootroot00000000000000golang-github-go-openapi-spec-0.15.0/fixtures/bugs/000077500000000000000000000000001332117131300221145ustar00rootroot00000000000000golang-github-go-openapi-spec-0.15.0/fixtures/bugs/1429/000077500000000000000000000000001332117131300225135ustar00rootroot00000000000000golang-github-go-openapi-spec-0.15.0/fixtures/bugs/1429/remote/000077500000000000000000000000001332117131300240065ustar00rootroot00000000000000golang-github-go-openapi-spec-0.15.0/fixtures/bugs/1429/remote/farther/000077500000000000000000000000001332117131300254415ustar00rootroot00000000000000golang-github-go-openapi-spec-0.15.0/fixtures/bugs/1429/remote/farther/farther.yaml000066400000000000000000000001211332117131300277520ustar00rootroot00000000000000farFarAway: type: object properties: farFarAwayProp: type: integer golang-github-go-openapi-spec-0.15.0/fixtures/bugs/1429/remote/remote.yaml000066400000000000000000000003511332117131300261640ustar00rootroot00000000000000aRemotePlace: type: object properties: remoteProp: type: integer fartherProp: $ref: './farther/farther.yaml#/farFarAway' moreRemoteThanYouCanThink: #$ref: './remote/remote.yaml#/farFarAway' type: integer golang-github-go-openapi-spec-0.15.0/fixtures/bugs/1429/remote/remote/000077500000000000000000000000001332117131300253015ustar00rootroot00000000000000golang-github-go-openapi-spec-0.15.0/fixtures/bugs/1429/remote/remote/remote.yaml000066400000000000000000000001211332117131300274520ustar00rootroot00000000000000farFarAway: type: object properties: farFarAwayProp: type: integer golang-github-go-openapi-spec-0.15.0/fixtures/bugs/1429/responses.yaml000066400000000000000000000041621332117131300254230ustar00rootroot00000000000000swagger: '2.0' info: title: Responses version: 0.1.0 definitions: Error: type: object description: | Contains all the properties any error response from the API will contain. Some properties are optional so might be empty most of the time required: - code - message properties: code: description: the error code, this is not necessarily the http status code type: integer format: int32 message: description: a human readable version of the error type: string helpUrl: description: an optional url for getting more help about this error type: string format: uri myArray: type: array items: $ref: '#/definitions/myItems' myItems: type: object properties: propItems1: type: integer propItems2: $ref: 'remote/remote.yaml#/aRemotePlace' otherPlace: Error: type: object properties: message: type: string parameters: BadRequest: name: badRequest in: body schema: $ref: '#/definitions/Error' GoodRequest: name: goodRequest in: body schema: $ref: '#/otherPlace/Error' PlainRequest: name: plainRequest in: body schema: type: integer StrangeRequest: name: stangeRequest in: body schema: $ref: 'responses.yaml#/otherPlace/Error' RemoteRequest: name: remoteRequest in: body schema: $ref: './remote/remote.yaml#/moreRemoteThanYouCanThink' responses: BadRequest: description: Bad request schema: $ref: '#/definitions/Error' GoodRequest: description: good request schema: $ref: '#/otherPlace/Error' PlainRequest: description: plain request schema: type: integer StrangeRequest: description: strange request schema: $ref: 'responses.yaml#/otherPlace/Error' RemoteRequest: description: remote request schema: $ref: './remote/remote.yaml#/moreRemoteThanYouCanThink' paths: /: get: summary: GET operationId: getAll responses: 200: description: Ok golang-github-go-openapi-spec-0.15.0/fixtures/bugs/1429/swagger.yaml000066400000000000000000000021151332117131300250350ustar00rootroot00000000000000swagger: '2.0' info: title: Object version: 0.1.0 paths: /: get: summary: GET operationId: getAll parameters: - $ref: 'responses.yaml#/parameters/BadRequest' - $ref: 'responses.yaml#/parameters/GoodRequest' - $ref: 'responses.yaml#/parameters/PlainRequest' - $ref: 'responses.yaml#/parameters/StrangeRequest' - $ref: 'responses.yaml#/parameters/RemoteRequest' - name: nestedBody in: body schema: $ref: '#/definitions/nestedRefDefinition' responses: 200: description: Ok 400: $ref: 'responses.yaml#/responses/BadRequest' 403: $ref: 'responses.yaml#/responses/GoodRequest' 404: $ref: 'responses.yaml#/responses/PlainRequest' 304: $ref: 'responses.yaml#/responses/StrangeRequest' 204: $ref: 'responses.yaml#/responses/RemoteRequest' definitions: badDefinition: $ref: 'responses.yaml#/definitions/Error' nestedRefDefinition: $ref: 'responses.yaml#/definitions/myArray' golang-github-go-openapi-spec-0.15.0/fixtures/bugs/69/000077500000000000000000000000001332117131300223525ustar00rootroot00000000000000golang-github-go-openapi-spec-0.15.0/fixtures/bugs/69/dapperbox.json000066400000000000000000035754441332117131300252570ustar00rootroot00000000000000{ "swagger": "2.0", "info": { "version": "V2", "title": "Payroll" }, "host": "localhost:9333", "schemes": [ "http" ], "paths": { "/api/v2/business/{businessId}/aba": { "get": { "tags": [ "AbaSettings" ], "summary": "List ABA Settings", "description": "Retrieves all the ABA settings associated with the business.\n\nThis operation supports OData queries.", "operationId": "ABA_GetAbaDetails", "consumes": [], "produces": [ "application/json", "text/json", "application/xml", "text/xml" ], "parameters": [ { "name": "businessId", "in": "path", "required": true, "type": "string" } ], "responses": { "200": { "description": "OK", "schema": { "type": "array", "items": { "$ref": "#/definitions/BusinessAbaModel" }, "xml": { "name": "BusinessAbaModel", "wrapped": true }, "title": "IEnumerable" } } } }, "post": { "tags": [ "AbaSettings" ], "summary": "Create ABA Settings Record", "description": "Creates a new ABA settings record for the business.", "operationId": "ABA_Post", "consumes": [ "application/json", "text/json", "application/xml", "text/xml", "application/x-www-form-urlencoded" ], "produces": [ "application/json", "text/json", "application/xml", "text/xml" ], "parameters": [ { "name": "abaDetails", "in": "body", "required": true, "schema": { "$ref": "#/definitions/BusinessAbaModel" } }, { "name": "businessId", "in": "path", "required": true, "type": "string" } ], "responses": { "200": { "description": "OK" } } } }, "/api/v2/business/{businessId}/aba/{id}": { "get": { "tags": [ "AbaSettings" ], "summary": "Get ABA Settings Record by ID", "description": "Gets the details for the ABA settings record with the specified ID.", "operationId": "ABA_Get", "consumes": [], "produces": [ "application/json", "text/json", "application/xml", "text/xml" ], "parameters": [ { "name": "id", "in": "path", "required": true, "type": "integer", "format": "int32", "title": "Int32" }, { "name": "businessId", "in": "path", "required": true, "type": "string" } ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/BusinessAbaModel" } } } }, "put": { "tags": [ "AbaSettings" ], "summary": "Update ABA Settings Record", "description": "Updates the ABA settings record with the specified ID.", "operationId": "ABA_Put", "consumes": [ "application/json", "text/json", "application/xml", "text/xml", "application/x-www-form-urlencoded" ], "produces": [ "application/json", "text/json", "application/xml", "text/xml" ], "parameters": [ { "name": "id", "in": "path", "required": true, "type": "integer", "format": "int32", "title": "Int32" }, { "name": "abaDetails", "in": "body", "required": true, "schema": { "$ref": "#/definitions/BusinessAbaModel" } }, { "name": "businessId", "in": "path", "required": true, "type": "string" } ], "responses": { "200": { "description": "OK" } } }, "delete": { "tags": [ "AbaSettings" ], "summary": "Delete ABA Settings Record", "description": "Deletes the ABA settings record with the specified ID.", "operationId": "ABA_Delete", "consumes": [], "produces": [ "application/json", "text/json", "application/xml", "text/xml" ], "parameters": [ { "name": "id", "in": "path", "required": true, "type": "integer", "format": "int32", "title": "Int32" }, { "name": "businessId", "in": "path", "required": true, "type": "string" } ], "responses": { "200": { "description": "OK" } } } }, "/oauth/token": { "post": { "tags": [ "Authentication" ], "summary": "OAuth Token", "description": "See the guide on OAuth2 authentication for more details.", "operationId": "Token_Post", "consumes": [], "produces": [ "application/json", "text/json", "application/xml", "text/xml" ], "parameters": [ { "name": "request", "in": "query", "required": true, "type": "object", "title": "HttpRequestMessage" } ], "responses": { "200": { "description": "OK" } } } }, "/api/v2/singlesignon": { "post": { "tags": [ "Authentication" ], "summary": "Single Sign On", "description": "can either be called via /api/v2/singlesignon or /api/v2/business/singlesignon (which goes to the business controller)", "operationId": "SingleSignOn_Post", "consumes": [ "application/json", "text/json", "application/xml", "text/xml", "application/x-www-form-urlencoded" ], "produces": [ "application/json", "text/json", "application/xml", "text/xml" ], "parameters": [ { "name": "model", "in": "body", "required": true, "schema": { "$ref": "#/definitions/SingleSignOnRequestModel" } } ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/SingleSignOnResponseModel" } } } } }, "/api/v2/business/{businessId}/singlesignon": { "post": { "tags": [ "Authentication" ], "summary": "Single Sign On", "description": "can either be called via /api/v2/singlesignon or /api/v2/business/singlesignon (which goes to the business controller)", "operationId": "SingleSignOn_PostApiV2BusinessByBusinessIdSinglesignon", "consumes": [ "application/json", "text/json", "application/xml", "text/xml", "application/x-www-form-urlencoded" ], "produces": [ "application/json", "text/json", "application/xml", "text/xml" ], "parameters": [ { "name": "model", "in": "body", "required": true, "schema": { "$ref": "#/definitions/SingleSignOnRequestModel" } }, { "name": "businessId", "in": "path", "required": true, "type": "string" } ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/SingleSignOnResponseModel" } } } } }, "/api/v2/business/{businessId}/employee/{employeeId}/singlesignon": { "post": { "tags": [ "Authentication" ], "summary": "Single Sign On", "description": "can either be called via /api/v2/singlesignon or /api/v2/business/singlesignon (which goes to the business controller)", "operationId": "SingleSignOn_PostApiV2BusinessByBusinessIdEmployeeByEmployeeIdSinglesignon", "consumes": [ "application/json", "text/json", "application/xml", "text/xml", "application/x-www-form-urlencoded" ], "produces": [ "application/json", "text/json", "application/xml", "text/xml" ], "parameters": [ { "name": "model", "in": "body", "required": true, "schema": { "$ref": "#/definitions/SingleSignOnRequestModel" } }, { "name": "businessId", "in": "path", "required": true, "type": "string" }, { "name": "employeeId", "in": "path", "required": true, "type": "string" } ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/SingleSignOnResponseModel" } } } } }, "/api/v2/business/{businessId}/roundingrules": { "get": { "tags": [ "Business" ], "summary": "Get Rounding Rules", "description": "Gets the rounding rules for the business.", "operationId": "RoundingRules_GetRoundingRules", "consumes": [], "produces": [ "application/json", "text/json", "application/xml", "text/xml" ], "parameters": [ { "name": "businessId", "in": "path", "required": true, "type": "string" } ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/TimesheetRoundingRulesModel" } } } }, "post": { "tags": [ "Business" ], "summary": "Set Rounding Rules", "description": "Sets the rounding rules for the business.", "operationId": "RoundingRules_SetRoundingRules", "consumes": [ "application/json", "text/json", "application/xml", "text/xml", "application/x-www-form-urlencoded" ], "produces": [ "application/json", "text/json", "application/xml", "text/xml" ], "parameters": [ { "name": "roundingRules", "in": "body", "required": true, "schema": { "$ref": "#/definitions/TimesheetRoundingRulesModel" } }, { "name": "businessId", "in": "path", "required": true, "type": "string" } ], "responses": { "200": { "description": "OK" } } } }, "/api/v2/business/{businessId}/ato": { "get": { "tags": [ "Business" ], "summary": "Get ATO Details", "description": "Gets the ATO details for the business.", "operationId": "ATO_Get", "consumes": [], "produces": [ "application/json", "text/json", "application/xml", "text/xml" ], "parameters": [ { "name": "businessId", "in": "path", "required": true, "type": "integer", "format": "int32", "title": "Int32" } ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/BusinessAtoSupplierModel" } } } }, "post": { "tags": [ "Business" ], "summary": "Set ATO Details", "description": "Sets the ATO details for the business.", "operationId": "ATO_Post", "consumes": [ "application/json", "text/json", "application/xml", "text/xml", "application/x-www-form-urlencoded" ], "produces": [ "application/json", "text/json", "application/xml", "text/xml" ], "parameters": [ { "name": "model", "in": "body", "required": true, "schema": { "$ref": "#/definitions/BusinessAtoSupplierModel" } }, { "name": "businessId", "in": "path", "required": true, "type": "string" } ], "responses": { "200": { "description": "OK" } } } }, "/api/v2/business/{businessId}/entitlements": { "get": { "tags": [ "Business" ], "summary": "List Entitlements", "description": "Lists all of the entitlements for the business.", "operationId": "Entitlements_GetEntitlements", "consumes": [], "produces": [ "application/json", "text/json", "application/xml", "text/xml" ], "parameters": [ { "name": "businessId", "in": "path", "required": true, "type": "string" } ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/EntitlementsModel" } } } } }, "/api/v2/business/{businessId}/document": { "get": { "tags": [ "Business" ], "summary": "List Business Document Details", "description": "Lists the details for all of the documents in the business.", "operationId": "Document_Get", "consumes": [], "produces": [ "application/json", "text/json", "application/xml", "text/xml" ], "parameters": [ { "name": "businessId", "in": "path", "required": true, "type": "string" } ], "responses": { "200": { "description": "OK", "schema": { "type": "array", "items": { "$ref": "#/definitions/DocumentModel" }, "xml": { "name": "DocumentModel", "wrapped": true }, "title": "List" } } } }, "post": { "tags": [ "Business" ], "summary": "Create Business Document", "description": "Uploads new document(s) for business. The request should be a MIME multipart file upload request.", "operationId": "Document_Post", "consumes": [], "produces": [ "application/json", "text/json", "application/xml", "text/xml" ], "parameters": [ { "name": "visibleToAll", "in": "query", "required": false, "type": "boolean", "default": false, "title": "Boolean" }, { "name": "businessId", "in": "path", "required": true, "type": "string" } ], "responses": { "200": { "description": "OK", "schema": { "type": "array", "items": { "$ref": "#/definitions/DocumentModel" }, "xml": { "name": "DocumentModel", "wrapped": true }, "title": "List" } } } } }, "/api/v2/business/{businessId}/document/{id}": { "get": { "tags": [ "Business" ], "summary": "Get Business Document Details", "description": "Gets the details for the specified business document.", "operationId": "Document_GetApiV2BusinessByBusinessIdDocumentById", "consumes": [], "produces": [ "application/json", "text/json", "application/xml", "text/xml" ], "parameters": [ { "name": "id", "in": "path", "required": true, "type": "integer", "format": "int32", "title": "Int32" }, { "name": "businessId", "in": "path", "required": true, "type": "string" } ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/DocumentModel" } } } }, "put": { "tags": [ "Business" ], "summary": "Update Business Document Permissions", "description": "Updates permissions for the business document with the specified ID.", "operationId": "Document_Put", "consumes": [ "application/json", "text/json", "application/xml", "text/xml", "application/x-www-form-urlencoded" ], "produces": [ "application/json", "text/json", "application/xml", "text/xml" ], "parameters": [ { "name": "id", "in": "path", "required": true, "type": "integer", "format": "int32", "title": "Int32" }, { "name": "model", "in": "body", "required": true, "schema": { "$ref": "#/definitions/UpdateDocumentPermissionsModel" } }, { "name": "businessId", "in": "path", "required": true, "type": "string" } ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/DocumentModel" } } } }, "delete": { "tags": [ "Business" ], "summary": "Delete Business Document", "description": "Deletes the business document with the specified ID.", "operationId": "Document_Delete", "consumes": [], "produces": [ "application/json", "text/json", "application/xml", "text/xml" ], "parameters": [ { "name": "id", "in": "path", "required": true, "type": "integer", "format": "int32", "title": "Int32" }, { "name": "businessId", "in": "path", "required": true, "type": "string" } ], "responses": { "200": { "description": "OK" } } } }, "/api/v2/business/{businessId}/document/{id}/content": { "get": { "tags": [ "Business" ], "summary": "Get Business Document Content", "description": "Gets the file content for the business document with the specified ID.", "operationId": "Document_Content", "consumes": [], "produces": [ "application/json", "text/json", "application/xml", "text/xml" ], "parameters": [ { "name": "id", "in": "path", "required": true, "type": "integer", "format": "int32", "title": "Int32" }, { "name": "businessId", "in": "path", "required": true, "type": "string" } ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/DocumentFile" } } } } }, "/api/v2/business": { "get": { "tags": [ "Business" ], "summary": "List Businesses", "description": "Lists all the businesses associated with the current user.\n\nThis operation supports OData queries.", "operationId": "Business_GetBusinesses", "consumes": [], "produces": [ "application/json", "text/json", "application/xml", "text/xml" ], "parameters": [], "responses": { "200": { "description": "OK", "schema": { "type": "array", "items": { "$ref": "#/definitions/BusinessModel" }, "xml": { "name": "BusinessModel", "wrapped": true }, "title": "IEnumerable" } } } }, "post": { "tags": [ "Business" ], "summary": "Create New Business", "description": "Creates a new business.", "operationId": "Business_Post", "consumes": [ "application/json", "text/json", "application/xml", "text/xml", "application/x-www-form-urlencoded" ], "produces": [ "application/json", "text/json", "application/xml", "text/xml" ], "parameters": [ { "name": "model", "in": "body", "required": true, "schema": { "$ref": "#/definitions/BusinessModel" } }, { "name": "setupDefaultData", "in": "query", "required": false, "type": "boolean", "default": true, "title": "Boolean" } ], "responses": { "200": { "description": "OK" } } } }, "/api/v2/business/{businessId}": { "get": { "tags": [ "Business" ], "summary": "Get Business Details", "description": "Retrieves the details of the business with the specified ID.", "operationId": "Business_GetBusiness", "consumes": [], "produces": [ "application/json", "text/json", "application/xml", "text/xml" ], "parameters": [ { "name": "businessId", "in": "path", "required": true, "type": "integer", "format": "int32", "title": "Int32" } ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/BusinessModel" } } } } }, "/api/v2/business/externalid": { "get": { "tags": [ "Business" ], "summary": "Get Business Details by External ID", "description": "Retrieves the details of the business with the specified external ID.", "operationId": "Business_GetBusinessByExternalId", "consumes": [], "produces": [ "application/json", "text/json", "application/xml", "text/xml" ], "parameters": [ { "name": "externalId", "in": "query", "required": true, "type": "string", "title": "String" } ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/BusinessModel" } } } } }, "/api/v2/business/{businessId}/access": { "get": { "tags": [ "Business" ], "summary": "List All Business Access Users", "description": "Lists all of the users with access to this business, as well as the types of access they each have.\n\nThis operation supports OData queries.", "operationId": "BusinessAccess_GetAll", "consumes": [], "produces": [ "application/json", "text/json", "application/xml", "text/xml" ], "parameters": [ { "name": "businessId", "in": "path", "required": true, "type": "string" } ], "responses": { "200": { "description": "OK", "schema": { "type": "array", "items": { "$ref": "#/definitions/BusinessAccessModel" }, "xml": { "name": "BusinessAccessModel", "wrapped": true }, "title": "IQueryable" } } } }, "put": { "tags": [ "Business" ], "summary": "Update Business Access", "description": "Updates a user's access to this business.", "operationId": "BusinessAccess_Put", "consumes": [ "application/json", "text/json", "application/xml", "text/xml", "application/x-www-form-urlencoded" ], "produces": [ "application/json", "text/json", "application/xml", "text/xml" ], "parameters": [ { "name": "email", "in": "query", "required": true, "type": "string", "title": "String" }, { "name": "viewModel", "in": "body", "required": true, "schema": { "$ref": "#/definitions/AccessModel" } }, { "name": "businessId", "in": "path", "required": true, "type": "string" } ], "responses": { "200": { "description": "OK" } } }, "post": { "tags": [ "Business" ], "summary": "Assign Business Access", "description": "Assigns business access to a name/email.", "operationId": "BusinessAccess_Post", "consumes": [ "application/json", "text/json", "application/xml", "text/xml", "application/x-www-form-urlencoded" ], "produces": [ "application/json", "text/json", "application/xml", "text/xml" ], "parameters": [ { "name": "viewModel", "in": "body", "required": true, "schema": { "$ref": "#/definitions/CreateBusinessAccessModel" } }, { "name": "businessId", "in": "path", "required": true, "type": "string" } ], "responses": { "200": { "description": "OK" } } }, "delete": { "tags": [ "Business" ], "summary": "Revoke Business Access", "description": "Revokes a user's access to the business.", "operationId": "BusinessAccess_Delete", "consumes": [], "produces": [ "application/json", "text/json", "application/xml", "text/xml" ], "parameters": [ { "name": "email", "in": "query", "required": true, "type": "string", "title": "String" }, { "name": "businessId", "in": "path", "required": true, "type": "string" } ], "responses": { "200": { "description": "OK" } } } }, "/api/v2/business/{businessId}/access/user": { "get": { "tags": [ "Business" ], "summary": "Get User Business Access", "description": "Returns the business access assigned to the user with the specified email address.", "operationId": "BusinessAccess_Get", "consumes": [], "produces": [ "application/json", "text/json", "application/xml", "text/xml" ], "parameters": [ { "name": "email", "in": "query", "required": true, "type": "string", "title": "String" }, { "name": "businessId", "in": "path", "required": true, "type": "string" } ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/BusinessAccessModel" } } } } }, "/api/v2/business/{businessId}/deductioncategory": { "get": { "tags": [ "DeductionCategories" ], "summary": "List Deduction Categories", "description": "Lists all the deduction categories for the business.\n\nThis operation supports OData queries.", "operationId": "DeductionCategory_GetDeductionCategories", "consumes": [], "produces": [ "application/json", "text/json", "application/xml", "text/xml" ], "parameters": [ { "name": "businessId", "in": "path", "required": true, "type": "string" } ], "responses": { "200": { "description": "OK", "schema": { "type": "array", "items": { "$ref": "#/definitions/DeductionCategoryModel" }, "xml": { "name": "DeductionCategoryModel", "wrapped": true }, "title": "IEnumerable" } } } }, "post": { "tags": [ "DeductionCategories" ], "summary": "Create Deduction Category", "description": "Creates a deduction category for the business.", "operationId": "DeductionCategory_Post", "consumes": [ "application/json", "text/json", "application/xml", "text/xml", "application/x-www-form-urlencoded" ], "produces": [ "application/json", "text/json", "application/xml", "text/xml" ], "parameters": [ { "name": "deductionCategory", "in": "body", "required": true, "schema": { "$ref": "#/definitions/DeductionCategoryModel" } }, { "name": "businessId", "in": "path", "required": true, "type": "string" } ], "responses": { "200": { "description": "OK" } } } }, "/api/v2/business/{businessId}/deductioncategory/{id}": { "get": { "tags": [ "DeductionCategories" ], "summary": "Get Deduction Category By ID", "description": "Gets the deduction category with the specified ID.", "operationId": "DeductionCategory_Get", "consumes": [], "produces": [ "application/json", "text/json", "application/xml", "text/xml" ], "parameters": [ { "name": "id", "in": "path", "required": true, "type": "integer", "format": "int32", "title": "Int32" }, { "name": "businessId", "in": "path", "required": true, "type": "string" } ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/DeductionCategoryModel" } } } }, "put": { "tags": [ "DeductionCategories" ], "summary": "Update Deduction Category", "description": "Updates the deduction category with the specified ID.", "operationId": "DeductionCategory_Put", "consumes": [ "application/json", "text/json", "application/xml", "text/xml", "application/x-www-form-urlencoded" ], "produces": [ "application/json", "text/json", "application/xml", "text/xml" ], "parameters": [ { "name": "id", "in": "path", "required": true, "type": "integer", "format": "int32", "title": "Int32" }, { "name": "deductionCategory", "in": "body", "required": true, "schema": { "$ref": "#/definitions/DeductionCategoryModel" } }, { "name": "businessId", "in": "path", "required": true, "type": "string" } ], "responses": { "200": { "description": "OK" } } }, "delete": { "tags": [ "DeductionCategories" ], "summary": "Delete Deduction Category", "description": "Deletes the deduction category with the specified ID.", "operationId": "DeductionCategory_Delete", "consumes": [], "produces": [ "application/json", "text/json", "application/xml", "text/xml" ], "parameters": [ { "name": "id", "in": "path", "required": true, "type": "integer", "format": "int32", "title": "Int32" }, { "name": "businessId", "in": "path", "required": true, "type": "string" } ], "responses": { "200": { "description": "OK" } } } }, "/api/v2/business/{businessId}/employee/{employeeId}/worktype": { "get": { "tags": [ "Employee" ], "summary": "Get Employee Work Types", "description": "Lists all the work types for the employee.\n\nThis operation supports OData queries.", "operationId": "EmployeeWorkType_Get", "consumes": [], "produces": [ "application/json", "text/json", "application/xml", "text/xml" ], "parameters": [ { "name": "businessId", "in": "path", "required": true, "type": "string" }, { "name": "employeeId", "in": "path", "required": true, "type": "string" } ], "responses": { "200": { "description": "OK", "schema": { "type": "array", "items": { "$ref": "#/definitions/WorkTypeModel" }, "xml": { "name": "WorkTypeModel", "wrapped": true }, "title": "IQueryable" } } } } }, "/api/v2/business/{businessId}/employee/{employeeId}/image": { "get": { "tags": [ "Employee" ], "summary": "Get Employee Profile Image", "description": "Returns the file content for the employee's current profile image.", "operationId": "EmployeeProfileImage_Get", "consumes": [], "produces": [ "application/json", "text/json", "application/xml", "text/xml" ], "parameters": [ { "name": "businessId", "in": "path", "required": true, "type": "string" }, { "name": "employeeId", "in": "path", "required": true, "type": "string" } ], "responses": { "200": { "description": "OK" } } }, "post": { "tags": [ "Employee" ], "summary": "Set Employee Profile Image", "description": "Uploads a new employee profile image. The request should be a MIME multipart file upload request.", "operationId": "EmployeeProfileImage_Post", "consumes": [], "produces": [ "application/json", "text/json", "application/xml", "text/xml" ], "parameters": [ { "name": "businessId", "in": "path", "required": true, "type": "string" }, { "name": "employeeId", "in": "path", "required": true, "type": "string" } ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/ProfileImageMetadata" } } } }, "delete": { "tags": [ "Employee" ], "summary": "Delete Employee Profile Image", "description": "Delete's the employee's profile image.", "operationId": "EmployeeProfileImage_Delete", "consumes": [], "produces": [ "application/json", "text/json", "application/xml", "text/xml" ], "parameters": [ { "name": "businessId", "in": "path", "required": true, "type": "string" }, { "name": "employeeId", "in": "path", "required": true, "type": "string" } ], "responses": { "200": { "description": "OK" } } } }, "/api/v2/business/{businessId}/employee/details": { "get": { "tags": [ "Employee" ], "summary": "List basic details for employees", "description": "This endpoint returns a list of employees. The details are a subset of the 'unstructured' employee endpoint.\r\nThis data can be filtered much more efficiently though so if you only need the basic employee details, this endpoint is preferred.\n\nThis operation supports OData queries.", "operationId": "EmployeeDetails_GetEmployees", "consumes": [], "produces": [ "application/json", "text/json", "application/xml", "text/xml" ], "parameters": [ { "name": "businessId", "in": "path", "required": true, "type": "string" } ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/EmployeeDetailsModel" } } } } }, "/api/v2/business/{businessId}/employee/{employeeId}/details": { "get": { "tags": [ "Employee" ], "summary": "Get Employee basic details by ID", "description": "returns the basic employee details for the specified employee", "operationId": "EmployeeDetails_GetEmployee", "consumes": [], "produces": [ "application/json", "text/json", "application/xml", "text/xml" ], "parameters": [ { "name": "employeeId", "in": "path", "required": true, "type": "integer", "format": "int32", "title": "Int32" }, { "name": "businessId", "in": "path", "required": true, "type": "string" } ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/EmployeeDetailsModel" } } } } }, "/api/v2/business/{businessId}/employee/{employeeId}/shiftcondition": { "get": { "tags": [ "Employee" ], "summary": "Get Employee Shift Conditions", "description": "Lists all the shift conditions for this employee.\n\nThis operation supports OData queries.", "operationId": "EmployeeShiftCondition_Get", "consumes": [], "produces": [ "application/json", "text/json", "application/xml", "text/xml" ], "parameters": [ { "name": "businessId", "in": "path", "required": true, "type": "string" }, { "name": "employeeId", "in": "path", "required": true, "type": "string" } ], "responses": { "200": { "description": "OK", "schema": { "type": "array", "items": { "$ref": "#/definitions/WorkTypeModel" }, "xml": { "name": "WorkTypeModel", "wrapped": true }, "title": "IQueryable" } } } } }, "/api/v2/business/{businessId}/employee/unstructured": { "get": { "tags": [ "Employee" ], "summary": "List Employees", "description": "This endpoint returns the unstructured employee details for all matching employees.\r\n

\r\nSee also: List basic details for employees (which is much more efficient if that is all the information that is required)\r\n

\n\nThis operation supports OData queries.", "operationId": "Employee_GetEmployees", "consumes": [], "produces": [ "application/json", "text/json", "application/xml", "text/xml" ], "parameters": [ { "name": "businessId", "in": "path", "required": true, "type": "string" }, { "name": "filter.payScheduleId", "in": "query", "required": false, "type": "integer", "format": "int32", "title": "Nullable" }, { "name": "filter.locationId", "in": "query", "required": false, "type": "integer", "format": "int32", "title": "Nullable" } ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/UnstructuredEmployeeModel" } } } }, "post": { "tags": [ "Employee" ], "summary": "Create or Update Employee", "description": "If the employee with the specified ID already exists, update it. Otherwise, create a new employee.", "operationId": "Employee_PostEmployee", "consumes": [ "application/json", "text/json", "application/xml", "text/xml", "application/x-www-form-urlencoded" ], "produces": [ "application/json", "text/json", "application/xml", "text/xml" ], "parameters": [ { "name": "model", "in": "body", "required": true, "schema": { "$ref": "#/definitions/UnstructuredEmployeeModel" } }, { "name": "businessId", "in": "path", "required": true, "type": "string" } ], "responses": { "200": { "description": "OK" } } } }, "/api/v2/business/{businessId}/employee/unstructured/{employeeId}": { "get": { "tags": [ "Employee" ], "summary": "Get Employee By ID", "description": "Gets the employee with the specified ID.", "operationId": "Employee_GetEmployeeById", "consumes": [], "produces": [ "application/json", "text/json", "application/xml", "text/xml" ], "parameters": [ { "name": "employeeId", "in": "path", "required": true, "type": "integer", "format": "int32", "title": "Int32" }, { "name": "businessId", "in": "path", "required": true, "type": "string" } ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/UnstructuredEmployeeModel" } } } }, "put": { "tags": [ "Employee" ], "summary": "Update Employee", "description": "Updates the employee with the specified ID.", "operationId": "Employee_PutEmployee", "consumes": [ "application/json", "text/json", "application/xml", "text/xml", "application/x-www-form-urlencoded" ], "produces": [ "application/json", "text/json", "application/xml", "text/xml" ], "parameters": [ { "name": "employeeId", "in": "path", "required": true, "type": "integer", "format": "int32", "title": "Int32" }, { "name": "model", "in": "body", "required": true, "schema": { "$ref": "#/definitions/UnstructuredEmployeeModel" } }, { "name": "businessId", "in": "path", "required": true, "type": "string" } ], "responses": { "200": { "description": "OK" } } } }, "/api/v2/business/{businessId}/employee/unstructured/externalid": { "get": { "tags": [ "Employee" ], "summary": "Get Employee By External ID", "description": "Gets the employee with the specified external ID.", "operationId": "Employee_GetEmployeeByExternalId", "consumes": [], "produces": [ "application/json", "text/json", "application/xml", "text/xml" ], "parameters": [ { "name": "externalId", "in": "query", "required": true, "type": "string", "title": "String" }, { "name": "businessId", "in": "path", "required": true, "type": "string" } ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/UnstructuredEmployeeModel" } } } } }, "/api/v2/business/{businessId}/employee/unstructured/externalreferenceid": { "get": { "tags": [ "Employee" ], "summary": "Get Employee By External Reference ID", "description": "Gets the employee with the specified external reference ID.", "operationId": "Employee_GetByExternalReferenceId", "consumes": [], "produces": [ "application/json", "text/json", "application/xml", "text/xml" ], "parameters": [ { "name": "externalReferenceId", "in": "query", "required": true, "type": "string", "title": "String" }, { "name": "source", "in": "query", "required": true, "type": "string", "enum": [ "None", "Saasu", "Xero", "MYOB", "Deputy", "EmployeeTimePunch", "ClickSuper", "IntegratedTimesheets", "FileImport", "FileExport", "QuickBooks", "Harmony", "AwardStore", "Attache", "IntegratedRostering", "ReckonAccounts", "API", "MicroPower", "RosterLive", "NetSuite", "Kounta", "TimeAndAttendanceKiosk", "DetailedFileExport", "JonasPremier", "WageEasy", "Maestrano", "WorkZone", "EmployeePortal", "RosterTemplate", "Onboarding", "Admin", "WorkZoneClockOnOff" ], "title": "ExternalService" }, { "name": "businessId", "in": "path", "required": true, "type": "string" } ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/UnstructuredEmployeeModel" } } } } }, "/api/v2/business/{businessId}/employee/{employeeId}": { "delete": { "tags": [ "Employee" ], "summary": "Delete Employee", "description": "Deletes the employee with the specified ID.", "operationId": "Employee_DeleteEmployee", "consumes": [], "produces": [ "application/json", "text/json", "application/xml", "text/xml" ], "parameters": [ { "name": "employeeId", "in": "path", "required": true, "type": "integer", "format": "int32", "title": "Int32" }, { "name": "businessId", "in": "path", "required": true, "type": "string" } ], "responses": { "200": { "description": "OK" } } } }, "/api/v2/business/{businessId}/employee/{employeeId}/synctoqbo": { "post": { "tags": [ "Employee" ], "summary": "Sync Employee to QBO", "description": "Syncs an employee record to QBO.", "operationId": "Employee_SyncEmployeeToQBO", "consumes": [], "produces": [ "application/json", "text/json", "application/xml", "text/xml" ], "parameters": [ { "name": "employeeId", "in": "path", "required": true, "type": "integer", "format": "int32", "title": "Int32" }, { "name": "businessId", "in": "path", "required": true, "type": "string" } ], "responses": { "200": { "description": "OK" } } } }, "/api/v2/business/{businessId}/employee/activate/{employeeId}": { "post": { "tags": [ "Employee" ], "summary": "Activate Employee", "description": "Activates the employee with the specified ID.", "operationId": "EmployeeActivate_PostActivate", "consumes": [], "produces": [ "application/json", "text/json", "application/xml", "text/xml" ], "parameters": [ { "name": "employeeId", "in": "path", "required": true, "type": "integer", "format": "int32", "title": "Int32" }, { "name": "businessId", "in": "path", "required": true, "type": "string" } ], "responses": { "200": { "description": "OK" } } } }, "/api/v2/business/{businessId}/employee/{employeeId}/leavebalances": { "get": { "tags": [ "Employee" ], "summary": "Get Leave Balances", "description": "Gets leave balances for this employee.", "operationId": "LeaveBalances_GetLeaveBalances", "consumes": [], "produces": [ "application/json", "text/json", "application/xml", "text/xml" ], "parameters": [ { "name": "asAtDate", "in": "query", "required": false, "type": "string", "format": "date-time", "title": "Nullable" }, { "name": "businessId", "in": "path", "required": true, "type": "string" }, { "name": "employeeId", "in": "path", "required": true, "type": "string" } ], "responses": { "200": { "description": "OK", "schema": { "type": "array", "items": { "$ref": "#/definitions/LeaveBalanceModel" }, "xml": { "name": "LeaveBalanceModel", "wrapped": true }, "title": "IList" } } } } }, "/api/v2/business/{businessId}/employee/{employeeId}/notes": { "get": { "tags": [ "Employee" ], "summary": "Get Employee Notes", "description": "Gets the notes for the specified employee.", "operationId": "Notes_Get", "consumes": [], "produces": [ "application/json", "text/json", "application/xml", "text/xml" ], "parameters": [ { "name": "businessId", "in": "path", "required": true, "type": "string" }, { "name": "employeeId", "in": "path", "required": true, "type": "string" } ], "responses": { "200": { "description": "OK", "schema": { "type": "array", "items": { "$ref": "#/definitions/EmployeeNoteModel" }, "xml": { "name": "EmployeeNoteModel", "wrapped": true }, "title": "IList" } } } }, "post": { "tags": [ "Employee" ], "summary": "Set Employee Notes", "description": "Sets the notes for the specified employee.", "operationId": "Notes_Post", "consumes": [ "application/json", "text/json", "application/xml", "text/xml", "application/x-www-form-urlencoded" ], "produces": [ "application/json", "text/json", "application/xml", "text/xml" ], "parameters": [ { "name": "model", "in": "body", "required": true, "schema": { "$ref": "#/definitions/CreateEmployeeNoteModel" } }, { "name": "businessId", "in": "path", "required": true, "type": "string" }, { "name": "employeeId", "in": "path", "required": true, "type": "string" } ], "responses": { "200": { "description": "OK" } } } }, "/api/v2/business/{businessId}/employee/{employeeId}/payrate": { "get": { "tags": [ "Employee" ], "summary": "Get Pay Rates", "description": "Gets the pay rates for this employee.", "operationId": "EmployeePayRates_Get", "consumes": [], "produces": [ "application/json", "text/json", "application/xml", "text/xml" ], "parameters": [ { "name": "businessId", "in": "path", "required": true, "type": "string" }, { "name": "employeeId", "in": "path", "required": true, "type": "string" } ], "responses": { "200": { "description": "OK", "schema": { "type": "array", "items": { "$ref": "#/definitions/EmployeePayRateModel" }, "xml": { "name": "EmployeePayRateModel", "wrapped": true }, "title": "IList" } } } } }, "/api/v2/business/{businessId}/employee/grantkioskaccess/{employeeId}": { "post": { "tags": [ "Employee" ], "summary": "Grant Kiosk Access", "description": "Grants kiosk access to the specified employee.", "operationId": "EmployeeKioskAccess_PostGrantKioskAccess", "consumes": [], "produces": [ "application/json", "text/json", "application/xml", "text/xml" ], "parameters": [ { "name": "employeeId", "in": "path", "required": true, "type": "integer", "format": "int32", "title": "Int32" }, { "name": "businessId", "in": "path", "required": true, "type": "string" } ], "responses": { "200": { "description": "OK" } } } }, "/api/v2/business/{businessId}/employee/revokekioskaccess/{employeeId}": { "post": { "tags": [ "Employee" ], "summary": "Revoke Kiosk Access", "description": "Revokes kiosk access from the specified employee.", "operationId": "EmployeeKioskAccess_PostRevokeKioskAccess", "consumes": [], "produces": [ "application/json", "text/json", "application/xml", "text/xml" ], "parameters": [ { "name": "employeeId", "in": "path", "required": true, "type": "integer", "format": "int32", "title": "Int32" }, { "name": "businessId", "in": "path", "required": true, "type": "string" } ], "responses": { "200": { "description": "OK" } } } }, "/api/v2/business/{businessId}/employee/{employeeId}/OpeningBalances": { "get": { "tags": [ "Employee" ], "summary": "Get Opening Balances", "description": "Gets the opening balances for this employee.", "operationId": "OpeningBalances_Get", "consumes": [], "produces": [ "application/json", "text/json", "application/xml", "text/xml" ], "parameters": [ { "name": "businessId", "in": "path", "required": true, "type": "string" }, { "name": "employeeId", "in": "path", "required": true, "type": "string" } ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/OpeningBalancesEditModel" } } } }, "post": { "tags": [ "Employee" ], "summary": "Set Opening Balances", "description": "Sets the opening balances for this employee.", "operationId": "OpeningBalances_Post", "consumes": [ "application/json", "text/json", "application/xml", "text/xml", "application/x-www-form-urlencoded" ], "produces": [ "application/json", "text/json", "application/xml", "text/xml" ], "parameters": [ { "name": "model", "in": "body", "required": true, "schema": { "$ref": "#/definitions/OpeningBalancesEditModel" } }, { "name": "businessId", "in": "path", "required": true, "type": "string" }, { "name": "employeeId", "in": "path", "required": true, "type": "string" } ], "responses": { "200": { "description": "OK" } } } }, "/api/v2/business/{businessId}/employee/{employeeId}/access": { "get": { "tags": [ "EmployeeAccess" ], "summary": "Get Users With Access to Employee", "description": "Gets a list of all users with access to this employee.\n\nThis operation supports OData queries.", "operationId": "EmployeeAccess_GetAll", "consumes": [], "produces": [ "application/json", "text/json", "application/xml", "text/xml" ], "parameters": [ { "name": "businessId", "in": "path", "required": true, "type": "string" }, { "name": "employeeId", "in": "path", "required": true, "type": "string" } ], "responses": { "200": { "description": "OK", "schema": { "type": "array", "items": { "$ref": "#/definitions/EmployeeAccessModel" }, "xml": { "name": "EmployeeAccessModel", "wrapped": true }, "title": "IQueryable" } } } }, "put": { "tags": [ "EmployeeAccess" ], "summary": "Update Employee Access Record", "description": "Updates the employee access record for the specified user.", "operationId": "EmployeeAccess_UpdateUserAccess", "consumes": [ "application/json", "text/json", "application/xml", "text/xml", "application/x-www-form-urlencoded" ], "produces": [ "application/json", "text/json", "application/xml", "text/xml" ], "parameters": [ { "name": "email", "in": "query", "required": true, "type": "string", "title": "String" }, { "name": "viewModel", "in": "body", "required": true, "schema": { "$ref": "#/definitions/AccessModel" } }, { "name": "businessId", "in": "path", "required": true, "type": "string" }, { "name": "employeeId", "in": "path", "required": true, "type": "string" } ], "responses": { "200": { "description": "OK" } } }, "post": { "tags": [ "EmployeeAccess" ], "summary": "Grant Employee Access", "description": "Grants a user access to the employee.", "operationId": "EmployeeAccess_AddEmployeeAccess", "consumes": [ "application/json", "text/json", "application/xml", "text/xml", "application/x-www-form-urlencoded" ], "produces": [ "application/json", "text/json", "application/xml", "text/xml" ], "parameters": [ { "name": "viewModel", "in": "body", "required": true, "schema": { "$ref": "#/definitions/CreateEmployeeAccessModel" } }, { "name": "businessId", "in": "path", "required": true, "type": "string" }, { "name": "employeeId", "in": "path", "required": true, "type": "string" } ], "responses": { "200": { "description": "OK" } } }, "delete": { "tags": [ "EmployeeAccess" ], "summary": "Revoke Employee Access", "description": "Revoke a user's access to the employee.", "operationId": "EmployeeAccess_DeleteEmployeeAccess", "consumes": [], "produces": [ "application/json", "text/json", "application/xml", "text/xml" ], "parameters": [ { "name": "email", "in": "query", "required": true, "type": "string", "title": "String" }, { "name": "businessId", "in": "path", "required": true, "type": "string" }, { "name": "employeeId", "in": "path", "required": true, "type": "string" } ], "responses": { "200": { "description": "OK" } } } }, "/api/v2/business/{businessId}/employee/{employeeId}/access/email": { "get": { "tags": [ "EmployeeAccess" ], "summary": "Get Employee Access for User", "description": "Gets a list of all employees to which the user (specified by email) has access.", "operationId": "EmployeeAccess_ListEmployeeAccess", "consumes": [], "produces": [ "application/json", "text/json", "application/xml", "text/xml" ], "parameters": [ { "name": "email", "in": "query", "required": true, "type": "string", "title": "String" }, { "name": "businessId", "in": "path", "required": true, "type": "string" }, { "name": "employeeId", "in": "path", "required": true, "type": "string" } ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/EmployeeAccessModel" } } } } }, "/api/v2/business/{businessId}/employee/{employeeId}/bankaccount": { "get": { "tags": [ "EmployeeBankAccount" ], "summary": "List Bank Accounts", "description": "Lists all of the bank accounts for this employee.", "operationId": "EmployeeBankAccount_List", "consumes": [], "produces": [ "application/json", "text/json", "application/xml", "text/xml" ], "parameters": [ { "name": "businessId", "in": "path", "required": true, "type": "string" }, { "name": "employeeId", "in": "path", "required": true, "type": "string" } ], "responses": { "200": { "description": "OK", "schema": { "type": "array", "items": { "$ref": "#/definitions/BankAccountModel" }, "xml": { "name": "BankAccountModel", "wrapped": true }, "title": "IEnumerable" } } } }, "post": { "tags": [ "EmployeeBankAccount" ], "summary": "Create Bank Account", "description": "Creates a new bank account for the employee.", "operationId": "EmployeeBankAccount_Post", "consumes": [ "application/json", "text/json", "application/xml", "text/xml", "application/x-www-form-urlencoded" ], "produces": [ "application/json", "text/json", "application/xml", "text/xml" ], "parameters": [ { "name": "model", "in": "body", "required": true, "schema": { "$ref": "#/definitions/BankAccountModel" } }, { "name": "businessId", "in": "path", "required": true, "type": "string" }, { "name": "employeeId", "in": "path", "required": true, "type": "string" } ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/SaveBankAccountResponseModel" } } } } }, "/api/v2/business/{businessId}/employee/{employeeId}/bankaccount/{bankAccountId}": { "get": { "tags": [ "EmployeeBankAccount" ], "summary": "Get Bank Account by ID", "description": "Gets the bank account for this employee with the specified ID.", "operationId": "EmployeeBankAccount_Get", "consumes": [], "produces": [ "application/json", "text/json", "application/xml", "text/xml" ], "parameters": [ { "name": "bankAccountId", "in": "path", "required": true, "type": "integer", "format": "int32", "title": "Int32" }, { "name": "businessId", "in": "path", "required": true, "type": "string" }, { "name": "employeeId", "in": "path", "required": true, "type": "string" } ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/BankAccountModel" } } } }, "delete": { "tags": [ "EmployeeBankAccount" ], "summary": "Delete Bank Account", "description": "Deletes the employee's bank account with the specified ID.", "operationId": "EmployeeBankAccount_Delete", "consumes": [], "produces": [ "application/json", "text/json", "application/xml", "text/xml" ], "parameters": [ { "name": "bankAccountId", "in": "path", "required": true, "type": "integer", "format": "int32", "title": "Int32" }, { "name": "businessId", "in": "path", "required": true, "type": "string" }, { "name": "employeeId", "in": "path", "required": true, "type": "string" } ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/SaveBankAccountResponseModel" } } } } }, "/api/v2/business/{businessId}/employee/{employeeId}/bankaccount/{id}": { "put": { "tags": [ "EmployeeBankAccount" ], "summary": "Update Bank Account", "description": "Updates the employee's bank account with the specified ID.", "operationId": "EmployeeBankAccount_Put", "consumes": [ "application/json", "text/json", "application/xml", "text/xml", "application/x-www-form-urlencoded" ], "produces": [ "application/json", "text/json", "application/xml", "text/xml" ], "parameters": [ { "name": "id", "in": "path", "required": true, "type": "integer", "format": "int32", "title": "Int32" }, { "name": "model", "in": "body", "required": true, "schema": { "$ref": "#/definitions/BankAccountModel" } }, { "name": "businessId", "in": "path", "required": true, "type": "string" }, { "name": "employeeId", "in": "path", "required": true, "type": "string" } ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/SaveBankAccountResponseModel" } } } } }, "/api/v2/business/{businessId}/employee/{employeeId}/document/{documentId}/timesheet/{id}": { "post": { "tags": [ "EmployeeDocument" ], "summary": "Link Employee Document to Timesheet", "description": "Takes the specified employee document and adds it as an attachment to the timesheet with the specified ID.", "operationId": "EmployeeDocumentTimesheetLink_CreateLink", "consumes": [], "produces": [ "application/json", "text/json", "application/xml", "text/xml" ], "parameters": [ { "name": "documentId", "in": "path", "required": true, "type": "integer", "format": "int32", "title": "Int32" }, { "name": "id", "in": "path", "required": true, "type": "integer", "format": "int32", "title": "Int32" }, { "name": "businessId", "in": "path", "required": true, "type": "string" }, { "name": "employeeId", "in": "path", "required": true, "type": "string" } ], "responses": { "200": { "description": "OK" } } }, "delete": { "tags": [ "EmployeeDocument" ], "summary": "Unlink Employee Document from Timesheet", "description": "If the specified employee document is attached to the specified timesheet, unattach it.", "operationId": "EmployeeDocumentTimesheetLink_RemoveLink", "consumes": [], "produces": [ "application/json", "text/json", "application/xml", "text/xml" ], "parameters": [ { "name": "documentId", "in": "path", "required": true, "type": "integer", "format": "int32", "title": "Int32" }, { "name": "id", "in": "path", "required": true, "type": "integer", "format": "int32", "title": "Int32" }, { "name": "businessId", "in": "path", "required": true, "type": "string" }, { "name": "employeeId", "in": "path", "required": true, "type": "string" } ], "responses": { "200": { "description": "OK" } } } }, "/api/v2/business/{businessId}/employee/{employeeId}/document": { "get": { "tags": [ "EmployeeDocument" ], "summary": "List Employee Documents", "description": "Lists all the documents for this employee.", "operationId": "EmployeeDocument_List", "consumes": [], "produces": [ "application/json", "text/json", "application/xml", "text/xml" ], "parameters": [ { "name": "businessId", "in": "path", "required": true, "type": "string" }, { "name": "employeeId", "in": "path", "required": true, "type": "string" } ], "responses": { "200": { "description": "OK", "schema": { "type": "array", "items": { "$ref": "#/definitions/EmployeeDocumentModel" }, "xml": { "name": "EmployeeDocumentModel", "wrapped": true }, "title": "List" } } } }, "put": { "tags": [ "EmployeeDocument" ], "summary": "Update Employee Document Permissions", "description": "Updates permissions for the employee document with the specified ID.", "operationId": "EmployeeDocument_UpdatePermissions", "consumes": [ "application/json", "text/json", "application/xml", "text/xml", "application/x-www-form-urlencoded" ], "produces": [ "application/json", "text/json", "application/xml", "text/xml" ], "parameters": [ { "name": "model", "in": "body", "required": true, "schema": { "$ref": "#/definitions/UpdateEmployeeDocumentPermissionsModel" } }, { "name": "businessId", "in": "path", "required": true, "type": "string" }, { "name": "employeeId", "in": "path", "required": true, "type": "string" } ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/EmployeeDocumentModel" } } } }, "post": { "tags": [ "EmployeeDocument" ], "summary": "Create Employee Document", "description": "Uploads new document(s) for this employee. The request should be a MIME multipart file upload request.", "operationId": "EmployeeDocument_Upload", "consumes": [], "produces": [ "application/json", "text/json", "application/xml", "text/xml" ], "parameters": [ { "name": "visible", "in": "query", "required": false, "type": "boolean", "default": false, "title": "Boolean" }, { "name": "businessId", "in": "path", "required": true, "type": "string" }, { "name": "employeeId", "in": "path", "required": true, "type": "string" } ], "responses": { "200": { "description": "OK", "schema": { "type": "array", "items": { "$ref": "#/definitions/EmployeeDocumentModel" }, "xml": { "name": "EmployeeDocumentModel", "wrapped": true }, "title": "List" } } } } }, "/api/v2/business/{businessId}/employee/{employeeId}/document/{id}": { "get": { "tags": [ "EmployeeDocument" ], "summary": "Get Employee Document Details", "description": "Gets the details for the employee document with the specified ID.", "operationId": "EmployeeDocument_Get", "consumes": [], "produces": [ "application/json", "text/json", "application/xml", "text/xml" ], "parameters": [ { "name": "id", "in": "path", "required": true, "type": "integer", "format": "int32", "title": "Int32" }, { "name": "businessId", "in": "path", "required": true, "type": "string" }, { "name": "employeeId", "in": "path", "required": true, "type": "string" } ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/EmployeeDocumentModel" } } } }, "delete": { "tags": [ "EmployeeDocument" ], "summary": "Delete Employee Document", "description": "Deletes the employee document with the specified ID.", "operationId": "EmployeeDocument_Delete", "consumes": [], "produces": [ "application/json", "text/json", "application/xml", "text/xml" ], "parameters": [ { "name": "id", "in": "path", "required": true, "type": "integer", "format": "int32", "title": "Int32" }, { "name": "businessId", "in": "path", "required": true, "type": "string" }, { "name": "employeeId", "in": "path", "required": true, "type": "string" } ], "responses": { "200": { "description": "OK" } } } }, "/api/v2/business/{businessId}/employee/{employeeId}/document/{id}/content": { "get": { "tags": [ "EmployeeDocument" ], "summary": "Get Employee Document Content", "description": "Get the file content for the employee document with the specified ID.", "operationId": "EmployeeDocument_Content", "consumes": [], "produces": [ "application/json", "text/json", "application/xml", "text/xml" ], "parameters": [ { "name": "id", "in": "path", "required": true, "type": "integer", "format": "int32", "title": "Int32" }, { "name": "businessId", "in": "path", "required": true, "type": "string" }, { "name": "employeeId", "in": "path", "required": true, "type": "string" } ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/DocumentFile" } } } } }, "/api/v2/business/{businessId}/employee/{employeeId}/document/{documentId}/leave/{id}": { "post": { "tags": [ "EmployeeDocument" ], "summary": "Link Employee Document to Leave Request", "description": "Takes the specified employee document and adds it as an attachment to the leave request with the specified ID.", "operationId": "EmployeeDocumentLeaveLink_CreateLink", "consumes": [], "produces": [ "application/json", "text/json", "application/xml", "text/xml" ], "parameters": [ { "name": "documentId", "in": "path", "required": true, "type": "integer", "format": "int32", "title": "Int32" }, { "name": "id", "in": "path", "required": true, "type": "integer", "format": "int32", "title": "Int32" }, { "name": "businessId", "in": "path", "required": true, "type": "string" }, { "name": "employeeId", "in": "path", "required": true, "type": "string" } ], "responses": { "200": { "description": "OK" } } }, "delete": { "tags": [ "EmployeeDocument" ], "summary": "Unlink Employee Document from Leave Request", "description": "If the specified employee document is attached to the specified leave request, unattach it.", "operationId": "EmployeeDocumentLeaveLink_RemoveLink", "consumes": [], "produces": [ "application/json", "text/json", "application/xml", "text/xml" ], "parameters": [ { "name": "documentId", "in": "path", "required": true, "type": "integer", "format": "int32", "title": "Int32" }, { "name": "id", "in": "path", "required": true, "type": "integer", "format": "int32", "title": "Int32" }, { "name": "businessId", "in": "path", "required": true, "type": "string" }, { "name": "employeeId", "in": "path", "required": true, "type": "string" } ], "responses": { "200": { "description": "OK" } } } }, "/api/v2/business/{businessId}/employeeexpensecategory": { "get": { "tags": [ "EmployeeExpenseCategories" ], "summary": "List Employee Expense Categories", "description": "Lists all the employee expense categories for the business.\n\nThis operation supports OData queries.", "operationId": "EmployeeExpenseCategory_GetEmployeeExpenseCategories", "consumes": [], "produces": [ "application/json", "text/json", "application/xml", "text/xml" ], "parameters": [ { "name": "businessId", "in": "path", "required": true, "type": "string" } ], "responses": { "200": { "description": "OK", "schema": { "type": "array", "items": { "$ref": "#/definitions/EmployeeExpenseCategoryModel" }, "xml": { "name": "EmployeeExpenseCategoryModel", "wrapped": true }, "title": "IEnumerable" } } } }, "post": { "tags": [ "EmployeeExpenseCategories" ], "summary": "Create Employee Expense Category", "description": "Creates an employee expense category for the business.", "operationId": "EmployeeExpenseCategory_Post", "consumes": [ "application/json", "text/json", "application/xml", "text/xml", "application/x-www-form-urlencoded" ], "produces": [ "application/json", "text/json", "application/xml", "text/xml" ], "parameters": [ { "name": "employeeExpenseCategory", "in": "body", "required": true, "schema": { "$ref": "#/definitions/EmployeeExpenseCategoryModel" } }, { "name": "businessId", "in": "path", "required": true, "type": "string" } ], "responses": { "200": { "description": "OK" } } } }, "/api/v2/business/{businessId}/employeeexpensecategory/{id}": { "get": { "tags": [ "EmployeeExpenseCategories" ], "summary": "Get Employee Expense Category by ID", "description": "Gets the employee expense category with the specified ID.", "operationId": "EmployeeExpenseCategory_Get", "consumes": [], "produces": [ "application/json", "text/json", "application/xml", "text/xml" ], "parameters": [ { "name": "id", "in": "path", "required": true, "type": "integer", "format": "int32", "title": "Int32" }, { "name": "businessId", "in": "path", "required": true, "type": "string" } ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/EmployeeExpenseCategoryModel" } } } }, "put": { "tags": [ "EmployeeExpenseCategories" ], "summary": "Update Employee Expense Category", "description": "Updates the employee expense category with the specified ID.", "operationId": "EmployeeExpenseCategory_Put", "consumes": [ "application/json", "text/json", "application/xml", "text/xml", "application/x-www-form-urlencoded" ], "produces": [ "application/json", "text/json", "application/xml", "text/xml" ], "parameters": [ { "name": "id", "in": "path", "required": true, "type": "integer", "format": "int32", "title": "Int32" }, { "name": "employeeExpenseCategory", "in": "body", "required": true, "schema": { "$ref": "#/definitions/EmployeeExpenseCategoryModel" } }, { "name": "businessId", "in": "path", "required": true, "type": "string" } ], "responses": { "200": { "description": "OK" } } }, "delete": { "tags": [ "EmployeeExpenseCategories" ], "summary": "Delete Employee Expense Category", "description": "Deletes the employee expense category with the specified ID.", "operationId": "EmployeeExpenseCategory_Delete", "consumes": [], "produces": [ "application/json", "text/json", "application/xml", "text/xml" ], "parameters": [ { "name": "id", "in": "path", "required": true, "type": "integer", "format": "int32", "title": "Int32" }, { "name": "businessId", "in": "path", "required": true, "type": "string" } ], "responses": { "200": { "description": "OK" } } } }, "/api/v2/business/{businessId}/employeeexpensecategory/taxcodes": { "get": { "tags": [ "EmployeeExpenseCategories" ], "summary": "Get Tax Codes", "description": "Gets a list of the business' tax codes.", "operationId": "EmployeeExpenseCategory_TaxCodes", "consumes": [], "produces": [ "application/json", "text/json", "application/xml", "text/xml" ], "parameters": [ { "name": "businessId", "in": "path", "required": true, "type": "string" } ], "responses": { "200": { "description": "OK", "schema": { "type": "array", "items": { "$ref": "#/definitions/JournalServiceTaxCode" }, "xml": { "name": "JournalServiceTaxCode", "wrapped": true }, "title": "IList" } } } } }, "/api/v2/business/{businessId}/employee/{employeeId}/expenserequest": { "get": { "tags": [ "EmployeeExpenseRequest" ], "summary": "List Expense Requests", "description": "Lists all of the expense requests for this employee.\n\nThis operation supports OData queries.", "operationId": "ExpenseRequest_GetExpenseRequests", "consumes": [], "produces": [ "application/json", "text/json", "application/xml", "text/xml" ], "parameters": [ { "name": "businessId", "in": "path", "required": true, "type": "string" }, { "name": "employeeId", "in": "path", "required": true, "type": "string" } ], "responses": { "200": { "description": "OK", "schema": { "type": "array", "items": { "$ref": "#/definitions/ExpenseRequestResponseModel" }, "xml": { "name": "ExpenseRequestResponseModel", "wrapped": true }, "title": "IEnumerable" } } } }, "post": { "tags": [ "EmployeeExpenseRequest" ], "summary": "Create Expense Request", "description": "Creates a new expense request for this employee.", "operationId": "ExpenseRequest_Post", "consumes": [ "application/json", "text/json", "application/xml", "text/xml", "application/x-www-form-urlencoded" ], "produces": [ "application/json", "text/json", "application/xml", "text/xml" ], "parameters": [ { "name": "model", "in": "body", "required": true, "schema": { "$ref": "#/definitions/ExpenseRequestEditModel" } }, { "name": "businessId", "in": "path", "required": true, "type": "string" }, { "name": "employeeId", "in": "path", "required": true, "type": "string" } ], "responses": { "200": { "description": "OK" } } } }, "/api/v2/business/{businessId}/employee/{employeeId}/expenserequest/{expenseRequestId}": { "get": { "tags": [ "EmployeeExpenseRequest" ], "summary": "Get Expense Request by ID", "description": "Gets the expense request with the specified ID.", "operationId": "ExpenseRequest_Get", "consumes": [], "produces": [ "application/json", "text/json", "application/xml", "text/xml" ], "parameters": [ { "name": "employeeId", "in": "path", "required": true, "type": "integer", "format": "int32", "title": "Int32" }, { "name": "expenseRequestId", "in": "path", "required": true, "type": "integer", "format": "int32", "title": "Int32" }, { "name": "businessId", "in": "path", "required": true, "type": "string" } ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/ExpenseRequestResponseModel" } } } }, "put": { "tags": [ "EmployeeExpenseRequest" ], "summary": "Update Expense Request", "description": "Updates the expense request with the specified ID.", "operationId": "ExpenseRequest_Put", "consumes": [ "application/json", "text/json", "application/xml", "text/xml", "application/x-www-form-urlencoded" ], "produces": [ "application/json", "text/json", "application/xml", "text/xml" ], "parameters": [ { "name": "expenseRequestId", "in": "path", "required": true, "type": "integer", "format": "int32", "title": "Int32" }, { "name": "model", "in": "body", "required": true, "schema": { "$ref": "#/definitions/ExpenseRequestEditModel" } }, { "name": "businessId", "in": "path", "required": true, "type": "string" }, { "name": "employeeId", "in": "path", "required": true, "type": "string" } ], "responses": { "200": { "description": "OK" } } }, "delete": { "tags": [ "EmployeeExpenseRequest" ], "summary": "Delete Expense Request", "description": "Deletes the expense request with the specified ID.", "operationId": "ExpenseRequest_Delete", "consumes": [], "produces": [ "application/json", "text/json", "application/xml", "text/xml" ], "parameters": [ { "name": "expenseRequestId", "in": "path", "required": true, "type": "integer", "format": "int32", "title": "Int32" }, { "name": "businessId", "in": "path", "required": true, "type": "string" }, { "name": "employeeId", "in": "path", "required": true, "type": "string" } ], "responses": { "200": { "description": "OK" } } } }, "/api/v2/business/{businessId}/employee/{employeeId}/expenserequest/{expenseRequestId}/approve": { "post": { "tags": [ "EmployeeExpenseRequest" ], "summary": "Approve Expense Request", "description": "Approves the expense request with the specified ID.", "operationId": "ExpenseRequest_Approve", "consumes": [], "produces": [ "application/json", "text/json", "application/xml", "text/xml" ], "parameters": [ { "name": "expenseRequestId", "in": "path", "required": true, "type": "integer", "format": "int32", "title": "Int32" }, { "name": "businessId", "in": "path", "required": true, "type": "string" }, { "name": "employeeId", "in": "path", "required": true, "type": "string" } ], "responses": { "200": { "description": "OK" } } } }, "/api/v2/business/{businessId}/employee/{employeeId}/expenserequest/{expenseRequestId}/decline": { "post": { "tags": [ "EmployeeExpenseRequest" ], "summary": "Decline Expense Request", "description": "Declines the expense request with the specified ID.", "operationId": "ExpenseRequest_Decline", "consumes": [ "application/json", "text/json", "application/xml", "text/xml", "application/x-www-form-urlencoded" ], "produces": [ "application/json", "text/json", "application/xml", "text/xml" ], "parameters": [ { "name": "expenseRequestId", "in": "path", "required": true, "type": "integer", "format": "int32", "title": "Int32" }, { "name": "reason", "in": "body", "required": true, "schema": { "type": "string", "title": "String" } }, { "name": "businessId", "in": "path", "required": true, "type": "string" }, { "name": "employeeId", "in": "path", "required": true, "type": "string" } ], "responses": { "200": { "description": "OK" } } } }, "/api/v2/business/{businessId}/employee/{employeeId}/expenserequest/{expenseRequestId}/attachment": { "put": { "tags": [ "EmployeeExpenseRequest" ], "summary": "Upload Attachment to Expense Request", "description": "Uploads an attachment to the expense request with the specified ID. \r\nThe request should be a MIME multipart file upload request.", "operationId": "ExpenseRequest_UploadAttachment", "consumes": [], "produces": [ "application/json", "text/json", "application/xml", "text/xml" ], "parameters": [ { "name": "expenseRequestId", "in": "path", "required": true, "type": "integer", "format": "int32", "title": "Int32" }, { "name": "businessId", "in": "path", "required": true, "type": "string" }, { "name": "employeeId", "in": "path", "required": true, "type": "string" } ], "responses": { "200": { "description": "OK", "schema": { "type": "object", "title": "IHttpActionResult" } } } } }, "/api/v2/business/{businessId}/employeegroup": { "get": { "tags": [ "EmployeeGroups" ], "summary": "List Employee Groups", "description": "Lists all the employee groups for the business.\n\nThis operation supports OData queries.", "operationId": "EmployeeGroup_GetGroups", "consumes": [], "produces": [ "application/json", "text/json", "application/xml", "text/xml" ], "parameters": [ { "name": "businessId", "in": "path", "required": true, "type": "string" } ], "responses": { "200": { "description": "OK", "schema": { "type": "array", "items": { "$ref": "#/definitions/EmployeeGroupModel" }, "xml": { "name": "EmployeeGroupModel", "wrapped": true }, "title": "IQueryable" } } } }, "post": { "tags": [ "EmployeeGroups" ], "summary": "Create Employee Group", "description": "Creates a new employee group for the business.", "operationId": "EmployeeGroup_Post", "consumes": [ "application/json", "text/json", "application/xml", "text/xml", "application/x-www-form-urlencoded" ], "produces": [ "application/json", "text/json", "application/xml", "text/xml" ], "parameters": [ { "name": "employeeGroup", "in": "body", "required": true, "schema": { "$ref": "#/definitions/EmployeeGroupModel" } }, { "name": "businessId", "in": "path", "required": true, "type": "string" } ], "responses": { "200": { "description": "OK" } } } }, "/api/v2/business/{businessId}/employeegroup/{id}": { "get": { "tags": [ "EmployeeGroups" ], "summary": "Get Employee Group by ID", "description": "Gets the employee group with the specified ID.", "operationId": "EmployeeGroup_Get", "consumes": [], "produces": [ "application/json", "text/json", "application/xml", "text/xml" ], "parameters": [ { "name": "id", "in": "path", "required": true, "type": "integer", "format": "int32", "title": "Int32" }, { "name": "businessId", "in": "path", "required": true, "type": "string" } ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/DetailedEmployeeGroupModel" } } } }, "put": { "tags": [ "EmployeeGroups" ], "summary": "Update Employee Group", "description": "Updates the specified employee group.", "operationId": "EmployeeGroup_Put", "consumes": [ "application/json", "text/json", "application/xml", "text/xml", "application/x-www-form-urlencoded" ], "produces": [ "application/json", "text/json", "application/xml", "text/xml" ], "parameters": [ { "name": "id", "in": "path", "required": true, "type": "integer", "format": "int32", "title": "Int32" }, { "name": "employeeGroup", "in": "body", "required": true, "schema": { "$ref": "#/definitions/EmployeeGroupModel" } }, { "name": "businessId", "in": "path", "required": true, "type": "string" } ], "responses": { "200": { "description": "OK" } } }, "delete": { "tags": [ "EmployeeGroups" ], "summary": "Delete Employee Group", "description": "Deletes the employee group with the specified ID.", "operationId": "EmployeeGroup_Delete", "consumes": [], "produces": [ "application/json", "text/json", "application/xml", "text/xml" ], "parameters": [ { "name": "id", "in": "path", "required": true, "type": "integer", "format": "int32", "title": "Int32" }, { "name": "businessId", "in": "path", "required": true, "type": "string" } ], "responses": { "200": { "description": "OK" } } } }, "/api/v2/business/{businessId}/employee/{employeeId}/qualification/{qualificationId}/document": { "get": { "tags": [ "EmployeeQualifications" ], "summary": "List Documents for Employee Qualification", "description": "Lists all the documents associated with a specific employee qualification.", "operationId": "EmployeeQualificationDocument_Get", "consumes": [], "produces": [ "application/json", "text/json", "application/xml", "text/xml" ], "parameters": [ { "name": "qualificationId", "in": "path", "required": true, "type": "integer", "format": "int32", "title": "Int32" }, { "name": "businessId", "in": "path", "required": true, "type": "string" }, { "name": "employeeId", "in": "path", "required": true, "type": "string" } ], "responses": { "200": { "description": "OK", "schema": { "type": "array", "items": { "$ref": "#/definitions/EmployeeQualificationDocumentModel" }, "xml": { "name": "EmployeeQualificationDocumentModel", "wrapped": true }, "title": "List" } } } }, "post": { "tags": [ "EmployeeQualifications" ], "summary": "Create Employee Qualification Document", "description": "Uploads an employee qualification document. Note: the request should be a MIME multipart file upload request.", "operationId": "EmployeeQualificationDocument_Post", "consumes": [], "produces": [ "application/json", "text/json", "application/xml", "text/xml" ], "parameters": [ { "name": "qualificationId", "in": "path", "required": true, "type": "integer", "format": "int32", "title": "Int32" }, { "name": "visible", "in": "query", "required": false, "type": "boolean", "default": false, "title": "Boolean" }, { "name": "businessId", "in": "path", "required": true, "type": "string" }, { "name": "employeeId", "in": "path", "required": true, "type": "string" } ], "responses": { "200": { "description": "OK", "schema": { "type": "array", "items": { "$ref": "#/definitions/EmployeeQualificationDocumentModel" }, "xml": { "name": "EmployeeQualificationDocumentModel", "wrapped": true }, "title": "List" } } } } }, "/api/v2/business/{businessId}/employee/{employeeId}/qualification/{qualificationId}/document/{id}": { "get": { "tags": [ "EmployeeQualifications" ], "summary": "Get Qualification Document by ID", "description": "Gets the details for a qualification document by ID.", "operationId": "EmployeeQualificationDocument_GetApiV2BusinessByBusinessIdEmployeeByEmployeeIdQualificationByQualificationIdDocumentById", "consumes": [], "produces": [ "application/json", "text/json", "application/xml", "text/xml" ], "parameters": [ { "name": "qualificationId", "in": "path", "required": true, "type": "integer", "format": "int32", "title": "Int32" }, { "name": "id", "in": "path", "required": true, "type": "integer", "format": "int32", "title": "Int32" }, { "name": "businessId", "in": "path", "required": true, "type": "string" }, { "name": "employeeId", "in": "path", "required": true, "type": "string" } ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/EmployeeQualificationDocumentModel" } } } }, "delete": { "tags": [ "EmployeeQualifications" ], "summary": "Delete Employee Qualification Document", "description": "Deletes a specific employee qualification document.", "operationId": "EmployeeQualificationDocument_Delete", "consumes": [], "produces": [ "application/json", "text/json", "application/xml", "text/xml" ], "parameters": [ { "name": "qualificationId", "in": "path", "required": true, "type": "integer", "format": "int32", "title": "Int32" }, { "name": "id", "in": "path", "required": true, "type": "integer", "format": "int32", "title": "Int32" }, { "name": "businessId", "in": "path", "required": true, "type": "string" }, { "name": "employeeId", "in": "path", "required": true, "type": "string" } ], "responses": { "200": { "description": "OK" } } } }, "/api/v2/business/{businessId}/employee/{employeeId}/qualification/{qualificationId}/document/{id}/content": { "get": { "tags": [ "EmployeeQualifications" ], "summary": "Get Qualification Document File", "description": "Gets the file for an employee qualification document by ID.", "operationId": "EmployeeQualificationDocument_Content", "consumes": [], "produces": [ "application/json", "text/json", "application/xml", "text/xml" ], "parameters": [ { "name": "qualificationId", "in": "path", "required": true, "type": "integer", "format": "int32", "title": "Int32" }, { "name": "id", "in": "path", "required": true, "type": "integer", "format": "int32", "title": "Int32" }, { "name": "businessId", "in": "path", "required": true, "type": "string" }, { "name": "employeeId", "in": "path", "required": true, "type": "string" } ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/DocumentFile" } } } } }, "/api/v2/business/{businessId}/employee/{employeeId}/qualification": { "get": { "tags": [ "EmployeeQualifications" ], "summary": "Get Qualifications for Employee", "description": "Retrieves the qualification details for a single employee.", "operationId": "EmployeeQualification_GetQualifications", "consumes": [], "produces": [ "application/json", "text/json", "application/xml", "text/xml" ], "parameters": [ { "name": "businessId", "in": "path", "required": true, "type": "string" }, { "name": "employeeId", "in": "path", "required": true, "type": "string" } ], "responses": { "200": { "description": "OK", "schema": { "type": "array", "items": { "$ref": "#/definitions/EmployeeQualificationModel" }, "xml": { "name": "EmployeeQualificationModel", "wrapped": true }, "title": "IQueryable" } } } }, "post": { "tags": [ "EmployeeQualifications" ], "summary": "Add/Update Employee Qualification", "description": "Adds or updates a qualification for an employee.", "operationId": "EmployeeQualification_Post", "consumes": [ "application/json", "text/json", "application/xml", "text/xml", "application/x-www-form-urlencoded" ], "produces": [ "application/json", "text/json", "application/xml", "text/xml" ], "parameters": [ { "name": "qualification", "in": "body", "required": true, "schema": { "$ref": "#/definitions/EmployeeQualificationModel" } }, { "name": "businessId", "in": "path", "required": true, "type": "string" }, { "name": "employeeId", "in": "path", "required": true, "type": "string" } ], "responses": { "200": { "description": "OK" } } }, "delete": { "tags": [ "EmployeeQualifications" ], "summary": "Delete Employee Qualification", "description": "Deletes an employee qualification. Denotes that the employee is no longer qualified for the specified qualification.", "operationId": "EmployeeQualification_Delete", "consumes": [], "produces": [ "application/json", "text/json", "application/xml", "text/xml" ], "parameters": [ { "name": "id", "in": "query", "required": true, "type": "integer", "format": "int32", "title": "Int32" }, { "name": "businessId", "in": "path", "required": true, "type": "string" }, { "name": "employeeId", "in": "path", "required": true, "type": "string" } ], "responses": { "200": { "description": "OK" } } } }, "/api/v2/business/{businessId}/employee/{employeeId}/qualification/{id}": { "get": { "tags": [ "EmployeeQualifications" ], "summary": "Get Qualification Details", "description": "Gets the details for the qualification with a specific ID.", "operationId": "EmployeeQualification_Get", "consumes": [], "produces": [ "application/json", "text/json", "application/xml", "text/xml" ], "parameters": [ { "name": "id", "in": "path", "required": true, "type": "integer", "format": "int32", "title": "Int32" }, { "name": "businessId", "in": "path", "required": true, "type": "string" }, { "name": "employeeId", "in": "path", "required": true, "type": "string" } ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/EmployeeQualificationModel" } } } } }, "/api/v2/business/{businessId}/employee/{employeeId}/taxadjustment": { "get": { "tags": [ "EmployeeRecurringTransactions" ], "summary": "List Employee Tax Adjustments", "description": "Lists all the recurring employee tax adjustments for the employee", "operationId": "EmployeeRecurringTaxAdjustment_List", "consumes": [], "produces": [ "application/json", "text/json", "application/xml", "text/xml" ], "parameters": [ { "name": "businessId", "in": "path", "required": true, "type": "string" }, { "name": "employeeId", "in": "path", "required": true, "type": "string" } ], "responses": { "200": { "description": "OK", "schema": { "type": "array", "items": { "$ref": "#/definitions/EmployeeRecurringTaxAdjustmentModel" }, "xml": { "name": "EmployeeRecurringTaxAdjustmentModel", "wrapped": true }, "title": "IEnumerable" } } } }, "post": { "tags": [ "EmployeeRecurringTransactions" ], "summary": "Create Employee Tax Adjustment", "description": "Creates a new recurring tax adjustment for the employee.", "operationId": "EmployeeRecurringTaxAdjustment_Post", "consumes": [ "application/json", "text/json", "application/xml", "text/xml", "application/x-www-form-urlencoded" ], "produces": [ "application/json", "text/json", "application/xml", "text/xml" ], "parameters": [ { "name": "model", "in": "body", "required": true, "schema": { "$ref": "#/definitions/EmployeeRecurringTaxAdjustmentModel" } }, { "name": "businessId", "in": "path", "required": true, "type": "string" }, { "name": "employeeId", "in": "path", "required": true, "type": "string" } ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/EmployeeRecurringTaxAdjustmentModel" } } } } }, "/api/v2/business/{businessId}/employee/{employeeId}/taxadjustment/{id}": { "get": { "tags": [ "EmployeeRecurringTransactions" ], "summary": "Get Employee Tax Adjustment by ID", "description": "Gets the employee's recurring tax adjustment with the specified ID.", "operationId": "EmployeeRecurringTaxAdjustment_Get", "consumes": [], "produces": [ "application/json", "text/json", "application/xml", "text/xml" ], "parameters": [ { "name": "id", "in": "path", "required": true, "type": "integer", "format": "int32", "title": "Int32" }, { "name": "businessId", "in": "path", "required": true, "type": "string" }, { "name": "employeeId", "in": "path", "required": true, "type": "string" } ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/EmployeeRecurringTaxAdjustmentModel" } } } }, "put": { "tags": [ "EmployeeRecurringTransactions" ], "summary": "Update Employee Tax Adjustment", "description": "Updates the employee's recurring tax adjustment with the specified ID.", "operationId": "EmployeeRecurringTaxAdjustment_Put", "consumes": [ "application/json", "text/json", "application/xml", "text/xml", "application/x-www-form-urlencoded" ], "produces": [ "application/json", "text/json", "application/xml", "text/xml" ], "parameters": [ { "name": "id", "in": "path", "required": true, "type": "integer", "format": "int32", "title": "Int32" }, { "name": "model", "in": "body", "required": true, "schema": { "$ref": "#/definitions/EmployeeRecurringTaxAdjustmentModel" } }, { "name": "businessId", "in": "path", "required": true, "type": "string" }, { "name": "employeeId", "in": "path", "required": true, "type": "string" } ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/EmployeeRecurringTaxAdjustmentModel" } } } }, "delete": { "tags": [ "EmployeeRecurringTransactions" ], "summary": "Delete Employee Tax Adjustment", "description": "Deletes the employee recurring tax adjustment with the specified ID.", "operationId": "EmployeeRecurringTaxAdjustment_Delete", "consumes": [], "produces": [ "application/json", "text/json", "application/xml", "text/xml" ], "parameters": [ { "name": "id", "in": "path", "required": true, "type": "integer", "format": "int32", "title": "Int32" }, { "name": "businessId", "in": "path", "required": true, "type": "string" }, { "name": "employeeId", "in": "path", "required": true, "type": "string" } ], "responses": { "200": { "description": "OK" } } } }, "/api/v2/business/{businessId}/employee/{employeeId}/superadjustment": { "get": { "tags": [ "EmployeeRecurringTransactions" ], "summary": "List Employee Super Adjustments", "description": "Lists all the recurring employee super adjustments for the employee", "operationId": "EmployeeRecurringSuperAdjustment_List", "consumes": [], "produces": [ "application/json", "text/json", "application/xml", "text/xml" ], "parameters": [ { "name": "businessId", "in": "path", "required": true, "type": "string" }, { "name": "employeeId", "in": "path", "required": true, "type": "string" } ], "responses": { "200": { "description": "OK", "schema": { "type": "array", "items": { "$ref": "#/definitions/EmployeeRecurringSuperAdjustmentModel" }, "xml": { "name": "EmployeeRecurringSuperAdjustmentModel", "wrapped": true }, "title": "IEnumerable" } } } }, "post": { "tags": [ "EmployeeRecurringTransactions" ], "summary": "Create Employee Super Adjustment", "description": "Creates a new recurring super adjustment for the employee.", "operationId": "EmployeeRecurringSuperAdjustment_Post", "consumes": [ "application/json", "text/json", "application/xml", "text/xml", "application/x-www-form-urlencoded" ], "produces": [ "application/json", "text/json", "application/xml", "text/xml" ], "parameters": [ { "name": "model", "in": "body", "required": true, "schema": { "$ref": "#/definitions/EmployeeRecurringSuperAdjustmentModel" } }, { "name": "businessId", "in": "path", "required": true, "type": "string" }, { "name": "employeeId", "in": "path", "required": true, "type": "string" } ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/EmployeeRecurringSuperAdjustmentModel" } } } } }, "/api/v2/business/{businessId}/employee/{employeeId}/superadjustment/{id}": { "get": { "tags": [ "EmployeeRecurringTransactions" ], "summary": "Get Employee Super Adjustment by ID", "description": "Gets the employee's recurring super adjustment with the specified ID.", "operationId": "EmployeeRecurringSuperAdjustment_Get", "consumes": [], "produces": [ "application/json", "text/json", "application/xml", "text/xml" ], "parameters": [ { "name": "id", "in": "path", "required": true, "type": "integer", "format": "int32", "title": "Int32" }, { "name": "businessId", "in": "path", "required": true, "type": "string" }, { "name": "employeeId", "in": "path", "required": true, "type": "string" } ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/EmployeeRecurringSuperAdjustmentModel" } } } }, "put": { "tags": [ "EmployeeRecurringTransactions" ], "summary": "Update Employee Super Adjustment", "description": "Updates the employee's recurring super adjustment with the specified ID.", "operationId": "EmployeeRecurringSuperAdjustment_Put", "consumes": [ "application/json", "text/json", "application/xml", "text/xml", "application/x-www-form-urlencoded" ], "produces": [ "application/json", "text/json", "application/xml", "text/xml" ], "parameters": [ { "name": "id", "in": "path", "required": true, "type": "integer", "format": "int32", "title": "Int32" }, { "name": "model", "in": "body", "required": true, "schema": { "$ref": "#/definitions/EmployeeRecurringSuperAdjustmentModel" } }, { "name": "businessId", "in": "path", "required": true, "type": "string" }, { "name": "employeeId", "in": "path", "required": true, "type": "string" } ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/EmployeeRecurringSuperAdjustmentModel" } } } }, "delete": { "tags": [ "EmployeeRecurringTransactions" ], "summary": "Delete Employee Super Adjustment", "description": "Deletes the employee recurring super adjustment with the specified ID.", "operationId": "EmployeeRecurringSuperAdjustment_Delete", "consumes": [], "produces": [ "application/json", "text/json", "application/xml", "text/xml" ], "parameters": [ { "name": "id", "in": "path", "required": true, "type": "integer", "format": "int32", "title": "Int32" }, { "name": "businessId", "in": "path", "required": true, "type": "string" }, { "name": "employeeId", "in": "path", "required": true, "type": "string" } ], "responses": { "200": { "description": "OK" } } } }, "/api/v2/business/{businessId}/employee/{employeeId}/employerliability": { "get": { "tags": [ "EmployeeRecurringTransactions" ], "summary": "List Employer liabilities", "description": "Lists all the recurring employer liabilities for the employee", "operationId": "Employerrecurringliability_List", "consumes": [], "produces": [ "application/json", "text/json", "application/xml", "text/xml" ], "parameters": [ { "name": "businessId", "in": "path", "required": true, "type": "string" }, { "name": "employeeId", "in": "path", "required": true, "type": "string" } ], "responses": { "200": { "description": "OK", "schema": { "type": "array", "items": { "$ref": "#/definitions/EmployerRecurringLiabilityModel" }, "xml": { "name": "EmployerRecurringLiabilityModel", "wrapped": true }, "title": "IEnumerable" } } } }, "post": { "tags": [ "EmployeeRecurringTransactions" ], "summary": "Create Employer liability", "description": "Creates a new recurring employer liability for the employee.", "operationId": "Employerrecurringliability_Post", "consumes": [ "application/json", "text/json", "application/xml", "text/xml", "application/x-www-form-urlencoded" ], "produces": [ "application/json", "text/json", "application/xml", "text/xml" ], "parameters": [ { "name": "model", "in": "body", "required": true, "schema": { "$ref": "#/definitions/EmployerRecurringLiabilityModel" } }, { "name": "businessId", "in": "path", "required": true, "type": "string" }, { "name": "employeeId", "in": "path", "required": true, "type": "string" } ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/EmployerRecurringLiabilityModel" } } } } }, "/api/v2/business/{businessId}/employee/{employeeId}/employerliability/{id}": { "get": { "tags": [ "EmployeeRecurringTransactions" ], "summary": "Get Employer liability by ID", "description": "Gets the employee's recurring employer liabilities with the specified ID.", "operationId": "Employerrecurringliability_Get", "consumes": [], "produces": [ "application/json", "text/json", "application/xml", "text/xml" ], "parameters": [ { "name": "id", "in": "path", "required": true, "type": "integer", "format": "int32", "title": "Int32" }, { "name": "businessId", "in": "path", "required": true, "type": "string" }, { "name": "employeeId", "in": "path", "required": true, "type": "string" } ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/EmployerRecurringLiabilityModel" } } } }, "put": { "tags": [ "EmployeeRecurringTransactions" ], "summary": "Update Employer liability", "description": "Updates the employee's recurring employer liability with the specified ID.", "operationId": "Employerrecurringliability_Put", "consumes": [ "application/json", "text/json", "application/xml", "text/xml", "application/x-www-form-urlencoded" ], "produces": [ "application/json", "text/json", "application/xml", "text/xml" ], "parameters": [ { "name": "id", "in": "path", "required": true, "type": "integer", "format": "int32", "title": "Int32" }, { "name": "model", "in": "body", "required": true, "schema": { "$ref": "#/definitions/EmployerRecurringLiabilityModel" } }, { "name": "businessId", "in": "path", "required": true, "type": "string" }, { "name": "employeeId", "in": "path", "required": true, "type": "string" } ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/EmployerRecurringLiabilityModel" } } } }, "delete": { "tags": [ "EmployeeRecurringTransactions" ], "summary": "Delete Employer liability", "description": "Deletes the recurring employer liability with the specified ID.", "operationId": "Employerrecurringliability_Delete", "consumes": [], "produces": [ "application/json", "text/json", "application/xml", "text/xml" ], "parameters": [ { "name": "id", "in": "path", "required": true, "type": "integer", "format": "int32", "title": "Int32" }, { "name": "businessId", "in": "path", "required": true, "type": "string" }, { "name": "employeeId", "in": "path", "required": true, "type": "string" } ], "responses": { "200": { "description": "OK" } } } }, "/api/v2/business/{businessId}/employee/{employeeId}/deduction": { "get": { "tags": [ "EmployeeRecurringTransactions" ], "summary": "List Employee Deductions", "description": "Lists all the recurring employee deductions for the employee", "operationId": "EmployeeRecurringDeduction_List", "consumes": [], "produces": [ "application/json", "text/json", "application/xml", "text/xml" ], "parameters": [ { "name": "businessId", "in": "path", "required": true, "type": "string" }, { "name": "employeeId", "in": "path", "required": true, "type": "string" } ], "responses": { "200": { "description": "OK", "schema": { "type": "array", "items": { "$ref": "#/definitions/EmployeeRecurringDeductionModel" }, "xml": { "name": "EmployeeRecurringDeductionModel", "wrapped": true }, "title": "IEnumerable" } } } }, "post": { "tags": [ "EmployeeRecurringTransactions" ], "summary": "Create Employee Deduction", "description": "Creates a new recurring deduction for the employee.", "operationId": "EmployeeRecurringDeduction_Post", "consumes": [ "application/json", "text/json", "application/xml", "text/xml", "application/x-www-form-urlencoded" ], "produces": [ "application/json", "text/json", "application/xml", "text/xml" ], "parameters": [ { "name": "model", "in": "body", "required": true, "schema": { "$ref": "#/definitions/EmployeeRecurringDeductionModel" } }, { "name": "businessId", "in": "path", "required": true, "type": "string" }, { "name": "employeeId", "in": "path", "required": true, "type": "string" } ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/EmployeeRecurringDeductionModel" } } } } }, "/api/v2/business/{businessId}/employee/{employeeId}/deduction/{id}": { "get": { "tags": [ "EmployeeRecurringTransactions" ], "summary": "Get Employee Deduction by ID", "description": "Gets the employee's recurring deduction with the specified ID.", "operationId": "EmployeeRecurringDeduction_Get", "consumes": [], "produces": [ "application/json", "text/json", "application/xml", "text/xml" ], "parameters": [ { "name": "id", "in": "path", "required": true, "type": "integer", "format": "int32", "title": "Int32" }, { "name": "businessId", "in": "path", "required": true, "type": "string" }, { "name": "employeeId", "in": "path", "required": true, "type": "string" } ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/EmployeeRecurringDeductionModel" } } } }, "put": { "tags": [ "EmployeeRecurringTransactions" ], "summary": "Update Employee Deduction", "description": "Updates the employee's recurring deduction with the specified ID.", "operationId": "EmployeeRecurringDeduction_Put", "consumes": [ "application/json", "text/json", "application/xml", "text/xml", "application/x-www-form-urlencoded" ], "produces": [ "application/json", "text/json", "application/xml", "text/xml" ], "parameters": [ { "name": "id", "in": "path", "required": true, "type": "integer", "format": "int32", "title": "Int32" }, { "name": "model", "in": "body", "required": true, "schema": { "$ref": "#/definitions/EmployeeRecurringDeductionModel" } }, { "name": "businessId", "in": "path", "required": true, "type": "string" }, { "name": "employeeId", "in": "path", "required": true, "type": "string" } ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/EmployeeRecurringDeductionModel" } } } }, "delete": { "tags": [ "EmployeeRecurringTransactions" ], "summary": "Delete Employee Deduction", "description": "Deletes the employee recurring deduction with the specified ID.", "operationId": "EmployeeRecurringDeduction_Delete", "consumes": [], "produces": [ "application/json", "text/json", "application/xml", "text/xml" ], "parameters": [ { "name": "id", "in": "path", "required": true, "type": "integer", "format": "int32", "title": "Int32" }, { "name": "businessId", "in": "path", "required": true, "type": "string" }, { "name": "employeeId", "in": "path", "required": true, "type": "string" } ], "responses": { "200": { "description": "OK" } } } }, "/api/v2/business/{businessId}/employee/{employeeId}/expense": { "get": { "tags": [ "EmployeeRecurringTransactions" ], "summary": "List Employee Expenses", "description": "Lists all the recurring employee expenses for the employee", "operationId": "EmployeeRecurringExpense_List", "consumes": [], "produces": [ "application/json", "text/json", "application/xml", "text/xml" ], "parameters": [ { "name": "businessId", "in": "path", "required": true, "type": "string" }, { "name": "employeeId", "in": "path", "required": true, "type": "string" } ], "responses": { "200": { "description": "OK", "schema": { "type": "array", "items": { "$ref": "#/definitions/EmployeeRecurringExpenseModel" }, "xml": { "name": "EmployeeRecurringExpenseModel", "wrapped": true }, "title": "IEnumerable" } } } }, "post": { "tags": [ "EmployeeRecurringTransactions" ], "summary": "Create Employee Expense", "description": "Creates a new recurring expense for the employee.", "operationId": "EmployeeRecurringExpense_Post", "consumes": [ "application/json", "text/json", "application/xml", "text/xml", "application/x-www-form-urlencoded" ], "produces": [ "application/json", "text/json", "application/xml", "text/xml" ], "parameters": [ { "name": "model", "in": "body", "required": true, "schema": { "$ref": "#/definitions/EmployeeRecurringExpenseModel" } }, { "name": "businessId", "in": "path", "required": true, "type": "string" }, { "name": "employeeId", "in": "path", "required": true, "type": "string" } ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/EmployeeRecurringExpenseModel" } } } } }, "/api/v2/business/{businessId}/employee/{employeeId}/expense/{id}": { "get": { "tags": [ "EmployeeRecurringTransactions" ], "summary": "Get Employee Expense by ID", "description": "Gets the employee's recurring expense with the specified ID.", "operationId": "EmployeeRecurringExpense_Get", "consumes": [], "produces": [ "application/json", "text/json", "application/xml", "text/xml" ], "parameters": [ { "name": "id", "in": "path", "required": true, "type": "integer", "format": "int32", "title": "Int32" }, { "name": "businessId", "in": "path", "required": true, "type": "string" }, { "name": "employeeId", "in": "path", "required": true, "type": "string" } ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/EmployeeRecurringExpenseModel" } } } }, "put": { "tags": [ "EmployeeRecurringTransactions" ], "summary": "Update Employee Expense", "description": "Updates the employee's recurring expense with the specified ID.", "operationId": "EmployeeRecurringExpense_Put", "consumes": [ "application/json", "text/json", "application/xml", "text/xml", "application/x-www-form-urlencoded" ], "produces": [ "application/json", "text/json", "application/xml", "text/xml" ], "parameters": [ { "name": "id", "in": "path", "required": true, "type": "integer", "format": "int32", "title": "Int32" }, { "name": "model", "in": "body", "required": true, "schema": { "$ref": "#/definitions/EmployeeRecurringExpenseModel" } }, { "name": "businessId", "in": "path", "required": true, "type": "string" }, { "name": "employeeId", "in": "path", "required": true, "type": "string" } ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/EmployeeRecurringExpenseModel" } } } }, "delete": { "tags": [ "EmployeeRecurringTransactions" ], "summary": "Delete Employee Expense", "description": "Deletes the employee recurring expense with the specified ID.", "operationId": "EmployeeRecurringExpense_Delete", "consumes": [], "produces": [ "application/json", "text/json", "application/xml", "text/xml" ], "parameters": [ { "name": "id", "in": "path", "required": true, "type": "integer", "format": "int32", "title": "Int32" }, { "name": "businessId", "in": "path", "required": true, "type": "string" }, { "name": "employeeId", "in": "path", "required": true, "type": "string" } ], "responses": { "200": { "description": "OK" } } } }, "/api/v2/business/{businessId}/employee/{employeeId}/superfund": { "get": { "tags": [ "EmployeeSuperFund" ], "summary": "List Super Funds", "description": "Lists all of the super funds for this employee.", "operationId": "EmployeeSuperFund_List", "consumes": [], "produces": [ "application/json", "text/json", "application/xml", "text/xml" ], "parameters": [ { "name": "businessId", "in": "path", "required": true, "type": "string" }, { "name": "employeeId", "in": "path", "required": true, "type": "string" } ], "responses": { "200": { "description": "OK", "schema": { "type": "array", "items": { "$ref": "#/definitions/SuperFundModel" }, "xml": { "name": "SuperFundModel", "wrapped": true }, "title": "IEnumerable" } } } }, "post": { "tags": [ "EmployeeSuperFund" ], "summary": "Create Super Fund", "description": "Creates a new super fund for the employee.", "operationId": "EmployeeSuperFund_Post", "consumes": [ "application/json", "text/json", "application/xml", "text/xml", "application/x-www-form-urlencoded" ], "produces": [ "application/json", "text/json", "application/xml", "text/xml" ], "parameters": [ { "name": "model", "in": "body", "required": true, "schema": { "$ref": "#/definitions/SaveSuperFundModel" } }, { "name": "businessId", "in": "path", "required": true, "type": "string" }, { "name": "employeeId", "in": "path", "required": true, "type": "string" } ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/SaveSuperFundResponseModel" } } } } }, "/api/v2/business/{businessId}/employee/{employeeId}/superfund/{superFundId}": { "get": { "tags": [ "EmployeeSuperFund" ], "summary": "Get Super Fund by ID", "description": "Gets the super fund for this employee with the specified ID.", "operationId": "EmployeeSuperFund_Get", "consumes": [], "produces": [ "application/json", "text/json", "application/xml", "text/xml" ], "parameters": [ { "name": "superFundId", "in": "path", "required": true, "type": "integer", "format": "int32", "title": "Int32" }, { "name": "businessId", "in": "path", "required": true, "type": "string" }, { "name": "employeeId", "in": "path", "required": true, "type": "string" } ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/SuperFundModel" } } } } }, "/api/v2/business/{businessId}/employee/{employeeId}/superfund/{id}": { "put": { "tags": [ "EmployeeSuperFund" ], "summary": "Update Super Fund", "description": "Updates the employee's super fund with the specified ID.", "operationId": "EmployeeSuperFund_Put", "consumes": [ "application/json", "text/json", "application/xml", "text/xml", "application/x-www-form-urlencoded" ], "produces": [ "application/json", "text/json", "application/xml", "text/xml" ], "parameters": [ { "name": "id", "in": "path", "required": true, "type": "integer", "format": "int32", "title": "Int32" }, { "name": "model", "in": "body", "required": true, "schema": { "$ref": "#/definitions/SaveSuperFundModel" } }, { "name": "businessId", "in": "path", "required": true, "type": "string" }, { "name": "employeeId", "in": "path", "required": true, "type": "string" } ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/SaveSuperFundResponseModel" } } } } }, "/api/v2/business/{businessId}/employee/{employeeId}/superfund/{superfundId}": { "delete": { "tags": [ "EmployeeSuperFund" ], "summary": "Delete Super Fund", "description": "Deletes the employee's super fund with the specified ID.", "operationId": "EmployeeSuperFund_Delete", "consumes": [], "produces": [ "application/json", "text/json", "application/xml", "text/xml" ], "parameters": [ { "name": "superfundId", "in": "path", "required": true, "type": "integer", "format": "int32", "title": "Int32" }, { "name": "businessId", "in": "path", "required": true, "type": "string" }, { "name": "employeeId", "in": "path", "required": true, "type": "string" } ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/SaveSuperFundResponseModel" } } } } }, "/api/v2/business/{businessId}/employerliabilitycategory": { "get": { "tags": [ "EmployerLiabilityCategories" ], "summary": "List Employer Liability Categories", "description": "Lists all the employer liability categories for this business.\n\nThis operation supports OData queries.", "operationId": "EmployerLiabilityCategory_GetEmployerLiabilityCategories", "consumes": [], "produces": [ "application/json", "text/json", "application/xml", "text/xml" ], "parameters": [ { "name": "businessId", "in": "path", "required": true, "type": "string" } ], "responses": { "200": { "description": "OK", "schema": { "type": "array", "items": { "$ref": "#/definitions/EmployerLiabilityCategoryModel" }, "xml": { "name": "EmployerLiabilityCategoryModel", "wrapped": true }, "title": "IEnumerable" } } } }, "post": { "tags": [ "EmployerLiabilityCategories" ], "summary": "Create Employer Liability Category", "description": "Creates an employer liability category for the business.", "operationId": "EmployerLiabilityCategory_Post", "consumes": [ "application/json", "text/json", "application/xml", "text/xml", "application/x-www-form-urlencoded" ], "produces": [ "application/json", "text/json", "application/xml", "text/xml" ], "parameters": [ { "name": "employerLiabilityCategory", "in": "body", "required": true, "schema": { "$ref": "#/definitions/EmployerLiabilityCategoryModel" } }, { "name": "businessId", "in": "path", "required": true, "type": "string" } ], "responses": { "200": { "description": "OK" } } } }, "/api/v2/business/{businessId}/employerliabilitycategory/{id}": { "get": { "tags": [ "EmployerLiabilityCategories" ], "summary": "Get Employer Liability Category", "description": "Gets the employer liability category with the specified ID.", "operationId": "EmployerLiabilityCategory_Get", "consumes": [], "produces": [ "application/json", "text/json", "application/xml", "text/xml" ], "parameters": [ { "name": "id", "in": "path", "required": true, "type": "integer", "format": "int32", "title": "Int32" }, { "name": "businessId", "in": "path", "required": true, "type": "string" } ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/EmployerLiabilityCategoryModel" } } } }, "put": { "tags": [ "EmployerLiabilityCategories" ], "summary": "Update Employer Liability Category", "description": "Updates the employer liability category with the specified ID.", "operationId": "EmployerLiabilityCategory_Put", "consumes": [ "application/json", "text/json", "application/xml", "text/xml", "application/x-www-form-urlencoded" ], "produces": [ "application/json", "text/json", "application/xml", "text/xml" ], "parameters": [ { "name": "id", "in": "path", "required": true, "type": "integer", "format": "int32", "title": "Int32" }, { "name": "employerLiabilityCategory", "in": "body", "required": true, "schema": { "$ref": "#/definitions/EmployerLiabilityCategoryModel" } }, { "name": "businessId", "in": "path", "required": true, "type": "string" } ], "responses": { "200": { "description": "OK" } } }, "delete": { "tags": [ "EmployerLiabilityCategories" ], "summary": "Delete Employer Liability Category", "description": "Deletes the employer liability category with the specified ID.", "operationId": "EmployerLiabilityCategory_Delete", "consumes": [], "produces": [ "application/json", "text/json", "application/xml", "text/xml" ], "parameters": [ { "name": "id", "in": "path", "required": true, "type": "integer", "format": "int32", "title": "Int32" }, { "name": "businessId", "in": "path", "required": true, "type": "string" } ], "responses": { "200": { "description": "OK" } } } }, "/api/v2/business/{businessId}/employingentity": { "get": { "tags": [ "EmployingEntities" ], "summary": "List Employing Entities", "description": "Lists all the employing entities for the business.\n\nThis operation supports OData queries.", "operationId": "EmployingEntity_GetEmployingEntities", "consumes": [], "produces": [ "application/json", "text/json", "application/xml", "text/xml" ], "parameters": [ { "name": "businessId", "in": "path", "required": true, "type": "string" } ], "responses": { "200": { "description": "OK", "schema": { "type": "array", "items": { "$ref": "#/definitions/EmployingEntityModel" }, "xml": { "name": "EmployingEntityModel", "wrapped": true }, "title": "IEnumerable" } } } }, "post": { "tags": [ "EmployingEntities" ], "summary": "Create Employing Entity", "description": "Creates a new employing entity for the business.", "operationId": "EmployingEntity_Post", "consumes": [ "application/json", "text/json", "application/xml", "text/xml", "application/x-www-form-urlencoded" ], "produces": [ "application/json", "text/json", "application/xml", "text/xml" ], "parameters": [ { "name": "employingEntity", "in": "body", "required": true, "schema": { "$ref": "#/definitions/EmployingEntityModel" } }, { "name": "businessId", "in": "path", "required": true, "type": "string" } ], "responses": { "200": { "description": "OK" } } } }, "/api/v2/business/{businessId}/employingentity/{id}": { "get": { "tags": [ "EmployingEntities" ], "summary": "Get Employing Entity By ID", "description": "Gets the employing entity with the specified ID.", "operationId": "EmployingEntity_Get", "consumes": [], "produces": [ "application/json", "text/json", "application/xml", "text/xml" ], "parameters": [ { "name": "id", "in": "path", "required": true, "type": "integer", "format": "int32", "title": "Int32" }, { "name": "businessId", "in": "path", "required": true, "type": "string" } ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/EmployingEntityModel" } } } }, "put": { "tags": [ "EmployingEntities" ], "summary": "Update Employing Entity", "description": "Updates the employing entity with the specified ID.", "operationId": "EmployingEntity_Put", "consumes": [ "application/json", "text/json", "application/xml", "text/xml", "application/x-www-form-urlencoded" ], "produces": [ "application/json", "text/json", "application/xml", "text/xml" ], "parameters": [ { "name": "id", "in": "path", "required": true, "type": "integer", "format": "int32", "title": "Int32" }, { "name": "employingEntity", "in": "body", "required": true, "schema": { "$ref": "#/definitions/EmployingEntityModel" } }, { "name": "businessId", "in": "path", "required": true, "type": "string" } ], "responses": { "200": { "description": "OK" } } }, "delete": { "tags": [ "EmployingEntities" ], "summary": "Delete Employing Entity", "description": "Deletes the employing entity with the specified ID.", "operationId": "EmployingEntity_Delete", "consumes": [], "produces": [ "application/json", "text/json", "application/xml", "text/xml" ], "parameters": [ { "name": "id", "in": "path", "required": true, "type": "integer", "format": "int32", "title": "Int32" }, { "name": "businessId", "in": "path", "required": true, "type": "string" } ], "responses": { "200": { "description": "OK" } } } }, "/api/v2/business/{businessId}/employmentagreement": { "get": { "tags": [ "EmploymentAgreement" ], "summary": "List Employment Agreements", "description": "Lists all of the employment agreements for the business.\n\nThis operation supports OData queries.", "operationId": "EmploymentAgreement_GetAll", "consumes": [], "produces": [ "application/json", "text/json", "application/xml", "text/xml" ], "parameters": [ { "name": "businessId", "in": "path", "required": true, "type": "string" } ], "responses": { "200": { "description": "OK", "schema": { "type": "array", "items": { "$ref": "#/definitions/BasicEmploymentAgreementModel" }, "xml": { "name": "BasicEmploymentAgreementModel", "wrapped": true }, "title": "IQueryable" } } } } }, "/api/v2/business/{businessId}/employmentagreement/{id}": { "get": { "tags": [ "EmploymentAgreement" ], "summary": "Get Employment Agreement by ID", "description": "Gets the employment agreement with the specified ID.", "operationId": "EmploymentAgreement_Get", "consumes": [], "produces": [ "application/json", "text/json", "application/xml", "text/xml" ], "parameters": [ { "name": "id", "in": "path", "required": true, "type": "integer", "format": "int32", "title": "Int32" }, { "name": "businessId", "in": "path", "required": true, "type": "string" } ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/EmploymentAgreementModel" } } } } }, "/api/v2/business/{businessId}/employmentagreement/{id}/shiftperiods": { "post": { "tags": [ "EmploymentAgreement" ], "summary": "Get Shift Periods", "description": "Gets all the shift periods for the employment agreement with the specified ID.", "operationId": "EmploymentAgreement_ShiftPeriods", "consumes": [ "application/json", "text/json", "application/xml", "text/xml", "application/x-www-form-urlencoded" ], "produces": [ "application/json", "text/json", "application/xml", "text/xml" ], "parameters": [ { "name": "id", "in": "path", "required": true, "type": "integer", "format": "int32", "title": "Int32" }, { "name": "model", "in": "body", "required": true, "schema": { "$ref": "#/definitions/GetShiftPeriodsModel" } }, { "name": "businessId", "in": "path", "required": true, "type": "string" } ], "responses": { "200": { "description": "OK", "schema": { "type": "array", "items": { "$ref": "#/definitions/ShiftPeriodModel" }, "xml": { "name": "ShiftPeriodModel", "wrapped": true }, "title": "IList" } } } } }, "/api/v2/business/{businessId}/employmentagreement/{id}/shiftcosting": { "post": { "tags": [ "EmploymentAgreement" ], "summary": "Evaluate Shift Costings", "description": "Evaluates shift costings for the employment agreement with the specified ID.", "operationId": "EmploymentAgreement_Evaluate", "consumes": [ "application/json", "text/json", "application/xml", "text/xml", "application/x-www-form-urlencoded" ], "produces": [ "application/json", "text/json", "application/xml", "text/xml" ], "parameters": [ { "name": "id", "in": "path", "required": true, "type": "integer", "format": "int32", "title": "Int32" }, { "name": "model", "in": "body", "required": true, "schema": { "$ref": "#/definitions/ShiftCostingsRequestModel" } }, { "name": "businessId", "in": "path", "required": true, "type": "string" } ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/ShiftCostingsResponseModel" } } } } }, "/api/v2/business/{businessId}/employee/{employeeId}/timesheet/shiftperiods": { "post": { "tags": [ "EmploymentAgreement" ], "summary": "Get Shift Periods for Employee", "description": "Gets the shift periods for the specified employee.", "operationId": "EmploymentAgreement_EmployeeShiftPeriods", "consumes": [ "application/json", "text/json", "application/xml", "text/xml", "application/x-www-form-urlencoded" ], "produces": [ "application/json", "text/json", "application/xml", "text/xml" ], "parameters": [ { "name": "model", "in": "body", "required": true, "schema": { "$ref": "#/definitions/GetShiftPeriodsModel" } }, { "name": "businessId", "in": "path", "required": true, "type": "string" }, { "name": "employeeId", "in": "path", "required": true, "type": "string" } ], "responses": { "200": { "description": "OK", "schema": { "type": "array", "items": { "$ref": "#/definitions/ShiftPeriodModel" }, "xml": { "name": "ShiftPeriodModel", "wrapped": true }, "title": "IList" } } } } }, "/api/v2/business/{businessId}/employee/{employeeId}/timesheet/shiftcosting": { "post": { "tags": [ "EmploymentAgreement" ], "summary": "Get Shift Costings for Employee", "description": "Gets the shift costings for the specified employee.", "operationId": "EmploymentAgreement_EvaluateEmployee", "consumes": [ "application/json", "text/json", "application/xml", "text/xml", "application/x-www-form-urlencoded" ], "produces": [ "application/json", "text/json", "application/xml", "text/xml" ], "parameters": [ { "name": "model", "in": "body", "required": true, "schema": { "$ref": "#/definitions/ShiftCostingsRequestModel" } }, { "name": "businessId", "in": "path", "required": true, "type": "string" }, { "name": "employeeId", "in": "path", "required": true, "type": "string" } ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/ShiftCostingsResponseModel" } } } } }, "/api/v2/ess/{employeeId}/leave": { "get": { "tags": [ "Ess" ], "summary": "List Leave Requests", "description": "Lists all leave requests for this employee, with optional filters", "operationId": "EssLeave_LeaveRequests", "consumes": [], "produces": [ "application/json", "text/json", "application/xml", "text/xml" ], "parameters": [ { "name": "employeeId", "in": "path", "required": true, "type": "string" }, { "name": "filter.showOtherEmployees", "in": "query", "required": false, "type": "boolean", "title": "Boolean" }, { "name": "filter.fromDate", "in": "query", "required": false, "type": "string", "format": "date-time", "title": "Nullable" }, { "name": "filter.toDate", "in": "query", "required": false, "type": "string", "format": "date-time", "title": "Nullable" } ], "responses": { "200": { "description": "OK", "schema": { "type": "array", "items": { "$ref": "#/definitions/EssLeaveRequestModel" }, "xml": { "name": "EssLeaveRequestModel", "wrapped": true }, "title": "List" } } } }, "post": { "tags": [ "Ess" ], "summary": "Create Leave Request", "description": "Creates a new leave request for the employee.", "operationId": "EssLeave_ApplyForLeave", "consumes": [ "application/json", "text/json", "application/xml", "text/xml", "application/x-www-form-urlencoded" ], "produces": [ "application/json", "text/json", "application/xml", "text/xml" ], "parameters": [ { "name": "leaveApplication", "in": "body", "required": true, "schema": { "$ref": "#/definitions/EssLeaveApplicationModel" } }, { "name": "employeeId", "in": "path", "required": true, "type": "string" } ], "responses": { "200": { "description": "OK" } } } }, "/api/v2/ess/{employeeId}/leave/{leaveRequestId}": { "get": { "tags": [ "Ess" ], "summary": "Get Leave Request by ID", "description": "Gets the details for a leave request with the specified ID.", "operationId": "EssLeave_LeaveRequest", "consumes": [], "produces": [ "application/json", "text/json", "application/xml", "text/xml" ], "parameters": [ { "name": "leaveRequestId", "in": "path", "required": true, "type": "integer", "format": "int32", "title": "Int32" }, { "name": "employeeId", "in": "path", "required": true, "type": "string" } ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/EssLeaveRequestModel" } } } }, "post": { "tags": [ "Ess" ], "summary": "Update Leave Request", "description": "Updates the leave request with the specified ID.", "operationId": "EssLeave_EditLeave", "consumes": [ "application/json", "text/json", "application/xml", "text/xml", "application/x-www-form-urlencoded" ], "produces": [ "application/json", "text/json", "application/xml", "text/xml" ], "parameters": [ { "name": "leaveRequestId", "in": "path", "required": true, "type": "integer", "format": "int32", "title": "Int32" }, { "name": "leaveApplication", "in": "body", "required": true, "schema": { "$ref": "#/definitions/EssLeaveApplicationModel" } }, { "name": "employeeId", "in": "path", "required": true, "type": "string" } ], "responses": { "200": { "description": "OK" } } }, "delete": { "tags": [ "Ess" ], "summary": "Delete Leave Request", "description": "Deletes the leave request with the specified ID.", "operationId": "EssLeave_Cancel", "consumes": [], "produces": [ "application/json", "text/json", "application/xml", "text/xml" ], "parameters": [ { "name": "leaveRequestId", "in": "path", "required": true, "type": "integer", "format": "int32", "title": "Int32" }, { "name": "employeeId", "in": "path", "required": true, "type": "string" } ], "responses": { "200": { "description": "OK" } } } }, "/api/v2/ess/{employeeId}/leave/{leaveRequestId}/attachment": { "put": { "tags": [ "Ess" ], "summary": "Upload Attachment to Leave Request", "description": "Uploads a file as a new employee document, and attaches it to the leave request with the specified ID. \r\nThe request should be a MIME multipart file upload request.", "operationId": "EssLeave_Upload", "consumes": [], "produces": [ "application/json", "text/json", "application/xml", "text/xml" ], "parameters": [ { "name": "leaveRequestId", "in": "path", "required": true, "type": "integer", "format": "int32", "title": "Int32" }, { "name": "employeeId", "in": "path", "required": true, "type": "string" } ], "responses": { "200": { "description": "OK", "schema": { "type": "object", "title": "IHttpActionResult" } } } }, "delete": { "tags": [ "Ess" ], "summary": "Delete Attachment from Leave Request", "description": "Deletes the attachment on the leave request with the specified ID.", "operationId": "EssLeave_DeleteAttachment", "consumes": [], "produces": [ "application/json", "text/json", "application/xml", "text/xml" ], "parameters": [ { "name": "leaveRequestId", "in": "path", "required": true, "type": "integer", "format": "int32", "title": "Int32" }, { "name": "employeeId", "in": "path", "required": true, "type": "string" } ], "responses": { "200": { "description": "OK" } } } }, "/api/v2/ess/{employeeId}/leave/balances": { "get": { "tags": [ "Ess" ], "summary": "Get Leave Balances", "description": "Gets the leave balances for the employee.", "operationId": "EssLeave_Balances", "consumes": [], "produces": [ "application/json", "text/json", "application/xml", "text/xml" ], "parameters": [ { "name": "asAtDate", "in": "query", "required": false, "type": "string", "format": "date-time", "title": "Nullable" }, { "name": "employeeId", "in": "path", "required": true, "type": "string" } ], "responses": { "200": { "description": "OK", "schema": { "type": "array", "items": { "$ref": "#/definitions/LeaveBalanceModel" }, "xml": { "name": "LeaveBalanceModel", "wrapped": true }, "title": "IList" } } } } }, "/api/v2/ess/{employeeId}/leave/leavecategories": { "get": { "tags": [ "Ess" ], "summary": "Get Leave Categories", "description": "Gets the available leave categories for the employee.", "operationId": "EssLeave_LeaveCategories", "consumes": [], "produces": [ "application/json", "text/json", "application/xml", "text/xml" ], "parameters": [ { "name": "employeeId", "in": "path", "required": true, "type": "string" } ], "responses": { "200": { "description": "OK", "schema": { "type": "array", "items": { "$ref": "#/definitions/EssLeaveCategoryModel" }, "xml": { "name": "EssLeaveCategoryModel", "wrapped": true }, "title": "IList" } } } } }, "/api/v2/ess/{employeeId}/leave/estimate": { "get": { "tags": [ "Ess" ], "summary": "Estimate Leave Hours", "description": "Estimates the number of hours of leave required based on date and leave category.", "operationId": "EssLeave_Estimate", "consumes": [], "produces": [ "application/json", "text/json", "application/xml", "text/xml" ], "parameters": [ { "name": "employeeId", "in": "path", "required": true, "type": "string" }, { "name": "filter.leaveCategoryId", "in": "query", "required": false, "type": "integer", "format": "int32", "title": "Int32" }, { "name": "filter.fromDate", "in": "query", "required": true, "type": "string", "format": "date-time", "title": "DateTime" }, { "name": "filter.toDate", "in": "query", "required": true, "type": "string", "format": "date-time", "title": "DateTime" } ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/EssLeaveEstimate" } } } } }, "/api/v2/ess/{employeeId}/profileimage": { "get": { "tags": [ "Ess" ], "summary": "Get Employee Profile Image", "description": "Returns the file content for the employee's current profile image.", "operationId": "EssProfileImage_GetImage", "consumes": [], "produces": [ "application/json", "text/json", "application/xml", "text/xml" ], "parameters": [ { "name": "employeeId", "in": "path", "required": true, "type": "string" } ], "responses": { "200": { "description": "OK" } } }, "post": { "tags": [ "Ess" ], "summary": "Set Employee Profile Image", "description": "Uploads a new employee profile image. The request should be a MIME multipart file upload request.", "operationId": "EssProfileImage_Post", "consumes": [], "produces": [ "application/json", "text/json", "application/xml", "text/xml" ], "parameters": [ { "name": "employeeId", "in": "path", "required": true, "type": "string" } ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/ProfileImageMetadata" } } } }, "delete": { "tags": [ "Ess" ], "summary": "Delete Employee Profile Image", "description": "Delete's the employee's profile image.", "operationId": "EssProfileImage_Delete", "consumes": [], "produces": [ "application/json", "text/json", "application/xml", "text/xml" ], "parameters": [ { "name": "employeeId", "in": "path", "required": true, "type": "string" } ], "responses": { "200": { "description": "OK" } } } }, "/api/v2/ess/{employeeId}/details": { "get": { "tags": [ "Ess" ], "summary": "Get Details", "description": "Gets ESS details for the specified employee.", "operationId": "EssEmployee_GetDetails", "consumes": [], "produces": [ "application/json", "text/json", "application/xml", "text/xml" ], "parameters": [ { "name": "employeeId", "in": "path", "required": true, "type": "string" } ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/EssEmployeeDetailsModel" } } } }, "post": { "tags": [ "Ess" ], "summary": "Save Details", "description": "Saves any employee details that the employee is allowed to set.", "operationId": "EssEmployee_SaveDetails", "consumes": [ "application/json", "text/json", "application/xml", "text/xml", "application/x-www-form-urlencoded" ], "produces": [ "application/json", "text/json", "application/xml", "text/xml" ], "parameters": [ { "name": "model", "in": "body", "required": true, "schema": { "$ref": "#/definitions/EmployeePartialEditModel" } }, { "name": "employeeId", "in": "path", "required": true, "type": "string" } ], "responses": { "200": { "description": "OK" } } } }, "/api/v2/ess/{employeeId}/emergencycontacts": { "get": { "tags": [ "Ess" ], "summary": "Get Emergency Contacts", "description": "Gets emergency contacts for the specified employee.", "operationId": "EssEmployee_GetEmergencyContacts", "consumes": [], "produces": [ "application/json", "text/json", "application/xml", "text/xml" ], "parameters": [ { "name": "employeeId", "in": "path", "required": true, "type": "string" } ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/EmployeeEmergencyContactsEditModel" } } } }, "post": { "tags": [ "Ess" ], "summary": "Save Emergency Contacts", "description": "Saves the employee's emergency contact details.", "operationId": "EssEmployee_SaveEmergencyContacts", "consumes": [ "application/json", "text/json", "application/xml", "text/xml", "application/x-www-form-urlencoded" ], "produces": [ "application/json", "text/json", "application/xml", "text/xml" ], "parameters": [ { "name": "model", "in": "body", "required": true, "schema": { "$ref": "#/definitions/EmployeeEmergencyContactsEditModel" } }, { "name": "employeeId", "in": "path", "required": true, "type": "string" } ], "responses": { "200": { "description": "OK" } } } }, "/api/v2/ess/{employeeId}/security/features": { "get": { "tags": [ "Ess" ], "summary": "Get Enabled Features", "description": "Gets details as to which ESS features are enabled for the business.", "operationId": "EssEmployee_Features", "consumes": [], "produces": [ "application/json", "text/json", "application/xml", "text/xml" ], "parameters": [ { "name": "employeeId", "in": "path", "required": true, "type": "string" } ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/FeaturesModel" } } } } }, "/api/v2/ess/{employeeId}/dashboard": { "get": { "tags": [ "Ess" ], "summary": "Get Dashboard", "description": "Gets a set of useful information that the employee may need for self service tasks.", "operationId": "EssEmployee_GetDashboard", "consumes": [], "produces": [ "application/json", "text/json", "application/xml", "text/xml" ], "parameters": [ { "name": "employeeId", "in": "path", "required": true, "type": "string" } ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/DashboardModel" } } } } }, "/api/v2/ess/{employeeId}/location": { "get": { "tags": [ "Ess" ], "summary": "Get Locations", "description": "Gets all the locations for the employee.", "operationId": "EssEmployee_Locations", "consumes": [], "produces": [ "application/json", "text/json", "application/xml", "text/xml" ], "parameters": [ { "name": "employeeId", "in": "path", "required": true, "type": "string" } ], "responses": { "200": { "description": "OK", "schema": { "type": "array", "items": { "$ref": "#/definitions/LocationModel" }, "xml": { "name": "LocationModel", "wrapped": true }, "title": "List" } } } } }, "/api/v2/ess/{employeeId}/satisfaction": { "get": { "tags": [ "Ess" ], "summary": "Get Satisfaction Survey Results", "description": "Gets satisfaction survey results for the employee", "operationId": "EssEmployee_GetSatisfactionSurveys", "consumes": [], "produces": [ "application/json", "text/json", "application/xml", "text/xml" ], "parameters": [ { "name": "fromDate", "in": "query", "required": false, "type": "string", "format": "date-time", "title": "Nullable" }, { "name": "toDate", "in": "query", "required": false, "type": "string", "format": "date-time", "title": "Nullable" }, { "name": "employeeId", "in": "path", "required": true, "type": "string" } ], "responses": { "200": { "description": "OK", "schema": { "type": "array", "items": { "$ref": "#/definitions/EssSatisfactionSurvey" }, "xml": { "name": "EssSatisfactionSurvey", "wrapped": true }, "title": "IList" } } } }, "post": { "tags": [ "Ess" ], "summary": "Submit Satisfaction Survey", "description": "Submit a satisfaction survey for this employee.", "operationId": "EssEmployee_SaveSatisfaction", "consumes": [ "application/json", "text/json", "application/xml", "text/xml", "application/x-www-form-urlencoded" ], "produces": [ "application/json", "text/json", "application/xml", "text/xml" ], "parameters": [ { "name": "survey", "in": "body", "required": true, "schema": { "$ref": "#/definitions/EssSatisfactionSurvey" } }, { "name": "employeeId", "in": "path", "required": true, "type": "string" } ], "responses": { "200": { "description": "OK" } } } }, "/api/v2/ess/{employeeId}/timesheet": { "get": { "tags": [ "Ess" ], "summary": "List Timesheets", "description": "Lists timesheets for the employee.", "operationId": "EssTimesheet_List", "consumes": [], "produces": [ "application/json", "text/json", "application/xml", "text/xml" ], "parameters": [ { "name": "employeeId", "in": "path", "required": true, "type": "string" }, { "name": "filter.fromDate", "in": "query", "required": true, "type": "string", "format": "date-time", "title": "DateTime" }, { "name": "filter.toDate", "in": "query", "required": true, "type": "string", "format": "date-time", "title": "DateTime" } ], "responses": { "200": { "description": "OK", "schema": { "type": "array", "items": { "$ref": "#/definitions/EssTimesheetModel" }, "xml": { "name": "EssTimesheetModel", "wrapped": true }, "title": "IList" } } } }, "post": { "tags": [ "Ess" ], "summary": "Submit or Update Timesheet", "description": "If no ID is specified, create a new timesheet for the employee. \r\nOtherwise, update the timesheet with the specified ID.", "operationId": "EssTimesheet_Save", "consumes": [ "application/json", "text/json", "application/xml", "text/xml", "application/x-www-form-urlencoded" ], "produces": [ "application/json", "text/json", "application/xml", "text/xml" ], "parameters": [ { "name": "timesheet", "in": "body", "required": true, "schema": { "$ref": "#/definitions/TimesheetLineViewModel" } }, { "name": "employeeId", "in": "path", "required": true, "type": "string" } ], "responses": { "200": { "description": "OK" } } } }, "/api/v2/ess/{employeeId}/timesheet/{timesheetId}": { "post": { "tags": [ "Ess" ], "summary": "Edit Timesheet", "description": "Edits the timesheet with the specified ID.", "operationId": "EssTimesheet_Edit", "consumes": [ "application/json", "text/json", "application/xml", "text/xml", "application/x-www-form-urlencoded" ], "produces": [ "application/json", "text/json", "application/xml", "text/xml" ], "parameters": [ { "name": "timesheetId", "in": "path", "required": true, "type": "integer", "format": "int32", "title": "Int32" }, { "name": "timesheet", "in": "body", "required": true, "schema": { "$ref": "#/definitions/TimesheetLineViewModel" } }, { "name": "employeeId", "in": "path", "required": true, "type": "string" } ], "responses": { "200": { "description": "OK" } } }, "delete": { "tags": [ "Ess" ], "summary": "Delete Timesheet", "description": "Deletes the timesheet with the specified ID.", "operationId": "EssTimesheet_Delete", "consumes": [], "produces": [ "application/json", "text/json", "application/xml", "text/xml" ], "parameters": [ { "name": "timesheetId", "in": "path", "required": true, "type": "integer", "format": "int32", "title": "Int32" }, { "name": "employeeId", "in": "path", "required": true, "type": "string" } ], "responses": { "200": { "description": "OK" } } } }, "/api/v2/ess/{employeeId}/lookup/title": { "get": { "tags": [ "Ess" ], "summary": "Get Business Titles", "description": "Gets all the titles for the business.", "operationId": "EssLookup_Title", "consumes": [], "produces": [ "application/json", "text/json", "application/xml", "text/xml" ], "parameters": [ { "name": "employeeId", "in": "path", "required": true, "type": "string" } ], "responses": { "200": { "description": "OK", "schema": { "type": "array", "items": { "$ref": "#/definitions/TitleViewModel" }, "xml": { "name": "TitleViewModel", "wrapped": true }, "title": "List" } } } } }, "/api/v2/ess/{employeeId}/lookup/worktype": { "get": { "tags": [ "Ess" ], "summary": "Get Work Types", "description": "Gets all the work types for the employee.", "operationId": "EssLookup_WorkType", "consumes": [], "produces": [ "application/json", "text/json", "application/xml", "text/xml" ], "parameters": [ { "name": "employeeId", "in": "path", "required": true, "type": "string" } ], "responses": { "200": { "description": "OK", "schema": { "type": "array", "items": { "$ref": "#/definitions/WorkTypeModel" }, "xml": { "name": "WorkTypeModel", "wrapped": true }, "title": "List" } } } } }, "/api/v2/ess/{employeeId}/lookup/shiftcondition": { "get": { "tags": [ "Ess" ], "summary": "Get Shift Conditions", "description": "Gets all the shift conditions for the employee.", "operationId": "EssLookup_ShiftCondition", "consumes": [], "produces": [ "application/json", "text/json", "application/xml", "text/xml" ], "parameters": [ { "name": "employeeId", "in": "path", "required": true, "type": "string" } ], "responses": { "200": { "description": "OK", "schema": { "type": "array", "items": { "$ref": "#/definitions/WorkTypeModel" }, "xml": { "name": "WorkTypeModel", "wrapped": true }, "title": "List" } } } } }, "/api/v2/ess/{employeeId}/lookup/location": { "get": { "tags": [ "Ess" ], "summary": "Get Locations", "description": "Gets all the locations for the employee.", "operationId": "EssLookup_Location", "consumes": [], "produces": [ "application/json", "text/json", "application/xml", "text/xml" ], "parameters": [ { "name": "employeeId", "in": "path", "required": true, "type": "string" } ], "responses": { "200": { "description": "OK", "schema": { "type": "array", "items": { "$ref": "#/definitions/LocationModel" }, "xml": { "name": "LocationModel", "wrapped": true }, "title": "List" } } } } }, "/api/v2/ess/devicetoken/register": { "post": { "tags": [ "Ess" ], "summary": "Register Device Token", "description": "Registers a device token.", "operationId": "EssDeviceToken_Register", "consumes": [ "application/json", "text/json", "application/xml", "text/xml", "application/x-www-form-urlencoded" ], "produces": [ "application/json", "text/json", "application/xml", "text/xml" ], "parameters": [ { "name": "model", "in": "body", "required": true, "schema": { "$ref": "#/definitions/DeviceTokenModel" } } ], "responses": { "200": { "description": "OK" } } } }, "/api/v2/ess/devicetoken/unregister": { "post": { "tags": [ "Ess" ], "summary": "Unregister Device Token", "description": "Unregisters a device token.", "operationId": "EssDeviceToken_Unregister", "consumes": [ "application/json", "text/json", "application/xml", "text/xml", "application/x-www-form-urlencoded" ], "produces": [ "application/json", "text/json", "application/xml", "text/xml" ], "parameters": [ { "name": "model", "in": "body", "required": true, "schema": { "$ref": "#/definitions/DeviceTokenModel" } } ], "responses": { "200": { "description": "OK" } } } }, "/api/v2/ess/{employeeId}/timeandattendance/lookupdata": { "get": { "tags": [ "Ess" ], "summary": "Get Lookup Data", "description": "Gets relevant lookup data for the employee in relation to a kiosk.", "operationId": "EssTimeAndAttendance_GetLookupData", "consumes": [], "produces": [ "application/json", "text/json", "application/xml", "text/xml" ], "parameters": [ { "name": "employeeId", "in": "path", "required": true, "type": "integer", "format": "int32", "title": "Int32" } ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/TimeAndAttendanceLookupDataModel" } } } } }, "/api/v2/ess/{employeeId}/timeandattendance/clockon": { "post": { "tags": [ "Ess" ], "summary": "Clock In Employee", "description": "Clocks in an employee for a new shift.", "operationId": "EssTimeAndAttendance_ClockOn", "consumes": [ "application/json", "text/json", "application/xml", "text/xml", "application/x-www-form-urlencoded" ], "produces": [ "application/json", "text/json", "application/xml", "text/xml" ], "parameters": [ { "name": "employeeId", "in": "path", "required": true, "type": "integer", "format": "int32", "title": "Int32" }, { "name": "request", "in": "body", "required": true, "schema": { "$ref": "#/definitions/ClockOnModel" } } ], "responses": { "200": { "description": "OK" } } } }, "/api/v2/ess/{employeeId}/timeandattendance/clockoff": { "post": { "tags": [ "Ess" ], "summary": "Clock Out Employee", "description": "Clocks out the employee from their existing shift. \r\nIf they are on a break, it will be ended automatically.", "operationId": "EssTimeAndAttendance_ClockOff", "consumes": [ "application/json", "text/json", "application/xml", "text/xml", "application/x-www-form-urlencoded" ], "produces": [ "application/json", "text/json", "application/xml", "text/xml" ], "parameters": [ { "name": "employeeId", "in": "path", "required": true, "type": "integer", "format": "int32", "title": "Int32" }, { "name": "request", "in": "body", "required": true, "schema": { "$ref": "#/definitions/ClockOffModel" } } ], "responses": { "200": { "description": "OK" } } } }, "/api/v2/ess/{employeeId}/timeandattendance/startbreak": { "post": { "tags": [ "Ess" ], "summary": "Start Break", "description": "Starts a break for the employee who is clocked on for a shift.", "operationId": "EssTimeAndAttendance_StartBreak", "consumes": [ "application/json", "text/json", "application/xml", "text/xml", "application/x-www-form-urlencoded" ], "produces": [ "application/json", "text/json", "application/xml", "text/xml" ], "parameters": [ { "name": "employeeId", "in": "path", "required": true, "type": "integer", "format": "int32", "title": "Int32" }, { "name": "request", "in": "body", "required": true, "schema": { "$ref": "#/definitions/StartBreakModel" } } ], "responses": { "200": { "description": "OK" } } } }, "/api/v2/ess/{employeeId}/timeandattendance/endbreak": { "post": { "tags": [ "Ess" ], "summary": "End Break", "description": "Ends the employee's current break.", "operationId": "EssTimeAndAttendance_EndBreak", "consumes": [ "application/json", "text/json", "application/xml", "text/xml", "application/x-www-form-urlencoded" ], "produces": [ "application/json", "text/json", "application/xml", "text/xml" ], "parameters": [ { "name": "employeeId", "in": "path", "required": true, "type": "integer", "format": "int32", "title": "Int32" }, { "name": "request", "in": "body", "required": true, "schema": { "$ref": "#/definitions/EndBreakModel" } } ], "responses": { "200": { "description": "OK" } } } }, "/api/v2/ess/{employeeId}/timeandattendance/discard": { "post": { "tags": [ "Ess" ], "summary": "Discard current shift", "description": "Discards the current shift for an employee. \r\nIf they are on a break, it will be ended automatically.", "operationId": "EssTimeAndAttendance_DiscardShift", "consumes": [ "application/json", "text/json", "application/xml", "text/xml", "application/x-www-form-urlencoded" ], "produces": [ "application/json", "text/json", "application/xml", "text/xml" ], "parameters": [ { "name": "employeeId", "in": "path", "required": true, "type": "integer", "format": "int32", "title": "Int32" }, { "name": "request", "in": "body", "required": true, "schema": { "$ref": "#/definitions/ClockOffModel" } } ], "responses": { "200": { "description": "OK" } } } }, "/api/v2/ess/{employeeId}/timeandattendance/shifts": { "post": { "tags": [ "Ess" ], "summary": "Shifts", "description": "Gets shifts based on certain optional criteria.", "operationId": "EssTimeAndAttendance_Shifts", "consumes": [ "application/json", "text/json", "application/xml", "text/xml", "application/x-www-form-urlencoded" ], "produces": [ "application/json", "text/json", "application/xml", "text/xml" ], "parameters": [ { "name": "employeeId", "in": "path", "required": true, "type": "integer", "format": "int32", "title": "Int32" }, { "name": "model", "in": "body", "required": true, "schema": { "$ref": "#/definitions/GetShiftsModel" } } ], "responses": { "200": { "description": "OK", "schema": { "type": "array", "items": { "$ref": "#/definitions/TimeAndAttendanceShiftModel" }, "xml": { "name": "TimeAndAttendanceShiftModel", "wrapped": true }, "title": "IList" } } } } }, "/api/v2/ess/{employeeId}/timeandattendance/shift/{shiftId}/notes": { "get": { "tags": [ "Ess" ], "summary": "Get Shift Notes", "description": "Gets shifts based on certain optional criteria.", "operationId": "EssTimeAndAttendance_GetShiftNotes", "consumes": [], "produces": [ "application/json", "text/json", "application/xml", "text/xml" ], "parameters": [ { "name": "employeeId", "in": "path", "required": true, "type": "integer", "format": "int32", "title": "Int32" }, { "name": "shiftId", "in": "path", "required": true, "type": "integer", "format": "int32", "title": "Int32" }, { "name": "model.employeeId", "in": "query", "required": false, "type": "integer", "format": "int32", "title": "Int32" }, { "name": "model.isAdminInitiated", "in": "query", "required": false, "type": "boolean", "title": "Boolean" }, { "name": "model.type", "in": "query", "required": false, "type": "string", "enum": [ "Shift", "ClockOn", "ClockOff" ], "title": "Nullable" }, { "name": "model.visibility", "in": "query", "required": false, "type": "string", "enum": [ "Hidden", "Visible" ], "title": "Nullable" } ], "responses": { "200": { "description": "OK" } } }, "post": { "tags": [ "Ess" ], "summary": "Add Note to Shift", "description": "Adds a note to an existing shift.", "operationId": "EssTimeAndAttendance_AddNote", "consumes": [ "application/json", "text/json", "application/xml", "text/xml", "application/x-www-form-urlencoded" ], "produces": [ "application/json", "text/json", "application/xml", "text/xml" ], "parameters": [ { "name": "employeeId", "in": "path", "required": true, "type": "integer", "format": "int32", "title": "Int32" }, { "name": "shiftId", "in": "path", "required": true, "type": "integer", "format": "int32", "title": "Int32" }, { "name": "model", "in": "body", "required": true, "schema": { "$ref": "#/definitions/AddNoteModel" } } ], "responses": { "200": { "description": "OK" } } } }, "/api/v2/ess/{employeeId}/timeandattendance/shift/{shiftId}/notes/read-state": { "post": { "tags": [ "Ess" ], "summary": "Mark Shift Notes Read", "description": "Marks some shift notes as either read or unread.", "operationId": "EssTimeAndAttendance_MarkNotesRead", "consumes": [ "application/json", "text/json", "application/xml", "text/xml", "application/x-www-form-urlencoded" ], "produces": [ "application/json", "text/json", "application/xml", "text/xml" ], "parameters": [ { "name": "employeeId", "in": "path", "required": true, "type": "integer", "format": "int32", "title": "Int32" }, { "name": "model", "in": "body", "required": true, "schema": { "$ref": "#/definitions/MarkNotesReadViewModel" } }, { "name": "shiftId", "in": "path", "required": true, "type": "string" } ], "responses": { "200": { "description": "OK" } } } }, "/api/v2/ess/{employeeId}/superfunds": { "get": { "tags": [ "Ess" ], "summary": "List Super Funds", "description": "Lists all of the super funds for this employee.", "operationId": "EssSuperFund_List", "consumes": [], "produces": [ "application/json", "text/json", "application/xml", "text/xml" ], "parameters": [ { "name": "employeeId", "in": "path", "required": true, "type": "string" } ], "responses": { "200": { "description": "OK", "schema": { "type": "array", "items": { "$ref": "#/definitions/SuperFundModel" }, "xml": { "name": "SuperFundModel", "wrapped": true }, "title": "IEnumerable" } } } }, "post": { "tags": [ "Ess" ], "summary": "Create Super Fund", "description": "Creates a new super fund for the employee.", "operationId": "EssSuperFund_Post", "consumes": [ "application/json", "text/json", "application/xml", "text/xml", "application/x-www-form-urlencoded" ], "produces": [ "application/json", "text/json", "application/xml", "text/xml" ], "parameters": [ { "name": "model", "in": "body", "required": true, "schema": { "$ref": "#/definitions/SaveSuperFundModel" } }, { "name": "employeeId", "in": "path", "required": true, "type": "string" } ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/SaveSuperFundResponseModel" } } } } }, "/api/v2/ess/{employeeId}/superfunds/{superFundId}": { "get": { "tags": [ "Ess" ], "summary": "Get Super Fund by ID", "description": "Gets the super fund for this employee with the specified ID.", "operationId": "EssSuperFund_Get", "consumes": [], "produces": [ "application/json", "text/json", "application/xml", "text/xml" ], "parameters": [ { "name": "superFundId", "in": "path", "required": true, "type": "integer", "format": "int32", "title": "Int32" }, { "name": "employeeId", "in": "path", "required": true, "type": "string" } ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/SuperFundModel" } } } } }, "/api/v2/ess/{employeeId}/superfunds/{id}": { "put": { "tags": [ "Ess" ], "summary": "Update Super Fund", "description": "Updates the employee's super fund with the specified ID.", "operationId": "EssSuperFund_Put", "consumes": [ "application/json", "text/json", "application/xml", "text/xml", "application/x-www-form-urlencoded" ], "produces": [ "application/json", "text/json", "application/xml", "text/xml" ], "parameters": [ { "name": "id", "in": "path", "required": true, "type": "integer", "format": "int32", "title": "Int32" }, { "name": "model", "in": "body", "required": true, "schema": { "$ref": "#/definitions/SaveSuperFundModel" } }, { "name": "employeeId", "in": "path", "required": true, "type": "string" } ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/SaveSuperFundResponseModel" } } } } }, "/api/v2/ess/{employeeId}/superfunds/{superfundId}": { "delete": { "tags": [ "Ess" ], "summary": "Delete Super Fund", "description": "Deletes the employee's super fund with the specified ID.", "operationId": "EssSuperFund_Delete", "consumes": [], "produces": [ "application/json", "text/json", "application/xml", "text/xml" ], "parameters": [ { "name": "superfundId", "in": "path", "required": true, "type": "integer", "format": "int32", "title": "Int32" }, { "name": "employeeId", "in": "path", "required": true, "type": "string" } ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/SaveSuperFundResponseModel" } } } } }, "/api/v2/ess/{employeeId}/document/payslip": { "get": { "tags": [ "Ess" ], "summary": "List Pay Slips", "description": "Lists all pay slips for the employee.", "operationId": "EssDocument_Payslips", "consumes": [], "produces": [ "application/json", "text/json", "application/xml", "text/xml" ], "parameters": [ { "name": "employeeId", "in": "path", "required": true, "type": "string" } ], "responses": { "200": { "description": "OK", "schema": { "type": "array", "items": { "$ref": "#/definitions/EssPayslipModel" }, "xml": { "name": "EssPayslipModel", "wrapped": true }, "title": "List" } } } } }, "/api/v2/ess/{employeeId}/document/payslip/{payrunId}": { "get": { "tags": [ "Ess" ], "summary": "Get Pay Slip by Pay Run ID", "description": "Gets the pay slip for the pay run with the specified ID.", "operationId": "EssDocument_Payslip", "consumes": [], "produces": [ "application/json", "text/json", "application/xml", "text/xml" ], "parameters": [ { "name": "payrunId", "in": "path", "required": true, "type": "integer", "format": "int32", "title": "Int32" }, { "name": "employeeId", "in": "path", "required": true, "type": "string" } ], "responses": { "200": { "description": "OK" } } } }, "/api/v2/ess/{employeeId}/document/paymentsummaries": { "get": { "tags": [ "Ess" ], "summary": "Get Payment Summaries", "description": "List all the employee's payment summaries.", "operationId": "EssDocument_PaymentSummaries", "consumes": [], "produces": [ "application/json", "text/json", "application/xml", "text/xml" ], "parameters": [ { "name": "employeeId", "in": "path", "required": true, "type": "string" } ], "responses": { "200": { "description": "OK", "schema": { "type": "array", "items": { "$ref": "#/definitions/EssPaymentSummaryModel" }, "xml": { "name": "EssPaymentSummaryModel", "wrapped": true }, "title": "List" } } } } }, "/api/v2/ess/{employeeId}/document/paymentsummary/{documentId}": { "get": { "tags": [ "Ess" ], "summary": "Get Payment Summary PDF", "description": "Gets the PDF for the payment summary with the specified ID.", "operationId": "EssDocument_PaymentSummary", "consumes": [], "produces": [ "application/json", "text/json", "application/xml", "text/xml" ], "parameters": [ { "name": "documentId", "in": "path", "required": true, "type": "integer", "format": "int32", "title": "Int32" }, { "name": "employeeId", "in": "path", "required": true, "type": "string" } ], "responses": { "200": { "description": "OK" } } } }, "/api/v2/ess/{employeeId}/document": { "get": { "tags": [ "Ess" ], "summary": "List all Documents", "description": "Lists all documents visible to this employee, including both business and employee documents.", "operationId": "EssDocument_List", "consumes": [], "produces": [ "application/json", "text/json", "application/xml", "text/xml" ], "parameters": [ { "name": "employeeId", "in": "path", "required": true, "type": "string" } ], "responses": { "200": { "description": "OK", "schema": { "type": "array", "items": { "$ref": "#/definitions/EssDocumentModel" }, "xml": { "name": "EssDocumentModel", "wrapped": true }, "title": "List" } } } } }, "/api/v2/ess/{employeeId}/document/{documentId}": { "get": { "tags": [ "Ess" ], "summary": "Get Document Details by ID", "description": "Gets details for the specified document which is visible to the employee.", "operationId": "EssDocument_GetDocument", "consumes": [], "produces": [ "application/json", "text/json", "application/xml", "text/xml" ], "parameters": [ { "name": "documentId", "in": "path", "required": true, "type": "string", "title": "String" }, { "name": "employeeId", "in": "path", "required": true, "type": "string" } ], "responses": { "200": { "description": "OK" } } } }, "/api/v2/ess/{employeeId}/document/download/{documentId}": { "get": { "tags": [ "Ess" ], "summary": "Download Document", "description": "Downloads the document with the specified ID so long as it is visible to the employee.", "operationId": "EssDocument_Download", "consumes": [], "produces": [ "application/json", "text/json", "application/xml", "text/xml" ], "parameters": [ { "name": "documentId", "in": "path", "required": true, "type": "string", "title": "String" }, { "name": "employeeId", "in": "path", "required": true, "type": "string" } ], "responses": { "200": { "description": "OK" } } } }, "/api/v2/ess/{employeeId}/unavailability": { "get": { "tags": [ "Ess" ], "summary": "List Unavailabilities", "description": "Lists all of the unavailabilities for this employee, with optional filters.", "operationId": "EssUnavailability_List", "consumes": [], "produces": [ "application/json", "text/json", "application/xml", "text/xml" ], "parameters": [ { "name": "employeeId", "in": "path", "required": true, "type": "string" }, { "name": "filter.fromDate", "in": "query", "required": false, "type": "string", "format": "date-time", "title": "Nullable" }, { "name": "filter.toDate", "in": "query", "required": false, "type": "string", "format": "date-time", "title": "Nullable" } ], "responses": { "200": { "description": "OK", "schema": { "type": "array", "items": { "$ref": "#/definitions/EssUnavailabilityModel" }, "xml": { "name": "EssUnavailabilityModel", "wrapped": true }, "title": "IList" } } } }, "post": { "tags": [ "Ess" ], "summary": "Create Unavailability", "description": "Creates a new unavailability for the employee.", "operationId": "EssUnavailability_Create", "consumes": [ "application/json", "text/json", "application/xml", "text/xml", "application/x-www-form-urlencoded" ], "produces": [ "application/json", "text/json", "application/xml", "text/xml" ], "parameters": [ { "name": "unavailability", "in": "body", "required": true, "schema": { "$ref": "#/definitions/UnavailabilityEditModel" } }, { "name": "employeeId", "in": "path", "required": true, "type": "string" } ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/EssUnavailabilityModel" } } } } }, "/api/v2/ess/{employeeId}/unavailability/{unavailabilityId}": { "get": { "tags": [ "Ess" ], "summary": "Get unavailability by ID", "description": "Gets the unavailability with the specified ID (so long as the unavailability is from the specified employee).", "operationId": "EssUnavailability_Get", "consumes": [], "produces": [ "application/json", "text/json", "application/xml", "text/xml" ], "parameters": [ { "name": "unavailabilityId", "in": "path", "required": true, "type": "integer", "format": "int32", "title": "Int32" }, { "name": "employeeId", "in": "path", "required": true, "type": "string" } ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/EssUnavailabilityModel" } } } }, "put": { "tags": [ "Ess" ], "summary": "Update Unavailability", "description": "Updates the unavailability with the specified ID.", "operationId": "EssUnavailability_Save", "consumes": [ "application/json", "text/json", "application/xml", "text/xml", "application/x-www-form-urlencoded" ], "produces": [ "application/json", "text/json", "application/xml", "text/xml" ], "parameters": [ { "name": "unavailabilityId", "in": "path", "required": true, "type": "integer", "format": "int32", "title": "Int32" }, { "name": "unavailability", "in": "body", "required": true, "schema": { "$ref": "#/definitions/UnavailabilityEditModel" } }, { "name": "employeeId", "in": "path", "required": true, "type": "string" } ], "responses": { "200": { "description": "OK" } } }, "delete": { "tags": [ "Ess" ], "summary": "Delete Unavailability", "description": "Deletes the unavailability with the specified ID.", "operationId": "EssUnavailability_Delete", "consumes": [], "produces": [ "application/json", "text/json", "application/xml", "text/xml" ], "parameters": [ { "name": "unavailabilityId", "in": "path", "required": true, "type": "integer", "format": "int32", "title": "Int32" }, { "name": "employeeId", "in": "path", "required": true, "type": "string" } ], "responses": { "200": { "description": "OK" } } } }, "/api/v2/ess/{employeeId}/bankaccounts": { "get": { "tags": [ "Ess" ], "summary": "List Bank Accounts", "description": "Lists all of the bank accounts for this employee.", "operationId": "EssBankAccount_List", "consumes": [], "produces": [ "application/json", "text/json", "application/xml", "text/xml" ], "parameters": [ { "name": "employeeId", "in": "path", "required": true, "type": "string" } ], "responses": { "200": { "description": "OK", "schema": { "type": "array", "items": { "$ref": "#/definitions/BankAccountModel" }, "xml": { "name": "BankAccountModel", "wrapped": true }, "title": "IEnumerable" } } } }, "post": { "tags": [ "Ess" ], "summary": "Create Bank Account", "description": "Creates a new bank account for the employee.", "operationId": "EssBankAccount_Post", "consumes": [ "application/json", "text/json", "application/xml", "text/xml", "application/x-www-form-urlencoded" ], "produces": [ "application/json", "text/json", "application/xml", "text/xml" ], "parameters": [ { "name": "model", "in": "body", "required": true, "schema": { "$ref": "#/definitions/BankAccountModel" } }, { "name": "employeeId", "in": "path", "required": true, "type": "string" } ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/SaveBankAccountResponseModel" } } } } }, "/api/v2/ess/{employeeId}/bankaccounts/{bankAccountId}": { "get": { "tags": [ "Ess" ], "summary": "Get Bank Account by ID", "description": "Gets the bank account for this employee with the specified ID.", "operationId": "EssBankAccount_Get", "consumes": [], "produces": [ "application/json", "text/json", "application/xml", "text/xml" ], "parameters": [ { "name": "bankAccountId", "in": "path", "required": true, "type": "integer", "format": "int32", "title": "Int32" }, { "name": "employeeId", "in": "path", "required": true, "type": "string" } ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/BankAccountModel" } } } }, "delete": { "tags": [ "Ess" ], "summary": "Delete Bank Account", "description": "Deletes the employee's bank account with the specified ID.", "operationId": "EssBankAccount_Delete", "consumes": [], "produces": [ "application/json", "text/json", "application/xml", "text/xml" ], "parameters": [ { "name": "bankAccountId", "in": "path", "required": true, "type": "integer", "format": "int32", "title": "Int32" }, { "name": "employeeId", "in": "path", "required": true, "type": "string" } ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/SaveBankAccountResponseModel" } } } } }, "/api/v2/ess/{employeeId}/bankaccounts/{id}": { "put": { "tags": [ "Ess" ], "summary": "Update Bank Account", "description": "Updates the employee's bank account with the specified ID.", "operationId": "EssBankAccount_Put", "consumes": [ "application/json", "text/json", "application/xml", "text/xml", "application/x-www-form-urlencoded" ], "produces": [ "application/json", "text/json", "application/xml", "text/xml" ], "parameters": [ { "name": "id", "in": "path", "required": true, "type": "integer", "format": "int32", "title": "Int32" }, { "name": "model", "in": "body", "required": true, "schema": { "$ref": "#/definitions/BankAccountModel" } }, { "name": "employeeId", "in": "path", "required": true, "type": "string" } ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/SaveBankAccountResponseModel" } } } } }, "/api/v2/ess/security/employees": { "get": { "tags": [ "Ess" ], "summary": "Get Employees", "description": "Returns all the employees the user can access.", "operationId": "EssSecurity_Employees", "consumes": [], "produces": [ "application/json", "text/json", "application/xml", "text/xml" ], "responses": { "200": { "description": "OK", "schema": { "type": "array", "items": { "$ref": "#/definitions/AvailableEmployeeModel" }, "xml": { "name": "AvailableEmployeeModel", "wrapped": true }, "title": "List" } } } } }, "/api/v2/ess/security/forgottenpassword": { "post": { "tags": [ "Ess" ], "summary": "Recover Forgotten Password", "description": "Sends an email so that the user can reset their password", "operationId": "EssSecurity_ForgottenPassword", "consumes": [ "application/json", "text/json", "application/xml", "text/xml", "application/x-www-form-urlencoded" ], "produces": [ "application/json", "text/json", "application/xml", "text/xml" ], "parameters": [ { "name": "model", "in": "body", "required": true, "schema": { "$ref": "#/definitions/RecoverPasswordModel" } } ], "responses": { "200": { "description": "OK" } } } }, "/api/v2/ess/{employeeId}/expense/summary": { "get": { "tags": [ "Ess" ], "summary": "Get Expense Payment Summary", "description": "Gets a summary of the employee's expense payments.", "operationId": "EssExpense_Summary", "consumes": [], "produces": [ "application/json", "text/json", "application/xml", "text/xml" ], "parameters": [ { "name": "employeeId", "in": "path", "required": true, "type": "string" } ], "responses": { "200": { "description": "OK", "schema": { "type": "array", "items": { "$ref": "#/definitions/EmployeeExpensePaymentSummaryModel" }, "xml": { "name": "EmployeeExpensePaymentSummaryModel", "wrapped": true }, "title": "IList" } } } } }, "/api/v2/ess/{employeeId}/expense/categories": { "get": { "tags": [ "Ess" ], "summary": "Get Expense Categories", "description": "Gets all the expense categories for the employee.", "operationId": "EssExpense_ExpenseCategories", "consumes": [], "produces": [ "application/json", "text/json", "application/xml", "text/xml" ], "parameters": [ { "name": "employeeId", "in": "path", "required": true, "type": "string" } ], "responses": { "200": { "description": "OK", "schema": { "type": "array", "items": { "$ref": "#/definitions/ExpenseCategoryResponseModel" }, "xml": { "name": "ExpenseCategoryResponseModel", "wrapped": true }, "title": "IList" } } } } }, "/api/v2/ess/{employeeId}/expense/taxcodes": { "get": { "tags": [ "Ess" ], "summary": "Get Tax Codes", "description": "Gets all the tax codes for the employee.", "operationId": "EssExpense_TaxCodes", "consumes": [], "produces": [ "application/json", "text/json", "application/xml", "text/xml" ], "parameters": [ { "name": "employeeId", "in": "path", "required": true, "type": "string" } ], "responses": { "200": { "description": "OK", "schema": { "type": "array", "items": { "$ref": "#/definitions/JournalServiceTaxCode" }, "xml": { "name": "JournalServiceTaxCode", "wrapped": true }, "title": "IList" } } } } }, "/api/v2/ess/{employeeId}/expense": { "get": { "tags": [ "Ess" ], "summary": "Get Expense Requests", "description": "Gets a paged view of expense requests for this employee.", "operationId": "EssExpense_GetExpenseRequests", "consumes": [], "produces": [ "application/json", "text/json", "application/xml", "text/xml" ], "parameters": [ { "name": "currentPage", "in": "query", "required": false, "type": "integer", "format": "int32", "default": 1, "title": "Int32" }, { "name": "pageSize", "in": "query", "required": false, "type": "integer", "format": "int32", "default": 100, "title": "Int32" }, { "name": "employeeId", "in": "path", "required": true, "type": "string" } ], "responses": { "200": { "description": "OK", "schema": { "type": "array", "items": { "$ref": "#/definitions/EssExpenseRequestResponseModel" }, "xml": { "name": "EssExpenseRequestResponseModel", "wrapped": true }, "title": "IList" } } } }, "post": { "tags": [ "Ess" ], "summary": "Create Expense Request", "description": "Creates a new expense request for the employee.", "operationId": "EssExpense_CreateExpenseRequest", "consumes": [ "application/json", "text/json", "application/xml", "text/xml", "application/x-www-form-urlencoded" ], "produces": [ "application/json", "text/json", "application/xml", "text/xml" ], "parameters": [ { "name": "model", "in": "body", "required": true, "schema": { "$ref": "#/definitions/ExpenseRequestEditModel" } }, { "name": "employeeId", "in": "path", "required": true, "type": "string" } ], "responses": { "200": { "description": "OK" } } } }, "/api/v2/ess/{employeeId}/expense/{expenseRequestId}": { "get": { "tags": [ "Ess" ], "summary": "Get Expense Request by ID", "description": "Gets the expense request with the specified ID.", "operationId": "EssExpense_GetExpenseRequest", "consumes": [], "produces": [ "application/json", "text/json", "application/xml", "text/xml" ], "parameters": [ { "name": "expenseRequestId", "in": "path", "required": true, "type": "integer", "format": "int32", "title": "Int32" }, { "name": "employeeId", "in": "path", "required": true, "type": "string" } ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/EssExpenseRequestResponseModel" } } } }, "put": { "tags": [ "Ess" ], "summary": "Update Expense Request", "description": "Updates the expense request with the specified ID.", "operationId": "EssExpense_UpdateExpenseRequest", "consumes": [ "application/json", "text/json", "application/xml", "text/xml", "application/x-www-form-urlencoded" ], "produces": [ "application/json", "text/json", "application/xml", "text/xml" ], "parameters": [ { "name": "expenseRequestId", "in": "path", "required": true, "type": "integer", "format": "int32", "title": "Int32" }, { "name": "model", "in": "body", "required": true, "schema": { "$ref": "#/definitions/ExpenseRequestEditModel" } }, { "name": "employeeId", "in": "path", "required": true, "type": "string" } ], "responses": { "200": { "description": "OK" } } }, "delete": { "tags": [ "Ess" ], "summary": "Delete Expense Request", "description": "Deletes the expense request with the specified ID.", "operationId": "EssExpense_CancelExpenseRequest", "consumes": [], "produces": [ "application/json", "text/json", "application/xml", "text/xml" ], "parameters": [ { "name": "expenseRequestId", "in": "path", "required": true, "type": "integer", "format": "int32", "title": "Int32" }, { "name": "employeeId", "in": "path", "required": true, "type": "string" } ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/EssExpenseRequestResponseModel" } } } } }, "/api/v2/ess/{employeeId}/expense/{expenseRequestId}/attachment": { "put": { "tags": [ "Ess" ], "summary": "Upload Attachment to Expense Request", "description": "Uploads an attachment to the expense request with the specified ID. \r\nThe request should be a MIME multipart file upload request.", "operationId": "EssExpense_UploadAttachment", "consumes": [], "produces": [ "application/json", "text/json", "application/xml", "text/xml" ], "parameters": [ { "name": "expenseRequestId", "in": "path", "required": true, "type": "integer", "format": "int32", "title": "Int32" }, { "name": "employeeId", "in": "path", "required": true, "type": "string" } ], "responses": { "200": { "description": "OK", "schema": { "type": "object", "title": "IHttpActionResult" } } } } }, "/api/v2/business/{businessId}/leaveallowances": { "get": { "tags": [ "LeaveAllowance" ], "summary": "Get Leave Allowances", "description": "Creates a deduction category for the business.", "operationId": "LeaveAllowances_Get", "consumes": [], "produces": [ "application/json", "text/json", "application/xml", "text/xml" ], "parameters": [ { "name": "businessId", "in": "path", "required": true, "type": "string" } ], "responses": { "200": { "description": "OK", "schema": { "type": "object", "additionalProperties": { "type": "array", "items": { "$ref": "#/definitions/LeaveAllowanceModel" }, "xml": { "name": "LeaveAllowanceModel", "wrapped": true }, "title": "List" }, "title": "Dictionary" } } } }, "post": { "tags": [ "LeaveAllowance" ], "summary": "Create Leave Allowances", "description": "Create leave allowances for specific employees (dictionary keyed by employee ID).", "operationId": "LeaveAllowances_Post", "consumes": [ "application/json", "text/json", "application/xml", "text/xml", "application/x-www-form-urlencoded" ], "produces": [ "application/json", "text/json", "application/xml", "text/xml" ], "parameters": [ { "name": "request", "in": "body", "required": true, "schema": { "$ref": "#/definitions/SubmitEmployeeLeaveAllowancesRequest" } }, { "name": "businessId", "in": "path", "required": true, "type": "string" } ], "responses": { "200": { "description": "OK" } } } }, "/api/v2/business/{businessId}/leaveallowancetemplate": { "get": { "tags": [ "LeaveAllowance" ], "summary": "List Leave Allowance Templates", "description": "Lists all the leave allowance templates for this business.\n\nThis operation supports OData queries.", "operationId": "LeaveAllowanceTemplate_GetLeaveAllowanceTemplates", "consumes": [], "produces": [ "application/json", "text/json", "application/xml", "text/xml" ], "parameters": [ { "name": "businessId", "in": "path", "required": true, "type": "string" } ], "responses": { "200": { "description": "OK", "schema": { "type": "array", "items": { "$ref": "#/definitions/LeaveAllowanceTemplateModel" }, "xml": { "name": "LeaveAllowanceTemplateModel", "wrapped": true }, "title": "IEnumerable" } } } }, "post": { "tags": [ "LeaveAllowance" ], "summary": "Create Leave Allowance Template", "description": "Creates a new leave allowance template for the business.", "operationId": "LeaveAllowanceTemplate_Post", "consumes": [ "application/json", "text/json", "application/xml", "text/xml", "application/x-www-form-urlencoded" ], "produces": [ "application/json", "text/json", "application/xml", "text/xml" ], "parameters": [ { "name": "leaveAllowanceTemplate", "in": "body", "required": true, "schema": { "$ref": "#/definitions/LeaveAllowanceTemplateModel" } }, { "name": "businessId", "in": "path", "required": true, "type": "string" } ], "responses": { "200": { "description": "OK" } } } }, "/api/v2/business/{businessId}/leaveallowancetemplate/{id}": { "get": { "tags": [ "LeaveAllowance" ], "summary": "Get Leave Allowance Template by ID", "description": "Gets the details for the leave allowance template with the specified ID.", "operationId": "LeaveAllowanceTemplate_Get", "consumes": [], "produces": [ "application/json", "text/json", "application/xml", "text/xml" ], "parameters": [ { "name": "id", "in": "path", "required": true, "type": "integer", "format": "int32", "title": "Int32" }, { "name": "businessId", "in": "path", "required": true, "type": "string" } ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/LeaveAllowanceTemplateModel" } } } }, "put": { "tags": [ "LeaveAllowance" ], "summary": "Update Leave Allowance Template", "description": "Updates the leave allowance template with the specified ID.", "operationId": "LeaveAllowanceTemplate_Put", "consumes": [ "application/json", "text/json", "application/xml", "text/xml", "application/x-www-form-urlencoded" ], "produces": [ "application/json", "text/json", "application/xml", "text/xml" ], "parameters": [ { "name": "id", "in": "path", "required": true, "type": "integer", "format": "int32", "title": "Int32" }, { "name": "leaveAllowanceTemplate", "in": "body", "required": true, "schema": { "$ref": "#/definitions/LeaveAllowanceTemplateModel" } }, { "name": "businessId", "in": "path", "required": true, "type": "string" } ], "responses": { "200": { "description": "OK" } } }, "delete": { "tags": [ "LeaveAllowance" ], "summary": "Delete Leave Allowance Template", "description": "Deletes the leave allowance template with the specified ID.", "operationId": "LeaveAllowanceTemplate_Delete", "consumes": [], "produces": [ "application/json", "text/json", "application/xml", "text/xml" ], "parameters": [ { "name": "id", "in": "path", "required": true, "type": "integer", "format": "int32", "title": "Int32" }, { "name": "businessId", "in": "path", "required": true, "type": "string" } ], "responses": { "200": { "description": "OK" } } } }, "/api/v2/business/{businessId}/leavecategory": { "get": { "tags": [ "LeaveCategories" ], "summary": "List Leave Categories", "description": "Lists all of the leave categories for the business.\n\nThis operation supports OData queries.", "operationId": "LeaveCategory_GetLeaveCategories", "consumes": [], "produces": [ "application/json", "text/json", "application/xml", "text/xml" ], "parameters": [ { "name": "businessId", "in": "path", "required": true, "type": "string" } ], "responses": { "200": { "description": "OK", "schema": { "type": "array", "items": { "$ref": "#/definitions/LeaveCategoryModel" }, "xml": { "name": "LeaveCategoryModel", "wrapped": true }, "title": "IEnumerable" } } } }, "post": { "tags": [ "LeaveCategories" ], "summary": "Create Leave Category", "description": "Creates a new leave category for the business.", "operationId": "LeaveCategory_Post", "consumes": [ "application/json", "text/json", "application/xml", "text/xml", "application/x-www-form-urlencoded" ], "produces": [ "application/json", "text/json", "application/xml", "text/xml" ], "parameters": [ { "name": "leaveCategory", "in": "body", "required": true, "schema": { "$ref": "#/definitions/LeaveCategoryModel" } }, { "name": "businessId", "in": "path", "required": true, "type": "string" } ], "responses": { "200": { "description": "OK" } } } }, "/api/v2/business/{businessId}/leavecategory/{id}": { "get": { "tags": [ "LeaveCategories" ], "summary": "Get Leave Category by ID", "description": "Gets the leave category with the specified ID.", "operationId": "LeaveCategory_Get", "consumes": [], "produces": [ "application/json", "text/json", "application/xml", "text/xml" ], "parameters": [ { "name": "id", "in": "path", "required": true, "type": "integer", "format": "int32", "title": "Int32" }, { "name": "businessId", "in": "path", "required": true, "type": "string" } ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/LeaveCategoryModel" } } } }, "put": { "tags": [ "LeaveCategories" ], "summary": "Update Leave Category", "description": "Updates the leave category with the specified ID.", "operationId": "LeaveCategory_Put", "consumes": [ "application/json", "text/json", "application/xml", "text/xml", "application/x-www-form-urlencoded" ], "produces": [ "application/json", "text/json", "application/xml", "text/xml" ], "parameters": [ { "name": "id", "in": "path", "required": true, "type": "integer", "format": "int32", "title": "Int32" }, { "name": "leaveCategory", "in": "body", "required": true, "schema": { "$ref": "#/definitions/LeaveCategoryModel" } }, { "name": "businessId", "in": "path", "required": true, "type": "string" } ], "responses": { "200": { "description": "OK" } } }, "delete": { "tags": [ "LeaveCategories" ], "summary": "Delete Leave Category", "description": "Deletes the leave category with the specified ID.", "operationId": "LeaveCategory_Delete", "consumes": [], "produces": [ "application/json", "text/json", "application/xml", "text/xml" ], "parameters": [ { "name": "id", "in": "path", "required": true, "type": "integer", "format": "int32", "title": "Int32" }, { "name": "businessId", "in": "path", "required": true, "type": "string" } ], "responses": { "200": { "description": "OK" } } } }, "/api/v2/business/{businessId}/leaverequest": { "get": { "tags": [ "LeaveRequests" ], "summary": "List Leave Requests", "description": "Lists all the leave requests for the business.", "operationId": "BusinessLeaveRequest_ListLeaveRequests", "consumes": [], "produces": [ "application/json", "text/json", "application/xml", "text/xml" ], "parameters": [ { "name": "businessId", "in": "path", "required": true, "type": "integer", "format": "int32", "title": "Int32" }, { "name": "filter.status", "in": "query", "required": false, "type": "string", "enum": [ "Pending", "Approved", "Cancelled", "Rejected" ], "title": "Nullable" }, { "name": "filter.fromDate", "in": "query", "required": false, "type": "string", "format": "date-time", "title": "Nullable" }, { "name": "filter.toDate", "in": "query", "required": false, "type": "string", "format": "date-time", "title": "Nullable" }, { "name": "filter.leaveCategoryId", "in": "query", "required": false, "type": "integer", "format": "int32", "title": "Nullable" }, { "name": "filter.locationId", "in": "query", "required": false, "type": "integer", "format": "int32", "title": "Nullable" }, { "name": "filter.employeeId", "in": "query", "required": false, "type": "integer", "format": "int32", "title": "Nullable" }, { "name": "filter.groupBy", "in": "query", "required": false, "type": "string", "enum": [ "Employee", "LeaveType" ], "title": "LeaveRequestGroupBy" }, { "name": "filter.restrictOverlappingLeave", "in": "query", "required": false, "type": "boolean", "title": "Boolean" } ], "responses": { "200": { "description": "OK", "schema": { "type": "array", "items": { "$ref": "#/definitions/LeaveRequestResponseModel" }, "xml": { "name": "LeaveRequestResponseModel", "wrapped": true }, "title": "IEnumerable" } } } } }, "/api/v2/business/{businessId}/employee/{employeeId}/leaverequest": { "get": { "tags": [ "LeaveRequests" ], "summary": "Get Leave Requests for Employee", "description": "Returns all leave requests for this employee, optionally filtered by OData parameters.\n\nThis operation supports OData queries.", "operationId": "LeaveRequest_GetLeaveRequests", "consumes": [], "produces": [ "application/json", "text/json", "application/xml", "text/xml" ], "parameters": [ { "name": "businessId", "in": "path", "required": true, "type": "string" }, { "name": "employeeId", "in": "path", "required": true, "type": "string" } ], "responses": { "200": { "description": "OK", "schema": { "type": "array", "items": { "$ref": "#/definitions/LeaveRequestResponseModel" }, "xml": { "name": "LeaveRequestResponseModel", "wrapped": true }, "title": "IEnumerable" } } } }, "post": { "tags": [ "LeaveRequests" ], "summary": "Create Leave Request", "description": "Creates a new leave request for an employee.", "operationId": "LeaveRequest_Post", "consumes": [ "application/json", "text/json", "application/xml", "text/xml", "application/x-www-form-urlencoded" ], "produces": [ "application/json", "text/json", "application/xml", "text/xml" ], "parameters": [ { "name": "model", "in": "body", "required": true, "schema": { "$ref": "#/definitions/ApiLeaveApplicationModel" } }, { "name": "businessId", "in": "path", "required": true, "type": "string" }, { "name": "employeeId", "in": "path", "required": true, "type": "string" } ], "responses": { "200": { "description": "OK" } } } }, "/api/v2/business/{businessId}/employee/{employeeId}/leaverequest/{leaveRequestId}": { "get": { "tags": [ "LeaveRequests" ], "summary": "Get Leave Request by ID", "description": "Gets the details for a leave request with the specified ID.", "operationId": "LeaveRequest_Get", "consumes": [], "produces": [ "application/json", "text/json", "application/xml", "text/xml" ], "parameters": [ { "name": "employeeId", "in": "path", "required": true, "type": "integer", "format": "int32", "title": "Int32" }, { "name": "leaveRequestId", "in": "path", "required": true, "type": "integer", "format": "int32", "title": "Int32" }, { "name": "businessId", "in": "path", "required": true, "type": "string" } ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/LeaveRequestResponseModel" } } } }, "put": { "tags": [ "LeaveRequests" ], "summary": "Update Leave Request", "description": "Updates the leave request with the specified ID.", "operationId": "LeaveRequest_Put", "consumes": [ "application/json", "text/json", "application/xml", "text/xml", "application/x-www-form-urlencoded" ], "produces": [ "application/json", "text/json", "application/xml", "text/xml" ], "parameters": [ { "name": "leaveRequestId", "in": "path", "required": true, "type": "integer", "format": "int32", "title": "Int32" }, { "name": "model", "in": "body", "required": true, "schema": { "$ref": "#/definitions/ApiLeaveApplicationModel" } }, { "name": "businessId", "in": "path", "required": true, "type": "string" }, { "name": "employeeId", "in": "path", "required": true, "type": "string" } ], "responses": { "200": { "description": "OK" } } }, "delete": { "tags": [ "LeaveRequests" ], "summary": "Delete Leave Request", "description": "Deletes the leave request with the specified ID.", "operationId": "LeaveRequest_Delete", "consumes": [], "produces": [ "application/json", "text/json", "application/xml", "text/xml" ], "parameters": [ { "name": "employeeId", "in": "path", "required": true, "type": "integer", "format": "int32", "title": "Int32" }, { "name": "leaveRequestId", "in": "path", "required": true, "type": "integer", "format": "int32", "title": "Int32" }, { "name": "businessId", "in": "path", "required": true, "type": "string" } ], "responses": { "200": { "description": "OK" } } } }, "/api/v2/business/{businessId}/employee/{employeeId}/leaverequest/{leaveRequestId}/approve": { "post": { "tags": [ "LeaveRequests" ], "summary": "Approve Leave Request", "description": "Approves the leave request with the specified ID.", "operationId": "LeaveRequest_Approve", "consumes": [], "produces": [ "application/json", "text/json", "application/xml", "text/xml" ], "parameters": [ { "name": "employeeId", "in": "path", "required": true, "type": "integer", "format": "int32", "title": "Int32" }, { "name": "leaveRequestId", "in": "path", "required": true, "type": "integer", "format": "int32", "title": "Int32" }, { "name": "businessId", "in": "path", "required": true, "type": "string" } ], "responses": { "200": { "description": "OK" } } } }, "/api/v2/business/{businessId}/employee/{employeeId}/leaverequest/{leaveRequestId}/decline": { "post": { "tags": [ "LeaveRequests" ], "summary": "Decline Leave Request", "description": "Declines the leave request with the specified ID.", "operationId": "LeaveRequest_Decline", "consumes": [ "application/json", "text/json", "application/xml", "text/xml", "application/x-www-form-urlencoded" ], "produces": [ "application/json", "text/json", "application/xml", "text/xml" ], "parameters": [ { "name": "employeeId", "in": "path", "required": true, "type": "integer", "format": "int32", "title": "Int32" }, { "name": "leaveRequestId", "in": "path", "required": true, "type": "integer", "format": "int32", "title": "Int32" }, { "name": "decline", "in": "body", "required": true, "schema": { "$ref": "#/definitions/DeclineLeaveRequest" } }, { "name": "businessId", "in": "path", "required": true, "type": "string" } ], "responses": { "200": { "description": "OK" } } } }, "/api/v2/business/{businessId}/employee/{employeeId}/leaverequest/estimate": { "get": { "tags": [ "LeaveRequests" ], "summary": "Estimate Leave Hours", "description": "Estimates the leave hours required for a leave request between fromDate and toDate.", "operationId": "LeaveRequest_Estimate", "consumes": [], "produces": [ "application/json", "text/json", "application/xml", "text/xml" ], "parameters": [ { "name": "businessId", "in": "path", "required": true, "type": "integer", "format": "int32", "title": "Int32" }, { "name": "fromDate", "in": "query", "required": true, "type": "string", "format": "date-time", "title": "DateTime" }, { "name": "toDate", "in": "query", "required": true, "type": "string", "format": "date-time", "title": "DateTime" }, { "name": "employeeId", "in": "path", "required": true, "type": "string" } ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/LeaveEstimate" } } } } }, "/api/v2/business/{businessId}/location": { "get": { "tags": [ "Location" ], "summary": "List Business Locations", "description": "Lists all the locations for a business.\n\nThis operation supports OData queries.", "operationId": "Location_GetLocations", "consumes": [], "produces": [ "application/json", "text/json", "application/xml", "text/xml" ], "parameters": [ { "name": "businessId", "in": "path", "required": true, "type": "string" } ], "responses": { "200": { "description": "OK", "schema": { "type": "array", "items": { "$ref": "#/definitions/LocationModel" }, "xml": { "name": "LocationModel", "wrapped": true }, "title": "IEnumerable" } } } }, "post": { "tags": [ "Location" ], "summary": "Create Location", "description": "Creates a business location.", "operationId": "Location_Post", "consumes": [ "application/json", "text/json", "application/xml", "text/xml", "application/x-www-form-urlencoded" ], "produces": [ "application/json", "text/json", "application/xml", "text/xml" ], "parameters": [ { "name": "location", "in": "body", "required": true, "schema": { "$ref": "#/definitions/LocationModel" } }, { "name": "businessId", "in": "path", "required": true, "type": "string" } ], "responses": { "200": { "description": "OK" } } } }, "/api/v2/business/{businessId}/employee/{employeeId}/location": { "get": { "tags": [ "Location" ], "summary": "List Business Locations", "description": "Lists all the locations for a business.\n\nThis operation supports OData queries.", "operationId": "Location_GetApiV2BusinessByBusinessIdEmployeeByEmployeeIdLocation", "consumes": [], "produces": [ "application/json", "text/json", "application/xml", "text/xml" ], "parameters": [ { "name": "businessId", "in": "path", "required": true, "type": "string" }, { "name": "employeeId", "in": "path", "required": true, "type": "string" } ], "responses": { "200": { "description": "OK", "schema": { "type": "array", "items": { "$ref": "#/definitions/LocationModel" }, "xml": { "name": "LocationModel", "wrapped": true }, "title": "IEnumerable" } } } } }, "/api/v2/business/{businessId}/location/{id}": { "get": { "tags": [ "Location" ], "summary": "Get Location By Id", "description": "Retrieves the details of the location with the specified ID.", "operationId": "Location_Get", "consumes": [], "produces": [ "application/json", "text/json", "application/xml", "text/xml" ], "parameters": [ { "name": "id", "in": "path", "required": true, "type": "integer", "format": "int32", "title": "Int32" }, { "name": "businessId", "in": "path", "required": true, "type": "string" } ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/LocationModel" } } } }, "put": { "tags": [ "Location" ], "summary": "Update Location", "description": "Updates the business location with the specified ID.", "operationId": "Location_Put", "consumes": [ "application/json", "text/json", "application/xml", "text/xml", "application/x-www-form-urlencoded" ], "produces": [ "application/json", "text/json", "application/xml", "text/xml" ], "parameters": [ { "name": "id", "in": "path", "required": true, "type": "integer", "format": "int32", "title": "Int32" }, { "name": "location", "in": "body", "required": true, "schema": { "$ref": "#/definitions/LocationModel" } }, { "name": "businessId", "in": "path", "required": true, "type": "string" } ], "responses": { "200": { "description": "OK" } } }, "delete": { "tags": [ "Location" ], "summary": "Delete Location", "description": "Deletes the location with the specified ID.", "operationId": "Location_Delete", "consumes": [], "produces": [ "application/json", "text/json", "application/xml", "text/xml" ], "parameters": [ { "name": "id", "in": "path", "required": true, "type": "integer", "format": "int32", "title": "Int32" }, { "name": "businessId", "in": "path", "required": true, "type": "string" } ], "responses": { "200": { "description": "OK" } } } }, "/api/v2/business/{businessId}/lookupdata/reports": { "get": { "tags": [ "LookupData" ], "summary": "List Report Types", "description": "Lists all of the report types.", "operationId": "LookupData_Reports", "consumes": [], "produces": [ "application/json", "text/json", "application/xml", "text/xml" ], "parameters": [ { "name": "businessId", "in": "path", "required": true, "type": "string" } ], "responses": { "200": { "description": "OK", "schema": { "type": "array", "items": { "$ref": "#/definitions/NameIdPair" }, "xml": { "name": "NameIdPair", "wrapped": true }, "title": "List" } } } } }, "/api/v2/business/{businessId}/lookupdata/employeegrouppermissions": { "get": { "tags": [ "LookupData" ], "summary": "List Employee Group Permission Types", "description": "Lists all of the employee group permission types.", "operationId": "LookupData_EmployeeGroupPermissions", "consumes": [], "produces": [ "application/json", "text/json", "application/xml", "text/xml" ], "parameters": [ { "name": "businessId", "in": "path", "required": true, "type": "string" } ], "responses": { "200": { "description": "OK", "schema": { "type": "array", "items": { "$ref": "#/definitions/NameIdPair" }, "xml": { "name": "NameIdPair", "wrapped": true }, "title": "List" } } } } }, "/api/v2/business/{businessId}/lookupdata/timezones": { "get": { "tags": [ "LookupData" ], "summary": "List Time Zone Types", "description": "Lists all of the time zone types.", "operationId": "LookupData_TimeZones", "consumes": [], "produces": [ "application/json", "text/json", "application/xml", "text/xml" ], "parameters": [ { "name": "businessId", "in": "path", "required": true, "type": "string" } ], "responses": { "200": { "description": "OK", "schema": { "type": "array", "items": { "$ref": "#/definitions/NameIdPair" }, "xml": { "name": "NameIdPair", "wrapped": true }, "title": "List" } } } } }, "/api/v2/ess/{employeeId}/shift": { "get": { "tags": [ "Other" ], "summary": "List Roster Shifts", "description": "Gets the employee's roster shifts within the date range.", "operationId": "EssShift_Shifts", "consumes": [], "produces": [ "application/json", "text/json", "application/xml", "text/xml" ], "parameters": [ { "name": "fromDate", "in": "query", "required": true, "type": "string", "format": "date-time", "title": "DateTime" }, { "name": "toDate", "in": "query", "required": true, "type": "string", "format": "date-time", "title": "DateTime" }, { "name": "employeeId", "in": "path", "required": true, "type": "string" } ], "responses": { "200": { "description": "OK", "schema": { "type": "array", "items": { "$ref": "#/definitions/EssRosterShiftModel" }, "xml": { "name": "EssRosterShiftModel", "wrapped": true }, "title": "List" } } } } }, "/api/v2/ess/{employeeId}/shift/{shiftId}": { "get": { "tags": [ "Other" ], "summary": "Get Roster Shift by ID", "description": "Gets the roster shift with the specified ID (as long as it is assigned to this employee).", "operationId": "EssShift_Shift", "consumes": [], "produces": [ "application/json", "text/json", "application/xml", "text/xml" ], "parameters": [ { "name": "shiftId", "in": "path", "required": true, "type": "integer", "format": "int32", "title": "Int32" }, { "name": "employeeId", "in": "path", "required": true, "type": "string" } ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/EssRosterShiftModel" } } } } }, "/api/v2/ess/{employeeId}/shift/{shiftId}/decline": { "post": { "tags": [ "Other" ], "summary": "Decline Roster Shift", "description": "Declines the roster shift with the specified ID.", "operationId": "EssShift_DeclineShift", "consumes": [ "application/json", "text/json", "application/xml", "text/xml", "application/x-www-form-urlencoded" ], "produces": [ "application/json", "text/json", "application/xml", "text/xml" ], "parameters": [ { "name": "shiftId", "in": "path", "required": true, "type": "integer", "format": "int32", "title": "Int32" }, { "name": "model", "in": "body", "required": true, "schema": { "$ref": "#/definitions/EssDeclineRosterShiftModel" } }, { "name": "employeeId", "in": "path", "required": true, "type": "string" } ], "responses": { "200": { "description": "OK" } } } }, "/api/v2/ess/{employeeId}/shift/{shiftId}/accept": { "post": { "tags": [ "Other" ], "summary": "Accept Roster Shift", "description": "Accepts the roster shift with the specified ID.", "operationId": "EssShift_AcceptShift", "consumes": [], "produces": [ "application/json", "text/json", "application/xml", "text/xml" ], "parameters": [ { "name": "shiftId", "in": "path", "required": true, "type": "integer", "format": "int32", "title": "Int32" }, { "name": "employeeId", "in": "path", "required": true, "type": "string" } ], "responses": { "200": { "description": "OK" } } } }, "/api/v2/ess/{employeeId}/shift/accept": { "post": { "tags": [ "Other" ], "summary": "Bulk Accept Roster Shifts", "description": "Accepts a number of roster shifts by ID.", "operationId": "EssShift_AcceptShifts", "consumes": [ "application/json", "text/json", "application/xml", "text/xml", "application/x-www-form-urlencoded" ], "produces": [ "application/json", "text/json", "application/xml", "text/xml" ], "parameters": [ { "name": "model", "in": "body", "required": true, "schema": { "$ref": "#/definitions/EssBulkAcceptRosterShiftsModel" } }, { "name": "employeeId", "in": "path", "required": true, "type": "string" } ], "responses": { "200": { "description": "OK" } } } }, "/api/v2/ess/{employeeId}/shift/decline": { "post": { "tags": [ "Other" ], "summary": "Bulk Decline Roster Shifts", "description": "Declines a number of roster shifts by ID.", "operationId": "EssShift_DeclineShifts", "consumes": [ "application/json", "text/json", "application/xml", "text/xml", "application/x-www-form-urlencoded" ], "produces": [ "application/json", "text/json", "application/xml", "text/xml" ], "parameters": [ { "name": "model", "in": "body", "required": true, "schema": { "$ref": "#/definitions/EssBulkDeclineRosterShiftsModel" } }, { "name": "employeeId", "in": "path", "required": true, "type": "string" } ], "responses": { "200": { "description": "OK" } } } }, "/api/v2/ess/{employeeId}/shift/nearby": { "get": { "tags": [ "Other" ], "summary": "Find Nearby Roster Shifts", "description": "Finds any of the employee's roster shifts that are nearby to the specified local time.", "operationId": "EssShift_NearbyRosterShifts", "consumes": [], "produces": [ "application/json", "text/json", "application/xml", "text/xml" ], "parameters": [ { "name": "localTime", "in": "query", "required": true, "type": "string", "format": "date-time", "title": "DateTime" }, { "name": "employeeId", "in": "path", "required": true, "type": "string" } ], "responses": { "200": { "description": "OK", "schema": { "type": "array", "items": { "$ref": "#/definitions/EssRosterShiftModel" }, "xml": { "name": "EssRosterShiftModel", "wrapped": true }, "title": "IList" } } } } }, "/api/v2/ess/{employeeId}/shift/matchingclockon": { "get": { "tags": [ "Other" ], "summary": "Find Matching Clock On Roster Shift", "description": "If a roster shift exists that could match for this employee to clock on at this time \r\ngiven ESS settings for shift matching, returns that shift.\r\nOtherwise, the Shift result will be null.\r\nNote that if the time matches a shift exactly, the Shift result will also be null.", "operationId": "EssShift_MatchingClockOnRosterShift", "consumes": [], "produces": [ "application/json", "text/json", "application/xml", "text/xml" ], "parameters": [ { "name": "localTime", "in": "query", "required": true, "type": "string", "format": "date-time", "title": "DateTime" }, { "name": "employeeId", "in": "path", "required": true, "type": "string" } ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/RosterShiftMatchingResultModel" } } } } }, "/api/v2/ess/{employeeId}/shift/matchingclockoff": { "get": { "tags": [ "Other" ], "summary": "Find Matching Clock Off Roster Shift", "description": "If a roster shift exists that could match for this employee to clock off at this time \r\ngiven ESS settings for shift matching, returns that shift.\r\nOtherwise, the Shift result will be null.\r\nNote that if the time matches a shift exactly, the Shift result will also be null.", "operationId": "EssShift_MatchingClockOffRosterShift", "consumes": [], "produces": [ "application/json", "text/json", "application/xml", "text/xml" ], "parameters": [ { "name": "localTime", "in": "query", "required": true, "type": "string", "format": "date-time", "title": "DateTime" }, { "name": "employeeId", "in": "path", "required": true, "type": "string" } ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/RosterShiftMatchingResultModel" } } } } }, "/api/v2/ess/{employeeId}/shift/{shiftId}/swap/candidates": { "get": { "tags": [ "Other" ], "operationId": "EssShift_EmployeesEligibleForSwap", "consumes": [], "produces": [ "application/json", "text/json", "application/xml", "text/xml" ], "parameters": [ { "name": "shiftId", "in": "path", "required": true, "type": "integer", "format": "int32", "title": "Int32" }, { "name": "employeeId", "in": "path", "required": true, "type": "string" } ], "responses": { "200": { "description": "OK" } } } }, "/api/v2/ess/{employeeId}/shift/swap/propose": { "post": { "tags": [ "Other" ], "operationId": "EssShift_ProposeShiftSwap", "consumes": [ "application/json", "text/json", "application/xml", "text/xml", "application/x-www-form-urlencoded" ], "produces": [ "application/json", "text/json", "application/xml", "text/xml" ], "parameters": [ { "name": "model", "in": "body", "required": true, "schema": { "$ref": "#/definitions/SwapShiftModel" } }, { "name": "employeeId", "in": "path", "required": true, "type": "string" } ], "responses": { "200": { "description": "OK" } } } }, "/api/v2/ess/{employeeId}/shift/{shiftId}/swap/cancel": { "post": { "tags": [ "Other" ], "operationId": "EssShift_CancelShiftSwap", "consumes": [], "produces": [ "application/json", "text/json", "application/xml", "text/xml" ], "parameters": [ { "name": "shiftId", "in": "path", "required": true, "type": "integer", "format": "int32", "title": "Int32" }, { "name": "employeeId", "in": "path", "required": true, "type": "string" } ], "responses": { "200": { "description": "OK" } } } }, "/api/v2/ess/{employeeId}/shift/{shiftId}/swap/accept": { "post": { "tags": [ "Other" ], "operationId": "EssShift_AcceptShiftSwap", "consumes": [], "produces": [ "application/json", "text/json", "application/xml", "text/xml" ], "parameters": [ { "name": "shiftId", "in": "path", "required": true, "type": "integer", "format": "int32", "title": "Int32" }, { "name": "employeeId", "in": "path", "required": true, "type": "string" } ], "responses": { "200": { "description": "OK" } } } }, "/api/v2/ess/{employeeId}/shift/{shiftId}/swap/decline": { "post": { "tags": [ "Other" ], "operationId": "EssShift_DeclineShiftSwap", "consumes": [], "produces": [ "application/json", "text/json", "application/xml", "text/xml" ], "parameters": [ { "name": "shiftId", "in": "path", "required": true, "type": "integer", "format": "int32", "title": "Int32" }, { "name": "employeeId", "in": "path", "required": true, "type": "string" } ], "responses": { "200": { "description": "OK" } } } }, "/api/v2/ess/{employeeId}/shift/swap/accept": { "post": { "tags": [ "Other" ], "summary": "Bulk Accept Roster Shift Swaps", "description": "Accepts a number of roster shift swaps by shift ID.", "operationId": "EssShift_AcceptShiftSwaps", "consumes": [ "application/json", "text/json", "application/xml", "text/xml", "application/x-www-form-urlencoded" ], "produces": [ "application/json", "text/json", "application/xml", "text/xml" ], "parameters": [ { "name": "model", "in": "body", "required": true, "schema": { "$ref": "#/definitions/EssBulkRosterShiftSwapModel" } }, { "name": "employeeId", "in": "path", "required": true, "type": "string" } ], "responses": { "200": { "description": "OK" } } } }, "/api/v2/ess/{employeeId}/shift/swap/decline": { "post": { "tags": [ "Other" ], "summary": "Bulk Decline Roster Shift Swaps", "description": "Declines a number of roster shift swaps by shift ID.", "operationId": "EssShift_DeclineShiftSwaps", "consumes": [ "application/json", "text/json", "application/xml", "text/xml", "application/x-www-form-urlencoded" ], "produces": [ "application/json", "text/json", "application/xml", "text/xml" ], "parameters": [ { "name": "model", "in": "body", "required": true, "schema": { "$ref": "#/definitions/EssBulkRosterShiftSwapModel" } }, { "name": "employeeId", "in": "path", "required": true, "type": "string" } ], "responses": { "200": { "description": "OK" } } } }, "/api/v2/ess/{employeeId}/shift/swap/cancel": { "post": { "tags": [ "Other" ], "summary": "Bulk Cancel Roster Shift Swaps", "description": "Cancels a number of roster shift swaps by shift ID.", "operationId": "EssShift_CancelShiftSwaps", "consumes": [ "application/json", "text/json", "application/xml", "text/xml", "application/x-www-form-urlencoded" ], "produces": [ "application/json", "text/json", "application/xml", "text/xml" ], "parameters": [ { "name": "model", "in": "body", "required": true, "schema": { "$ref": "#/definitions/EssBulkRosterShiftSwapModel" } }, { "name": "employeeId", "in": "path", "required": true, "type": "string" } ], "responses": { "200": { "description": "OK" } } } }, "/api/v2/business/{businessId}/report/tasks": { "get": { "tags": [ "Other" ], "operationId": "ReportsTasksReport_Get", "consumes": [], "produces": [ "application/json", "text/json", "application/xml", "text/xml" ], "parameters": [ { "name": "businessId", "in": "path", "required": true, "type": "string" }, { "name": "request.employeeId", "in": "query", "required": false, "type": "integer", "format": "int32", "title": "Int32" }, { "name": "request.payRunId", "in": "query", "required": false, "type": "integer", "format": "int32", "title": "Int32" }, { "name": "request.fromDate", "in": "query", "required": false, "type": "string", "format": "date-time", "title": "Nullable" }, { "name": "request.toDate", "in": "query", "required": false, "type": "string", "format": "date-time", "title": "Nullable" }, { "name": "request.payScheduleId", "in": "query", "required": false, "type": "integer", "format": "int32", "title": "Int32" }, { "name": "request.status", "in": "query", "required": false, "type": "string", "enum": [ "All", "Completed", "NotCompleted" ], "title": "TasksReportStatusEnum" } ], "responses": { "200": { "description": "OK", "schema": { "type": "array", "items": { "$ref": "#/definitions/TasksReportExportModel" }, "xml": { "name": "TasksReportExportModel", "wrapped": true }, "title": "IList" } } } } }, "/api/v2/business/{businessId}/report/shiftswapping": { "get": { "tags": [ "Other" ], "operationId": "ReportsShiftSwapping_Get", "consumes": [], "produces": [ "application/json", "text/json", "application/xml", "text/xml" ], "parameters": [ { "name": "businessId", "in": "path", "required": true, "type": "string" }, { "name": "request.fromEmployeeId", "in": "query", "required": false, "type": "integer", "format": "int32", "title": "Nullable" }, { "name": "request.toEmployeeId", "in": "query", "required": false, "type": "integer", "format": "int32", "title": "Nullable" }, { "name": "request.includeCosts", "in": "query", "required": false, "type": "boolean", "title": "Boolean" }, { "name": "request.statuses", "in": "query", "required": false, "type": "array", "items": { "type": "string", "enum": [ "Created", "Cancelled", "Accepted", "Declined", "AwaitingManagerApproval", "ApprovedByManager", "RejectedByManager" ], "title": "RosterShiftSwapStatusEnum" }, "collectionFormat": "multi", "title": "IList" }, { "name": "request.fromDate", "in": "query", "required": false, "type": "string", "format": "date-time", "title": "DateTime" }, { "name": "request.toDate", "in": "query", "required": false, "type": "string", "format": "date-time", "title": "DateTime" }, { "name": "request.locationId", "in": "query", "required": false, "type": "integer", "format": "int32", "title": "Int32" }, { "name": "request.employingEntityId", "in": "query", "required": false, "type": "integer", "format": "int32", "title": "Nullable" } ], "responses": { "200": { "description": "OK", "schema": { "type": "array", "items": { "$ref": "#/definitions/ShiftSwappingReportExportModel" }, "xml": { "name": "ShiftSwappingReportExportModel", "wrapped": true }, "title": "IList" } } } } }, "/api/v2/business/{businessId}/paycategory": { "get": { "tags": [ "PayCategory" ], "summary": "List Pay Categories", "description": "Lists all the pay categories for the business\n\nThis operation supports OData queries.", "operationId": "PayCategory_GetPayCategories", "consumes": [], "produces": [ "application/json", "text/json", "application/xml", "text/xml" ], "parameters": [ { "name": "businessId", "in": "path", "required": true, "type": "string" } ], "responses": { "200": { "description": "OK", "schema": { "type": "array", "items": { "$ref": "#/definitions/PayCategoryModel" }, "xml": { "name": "PayCategoryModel", "wrapped": true }, "title": "IEnumerable" } } } }, "post": { "tags": [ "PayCategory" ], "summary": "Create Pay Category", "description": "Creates a new pay category for the business.", "operationId": "PayCategory_Post", "consumes": [ "application/json", "text/json", "application/xml", "text/xml", "application/x-www-form-urlencoded" ], "produces": [ "application/json", "text/json", "application/xml", "text/xml" ], "parameters": [ { "name": "payCategory", "in": "body", "required": true, "schema": { "$ref": "#/definitions/PayCategoryModel" } }, { "name": "businessId", "in": "path", "required": true, "type": "string" } ], "responses": { "200": { "description": "OK" } } } }, "/api/v2/business/{businessId}/paycategory/{id}": { "get": { "tags": [ "PayCategory" ], "summary": "Get Pay Category by ID", "description": "Gets the pay category with the specified ID.", "operationId": "PayCategory_Get", "consumes": [], "produces": [ "application/json", "text/json", "application/xml", "text/xml" ], "parameters": [ { "name": "id", "in": "path", "required": true, "type": "integer", "format": "int32", "title": "Int32" }, { "name": "businessId", "in": "path", "required": true, "type": "string" } ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/PayCategoryModel" } } } }, "put": { "tags": [ "PayCategory" ], "summary": "Update Pay Category", "description": "Updates the pay category with the specified ID.", "operationId": "PayCategory_Put", "consumes": [ "application/json", "text/json", "application/xml", "text/xml", "application/x-www-form-urlencoded" ], "produces": [ "application/json", "text/json", "application/xml", "text/xml" ], "parameters": [ { "name": "id", "in": "path", "required": true, "type": "integer", "format": "int32", "title": "Int32" }, { "name": "payCategory", "in": "body", "required": true, "schema": { "$ref": "#/definitions/PayCategoryModel" } }, { "name": "businessId", "in": "path", "required": true, "type": "string" } ], "responses": { "200": { "description": "OK" } } }, "delete": { "tags": [ "PayCategory" ], "summary": "Delete Pay Category", "description": "Deletes the pay category with the specified ID.", "operationId": "PayCategory_Delete", "consumes": [], "produces": [ "application/json", "text/json", "application/xml", "text/xml" ], "parameters": [ { "name": "id", "in": "path", "required": true, "type": "integer", "format": "int32", "title": "Int32" }, { "name": "businessId", "in": "path", "required": true, "type": "string" } ], "responses": { "200": { "description": "OK" } } } }, "/api/v2/business/{businessId}/paymentsummary/{financialYearEnding}": { "get": { "tags": [ "PaymentSummary" ], "summary": "List Payment Summaries", "description": "Lists all the payment summaries for the specified financial year.\n\nThis operation supports OData queries.", "operationId": "PaymentSummary_Get", "consumes": [], "produces": [ "application/json", "text/json", "application/xml", "text/xml" ], "parameters": [ { "name": "financialYearEnding", "in": "path", "required": true, "type": "integer", "format": "int32", "title": "Int32" }, { "name": "businessId", "in": "path", "required": true, "type": "string" } ], "responses": { "200": { "description": "OK", "schema": { "type": "array", "items": { "$ref": "#/definitions/PaygPaymentSummaryModel" }, "xml": { "name": "PaygPaymentSummaryModel", "wrapped": true }, "title": "IEnumerable" } } } }, "put": { "tags": [ "PaymentSummary" ], "summary": "Generate Payment Summaries", "description": "Generates (or regenerates) payment summaries for the specified financial year/business. Only unpublished payment summaries will be regenerated.", "operationId": "PaymentSummary_Put", "consumes": [], "produces": [ "application/json", "text/json", "application/xml", "text/xml" ], "parameters": [ { "name": "financialYearEnding", "in": "path", "required": true, "type": "integer", "format": "int32", "title": "Int32" }, { "name": "employeeId", "in": "query", "required": false, "type": "integer", "format": "int32", "title": "Nullable" }, { "name": "employingEntityId", "in": "query", "required": false, "type": "integer", "format": "int32", "title": "Nullable" }, { "name": "locationId", "in": "query", "required": false, "type": "integer", "format": "int32", "title": "Nullable" }, { "name": "businessId", "in": "path", "required": true, "type": "string" } ], "responses": { "200": { "description": "OK" } } }, "post": { "tags": [ "PaymentSummary" ], "summary": "Publish Payment Summaries", "description": "Publish payment summaries for the specified financial year.", "operationId": "PaymentSummary_Post", "consumes": [], "produces": [ "application/json", "text/json", "application/xml", "text/xml" ], "parameters": [ { "name": "financialYearEnding", "in": "path", "required": true, "type": "integer", "format": "int32", "title": "Int32" }, { "name": "employeeId", "in": "query", "required": false, "type": "integer", "format": "int32", "title": "Nullable" }, { "name": "employingEntityId", "in": "query", "required": false, "type": "integer", "format": "int32", "title": "Nullable" }, { "name": "locationId", "in": "query", "required": false, "type": "integer", "format": "int32", "title": "Nullable" }, { "name": "businessId", "in": "path", "required": true, "type": "string" } ], "responses": { "200": { "description": "OK" } } }, "delete": { "tags": [ "PaymentSummary" ], "summary": "Unpublish Payment Summaries", "description": "Unpublish payment summaries for the specified financial year.", "operationId": "PaymentSummary_Delete", "consumes": [], "produces": [ "application/json", "text/json", "application/xml", "text/xml" ], "parameters": [ { "name": "financialYearEnding", "in": "path", "required": true, "type": "integer", "format": "int32", "title": "Int32" }, { "name": "employeeId", "in": "query", "required": false, "type": "integer", "format": "int32", "title": "Nullable" }, { "name": "employingEntityId", "in": "query", "required": false, "type": "integer", "format": "int32", "title": "Nullable" }, { "name": "locationId", "in": "query", "required": false, "type": "integer", "format": "int32", "title": "Nullable" }, { "name": "businessId", "in": "path", "required": true, "type": "string" } ], "responses": { "200": { "description": "OK" } } } }, "/api/v2/business/{businessId}/payratetemplate": { "get": { "tags": [ "PayRateTemplate" ], "summary": "List Pay Rate Templates", "description": "Lists all the pay rate templates for the business.\n\nThis operation supports OData queries.", "operationId": "PayRateTemplate_GetPayRateTemplates", "consumes": [], "produces": [ "application/json", "text/json", "application/xml", "text/xml" ], "parameters": [ { "name": "businessId", "in": "path", "required": true, "type": "string" } ], "responses": { "200": { "description": "OK", "schema": { "type": "array", "items": { "$ref": "#/definitions/PayRateTemplateModel" }, "xml": { "name": "PayRateTemplateModel", "wrapped": true }, "title": "IEnumerable" } } } }, "post": { "tags": [ "PayRateTemplate" ], "summary": "Create Pay Rate Template", "description": "Creates a new pay rate template for the business.", "operationId": "PayRateTemplate_Post", "consumes": [ "application/json", "text/json", "application/xml", "text/xml", "application/x-www-form-urlencoded" ], "produces": [ "application/json", "text/json", "application/xml", "text/xml" ], "parameters": [ { "name": "payRateTemplate", "in": "body", "required": true, "schema": { "$ref": "#/definitions/PayRateTemplateModel" } }, { "name": "businessId", "in": "path", "required": true, "type": "string" } ], "responses": { "200": { "description": "OK" } } } }, "/api/v2/business/{businessId}/payratetemplate/{id}": { "get": { "tags": [ "PayRateTemplate" ], "summary": "Get Pay Rate Template by ID", "description": "Gets the pay rate template with the specified ID.", "operationId": "PayRateTemplate_Get", "consumes": [], "produces": [ "application/json", "text/json", "application/xml", "text/xml" ], "parameters": [ { "name": "id", "in": "path", "required": true, "type": "integer", "format": "int32", "title": "Int32" }, { "name": "businessId", "in": "path", "required": true, "type": "string" } ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/PayRateTemplateModel" } } } }, "put": { "tags": [ "PayRateTemplate" ], "summary": "Update Pay Rate Template", "description": "Updates the pay rate template with the specified ID.", "operationId": "PayRateTemplate_Put", "consumes": [ "application/json", "text/json", "application/xml", "text/xml", "application/x-www-form-urlencoded" ], "produces": [ "application/json", "text/json", "application/xml", "text/xml" ], "parameters": [ { "name": "id", "in": "path", "required": true, "type": "integer", "format": "int32", "title": "Int32" }, { "name": "payRateTemplate", "in": "body", "required": true, "schema": { "$ref": "#/definitions/PayRateTemplateModel" } }, { "name": "businessId", "in": "path", "required": true, "type": "string" } ], "responses": { "200": { "description": "OK" } } }, "delete": { "tags": [ "PayRateTemplate" ], "summary": "Delete Pay Rate Template", "description": "Deletes the pay rate template with the specified ID.", "operationId": "PayRateTemplate_Delete", "consumes": [], "produces": [ "application/json", "text/json", "application/xml", "text/xml" ], "parameters": [ { "name": "id", "in": "path", "required": true, "type": "integer", "format": "int32", "title": "Int32" }, { "name": "businessId", "in": "path", "required": true, "type": "string" } ], "responses": { "200": { "description": "OK" } } } }, "/api/v2/business/{businessId}/payrun/{payRunId}/EmployeeExpenses": { "get": { "tags": [ "PayRun" ], "summary": "List Employee Expenses", "description": "Lists all the employee expenses for a pay run.", "operationId": "PayRunEmployeeExpenses_Get", "consumes": [], "produces": [ "application/json", "text/json", "application/xml", "text/xml" ], "parameters": [ { "name": "payRunId", "in": "path", "required": true, "type": "integer", "format": "int32", "title": "Int32" }, { "name": "businessId", "in": "path", "required": true, "type": "string" } ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/PayRunEmployeeExpenseResponse" } } } }, "post": { "tags": [ "PayRun" ], "summary": "Create Employee Expenses", "description": "Add employee expenses to the specified pay run.", "operationId": "PayRunEmployeeExpenses_Post", "consumes": [ "application/json", "text/json", "application/xml", "text/xml", "application/x-www-form-urlencoded" ], "produces": [ "application/json", "text/json", "application/xml", "text/xml" ], "parameters": [ { "name": "payRunId", "in": "path", "required": true, "type": "integer", "format": "int32", "title": "Int32" }, { "name": "request", "in": "body", "required": true, "schema": { "$ref": "#/definitions/SubmitPayRunEmployeeExpenseRequest" } }, { "name": "businessId", "in": "path", "required": true, "type": "string" } ], "responses": { "200": { "description": "OK" } } }, "delete": { "tags": [ "PayRun" ], "summary": "Delete Employee Expense", "description": "Deletes the employee expense with the specified ID from the pay run.", "operationId": "PayRunEmployeeExpenses_Delete", "consumes": [], "produces": [ "application/json", "text/json", "application/xml", "text/xml" ], "parameters": [ { "name": "payRunId", "in": "path", "required": true, "type": "integer", "format": "int32", "title": "Int32" }, { "name": "id", "in": "query", "required": true, "type": "integer", "format": "int32", "title": "Int32" }, { "name": "businessId", "in": "path", "required": true, "type": "string" } ], "responses": { "200": { "description": "OK" } } } }, "/api/v2/business/{businessId}/payrun/{payRunId}/EmployeeExpenses/{employeeId}": { "get": { "tags": [ "PayRun" ], "summary": "Get Employee Expenses by Employee ID", "description": "Gets all the employee expenses for a specific employee in a pay run.", "operationId": "PayRunEmployeeExpenses_GetApiV2BusinessByBusinessIdPayrunByPayRunIdEmployeeExpensesByEmployeeId", "consumes": [], "produces": [ "application/json", "text/json", "application/xml", "text/xml" ], "parameters": [ { "name": "payRunId", "in": "path", "required": true, "type": "integer", "format": "int32", "title": "Int32" }, { "name": "employeeId", "in": "path", "required": true, "type": "integer", "format": "int32", "title": "Int32" }, { "name": "businessId", "in": "path", "required": true, "type": "string" } ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/PayRunEmployeeExpenseResponse" } } } } }, "/api/v2/business/{businessId}/payrun/{payRunId}/details": { "get": { "tags": [ "PayRun" ], "summary": "Get Pay Run Details", "description": "Gets the details for the specified pay run.", "operationId": "PayRunDetails_Get", "consumes": [], "produces": [ "application/json", "text/json", "application/xml", "text/xml" ], "parameters": [ { "name": "payRunId", "in": "path", "required": true, "type": "integer", "format": "int32", "title": "Int32" }, { "name": "businessId", "in": "path", "required": true, "type": "string" } ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/PayRunDetailsModel" } } } } }, "/api/v2/business/{businessId}/payrun/{payRunId}/terminate": { "post": { "tags": [ "PayRun" ], "summary": "Terminate Employee in Pay Run", "description": "Terminates an employee in the specified pay run.", "operationId": "PayRunTerminate_Post", "consumes": [ "application/json", "text/json", "application/xml", "text/xml", "application/x-www-form-urlencoded" ], "produces": [ "application/json", "text/json", "application/xml", "text/xml" ], "parameters": [ { "name": "payRunId", "in": "path", "required": true, "type": "integer", "format": "int32", "title": "Int32" }, { "name": "request", "in": "body", "required": true, "schema": { "$ref": "#/definitions/TerminateEmployeeRequest" } }, { "name": "businessId", "in": "path", "required": true, "type": "string" } ], "responses": { "200": { "description": "OK" } } } }, "/api/v2/business/{businessId}/payrun/{payRunId}/payslips": { "get": { "tags": [ "PayRun" ], "summary": "List Pay Slip Data", "description": "Lists all the pay slips for the specified pay run.", "operationId": "PayRunPaySlip_Get", "consumes": [], "produces": [ "application/json", "text/json", "application/xml", "text/xml" ], "parameters": [ { "name": "payRunId", "in": "path", "required": true, "type": "integer", "format": "int32", "title": "Int32" }, { "name": "showAllData", "in": "query", "required": false, "type": "boolean", "default": false, "title": "Boolean" }, { "name": "businessId", "in": "path", "required": true, "type": "string" } ], "responses": { "200": { "description": "OK", "schema": { "type": "object", "additionalProperties": { "$ref": "#/definitions/ApiPaySlipModel" }, "title": "Dictionary" } } } } }, "/api/v2/business/{businessId}/payrun/{payRunId}/payslips/{employeeId}": { "get": { "tags": [ "PayRun" ], "summary": "Get Pay Slip Data by Employee ID", "description": "Gets the pay slip data for an employee in a payrun.", "operationId": "PayRunPaySlip_GetApiV2BusinessByBusinessIdPayrunByPayRunIdPayslipsByEmployeeId", "consumes": [], "produces": [ "application/json", "text/json", "application/xml", "text/xml" ], "parameters": [ { "name": "payRunId", "in": "path", "required": true, "type": "integer", "format": "int32", "title": "Int32" }, { "name": "employeeId", "in": "path", "required": true, "type": "integer", "format": "int32", "title": "Int32" }, { "name": "showAllData", "in": "query", "required": false, "type": "boolean", "default": false, "title": "Boolean" }, { "name": "businessId", "in": "path", "required": true, "type": "string" } ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/ApiPaySlipModel" } } } } }, "/api/v2/business/{businessId}/payrun/{payRunId}/earningslines": { "get": { "tags": [ "PayRun" ], "summary": "List Earnings Lines", "description": "Lists all the earnings lines for a pay run.", "operationId": "PayRunEarningsLine_Get", "consumes": [], "produces": [ "application/json", "text/json", "application/xml", "text/xml" ], "parameters": [ { "name": "payRunId", "in": "path", "required": true, "type": "integer", "format": "int32", "title": "Int32" }, { "name": "businessId", "in": "path", "required": true, "type": "string" } ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/PayRunEarningsLineResponse" } } } }, "post": { "tags": [ "PayRun" ], "summary": "Create Earnings Lines", "description": "Adds earnings lines to the specified pay run.", "operationId": "PayRunEarningsLine_Post", "consumes": [ "application/json", "text/json", "application/xml", "text/xml", "application/x-www-form-urlencoded" ], "produces": [ "application/json", "text/json", "application/xml", "text/xml" ], "parameters": [ { "name": "payRunId", "in": "path", "required": true, "type": "integer", "format": "int32", "title": "Int32" }, { "name": "request", "in": "body", "required": true, "schema": { "$ref": "#/definitions/SubmitPayRunEarningsLineRequest" } }, { "name": "businessId", "in": "path", "required": true, "type": "string" } ], "responses": { "200": { "description": "OK" } } }, "delete": { "tags": [ "PayRun" ], "summary": "Delete Earnings Line", "description": "Deletes the earnings with the specified ID from the pay run.", "operationId": "PayRunEarningsLine_Delete", "consumes": [], "produces": [ "application/json", "text/json", "application/xml", "text/xml" ], "parameters": [ { "name": "payRunId", "in": "path", "required": true, "type": "integer", "format": "int32", "title": "Int32" }, { "name": "id", "in": "query", "required": true, "type": "integer", "format": "int32", "title": "Int32" }, { "name": "businessId", "in": "path", "required": true, "type": "string" } ], "responses": { "200": { "description": "OK" } } } }, "/api/v2/business/{businessId}/payrun/{payRunId}/earningslines/{employeeId}": { "get": { "tags": [ "PayRun" ], "summary": "Get Earnings Lines by Employee ID", "description": "Gets all the earnings lines for a specific employee in a pay run.", "operationId": "PayRunEarningsLine_GetApiV2BusinessByBusinessIdPayrunByPayRunIdEarningslinesByEmployeeId", "consumes": [], "produces": [ "application/json", "text/json", "application/xml", "text/xml" ], "parameters": [ { "name": "payRunId", "in": "path", "required": true, "type": "integer", "format": "int32", "title": "Int32" }, { "name": "employeeId", "in": "path", "required": true, "type": "integer", "format": "int32", "title": "Int32" }, { "name": "businessId", "in": "path", "required": true, "type": "string" } ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/PayRunEarningsLineResponse" } } } } }, "/api/v2/business/{businessId}/employee/{employeeId}/payruntotals": { "get": { "tags": [ "PayRun" ], "summary": "List Pay Run Totals for Employee", "description": "Lists all the pay run totals for the employee with the specified ID.", "operationId": "EmployeePayRunTotal_Get", "consumes": [], "produces": [ "application/json", "text/json", "application/xml", "text/xml" ], "parameters": [ { "name": "employeeId", "in": "path", "required": true, "type": "integer", "format": "int32", "title": "Int32" }, { "name": "businessId", "in": "path", "required": true, "type": "string" } ], "responses": { "200": { "description": "OK", "schema": { "type": "array", "items": { "$ref": "#/definitions/PayRunTotalModel" }, "xml": { "name": "PayRunTotalModel", "wrapped": true }, "title": "IList" } } } } }, "/api/v2/business/{businessId}/payrun/{payRunId}/leaveaccrued": { "get": { "tags": [ "PayRun" ], "summary": "Get Leave Accruals", "description": "Lists all the leave accruals for the pay run.", "operationId": "PayRunLeaveAccrued_Get", "consumes": [], "produces": [ "application/json", "text/json", "application/xml", "text/xml" ], "parameters": [ { "name": "payRunId", "in": "path", "required": true, "type": "integer", "format": "int32", "title": "Int32" }, { "name": "includeLeaveTaken", "in": "query", "required": false, "type": "boolean", "default": false, "title": "Boolean" }, { "name": "businessId", "in": "path", "required": true, "type": "string" } ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/LeaveAccrualResponse" } } } }, "post": { "tags": [ "PayRun" ], "summary": "Save Leave Accruals", "description": "Saves a set of leave accruals for the pay run.", "operationId": "PayRunLeaveAccrued_Post", "consumes": [ "application/json", "text/json", "application/xml", "text/xml", "application/x-www-form-urlencoded" ], "produces": [ "application/json", "text/json", "application/xml", "text/xml" ], "parameters": [ { "name": "payRunId", "in": "path", "required": true, "type": "integer", "format": "int32", "title": "Int32" }, { "name": "model", "in": "body", "required": true, "schema": { "$ref": "#/definitions/SubmitLeaveAccrualsModel" } }, { "name": "businessId", "in": "path", "required": true, "type": "string" } ], "responses": { "200": { "description": "OK" } } }, "delete": { "tags": [ "PayRun" ], "summary": "Delete Leave Accrual", "description": "Deletes the manually added leave accrual, leave taken or leave adjustment with the specified ID from the pay run.", "operationId": "PayRunLeaveAccrued_Delete", "consumes": [], "produces": [ "application/json", "text/json", "application/xml", "text/xml" ], "parameters": [ { "name": "payRunId", "in": "path", "required": true, "type": "integer", "format": "int32", "title": "Int32" }, { "name": "id", "in": "query", "required": true, "type": "integer", "format": "int32", "title": "Int32" }, { "name": "businessId", "in": "path", "required": true, "type": "string" } ], "responses": { "200": { "description": "OK" } } } }, "/api/v2/business/{businessId}/payrun/{payRunId}/leaveaccrued/{employeeId}": { "get": { "tags": [ "PayRun" ], "summary": "Get Leave Accruals for Employee", "description": "Gets the leave accruals for the specified employee in the pay run.", "operationId": "PayRunLeaveAccrued_GetApiV2BusinessByBusinessIdPayrunByPayRunIdLeaveaccruedByEmployeeId", "consumes": [], "produces": [ "application/json", "text/json", "application/xml", "text/xml" ], "parameters": [ { "name": "payRunId", "in": "path", "required": true, "type": "integer", "format": "int32", "title": "Int32" }, { "name": "employeeId", "in": "path", "required": true, "type": "integer", "format": "int32", "title": "Int32" }, { "name": "includeLeaveTaken", "in": "query", "required": false, "type": "boolean", "default": false, "title": "Boolean" }, { "name": "businessId", "in": "path", "required": true, "type": "string" } ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/LeaveAccrualResponse" } } } } }, "/api/v2/business/{businessId}/payrun/{payRunId}/paygadjustments": { "get": { "tags": [ "PayRun" ], "summary": "List PAYG Adjustments", "description": "Lists all the PAYG adjustments for a pay run.", "operationId": "PayRunPaygAdjustments_Get", "consumes": [], "produces": [ "application/json", "text/json", "application/xml", "text/xml" ], "parameters": [ { "name": "payRunId", "in": "path", "required": true, "type": "integer", "format": "int32", "title": "Int32" }, { "name": "businessId", "in": "path", "required": true, "type": "string" } ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/PayRunPaygAdjustmentResponse" } } } }, "post": { "tags": [ "PayRun" ], "summary": "Create PAYG Adjustments", "description": "Adds PAYG adjustments to the specified pay run.", "operationId": "PayRunPaygAdjustments_Post", "consumes": [ "application/json", "text/json", "application/xml", "text/xml", "application/x-www-form-urlencoded" ], "produces": [ "application/json", "text/json", "application/xml", "text/xml" ], "parameters": [ { "name": "payRunId", "in": "path", "required": true, "type": "integer", "format": "int32", "title": "Int32" }, { "name": "request", "in": "body", "required": true, "schema": { "$ref": "#/definitions/SubmitPayRunPaygAdjustmentRequest" } }, { "name": "businessId", "in": "path", "required": true, "type": "string" } ], "responses": { "200": { "description": "OK" } } }, "delete": { "tags": [ "PayRun" ], "summary": "Delete PAYG Adjustment", "description": "Deletes the PAYG adjustment with the specified ID from the pay run.", "operationId": "PayRunPaygAdjustments_Delete", "consumes": [], "produces": [ "application/json", "text/json", "application/xml", "text/xml" ], "parameters": [ { "name": "payRunId", "in": "path", "required": true, "type": "integer", "format": "int32", "title": "Int32" }, { "name": "id", "in": "query", "required": true, "type": "integer", "format": "int32", "title": "Int32" }, { "name": "businessId", "in": "path", "required": true, "type": "string" } ], "responses": { "200": { "description": "OK" } } } }, "/api/v2/business/{businessId}/payrun/{payRunId}/paygadjustments/{employeeId}": { "get": { "tags": [ "PayRun" ], "summary": "Get PAYG Adjustments by Employee ID", "description": "Gets all the PAYG adjustments for a specific employee in a pay run.", "operationId": "PayRunPaygAdjustments_GetApiV2BusinessByBusinessIdPayrunByPayRunIdPaygadjustmentsByEmployeeId", "consumes": [], "produces": [ "application/json", "text/json", "application/xml", "text/xml" ], "parameters": [ { "name": "payRunId", "in": "path", "required": true, "type": "integer", "format": "int32", "title": "Int32" }, { "name": "employeeId", "in": "path", "required": true, "type": "integer", "format": "int32", "title": "Int32" }, { "name": "businessId", "in": "path", "required": true, "type": "string" } ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/PayRunPaygAdjustmentResponse" } } } } }, "/api/v2/business/{businessId}/payrun/{payRunId}/superadjustments": { "get": { "tags": [ "PayRun" ], "summary": "List Super Adjustments", "description": "Lists all the super adjustments for a pay run.", "operationId": "PayRunSuperAdjustments_GetAll", "consumes": [], "produces": [ "application/json", "text/json", "application/xml", "text/xml" ], "parameters": [ { "name": "payRunId", "in": "path", "required": true, "type": "integer", "format": "int32", "title": "Int32" }, { "name": "businessId", "in": "path", "required": true, "type": "string" } ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/PayRunSuperAdjustmentResponse" } } } }, "post": { "tags": [ "PayRun" ], "summary": "Create Super Adjustments", "description": "Adds super adjustments to the specified pay run.", "operationId": "PayRunSuperAdjustments_Post", "consumes": [ "application/json", "text/json", "application/xml", "text/xml", "application/x-www-form-urlencoded" ], "produces": [ "application/json", "text/json", "application/xml", "text/xml" ], "parameters": [ { "name": "payRunId", "in": "path", "required": true, "type": "integer", "format": "int32", "title": "Int32" }, { "name": "request", "in": "body", "required": true, "schema": { "$ref": "#/definitions/SubmitPayRunSuperAdjustmentRequest" } }, { "name": "businessId", "in": "path", "required": true, "type": "string" } ], "responses": { "200": { "description": "OK" } } }, "delete": { "tags": [ "PayRun" ], "summary": "Delete Super Adjustment", "description": "Deletes the super adjustment with the specified ID from the pay run.", "operationId": "PayRunSuperAdjustments_Delete", "consumes": [], "produces": [ "application/json", "text/json", "application/xml", "text/xml" ], "parameters": [ { "name": "payRunId", "in": "path", "required": true, "type": "integer", "format": "int32", "title": "Int32" }, { "name": "id", "in": "query", "required": true, "type": "integer", "format": "int32", "title": "Int32" }, { "name": "businessId", "in": "path", "required": true, "type": "string" } ], "responses": { "200": { "description": "OK" } } } }, "/api/v2/business/{businessId}/payrun/{payRunId}/superadjustments/{employeeId}": { "get": { "tags": [ "PayRun" ], "summary": "Get Super Adjustments by Employee ID", "description": "Gets all super adjustments for a specific employee in a pay run.", "operationId": "PayRunSuperAdjustments_Get", "consumes": [], "produces": [ "application/json", "text/json", "application/xml", "text/xml" ], "parameters": [ { "name": "payRunId", "in": "path", "required": true, "type": "integer", "format": "int32", "title": "Int32" }, { "name": "employeeId", "in": "path", "required": true, "type": "integer", "format": "int32", "title": "Int32" }, { "name": "businessId", "in": "path", "required": true, "type": "string" } ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/PayRunSuperAdjustmentResponse" } } } } }, "/api/v2/business/{businessId}/payrun/{payRunId}/unlock": { "post": { "tags": [ "PayRun" ], "summary": "Unlock Pay Run", "description": "Unlocks the specified pay run.", "operationId": "PayRunUnlock_Post", "consumes": [ "application/json", "text/json", "application/xml", "text/xml", "application/x-www-form-urlencoded" ], "produces": [ "application/json", "text/json", "application/xml", "text/xml" ], "parameters": [ { "name": "payRunId", "in": "path", "required": true, "type": "integer", "format": "int32", "title": "Int32" }, { "name": "request", "in": "body", "required": true, "schema": { "$ref": "#/definitions/PayRunUnlockRequest" } }, { "name": "businessId", "in": "path", "required": true, "type": "string" } ], "responses": { "200": { "description": "OK" } } } }, "/api/v2/business/{businessId}/payrun": { "get": { "tags": [ "PayRun" ], "summary": "List Pay Runs", "description": "Get a list of pay runs associated with the business.\n\nThis operation supports OData queries.", "operationId": "PayRun_GetPayRuns", "consumes": [], "produces": [ "application/json", "text/json", "application/xml", "text/xml" ], "parameters": [ { "name": "businessId", "in": "path", "required": true, "type": "string" } ], "responses": { "200": { "description": "OK", "schema": { "type": "array", "items": { "$ref": "#/definitions/PayRunModel" }, "xml": { "name": "PayRunModel", "wrapped": true }, "title": "IEnumerable" } } } }, "post": { "tags": [ "PayRun" ], "summary": "Create Pay Run", "description": "Creates a new pay run for this business.", "operationId": "PayRun_Post", "consumes": [ "application/json", "text/json", "application/xml", "text/xml", "application/x-www-form-urlencoded" ], "produces": [ "application/json", "text/json", "application/xml", "text/xml" ], "parameters": [ { "name": "request", "in": "body", "required": true, "schema": { "$ref": "#/definitions/PayRunCreateRequest" } }, { "name": "businessId", "in": "path", "required": true, "type": "string" } ], "responses": { "200": { "description": "OK" } } } }, "/api/v2/business/{businessId}/payrun/{payRunId}": { "get": { "tags": [ "PayRun" ], "summary": "Get Pay Run", "description": "Gets the pay run with the specified ID.", "operationId": "PayRun_Get", "consumes": [], "produces": [ "application/json", "text/json", "application/xml", "text/xml" ], "parameters": [ { "name": "payRunId", "in": "path", "required": true, "type": "integer", "format": "int32", "title": "Int32" }, { "name": "businessId", "in": "path", "required": true, "type": "string" } ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/PayRunModel" } } } }, "delete": { "tags": [ "PayRun" ], "summary": "Delete Pay Run", "description": "Deletes the pay run with the specified ID.", "operationId": "PayRun_Delete", "consumes": [], "produces": [ "application/json", "text/json", "application/xml", "text/xml" ], "parameters": [ { "name": "payRunId", "in": "path", "required": true, "type": "integer", "format": "int32", "title": "Int32" }, { "name": "businessId", "in": "path", "required": true, "type": "string" } ], "responses": { "200": { "description": "OK" } } } }, "/api/v2/business/{businessId}/payrun/async": { "post": { "tags": [ "PayRun" ], "summary": "Create Pay Run (Async)", "description": "Creates a new pay run for this business asynchronously (the request will return before the pay run is created).", "operationId": "PayRun_Async", "consumes": [ "application/json", "text/json", "application/xml", "text/xml", "application/x-www-form-urlencoded" ], "produces": [ "application/json", "text/json", "application/xml", "text/xml" ], "parameters": [ { "name": "request", "in": "body", "required": true, "schema": { "$ref": "#/definitions/PayRunCreateRequest" } }, { "name": "businessId", "in": "path", "required": true, "type": "string" } ], "responses": { "200": { "description": "OK" } } } }, "/api/v2/business/{businessId}/payrun/creationstatus/{jobId}": { "get": { "tags": [ "PayRun" ], "summary": "Get Creation Status", "description": "Gets the creation status of a pay run that was created asynchronously.", "operationId": "PayRun_CreationStatus", "consumes": [], "produces": [ "application/json", "text/json", "application/xml", "text/xml" ], "parameters": [ { "name": "jobId", "in": "path", "required": true, "type": "string", "format": "uuid", "title": "Guid" }, { "name": "businessId", "in": "path", "required": true, "type": "string" } ], "responses": { "200": { "description": "OK" } } } }, "/api/v2/business/{businessId}/payrun/{payRunId}/file/aba/{abaId}": { "get": { "tags": [ "PayRun" ], "summary": "Get ABA File", "description": "Gets an ABA file associated with a pay run.", "operationId": "PayRun_AbaFile", "consumes": [], "produces": [ "application/json", "text/json", "application/xml", "text/xml" ], "parameters": [ { "name": "payRunId", "in": "path", "required": true, "type": "integer", "format": "int32", "title": "Int32" }, { "name": "abaId", "in": "path", "required": true, "type": "integer", "format": "int32", "title": "Int32" }, { "name": "businessId", "in": "path", "required": true, "type": "string" } ], "responses": { "200": { "description": "OK" } } } }, "/api/v2/business/{businessId}/payrun/{payRunId}/file/payslip/{employeeId}": { "get": { "tags": [ "PayRun" ], "summary": "Get Pay Slip File", "description": "Gets the pay slip for an employee in a pay run.", "operationId": "PayRun_PaySlipFile", "consumes": [], "produces": [ "application/json", "text/json", "application/xml", "text/xml" ], "parameters": [ { "name": "payRunId", "in": "path", "required": true, "type": "integer", "format": "int32", "title": "Int32" }, { "name": "employeeId", "in": "path", "required": true, "type": "integer", "format": "int32", "title": "Int32" }, { "name": "businessId", "in": "path", "required": true, "type": "string" } ], "responses": { "200": { "description": "OK" } } } }, "/api/v2/business/{businessId}/payrun/{payRunId}/recalculate": { "post": { "tags": [ "PayRun" ], "summary": "Recalculate", "description": "Recalculates a pay run.", "operationId": "PayRun_Recalculate", "consumes": [], "produces": [ "application/json", "text/json", "application/xml", "text/xml" ], "parameters": [ { "name": "payRunId", "in": "path", "required": true, "type": "integer", "format": "int32", "title": "Int32" }, { "name": "businessId", "in": "path", "required": true, "type": "string" } ], "responses": { "200": { "description": "OK" } } } }, "/api/v2/business/{businessId}/payrun/{payRunId}/notation": { "post": { "tags": [ "PayRun" ], "summary": "Set Pay Run Notation", "description": "Sets the notation for this pay run. The pay run notation is the message that is shown on all pay slips for this pay run.", "operationId": "PayRun_Notation", "consumes": [ "application/json", "text/json", "application/xml", "text/xml", "application/x-www-form-urlencoded" ], "produces": [ "application/json", "text/json", "application/xml", "text/xml" ], "parameters": [ { "name": "payRunId", "in": "path", "required": true, "type": "integer", "format": "int32", "title": "Int32" }, { "name": "model", "in": "body", "required": true, "schema": { "$ref": "#/definitions/PayRunNotationModel" } }, { "name": "businessId", "in": "path", "required": true, "type": "string" } ], "responses": { "200": { "description": "OK" } } }, "delete": { "tags": [ "PayRun" ], "summary": "Delete Pay Run Notation", "description": "Deletes the notation for this pay run. The pay run notation is the message that is shown on all pay slips for this pay run.", "operationId": "PayRun_DeleteApiV2BusinessByBusinessIdPayrunByPayRunIdNotation", "consumes": [], "produces": [ "application/json", "text/json", "application/xml", "text/xml" ], "parameters": [ { "name": "payRunId", "in": "path", "required": true, "type": "integer", "format": "int32", "title": "Int32" }, { "name": "businessId", "in": "path", "required": true, "type": "string" } ], "responses": { "200": { "description": "OK" } } } }, "/api/v2/business/{businessId}/payrun/{payRunId}/employerliabilities": { "get": { "tags": [ "PayRun" ], "summary": "List Employer Liabilities", "description": "Lists all the employer liabilities for a pay run.", "operationId": "PayRunEmployerLiabilities_GetAll", "consumes": [], "produces": [ "application/json", "text/json", "application/xml", "text/xml" ], "parameters": [ { "name": "payRunId", "in": "path", "required": true, "type": "integer", "format": "int32", "title": "Int32" }, { "name": "businessId", "in": "path", "required": true, "type": "string" } ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/PayRunEmployerLiabilityResponse" } } } }, "post": { "tags": [ "PayRun" ], "summary": "Create Employer Liabilities", "description": "Add employer liabilities to the specified pay run.", "operationId": "PayRunEmployerLiabilities_Post", "consumes": [ "application/json", "text/json", "application/xml", "text/xml", "application/x-www-form-urlencoded" ], "produces": [ "application/json", "text/json", "application/xml", "text/xml" ], "parameters": [ { "name": "payRunId", "in": "path", "required": true, "type": "integer", "format": "int32", "title": "Int32" }, { "name": "request", "in": "body", "required": true, "schema": { "$ref": "#/definitions/SubmitPayRunEmployerLiabilityRequest" } }, { "name": "businessId", "in": "path", "required": true, "type": "string" } ], "responses": { "200": { "description": "OK" } } }, "delete": { "tags": [ "PayRun" ], "summary": "Delete Employer Liability", "description": "Deletes the employer liability with the specified ID from the pay run.", "operationId": "PayRunEmployerLiabilities_Delete", "consumes": [], "produces": [ "application/json", "text/json", "application/xml", "text/xml" ], "parameters": [ { "name": "payRunId", "in": "path", "required": true, "type": "integer", "format": "int32", "title": "Int32" }, { "name": "id", "in": "query", "required": true, "type": "integer", "format": "int32", "title": "Int32" }, { "name": "businessId", "in": "path", "required": true, "type": "string" } ], "responses": { "200": { "description": "OK" } } } }, "/api/v2/business/{businessId}/payrun/{payRunId}/employerliabilities/{employeeId}": { "get": { "tags": [ "PayRun" ], "summary": "Get Employer Liabilities by Employee ID", "description": "Gets all the employer liabilities for a specific employee in a pay run.", "operationId": "PayRunEmployerLiabilities_Get", "consumes": [], "produces": [ "application/json", "text/json", "application/xml", "text/xml" ], "parameters": [ { "name": "payRunId", "in": "path", "required": true, "type": "integer", "format": "int32", "title": "Int32" }, { "name": "employeeId", "in": "path", "required": true, "type": "integer", "format": "int32", "title": "Int32" }, { "name": "businessId", "in": "path", "required": true, "type": "string" } ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/PayRunEmployerLiabilityResponse" } } } } }, "/api/v2/business/{businessId}/payrun/{payRunId}/finalise": { "post": { "tags": [ "PayRun" ], "summary": "Finalise Pay Run", "description": "Finalises the specified pay run. A pay run can only be finalised if there are no calculations in progress.", "operationId": "PayRunFinalise_Post", "consumes": [ "application/json", "text/json", "application/xml", "text/xml", "application/x-www-form-urlencoded" ], "produces": [ "application/json", "text/json", "application/xml", "text/xml" ], "parameters": [ { "name": "payRunId", "in": "path", "required": true, "type": "integer", "format": "int32", "title": "Int32" }, { "name": "options", "in": "body", "required": true, "schema": { "$ref": "#/definitions/FinalisePayRunOptions" } }, { "name": "businessId", "in": "path", "required": true, "type": "string" } ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/PayRunFinaliseResult" } } } } }, "/api/v2/business/{businessId}/journal/{payRunId}": { "get": { "tags": [ "PayRun" ], "summary": "Get Journal Details", "description": "Gets the journal details for this pay run.", "operationId": "Journal_Get", "consumes": [], "produces": [ "application/json", "text/json", "application/xml", "text/xml" ], "parameters": [ { "name": "payRunId", "in": "path", "required": true, "type": "integer", "format": "int32", "title": "Int32" }, { "name": "businessId", "in": "path", "required": true, "type": "string" } ], "responses": { "200": { "description": "OK", "schema": { "type": "array", "items": { "$ref": "#/definitions/JournalItemResponse" }, "xml": { "name": "JournalItemResponse", "wrapped": true }, "title": "IEnumerable" } } } } }, "/api/v2/business/{businessId}/payrun/{payRunId}/setuiunlockstate": { "post": { "tags": [ "PayRun" ], "summary": "Set UI Unlock enabled", "description": "Sets whether a pay run can be unlocked by the UI or not. Only applies to finalized pay runs.", "operationId": "PayRunUnlockState_Post", "consumes": [ "application/json", "text/json", "application/xml", "text/xml", "application/x-www-form-urlencoded" ], "produces": [ "application/json", "text/json", "application/xml", "text/xml" ], "parameters": [ { "name": "payRunId", "in": "path", "required": true, "type": "integer", "format": "int32", "title": "Int32" }, { "name": "request", "in": "body", "required": true, "schema": { "$ref": "#/definitions/SetPayRunUIUnlockStateRequest" } }, { "name": "businessId", "in": "path", "required": true, "type": "string" } ], "responses": { "200": { "description": "OK" } } } }, "/api/v2/business/{businessId}/payrun/{payRunId}/totals": { "get": { "tags": [ "PayRun" ], "summary": "List Pay Run Totals", "description": "Lists all of the pay run totals in a pay run.", "operationId": "PayRunTotals_Get", "consumes": [], "produces": [ "application/json", "text/json", "application/xml", "text/xml" ], "parameters": [ { "name": "payRunId", "in": "path", "required": true, "type": "integer", "format": "int32", "title": "Int32" }, { "name": "businessId", "in": "path", "required": true, "type": "string" } ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/PayRunTotalResponse" } } } } }, "/api/v2/business/{businessId}/payrun/{payRunId}/totals/{employeeId}": { "get": { "tags": [ "PayRun" ], "summary": "Get Pay Slip Data by Employee ID", "description": "Gets the pay run totals for a specific employee in a pay run.", "operationId": "PayRunTotals_GetApiV2BusinessByBusinessIdPayrunByPayRunIdTotalsByEmployeeId", "consumes": [], "produces": [ "application/json", "text/json", "application/xml", "text/xml" ], "parameters": [ { "name": "payRunId", "in": "path", "required": true, "type": "integer", "format": "int32", "title": "Int32" }, { "name": "employeeId", "in": "path", "required": true, "type": "integer", "format": "int32", "title": "Int32" }, { "name": "businessId", "in": "path", "required": true, "type": "string" } ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/PayRunTotalResponse" } } } } }, "/api/v2/business/{businessId}/payrun/{payRunId}/notation/{employeeId}": { "post": { "tags": [ "PayRun" ], "summary": "Create Note for Employee", "description": "Creates a note for an employee record in a pay run.", "operationId": "PayRunTotals_Notation", "consumes": [ "application/json", "text/json", "application/xml", "text/xml", "application/x-www-form-urlencoded" ], "produces": [ "application/json", "text/json", "application/xml", "text/xml" ], "parameters": [ { "name": "payRunId", "in": "path", "required": true, "type": "integer", "format": "int32", "title": "Int32" }, { "name": "employeeId", "in": "path", "required": true, "type": "integer", "format": "int32", "title": "Int32" }, { "name": "model", "in": "body", "required": true, "schema": { "$ref": "#/definitions/PayRunTotalNotationModel" } }, { "name": "businessId", "in": "path", "required": true, "type": "string" } ], "responses": { "200": { "description": "OK" } } }, "delete": { "tags": [ "PayRun" ], "summary": "Delete Note for Employee", "description": "Deletes the note for an employee record in a pay run.", "operationId": "PayRunTotals_DeleteApiV2BusinessByBusinessIdPayrunByPayRunIdNotationByEmployeeId", "consumes": [], "produces": [ "application/json", "text/json", "application/xml", "text/xml" ], "parameters": [ { "name": "payRunId", "in": "path", "required": true, "type": "integer", "format": "int32", "title": "Int32" }, { "name": "employeeId", "in": "path", "required": true, "type": "integer", "format": "int32", "title": "Int32" }, { "name": "businessId", "in": "path", "required": true, "type": "string" } ], "responses": { "200": { "description": "OK" } } } }, "/api/v2/business/{businessId}/payrun/{payRunId}/deductions": { "get": { "tags": [ "PayRun" ], "summary": "List Deductions", "description": "Gets all the deductions for a pay run.", "operationId": "PayRunDeductions_Get", "consumes": [], "produces": [ "application/json", "text/json", "application/xml", "text/xml" ], "parameters": [ { "name": "payRunId", "in": "path", "required": true, "type": "integer", "format": "int32", "title": "Int32" }, { "name": "businessId", "in": "path", "required": true, "type": "string" } ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/PayRunDeductionResponse" } } } }, "post": { "tags": [ "PayRun" ], "summary": "Create Deductions", "description": "Add deductions to the specified pay run.", "operationId": "PayRunDeductions_Post", "consumes": [ "application/json", "text/json", "application/xml", "text/xml", "application/x-www-form-urlencoded" ], "produces": [ "application/json", "text/json", "application/xml", "text/xml" ], "parameters": [ { "name": "payRunId", "in": "path", "required": true, "type": "integer", "format": "int32", "title": "Int32" }, { "name": "request", "in": "body", "required": true, "schema": { "$ref": "#/definitions/SubmitPayRunDeductionRequest" } }, { "name": "businessId", "in": "path", "required": true, "type": "string" } ], "responses": { "200": { "description": "OK" } } }, "delete": { "tags": [ "PayRun" ], "summary": "Delete Deduction", "description": "Deletes the deduction with the specified ID from the pay run.", "operationId": "PayRunDeductions_Delete", "consumes": [], "produces": [ "application/json", "text/json", "application/xml", "text/xml" ], "parameters": [ { "name": "payRunId", "in": "path", "required": true, "type": "integer", "format": "int32", "title": "Int32" }, { "name": "id", "in": "query", "required": true, "type": "integer", "format": "int32", "title": "Int32" }, { "name": "businessId", "in": "path", "required": true, "type": "string" } ], "responses": { "200": { "description": "OK" } } } }, "/api/v2/business/{businessId}/payrun/{payRunId}/deductions/{employeeId}": { "get": { "tags": [ "PayRun" ], "summary": "Get Deductions by Employee ID", "description": "Gets all the deductions for a specific employee in a pay run.", "operationId": "PayRunDeductions_GetApiV2BusinessByBusinessIdPayrunByPayRunIdDeductionsByEmployeeId", "consumes": [], "produces": [ "application/json", "text/json", "application/xml", "text/xml" ], "parameters": [ { "name": "payRunId", "in": "path", "required": true, "type": "integer", "format": "int32", "title": "Int32" }, { "name": "employeeId", "in": "path", "required": true, "type": "integer", "format": "int32", "title": "Int32" }, { "name": "businessId", "in": "path", "required": true, "type": "string" } ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/PayRunDeductionResponse" } } } } }, "/api/v2/business/{businessId}/payschedule": { "get": { "tags": [ "PaySchedule" ], "summary": "List Pay Schedules", "description": "Lists all the pay schedules for the business.\n\nThis operation supports OData queries.", "operationId": "PaySchedule_GetPaySchedules", "consumes": [], "produces": [ "application/json", "text/json", "application/xml", "text/xml" ], "parameters": [ { "name": "businessId", "in": "path", "required": true, "type": "string" } ], "responses": { "200": { "description": "OK", "schema": { "type": "array", "items": { "$ref": "#/definitions/PayScheduleModel" }, "xml": { "name": "PayScheduleModel", "wrapped": true }, "title": "IEnumerable" } } } }, "post": { "tags": [ "PaySchedule" ], "summary": "Create Pay Schedule", "description": "Creates a new pay schedule for the business.", "operationId": "PaySchedule_Post", "consumes": [ "application/json", "text/json", "application/xml", "text/xml", "application/x-www-form-urlencoded" ], "produces": [ "application/json", "text/json", "application/xml", "text/xml" ], "parameters": [ { "name": "paySchedule", "in": "body", "required": true, "schema": { "$ref": "#/definitions/PayScheduleModel" } }, { "name": "businessId", "in": "path", "required": true, "type": "string" } ], "responses": { "200": { "description": "OK" } } } }, "/api/v2/business/{businessId}/payschedule/{id}": { "get": { "tags": [ "PaySchedule" ], "summary": "Get Pay Schedule by ID", "description": "Gets the pay schedule with the specified ID.", "operationId": "PaySchedule_Get", "consumes": [], "produces": [ "application/json", "text/json", "application/xml", "text/xml" ], "parameters": [ { "name": "id", "in": "path", "required": true, "type": "integer", "format": "int32", "title": "Int32" }, { "name": "businessId", "in": "path", "required": true, "type": "string" } ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/PayScheduleModel" } } } }, "put": { "tags": [ "PaySchedule" ], "summary": "Update Pay Schedule", "description": "Updates the pay schedule with the specified ID.", "operationId": "PaySchedule_Put", "consumes": [ "application/json", "text/json", "application/xml", "text/xml", "application/x-www-form-urlencoded" ], "produces": [ "application/json", "text/json", "application/xml", "text/xml" ], "parameters": [ { "name": "id", "in": "path", "required": true, "type": "integer", "format": "int32", "title": "Int32" }, { "name": "paySchedule", "in": "body", "required": true, "schema": { "$ref": "#/definitions/PayScheduleModel" } }, { "name": "businessId", "in": "path", "required": true, "type": "string" } ], "responses": { "200": { "description": "OK" } } }, "delete": { "tags": [ "PaySchedule" ], "summary": "Delete Pay Schedule", "description": "Deletes the pay schedule with the specified ID.", "operationId": "PaySchedule_Delete", "consumes": [], "produces": [ "application/json", "text/json", "application/xml", "text/xml" ], "parameters": [ { "name": "id", "in": "path", "required": true, "type": "integer", "format": "int32", "title": "Int32" }, { "name": "businessId", "in": "path", "required": true, "type": "string" } ], "responses": { "200": { "description": "OK" } } } }, "/api/v2/business/{businessId}/publicholiday": { "get": { "tags": [ "PublicHoliday" ], "summary": "Get Public Holidays for Year", "description": "Retrieves all the public holidays for a specific year.", "operationId": "PublicHoliday_GetPublicHolidays", "consumes": [], "produces": [ "application/json", "text/json", "application/xml", "text/xml" ], "parameters": [ { "name": "year", "in": "query", "required": true, "type": "integer", "format": "int32", "title": "Int32" }, { "name": "businessId", "in": "path", "required": true, "type": "string" } ], "responses": { "200": { "description": "OK", "schema": { "type": "array", "items": { "$ref": "#/definitions/PublicHolidayModel" }, "xml": { "name": "PublicHolidayModel", "wrapped": true }, "title": "IEnumerable" } } } }, "post": { "tags": [ "PublicHoliday" ], "summary": "Add a public holiday", "description": "Adds a new public holiday.", "operationId": "PublicHoliday_Post", "consumes": [ "application/json", "text/json", "application/xml", "text/xml", "application/x-www-form-urlencoded" ], "produces": [ "application/json", "text/json", "application/xml", "text/xml" ], "parameters": [ { "name": "publicHoliday", "in": "body", "required": true, "schema": { "$ref": "#/definitions/PublicHolidayModel" } }, { "name": "businessId", "in": "path", "required": true, "type": "string" } ], "responses": { "200": { "description": "OK" } } }, "delete": { "tags": [ "PublicHoliday" ], "summary": "Delete Public Holiday by Date", "description": "Deletes all the public holidays on a specific date.", "operationId": "PublicHoliday_Delete", "consumes": [], "produces": [ "application/json", "text/json", "application/xml", "text/xml" ], "parameters": [ { "name": "date", "in": "query", "required": true, "type": "string", "format": "date-time", "title": "DateTime" }, { "name": "businessId", "in": "path", "required": true, "type": "string" } ], "responses": { "200": { "description": "OK" } } } }, "/api/v2/business/{businessId}/publicholiday/{id}": { "get": { "tags": [ "PublicHoliday" ], "summary": "Get Public Holiday Details", "description": "Gets the details for a public holiday with a specific ID", "operationId": "PublicHoliday_Get", "consumes": [], "produces": [ "application/json", "text/json", "application/xml", "text/xml" ], "parameters": [ { "name": "id", "in": "path", "required": true, "type": "integer", "format": "int32", "title": "Int32" }, { "name": "businessId", "in": "path", "required": true, "type": "string" } ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/PublicHolidayModel" } } } }, "put": { "tags": [ "PublicHoliday" ], "summary": "Update Public Holiday", "description": "Updates the public holiday with the specific ID.", "operationId": "PublicHoliday_Put", "consumes": [ "application/json", "text/json", "application/xml", "text/xml", "application/x-www-form-urlencoded" ], "produces": [ "application/json", "text/json", "application/xml", "text/xml" ], "parameters": [ { "name": "id", "in": "path", "required": true, "type": "integer", "format": "int32", "title": "Int32" }, { "name": "publicHoliday", "in": "body", "required": true, "schema": { "$ref": "#/definitions/PublicHolidayModel" } }, { "name": "businessId", "in": "path", "required": true, "type": "string" } ], "responses": { "200": { "description": "OK" } } }, "delete": { "tags": [ "PublicHoliday" ], "summary": "Delete Public Holiday", "description": "Deletes the public holiday with the specified ID.", "operationId": "PublicHoliday_DeleteApiV2BusinessByBusinessIdPublicholidayById", "consumes": [], "produces": [ "application/json", "text/json", "application/xml", "text/xml" ], "parameters": [ { "name": "id", "in": "path", "required": true, "type": "integer", "format": "int32", "title": "Int32" }, { "name": "businessId", "in": "path", "required": true, "type": "string" } ], "responses": { "200": { "description": "OK" } } } }, "/api/v2/business/{businessId}/qualification": { "get": { "tags": [ "Qualifications" ], "summary": "List Qualifications", "description": "Lists all of the qualifications for the business.\n\nThis operation supports OData queries.", "operationId": "Qualification_GetQualifications", "consumes": [], "produces": [ "application/json", "text/json", "application/xml", "text/xml" ], "parameters": [ { "name": "businessId", "in": "path", "required": true, "type": "string" } ], "responses": { "200": { "description": "OK", "schema": { "type": "array", "items": { "$ref": "#/definitions/QualificationModel" }, "xml": { "name": "QualificationModel", "wrapped": true }, "title": "IEnumerable" } } } }, "post": { "tags": [ "Qualifications" ], "summary": "Create Qualification", "description": "Creates a new employee qualification for the business.", "operationId": "Qualification_Post", "consumes": [ "application/json", "text/json", "application/xml", "text/xml", "application/x-www-form-urlencoded" ], "produces": [ "application/json", "text/json", "application/xml", "text/xml" ], "parameters": [ { "name": "qualification", "in": "body", "required": true, "schema": { "$ref": "#/definitions/QualificationModel" } }, { "name": "businessId", "in": "path", "required": true, "type": "string" } ], "responses": { "200": { "description": "OK" } } } }, "/api/v2/business/{businessId}/qualification/{id}": { "get": { "tags": [ "Qualifications" ], "summary": "Get Qualification by ID", "description": "Gets the qualification with the specified ID.", "operationId": "Qualification_Get", "consumes": [], "produces": [ "application/json", "text/json", "application/xml", "text/xml" ], "parameters": [ { "name": "id", "in": "path", "required": true, "type": "integer", "format": "int32", "title": "Int32" }, { "name": "businessId", "in": "path", "required": true, "type": "string" } ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/QualificationModel" } } } }, "put": { "tags": [ "Qualifications" ], "summary": "Update Qualification", "description": "Updates the qualification with the specified ID.", "operationId": "Qualification_Put", "consumes": [ "application/json", "text/json", "application/xml", "text/xml", "application/x-www-form-urlencoded" ], "produces": [ "application/json", "text/json", "application/xml", "text/xml" ], "parameters": [ { "name": "id", "in": "path", "required": true, "type": "integer", "format": "int32", "title": "Int32" }, { "name": "qualification", "in": "body", "required": true, "schema": { "$ref": "#/definitions/QualificationModel" } }, { "name": "businessId", "in": "path", "required": true, "type": "string" } ], "responses": { "200": { "description": "OK" } } }, "delete": { "tags": [ "Qualifications" ], "summary": "Delete Qualification", "description": "Deletes the qualification with the specified ID.", "operationId": "Qualification_Delete", "consumes": [], "produces": [ "application/json", "text/json", "application/xml", "text/xml" ], "parameters": [ { "name": "id", "in": "path", "required": true, "type": "integer", "format": "int32", "title": "Int32" }, { "name": "businessId", "in": "path", "required": true, "type": "string" } ], "responses": { "200": { "description": "OK" } } } }, "/api/v2/business/{businessId}/report/supercontributions/byemployee": { "get": { "tags": [ "Reporting" ], "summary": "Super Contribution Report (By Employee)", "description": "Generates a super contribution report by employee.", "operationId": "ReportsSuperContributions_ByEmployee", "consumes": [], "produces": [ "application/json", "text/json", "application/xml", "text/xml" ], "parameters": [ { "name": "businessId", "in": "path", "required": true, "type": "string" }, { "name": "request.payScheduleId", "in": "query", "required": false, "type": "integer", "format": "int32", "title": "Int32" }, { "name": "request.fromDate", "in": "query", "required": false, "type": "string", "format": "date-time", "title": "DateTime" }, { "name": "request.toDate", "in": "query", "required": false, "type": "string", "format": "date-time", "title": "DateTime" }, { "name": "request.locationId", "in": "query", "required": false, "type": "integer", "format": "int32", "title": "Int32" }, { "name": "request.employingEntityId", "in": "query", "required": false, "type": "integer", "format": "int32", "title": "Nullable" } ], "responses": { "200": { "description": "OK", "schema": { "type": "array", "items": { "$ref": "#/definitions/SuperAccrualExportModel" }, "xml": { "name": "SuperAccrualExportModel", "wrapped": true }, "title": "IEnumerable" } } } } }, "/api/v2/business/{businessId}/report/supercontributions/bysuperfund": { "get": { "tags": [ "Reporting" ], "summary": "Super Contribution Report (By Super Fund)", "description": "Generates a super contribution report by super fund.", "operationId": "ReportsSuperContributions_BySuperFund", "consumes": [], "produces": [ "application/json", "text/json", "application/xml", "text/xml" ], "parameters": [ { "name": "businessId", "in": "path", "required": true, "type": "string" }, { "name": "request.payScheduleId", "in": "query", "required": false, "type": "integer", "format": "int32", "title": "Int32" }, { "name": "request.fromDate", "in": "query", "required": false, "type": "string", "format": "date-time", "title": "DateTime" }, { "name": "request.toDate", "in": "query", "required": false, "type": "string", "format": "date-time", "title": "DateTime" }, { "name": "request.locationId", "in": "query", "required": false, "type": "integer", "format": "int32", "title": "Int32" }, { "name": "request.employingEntityId", "in": "query", "required": false, "type": "integer", "format": "int32", "title": "Nullable" } ], "responses": { "200": { "description": "OK", "schema": { "type": "array", "items": { "$ref": "#/definitions/SuperContributionsReportExportModel" }, "xml": { "name": "SuperContributionsReportExportModel", "wrapped": true }, "title": "IEnumerable" } } } } }, "/api/v2/business/{businessId}/report/leavebalances": { "get": { "tags": [ "Reporting" ], "summary": "Leave Balances Report", "description": "Generates a leave balances report.", "operationId": "ReportsLeaveBalances_Get", "consumes": [], "produces": [ "application/json", "text/json", "application/xml", "text/xml" ], "parameters": [ { "name": "businessId", "in": "path", "required": true, "type": "string" }, { "name": "request.locationId", "in": "query", "required": false, "type": "integer", "format": "int32", "title": "Int32" }, { "name": "request.leaveTypeId", "in": "query", "required": false, "type": "integer", "format": "int32", "title": "Int32" }, { "name": "request.groupBy", "in": "query", "required": false, "type": "string", "enum": [ "AccrualLocation", "DefaultLocation" ], "title": "LeaveReportDisplayEnum" }, { "name": "request.employingEntityId", "in": "query", "required": false, "type": "integer", "format": "int32", "title": "Nullable" }, { "name": "request.asAtDate", "in": "query", "required": false, "type": "string", "format": "date-time", "title": "Nullable" } ], "responses": { "200": { "description": "OK", "schema": { "type": "array", "items": { "$ref": "#/definitions/LeaveBalancesReportExportModel" }, "xml": { "name": "LeaveBalancesReportExportModel", "wrapped": true }, "title": "IEnumerable" } } } } }, "/api/v2/business/{businessId}/report/deductions": { "get": { "tags": [ "Reporting" ], "summary": "Deductions Report", "description": "Generates a deductions report.", "operationId": "ReportsDeductions_Get", "consumes": [], "produces": [ "application/json", "text/json", "application/xml", "text/xml" ], "parameters": [ { "name": "businessId", "in": "path", "required": true, "type": "string" }, { "name": "request.employeeId", "in": "query", "required": false, "type": "integer", "format": "int32", "title": "Int32" }, { "name": "request.deductionCategoryId", "in": "query", "required": false, "type": "integer", "format": "int32", "title": "Int32" }, { "name": "request.disableRollupReporting", "in": "query", "required": false, "type": "boolean", "title": "Boolean" }, { "name": "request.payScheduleId", "in": "query", "required": false, "type": "integer", "format": "int32", "title": "Int32" }, { "name": "request.fromDate", "in": "query", "required": false, "type": "string", "format": "date-time", "title": "DateTime" }, { "name": "request.toDate", "in": "query", "required": false, "type": "string", "format": "date-time", "title": "DateTime" }, { "name": "request.locationId", "in": "query", "required": false, "type": "integer", "format": "int32", "title": "Int32" }, { "name": "request.employingEntityId", "in": "query", "required": false, "type": "integer", "format": "int32", "title": "Nullable" } ], "responses": { "200": { "description": "OK", "schema": { "type": "array", "items": { "$ref": "#/definitions/DeductionsReportExportModel" }, "xml": { "name": "DeductionsReportExportModel", "wrapped": true }, "title": "IList" } } } } }, "/api/v2/business/{businessId}/report/payrunactivity": { "get": { "tags": [ "Reporting" ], "summary": "Pay Run Activity Report", "description": "Generates a pay run activity report.", "operationId": "ReportsPayRunActivity_Get", "consumes": [], "produces": [ "application/json", "text/json", "application/xml", "text/xml" ], "parameters": [ { "name": "fromDate", "in": "query", "required": true, "type": "string", "format": "date-time", "title": "DateTime" }, { "name": "toDate", "in": "query", "required": true, "type": "string", "format": "date-time", "title": "DateTime" }, { "name": "payScheduleId", "in": "query", "required": false, "type": "integer", "format": "int32", "default": 0, "title": "Int32" }, { "name": "locationId", "in": "query", "required": false, "type": "integer", "format": "int32", "default": 0, "title": "Int32" }, { "name": "businessId", "in": "path", "required": true, "type": "string" } ], "responses": { "200": { "description": "OK", "schema": { "type": "array", "items": { "$ref": "#/definitions/ActivityReportExportModel" }, "xml": { "name": "ActivityReportExportModel", "wrapped": true }, "title": "IEnumerable" } } } } }, "/api/v2/business/{businessId}/report/employeedetails": { "get": { "tags": [ "Reporting" ], "summary": "Employee Details Report", "description": "Generates an employee details report.", "operationId": "ReportsEmployeeDetails_Get", "consumes": [], "produces": [ "application/json", "text/json" ], "parameters": [ { "name": "selectedColumns", "in": "query", "required": false, "type": "array", "items": { "type": "string", "title": "String" }, "collectionFormat": "multi", "title": "List" }, { "name": "locationId", "in": "query", "required": false, "type": "integer", "format": "int32", "default": 0, "title": "Int32" }, { "name": "employingEntityId", "in": "query", "required": false, "type": "integer", "format": "int32", "title": "Nullable" }, { "name": "includeActive", "in": "query", "required": false, "type": "boolean", "default": true, "title": "Boolean" }, { "name": "includeInactive", "in": "query", "required": false, "type": "boolean", "default": true, "title": "Boolean" }, { "name": "businessId", "in": "path", "required": true, "type": "string" } ], "responses": { "200": { "description": "OK", "schema": { "type": "array", "items": { "type": "object", "title": "JObject" }, "xml": { "name": "JObject", "wrapped": true }, "title": "IEnumerable" } } } } }, "/api/v2/business/{businessId}/report/leavehistory": { "get": { "tags": [ "Reporting" ], "summary": "Leave History Report", "description": "Generates a leave history report.", "operationId": "ReportsLeaveHistoryReport_Get", "consumes": [], "produces": [ "application/json", "text/json", "application/xml", "text/xml" ], "parameters": [ { "name": "businessId", "in": "path", "required": true, "type": "string" }, { "name": "model.fromDate", "in": "query", "required": false, "type": "string", "format": "date-time", "title": "DateTime" }, { "name": "model.toDate", "in": "query", "required": false, "type": "string", "format": "date-time", "title": "DateTime" }, { "name": "model.payScheduleId", "in": "query", "required": false, "type": "integer", "format": "int32", "title": "Int32" }, { "name": "model.locationId", "in": "query", "required": false, "type": "integer", "format": "int32", "title": "Int32" }, { "name": "model.employeeId", "in": "query", "required": false, "type": "array", "items": { "type": "string", "title": "String" }, "collectionFormat": "multi", "title": "IList" }, { "name": "model.leaveCategoryId", "in": "query", "required": false, "type": "integer", "format": "int32", "title": "Int32" } ], "responses": { "200": { "description": "OK", "schema": { "type": "array", "items": { "$ref": "#/definitions/LeaveHistoryReportGroupModel" }, "xml": { "name": "LeaveHistoryReportGroupModel", "wrapped": true }, "title": "IEnumerable" } } } } }, "/api/v2/business/{businessId}/report/employeedetails/fields": { "get": { "tags": [ "Reporting" ], "summary": "Get Employee Details Report Fields", "description": "Gets the fields for the Employee Details Report.", "operationId": "ReportsEmployeeDetailsFields_Get", "consumes": [], "produces": [ "application/json", "text/json", "application/xml", "text/xml" ], "parameters": [ { "name": "businessId", "in": "path", "required": true, "type": "string" } ], "responses": { "200": { "description": "OK", "schema": { "type": "array", "items": { "$ref": "#/definitions/EmployeeDetailsReportField" }, "xml": { "name": "EmployeeDetailsReportField", "wrapped": true }, "title": "List" } } } } }, "/api/v2/business/{businessId}/report/paycategories": { "get": { "tags": [ "Reporting" ], "summary": "Pay Categories Report", "description": "Generates a pay categories report.", "operationId": "ReportsPayCategories_Get", "consumes": [], "produces": [ "application/json", "text/json", "application/xml", "text/xml" ], "parameters": [ { "name": "businessId", "in": "path", "required": true, "type": "string" }, { "name": "request.payScheduleId", "in": "query", "required": false, "type": "integer", "format": "int32", "title": "Int32" }, { "name": "request.employeeId", "in": "query", "required": false, "type": "integer", "format": "int32", "title": "Int32" }, { "name": "request.groupByEarningsLocation", "in": "query", "required": false, "type": "boolean", "title": "Boolean" }, { "name": "request.fromDate", "in": "query", "required": false, "type": "string", "format": "date-time", "title": "DateTime" }, { "name": "request.toDate", "in": "query", "required": false, "type": "string", "format": "date-time", "title": "DateTime" }, { "name": "request.locationId", "in": "query", "required": false, "type": "integer", "format": "int32", "title": "Int32" }, { "name": "request.employingEntityId", "in": "query", "required": false, "type": "integer", "format": "int32", "title": "Nullable" } ], "responses": { "200": { "description": "OK", "schema": { "type": "array", "items": { "$ref": "#/definitions/PayCategoriesReportExportModel" }, "xml": { "name": "PayCategoriesReportExportModel", "wrapped": true }, "title": "IEnumerable" } } } } }, "/api/v2/business/{businessId}/report/payg": { "get": { "tags": [ "Reporting" ], "summary": "PAYG Report", "description": "Generates a PAYG report.", "operationId": "ReportsPayg_Get", "consumes": [], "produces": [ "application/json", "text/json", "application/xml", "text/xml" ], "parameters": [ { "name": "businessId", "in": "path", "required": true, "type": "string" }, { "name": "request.state", "in": "query", "required": false, "type": "string", "title": "String" }, { "name": "request.fromDate", "in": "query", "required": false, "type": "string", "format": "date-time", "title": "DateTime" }, { "name": "request.toDate", "in": "query", "required": false, "type": "string", "format": "date-time", "title": "DateTime" }, { "name": "request.locationId", "in": "query", "required": false, "type": "integer", "format": "int32", "title": "Int32" }, { "name": "request.employingEntityId", "in": "query", "required": false, "type": "integer", "format": "int32", "title": "Nullable" } ], "responses": { "200": { "description": "OK", "schema": { "type": "array", "items": { "$ref": "#/definitions/PaygReportExportModel" }, "xml": { "name": "PaygReportExportModel", "wrapped": true }, "title": "IList" } } } } }, "/api/v2/business/{businessId}/report/detailedactivity": { "get": { "tags": [ "Reporting" ], "summary": "Detailed Activity Report", "description": "Generates a detailed activity report.", "operationId": "ReportsDetailedActivity_Get", "consumes": [], "produces": [ "application/json", "text/json", "application/xml", "text/xml" ], "parameters": [ { "name": "businessId", "in": "path", "required": true, "type": "string" }, { "name": "request.payScheduleId", "in": "query", "required": false, "type": "integer", "format": "int32", "title": "Int32" }, { "name": "request.fromDate", "in": "query", "required": false, "type": "string", "format": "date-time", "title": "DateTime" }, { "name": "request.toDate", "in": "query", "required": false, "type": "string", "format": "date-time", "title": "DateTime" }, { "name": "request.locationId", "in": "query", "required": false, "type": "integer", "format": "int32", "title": "Int32" }, { "name": "request.employingEntityId", "in": "query", "required": false, "type": "integer", "format": "int32", "title": "Nullable" } ], "responses": { "200": { "description": "OK", "schema": { "type": "array", "items": { "$ref": "#/definitions/DetailedActivityReportExportModel" }, "xml": { "name": "DetailedActivityReportExportModel", "wrapped": true }, "title": "IEnumerable" } } } } }, "/api/v2/business/{businessId}/report/payrolltax": { "get": { "tags": [ "Reporting" ], "summary": "Payroll Tax Report", "description": "Generates a payroll tax report.", "operationId": "ReportsPayrollTax_Get", "consumes": [], "produces": [ "application/json", "text/json", "application/xml", "text/xml" ], "parameters": [ { "name": "businessId", "in": "path", "required": true, "type": "string" }, { "name": "request.groupBy", "in": "query", "required": false, "type": "string", "enum": [ "EarningsLocation", "DefaultLocation" ], "title": "PayrollTaxGroupByEnum" }, { "name": "request.fromDate", "in": "query", "required": false, "type": "string", "format": "date-time", "title": "DateTime" }, { "name": "request.toDate", "in": "query", "required": false, "type": "string", "format": "date-time", "title": "DateTime" }, { "name": "request.locationId", "in": "query", "required": false, "type": "integer", "format": "int32", "title": "Int32" }, { "name": "request.employingEntityId", "in": "query", "required": false, "type": "integer", "format": "int32", "title": "Nullable" } ], "responses": { "200": { "description": "OK", "schema": { "type": "array", "items": { "$ref": "#/definitions/PayrollTaxReportExportModel" }, "xml": { "name": "PayrollTaxReportExportModel", "wrapped": true }, "title": "IList" } } } } }, "/api/v2/business/{businessId}/report/timesheet": { "get": { "tags": [ "Reporting" ], "summary": "Timesheet report", "description": "Generates a timesheet report.", "operationId": "ReportsTimesheet_Get", "consumes": [], "produces": [ "application/json", "text/json", "application/xml", "text/xml" ], "parameters": [ { "name": "businessId", "in": "path", "required": true, "type": "string" }, { "name": "request.employeeId", "in": "query", "required": false, "type": "integer", "format": "int32", "title": "Nullable" }, { "name": "request.includeCosts", "in": "query", "required": false, "type": "boolean", "title": "Boolean" }, { "name": "request.statuses", "in": "query", "required": false, "type": "array", "items": { "type": "string", "enum": [ "Missing", "Submitted", "Approved", "Rejected", "Processed" ], "title": "TimesheetLineStatusType" }, "collectionFormat": "multi", "title": "IList" }, { "name": "request.workTypeId", "in": "query", "required": false, "type": "integer", "format": "int32", "title": "Nullable" }, { "name": "request.payScheduleId", "in": "query", "required": false, "type": "integer", "format": "int32", "title": "Int32" }, { "name": "request.fromDate", "in": "query", "required": false, "type": "string", "format": "date-time", "title": "DateTime" }, { "name": "request.toDate", "in": "query", "required": false, "type": "string", "format": "date-time", "title": "DateTime" }, { "name": "request.locationId", "in": "query", "required": false, "type": "integer", "format": "int32", "title": "Int32" }, { "name": "request.employingEntityId", "in": "query", "required": false, "type": "integer", "format": "int32", "title": "Nullable" } ], "responses": { "200": { "description": "OK", "schema": { "type": "array", "items": { "$ref": "#/definitions/TimesheetReportExportModel" }, "xml": { "name": "TimesheetReportExportModel", "wrapped": true }, "title": "IList" } } } } }, "/api/v2/business/{businessId}/report/paymenthistory": { "get": { "tags": [ "Reporting" ], "summary": "Employee Payment History Report", "description": "Generates an employee payment history report.", "operationId": "ReportsEmployeePaymentHistory_Get", "consumes": [], "produces": [ "application/json", "text/json", "application/xml", "text/xml" ], "parameters": [ { "name": "businessId", "in": "path", "required": true, "type": "string" }, { "name": "request.employeeId", "in": "query", "required": false, "type": "integer", "format": "int32", "title": "Nullable" }, { "name": "request.fromDate", "in": "query", "required": false, "type": "string", "format": "date-time", "title": "DateTime" }, { "name": "request.toDate", "in": "query", "required": false, "type": "string", "format": "date-time", "title": "DateTime" }, { "name": "request.locationId", "in": "query", "required": false, "type": "integer", "format": "int32", "title": "Int32" }, { "name": "request.employingEntityId", "in": "query", "required": false, "type": "integer", "format": "int32", "title": "Nullable" } ], "responses": { "200": { "description": "OK", "schema": { "type": "array", "items": { "$ref": "#/definitions/PaymentHistoryReportExportModel" }, "xml": { "name": "PaymentHistoryReportExportModel", "wrapped": true }, "title": "IEnumerable" } } } } }, "/api/v2/business/{businessId}/report/birthday": { "get": { "tags": [ "Reporting" ], "summary": "Birthday Report", "description": "Generates a birthday report.", "operationId": "ReportsBirthday_Get", "consumes": [], "produces": [ "application/json", "text/json", "application/xml", "text/xml" ], "parameters": [ { "name": "fromDate", "in": "query", "required": true, "type": "string", "format": "date-time", "title": "DateTime" }, { "name": "toDate", "in": "query", "required": true, "type": "string", "format": "date-time", "title": "DateTime" }, { "name": "locationId", "in": "query", "required": false, "type": "integer", "format": "int32", "default": 0, "title": "Int32" }, { "name": "businessId", "in": "path", "required": true, "type": "string" } ], "responses": { "200": { "description": "OK", "schema": { "type": "array", "items": { "$ref": "#/definitions/BirthdayReportExportModel" }, "xml": { "name": "BirthdayReportExportModel", "wrapped": true }, "title": "IEnumerable" } } } } }, "/api/v2/business/{businessId}/report/grosstonet": { "get": { "tags": [ "Reporting" ], "summary": "Gross To Net Report", "description": "Generates a Gross To Net Report.", "operationId": "ReportsGrossToNet_Get", "consumes": [], "produces": [ "application/json", "text/json", "application/xml", "text/xml" ], "parameters": [ { "name": "businessId", "in": "path", "required": true, "type": "string" }, { "name": "request.employeeId", "in": "query", "required": false, "type": "integer", "format": "int32", "title": "Int32" }, { "name": "request.payCategoryIds", "in": "query", "required": false, "type": "array", "items": { "type": "integer", "format": "int32", "title": "Int32" }, "collectionFormat": "multi", "title": "List" }, { "name": "request.payScheduleId", "in": "query", "required": false, "type": "integer", "format": "int32", "title": "Int32" }, { "name": "request.fromDate", "in": "query", "required": false, "type": "string", "format": "date-time", "title": "DateTime" }, { "name": "request.toDate", "in": "query", "required": false, "type": "string", "format": "date-time", "title": "DateTime" }, { "name": "request.locationId", "in": "query", "required": false, "type": "integer", "format": "int32", "title": "Int32" }, { "name": "request.employingEntityId", "in": "query", "required": false, "type": "integer", "format": "int32", "title": "Nullable" } ], "responses": { "200": { "description": "OK", "schema": { "type": "array", "items": { "$ref": "#/definitions/GrossToNetReportLineItem" }, "xml": { "name": "GrossToNetReportLineItem", "wrapped": true }, "title": "IEnumerable" } } } } }, "/api/v2/business/{businessId}/report/leaveliability": { "get": { "tags": [ "Reporting" ], "summary": "Leave Liability Report", "description": "Generates a leave liability report.", "operationId": "ReportsLeaveLiability_Get", "consumes": [], "produces": [ "application/json", "text/json", "application/xml", "text/xml" ], "parameters": [ { "name": "businessId", "in": "path", "required": true, "type": "string" }, { "name": "model.locationId", "in": "query", "required": false, "type": "integer", "format": "int32", "title": "Int32" }, { "name": "model.leaveTypeId", "in": "query", "required": false, "type": "integer", "format": "int32", "title": "Int32" }, { "name": "model.includeApprovedLeave", "in": "query", "required": false, "type": "boolean", "title": "Boolean" }, { "name": "model.asAtDate", "in": "query", "required": false, "type": "string", "format": "date-time", "title": "Nullable" }, { "name": "model.employingEntityId", "in": "query", "required": false, "type": "integer", "format": "int32", "title": "Nullable" } ], "responses": { "200": { "description": "OK", "schema": { "type": "array", "items": { "$ref": "#/definitions/LeaveLiabilityReportExportModel" }, "xml": { "name": "LeaveLiabilityReportExportModel", "wrapped": true }, "title": "IEnumerable" } } } } }, "/api/v2/business/{businessId}/rostershift": { "get": { "tags": [ "RosterShift" ], "summary": "Get Roster Shifts", "description": "Gets roster shifts, optionally filtered by a number of parameters.", "operationId": "RosterShift_Get", "consumes": [], "produces": [ "application/json", "text/json", "application/xml", "text/xml" ], "parameters": [ { "name": "businessId", "in": "path", "required": true, "type": "string" }, { "name": "filter.fromDate", "in": "query", "required": false, "type": "string", "format": "date-time", "title": "DateTime" }, { "name": "filter.toDate", "in": "query", "required": false, "type": "string", "format": "date-time", "title": "DateTime" }, { "name": "filter.resourceView", "in": "query", "required": false, "type": "string", "enum": [ "Employee", "Location" ], "title": "ResourceViewEnum" }, { "name": "filter.shiftStatus", "in": "query", "required": false, "type": "string", "enum": [ "All", "Published", "Unpublished", "Accepted" ], "title": "RosterShiftStatus" }, { "name": "filter.shiftStatuses", "in": "query", "required": false, "type": "array", "items": { "type": "string", "enum": [ "All", "Published", "Unpublished", "Accepted" ], "title": "RosterShiftStatus" }, "collectionFormat": "multi", "title": "IList" }, { "name": "filter.selectedLocations", "in": "query", "required": false, "type": "array", "items": { "type": "string", "title": "String" }, "collectionFormat": "multi", "title": "IList" }, { "name": "filter.selectedEmployees", "in": "query", "required": false, "type": "array", "items": { "type": "string", "title": "String" }, "collectionFormat": "multi", "title": "IList" }, { "name": "filter.selectedRoles", "in": "query", "required": false, "type": "array", "items": { "type": "string", "title": "String" }, "collectionFormat": "multi", "title": "IList" }, { "name": "filter.includeSublocations", "in": "query", "required": false, "type": "boolean", "title": "Boolean" }, { "name": "filter.currentView", "in": "query", "required": false, "type": "string", "enum": [ "resourceDay", "resourceWeek", "resourceNextWeeks" ], "title": "RosterViewMode" }, { "name": "filter.budgetWarningPercent", "in": "query", "required": false, "type": "number", "format": "double", "title": "Decimal" }, { "name": "filter.employeeId", "in": "query", "required": false, "type": "integer", "format": "int32", "title": "Nullable" }, { "name": "filter.locationId", "in": "query", "required": false, "type": "integer", "format": "int32", "title": "Nullable" }, { "name": "filter.employeeGroupId", "in": "query", "required": false, "type": "integer", "format": "int32", "title": "Nullable" }, { "name": "filter.unassignedShiftsOnly", "in": "query", "required": false, "type": "boolean", "title": "Boolean" }, { "name": "filter.showCosts", "in": "query", "required": false, "type": "boolean", "title": "Boolean" }, { "name": "filter.groupBy", "in": "query", "required": false, "type": "string", "enum": [ "Business", "Location" ], "title": "RosterGroupByEnum" }, { "name": "filter.groupByThen", "in": "query", "required": false, "type": "string", "enum": [ "Employee", "Role", "StartingTime" ], "title": "RosterGroupByThenEnum" }, { "name": "filter.excludeUnassignedEmployees", "in": "query", "required": false, "type": "boolean", "title": "Boolean" }, { "name": "filter.selectAllRoles", "in": "query", "required": false, "type": "boolean", "title": "Boolean" } ], "responses": { "200": { "description": "OK", "schema": { "type": "array", "items": { "$ref": "#/definitions/RosterShiftGenerateTimesheetModel" }, "xml": { "name": "RosterShiftGenerateTimesheetModel", "wrapped": true }, "title": "List" } } } } }, "/api/v2/business/{businessId}/rostershift/{rosterShiftId}/stub": { "post": { "tags": [ "RosterShift" ], "summary": "Stub Shift Timesheets", "description": "Generates timesheets for the roster shift with the specified ID.", "operationId": "RosterShift_StubShiftTimesheets", "consumes": [ "application/json", "text/json", "application/xml", "text/xml", "application/x-www-form-urlencoded" ], "produces": [], "parameters": [ { "name": "rosterShiftId", "in": "path", "required": true, "type": "integer", "format": "int32", "title": "Int32" }, { "name": "model", "in": "body", "required": true, "schema": { "$ref": "#/definitions/StubRosterShiftViewModel" } }, { "name": "businessId", "in": "path", "required": true, "type": "string" } ], "responses": { "204": { "description": "No Content" } } } }, "/api/v2/business/{businessId}/rostershift/{employeeId}/nearby": { "get": { "tags": [ "RosterShift" ], "summary": "Find Nearby Roster Shifts", "description": "Finds any of the employee's roster shifts that are nearby to the specified local time.", "operationId": "RosterShift_NearbyRosterShifts", "consumes": [], "produces": [ "application/json", "text/json", "application/xml", "text/xml" ], "parameters": [ { "name": "employeeId", "in": "path", "required": true, "type": "integer", "format": "int32", "title": "Int32" }, { "name": "localTime", "in": "query", "required": true, "type": "string", "format": "date-time", "title": "DateTime" }, { "name": "businessId", "in": "path", "required": true, "type": "string" } ], "responses": { "200": { "description": "OK", "schema": { "type": "array", "items": { "$ref": "#/definitions/EssRosterShiftModel" }, "xml": { "name": "EssRosterShiftModel", "wrapped": true }, "title": "IList" } } } } }, "/api/v2/business/{businessId}/rostershift/{employeeId}/matchingclockon": { "get": { "tags": [ "RosterShift" ], "summary": "Find Matching Clock On Roster Shift", "description": "If a roster shift exists that could match for this employee to clock on at this time \r\ngiven kiosk settings for shift matching, returns that shift.\r\nOtherwise, the Shift result will be null.\r\nNote that if the time matches a shift exactly, the Shift result will also be null.", "operationId": "RosterShift_MatchingClockOnRosterShift", "consumes": [], "produces": [ "application/json", "text/json", "application/xml", "text/xml" ], "parameters": [ { "name": "employeeId", "in": "path", "required": true, "type": "integer", "format": "int32", "title": "Int32" }, { "name": "kioskId", "in": "query", "required": true, "type": "integer", "format": "int32", "title": "Int32" }, { "name": "dateUtc", "in": "query", "required": true, "type": "string", "format": "date-time", "title": "DateTime" }, { "name": "businessId", "in": "path", "required": true, "type": "string" } ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/RosterShiftMatchingResultModel" } } } } }, "/api/v2/business/{businessId}/rostershift/{employeeId}/matchingclockoff": { "get": { "tags": [ "RosterShift" ], "summary": "Find Matching Clock Off Roster Shift", "description": "If a roster shift exists that could match for this employee to clock off at this time \r\ngiven kiosk settings for shift matching, returns that shift.\r\nOtherwise, the Shift result will be null.\r\nNote that if the time matches a shift exactly, the Shift result will also be null.", "operationId": "RosterShift_MatchingClockOffRosterShift", "consumes": [], "produces": [ "application/json", "text/json", "application/xml", "text/xml" ], "parameters": [ { "name": "employeeId", "in": "path", "required": true, "type": "integer", "format": "int32", "title": "Int32" }, { "name": "kioskId", "in": "query", "required": true, "type": "integer", "format": "int32", "title": "Int32" }, { "name": "dateUtc", "in": "query", "required": true, "type": "string", "format": "date-time", "title": "DateTime" }, { "name": "businessId", "in": "path", "required": true, "type": "string" } ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/RosterShiftMatchingResultModel" } } } } }, "/api/v2/business/{businessId}/selfmanagedsuperfund": { "get": { "tags": [ "SuperFund" ], "summary": "List Self Managed Super Funds", "description": "Lists all the self managed super funds for the business.\n\nThis operation supports OData queries.", "operationId": "SelfManagedSuperFund_GetFunds", "consumes": [], "produces": [ "application/json", "text/json", "application/xml", "text/xml" ], "parameters": [ { "name": "businessId", "in": "path", "required": true, "type": "string" } ], "responses": { "200": { "description": "OK", "schema": { "type": "array", "items": { "$ref": "#/definitions/SelfManagedSuperFundModel" }, "xml": { "name": "SelfManagedSuperFundModel", "wrapped": true }, "title": "IEnumerable" } } } }, "post": { "tags": [ "SuperFund" ], "summary": "Create Self Managed Super Fund", "description": "Creates a new self managed super fund for the business.", "operationId": "SelfManagedSuperFund_Post", "consumes": [ "application/json", "text/json", "application/xml", "text/xml", "application/x-www-form-urlencoded" ], "produces": [ "application/json", "text/json", "application/xml", "text/xml" ], "parameters": [ { "name": "fund", "in": "body", "required": true, "schema": { "$ref": "#/definitions/SelfManagedSuperFundModel" } }, { "name": "businessId", "in": "path", "required": true, "type": "string" } ], "responses": { "200": { "description": "OK" } } } }, "/api/v2/business/{businessId}/selfmanagedsuperfund/{id}": { "get": { "tags": [ "SuperFund" ], "summary": "Get Self Managed Super Fund by ID", "description": "Gets the self managed super fund with the specified ID.", "operationId": "SelfManagedSuperFund_Get", "consumes": [], "produces": [ "application/json", "text/json", "application/xml", "text/xml" ], "parameters": [ { "name": "id", "in": "path", "required": true, "type": "integer", "format": "int32", "title": "Int32" }, { "name": "businessId", "in": "path", "required": true, "type": "string" } ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/SelfManagedSuperFundModel" } } } }, "put": { "tags": [ "SuperFund" ], "summary": "Update Self Managed Super Fund", "description": "Updates .", "operationId": "SelfManagedSuperFund_Put", "consumes": [ "application/json", "text/json", "application/xml", "text/xml", "application/x-www-form-urlencoded" ], "produces": [ "application/json", "text/json", "application/xml", "text/xml" ], "parameters": [ { "name": "id", "in": "path", "required": true, "type": "integer", "format": "int32", "title": "Int32" }, { "name": "fund", "in": "body", "required": true, "schema": { "$ref": "#/definitions/SelfManagedSuperFundModel" } }, { "name": "businessId", "in": "path", "required": true, "type": "string" } ], "responses": { "200": { "description": "OK" } } } }, "/api/v2/business/{businessId}/superfund/productsearch": { "get": { "tags": [ "SuperFund" ], "summary": "Search Super Funds", "description": "Search for super funds based on a string.", "operationId": "SuperFund_ProductSearch", "consumes": [], "produces": [ "application/json", "text/json", "application/xml", "text/xml" ], "parameters": [ { "name": "term", "in": "query", "required": true, "type": "string", "title": "String" }, { "name": "businessId", "in": "path", "required": true, "type": "string" } ], "responses": { "200": { "description": "OK", "schema": { "type": "array", "items": { "$ref": "#/definitions/SuperProductEditModel" }, "xml": { "name": "SuperProductEditModel", "wrapped": true }, "title": "List" } } } } }, "/api/v2/business/{businessId}/kiosk/hasaccess/{employeeId}": { "get": { "tags": [ "TimeAndAttendance" ], "summary": "Employee Has Access", "description": "Check if an employee has access to a kiosk.", "operationId": "TimeAndAttendance_GetHasAccess", "consumes": [], "produces": [ "application/json", "text/json", "application/xml", "text/xml" ], "parameters": [ { "name": "businessId", "in": "path", "required": true, "type": "string" }, { "name": "employeeId", "in": "path", "required": true, "type": "string" } ], "responses": { "200": { "description": "OK" } } } }, "/api/v2/business/{businessId}/kiosk/{kioskId}/staff": { "get": { "tags": [ "TimeAndAttendance" ], "summary": "List Kiosk Staff", "description": "Lists all the staff associated with a kiosk.", "operationId": "TimeAndAttendance_GetStaff", "consumes": [], "produces": [ "application/json", "text/json", "application/xml", "text/xml" ], "parameters": [ { "name": "kioskId", "in": "path", "required": true, "type": "integer", "format": "int32", "title": "Int32" }, { "name": "businessId", "in": "path", "required": true, "type": "string" } ], "responses": { "200": { "description": "OK", "schema": { "type": "array", "items": { "$ref": "#/definitions/BasicKioskEmployeeModel" }, "xml": { "name": "BasicKioskEmployeeModel", "wrapped": true }, "title": "List" } } } }, "post": { "tags": [ "TimeAndAttendance" ], "summary": "Add an Employee", "description": "Quickly add an employee with minimal details and kiosk enabled. If the employee already exists, the kiosk will be enabled for that employee.", "operationId": "TimeAndAttendance_PostStaff", "consumes": [ "application/json", "text/json", "application/xml", "text/xml", "application/x-www-form-urlencoded" ], "produces": [ "application/json", "text/json", "application/xml", "text/xml" ], "parameters": [ { "name": "kioskId", "in": "path", "required": true, "type": "integer", "format": "int32", "title": "Int32" }, { "name": "model", "in": "body", "required": true, "schema": { "$ref": "#/definitions/KioskCreateEmployeeModel" } }, { "name": "businessId", "in": "path", "required": true, "type": "string" } ], "responses": { "200": { "description": "OK" } } } }, "/api/v2/business/{businessId}/kiosk/{kioskId}/checkid": { "post": { "tags": [ "TimeAndAttendance" ], "summary": "Check Employee", "description": "If the specified employee has kiosk access, returns details about the employee and their current shift.", "operationId": "TimeAndAttendance_CheckId", "consumes": [ "application/json", "text/json", "application/xml", "text/xml", "application/x-www-form-urlencoded" ], "produces": [ "application/json", "text/json", "application/xml", "text/xml" ], "parameters": [ { "name": "model", "in": "body", "required": true, "schema": { "$ref": "#/definitions/CheckKioskEmployeeIdModel" } }, { "name": "businessId", "in": "path", "required": true, "type": "string" }, { "name": "kioskId", "in": "path", "required": true, "type": "string" } ], "responses": { "200": { "description": "OK" } } } }, "/api/v2/business/{businessId}/kiosk/{kioskId}/checkpin": { "post": { "tags": [ "TimeAndAttendance" ], "summary": "Verify Kiosk PIN", "description": "Verifies the employee's kiosk PIN. Returns error code 400 if the PIN is incorrect.", "operationId": "TimeAndAttendance_CheckPin", "consumes": [ "application/json", "text/json", "application/xml", "text/xml", "application/x-www-form-urlencoded" ], "produces": [ "application/json", "text/json", "application/xml", "text/xml" ], "parameters": [ { "name": "model", "in": "body", "required": true, "schema": { "$ref": "#/definitions/CheckKioskPinModel" } }, { "name": "businessId", "in": "path", "required": true, "type": "string" }, { "name": "kioskId", "in": "path", "required": true, "type": "string" } ], "responses": { "200": { "description": "OK" } } } }, "/api/v2/business/{businessId}/kiosk/{kioskId}/clockon": { "post": { "tags": [ "TimeAndAttendance" ], "summary": "Clock In Employee", "description": "Clocks in an employee for a new shift.", "operationId": "TimeAndAttendance_ClockOn", "consumes": [ "application/json", "text/json", "application/xml", "text/xml", "application/x-www-form-urlencoded" ], "produces": [ "application/json", "text/json", "application/xml", "text/xml" ], "parameters": [ { "name": "kioskId", "in": "path", "required": true, "type": "integer", "format": "int32", "title": "Int32" }, { "name": "request", "in": "body", "required": true, "schema": { "$ref": "#/definitions/ClockOnModel" } }, { "name": "businessId", "in": "path", "required": true, "type": "string" } ], "responses": { "200": { "description": "OK" } } } }, "/api/v2/business/{businessId}/kiosk/{kioskId}/clockoff": { "post": { "tags": [ "TimeAndAttendance" ], "summary": "Clock Out Employee", "description": "Clocks out an employee from their existing shift. \r\nIf they are on a break, it will be ended automatically.", "operationId": "TimeAndAttendance_ClockOff", "consumes": [ "application/json", "text/json", "application/xml", "text/xml", "application/x-www-form-urlencoded" ], "produces": [ "application/json", "text/json", "application/xml", "text/xml" ], "parameters": [ { "name": "kioskId", "in": "path", "required": true, "type": "integer", "format": "int32", "title": "Int32" }, { "name": "request", "in": "body", "required": true, "schema": { "$ref": "#/definitions/ClockOffModel" } }, { "name": "businessId", "in": "path", "required": true, "type": "string" } ], "responses": { "200": { "description": "OK" } } } }, "/api/v2/business/{businessId}/kiosk/{kioskId}/startbreak": { "post": { "tags": [ "TimeAndAttendance" ], "summary": "Start Break", "description": "Starts a break for an employee who is clocked on for a shift.", "operationId": "TimeAndAttendance_StartBreak", "consumes": [ "application/json", "text/json", "application/xml", "text/xml", "application/x-www-form-urlencoded" ], "produces": [ "application/json", "text/json", "application/xml", "text/xml" ], "parameters": [ { "name": "kioskId", "in": "path", "required": true, "type": "integer", "format": "int32", "title": "Int32" }, { "name": "request", "in": "body", "required": true, "schema": { "$ref": "#/definitions/StartBreakModel" } }, { "name": "businessId", "in": "path", "required": true, "type": "string" } ], "responses": { "200": { "description": "OK" } } } }, "/api/v2/business/{businessId}/kiosk/{kioskId}/endbreak": { "post": { "tags": [ "TimeAndAttendance" ], "summary": "End Break", "description": "Ends the employee's current break.", "operationId": "TimeAndAttendance_EndBreak", "consumes": [ "application/json", "text/json", "application/xml", "text/xml", "application/x-www-form-urlencoded" ], "produces": [ "application/json", "text/json", "application/xml", "text/xml" ], "parameters": [ { "name": "kioskId", "in": "path", "required": true, "type": "integer", "format": "int32", "title": "Int32" }, { "name": "request", "in": "body", "required": true, "schema": { "$ref": "#/definitions/EndBreakModel" } }, { "name": "businessId", "in": "path", "required": true, "type": "string" } ], "responses": { "200": { "description": "OK" } } } }, "/api/v2/business/{businessId}/kiosk/shifts": { "post": { "tags": [ "TimeAndAttendance" ], "summary": "Shifts", "description": "Gets shifts based on certain optional criteria.", "operationId": "TimeAndAttendance_Shifts", "consumes": [ "application/json", "text/json", "application/xml", "text/xml", "application/x-www-form-urlencoded" ], "produces": [ "application/json", "text/json", "application/xml", "text/xml" ], "parameters": [ { "name": "model", "in": "body", "required": true, "schema": { "$ref": "#/definitions/GetShiftsModel" } }, { "name": "businessId", "in": "path", "required": true, "type": "string" } ], "responses": { "200": { "description": "OK", "schema": { "type": "array", "items": { "$ref": "#/definitions/TimeAndAttendanceShiftModel" }, "xml": { "name": "TimeAndAttendanceShiftModel", "wrapped": true }, "title": "IList" } } } } }, "/api/v2/business/{businessId}/kiosk/{kioskId}/changepin": { "post": { "tags": [ "TimeAndAttendance" ], "summary": "Change PIN", "description": "Changes the kiosk PIN for an employee, given their old PIN.", "operationId": "TimeAndAttendance_ChangePin", "consumes": [ "application/json", "text/json", "application/xml", "text/xml", "application/x-www-form-urlencoded" ], "produces": [ "application/json", "text/json", "application/xml", "text/xml" ], "parameters": [ { "name": "kioskId", "in": "path", "required": true, "type": "integer", "format": "int32", "title": "Int32" }, { "name": "model", "in": "body", "required": true, "schema": { "$ref": "#/definitions/ChangeKioskPinModel" } }, { "name": "businessId", "in": "path", "required": true, "type": "string" } ], "responses": { "200": { "description": "OK" } } } }, "/api/v2/business/{businessId}/kiosk/{kioskId}/emailreset": { "post": { "tags": [ "TimeAndAttendance" ], "summary": "Send PIN Reset Email", "description": "Sends kiosk PIN reset instructions to an employee by email.", "operationId": "TimeAndAttendance_EmailReset", "consumes": [ "application/json", "text/json", "application/xml", "text/xml", "application/x-www-form-urlencoded" ], "produces": [ "application/json", "text/json", "application/xml", "text/xml" ], "parameters": [ { "name": "model", "in": "body", "required": true, "schema": { "$ref": "#/definitions/PinResetModel" } }, { "name": "businessId", "in": "path", "required": true, "type": "string" }, { "name": "kioskId", "in": "path", "required": true, "type": "string" } ], "responses": { "200": { "description": "OK" } } } }, "/api/v2/business/{businessId}/kiosk/{kioskId}/smsreset": { "post": { "tags": [ "TimeAndAttendance" ], "summary": "Send PIN Reset SMS", "description": "Sends kiosk PIN reset instructions to an employee by SMS. Note that the current business must have SMS notifications enabled.", "operationId": "TimeAndAttendance_SmsReset", "consumes": [ "application/json", "text/json", "application/xml", "text/xml", "application/x-www-form-urlencoded" ], "produces": [ "application/json", "text/json", "application/xml", "text/xml" ], "parameters": [ { "name": "model", "in": "body", "required": true, "schema": { "$ref": "#/definitions/PinResetModel" } }, { "name": "businessId", "in": "path", "required": true, "type": "string" }, { "name": "kioskId", "in": "path", "required": true, "type": "string" } ], "responses": { "200": { "description": "OK" } } } }, "/api/v2/business/{businessId}/kiosk/{kioskId}/discard": { "post": { "tags": [ "TimeAndAttendance" ], "summary": "Discard current shift", "description": "Discards the current shift for an employee. \r\nIf they are on a break, it will be ended automatically.", "operationId": "TimeAndAttendance_DiscardShift", "consumes": [ "application/json", "text/json", "application/xml", "text/xml", "application/x-www-form-urlencoded" ], "produces": [ "application/json", "text/json", "application/xml", "text/xml" ], "parameters": [ { "name": "kioskId", "in": "path", "required": true, "type": "integer", "format": "int32", "title": "Int32" }, { "name": "request", "in": "body", "required": true, "schema": { "$ref": "#/definitions/ClockOffModel" } }, { "name": "businessId", "in": "path", "required": true, "type": "string" } ], "responses": { "200": { "description": "OK" } } } }, "/api/v2/business/{businessId}/kiosk/{kioskId}/lookupdata/{employeeId}": { "get": { "tags": [ "TimeAndAttendance" ], "summary": "Get Employee Lookup Data", "description": "Gets relevant lookup data for an employee in relation to a kiosk.", "operationId": "TimeAndAttendance_GetLookupData", "consumes": [], "produces": [ "application/json", "text/json", "application/xml", "text/xml" ], "parameters": [ { "name": "kioskId", "in": "path", "required": true, "type": "integer", "format": "int32", "title": "Int32" }, { "name": "employeeId", "in": "path", "required": true, "type": "integer", "format": "int32", "title": "Int32" }, { "name": "businessId", "in": "path", "required": true, "type": "string" } ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/TimeAndAttendanceLookupDataModel" } } } } }, "/api/v2/business/{businessId}/kiosk/{kioskId}/shift/{shiftId}/notes": { "get": { "tags": [ "TimeAndAttendance" ], "summary": "Get Shift Notes", "description": "Gets all the notes for a specific shift.", "operationId": "TimeAndAttendance_GetShiftNotes", "consumes": [], "produces": [ "application/json", "text/json", "application/xml", "text/xml" ], "parameters": [ { "name": "kioskId", "in": "path", "required": true, "type": "integer", "format": "int32", "title": "Int32" }, { "name": "shiftId", "in": "path", "required": true, "type": "integer", "format": "int32", "title": "Int32" }, { "name": "businessId", "in": "path", "required": true, "type": "string" }, { "name": "model.employeeId", "in": "query", "required": false, "type": "integer", "format": "int32", "title": "Int32" }, { "name": "model.isAdminInitiated", "in": "query", "required": false, "type": "boolean", "title": "Boolean" }, { "name": "model.type", "in": "query", "required": false, "type": "string", "enum": [ "Shift", "ClockOn", "ClockOff" ], "title": "Nullable" }, { "name": "model.visibility", "in": "query", "required": false, "type": "string", "enum": [ "Hidden", "Visible" ], "title": "Nullable" } ], "responses": { "200": { "description": "OK" } } }, "post": { "tags": [ "TimeAndAttendance" ], "summary": "Add Note to Shift", "description": "Adds a note to an existing shift.", "operationId": "TimeAndAttendance_AddNote", "consumes": [ "application/json", "text/json", "application/xml", "text/xml", "application/x-www-form-urlencoded" ], "produces": [ "application/json", "text/json", "application/xml", "text/xml" ], "parameters": [ { "name": "kioskId", "in": "path", "required": true, "type": "integer", "format": "int32", "title": "Int32" }, { "name": "shiftId", "in": "path", "required": true, "type": "integer", "format": "int32", "title": "Int32" }, { "name": "model", "in": "body", "required": true, "schema": { "$ref": "#/definitions/AddNoteModel" } }, { "name": "businessId", "in": "path", "required": true, "type": "string" } ], "responses": { "200": { "description": "OK" } } } }, "/api/v2/business/{businessId}/kiosk/{kioskId}/shift/{shiftId}/notes/{noteId}": { "delete": { "tags": [ "TimeAndAttendance" ], "summary": "Delete Note from Shift", "description": "Deletes a note from an existing shift.", "operationId": "TimeAndAttendance_DeleteNote", "consumes": [], "produces": [ "application/json", "text/json", "application/xml", "text/xml" ], "parameters": [ { "name": "kioskId", "in": "path", "required": true, "type": "integer", "format": "int32", "title": "Int32" }, { "name": "shiftId", "in": "path", "required": true, "type": "integer", "format": "int32", "title": "Int32" }, { "name": "noteId", "in": "path", "required": true, "type": "integer", "format": "int32", "title": "Int32" }, { "name": "businessId", "in": "path", "required": true, "type": "string" } ], "responses": { "200": { "description": "OK" } } } }, "/api/v2/business/{businessId}/kiosk/{kioskId}/shift/{shiftId}/notes/read-state": { "post": { "tags": [ "TimeAndAttendance" ], "summary": "Mark Shift Notes Read", "description": "Marks some shift notes as either read or unread.", "operationId": "TimeAndAttendance_MarkNotesRead", "consumes": [ "application/json", "text/json", "application/xml", "text/xml", "application/x-www-form-urlencoded" ], "produces": [ "application/json", "text/json", "application/xml", "text/xml" ], "parameters": [ { "name": "model", "in": "body", "required": true, "schema": { "$ref": "#/definitions/MarkNotesReadViewModel" } }, { "name": "businessId", "in": "path", "required": true, "type": "string" }, { "name": "kioskId", "in": "path", "required": true, "type": "string" }, { "name": "shiftId", "in": "path", "required": true, "type": "string" } ], "responses": { "200": { "description": "OK" } } } }, "/api/v2/business/{businessId}/kiosk": { "get": { "tags": [ "TimeAndAttendance" ], "summary": "List Kiosks", "description": "Lists all kiosks for the specified business.\n\nThis operation supports OData queries.", "operationId": "Kiosk_GetAll", "consumes": [], "produces": [ "application/json", "text/json", "application/xml", "text/xml" ], "parameters": [ { "name": "businessId", "in": "path", "required": true, "type": "string" } ], "responses": { "200": { "description": "OK", "schema": { "type": "array", "items": { "$ref": "#/definitions/TimeAndAttendanceKioskModel" }, "xml": { "name": "TimeAndAttendanceKioskModel", "wrapped": true }, "title": "IQueryable" } } } }, "post": { "tags": [ "TimeAndAttendance" ], "summary": "Create Kiosk", "description": "Creates a new kiosk for the business.", "operationId": "Kiosk_Post", "consumes": [ "application/json", "text/json", "application/xml", "text/xml", "application/x-www-form-urlencoded" ], "produces": [ "application/json", "text/json", "application/xml", "text/xml" ], "parameters": [ { "name": "kiosk", "in": "body", "required": true, "schema": { "$ref": "#/definitions/TimeAndAttendanceKioskModel" } }, { "name": "businessId", "in": "path", "required": true, "type": "string" } ], "responses": { "200": { "description": "OK" } } } }, "/api/v2/business/{businessId}/kiosk/{id}": { "get": { "tags": [ "TimeAndAttendance" ], "summary": "Get Kiosk by ID", "description": "Gets the kiosk with the specified ID.", "operationId": "Kiosk_Get", "consumes": [], "produces": [ "application/json", "text/json", "application/xml", "text/xml" ], "parameters": [ { "name": "id", "in": "path", "required": true, "type": "integer", "format": "int32", "title": "Int32" }, { "name": "businessId", "in": "path", "required": true, "type": "string" } ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/TimeAndAttendanceKioskModel" } } } }, "put": { "tags": [ "TimeAndAttendance" ], "summary": "Update Kiosk", "description": "Updates the kiosk with the specified ID.", "operationId": "Kiosk_Put", "consumes": [ "application/json", "text/json", "application/xml", "text/xml", "application/x-www-form-urlencoded" ], "produces": [ "application/json", "text/json", "application/xml", "text/xml" ], "parameters": [ { "name": "id", "in": "path", "required": true, "type": "integer", "format": "int32", "title": "Int32" }, { "name": "kiosk", "in": "body", "required": true, "schema": { "$ref": "#/definitions/TimeAndAttendanceKioskModel" } }, { "name": "businessId", "in": "path", "required": true, "type": "string" } ], "responses": { "200": { "description": "OK" } } }, "delete": { "tags": [ "TimeAndAttendance" ], "summary": "Delete Kiosk", "description": "Deletes the kiosk with the specified ID.", "operationId": "Kiosk_Delete", "consumes": [], "produces": [ "application/json", "text/json", "application/xml", "text/xml" ], "parameters": [ { "name": "id", "in": "path", "required": true, "type": "integer", "format": "int32", "title": "Int32" }, { "name": "businessId", "in": "path", "required": true, "type": "string" } ], "responses": { "200": { "description": "OK" } } } }, "/api/v2/business/{businessId}/timesheet": { "get": { "tags": [ "Timesheets" ], "summary": "Get Business Timesheets", "description": "Retrieves all timesheets for the specified business.\n\nThis operation supports OData queries.", "operationId": "Timesheet_Get", "consumes": [], "produces": [ "application/json", "text/json", "application/xml", "text/xml" ], "parameters": [ { "name": "businessId", "in": "path", "required": true, "type": "string" } ], "responses": { "200": { "description": "OK", "schema": { "type": "array", "items": { "$ref": "#/definitions/TimesheetLineModel" }, "xml": { "name": "TimesheetLineModel", "wrapped": true }, "title": "IEnumerable" } } } } }, "/api/v2/business/{businessId}/timesheet/bulk": { "put": { "tags": [ "Timesheets" ], "summary": "Update/Replace timesheets", "description": "Performs the same action as 'Bulk Insert Timesheets', but any existing timesheets \r\nfor the specified employees within the specified time period \r\n(StartTime - EndTime) will be replaced with the timesheets specified.", "operationId": "Timesheet_Put", "consumes": [ "application/json", "text/json", "application/xml", "text/xml", "application/x-www-form-urlencoded" ], "produces": [ "application/json", "text/json", "application/xml", "text/xml" ], "parameters": [ { "name": "request", "in": "body", "required": true, "schema": { "$ref": "#/definitions/SubmitTimesheetsRequest" } }, { "name": "businessId", "in": "path", "required": true, "type": "string" } ], "responses": { "200": { "description": "OK" } } }, "post": { "tags": [ "Timesheets" ], "summary": "Bulk Insert Timesheets", "description": "Adds timesheets for the specified business. This will not replace any existing timesheets.", "operationId": "Timesheet_Post", "consumes": [ "application/json", "text/json", "application/xml", "text/xml", "application/x-www-form-urlencoded" ], "produces": [ "application/json", "text/json", "application/xml", "text/xml" ], "parameters": [ { "name": "request", "in": "body", "required": true, "schema": { "$ref": "#/definitions/SubmitTimesheetsRequest" } }, { "name": "businessId", "in": "path", "required": true, "type": "string" } ], "responses": { "200": { "description": "OK" } } } }, "/api/v2/business/{businessId}/unavailability": { "get": { "tags": [ "Unavailability" ], "summary": "List Unavailabilities", "description": "Lists all of the unavailabilities for this business, with optional filters.", "operationId": "Unavailability_Get", "consumes": [], "produces": [ "application/json", "text/json", "application/xml", "text/xml" ], "parameters": [ { "name": "businessId", "in": "path", "required": true, "type": "string" }, { "name": "filter.fromDate", "in": "query", "required": false, "type": "string", "format": "date-time", "title": "Nullable" }, { "name": "filter.toDate", "in": "query", "required": false, "type": "string", "format": "date-time", "title": "Nullable" }, { "name": "filter.employeeId", "in": "query", "required": false, "type": "integer", "format": "int32", "title": "Nullable" }, { "name": "filter.defaultLocationId", "in": "query", "required": false, "type": "integer", "format": "int32", "title": "Nullable" } ], "responses": { "200": { "description": "OK", "schema": { "type": "array", "items": { "$ref": "#/definitions/UnavailabilityModel" }, "xml": { "name": "UnavailabilityModel", "wrapped": true }, "title": "IEnumerable" } } } }, "post": { "tags": [ "Unavailability" ], "summary": "Create Unavailability", "description": "Creates a new unavailability for the employee.", "operationId": "Unavailability_Post", "consumes": [ "application/json", "text/json", "application/xml", "text/xml", "application/x-www-form-urlencoded" ], "produces": [ "application/json", "text/json", "application/xml", "text/xml" ], "parameters": [ { "name": "unavailabilityModel", "in": "body", "required": true, "schema": { "$ref": "#/definitions/UnavailabilityModel" } }, { "name": "businessId", "in": "path", "required": true, "type": "string" } ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/UnavailabilityModel" } } } } }, "/api/v2/business/{businessId}/unavailability/{id}": { "get": { "tags": [ "Unavailability" ], "summary": "Get unavailability by ID", "description": "Gets the unavailability with the specified ID.", "operationId": "Unavailability_GetApiV2BusinessByBusinessIdUnavailabilityById", "consumes": [], "produces": [ "application/json", "text/json", "application/xml", "text/xml" ], "parameters": [ { "name": "id", "in": "path", "required": true, "type": "integer", "format": "int32", "title": "Int32" }, { "name": "businessId", "in": "path", "required": true, "type": "string" } ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/UnavailabilityModel" } } } }, "put": { "tags": [ "Unavailability" ], "summary": "Update Unavailability", "description": "Updates the unavailability with the specified ID.", "operationId": "Unavailability_Put", "consumes": [ "application/json", "text/json", "application/xml", "text/xml", "application/x-www-form-urlencoded" ], "produces": [ "application/json", "text/json", "application/xml", "text/xml" ], "parameters": [ { "name": "id", "in": "path", "required": true, "type": "integer", "format": "int32", "title": "Int32" }, { "name": "unavailabilityModel", "in": "body", "required": true, "schema": { "$ref": "#/definitions/UnavailabilityModel" } }, { "name": "businessId", "in": "path", "required": true, "type": "string" } ], "responses": { "200": { "description": "OK" } } }, "delete": { "tags": [ "Unavailability" ], "summary": "Delete Unavailability", "description": "Deletes the unavailability with the specified ID.", "operationId": "Unavailability_Delete", "consumes": [], "produces": [ "application/json", "text/json", "application/xml", "text/xml" ], "parameters": [ { "name": "id", "in": "path", "required": true, "type": "integer", "format": "int32", "title": "Int32" }, { "name": "businessId", "in": "path", "required": true, "type": "string" } ], "responses": { "200": { "description": "OK" } } } }, "/api/v2/user": { "get": { "tags": [ "User" ], "summary": "Get User Details", "description": "Gets details about the user.", "operationId": "User_Get", "consumes": [], "produces": [ "application/json", "text/json", "application/xml", "text/xml" ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/UserModel" } } } }, "post": { "tags": [ "User" ], "summary": "Create New User", "description": "Creates a new user.", "operationId": "User_Post", "consumes": [ "application/json", "text/json", "application/xml", "text/xml", "application/x-www-form-urlencoded" ], "produces": [ "application/json", "text/json", "application/xml", "text/xml" ], "parameters": [ { "name": "model", "in": "body", "required": true, "schema": { "$ref": "#/definitions/NewUserModel" } } ], "responses": { "200": { "description": "OK" } } } }, "/api/v2/business/{businessId}/webhookregistrations": { "get": { "tags": [ "Webhook" ], "summary": "List Web Hook Registrations", "description": "Returns a collection containing the registered web hook instances for the user.", "operationId": "WebHookRegistrations_Get", "consumes": [], "produces": [ "application/json", "text/json", "application/xml", "text/xml" ], "parameters": [ { "name": "businessId", "in": "path", "required": true, "type": "string" } ], "responses": { "200": { "description": "OK", "schema": { "type": "array", "items": { "$ref": "#/definitions/WebHook" }, "xml": { "name": "WebHook", "wrapped": true }, "title": "IEnumerable" } } } }, "post": { "tags": [ "Webhook" ], "summary": "Register Web Hook", "description": "Registers a new web hook.", "operationId": "WebHookRegistrations_Post", "consumes": [ "application/json", "text/json", "application/xml", "text/xml", "application/x-www-form-urlencoded" ], "produces": [ "application/json", "text/json", "application/xml", "text/xml" ], "parameters": [ { "name": "webHook", "in": "body", "required": true, "schema": { "$ref": "#/definitions/WebHook" } }, { "name": "businessId", "in": "path", "required": true, "type": "string" } ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/WebHook" } } } }, "delete": { "tags": [ "Webhook" ], "summary": "Delete all Web Hook Registrations", "description": "Deletes all the web hook registrations.", "operationId": "WebHookRegistrations_DeleteAll", "consumes": [], "produces": [ "application/json", "text/json", "application/xml", "text/xml" ], "parameters": [ { "name": "businessId", "in": "path", "required": true, "type": "string" } ], "responses": { "200": { "description": "OK", "schema": { "type": "object", "title": "IHttpActionResult" } } } } }, "/api/v2/business/{businessId}/webhookregistrations/{id}": { "get": { "tags": [ "Webhook" ], "summary": "Get Web Hook Registration by ID", "description": "Gets the registered web hook instance with the specified ID.", "operationId": "WebHookRegistrations_Lookup", "consumes": [], "produces": [ "application/json", "text/json", "application/xml", "text/xml" ], "parameters": [ { "name": "id", "in": "path", "required": true, "type": "string", "title": "String" }, { "name": "businessId", "in": "path", "required": true, "type": "string" } ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/WebHook" } } } }, "put": { "tags": [ "Webhook" ], "summary": "Update Web Hook Registration", "description": "Updates the web hook registration with the specified ID.", "operationId": "WebHookRegistrations_Put", "consumes": [ "application/json", "text/json", "application/xml", "text/xml", "application/x-www-form-urlencoded" ], "produces": [ "application/json", "text/json", "application/xml", "text/xml" ], "parameters": [ { "name": "id", "in": "path", "required": true, "type": "string", "title": "String" }, { "name": "webHook", "in": "body", "required": true, "schema": { "$ref": "#/definitions/WebHook" } }, { "name": "businessId", "in": "path", "required": true, "type": "string" } ], "responses": { "200": { "description": "OK", "schema": { "type": "object", "title": "IHttpActionResult" } } } }, "delete": { "tags": [ "Webhook" ], "summary": "Delete Web Hook Registration", "description": "Deletes the web hook registration with the specified ID.", "operationId": "WebHookRegistrations_Delete", "consumes": [], "produces": [ "application/json", "text/json", "application/xml", "text/xml" ], "parameters": [ { "name": "id", "in": "path", "required": true, "type": "string", "title": "String" }, { "name": "businessId", "in": "path", "required": true, "type": "string" } ], "responses": { "200": { "description": "OK", "schema": { "type": "object", "title": "IHttpActionResult" } } } } }, "/api/v2/business/{businessId}/webhookregistrations/{id}/test": { "get": { "tags": [ "Webhook" ], "summary": "Test Web Hook", "description": "Tests a web hook given a registration ID and a filter string.", "operationId": "WebHookRegistrations_Test", "consumes": [], "produces": [ "application/json", "text/json", "application/xml", "text/xml" ], "parameters": [ { "name": "id", "in": "path", "required": true, "type": "string", "title": "String" }, { "name": "filter", "in": "query", "required": true, "type": "string", "title": "String" }, { "name": "businessId", "in": "path", "required": true, "type": "string" } ], "responses": { "200": { "description": "OK", "schema": { "type": "object", "title": "IHttpActionResult" } } } } }, "/api/v2/whitelabel": { "get": { "tags": [ "WhiteLabel" ], "summary": "List White Labels", "description": "Lists all the white labels to which you have access.", "operationId": "WhiteLabel_GetWhiteLabels", "consumes": [], "produces": [ "application/json", "text/json", "application/xml", "text/xml" ], "responses": { "200": { "description": "OK", "schema": { "type": "array", "items": { "$ref": "#/definitions/WhiteLabelModel" }, "xml": { "name": "WhiteLabelModel", "wrapped": true }, "title": "IEnumerable" } } } } }, "/api/v2/whitelabel/{id}": { "get": { "tags": [ "WhiteLabel" ], "summary": "Get White Label by ID", "description": "Gets the white label with the specified ID.", "operationId": "WhiteLabel_Get", "consumes": [], "produces": [ "application/json", "text/json", "application/xml", "text/xml" ], "parameters": [ { "name": "id", "in": "path", "required": true, "type": "integer", "format": "int32", "title": "Int32" } ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/WhiteLabelModel" } } } } }, "/api/v2/whitelabel/{whiteLabelId}/Invoice": { "get": { "tags": [ "WhiteLabel" ], "summary": "Get Invoices", "description": "Get invoices for the specified business or white label.", "operationId": "Invoice_GetInvoices", "consumes": [], "produces": [ "application/json", "text/json", "application/xml", "text/xml" ], "parameters": [ { "name": "businessId", "in": "query", "required": false, "type": "integer", "format": "int32", "title": "Nullable" }, { "name": "whiteLabelId", "in": "path", "required": true, "type": "integer", "format": "int32", "title": "Nullable" } ], "responses": { "200": { "description": "OK", "schema": { "type": "array", "items": { "$ref": "#/definitions/InvoiceModel" }, "xml": { "name": "InvoiceModel", "wrapped": true }, "title": "IList" } } } } }, "/api/v2/business/{businessId}/Invoice": { "get": { "tags": [ "WhiteLabel" ], "summary": "Get Invoices", "description": "Get invoices for the specified business or white label.", "operationId": "Invoice_GetApiV2BusinessByBusinessIdInvoice", "consumes": [], "produces": [ "application/json", "text/json", "application/xml", "text/xml" ], "parameters": [ { "name": "businessId", "in": "path", "required": true, "type": "integer", "format": "int32", "title": "Nullable" }, { "name": "whiteLabelId", "in": "query", "required": false, "type": "integer", "format": "int32", "title": "Nullable" } ], "responses": { "200": { "description": "OK", "schema": { "type": "array", "items": { "$ref": "#/definitions/InvoiceModel" }, "xml": { "name": "InvoiceModel", "wrapped": true }, "title": "IList" } } } } }, "/api/v2/whitelabel/{whiteLabelId}/Invoice/{id}": { "get": { "tags": [ "WhiteLabel" ], "summary": "Get Invoice By ID", "description": "Gets the invoice with the specified ID.", "operationId": "Invoice_Get", "consumes": [], "produces": [ "application/json", "text/json", "application/xml", "text/xml" ], "parameters": [ { "name": "id", "in": "path", "required": true, "type": "integer", "format": "int32", "title": "Int32" }, { "name": "businessId", "in": "query", "required": false, "type": "integer", "format": "int32", "title": "Nullable" }, { "name": "whiteLabelId", "in": "path", "required": true, "type": "integer", "format": "int32", "title": "Nullable" } ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/InvoiceModel" } } } } }, "/api/v2/business/{businessId}/Invoice/{id}": { "get": { "tags": [ "WhiteLabel" ], "summary": "Get Invoice By ID", "description": "Gets the invoice with the specified ID.", "operationId": "Invoice_GetApiV2BusinessByBusinessIdInvoiceById", "consumes": [], "produces": [ "application/json", "text/json", "application/xml", "text/xml" ], "parameters": [ { "name": "id", "in": "path", "required": true, "type": "integer", "format": "int32", "title": "Int32" }, { "name": "businessId", "in": "path", "required": true, "type": "integer", "format": "int32", "title": "Nullable" }, { "name": "whiteLabelId", "in": "query", "required": false, "type": "integer", "format": "int32", "title": "Nullable" } ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/InvoiceModel" } } } } }, "/api/v2/business/{businessId}/worktype": { "get": { "tags": [ "WorkType" ], "summary": "List Work Types", "description": "Lists all the work types for the business.\n\nThis operation supports OData queries.", "operationId": "WorkType_GetWorkTypes", "consumes": [], "produces": [ "application/json", "text/json", "application/xml", "text/xml" ], "parameters": [ { "name": "businessId", "in": "path", "required": true, "type": "string" } ], "responses": { "200": { "description": "OK", "schema": { "type": "array", "items": { "$ref": "#/definitions/WorkTypeModel" }, "xml": { "name": "WorkTypeModel", "wrapped": true }, "title": "IEnumerable" } } } }, "post": { "tags": [ "WorkType" ], "summary": "Create Work Type", "description": "Creates a new work type for the business.", "operationId": "WorkType_Post", "consumes": [ "application/json", "text/json", "application/xml", "text/xml", "application/x-www-form-urlencoded" ], "produces": [ "application/json", "text/json", "application/xml", "text/xml" ], "parameters": [ { "name": "workType", "in": "body", "required": true, "schema": { "$ref": "#/definitions/WorkTypeModel" } }, { "name": "businessId", "in": "path", "required": true, "type": "string" } ], "responses": { "200": { "description": "OK" } } } }, "/api/v2/business/{businessId}/worktype/{id}": { "get": { "tags": [ "WorkType" ], "summary": "Get Work Type by ID", "description": "Gets the work type with the specified ID.", "operationId": "WorkType_Get", "consumes": [], "produces": [ "application/json", "text/json", "application/xml", "text/xml" ], "parameters": [ { "name": "id", "in": "path", "required": true, "type": "integer", "format": "int32", "title": "Int32" }, { "name": "businessId", "in": "path", "required": true, "type": "string" } ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/WorkTypeModel" } } } }, "put": { "tags": [ "WorkType" ], "summary": "Update Work Type", "description": "Updates the work type with the specified ID.", "operationId": "WorkType_Put", "consumes": [ "application/json", "text/json", "application/xml", "text/xml", "application/x-www-form-urlencoded" ], "produces": [ "application/json", "text/json", "application/xml", "text/xml" ], "parameters": [ { "name": "id", "in": "path", "required": true, "type": "integer", "format": "int32", "title": "Int32" }, { "name": "workType", "in": "body", "required": true, "schema": { "$ref": "#/definitions/WorkTypeModel" } }, { "name": "businessId", "in": "path", "required": true, "type": "string" } ], "responses": { "200": { "description": "OK" } } }, "delete": { "tags": [ "WorkType" ], "summary": "Delete Work Type", "description": "Deletes the work type with the specified ID.", "operationId": "WorkType_Delete", "consumes": [], "produces": [ "application/json", "text/json", "application/xml", "text/xml" ], "parameters": [ { "name": "id", "in": "path", "required": true, "type": "integer", "format": "int32", "title": "Int32" }, { "name": "businessId", "in": "path", "required": true, "type": "string" } ], "responses": { "200": { "description": "OK" } } } } }, "definitions": { "ODataQueryOptions[AbaDetails]": { "type": "object", "properties": { "ifMatch": { "type": "object", "readOnly": true, "title": "ETag" }, "ifNoneMatch": { "type": "object", "readOnly": true, "title": "ETag" }, "context": { "$ref": "#/definitions/ODataQueryContext", "readOnly": true }, "request": { "type": "object", "readOnly": true, "title": "HttpRequestMessage" }, "rawValues": { "$ref": "#/definitions/ODataRawQueryOptions", "readOnly": true }, "selectExpand": { "$ref": "#/definitions/SelectExpandQueryOption", "readOnly": true }, "filter": { "$ref": "#/definitions/FilterQueryOption", "readOnly": true }, "orderBy": { "$ref": "#/definitions/OrderByQueryOption", "readOnly": true }, "skip": { "$ref": "#/definitions/SkipQueryOption", "readOnly": true }, "top": { "$ref": "#/definitions/TopQueryOption", "readOnly": true }, "inlineCount": { "$ref": "#/definitions/InlineCountQueryOption", "readOnly": true }, "validator": { "$ref": "#/definitions/ODataQueryValidator" } }, "xml": { "name": "ODataQueryOptions`1" }, "title": "ODataQueryOptions" }, "ODataQueryContext": { "type": "object", "properties": { "model": { "$ref": "#/definitions/IEdmModel", "readOnly": true }, "elementType": { "$ref": "#/definitions/IEdmType", "readOnly": true }, "elementClrType": { "type": "string", "readOnly": true, "title": "Type" } }, "xml": { "name": "ODataQueryContext" }, "title": "ODataQueryContext" }, "ODataRawQueryOptions": { "type": "object", "properties": { "filter": { "type": "string", "readOnly": true, "title": "String" }, "orderBy": { "type": "string", "readOnly": true, "title": "String" }, "top": { "type": "string", "readOnly": true, "title": "String" }, "skip": { "type": "string", "readOnly": true, "title": "String" }, "select": { "type": "string", "readOnly": true, "title": "String" }, "expand": { "type": "string", "readOnly": true, "title": "String" }, "inlineCount": { "type": "string", "readOnly": true, "title": "String" }, "format": { "type": "string", "readOnly": true, "title": "String" }, "skipToken": { "type": "string", "readOnly": true, "title": "String" } }, "xml": { "name": "ODataRawQueryOptions" }, "title": "ODataRawQueryOptions" }, "SelectExpandQueryOption": { "type": "object", "properties": { "context": { "$ref": "#/definitions/ODataQueryContext", "readOnly": true }, "rawSelect": { "type": "string", "readOnly": true, "title": "String" }, "rawExpand": { "type": "string", "readOnly": true, "title": "String" }, "validator": { "$ref": "#/definitions/SelectExpandQueryValidator" }, "selectExpandClause": { "$ref": "#/definitions/SelectExpandClause", "readOnly": true } }, "xml": { "name": "SelectExpandQueryOption" }, "title": "SelectExpandQueryOption" }, "FilterQueryOption": { "type": "object", "properties": { "context": { "$ref": "#/definitions/ODataQueryContext", "readOnly": true }, "validator": { "$ref": "#/definitions/FilterQueryValidator" }, "filterClause": { "$ref": "#/definitions/FilterClause", "readOnly": true }, "rawValue": { "type": "string", "readOnly": true, "title": "String" } }, "xml": { "name": "FilterQueryOption" }, "title": "FilterQueryOption" }, "OrderByQueryOption": { "type": "object", "properties": { "context": { "$ref": "#/definitions/ODataQueryContext", "readOnly": true }, "orderByNodes": { "type": "array", "items": { "$ref": "#/definitions/OrderByNode" }, "readOnly": true, "xml": { "name": "OrderByNode", "wrapped": true }, "title": "IList" }, "rawValue": { "type": "string", "readOnly": true, "title": "String" }, "validator": { "$ref": "#/definitions/OrderByQueryValidator" }, "orderByClause": { "$ref": "#/definitions/OrderByClause", "readOnly": true } }, "xml": { "name": "OrderByQueryOption" }, "title": "OrderByQueryOption" }, "SkipQueryOption": { "type": "object", "properties": { "context": { "$ref": "#/definitions/ODataQueryContext", "readOnly": true }, "rawValue": { "type": "string", "readOnly": true, "title": "String" }, "value": { "format": "int32", "type": "integer", "readOnly": true, "title": "Int32" }, "validator": { "$ref": "#/definitions/SkipQueryValidator" } }, "xml": { "name": "SkipQueryOption" }, "title": "SkipQueryOption" }, "TopQueryOption": { "type": "object", "properties": { "context": { "$ref": "#/definitions/ODataQueryContext", "readOnly": true }, "rawValue": { "type": "string", "readOnly": true, "title": "String" }, "value": { "format": "int32", "type": "integer", "readOnly": true, "title": "Int32" }, "validator": { "$ref": "#/definitions/TopQueryValidator" } }, "xml": { "name": "TopQueryOption" }, "title": "TopQueryOption" }, "InlineCountQueryOption": { "type": "object", "properties": { "context": { "$ref": "#/definitions/ODataQueryContext", "readOnly": true }, "rawValue": { "type": "string", "readOnly": true, "title": "String" }, "value": { "enum": [ "None", "AllPages" ], "type": "string", "readOnly": true, "title": "InlineCountValue" } }, "xml": { "name": "InlineCountQueryOption" }, "title": "InlineCountQueryOption" }, "ODataQueryValidator": { "type": "object", "properties": {}, "xml": { "name": "ODataQueryValidator" }, "title": "ODataQueryValidator" }, "IEdmModel": { "type": "object", "properties": { "schemaElements": { "type": "array", "items": { "$ref": "#/definitions/IEdmSchemaElement" }, "readOnly": true, "xml": { "name": "IEdmSchemaElement", "wrapped": true }, "title": "IEnumerable" }, "vocabularyAnnotations": { "type": "array", "items": { "$ref": "#/definitions/IEdmVocabularyAnnotation" }, "readOnly": true, "xml": { "name": "IEdmVocabularyAnnotation", "wrapped": true }, "title": "IEnumerable" }, "referencedModels": { "type": "array", "items": { "$ref": "#/definitions/IEdmModel" }, "readOnly": true, "xml": { "name": "IEdmModel", "wrapped": true }, "title": "IEnumerable" }, "directValueAnnotationsManager": { "$ref": "#/definitions/IEdmDirectValueAnnotationsManager", "readOnly": true } }, "xml": { "name": "IEdmModel" }, "title": "IEdmModel" }, "IEdmType": { "type": "object", "properties": { "typeKind": { "enum": [ "None", "Primitive", "Entity", "Complex", "Row", "Collection", "EntityReference", "Enum" ], "type": "string", "readOnly": true, "title": "EdmTypeKind" } }, "xml": { "name": "IEdmType" }, "title": "IEdmType" }, "SelectExpandQueryValidator": { "type": "object", "properties": {}, "xml": { "name": "SelectExpandQueryValidator" }, "title": "SelectExpandQueryValidator" }, "SelectExpandClause": { "type": "object", "properties": { "selectedItems": { "type": "array", "items": { "$ref": "#/definitions/SelectItem" }, "readOnly": true, "xml": { "name": "SelectItem", "wrapped": true }, "title": "IEnumerable" }, "allSelected": { "type": "boolean", "readOnly": true, "title": "Boolean" } }, "xml": { "name": "SelectExpandClause" }, "title": "SelectExpandClause" }, "FilterQueryValidator": { "type": "object", "properties": {}, "xml": { "name": "FilterQueryValidator" }, "title": "FilterQueryValidator" }, "FilterClause": { "type": "object", "properties": { "expression": { "$ref": "#/definitions/SingleValueNode", "readOnly": true }, "rangeVariable": { "$ref": "#/definitions/RangeVariable", "readOnly": true }, "itemType": { "$ref": "#/definitions/IEdmTypeReference", "readOnly": true } }, "xml": { "name": "FilterClause" }, "title": "FilterClause" }, "OrderByNode": { "type": "object", "properties": { "direction": { "enum": [ "Ascending", "Descending" ], "type": "string", "readOnly": true, "title": "OrderByDirection" } }, "xml": { "name": "OrderByNode" }, "title": "OrderByNode" }, "OrderByQueryValidator": { "type": "object", "properties": {}, "xml": { "name": "OrderByQueryValidator" }, "title": "OrderByQueryValidator" }, "OrderByClause": { "type": "object", "properties": { "thenBy": { "$ref": "#/definitions/OrderByClause", "readOnly": true }, "expression": { "$ref": "#/definitions/SingleValueNode", "readOnly": true }, "direction": { "enum": [ "Ascending", "Descending" ], "type": "string", "readOnly": true, "title": "OrderByDirection" }, "rangeVariable": { "$ref": "#/definitions/RangeVariable", "readOnly": true }, "itemType": { "$ref": "#/definitions/IEdmTypeReference", "readOnly": true } }, "xml": { "name": "OrderByClause" }, "title": "OrderByClause" }, "SkipQueryValidator": { "type": "object", "properties": {}, "xml": { "name": "SkipQueryValidator" }, "title": "SkipQueryValidator" }, "TopQueryValidator": { "type": "object", "properties": {}, "xml": { "name": "TopQueryValidator" }, "title": "TopQueryValidator" }, "IEdmSchemaElement": { "type": "object", "properties": { "schemaElementKind": { "enum": [ "None", "TypeDefinition", "Function", "ValueTerm", "EntityContainer" ], "type": "string", "readOnly": true, "title": "EdmSchemaElementKind" }, "namespace": { "type": "string", "readOnly": true, "title": "String" }, "name": { "type": "string", "readOnly": true, "title": "String" } }, "xml": { "name": "IEdmSchemaElement" }, "title": "IEdmSchemaElement" }, "IEdmVocabularyAnnotation": { "type": "object", "properties": { "qualifier": { "type": "string", "readOnly": true, "title": "String" }, "term": { "$ref": "#/definitions/IEdmTerm", "readOnly": true }, "target": { "$ref": "#/definitions/IEdmVocabularyAnnotatable", "readOnly": true } }, "xml": { "name": "IEdmVocabularyAnnotation" }, "title": "IEdmVocabularyAnnotation" }, "IEdmDirectValueAnnotationsManager": { "type": "object", "properties": {}, "xml": { "name": "IEdmDirectValueAnnotationsManager" }, "title": "IEdmDirectValueAnnotationsManager" }, "SelectItem": { "type": "object", "properties": {}, "xml": { "name": "SelectItem" }, "title": "SelectItem" }, "SingleValueNode": { "type": "object", "properties": { "typeReference": { "$ref": "#/definitions/IEdmTypeReference", "readOnly": true }, "kind": { "enum": [ "None", "Constant", "Convert", "NonentityRangeVariableReference", "BinaryOperator", "UnaryOperator", "SingleValuePropertyAccess", "CollectionPropertyAccess", "SingleValueFunctionCall", "Any", "CollectionNavigationNode", "SingleNavigationNode", "SingleValueOpenPropertyAccess", "SingleEntityCast", "All", "EntityCollectionCast", "EntityRangeVariableReference", "SingleEntityFunctionCall", "CollectionFunctionCall", "EntityCollectionFunctionCall", "NamedFunctionParameter" ], "type": "string", "readOnly": true, "title": "QueryNodeKind" } }, "xml": { "name": "SingleValueNode" }, "title": "SingleValueNode" }, "RangeVariable": { "type": "object", "properties": { "name": { "type": "string", "readOnly": true, "title": "String" }, "typeReference": { "$ref": "#/definitions/IEdmTypeReference", "readOnly": true }, "kind": { "format": "int32", "type": "integer", "readOnly": true, "title": "Int32" } }, "xml": { "name": "RangeVariable" }, "title": "RangeVariable" }, "IEdmTypeReference": { "type": "object", "properties": { "isNullable": { "type": "boolean", "readOnly": true, "title": "Boolean" }, "definition": { "$ref": "#/definitions/IEdmType", "readOnly": true } }, "xml": { "name": "IEdmTypeReference" }, "title": "IEdmTypeReference" }, "IEdmTerm": { "type": "object", "properties": { "termKind": { "enum": [ "None", "Type", "Value" ], "type": "string", "readOnly": true, "title": "EdmTermKind" }, "schemaElementKind": { "enum": [ "None", "TypeDefinition", "Function", "ValueTerm", "EntityContainer" ], "type": "string", "readOnly": true, "title": "EdmSchemaElementKind" }, "namespace": { "type": "string", "readOnly": true, "title": "String" }, "name": { "type": "string", "readOnly": true, "title": "String" } }, "xml": { "name": "IEdmTerm" }, "title": "IEdmTerm" }, "IEdmVocabularyAnnotatable": { "type": "object", "properties": {}, "xml": { "name": "IEdmVocabularyAnnotatable" }, "title": "IEdmVocabularyAnnotatable" }, "BusinessAbaModel": { "type": "object", "properties": { "id": { "format": "int32", "type": "integer", "title": "Int32" }, "bsb": { "type": "string", "title": "String" }, "accountNumber": { "type": "string", "title": "String" }, "accountName": { "type": "string", "title": "String" }, "financialInstitutionCode": { "type": "string", "title": "String" }, "lodgementReference": { "type": "string", "title": "String" }, "userName": { "type": "string", "title": "String" }, "userId": { "type": "string", "title": "String" }, "includeSelfBalancingTransaction": { "type": "boolean", "title": "Boolean" }, "mergeMultipleAccountPayments": { "type": "boolean", "title": "Boolean" }, "balanceLodgementReference": { "type": "string", "title": "String" }, "paymentAdditionalContent": { "enum": [ "None", "PeriodEndingDate", "PaymentDate", "EmployeeId" ], "type": "string", "title": "Nullable" }, "balanceAdditionalContent": { "enum": [ "None", "PeriodEndingDate", "PaymentDate", "PayRunId" ], "type": "string", "title": "Nullable" } }, "xml": { "name": "BusinessAbaModel" }, "title": "BusinessAbaModel" }, "SingleSignOnRequestModel": { "type": "object", "properties": { "businessId": { "format": "int32", "type": "integer", "title": "Nullable" }, "userName": { "type": "string", "title": "String" }, "url": { "type": "string", "title": "String" }, "navigation": { "enum": [ "Full", "Primary", "Secondary", "None" ], "type": "string", "title": "NavigationDisplayEnum" }, "hostName": { "type": "string", "title": "String" } }, "xml": { "name": "SingleSignOnRequestModel" }, "title": "SingleSignOnRequestModel" }, "SingleSignOnResponseModel": { "type": "object", "properties": { "url": { "type": "string", "title": "String" } }, "xml": { "name": "SingleSignOnResponseModel" }, "title": "SingleSignOnResponseModel" }, "TimesheetRoundingRulesModel": { "type": "object", "properties": { "id": { "format": "int32", "type": "integer", "title": "Int32" }, "shiftStartRoundingDirection": { "enum": [ "None", "Up", "Down", "ToTheNearest" ], "type": "string", "title": "RoundingDirectionEnum" }, "shiftStartRoundingInterval": { "format": "int32", "type": "integer", "title": "Int32" }, "shiftEndRoundingDirection": { "enum": [ "None", "Up", "Down", "ToTheNearest" ], "type": "string", "title": "RoundingDirectionEnum" }, "shiftEndRoundingInterval": { "format": "int32", "type": "integer", "title": "Int32" }, "breakStartRoundingDirection": { "enum": [ "None", "Up", "Down", "ToTheNearest" ], "type": "string", "title": "RoundingDirectionEnum" }, "breakStartRoundingInterval": { "format": "int32", "type": "integer", "title": "Int32" }, "breakEndRoundingDirection": { "enum": [ "None", "Up", "Down", "ToTheNearest" ], "type": "string", "title": "RoundingDirectionEnum" }, "breakEndRoundingInterval": { "format": "int32", "type": "integer", "title": "Int32" }, "roundUpToShiftStartTimeRoundingInterval": { "format": "int32", "type": "integer", "title": "Nullable" }, "roundDownToShiftStartTimeRoundingInterval": { "format": "int32", "type": "integer", "title": "Nullable" }, "roundUpToShiftEndTimeRoundingInterval": { "format": "int32", "type": "integer", "title": "Nullable" }, "roundDownToShiftEndTimeRoundingInterval": { "format": "int32", "type": "integer", "title": "Nullable" } }, "xml": { "name": "TimesheetRoundingRulesModel" }, "title": "TimesheetRoundingRulesModel" }, "BusinessAtoSupplierModel": { "type": "object", "properties": { "id": { "format": "int32", "type": "integer", "title": "Int32" }, "abn": { "type": "string", "title": "String" }, "name": { "type": "string", "title": "String" }, "addressLine1": { "type": "string", "title": "String" }, "addressLine2": { "type": "string", "title": "String" }, "suburb": { "type": "string", "title": "String" }, "state": { "type": "string", "title": "String" }, "postCode": { "type": "string", "title": "String" }, "contactName": { "type": "string", "title": "String" }, "signatoryName": { "type": "string", "title": "String" }, "phoneNumber": { "type": "string", "title": "String" }, "faxNumber": { "type": "string", "title": "String" }, "country": { "type": "string", "title": "String" }, "branch": { "type": "string", "title": "String" } }, "xml": { "name": "BusinessAtoSupplierModel" }, "title": "BusinessAtoSupplierModel" }, "EntitlementsModel": { "type": "object", "properties": { "planName": { "type": "string", "title": "String" }, "trialExpiryDate": { "format": "date-time", "type": "string", "title": "DateTime" }, "features": { "type": "array", "items": { "$ref": "#/definitions/EntitlementFeatureModel" }, "xml": { "name": "EntitlementFeatureModel", "wrapped": true }, "title": "IList" } }, "xml": { "name": "EntitlementsModel" }, "title": "EntitlementsModel" }, "EntitlementFeatureModel": { "type": "object", "properties": { "name": { "type": "string", "title": "String" } }, "xml": { "name": "EntitlementFeatureModel" }, "title": "EntitlementFeatureModel" }, "DocumentModel": { "type": "object", "properties": { "id": { "format": "int32", "type": "integer", "title": "Int32" }, "friendlyName": { "type": "string", "title": "String" }, "dateCreated": { "format": "date-time", "type": "string", "title": "DateTime" }, "visibleToAllEmployees": { "type": "boolean", "title": "Boolean" }, "selectedGroups": { "type": "array", "items": { "$ref": "#/definitions/EmployeeGroupItemModel" }, "xml": { "name": "EmployeeGroupItemModel", "wrapped": true }, "title": "List" } }, "xml": { "name": "DocumentModel" }, "title": "DocumentModel" }, "EmployeeGroupItemModel": { "type": "object", "properties": { "id": { "format": "int32", "type": "integer", "title": "Int32" }, "name": { "type": "string", "title": "String" } }, "xml": { "name": "EmployeeGroupItemModel" }, "title": "EmployeeGroupItemModel" }, "UpdateDocumentPermissionsModel": { "type": "object", "properties": { "id": { "format": "int32", "type": "integer", "title": "Int32" }, "visibleToAll": { "type": "boolean", "title": "Boolean" }, "employeeGroups": { "type": "array", "items": { "format": "int32", "type": "integer", "title": "Int32" }, "title": "List" } }, "xml": { "name": "UpdateDocumentPermissionsModel" }, "title": "UpdateDocumentPermissionsModel" }, "DocumentFile": { "type": "object", "properties": { "contentLength": { "format": "int64", "type": "integer", "title": "Int64" }, "contentType": { "type": "string", "title": "String" }, "bytes": { "format": "byte", "type": "string", "title": "Byte[]" }, "filename": { "type": "string", "title": "String" } }, "xml": { "name": "DocumentFile" }, "title": "DocumentFile" }, "ODataQueryOptions[Business]": { "type": "object", "properties": { "ifMatch": { "type": "object", "readOnly": true, "title": "ETag" }, "ifNoneMatch": { "type": "object", "readOnly": true, "title": "ETag" }, "context": { "$ref": "#/definitions/ODataQueryContext", "readOnly": true }, "request": { "type": "object", "readOnly": true, "title": "HttpRequestMessage" }, "rawValues": { "$ref": "#/definitions/ODataRawQueryOptions", "readOnly": true }, "selectExpand": { "$ref": "#/definitions/SelectExpandQueryOption", "readOnly": true }, "filter": { "$ref": "#/definitions/FilterQueryOption", "readOnly": true }, "orderBy": { "$ref": "#/definitions/OrderByQueryOption", "readOnly": true }, "skip": { "$ref": "#/definitions/SkipQueryOption", "readOnly": true }, "top": { "$ref": "#/definitions/TopQueryOption", "readOnly": true }, "inlineCount": { "$ref": "#/definitions/InlineCountQueryOption", "readOnly": true }, "validator": { "$ref": "#/definitions/ODataQueryValidator" } }, "xml": { "name": "ODataQueryOptions`1" }, "title": "ODataQueryOptions" }, "BusinessModel": { "type": "object", "properties": { "id": { "format": "int32", "type": "integer", "title": "Int32" }, "name": { "type": "string", "title": "String" }, "abn": { "type": "string", "title": "String" }, "registrationNumber": { "type": "string", "title": "String" }, "legalName": { "type": "string", "title": "String" }, "contactName": { "type": "string", "title": "String" }, "contactEmailAddress": { "type": "string", "title": "String" }, "contactPhoneNumber": { "type": "string", "title": "String" }, "contactFaxNumber": { "type": "string", "title": "String" }, "externalId": { "type": "string", "title": "String" }, "standardHoursPerDay": { "format": "double", "type": "number", "title": "Decimal" }, "integratedTimesheetsEnabled": { "type": "boolean", "title": "Boolean" }, "journalService": { "type": "string", "title": "String" }, "endOfWeek": { "enum": [ "Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday" ], "type": "string", "title": "DayOfWeek" }, "initialFinancialYearStart": { "format": "int32", "type": "integer", "title": "Nullable" }, "managersCanEditRosterBudgets": { "type": "boolean", "title": "Nullable" }, "budgetWarningPercent": { "format": "double", "type": "number", "title": "Nullable" }, "budgetEntryMethod": { "enum": [ "PercentageOfSales", "Direct" ], "type": "string", "title": "BudgetEntryMethodEnum" }, "addressLine1": { "type": "string", "title": "String" }, "addressLine2": { "type": "string", "title": "String" }, "suburb": { "type": "string", "title": "String" }, "postCode": { "type": "string", "title": "String" }, "state": { "type": "string", "title": "String" }, "whiteLabelName": { "type": "string", "title": "String" }, "dateCreated": { "format": "date-time", "type": "string", "title": "DateTime" }, "city": { "type": "string", "title": "String" }, "county": { "type": "string", "title": "String" } }, "xml": { "name": "BusinessModel" }, "title": "BusinessModel" }, "BusinessAccessModel": { "type": "object", "properties": { "accessType": { "enum": [ "Unrestricted", "Restricted" ], "type": "string", "title": "RelatedUserType" }, "employeeGroups": { "type": "array", "items": { "$ref": "#/definitions/EmployeeGroupAccessModel" }, "xml": { "name": "EmployeeGroupAccessModel", "wrapped": true }, "title": "IList" }, "locationAccess": { "type": "array", "items": { "$ref": "#/definitions/LocationAccessModel" }, "xml": { "name": "LocationAccessModel", "wrapped": true }, "title": "IList" }, "reports": { "$ref": "#/definitions/ReportAccessModel" }, "name": { "type": "string", "title": "String" }, "email": { "type": "string", "title": "String" } }, "xml": { "name": "BusinessAccessModel" }, "title": "BusinessAccessModel" }, "EmployeeGroupAccessModel": { "type": "object", "properties": { "employeeGroupId": { "format": "int32", "type": "integer", "title": "Int32" }, "permissions": { "enum": [ "ApproveTimesheets", "ApproveLeaveRequests", "CreateTimesheets", "CreateLeaveRequests", "ViewLeaveRequests", "ManageRosters", "ViewRosters", "ViewShiftCosts", "ViewExpenses", "CreateExpenses", "ApproveExpenses", "CreateTasks" ], "type": "string", "title": "UserPermission" } }, "xml": { "name": "EmployeeGroupAccessModel" }, "title": "EmployeeGroupAccessModel" }, "LocationAccessModel": { "type": "object", "properties": { "filterType": { "enum": [ "Location", "LocationOrParents" ], "type": "string", "title": "LocationRestrictionFilterTypeEnum" }, "locationIds": { "type": "array", "items": { "format": "int32", "type": "integer", "title": "Int32" }, "title": "List" }, "permissions": { "enum": [ "ApproveTimesheets", "ApproveLeaveRequests", "CreateTimesheets", "CreateLeaveRequests", "ViewLeaveRequests", "ManageRosters", "ViewRosters", "ViewShiftCosts", "ViewExpenses", "CreateExpenses", "ApproveExpenses", "CreateTasks" ], "type": "string", "title": "UserPermission" } }, "xml": { "name": "LocationAccessModel" }, "title": "LocationAccessModel" }, "ReportAccessModel": { "type": "object", "properties": { "accessType": { "enum": [ "None", "AllReports", "SpecificReports" ], "type": "string", "title": "ReportAccessType" }, "specificReports": { "enum": [ "DetailedActivityReport", "PayRunComparisonReport", "SuperContributionsReport", "OrdinaryTimeEarningsReport", "DeductionsReport", "PayrollTaxReport", "PaygReport", "PayCategoriesReport", "PayRunAuditReport", "CostingReport", "TimesheetReport", "ExpensesReport", "PaymentHistoryReport", "LeaveBalancesReport", "LeaveLiabilityReport", "LeaveHistoryReport", "BirthdayReport", "EmployeeDetailsReport", "UnpaidEmployeesReport", "QualificationsReport", "EmployeeSatisfactionReport", "AttendanceReport", "EmergencyContactsReport", "EmployerLiabilitiesReport", "PayRunVarianceReport", "EmployeeDetailsAuditReport", "GrossToNetReport", "LiveView", "TasksReport", "ShiftSwappingReport" ], "type": "string", "title": "ReportEnum" } }, "xml": { "name": "ReportAccessModel" }, "title": "ReportAccessModel" }, "CreateBusinessAccessModel": { "type": "object", "properties": { "suppressNotificationEmails": { "type": "boolean", "title": "Boolean" }, "accessType": { "enum": [ "Unrestricted", "Restricted" ], "type": "string", "title": "RelatedUserType" }, "employeeGroups": { "type": "array", "items": { "$ref": "#/definitions/EmployeeGroupAccessModel" }, "xml": { "name": "EmployeeGroupAccessModel", "wrapped": true }, "title": "IList" }, "locationAccess": { "type": "array", "items": { "$ref": "#/definitions/LocationAccessModel" }, "xml": { "name": "LocationAccessModel", "wrapped": true }, "title": "IList" }, "reports": { "$ref": "#/definitions/ReportAccessModel" }, "name": { "type": "string", "title": "String" }, "email": { "type": "string", "title": "String" } }, "xml": { "name": "CreateBusinessAccessModel" }, "title": "CreateBusinessAccessModel" }, "AccessModel": { "type": "object", "properties": { "name": { "type": "string", "title": "String" }, "email": { "type": "string", "title": "String" } }, "xml": { "name": "AccessModel" }, "title": "AccessModel" }, "ODataQueryOptions[DeductionCategory]": { "type": "object", "properties": { "ifMatch": { "type": "object", "readOnly": true, "title": "ETag" }, "ifNoneMatch": { "type": "object", "readOnly": true, "title": "ETag" }, "context": { "$ref": "#/definitions/ODataQueryContext", "readOnly": true }, "request": { "type": "object", "readOnly": true, "title": "HttpRequestMessage" }, "rawValues": { "$ref": "#/definitions/ODataRawQueryOptions", "readOnly": true }, "selectExpand": { "$ref": "#/definitions/SelectExpandQueryOption", "readOnly": true }, "filter": { "$ref": "#/definitions/FilterQueryOption", "readOnly": true }, "orderBy": { "$ref": "#/definitions/OrderByQueryOption", "readOnly": true }, "skip": { "$ref": "#/definitions/SkipQueryOption", "readOnly": true }, "top": { "$ref": "#/definitions/TopQueryOption", "readOnly": true }, "inlineCount": { "$ref": "#/definitions/InlineCountQueryOption", "readOnly": true }, "validator": { "$ref": "#/definitions/ODataQueryValidator" } }, "xml": { "name": "ODataQueryOptions`1" }, "title": "ODataQueryOptions" }, "DeductionCategoryModel": { "type": "object", "properties": { "id": { "format": "int32", "type": "integer", "title": "Int32" }, "name": { "type": "string", "title": "String" }, "taxExempt": { "type": "boolean", "title": "Boolean" }, "source": { "type": "string", "title": "String" }, "externalId": { "type": "string", "title": "String" }, "sgcCalculationImpact": { "enum": [ "None", "ReducesOTE", "ReducesOTEAndSGC" ], "type": "string", "title": "SGCCalculationImpactEnum" }, "paymentSummaryClassification": { "enum": [ "Default", "UnionOrProfessionalAssociationFees", "WorkplaceGiving" ], "type": "string", "title": "DeductionCategoryPaymentSummaryClassification" }, "expenseGeneralLedgerMappingCode": { "type": "string", "title": "String" }, "liabilityGeneralLedgerMappingCode": { "type": "string", "title": "String" } }, "xml": { "name": "DeductionCategoryModel" }, "title": "DeductionCategoryModel" }, "WorkTypeModel": { "type": "object", "properties": { "id": { "format": "int32", "type": "integer", "title": "Int32" }, "name": { "type": "string", "title": "String" }, "payCategoryId": { "format": "int32", "type": "integer", "title": "Nullable" }, "leaveCategoryId": { "format": "int32", "type": "integer", "title": "Nullable" }, "externalId": { "type": "string", "title": "String" }, "source": { "type": "string", "title": "String" }, "accruesLeave": { "type": "boolean", "title": "Boolean" }, "employmentTypes": { "type": "array", "items": { "enum": [ "Unknown", "FullTime", "PartTime", "LabourHire", "SuperannuationIncomeStream", "Casual" ], "type": "string", "title": "EmploymentTypeEnum" }, "xml": { "name": "EmploymentTypeEnum", "wrapped": true }, "title": "IList" }, "mappingType": { "enum": [ "PayCategory", "LeaveCategory", "PrimaryPayCategory", "ShiftCondition" ], "type": "string", "title": "Nullable" }, "shortCode": { "type": "string", "title": "String" } }, "xml": { "name": "WorkTypeModel" }, "title": "WorkTypeModel" }, "ProfileImageMetadata": { "type": "object", "properties": { "contentType": { "type": "string", "title": "String" }, "extension": { "type": "string", "title": "String" }, "width": { "format": "int32", "type": "integer", "title": "Nullable" }, "height": { "format": "int32", "type": "integer", "title": "Nullable" } }, "xml": { "name": "ProfileImageMetadata" }, "title": "ProfileImageMetadata" }, "ODataQueryOptions[Employee]": { "type": "object", "properties": { "ifMatch": { "type": "object", "readOnly": true, "title": "ETag" }, "ifNoneMatch": { "type": "object", "readOnly": true, "title": "ETag" }, "context": { "$ref": "#/definitions/ODataQueryContext", "readOnly": true }, "request": { "type": "object", "readOnly": true, "title": "HttpRequestMessage" }, "rawValues": { "$ref": "#/definitions/ODataRawQueryOptions", "readOnly": true }, "selectExpand": { "$ref": "#/definitions/SelectExpandQueryOption", "readOnly": true }, "filter": { "$ref": "#/definitions/FilterQueryOption", "readOnly": true }, "orderBy": { "$ref": "#/definitions/OrderByQueryOption", "readOnly": true }, "skip": { "$ref": "#/definitions/SkipQueryOption", "readOnly": true }, "top": { "$ref": "#/definitions/TopQueryOption", "readOnly": true }, "inlineCount": { "$ref": "#/definitions/InlineCountQueryOption", "readOnly": true }, "validator": { "$ref": "#/definitions/ODataQueryValidator" } }, "xml": { "name": "ODataQueryOptions`1" }, "title": "ODataQueryOptions" }, "EmployeeDetailsModel": { "type": "object", "properties": { "id": { "format": "int32", "type": "integer", "title": "Int32" }, "title": { "type": "string", "title": "String" }, "firstName": { "type": "string", "title": "String" }, "preferredName": { "type": "string", "title": "String" }, "middleName": { "type": "string", "title": "String" }, "surname": { "type": "string", "title": "String" }, "gender": { "type": "string", "title": "String" }, "dateOfBirth": { "format": "date-time", "type": "string", "title": "Nullable" }, "anniversaryDate": { "format": "date-time", "type": "string", "title": "Nullable" }, "externalId": { "type": "string", "title": "String" }, "residentialStreetAddress": { "type": "string", "title": "String" }, "residentialAddressLine2": { "type": "string", "title": "String" }, "residentialSuburb": { "type": "string", "title": "String" }, "residentialState": { "type": "string", "title": "String" }, "residentialPostCode": { "type": "string", "title": "String" }, "postalStreetAddress": { "type": "string", "title": "String" }, "postalAddressLine2": { "type": "string", "title": "String" }, "postalSuburb": { "type": "string", "title": "String" }, "postalState": { "type": "string", "title": "String" }, "postalPostCode": { "type": "string", "title": "String" }, "emailAddress": { "type": "string", "title": "String" }, "homePhone": { "type": "string", "title": "String" }, "workPhone": { "type": "string", "title": "String" }, "mobilePhone": { "type": "string", "title": "String" }, "startDate": { "format": "date-time", "type": "string", "title": "Nullable" }, "endDate": { "format": "date-time", "type": "string", "title": "Nullable" }, "residentialCity": { "type": "string", "title": "String" }, "residentialCounty": { "type": "string", "title": "String" }, "postalCity": { "type": "string", "title": "String" }, "postalCounty": { "type": "string", "title": "String" } }, "xml": { "name": "EmployeeDetailsModel" }, "title": "EmployeeDetailsModel" }, "EmployeesFilter": { "type": "object", "properties": { "payScheduleId": { "format": "int32", "type": "integer", "title": "Nullable" }, "locationId": { "format": "int32", "type": "integer", "title": "Nullable" } }, "xml": { "name": "EmployeesFilter" }, "title": "EmployeesFilter" }, "ODataQueryOptions[UnstructuredEmployeeModel]": { "type": "object", "properties": { "ifMatch": { "type": "object", "readOnly": true, "title": "ETag" }, "ifNoneMatch": { "type": "object", "readOnly": true, "title": "ETag" }, "context": { "$ref": "#/definitions/ODataQueryContext", "readOnly": true }, "request": { "type": "object", "readOnly": true, "title": "HttpRequestMessage" }, "rawValues": { "$ref": "#/definitions/ODataRawQueryOptions", "readOnly": true }, "selectExpand": { "$ref": "#/definitions/SelectExpandQueryOption", "readOnly": true }, "filter": { "$ref": "#/definitions/FilterQueryOption", "readOnly": true }, "orderBy": { "$ref": "#/definitions/OrderByQueryOption", "readOnly": true }, "skip": { "$ref": "#/definitions/SkipQueryOption", "readOnly": true }, "top": { "$ref": "#/definitions/TopQueryOption", "readOnly": true }, "inlineCount": { "$ref": "#/definitions/InlineCountQueryOption", "readOnly": true }, "validator": { "$ref": "#/definitions/ODataQueryValidator" } }, "xml": { "name": "ODataQueryOptions`1" }, "title": "ODataQueryOptions" }, "UnstructuredEmployeeModel": { "type": "object", "properties": { "status": { "enum": [ "Active", "Terminated", "Incomplete" ], "type": "string", "title": "EmployeeStatusEnum" }, "dateCreated": { "format": "date-time", "type": "string", "title": "DateTime" }, "residentialCity": { "type": "string", "title": "String" }, "residentialCounty": { "type": "string", "title": "String" }, "postalCity": { "type": "string", "title": "String" }, "postalCounty": { "type": "string", "title": "String" }, "id": { "format": "int32", "type": "integer", "title": "Int32" }, "taxFileNumber": { "type": "string", "title": "String" }, "title": { "type": "string", "title": "String" }, "preferredName": { "type": "string", "title": "String" }, "firstName": { "type": "string", "title": "String" }, "middleName": { "type": "string", "title": "String" }, "surname": { "type": "string", "title": "String" }, "dateOfBirth": { "format": "date-time", "type": "string", "title": "Nullable" }, "gender": { "type": "string", "title": "String" }, "externalId": { "type": "string", "title": "String" }, "residentialStreetAddress": { "type": "string", "title": "String" }, "residentialAddressLine2": { "type": "string", "title": "String" }, "residentialSuburb": { "type": "string", "title": "String" }, "residentialState": { "type": "string", "title": "String" }, "residentialPostCode": { "type": "string", "title": "String" }, "postalStreetAddress": { "type": "string", "title": "String" }, "postalAddressLine2": { "type": "string", "title": "String" }, "postalSuburb": { "type": "string", "title": "String" }, "postalState": { "type": "string", "title": "String" }, "postalPostCode": { "type": "string", "title": "String" }, "emailAddress": { "type": "string", "title": "String" }, "homePhone": { "type": "string", "title": "String" }, "workPhone": { "type": "string", "title": "String" }, "mobilePhone": { "type": "string", "title": "String" }, "startDate": { "format": "date-time", "type": "string", "title": "Nullable" }, "endDate": { "format": "date-time", "type": "string", "title": "Nullable" }, "anniversaryDate": { "format": "date-time", "type": "string", "title": "Nullable" }, "tags": { "type": "string", "title": "String" }, "employingEntityABN": { "type": "string", "title": "String" }, "employmentType": { "type": "string", "title": "String" }, "previousSurname": { "type": "string", "title": "String" }, "australianResident": { "type": "string", "title": "String" }, "claimTaxFreeThreshold": { "type": "string", "title": "String" }, "seniorsTaxOffset": { "type": "string", "title": "String" }, "otherTaxOffset": { "type": "string", "title": "String" }, "helpDebt": { "type": "string", "title": "String" }, "afsDebt": { "type": "string", "title": "String" }, "isExemptFromFloodLevy": { "type": "string", "title": "String" }, "hasApprovedWorkingHolidayVisa": { "type": "string", "title": "String" }, "hasWithholdingVariation": { "type": "string", "title": "String" }, "taxVariation": { "type": "string", "title": "String" }, "dateTaxFileDeclarationSigned": { "format": "date-time", "type": "string", "title": "Nullable" }, "dateTaxFileDeclarationReported": { "format": "date-time", "type": "string", "title": "Nullable" }, "jobTitle": { "type": "string", "title": "String" }, "paySchedule": { "type": "string", "title": "String" }, "primaryPayCategory": { "type": "string", "title": "String" }, "primaryLocation": { "type": "string", "title": "String" }, "paySlipNotificationType": { "type": "string", "title": "String" }, "rate": { "format": "double", "type": "number", "title": "Nullable" }, "overrideTemplateRate": { "type": "string", "title": "String" }, "rateUnit": { "type": "string", "title": "String" }, "hoursPerWeek": { "format": "double", "type": "number", "title": "Nullable" }, "automaticallyPayEmployee": { "type": "string", "title": "String" }, "leaveTemplate": { "type": "string", "title": "String" }, "payRateTemplate": { "type": "string", "title": "String" }, "payConditionRuleSet": { "type": "string", "title": "String" }, "employmentAgreement": { "type": "string", "title": "String" }, "isEnabledForTimesheets": { "type": "string", "title": "String" }, "isExemptFromPayrollTax": { "type": "string", "title": "String" }, "locations": { "type": "string", "title": "String" }, "workTypes": { "type": "string", "title": "String" }, "emergencyContact1_Name": { "type": "string", "title": "String" }, "emergencyContact1_Relationship": { "type": "string", "title": "String" }, "emergencyContact1_Address": { "type": "string", "title": "String" }, "emergencyContact1_ContactNumber": { "type": "string", "title": "String" }, "emergencyContact1_AlternateContactNumber": { "type": "string", "title": "String" }, "emergencyContact2_Name": { "type": "string", "title": "String" }, "emergencyContact2_Relationship": { "type": "string", "title": "String" }, "emergencyContact2_Address": { "type": "string", "title": "String" }, "emergencyContact2_ContactNumber": { "type": "string", "title": "String" }, "emergencyContact2_AlternateContactNumber": { "type": "string", "title": "String" }, "bankAccount1_BSB": { "type": "string", "title": "String" }, "bankAccount1_AccountNumber": { "type": "string", "title": "String" }, "bankAccount1_AccountName": { "type": "string", "title": "String" }, "bankAccount1_AllocatedPercentage": { "format": "double", "type": "number", "title": "Nullable" }, "bankAccount1_FixedAmount": { "format": "double", "type": "number", "title": "Nullable" }, "bankAccount2_BSB": { "type": "string", "title": "String" }, "bankAccount2_AccountNumber": { "type": "string", "title": "String" }, "bankAccount2_AccountName": { "type": "string", "title": "String" }, "bankAccount2_AllocatedPercentage": { "format": "double", "type": "number", "title": "Nullable" }, "bankAccount2_FixedAmount": { "format": "double", "type": "number", "title": "Nullable" }, "bankAccount3_BSB": { "type": "string", "title": "String" }, "bankAccount3_AccountNumber": { "type": "string", "title": "String" }, "bankAccount3_AccountName": { "type": "string", "title": "String" }, "bankAccount3_AllocatedPercentage": { "format": "double", "type": "number", "title": "Nullable" }, "bankAccount3_FixedAmount": { "format": "double", "type": "number", "title": "Nullable" }, "superFund1_ProductCode": { "type": "string", "title": "String" }, "superFund1_FundName": { "type": "string", "title": "String" }, "superFund1_MemberNumber": { "type": "string", "title": "String" }, "superFund1_AllocatedPercentage": { "format": "double", "type": "number", "title": "Nullable" }, "superFund1_FixedAmount": { "format": "double", "type": "number", "title": "Nullable" }, "superFund2_ProductCode": { "type": "string", "title": "String" }, "superFund2_FundName": { "type": "string", "title": "String" }, "superFund2_MemberNumber": { "type": "string", "title": "String" }, "superFund2_AllocatedPercentage": { "format": "double", "type": "number", "title": "Nullable" }, "superFund2_FixedAmount": { "format": "double", "type": "number", "title": "Nullable" }, "superFund3_ProductCode": { "type": "string", "title": "String" }, "superFund3_FundName": { "type": "string", "title": "String" }, "superFund3_MemberNumber": { "type": "string", "title": "String" }, "superFund3_AllocatedPercentage": { "format": "double", "type": "number", "title": "Nullable" }, "superFund3_FixedAmount": { "format": "double", "type": "number", "title": "Nullable" }, "superThresholdAmount": { "format": "double", "type": "number", "title": "Nullable" }, "maximumQuarterlySuperContributionsBase": { "format": "double", "type": "number", "title": "Nullable" }, "rosteringNotificationChoices": { "type": "string", "title": "String" }, "medicareLevyExemption": { "type": "string", "title": "String" } }, "xml": { "name": "UnstructuredEmployeeModel" }, "title": "UnstructuredEmployeeModel" }, "LeaveBalanceModel": { "type": "object", "properties": { "leaveCategoryId": { "format": "int32", "type": "integer", "title": "Int32" }, "leaveCategoryName": { "type": "string", "title": "String" }, "accruedAmount": { "format": "double", "type": "number", "title": "Decimal" } }, "xml": { "name": "LeaveBalanceModel" }, "title": "LeaveBalanceModel" }, "EmployeeNoteModel": { "type": "object", "properties": { "id": { "format": "int32", "type": "integer", "title": "Int32" }, "user": { "type": "string", "title": "String" }, "dateTime": { "format": "date-time", "type": "string", "title": "DateTime" }, "note": { "type": "string", "title": "String" } }, "xml": { "name": "EmployeeNoteModel" }, "title": "EmployeeNoteModel" }, "CreateEmployeeNoteModel": { "type": "object", "properties": { "note": { "type": "string", "title": "String" } }, "xml": { "name": "CreateEmployeeNoteModel" }, "title": "CreateEmployeeNoteModel" }, "EmployeePayRateModel": { "type": "object", "properties": { "payCategoryId": { "format": "int32", "type": "integer", "title": "Int32" }, "payCategoryName": { "type": "string", "title": "String" }, "isPrimaryPayCategory": { "type": "boolean", "title": "Boolean" }, "accruesLeave": { "type": "boolean", "title": "Boolean" }, "rateUnit": { "type": "string", "title": "String" }, "rate": { "format": "double", "type": "number", "title": "Decimal" }, "calculatedRate": { "format": "double", "type": "number", "title": "Decimal" }, "hasSuperRateOverride": { "type": "boolean", "title": "Boolean" }, "superRate": { "format": "double", "type": "number", "title": "Nullable" } }, "xml": { "name": "EmployeePayRateModel" }, "title": "EmployeePayRateModel" }, "OpeningBalancesEditModel": { "type": "object", "properties": { "employeeId": { "format": "int32", "type": "integer", "title": "Nullable" }, "totalHours": { "format": "double", "type": "number", "title": "Nullable" }, "grossEarnings": { "format": "double", "type": "number", "title": "Nullable" }, "paygWithholdingAmount": { "format": "double", "type": "number", "title": "Nullable" }, "sfssAmount": { "format": "double", "type": "number", "title": "Nullable" }, "helpAmount": { "format": "double", "type": "number", "title": "Nullable" }, "superContribution": { "format": "double", "type": "number", "title": "Nullable" }, "employerContribution": { "format": "double", "type": "number", "title": "Nullable" }, "leaveBalances": { "type": "array", "items": { "$ref": "#/definitions/InitialLeaveBalanceModel" }, "xml": { "name": "InitialLeaveBalanceModel", "wrapped": true }, "title": "IList" }, "earningsLines": { "type": "array", "items": { "$ref": "#/definitions/InitialEarningsModel" }, "xml": { "name": "InitialEarningsModel", "wrapped": true }, "title": "IList" }, "deductions": { "type": "array", "items": { "$ref": "#/definitions/InitialDeductionModel" }, "xml": { "name": "InitialDeductionModel", "wrapped": true }, "title": "List" }, "employerLiabilities": { "type": "array", "items": { "$ref": "#/definitions/InitialEmployerLiabilityModel" }, "xml": { "name": "InitialEmployerLiabilityModel", "wrapped": true }, "title": "List" }, "etpTypeR": { "$ref": "#/definitions/OpeningBalancesEtpModel" }, "etpTypeO": { "$ref": "#/definitions/OpeningBalancesEtpModel" }, "financialYearStartingYear": { "format": "int32", "type": "integer", "title": "Nullable" }, "locationName": { "type": "string", "title": "String" } }, "xml": { "name": "OpeningBalancesEditModel" }, "title": "OpeningBalancesEditModel" }, "InitialLeaveBalanceModel": { "type": "object", "properties": { "leaveCategoryId": { "format": "int32", "type": "integer", "title": "Int32" }, "name": { "type": "string", "title": "String" }, "amount": { "format": "double", "type": "number", "title": "Decimal" } }, "xml": { "name": "InitialLeaveBalanceModel" }, "title": "InitialLeaveBalanceModel" }, "InitialEarningsModel": { "type": "object", "properties": { "payCategoryId": { "format": "int32", "type": "integer", "title": "Int32" }, "isStandardPayCategory": { "type": "boolean", "title": "Boolean" }, "payCategoryType": { "enum": [ "Standard", "LeaveLoading", "GenuineRedundancyLeavePayment", "OpeningBalanceAllowances", "EtpTypeRTaxable", "EtpTypeRTaxFree", "EtpTypeOTaxable", "EtpTypeOTaxFree", "EtpLumpSumD" ], "type": "string", "title": "PayCategoryType" }, "name": { "type": "string", "title": "String" }, "amount": { "format": "double", "type": "number", "title": "Decimal" } }, "xml": { "name": "InitialEarningsModel" }, "title": "InitialEarningsModel" }, "InitialDeductionModel": { "type": "object", "properties": { "deductionCategoryId": { "format": "int32", "type": "integer", "title": "Int32" }, "name": { "type": "string", "title": "String" }, "amount": { "format": "double", "type": "number", "title": "Decimal" }, "isRESC": { "type": "boolean", "title": "Boolean" }, "taxExempt": { "type": "boolean", "title": "Boolean" }, "isMemberVoluntary": { "type": "boolean", "title": "Boolean" } }, "xml": { "name": "InitialDeductionModel" }, "title": "InitialDeductionModel" }, "InitialEmployerLiabilityModel": { "type": "object", "properties": { "employerLiabilityCategoryId": { "format": "int32", "type": "integer", "title": "Int32" }, "name": { "type": "string", "title": "String" }, "amount": { "format": "double", "type": "number", "title": "Decimal" } }, "xml": { "name": "InitialEmployerLiabilityModel" }, "title": "InitialEmployerLiabilityModel" }, "OpeningBalancesEtpModel": { "type": "object", "properties": { "taxFreeComponent": { "format": "double", "type": "number", "title": "Nullable" }, "taxableComponent": { "format": "double", "type": "number", "title": "Nullable" }, "taxWithheld": { "format": "double", "type": "number", "title": "Nullable" }, "lumpSumD": { "format": "double", "type": "number", "title": "Nullable" }, "isAmended": { "type": "boolean", "title": "Boolean" }, "paymentDate": { "format": "date-time", "type": "string", "title": "Nullable" }, "generatePaymentSummary": { "type": "boolean", "title": "Boolean" } }, "xml": { "name": "OpeningBalancesEtpModel" }, "title": "OpeningBalancesEtpModel" }, "EmployeeAccessModel": { "type": "object", "properties": { "name": { "type": "string", "title": "String" }, "email": { "type": "string", "title": "String" } }, "xml": { "name": "EmployeeAccessModel" }, "title": "EmployeeAccessModel" }, "CreateEmployeeAccessModel": { "type": "object", "properties": { "suppressNotificationEmails": { "type": "boolean", "title": "Boolean" }, "name": { "type": "string", "title": "String" }, "email": { "type": "string", "title": "String" } }, "xml": { "name": "CreateEmployeeAccessModel" }, "title": "CreateEmployeeAccessModel" }, "BankAccountModel": { "type": "object", "properties": { "id": { "format": "int32", "type": "integer", "title": "Int32" }, "employeeId": { "format": "int32", "type": "integer", "title": "Int32" }, "bsb": { "type": "string", "title": "String" }, "accountName": { "type": "string", "title": "String" }, "accountNumber": { "type": "string", "title": "String" }, "allocatedPercentage": { "format": "double", "type": "number", "title": "Nullable" }, "fixedAmount": { "format": "double", "type": "number", "title": "Nullable" }, "allocateBalance": { "type": "boolean", "title": "Boolean" }, "isEmployeeEditable": { "type": "boolean", "title": "Boolean" }, "canBeDeleted": { "type": "boolean", "title": "Boolean" }, "accountType": { "enum": [ "Electronic", "ManualDeposit", "CashOrCheque", "Bpay" ], "type": "string", "title": "BankAccountTypeEnum" }, "externalReferenceId": { "type": "string", "title": "String" } }, "xml": { "name": "BankAccountModel" }, "title": "BankAccountModel" }, "SaveBankAccountResponseModel": { "type": "object", "properties": { "validationWarning": { "type": "string", "title": "String" }, "result": { "$ref": "#/definitions/BankAccountModel" } }, "xml": { "name": "SaveBankAccountResponseModel" }, "title": "SaveBankAccountResponseModel" }, "EmployeeDocumentModel": { "type": "object", "properties": { "id": { "format": "int32", "type": "integer", "title": "Int32" }, "friendlyName": { "type": "string", "title": "String" }, "dateCreated": { "format": "date-time", "type": "string", "title": "DateTime" }, "visible": { "type": "boolean", "title": "Boolean" }, "leaveRequestId": { "format": "int32", "type": "integer", "title": "Nullable" }, "timesheetLineId": { "format": "int32", "type": "integer", "title": "Nullable" } }, "xml": { "name": "EmployeeDocumentModel" }, "title": "EmployeeDocumentModel" }, "UpdateEmployeeDocumentPermissionsModel": { "type": "object", "properties": { "id": { "format": "int32", "type": "integer", "title": "Int32" }, "visible": { "type": "boolean", "title": "Boolean" } }, "xml": { "name": "UpdateEmployeeDocumentPermissionsModel" }, "title": "UpdateEmployeeDocumentPermissionsModel" }, "ODataQueryOptions[EmployeeExpenseCategory]": { "type": "object", "properties": { "ifMatch": { "type": "object", "readOnly": true, "title": "ETag" }, "ifNoneMatch": { "type": "object", "readOnly": true, "title": "ETag" }, "context": { "$ref": "#/definitions/ODataQueryContext", "readOnly": true }, "request": { "type": "object", "readOnly": true, "title": "HttpRequestMessage" }, "rawValues": { "$ref": "#/definitions/ODataRawQueryOptions", "readOnly": true }, "selectExpand": { "$ref": "#/definitions/SelectExpandQueryOption", "readOnly": true }, "filter": { "$ref": "#/definitions/FilterQueryOption", "readOnly": true }, "orderBy": { "$ref": "#/definitions/OrderByQueryOption", "readOnly": true }, "skip": { "$ref": "#/definitions/SkipQueryOption", "readOnly": true }, "top": { "$ref": "#/definitions/TopQueryOption", "readOnly": true }, "inlineCount": { "$ref": "#/definitions/InlineCountQueryOption", "readOnly": true }, "validator": { "$ref": "#/definitions/ODataQueryValidator" } }, "xml": { "name": "ODataQueryOptions`1" }, "title": "ODataQueryOptions" }, "EmployeeExpenseCategoryModel": { "type": "object", "properties": { "id": { "format": "int32", "type": "integer", "title": "Int32" }, "name": { "type": "string", "title": "String" }, "externalId": { "type": "string", "title": "String" }, "generalLedgerMappingCode": { "type": "string", "title": "String" }, "description": { "type": "string", "title": "String" }, "externalReferenceId": { "type": "string", "title": "String" }, "externalTaxCodeId": { "type": "string", "title": "String" }, "taxCode": { "type": "string", "title": "String" }, "taxRate": { "format": "double", "type": "number", "title": "Nullable" } }, "xml": { "name": "EmployeeExpenseCategoryModel" }, "title": "EmployeeExpenseCategoryModel" }, "JournalServiceTaxCode": { "type": "object", "properties": { "id": { "type": "string", "title": "String" }, "name": { "type": "string", "title": "String" }, "taxRate": { "format": "double", "type": "number", "title": "Decimal" } }, "xml": { "name": "JournalServiceTaxCode" }, "title": "JournalServiceTaxCode" }, "ODataQueryOptions[EmployeeExpenseRequest]": { "type": "object", "properties": { "ifMatch": { "type": "object", "readOnly": true, "title": "ETag" }, "ifNoneMatch": { "type": "object", "readOnly": true, "title": "ETag" }, "context": { "$ref": "#/definitions/ODataQueryContext", "readOnly": true }, "request": { "type": "object", "readOnly": true, "title": "HttpRequestMessage" }, "rawValues": { "$ref": "#/definitions/ODataRawQueryOptions", "readOnly": true }, "selectExpand": { "$ref": "#/definitions/SelectExpandQueryOption", "readOnly": true }, "filter": { "$ref": "#/definitions/FilterQueryOption", "readOnly": true }, "orderBy": { "$ref": "#/definitions/OrderByQueryOption", "readOnly": true }, "skip": { "$ref": "#/definitions/SkipQueryOption", "readOnly": true }, "top": { "$ref": "#/definitions/TopQueryOption", "readOnly": true }, "inlineCount": { "$ref": "#/definitions/InlineCountQueryOption", "readOnly": true }, "validator": { "$ref": "#/definitions/ODataQueryValidator" } }, "xml": { "name": "ODataQueryOptions`1" }, "title": "ODataQueryOptions" }, "ExpenseRequestResponseModel": { "type": "object", "properties": { "id": { "format": "int32", "type": "integer", "title": "Int32" }, "employeeId": { "format": "int32", "type": "integer", "title": "Int32" }, "employeeName": { "type": "string", "title": "String" }, "status": { "type": "string", "title": "String" }, "description": { "type": "string", "title": "String" }, "lineItems": { "type": "array", "items": { "$ref": "#/definitions/ExpenseRequestLineItemModel" }, "xml": { "name": "ExpenseRequestLineItemModel", "wrapped": true }, "title": "List" }, "attachments": { "type": "array", "items": { "$ref": "#/definitions/AttachmentModel" }, "xml": { "name": "AttachmentModel", "wrapped": true }, "title": "List" }, "statusUpdatedByUser": { "type": "string", "title": "String" }, "statusUpdateNotes": { "type": "string", "title": "String" }, "dateStatusUpdated": { "format": "date-time", "type": "string", "title": "DateTime" } }, "xml": { "name": "ExpenseRequestResponseModel" }, "title": "ExpenseRequestResponseModel" }, "ExpenseRequestLineItemModel": { "type": "object", "properties": { "expenseCategoryName": { "type": "string", "title": "String" }, "locationName": { "type": "string", "title": "String" }, "id": { "format": "int32", "type": "integer", "title": "Nullable" }, "expenseCategoryId": { "format": "int32", "type": "integer", "title": "Int32" }, "locationId": { "format": "int32", "type": "integer", "title": "Nullable" }, "notes": { "type": "string", "title": "String" }, "taxCode": { "type": "string", "title": "String" }, "taxCodeDisplayName": { "type": "string", "title": "String" }, "taxRate": { "format": "double", "type": "number", "title": "Nullable" }, "amount": { "format": "double", "type": "number", "title": "Decimal" }, "dateIncurred": { "format": "date-time", "type": "string", "title": "DateTime" } }, "xml": { "name": "ExpenseRequestLineItemModel" }, "title": "ExpenseRequestLineItemModel" }, "AttachmentModel": { "type": "object", "properties": { "id": { "format": "int32", "type": "integer", "title": "Nullable" }, "friendlyName": { "type": "string", "title": "String" }, "dateCreated": { "format": "date-time", "type": "string", "title": "Nullable" }, "url": { "type": "string", "title": "String" } }, "xml": { "name": "AttachmentModel" }, "title": "AttachmentModel" }, "ExpenseRequestEditModel": { "required": [ "employeeId" ], "type": "object", "properties": { "attachments": { "type": "array", "items": { "$ref": "#/definitions/AttachmentModel" }, "xml": { "name": "AttachmentModel", "wrapped": true }, "title": "List" }, "id": { "format": "int32", "type": "integer", "title": "Int32" }, "employeeId": { "format": "int32", "type": "integer", "title": "Int32" }, "description": { "maxLength": 255, "type": "string", "title": "String" }, "lineItems": { "type": "array", "items": { "$ref": "#/definitions/ExpenseRequestEditLineItemModel" }, "xml": { "name": "ExpenseRequestEditLineItemModel", "wrapped": true }, "title": "List" } }, "xml": { "name": "ExpenseRequestEditModel" }, "title": "ExpenseRequestEditModel" }, "ExpenseRequestEditLineItemModel": { "type": "object", "properties": { "id": { "format": "int32", "type": "integer", "title": "Nullable" }, "expenseCategoryId": { "format": "int32", "type": "integer", "title": "Int32" }, "locationId": { "format": "int32", "type": "integer", "title": "Nullable" }, "notes": { "type": "string", "title": "String" }, "taxCode": { "type": "string", "title": "String" }, "taxCodeDisplayName": { "type": "string", "title": "String" }, "taxRate": { "format": "double", "type": "number", "title": "Nullable" }, "amount": { "format": "double", "type": "number", "title": "Decimal" }, "dateIncurred": { "format": "date-time", "type": "string", "title": "DateTime" } }, "xml": { "name": "ExpenseRequestEditLineItemModel" }, "title": "ExpenseRequestEditLineItemModel" }, "EmployeeGroupModel": { "type": "object", "properties": { "id": { "format": "int32", "type": "integer", "title": "Int32" }, "name": { "type": "string", "title": "String" }, "filterCombinationStrategy": { "enum": [ "Or", "And" ], "type": "string", "title": "FilterCombinationStrategyEnum" }, "filters": { "type": "array", "items": { "$ref": "#/definitions/EmployeeFilterModel" }, "xml": { "name": "EmployeeFilterModel", "wrapped": true }, "title": "IList" } }, "xml": { "name": "EmployeeGroupModel" }, "title": "EmployeeGroupModel" }, "EmployeeFilterModel": { "type": "object", "properties": { "filterType": { "enum": [ "Location", "LocationOrParents", "Employee", "PaySchedule", "EmploymentType", "EmployingEntity", "Tag" ], "type": "string", "title": "FilterTypeEnum" }, "operator": { "enum": [ "In", "NotIn" ], "type": "string", "title": "FilterOperatorEnum" }, "value": { "type": "string", "title": "String" } }, "xml": { "name": "EmployeeFilterModel" }, "title": "EmployeeFilterModel" }, "DetailedEmployeeGroupModel": { "type": "object", "properties": { "matchingEmployees": { "type": "array", "items": { "$ref": "#/definitions/MatchingEmployeeModel" }, "xml": { "name": "MatchingEmployeeModel", "wrapped": true }, "title": "IList" }, "id": { "format": "int32", "type": "integer", "title": "Int32" }, "name": { "type": "string", "title": "String" }, "filterCombinationStrategy": { "enum": [ "Or", "And" ], "type": "string", "title": "FilterCombinationStrategyEnum" }, "filters": { "type": "array", "items": { "$ref": "#/definitions/EmployeeFilterModel" }, "xml": { "name": "EmployeeFilterModel", "wrapped": true }, "title": "IList" } }, "xml": { "name": "DetailedEmployeeGroupModel" }, "title": "DetailedEmployeeGroupModel" }, "MatchingEmployeeModel": { "type": "object", "properties": { "id": { "format": "int32", "type": "integer", "title": "Int32" }, "externalId": { "type": "string", "title": "String" }, "name": { "type": "string", "title": "String" } }, "xml": { "name": "MatchingEmployeeModel" }, "title": "MatchingEmployeeModel" }, "EmployeeQualificationDocumentModel": { "type": "object", "properties": { "id": { "format": "int32", "type": "integer", "title": "Int32" }, "name": { "type": "string", "title": "String" }, "dateCreated": { "format": "date-time", "type": "string", "title": "DateTime" }, "visible": { "type": "boolean", "title": "Boolean" } }, "xml": { "name": "EmployeeQualificationDocumentModel" }, "title": "EmployeeQualificationDocumentModel" }, "EmployeeQualificationModel": { "type": "object", "properties": { "qualificationId": { "format": "int32", "type": "integer", "title": "Int32" }, "name": { "type": "string", "title": "String" }, "expiryDate": { "format": "date-time", "type": "string", "title": "Nullable" }, "documents": { "type": "array", "items": { "$ref": "#/definitions/EmployeeQualificationDocumentModel" }, "xml": { "name": "EmployeeQualificationDocumentModel", "wrapped": true }, "title": "IList" }, "referenceNumber": { "type": "string", "title": "String" } }, "xml": { "name": "EmployeeQualificationModel" }, "title": "EmployeeQualificationModel" }, "EmployeeRecurringTaxAdjustmentModel": { "type": "object", "properties": { "adjustmentType": { "enum": [ "Fixed", "PercentageGross", "PercentageTaxableEarnings" ], "type": "string", "title": "TaxAdjustmentTypeEnum" }, "id": { "format": "int32", "type": "integer", "title": "Nullable" }, "employeeId": { "format": "int32", "type": "integer", "title": "Int32" }, "amount": { "format": "double", "type": "number", "title": "Decimal" }, "expiryDate": { "format": "date-time", "type": "string", "title": "Nullable" }, "fromDate": { "format": "date-time", "type": "string", "title": "DateTime" }, "maximumAmountPaid": { "format": "double", "type": "number", "title": "Nullable" }, "totalAmountPaid": { "format": "double", "type": "number", "title": "Decimal" }, "isActive": { "type": "boolean", "title": "Boolean" }, "notes": { "type": "string", "title": "String" } }, "xml": { "name": "EmployeeRecurringTaxAdjustmentModel" }, "title": "EmployeeRecurringTaxAdjustmentModel" }, "EmployeeRecurringSuperAdjustmentModel": { "type": "object", "properties": { "contributionType": { "enum": [ "SuperGuarantee", "SalarySacrifice", "MemberVoluntary", "EmployerContribution" ], "type": "string", "title": "SuperContributionType" }, "adjustmentType": { "enum": [ "Fixed", "PercentageGross", "PercentageOTE", "PercentageTaxableEarnings" ], "type": "string", "title": "SuperAdjustmentTypeEnum" }, "id": { "format": "int32", "type": "integer", "title": "Nullable" }, "employeeId": { "format": "int32", "type": "integer", "title": "Int32" }, "amount": { "format": "double", "type": "number", "title": "Decimal" }, "expiryDate": { "format": "date-time", "type": "string", "title": "Nullable" }, "fromDate": { "format": "date-time", "type": "string", "title": "DateTime" }, "maximumAmountPaid": { "format": "double", "type": "number", "title": "Nullable" }, "totalAmountPaid": { "format": "double", "type": "number", "title": "Decimal" }, "isActive": { "type": "boolean", "title": "Boolean" }, "notes": { "type": "string", "title": "String" } }, "xml": { "name": "EmployeeRecurringSuperAdjustmentModel" }, "title": "EmployeeRecurringSuperAdjustmentModel" }, "EmployerRecurringLiabilityModel": { "type": "object", "properties": { "employerLiabilityCategoryName": { "type": "string", "title": "String" }, "employerLiabilityCategoryId": { "format": "int32", "type": "integer", "title": "Int32" }, "liabilityType": { "enum": [ "Fixed", "PercentageGross", "PercentageOTE" ], "type": "string", "title": "EmployerRecurringLiabilityTypeEnum" }, "externalReferenceId": { "type": "string", "title": "String" }, "source": { "enum": [ "None", "Saasu", "Xero", "MYOB", "Deputy", "EmployeeTimePunch", "ClickSuper", "IntegratedTimesheets", "FileImport", "FileExport", "QuickBooks", "Harmony", "AwardStore", "Attache", "IntegratedRostering", "ReckonAccounts", "API", "MicroPower", "RosterLive", "NetSuite", "Kounta", "TimeAndAttendanceKiosk", "DetailedFileExport", "JonasPremier", "WageEasy", "Maestrano", "WorkZone", "EmployeePortal", "RosterTemplate", "Onboarding", "Admin", "WorkZoneClockOnOff" ], "type": "string", "title": "ExternalService" }, "id": { "format": "int32", "type": "integer", "title": "Nullable" }, "employeeId": { "format": "int32", "type": "integer", "title": "Int32" }, "amount": { "format": "double", "type": "number", "title": "Decimal" }, "expiryDate": { "format": "date-time", "type": "string", "title": "Nullable" }, "fromDate": { "format": "date-time", "type": "string", "title": "DateTime" }, "maximumAmountPaid": { "format": "double", "type": "number", "title": "Nullable" }, "totalAmountPaid": { "format": "double", "type": "number", "title": "Decimal" }, "isActive": { "type": "boolean", "title": "Boolean" }, "notes": { "type": "string", "title": "String" } }, "xml": { "name": "EmployerRecurringLiabilityModel" }, "title": "EmployerRecurringLiabilityModel" }, "EmployeeRecurringDeductionModel": { "type": "object", "properties": { "name": { "type": "string", "title": "String" }, "deductionCategoryId": { "format": "int32", "type": "integer", "title": "Int32" }, "paidTo": { "enum": [ "Manual", "BankAccount", "SuperFund", "Bpay" ], "type": "string", "title": "EmployeeRecurringDeductionPaidToEnum" }, "paidToAccountId": { "format": "int32", "type": "integer", "title": "Int32" }, "externalReferenceId": { "type": "string", "title": "String" }, "preservedEarningsAmountNotReachedAction": { "enum": [ "DoNotPay", "PayToLimit" ], "type": "string", "title": "DeductionAmountNotReachedEnum" }, "carryForwardUnpaidDeductions": { "type": "boolean", "title": "Boolean" }, "carryForwardAmount": { "format": "double", "type": "number", "title": "Decimal" }, "paymentReference": { "type": "string", "title": "String" }, "deductionType": { "enum": [ "NotSet", "Fixed", "PercentageGross", "PercentageOTE" ], "type": "string", "title": "DeductionTypeEnum" }, "preservedEarnings": { "type": "boolean", "title": "Boolean" }, "preservedEarningsAmount": { "format": "double", "type": "number", "title": "Decimal" }, "id": { "format": "int32", "type": "integer", "title": "Nullable" }, "employeeId": { "format": "int32", "type": "integer", "title": "Int32" }, "amount": { "format": "double", "type": "number", "title": "Decimal" }, "expiryDate": { "format": "date-time", "type": "string", "title": "Nullable" }, "fromDate": { "format": "date-time", "type": "string", "title": "DateTime" }, "maximumAmountPaid": { "format": "double", "type": "number", "title": "Nullable" }, "totalAmountPaid": { "format": "double", "type": "number", "title": "Decimal" }, "isActive": { "type": "boolean", "title": "Boolean" }, "notes": { "type": "string", "title": "String" } }, "xml": { "name": "EmployeeRecurringDeductionModel" }, "title": "EmployeeRecurringDeductionModel" }, "EmployeeRecurringExpenseModel": { "type": "object", "properties": { "name": { "type": "string", "title": "String" }, "expenseCategoryId": { "format": "int32", "type": "integer", "title": "Int32" }, "locationId": { "format": "int32", "type": "integer", "title": "Int32" }, "taxCode": { "type": "string", "title": "String" }, "taxCodeDisplayName": { "type": "string", "title": "String" }, "taxRate": { "format": "double", "type": "number", "title": "Nullable" }, "id": { "format": "int32", "type": "integer", "title": "Nullable" }, "employeeId": { "format": "int32", "type": "integer", "title": "Int32" }, "amount": { "format": "double", "type": "number", "title": "Decimal" }, "expiryDate": { "format": "date-time", "type": "string", "title": "Nullable" }, "fromDate": { "format": "date-time", "type": "string", "title": "DateTime" }, "maximumAmountPaid": { "format": "double", "type": "number", "title": "Nullable" }, "totalAmountPaid": { "format": "double", "type": "number", "title": "Decimal" }, "isActive": { "type": "boolean", "title": "Boolean" }, "notes": { "type": "string", "title": "String" } }, "xml": { "name": "EmployeeRecurringExpenseModel" }, "title": "EmployeeRecurringExpenseModel" }, "SuperFundModel": { "type": "object", "properties": { "id": { "format": "int32", "type": "integer", "title": "Int32" }, "employeeId": { "format": "int32", "type": "integer", "title": "Int32" }, "name": { "type": "string", "title": "String" }, "memberNumber": { "type": "string", "title": "String" }, "allocatedPercentage": { "format": "double", "type": "number", "title": "Nullable" }, "fixedAmount": { "format": "double", "type": "number", "title": "Nullable" }, "superProduct": { "$ref": "#/definitions/SuperProductModel" }, "allocateBalance": { "type": "boolean", "title": "Boolean" }, "canBeDeleted": { "type": "boolean", "title": "Boolean" } }, "xml": { "name": "SuperFundModel" }, "title": "SuperFundModel" }, "SuperProductModel": { "type": "object", "properties": { "id": { "format": "int32", "type": "integer", "title": "Int32" }, "abn": { "type": "string", "title": "String" }, "productCode": { "type": "string", "title": "String" }, "productType": { "type": "string", "title": "String" }, "businessName": { "type": "string", "title": "String" }, "displayName": { "type": "string", "title": "String" }, "productName": { "type": "string", "title": "String" }, "accountNumber": { "type": "string", "title": "String" }, "bsb": { "type": "string", "title": "String" }, "accountName": { "type": "string", "title": "String" }, "source": { "enum": [ "None", "Saasu", "Xero", "MYOB", "Deputy", "EmployeeTimePunch", "ClickSuper", "IntegratedTimesheets", "FileImport", "FileExport", "QuickBooks", "Harmony", "AwardStore", "Attache", "IntegratedRostering", "ReckonAccounts", "API", "MicroPower", "RosterLive", "NetSuite", "Kounta", "TimeAndAttendanceKiosk", "DetailedFileExport", "JonasPremier", "WageEasy", "Maestrano", "WorkZone", "EmployeePortal", "RosterTemplate", "Onboarding", "Admin", "WorkZoneClockOnOff" ], "type": "string", "title": "ExternalService" }, "electronicServiceAddress": { "type": "string", "title": "String" }, "email": { "type": "string", "title": "String" }, "externalReferenceId": { "type": "string", "title": "String" } }, "xml": { "name": "SuperProductModel" }, "title": "SuperProductModel" }, "SaveSuperFundModel": { "type": "object", "properties": { "memberNumber": { "type": "string", "title": "String" }, "allocatedPercentage": { "format": "double", "type": "number", "title": "Nullable" }, "fixedAmount": { "format": "double", "type": "number", "title": "Nullable" }, "productCode": { "type": "string", "title": "String" }, "fundName": { "type": "string", "title": "String" }, "allocateBalance": { "type": "boolean", "title": "Boolean" } }, "xml": { "name": "SaveSuperFundModel" }, "title": "SaveSuperFundModel" }, "SaveSuperFundResponseModel": { "type": "object", "properties": { "validationWarning": { "type": "string", "title": "String" }, "result": { "$ref": "#/definitions/SuperFundModel" } }, "xml": { "name": "SaveSuperFundResponseModel" }, "title": "SaveSuperFundResponseModel" }, "ODataQueryOptions[EmployerLiabilityCategory]": { "type": "object", "properties": { "ifMatch": { "type": "object", "readOnly": true, "title": "ETag" }, "ifNoneMatch": { "type": "object", "readOnly": true, "title": "ETag" }, "context": { "$ref": "#/definitions/ODataQueryContext", "readOnly": true }, "request": { "type": "object", "readOnly": true, "title": "HttpRequestMessage" }, "rawValues": { "$ref": "#/definitions/ODataRawQueryOptions", "readOnly": true }, "selectExpand": { "$ref": "#/definitions/SelectExpandQueryOption", "readOnly": true }, "filter": { "$ref": "#/definitions/FilterQueryOption", "readOnly": true }, "orderBy": { "$ref": "#/definitions/OrderByQueryOption", "readOnly": true }, "skip": { "$ref": "#/definitions/SkipQueryOption", "readOnly": true }, "top": { "$ref": "#/definitions/TopQueryOption", "readOnly": true }, "inlineCount": { "$ref": "#/definitions/InlineCountQueryOption", "readOnly": true }, "validator": { "$ref": "#/definitions/ODataQueryValidator" } }, "xml": { "name": "ODataQueryOptions`1" }, "title": "ODataQueryOptions" }, "EmployerLiabilityCategoryModel": { "type": "object", "properties": { "id": { "format": "int32", "type": "integer", "title": "Int32" }, "name": { "type": "string", "title": "String" }, "externalReferenceId": { "type": "string", "title": "String" }, "canBeDeleted": { "type": "boolean", "title": "Boolean" }, "hideFromPaySlips": { "type": "boolean", "title": "Boolean" }, "showTotalPayments": { "type": "boolean", "title": "Boolean" }, "includeInShiftCosts": { "type": "boolean", "title": "Boolean" } }, "xml": { "name": "EmployerLiabilityCategoryModel" }, "title": "EmployerLiabilityCategoryModel" }, "ODataQueryOptions[EmployingEntity]": { "type": "object", "properties": { "ifMatch": { "type": "object", "readOnly": true, "title": "ETag" }, "ifNoneMatch": { "type": "object", "readOnly": true, "title": "ETag" }, "context": { "$ref": "#/definitions/ODataQueryContext", "readOnly": true }, "request": { "type": "object", "readOnly": true, "title": "HttpRequestMessage" }, "rawValues": { "$ref": "#/definitions/ODataRawQueryOptions", "readOnly": true }, "selectExpand": { "$ref": "#/definitions/SelectExpandQueryOption", "readOnly": true }, "filter": { "$ref": "#/definitions/FilterQueryOption", "readOnly": true }, "orderBy": { "$ref": "#/definitions/OrderByQueryOption", "readOnly": true }, "skip": { "$ref": "#/definitions/SkipQueryOption", "readOnly": true }, "top": { "$ref": "#/definitions/TopQueryOption", "readOnly": true }, "inlineCount": { "$ref": "#/definitions/InlineCountQueryOption", "readOnly": true }, "validator": { "$ref": "#/definitions/ODataQueryValidator" } }, "xml": { "name": "ODataQueryOptions`1" }, "title": "ODataQueryOptions" }, "EmployingEntityModel": { "type": "object", "properties": { "id": { "format": "int32", "type": "integer", "title": "Int32" }, "name": { "type": "string", "title": "String" }, "abn": { "type": "string", "title": "String" }, "contactName": { "type": "string", "title": "String" }, "signatoryName": { "type": "string", "title": "String" }, "contactEmailAddress": { "type": "string", "title": "String" }, "contactPhoneNumber": { "type": "string", "title": "String" }, "contactFaxNumber": { "type": "string", "title": "String" }, "addressLine1": { "type": "string", "title": "String" }, "addressLine2": { "type": "string", "title": "String" }, "suburb": { "type": "string", "title": "String" }, "state": { "type": "string", "title": "String" }, "postcode": { "type": "string", "title": "String" }, "externalReferenceId": { "type": "string", "title": "String" }, "isExemptFromFringeBenefitsTax": { "type": "boolean", "title": "Boolean" } }, "xml": { "name": "EmployingEntityModel" }, "title": "EmployingEntityModel" }, "ODataQueryOptions[EmploymentAgreement]": { "type": "object", "properties": { "ifMatch": { "type": "object", "readOnly": true, "title": "ETag" }, "ifNoneMatch": { "type": "object", "readOnly": true, "title": "ETag" }, "context": { "$ref": "#/definitions/ODataQueryContext", "readOnly": true }, "request": { "type": "object", "readOnly": true, "title": "HttpRequestMessage" }, "rawValues": { "$ref": "#/definitions/ODataRawQueryOptions", "readOnly": true }, "selectExpand": { "$ref": "#/definitions/SelectExpandQueryOption", "readOnly": true }, "filter": { "$ref": "#/definitions/FilterQueryOption", "readOnly": true }, "orderBy": { "$ref": "#/definitions/OrderByQueryOption", "readOnly": true }, "skip": { "$ref": "#/definitions/SkipQueryOption", "readOnly": true }, "top": { "$ref": "#/definitions/TopQueryOption", "readOnly": true }, "inlineCount": { "$ref": "#/definitions/InlineCountQueryOption", "readOnly": true }, "validator": { "$ref": "#/definitions/ODataQueryValidator" } }, "xml": { "name": "ODataQueryOptions`1" }, "title": "ODataQueryOptions" }, "BasicEmploymentAgreementModel": { "type": "object", "properties": { "id": { "format": "int32", "type": "integer", "title": "Int32" }, "classification": { "type": "string", "title": "String" }, "employmentType": { "enum": [ "Unknown", "FullTime", "PartTime", "LabourHire", "SuperannuationIncomeStream", "Casual" ], "type": "string", "title": "EmploymentTypeEnum" }, "name": { "type": "string", "title": "String" }, "awardName": { "type": "string", "title": "String" }, "rank": { "format": "int32", "type": "integer", "title": "Int32" } }, "xml": { "name": "BasicEmploymentAgreementModel" }, "title": "BasicEmploymentAgreementModel" }, "EmploymentAgreementModel": { "type": "object", "properties": { "id": { "format": "int32", "type": "integer", "title": "Int32" }, "classification": { "type": "string", "title": "String" }, "employmentType": { "enum": [ "Unknown", "FullTime", "PartTime", "LabourHire", "SuperannuationIncomeStream", "Casual" ], "type": "string", "title": "EmploymentTypeEnum" }, "payRateTemplateType": { "enum": [ "DateOfBirth", "Anniversary", "AnniversaryInMonths", "DateOfBirthAndAnniversaryInMonths" ], "type": "string", "title": "PayRateTemplateTypeEnum" }, "payConditionRuleSetId": { "format": "int32", "description": "in older serialised versions, the whole ruleset was included. in newer versions, only the ID is included", "type": "integer", "title": "Nullable" }, "payConditionRuleSet": { "$ref": "#/definitions/PayConditionRuleSetModel" }, "leaveAllowanceTemplates": { "type": "array", "items": { "$ref": "#/definitions/LeaveAllowanceTemplateModel" }, "xml": { "name": "LeaveAllowanceTemplateModel", "wrapped": true }, "title": "IList" }, "leaveAllowanceTemplateIds": { "type": "array", "items": { "format": "int32", "type": "integer", "title": "Int32" }, "title": "IList" }, "agePayRateTemplates": { "type": "array", "items": { "$ref": "#/definitions/EmploymentAgreementPayRateTemplateModel" }, "xml": { "name": "EmploymentAgreementPayRateTemplateModel", "wrapped": true }, "title": "IList" }, "externalId": { "type": "string", "title": "String" }, "source": { "enum": [ "None", "Saasu", "Xero", "MYOB", "Deputy", "EmployeeTimePunch", "ClickSuper", "IntegratedTimesheets", "FileImport", "FileExport", "QuickBooks", "Harmony", "AwardStore", "Attache", "IntegratedRostering", "ReckonAccounts", "API", "MicroPower", "RosterLive", "NetSuite", "Kounta", "TimeAndAttendanceKiosk", "DetailedFileExport", "JonasPremier", "WageEasy", "Maestrano", "WorkZone", "EmployeePortal", "RosterTemplate", "Onboarding", "Admin", "WorkZoneClockOnOff" ], "type": "string", "title": "ExternalService" }, "rank": { "format": "int32", "type": "integer", "title": "Int32" } }, "xml": { "name": "EmploymentAgreementModel" }, "title": "EmploymentAgreementModel" }, "PayConditionRuleSetModel": { "type": "object", "properties": { "id": { "format": "int32", "type": "integer", "title": "Int32" }, "name": { "type": "string", "title": "String" }, "description": { "type": "string", "title": "String" }, "periodType": { "enum": [ "Weekly", "Fortnightly", "Monthly", "CalendarMonth", "FourWeekly", "SixWeekly", "ThreeWeekly" ], "type": "string", "title": "RuleSetPeriodType" }, "dayOfWeekEnding": { "format": "int32", "type": "integer", "title": "Nullable" }, "dayOfMonthEnding": { "format": "int32", "type": "integer", "title": "Nullable" }, "periodEnding": { "format": "date-time", "type": "string", "title": "Nullable" }, "shiftConsolidationOption": { "enum": [ "None", "Duration", "SameDay" ], "type": "string", "title": "Nullable" }, "shiftConsolidationThreshold": { "type": "string", "title": "Nullable" }, "rulesJson": { "type": "string", "title": "String" } }, "xml": { "name": "PayConditionRuleSetModel" }, "title": "PayConditionRuleSetModel" }, "LeaveAllowanceTemplateModel": { "type": "object", "properties": { "id": { "format": "int32", "type": "integer", "title": "Int32" }, "name": { "type": "string", "title": "String" }, "leaveCategories": { "type": "array", "items": { "$ref": "#/definitions/LeaveAllowanceTemplateLeaveCategoryModel" }, "xml": { "name": "LeaveAllowanceTemplateLeaveCategoryModel", "wrapped": true }, "title": "IList" }, "externalId": { "type": "string", "title": "String" }, "source": { "enum": [ "None", "Saasu", "Xero", "MYOB", "Deputy", "EmployeeTimePunch", "ClickSuper", "IntegratedTimesheets", "FileImport", "FileExport", "QuickBooks", "Harmony", "AwardStore", "Attache", "IntegratedRostering", "ReckonAccounts", "API", "MicroPower", "RosterLive", "NetSuite", "Kounta", "TimeAndAttendanceKiosk", "DetailedFileExport", "JonasPremier", "WageEasy", "Maestrano", "WorkZone", "EmployeePortal", "RosterTemplate", "Onboarding", "Admin", "WorkZoneClockOnOff" ], "type": "string", "title": "ExternalService" } }, "xml": { "name": "LeaveAllowanceTemplateModel" }, "title": "LeaveAllowanceTemplateModel" }, "EmploymentAgreementPayRateTemplateModel": { "type": "object", "properties": { "payRateTemplateId": { "format": "int32", "type": "integer", "title": "Nullable" }, "payRateTemplate": { "$ref": "#/definitions/PayRateTemplateModel" }, "minAge": { "format": "int32", "type": "integer", "title": "Nullable" }, "maxAge": { "format": "int32", "type": "integer", "title": "Nullable" }, "minAnniversaryMonths": { "format": "int32", "type": "integer", "title": "Nullable" }, "maxAnniversaryMonths": { "format": "int32", "type": "integer", "title": "Nullable" } }, "xml": { "name": "EmploymentAgreementPayRateTemplateModel" }, "title": "EmploymentAgreementPayRateTemplateModel" }, "LeaveAllowanceTemplateLeaveCategoryModel": { "type": "object", "properties": { "leaveCategoryId": { "format": "int32", "type": "integer", "title": "Int32" }, "units": { "format": "double", "type": "number", "title": "Nullable" }, "unitType": { "enum": [ "Days", "Weeks", "HoursPerHourWorked", "HoursPerPayRun" ], "type": "string", "title": "Nullable" }, "leaveLoading": { "format": "double", "type": "number", "title": "Nullable" }, "canApplyForLeave": { "type": "boolean", "title": "Boolean" }, "contingentPeriod": { "format": "double", "type": "number", "title": "Nullable" }, "entitlementPeriod": { "format": "double", "type": "number", "title": "Nullable" } }, "xml": { "name": "LeaveAllowanceTemplateLeaveCategoryModel" }, "title": "LeaveAllowanceTemplateLeaveCategoryModel" }, "PayRateTemplateModel": { "type": "object", "properties": { "id": { "format": "int32", "type": "integer", "title": "Int32" }, "name": { "type": "string", "title": "String" }, "primaryPayCategoryId": { "format": "int32", "type": "integer", "title": "Int32" }, "superThresholdAmount": { "format": "double", "type": "number", "title": "Nullable" }, "payCategories": { "type": "array", "items": { "$ref": "#/definitions/PayRateTemplatePayCategoryModel" }, "xml": { "name": "PayRateTemplatePayCategoryModel", "wrapped": true }, "title": "List" }, "externalId": { "type": "string", "title": "String" }, "source": { "type": "string", "title": "String" }, "maximumQuarterlySuperContributionsBase": { "format": "double", "type": "number", "title": "Nullable" } }, "xml": { "name": "PayRateTemplateModel" }, "title": "PayRateTemplateModel" }, "PayRateTemplatePayCategoryModel": { "description": "TODO: Can we get away with not having UserSuppliedRate and CalculatedRate? can we just have 'Rate' and work \r\n(which is interpreted as UserSuppliedRate) and determine calculated rate from there?", "type": "object", "properties": { "payCategoryId": { "format": "int32", "type": "integer", "title": "Int32" }, "userSuppliedRate": { "format": "double", "type": "number", "title": "Decimal" }, "calculatedRate": { "format": "double", "type": "number", "title": "Decimal" }, "standardWeeklyHours": { "format": "double", "type": "number", "title": "Decimal" }, "superRate": { "format": "double", "type": "number", "title": "Nullable" } }, "xml": { "name": "PayRateTemplatePayCategoryModel" }, "title": "PayRateTemplatePayCategoryModel" }, "GetShiftPeriodsModel": { "type": "object", "properties": { "firstShiftStartTime": { "format": "date-time", "type": "string", "title": "Nullable" }, "lastShiftStartTime": { "format": "date-time", "type": "string", "title": "Nullable" } }, "xml": { "name": "GetShiftPeriodsModel" }, "title": "GetShiftPeriodsModel" }, "ShiftPeriodModel": { "type": "object", "properties": { "fromDate": { "format": "date-time", "type": "string", "title": "DateTime" }, "toDate": { "format": "date-time", "type": "string", "title": "DateTime" } }, "xml": { "name": "ShiftPeriodModel" }, "title": "ShiftPeriodModel" }, "ShiftCostingsRequestModel": { "type": "object", "properties": { "transactionExternalId": { "type": "string", "title": "String" }, "locationIdType": { "enum": [ "Standard", "External" ], "type": "string", "title": "IdType" }, "workTypeIdType": { "enum": [ "Standard", "External" ], "type": "string", "title": "IdType" }, "includeEvaluationResults": { "type": "boolean", "title": "Boolean" }, "employee": { "$ref": "#/definitions/ShiftCostingsEmployeeModel" }, "shifts": { "type": "array", "items": { "$ref": "#/definitions/ShiftCostingsRequestShiftModel" }, "xml": { "name": "ShiftCostingsRequestShiftModel", "wrapped": true }, "title": "IList" } }, "xml": { "name": "ShiftCostingsRequestModel" }, "title": "ShiftCostingsRequestModel" }, "ShiftCostingsEmployeeModel": { "type": "object", "properties": { "dateOfBirth": { "format": "date-time", "type": "string", "title": "Nullable" }, "anniversaryDate": { "format": "date-time", "type": "string", "title": "Nullable" }, "standardHoursPerWeek": { "format": "double", "type": "number", "title": "Nullable" }, "tags": { "type": "array", "items": { "type": "string", "title": "String" }, "title": "IList" } }, "xml": { "name": "ShiftCostingsEmployeeModel" }, "title": "ShiftCostingsEmployeeModel" }, "ShiftCostingsRequestShiftModel": { "type": "object", "properties": { "state": { "type": "string", "title": "String" }, "id": { "format": "int32", "type": "integer", "title": "Int32" }, "employeeId": { "format": "int32", "type": "integer", "title": "Int32" }, "startTime": { "format": "date-time", "type": "string", "title": "Nullable" }, "endTime": { "format": "date-time", "type": "string", "title": "Nullable" }, "units": { "format": "double", "type": "number", "title": "Nullable" }, "workTypeId": { "type": "string", "title": "String" }, "locationId": { "type": "string", "title": "String" }, "comments": { "type": "string", "title": "String" }, "breaks": { "type": "array", "items": { "$ref": "#/definitions/TimesheetBreakModel" }, "xml": { "name": "TimesheetBreakModel", "wrapped": true }, "title": "IList" }, "status": { "type": "string", "title": "String" }, "rate": { "format": "double", "type": "number", "title": "Nullable" }, "leaveCategoryId": { "type": "string", "title": "String" }, "payCategoryId": { "type": "string", "title": "String" }, "classificationId": { "type": "string", "title": "String" }, "externalId": { "type": "string", "title": "String" }, "source": { "enum": [ "None", "Saasu", "Xero", "MYOB", "Deputy", "EmployeeTimePunch", "ClickSuper", "IntegratedTimesheets", "FileImport", "FileExport", "QuickBooks", "Harmony", "AwardStore", "Attache", "IntegratedRostering", "ReckonAccounts", "API", "MicroPower", "RosterLive", "NetSuite", "Kounta", "TimeAndAttendanceKiosk", "DetailedFileExport", "JonasPremier", "WageEasy", "Maestrano", "WorkZone", "EmployeePortal", "RosterTemplate", "Onboarding", "Admin", "WorkZoneClockOnOff" ], "type": "string", "title": "ExternalService" }, "attachmentId": { "format": "int32", "type": "integer", "title": "Nullable" }, "shiftConditionIds": { "type": "array", "items": { "type": "string", "title": "String" }, "title": "IList" } }, "xml": { "name": "ShiftCostingsRequestShiftModel" }, "title": "ShiftCostingsRequestShiftModel" }, "TimesheetBreakModel": { "type": "object", "properties": { "startTime": { "format": "date-time", "type": "string", "title": "Nullable" }, "endTime": { "format": "date-time", "type": "string", "title": "Nullable" } }, "xml": { "name": "TimesheetBreakModel" }, "title": "TimesheetBreakModel" }, "ShiftCostingsResponseModel": { "type": "object", "properties": { "transactionId": { "format": "uuid", "type": "string", "example": "00000000-0000-0000-0000-000000000000", "title": "Guid" }, "transactionExternalId": { "type": "string", "title": "String" }, "employmentAgreementId": { "format": "int32", "type": "integer", "title": "Int32" }, "employmentAgreementName": { "type": "string", "title": "String" }, "payConditionRuleSetId": { "format": "int32", "type": "integer", "title": "Int32" }, "payConditionRuleSetName": { "type": "string", "title": "String" }, "shifts": { "type": "array", "items": { "$ref": "#/definitions/ShiftCostingsResponseShiftModel" }, "xml": { "name": "ShiftCostingsResponseShiftModel", "wrapped": true }, "title": "List" } }, "xml": { "name": "ShiftCostingsResponseModel" }, "title": "ShiftCostingsResponseModel" }, "ShiftCostingsResponseShiftModel": { "type": "object", "properties": { "externalId": { "type": "string", "title": "String" }, "startTime": { "format": "date-time", "type": "string", "title": "DateTime" }, "endTime": { "format": "date-time", "type": "string", "title": "DateTime" }, "cost": { "format": "double", "type": "number", "readOnly": true, "title": "Decimal" }, "evaluationResults": { "type": "array", "items": { "$ref": "#/definitions/RuleEvaluationResult" }, "xml": { "name": "RuleEvaluationResult", "wrapped": true }, "title": "IList" }, "consolidatedShifts": { "type": "array", "items": { "type": "string", "title": "String" }, "title": "List" }, "costBreakdown": { "type": "array", "items": { "$ref": "#/definitions/ShiftCostingBreakdownModel" }, "xml": { "name": "ShiftCostingBreakdownModel", "wrapped": true }, "title": "List" } }, "xml": { "name": "ShiftCostingsResponseShiftModel" }, "title": "ShiftCostingsResponseShiftModel" }, "RuleEvaluationResult": { "type": "object", "properties": { "ruleName": { "type": "string", "title": "String" }, "matchResult": { "enum": [ "NoMatch", "Match", "DisabledForRuleSet", "DisabledForEmployee" ], "type": "string", "title": "RuleMatchResult" } }, "xml": { "name": "RuleEvaluationResult" }, "title": "RuleEvaluationResult" }, "ShiftCostingBreakdownModel": { "type": "object", "properties": { "startTime": { "format": "date-time", "type": "string", "title": "Nullable" }, "endTime": { "format": "date-time", "type": "string", "title": "Nullable" }, "payCategoryId": { "format": "int32", "type": "integer", "title": "Nullable" }, "payCategoryName": { "type": "string", "title": "String" }, "units": { "format": "double", "type": "number", "title": "Decimal" }, "rate": { "format": "double", "type": "number", "title": "Decimal" }, "cost": { "format": "double", "type": "number", "title": "Decimal" }, "type": { "type": "string", "title": "String" }, "liabilityCategoryId": { "format": "int32", "type": "integer", "title": "Nullable" }, "liabilityCategoryName": { "type": "string", "title": "String" } }, "xml": { "name": "ShiftCostingBreakdownModel" }, "title": "ShiftCostingBreakdownModel" }, "EmployeeLeaveRequestFilter": { "type": "object", "properties": { "showOtherEmployees": { "type": "boolean", "title": "Boolean" }, "fromDate": { "format": "date-time", "type": "string", "title": "Nullable" }, "toDate": { "format": "date-time", "type": "string", "title": "Nullable" } }, "xml": { "name": "EmployeeLeaveRequestFilter" }, "title": "EmployeeLeaveRequestFilter" }, "EssLeaveRequestModel": { "type": "object", "properties": { "leaveCategoryId": { "format": "int32", "type": "integer", "title": "Int32" }, "isApproved": { "type": "boolean", "title": "Boolean" }, "isDeclined": { "type": "boolean", "title": "Boolean" }, "isCancelled": { "type": "boolean", "title": "Boolean" }, "isPending": { "type": "boolean", "title": "Boolean" }, "id": { "format": "int32", "type": "integer", "title": "Int32" }, "fromDate": { "format": "date-time", "type": "string", "title": "DateTime" }, "toDate": { "format": "date-time", "type": "string", "title": "DateTime" }, "requestedDate": { "format": "date-time", "type": "string", "title": "DateTime" }, "leaveCategoryName": { "type": "string", "title": "String" }, "hoursPerDay": { "format": "double", "type": "number", "title": "Decimal" }, "totalHours": { "format": "double", "type": "number", "title": "Decimal" }, "notes": { "type": "string", "title": "String" }, "totalDays": { "format": "double", "type": "number", "readOnly": true, "title": "Decimal" }, "amount": { "type": "string", "readOnly": true, "title": "String" }, "status": { "type": "string", "title": "String" }, "statusUpdateNotes": { "type": "string", "title": "String" }, "canCancel": { "type": "boolean", "title": "Boolean" }, "canModify": { "type": "boolean", "title": "Boolean" }, "requireNotesForLeaveRequests": { "type": "boolean", "title": "Boolean" }, "attachment": { "$ref": "#/definitions/AttachmentModel" } }, "xml": { "name": "EssLeaveRequestModel" }, "title": "EssLeaveRequestModel" }, "EssLeaveApplicationModel": { "required": [ "fromDate", "toDate", "hours", "leaveCategoryId" ], "type": "object", "properties": { "attachment": { "format": "byte", "type": "string", "title": "Byte[]" }, "attachmentId": { "format": "int32", "type": "integer", "title": "Nullable" }, "id": { "format": "int32", "type": "integer", "title": "Int32" }, "fromDate": { "format": "date-time", "type": "string", "title": "DateTime" }, "toDate": { "format": "date-time", "type": "string", "title": "DateTime" }, "hours": { "format": "double", "maximum": 2000, "type": "number", "title": "Decimal" }, "leaveCategoryId": { "format": "int32", "type": "integer", "title": "Nullable" }, "notes": { "maxLength": 255, "type": "string", "title": "String" } }, "xml": { "name": "EssLeaveApplicationModel" }, "title": "EssLeaveApplicationModel" }, "EssLeaveCategoryModel": { "type": "object", "properties": { "id": { "format": "int32", "type": "integer", "title": "Int32" }, "name": { "type": "string", "title": "String" } }, "xml": { "name": "EssLeaveCategoryModel" }, "title": "EssLeaveCategoryModel" }, "LeaveHoursEstimateFilter": { "required": [ "fromDate", "toDate" ], "type": "object", "properties": { "leaveCategoryId": { "format": "int32", "type": "integer", "title": "Int32" }, "fromDate": { "format": "date-time", "type": "string", "title": "DateTime" }, "toDate": { "format": "date-time", "type": "string", "title": "DateTime" } }, "xml": { "name": "LeaveHoursEstimateFilter" }, "title": "LeaveHoursEstimateFilter" }, "EssLeaveEstimate": { "type": "object", "properties": { "leaveBalance": { "format": "double", "type": "number", "title": "Nullable" }, "approvedLeave": { "format": "double", "type": "number", "title": "Nullable" }, "availableBalance": { "format": "double", "type": "number", "title": "Nullable" }, "leaveRequired": { "$ref": "#/definitions/LeaveEstimate" } }, "xml": { "name": "EssLeaveEstimate" }, "title": "EssLeaveEstimate" }, "LeaveEstimate": { "type": "object", "properties": { "employeeId": { "format": "int32", "type": "integer", "title": "Int32" }, "hours": { "format": "double", "type": "number", "title": "Nullable" }, "details": { "type": "array", "items": { "type": "string", "title": "String" }, "title": "IList" } }, "xml": { "name": "LeaveEstimate" }, "title": "LeaveEstimate" }, "EssEmployeeDetailsModel": { "description": "this exists to give it a separate name from the API EmployeeeDetailsModel. As an aside, we should have had an api specific model for this", "type": "object", "properties": { "id": { "format": "int32", "type": "integer", "title": "Int32" }, "titleId": { "format": "int32", "type": "integer", "title": "Int32" }, "firstName": { "type": "string", "title": "String" }, "otherName": { "type": "string", "title": "String" }, "middleName": { "type": "string", "title": "String" }, "surname": { "type": "string", "title": "String" }, "gender": { "type": "string", "title": "String" }, "dateOfBirth": { "format": "date-time", "type": "string", "title": "Nullable" }, "anniversaryDate": { "format": "date-time", "type": "string", "title": "Nullable" }, "externalId": { "type": "string", "title": "String" }, "residentialStreetAddress": { "type": "string", "title": "String" }, "residentialAddressLine2": { "type": "string", "title": "String" }, "residentialSuburbId": { "format": "int32", "type": "integer", "title": "Nullable" }, "residentialSuburb": { "type": "string", "title": "String" }, "residentialState": { "type": "string", "title": "String" }, "residentialPostcode": { "type": "string", "title": "String" }, "residentialCountry": { "type": "string", "title": "String" }, "postalStreetAddress": { "type": "string", "title": "String" }, "postalAddressLine2": { "type": "string", "title": "String" }, "postalSuburbId": { "format": "int32", "type": "integer", "title": "Nullable" }, "postalSuburb": { "type": "string", "title": "String" }, "postalState": { "type": "string", "title": "String" }, "postalPostcode": { "type": "string", "title": "String" }, "postalCountry": { "type": "string", "title": "String" }, "email": { "type": "string", "title": "String" }, "homePhone": { "type": "string", "title": "String" }, "workPhone": { "type": "string", "title": "String" }, "mobilePhone": { "type": "string", "title": "String" }, "startDate": { "format": "date-time", "type": "string", "title": "Nullable" }, "endDate": { "format": "date-time", "type": "string", "title": "Nullable" }, "isTerminated": { "type": "boolean", "title": "Boolean" }, "externalReferenceId": { "type": "string", "title": "String" }, "source": { "format": "int32", "type": "integer", "title": "Int32" }, "isPostalAddressSameAsResidential": { "type": "boolean", "title": "Boolean" }, "titles": { "type": "array", "items": { "$ref": "#/definitions/TitleViewModel" }, "xml": { "name": "TitleViewModel", "wrapped": true }, "title": "IList" }, "editMode": { "enum": [ "EmployeePortal", "EmployeePortalReadOnly", "BusinessPortal" ], "type": "string", "title": "EmployeeDetailsEditMode" }, "canEdit": { "type": "boolean", "readOnly": true, "title": "Boolean" }, "tagsString": { "type": "string", "title": "String" }, "allTags": { "type": "array", "items": { "type": "string", "title": "String" }, "title": "IList" }, "timesheetSetting": { "enum": [ "Disabled", "Enabled", "EnabledForExceptions" ], "type": "string", "title": "EmployeeTimesheetSetting" }, "canDelete": { "type": "boolean", "title": "Boolean" }, "hasProfileImage": { "type": "boolean", "title": "Boolean" }, "canEditProfileImage": { "type": "boolean", "title": "Boolean" }, "bouncedEmail": { "type": "boolean", "title": "Boolean" } }, "xml": { "name": "EssEmployeeDetailsModel" }, "title": "EssEmployeeDetailsModel" }, "TitleViewModel": { "type": "object", "properties": { "id": { "format": "int32", "type": "integer", "title": "Int32" }, "description": { "type": "string", "title": "String" } }, "xml": { "name": "TitleViewModel" }, "title": "TitleViewModel" }, "EmployeePartialEditModel": { "required": [ "firstName", "surname", "startDate" ], "type": "object", "properties": { "titleId": { "format": "int32", "type": "integer", "title": "Nullable" }, "firstName": { "maxLength": 50, "minLength": 0, "type": "string", "title": "String" }, "otherName": { "maxLength": 50, "minLength": 0, "type": "string", "title": "String" }, "middleName": { "maxLength": 50, "minLength": 0, "type": "string", "title": "String" }, "surname": { "maxLength": 50, "minLength": 0, "type": "string", "title": "String" }, "dateOfBirth": { "format": "date-time", "type": "string", "title": "Nullable" }, "anniversaryDate": { "format": "date-time", "type": "string", "title": "Nullable" }, "gender": { "type": "string", "title": "String" }, "externalId": { "type": "string", "title": "String" }, "residentialStreetAddress": { "maxLength": 100, "minLength": 0, "type": "string", "title": "String" }, "residentialAddressLine2": { "type": "string", "title": "String" }, "residentialSuburbId": { "format": "int32", "type": "integer", "title": "Nullable" }, "residentialSuburb": { "type": "string", "title": "String" }, "residentialState": { "type": "string", "title": "String" }, "residentialPostcode": { "type": "string", "title": "String" }, "residentialCountry": { "type": "string", "title": "String" }, "postalStreetAddress": { "maxLength": 100, "minLength": 0, "type": "string", "title": "String" }, "postalAddressLine2": { "type": "string", "title": "String" }, "postalSuburb": { "type": "string", "title": "String" }, "postalState": { "type": "string", "title": "String" }, "postalPostcode": { "type": "string", "title": "String" }, "postalCountry": { "type": "string", "title": "String" }, "postalSuburbId": { "format": "int32", "type": "integer", "title": "Nullable" }, "email": { "maxLength": 100, "minLength": 0, "type": "string", "title": "String" }, "homePhone": { "maxLength": 50, "minLength": 0, "type": "string", "title": "String" }, "workPhone": { "maxLength": 50, "minLength": 0, "type": "string", "title": "String" }, "mobilePhone": { "maxLength": 50, "minLength": 0, "type": "string", "title": "String" }, "startDate": { "format": "date-time", "type": "string", "title": "Nullable" }, "endDate": { "format": "date-time", "type": "string", "title": "Nullable" }, "businessId": { "format": "int32", "type": "integer", "title": "Int32" }, "taxFileNumber": { "type": "string", "title": "String" }, "taxFileNumberMasked": { "type": "string", "title": "String" }, "isPostalAddressSameAsResidential": { "type": "boolean", "title": "Boolean" }, "bankAccounts": { "type": "array", "items": { "$ref": "#/definitions/BankAccountEditModel" }, "xml": { "name": "BankAccountEditModel", "wrapped": true }, "title": "IList" }, "externalReferenceId": { "type": "string", "title": "String" }, "source": { "enum": [ "None", "Saasu", "Xero", "MYOB", "Deputy", "EmployeeTimePunch", "ClickSuper", "IntegratedTimesheets", "FileImport", "FileExport", "QuickBooks", "Harmony", "AwardStore", "Attache", "IntegratedRostering", "ReckonAccounts", "API", "MicroPower", "RosterLive", "NetSuite", "Kounta", "TimeAndAttendanceKiosk", "DetailedFileExport", "JonasPremier", "WageEasy", "Maestrano", "WorkZone", "EmployeePortal", "RosterTemplate", "Onboarding", "Admin", "WorkZoneClockOnOff" ], "type": "string", "title": "ExternalService" }, "tagsString": { "type": "string", "title": "String" }, "timesheetSetting": { "enum": [ "Disabled", "Enabled", "EnabledForExceptions" ], "type": "string", "title": "EmployeeTimesheetSetting" } }, "xml": { "name": "EmployeePartialEditModel" }, "title": "EmployeePartialEditModel" }, "BankAccountEditModel": { "type": "object", "properties": { "id": { "format": "int32", "type": "integer", "title": "Int32" }, "bsb": { "type": "string", "title": "String" }, "accountName": { "type": "string", "title": "String" }, "accountNumber": { "type": "string", "title": "String" }, "allocatedPercentage": { "format": "double", "type": "number", "title": "Nullable" }, "fixedAmount": { "format": "double", "type": "number", "title": "Nullable" }, "externalReferenceId": { "type": "string", "title": "String" }, "source": { "enum": [ "None", "Saasu", "Xero", "MYOB", "Deputy", "EmployeeTimePunch", "ClickSuper", "IntegratedTimesheets", "FileImport", "FileExport", "QuickBooks", "Harmony", "AwardStore", "Attache", "IntegratedRostering", "ReckonAccounts", "API", "MicroPower", "RosterLive", "NetSuite", "Kounta", "TimeAndAttendanceKiosk", "DetailedFileExport", "JonasPremier", "WageEasy", "Maestrano", "WorkZone", "EmployeePortal", "RosterTemplate", "Onboarding", "Admin", "WorkZoneClockOnOff" ], "type": "string", "title": "ExternalService" }, "allocateBalance": { "type": "boolean", "title": "Boolean" }, "isEmployeeEditable": { "type": "boolean", "title": "Boolean" }, "canBeDeleted": { "type": "boolean", "title": "Boolean" }, "accountType": { "enum": [ "Electronic", "ManualDeposit", "CashOrCheque", "Bpay" ], "type": "string", "title": "BankAccountTypeEnum" } }, "xml": { "name": "BankAccountEditModel" }, "title": "BankAccountEditModel" }, "EmployeeEmergencyContactsEditModel": { "type": "object", "properties": { "primaryEmergencyContact": { "$ref": "#/definitions/EmergencyContactEditModel" }, "secondaryEmergencyContact": { "$ref": "#/definitions/EmergencyContactEditModel" }, "canEdit": { "type": "boolean", "title": "Boolean" } }, "xml": { "name": "EmployeeEmergencyContactsEditModel" }, "title": "EmployeeEmergencyContactsEditModel" }, "EmergencyContactEditModel": { "type": "object", "properties": { "id": { "format": "int32", "type": "integer", "title": "Int32" }, "name": { "type": "string", "title": "String" }, "relationship": { "type": "string", "title": "String" }, "address": { "type": "string", "title": "String" }, "contactNumber": { "type": "string", "title": "String" }, "alternateContactNumber": { "type": "string", "title": "String" } }, "xml": { "name": "EmergencyContactEditModel" }, "title": "EmergencyContactEditModel" }, "FeaturesModel": { "type": "object", "properties": { "allowEmployeeLeaveSelfService": { "type": "boolean", "title": "Boolean" }, "allowEmployeeSelfEditing": { "type": "boolean", "title": "Boolean" }, "allowEmployeeTimesheetsSelfService": { "type": "boolean", "title": "Boolean" }, "allowEmployeeToSetUnavailability": { "type": "boolean", "title": "Boolean" }, "allowEmployeeToDeclineShifts": { "type": "boolean", "title": "Boolean" }, "allowEmployeeSuperFundSelfService": { "type": "boolean", "title": "Boolean" }, "allowEmployeeBankAccountSelfService": { "type": "boolean", "title": "Boolean" }, "allowEmployeeSatisfactionSurvey": { "type": "boolean", "title": "Boolean" }, "allowEmployeesToViewAllApprovedLeave": { "type": "boolean", "title": "Boolean" }, "unavailabilityCutOff": { "format": "int32", "type": "integer", "title": "Int32" }, "allowEmployeesToUploadProfilePicture": { "type": "boolean", "title": "Boolean" }, "allowEmployeeRosteringSelfService": { "type": "boolean", "title": "Boolean" }, "allowEmployeeExpensesSelfService": { "type": "boolean", "title": "Boolean" }, "allowEmployeeOverrideTaxCodes": { "type": "boolean", "title": "Boolean" }, "allowEmployeesToEditKioskTimesheets": { "type": "boolean", "title": "Boolean" }, "essTimesheetSetting": { "enum": [ "Disabled", "ReadOnly", "ReadWrite", "EditKiosk", "EditWorkZoneClockOnOff" ], "type": "string", "title": "ESSTimesheetSetting" }, "employeeMustAcceptShifts": { "type": "boolean", "title": "Boolean" }, "allowEmployeeTimesheetsWithoutStartStopTimes": { "type": "boolean", "title": "Boolean" }, "allowEmployeeToSwapShifts": { "type": "boolean", "title": "Boolean" }, "clockOnCanSpecifyHigherClassification": { "type": "boolean", "title": "Boolean" }, "clockOnRequirePhoto": { "type": "boolean", "title": "Boolean" }, "clockOnAllowEmployeeShiftSelection": { "type": "boolean", "title": "Boolean" }, "clockOnWindowMinutes": { "format": "int32", "type": "integer", "title": "Nullable" }, "clockOffWindowMinutes": { "format": "int32", "type": "integer", "title": "Nullable" }, "timesheetsRequireLocation": { "type": "boolean", "title": "Boolean" }, "timesheetsRequireWorkType": { "type": "boolean", "title": "Boolean" }, "enableWorkZoneClockOn": { "type": "boolean", "title": "Boolean" } }, "xml": { "name": "FeaturesModel" }, "title": "FeaturesModel" }, "DashboardModel": { "type": "object", "properties": { "latestPayslip": { "$ref": "#/definitions/EssPayslipModel" }, "nextShift": { "$ref": "#/definitions/EssRosterShiftModel" }, "leaveBalances": { "type": "array", "items": { "$ref": "#/definitions/LeaveBalanceModel" }, "xml": { "name": "LeaveBalanceModel", "wrapped": true }, "title": "IList" }, "features": { "$ref": "#/definitions/FeaturesModel" }, "titles": { "type": "array", "items": { "$ref": "#/definitions/TitleViewModel" }, "xml": { "name": "TitleViewModel", "wrapped": true }, "title": "List" }, "workTypes": { "type": "array", "items": { "$ref": "#/definitions/EssWorkTypeModel" }, "xml": { "name": "EssWorkTypeModel", "wrapped": true }, "title": "List" }, "shiftConditions": { "type": "array", "items": { "$ref": "#/definitions/EssWorkTypeModel" }, "xml": { "name": "EssWorkTypeModel", "wrapped": true }, "title": "List" }, "locations": { "type": "array", "items": { "$ref": "#/definitions/LocationModel" }, "xml": { "name": "LocationModel", "wrapped": true }, "title": "List" }, "classifications": { "type": "array", "items": { "$ref": "#/definitions/ClassificationSelectModel" }, "readOnly": true, "xml": { "name": "ClassificationSelectModel", "wrapped": true }, "title": "IList" }, "leaveCategories": { "type": "array", "items": { "$ref": "#/definitions/EssLeaveCategoryModel" }, "xml": { "name": "EssLeaveCategoryModel", "wrapped": true }, "title": "IList" }, "currentWeekSatisfactionSurvey": { "$ref": "#/definitions/EssSatisfactionSurvey" }, "timesheets": { "$ref": "#/definitions/EssCurrentTimesheetsModel" }, "timesheetEntryPeriodEnd": { "format": "date-time", "type": "string", "title": "DateTime" }, "expenseCategories": { "type": "array", "items": { "$ref": "#/definitions/ExpenseCategoryResponseModel" }, "xml": { "name": "ExpenseCategoryResponseModel", "wrapped": true }, "title": "IList" }, "taxCodes": { "type": "array", "items": { "$ref": "#/definitions/JournalServiceTaxCode" }, "xml": { "name": "JournalServiceTaxCode", "wrapped": true }, "title": "IList" }, "expenses": { "$ref": "#/definitions/EssCurrentExpensesModel" }, "pendingShiftCount": { "format": "int32", "type": "integer", "title": "Int32" }, "proposedSwapCount": { "format": "int32", "type": "integer", "title": "Int32" }, "currentShift": { "$ref": "#/definitions/EssCurrentShiftModel" } }, "xml": { "name": "DashboardModel" }, "title": "DashboardModel" }, "EssPayslipModel": { "type": "object", "properties": { "id": { "format": "int32", "type": "integer", "title": "Int32" }, "employeeId": { "format": "int32", "type": "integer", "title": "Int32" }, "paySchedule": { "type": "string", "title": "String" }, "datePaid": { "format": "date-time", "type": "string", "title": "DateTime" }, "payPeriodStart": { "format": "date-time", "type": "string", "title": "DateTime" }, "payPeriodEnd": { "format": "date-time", "type": "string", "title": "DateTime" }, "netPay": { "format": "double", "type": "number", "title": "Decimal" }, "payerName": { "type": "string", "title": "String" }, "payerAbn": { "type": "string", "title": "String" } }, "xml": { "name": "EssPayslipModel" }, "title": "EssPayslipModel" }, "EssRosterShiftModel": { "type": "object", "properties": { "id": { "format": "int32", "type": "integer", "title": "Int32" }, "token": { "type": "string", "title": "String" }, "qualifications": { "type": "array", "items": { "$ref": "#/definitions/EssQualificationModel" }, "xml": { "name": "EssQualificationModel", "wrapped": true }, "title": "IList" }, "breaks": { "type": "array", "items": { "$ref": "#/definitions/EssRosterShiftBreakModel" }, "xml": { "name": "EssRosterShiftBreakModel", "wrapped": true }, "title": "IList" }, "employeeId": { "format": "int32", "type": "integer", "title": "Nullable" }, "employeeName": { "type": "string", "title": "String" }, "locationId": { "format": "int32", "type": "integer", "title": "Nullable" }, "locationName": { "type": "string", "title": "String" }, "classificationId": { "format": "int32", "type": "integer", "title": "Nullable" }, "classificationName": { "type": "string", "title": "String" }, "workTypeId": { "format": "int32", "type": "integer", "title": "Nullable" }, "workTypeName": { "type": "string", "title": "String" }, "startTime": { "format": "date-time", "type": "string", "title": "DateTime" }, "endTime": { "format": "date-time", "type": "string", "title": "DateTime" }, "notes": { "type": "string", "title": "String" }, "published": { "type": "boolean", "title": "Boolean" }, "accepted": { "type": "boolean", "title": "Boolean" }, "pendingSwap": { "$ref": "#/definitions/EssRosterShiftSwapModel" }, "datePublished": { "format": "date-time", "type": "string", "title": "Nullable" } }, "xml": { "name": "EssRosterShiftModel" }, "title": "EssRosterShiftModel" }, "EssWorkTypeModel": { "type": "object", "properties": { "isUnitBasedWorkType": { "type": "boolean", "title": "Boolean" }, "unitType": { "type": "string", "title": "String" }, "id": { "format": "int32", "type": "integer", "title": "Int32" }, "name": { "type": "string", "title": "String" }, "payCategoryId": { "format": "int32", "type": "integer", "title": "Nullable" }, "leaveCategoryId": { "format": "int32", "type": "integer", "title": "Nullable" }, "externalId": { "type": "string", "title": "String" }, "source": { "type": "string", "title": "String" }, "accruesLeave": { "type": "boolean", "title": "Boolean" }, "employmentTypes": { "type": "array", "items": { "enum": [ "Unknown", "FullTime", "PartTime", "LabourHire", "SuperannuationIncomeStream", "Casual" ], "type": "string", "title": "EmploymentTypeEnum" }, "xml": { "name": "EmploymentTypeEnum", "wrapped": true }, "title": "IList" }, "mappingType": { "enum": [ "PayCategory", "LeaveCategory", "PrimaryPayCategory", "ShiftCondition" ], "type": "string", "title": "Nullable" }, "shortCode": { "type": "string", "title": "String" } }, "xml": { "name": "EssWorkTypeModel" }, "title": "EssWorkTypeModel" }, "LocationModel": { "type": "object", "properties": { "id": { "format": "int32", "type": "integer", "title": "Int32" }, "parentId": { "format": "int32", "type": "integer", "title": "Nullable" }, "name": { "type": "string", "title": "String" }, "externalId": { "type": "string", "title": "String" }, "source": { "type": "string", "title": "String" }, "fullyQualifiedName": { "type": "string", "title": "String" }, "state": { "type": "string", "title": "String" }, "isGlobal": { "type": "boolean", "title": "Boolean" }, "isRollupReportingLocation": { "type": "boolean", "title": "Boolean" }, "generalLedgerMappingCode": { "type": "string", "title": "String" }, "defaultShiftConditionIds": { "type": "array", "items": { "format": "int32", "type": "integer", "title": "Int32" }, "title": "IList" } }, "xml": { "name": "LocationModel" }, "title": "LocationModel" }, "ClassificationSelectModel": { "type": "object", "properties": { "name": { "type": "string", "title": "String" }, "id": { "format": "int32", "type": "integer", "title": "Int32" } }, "xml": { "name": "ClassificationSelectModel" }, "title": "ClassificationSelectModel" }, "EssSatisfactionSurvey": { "type": "object", "properties": { "value": { "enum": [ "NotSet", "Happy", "Neutral", "Sad" ], "type": "string", "title": "EmployeeSatisfactionValue" }, "weekStartDate": { "format": "date-time", "type": "string", "title": "DateTime" } }, "xml": { "name": "EssSatisfactionSurvey" }, "title": "EssSatisfactionSurvey" }, "EssCurrentTimesheetsModel": { "type": "object", "properties": { "periodStarting": { "format": "date-time", "type": "string", "title": "DateTime" }, "periodEnding": { "format": "date-time", "type": "string", "title": "DateTime" }, "submittedCount": { "format": "int32", "type": "integer", "title": "Int32" }, "approvedCount": { "format": "int32", "type": "integer", "title": "Int32" }, "rejectedCount": { "format": "int32", "type": "integer", "title": "Int32" }, "processedCount": { "format": "int32", "type": "integer", "title": "Int32" }, "durationInMinutes": { "format": "double", "type": "number", "title": "Decimal" } }, "xml": { "name": "EssCurrentTimesheetsModel" }, "title": "EssCurrentTimesheetsModel" }, "ExpenseCategoryResponseModel": { "type": "object", "properties": { "id": { "format": "int32", "type": "integer", "title": "Int32" }, "name": { "type": "string", "title": "String" }, "externalTaxCodeId": { "type": "string", "title": "String" }, "taxCode": { "type": "string", "title": "String" }, "taxRate": { "format": "double", "type": "number", "title": "Nullable" } }, "xml": { "name": "ExpenseCategoryResponseModel" }, "title": "ExpenseCategoryResponseModel" }, "EssCurrentExpensesModel": { "type": "object", "properties": { "periodStarting": { "format": "date-time", "type": "string", "title": "DateTime" }, "periodEnding": { "format": "date-time", "type": "string", "title": "DateTime" }, "submittedCount": { "format": "int32", "type": "integer", "title": "Int32" }, "approvedCount": { "format": "int32", "type": "integer", "title": "Int32" }, "rejectedCount": { "format": "int32", "type": "integer", "title": "Int32" }, "processedCount": { "format": "int32", "type": "integer", "title": "Int32" } }, "xml": { "name": "EssCurrentExpensesModel" }, "title": "EssCurrentExpensesModel" }, "EssCurrentShiftModel": { "type": "object", "properties": { "shiftId": { "format": "int32", "type": "integer", "title": "Int32" }, "clockOnTimeUtc": { "format": "date-time", "type": "string", "title": "Nullable" }, "breakStartTimeUtc": { "format": "date-time", "type": "string", "title": "Nullable" }, "status": { "enum": [ "NotClockedOn", "ClockedOn", "OnBreak", "ClockedOff" ], "type": "string", "title": "TimeAttendanceStatus" }, "longShift": { "type": "boolean", "title": "Boolean" } }, "xml": { "name": "EssCurrentShiftModel" }, "title": "EssCurrentShiftModel" }, "EssQualificationModel": { "type": "object", "properties": { "id": { "format": "int32", "type": "integer", "title": "Int32" }, "name": { "type": "string", "title": "String" } }, "xml": { "name": "EssQualificationModel" }, "title": "EssQualificationModel" }, "EssRosterShiftBreakModel": { "type": "object", "properties": { "id": { "format": "int32", "type": "integer", "title": "Int32" }, "startTime": { "format": "date-time", "type": "string", "title": "DateTime" }, "endTime": { "format": "date-time", "type": "string", "title": "DateTime" } }, "xml": { "name": "EssRosterShiftBreakModel" }, "title": "EssRosterShiftBreakModel" }, "EssRosterShiftSwapModel": { "type": "object", "properties": { "id": { "format": "int32", "type": "integer", "title": "Int32" }, "fromEmployee": { "type": "string", "title": "String" }, "toEmployee": { "type": "string", "title": "String" }, "fromEmployeeId": { "format": "int32", "type": "integer", "title": "Int32" }, "toEmployeeId": { "format": "int32", "type": "integer", "title": "Int32" }, "dateCreated": { "format": "date-time", "type": "string", "title": "DateTime" }, "note": { "type": "string", "title": "String" }, "rejectedReason": { "type": "string", "title": "String" }, "status": { "format": "int32", "type": "integer", "title": "Int32" }, "statusDescription": { "type": "string", "title": "String" } }, "xml": { "name": "EssRosterShiftSwapModel" }, "title": "EssRosterShiftSwapModel" }, "EmployeeTimesheetFilter": { "required": [ "fromDate", "toDate" ], "type": "object", "properties": { "fromDate": { "format": "date-time", "type": "string", "title": "DateTime" }, "toDate": { "format": "date-time", "type": "string", "title": "DateTime" } }, "xml": { "name": "EmployeeTimesheetFilter" }, "title": "EmployeeTimesheetFilter" }, "EssTimesheetModel": { "type": "object", "properties": { "canDelete": { "type": "boolean", "readOnly": true, "title": "Boolean" }, "canEdit": { "type": "boolean", "readOnly": true, "title": "Boolean" }, "statusId": { "format": "int32", "type": "integer", "title": "Int32" }, "employeeName": { "type": "string", "title": "String" }, "id": { "format": "int32", "type": "integer", "title": "Int32" }, "employeeId": { "format": "int32", "type": "integer", "title": "Int32" }, "locationId": { "format": "int32", "type": "integer", "title": "Nullable" }, "workTypeId": { "format": "int32", "type": "integer", "title": "Nullable" }, "classificationId": { "format": "int32", "type": "integer", "title": "Nullable" }, "classificationName": { "type": "string", "title": "String" }, "workTypeName": { "type": "string", "title": "String" }, "locationName": { "type": "string", "title": "String" }, "unitType": { "type": "string", "title": "String" }, "isUnitBasedWorkType": { "type": "boolean", "title": "Boolean" }, "payRunId": { "format": "int32", "type": "integer", "title": "Nullable" }, "start": { "format": "date-time", "type": "string", "title": "Nullable" }, "end": { "format": "date-time", "type": "string", "title": "Nullable" }, "submittedStart": { "format": "date-time", "type": "string", "title": "Nullable" }, "submittedEnd": { "format": "date-time", "type": "string", "title": "Nullable" }, "units": { "format": "double", "type": "number", "title": "Nullable" }, "status": { "enum": [ "Missing", "Submitted", "Approved", "Rejected", "Processed" ], "type": "string", "title": "TimesheetLineStatusType" }, "paySlipUrl": { "type": "string", "title": "String" }, "breaks": { "type": "array", "items": { "$ref": "#/definitions/TimesheetBreakViewModel" }, "xml": { "name": "TimesheetBreakViewModel", "wrapped": true }, "title": "IList" }, "comments": { "type": "string", "title": "String" }, "rate": { "format": "double", "type": "number", "title": "Nullable" }, "externalReferenceId": { "type": "string", "title": "String" }, "source": { "enum": [ "None", "Saasu", "Xero", "MYOB", "Deputy", "EmployeeTimePunch", "ClickSuper", "IntegratedTimesheets", "FileImport", "FileExport", "QuickBooks", "Harmony", "AwardStore", "Attache", "IntegratedRostering", "ReckonAccounts", "API", "MicroPower", "RosterLive", "NetSuite", "Kounta", "TimeAndAttendanceKiosk", "DetailedFileExport", "JonasPremier", "WageEasy", "Maestrano", "WorkZone", "EmployeePortal", "RosterTemplate", "Onboarding", "Admin", "WorkZoneClockOnOff" ], "type": "string", "title": "ExternalService" }, "payCategoryId": { "format": "int32", "type": "integer", "title": "Nullable" }, "leaveCategoryId": { "format": "int32", "type": "integer", "title": "Nullable" }, "leaveRequestId": { "format": "int32", "type": "integer", "title": "Nullable" }, "isLocked": { "type": "boolean", "title": "Boolean" }, "cost": { "format": "double", "type": "number", "title": "Nullable" }, "costingData": { "$ref": "#/definitions/ShiftCostingData" }, "discard": { "type": "boolean", "title": "Boolean" }, "attachment": { "$ref": "#/definitions/AttachmentModel" }, "shiftConditionIds": { "type": "array", "items": { "format": "int32", "type": "integer", "title": "Int32" }, "title": "IList" }, "isOverlapping": { "type": "boolean", "title": "Boolean" }, "overdrawsLeave": { "type": "boolean", "title": "Boolean" }, "reviewedBy": { "type": "string", "title": "String" }, "durationOverride": { "type": "string", "title": "Nullable" }, "workDurationInMinutes": { "format": "double", "type": "number", "readOnly": true, "title": "Double" }, "breaksDurationInMinutes": { "format": "double", "type": "number", "readOnly": true, "title": "Double" }, "totalDurationInMinutes": { "format": "double", "type": "number", "readOnly": true, "title": "Double" } }, "xml": { "name": "EssTimesheetModel" }, "title": "EssTimesheetModel" }, "TimesheetBreakViewModel": { "type": "object", "properties": { "id": { "format": "int32", "type": "integer", "title": "Int32" }, "start": { "format": "date-time", "type": "string", "title": "Nullable" }, "end": { "format": "date-time", "type": "string", "title": "Nullable" }, "submittedStart": { "format": "date-time", "type": "string", "title": "Nullable" }, "submittedEnd": { "format": "date-time", "type": "string", "title": "Nullable" }, "formattedStart": { "type": "string", "readOnly": true, "title": "String" }, "formattedEnd": { "type": "string", "readOnly": true, "title": "String" } }, "xml": { "name": "TimesheetBreakViewModel" }, "title": "TimesheetBreakViewModel" }, "ShiftCostingData": { "type": "object", "properties": { "shiftParts": { "type": "array", "items": { "$ref": "#/definitions/ShiftPartModel" }, "xml": { "name": "ShiftPartModel", "wrapped": true }, "title": "IList" }, "allowances": { "type": "array", "items": { "$ref": "#/definitions/ShiftAllowanceModel" }, "xml": { "name": "ShiftAllowanceModel", "wrapped": true }, "title": "IList" }, "liabilities": { "type": "array", "items": { "$ref": "#/definitions/ShiftLiabilityModel" }, "xml": { "name": "ShiftLiabilityModel", "wrapped": true }, "title": "IList" }, "isConsolidated": { "type": "boolean", "title": "Boolean" } }, "xml": { "name": "ShiftCostingData" }, "title": "ShiftCostingData" }, "ShiftPartModel": { "type": "object", "properties": { "isBreak": { "type": "boolean", "title": "Boolean" }, "startTime": { "format": "date-time", "type": "string", "title": "DateTime" }, "endTime": { "format": "date-time", "type": "string", "title": "DateTime" }, "effectiveDuration": { "type": "string", "title": "TimeSpan" }, "actualDuration": { "type": "string", "title": "TimeSpan" }, "payCategory": { "type": "string", "title": "String" }, "payCategoryId": { "format": "int32", "type": "integer", "title": "Int32" }, "cost": { "format": "double", "type": "number", "title": "Decimal" }, "rateMultiplier": { "format": "double", "type": "number", "title": "Nullable" }, "baseRate": { "format": "double", "type": "number", "title": "Decimal" }, "calculatedRate": { "format": "double", "type": "number", "title": "Decimal" }, "displayDuration": { "type": "string", "readOnly": true, "title": "String" }, "workType": { "$ref": "#/definitions/NominalWorkType" }, "classification": { "$ref": "#/definitions/NominalClassification" }, "leaveCategory": { "$ref": "#/definitions/NominalLeaveCategory" } }, "xml": { "name": "ShiftPartModel" }, "title": "ShiftPartModel" }, "ShiftAllowanceModel": { "type": "object", "properties": { "payCategory": { "type": "string", "title": "String" }, "payCategoryId": { "format": "int32", "type": "integer", "title": "Int32" }, "units": { "format": "double", "type": "number", "title": "Decimal" }, "cost": { "format": "double", "type": "number", "title": "Decimal" }, "rateMultiplier": { "format": "double", "type": "number", "title": "Decimal" }, "option": { "enum": [ "Fixed", "PerHourWorked", "PercentageOfShiftCost", "PerShiftUnit" ], "type": "string", "title": "ShiftAllowanceOption" }, "type": { "enum": [ "Standard", "AllPurpose" ], "type": "string", "title": "ShiftAllowanceType" } }, "xml": { "name": "ShiftAllowanceModel" }, "title": "ShiftAllowanceModel" }, "ShiftLiabilityModel": { "type": "object", "properties": { "liabilityCategoryName": { "type": "string", "title": "String" }, "liabilityCategoryId": { "format": "int32", "type": "integer", "title": "Int32" }, "includeInShiftCost": { "type": "boolean", "title": "Boolean" }, "amount": { "format": "double", "type": "number", "title": "Decimal" }, "option": { "enum": [ "Fixed", "PerHourWorked", "PercentageOfShiftCost", "PerShiftUnit" ], "type": "string", "title": "ShiftAllowanceOption" }, "cost": { "format": "double", "type": "number", "title": "Decimal" } }, "xml": { "name": "ShiftLiabilityModel" }, "title": "ShiftLiabilityModel" }, "NominalWorkType": { "type": "object", "properties": { "id": { "format": "int32", "type": "integer", "title": "Int32" }, "name": { "type": "string", "title": "String" }, "linkType": { "enum": [ "PayCategory", "LeaveCategory", "ShiftCondition" ], "type": "string", "title": "WorkTypeLinkTypeRestriction" } }, "xml": { "name": "NominalWorkType" }, "title": "NominalWorkType" }, "NominalClassification": { "type": "object", "properties": { "id": { "format": "int32", "type": "integer", "title": "Int32" }, "rank": { "format": "int32", "type": "integer", "title": "Int32" }, "name": { "type": "string", "title": "String" } }, "xml": { "name": "NominalClassification" }, "title": "NominalClassification" }, "NominalLeaveCategory": { "type": "object", "properties": { "id": { "format": "int32", "type": "integer", "title": "Int32" }, "name": { "type": "string", "title": "String" } }, "xml": { "name": "NominalLeaveCategory" }, "title": "NominalLeaveCategory" }, "TimesheetLineViewModel": { "type": "object", "properties": { "employeeName": { "type": "string", "title": "String" }, "id": { "format": "int32", "type": "integer", "title": "Int32" }, "employeeId": { "format": "int32", "type": "integer", "title": "Int32" }, "locationId": { "format": "int32", "type": "integer", "title": "Nullable" }, "workTypeId": { "format": "int32", "type": "integer", "title": "Nullable" }, "classificationId": { "format": "int32", "type": "integer", "title": "Nullable" }, "classificationName": { "type": "string", "title": "String" }, "workTypeName": { "type": "string", "title": "String" }, "locationName": { "type": "string", "title": "String" }, "unitType": { "type": "string", "title": "String" }, "isUnitBasedWorkType": { "type": "boolean", "title": "Boolean" }, "payRunId": { "format": "int32", "type": "integer", "title": "Nullable" }, "start": { "format": "date-time", "type": "string", "title": "Nullable" }, "end": { "format": "date-time", "type": "string", "title": "Nullable" }, "submittedStart": { "format": "date-time", "type": "string", "title": "Nullable" }, "submittedEnd": { "format": "date-time", "type": "string", "title": "Nullable" }, "units": { "format": "double", "type": "number", "title": "Nullable" }, "status": { "enum": [ "Missing", "Submitted", "Approved", "Rejected", "Processed" ], "type": "string", "title": "TimesheetLineStatusType" }, "paySlipUrl": { "type": "string", "title": "String" }, "breaks": { "type": "array", "items": { "$ref": "#/definitions/TimesheetBreakViewModel" }, "xml": { "name": "TimesheetBreakViewModel", "wrapped": true }, "title": "IList" }, "comments": { "type": "string", "title": "String" }, "rate": { "format": "double", "type": "number", "title": "Nullable" }, "externalReferenceId": { "type": "string", "title": "String" }, "source": { "enum": [ "None", "Saasu", "Xero", "MYOB", "Deputy", "EmployeeTimePunch", "ClickSuper", "IntegratedTimesheets", "FileImport", "FileExport", "QuickBooks", "Harmony", "AwardStore", "Attache", "IntegratedRostering", "ReckonAccounts", "API", "MicroPower", "RosterLive", "NetSuite", "Kounta", "TimeAndAttendanceKiosk", "DetailedFileExport", "JonasPremier", "WageEasy", "Maestrano", "WorkZone", "EmployeePortal", "RosterTemplate", "Onboarding", "Admin", "WorkZoneClockOnOff" ], "type": "string", "title": "ExternalService" }, "payCategoryId": { "format": "int32", "type": "integer", "title": "Nullable" }, "leaveCategoryId": { "format": "int32", "type": "integer", "title": "Nullable" }, "leaveRequestId": { "format": "int32", "type": "integer", "title": "Nullable" }, "isLocked": { "type": "boolean", "title": "Boolean" }, "cost": { "format": "double", "type": "number", "title": "Nullable" }, "costingData": { "$ref": "#/definitions/ShiftCostingData" }, "discard": { "type": "boolean", "title": "Boolean" }, "attachment": { "$ref": "#/definitions/AttachmentModel" }, "shiftConditionIds": { "type": "array", "items": { "format": "int32", "type": "integer", "title": "Int32" }, "title": "IList" }, "isOverlapping": { "type": "boolean", "title": "Boolean" }, "overdrawsLeave": { "type": "boolean", "title": "Boolean" }, "reviewedBy": { "type": "string", "title": "String" }, "durationOverride": { "type": "string", "title": "Nullable" }, "workDurationInMinutes": { "format": "double", "type": "number", "readOnly": true, "title": "Double" }, "breaksDurationInMinutes": { "format": "double", "type": "number", "readOnly": true, "title": "Double" }, "totalDurationInMinutes": { "format": "double", "type": "number", "readOnly": true, "title": "Double" } }, "xml": { "name": "TimesheetLineViewModel" }, "title": "TimesheetLineViewModel" }, "DeviceTokenModel": { "type": "object", "properties": { "token": { "type": "string", "title": "String" }, "platform": { "enum": [ "iOS", "Android" ], "type": "string", "title": "MobilePlatform" } }, "xml": { "name": "DeviceTokenModel" }, "title": "DeviceTokenModel" }, "TimeAndAttendanceLookupDataModel": { "type": "object", "properties": { "locations": { "type": "array", "items": { "$ref": "#/definitions/LocationSelectModel" }, "xml": { "name": "LocationSelectModel", "wrapped": true }, "title": "IList" }, "workTypes": { "type": "array", "items": { "$ref": "#/definitions/WorkTypeSelectModel" }, "xml": { "name": "WorkTypeSelectModel", "wrapped": true }, "title": "IList" }, "classifications": { "type": "array", "items": { "$ref": "#/definitions/ClassificationLookupModel" }, "xml": { "name": "ClassificationLookupModel", "wrapped": true }, "title": "IList" }, "defaultLocation": { "$ref": "#/definitions/LocationSelectModel" }, "shiftConditions": { "type": "array", "items": { "$ref": "#/definitions/ShiftConditionSelectModel" }, "xml": { "name": "ShiftConditionSelectModel", "wrapped": true }, "title": "IList" }, "locationShiftConditions": { "type": "array", "items": { "$ref": "#/definitions/LocationShiftConditionsModel" }, "xml": { "name": "LocationShiftConditionsModel", "wrapped": true }, "title": "IList" } }, "xml": { "name": "TimeAndAttendanceLookupDataModel" }, "title": "TimeAndAttendanceLookupDataModel" }, "LocationSelectModel": { "type": "object", "properties": { "id": { "format": "int32", "type": "integer", "title": "Int32" }, "description": { "type": "string", "title": "String" } }, "xml": { "name": "LocationSelectModel" }, "title": "LocationSelectModel" }, "WorkTypeSelectModel": { "type": "object", "properties": { "isUnitBased": { "type": "boolean", "title": "Boolean" }, "isLeaveType": { "type": "boolean", "title": "Boolean" }, "unitType": { "type": "string", "title": "String" }, "id": { "format": "int32", "type": "integer", "title": "Int32" }, "description": { "type": "string", "title": "String" } }, "xml": { "name": "WorkTypeSelectModel" }, "title": "WorkTypeSelectModel" }, "ClassificationLookupModel": { "description": "temporary class until ClassificationSelectModel uses the same base class as the other two", "type": "object", "properties": { "id": { "format": "int32", "type": "integer", "title": "Int32" }, "description": { "type": "string", "title": "String" } }, "xml": { "name": "ClassificationLookupModel" }, "title": "ClassificationLookupModel" }, "ShiftConditionSelectModel": { "type": "object", "properties": { "shortCode": { "type": "string", "title": "String" }, "id": { "format": "int32", "type": "integer", "title": "Int32" }, "description": { "type": "string", "title": "String" } }, "xml": { "name": "ShiftConditionSelectModel" }, "title": "ShiftConditionSelectModel" }, "LocationShiftConditionsModel": { "type": "object", "properties": { "locationId": { "format": "int32", "type": "integer", "title": "Int32" }, "shiftConditionIds": { "type": "array", "items": { "format": "int32", "type": "integer", "title": "Int32" }, "title": "IList" } }, "xml": { "name": "LocationShiftConditionsModel" }, "title": "LocationShiftConditionsModel" }, "ClockOnModel": { "type": "object", "properties": { "locationId": { "format": "int32", "type": "integer", "title": "Nullable" }, "classificationId": { "format": "int32", "type": "integer", "title": "Nullable" }, "workTypeId": { "format": "int32", "type": "integer", "title": "Nullable" }, "shiftConditionIds": { "type": "array", "items": { "format": "int32", "type": "integer", "title": "Int32" }, "title": "IList" }, "note": { "type": "string", "title": "String" }, "employeeId": { "format": "int32", "type": "integer", "title": "Nullable" }, "latitude": { "format": "double", "type": "number", "title": "Nullable" }, "longitude": { "format": "double", "type": "number", "title": "Nullable" }, "kioskId": { "format": "int32", "type": "integer", "title": "Nullable" }, "ipAddress": { "type": "string", "title": "String" }, "image": { "format": "byte", "type": "string", "title": "Byte[]" }, "isAdminInitiated": { "type": "boolean", "title": "Boolean" }, "recordedTimeUtc": { "format": "date-time", "type": "string", "title": "Nullable" }, "utcOffset": { "type": "string", "title": "Nullable" }, "noteVisibility": { "enum": [ "Hidden", "Visible" ], "type": "string", "title": "Nullable" } }, "xml": { "name": "ClockOnModel" }, "title": "ClockOnModel" }, "ClockOffModel": { "type": "object", "properties": { "note": { "type": "string", "title": "String" }, "employeeId": { "format": "int32", "type": "integer", "title": "Nullable" }, "latitude": { "format": "double", "type": "number", "title": "Nullable" }, "longitude": { "format": "double", "type": "number", "title": "Nullable" }, "kioskId": { "format": "int32", "type": "integer", "title": "Nullable" }, "ipAddress": { "type": "string", "title": "String" }, "image": { "format": "byte", "type": "string", "title": "Byte[]" }, "isAdminInitiated": { "type": "boolean", "title": "Boolean" }, "recordedTimeUtc": { "format": "date-time", "type": "string", "title": "Nullable" }, "utcOffset": { "type": "string", "title": "Nullable" }, "noteVisibility": { "enum": [ "Hidden", "Visible" ], "type": "string", "title": "Nullable" } }, "xml": { "name": "ClockOffModel" }, "title": "ClockOffModel" }, "StartBreakModel": { "type": "object", "properties": { "employeeId": { "format": "int32", "type": "integer", "title": "Nullable" }, "latitude": { "format": "double", "type": "number", "title": "Nullable" }, "longitude": { "format": "double", "type": "number", "title": "Nullable" }, "kioskId": { "format": "int32", "type": "integer", "title": "Nullable" }, "ipAddress": { "type": "string", "title": "String" }, "image": { "format": "byte", "type": "string", "title": "Byte[]" }, "isAdminInitiated": { "type": "boolean", "title": "Boolean" }, "recordedTimeUtc": { "format": "date-time", "type": "string", "title": "Nullable" }, "utcOffset": { "type": "string", "title": "Nullable" }, "noteVisibility": { "enum": [ "Hidden", "Visible" ], "type": "string", "title": "Nullable" } }, "xml": { "name": "StartBreakModel" }, "title": "StartBreakModel" }, "EndBreakModel": { "type": "object", "properties": { "employeeId": { "format": "int32", "type": "integer", "title": "Nullable" }, "latitude": { "format": "double", "type": "number", "title": "Nullable" }, "longitude": { "format": "double", "type": "number", "title": "Nullable" }, "kioskId": { "format": "int32", "type": "integer", "title": "Nullable" }, "ipAddress": { "type": "string", "title": "String" }, "image": { "format": "byte", "type": "string", "title": "Byte[]" }, "isAdminInitiated": { "type": "boolean", "title": "Boolean" }, "recordedTimeUtc": { "format": "date-time", "type": "string", "title": "Nullable" }, "utcOffset": { "type": "string", "title": "Nullable" }, "noteVisibility": { "enum": [ "Hidden", "Visible" ], "type": "string", "title": "Nullable" } }, "xml": { "name": "EndBreakModel" }, "title": "EndBreakModel" }, "GetShiftsModel": { "type": "object", "properties": { "kioskId": { "format": "int32", "type": "integer", "title": "Nullable" }, "locationId": { "format": "int32", "type": "integer", "title": "Nullable" }, "employeeId": { "format": "int32", "type": "integer", "title": "Nullable" }, "fromDateUtc": { "format": "date-time", "type": "string", "title": "Nullable" }, "toDateUtc": { "format": "date-time", "type": "string", "title": "Nullable" } }, "xml": { "name": "GetShiftsModel" }, "title": "GetShiftsModel" }, "TimeAndAttendanceShiftModel": { "type": "object", "properties": { "id": { "format": "int32", "type": "integer", "title": "Int32" }, "startTimeLocal": { "format": "date-time", "type": "string", "title": "DateTime" }, "startTimeUtc": { "format": "date-time", "type": "string", "title": "DateTime" }, "endTimeUtc": { "format": "date-time", "type": "string", "title": "Nullable" }, "endTimeLocal": { "format": "date-time", "type": "string", "title": "Nullable" }, "classificationId": { "format": "int32", "type": "integer", "title": "Nullable" }, "classificationName": { "type": "string", "title": "String" }, "locationId": { "format": "int32", "type": "integer", "title": "Int32" }, "locationFullyQualifiedName": { "type": "string", "title": "String" }, "workTypeId": { "format": "int32", "type": "integer", "title": "Nullable" }, "workTypeName": { "type": "string", "title": "String" }, "kioskId": { "format": "int32", "type": "integer", "title": "Int32" }, "kioskName": { "type": "string", "title": "String" }, "timesheetLineId": { "format": "int32", "type": "integer", "title": "Nullable" }, "employee": { "$ref": "#/definitions/BasicKioskEmployeeModel" }, "breaks": { "type": "array", "items": { "$ref": "#/definitions/TimeAndAttendanceBreakModel" }, "xml": { "name": "TimeAndAttendanceBreakModel", "wrapped": true }, "title": "IList" }, "shiftConditions": { "type": "array", "items": { "$ref": "#/definitions/ShiftConditionModel" }, "xml": { "name": "ShiftConditionModel", "wrapped": true }, "title": "IList" } }, "xml": { "name": "TimeAndAttendanceShiftModel" }, "title": "TimeAndAttendanceShiftModel" }, "BasicKioskEmployeeModel": { "type": "object", "properties": { "employeeId": { "format": "int32", "type": "integer", "title": "Int32" }, "firstName": { "type": "string", "title": "String" }, "surname": { "type": "string", "title": "String" }, "name": { "type": "string", "title": "String" }, "hasEmail": { "type": "boolean", "title": "Boolean" }, "profileImageUrl": { "type": "string", "title": "String" }, "hasProfileImage": { "type": "boolean", "title": "Boolean" }, "mobileNumber": { "type": "string", "title": "String" }, "status": { "enum": [ "NotClockedOn", "ClockedOn", "OnBreak", "ClockedOff" ], "type": "string", "title": "TimeAttendanceStatus" }, "longShift": { "type": "boolean", "title": "Boolean" }, "clockOnTimeUtc": { "format": "date-time", "type": "string", "title": "Nullable" }, "breakStartTimeUtc": { "format": "date-time", "type": "string", "title": "Nullable" }, "recordedTimeUtc": { "format": "date-time", "type": "string", "title": "Nullable" }, "currentShiftId": { "format": "int32", "type": "integer", "title": "Nullable" } }, "xml": { "name": "BasicKioskEmployeeModel" }, "title": "BasicKioskEmployeeModel" }, "TimeAndAttendanceBreakModel": { "type": "object", "properties": { "startTimeUtc": { "format": "date-time", "type": "string", "title": "DateTime" }, "startTimeLocal": { "format": "date-time", "type": "string", "title": "DateTime" }, "endTimeUtc": { "format": "date-time", "type": "string", "title": "Nullable" }, "endTimeLocal": { "format": "date-time", "type": "string", "title": "Nullable" } }, "xml": { "name": "TimeAndAttendanceBreakModel" }, "title": "TimeAndAttendanceBreakModel" }, "ShiftConditionModel": { "type": "object", "properties": { "id": { "format": "int32", "type": "integer", "title": "Int32" }, "name": { "type": "string", "title": "String" } }, "xml": { "name": "ShiftConditionModel" }, "title": "ShiftConditionModel" }, "AddNoteModel": { "type": "object", "properties": { "employeeId": { "format": "int32", "type": "integer", "title": "Int32" }, "type": { "enum": [ "Shift", "ClockOn", "ClockOff" ], "type": "string", "title": "TimeAttendanceShiftNoteType" }, "visibility": { "enum": [ "Hidden", "Visible" ], "type": "string", "title": "TimeAttendanceShiftNoteVisibility" }, "note": { "type": "string", "title": "String" }, "isAdminInitiated": { "type": "boolean", "title": "Boolean" } }, "xml": { "name": "AddNoteModel" }, "title": "AddNoteModel" }, "GetShiftNotesModel": { "type": "object", "properties": { "employeeId": { "format": "int32", "type": "integer", "title": "Int32" }, "isAdminInitiated": { "type": "boolean", "title": "Boolean" }, "type": { "enum": [ "Shift", "ClockOn", "ClockOff" ], "type": "string", "title": "Nullable" }, "visibility": { "enum": [ "Hidden", "Visible" ], "type": "string", "title": "Nullable" } }, "xml": { "name": "GetShiftNotesModel" }, "title": "GetShiftNotesModel" }, "MarkNotesReadViewModel": { "type": "object", "properties": { "employeeId": { "format": "int32", "type": "integer", "title": "Int32" }, "noteIds": { "type": "array", "items": { "format": "int32", "type": "integer", "title": "Int32" }, "title": "Int32[]" }, "read": { "type": "boolean", "title": "Boolean" } }, "xml": { "name": "MarkNotesReadViewModel" }, "title": "MarkNotesReadViewModel" }, "EssPaymentSummaryModel": { "type": "object", "properties": { "id": { "format": "int32", "type": "integer", "title": "Int32" }, "period": { "type": "string", "title": "String" }, "isEtp": { "type": "boolean", "title": "Boolean" }, "etpCode": { "type": "string", "title": "String" } }, "xml": { "name": "EssPaymentSummaryModel" }, "title": "EssPaymentSummaryModel" }, "EssDocumentModel": { "type": "object", "properties": { "id": { "type": "string", "title": "String" }, "friendlyName": { "type": "string", "title": "String" }, "dateCreated": { "format": "date-time", "type": "string", "title": "DateTime" } }, "xml": { "name": "EssDocumentModel" }, "title": "EssDocumentModel" }, "EmployeeUnavailabilityFilter": { "type": "object", "properties": { "fromDate": { "format": "date-time", "type": "string", "title": "Nullable" }, "toDate": { "format": "date-time", "type": "string", "title": "Nullable" } }, "xml": { "name": "EmployeeUnavailabilityFilter" }, "title": "EmployeeUnavailabilityFilter" }, "EssUnavailabilityModel": { "type": "object", "properties": { "id": { "format": "int32", "type": "integer", "title": "Int32" }, "fromDate": { "format": "date-time", "type": "string", "title": "DateTime" }, "toDate": { "format": "date-time", "type": "string", "title": "Nullable" }, "endDate": { "format": "date-time", "type": "string", "title": "Nullable" }, "reason": { "type": "string", "title": "String" }, "recurring": { "type": "boolean", "title": "Boolean" }, "recurringDay": { "enum": [ "Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday" ], "type": "string", "title": "Nullable" }, "isAllDay": { "type": "boolean", "readOnly": true, "title": "Boolean" }, "viewOnly": { "type": "boolean", "title": "Boolean" } }, "xml": { "name": "EssUnavailabilityModel" }, "title": "EssUnavailabilityModel" }, "UnavailabilityEditModel": { "type": "object", "properties": { "id": { "format": "int32", "type": "integer", "title": "Int32" }, "fromDate": { "format": "date-time", "type": "string", "title": "DateTime" }, "toDate": { "format": "date-time", "type": "string", "title": "Nullable" }, "endDate": { "format": "date-time", "type": "string", "title": "Nullable" }, "reason": { "type": "string", "title": "String" }, "recurring": { "type": "boolean", "title": "Boolean" }, "recurringDay": { "enum": [ "Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday" ], "type": "string", "title": "Nullable" }, "isAllDay": { "type": "boolean", "readOnly": true, "title": "Boolean" }, "viewOnly": { "type": "boolean", "title": "Boolean" } }, "xml": { "name": "UnavailabilityEditModel" }, "title": "UnavailabilityEditModel" }, "AvailableEmployeeModel": { "type": "object", "properties": { "id": { "format": "int32", "type": "integer", "title": "Int32" }, "name": { "type": "string", "title": "String" }, "businessId": { "format": "int32", "type": "integer", "title": "Int32" }, "businessName": { "type": "string", "title": "String" }, "jobTitle": { "type": "string", "title": "String" }, "hasProfileImage": { "type": "boolean", "title": "Boolean" }, "branding": { "$ref": "#/definitions/WhiteLabelBrandingModel" }, "defaultLocationId": { "format": "int32", "type": "integer", "title": "Int32" }, "profileImageUrl": { "type": "string", "title": "String" } }, "xml": { "name": "AvailableEmployeeModel" }, "title": "AvailableEmployeeModel" }, "WhiteLabelBrandingModel": { "type": "object", "properties": { "logoUrl": { "type": "string", "title": "String" }, "backgroundImageUrl": { "type": "string", "title": "String" }, "backgroundColour": { "type": "string", "title": "String" }, "textColour": { "type": "string", "title": "String" }, "textHoverColour": { "type": "string", "title": "String" }, "textSecondaryColour": { "type": "string", "title": "String" } }, "xml": { "name": "WhiteLabelBrandingModel" }, "title": "WhiteLabelBrandingModel" }, "RecoverPasswordModel": { "required": [ "username" ], "type": "object", "properties": { "username": { "type": "string", "title": "String" }, "messageType": { "enum": [ "NewPaySlipAvailable", "NewUser", "RecoverPassword", "EmployeeAccess", "BusinessAccess", "CancelAccount", "Invoice", "InvoicePaymentSuccessNotification", "AutomatedPassword", "LeaveRequestNotification", "RestrictedAccess", "ResendPayslip", "PaymentSummaryAvailable", "SuperPaymentsUpdateResults", "InvoicePaymentFailedNotification", "NewShiftsPublished", "ShiftsUnpublished", "ShiftDeclined", "KioskAccessGranted", "DailyNotifications", "BsbDataImported", "InvoiceeCardDetailsRemoved", "WhiteLabelManagerAccess", "ResellerAccess", "DirectDepositReminder", "DataIntegrityCheckFailed", "ExpenseRequestNotification", "UnavailabilityNotification", "ReportPackGenerated", "ReportPackError", "SystemPublicHolidayImport", "TimesheetRejected", "ShiftRepublished", "PendingShiftsReminder", "EmployeeShiftActionTimeout", "InitiateEmployeeOnboarding", "FollowUpEmployeeOnboarding", "CompleteEmployeeOnboarding", "NewShiftsPreAccepted", "PayRunTaskNotification", "ShiftSwapCancelled", "BulkShiftSwapsCancelled", "ShiftSwapAwaitingApproval", "ShiftSwapProposed", "ShiftSwapAccepted", "ShiftSwapDeclined", "ShiftSwapRejected", "ShiftSwapApproved" ], "type": "string", "title": "MessageTypeEnum" } }, "xml": { "name": "RecoverPasswordModel" }, "title": "RecoverPasswordModel" }, "EmployeeExpensePaymentSummaryModel": { "type": "object", "properties": { "employeeId": { "format": "int32", "type": "integer", "title": "Int32" }, "expenseCategoryId": { "format": "int32", "type": "integer", "title": "Int32" }, "expenseCategoryName": { "type": "string", "title": "String" }, "ytdAmount": { "format": "double", "type": "number", "title": "Decimal" }, "totalAmount": { "format": "double", "type": "number", "title": "Decimal" } }, "xml": { "name": "EmployeeExpensePaymentSummaryModel" }, "title": "EmployeeExpensePaymentSummaryModel" }, "EssExpenseRequestResponseModel": { "type": "object", "properties": { "canCancel": { "type": "boolean", "readOnly": true, "title": "Boolean" }, "canModify": { "type": "boolean", "readOnly": true, "title": "Boolean" }, "id": { "format": "int32", "type": "integer", "title": "Int32" }, "employeeId": { "format": "int32", "type": "integer", "title": "Int32" }, "employeeName": { "type": "string", "title": "String" }, "status": { "type": "string", "title": "String" }, "description": { "type": "string", "title": "String" }, "lineItems": { "type": "array", "items": { "$ref": "#/definitions/ExpenseRequestLineItemModel" }, "xml": { "name": "ExpenseRequestLineItemModel", "wrapped": true }, "title": "List" }, "attachments": { "type": "array", "items": { "$ref": "#/definitions/AttachmentModel" }, "xml": { "name": "AttachmentModel", "wrapped": true }, "title": "List" }, "statusUpdatedByUser": { "type": "string", "title": "String" }, "statusUpdateNotes": { "type": "string", "title": "String" }, "dateStatusUpdated": { "format": "date-time", "type": "string", "title": "DateTime" } }, "xml": { "name": "EssExpenseRequestResponseModel" }, "title": "EssExpenseRequestResponseModel" }, "LeaveAllowanceModel": { "type": "object", "properties": { "leaveCategoryId": { "type": "string", "title": "String" }, "leaveCategoryName": { "type": "string", "title": "String" }, "units": { "format": "double", "type": "number", "title": "Nullable" }, "unitType": { "type": "string", "title": "String" }, "hoursPerYear": { "format": "double", "type": "number", "title": "Decimal" }, "automaticallyAccrues": { "type": "boolean", "title": "Boolean" }, "leaveLoading": { "format": "double", "type": "number", "title": "Decimal" } }, "xml": { "name": "LeaveAllowanceModel" }, "title": "LeaveAllowanceModel" }, "SubmitEmployeeLeaveAllowancesRequest": { "type": "object", "properties": { "employeeIdType": { "enum": [ "Standard", "External" ], "type": "string", "title": "IdType" }, "leaveCategoryIdType": { "enum": [ "Standard", "External" ], "type": "string", "title": "IdType" }, "leaveAllowances": { "type": "object", "additionalProperties": { "type": "array", "items": { "$ref": "#/definitions/LeaveAllowanceModel" }, "xml": { "name": "LeaveAllowanceModel", "wrapped": true }, "title": "List" }, "title": "Dictionary" } }, "xml": { "name": "SubmitEmployeeLeaveAllowancesRequest" }, "title": "SubmitEmployeeLeaveAllowancesRequest" }, "ODataQueryOptions[LeaveAllowanceTemplate]": { "type": "object", "properties": { "ifMatch": { "type": "object", "readOnly": true, "title": "ETag" }, "ifNoneMatch": { "type": "object", "readOnly": true, "title": "ETag" }, "context": { "$ref": "#/definitions/ODataQueryContext", "readOnly": true }, "request": { "type": "object", "readOnly": true, "title": "HttpRequestMessage" }, "rawValues": { "$ref": "#/definitions/ODataRawQueryOptions", "readOnly": true }, "selectExpand": { "$ref": "#/definitions/SelectExpandQueryOption", "readOnly": true }, "filter": { "$ref": "#/definitions/FilterQueryOption", "readOnly": true }, "orderBy": { "$ref": "#/definitions/OrderByQueryOption", "readOnly": true }, "skip": { "$ref": "#/definitions/SkipQueryOption", "readOnly": true }, "top": { "$ref": "#/definitions/TopQueryOption", "readOnly": true }, "inlineCount": { "$ref": "#/definitions/InlineCountQueryOption", "readOnly": true }, "validator": { "$ref": "#/definitions/ODataQueryValidator" } }, "xml": { "name": "ODataQueryOptions`1" }, "title": "ODataQueryOptions" }, "ODataQueryOptions[LeaveCategory]": { "type": "object", "properties": { "ifMatch": { "type": "object", "readOnly": true, "title": "ETag" }, "ifNoneMatch": { "type": "object", "readOnly": true, "title": "ETag" }, "context": { "$ref": "#/definitions/ODataQueryContext", "readOnly": true }, "request": { "type": "object", "readOnly": true, "title": "HttpRequestMessage" }, "rawValues": { "$ref": "#/definitions/ODataRawQueryOptions", "readOnly": true }, "selectExpand": { "$ref": "#/definitions/SelectExpandQueryOption", "readOnly": true }, "filter": { "$ref": "#/definitions/FilterQueryOption", "readOnly": true }, "orderBy": { "$ref": "#/definitions/OrderByQueryOption", "readOnly": true }, "skip": { "$ref": "#/definitions/SkipQueryOption", "readOnly": true }, "top": { "$ref": "#/definitions/TopQueryOption", "readOnly": true }, "inlineCount": { "$ref": "#/definitions/InlineCountQueryOption", "readOnly": true }, "validator": { "$ref": "#/definitions/ODataQueryValidator" } }, "xml": { "name": "ODataQueryOptions`1" }, "title": "ODataQueryOptions" }, "LeaveCategoryModel": { "type": "object", "properties": { "id": { "format": "int32", "type": "integer", "title": "Int32" }, "name": { "type": "string", "title": "String" }, "unitType": { "enum": [ "Days", "Weeks", "HoursPerHourWorked", "HoursPerPayRun" ], "type": "string", "title": "LeaveAllowanceUnitEnum" }, "units": { "format": "double", "type": "number", "title": "Decimal" }, "automaticallyAccrues": { "type": "boolean", "title": "Boolean" }, "isPrivate": { "type": "boolean", "title": "Boolean" }, "excludeFromTerminationPayout": { "type": "boolean", "title": "Boolean" }, "externalId": { "type": "string", "title": "String" }, "source": { "type": "string", "title": "String" }, "leaveLoading": { "format": "double", "type": "number", "title": "Decimal" }, "contingentPeriod": { "format": "double", "type": "number", "title": "Nullable" }, "entitlementPeriod": { "format": "double", "type": "number", "title": "Nullable" }, "isBalanceUntracked": { "type": "boolean", "title": "Boolean" }, "leaveCategoryType": { "enum": [ "Standard", "LongServiceLeave" ], "type": "string", "title": "LeaveCategoryTypeEnum" }, "deductFromPrimaryPayCategory": { "type": "boolean", "title": "Boolean" }, "deductFromPayCategoryId": { "format": "int32", "type": "integer", "title": "Nullable" }, "transferToPayCategoryId": { "format": "int32", "type": "integer", "title": "Nullable" }, "hideAccrualsOnPayslip": { "type": "boolean", "title": "Boolean" }, "useDeductFromPayCategoryRate": { "type": "boolean", "title": "Boolean" } }, "xml": { "name": "LeaveCategoryModel" }, "title": "LeaveCategoryModel" }, "LeaveRequestFilterModel": { "type": "object", "properties": { "status": { "enum": [ "Pending", "Approved", "Cancelled", "Rejected" ], "type": "string", "title": "Nullable" }, "fromDate": { "format": "date-time", "type": "string", "title": "Nullable" }, "toDate": { "format": "date-time", "type": "string", "title": "Nullable" }, "leaveCategoryId": { "format": "int32", "type": "integer", "title": "Nullable" }, "locationId": { "format": "int32", "type": "integer", "title": "Nullable" }, "employeeId": { "format": "int32", "type": "integer", "title": "Nullable" }, "groupBy": { "enum": [ "Employee", "LeaveType" ], "type": "string", "title": "LeaveRequestGroupBy" }, "restrictOverlappingLeave": { "type": "boolean", "title": "Boolean" } }, "xml": { "name": "LeaveRequestFilterModel" }, "title": "LeaveRequestFilterModel" }, "LeaveRequestResponseModel": { "type": "object", "properties": { "id": { "format": "int32", "type": "integer", "title": "Int32" }, "employeeId": { "format": "int32", "type": "integer", "title": "Int32" }, "leaveCategoryId": { "format": "int32", "type": "integer", "title": "Int32" }, "employee": { "type": "string", "title": "String" }, "leaveCategory": { "type": "string", "title": "String" }, "fromDate": { "format": "date-time", "type": "string", "title": "DateTime" }, "toDate": { "format": "date-time", "type": "string", "title": "DateTime" }, "totalHours": { "format": "double", "type": "number", "title": "Decimal" }, "hoursApplied": { "format": "double", "type": "number", "title": "Decimal" }, "notes": { "type": "string", "title": "String" }, "status": { "type": "string", "title": "String" }, "attachmentId": { "format": "int32", "type": "integer", "title": "Nullable" } }, "xml": { "name": "LeaveRequestResponseModel" }, "title": "LeaveRequestResponseModel" }, "ODataQueryOptions[LeaveRequest]": { "type": "object", "properties": { "ifMatch": { "type": "object", "readOnly": true, "title": "ETag" }, "ifNoneMatch": { "type": "object", "readOnly": true, "title": "ETag" }, "context": { "$ref": "#/definitions/ODataQueryContext", "readOnly": true }, "request": { "type": "object", "readOnly": true, "title": "HttpRequestMessage" }, "rawValues": { "$ref": "#/definitions/ODataRawQueryOptions", "readOnly": true }, "selectExpand": { "$ref": "#/definitions/SelectExpandQueryOption", "readOnly": true }, "filter": { "$ref": "#/definitions/FilterQueryOption", "readOnly": true }, "orderBy": { "$ref": "#/definitions/OrderByQueryOption", "readOnly": true }, "skip": { "$ref": "#/definitions/SkipQueryOption", "readOnly": true }, "top": { "$ref": "#/definitions/TopQueryOption", "readOnly": true }, "inlineCount": { "$ref": "#/definitions/InlineCountQueryOption", "readOnly": true }, "validator": { "$ref": "#/definitions/ODataQueryValidator" } }, "xml": { "name": "ODataQueryOptions`1" }, "title": "ODataQueryOptions" }, "ApiLeaveApplicationModel": { "required": [ "fromDate", "toDate", "hours", "leaveCategoryId" ], "type": "object", "properties": { "automaticallyApprove": { "type": "boolean", "title": "Boolean" }, "employeeId": { "format": "int32", "type": "integer", "title": "Int32" }, "requireNotesForLeaveRequests": { "type": "boolean", "title": "Boolean" }, "attachment": { "$ref": "#/definitions/AttachmentModel" }, "id": { "format": "int32", "type": "integer", "title": "Int32" }, "fromDate": { "format": "date-time", "type": "string", "title": "DateTime" }, "toDate": { "format": "date-time", "type": "string", "title": "DateTime" }, "hours": { "format": "double", "maximum": 2000, "type": "number", "title": "Decimal" }, "leaveCategoryId": { "format": "int32", "type": "integer", "title": "Nullable" }, "notes": { "maxLength": 255, "type": "string", "title": "String" } }, "xml": { "name": "ApiLeaveApplicationModel" }, "title": "ApiLeaveApplicationModel" }, "DeclineLeaveRequest": { "type": "object", "properties": { "reason": { "type": "string", "title": "String" } }, "xml": { "name": "DeclineLeaveRequest" }, "title": "DeclineLeaveRequest" }, "ODataQueryOptions[Location]": { "type": "object", "properties": { "ifMatch": { "type": "object", "readOnly": true, "title": "ETag" }, "ifNoneMatch": { "type": "object", "readOnly": true, "title": "ETag" }, "context": { "$ref": "#/definitions/ODataQueryContext", "readOnly": true }, "request": { "type": "object", "readOnly": true, "title": "HttpRequestMessage" }, "rawValues": { "$ref": "#/definitions/ODataRawQueryOptions", "readOnly": true }, "selectExpand": { "$ref": "#/definitions/SelectExpandQueryOption", "readOnly": true }, "filter": { "$ref": "#/definitions/FilterQueryOption", "readOnly": true }, "orderBy": { "$ref": "#/definitions/OrderByQueryOption", "readOnly": true }, "skip": { "$ref": "#/definitions/SkipQueryOption", "readOnly": true }, "top": { "$ref": "#/definitions/TopQueryOption", "readOnly": true }, "inlineCount": { "$ref": "#/definitions/InlineCountQueryOption", "readOnly": true }, "validator": { "$ref": "#/definitions/ODataQueryValidator" } }, "xml": { "name": "ODataQueryOptions`1" }, "title": "ODataQueryOptions" }, "NameIdPair": { "type": "object", "properties": { "id": { "type": "string", "title": "String" }, "name": { "type": "string", "title": "String" } }, "xml": { "name": "NameIdPair" }, "title": "NameIdPair" }, "EssDeclineRosterShiftModel": { "required": [ "reason" ], "type": "object", "properties": { "reason": { "type": "string", "title": "String" } }, "xml": { "name": "EssDeclineRosterShiftModel" }, "title": "EssDeclineRosterShiftModel" }, "EssBulkAcceptRosterShiftsModel": { "type": "object", "properties": { "shifts": { "type": "array", "items": { "format": "int32", "type": "integer", "title": "Int32" }, "title": "IList" } }, "xml": { "name": "EssBulkAcceptRosterShiftsModel" }, "title": "EssBulkAcceptRosterShiftsModel" }, "EssBulkDeclineRosterShiftsModel": { "required": [ "reason" ], "type": "object", "properties": { "reason": { "type": "string", "title": "String" }, "shifts": { "type": "array", "items": { "format": "int32", "type": "integer", "title": "Int32" }, "title": "IList" } }, "xml": { "name": "EssBulkDeclineRosterShiftsModel" }, "title": "EssBulkDeclineRosterShiftsModel" }, "RosterShiftMatchingResultModel": { "type": "object", "properties": { "shift": { "$ref": "#/definitions/EssRosterShiftModel" } }, "xml": { "name": "RosterShiftMatchingResultModel" }, "title": "RosterShiftMatchingResultModel" }, "SwapShiftModel": { "type": "object", "properties": { "rosterShiftId": { "format": "int32", "type": "integer", "title": "Int32" }, "fromEmployeeId": { "format": "int32", "type": "integer", "title": "Int32" }, "toEmployeeId": { "format": "int32", "type": "integer", "title": "Int32" }, "note": { "type": "string", "title": "String" }, "dateCreated": { "format": "date-time", "type": "string", "title": "Nullable" }, "createdByUserId": { "format": "int32", "type": "integer", "title": "Nullable" }, "token": { "type": "string", "title": "String" } }, "xml": { "name": "SwapShiftModel" }, "title": "SwapShiftModel" }, "EssBulkRosterShiftSwapModel": { "type": "object", "properties": { "shifts": { "type": "array", "items": { "format": "int32", "type": "integer", "title": "Int32" }, "title": "IList" } }, "xml": { "name": "EssBulkRosterShiftSwapModel" }, "title": "EssBulkRosterShiftSwapModel" }, "TasksReportRequestModel": { "type": "object", "properties": { "employeeId": { "format": "int32", "type": "integer", "title": "Int32" }, "payRunId": { "format": "int32", "type": "integer", "title": "Int32" }, "fromDate": { "format": "date-time", "type": "string", "title": "Nullable" }, "toDate": { "format": "date-time", "type": "string", "title": "Nullable" }, "payScheduleId": { "format": "int32", "type": "integer", "title": "Int32" }, "status": { "enum": [ "All", "Completed", "NotCompleted" ], "type": "string", "title": "TasksReportStatusEnum" } }, "xml": { "name": "TasksReportRequestModel" }, "title": "TasksReportRequestModel" }, "TasksReportExportModel": { "type": "object", "properties": { "payRunTaskId": { "format": "int32", "type": "integer", "title": "Int32" }, "employeeName": { "type": "string", "title": "String" }, "employeeId": { "format": "int32", "type": "integer", "title": "Nullable" }, "externalId": { "type": "string", "title": "String" }, "taskDescription": { "type": "string", "title": "String" }, "createdBy": { "type": "string", "title": "String" }, "createdDate": { "format": "date-time", "type": "string", "title": "DateTime" }, "dueDate": { "format": "date-time", "type": "string", "title": "Nullable" }, "completed": { "type": "boolean", "title": "Boolean" }, "notes": { "type": "array", "items": { "$ref": "#/definitions/TasksReportNoteModel" }, "xml": { "name": "TasksReportNoteModel", "wrapped": true }, "title": "List" }, "completedBy": { "type": "string", "title": "String" }, "completedDate": { "format": "date-time", "type": "string", "title": "Nullable" } }, "xml": { "name": "TasksReportExportModel" }, "title": "TasksReportExportModel" }, "TasksReportNoteModel": { "type": "object", "properties": { "username": { "type": "string", "title": "String" }, "dateCreated": { "format": "date-time", "type": "string", "title": "DateTime" }, "note": { "type": "string", "title": "String" }, "isVisibleToManager": { "type": "boolean", "title": "Boolean" } }, "xml": { "name": "TasksReportNoteModel" }, "title": "TasksReportNoteModel" }, "ShiftSwappingReportRequestModel": { "type": "object", "properties": { "fromEmployeeId": { "format": "int32", "type": "integer", "title": "Nullable" }, "toEmployeeId": { "format": "int32", "type": "integer", "title": "Nullable" }, "includeCosts": { "type": "boolean", "title": "Boolean" }, "statuses": { "type": "array", "items": { "enum": [ "Created", "Cancelled", "Accepted", "Declined", "AwaitingManagerApproval", "ApprovedByManager", "RejectedByManager" ], "type": "string", "title": "RosterShiftSwapStatusEnum" }, "xml": { "name": "RosterShiftSwapStatusEnum", "wrapped": true }, "title": "IList" }, "fromDate": { "format": "date-time", "type": "string", "title": "DateTime" }, "toDate": { "format": "date-time", "type": "string", "title": "DateTime" }, "locationId": { "format": "int32", "type": "integer", "title": "Int32" }, "employingEntityId": { "format": "int32", "type": "integer", "title": "Nullable" } }, "xml": { "name": "ShiftSwappingReportRequestModel" }, "title": "ShiftSwappingReportRequestModel" }, "ShiftSwappingReportExportModel": { "type": "object", "properties": { "fromEmployeeId": { "format": "int32", "type": "integer", "title": "Int32" }, "fromEmployeeName": { "type": "string", "title": "String" }, "toEmployeeId": { "format": "int32", "type": "integer", "title": "Int32" }, "toEmployeeName": { "type": "string", "title": "String" }, "start": { "format": "date-time", "type": "string", "title": "DateTime" }, "startTime": { "type": "string", "title": "TimeSpan" }, "end": { "format": "date-time", "type": "string", "title": "DateTime" }, "endTime": { "type": "string", "title": "TimeSpan" }, "locationId": { "type": "string", "title": "String" }, "location": { "type": "string", "title": "String" }, "workTypeId": { "type": "string", "title": "String" }, "workType": { "type": "string", "title": "String" }, "status": { "type": "string", "title": "String" }, "oldCost": { "format": "double", "type": "number", "title": "Nullable" }, "newCost": { "format": "double", "type": "number", "title": "Nullable" } }, "xml": { "name": "ShiftSwappingReportExportModel" }, "title": "ShiftSwappingReportExportModel" }, "ODataQueryOptions[PayCategory]": { "type": "object", "properties": { "ifMatch": { "type": "object", "readOnly": true, "title": "ETag" }, "ifNoneMatch": { "type": "object", "readOnly": true, "title": "ETag" }, "context": { "$ref": "#/definitions/ODataQueryContext", "readOnly": true }, "request": { "type": "object", "readOnly": true, "title": "HttpRequestMessage" }, "rawValues": { "$ref": "#/definitions/ODataRawQueryOptions", "readOnly": true }, "selectExpand": { "$ref": "#/definitions/SelectExpandQueryOption", "readOnly": true }, "filter": { "$ref": "#/definitions/FilterQueryOption", "readOnly": true }, "orderBy": { "$ref": "#/definitions/OrderByQueryOption", "readOnly": true }, "skip": { "$ref": "#/definitions/SkipQueryOption", "readOnly": true }, "top": { "$ref": "#/definitions/TopQueryOption", "readOnly": true }, "inlineCount": { "$ref": "#/definitions/InlineCountQueryOption", "readOnly": true }, "validator": { "$ref": "#/definitions/ODataQueryValidator" } }, "xml": { "name": "ODataQueryOptions`1" }, "title": "ODataQueryOptions" }, "PayCategoryModel": { "type": "object", "properties": { "id": { "format": "int32", "type": "integer", "title": "Int32" }, "parentId": { "format": "int32", "type": "integer", "title": "Nullable" }, "name": { "type": "string", "title": "String" }, "rateUnit": { "enum": [ "Hourly", "Annually", "Fixed", "Daily" ], "type": "string", "title": "RateUnitEnum" }, "accruesLeave": { "type": "boolean", "title": "Boolean" }, "defaultSuperRate": { "format": "double", "type": "number", "title": "Decimal" }, "rateLoadingPercent": { "format": "double", "type": "number", "title": "Decimal" }, "penaltyLoadingPercent": { "format": "double", "type": "number", "title": "Decimal" }, "isTaxExempt": { "type": "boolean", "title": "Boolean" }, "isPayrollTaxExempt": { "type": "boolean", "title": "Boolean" }, "externalId": { "type": "string", "title": "String" }, "source": { "type": "string", "title": "String" }, "generalLedgerMappingCode": { "type": "string", "title": "String" }, "superExpenseMappingCode": { "type": "string", "title": "String" }, "superLiabilityMappingCode": { "type": "string", "title": "String" }, "isSystemPayCategory": { "type": "boolean", "title": "Boolean" }, "numberOfDecimalPlaces": { "format": "int32", "type": "integer", "title": "Nullable" }, "paymentSummaryClassification": { "enum": [ "Default", "Allowance", "LumpSumATypeR", "LumpSumATypeT", "LumpSumB", "LumpSumD", "LumpSumE", "Exclude", "Cdep", "ExemptForeignEmploymentIncome" ], "type": "string", "title": "Nullable" } }, "xml": { "name": "PayCategoryModel" }, "title": "PayCategoryModel" }, "ODataQueryOptions[PaygPaymentSummarySnapshot]": { "type": "object", "properties": { "ifMatch": { "type": "object", "readOnly": true, "title": "ETag" }, "ifNoneMatch": { "type": "object", "readOnly": true, "title": "ETag" }, "context": { "$ref": "#/definitions/ODataQueryContext", "readOnly": true }, "request": { "type": "object", "readOnly": true, "title": "HttpRequestMessage" }, "rawValues": { "$ref": "#/definitions/ODataRawQueryOptions", "readOnly": true }, "selectExpand": { "$ref": "#/definitions/SelectExpandQueryOption", "readOnly": true }, "filter": { "$ref": "#/definitions/FilterQueryOption", "readOnly": true }, "orderBy": { "$ref": "#/definitions/OrderByQueryOption", "readOnly": true }, "skip": { "$ref": "#/definitions/SkipQueryOption", "readOnly": true }, "top": { "$ref": "#/definitions/TopQueryOption", "readOnly": true }, "inlineCount": { "$ref": "#/definitions/InlineCountQueryOption", "readOnly": true }, "validator": { "$ref": "#/definitions/ODataQueryValidator" } }, "xml": { "name": "ODataQueryOptions`1" }, "title": "ODataQueryOptions" }, "PaygPaymentSummaryModel": { "type": "object", "properties": { "employeeId": { "format": "int32", "type": "integer", "title": "Int32" }, "employingEntityId": { "format": "int32", "type": "integer", "title": "Nullable" }, "dateGenerated": { "format": "date-time", "type": "string", "title": "DateTime" }, "paymentSummaryType": { "enum": [ "BusinessAndPersonalServicesIncome", "EmployeeTerminationPayment", "ForeignEmployment", "IndividualNonBusiness", "SuperannuationIncomeStream", "SuperannuationLumpSum" ], "type": "string", "title": "PaygPaymentSummaryTypeEnum" }, "status": { "enum": [ "Generated", "Published", "Unpublished" ], "type": "string", "title": "PaygPaymentSummaryStatus" }, "etpCode": { "type": "string", "title": "String" }, "isAmended": { "type": "boolean", "title": "Boolean" }, "payeeName": { "type": "string", "title": "String" }, "payeeAddress": { "type": "string", "title": "String" }, "payeeAddressLine2": { "type": "string", "title": "String" }, "payeeSuburb": { "type": "string", "title": "String" }, "payeePostCode": { "type": "string", "title": "String" }, "payeeState": { "type": "string", "title": "String" }, "paymentPeriodStart": { "format": "date-time", "type": "string", "title": "DateTime" }, "paymentPeriodEnd": { "format": "date-time", "type": "string", "title": "DateTime" }, "financialYearStart": { "format": "date-time", "type": "string", "title": "DateTime" }, "financialYearEnd": { "format": "date-time", "type": "string", "title": "DateTime" }, "payeeTaxFileNumber": { "type": "string", "title": "String" }, "totalTaxWithheld": { "format": "int32", "type": "integer", "title": "Int32" }, "grossPayments": { "format": "int32", "type": "integer", "title": "Int32" }, "cdepPayments": { "format": "int32", "type": "integer", "title": "Int32" }, "fringeBenefits": { "format": "int32", "type": "integer", "title": "Int32" }, "isExemptFromFringeBenefitsTax": { "type": "boolean", "title": "Nullable" }, "employerSuperContributions": { "format": "int32", "type": "integer", "title": "Int32" }, "totalAllowances": { "format": "int32", "type": "integer", "title": "Int32" }, "lumpSumA": { "format": "int32", "type": "integer", "title": "Int32" }, "lumpSumB": { "format": "int32", "type": "integer", "title": "Int32" }, "lumpSumD": { "format": "int32", "type": "integer", "title": "Int32" }, "lumpSumE": { "format": "int32", "type": "integer", "title": "Int32" }, "lumpSumAType": { "type": "string", "title": "String" }, "notReportedAmount": { "format": "int32", "type": "integer", "title": "Int32" }, "allowances": { "type": "object", "additionalProperties": { "format": "int32", "type": "integer", "title": "Int32" }, "title": "Dictionary" }, "unionFeeDeductions": { "type": "object", "additionalProperties": { "format": "int32", "type": "integer", "title": "Int32" }, "title": "Dictionary" }, "workplaceGiving": { "format": "int32", "type": "integer", "title": "Int32" }, "exemptForeignEmploymentIncome": { "format": "int32", "type": "integer", "title": "Int32" }, "deductibleAmountOfUndeductedAnnuityPrice": { "format": "int32", "type": "integer", "title": "Int32" }, "otherAmounts": { "type": "array", "items": { "$ref": "#/definitions/OtherAmounts" }, "xml": { "name": "OtherAmounts", "wrapped": true }, "title": "IList" }, "payerABN": { "type": "string", "title": "String" }, "payerName": { "type": "string", "title": "String" }, "payerBranch": { "type": "string", "title": "String" }, "payerSignatory": { "type": "string", "title": "String" }, "paymentDate": { "format": "date-time", "type": "string", "title": "DateTime" }, "isTransitionalTerminationPayment": { "type": "boolean", "title": "Boolean" }, "isPartOfEarlierPayment": { "type": "boolean", "title": "Boolean" }, "taxableComponent": { "format": "int32", "type": "integer", "title": "Int32" }, "taxFreeComponent": { "format": "int32", "type": "integer", "title": "Int32" }, "payeeABN": { "type": "string", "title": "String" }, "paymentType": { "type": "string", "title": "String" }, "grossPaymentType": { "type": "string", "title": "String" }, "foreignTaxPaid": { "format": "int32", "type": "integer", "title": "Int32" }, "taxableComponentTaxedElement": { "format": "int32", "type": "integer", "title": "Int32" }, "taxableComponentUntaxedElement": { "format": "int32", "type": "integer", "title": "Int32" }, "taxableComponentTaxFreeComponent": { "format": "int32", "type": "integer", "title": "Int32" }, "taxableComponentTaxOffsetAmount": { "format": "int32", "type": "integer", "title": "Int32" }, "lumpSumInArrearsTaxedElement": { "format": "int32", "type": "integer", "title": "Int32" }, "lumpSumInArrearsUntaxedElement": { "format": "int32", "type": "integer", "title": "Int32" }, "lumpSumInArrearsTaxFreeComponent": { "format": "int32", "type": "integer", "title": "Int32" }, "isDeathBenefit": { "type": "boolean", "title": "Boolean" }, "deathBenefitType": { "type": "string", "title": "String" }, "inputGrossEarnings": { "format": "double", "type": "number", "title": "Nullable" }, "inputPreTaxDeductionAmount": { "format": "double", "type": "number", "title": "Nullable" }, "totalDeductions": { "format": "double", "type": "number", "readOnly": true, "title": "Decimal" } }, "xml": { "name": "PaygPaymentSummaryModel" }, "title": "PaygPaymentSummaryModel" }, "OtherAmounts": { "type": "object", "properties": { "workPlaceGiving": { "format": "double", "type": "number", "title": "Decimal" }, "exemptForeignExemptIncome": { "format": "double", "type": "number", "title": "Decimal" }, "deductibleAmountOfUndeductedAnnuityPrice": { "format": "double", "type": "number", "title": "Decimal" } }, "xml": { "name": "OtherAmounts" }, "title": "OtherAmounts" }, "ODataQueryOptions[PayRateTemplate]": { "type": "object", "properties": { "ifMatch": { "type": "object", "readOnly": true, "title": "ETag" }, "ifNoneMatch": { "type": "object", "readOnly": true, "title": "ETag" }, "context": { "$ref": "#/definitions/ODataQueryContext", "readOnly": true }, "request": { "type": "object", "readOnly": true, "title": "HttpRequestMessage" }, "rawValues": { "$ref": "#/definitions/ODataRawQueryOptions", "readOnly": true }, "selectExpand": { "$ref": "#/definitions/SelectExpandQueryOption", "readOnly": true }, "filter": { "$ref": "#/definitions/FilterQueryOption", "readOnly": true }, "orderBy": { "$ref": "#/definitions/OrderByQueryOption", "readOnly": true }, "skip": { "$ref": "#/definitions/SkipQueryOption", "readOnly": true }, "top": { "$ref": "#/definitions/TopQueryOption", "readOnly": true }, "inlineCount": { "$ref": "#/definitions/InlineCountQueryOption", "readOnly": true }, "validator": { "$ref": "#/definitions/ODataQueryValidator" } }, "xml": { "name": "ODataQueryOptions`1" }, "title": "ODataQueryOptions" }, "PayRunEmployeeExpenseResponse": { "type": "object", "properties": { "employeeExpenses": { "type": "object", "additionalProperties": { "type": "array", "items": { "$ref": "#/definitions/EmployeeExpenseModel" }, "xml": { "name": "EmployeeExpenseModel", "wrapped": true }, "title": "List" }, "readOnly": true, "title": "Dictionary" }, "payRunId": { "format": "int32", "type": "integer", "title": "Int32" } }, "xml": { "name": "PayRunEmployeeExpenseResponse" }, "example": { "employeeExpenses": { "12345": [ { "employeeExpenseCategoryId": "98", "employeeExpenseCategoryName": "My expense category", "notes": "Some notes", "amount": 12.34, "taxCode": "42rty", "taxRate": 0.5, "taxCodeDisplayName": "Tax Code Display", "id": 0, "externalId": null, "locationId": "39", "locationName": "My Location", "employeeId": "12345", "employeeName": "Bob Bobberson", "employeeExternalId": "EMP01" } ] }, "payRunId": 999 }, "title": "PayRunEmployeeExpenseResponse" }, "EmployeeExpenseModel": { "type": "object", "properties": { "employeeExpenseCategoryId": { "type": "string", "title": "String" }, "employeeExpenseCategoryName": { "type": "string", "title": "String" }, "notes": { "type": "string", "title": "String" }, "amount": { "format": "double", "type": "number", "title": "Decimal" }, "taxCode": { "type": "string", "title": "String" }, "taxRate": { "format": "double", "type": "number", "title": "Nullable" }, "taxCodeDisplayName": { "type": "string", "title": "String" }, "id": { "format": "int32", "type": "integer", "title": "Int32" }, "externalId": { "type": "string", "title": "String" }, "locationId": { "type": "string", "title": "String" }, "locationName": { "type": "string", "title": "String" }, "employeeId": { "type": "string", "title": "String" }, "employeeName": { "type": "string", "title": "String" }, "employeeExternalId": { "type": "string", "title": "String" } }, "xml": { "name": "EmployeeExpenseModel" }, "title": "EmployeeExpenseModel" }, "SubmitPayRunEmployeeExpenseRequest": { "type": "object", "properties": { "locationIdType": { "enum": [ "Standard", "External" ], "type": "string", "title": "IdType" }, "employeeExpenseCategoryIdType": { "enum": [ "Standard", "External" ], "type": "string", "title": "IdType" }, "expenses": { "type": "object", "additionalProperties": { "type": "array", "items": { "$ref": "#/definitions/EmployeeExpenseModel" }, "xml": { "name": "EmployeeExpenseModel", "wrapped": true }, "title": "List" }, "title": "Dictionary" }, "payRunId": { "format": "int32", "type": "integer", "title": "Int32" }, "employeeIdType": { "enum": [ "Standard", "External" ], "type": "string", "title": "IdType" }, "replaceExisting": { "type": "boolean", "title": "Boolean" }, "suppressCalculations": { "type": "boolean", "title": "Boolean" } }, "xml": { "name": "SubmitPayRunEmployeeExpenseRequest" }, "title": "SubmitPayRunEmployeeExpenseRequest" }, "PayRunDetailsModel": { "type": "object", "properties": { "payRun": { "$ref": "#/definitions/PayRunModel" }, "payRunTotals": { "type": "array", "items": { "$ref": "#/definitions/PayRunTotalGridModel" }, "xml": { "name": "PayRunTotalGridModel", "wrapped": true }, "title": "IList" }, "grandTotal": { "$ref": "#/definitions/PayRunGrandTotalModel" } }, "xml": { "name": "PayRunDetailsModel" }, "title": "PayRunDetailsModel" }, "PayRunModel": { "type": "object", "properties": { "id": { "format": "int32", "type": "integer", "title": "Int32" }, "dateFinalised": { "format": "date-time", "type": "string", "title": "Nullable" }, "payScheduleId": { "format": "int32", "type": "integer", "title": "Int32" }, "payPeriodStarting": { "format": "date-time", "type": "string", "title": "DateTime" }, "payPeriodEnding": { "format": "date-time", "type": "string", "title": "DateTime" }, "datePaid": { "format": "date-time", "type": "string", "title": "DateTime" }, "isFinalised": { "type": "boolean", "title": "Boolean" }, "paySlipsPublished": { "type": "boolean", "title": "Boolean" }, "notation": { "type": "string", "title": "String" }, "externalId": { "type": "string", "title": "String" } }, "xml": { "name": "PayRunModel" }, "title": "PayRunModel" }, "PayRunTotalGridModel": { "type": "object", "properties": { "id": { "format": "int32", "type": "integer", "title": "Int32" }, "employeeName": { "type": "string", "title": "String" }, "totalHours": { "format": "double", "type": "number", "title": "Decimal" }, "grossEarnings": { "format": "double", "type": "number", "title": "Decimal" }, "netEarnings": { "format": "double", "type": "number", "title": "Decimal" }, "paygWithholdingAmount": { "format": "double", "type": "number", "title": "Decimal" }, "paygWithholdingPercent": { "format": "double", "type": "number", "readOnly": true, "title": "Decimal" }, "sfssAmount": { "format": "double", "type": "number", "title": "Decimal" }, "helpAmount": { "format": "double", "type": "number", "title": "Decimal" }, "superContribution": { "format": "double", "type": "number", "title": "Decimal" }, "employerContribution": { "format": "double", "type": "number", "title": "Decimal" }, "superContributionMinusSuperAdjustments": { "format": "double", "type": "number", "readOnly": true, "title": "Decimal" }, "allSuperContributionsTotal": { "format": "double", "type": "number", "readOnly": true, "title": "Decimal" }, "taxableEarnings": { "format": "double", "type": "number", "title": "Decimal" }, "postTaxDeductionAmount": { "format": "double", "type": "number", "title": "Decimal" }, "preTaxDeductionAmount": { "format": "double", "type": "number", "title": "Decimal" }, "grossPlusSuper": { "format": "double", "type": "number", "readOnly": true, "title": "Decimal" }, "payConditionRuleSetName": { "type": "string", "title": "String" }, "employeeId": { "format": "int32", "type": "integer", "title": "Int32" }, "isTermination": { "type": "boolean", "title": "Boolean" }, "notation": { "type": "string", "title": "String" }, "employeeStartDate": { "format": "date-time", "type": "string", "title": "Nullable" }, "employeeExternalReferenceId": { "type": "string", "title": "String" }, "isExcluded": { "type": "boolean", "title": "Boolean" }, "employeeExternalId": { "type": "string", "title": "String" }, "superAdjustmentsAmount": { "format": "double", "type": "number", "title": "Decimal" }, "salarySacrificeSuperAmount": { "format": "double", "type": "number", "title": "Decimal" }, "memberVoluntarySuperAmount": { "format": "double", "type": "number", "title": "Decimal" }, "nonSuperDeductionTotal": { "format": "double", "type": "number", "title": "Decimal" }, "superPaymentsTotal": { "format": "double", "type": "number", "title": "Decimal" }, "bankPaymentsTotal": { "format": "double", "type": "number", "title": "Decimal" }, "terminationDate": { "format": "date-time", "type": "string", "title": "Nullable" }, "earliestTerminationDate": { "format": "date-time", "type": "string", "title": "Nullable" }, "previousTerminationDate": { "format": "date-time", "type": "string", "title": "Nullable" }, "employeeExpensesTotal": { "format": "double", "type": "number", "title": "Decimal" }, "employerLiabilitiesTotal": { "format": "double", "type": "number", "title": "Decimal" }, "isEmployeeUnder18": { "type": "boolean", "title": "Boolean" }, "employerContributionAdjustmentsAmount": { "format": "double", "type": "number", "title": "Decimal" }, "paygAdjustmentsAmount": { "format": "double", "type": "number", "title": "Decimal" }, "superContributionsCapApplied": { "type": "boolean", "title": "Boolean" }, "isComplete": { "type": "boolean", "title": "Boolean" }, "paygPaymentTotal": { "format": "double", "type": "number", "title": "Decimal" } }, "xml": { "name": "PayRunTotalGridModel" }, "title": "PayRunTotalGridModel" }, "PayRunGrandTotalModel": { "type": "object", "properties": { "numberOfEmployees": { "format": "int32", "type": "integer", "title": "Int32" }, "totalHours": { "format": "double", "type": "number", "title": "Decimal" }, "taxableEarnings": { "format": "double", "type": "number", "title": "Decimal" }, "grossEarnings": { "format": "double", "type": "number", "title": "Decimal" }, "netEarnings": { "format": "double", "type": "number", "title": "Decimal" }, "paygWithholdingAmount": { "format": "double", "type": "number", "title": "Decimal" }, "sfssAmount": { "format": "double", "type": "number", "title": "Decimal" }, "helpAmount": { "format": "double", "type": "number", "title": "Decimal" }, "superContribution": { "format": "double", "type": "number", "title": "Decimal" }, "preTaxDeductionAmount": { "format": "double", "type": "number", "title": "Decimal" }, "postTaxDeductionAmount": { "format": "double", "type": "number", "title": "Decimal" }, "employerContribution": { "format": "double", "type": "number", "title": "Decimal" }, "employeeExpensesTotal": { "format": "double", "type": "number", "title": "Decimal" }, "employerLiabilitiesTotal": { "format": "double", "type": "number", "title": "Decimal" } }, "xml": { "name": "PayRunGrandTotalModel" }, "title": "PayRunGrandTotalModel" }, "TerminateEmployeeRequest": { "type": "object", "properties": { "employeeId": { "format": "int32", "type": "integer", "title": "Int32" } }, "xml": { "name": "TerminateEmployeeRequest" }, "title": "TerminateEmployeeRequest" }, "ApiPaySlipModel": { "type": "object", "properties": { "totalAccruedLeave": { "type": "array", "items": { "$ref": "#/definitions/ApiPaySlipLeaveModel" }, "xml": { "name": "ApiPaySlipLeaveModel", "wrapped": true }, "title": "IList" }, "accruedLeave": { "type": "array", "items": { "$ref": "#/definitions/ApiPaySlipLeaveModel" }, "xml": { "name": "ApiPaySlipLeaveModel", "wrapped": true }, "title": "IList" }, "leaveTaken": { "type": "array", "items": { "$ref": "#/definitions/ApiPaySlipLeaveModel" }, "xml": { "name": "ApiPaySlipLeaveModel", "wrapped": true }, "title": "IList" }, "paygAdjustments": { "type": "array", "items": { "$ref": "#/definitions/ApiPaySlipPaygAdjustmentModel" }, "xml": { "name": "ApiPaySlipPaygAdjustmentModel", "wrapped": true }, "title": "IList" }, "superAdjustments": { "type": "array", "items": { "$ref": "#/definitions/ApiPaySlipSuperAdjustmentModel" }, "xml": { "name": "ApiPaySlipSuperAdjustmentModel", "wrapped": true }, "title": "IList" }, "earningsLines": { "type": "array", "items": { "$ref": "#/definitions/ApiPaySlipEarningsLineModel" }, "xml": { "name": "ApiPaySlipEarningsLineModel", "wrapped": true }, "title": "IList" }, "deductions": { "type": "array", "items": { "$ref": "#/definitions/ApiPaySlipDeductionModel" }, "xml": { "name": "ApiPaySlipDeductionModel", "wrapped": true }, "title": "IList" }, "superPayments": { "type": "array", "items": { "$ref": "#/definitions/ApiPaySlipSuperPaymentModel" }, "xml": { "name": "ApiPaySlipSuperPaymentModel", "wrapped": true }, "title": "IList" }, "bankPayments": { "type": "array", "items": { "$ref": "#/definitions/ApiPaySlipBankPaymentModel" }, "xml": { "name": "ApiPaySlipBankPaymentModel", "wrapped": true }, "title": "IList" }, "grossYTDDetails": { "type": "array", "items": { "$ref": "#/definitions/ApiYearToDateEarningsBreakdownModel" }, "xml": { "name": "ApiYearToDateEarningsBreakdownModel", "wrapped": true }, "title": "IList" }, "employeeExpenses": { "type": "array", "items": { "$ref": "#/definitions/ApiEmployeeExpenseGridModel" }, "xml": { "name": "ApiEmployeeExpenseGridModel", "wrapped": true }, "title": "IList" }, "totalHours": { "format": "double", "type": "number", "title": "Decimal" }, "grossEarnings": { "format": "double", "type": "number", "title": "Decimal" }, "netEarnings": { "format": "double", "type": "number", "title": "Decimal" }, "paygWithholdingAmount": { "format": "double", "type": "number", "title": "Decimal" }, "sfssAmount": { "format": "double", "type": "number", "title": "Decimal" }, "helpAmount": { "format": "double", "type": "number", "title": "Decimal" }, "superContribution": { "format": "double", "type": "number", "title": "Decimal" }, "taxableEarnings": { "format": "double", "type": "number", "title": "Decimal" }, "postTaxDeductionAmount": { "format": "double", "type": "number", "title": "Decimal" }, "preTaxDeductionAmount": { "format": "double", "type": "number", "title": "Decimal" }, "id": { "format": "int32", "type": "integer", "title": "Int32" }, "businessName": { "type": "string", "title": "String" }, "businessAddress": { "type": "string", "title": "String" }, "abn": { "type": "string", "title": "String" }, "contactName": { "type": "string", "title": "String" }, "payPeriodStarting": { "type": "string", "title": "String" }, "payPeriodEnding": { "type": "string", "title": "String" }, "message": { "type": "string", "title": "String" }, "employeeId": { "format": "int32", "type": "integer", "title": "Int32" }, "employeeExternalId": { "type": "string", "title": "String" }, "employeeName": { "type": "string", "title": "String" }, "employeeFirstName": { "type": "string", "title": "String" }, "employeeSurname": { "type": "string", "title": "String" }, "employeePostalStreetAddress": { "type": "string", "title": "String" }, "employeePostalAddressLine2": { "type": "string", "title": "String" }, "employeePostalSuburbName": { "type": "string", "title": "String" }, "employeePostalSuburbPostcode": { "type": "string", "title": "String" }, "employeePostalSuburbState": { "type": "string", "title": "String" }, "notation": { "type": "string", "title": "String" }, "isPublished": { "type": "boolean", "title": "Boolean" }, "grossYTD": { "format": "double", "type": "number", "title": "Decimal" }, "netYTD": { "format": "double", "type": "number", "title": "Decimal" }, "paygYTD": { "format": "double", "type": "number", "title": "Decimal" }, "superYTD": { "format": "double", "type": "number", "title": "Decimal" }, "taxableEarningsYTD": { "format": "double", "type": "number", "title": "Decimal" }, "basePayRate": { "type": "string", "title": "String" }, "baseRate": { "type": "string", "readOnly": true, "title": "String" }, "hourlyRate": { "format": "double", "type": "number", "title": "Decimal" }, "preTaxDeductionsYTD": { "format": "double", "type": "number", "title": "Decimal" }, "postTaxDeductionsYTD": { "format": "double", "type": "number", "title": "Decimal" }, "sfssYTD": { "format": "double", "type": "number", "title": "Decimal" }, "helpYTD": { "format": "double", "type": "number", "title": "Decimal" }, "employeeBaseRate": { "format": "double", "type": "number", "title": "Decimal" }, "employeeBaseRateUnit": { "enum": [ "Hourly", "Annually", "Fixed", "Daily" ], "type": "string", "title": "RateUnitEnum" } }, "xml": { "name": "ApiPaySlipModel" }, "title": "ApiPaySlipModel" }, "ApiPaySlipLeaveModel": { "type": "object", "properties": { "leaveCategory": { "type": "string", "title": "String" }, "amount": { "format": "double", "type": "number", "title": "Decimal" }, "notes": { "type": "string", "title": "String" } }, "xml": { "name": "ApiPaySlipLeaveModel" }, "title": "ApiPaySlipLeaveModel" }, "ApiPaySlipPaygAdjustmentModel": { "type": "object", "properties": { "notes": { "type": "string", "title": "String" }, "amount": { "format": "double", "type": "number", "title": "Decimal" } }, "xml": { "name": "ApiPaySlipPaygAdjustmentModel" }, "title": "ApiPaySlipPaygAdjustmentModel" }, "ApiPaySlipSuperAdjustmentModel": { "type": "object", "properties": { "notes": { "type": "string", "title": "String" }, "amount": { "format": "double", "type": "number", "title": "Decimal" } }, "xml": { "name": "ApiPaySlipSuperAdjustmentModel" }, "title": "ApiPaySlipSuperAdjustmentModel" }, "ApiPaySlipEarningsLineModel": { "type": "object", "properties": { "payCategoryName": { "type": "string", "title": "String" }, "units": { "format": "double", "type": "number", "title": "Decimal" }, "isFixed": { "type": "boolean", "title": "Boolean" }, "isTaxExempt": { "type": "boolean", "title": "Boolean" }, "rate": { "format": "double", "type": "number", "title": "Decimal" }, "superContribution": { "format": "double", "type": "number", "title": "Decimal" }, "notes": { "type": "string", "title": "String" }, "grossEarnings": { "format": "double", "type": "number", "title": "Decimal" }, "taxableEarnings": { "format": "double", "type": "number", "title": "Decimal" }, "locationName": { "type": "string", "title": "String" } }, "xml": { "name": "ApiPaySlipEarningsLineModel" }, "title": "ApiPaySlipEarningsLineModel" }, "ApiPaySlipDeductionModel": { "type": "object", "properties": { "notes": { "type": "string", "title": "String" }, "amount": { "format": "double", "type": "number", "title": "Decimal" }, "taxStatus": { "type": "string", "title": "String" }, "name": { "type": "string", "title": "String" } }, "xml": { "name": "ApiPaySlipDeductionModel" }, "title": "ApiPaySlipDeductionModel" }, "ApiPaySlipSuperPaymentModel": { "type": "object", "properties": { "fundName": { "type": "string", "title": "String" }, "memberNumber": { "type": "string", "title": "String" }, "amount": { "format": "double", "type": "number", "title": "Decimal" } }, "xml": { "name": "ApiPaySlipSuperPaymentModel" }, "title": "ApiPaySlipSuperPaymentModel" }, "ApiPaySlipBankPaymentModel": { "type": "object", "properties": { "accountName": { "type": "string", "title": "String" }, "accountNumber": { "type": "string", "title": "String" }, "lodgementReference": { "type": "string", "title": "String" }, "bsb": { "type": "string", "title": "String" }, "amount": { "format": "double", "type": "number", "title": "Decimal" } }, "xml": { "name": "ApiPaySlipBankPaymentModel" }, "title": "ApiPaySlipBankPaymentModel" }, "ApiYearToDateEarningsBreakdownModel": { "type": "object", "properties": { "payCategoryName": { "type": "string", "title": "String" }, "grossEarnings": { "format": "double", "type": "number", "title": "Decimal" } }, "xml": { "name": "ApiYearToDateEarningsBreakdownModel" }, "title": "ApiYearToDateEarningsBreakdownModel" }, "ApiEmployeeExpenseGridModel": { "type": "object", "properties": { "notes": { "type": "string", "title": "String" }, "amount": { "format": "double", "type": "number", "title": "Decimal" }, "locationName": { "type": "string", "title": "String" }, "employeeExpenseCategoryName": { "type": "string", "title": "String" } }, "xml": { "name": "ApiEmployeeExpenseGridModel" }, "title": "ApiEmployeeExpenseGridModel" }, "PayRunEarningsLineResponse": { "type": "object", "properties": { "earningsLines": { "type": "object", "additionalProperties": { "type": "array", "items": { "$ref": "#/definitions/EarningsLineModel" }, "xml": { "name": "EarningsLineModel", "wrapped": true }, "title": "List" }, "readOnly": true, "title": "Dictionary" }, "payRunId": { "format": "int32", "type": "integer", "title": "Int32" } }, "xml": { "name": "PayRunEarningsLineResponse" }, "example": { "earningsLines": { "12345": [ { "payCategoryId": "1", "payCategoryName": "Full Time - Standard", "units": 40.0, "notes": "Some notes", "rate": 31.25, "earnings": 1250.0, "super": 0.0, "sfss": 0.0, "help": 65.12, "payg": 263.0, "lumpSumNumberOfPayPeriods": 0.0, "timesheetLineId": null, "id": 0, "externalId": null, "locationId": "39", "locationName": "My Location", "employeeId": "12345", "employeeName": "Bob Bobberson", "employeeExternalId": "EMP01" }, { "payCategoryId": "3", "payCategoryName": "Bonus", "units": 1.0, "notes": "Some notes", "rate": 1000.0, "earnings": 1000.0, "super": 106.38, "sfss": 0.0, "help": 0.0, "payg": 229.0, "lumpSumNumberOfPayPeriods": 1.0, "timesheetLineId": null, "id": 0, "externalId": null, "locationId": "39", "locationName": "My Location", "employeeId": "12345", "employeeName": "Bob Bobberson", "employeeExternalId": "EMP01" } ] }, "payRunId": 999 }, "title": "PayRunEarningsLineResponse" }, "EarningsLineModel": { "type": "object", "properties": { "payCategoryId": { "type": "string", "title": "String" }, "payCategoryName": { "type": "string", "title": "String" }, "units": { "format": "double", "type": "number", "title": "Decimal" }, "notes": { "type": "string", "title": "String" }, "rate": { "format": "double", "type": "number", "title": "Nullable" }, "earnings": { "format": "double", "type": "number", "title": "Decimal" }, "super": { "format": "double", "type": "number", "title": "Decimal" }, "sfss": { "format": "double", "type": "number", "title": "Decimal" }, "help": { "format": "double", "type": "number", "title": "Decimal" }, "payg": { "format": "double", "type": "number", "title": "Decimal" }, "lumpSumNumberOfPayPeriods": { "format": "double", "type": "number", "title": "Decimal" }, "timesheetLineId": { "format": "int32", "type": "integer", "title": "Nullable" }, "id": { "format": "int32", "type": "integer", "title": "Int32" }, "externalId": { "type": "string", "title": "String" }, "locationId": { "type": "string", "title": "String" }, "locationName": { "type": "string", "title": "String" }, "employeeId": { "type": "string", "title": "String" }, "employeeName": { "type": "string", "title": "String" }, "employeeExternalId": { "type": "string", "title": "String" } }, "xml": { "name": "EarningsLineModel" }, "title": "EarningsLineModel" }, "SubmitPayRunEarningsLineRequest": { "type": "object", "properties": { "locationIdType": { "enum": [ "Standard", "External" ], "type": "string", "title": "IdType" }, "payCategoryIdType": { "enum": [ "Standard", "External" ], "type": "string", "title": "IdType" }, "earningsLines": { "type": "object", "additionalProperties": { "type": "array", "items": { "$ref": "#/definitions/EarningsLineModel" }, "xml": { "name": "EarningsLineModel", "wrapped": true }, "title": "List" }, "title": "Dictionary" }, "payRunId": { "format": "int32", "type": "integer", "title": "Int32" }, "employeeIdType": { "enum": [ "Standard", "External" ], "type": "string", "title": "IdType" }, "replaceExisting": { "type": "boolean", "title": "Boolean" }, "suppressCalculations": { "type": "boolean", "title": "Boolean" } }, "xml": { "name": "SubmitPayRunEarningsLineRequest" }, "title": "SubmitPayRunEarningsLineRequest" }, "PayRunTotalModel": { "type": "object", "properties": { "id": { "format": "int32", "type": "integer", "title": "Int32" }, "totalHours": { "format": "double", "type": "number", "title": "Decimal" }, "grossEarnings": { "format": "double", "type": "number", "title": "Decimal" }, "preTaxDeductions": { "format": "double", "type": "number", "title": "Decimal" }, "taxableEarnings": { "format": "double", "type": "number", "title": "Decimal" }, "postTaxDeductions": { "format": "double", "type": "number", "title": "Decimal" }, "paygWithheld": { "format": "double", "type": "number", "title": "Decimal" }, "sfssWithheld": { "format": "double", "type": "number", "title": "Decimal" }, "helpWithheld": { "format": "double", "type": "number", "title": "Decimal" }, "superContribution": { "format": "double", "type": "number", "title": "Decimal" }, "employerContribution": { "format": "double", "type": "number", "title": "Decimal" }, "netEarnings": { "format": "double", "type": "number", "title": "Decimal" }, "totalEmployeeExpenses": { "format": "double", "type": "number", "title": "Decimal" }, "totalEmployerLiabilities": { "format": "double", "type": "number", "title": "Decimal" }, "isPublished": { "type": "boolean", "title": "Boolean" }, "payRunId": { "format": "int32", "type": "integer", "title": "Int32" }, "notes": { "type": "string", "title": "String" }, "notation": { "type": "string", "title": "String" } }, "xml": { "name": "PayRunTotalModel" }, "title": "PayRunTotalModel" }, "LeaveAccrualResponse": { "type": "object", "properties": { "payRunId": { "format": "int32", "type": "integer", "title": "Int32" }, "leave": { "type": "object", "additionalProperties": { "type": "array", "items": { "$ref": "#/definitions/LeaveAccrualModel" }, "xml": { "name": "LeaveAccrualModel", "wrapped": true }, "title": "List" }, "title": "Dictionary" } }, "xml": { "name": "LeaveAccrualResponse" }, "example": { "payRunId": 999, "leave": { "12345": [ { "id": 1234, "leaveCategoryName": "Annual Leave", "leaveCategoryId": "123", "amount": 3.07654, "notes": null, "accrualType": "AutomaticallyAccrued" }, { "id": 1235, "leaveCategoryName": "Sick Leave", "leaveCategoryId": "124", "amount": 1.0345, "notes": "Some notes", "accrualType": "AutomaticallyAccrued" } ] } }, "title": "LeaveAccrualResponse" }, "LeaveAccrualModel": { "type": "object", "properties": { "id": { "format": "int32", "type": "integer", "title": "Int32" }, "leaveCategoryName": { "type": "string", "title": "String" }, "leaveCategoryId": { "type": "string", "title": "String" }, "amount": { "format": "double", "type": "number", "title": "Decimal" }, "notes": { "type": "string", "title": "String" }, "accrualType": { "type": "string", "title": "String" } }, "xml": { "name": "LeaveAccrualModel" }, "title": "LeaveAccrualModel" }, "SubmitLeaveAccrualsModel": { "type": "object", "properties": { "replaceExisting": { "type": "boolean", "title": "Boolean" }, "employeeIdType": { "enum": [ "Standard", "External" ], "type": "string", "title": "IdType" }, "suppressCalculations": { "type": "boolean", "title": "Boolean" }, "leave": { "type": "object", "additionalProperties": { "type": "array", "items": { "$ref": "#/definitions/SaveLeaveAccrualModel" }, "xml": { "name": "SaveLeaveAccrualModel", "wrapped": true }, "title": "List" }, "title": "Dictionary" } }, "xml": { "name": "SubmitLeaveAccrualsModel" }, "title": "SubmitLeaveAccrualsModel" }, "SaveLeaveAccrualModel": { "type": "object", "properties": { "accrualType": { "enum": [ "LeaveAccrued", "LeaveTaken", "LeaveAdjustment" ], "type": "string", "title": "SaveLeaveAccrualTypeEnum" }, "notes": { "type": "string", "title": "String" }, "amount": { "format": "double", "type": "number", "title": "Decimal" }, "leaveCategoryId": { "format": "int32", "type": "integer", "title": "Int32" }, "applyLeaveLoading": { "type": "boolean", "title": "Boolean" }, "adjustEarnings": { "type": "boolean", "title": "Boolean" }, "externalReferenceId": { "type": "string", "title": "String" } }, "xml": { "name": "SaveLeaveAccrualModel" }, "title": "SaveLeaveAccrualModel" }, "PayRunPaygAdjustmentResponse": { "type": "object", "properties": { "paygAdjustments": { "type": "object", "additionalProperties": { "type": "array", "items": { "$ref": "#/definitions/PaygAdjustmentModel" }, "xml": { "name": "PaygAdjustmentModel", "wrapped": true }, "title": "List" }, "readOnly": true, "title": "Dictionary" }, "payRunId": { "format": "int32", "type": "integer", "title": "Int32" } }, "xml": { "name": "PayRunPaygAdjustmentResponse" }, "example": { "paygAdjustments": { "12345": [ { "notes": "Some notes", "amount": 12.34, "id": 0, "externalId": "Axb34", "locationId": "34456", "locationName": "My Location", "employeeId": "12345", "employeeName": "Bob Bobberson", "employeeExternalId": "EMP01" } ] }, "payRunId": 999 }, "title": "PayRunPaygAdjustmentResponse" }, "PaygAdjustmentModel": { "type": "object", "properties": { "notes": { "type": "string", "title": "String" }, "amount": { "format": "double", "type": "number", "title": "Decimal" }, "id": { "format": "int32", "type": "integer", "title": "Int32" }, "externalId": { "type": "string", "title": "String" }, "locationId": { "type": "string", "title": "String" }, "locationName": { "type": "string", "title": "String" }, "employeeId": { "type": "string", "title": "String" }, "employeeName": { "type": "string", "title": "String" }, "employeeExternalId": { "type": "string", "title": "String" } }, "xml": { "name": "PaygAdjustmentModel" }, "title": "PaygAdjustmentModel" }, "SubmitPayRunPaygAdjustmentRequest": { "type": "object", "properties": { "paygAdjustments": { "type": "object", "additionalProperties": { "type": "array", "items": { "$ref": "#/definitions/PaygAdjustmentModel" }, "xml": { "name": "PaygAdjustmentModel", "wrapped": true }, "title": "List" }, "title": "Dictionary" }, "payRunId": { "format": "int32", "type": "integer", "title": "Int32" }, "employeeIdType": { "enum": [ "Standard", "External" ], "type": "string", "title": "IdType" }, "replaceExisting": { "type": "boolean", "title": "Boolean" }, "suppressCalculations": { "type": "boolean", "title": "Boolean" } }, "xml": { "name": "SubmitPayRunPaygAdjustmentRequest" }, "title": "SubmitPayRunPaygAdjustmentRequest" }, "PayRunSuperAdjustmentResponse": { "type": "object", "properties": { "superAdjustments": { "type": "object", "additionalProperties": { "type": "array", "items": { "$ref": "#/definitions/SuperAdjustmentModel" }, "xml": { "name": "SuperAdjustmentModel", "wrapped": true }, "title": "List" }, "readOnly": true, "title": "Dictionary" }, "payRunId": { "format": "int32", "type": "integer", "title": "Int32" } }, "xml": { "name": "PayRunSuperAdjustmentResponse" }, "example": { "superAdjustments": { "12345": [ { "notes": "Some notes", "amount": 12.34, "contributionType": "Employer Contribution", "id": 0, "externalId": "Axb34", "locationId": "34456", "locationName": "My Location", "employeeId": "12345", "employeeName": "Bob Bobberson", "employeeExternalId": "EMP01" } ] }, "payRunId": 999 }, "title": "PayRunSuperAdjustmentResponse" }, "SuperAdjustmentModel": { "type": "object", "properties": { "notes": { "type": "string", "title": "String" }, "amount": { "format": "double", "type": "number", "title": "Decimal" }, "contributionType": { "type": "string", "title": "String" }, "id": { "format": "int32", "type": "integer", "title": "Int32" }, "externalId": { "type": "string", "title": "String" }, "locationId": { "type": "string", "title": "String" }, "locationName": { "type": "string", "title": "String" }, "employeeId": { "type": "string", "title": "String" }, "employeeName": { "type": "string", "title": "String" }, "employeeExternalId": { "type": "string", "title": "String" } }, "xml": { "name": "SuperAdjustmentModel" }, "title": "SuperAdjustmentModel" }, "SubmitPayRunSuperAdjustmentRequest": { "type": "object", "properties": { "superAdjustments": { "type": "object", "additionalProperties": { "type": "array", "items": { "$ref": "#/definitions/SuperAdjustmentModel" }, "xml": { "name": "SuperAdjustmentModel", "wrapped": true }, "title": "List" }, "title": "Dictionary" }, "payRunId": { "format": "int32", "type": "integer", "title": "Int32" }, "employeeIdType": { "enum": [ "Standard", "External" ], "type": "string", "title": "IdType" }, "replaceExisting": { "type": "boolean", "title": "Boolean" }, "suppressCalculations": { "type": "boolean", "title": "Boolean" } }, "xml": { "name": "SubmitPayRunSuperAdjustmentRequest" }, "title": "SubmitPayRunSuperAdjustmentRequest" }, "PayRunUnlockRequest": { "type": "object", "properties": { "comments": { "type": "string", "title": "String" } }, "xml": { "name": "PayRunUnlockRequest" }, "title": "PayRunUnlockRequest" }, "ODataQueryOptions[PayRun]": { "type": "object", "properties": { "ifMatch": { "type": "object", "readOnly": true, "title": "ETag" }, "ifNoneMatch": { "type": "object", "readOnly": true, "title": "ETag" }, "context": { "$ref": "#/definitions/ODataQueryContext", "readOnly": true }, "request": { "type": "object", "readOnly": true, "title": "HttpRequestMessage" }, "rawValues": { "$ref": "#/definitions/ODataRawQueryOptions", "readOnly": true }, "selectExpand": { "$ref": "#/definitions/SelectExpandQueryOption", "readOnly": true }, "filter": { "$ref": "#/definitions/FilterQueryOption", "readOnly": true }, "orderBy": { "$ref": "#/definitions/OrderByQueryOption", "readOnly": true }, "skip": { "$ref": "#/definitions/SkipQueryOption", "readOnly": true }, "top": { "$ref": "#/definitions/TopQueryOption", "readOnly": true }, "inlineCount": { "$ref": "#/definitions/InlineCountQueryOption", "readOnly": true }, "validator": { "$ref": "#/definitions/ODataQueryValidator" } }, "xml": { "name": "ODataQueryOptions`1" }, "title": "ODataQueryOptions" }, "PayRunCreateRequest": { "type": "object", "properties": { "payScheduleId": { "format": "int32", "type": "integer", "title": "Int32" }, "payPeriodEnding": { "format": "date-time", "type": "string", "title": "DateTime" }, "datePaid": { "format": "date-time", "type": "string", "title": "DateTime" }, "timesheetImportOption": { "enum": [ "None", "ThisPayPeriod", "AllOutstanding" ], "type": "string", "title": "Nullable" }, "externalId": { "type": "string", "title": "String" }, "callbackUrl": { "type": "string", "title": "String" } }, "xml": { "name": "PayRunCreateRequest" }, "title": "PayRunCreateRequest" }, "PayRunNotationModel": { "type": "object", "properties": { "notation": { "type": "string", "title": "String" } }, "xml": { "name": "PayRunNotationModel" }, "title": "PayRunNotationModel" }, "PayRunEmployerLiabilityResponse": { "type": "object", "properties": { "employerLiabilities": { "type": "object", "additionalProperties": { "type": "array", "items": { "$ref": "#/definitions/EmployerLiabilityModel" }, "xml": { "name": "EmployerLiabilityModel", "wrapped": true }, "title": "List" }, "readOnly": true, "title": "Dictionary" }, "payRunId": { "format": "int32", "type": "integer", "title": "Int32" } }, "xml": { "name": "PayRunEmployerLiabilityResponse" }, "example": { "employerLiabilities": { "12345": [ { "employerLiabilityCategoryId": "98", "employerLiabilityCategoryName": "My employer liability category", "notes": "Some notes", "amount": 12.34, "id": 0, "externalId": "Axb34", "locationId": "34456", "locationName": "My Location", "employeeId": "12345", "employeeName": "Bob Bobberson", "employeeExternalId": "EMP01" } ] }, "payRunId": 999 }, "title": "PayRunEmployerLiabilityResponse" }, "EmployerLiabilityModel": { "type": "object", "properties": { "employerLiabilityCategoryId": { "type": "string", "title": "String" }, "employerLiabilityCategoryName": { "type": "string", "title": "String" }, "notes": { "type": "string", "title": "String" }, "amount": { "format": "double", "type": "number", "title": "Decimal" }, "id": { "format": "int32", "type": "integer", "title": "Int32" }, "externalId": { "type": "string", "title": "String" }, "locationId": { "type": "string", "title": "String" }, "locationName": { "type": "string", "title": "String" }, "employeeId": { "type": "string", "title": "String" }, "employeeName": { "type": "string", "title": "String" }, "employeeExternalId": { "type": "string", "title": "String" } }, "xml": { "name": "EmployerLiabilityModel" }, "title": "EmployerLiabilityModel" }, "SubmitPayRunEmployerLiabilityRequest": { "type": "object", "properties": { "employerLiabilityCategoryIdType": { "enum": [ "Standard", "External" ], "type": "string", "title": "IdType" }, "employerLiabilities": { "type": "object", "additionalProperties": { "type": "array", "items": { "$ref": "#/definitions/EmployerLiabilityModel" }, "xml": { "name": "EmployerLiabilityModel", "wrapped": true }, "title": "List" }, "title": "Dictionary" }, "payRunId": { "format": "int32", "type": "integer", "title": "Int32" }, "employeeIdType": { "enum": [ "Standard", "External" ], "type": "string", "title": "IdType" }, "replaceExisting": { "type": "boolean", "title": "Boolean" }, "suppressCalculations": { "type": "boolean", "title": "Boolean" } }, "xml": { "name": "SubmitPayRunEmployerLiabilityRequest" }, "title": "SubmitPayRunEmployerLiabilityRequest" }, "FinalisePayRunOptions": { "type": "object", "properties": { "payRunId": { "format": "int32", "type": "integer", "title": "Int32" }, "datePaid": { "format": "date-time", "type": "string", "title": "Nullable" }, "exportJournals": { "type": "boolean", "title": "Boolean" }, "publishPaySlips": { "enum": [ "Manual", "Immediate", "Scheduled" ], "type": "string", "title": "PublishPaySlipsPreference" }, "publishPaySlipsDateTime": { "format": "date-time", "type": "string", "title": "Nullable" }, "suppressNotifications": { "type": "boolean", "title": "Boolean" } }, "xml": { "name": "FinalisePayRunOptions" }, "title": "FinalisePayRunOptions" }, "PayRunFinaliseResult": { "type": "object", "properties": { "journalExportResult": { "$ref": "#/definitions/JournalExportResult" }, "journalExportFailedMessage": { "type": "string", "title": "String" }, "removedEmployees": { "type": "array", "items": { "format": "int32", "type": "integer", "title": "Int32" }, "title": "IList" }, "notifications": { "$ref": "#/definitions/PaySlipNotificationResponse" }, "paySlipsPublished": { "type": "boolean", "title": "Boolean" }, "publishPreference": { "enum": [ "Manual", "Immediate", "Scheduled" ], "type": "string", "title": "PublishPaySlipsPreference" }, "datePaid": { "format": "date-time", "type": "string", "title": "Nullable" }, "exportJournalsPreference": { "type": "boolean", "title": "Boolean" }, "publishPaySlipsScheduledDateTimeUtc": { "format": "date-time", "type": "string", "title": "Nullable" }, "publishPreferenceTimeOfDay": { "type": "string", "title": "Nullable" } }, "xml": { "name": "PayRunFinaliseResult" }, "title": "PayRunFinaliseResult" }, "JournalExportResult": { "type": "object", "properties": { "status": { "enum": [ "NotExported", "Success", "FailureUnknownError", "FailureAccountsNotConfigured", "FailureInvalidAccounts", "FailureAccountPeriodClosed", "FailureNotAuthenticated", "FailureAlreadyExported", "FailureFunctionDisabled", "FailureCannotUseAccountsPayableAccount", "FailureVendorMessage" ], "type": "string", "title": "JournalExportStatus" }, "message": { "type": "string", "title": "String" } }, "xml": { "name": "JournalExportResult" }, "title": "JournalExportResult" }, "PaySlipNotificationResponse": { "type": "object", "properties": { "totalEmailNotificationsSent": { "format": "int32", "type": "integer", "title": "Int32" }, "totalSmsNotificationsSent": { "format": "int32", "type": "integer", "title": "Int32" }, "errors": { "$ref": "#/definitions/PayRunWarningResult" }, "hasPartiallySentNotifications": { "type": "boolean", "title": "Boolean" } }, "xml": { "name": "PaySlipNotificationResponse" }, "title": "PaySlipNotificationResponse" }, "PayRunWarningResult": { "type": "object", "properties": { "warningMessage": { "type": "string", "title": "String" }, "warnings": { "type": "array", "items": { "$ref": "#/definitions/PayRunWarning" }, "xml": { "name": "PayRunWarning", "wrapped": true }, "title": "List" }, "templateName": { "type": "string", "title": "String" } }, "xml": { "name": "PayRunWarningResult" }, "title": "PayRunWarningResult" }, "PayRunWarning": { "type": "object", "properties": { "warningType": { "enum": [ "Aba", "MoreLeaveThanAccrued", "UnpaidEarnings", "Birthday", "Anniversary", "NegativeEarnings", "PreviouslyTerminated", "TerminatedWithExpenseReimbursements", "ExpiredQualification", "DuplicateEarningsLines", "TaxCodeMissing", "Bpay" ], "type": "string", "title": "PayRunWarningType" }, "employeeId": { "format": "int32", "type": "integer", "title": "Int32" }, "warning": { "type": "string", "title": "String" }, "employeeName": { "type": "string", "title": "String" }, "payRunTotalId": { "format": "int32", "type": "integer", "title": "Int32" } }, "xml": { "name": "PayRunWarning" }, "title": "PayRunWarning" }, "JournalItemResponse": { "type": "object", "properties": { "externalAccountReferenceId": { "type": "string", "title": "String" }, "amount": { "format": "double", "type": "number", "title": "Decimal" }, "amountUnrounded": { "format": "double", "type": "number", "title": "Decimal" }, "reference": { "type": "string", "title": "String" }, "journalItemType": { "enum": [ "Asset", "PaygExpense", "PaygLiability", "SuperExpense", "SuperLiability", "DefaultExpense", "WagesExpense", "DefaultSalarySacrificeExpense", "DefaultSalarySacrificeLiability", "DefaultDeductionExpense", "DefaultDeductionLiability", "DefaultEmployerLiabilityExpense", "DefaultEmployerLiabilityLiability", "DeductionExpense", "DeductionLiability", "DeductionAsset", "DefaultEmployeeExpense", "EmployeeExpense", "PreTaxDeductionLiability", "PostTaxDeductionLiability", "EmployerLiabilityExpense", "EmployerLiabilityLiability", "W1ExemptWagesExpense", "PreTaxDeductionAsset" ], "type": "string", "title": "JournalItemType" }, "taxCode": { "type": "string", "title": "String" }, "accountCode": { "type": "string", "title": "String" }, "accountName": { "type": "string", "title": "String" }, "details": { "type": "string", "title": "String" }, "location": { "type": "string", "title": "String" }, "isCredit": { "type": "boolean", "title": "Boolean" }, "isDebit": { "type": "boolean", "title": "Boolean" } }, "xml": { "name": "JournalItemResponse" }, "title": "JournalItemResponse" }, "SetPayRunUIUnlockStateRequest": { "type": "object", "properties": { "enableUIUnlock": { "type": "boolean", "title": "Boolean" } }, "xml": { "name": "SetPayRunUIUnlockStateRequest" }, "title": "SetPayRunUIUnlockStateRequest" }, "PayRunTotalResponse": { "type": "object", "properties": { "payRunId": { "format": "int32", "type": "integer", "title": "Int32" }, "payRunTotals": { "type": "object", "additionalProperties": { "$ref": "#/definitions/PayRunTotalModel" }, "title": "Dictionary" } }, "xml": { "name": "PayRunTotalResponse" }, "title": "PayRunTotalResponse" }, "PayRunTotalNotationModel": { "type": "object", "properties": { "notation": { "type": "string", "title": "String" } }, "xml": { "name": "PayRunTotalNotationModel" }, "title": "PayRunTotalNotationModel" }, "PayRunDeductionResponse": { "type": "object", "properties": { "deductions": { "type": "object", "additionalProperties": { "type": "array", "items": { "$ref": "#/definitions/DeductionModel" }, "xml": { "name": "DeductionModel", "wrapped": true }, "title": "List" }, "readOnly": true, "title": "Dictionary" }, "payRunId": { "format": "int32", "type": "integer", "title": "Int32" } }, "xml": { "name": "PayRunDeductionResponse" }, "example": { "deductions": { "12345": [ { "deductionCategoryId": "98", "deductionCategoryName": "My deduction category", "amount": 12.34, "notes": "Some notes", "paymentReference": "Payment Reference", "payToBankAccountBSB": null, "payToBankAccountNumber": null, "payToSuperFundName": "My Super Account", "payToSuperFundMemberNumber": "100000", "payTo": "SuperFund", "id": 0, "externalId": null, "locationId": "39", "locationName": "My Location", "employeeId": "12345", "employeeName": "Bob Bobberson", "employeeExternalId": "EMP01" }, { "deductionCategoryId": "98", "deductionCategoryName": "My deduction category", "amount": 16.12, "notes": "Some notes", "paymentReference": "Payment Reference", "payToBankAccountBSB": "100000", "payToBankAccountNumber": "987654321", "payToSuperFundName": null, "payToSuperFundMemberNumber": null, "payTo": "BankAccount", "id": 0, "externalId": null, "locationId": "39", "locationName": "My Location", "employeeId": "12345", "employeeName": "Bob Bobberson", "employeeExternalId": "EMP01" } ] }, "payRunId": 999 }, "title": "PayRunDeductionResponse" }, "DeductionModel": { "type": "object", "properties": { "deductionCategoryId": { "type": "string", "title": "String" }, "deductionCategoryName": { "type": "string", "title": "String" }, "amount": { "format": "double", "type": "number", "title": "Decimal" }, "notes": { "type": "string", "title": "String" }, "paymentReference": { "type": "string", "title": "String" }, "note": { "type": "string", "title": "String" }, "payToBankAccountBSB": { "type": "string", "title": "String" }, "payToBankAccountNumber": { "type": "string", "title": "String" }, "payToSuperFundName": { "type": "string", "title": "String" }, "payToSuperFundMemberNumber": { "type": "string", "title": "String" }, "payTo": { "type": "string", "title": "String" }, "id": { "format": "int32", "type": "integer", "title": "Int32" }, "externalId": { "type": "string", "title": "String" }, "locationId": { "type": "string", "title": "String" }, "locationName": { "type": "string", "title": "String" }, "employeeId": { "type": "string", "title": "String" }, "employeeName": { "type": "string", "title": "String" }, "employeeExternalId": { "type": "string", "title": "String" } }, "xml": { "name": "DeductionModel" }, "title": "DeductionModel" }, "SubmitPayRunDeductionRequest": { "type": "object", "properties": { "deductionCategoryIdType": { "enum": [ "Standard", "External" ], "type": "string", "title": "IdType" }, "deductions": { "type": "object", "additionalProperties": { "type": "array", "items": { "$ref": "#/definitions/DeductionModel" }, "xml": { "name": "DeductionModel", "wrapped": true }, "title": "List" }, "title": "Dictionary" }, "payRunId": { "format": "int32", "type": "integer", "title": "Int32" }, "employeeIdType": { "enum": [ "Standard", "External" ], "type": "string", "title": "IdType" }, "replaceExisting": { "type": "boolean", "title": "Boolean" }, "suppressCalculations": { "type": "boolean", "title": "Boolean" } }, "xml": { "name": "SubmitPayRunDeductionRequest" }, "title": "SubmitPayRunDeductionRequest" }, "ODataQueryOptions[PayCycle]": { "type": "object", "properties": { "ifMatch": { "type": "object", "readOnly": true, "title": "ETag" }, "ifNoneMatch": { "type": "object", "readOnly": true, "title": "ETag" }, "context": { "$ref": "#/definitions/ODataQueryContext", "readOnly": true }, "request": { "type": "object", "readOnly": true, "title": "HttpRequestMessage" }, "rawValues": { "$ref": "#/definitions/ODataRawQueryOptions", "readOnly": true }, "selectExpand": { "$ref": "#/definitions/SelectExpandQueryOption", "readOnly": true }, "filter": { "$ref": "#/definitions/FilterQueryOption", "readOnly": true }, "orderBy": { "$ref": "#/definitions/OrderByQueryOption", "readOnly": true }, "skip": { "$ref": "#/definitions/SkipQueryOption", "readOnly": true }, "top": { "$ref": "#/definitions/TopQueryOption", "readOnly": true }, "inlineCount": { "$ref": "#/definitions/InlineCountQueryOption", "readOnly": true }, "validator": { "$ref": "#/definitions/ODataQueryValidator" } }, "xml": { "name": "ODataQueryOptions`1" }, "title": "ODataQueryOptions" }, "PayScheduleModel": { "type": "object", "properties": { "id": { "format": "int32", "type": "integer", "title": "Int32" }, "name": { "type": "string", "title": "String" }, "frequency": { "enum": [ "Weekly", "Fortnightly", "Monthly", "AdHoc", "Initial" ], "type": "string", "title": "PayCycleFrequencyEnum" }, "employeeSelectionStrategy": { "enum": [ "None", "PayRunDefault", "TimesheetLocations" ], "type": "string", "title": "Nullable" }, "lastDatePaid": { "format": "date-time", "type": "string", "title": "Nullable" }, "lastPayRun": { "format": "date-time", "type": "string", "title": "Nullable" }, "externalId": { "type": "string", "title": "String" }, "source": { "type": "string", "title": "String" }, "abaDetailsId": { "format": "int32", "type": "integer", "title": "Nullable" }, "locations": { "type": "array", "items": { "format": "int32", "type": "integer", "title": "Int32" }, "title": "List" } }, "xml": { "name": "PayScheduleModel" }, "title": "PayScheduleModel" }, "PublicHolidayModel": { "type": "object", "properties": { "id": { "format": "int32", "type": "integer", "title": "Nullable" }, "date": { "format": "date-time", "type": "string", "title": "Nullable" }, "states": { "type": "array", "items": { "type": "string", "title": "String" }, "title": "IList" }, "locationIds": { "type": "array", "items": { "format": "int32", "type": "integer", "title": "Int32" }, "title": "ICollection" }, "description": { "type": "string", "title": "String" }, "note": { "type": "string", "title": "String" }, "isSystem": { "type": "boolean", "title": "Boolean" }, "notAPublicHoliday": { "type": "boolean", "title": "Boolean" } }, "xml": { "name": "PublicHolidayModel" }, "title": "PublicHolidayModel" }, "ODataQueryOptions[Qualification]": { "type": "object", "properties": { "ifMatch": { "type": "object", "readOnly": true, "title": "ETag" }, "ifNoneMatch": { "type": "object", "readOnly": true, "title": "ETag" }, "context": { "$ref": "#/definitions/ODataQueryContext", "readOnly": true }, "request": { "type": "object", "readOnly": true, "title": "HttpRequestMessage" }, "rawValues": { "$ref": "#/definitions/ODataRawQueryOptions", "readOnly": true }, "selectExpand": { "$ref": "#/definitions/SelectExpandQueryOption", "readOnly": true }, "filter": { "$ref": "#/definitions/FilterQueryOption", "readOnly": true }, "orderBy": { "$ref": "#/definitions/OrderByQueryOption", "readOnly": true }, "skip": { "$ref": "#/definitions/SkipQueryOption", "readOnly": true }, "top": { "$ref": "#/definitions/TopQueryOption", "readOnly": true }, "inlineCount": { "$ref": "#/definitions/InlineCountQueryOption", "readOnly": true }, "validator": { "$ref": "#/definitions/ODataQueryValidator" } }, "xml": { "name": "ODataQueryOptions`1" }, "title": "ODataQueryOptions" }, "QualificationModel": { "type": "object", "properties": { "id": { "format": "int32", "type": "integer", "title": "Int32" }, "name": { "type": "string", "title": "String" } }, "xml": { "name": "QualificationModel" }, "title": "QualificationModel" }, "ReportRequestWithPayScheduleModel": { "type": "object", "properties": { "payScheduleId": { "format": "int32", "type": "integer", "title": "Int32" }, "fromDate": { "format": "date-time", "type": "string", "title": "DateTime" }, "toDate": { "format": "date-time", "type": "string", "title": "DateTime" }, "locationId": { "format": "int32", "type": "integer", "title": "Int32" }, "employingEntityId": { "format": "int32", "type": "integer", "title": "Nullable" } }, "xml": { "name": "ReportRequestWithPayScheduleModel" }, "title": "ReportRequestWithPayScheduleModel" }, "SuperAccrualExportModel": { "type": "object", "properties": { "locationId": { "format": "int32", "type": "integer", "title": "Int32" }, "locationName": { "type": "string", "title": "String" }, "employeeId": { "format": "int32", "type": "integer", "title": "Int32" }, "firstName": { "type": "string", "title": "String" }, "surname": { "type": "string", "title": "String" }, "externalId": { "type": "string", "title": "String" }, "accrualDate": { "format": "date-time", "type": "string", "title": "Nullable" }, "accrualType": { "type": "string", "title": "String" }, "accrualAmount": { "format": "double", "type": "number", "title": "Decimal" } }, "xml": { "name": "SuperAccrualExportModel" }, "title": "SuperAccrualExportModel" }, "SuperContributionsReportExportModel": { "type": "object", "properties": { "locationName": { "type": "string", "title": "String" }, "employeeId": { "format": "int32", "type": "integer", "title": "Int32" }, "firstName": { "type": "string", "title": "String" }, "surname": { "type": "string", "title": "String" }, "externalId": { "type": "string", "title": "String" }, "superFundName": { "type": "string", "title": "String" }, "superFundNumber": { "type": "string", "title": "String" }, "paymentType": { "type": "string", "title": "String" }, "amount": { "format": "double", "type": "number", "title": "Decimal" } }, "xml": { "name": "SuperContributionsReportExportModel" }, "title": "SuperContributionsReportExportModel" }, "LeaveBalancesReportRequestModel": { "type": "object", "properties": { "locationId": { "format": "int32", "type": "integer", "title": "Int32" }, "leaveTypeId": { "format": "int32", "type": "integer", "title": "Int32" }, "groupBy": { "enum": [ "AccrualLocation", "DefaultLocation" ], "type": "string", "title": "LeaveReportDisplayEnum" }, "employingEntityId": { "format": "int32", "type": "integer", "title": "Nullable" }, "asAtDate": { "format": "date-time", "type": "string", "title": "Nullable" } }, "xml": { "name": "LeaveBalancesReportRequestModel" }, "title": "LeaveBalancesReportRequestModel" }, "LeaveBalancesReportExportModel": { "type": "object", "properties": { "employeeId": { "format": "int32", "type": "integer", "title": "Int32" }, "externalId": { "type": "string", "title": "String" }, "firstName": { "type": "string", "title": "String" }, "surname": { "type": "string", "title": "String" }, "location": { "type": "string", "title": "String" }, "leaveCategoryName": { "type": "string", "title": "String" }, "accruedAmount": { "format": "double", "type": "number", "title": "Decimal" }, "accruedAmountInDays": { "format": "double", "type": "number", "title": "Decimal" }, "leaveValue": { "format": "double", "type": "number", "title": "Decimal" }, "loadingValue": { "format": "double", "type": "number", "title": "Decimal" }, "leavePlusLoading": { "format": "double", "type": "number", "readOnly": true, "title": "Decimal" } }, "xml": { "name": "LeaveBalancesReportExportModel" }, "title": "LeaveBalancesReportExportModel" }, "DeductionsReportRequestModel": { "type": "object", "properties": { "employeeId": { "format": "int32", "type": "integer", "title": "Int32" }, "deductionCategoryId": { "format": "int32", "type": "integer", "title": "Int32" }, "disableRollupReporting": { "type": "boolean", "title": "Boolean" }, "payScheduleId": { "format": "int32", "type": "integer", "title": "Int32" }, "fromDate": { "format": "date-time", "type": "string", "title": "DateTime" }, "toDate": { "format": "date-time", "type": "string", "title": "DateTime" }, "locationId": { "format": "int32", "type": "integer", "title": "Int32" }, "employingEntityId": { "format": "int32", "type": "integer", "title": "Nullable" } }, "xml": { "name": "DeductionsReportRequestModel" }, "title": "DeductionsReportRequestModel" }, "DeductionsReportExportModel": { "type": "object", "properties": { "payRun": { "type": "string", "title": "String" }, "datePaid": { "format": "date-time", "type": "string", "title": "DateTime" }, "employeeId": { "format": "int32", "type": "integer", "title": "Int32" }, "firstName": { "type": "string", "title": "String" }, "surname": { "type": "string", "title": "String" }, "externalId": { "type": "string", "title": "String" }, "location": { "type": "string", "title": "String" }, "amounts": { "type": "array", "items": { "$ref": "#/definitions/DeductionsReportDeductionAmountModel" }, "xml": { "name": "DeductionsReportDeductionAmountModel", "wrapped": true }, "title": "List" } }, "xml": { "name": "DeductionsReportExportModel" }, "title": "DeductionsReportExportModel" }, "DeductionsReportDeductionAmountModel": { "type": "object", "properties": { "deductionCategoryId": { "format": "int32", "type": "integer", "title": "Int32" }, "deductionCategoryName": { "type": "string", "title": "String" }, "amount": { "format": "double", "type": "number", "title": "Decimal" } }, "xml": { "name": "DeductionsReportDeductionAmountModel" }, "title": "DeductionsReportDeductionAmountModel" }, "ActivityReportExportModel": { "type": "object", "properties": { "employeeId": { "format": "int32", "type": "integer", "title": "Int32" }, "locationId": { "format": "int32", "type": "integer", "title": "Int32" }, "location": { "type": "string", "title": "String" }, "firstName": { "type": "string", "title": "String" }, "surname": { "type": "string", "title": "String" }, "totalHours": { "format": "double", "type": "number", "title": "Decimal" }, "grossEarnings": { "format": "double", "type": "number", "title": "Decimal" }, "taxableEarnings": { "format": "double", "type": "number", "title": "Decimal" }, "paygWithholding": { "format": "double", "type": "number", "title": "Decimal" }, "superContributions": { "format": "double", "type": "number", "title": "Decimal" }, "netEarnings": { "format": "double", "type": "number", "title": "Decimal" } }, "xml": { "name": "ActivityReportExportModel" }, "title": "ActivityReportExportModel" }, "LeaveHistoryApiReportModel": { "type": "object", "properties": { "fromDate": { "format": "date-time", "type": "string", "title": "DateTime" }, "toDate": { "format": "date-time", "type": "string", "title": "DateTime" }, "payScheduleId": { "format": "int32", "type": "integer", "title": "Int32" }, "locationId": { "format": "int32", "type": "integer", "title": "Int32" }, "employeeId": { "type": "array", "items": { "type": "string", "title": "String" }, "title": "IList" }, "leaveCategoryId": { "format": "int32", "type": "integer", "title": "Int32" } }, "xml": { "name": "LeaveHistoryApiReportModel" }, "title": "LeaveHistoryApiReportModel" }, "LeaveHistoryReportGroupModel": { "type": "object", "properties": { "employeeId": { "format": "int32", "type": "integer", "title": "Int32" }, "employeeExternalId": { "type": "string", "title": "String" }, "firstName": { "type": "string", "title": "String" }, "surname": { "type": "string", "title": "String" }, "leaveCategoryType": { "type": "string", "title": "String" }, "openingBalance": { "format": "double", "type": "number", "title": "Decimal" }, "closingBalance": { "format": "double", "type": "number", "title": "Decimal" }, "leaveHistoryDetails": { "type": "array", "items": { "$ref": "#/definitions/LeaveHistoryReportDetailModel" }, "xml": { "name": "LeaveHistoryReportDetailModel", "wrapped": true }, "title": "List" } }, "xml": { "name": "LeaveHistoryReportGroupModel" }, "title": "LeaveHistoryReportGroupModel" }, "LeaveHistoryReportDetailModel": { "type": "object", "properties": { "payPeriod": { "type": "string", "title": "String" }, "notes": { "type": "string", "title": "String" }, "leaveAccrued": { "format": "double", "type": "number", "title": "Decimal" }, "leaveTaken": { "format": "double", "type": "number", "title": "Decimal" } }, "xml": { "name": "LeaveHistoryReportDetailModel" }, "title": "LeaveHistoryReportDetailModel" }, "EmployeeDetailsReportField": { "type": "object", "properties": { "value": { "type": "string", "title": "String" }, "displayText": { "type": "string", "title": "String" } }, "xml": { "name": "EmployeeDetailsReportField" }, "title": "EmployeeDetailsReportField" }, "PayCategoriesReportRequestModel": { "type": "object", "properties": { "payScheduleId": { "format": "int32", "type": "integer", "title": "Int32" }, "employeeId": { "format": "int32", "type": "integer", "title": "Int32" }, "groupByEarningsLocation": { "type": "boolean", "title": "Boolean" }, "fromDate": { "format": "date-time", "type": "string", "title": "DateTime" }, "toDate": { "format": "date-time", "type": "string", "title": "DateTime" }, "locationId": { "format": "int32", "type": "integer", "title": "Int32" }, "employingEntityId": { "format": "int32", "type": "integer", "title": "Nullable" } }, "xml": { "name": "PayCategoriesReportRequestModel" }, "title": "PayCategoriesReportRequestModel" }, "PayCategoriesReportExportModel": { "type": "object", "properties": { "payCategory": { "type": "string", "title": "String" }, "payRun": { "type": "string", "title": "String" }, "datePaid": { "format": "date-time", "type": "string", "title": "DateTime" }, "employeeId": { "format": "int32", "type": "integer", "title": "Int32" }, "firstName": { "type": "string", "title": "String" }, "surname": { "type": "string", "title": "String" }, "externalId": { "type": "string", "title": "String" }, "location": { "type": "string", "title": "String" }, "units": { "format": "double", "type": "number", "title": "Decimal" }, "rate": { "format": "double", "type": "number", "title": "Decimal" }, "amount": { "format": "double", "type": "number", "title": "Decimal" }, "superAmount": { "format": "double", "type": "number", "title": "Decimal" } }, "xml": { "name": "PayCategoriesReportExportModel" }, "title": "PayCategoriesReportExportModel" }, "PaygReportRequestModel": { "type": "object", "properties": { "state": { "type": "string", "title": "String" }, "fromDate": { "format": "date-time", "type": "string", "title": "DateTime" }, "toDate": { "format": "date-time", "type": "string", "title": "DateTime" }, "locationId": { "format": "int32", "type": "integer", "title": "Int32" }, "employingEntityId": { "format": "int32", "type": "integer", "title": "Nullable" } }, "xml": { "name": "PaygReportRequestModel" }, "title": "PaygReportRequestModel" }, "PaygReportExportModel": { "type": "object", "properties": { "location": { "type": "string", "title": "String" }, "month": { "type": "string", "title": "String" }, "grossEarnings": { "format": "double", "type": "number", "title": "Decimal" }, "preTaxDeductions": { "format": "double", "type": "number", "title": "Decimal" }, "grossEarningsLessPreTaxDeductions": { "format": "double", "type": "number", "title": "Decimal" }, "payg": { "format": "double", "type": "number", "title": "Decimal" } }, "xml": { "name": "PaygReportExportModel" }, "title": "PaygReportExportModel" }, "DetailedActivityReportExportModel": { "type": "object", "properties": { "location": { "type": "string", "title": "String" }, "employeeId": { "format": "int32", "type": "integer", "title": "Int32" }, "firstName": { "type": "string", "title": "String" }, "surname": { "type": "string", "title": "String" }, "externalId": { "type": "string", "title": "String" }, "hours": { "format": "double", "type": "number", "title": "Decimal" }, "grossEarnings": { "format": "double", "type": "number", "title": "Decimal" }, "preTaxDeductions": { "format": "double", "type": "number", "title": "Decimal" }, "postTaxDedutions": { "type": "object", "title": "Object" }, "taxExemptEarnings": { "format": "double", "type": "number", "title": "Decimal" }, "taxableEarnings": { "format": "double", "type": "number", "title": "Decimal" }, "payg": { "format": "double", "type": "number", "title": "Decimal" }, "sfss": { "format": "double", "type": "number", "title": "Decimal" }, "help": { "format": "double", "type": "number", "title": "Decimal" }, "super": { "format": "double", "type": "number", "title": "Decimal" }, "netEarnings": { "format": "double", "type": "number", "title": "Decimal" }, "employerLiabilities": { "format": "double", "type": "number", "title": "Decimal" }, "grossPlusSuper": { "format": "double", "type": "number", "title": "Decimal" } }, "xml": { "name": "DetailedActivityReportExportModel" }, "title": "DetailedActivityReportExportModel" }, "PayrollTaxReportRequestModel": { "type": "object", "properties": { "groupBy": { "enum": [ "EarningsLocation", "DefaultLocation" ], "type": "string", "title": "PayrollTaxGroupByEnum" }, "fromDate": { "format": "date-time", "type": "string", "title": "DateTime" }, "toDate": { "format": "date-time", "type": "string", "title": "DateTime" }, "locationId": { "format": "int32", "type": "integer", "title": "Int32" }, "employingEntityId": { "format": "int32", "type": "integer", "title": "Nullable" } }, "xml": { "name": "PayrollTaxReportRequestModel" }, "title": "PayrollTaxReportRequestModel" }, "PayrollTaxReportExportModel": { "type": "object", "properties": { "employeeId": { "format": "int32", "type": "integer", "title": "Int32" }, "firstName": { "type": "string", "title": "String" }, "surname": { "type": "string", "title": "String" }, "externalId": { "type": "string", "title": "String" }, "location": { "type": "string", "title": "String" }, "type": { "type": "string", "title": "String" }, "state": { "type": "string", "title": "String" }, "amount": { "format": "double", "type": "number", "title": "Decimal" }, "employeePayrollTaxExempt": { "type": "boolean", "title": "Boolean" }, "payCategoryPayrollTaxExempt": { "type": "boolean", "title": "Boolean" }, "terminationPayment": { "type": "boolean", "title": "Boolean" }, "allowance": { "type": "boolean", "title": "Boolean" }, "etp": { "type": "boolean", "title": "Boolean" }, "genuineRedundancy": { "type": "boolean", "title": "Boolean" }, "lumpSumD": { "type": "boolean", "title": "Boolean" } }, "xml": { "name": "PayrollTaxReportExportModel" }, "title": "PayrollTaxReportExportModel" }, "TimesheetReportRequestModel": { "type": "object", "properties": { "employeeId": { "format": "int32", "type": "integer", "title": "Nullable" }, "includeCosts": { "type": "boolean", "title": "Boolean" }, "statuses": { "type": "array", "items": { "enum": [ "Missing", "Submitted", "Approved", "Rejected", "Processed" ], "type": "string", "title": "TimesheetLineStatusType" }, "xml": { "name": "TimesheetLineStatusType", "wrapped": true }, "title": "IList" }, "workTypeId": { "format": "int32", "type": "integer", "title": "Nullable" }, "payScheduleId": { "format": "int32", "type": "integer", "title": "Int32" }, "fromDate": { "format": "date-time", "type": "string", "title": "DateTime" }, "toDate": { "format": "date-time", "type": "string", "title": "DateTime" }, "locationId": { "format": "int32", "type": "integer", "title": "Int32" }, "employingEntityId": { "format": "int32", "type": "integer", "title": "Nullable" } }, "xml": { "name": "TimesheetReportRequestModel" }, "title": "TimesheetReportRequestModel" }, "TimesheetReportExportModel": { "type": "object", "properties": { "employeeId": { "format": "int32", "type": "integer", "title": "Int32" }, "firstName": { "type": "string", "title": "String" }, "surname": { "type": "string", "title": "String" }, "employeeExternalId": { "type": "string", "title": "String" }, "id": { "format": "int32", "type": "integer", "title": "Int32" }, "status": { "type": "string", "title": "String" }, "location": { "type": "string", "title": "String" }, "start": { "format": "date-time", "type": "string", "title": "DateTime" }, "startTime": { "type": "string", "title": "TimeSpan" }, "end": { "format": "date-time", "type": "string", "title": "DateTime" }, "endTime": { "type": "string", "title": "TimeSpan" }, "duration": { "type": "string", "readOnly": true, "title": "TimeSpan" }, "units": { "format": "double", "type": "number", "title": "Decimal" }, "unitType": { "type": "string", "title": "String" }, "workType": { "type": "string", "title": "String" }, "shiftConditions": { "type": "string", "readOnly": true, "title": "String" }, "classification": { "type": "string", "title": "String" }, "numberOfBreaks": { "format": "int32", "type": "integer", "title": "Int32" }, "breakDuration": { "type": "string", "title": "TimeSpan" }, "comments": { "type": "string", "title": "String" }, "consolidatedWithTimesheetLineId": { "format": "int32", "type": "integer", "title": "Nullable" }, "reviewedBy": { "type": "string", "title": "String" }, "gross": { "format": "double", "type": "number", "title": "Nullable" }, "netEarnings": { "format": "double", "type": "number", "title": "Nullable" }, "super": { "format": "double", "type": "number", "title": "Nullable" }, "payg": { "format": "double", "type": "number", "title": "Nullable" }, "employerLiabilities": { "format": "double", "type": "number", "title": "Nullable" }, "totalCost": { "format": "double", "type": "number", "title": "Nullable" }, "dateCreated": { "format": "date-time", "type": "string", "title": "DateTime" }, "dateReviewed": { "format": "date-time", "type": "string", "title": "Nullable" }, "shiftConditionShortCodes": { "type": "array", "items": { "type": "string", "title": "String" }, "title": "IList" }, "breaks": { "type": "array", "items": { "$ref": "#/definitions/TimesheetBreakModel" }, "xml": { "name": "TimesheetBreakModel", "wrapped": true }, "title": "IList" } }, "xml": { "name": "TimesheetReportExportModel" }, "title": "TimesheetReportExportModel" }, "PaymentHistoryReportRequestModel": { "type": "object", "properties": { "employeeId": { "format": "int32", "type": "integer", "title": "Nullable" }, "fromDate": { "format": "date-time", "type": "string", "title": "DateTime" }, "toDate": { "format": "date-time", "type": "string", "title": "DateTime" }, "locationId": { "format": "int32", "type": "integer", "title": "Int32" }, "employingEntityId": { "format": "int32", "type": "integer", "title": "Nullable" } }, "xml": { "name": "PaymentHistoryReportRequestModel" }, "title": "PaymentHistoryReportRequestModel" }, "PaymentHistoryReportExportModel": { "type": "object", "properties": { "employeeId": { "format": "int32", "type": "integer", "title": "Int32" }, "firstName": { "type": "string", "title": "String" }, "surname": { "type": "string", "title": "String" }, "externalId": { "type": "string", "title": "String" }, "datePaid": { "format": "date-time", "type": "string", "title": "DateTime" }, "locationName": { "type": "string", "title": "String" }, "accountName": { "type": "string", "title": "String" }, "bsb": { "type": "string", "title": "String" }, "accountNumber": { "type": "string", "title": "String" }, "accountType": { "type": "string", "title": "String" }, "taxableEarnings": { "format": "double", "type": "number", "title": "Decimal" }, "netEarnings": { "format": "double", "type": "number", "title": "Decimal" }, "totalAllowances": { "format": "double", "type": "number", "title": "Decimal" }, "totalDeductions": { "format": "double", "type": "number", "title": "Decimal" }, "amount": { "format": "double", "type": "number", "title": "Decimal" } }, "xml": { "name": "PaymentHistoryReportExportModel" }, "title": "PaymentHistoryReportExportModel" }, "BirthdayReportExportModel": { "type": "object", "properties": { "location": { "type": "string", "title": "String" }, "dateOfBirth": { "format": "date-time", "type": "string", "title": "DateTime" }, "employeeId": { "format": "int32", "type": "integer", "title": "Int32" }, "firstName": { "type": "string", "title": "String" }, "surname": { "type": "string", "title": "String" }, "externalId": { "type": "string", "title": "String" }, "employmentStatus": { "type": "string", "title": "String" }, "age": { "format": "int32", "type": "integer", "title": "Int32" } }, "xml": { "name": "BirthdayReportExportModel" }, "title": "BirthdayReportExportModel" }, "GrossToNetReportRequest": { "type": "object", "properties": { "employeeId": { "format": "int32", "type": "integer", "title": "Int32" }, "payCategoryIds": { "type": "array", "items": { "format": "int32", "type": "integer", "title": "Int32" }, "title": "List" }, "payScheduleId": { "format": "int32", "type": "integer", "title": "Int32" }, "fromDate": { "format": "date-time", "type": "string", "title": "DateTime" }, "toDate": { "format": "date-time", "type": "string", "title": "DateTime" }, "locationId": { "format": "int32", "type": "integer", "title": "Int32" }, "employingEntityId": { "format": "int32", "type": "integer", "title": "Nullable" } }, "xml": { "name": "GrossToNetReportRequest" }, "title": "GrossToNetReportRequest" }, "GrossToNetReportLineItem": { "type": "object", "properties": { "employeeId": { "format": "int32", "type": "integer", "title": "Int32" }, "firstName": { "type": "string", "title": "String" }, "surname": { "type": "string", "title": "String" }, "primaryLocationId": { "format": "int32", "type": "integer", "title": "Int32" }, "primaryLocation": { "type": "string", "title": "String" }, "externalId": { "type": "string", "title": "String" }, "totalHours": { "format": "double", "type": "number", "title": "Decimal" }, "grossEarnings": { "type": "object", "additionalProperties": { "format": "double", "type": "number", "title": "Decimal" }, "title": "Dictionary" }, "totalGrossEarnings": { "format": "double", "type": "number", "readOnly": true, "title": "Decimal" }, "totalTaxExemptEarnings": { "format": "double", "type": "number", "title": "Decimal" }, "preTaxDeductions": { "type": "object", "additionalProperties": { "format": "double", "type": "number", "title": "Decimal" }, "title": "Dictionary" }, "totalPreTaxDeductions": { "format": "double", "type": "number", "readOnly": true, "title": "Decimal" }, "taxableEarnings": { "format": "double", "type": "number", "readOnly": true, "title": "Decimal" }, "payg": { "format": "double", "type": "number", "title": "Decimal" }, "sfss": { "format": "double", "type": "number", "title": "Decimal" }, "help": { "format": "double", "type": "number", "title": "Decimal" }, "postTaxDeductions": { "type": "object", "additionalProperties": { "format": "double", "type": "number", "title": "Decimal" }, "title": "Dictionary" }, "totalPostTaxDeductions": { "format": "double", "type": "number", "readOnly": true, "title": "Decimal" }, "netEarnings": { "format": "double", "type": "number", "readOnly": true, "title": "Decimal" }, "expenses": { "type": "object", "additionalProperties": { "format": "double", "type": "number", "title": "Decimal" }, "title": "Dictionary" }, "totalExpenses": { "format": "double", "type": "number", "readOnly": true, "title": "Decimal" }, "bankPayments": { "format": "double", "type": "number", "readOnly": true, "title": "Decimal" }, "sgc": { "format": "double", "type": "number", "title": "Decimal" }, "employerContribution": { "format": "double", "type": "number", "title": "Decimal" }, "totalGrossPlusSuper": { "format": "double", "type": "number", "readOnly": true, "title": "Decimal" } }, "xml": { "name": "GrossToNetReportLineItem" }, "title": "GrossToNetReportLineItem" }, "ReportLeaveLiabilityRequestModel": { "type": "object", "properties": { "locationId": { "format": "int32", "type": "integer", "title": "Int32" }, "leaveTypeId": { "format": "int32", "type": "integer", "title": "Int32" }, "includeApprovedLeave": { "type": "boolean", "title": "Boolean" }, "asAtDate": { "format": "date-time", "type": "string", "title": "Nullable" }, "employingEntityId": { "format": "int32", "type": "integer", "title": "Nullable" } }, "xml": { "name": "ReportLeaveLiabilityRequestModel" }, "title": "ReportLeaveLiabilityRequestModel" }, "LeaveLiabilityReportExportModel": { "type": "object", "properties": { "employeeId": { "format": "int32", "type": "integer", "title": "Int32" }, "firstName": { "type": "string", "title": "String" }, "surname": { "type": "string", "title": "String" }, "externalId": { "type": "string", "title": "String" }, "startDate": { "format": "date-time", "type": "string", "title": "DateTime" }, "lastPaidDate": { "format": "date-time", "type": "string", "title": "Nullable" }, "calculatedWeeks": { "format": "double", "type": "number", "title": "Decimal" }, "location": { "type": "string", "title": "String" }, "leaveCategoryName": { "type": "string", "title": "String" }, "approvedLeaveAmount": { "format": "double", "type": "number", "title": "Nullable" }, "accruedAmount": { "format": "double", "type": "number", "title": "Decimal" }, "accruedAmountInDays": { "format": "double", "type": "number", "title": "Decimal" }, "leaveValue": { "format": "double", "type": "number", "title": "Decimal" }, "leaveLoadingDollarValue": { "format": "double", "type": "number", "title": "Decimal" } }, "xml": { "name": "LeaveLiabilityReportExportModel" }, "title": "LeaveLiabilityReportExportModel" }, "RosterShiftFilterModel": { "type": "object", "properties": { "fromDate": { "format": "date-time", "type": "string", "title": "DateTime" }, "toDate": { "format": "date-time", "type": "string", "title": "DateTime" }, "resourceView": { "enum": [ "Employee", "Location" ], "type": "string", "title": "ResourceViewEnum" }, "shiftStatus": { "enum": [ "All", "Published", "Unpublished", "Accepted" ], "type": "string", "title": "RosterShiftStatus" }, "shiftStatuses": { "type": "array", "items": { "enum": [ "All", "Published", "Unpublished", "Accepted" ], "type": "string", "title": "RosterShiftStatus" }, "xml": { "name": "RosterShiftStatus", "wrapped": true }, "title": "IList" }, "selectedLocations": { "type": "array", "items": { "type": "string", "title": "String" }, "title": "IList" }, "selectedEmployees": { "type": "array", "items": { "type": "string", "title": "String" }, "title": "IList" }, "selectedRoles": { "type": "array", "items": { "type": "string", "title": "String" }, "title": "IList" }, "includeSublocations": { "type": "boolean", "title": "Boolean" }, "currentView": { "enum": [ "resourceDay", "resourceWeek", "resourceNextWeeks" ], "type": "string", "title": "RosterViewMode" }, "budgetWarningPercent": { "format": "double", "type": "number", "title": "Decimal" }, "employeeId": { "format": "int32", "type": "integer", "title": "Nullable" }, "locationId": { "format": "int32", "type": "integer", "title": "Nullable" }, "employeeGroupId": { "format": "int32", "type": "integer", "title": "Nullable" }, "unassignedShiftsOnly": { "type": "boolean", "title": "Boolean" }, "showCosts": { "type": "boolean", "title": "Boolean" }, "groupBy": { "enum": [ "Business", "Location" ], "type": "string", "title": "RosterGroupByEnum" }, "groupByThen": { "enum": [ "Employee", "Role", "StartingTime" ], "type": "string", "title": "RosterGroupByThenEnum" }, "excludeUnassignedEmployees": { "type": "boolean", "title": "Boolean" }, "selectAllRoles": { "type": "boolean", "title": "Boolean" } }, "xml": { "name": "RosterShiftFilterModel" }, "title": "RosterShiftFilterModel" }, "RosterShiftGenerateTimesheetModel": { "type": "object", "properties": { "description": { "type": "string", "readOnly": true, "title": "String" }, "isDifferent": { "type": "boolean", "title": "Boolean" }, "fullyQualifiedLocationName": { "type": "string", "title": "String" }, "id": { "format": "int32", "type": "integer", "title": "Int32" }, "employeeId": { "format": "int32", "type": "integer", "title": "Nullable" }, "startTime": { "format": "date-time", "type": "string", "title": "DateTime" }, "endTime": { "format": "date-time", "type": "string", "title": "DateTime" }, "noteAuthor": { "type": "string", "title": "String" }, "notes": { "type": "string", "title": "String" }, "locationId": { "format": "int32", "type": "integer", "title": "Int32" }, "employeeName": { "type": "string", "title": "String" }, "initials": { "type": "string", "title": "String" }, "locationName": { "type": "string", "title": "String" }, "published": { "type": "boolean", "title": "Boolean" }, "isAccepted": { "type": "boolean", "title": "Boolean" }, "selectedQualifications": { "type": "array", "items": { "format": "int32", "type": "integer", "title": "Int32" }, "title": "IList" }, "breaks": { "type": "array", "items": { "$ref": "#/definitions/RosterShiftBreakModel" }, "xml": { "name": "RosterShiftBreakModel", "wrapped": true }, "title": "IList" }, "workTypeId": { "format": "int32", "type": "integer", "title": "Nullable" }, "classificationId": { "format": "int32", "type": "integer", "title": "Nullable" }, "classification": { "type": "string", "title": "String" }, "workType": { "type": "string", "title": "String" }, "shiftConditionIds": { "type": "array", "items": { "format": "int32", "type": "integer", "title": "Int32" }, "title": "IList" }, "roleId": { "format": "int32", "type": "integer", "title": "Nullable" }, "datePublished": { "format": "date-time", "type": "string", "title": "Nullable" }, "resourceId": { "format": "int32", "type": "integer", "title": "Nullable" } }, "xml": { "name": "RosterShiftGenerateTimesheetModel" }, "title": "RosterShiftGenerateTimesheetModel" }, "RosterShiftBreakModel": { "type": "object", "properties": { "id": { "format": "int32", "type": "integer", "title": "Int32" }, "startTime": { "format": "date-time", "type": "string", "readOnly": true, "title": "DateTime" }, "endTime": { "format": "date-time", "type": "string", "readOnly": true, "title": "DateTime" }, "startDateTime": { "format": "date-time", "type": "string", "title": "DateTime" }, "endDateTime": { "format": "date-time", "type": "string", "title": "DateTime" } }, "xml": { "name": "RosterShiftBreakModel" }, "title": "RosterShiftBreakModel" }, "StubRosterShiftViewModel": { "type": "object", "properties": { "note": { "type": "string", "title": "String" } }, "xml": { "name": "StubRosterShiftViewModel" }, "title": "StubRosterShiftViewModel" }, "ODataQueryOptions[SuperFundProduct]": { "type": "object", "properties": { "ifMatch": { "type": "object", "readOnly": true, "title": "ETag" }, "ifNoneMatch": { "type": "object", "readOnly": true, "title": "ETag" }, "context": { "$ref": "#/definitions/ODataQueryContext", "readOnly": true }, "request": { "type": "object", "readOnly": true, "title": "HttpRequestMessage" }, "rawValues": { "$ref": "#/definitions/ODataRawQueryOptions", "readOnly": true }, "selectExpand": { "$ref": "#/definitions/SelectExpandQueryOption", "readOnly": true }, "filter": { "$ref": "#/definitions/FilterQueryOption", "readOnly": true }, "orderBy": { "$ref": "#/definitions/OrderByQueryOption", "readOnly": true }, "skip": { "$ref": "#/definitions/SkipQueryOption", "readOnly": true }, "top": { "$ref": "#/definitions/TopQueryOption", "readOnly": true }, "inlineCount": { "$ref": "#/definitions/InlineCountQueryOption", "readOnly": true }, "validator": { "$ref": "#/definitions/ODataQueryValidator" } }, "xml": { "name": "ODataQueryOptions`1" }, "title": "ODataQueryOptions" }, "SelfManagedSuperFundModel": { "type": "object", "properties": { "id": { "format": "int32", "type": "integer", "title": "Int32" }, "abn": { "type": "string", "title": "String" }, "fundName": { "type": "string", "title": "String" }, "accountName": { "type": "string", "title": "String" }, "accountNumber": { "type": "string", "title": "String" }, "bsb": { "type": "string", "title": "String" }, "electronicServiceAddress": { "type": "string", "title": "String" }, "email": { "type": "string", "title": "String" } }, "xml": { "name": "SelfManagedSuperFundModel" }, "title": "SelfManagedSuperFundModel" }, "SuperProductEditModel": { "type": "object", "properties": { "id": { "format": "int32", "type": "integer", "title": "Int32" }, "abn": { "type": "string", "title": "String" }, "productCode": { "type": "string", "title": "String" }, "productType": { "type": "string", "title": "String" }, "businessName": { "type": "string", "title": "String" }, "displayName": { "type": "string", "readOnly": true, "title": "String" }, "productName": { "type": "string", "title": "String" }, "accountNumber": { "type": "string", "title": "String" }, "bsb": { "type": "string", "title": "String" }, "accountName": { "type": "string", "title": "String" }, "source": { "enum": [ "None", "Saasu", "Xero", "MYOB", "Deputy", "EmployeeTimePunch", "ClickSuper", "IntegratedTimesheets", "FileImport", "FileExport", "QuickBooks", "Harmony", "AwardStore", "Attache", "IntegratedRostering", "ReckonAccounts", "API", "MicroPower", "RosterLive", "NetSuite", "Kounta", "TimeAndAttendanceKiosk", "DetailedFileExport", "JonasPremier", "WageEasy", "Maestrano", "WorkZone", "EmployeePortal", "RosterTemplate", "Onboarding", "Admin", "WorkZoneClockOnOff" ], "type": "string", "title": "ExternalService" }, "electronicServiceAddress": { "type": "string", "title": "String" }, "email": { "type": "string", "title": "String" }, "externalReferenceId": { "type": "string", "title": "String" } }, "xml": { "name": "SuperProductEditModel" }, "title": "SuperProductEditModel" }, "KioskCreateEmployeeModel": { "type": "object", "properties": { "firstName": { "type": "string", "title": "String" }, "surname": { "type": "string", "title": "String" }, "email": { "type": "string", "title": "String" }, "mobileNumber": { "type": "string", "title": "String" }, "pin": { "type": "string", "title": "String" } }, "xml": { "name": "KioskCreateEmployeeModel" }, "title": "KioskCreateEmployeeModel" }, "CheckKioskEmployeeIdModel": { "type": "object", "properties": { "employeeId": { "format": "int32", "type": "integer", "title": "Nullable" } }, "xml": { "name": "CheckKioskEmployeeIdModel" }, "title": "CheckKioskEmployeeIdModel" }, "CheckKioskPinModel": { "type": "object", "properties": { "employeeId": { "format": "int32", "type": "integer", "title": "Nullable" }, "pin": { "type": "string", "title": "String" } }, "xml": { "name": "CheckKioskPinModel" }, "title": "CheckKioskPinModel" }, "ChangeKioskPinModel": { "type": "object", "properties": { "employeeId": { "format": "int32", "type": "integer", "title": "Nullable" }, "oldPin": { "type": "string", "title": "String" }, "newPin": { "type": "string", "title": "String" } }, "xml": { "name": "ChangeKioskPinModel" }, "title": "ChangeKioskPinModel" }, "PinResetModel": { "type": "object", "properties": { "employeeId": { "format": "int32", "type": "integer", "title": "Int32" } }, "xml": { "name": "PinResetModel" }, "title": "PinResetModel" }, "TimeAndAttendanceKioskModel": { "type": "object", "properties": { "id": { "format": "int32", "type": "integer", "title": "Int32" }, "externalId": { "type": "string", "title": "String" }, "locationId": { "format": "int32", "type": "integer", "title": "Nullable" }, "name": { "type": "string", "title": "String" }, "timeZone": { "type": "string", "title": "String" }, "allowHigherClassificationSelection": { "type": "boolean", "title": "Boolean" }, "branding": { "$ref": "#/definitions/WhiteLabelBrandingModel" }, "isLocationRequired": { "type": "boolean", "title": "Boolean" }, "isWorkTypeRequired": { "type": "boolean", "title": "Boolean" }, "restrictLocationsForEmployees": { "type": "boolean", "title": "Boolean" }, "allowEmployeeShiftSelection": { "type": "boolean", "title": "Nullable" }, "clockOnWindowMinutes": { "format": "int32", "type": "integer", "title": "Nullable" }, "clockOffWindowMinutes": { "format": "int32", "type": "integer", "title": "Nullable" }, "ianaTimeZone": { "type": "string", "readOnly": true, "title": "String" }, "isPhotoRequired": { "type": "boolean", "title": "Nullable" } }, "xml": { "name": "TimeAndAttendanceKioskModel" }, "title": "TimeAndAttendanceKioskModel" }, "ODataQueryOptions[TimesheetLine]": { "type": "object", "properties": { "ifMatch": { "type": "object", "readOnly": true, "title": "ETag" }, "ifNoneMatch": { "type": "object", "readOnly": true, "title": "ETag" }, "context": { "$ref": "#/definitions/ODataQueryContext", "readOnly": true }, "request": { "type": "object", "readOnly": true, "title": "HttpRequestMessage" }, "rawValues": { "$ref": "#/definitions/ODataRawQueryOptions", "readOnly": true }, "selectExpand": { "$ref": "#/definitions/SelectExpandQueryOption", "readOnly": true }, "filter": { "$ref": "#/definitions/FilterQueryOption", "readOnly": true }, "orderBy": { "$ref": "#/definitions/OrderByQueryOption", "readOnly": true }, "skip": { "$ref": "#/definitions/SkipQueryOption", "readOnly": true }, "top": { "$ref": "#/definitions/TopQueryOption", "readOnly": true }, "inlineCount": { "$ref": "#/definitions/InlineCountQueryOption", "readOnly": true }, "validator": { "$ref": "#/definitions/ODataQueryValidator" } }, "xml": { "name": "ODataQueryOptions`1" }, "title": "ODataQueryOptions" }, "TimesheetLineModel": { "type": "object", "properties": { "id": { "format": "int32", "type": "integer", "title": "Int32" }, "employeeId": { "format": "int32", "type": "integer", "title": "Int32" }, "startTime": { "format": "date-time", "type": "string", "title": "Nullable" }, "endTime": { "format": "date-time", "type": "string", "title": "Nullable" }, "units": { "format": "double", "type": "number", "title": "Nullable" }, "workTypeId": { "type": "string", "title": "String" }, "locationId": { "type": "string", "title": "String" }, "comments": { "type": "string", "title": "String" }, "breaks": { "type": "array", "items": { "$ref": "#/definitions/TimesheetBreakModel" }, "xml": { "name": "TimesheetBreakModel", "wrapped": true }, "title": "IList" }, "status": { "type": "string", "title": "String" }, "rate": { "format": "double", "type": "number", "title": "Nullable" }, "leaveCategoryId": { "type": "string", "title": "String" }, "payCategoryId": { "type": "string", "title": "String" }, "classificationId": { "type": "string", "title": "String" }, "externalId": { "type": "string", "title": "String" }, "source": { "enum": [ "None", "Saasu", "Xero", "MYOB", "Deputy", "EmployeeTimePunch", "ClickSuper", "IntegratedTimesheets", "FileImport", "FileExport", "QuickBooks", "Harmony", "AwardStore", "Attache", "IntegratedRostering", "ReckonAccounts", "API", "MicroPower", "RosterLive", "NetSuite", "Kounta", "TimeAndAttendanceKiosk", "DetailedFileExport", "JonasPremier", "WageEasy", "Maestrano", "WorkZone", "EmployeePortal", "RosterTemplate", "Onboarding", "Admin", "WorkZoneClockOnOff" ], "type": "string", "title": "ExternalService" }, "attachmentId": { "format": "int32", "type": "integer", "title": "Nullable" }, "shiftConditionIds": { "type": "array", "items": { "type": "string", "title": "String" }, "title": "IList" } }, "xml": { "name": "TimesheetLineModel" }, "title": "TimesheetLineModel" }, "SubmitTimesheetsRequest": { "type": "object", "properties": { "fromDate": { "format": "date-time", "type": "string", "title": "Nullable" }, "toDate": { "format": "date-time", "type": "string", "title": "Nullable" }, "replaceExisting": { "type": "boolean", "title": "Boolean" }, "approved": { "type": "boolean", "title": "Boolean" }, "employeeIdType": { "enum": [ "Standard", "External" ], "type": "string", "title": "IdType" }, "locationIdType": { "enum": [ "Standard", "External" ], "type": "string", "title": "IdType" }, "workTypeIdType": { "enum": [ "Standard", "External" ], "type": "string", "title": "IdType" }, "timesheets": { "type": "object", "additionalProperties": { "type": "array", "items": { "$ref": "#/definitions/TimesheetLineModel" }, "xml": { "name": "TimesheetLineModel", "wrapped": true }, "title": "IList" }, "title": "IDictionary" } }, "xml": { "name": "SubmitTimesheetsRequest" }, "example": { "fromDate": "2017-06-01T00:00:00", "toDate": "2017-06-30T00:00:00", "replaceExisting": false, "approved": true, "employeeIdType": "External", "locationIdType": "Standard", "workTypeIdType": "External", "timesheets": { "emP3316": [ { "id": 0, "employeeId": 0, "startTime": "2017-06-11T10:00:00", "endTime": "2017-06-11T13:00:00", "units": null, "workTypeId": null, "locationId": null, "comments": null, "breaks": [], "status": null, "rate": null, "leaveCategoryId": null, "payCategoryId": null, "classificationId": null, "externalId": null, "source": "None", "attachmentId": null, "shiftConditionIds": null } ], "emP3317": [ { "id": 0, "employeeId": 0, "startTime": "2017-06-13T09:00:00", "endTime": "2017-06-13T17:00:00", "units": 8.0, "workTypeId": "WT1485", "locationId": "123456", "comments": "Some Comments", "breaks": [ { "startTime": "2017-06-13T11:00:00", "endTime": "2017-06-13T12:00:00" } ], "status": null, "rate": 20.0, "leaveCategoryId": null, "payCategoryId": null, "classificationId": null, "externalId": null, "source": "None", "attachmentId": null, "shiftConditionIds": null }, { "id": 0, "employeeId": 0, "startTime": "2017-06-15T09:00:00", "endTime": "2017-06-15T17:00:00", "units": 8.0, "workTypeId": "WT1485", "locationId": "123456", "comments": "Some Comments", "breaks": [ { "startTime": "2017-06-15T11:00:00", "endTime": "2017-06-15T12:00:00" } ], "status": null, "rate": 20.0, "leaveCategoryId": null, "payCategoryId": null, "classificationId": null, "externalId": null, "source": "None", "attachmentId": null, "shiftConditionIds": null } ] } }, "title": "SubmitTimesheetsRequest" }, "UnavailabilityFilter": { "type": "object", "properties": { "fromDate": { "format": "date-time", "type": "string", "title": "Nullable" }, "toDate": { "format": "date-time", "type": "string", "title": "Nullable" }, "employeeId": { "format": "int32", "type": "integer", "title": "Nullable" }, "defaultLocationId": { "format": "int32", "type": "integer", "title": "Nullable" } }, "xml": { "name": "UnavailabilityFilter" }, "title": "UnavailabilityFilter" }, "UnavailabilityModel": { "type": "object", "properties": { "employeeId": { "format": "int32", "type": "integer", "title": "Int32" }, "id": { "format": "int32", "type": "integer", "title": "Int32" }, "fromDate": { "format": "date-time", "type": "string", "title": "DateTime" }, "toDate": { "format": "date-time", "type": "string", "title": "Nullable" }, "endDate": { "format": "date-time", "type": "string", "title": "Nullable" }, "reason": { "type": "string", "title": "String" }, "recurring": { "type": "boolean", "title": "Boolean" }, "recurringDay": { "enum": [ "Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday" ], "type": "string", "title": "Nullable" }, "isAllDay": { "type": "boolean", "readOnly": true, "title": "Boolean" }, "viewOnly": { "type": "boolean", "title": "Boolean" } }, "xml": { "name": "UnavailabilityModel" }, "title": "UnavailabilityModel" }, "UserModel": { "type": "object", "properties": { "id": { "format": "int32", "type": "integer", "title": "Int32" }, "email": { "type": "string", "title": "String" }, "displayName": { "type": "string", "title": "String" }, "timeZone": { "type": "string", "title": "String" } }, "xml": { "name": "UserModel" }, "title": "UserModel" }, "NewUserModel": { "type": "object", "properties": { "username": { "type": "string", "title": "String" }, "displayName": { "type": "string", "title": "String" }, "timeZone": { "type": "string", "title": "String" }, "apiOnly": { "type": "boolean", "title": "Boolean" } }, "xml": { "name": "NewUserModel" }, "title": "NewUserModel" }, "WebHook": { "required": [ "webHookUri" ], "type": "object", "properties": { "id": { "type": "string", "title": "String" }, "webHookUri": { "type": "string", "title": "Uri" }, "secret": { "type": "string", "title": "String" }, "description": { "type": "string", "title": "String" }, "isPaused": { "type": "boolean", "title": "Boolean" }, "filters": { "type": "array", "items": { "type": "string", "title": "String" }, "readOnly": true, "title": "ISet" }, "headers": { "type": "object", "additionalProperties": { "type": "string", "title": "String" }, "readOnly": true, "title": "IDictionary" }, "properties": { "type": "object", "additionalProperties": { "type": "object", "title": "Object" }, "readOnly": true, "title": "IDictionary" } }, "xml": { "name": "WebHook" }, "title": "WebHook" }, "WhiteLabelModel": { "type": "object", "properties": { "id": { "format": "int32", "type": "integer", "title": "Int32" }, "name": { "type": "string", "title": "String" } }, "xml": { "name": "WhiteLabelModel" }, "title": "WhiteLabelModel" }, "InvoiceModel": { "type": "object", "properties": { "id": { "format": "int32", "type": "integer", "title": "Int32" }, "invoiceNumber": { "type": "string", "title": "String" }, "date": { "format": "date-time", "type": "string", "title": "DateTime" }, "totalExcludingGst": { "format": "double", "type": "number", "title": "Decimal" }, "gst": { "format": "double", "type": "number", "title": "Decimal" }, "totalIncludingGst": { "format": "double", "type": "number", "title": "Decimal" }, "cultureName": { "type": "string", "title": "String" }, "currency": { "type": "string", "title": "String" }, "lineItems": { "type": "array", "items": { "$ref": "#/definitions/InvoiceLineItemModel" }, "xml": { "name": "InvoiceLineItemModel", "wrapped": true }, "title": "List" } }, "xml": { "name": "InvoiceModel" }, "title": "InvoiceModel" }, "InvoiceLineItemModel": { "type": "object", "properties": { "abn": { "type": "string", "title": "String" }, "description": { "type": "string", "title": "String" }, "unitPriceIncludingGst": { "format": "double", "type": "number", "title": "Decimal" }, "quantity": { "format": "double", "type": "number", "title": "Decimal" }, "totalIncludingGst": { "format": "double", "type": "number", "title": "Decimal" }, "details": { "type": "array", "items": { "$ref": "#/definitions/InvoiceLineItemDetailModel" }, "xml": { "name": "InvoiceLineItemDetailModel", "wrapped": true }, "title": "List" } }, "xml": { "name": "InvoiceLineItemModel" }, "title": "InvoiceLineItemModel" }, "InvoiceLineItemDetailModel": { "type": "object", "properties": { "description": { "type": "string", "title": "String" } }, "xml": { "name": "InvoiceLineItemDetailModel" }, "title": "InvoiceLineItemDetailModel" }, "ODataQueryOptions[WorkType]": { "type": "object", "properties": { "ifMatch": { "type": "object", "readOnly": true, "title": "ETag" }, "ifNoneMatch": { "type": "object", "readOnly": true, "title": "ETag" }, "context": { "$ref": "#/definitions/ODataQueryContext", "readOnly": true }, "request": { "type": "object", "readOnly": true, "title": "HttpRequestMessage" }, "rawValues": { "$ref": "#/definitions/ODataRawQueryOptions", "readOnly": true }, "selectExpand": { "$ref": "#/definitions/SelectExpandQueryOption", "readOnly": true }, "filter": { "$ref": "#/definitions/FilterQueryOption", "readOnly": true }, "orderBy": { "$ref": "#/definitions/OrderByQueryOption", "readOnly": true }, "skip": { "$ref": "#/definitions/SkipQueryOption", "readOnly": true }, "top": { "$ref": "#/definitions/TopQueryOption", "readOnly": true }, "inlineCount": { "$ref": "#/definitions/InlineCountQueryOption", "readOnly": true }, "validator": { "$ref": "#/definitions/ODataQueryValidator" } }, "xml": { "name": "ODataQueryOptions`1" }, "title": "ODataQueryOptions" } }, "securityDefinitions": { "basic": { "type": "basic", "description": "Your API key should be the username and the password can be left blank" }, "apiKey": { "type": "apiKey", "description": "API Key Authentication", "name": "apiKey", "in": "header" }, "oauth2": { "type": "oauth2", "description": "OAuth2 Implicit Grant", "flow": "implicit", "authorizationUrl": "https://{yourwhitelabel}.yourpayroll.com.au/oauth/authorise", "tokenUrl": "https://{yourwhitelabel}.yourpayroll.com.au/oauth/token", "scopes": { "read": "Read access to protected resources", "write": "Write access to protected resources" } } }, "security": [ { "apiKey": [] } ], "tags": [ { "name": "User", "description": "User" }, { "name": "Authentication", "description": "Authentication" }, { "name": "Business", "description": "Business" }, { "name": "PayRun", "description": "Pay Run" }, { "name": "PublicHoliday", "description": "Public Holiday" }, { "name": "TimeAndAttendance", "description": "Time and Attendance" }, { "name": "EmployeeQualifications", "description": "Employee Qualifications" }, { "name": "LeaveRequests", "description": "Leave Requests" }, { "name": "Timesheets", "description": "Timesheets" }, { "name": "Location", "description": "Location" }, { "name": "DeductionCategories", "description": "Deduction Categories" }, { "name": "EmployeeExpenseCategories", "description": "Employee Expense Categories" }, { "name": "EmployerLiabilityCategories", "description": "Employer Liability Categories" }, { "name": "LeaveAllowance", "description": "Leave Allowances" }, { "name": "Employee", "description": "Employee" }, { "name": "EmployeeDocument", "description": "Employee Documents" }, { "name": "EmployeeGroups", "description": "Employee Groups" }, { "name": "AbaSettings", "description": "ABA Settings" }, { "name": "EmployingEntities", "description": "Employing Entities" }, { "name": "EmploymentAgreement", "description": "Employment Agreement" }, { "name": "LeaveCategories", "description": "Leave Categories" }, { "name": "PayCategory", "description": "Pay Category" }, { "name": "PaymentSummary", "description": "Payment Summaries" }, { "name": "PayRateTemplate", "description": "Pay Rate Templates" }, { "name": "PaySchedule", "description": "Pay Schedules" }, { "name": "Qualifications", "description": "Qualifications" }, { "name": "RosterShift", "description": "Roster Shifts" }, { "name": "SuperFund", "description": "Super Funds" }, { "name": "WorkType", "description": "Work Types" }, { "name": "EmployeeAccess", "description": "Employee Access" }, { "name": "EmployeeExpenseRequest", "description": "Employee Expense Requests" }, { "name": "EmployeeBankAccount", "description": "Employee Bank Accounts" }, { "name": "EmployeeSuperFund", "description": "Employee Super Funds" }, { "name": "EmployeeRecurringTransactions", "description": "Pay Run Inclusions" }, { "name": "Unavailability", "description": "Unavailability" }, { "name": "Reporting", "description": "Reporting" }, { "name": "Ess", "description": "Employee Self Service" }, { "name": "LookupData", "description": "Lookup Data" }, { "name": "Webhook", "description": "Webhook" }, { "name": "WhiteLabel", "description": "White Label Only" } ], "x-navigateMethodsByName": true }golang-github-go-openapi-spec-0.15.0/fixtures/bugs/957/000077500000000000000000000000001332117131300224405ustar00rootroot00000000000000golang-github-go-openapi-spec-0.15.0/fixtures/bugs/957/fixture-957.json000066400000000000000000002640101332117131300253460ustar00rootroot00000000000000{ "info": { "title": "API title", "version": "0.0.1" }, "swagger": "2.0", "produces": [ "application/json", "text/plain" ], "securityDefinitions": { "api_key": { "type": "apiKey", "name": "private_token", "in": "query" }, "oauth2": { "type": "oauth2", "authorizationUrl": "https://local.tools.stack.local/torca/oauth/authorize", "flow": "implicit" } }, "host": "local.tools.stack.local", "basePath": "/torca/nmdb/api", "schemes": [ "https" ], "tags": [ { "name": "devices", "description": "Operations about devices" }, { "name": "info", "description": "Operations about infos" } ], "paths": { "/v2/devices": { "get": { "summary": "Query Nmdb::Device Object.", "description": "Query Nmdb::Device Object.", "produces": [ "application/json" ], "parameters": [ { "in": "query", "name": "page", "description": "Page offset to fetch.", "type": "integer", "format": "int32", "default": 1, "required": false }, { "in": "query", "name": "per_page", "description": "Number of results to return per page.", "type": "integer", "format": "int32", "default": 20, "required": false }, { "in": "query", "name": "offset", "description": "Pad a number of results.", "type": "integer", "format": "int32", "default": 0, "required": false }, { "in": "query", "name": "fmt", "type": "string", "default": "full_root", "enum": [ "full", "full_root", "base" ], "required": false }, { "in": "query", "name": "rels", "description": "Comma-separated list of relationships. Maximum 5 levels. \n e.g. interfaces,interfaces.ip_address", "type": "string", "required": false }, { "in": "query", "name": "filters", "description": "Supports nesting up to 2 levels. \n e.g {\"host_name\":\"~hhcvi\",\"interfaces\":{\"ip_address\":{\"network_address\":\"~10.10.10\"},\"name\":\"eth0\"}}", "type": "string", "required": false }, { "in": "query", "name": "search", "type": "string", "required": false } ], "responses": { "200": { "description": "Query Nmdb::Device Object.", "schema": { "type": "array", "items": { "$ref": "#/definitions/Device" } } }, "406": { "description": "NmdbQueryError", "schema": { "$ref": "#/definitions/NmdbQueryError" } } }, "tags": [ "devices" ], "operationId": "getV2Devices" }, "post": { "summary": "Create Nmdb::Device Object.", "description": "Create Nmdb::Device Object.", "produces": [ "application/json" ], "consumes": [ "application/json" ], "parameters": [ { "name": "V2Devices", "in": "body", "required": true, "schema": { "$ref": "#/definitions/postV2Devices" } } ], "responses": { "201": { "description": "Create Nmdb::Device Object.", "schema": { "$ref": "#/definitions/Device" } } }, "tags": [ "devices" ], "operationId": "postV2Devices" } }, "/v2/devices/{id}": { "get": { "summary": "GET Nmdb::Device Object.", "description": "GET Nmdb::Device Object.", "produces": [ "application/json" ], "parameters": [ { "in": "path", "name": "id", "type": "integer", "format": "int32", "required": true }, { "in": "query", "name": "fmt", "type": "string", "default": "full_root", "enum": [ "full", "full_root", "base" ], "required": false }, { "in": "query", "name": "rels", "description": "Comma-separated list of relationships. Maximum 5 levels. \n e.g. interfaces,interfaces.ip_address", "type": "string", "required": false } ], "responses": { "200": { "description": "GET Nmdb::Device Object.", "schema": { "$ref": "#/definitions/Device" } }, "406": { "description": "NmdbQueryError", "schema": { "$ref": "#/definitions/NmdbQueryError" } } }, "tags": [ "devices" ], "operationId": "getV2DevicesId" }, "put": { "summary": "Update Nmdb::Device Object.", "description": "Update Nmdb::Device Object.", "produces": [ "application/json" ], "consumes": [ "application/json" ], "parameters": [ { "in": "path", "name": "id", "type": "integer", "format": "int32", "required": true }, { "name": "V2Devices", "in": "body", "required": true, "schema": { "$ref": "#/definitions/putV2Devices" } } ], "responses": { "200": { "description": "Update Nmdb::Device Object.", "schema": { "$ref": "#/definitions/Device" } } }, "tags": [ "devices" ], "operationId": "putV2DevicesId" } }, "/v2/info/version": { "get": { "summary": "Get API Version", "description": "Get API Version", "produces": [ "application/json" ], "responses": { "200": { "description": "Get API Version", "schema": { "$ref": "#/definitions/Version" } } }, "tags": [ "info" ], "operationId": "getV2InfoVersion" } } }, "definitions": { "Device": { "type": "object", "properties": { "id": { "type": "integer", "format": "int32" }, "ciid": { "type": "string" }, "host_name": { "type": "string" }, "description": { "type": "string" }, "zone_id": { "type": "integer", "format": "int32" }, "project_id": { "type": "integer", "format": "int32" }, "device_model_id": { "type": "integer", "format": "int32" }, "rack_id": { "type": "integer", "format": "int32" }, "device_status_id": { "type": "integer", "format": "int32" }, "device_status_reason_id": { "type": "integer", "format": "int32" }, "created_at": { "type": "string", "format": "date-time" }, "updated_at": { "type": "string", "format": "date-time" }, "asset_tag": { "type": "string" }, "reconciliation_identity": { "type": "string" }, "serial_number": { "type": "string" }, "application_environment_id": { "type": "integer", "format": "int32" }, "pod_id": { "type": "integer", "format": "int32" }, "vm_capacity": { "type": "integer", "format": "int32" }, "switch_domain_id": { "type": "integer", "format": "int32" }, "blade_slot": { "type": "integer", "format": "int32" }, "blade_slots_required": { "type": "integer", "format": "int32" }, "blade_chassis_id": { "type": "integer", "format": "int32" }, "virtual_host_id": { "type": "integer", "format": "int32" }, "physical_host_id": { "type": "integer", "format": "int32" }, "blade_capacity": { "type": "integer", "format": "int32" }, "device_type_id": { "type": "integer", "format": "int32" }, "ru_required": { "type": "integer", "format": "int32" }, "primary_device_id": { "type": "integer", "format": "int32" }, "instance_id": { "type": "string" }, "operating_system_id": { "type": "integer", "format": "int32" }, "workbook_version": { "type": "string" }, "virtualized_on_vm_host_pool_id": { "type": "integer", "format": "int32" }, "contained_in_vm_host_pool_id": { "type": "integer", "format": "int32" }, "a_or_b": { "type": "integer", "format": "int32" }, "bottom_ru": { "type": "integer", "format": "int32" }, "event_logs": { "type": "array", "items": { "$ref": "#/definitions/EventLog" } }, "sync_status": { "$ref": "#/definitions/SyncStatus" }, "device_status": { "$ref": "#/definitions/DeviceStatus" }, "device_status_reason": { "$ref": "#/definitions/DeviceStatusReason" }, "versions": { "type": "array", "items": { "$ref": "#/definitions/Version" } }, "device_model": { "$ref": "#/definitions/DeviceModel" }, "device_type": { "$ref": "#/definitions/DeviceType" }, "project": { "$ref": "#/definitions/Project" }, "rack": { "$ref": "#/definitions/Rack" }, "zone": { "$ref": "#/definitions/Zone" }, "pod": { "$ref": "#/definitions/Pod" }, "application_environment": { "$ref": "#/definitions/ApplicationEnvironment" }, "operating_system": { "$ref": "#/definitions/OperatingSystem" }, "host_name_reservation": { "$ref": "#/definitions/HostNameReservation" }, "interfaces": { "type": "array", "items": { "$ref": "#/definitions/Interface" } }, "switch_ports": { "type": "array", "items": { "$ref": "#/definitions/SwitchPort" } }, "nat_entries": { "type": "array", "items": { "$ref": "#/definitions/NatEntry" } }, "load_balancer_entries": { "type": "array", "items": { "$ref": "#/definitions/LoadBalancerEntry" } }, "blades": { "type": "array", "items": { "$ref": "#/definitions/Device" } }, "blade_chassis": { "$ref": "#/definitions/Device" }, "virtual_clients": { "type": "array", "items": { "$ref": "#/definitions/Device" } }, "virtual_host": { "$ref": "#/definitions/Device" }, "virtual_hosts": { "type": "array", "items": { "$ref": "#/definitions/Device" } }, "physical_host": { "$ref": "#/definitions/Device" }, "host_pool": { "$ref": "#/definitions/VmHostPool" }, "virtualization_pool": { "$ref": "#/definitions/VmHostPool" }, "primary_device": { "$ref": "#/definitions/Device" }, "subnet_assignments": { "type": "array", "items": { "$ref": "#/definitions/SubnetAssignment" } }, "subnets": { "$ref": "#/definitions/Subnet" } }, "description": "Update Nmdb::Device Object." }, "EventLog": { "type": "object", "properties": { "id": { "type": "integer", "format": "int32" }, "event_class": { "type": "string" }, "severity": { "type": "integer", "format": "int32" }, "name": { "type": "string" }, "status": { "type": "string" }, "details": { "type": "string" }, "data": { "type": "string" }, "loggable_id": { "type": "integer", "format": "int32" }, "loggable_type": { "type": "string" }, "start_time": { "type": "string", "format": "date-time" }, "end_time": { "type": "string", "format": "date-time" }, "created_at": { "type": "string", "format": "date-time" }, "updated_at": { "type": "string", "format": "date-time" }, "loggable": { "$ref": "#/definitions/Loggable" } } }, "Loggable": { "type": "object", "properties": { "id": { "type": "string" } } }, "SyncStatus": { "type": "object", "properties": { "id": { "type": "integer", "format": "int32" }, "status": { "type": "string" }, "locked": { "type": "boolean" }, "details": { "type": "string" }, "last_sync_start": { "type": "string", "format": "date-time" }, "last_sync_end": { "type": "string", "format": "date-time" }, "synchronizable_id": { "type": "integer", "format": "int32" }, "synchronizable_type": { "type": "string" }, "created_at": { "type": "string", "format": "date-time" }, "updated_at": { "type": "string", "format": "date-time" }, "synchronizable": { "$ref": "#/definitions/Synchronizable" } } }, "Synchronizable": { "type": "object", "properties": { "id": { "type": "string" } } }, "DeviceStatus": { "type": "object", "properties": { "id": { "type": "integer", "format": "int32" }, "name": { "type": "string" }, "color": { "type": "string" }, "created_at": { "type": "string", "format": "date-time" }, "updated_at": { "type": "string", "format": "date-time" }, "integration_id": { "type": "string" }, "devices": { "type": "array", "items": { "$ref": "#/definitions/Device" } }, "racks": { "type": "array", "items": { "$ref": "#/definitions/Rack" } }, "device_status_reasons": { "type": "array", "items": { "$ref": "#/definitions/DeviceStatusReason" } } } }, "Rack": { "type": "object", "properties": { "id": { "type": "integer", "format": "int32" }, "ciid": { "type": "string" }, "name": { "type": "string" }, "description": { "type": "string" }, "width": { "type": "string" }, "height": { "type": "string" }, "depth": { "type": "string" }, "total_ru_space": { "type": "integer", "format": "int32" }, "max_power_watts": { "type": "string" }, "created_at": { "type": "string", "format": "date-time" }, "updated_at": { "type": "string", "format": "date-time" }, "location_id": { "type": "integer", "format": "int32" }, "fibre_connection_count": { "type": "integer", "format": "int32" }, "ethernet_connection_count": { "type": "integer", "format": "int32" }, "device_status_id": { "type": "integer", "format": "int32" }, "device_status_reason_id": { "type": "integer", "format": "int32" }, "pod_id": { "type": "integer", "format": "int32" }, "reconciliation_identity": { "type": "string" }, "event_logs": { "type": "array", "items": { "$ref": "#/definitions/EventLog" } }, "sync_status": { "$ref": "#/definitions/SyncStatus" }, "device_status": { "$ref": "#/definitions/DeviceStatus" }, "device_status_reason": { "$ref": "#/definitions/DeviceStatusReason" }, "devices": { "type": "array", "items": { "$ref": "#/definitions/Device" } }, "location": { "$ref": "#/definitions/Location" }, "pod": { "$ref": "#/definitions/Pod" } } }, "DeviceStatusReason": { "type": "object", "properties": { "id": { "type": "integer", "format": "int32" }, "name": { "type": "string" }, "created_at": { "type": "string", "format": "date-time" }, "updated_at": { "type": "string", "format": "date-time" }, "device_status_id": { "type": "integer", "format": "int32" }, "integration_id": { "type": "string" }, "devices": { "type": "array", "items": { "$ref": "#/definitions/Device" } }, "racks": { "type": "array", "items": { "$ref": "#/definitions/Rack" } }, "device_status": { "$ref": "#/definitions/DeviceStatus" } } }, "Location": { "type": "object", "properties": { "id": { "type": "integer", "format": "int32" }, "site": { "type": "string" }, "region": { "type": "string" }, "building": { "type": "string" }, "floor": { "type": "string" }, "room": { "type": "string" }, "latitude": { "type": "string" }, "longitude": { "type": "string" }, "created_at": { "type": "string", "format": "date-time" }, "updated_at": { "type": "string", "format": "date-time" }, "pods": { "type": "array", "items": { "$ref": "#/definitions/Pod" } } } }, "Pod": { "type": "object", "properties": { "id": { "type": "integer", "format": "int32" }, "name": { "type": "string" }, "pod_type_id": { "type": "integer", "format": "int32" }, "environment_id": { "type": "integer", "format": "int32" }, "created_at": { "type": "string", "format": "date-time" }, "updated_at": { "type": "string", "format": "date-time" }, "location_id": { "type": "integer", "format": "int32" }, "pod_type": { "$ref": "#/definitions/PodType" }, "location": { "$ref": "#/definitions/Location" }, "zones": { "type": "array", "items": { "$ref": "#/definitions/Zone" } }, "devices": { "type": "array", "items": { "$ref": "#/definitions/Device" } }, "racks": { "type": "array", "items": { "$ref": "#/definitions/Rack" } }, "data_transactions": { "type": "array", "items": { "$ref": "#/definitions/DataTransaction" } } } }, "PodType": { "type": "object", "properties": { "id": { "type": "integer", "format": "int32" }, "name": { "type": "string" }, "created_at": { "type": "string", "format": "date-time" }, "updated_at": { "type": "string", "format": "date-time" }, "pods": { "type": "array", "items": { "$ref": "#/definitions/Pod" } } } }, "Zone": { "type": "object", "properties": { "id": { "type": "integer", "format": "int32" }, "name": { "type": "string" }, "parent_id": { "type": "integer", "format": "int32" }, "pod_id": { "type": "integer", "format": "int32" }, "created_at": { "type": "string", "format": "date-time" }, "updated_at": { "type": "string", "format": "date-time" }, "zone_group_id": { "type": "integer", "format": "int32" }, "notes": { "type": "string" }, "devices": { "type": "array", "items": { "$ref": "#/definitions/Device" } }, "vlans": { "type": "array", "items": { "$ref": "#/definitions/Vlan" } }, "subnets": { "type": "array", "items": { "$ref": "#/definitions/Subnet" } }, "pod": { "$ref": "#/definitions/Pod" }, "children": { "type": "array", "items": { "$ref": "#/definitions/Zone" } }, "data_transactions": { "type": "array", "items": { "$ref": "#/definitions/DataTransaction" } }, "parent": { "$ref": "#/definitions/Zone" } } }, "Vlan": { "type": "object", "properties": { "id": { "type": "integer", "format": "int32" }, "primary_number": { "type": "integer", "format": "int32" }, "number": { "type": "integer", "format": "int32" }, "zone_id": { "type": "integer", "format": "int32" }, "created_at": { "type": "string", "format": "date-time" }, "updated_at": { "type": "string", "format": "date-time" }, "direction_id": { "type": "integer", "format": "int32" }, "vlan_type_id": { "type": "integer", "format": "int32" }, "description": { "type": "string" }, "is_primary": { "type": "boolean" }, "notes": { "type": "array", "items": { "$ref": "#/definitions/Note" } }, "subnets": { "type": "array", "items": { "$ref": "#/definitions/Subnet" } }, "zone": { "$ref": "#/definitions/Zone" }, "direction": { "$ref": "#/definitions/Direction" }, "vlan_type": { "$ref": "#/definitions/VlanType" }, "interfaces": { "type": "array", "items": { "$ref": "#/definitions/Interface" } }, "switch_ports": { "type": "array", "items": { "$ref": "#/definitions/SwitchPort" } }, "data_transactions": { "type": "array", "items": { "$ref": "#/definitions/DataTransaction" } } } }, "Note": { "type": "object", "properties": { "id": { "type": "string" } } }, "Subnet": { "type": "object", "properties": { "id": { "type": "integer", "format": "int32" }, "name": { "type": "string" }, "description": { "type": "string" }, "network_address": { "type": "string" }, "netmask": { "type": "integer", "format": "int32" }, "default_gateway_id": { "type": "string" }, "broadcast": { "type": "string" }, "zone_id": { "type": "integer", "format": "int32" }, "supernet_id": { "type": "integer", "format": "int32" }, "created_at": { "type": "string", "format": "date-time" }, "updated_at": { "type": "string", "format": "date-time" }, "default_gateway": { "type": "string" }, "vlan_id": { "type": "integer", "format": "int32" }, "direction_id": { "type": "integer", "format": "int32" }, "int_address": { "type": "string" }, "cidr_address": { "type": "string" }, "zone": { "$ref": "#/definitions/Zone" }, "vlan": { "$ref": "#/definitions/Vlan" }, "direction": { "$ref": "#/definitions/Direction" }, "ip_addresses": { "type": "array", "items": { "$ref": "#/definitions/IpAddress" } }, "data_transactions": { "type": "array", "items": { "$ref": "#/definitions/DataTransaction" } }, "subnets": { "type": "array", "items": { "$ref": "#/definitions/Subnet" } }, "supernet": { "$ref": "#/definitions/Subnet" }, "devices": { "$ref": "#/definitions/Device" }, "versions": { "type": "array", "items": { "$ref": "#/definitions/Version" } } } }, "Direction": { "type": "object", "properties": { "id": { "type": "integer", "format": "int32" }, "name": { "type": "string" }, "zone_group_id": { "type": "integer", "format": "int32" }, "notes": { "type": "string" }, "dns_suffix": { "type": "string" }, "created_at": { "type": "string", "format": "date-time" }, "updated_at": { "type": "string", "format": "date-time" }, "vlans": { "type": "array", "items": { "$ref": "#/definitions/Vlan" } }, "interfaces": { "type": "array", "items": { "$ref": "#/definitions/Interface" } }, "subnets": { "type": "array", "items": { "$ref": "#/definitions/Subnet" } }, "data_transactions": { "type": "array", "items": { "$ref": "#/definitions/DataTransaction" } } } }, "Interface": { "type": "object", "properties": { "id": { "type": "integer", "format": "int32" }, "mac_address": { "type": "string" }, "name": { "type": "string" }, "device_id": { "type": "integer", "format": "int32" }, "created_at": { "type": "string", "format": "date-time" }, "updated_at": { "type": "string", "format": "date-time" }, "require_ip": { "type": "boolean" }, "require_switch_port": { "type": "boolean" }, "require_default_gateway": { "type": "boolean" }, "notes": { "type": "string" }, "media": { "type": "integer", "format": "int32" }, "vlan_direction_id": { "type": "integer", "format": "int32" }, "interface_speed_id": { "type": "integer", "format": "int32" }, "vlan_id": { "type": "integer", "format": "int32" }, "subnet_id": { "type": "integer", "format": "int32" }, "direction_id": { "type": "integer", "format": "int32" }, "duplex_id": { "type": "integer", "format": "int32" }, "medium_id": { "type": "integer", "format": "int32" }, "switch_port_id": { "type": "integer", "format": "int32" }, "pci_slot": { "type": "string" }, "a_or_b": { "type": "integer", "format": "int32" }, "require_route_for_management": { "type": "boolean" }, "require_route_for_getronics": { "type": "boolean" }, "default_gateway_id": { "type": "integer", "format": "int32" }, "static_routes": { "type": "string" }, "interface_type_id": { "type": "integer", "format": "int32" }, "connector_type_id": { "type": "integer", "format": "int32" }, "mac_addr": { "type": "string" }, "device": { "$ref": "#/definitions/Device" }, "subnet": { "$ref": "#/definitions/Subnet" }, "ip_address": { "$ref": "#/definitions/IpAddress" }, "vlan": { "$ref": "#/definitions/Vlan" }, "direction": { "$ref": "#/definitions/Direction" }, "duplex": { "$ref": "#/definitions/Duplex" }, "interface_speed": { "$ref": "#/definitions/InterfaceSpeed" }, "medium": { "$ref": "#/definitions/Medium" }, "switch_port": { "$ref": "#/definitions/SwitchPort" }, "interface_type": { "$ref": "#/definitions/InterfaceType" }, "connector_type": { "$ref": "#/definitions/ConnectorType" }, "versions": { "type": "array", "items": { "$ref": "#/definitions/Version" } } } }, "IpAddress": { "type": "object", "properties": { "id": { "type": "integer", "format": "int32" }, "network_address": { "type": "string" }, "int_address": { "type": "string" }, "description": { "type": "string" }, "interface_id": { "type": "integer", "format": "int32" }, "subnet_id": { "type": "integer", "format": "int32" }, "created_at": { "type": "string", "format": "date-time" }, "updated_at": { "type": "string", "format": "date-time" }, "dns_name": { "type": "string" }, "inet_address": { "type": "string" }, "ip_type": { "type": "integer", "format": "int32" }, "subnet": { "$ref": "#/definitions/Subnet" }, "interface": { "$ref": "#/definitions/Interface" }, "outgoing_load_balancer_entries": { "type": "array", "items": { "$ref": "#/definitions/LoadBalancerEntry" } }, "incoming_load_balancer_entries": { "type": "array", "items": { "$ref": "#/definitions/LoadBalancerEntry" } }, "versions": { "type": "array", "items": { "$ref": "#/definitions/Version" } } } }, "LoadBalancerEntry": { "type": "object", "properties": { "id": { "type": "integer", "format": "int32" }, "device_id": { "type": "integer", "format": "int32" }, "virtual_ip_address_id": { "type": "integer", "format": "int32" }, "description": { "type": "string" }, "created_at": { "type": "string", "format": "date-time" }, "updated_at": { "type": "string", "format": "date-time" }, "physical_ip_id": { "type": "integer", "format": "int32" }, "device": { "$ref": "#/definitions/Device" }, "virtual_ip_address": { "$ref": "#/definitions/IpAddress" }, "physical_ip": { "$ref": "#/definitions/IpAddress" } } }, "Version": { "type": "object", "properties": { "id": { "type": "string" }, "event": { "type": "string" }, "item_type": { "type": "string" }, "item_id": { "type": "string" }, "whodunnit": { "type": "string" }, "object_changes": { "type": "string" } }, "description": "Get API Version" }, "Duplex": { "type": "object", "properties": { "id": { "type": "integer", "format": "int32" }, "name": { "type": "string" }, "created_at": { "type": "string", "format": "date-time" }, "updated_at": { "type": "string", "format": "date-time" }, "switch_ports": { "type": "array", "items": { "$ref": "#/definitions/SwitchPort" } }, "interfaces": { "type": "array", "items": { "$ref": "#/definitions/Interface" } } } }, "SwitchPort": { "type": "object", "properties": { "id": { "type": "integer", "format": "int32" }, "port_number": { "type": "integer", "format": "int32" }, "speed": { "type": "integer", "format": "int32" }, "stp": { "type": "boolean" }, "direction": { "type": "integer", "format": "int32" }, "created_at": { "type": "string", "format": "date-time" }, "updated_at": { "type": "string", "format": "date-time" }, "device_id": { "type": "integer", "format": "int32" }, "duplex_id": { "type": "integer", "format": "int32" }, "medium_id": { "type": "integer", "format": "int32" }, "zone_group_id": { "type": "integer", "format": "int32" }, "blade": { "type": "string" }, "switch_port_type_id": { "type": "integer", "format": "int32" }, "vlan_id": { "type": "integer", "format": "int32" }, "notes": { "type": "string" }, "cc_frame_id": { "type": "integer", "format": "int32" }, "pvlan_edge": { "type": "integer", "format": "int32" }, "in_use": { "type": "boolean" }, "ether_channel": { "type": "boolean" }, "blade_serial_number": { "type": "string" }, "trunk_id": { "type": "integer", "format": "int32" }, "stp_port_fast": { "type": "boolean" }, "vpc": { "type": "integer", "format": "int32" }, "wwn": { "type": "string" }, "connected_mac": { "type": "string" }, "connected_mac_updated_at": { "type": "string", "format": "date-time" }, "bottom_ru": { "type": "integer", "format": "int32" }, "supports_kvm": { "type": "boolean" }, "capability": { "type": "string" }, "interface_speed_id": { "type": "integer", "format": "int32" }, "port_channel": { "type": "integer", "format": "int32" }, "device": { "$ref": "#/definitions/Device" }, "duplex": { "$ref": "#/definitions/Duplex" }, "medium": { "$ref": "#/definitions/Medium" }, "switch_port_type": { "$ref": "#/definitions/SwitchPortType" }, "interface_speed": { "$ref": "#/definitions/InterfaceSpeed" }, "vlan": { "$ref": "#/definitions/Vlan" }, "interface": { "$ref": "#/definitions/Interface" }, "versions": { "type": "array", "items": { "$ref": "#/definitions/Version" } } } }, "Medium": { "type": "object", "properties": { "id": { "type": "integer", "format": "int32" }, "name": { "type": "string" }, "created_at": { "type": "string", "format": "date-time" }, "updated_at": { "type": "string", "format": "date-time" }, "switch_ports": { "type": "array", "items": { "$ref": "#/definitions/SwitchPort" } }, "interfaces": { "type": "array", "items": { "$ref": "#/definitions/Interface" } } } }, "SwitchPortType": { "type": "object", "properties": { "id": { "type": "integer", "format": "int32" }, "name": { "type": "string" }, "created_at": { "type": "string", "format": "date-time" }, "updated_at": { "type": "string", "format": "date-time" }, "switch_ports": { "type": "array", "items": { "$ref": "#/definitions/SwitchPort" } } } }, "InterfaceSpeed": { "type": "object", "properties": { "id": { "type": "integer", "format": "int32" }, "name": { "type": "string" }, "created_at": { "type": "string", "format": "date-time" }, "updated_at": { "type": "string", "format": "date-time" }, "interfaces": { "type": "array", "items": { "$ref": "#/definitions/Interface" } }, "switch_ports": { "type": "array", "items": { "$ref": "#/definitions/SwitchPort" } } } }, "InterfaceType": { "type": "object", "properties": { "id": { "type": "integer", "format": "int32" }, "name": { "type": "string" }, "notes": { "type": "string" }, "created_at": { "type": "string", "format": "date-time" }, "updated_at": { "type": "string", "format": "date-time" }, "interfaces": { "type": "array", "items": { "$ref": "#/definitions/Interface" } } } }, "ConnectorType": { "type": "object", "properties": { "id": { "type": "integer", "format": "int32" }, "name": { "type": "string" }, "created_at": { "type": "string", "format": "date-time" }, "updated_at": { "type": "string", "format": "date-time" }, "interfaces": { "type": "array", "items": { "$ref": "#/definitions/Interface" } } } }, "DataTransaction": { "type": "object", "properties": { "id": { "type": "integer", "format": "int32" }, "transactable_type": { "type": "string" }, "transactable_id": { "type": "integer", "format": "int32" }, "data_cleanup_id": { "type": "integer", "format": "int32" }, "created_at": { "type": "string", "format": "date-time" }, "updated_at": { "type": "string", "format": "date-time" }, "transactions": { "type": "string" }, "data_cleanup": { "$ref": "#/definitions/DataCleanup" } } }, "DataCleanup": { "type": "object", "properties": { "id": { "type": "integer", "format": "int32" }, "name": { "type": "string" }, "status": { "type": "integer", "format": "int32" }, "created_at": { "type": "string", "format": "date-time" }, "updated_at": { "type": "string", "format": "date-time" }, "data_transactions": { "type": "array", "items": { "$ref": "#/definitions/DataTransaction" } } } }, "VlanType": { "type": "object", "properties": { "id": { "type": "integer", "format": "int32" }, "name": { "type": "string" }, "created_at": { "type": "string", "format": "date-time" }, "updated_at": { "type": "string", "format": "date-time" }, "vlans": { "type": "array", "items": { "$ref": "#/definitions/Vlan" } } } }, "DeviceModel": { "type": "object", "properties": { "id": { "type": "integer", "format": "int32" }, "name": { "type": "string" }, "created_at": { "type": "string", "format": "date-time" }, "updated_at": { "type": "string", "format": "date-time" }, "vendor_name": { "type": "string" }, "manufacturer_name": { "type": "string" }, "integration_class": { "type": "string" }, "status": { "type": "integer", "format": "int32" }, "devices": { "type": "array", "items": { "$ref": "#/definitions/Device" } }, "device_types": { "type": "array", "items": { "$ref": "#/definitions/DeviceType" } }, "default_interfaces": { "type": "array", "items": { "$ref": "#/definitions/DefaultInterface" } } } }, "DeviceType": { "type": "object", "properties": { "id": { "type": "integer", "format": "int32" }, "name": { "type": "string" }, "networkable": { "type": "boolean" }, "routable": { "type": "boolean" }, "interfaceable": { "type": "boolean" }, "switchable": { "type": "boolean" }, "has_switch_ports": { "type": "boolean" }, "rackable": { "type": "boolean" }, "virtual_client": { "type": "boolean" }, "virtual_host": { "type": "boolean" }, "created_at": { "type": "string", "format": "date-time" }, "updated_at": { "type": "string", "format": "date-time" }, "device_category_id": { "type": "integer", "format": "int32" }, "has_blades": { "type": "boolean" }, "is_blade": { "type": "boolean" }, "is_load_balancer": { "type": "boolean" }, "is_patch_panel": { "type": "boolean" }, "extends_switch": { "type": "boolean" }, "esmt_device_category_id": { "type": "integer", "format": "int32" }, "esmt_device_type_id": { "type": "integer", "format": "int32" }, "esmt_device_class_id": { "type": "integer", "format": "int32" }, "devices": { "type": "array", "items": { "$ref": "#/definitions/Device" } }, "device_models": { "type": "array", "items": { "$ref": "#/definitions/DeviceModel" } }, "esmt_device_class": { "$ref": "#/definitions/EsmtDeviceClass" }, "esmt_device_type": { "$ref": "#/definitions/EsmtDeviceType" }, "esmt_device_category": { "$ref": "#/definitions/EsmtDeviceCategory" }, "device_category": { "$ref": "#/definitions/DeviceCategory" } } }, "EsmtDeviceClass": { "type": "object", "properties": { "id": { "type": "integer", "format": "int32" }, "name": { "type": "string" }, "created_at": { "type": "string", "format": "date-time" }, "updated_at": { "type": "string", "format": "date-time" }, "device_types": { "type": "array", "items": { "$ref": "#/definitions/DeviceType" } } } }, "EsmtDeviceType": { "type": "object", "properties": { "id": { "type": "integer", "format": "int32" }, "name": { "type": "string" }, "created_at": { "type": "string", "format": "date-time" }, "updated_at": { "type": "string", "format": "date-time" }, "device_types": { "type": "array", "items": { "$ref": "#/definitions/DeviceType" } } } }, "EsmtDeviceCategory": { "type": "object", "properties": { "id": { "type": "integer", "format": "int32" }, "name": { "type": "string" }, "created_at": { "type": "string", "format": "date-time" }, "updated_at": { "type": "string", "format": "date-time" }, "device_categories": { "type": "array", "items": { "$ref": "#/definitions/DeviceCategory" } }, "device_types": { "type": "array", "items": { "$ref": "#/definitions/DeviceType" } } } }, "DeviceCategory": { "type": "object", "properties": { "id": { "type": "integer", "format": "int32" }, "name": { "type": "string" }, "interfaceable": { "type": "boolean" }, "networkable": { "type": "boolean" }, "routable": { "type": "boolean" }, "switchable": { "type": "boolean" }, "has_switch_ports": { "type": "boolean" }, "rackable": { "type": "boolean" }, "virtual_host": { "type": "boolean" }, "virtual_client": { "type": "boolean" }, "created_at": { "type": "string", "format": "date-time" }, "updated_at": { "type": "string", "format": "date-time" }, "has_blades": { "type": "boolean" }, "is_blade": { "type": "boolean" }, "is_load_balancer": { "type": "boolean" }, "is_patch_panel": { "type": "boolean" }, "extends_switch": { "type": "boolean" }, "device_types": { "type": "array", "items": { "$ref": "#/definitions/DeviceType" } }, "esmt_device_type": { "$ref": "#/definitions/EsmtDeviceType" }, "esmt_device_category": { "$ref": "#/definitions/EsmtDeviceCategory" } } }, "DefaultInterface": { "type": "object", "properties": { "id": { "type": "integer", "format": "int32" }, "name": { "type": "string" }, "device_model_id": { "type": "integer", "format": "int32" }, "direction": { "type": "integer", "format": "int32" }, "speed": { "type": "integer", "format": "int32" }, "require_ip": { "type": "boolean" }, "require_switch_port": { "type": "boolean" }, "require_default_gateway": { "type": "boolean" }, "interface_type": { "type": "integer", "format": "int32" }, "notes": { "type": "string" }, "created_at": { "type": "string", "format": "date-time" }, "updated_at": { "type": "string", "format": "date-time" }, "device_model": { "$ref": "#/definitions/DeviceModel" } } }, "Project": { "type": "object", "properties": { "id": { "type": "integer", "format": "int32" }, "name": { "type": "string" }, "code": { "type": "string" }, "system_id": { "type": "integer", "format": "int32" }, "created_at": { "type": "string", "format": "date-time" }, "updated_at": { "type": "string", "format": "date-time" }, "ciid": { "type": "string" }, "instance_id": { "type": "string" }, "reconciliation_identity": { "type": "string" }, "workbook_location": { "type": "string" }, "device_status_id": { "type": "integer", "format": "int32" }, "device_status_reason_id": { "type": "integer", "format": "int32" }, "event_logs": { "type": "array", "items": { "$ref": "#/definitions/EventLog" } }, "sync_status": { "$ref": "#/definitions/SyncStatus" }, "device_status": { "$ref": "#/definitions/DeviceStatus" }, "device_status_reason": { "$ref": "#/definitions/DeviceStatusReason" }, "devices": { "type": "array", "items": { "$ref": "#/definitions/Device" } }, "system": { "$ref": "#/definitions/System" } } }, "System": { "type": "object", "properties": { "id": { "type": "integer", "format": "int32" }, "name": { "type": "string" }, "description": { "type": "string" }, "created_at": { "type": "string", "format": "date-time" }, "updated_at": { "type": "string", "format": "date-time" }, "ciid": { "type": "string" }, "instance_id": { "type": "string" }, "reconciliation_identity": { "type": "string" }, "device_status_id": { "type": "integer", "format": "int32" }, "device_status_reason_id": { "type": "integer", "format": "int32" }, "event_logs": { "type": "array", "items": { "$ref": "#/definitions/EventLog" } }, "sync_status": { "$ref": "#/definitions/SyncStatus" }, "device_status": { "$ref": "#/definitions/DeviceStatus" }, "device_status_reason": { "$ref": "#/definitions/DeviceStatusReason" }, "projects": { "type": "array", "items": { "$ref": "#/definitions/Project" } } } }, "ApplicationEnvironment": { "type": "object", "properties": { "id": { "type": "integer", "format": "int32" }, "name": { "type": "string" }, "ciid": { "type": "string" }, "impact_scale": { "type": "integer", "format": "int32" }, "created_at": { "type": "string", "format": "date-time" }, "updated_at": { "type": "string", "format": "date-time" }, "instance_id": { "type": "string" }, "reconciliation_identity": { "type": "string" }, "device_status_id": { "type": "integer", "format": "int32" }, "device_status_reason_id": { "type": "integer", "format": "int32" }, "event_logs": { "type": "array", "items": { "$ref": "#/definitions/EventLog" } }, "sync_status": { "$ref": "#/definitions/SyncStatus" }, "device_status": { "$ref": "#/definitions/DeviceStatus" }, "device_status_reason": { "$ref": "#/definitions/DeviceStatusReason" }, "devices": { "type": "array", "items": { "$ref": "#/definitions/Device" } } } }, "OperatingSystem": { "type": "object", "properties": { "id": { "type": "integer", "format": "int32" }, "name": { "type": "string" }, "ciid": { "type": "string" }, "device_status_id": { "type": "integer", "format": "int32" }, "device_status_reason_id": { "type": "integer", "format": "int32" }, "reconciliation_identity": { "type": "string" }, "created_at": { "type": "string", "format": "date-time" }, "updated_at": { "type": "string", "format": "date-time" }, "instance_id": { "type": "string" }, "event_logs": { "type": "array", "items": { "$ref": "#/definitions/EventLog" } }, "sync_status": { "$ref": "#/definitions/SyncStatus" }, "device_status": { "$ref": "#/definitions/DeviceStatus" }, "device_status_reason": { "$ref": "#/definitions/DeviceStatusReason" }, "devices": { "type": "array", "items": { "$ref": "#/definitions/Device" } } } }, "HostNameReservation": { "type": "object", "properties": { "id": { "type": "integer", "format": "int32" }, "host_name": { "type": "string" }, "created_at": { "type": "string", "format": "date-time" }, "updated_at": { "type": "string", "format": "date-time" }, "device_id": { "type": "integer", "format": "int32" }, "device": { "$ref": "#/definitions/Device" } } }, "NatEntry": { "type": "object", "properties": { "id": { "type": "integer", "format": "int32" }, "in_ip_id": { "type": "integer", "format": "int32" }, "out_ip_id": { "type": "integer", "format": "int32" }, "device_id": { "type": "integer", "format": "int32" }, "description": { "type": "string" }, "created_at": { "type": "string", "format": "date-time" }, "updated_at": { "type": "string", "format": "date-time" }, "device": { "$ref": "#/definitions/Device" }, "in_ip": { "$ref": "#/definitions/IpAddress" }, "out_ip": { "$ref": "#/definitions/IpAddress" } } }, "VmHostPool": { "type": "object", "properties": { "id": { "type": "integer", "format": "int32" }, "ciid": { "type": "string" }, "name": { "type": "string" }, "created_at": { "type": "string", "format": "date-time" }, "updated_at": { "type": "string", "format": "date-time" }, "hosts": { "type": "array", "items": { "$ref": "#/definitions/Device" } }, "clients": { "type": "array", "items": { "$ref": "#/definitions/Device" } } } }, "SubnetAssignment": { "type": "object", "properties": { "id": { "type": "integer", "format": "int32" }, "device_id": { "type": "integer", "format": "int32" }, "subnet_id": { "type": "integer", "format": "int32" }, "assigns_vips": { "type": "boolean" }, "assigns_physical_ips": { "type": "boolean" }, "created_at": { "type": "string", "format": "date-time" }, "updated_at": { "type": "string", "format": "date-time" }, "device": { "$ref": "#/definitions/Device" }, "subnet": { "$ref": "#/definitions/Subnet" } } }, "NmdbQueryError": { "type": "object", "properties": { "message": { "type": "string" }, "filters": { "type": "string" }, "rels": { "type": "string" } }, "description": "GET Nmdb::Device Object." }, "postV2Devices": { "type": "object", "properties": { "body": { "type": "object", "properties": { "ciid": { "type": "string" }, "host_name": { "type": "string" }, "description": { "type": "string" }, "zone_id": { "type": "integer", "format": "int32" }, "project_id": { "type": "integer", "format": "int32" }, "device_model_id": { "type": "integer", "format": "int32" }, "rack_id": { "type": "integer", "format": "int32" }, "device_status_id": { "type": "integer", "format": "int32" }, "device_status_reason_id": { "type": "integer", "format": "int32" }, "asset_tag": { "type": "string" }, "reconciliation_identity": { "type": "string" }, "serial_number": { "type": "string" }, "application_environment_id": { "type": "integer", "format": "int32" }, "pod_id": { "type": "integer", "format": "int32" }, "vm_capacity": { "type": "integer", "format": "int32" }, "switch_domain_id": { "type": "integer", "format": "int32" }, "blade_slot": { "type": "integer", "format": "int32" }, "blade_slots_required": { "type": "integer", "format": "int32" }, "blade_chassis_id": { "type": "integer", "format": "int32" }, "virtual_host_id": { "type": "integer", "format": "int32" }, "physical_host_id": { "type": "integer", "format": "int32" }, "blade_capacity": { "type": "integer", "format": "int32" }, "device_type_id": { "type": "integer", "format": "int32" }, "ru_required": { "type": "integer", "format": "int32" }, "primary_device_id": { "type": "integer", "format": "int32" }, "instance_id": { "type": "string" }, "operating_system_id": { "type": "integer", "format": "int32" }, "workbook_version": { "type": "string" }, "virtualized_on_vm_host_pool_id": { "type": "integer", "format": "int32" }, "contained_in_vm_host_pool_id": { "type": "integer", "format": "int32" }, "a_or_b": { "type": "integer", "format": "int32" }, "bottom_ru": { "type": "integer", "format": "int32" }, "host_name_reservation_id": { "type": "integer", "format": "int32" }, "interfaces_attributes": { "type": "array", "items": { "type": "object", "properties": { "id": { "type": "integer", "format": "int32" }, "mac_address": { "type": "string" }, "name": { "type": "string" }, "device_id": { "type": "integer", "format": "int32" }, "created_at": { "type": "string", "format": "date-time" }, "updated_at": { "type": "string", "format": "date-time" }, "require_ip": { "type": "boolean" }, "require_switch_port": { "type": "boolean" }, "require_default_gateway": { "type": "boolean" }, "notes": { "type": "string" }, "media": { "type": "integer", "format": "int32" }, "vlan_direction_id": { "type": "integer", "format": "int32" }, "interface_speed_id": { "type": "integer", "format": "int32" }, "vlan_id": { "type": "integer", "format": "int32" }, "subnet_id": { "type": "integer", "format": "int32" }, "direction_id": { "type": "integer", "format": "int32" }, "duplex_id": { "type": "integer", "format": "int32" }, "medium_id": { "type": "integer", "format": "int32" }, "switch_port_id": { "type": "integer", "format": "int32" }, "pci_slot": { "type": "string" }, "a_or_b": { "type": "integer", "format": "int32" }, "require_route_for_management": { "type": "boolean" }, "require_route_for_getronics": { "type": "boolean" }, "default_gateway_id": { "type": "integer", "format": "int32" }, "static_routes": { "type": "string" }, "interface_type_id": { "type": "integer", "format": "int32" }, "connector_type_id": { "type": "integer", "format": "int32" }, "mac_addr": { "type": "string" }, "ip_address_id": { "type": "integer", "format": "int32" }, "_destroy": { "type": "boolean" } } } }, "switch_ports_attributes": { "type": "array", "items": { "type": "object", "properties": { "id": { "type": "integer", "format": "int32" }, "port_number": { "type": "integer", "format": "int32" }, "speed": { "type": "integer", "format": "int32" }, "stp": { "type": "boolean" }, "direction": { "type": "integer", "format": "int32" }, "created_at": { "type": "string", "format": "date-time" }, "updated_at": { "type": "string", "format": "date-time" }, "device_id": { "type": "integer", "format": "int32" }, "duplex_id": { "type": "integer", "format": "int32" }, "medium_id": { "type": "integer", "format": "int32" }, "zone_group_id": { "type": "integer", "format": "int32" }, "blade": { "type": "string" }, "switch_port_type_id": { "type": "integer", "format": "int32" }, "vlan_id": { "type": "integer", "format": "int32" }, "notes": { "type": "string" }, "cc_frame_id": { "type": "integer", "format": "int32" }, "pvlan_edge": { "type": "integer", "format": "int32" }, "in_use": { "type": "boolean" }, "ether_channel": { "type": "boolean" }, "blade_serial_number": { "type": "string" }, "trunk_id": { "type": "integer", "format": "int32" }, "stp_port_fast": { "type": "boolean" }, "vpc": { "type": "integer", "format": "int32" }, "wwn": { "type": "string" }, "connected_mac": { "type": "string" }, "connected_mac_updated_at": { "type": "string", "format": "date-time" }, "bottom_ru": { "type": "integer", "format": "int32" }, "supports_kvm": { "type": "boolean" }, "capability": { "type": "string" }, "interface_speed_id": { "type": "integer", "format": "int32" }, "port_channel": { "type": "integer", "format": "int32" }, "_destroy": { "type": "boolean" } } } }, "nat_entries_attributes": { "type": "array", "items": { "type": "object", "properties": { "id": { "type": "integer", "format": "int32" }, "in_ip_id": { "type": "integer", "format": "int32" }, "out_ip_id": { "type": "integer", "format": "int32" }, "device_id": { "type": "integer", "format": "int32" }, "description": { "type": "string" }, "created_at": { "type": "string", "format": "date-time" }, "updated_at": { "type": "string", "format": "date-time" }, "_destroy": { "type": "boolean" } } } }, "load_balancer_entries_attributes": { "type": "array", "items": { "type": "object", "properties": { "id": { "type": "integer", "format": "int32" }, "device_id": { "type": "integer", "format": "int32" }, "virtual_ip_address_id": { "type": "integer", "format": "int32" }, "description": { "type": "string" }, "created_at": { "type": "string", "format": "date-time" }, "updated_at": { "type": "string", "format": "date-time" }, "physical_ip_id": { "type": "integer", "format": "int32" }, "_destroy": { "type": "boolean" } } } }, "subnet_assignments_attributes": { "type": "array", "items": { "type": "object", "properties": { "id": { "type": "integer", "format": "int32" }, "device_id": { "type": "integer", "format": "int32" }, "subnet_id": { "type": "integer", "format": "int32" }, "assigns_vips": { "type": "boolean" }, "assigns_physical_ips": { "type": "boolean" }, "created_at": { "type": "string", "format": "date-time" }, "updated_at": { "type": "string", "format": "date-time" }, "_destroy": { "type": "boolean" } } } } } } }, "required": [ "body" ], "description": "Create Nmdb::Device Object." }, "putV2Devices": { "type": "object", "properties": { "body": { "type": "object", "properties": { "id": { "type": "integer", "format": "int32" }, "ciid": { "type": "string" }, "host_name": { "type": "string" }, "description": { "type": "string" }, "zone_id": { "type": "integer", "format": "int32" }, "project_id": { "type": "integer", "format": "int32" }, "device_model_id": { "type": "integer", "format": "int32" }, "rack_id": { "type": "integer", "format": "int32" }, "device_status_id": { "type": "integer", "format": "int32" }, "device_status_reason_id": { "type": "integer", "format": "int32" }, "asset_tag": { "type": "string" }, "reconciliation_identity": { "type": "string" }, "serial_number": { "type": "string" }, "application_environment_id": { "type": "integer", "format": "int32" }, "pod_id": { "type": "integer", "format": "int32" }, "vm_capacity": { "type": "integer", "format": "int32" }, "switch_domain_id": { "type": "integer", "format": "int32" }, "blade_slot": { "type": "integer", "format": "int32" }, "blade_slots_required": { "type": "integer", "format": "int32" }, "blade_chassis_id": { "type": "integer", "format": "int32" }, "virtual_host_id": { "type": "integer", "format": "int32" }, "physical_host_id": { "type": "integer", "format": "int32" }, "blade_capacity": { "type": "integer", "format": "int32" }, "device_type_id": { "type": "integer", "format": "int32" }, "ru_required": { "type": "integer", "format": "int32" }, "primary_device_id": { "type": "integer", "format": "int32" }, "instance_id": { "type": "string" }, "operating_system_id": { "type": "integer", "format": "int32" }, "workbook_version": { "type": "string" }, "virtualized_on_vm_host_pool_id": { "type": "integer", "format": "int32" }, "contained_in_vm_host_pool_id": { "type": "integer", "format": "int32" }, "a_or_b": { "type": "integer", "format": "int32" }, "bottom_ru": { "type": "integer", "format": "int32" }, "interfaces_attributes": { "type": "array", "items": { "type": "object", "properties": { "id": { "type": "integer", "format": "int32" }, "mac_address": { "type": "string" }, "name": { "type": "string" }, "device_id": { "type": "integer", "format": "int32" }, "created_at": { "type": "string", "format": "date-time" }, "updated_at": { "type": "string", "format": "date-time" }, "require_ip": { "type": "boolean" }, "require_switch_port": { "type": "boolean" }, "require_default_gateway": { "type": "boolean" }, "notes": { "type": "string" }, "media": { "type": "integer", "format": "int32" }, "vlan_direction_id": { "type": "integer", "format": "int32" }, "interface_speed_id": { "type": "integer", "format": "int32" }, "vlan_id": { "type": "integer", "format": "int32" }, "subnet_id": { "type": "integer", "format": "int32" }, "direction_id": { "type": "integer", "format": "int32" }, "duplex_id": { "type": "integer", "format": "int32" }, "medium_id": { "type": "integer", "format": "int32" }, "switch_port_id": { "type": "integer", "format": "int32" }, "pci_slot": { "type": "string" }, "a_or_b": { "type": "integer", "format": "int32" }, "require_route_for_management": { "type": "boolean" }, "require_route_for_getronics": { "type": "boolean" }, "default_gateway_id": { "type": "integer", "format": "int32" }, "static_routes": { "type": "string" }, "interface_type_id": { "type": "integer", "format": "int32" }, "connector_type_id": { "type": "integer", "format": "int32" }, "mac_addr": { "type": "string" }, "ip_address_id": { "type": "integer", "format": "int32" }, "_destroy": { "type": "boolean" } } } }, "switch_ports_attributes": { "type": "array", "items": { "type": "object", "properties": { "id": { "type": "integer", "format": "int32" }, "port_number": { "type": "integer", "format": "int32" }, "speed": { "type": "integer", "format": "int32" }, "stp": { "type": "boolean" }, "direction": { "type": "integer", "format": "int32" }, "created_at": { "type": "string", "format": "date-time" }, "updated_at": { "type": "string", "format": "date-time" }, "device_id": { "type": "integer", "format": "int32" }, "duplex_id": { "type": "integer", "format": "int32" }, "medium_id": { "type": "integer", "format": "int32" }, "zone_group_id": { "type": "integer", "format": "int32" }, "blade": { "type": "string" }, "switch_port_type_id": { "type": "integer", "format": "int32" }, "vlan_id": { "type": "integer", "format": "int32" }, "notes": { "type": "string" }, "cc_frame_id": { "type": "integer", "format": "int32" }, "pvlan_edge": { "type": "integer", "format": "int32" }, "in_use": { "type": "boolean" }, "ether_channel": { "type": "boolean" }, "blade_serial_number": { "type": "string" }, "trunk_id": { "type": "integer", "format": "int32" }, "stp_port_fast": { "type": "boolean" }, "vpc": { "type": "integer", "format": "int32" }, "wwn": { "type": "string" }, "connected_mac": { "type": "string" }, "connected_mac_updated_at": { "type": "string", "format": "date-time" }, "bottom_ru": { "type": "integer", "format": "int32" }, "supports_kvm": { "type": "boolean" }, "capability": { "type": "string" }, "interface_speed_id": { "type": "integer", "format": "int32" }, "port_channel": { "type": "integer", "format": "int32" }, "_destroy": { "type": "boolean" } } } }, "nat_entries_attributes": { "type": "array", "items": { "type": "object", "properties": { "id": { "type": "integer", "format": "int32" }, "in_ip_id": { "type": "integer", "format": "int32" }, "out_ip_id": { "type": "integer", "format": "int32" }, "device_id": { "type": "integer", "format": "int32" }, "description": { "type": "string" }, "created_at": { "type": "string", "format": "date-time" }, "updated_at": { "type": "string", "format": "date-time" }, "_destroy": { "type": "boolean" } } } }, "load_balancer_entries_attributes": { "type": "array", "items": { "type": "object", "properties": { "id": { "type": "integer", "format": "int32" }, "device_id": { "type": "integer", "format": "int32" }, "virtual_ip_address_id": { "type": "integer", "format": "int32" }, "description": { "type": "string" }, "created_at": { "type": "string", "format": "date-time" }, "updated_at": { "type": "string", "format": "date-time" }, "physical_ip_id": { "type": "integer", "format": "int32" }, "_destroy": { "type": "boolean" } } } }, "subnet_assignments_attributes": { "type": "array", "items": { "type": "object", "properties": { "id": { "type": "integer", "format": "int32" }, "device_id": { "type": "integer", "format": "int32" }, "subnet_id": { "type": "integer", "format": "int32" }, "assigns_vips": { "type": "boolean" }, "assigns_physical_ips": { "type": "boolean" }, "created_at": { "type": "string", "format": "date-time" }, "updated_at": { "type": "string", "format": "date-time" }, "_destroy": { "type": "boolean" } } } } } } }, "required": [ "body" ], "description": "Update Nmdb::Device Object." } } } golang-github-go-openapi-spec-0.15.0/fixtures/expansion/000077500000000000000000000000001332117131300231605ustar00rootroot00000000000000golang-github-go-openapi-spec-0.15.0/fixtures/expansion/all-the-things.json000066400000000000000000000131171332117131300266760ustar00rootroot00000000000000{ "swagger": "2.0", "info": { "version": "1.0.0", "title": "Swagger Petstore", "description": "A sample API that uses a petstore as an example to demonstrate features in the swagger-2.0 specification", "termsOfService": "http://helloreverb.com/terms/", "contact": { "name": "Wordnik API Team" }, "license": { "name": "MIT" } }, "host": "petstore.swagger.wordnik.com", "basePath": "/api", "schemes": [ "http" ], "consumes": [ "application/json" ], "produces": [ "application/json" ], "parameters": { "idParam": { "name": "id", "in": "path", "description": "ID of pet to fetch", "required": true, "type": "integer", "format": "int64" }, "tag": { "type": "string", "in": "query", "required": false }, "query": { "$ref": "#/parameters/tag" } }, "responses": { "petResponse": { "description": "pet response", "schema": { "$ref": "#/definitions/pet" } }, "stringResponse": { "descripion": "string response", "schema": { "type": "string" } }, "anotherPet": { "$ref": "#/responses/petResponse" } }, "paths": { "/": { "get": { "operationId": "indexStuff", "responses": { "default": { "$ref": "#/responses/stringResponse" }, "200": { "$ref": "#/responses/anotherPet" } } } }, "/pets": { "get": { "description": "Returns all pets from the system that the user has access to", "operationId": "findPets", "produces": [ "application/json", "application/xml", "text/xml", "text/html" ], "parameters": [ { "name": "tags", "in": "query", "description": "tags to filter by", "required": false, "type": "array", "items": { "type": "string" }, "collectionFormat": "csv" }, { "name": "limit", "in": "query", "description": "maximum number of results to return", "required": false, "type": "integer", "format": "int32" } ], "responses": { "200": { "description": "pet response", "schema": { "type": "array", "items": { "$ref": "#/definitions/pet" } } }, "default": { "description": "unexpected error", "schema": { "$ref": "#/definitions/errorModel" } } } }, "post": { "description": "Creates a new pet in the store. Duplicates are allowed", "operationId": "addPet", "produces": [ "application/json" ], "parameters": [ { "name": "pet", "in": "body", "description": "Pet to add to the store", "required": true, "schema": { "$ref": "#/definitions/petInput" } } ], "responses": { "200": { "$ref": "#/responses/petResponse" }, "default": { "description": "unexpected error", "schema": { "$ref": "#/definitions/errorModel" } } } } }, "/pets/{id}": { "get": { "description": "Returns a user based on a single ID, if the user does not have access to the pet", "operationId": "findPetById", "produces": [ "application/json", "application/xml", "text/xml", "text/html" ], "parameters": [ { "$ref": "#/parameters/idParam" } ], "responses": { "200": { "$ref": "#/responses/petResponse" }, "default": { "description": "unexpected error", "schema": { "$ref": "#/definitions/errorModel" } } } }, "delete": { "description": "deletes a single pet based on the ID supplied", "operationId": "deletePet", "parameters": [ { "$ref": "#/parameters/idParam" } ], "responses": { "204": { "description": "pet deleted" }, "default": { "description": "unexpected error", "schema": { "$ref": "#/definitions/errorModel" } } } } } }, "definitions": { "pet": { "required": [ "id", "name" ], "properties": { "id": { "type": "integer", "format": "int64" }, "name": { "type": "string" }, "tag": { "type": "string" } } }, "petInput": { "allOf": [ { "$ref": "#/definitions/pet" }, { "required": [ "name" ], "properties": { "id": { "type": "integer", "format": "int64" } } } ] }, "errorModel": { "required": [ "code", "message" ], "properties": { "code": { "type": "integer", "format": "int32" }, "message": { "type": "string" } } } } }golang-github-go-openapi-spec-0.15.0/fixtures/expansion/circular-minimal.json000066400000000000000000000017311332117131300273050ustar00rootroot00000000000000{ "swagger": "2.0", "info": { "version": "0.0.1" }, "basePath": "/", "paths": { "/cycles": { "get": { "responses": { "200": { "description": "ok", "schema": { "$ref": "#/definitions/node0" } } } } } }, "definitions": { "node0": { "type": "object", "properties": { "p00": { "$ref": "#/definitions/node1" }, "p01": { "$ref": "#/definitions/node3" } } }, "node1": { "type": "object", "properties": { "p1": { "$ref": "#/definitions/node2" } } }, "node2": { "type": "object", "properties": { "p2": { "$ref": "#/definitions/node0" } } }, "node3": { "type": "object", "properties": { "p3": { "$ref": "#/definitions/node1" } } } } } golang-github-go-openapi-spec-0.15.0/fixtures/expansion/circularRefs.json000066400000000000000000000020051332117131300264740ustar00rootroot00000000000000{ "definitions": { "brand": { "type": "object", "properties": { "name": { "type": "string" } } }, "category": { "type": "object", "properties": { "children": { "type": "array", "items": { "$ref": "#/definitions/category" } } } }, "car": { "type": "object", "properties": { "id": { "type": "integer", "format": "int64" }, "make": { "type": "string" }, "similar": { "items": { "$ref": "#/definitions/car" } }, "notSimilar": { "additionalProperties": { "$ref": "#/definitions/car" } }, "oneCar": { "$ref": "#/definitions/car" }, "category": { "$ref": "#/definitions/category" }, "brand": { "$ref": "#/definitions/brand" } } } } } golang-github-go-openapi-spec-0.15.0/fixtures/expansion/circularSpec.json000066400000000000000000000020351332117131300264720ustar00rootroot00000000000000{"swagger":"2.0","info":{"title":"Swagger Sample","description":"Sample API Playground.","version":"1.0.0"},"basePath":"/v1","schemes":["http"],"consumes":["application/vdn.sample.v1+json"],"produces":["application/vdn.sample.v1+json"],"paths":{"/books":{"get":{"summary":"List all books","operationId":"listBooks","tags":["books"],"responses":{"200":{"headers":{"Link":{"type":"string"}},"description":"An array of books","schema":{"type":"array","items":{"$ref":"#/definitions/Book"}}},"default":{"description":"generic error response","schema":{"$ref":"#/definitions/Error"}}}}}},"definitions":{"Book":{"type":"object","required":["title","summary"],"properties":{"title":{"type":"string","example":"Winnie the Pooh"},"summary":{"type":"string","example":"Famous children's book"},"related_books":{"type":"array","items":{"$ref":"#/definitions/Book"}}}},"Error":{"type":"object","readOnly":true,"properties":{"code":{"type":"integer","format":"int64","example":400},"message":{"type":"string","example":"Unexpected error"}},"required":["message"]}}} golang-github-go-openapi-spec-0.15.0/fixtures/expansion/circularSpec.yaml000066400000000000000000000023621332117131300264660ustar00rootroot00000000000000--- swagger: "2.0" info: title: Swagger Sample description: Sample API Playground. version: 1.0.0 basePath: /v1 schemes: - http consumes: - application/vdn.sample.v1+json produces: - application/vdn.sample.v1+json paths: /books: get: summary: List all books operationId: listBooks tags: - books responses: 200: headers: Link: type: string description: An array of books schema: type: array items: $ref: "#/definitions/Book" default: description: generic error response schema: $ref: "#/definitions/Error" definitions: Book: type: object required: - title - summary properties: title: type: string example: Winnie the Pooh summary: type: string example: Famous children's book related_books: type: array items: $ref: "#/definitions/Book" Error: type: object readOnly: true properties: code: type: integer format: int64 example: 400 message: type: string example: Unexpected error required: - message golang-github-go-openapi-spec-0.15.0/fixtures/expansion/circularSpec2.json000066400000000000000000000162271332117131300265640ustar00rootroot00000000000000{ "swagger": "2.0", "info": { "title": "swagger.yaml for investigating an issue with spec.expandSchema", "version": "0.0.1", "description": "expander.go test for issue analysis, the spec derived from ODataWebV3.Northwind.Model and simplified for the analysis" }, "schemes": [ "http" ], "host": "localhost", "basePath": "/modified_from_Northwind.svc", "consumes": [ "application/json" ], "produces": [ "application/json" ], "paths": { "/Employees": { "get": { "summary": "Get entities from Employees", "responses": { "200": { "description": "Retrieved entities", "schema": { "title": "Collection of Employee", "type": "object", "properties": { "value": { "type": "array", "items": { "$ref": "#/definitions/Employee" } } } } }, "default": { "$ref": "#/responses/error" } } } } }, "definitions": { "Category": { "type": "object", "properties": { "CategoryID": { "type": "integer", "format": "int32" }, "CategoryName": { "type": "string", "maxLength": 15 }, "Products": { "type": "array", "items": { "$ref": "#/definitions/Product" } } }, "title": "Category" }, "CustomerDemographic": { "type": "object", "properties": { "CustomerTypeID": { "type": "string", "maxLength": 10 }, "CustomerDesc": { "type": "string", "example": "string" }, "Customers": { "type": "array", "items": { "$ref": "#/definitions/Customer" } } }, "title": "CustomerDemographic" }, "Customer": { "type": "object", "properties": { "CustomerID": { "type": "string", "maxLength": 5 }, "CompanyName": { "type": "string", "maxLength": 40 }, "Orders": { "type": "array", "items": { "$ref": "#/definitions/Order" } }, "CustomerDemographics": { "type": "array", "items": { "$ref": "#/definitions/CustomerDemographic" } } }, "title": "Customer" }, "Employee": { "type": "object", "properties": { "EmployeeID": { "type": "integer", "format": "int32" }, "LastName": { "type": "string", "maxLength": 20 }, "FirstName": { "type": "string", "maxLength": 10 }, "Employees1": { "type": "array", "items": { "$ref": "#/definitions/Employee" } }, "Employee1": { "$ref": "#/definitions/Employee" }, "Orders": { "type": "array", "items": { "$ref": "#/definitions/Order" } }, "Territories": { "type": "array", "items": { "$ref": "#/definitions/Territory" } } }, "title": "Employee" }, "Order_Detail": { "type": "object", "properties": { "OrderID": { "type": "integer", "format": "int32" }, "ProductID": { "type": "integer", "format": "int32" }, "UnitPrice": { "type": "number", "format": "decimal", "multipleOf": 0.0001 }, "Quantity": { "type": "integer", "format": "int16" }, "Order": { "$ref": "#/definitions/Order" }, "Product": { "$ref": "#/definitions/Product" } }, "title": "Order_Detail" }, "Order": { "type": "object", "properties": { "OrderID": { "type": "integer", "format": "int32" }, "CustomerID": { "type": "string", "maxLength": 5, "example": "string" }, "Customer": { "$ref": "#/definitions/Customer" }, "Employee": { "$ref": "#/definitions/Employee" }, "Order_Details": { "type": "array", "items": { "$ref": "#/definitions/Order_Detail" } }, "Shipper": { "$ref": "#/definitions/Shipper" } }, "title": "Order" }, "Product": { "type": "object", "properties": { "ProductID": { "type": "integer", "format": "int32" }, "ProductName": { "type": "string", "maxLength": 40 }, "Category": { "$ref": "#/definitions/Category" }, "Order_Details": { "type": "array", "items": { "$ref": "#/definitions/Order_Detail" } }, "Supplier": { "$ref": "#/definitions/Supplier" } }, "title": "Product" }, "Region": { "type": "object", "properties": { "RegionID": { "type": "integer", "format": "int32" }, "RegionDescription": { "type": "string", "maxLength": 50 }, "Territories": { "type": "array", "items": { "$ref": "#/definitions/Territory" } } }, "title": "Region" }, "Shipper": { "type": "object", "properties": { "ShipperID": { "type": "integer", "format": "int32" }, "CompanyName": { "type": "string", "maxLength": 40 }, "Orders": { "type": "array", "items": { "$ref": "#/definitions/Order" } } }, "title": "Shipper" }, "Supplier": { "type": "object", "properties": { "SupplierID": { "type": "integer", "format": "int32" }, "CompanyName": { "type": "string", "maxLength": 40 }, "Products": { "type": "array", "items": { "$ref": "#/definitions/Product" } } }, "title": "Supplier" }, "Territory": { "type": "object", "properties": { "TerritoryID": { "type": "string", "maxLength": 20 }, "TerritoryDescription": { "type": "string", "maxLength": 50 }, "RegionID": { "type": "integer", "format": "int32" }, "Region": { "$ref": "#/definitions/Region" }, "Employees": { "type": "array", "items": { "$ref": "#/definitions/Employee" } } }, "title": "Territory" } }, "responses": { "error": { "description": "Error" } } } golang-github-go-openapi-spec-0.15.0/fixtures/expansion/clickmeter.json000066400000000000000000004032511332117131300262020ustar00rootroot00000000000000{"swagger":"2.0","schemes":["http","https"],"host":"apiv2.clickmeter.com:80","info":{"contact":{"email":"api@clickmeter.com","name":"Api Support","url":"http://www.clickmeter.com/api"},"description":"Api dashboard for ClickMeter API","title":"ClickMeter","version":"v2","x-logo":{"url":"https://s3.amazonaws.com/clickmeter.com/Web/static/cmlogo.svg"},"x-origin":{"format":"swagger","url":"http://api.v2.clickmeter.com.s3.amazonaws.com/docs/api-docs-v2.json","version":"2.0"},"x-providerName":"clickmeter.com"},"securityDefinitions":{"api_key":{"description":"API Key Authentication","in":"header","name":"X-Clickmeter-AuthKey","type":"apiKey"}},"security":[{"api_key":[]}],"paths":{"/account":{"get":{"consumes":[],"deprecated":false,"produces":["application/json","text/json","application/xml","text/xml"],"responses":{"200":{"description":"","schema":{"$ref":"#/definitions/Api.Core.Dto.Accounting.User"}},"401":{"description":"Unauthorized"},"500":{"description":"Internal Server Error"}},"summary":"Retrieve current account data","tags":["Account"]},"post":{"consumes":["application/json","text/json","application/xml","text/xml","application/x-www-form-urlencoded"],"deprecated":false,"parameters":[{"in":"body","name":"value","required":true,"schema":{"$ref":"#/definitions/Api.Core.Dto.Accounting.User"}}],"produces":["application/json","text/json","application/xml","text/xml"],"responses":{"200":{"description":"","schema":{"$ref":"#/definitions/Api.Core.Dto.Accounting.User"}},"401":{"description":"Unauthorized"},"500":{"description":"Internal Server Error"}},"summary":"Update current account data","tags":["Account"]}},"/account/domainwhitelist":{"get":{"consumes":[],"deprecated":false,"parameters":[{"description":"Offset where to start from","format":"int32","in":"query","minLength":0,"name":"offset","required":false,"type":"integer"},{"description":"Limit results to this number","format":"int32","in":"query","maxLength":0,"minLength":0,"name":"limit","required":false,"type":"integer"}],"produces":["application/json","text/json"],"responses":{"200":{"description":"","schema":{"$ref":"#/definitions/Api.Core.Responses.EntitiesResponse[Api.Core.Dto.Accounting.DomainWhitelistEntry]"}},"401":{"description":"Unauthorized"},"500":{"description":"Internal Server Error"}},"summary":"Retrieve list of a domains allowed to redirect in DDU mode","tags":["Account"]},"post":{"consumes":["application/json","text/json","application/xml","text/xml","application/x-www-form-urlencoded"],"deprecated":false,"parameters":[{"description":"The entry to add","in":"body","name":"value","required":true,"schema":{"$ref":"#/definitions/Api.Core.Dto.Accounting.DomainWhitelistEntry"}}],"produces":["application/json","text/json","application/xml","text/xml"],"responses":{"200":{"description":"","schema":{"$ref":"#/definitions/Api.Core.Dto.Accounting.DomainWhitelistEntry"}},"401":{"description":"Unauthorized"},"500":{"description":"Internal Server Error"}},"summary":"Create an domain entry","tags":["Account"]}},"/account/domainwhitelist/{whitelistId}":{"delete":{"consumes":[],"deprecated":false,"parameters":[{"description":"The id of the domain to delete","in":"path","name":"whitelistId","required":true,"type":"string"}],"produces":["application/json","text/json","application/xml","text/xml"],"responses":{"200":{"description":"","schema":{"$ref":"#/definitions/Api.Core.Dto.Accounting.DomainWhitelistEntry"}},"401":{"description":"Unauthorized"},"500":{"description":"Internal Server Error"}},"summary":"Delete an domain entry","tags":["Account"]}},"/account/guests":{"get":{"consumes":[],"deprecated":false,"parameters":[{"description":"Offset where to start from","format":"int32","in":"query","minLength":0,"name":"offset","required":false,"type":"integer"},{"description":"Limit results to this number","format":"int32","in":"query","maxLength":0,"minLength":0,"name":"limit","required":false,"type":"integer"},{"description":"Field to sort by","in":"query","name":"sortBy","required":false,"type":"string"},{"description":"Direction of sort \"asc\" or \"desc\"","enum":["asc","desc"],"in":"query","name":"sortDirection","required":false,"type":"string"},{"description":"Filter fields by this pattern","in":"query","name":"textSearch","required":false,"type":"string"}],"produces":["application/json","text/json"],"responses":{"200":{"description":"","schema":{"$ref":"#/definitions/Api.Core.Responses.EntitiesResponse[Api.Core.Responses.EntityUri[System.Int64]]"}},"401":{"description":"Unauthorized"},"500":{"description":"Internal Server Error"}},"summary":"Retrieve list of a guest","tags":["Account"]},"post":{"consumes":["application/json","text/json","application/xml","text/xml","application/x-www-form-urlencoded"],"deprecated":false,"parameters":[{"description":"Guest object to create","in":"body","name":"value","required":true,"schema":{"$ref":"#/definitions/Api.Core.Dto.Accounting.Guest"}}],"produces":["application/json","text/json","application/xml","text/xml"],"responses":{"200":{"description":"","schema":{"$ref":"#/definitions/Api.Core.Dto.Accounting.Guest"}},"401":{"description":"Unauthorized"},"500":{"description":"Internal Server Error"}},"summary":"Create a guest","tags":["Account"]}},"/account/guests/count":{"get":{"consumes":[],"deprecated":false,"parameters":[{"description":"Filter fields by this pattern","in":"query","name":"textSearch","required":false,"type":"string"}],"produces":["application/json","text/json","application/xml","text/xml"],"responses":{"200":{"description":"","schema":{"$ref":"#/definitions/Api.Core.Responses.CountResponce"}},"401":{"description":"Unauthorized"},"500":{"description":"Internal Server Error"}},"summary":"Retrieve count of guests","tags":["Account"]}},"/account/guests/{guestId}":{"delete":{"consumes":[],"deprecated":false,"parameters":[{"description":"Id of the guest","format":"int64","in":"path","name":"guestId","required":true,"type":"integer"}],"produces":["application/json","text/json","application/xml","text/xml"],"responses":{"200":{"description":"","schema":{"$ref":"#/definitions/Api.Core.Responses.EntityUri[System.Int64]"}},"401":{"description":"Unauthorized"},"500":{"description":"Internal Server Error"}},"summary":"Delete a guest","tags":["Account"]},"get":{"consumes":[],"deprecated":false,"parameters":[{"description":"Id of the guest","format":"int64","in":"path","name":"guestId","required":true,"type":"integer"}],"produces":["application/json","text/json","application/xml","text/xml"],"responses":{"200":{"description":"","schema":{"$ref":"#/definitions/Api.Core.Dto.Accounting.Guest"}},"401":{"description":"Unauthorized"},"500":{"description":"Internal Server Error"}},"summary":"Retrieve a guest","tags":["Account"]},"post":{"consumes":["application/json","text/json","application/xml","text/xml","application/x-www-form-urlencoded"],"deprecated":false,"parameters":[{"description":"Id of the guest","format":"int64","in":"path","name":"guestId","required":true,"type":"integer"},{"description":"Guest object with field updated","in":"body","name":"value","required":true,"schema":{"$ref":"#/definitions/Api.Core.Dto.Accounting.Guest"}}],"produces":["application/json","text/json","application/xml","text/xml"],"responses":{"200":{"description":"","schema":{"$ref":"#/definitions/Api.Core.Dto.Accounting.Guest"}},"401":{"description":"Unauthorized"},"500":{"description":"Internal Server Error"}},"summary":"Update a guest","tags":["Account"]}},"/account/guests/{guestId}/permissions":{"get":{"consumes":[],"deprecated":false,"parameters":[{"description":"Id of the guest","format":"int64","in":"path","name":"guestId","required":true,"type":"integer"},{"description":"Can be \"datapoint\" or \"group\"","enum":["datapoint","group"],"in":"query","name":"entityType","required":false,"type":"string"},{"description":"Offset where to start from","format":"int32","in":"query","minLength":0,"name":"offset","required":false,"type":"integer"},{"description":"Limit results to this number","format":"int32","in":"query","maxLength":0,"minLength":0,"name":"limit","required":false,"type":"integer"},{"description":"Can be \"w\" or \"r\"","enum":["r","w"],"in":"query","name":"type","required":false,"type":"string"},{"description":"Optional id of the datapoint/group entity to filter by","format":"int64","in":"query","name":"entityId","required":false,"type":"integer"}],"produces":["application/json","text/json"],"responses":{"200":{"description":"","schema":{"$ref":"#/definitions/Api.Core.Responses.EntitiesResponse[Api.Core.Dto.Grants.Grant]"}},"401":{"description":"Unauthorized"},"500":{"description":"Internal Server Error"}},"summary":"Retrieve permissions for a guest","tags":["Account"]}},"/account/guests/{guestId}/permissions/count":{"get":{"consumes":[],"deprecated":false,"parameters":[{"description":"Id of the guest","format":"int64","in":"path","name":"guestId","required":true,"type":"integer"},{"description":"Can be \"datapoint\" or \"group\"","enum":["datapoint","group"],"in":"query","name":"entityType","required":false,"type":"string"},{"description":"Can be \"w\" or \"r\"","enum":["r","w"],"in":"query","name":"type","required":false,"type":"string"},{"description":"Optional id of the datapoint/group entity to filter by","format":"int64","in":"query","name":"entityId","required":false,"type":"integer"}],"produces":["application/json","text/json","application/xml","text/xml"],"responses":{"200":{"description":"","schema":{"$ref":"#/definitions/Api.Core.Responses.CountResponce"}},"401":{"description":"Unauthorized"},"500":{"description":"Internal Server Error"}},"summary":"Retrieve count of the permissions for a guest","tags":["Account"]}},"/account/guests/{guestId}/{type}/permissions/patch":{"post":{"consumes":["application/json","text/json","application/xml","text/xml","application/x-www-form-urlencoded"],"deprecated":false,"parameters":[{"description":"Id of the guest","format":"int64","in":"path","name":"guestId","required":true,"type":"integer"},{"description":"Can be \"datapoint\" or \"group\"","enum":["datapoint","group"],"in":"path","name":"type","required":true,"type":"string"},{"description":"The patch permission request","in":"body","name":"body","required":true,"schema":{"$ref":"#/definitions/Api.Core.Requests.PermissionPatchRequest"}}],"produces":["application/json","text/json","application/xml","text/xml"],"responses":{"200":{"description":"","schema":{"$ref":"#/definitions/Api.Core.Responses.EntityUri[System.Int64]"}},"401":{"description":"Unauthorized"},"500":{"description":"Internal Server Error"}},"summary":"Change the permission on a shared object","tags":["Account"]},"put":{"consumes":["application/json","text/json","application/xml","text/xml","application/x-www-form-urlencoded"],"deprecated":false,"parameters":[{"description":"Id of the guest","format":"int64","in":"path","name":"guestId","required":true,"type":"integer"},{"description":"Can be \"datapoint\" or \"group\"","enum":["datapoint","group"],"in":"path","name":"type","required":true,"type":"string"},{"description":"The patch permission request","in":"body","name":"body","required":true,"schema":{"$ref":"#/definitions/Api.Core.Requests.PermissionPatchRequest"}}],"produces":["application/json","text/json","application/xml","text/xml"],"responses":{"200":{"description":"","schema":{"$ref":"#/definitions/Api.Core.Responses.EntityUri[System.Int64]"}},"401":{"description":"Unauthorized"},"500":{"description":"Internal Server Error"}},"summary":"Change the permission on a shared object","tags":["Account"]}},"/account/ipblacklist":{"get":{"consumes":[],"deprecated":false,"parameters":[{"description":"Offset where to start from","format":"int32","in":"query","minLength":0,"name":"offset","required":false,"type":"integer"},{"description":"Limit results to this number","format":"int32","in":"query","maxLength":0,"minLength":0,"name":"limit","required":false,"type":"integer"}],"produces":["application/json","text/json"],"responses":{"200":{"description":"","schema":{"$ref":"#/definitions/Api.Core.Responses.EntitiesResponse[Api.Core.Dto.Accounting.IpBlacklistEntry]"}},"401":{"description":"Unauthorized"},"500":{"description":"Internal Server Error"}},"summary":"Retrieve list of a ip to exclude from event tracking","tags":["Account"]},"post":{"consumes":["application/json","text/json","application/xml","text/xml","application/x-www-form-urlencoded"],"deprecated":false,"parameters":[{"description":"The entry to add","in":"body","name":"value","required":true,"schema":{"$ref":"#/definitions/Api.Core.Dto.Accounting.IpBlacklistEntry"}}],"produces":["application/json","text/json","application/xml","text/xml"],"responses":{"200":{"description":"","schema":{"$ref":"#/definitions/Api.Core.Dto.Accounting.IpBlacklistEntry"}},"401":{"description":"Unauthorized"},"500":{"description":"Internal Server Error"}},"summary":"Create an ip blacklist entry","tags":["Account"]}},"/account/ipblacklist/{blacklistId}":{"delete":{"consumes":[],"deprecated":false,"parameters":[{"description":"The id of the ip to delete","in":"path","name":"blacklistId","required":true,"type":"string"}],"produces":["application/json","text/json","application/xml","text/xml"],"responses":{"200":{"description":"","schema":{"$ref":"#/definitions/Api.Core.Dto.Accounting.IpBlacklistEntry"}},"401":{"description":"Unauthorized"},"500":{"description":"Internal Server Error"}},"summary":"Delete an ip blacklist entry","tags":["Account"]}},"/account/plan":{"get":{"consumes":[],"deprecated":false,"produces":["application/json","text/json","application/xml","text/xml"],"responses":{"200":{"description":"","schema":{"$ref":"#/definitions/Api.Core.Dto.Accounting.Plan"}},"401":{"description":"Unauthorized"},"500":{"description":"Internal Server Error"}},"summary":"Retrieve current account plan","tags":["Account"]}},"/aggregated":{"get":{"consumes":[],"deprecated":false,"parameters":[{"description":"Timeframe of the request. See list at $timeframeList","enum":["today","yesterday","last7","last30","lastmonth","currentmonth","previousmonth","last90","last120","last180","last12months","lastyear","currentyear","beginning","custom"],"in":"query","name":"timeFrame","required":true,"type":"string"},{"description":"If using a \"custom\" timeFrame you can specify the starting day (YYYYMMDD)","in":"query","name":"fromDay","required":false,"type":"string"},{"description":"If using a \"custom\" timeFrame you can specify the ending day (YYYYMMDD)","in":"query","name":"toDay","required":false,"type":"string"},{"description":"If using \"yesterday\" or \"today\" timeframe you can ask for the hourly detail","in":"query","name":"hourly","required":false,"type":"boolean"},{"description":"","in":"query","name":"onlyFavorites","required":false,"type":"string"}],"produces":["application/json","text/json"],"responses":{"200":{"description":"","schema":{"$ref":"#/definitions/Api.Core.Dto.Aggregated.AggregatedResult"}},"401":{"description":"Unauthorized"},"500":{"description":"Internal Server Error"}},"summary":"Retrieve statistics about this customer for a timeframe","tags":["Aggregated"]}},"/aggregated/list":{"get":{"consumes":[],"deprecated":false,"parameters":[{"description":"Timeframe of the request. See list at $timeframeList","enum":["today","yesterday","last7","last30","lastmonth","currentmonth","previousmonth","last90","last120","last180","last12months","lastyear","currentyear","beginning","custom"],"in":"query","name":"timeFrame","required":true,"type":"string"},{"description":"If using a \"custom\" timeFrame you can specify the starting day (YYYYMMDD)","in":"query","name":"fromDay","required":false,"type":"string"},{"description":"If using a \"custom\" timeFrame you can specify the ending day (YYYYMMDD)","in":"query","name":"toDay","required":false,"type":"string"},{"description":"The temporal entity you want to group by (\"week\"/\"month\"). If unspecified is \"day\".","enum":["week","month"],"in":"query","name":"groupBy","required":false,"type":"string"}],"produces":["application/json","text/json"],"responses":{"200":{"description":"","schema":{"$ref":"#/definitions/Api.Core.Responses.EntitiesResponse[Api.Core.Dto.Aggregated.AggregatedResult]"}},"401":{"description":"Unauthorized"},"500":{"description":"Internal Server Error"}},"summary":"Retrieve statistics about this customer for a timeframe grouped by some temporal entity (day/week/month)","tags":["Aggregated"]}},"/aggregated/summary/conversions":{"get":{"consumes":[],"deprecated":false,"parameters":[{"description":"Timeframe of the request. See list at $timeframeList","enum":["today","yesterday","last7","last30","lastmonth","currentmonth","previousmonth","last90","last120","last180","last12months","lastyear","currentyear","beginning","custom"],"in":"query","name":"timeFrame","required":true,"type":"string"},{"description":"If using a \"custom\" timeFrame you can specify the starting day (YYYYMMDD)","in":"query","name":"fromDay","required":false,"type":"string"},{"description":"If using a \"custom\" timeFrame you can specify the ending day (YYYYMMDD)","in":"query","name":"toDay","required":false,"type":"string"},{"description":"Status of conversion (\"deleted\"/\"active\")","enum":["deleted","active"],"in":"query","name":"status","required":false,"type":"string"},{"description":"Field to sort by","in":"query","name":"sortBy","required":false,"type":"string"},{"description":"Direction of sort \"asc\" or \"desc\"","enum":["asc","desc"],"in":"query","name":"sortDirection","required":false,"type":"string"},{"description":"Offset where to start from","format":"int32","in":"query","minLength":0,"name":"offset","required":false,"type":"integer"},{"description":"Limit results to this number","format":"int32","in":"query","maxLength":0,"minLength":0,"name":"limit","required":false,"type":"integer"},{"description":"Filter fields by this pattern","in":"query","name":"textSearch","required":false,"type":"string"}],"produces":["application/json","text/json"],"responses":{"200":{"description":"","schema":{"$ref":"#/definitions/Api.Core.Dto.Aggregated.AggregatedSummaryResult"}},"401":{"description":"Unauthorized"},"500":{"description":"Internal Server Error"}},"summary":"Retrieve statistics about a subset of conversions for a timeframe with conversions data","tags":["Aggregated"]}},"/aggregated/summary/datapoints":{"get":{"consumes":[],"deprecated":false,"parameters":[{"description":"Timeframe of the request. See list at $timeframeList","enum":["today","yesterday","last7","last30","lastmonth","currentmonth","previousmonth","last90","last120","last180","last12months","lastyear","currentyear","beginning","custom"],"in":"query","name":"timeFrame","required":true,"type":"string"},{"description":"Type of datapoint (\"tl\"/\"tp\")","enum":["tp","tl"],"in":"query","name":"type","required":true,"type":"string"},{"description":"If using a \"custom\" timeFrame you can specify the starting day (YYYYMMDD)","in":"query","name":"fromDay","required":false,"type":"string"},{"description":"If using a \"custom\" timeFrame you can specify the ending day (YYYYMMDD)","in":"query","name":"toDay","required":false,"type":"string"},{"description":"Status of datapoint (\"deleted\"/\"active\"/\"paused\"/\"spam\")","enum":["deleted","active","paused","spam"],"in":"query","name":"status","required":false,"type":"string"},{"description":"A comma separated list of tags you want to filter with.","in":"query","name":"tag","required":false,"type":"string"},{"description":"Is the datapoint marked as favourite","in":"query","name":"favourite","required":false,"type":"boolean"},{"description":"Field to sort by","in":"query","name":"sortBy","required":false,"type":"string"},{"description":"Direction of sort \"asc\" or \"desc\"","enum":["asc","desc"],"in":"query","name":"sortDirection","required":false,"type":"string"},{"description":"Offset where to start from","format":"int32","in":"query","minLength":0,"name":"offset","required":false,"type":"integer"},{"description":"Limit results to this number","format":"int32","in":"query","maxLength":0,"minLength":0,"name":"limit","required":false,"type":"integer"},{"description":"Filter by this group id","format":"int64","in":"query","name":"groupId","required":false,"type":"integer"},{"description":"Filter fields by this pattern","in":"query","name":"textSearch","required":false,"type":"string"}],"produces":["application/json","text/json"],"responses":{"200":{"description":"","schema":{"$ref":"#/definitions/Api.Core.Dto.Aggregated.AggregatedSummaryResult"}},"401":{"description":"Unauthorized"},"500":{"description":"Internal Server Error"}},"summary":"Retrieve statistics about a subset of datapoints for a timeframe with datapoints data","tags":["Aggregated"]}},"/aggregated/summary/groups":{"get":{"consumes":[],"deprecated":false,"parameters":[{"description":"Timeframe of the request. See list at $timeframeList","enum":["today","yesterday","last7","last30","lastmonth","currentmonth","previousmonth","last90","last120","last180","last12months","lastyear","currentyear","beginning","custom"],"in":"query","name":"timeFrame","required":true,"type":"string"},{"description":"If using a \"custom\" timeFrame you can specify the starting day (YYYYMMDD)","in":"query","name":"fromDay","required":false,"type":"string"},{"description":"If using a \"custom\" timeFrame you can specify the ending day (YYYYMMDD)","in":"query","name":"toDay","required":false,"type":"string"},{"description":"Status of group (\"deleted\"/\"active\")","enum":["deleted","active"],"in":"query","name":"status","required":false,"type":"string"},{"description":"A comma separated list of tags you want to filter with.","in":"query","name":"tag","required":false,"type":"string"},{"description":"Is the group marked as favourite","in":"query","name":"favourite","required":false,"type":"boolean"},{"description":"Field to sort by","in":"query","name":"sortBy","required":false,"type":"string"},{"description":"Direction of sort \"asc\" or \"desc\"","enum":["asc","desc"],"in":"query","name":"sortDirection","required":false,"type":"string"},{"description":"Offset where to start from","format":"int32","in":"query","minLength":0,"name":"offset","required":false,"type":"integer"},{"description":"Limit results to this number","format":"int32","in":"query","maxLength":0,"minLength":0,"name":"limit","required":false,"type":"integer"},{"description":"Filter fields by this pattern","in":"query","name":"textSearch","required":false,"type":"string"}],"produces":["application/json","text/json"],"responses":{"200":{"description":"","schema":{"$ref":"#/definitions/Api.Core.Dto.Aggregated.AggregatedSummaryResult"}},"401":{"description":"Unauthorized"},"500":{"description":"Internal Server Error"}},"summary":"Retrieve statistics about a subset of groups for a timeframe with groups data","tags":["Aggregated"]}},"/clickstream":{"get":{"consumes":[],"deprecated":false,"parameters":[{"description":"Filter by this group id (mutually exclusive with \"datapoint\" and \"conversion\")","format":"int64","in":"query","name":"group","required":false,"type":"integer"},{"description":"Filter by this datapoint id (mutually exclusive with \"group\" and \"conversion\")","format":"int64","in":"query","name":"datapoint","required":false,"type":"integer"},{"description":"Filter by this conversion id (mutually exclusive with \"datapoint\" and \"group\")","format":"int64","in":"query","name":"conversion","required":false,"type":"integer"},{"default":50,"description":"Limit results to this number","format":"int32","in":"query","name":"pageSize","required":false,"type":"integer"},{"description":"Filter event type (\"spiders\"/\"uniques\"/\"nonuniques\"/\"conversions\")","enum":["","spiders","uniques","nonuniques","conversions"],"in":"query","name":"filter","required":false,"type":"string"}],"produces":["application/json","text/json"],"responses":{"200":{"description":"","schema":{"$ref":"#/definitions/Api.Core.Responses.EntitiesResponse[Api.Core.Dto.ClickStream.Hit]"}},"401":{"description":"Unauthorized"},"500":{"description":"Internal Server Error"}},"summary":"Retrieve the latest list of events of this account. Limited to last 100.","tags":["ClickStream"]}},"/conversions":{"get":{"consumes":[],"deprecated":false,"parameters":[{"description":"Offset where to start from","format":"int32","in":"query","minLength":0,"name":"offset","required":false,"type":"integer"},{"description":"Limit results to this number","format":"int32","in":"query","maxLength":0,"minLength":0,"name":"limit","required":false,"type":"integer"},{"description":"Status of conversion (\"deleted\"/\"active\")","enum":["deleted","active"],"in":"query","name":"status","required":false,"type":"string"},{"description":"Filter fields by this pattern","in":"query","name":"textSearch","required":false,"type":"string"},{"description":"Exclude conversions created before this date (YYYYMMDD)","in":"query","name":"createdAfter","required":false,"type":"string"},{"description":"Exclude conversions created after this date (YYYYMMDD)","in":"query","name":"createdBefore","required":false,"type":"string"}],"produces":["application/json","text/json"],"responses":{"200":{"description":"","schema":{"$ref":"#/definitions/Api.Core.Responses.EntitiesResponse[Api.Core.Responses.EntityUri[System.Int64]]"}},"401":{"description":"Unauthorized"},"500":{"description":"Internal Server Error"}},"summary":"Retrieve a list of conversions","tags":["Conversions"]},"post":{"consumes":["application/json","text/json","application/xml","text/xml","application/x-www-form-urlencoded"],"deprecated":false,"parameters":[{"description":"The body of the conversion","in":"body","name":"value","required":true,"schema":{"$ref":"#/definitions/Api.Core.Dto.Conversions.Conversion"}}],"produces":["application/json","text/json","application/xml","text/xml"],"responses":{"200":{"description":"","schema":{"$ref":"#/definitions/Api.Core.Responses.EntityUri[System.Int64]"}},"401":{"description":"Unauthorized"},"404":{"description":"Not found"},"500":{"description":"Internal Server Error"}},"summary":"Create a conversion","tags":["Conversions"]}},"/conversions/aggregated/list":{"get":{"consumes":[],"deprecated":false,"parameters":[{"description":"Timeframe of the request. See list at $timeframeList","enum":["today","yesterday","last7","last30","lastmonth","currentmonth","previousmonth","last90","last120","last180","last12months","lastyear","currentyear","beginning","custom"],"in":"query","name":"timeFrame","required":true,"type":"string"},{"description":"If using a \"custom\" timeFrame you can specify the starting day (YYYYMMDD)","in":"query","name":"fromDay","required":false,"type":"string"},{"description":"If using a \"custom\" timeFrame you can specify the ending day (YYYYMMDD)","in":"query","name":"toDay","required":false,"type":"string"},{"description":"Status of conversion (\"deleted\"/\"active\")","enum":["deleted","active"],"in":"query","name":"status","required":false,"type":"string"},{"description":"The temporal entity you want to group by (\"week\"/\"month\"). If unspecified is \"day\".","enum":["week","month"],"in":"query","name":"groupBy","required":false,"type":"string"}],"produces":["application/json","text/json"],"responses":{"200":{"description":"","schema":{"$ref":"#/definitions/Api.Core.Responses.EntitiesResponse[Api.Core.Dto.Aggregated.AggregatedResult]"}},"401":{"description":"Unauthorized"},"500":{"description":"Internal Server Error"}},"summary":"Retrieve statistics about this customer for a timeframe related to a subset of conversions grouped by some temporal entity (day/week/month)","tags":["Conversions"]}},"/conversions/count":{"get":{"consumes":[],"deprecated":false,"parameters":[{"description":"Status of conversion (\"deleted\"/\"active\")","enum":["deleted","active"],"in":"query","name":"status","required":false,"type":"string"},{"description":"Filter fields by this pattern","in":"query","name":"textSearch","required":false,"type":"string"},{"description":"Exclude conversions created before this date (YYYYMMDD)","in":"query","name":"createdAfter","required":false,"type":"string"},{"description":"Exclude conversions created after this date (YYYYMMDD)","in":"query","name":"createdBefore","required":false,"type":"string"}],"produces":["application/json","text/json","application/xml","text/xml"],"responses":{"200":{"description":"","schema":{"$ref":"#/definitions/Api.Core.Responses.CountResponce"}},"401":{"description":"Unauthorized"},"500":{"description":"Internal Server Error"}},"summary":"Retrieve a count of conversions","tags":["Conversions"]}},"/conversions/{conversionId}":{"delete":{"consumes":[],"deprecated":false,"parameters":[{"description":"Id of the conversion","format":"int64","in":"path","name":"conversionId","required":true,"type":"integer"}],"produces":["application/json","text/json","application/xml","text/xml"],"responses":{"200":{"description":"","schema":{"$ref":"#/definitions/Api.Core.Responses.EntityUri[System.Int64]"}},"401":{"description":"Unauthorized"},"404":{"description":"Not found"},"500":{"description":"Internal Server Error"}},"summary":"Delete conversion specified by id","tags":["Conversions"]},"get":{"consumes":[],"deprecated":false,"parameters":[{"description":"Id of the conversion","format":"int64","in":"path","name":"conversionId","required":true,"type":"integer"}],"produces":["application/json","text/json","application/xml","text/xml"],"responses":{"200":{"description":"","schema":{"$ref":"#/definitions/Api.Core.Dto.Conversions.Conversion"}},"401":{"description":"Unauthorized"},"404":{"description":"Not found"},"500":{"description":"Internal Server Error"}},"summary":"Retrieve conversion specified by id","tags":["Conversions"]},"post":{"consumes":["application/json","text/json","application/xml","text/xml","application/x-www-form-urlencoded"],"deprecated":false,"parameters":[{"description":"Id of the conversion","format":"int64","in":"path","name":"conversionId","required":true,"type":"integer"},{"description":"Updated body of the conversion","in":"body","name":"value","required":true,"schema":{"$ref":"#/definitions/Api.Core.Dto.Conversions.Conversion"}}],"produces":["application/json","text/json","application/xml","text/xml"],"responses":{"200":{"description":"","schema":{"$ref":"#/definitions/Api.Core.Responses.EntityUri[System.Int64]"}},"401":{"description":"Unauthorized"},"404":{"description":"Not found"},"500":{"description":"Internal Server Error"}},"summary":"Update conversion specified by id","tags":["Conversions"]}},"/conversions/{conversionId}/aggregated":{"get":{"consumes":[],"deprecated":false,"parameters":[{"description":"Id of the conversion","format":"int64","in":"path","name":"conversionId","required":true,"type":"integer"},{"description":"Timeframe of the request. See list at $timeframeList","enum":["today","yesterday","last7","last30","lastmonth","currentmonth","previousmonth","last90","last120","last180","last12months","lastyear","currentyear","beginning","custom"],"in":"query","name":"timeFrame","required":true,"type":"string"},{"description":"If using a \"custom\" timeFrame you can specify the starting day (YYYYMMDD)","in":"query","name":"fromDay","required":false,"type":"string"},{"description":"If using a \"custom\" timeFrame you can specify the ending day (YYYYMMDD)","in":"query","name":"toDay","required":false,"type":"string"},{"description":"Filter by this tag name","in":"query","name":"tag","required":false,"type":"string"},{"description":"Is the datapoint marked as favourite","in":"query","name":"favourite","required":false,"type":"boolean"},{"description":"If using \"yesterday\" or \"today\" timeframe you can ask for the hourly detail","in":"query","name":"hourly","required":false,"type":"boolean"}],"produces":["application/json","text/json"],"responses":{"200":{"description":"","schema":{"$ref":"#/definitions/Api.Core.Dto.Aggregated.AggregatedResult"}},"401":{"description":"Unauthorized"},"500":{"description":"Internal Server Error"}},"summary":"Retrieve statistics about this conversion for a timeframe","tags":["Conversions"]}},"/conversions/{conversionId}/aggregated/list":{"get":{"consumes":[],"deprecated":false,"parameters":[{"description":"Id of the conversion","format":"int64","in":"path","name":"conversionId","required":true,"type":"integer"},{"description":"Timeframe of the request. See list at $timeframeList","enum":["today","yesterday","last7","last30","lastmonth","currentmonth","previousmonth","last90","last120","last180","last12months","lastyear","currentyear","beginning","custom"],"in":"query","name":"timeFrame","required":true,"type":"string"},{"description":"If using a \"custom\" timeFrame you can specify the starting day (YYYYMMDD)","in":"query","name":"fromDay","required":false,"type":"string"},{"description":"If using a \"custom\" timeFrame you can specify the ending day (YYYYMMDD)","in":"query","name":"toDay","required":false,"type":"string"},{"description":"The temporal entity you want to group by (\"week\"/\"month\"). If unspecified is \"day\".","enum":["week","month"],"in":"query","name":"groupBy","required":false,"type":"string"}],"produces":["application/json","text/json"],"responses":{"200":{"description":"","schema":{"$ref":"#/definitions/Api.Core.Responses.EntitiesResponse[Api.Core.Dto.Aggregated.AggregatedResult]"}},"401":{"description":"Unauthorized"},"500":{"description":"Internal Server Error"}},"summary":"Retrieve statistics about this conversion for a timeframe grouped by some temporal entity (day/week/month)","tags":["Conversions"]}},"/conversions/{conversionId}/datapoints":{"get":{"consumes":[],"deprecated":false,"parameters":[{"description":"Id of the conversion","format":"int64","in":"path","name":"conversionId","required":true,"type":"integer"},{"description":"Offset where to start from","format":"int32","in":"query","minLength":0,"name":"offset","required":false,"type":"integer"},{"description":"Limit results to this number","format":"int32","in":"query","maxLength":0,"minLength":0,"name":"limit","required":false,"type":"integer"},{"description":"Type of datapoint (\"tl\"/\"tp\")","enum":["tp","tl"],"in":"query","name":"type","required":false,"type":"string"},{"description":"Status of datapoint (\"deleted\"/\"active\"/\"paused\"/\"spam\")","enum":["deleted","active","paused","spam"],"in":"query","name":"status","required":false,"type":"string"},{"description":"Filter by this tag name","in":"query","name":"tags","required":false,"type":"string"},{"description":"Filter fields by this pattern","in":"query","name":"textSearch","required":false,"type":"string"},{"description":"Exclude datapoints created before this date (YYYYMMDD)","in":"query","name":"createdAfter","required":false,"type":"string"},{"description":"Exclude datapoints created after this date (YYYYMMDD)","in":"query","name":"createdBefore","required":false,"type":"string"}],"produces":["application/json","text/json"],"responses":{"200":{"description":"","schema":{"$ref":"#/definitions/Api.Core.Responses.EntitiesResponse[Api.Core.Responses.EntityUri[System.Int64]]"}},"401":{"description":"Unauthorized"},"500":{"description":"Internal Server Error"}},"summary":"Retrieve a list of datapoints connected to this conversion","tags":["Conversions"]}},"/conversions/{conversionId}/datapoints/batch/patch":{"put":{"consumes":["application/json","text/json","application/x-www-form-urlencoded"],"deprecated":false,"parameters":[{"description":"Id of the conversion","format":"int64","in":"path","name":"conversionId","required":true,"type":"integer"},{"description":"Patch requests","in":"body","name":"data","required":true,"schema":{"$ref":"#/definitions/Api.Core.Requests.PatchBodyBatch"}}],"produces":["application/json","text/json","application/xml","text/xml"],"responses":{"200":{"description":"","schema":{"$ref":"#/definitions/Api.Core.Responses.EntityUri[System.Int64]"}},"401":{"description":"Unauthorized"},"404":{"description":"Not found"},"500":{"description":"Internal Server Error"}},"summary":"Modify the association between a conversion and multiple datapoints","tags":["Conversions"]}},"/conversions/{conversionId}/datapoints/count":{"get":{"consumes":[],"deprecated":false,"parameters":[{"description":"Id of the conversion","format":"int64","in":"path","name":"conversionId","required":true,"type":"integer"},{"description":"Type of datapoint (\"tl\"/\"tp\")","in":"query","name":"type","required":false,"type":"string"},{"description":"Status of datapoint (\"deleted\"/\"active\"/\"paused\"/\"spam\")","in":"query","name":"status","required":false,"type":"string"},{"description":"Filter by this tag name","in":"query","name":"tags","required":false,"type":"string"},{"description":"Filter fields by this pattern","in":"query","name":"textSearch","required":false,"type":"string"},{"description":"Exclude datapoints created before this date (YYYYMMDD)","in":"query","name":"createdAfter","required":false,"type":"string"},{"description":"Exclude datapoints created after this date (YYYYMMDD)","in":"query","name":"createdBefore","required":false,"type":"string"}],"produces":["application/json","text/json","application/xml","text/xml"],"responses":{"200":{"description":"","schema":{"$ref":"#/definitions/Api.Core.Responses.CountResponce"}},"401":{"description":"Unauthorized"},"500":{"description":"Internal Server Error"}},"summary":"Retrieve a count of datapoints connected to this conversion","tags":["Conversions"]}},"/conversions/{conversionId}/datapoints/patch":{"put":{"consumes":["application/json","text/json","application/xml","text/xml","application/x-www-form-urlencoded"],"deprecated":false,"parameters":[{"description":"Id of the conversion","format":"int64","in":"path","name":"conversionId","required":true,"type":"integer"},{"description":"Patch request","in":"body","name":"data","required":true,"schema":{"$ref":"#/definitions/Api.Core.Requests.ConversionPatchBody"}}],"produces":["application/json","text/json","application/xml","text/xml"],"responses":{"200":{"description":"","schema":{"$ref":"#/definitions/Api.Core.Responses.EntityUri[System.Int64]"}},"401":{"description":"Unauthorized"},"404":{"description":"Not found"},"500":{"description":"Internal Server Error"}},"summary":"Modify the association between a conversion and a datapoint","tags":["Conversions"]}},"/conversions/{conversionId}/hits":{"get":{"consumes":[],"deprecated":false,"parameters":[{"description":"Id of the conversion","format":"int64","in":"path","name":"conversionId","required":true,"type":"integer"},{"description":"Timeframe of the request. See list at $timeframeList","enum":["yesterday","last7","last30","lastmonth","currentmonth","previousmonth","last90","last120","last180","custom"],"in":"query","name":"timeframe","required":true,"type":"string"},{"description":"Limit results to this number","format":"int32","in":"query","maxLength":0,"minLength":0,"name":"limit","required":false,"type":"integer"},{"description":"Offset where to start from (it's the lastKey field in the response object)","in":"query","name":"offset","required":false,"type":"string"},{"description":"If using a \"custom\" timeFrame you can specify the starting day (YYYYMMDD)","in":"query","name":"fromDay","required":false,"type":"string"},{"description":"If using a \"custom\" timeFrame you can specify the ending day (YYYYMMDD)","in":"query","name":"toDay","required":false,"type":"string"},{"description":"Filter event type (\"spiders\"/\"uniques\"/\"nonuniques\"/\"conversions\")","enum":["spiders","uniques","nonuniques","conversions"],"in":"query","name":"filter","required":false,"type":"string"}],"produces":["application/json","text/json"],"responses":{"200":{"description":"","schema":{"$ref":"#/definitions/Api.Core.Dto.ClickStream.HitListPage"}},"401":{"description":"Unauthorized"},"500":{"description":"Internal Server Error"}},"summary":"Retrieve the list of events related to this conversion.","tags":["Conversions"]}},"/conversions/{conversionId}/notes":{"put":{"consumes":["application/json","text/json","application/xml","text/xml","application/x-www-form-urlencoded"],"deprecated":false,"parameters":[{"description":"Id of the conversion","format":"int64","in":"path","name":"conversionId","required":true,"type":"integer"},{"description":"Patch requests","in":"body","name":"note","required":true,"schema":{"$ref":"#/definitions/Api.Core.Requests.GenericTextPatch"}}],"produces":["application/json","text/json","application/xml","text/xml"],"responses":{"200":{"description":"","schema":{"$ref":"#/definitions/Api.Core.Responses.EntityUri[System.Int64]"}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"500":{"description":"Internal Server Error"}},"summary":"Fast patch the \"notes\" field of a conversion","tags":["Conversions"]}},"/conversions/{conversionId}/reports":{"get":{"consumes":[],"deprecated":false,"parameters":[{"description":"Id of the conversion","format":"int64","in":"path","name":"conversionId","required":true,"type":"integer"},{"description":"Type of the report.","enum":["datapoints","groups","browsers","browsersfamilies","platforms","cities","countries","keywords","referrers","convparameters","destinations","languages","params"],"in":"query","name":"type","required":true,"type":"string"},{"description":"Timeframe of the request. See list at $timeframeList","enum":["yesterday","last7","last30","lastmonth","currentmonth","previousmonth","last90","last120","last180","beginning","custom"],"in":"query","name":"timeframe","required":true,"type":"string"},{"description":"Type of the event you want to filter this report with. By default no filter is applied.","enum":["clicks","views"],"in":"query","name":"hittype","required":false,"type":"string"},{"description":"If using a \"custom\" timeFrame you can specify the starting day (YYYYMMDD)","in":"query","name":"fromDay","required":false,"type":"string"},{"description":"If using a \"custom\" timeFrame you can specify the ending day (YYYYMMDD)","in":"query","name":"toDay","required":false,"type":"string"}],"produces":["application/json","text/json"],"responses":{"200":{"description":"","schema":{"$ref":"#/definitions/Api.Core.Dto.Tops.Top"}},"401":{"description":"Forbidden"},"404":{"description":"Not found"},"500":{"description":"Internal Server Error"}},"summary":"Retrieve a top report connected to this conversion","tags":["Conversions"]}},"/datapoints":{"get":{"consumes":[],"deprecated":false,"parameters":[{"default":0,"description":"Where to start when retrieving elements. Default is 0 if not specified.","format":"int32","in":"query","minLength":0,"name":"offset","required":false,"type":"integer"},{"default":20,"description":"Maximum elements to retrieve. Default to 20 if not specified.","format":"int32","in":"query","maxLength":0,"minLength":0,"name":"limit","required":false,"type":"integer"},{"description":"Type of the datapoint (\"tp\"/\"tl\")","enum":["tp","tl"],"in":"query","name":"type","required":false,"type":"string"},{"description":"Status of the datapoint","enum":["deleted","active","paused","spam"],"in":"query","name":"status","required":false,"type":"string"},{"description":"A comma separated list of tags you want to filter with.","in":"query","name":"tags","required":false,"type":"string"},{"description":"Filter fields by this pattern","in":"query","name":"textSearch","required":false,"type":"string"},{"description":"Filter fields by favourite status","in":"query","name":"onlyFavorites","required":false,"type":"boolean"},{"description":"Field to sort by","in":"query","name":"sortBy","required":false,"type":"string"},{"description":"Direction of sort \"asc\" or \"desc\"","enum":["asc","desc"],"in":"query","name":"sortDirection","required":false,"type":"string"},{"description":"Exclude datapoints created before this date (YYYYMMDD)","in":"query","name":"createdAfter","required":false,"type":"string"},{"description":"Exclude datapoints created after this date (YYYYMMDD)","in":"query","name":"createdBefore","required":false,"type":"string"}],"produces":["application/json","text/json"],"responses":{"200":{"description":"","schema":{"$ref":"#/definitions/Api.Core.Responses.EntitiesResponse[Api.Core.Responses.EntityUri[System.Int64]]"}},"401":{"description":"Unauthorized"},"404":{"description":"Not found"},"500":{"description":"Internal Server Error"}},"summary":"List of all the datapoints associated to the user","tags":["DataPoints"]},"post":{"consumes":["application/json","text/json","application/x-www-form-urlencoded"],"deprecated":false,"parameters":[{"description":"The body of the datapoint","in":"body","name":"value","required":true,"schema":{"$ref":"#/definitions/Api.Core.Dto.Datapoints.Datapoint"}}],"produces":["application/json","text/json","application/xml","text/xml"],"responses":{"200":{"description":"","schema":{"$ref":"#/definitions/Api.Core.Responses.EntityUri[System.Int64]"}},"401":{"description":"Unauthorized"},"404":{"description":"Not found"},"500":{"description":"Internal Server Error"}},"summary":"Create a datapoint","tags":["DataPoints"]}},"/datapoints/aggregated":{"get":{"consumes":[],"deprecated":false,"parameters":[{"description":"Timeframe of the request. See list at $timeframeList","enum":["today","yesterday","last7","last30","lastmonth","currentmonth","previousmonth","last90","last120","last180","last12months","lastyear","currentyear","beginning","custom"],"in":"query","name":"timeFrame","required":true,"type":"string"},{"description":"Type of datapoint (\"tl\"/\"tp\")","enum":["tp","tl"],"in":"query","name":"type","required":false,"type":"string"},{"description":"If using a \"custom\" timeFrame you can specify the starting day (YYYYMMDD)","in":"query","name":"fromDay","required":false,"type":"string"},{"description":"If using a \"custom\" timeFrame you can specify the ending day (YYYYMMDD)","in":"query","name":"toDay","required":false,"type":"string"},{"description":"If using \"yesterday\" or \"today\" timeframe you can ask for the hourly detail","in":"query","name":"hourly","required":false,"type":"boolean"},{"description":"Status of datapoint (\"deleted\"/\"active\"/\"paused\"/\"spam\")","enum":["deleted","active","paused","spam"],"in":"query","name":"status","required":false,"type":"string"},{"description":"A comma separated list of tags you want to filter with.","in":"query","name":"tag","required":false,"type":"string"},{"description":"Is the datapoint is marked as favourite","in":"query","name":"favourite","required":false,"type":"boolean"}],"produces":["application/json","text/json"],"responses":{"200":{"description":"","schema":{"$ref":"#/definitions/Api.Core.Dto.Aggregated.AggregatedResult"}},"401":{"description":"Unauthorized"},"500":{"description":"Internal Server Error"}},"summary":"Retrieve statistics about this customer for a timeframe by groups","tags":["DataPoints"]}},"/datapoints/aggregated/list":{"get":{"consumes":[],"deprecated":false,"parameters":[{"description":"Type of datapoint (\"tl\"/\"tp\")","enum":["tp","tl"],"in":"query","name":"type","required":true,"type":"string"},{"description":"Timeframe of the request. See list at $timeframeList","enum":["today","yesterday","last7","last30","lastmonth","currentmonth","previousmonth","last90","last120","last180","last12months","lastyear","currentyear","beginning","custom"],"in":"query","name":"timeFrame","required":true,"type":"string"},{"description":"If using a \"custom\" timeFrame you can specify the starting day (YYYYMMDD)","in":"query","name":"fromDay","required":false,"type":"string"},{"description":"If using a \"custom\" timeFrame you can specify the ending day (YYYYMMDD)","in":"query","name":"toDay","required":false,"type":"string"},{"description":"Status of datapoint (\"deleted\"/\"active\"/\"paused\"/\"spam\")","enum":["deleted","active","paused","spam"],"in":"query","name":"status","required":false,"type":"string"},{"description":"A comma separated list of tags you want to filter with.","in":"query","name":"tag","required":false,"type":"string"},{"description":"Is the datapoint is marked as favourite","in":"query","name":"favourite","required":false,"type":"boolean"},{"description":"The temporal entity you want to group by (\"week\"/\"month\"). If unspecified is \"day\".","enum":["week","month"],"in":"query","name":"groupBy","required":false,"type":"string"}],"produces":["application/json","text/json"],"responses":{"200":{"description":"","schema":{"$ref":"#/definitions/Api.Core.Responses.EntitiesResponse[Api.Core.Dto.Aggregated.AggregatedResult]"}},"401":{"description":"Unauthorized"},"500":{"description":"Internal Server Error"}},"summary":"Retrieve statistics about all datapoints of this customer for a timeframe grouped by some temporal entity (day/week/month)","tags":["DataPoints"]}},"/datapoints/batch":{"delete":{"consumes":["application/json","text/json","application/x-www-form-urlencoded"],"deprecated":false,"parameters":[{"description":"A json containing the datapoints to delete.","in":"body","name":"batch","required":true,"schema":{"$ref":"#/definitions/Api.Core.Requests.DeleteBatch"}}],"produces":["application/json","text/json"],"responses":{"200":{"description":"","schema":{"$ref":"#/definitions/Api.Core.Responses.ModifyBatchItemResponce[Api.Core.Dto.Datapoints.Datapoint,System.Int64]"}},"401":{"description":"Unauthorized"},"404":{"description":"Not found"},"500":{"description":"Internal Server Error"}},"summary":"Delete multiple datapoints","tags":["DataPoints"]},"post":{"consumes":["application/json","text/json","application/x-www-form-urlencoded"],"deprecated":false,"parameters":[{"description":"A json containing the datapoints to update.","in":"body","name":"batch","required":true,"schema":{"$ref":"#/definitions/Api.Core.Requests.DatapointsBatch"}}],"produces":["application/json","text/json"],"responses":{"200":{"description":"","schema":{"$ref":"#/definitions/Api.Core.Responses.ModifyBatchItemResponce[Api.Core.Dto.Datapoints.Datapoint,System.Int64]"}},"401":{"description":"Unauthorized"},"404":{"description":"Not found"},"500":{"description":"Internal Server Error"}},"summary":"Update multiple datapoints","tags":["DataPoints"]},"put":{"consumes":["application/json","text/json","application/x-www-form-urlencoded"],"deprecated":false,"parameters":[{"description":"A json containing the datapoints to create.","in":"body","name":"batch","required":true,"schema":{"$ref":"#/definitions/Api.Core.Requests.DatapointsBatch"}}],"produces":["application/json","text/json"],"responses":{"200":{"description":"","schema":{"$ref":"#/definitions/Api.Core.Responses.ModifyBatchItemResponce[Api.Core.Dto.Datapoints.Datapoint,System.Int64]"}},"401":{"description":"Unauthorized"},"404":{"description":"Not found"},"500":{"description":"Internal Server Error"}},"summary":"Create multiple datapoints","tags":["DataPoints"]}},"/datapoints/count":{"get":{"consumes":[],"deprecated":false,"parameters":[{"description":"Type of the datapoint (\"tp\"/\"tl\")","enum":["tp","tl"],"in":"query","name":"type","required":false,"type":"string"},{"description":"Status of the datapoint","enum":["deleted","active","paused","spam"],"in":"query","name":"status","required":false,"type":"string"},{"description":"A comma separated list of tags you want to filter with.","in":"query","name":"tags","required":false,"type":"string"},{"description":"Filter fields by this pattern","in":"query","name":"textSearch","required":false,"type":"string"},{"description":"Filter fields by favourite status","in":"query","name":"onlyFavorites","required":false,"type":"boolean"},{"description":"Exclude datapoints created before this date (YYYYMMDD)","in":"query","name":"createdAfter","required":false,"type":"string"},{"description":"Exclude datapoints created after this date (YYYYMMDD)","in":"query","name":"createdBefore","required":false,"type":"string"}],"produces":["application/json","text/json","application/xml","text/xml"],"responses":{"200":{"description":"","schema":{"$ref":"#/definitions/Api.Core.Responses.CountResponce"}},"401":{"description":"Unauthorized"},"404":{"description":"Not found"},"500":{"description":"Internal Server Error"}},"summary":"Count the datapoints associated to the user","tags":["DataPoints"]}},"/datapoints/{id}":{"delete":{"consumes":[],"deprecated":false,"parameters":[{"description":"The id of the datapoint","format":"int64","in":"path","name":"id","required":true,"type":"integer"}],"produces":["application/json","text/json","application/xml","text/xml"],"responses":{"200":{"description":"","schema":{"$ref":"#/definitions/Api.Core.Responses.EntityUri[System.Int64]"}},"401":{"description":"Unauthorized"},"404":{"description":"Not found"},"500":{"description":"Internal Server Error"}},"summary":"Delete a datapoint","tags":["DataPoints"]},"get":{"consumes":[],"deprecated":false,"parameters":[{"description":"The id of the datapoint","format":"int64","in":"path","name":"id","required":true,"type":"integer"}],"produces":["application/json","text/json"],"responses":{"200":{"description":"","schema":{"$ref":"#/definitions/Api.Core.Dto.Datapoints.Datapoint"}},"401":{"description":"Unauthorized"},"404":{"description":"Not found"},"500":{"description":"Internal Server Error"}},"summary":"Get a datapoint","tags":["DataPoints"]},"post":{"consumes":["application/json","text/json","application/x-www-form-urlencoded"],"deprecated":false,"parameters":[{"description":"The id of the datapoint","format":"int64","in":"path","name":"id","required":true,"type":"integer"},{"description":"The body of the datapoint","in":"body","name":"value","required":true,"schema":{"$ref":"#/definitions/Api.Core.Dto.Datapoints.Datapoint"}}],"produces":["application/json","text/json","application/xml","text/xml"],"responses":{"200":{"description":"","schema":{"$ref":"#/definitions/Api.Core.Responses.EntityUri[System.Int64]"}},"401":{"description":"Unauthorized"},"404":{"description":"Not found"},"500":{"description":"Internal Server Error"}},"summary":"Update a datapoint","tags":["DataPoints"]}},"/datapoints/{id}/aggregated":{"get":{"consumes":[],"deprecated":false,"parameters":[{"description":"Id of the datapoint","format":"int64","in":"path","name":"id","required":true,"type":"integer"},{"description":"Timeframe of the request. See list at $timeframeList","enum":["today","yesterday","last7","last30","lastmonth","currentmonth","previousmonth","last90","last120","last180","last12months","lastyear","currentyear","beginning","custom"],"in":"query","name":"timeFrame","required":true,"type":"string"},{"description":"If using a \"custom\" timeFrame you can specify the starting day (YYYYMMDD)","in":"query","name":"fromDay","required":false,"type":"string"},{"description":"If using a \"custom\" timeFrame you can specify the ending day (YYYYMMDD)","in":"query","name":"toDay","required":false,"type":"string"},{"description":"If using \"yesterday\" or \"today\" timeframe you can ask for the hourly detail","in":"query","name":"hourly","required":false,"type":"boolean"}],"produces":["application/json","text/json"],"responses":{"200":{"description":"","schema":{"$ref":"#/definitions/Api.Core.Dto.Aggregated.AggregatedResult"}},"401":{"description":"Unauthorized"},"500":{"description":"Internal Server Error"}},"summary":"Retrieve statistics about this datapoint for a timeframe","tags":["DataPoints"]}},"/datapoints/{id}/aggregated/list":{"get":{"consumes":[],"deprecated":false,"parameters":[{"description":"Id of the datapoint","format":"int64","in":"path","name":"id","required":true,"type":"integer"},{"description":"Timeframe of the request. See list at $timeframeList","enum":["today","yesterday","last7","last30","lastmonth","currentmonth","previousmonth","last90","last120","last180","last12months","lastyear","currentyear","beginning","custom"],"in":"query","name":"timeFrame","required":true,"type":"string"},{"description":"If using a \"custom\" timeFrame you can specify the starting day (YYYYMMDD)","in":"query","name":"fromDay","required":false,"type":"string"},{"description":"If using a \"custom\" timeFrame you can specify the ending day (YYYYMMDD)","in":"query","name":"toDay","required":false,"type":"string"},{"description":"The temporal entity you want to group by (\"week\"/\"month\"). If unspecified is \"day\".","enum":["week","month"],"in":"query","name":"groupBy","required":false,"type":"string"}],"produces":["application/json","text/json"],"responses":{"200":{"description":"","schema":{"$ref":"#/definitions/Api.Core.Responses.EntitiesResponse[Api.Core.Dto.Aggregated.AggregatedResult]"}},"401":{"description":"Unauthorized"},"500":{"description":"Internal Server Error"}},"summary":"Retrieve statistics about this datapoint for a timeframe grouped by some temporal entity (day/week/month)","tags":["DataPoints"]}},"/datapoints/{id}/favourite":{"put":{"consumes":[],"deprecated":false,"parameters":[{"description":"Id of the datapoint","format":"int64","in":"path","name":"id","required":true,"type":"integer"}],"produces":["application/json","text/json","application/xml","text/xml"],"responses":{"200":{"description":"","schema":{"$ref":"#/definitions/Api.Core.Responses.EntityUri[System.Int64]"}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"500":{"description":"Internal Server Error"}},"summary":"Fast switch the \"favourite\" field of a datapoint","tags":["DataPoints"]}},"/datapoints/{id}/hits":{"get":{"consumes":[],"deprecated":false,"parameters":[{"description":"Id of the datapoint","format":"int64","in":"path","name":"id","required":true,"type":"integer"},{"description":"Timeframe of the request. See list at $timeframeList","enum":["yesterday","last7","last30","lastmonth","currentmonth","previousmonth","last90","last120","last180","custom"],"in":"query","name":"timeframe","required":true,"type":"string"},{"description":"Limit results to this number","format":"int32","in":"query","maxLength":0,"minLength":0,"name":"limit","required":false,"type":"integer"},{"description":"Offset where to start from (it's the lastKey field in the response object)","in":"query","name":"offset","required":false,"type":"string"},{"description":"If using a \"custom\" timeFrame you can specify the starting day (YYYYMMDD)","in":"query","name":"fromDay","required":false,"type":"string"},{"description":"If using a \"custom\" timeFrame you can specify the ending day (YYYYMMDD)","in":"query","name":"toDay","required":false,"type":"string"},{"description":"Filter event type (\"spiders\"/\"uniques\"/\"nonuniques\"/\"conversions\")","enum":["spiders","uniques","nonuniques","conversions"],"in":"query","name":"filter","required":false,"type":"string"}],"produces":["application/json","text/json"],"responses":{"200":{"description":"","schema":{"$ref":"#/definitions/Api.Core.Dto.ClickStream.HitListPage"}},"401":{"description":"Unauthorized"},"500":{"description":"Internal Server Error"}},"summary":"Retrieve the list of events related to this datapoint.","tags":["DataPoints"]}},"/datapoints/{id}/notes":{"put":{"consumes":["application/json","text/json","application/xml","text/xml","application/x-www-form-urlencoded"],"deprecated":false,"parameters":[{"description":"Id of the datapoint","format":"int64","in":"path","name":"id","required":true,"type":"integer"},{"description":"Patch requests","in":"body","name":"note","required":true,"schema":{"$ref":"#/definitions/Api.Core.Requests.GenericTextPatch"}}],"produces":["application/json","text/json","application/xml","text/xml"],"responses":{"200":{"description":"","schema":{"$ref":"#/definitions/Api.Core.Responses.EntityUri[System.Int64]"}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"500":{"description":"Internal Server Error"}},"summary":"Fast patch the \"notes\" field of a datapoint","tags":["DataPoints"]}},"/datapoints/{id}/reports":{"get":{"consumes":[],"deprecated":false,"parameters":[{"description":"Id of the datapoint","format":"int64","in":"path","name":"id","required":true,"type":"integer"},{"description":"Type of the report.","enum":["browsers","browsersfamilies","platforms","cities","countries","isps","ips","oss","ossfamilies","keywords","referrers","destinations","languages","params"],"in":"query","name":"type","required":true,"type":"string"},{"description":"Timeframe of the request. See list at $timeframeList","enum":["yesterday","last7","last30","lastmonth","currentmonth","previousmonth","last90","last120","last180","beginning","custom"],"in":"query","name":"timeframe","required":true,"type":"string"},{"description":"If using a \"custom\" timeFrame you can specify the starting day (YYYYMMDD)","in":"query","name":"fromDay","required":false,"type":"string"},{"description":"If using a \"custom\" timeFrame you can specify the ending day (YYYYMMDD)","in":"query","name":"toDay","required":false,"type":"string"}],"produces":["application/json","text/json"],"responses":{"200":{"description":"","schema":{"$ref":"#/definitions/Api.Core.Dto.Tops.Top"}},"401":{"description":"Forbidden"},"404":{"description":"Not found"},"500":{"description":"Internal Server Error"}},"summary":"Retrieve a top report connected to this datapoint","tags":["DataPoints"]}},"/domains":{"get":{"consumes":[],"deprecated":false,"parameters":[{"description":"Offset where to start from","format":"int32","in":"query","minLength":0,"name":"offset","required":false,"type":"integer"},{"description":"Limit results to this number","format":"int32","in":"query","maxLength":0,"minLength":0,"name":"limit","required":false,"type":"integer"},{"default":"system","description":"Type of domain (\"system\"/\"go\"/\"personal\"/\"dedicated\"). If not specified default is \"system\"","enum":["system","go","personal","dedicated"],"in":"query","name":"type","required":false,"type":"string"},{"description":"Filter domains with this anmen","in":"query","name":"name","required":false,"type":"string"}],"produces":["application/json","text/json"],"responses":{"200":{"description":"","schema":{"$ref":"#/definitions/Api.Core.Responses.EntitiesResponse[Api.Core.Responses.EntityUri[System.Int64]]"}},"401":{"description":"Unauthorized"},"500":{"description":"Internal Server Error"}},"summary":"Retrieve a list of domains","tags":["Domains"]},"post":{"consumes":["application/json","text/json","application/xml","text/xml","application/x-www-form-urlencoded"],"deprecated":false,"parameters":[{"description":"The domain to create","in":"body","name":"value","required":true,"schema":{"$ref":"#/definitions/Api.Core.Dto.Domains.Domain"}}],"produces":["application/json","text/json","application/xml","text/xml"],"responses":{"200":{"description":"","schema":{"$ref":"#/definitions/Api.Core.Responses.EntityUri[System.Int64]"}},"401":{"description":"Unauthorized"},"500":{"description":"Internal Server Error"}},"summary":"Create a domain","tags":["Domains"]}},"/domains/count":{"get":{"consumes":[],"deprecated":false,"parameters":[{"default":"system","description":"Type of domain (\"system\"/\"go\"/\"personal\"/\"dedicated\"). If not specified default is \"system\"","enum":["system","go","personal","dedicated"],"in":"query","name":"type","required":false,"type":"string"},{"description":"Filter domains with this anmen","in":"query","name":"name","required":false,"type":"string"}],"produces":["application/json","text/json","application/xml","text/xml"],"responses":{"200":{"description":"","schema":{"$ref":"#/definitions/Api.Core.Responses.CountResponce"}},"401":{"description":"Unauthorized"},"500":{"description":"Internal Server Error"}},"summary":"Retrieve count of domains","tags":["Domains"]}},"/domains/{id}":{"delete":{"consumes":[],"deprecated":false,"parameters":[{"description":"Id of domain","format":"int64","in":"path","name":"id","required":true,"type":"integer"}],"produces":["application/json","text/json","application/xml","text/xml"],"responses":{"200":{"description":"","schema":{"$ref":"#/definitions/Api.Core.Responses.EntityUri[System.Int64]"}},"401":{"description":"Unauthorized"},"500":{"description":"Internal Server Error"}},"summary":"Delete a domain","tags":["Domains"]},"get":{"consumes":[],"deprecated":false,"parameters":[{"description":"Id of domain","format":"int64","in":"path","name":"id","required":true,"type":"integer"}],"produces":["application/json","text/json","application/xml","text/xml"],"responses":{"200":{"description":"","schema":{"$ref":"#/definitions/Api.Core.Dto.Domains.Domain"}},"401":{"description":"Unauthorized"},"500":{"description":"Internal Server Error"}},"summary":"Get a domain","tags":["Domains"]},"post":{"consumes":["application/json","text/json","application/xml","text/xml","application/x-www-form-urlencoded"],"deprecated":false,"parameters":[{"description":"Id of domain","format":"int64","in":"path","name":"id","required":true,"type":"integer"},{"description":"The domain to update","in":"body","name":"value","required":true,"schema":{"$ref":"#/definitions/Api.Core.Dto.Domains.Domain"}}],"produces":["application/json","text/json","application/xml","text/xml"],"responses":{"200":{"description":"","schema":{"$ref":"#/definitions/Api.Core.Responses.EntityUri[System.Int64]"}},"401":{"description":"Unauthorized"},"500":{"description":"Internal Server Error"}},"summary":"Update a domain","tags":["Domains"]}},"/groups":{"get":{"consumes":[],"deprecated":false,"parameters":[{"default":0,"description":"Where to start when retrieving elements. Default is 0 if not specified.","format":"int32","in":"query","minLength":0,"name":"offset","required":false,"type":"integer"},{"default":20,"description":"Maximum elements to retrieve. Default to 20 if not specified.","format":"int32","in":"query","maxLength":0,"minLength":0,"name":"limit","required":false,"type":"integer"},{"description":"Status of the group","enum":["deleted","active"],"in":"query","name":"status","required":false,"type":"string"},{"description":"A comma separated list of tags you want to filter with.","in":"query","name":"tags","required":false,"type":"string"},{"description":"Filter fields by this pattern","in":"query","name":"textSearch","required":false,"type":"string"},{"description":"Exclude groups created before this date (YYYYMMDD)","in":"query","name":"createdAfter","required":false,"type":"string"},{"description":"Exclude groups created after this date (YYYYMMDD)","in":"query","name":"createdBefore","required":false,"type":"string"},{"description":"Write permission","in":"query","name":"write","required":false,"type":"boolean"}],"produces":["application/json","text/json"],"responses":{"200":{"description":"","schema":{"$ref":"#/definitions/Api.Core.Responses.EntitiesResponse[Api.Core.Responses.EntityUri[System.Int64]]"}},"401":{"description":"Unauthorized"},"404":{"description":"Not found"},"500":{"description":"Internal Server Error"}},"summary":"List of all the groups associated to the user.","tags":["Groups"]},"post":{"consumes":["application/json","text/json","application/x-www-form-urlencoded"],"deprecated":false,"parameters":[{"description":"The body of the group","in":"body","name":"value","required":true,"schema":{"$ref":"#/definitions/Api.Core.Dto.Groups.Group"}}],"produces":["application/json","text/json","application/xml","text/xml"],"responses":{"200":{"description":"","schema":{"$ref":"#/definitions/Api.Core.Responses.EntityUri[System.Int64]"}},"401":{"description":"Unauthorized"},"404":{"description":"Not found"},"500":{"description":"Internal Server Error"}},"summary":"Create a group","tags":["Groups"]}},"/groups/aggregated":{"get":{"consumes":[],"deprecated":false,"parameters":[{"description":"Timeframe of the request. See list at $timeframeList","enum":["today","yesterday","last7","last30","lastmonth","currentmonth","previousmonth","last90","last120","last180","last12months","lastyear","currentyear","beginning","custom"],"in":"query","name":"timeFrame","required":true,"type":"string"},{"description":"If using a \"custom\" timeFrame you can specify the starting day (YYYYMMDD)","in":"query","name":"fromDay","required":false,"type":"string"},{"description":"If using a \"custom\" timeFrame you can specify the ending day (YYYYMMDD)","in":"query","name":"toDay","required":false,"type":"string"},{"description":"If using \"yesterday\" or \"today\" timeframe you can ask for the hourly detail","in":"query","name":"hourly","required":false,"type":"boolean"},{"description":"Status of group (\"deleted\"/\"active\")","enum":["deleted","active"],"in":"query","name":"status","required":false,"type":"string"},{"description":"A comma separated list of tags you want to filter with.","in":"query","name":"tag","required":false,"type":"string"},{"description":"Is the group is marked as favourite","in":"query","name":"favourite","required":false,"type":"boolean"}],"produces":["application/json","text/json"],"responses":{"200":{"description":"","schema":{"$ref":"#/definitions/Api.Core.Dto.Aggregated.AggregatedResult"}},"401":{"description":"Unauthorized"},"500":{"description":"Internal Server Error"}},"summary":"Retrieve statistics about this customer for a timeframe by groups","tags":["Groups"]}},"/groups/aggregated/list":{"get":{"consumes":[],"deprecated":false,"parameters":[{"description":"Timeframe of the request. See list at $timeframeList","enum":["today","yesterday","last7","last30","lastmonth","currentmonth","previousmonth","last90","last120","last180","last12months","lastyear","currentyear","beginning","custom"],"in":"query","name":"timeFrame","required":true,"type":"string"},{"description":"If using a \"custom\" timeFrame you can specify the starting day (YYYYMMDD)","in":"query","name":"fromDay","required":false,"type":"string"},{"description":"If using a \"custom\" timeFrame you can specify the ending day (YYYYMMDD)","in":"query","name":"toDay","required":false,"type":"string"},{"description":"Status of group (\"deleted\"/\"active\")","in":"query","name":"status","required":false,"type":"string"},{"description":"A comma separated list of tags you want to filter with.","in":"query","name":"tag","required":false,"type":"string"},{"description":"Is the group is marked as favourite","in":"query","name":"favourite","required":false,"type":"boolean"},{"description":"The temporal entity you want to group by (\"week\"/\"month\"). If unspecified is \"day\".","enum":["deleted","active"],"in":"query","name":"groupBy","required":false,"type":"string"}],"produces":["application/json","text/json"],"responses":{"200":{"description":"","schema":{"$ref":"#/definitions/Api.Core.Responses.EntitiesResponse[Api.Core.Dto.Aggregated.AggregatedResult]"}},"401":{"description":"Unauthorized"},"500":{"description":"Internal Server Error"}},"summary":"Retrieve statistics about all groups of this customer for a timeframe grouped by some temporal entity (day/week/month)","tags":["Groups"]}},"/groups/count":{"get":{"consumes":[],"deprecated":false,"parameters":[{"description":"Status of the datapoint","enum":["deleted","active"],"in":"query","name":"status","required":false,"type":"string"},{"description":"A comma separated list of tags you want to filter with.","in":"query","name":"tags","required":false,"type":"string"},{"description":"Filter fields by this pattern","in":"query","name":"textSearch","required":false,"type":"string"},{"description":"Exclude groups created before this date (YYYYMMDD)","in":"query","name":"createdAfter","required":false,"type":"string"},{"description":"Exclude groups created after this date (YYYYMMDD)","in":"query","name":"createdBefore","required":false,"type":"string"},{"description":"Write permission","in":"query","name":"write","required":false,"type":"boolean"}],"produces":["application/json","text/json","application/xml","text/xml"],"responses":{"200":{"description":"","schema":{"$ref":"#/definitions/Api.Core.Responses.CountResponce"}},"401":{"description":"Unauthorized"},"404":{"description":"Not found"},"500":{"description":"Internal Server Error"}},"summary":"Count the groups associated to the user.","tags":["Groups"]}},"/groups/{id}":{"delete":{"consumes":[],"deprecated":false,"parameters":[{"description":"Id of the group","format":"int64","in":"path","name":"id","required":true,"type":"integer"}],"produces":["application/json","text/json","application/xml","text/xml"],"responses":{"200":{"description":"","schema":{"$ref":"#/definitions/Api.Core.Responses.EntityUri[System.Int64]"}},"401":{"description":"Unauthorized"},"404":{"description":"Not found"},"500":{"description":"Internal Server Error"}},"summary":"Delete group specified by id","tags":["Groups"]},"get":{"consumes":[],"deprecated":false,"parameters":[{"description":"The id of the group","format":"int64","in":"path","name":"id","required":true,"type":"integer"}],"produces":["application/json","text/json"],"responses":{"200":{"description":"","schema":{"$ref":"#/definitions/Api.Core.Dto.Groups.Group"}},"401":{"description":"Unauthorized"},"404":{"description":"Not found"},"500":{"description":"Internal Server Error"}},"summary":"Get a group","tags":["Groups"]},"post":{"consumes":["application/json","text/json","application/x-www-form-urlencoded"],"deprecated":false,"parameters":[{"description":"The id of the group","format":"int64","in":"path","name":"id","required":true,"type":"integer"},{"description":"The body of the group","in":"body","name":"value","required":true,"schema":{"$ref":"#/definitions/Api.Core.Dto.Groups.Group"}}],"produces":["application/json","text/json","application/xml","text/xml"],"responses":{"200":{"description":"","schema":{"$ref":"#/definitions/Api.Core.Responses.EntityUri[System.Int64]"}},"401":{"description":"Unauthorized"},"404":{"description":"Not found"},"500":{"description":"Internal Server Error"}},"summary":"Update a group","tags":["Groups"]}},"/groups/{id}/aggregated":{"get":{"consumes":[],"deprecated":false,"parameters":[{"description":"Id of the group","format":"int64","in":"path","name":"id","required":true,"type":"integer"},{"description":"Timeframe of the request. See list at $timeframeList","enum":["today","yesterday","last7","last30","lastmonth","currentmonth","previousmonth","last90","last120","last180","last12months","lastyear","currentyear","beginning","custom"],"in":"query","name":"timeFrame","required":true,"type":"string"},{"description":"If using a \"custom\" timeFrame you can specify the starting day (YYYYMMDD)","in":"query","name":"fromDay","required":false,"type":"string"},{"description":"If using a \"custom\" timeFrame you can specify the ending day (YYYYMMDD)","in":"query","name":"toDay","required":false,"type":"string"},{"description":"If using \"yesterday\" or \"today\" timeframe you can ask for the hourly detail","in":"query","name":"hourly","required":false,"type":"boolean"}],"produces":["application/json","text/json"],"responses":{"200":{"description":"","schema":{"$ref":"#/definitions/Api.Core.Dto.Aggregated.AggregatedResult"}},"401":{"description":"Unauthorized"},"500":{"description":"Internal Server Error"}},"summary":"Retrieve statistics about this group for a timeframe","tags":["Groups"]}},"/groups/{id}/aggregated/list":{"get":{"consumes":[],"deprecated":false,"parameters":[{"description":"Id of the group","format":"int64","in":"path","name":"id","required":true,"type":"integer"},{"description":"Timeframe of the request. See list at $timeframeList","enum":["today","yesterday","last7","last30","lastmonth","currentmonth","previousmonth","last90","last120","last180","last12months","lastyear","currentyear","beginning","custom"],"in":"query","name":"timeFrame","required":true,"type":"string"},{"description":"If using a \"custom\" timeFrame you can specify the starting day (YYYYMMDD)","in":"query","name":"fromDay","required":false,"type":"string"},{"description":"If using a \"custom\" timeFrame you can specify the ending day (YYYYMMDD)","in":"query","name":"toDay","required":false,"type":"string"},{"description":"The temporal entity you want to group by (\"week\"/\"month\"). If unspecified is \"day\".","enum":["week","month"],"in":"query","name":"groupBy","required":false,"type":"string"}],"produces":["application/json","text/json"],"responses":{"200":{"description":"","schema":{"$ref":"#/definitions/Api.Core.Responses.EntitiesResponse[Api.Core.Dto.Aggregated.AggregatedResult]"}},"401":{"description":"Unauthorized"},"500":{"description":"Internal Server Error"}},"summary":"Retrieve statistics about this group for a timeframe grouped by some temporal entity (day/week/month)","tags":["Groups"]}},"/groups/{id}/aggregated/summary":{"get":{"consumes":[],"deprecated":false,"parameters":[{"description":"Filter by this group id","format":"int64","in":"path","name":"id","required":true,"type":"integer"},{"description":"Timeframe of the request. See list at $timeframeList","enum":["today","yesterday","last7","last30","lastmonth","currentmonth","previousmonth","last90","last120","last180","last12months","lastyear","currentyear","beginning","custom"],"in":"query","name":"timeFrame","required":true,"type":"string"},{"description":"Type of datapoint (\"tl\"/\"tp\")","enum":["tp","tl"],"in":"query","name":"type","required":false,"type":"string"},{"description":"If using a \"custom\" timeFrame you can specify the starting day (YYYYMMDD)","in":"query","name":"fromDay","required":false,"type":"string"},{"description":"If using a \"custom\" timeFrame you can specify the ending day (YYYYMMDD)","in":"query","name":"toDay","required":false,"type":"string"},{"description":"Status of datapoint (\"deleted\"/\"active\"/\"paused\"/\"spam\")","enum":["deleted","active"],"in":"query","name":"status","required":false,"type":"string"},{"description":"A comma separated list of tags you want to filter with.","in":"query","name":"tag","required":false,"type":"string"},{"description":"Is the datapoint marked as favourite","in":"query","name":"favourite","required":false,"type":"boolean"},{"description":"Field to sort by","in":"query","name":"sortBy","required":false,"type":"string"},{"description":"Direction of sort \"asc\" or \"desc\"","enum":["asc","desc"],"in":"query","name":"sortDirection","required":false,"type":"string"},{"default":0,"description":"Offset where to start from","format":"int32","in":"query","minLength":0,"name":"offset","required":false,"type":"integer"},{"default":20,"description":"Limit results to this number","format":"int32","in":"query","maxLength":0,"minLength":0,"name":"limit","required":false,"type":"integer"},{"description":"Filter fields by this pattern","in":"query","name":"textSearch","required":false,"type":"string"}],"produces":["application/json","text/json"],"responses":{"200":{"description":"","schema":{"$ref":"#/definitions/Api.Core.Dto.Aggregated.AggregatedSummaryResult"}},"401":{"description":"Unauthorized"},"500":{"description":"Internal Server Error"}},"summary":"Retrieve statistics about a subset of datapoints for a timeframe with datapoints data","tags":["Groups"]}},"/groups/{id}/datapoints":{"get":{"consumes":[],"deprecated":false,"parameters":[{"description":"Id of the group","format":"int64","in":"path","name":"id","required":true,"type":"integer"},{"default":0,"description":"Where to start when retrieving elements. Default is 0 if not specified.","format":"int32","in":"query","minLength":0,"name":"offset","required":false,"type":"integer"},{"default":20,"description":"Maximum elements to retrieve. Default to 20 if not specified.","format":"int32","in":"query","maxLength":0,"minLength":0,"name":"limit","required":false,"type":"integer"},{"description":"Type of the datapoint (\"tp\"/\"tl\")","enum":["tp","tl"],"in":"query","name":"type","required":false,"type":"string"},{"description":"Status of the datapoint","enum":["deleted","active","paused","spam"],"in":"query","name":"status","required":false,"type":"string"},{"description":"A comma separated list of tags you want to filter with.","in":"query","name":"tags","required":false,"type":"string"},{"description":"Filter fields by this pattern","in":"query","name":"textSearch","required":false,"type":"string"},{"description":"Filter fields by favourite status","in":"query","name":"onlyFavorites","required":false,"type":"boolean"},{"description":"Field to sort by","in":"query","name":"sortBy","required":false,"type":"string"},{"description":"Direction of sort \"asc\" or \"desc\"","enum":["asc","desc"],"in":"query","name":"sortDirection","required":false,"type":"string"},{"description":"Exclude datapoints created before this date (YYYYMMDD)","in":"query","name":"createdAfter","required":false,"type":"string"},{"description":"Exclude datapoints created after this date (YYYYMMDD)","in":"query","name":"createdBefore","required":false,"type":"string"}],"produces":["application/json","text/json"],"responses":{"200":{"description":"","schema":{"$ref":"#/definitions/Api.Core.Responses.EntitiesResponse[Api.Core.Responses.EntityUri[System.Int64]]"}},"401":{"description":"Unauthorized"},"404":{"description":"Not found"},"500":{"description":"Internal Server Error"}},"summary":"List of all the datapoints associated to the user in this group.","tags":["Groups"]},"post":{"consumes":["application/json","text/json","application/x-www-form-urlencoded"],"deprecated":false,"parameters":[{"description":"The id of the group","format":"int64","in":"path","name":"id","required":true,"type":"integer"},{"description":"The body of the datapoint","in":"body","name":"value","required":true,"schema":{"$ref":"#/definitions/Api.Core.Dto.Datapoints.Datapoint"}}],"produces":["application/json","text/json","application/xml","text/xml"],"responses":{"200":{"description":"","schema":{"$ref":"#/definitions/Api.Core.Responses.EntityUri[System.Int64]"}},"401":{"description":"Unauthorized"},"404":{"description":"Not found"},"500":{"description":"Internal Server Error"}},"summary":"Create a datapoint in this group","tags":["Groups"]}},"/groups/{id}/datapoints/count":{"get":{"consumes":[],"deprecated":false,"parameters":[{"description":"Id of the group","format":"int64","in":"path","name":"id","required":true,"type":"integer"},{"description":"Type of the datapoint (\"tp\"/\"tl\")","enum":["tp","tl"],"in":"query","name":"type","required":false,"type":"string"},{"description":"Status of the datapoint","enum":["deleted","active","paused","spam"],"in":"query","name":"status","required":false,"type":"string"},{"description":"A comma separated list of tags you want to filter with.","in":"query","name":"tags","required":false,"type":"string"},{"description":"Filter fields by this pattern","in":"query","name":"textSearch","required":false,"type":"string"},{"description":"Filter fields by favourite status","in":"query","name":"onlyFavorites","required":false,"type":"boolean"},{"description":"Exclude datapoints created before this date (YYYYMMDD)","in":"query","name":"createdAfter","required":false,"type":"string"},{"description":"Exclude datapoints created after this date (YYYYMMDD)","in":"query","name":"createdBefore","required":false,"type":"string"}],"produces":["application/json","text/json","application/xml","text/xml"],"responses":{"200":{"description":"","schema":{"$ref":"#/definitions/Api.Core.Responses.CountResponce"}},"401":{"description":"Unauthorized"},"404":{"description":"Not found"},"500":{"description":"Internal Server Error"}},"summary":"Count the datapoints associated to the user in this group.","tags":["Groups"]}},"/groups/{id}/favourite":{"put":{"consumes":[],"deprecated":false,"parameters":[{"description":"Id of the group","format":"int64","in":"path","name":"id","required":true,"type":"integer"}],"produces":["application/json","text/json","application/xml","text/xml"],"responses":{"200":{"description":"","schema":{"$ref":"#/definitions/Api.Core.Responses.EntityUri[System.Int64]"}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"500":{"description":"Internal Server Error"}},"summary":"Fast switch the \"favourite\" field of a group","tags":["Groups"]}},"/groups/{id}/hits":{"get":{"consumes":[],"deprecated":false,"parameters":[{"description":"Id of the group","format":"int64","in":"path","name":"id","required":true,"type":"integer"},{"description":"Timeframe of the request. See list at $timeframeList","enum":["yesterday","last7","last30","lastmonth","currentmonth","previousmonth","last90","last120","last180","custom"],"in":"query","name":"timeframe","required":true,"type":"string"},{"description":"Limit results to this number","format":"int32","in":"query","maxLength":0,"minLength":0,"name":"limit","required":false,"type":"integer"},{"description":"Offset where to start from (it's the lastKey field in the response object)","in":"query","name":"offset","required":false,"type":"string"},{"description":"If using a \"custom\" timeFrame you can specify the starting day (YYYYMMDD)","in":"query","name":"fromDay","required":false,"type":"string"},{"description":"If using a \"custom\" timeFrame you can specify the ending day (YYYYMMDD)","in":"query","name":"toDay","required":false,"type":"string"},{"description":"Filter event type (\"spiders\"/\"uniques\"/\"nonuniques\"/\"conversions\")","enum":["spiders","uniques","nonuniques","conversions"],"in":"query","name":"filter","required":false,"type":"string"}],"produces":["application/json","text/json"],"responses":{"200":{"description":"","schema":{"$ref":"#/definitions/Api.Core.Dto.ClickStream.HitListPage"}},"401":{"description":"Unauthorized"},"500":{"description":"Internal Server Error"}},"summary":"Retrieve the list of events related to this group.","tags":["Groups"]}},"/groups/{id}/notes":{"put":{"consumes":["application/json","text/json","application/xml","text/xml","application/x-www-form-urlencoded"],"deprecated":false,"parameters":[{"description":"Id of the group","format":"int64","in":"path","name":"id","required":true,"type":"integer"},{"description":"Patch requests","in":"body","name":"note","required":true,"schema":{"$ref":"#/definitions/Api.Core.Requests.GenericTextPatch"}}],"produces":["application/json","text/json","application/xml","text/xml"],"responses":{"200":{"description":"","schema":{"$ref":"#/definitions/Api.Core.Responses.EntityUri[System.Int64]"}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"500":{"description":"Internal Server Error"}},"summary":"Fast patch the \"notes\" field of a group","tags":["Groups"]}},"/groups/{id}/reports":{"get":{"consumes":[],"deprecated":false,"parameters":[{"description":"Id of the group","format":"int64","in":"path","name":"id","required":true,"type":"integer"},{"description":"Type of the report.","enum":["browsers","browsersfamilies","platforms","cities","countries","isps","ips","oss","ossfamilies","keywords","referrers","destinations","languages","params"],"in":"query","name":"type","required":true,"type":"string"},{"description":"Timeframe of the request. See list at $timeframeList","enum":["yesterday","last7","last30","lastmonth","currentmonth","previousmonth","last90","last120","last180","beginning","custom"],"in":"query","name":"timeframe","required":true,"type":"string"},{"description":"Type of the event you want to filter this report with. By default no filter is applied.","enum":["clicks","views"],"in":"query","name":"hittype","required":false,"type":"string"},{"description":"If using a \"custom\" timeFrame you can specify the starting day (YYYYMMDD)","in":"query","name":"fromDay","required":false,"type":"string"},{"description":"If using a \"custom\" timeFrame you can specify the ending day (YYYYMMDD)","in":"query","name":"toDay","required":false,"type":"string"}],"produces":["application/json","text/json"],"responses":{"200":{"description":"","schema":{"$ref":"#/definitions/Api.Core.Dto.Tops.Top"}},"401":{"description":"Forbidden"},"404":{"description":"Not found"},"500":{"description":"Internal Server Error"}},"summary":"Retrieve a top report connected to this group","tags":["Groups"]}},"/hits":{"get":{"consumes":[],"deprecated":false,"parameters":[{"description":"Timeframe of the request. See list at $timeframeList","enum":["yesterday","last7","last30","lastmonth","currentmonth","previousmonth","last90","last120","last180","custom"],"in":"query","name":"timeframe","required":true,"type":"string"},{"description":"Limit results to this number","format":"int32","in":"query","name":"limit","required":false,"type":"integer"},{"description":"Offset where to start from (it's the lastKey field in the response object)","in":"query","name":"offset","required":false,"type":"string"},{"description":"If using a \"custom\" timeFrame you can specify the starting day (YYYYMMDD)","in":"query","name":"fromDay","required":false,"type":"string"},{"description":"If using a \"custom\" timeFrame you can specify the ending day (YYYYMMDD)","in":"query","name":"toDay","required":false,"type":"string"},{"description":"Filter event type (\"spiders\"/\"uniques\"/\"nonuniques\"/\"conversions\")","enum":["spiders","uniques","nonuniques","conversions"],"in":"query","name":"filter","required":false,"type":"string"}],"produces":["application/json","text/json"],"responses":{"200":{"description":"","schema":{"$ref":"#/definitions/Api.Core.Dto.ClickStream.HitListPage"}},"401":{"description":"Unauthorized"},"500":{"description":"Internal Server Error"}},"summary":"Retrieve the list of events related to this account.","tags":["Hits"]}},"/me":{"get":{"consumes":[],"deprecated":false,"produces":["application/json","text/json","application/xml","text/xml"],"responses":{"200":{"description":"","schema":{"$ref":"#/definitions/Api.Core.Dto.Accounting.User"}},"401":{"description":"Unauthorized"},"500":{"description":"Internal Server Error"}},"summary":"Retrieve current account data","tags":["Me"]}},"/me/plan":{"get":{"consumes":[],"deprecated":false,"produces":["application/json","text/json","application/xml","text/xml"],"responses":{"200":{"description":"","schema":{"$ref":"#/definitions/Api.Core.Dto.Accounting.Plan"}},"401":{"description":"Unauthorized"},"500":{"description":"Internal Server Error"}},"summary":"Retrieve current account plan","tags":["Me"]}},"/reports":{"get":{"consumes":[],"deprecated":false,"parameters":[{"description":"Type of the report.","enum":["browsers","browsersfamilies","platforms","cities","countries","isps","ips","oss","ossfamilies","keywords","referrers","destinations","languages","params"],"in":"query","name":"type","required":true,"type":"string"},{"description":"Timeframe of the request. See list at $timeframeList","enum":["yesterday","last7","last30","lastmonth","currentmonth","previousmonth","last90","last120","last180","beginning","custom"],"in":"query","name":"timeframe","required":true,"type":"string"},{"description":"Type of the event you want to filter this report with. By default no filter is applied.","in":"query","name":"hittype","required":false,"type":"string"},{"description":"Filter by this group id (mutually exclusive with \"datapoint\" and \"conversion\")","format":"int64","in":"query","name":"group","required":false,"type":"integer"},{"description":"Filter by this datapoint id (mutually exclusive with \"group\" and \"conversion\")","format":"int64","in":"query","name":"datapoint","required":false,"type":"integer"},{"description":"Filter by this conversion id (mutually exclusive with \"datapoint\" and \"group\")","format":"int64","in":"query","name":"conversion","required":false,"type":"integer"},{"description":"If using a \"custom\" timeFrame you can specify the starting day (YYYYMMDD)","in":"query","name":"fromDay","required":false,"type":"string"},{"description":"If using a \"custom\" timeFrame you can specify the ending day (YYYYMMDD)","in":"query","name":"toDay","required":false,"type":"string"}],"produces":["application/json","text/json"],"responses":{"200":{"description":"","schema":{"$ref":"#/definitions/Api.Core.Dto.Tops.Top"}},"401":{"description":"Forbidden"},"404":{"description":"Not found"},"500":{"description":"Internal Server Error"}},"summary":"Retrieve a top report","tags":["Reports"]}},"/retargeting":{"get":{"consumes":[],"deprecated":false,"parameters":[{"default":0,"description":"Where to start when retrieving elements. Default is 0 if not specified.","format":"int32","in":"query","minLength":0,"name":"offset","required":false,"type":"integer"},{"default":20,"description":"Maximum elements to retrieve. Default to 20 if not specified.","format":"int32","in":"query","maxLength":0,"minLength":0,"name":"limit","required":false,"type":"integer"}],"produces":["application/json","text/json"],"responses":{"200":{"description":"","schema":{"$ref":"#/definitions/Api.Core.Responses.EntitiesResponse[Api.Core.Responses.EntityUri[System.Int64]]"}},"401":{"description":"Unauthorized"},"404":{"description":"Not found"},"500":{"description":"Internal Server Error"}},"summary":"List of all the retargeting scripts associated to the user","tags":["Retargeting"]},"post":{"consumes":["application/json","text/json","application/xml","text/xml","application/x-www-form-urlencoded"],"deprecated":false,"parameters":[{"description":"The body of the retargeting script","in":"body","name":"value","required":true,"schema":{"$ref":"#/definitions/Api.Core.Dto.Retargeting.RetargetingScript"}}],"produces":["application/json","text/json","application/xml","text/xml"],"responses":{"200":{"description":"","schema":{"$ref":"#/definitions/Api.Core.Responses.EntityUri[System.Int64]"}},"401":{"description":"Unauthorized"},"404":{"description":"Not found"},"500":{"description":"Internal Server Error"}},"summary":"Creates a retargeting script","tags":["Retargeting"]}},"/retargeting/count":{"get":{"consumes":[],"deprecated":false,"produces":["application/json","text/json","application/xml","text/xml"],"responses":{"200":{"description":"","schema":{"$ref":"#/definitions/Api.Core.Responses.CountResponce"}},"401":{"description":"Unauthorized"},"500":{"description":"Internal Server Error"}},"summary":"Retrieve count of retargeting scripts","tags":["Retargeting"]}},"/retargeting/{id}":{"delete":{"consumes":[],"deprecated":false,"parameters":[{"description":"The id of the retargeting script","format":"int64","in":"path","name":"id","required":true,"type":"integer"}],"produces":["application/json","text/json","application/xml","text/xml"],"responses":{"200":{"description":"","schema":{"$ref":"#/definitions/Api.Core.Responses.EntityUri[System.Int64]"}},"401":{"description":"Unauthorized"},"404":{"description":"Not found"},"500":{"description":"Internal Server Error"}},"summary":"Deletes a retargeting script (and remove associations)","tags":["Retargeting"]},"get":{"consumes":[],"deprecated":false,"parameters":[{"description":"The id of the retargeting script","format":"int64","in":"path","name":"id","required":true,"type":"integer"}],"produces":["application/json","text/json","application/xml","text/xml"],"responses":{"200":{"description":"","schema":{"$ref":"#/definitions/Api.Core.Dto.Retargeting.RetargetingScript"}},"401":{"description":"Unauthorized"},"404":{"description":"Not found"},"500":{"description":"Internal Server Error"}},"summary":"Get a retargeting script object","tags":["Retargeting"]},"post":{"consumes":["application/json","text/json","application/xml","text/xml","application/x-www-form-urlencoded"],"deprecated":false,"parameters":[{"description":"The id of the retargeting script","format":"int64","in":"path","name":"id","required":true,"type":"integer"},{"description":"The body of the retargeting script","in":"body","name":"value","required":true,"schema":{"$ref":"#/definitions/Api.Core.Dto.Retargeting.RetargetingScript"}}],"produces":["application/json","text/json","application/xml","text/xml"],"responses":{"200":{"description":"","schema":{"$ref":"#/definitions/Api.Core.Responses.EntityUri[System.Int64]"}},"401":{"description":"Unauthorized"},"404":{"description":"Not found"},"500":{"description":"Internal Server Error"}},"summary":"Updates a retargeting script","tags":["Retargeting"]}},"/retargeting/{id}/datapoints":{"get":{"consumes":[],"deprecated":false,"parameters":[{"description":"Id of the retargeting script","format":"int64","in":"path","name":"id","required":true,"type":"integer"},{"default":0,"description":"Where to start when retrieving elements. Default is 0 if not specified.","format":"int32","in":"query","minLength":0,"name":"offset","required":false,"type":"integer"},{"default":20,"description":"Maximum elements to retrieve. Default to 20 if not specified.","format":"int32","in":"query","maxLength":0,"minLength":0,"name":"limit","required":false,"type":"integer"},{"description":"Status of the datapoint","enum":["deleted","active","paused","spam"],"in":"query","name":"status","required":false,"type":"string"},{"description":"A comma separated list of tags you want to filter with.","in":"query","name":"tags","required":false,"type":"string"},{"description":"Filter fields by this pattern","in":"query","name":"textSearch","required":false,"type":"string"},{"description":"Filter fields by favourite status","in":"query","name":"onlyFavorites","required":false,"type":"boolean"},{"description":"Field to sort by","in":"query","name":"sortBy","required":false,"type":"string"},{"description":"Direction of sort \"asc\" or \"desc\"","enum":["asc","desc"],"in":"query","name":"sortDirection","required":false,"type":"string"},{"description":"Exclude datapoints created before this date (YYYYMMDD)","in":"query","name":"createdAfter","required":false,"type":"string"},{"description":"Exclude datapoints created after this date (YYYYMMDD)","in":"query","name":"createdBefore","required":false,"type":"string"}],"produces":["application/json","text/json"],"responses":{"200":{"description":"","schema":{"$ref":"#/definitions/Api.Core.Responses.EntitiesResponse[Api.Core.Responses.EntityUri[System.Int64]]"}},"401":{"description":"Unauthorized"},"404":{"description":"Not found"},"500":{"description":"Internal Server Error"}},"summary":"List of all the datapoints associated to the retargeting script.","tags":["Retargeting"]}},"/retargeting/{id}/datapoints/count":{"get":{"consumes":[],"deprecated":false,"parameters":[{"description":"Id of the group","format":"int64","in":"path","name":"id","required":true,"type":"integer"},{"description":"Status of the datapoint","enum":["deleted","active","paused","spam"],"in":"query","name":"status","required":false,"type":"string"},{"description":"A comma separated list of tags you want to filter with.","in":"query","name":"tags","required":false,"type":"string"},{"description":"Filter fields by this pattern","in":"query","name":"textSearch","required":false,"type":"string"},{"description":"Filter fields by favourite status","in":"query","name":"onlyFavorites","required":false,"type":"boolean"},{"description":"Exclude datapoints created before this date (YYYYMMDD)","in":"query","name":"createdAfter","required":false,"type":"string"},{"description":"Exclude datapoints created after this date (YYYYMMDD)","in":"query","name":"createdBefore","required":false,"type":"string"}],"produces":["application/json","text/json","application/xml","text/xml"],"responses":{"200":{"description":"","schema":{"$ref":"#/definitions/Api.Core.Responses.CountResponce"}},"401":{"description":"Unauthorized"},"404":{"description":"Not found"},"500":{"description":"Internal Server Error"}},"summary":"Count the datapoints associated to the retargeting script.","tags":["Retargeting"]}},"/tags":{"get":{"consumes":[],"deprecated":false,"parameters":[{"default":0,"description":"Where to start when retrieving elements. Default is 0 if not specified.","format":"int32","in":"query","minLength":0,"name":"offset","required":false,"type":"integer"},{"default":20,"description":"Maximum elements to retrieve. Default to 20 if not specified.","format":"int32","in":"query","maxLength":0,"minLength":0,"name":"limit","required":false,"type":"integer"},{"description":"Name of the tag","in":"query","name":"name","required":false,"type":"string"},{"description":"Comma separated list of datapoints id to filter by","in":"query","name":"datapoints","required":false,"type":"string"},{"description":"Comma separated list of groups id to filter by","in":"query","name":"groups","required":false,"type":"string"},{"description":"Type of entity related to the tag","enum":["tp","tl","dp","gr"],"in":"query","name":"type","required":false,"type":"string"}],"produces":["application/json","text/json"],"responses":{"200":{"description":"","schema":{"$ref":"#/definitions/Api.Core.Responses.EntitiesResponse[Api.Core.Responses.EntityUri[System.Int64]]"}},"401":{"description":"Unauthorized"},"404":{"description":"Not found"},"500":{"description":"Internal Server Error"}},"summary":"List of all the groups associated to the user filtered by this tag.","tags":["Tags"]},"post":{"consumes":["application/json","text/json","application/x-www-form-urlencoded"],"deprecated":false,"parameters":[{"description":"The body of the tag","in":"body","name":"value","required":true,"schema":{"$ref":"#/definitions/Api.Core.Dto.Tags.Tag"}}],"produces":["application/json","text/json","application/xml","text/xml"],"responses":{"200":{"description":"","schema":{"$ref":"#/definitions/Api.Core.Responses.EntityUri[System.Int64]"}},"401":{"description":"Unauthorized"},"404":{"description":"Not found"},"500":{"description":"Internal Server Error"}},"summary":"Create a tag","tags":["Tags"]}},"/tags/count":{"get":{"consumes":[],"deprecated":false,"parameters":[{"description":"Name of the tag","in":"query","name":"name","required":false,"type":"string"},{"description":"Comma separated list of datapoints id to filter by","in":"query","name":"datapoints","required":false,"type":"string"},{"description":"Comma separated list of groups id to filter by","in":"query","name":"groups","required":false,"type":"string"},{"description":"Type of entity related to the tag","enum":["tp","tl","dp","gr"],"in":"query","name":"type","required":false,"type":"string"}],"produces":["application/json","text/json"],"responses":{"200":{"description":"","schema":{"$ref":"#/definitions/System.Object"}},"401":{"description":"Unauthorized"},"404":{"description":"Not found"},"500":{"description":"Internal Server Error"}},"summary":"List of all the groups associated to the user filtered by this tag.","tags":["Tags"]}},"/tags/{tagId}":{"delete":{"consumes":[],"deprecated":false,"parameters":[{"description":"Id of the tag","format":"int64","in":"path","name":"tagId","required":true,"type":"integer"}],"produces":["application/json","text/json"],"responses":{"200":{"description":"","schema":{"$ref":"#/definitions/System.Object"}},"401":{"description":"Unauthorized"},"500":{"description":"Internal Server Error"}},"summary":"Delete a tag","tags":["Tags"]},"get":{"consumes":[],"deprecated":false,"parameters":[{"description":"Id of the tag","format":"int64","in":"path","name":"tagId","required":true,"type":"integer"}],"produces":["application/json","text/json"],"responses":{"200":{"description":"","schema":{"$ref":"#/definitions/Api.Core.Dto.Tags.Tag"}},"401":{"description":"Unauthorized"},"500":{"description":"Internal Server Error"}},"summary":"Retrieve a tag","tags":["Tags"]}},"/tags/{tagId}/datapoints":{"delete":{"consumes":[],"deprecated":false,"parameters":[{"description":"Id of the tag","format":"int64","in":"path","name":"tagId","required":true,"type":"integer"}],"produces":["application/json","text/json","application/xml","text/xml"],"responses":{"200":{"description":"","schema":{"$ref":"#/definitions/Api.Core.Responses.EntityUri[System.Int64]"}},"401":{"description":"Unauthorized"},"500":{"description":"Internal Server Error"}},"summary":"Delete the association of this tag with all datapoints","tags":["Tags"]},"get":{"consumes":[],"deprecated":false,"parameters":[{"description":"Id of the tag.","format":"int64","in":"path","name":"tagId","required":true,"type":"integer"},{"default":0,"description":"Where to start when retrieving elements. Default is 0 if not specified.","format":"int32","in":"query","minLength":0,"name":"offset","required":false,"type":"integer"},{"default":20,"description":"Maximum elements to retrieve. Default to 20 if not specified.","format":"int32","in":"query","maxLength":0,"minLength":0,"name":"limit","required":false,"type":"integer"},{"description":"Type of the datapoint (\"tp\"/\"tl\")","enum":["tp","tl"],"in":"query","name":"type","required":false,"type":"string"},{"description":"Status of the datapoint","enum":["deleted","active","paused","spam"],"in":"query","name":"status","required":false,"type":"string"},{"description":"Filter fields by this pattern","in":"query","name":"textSearch","required":false,"type":"string"},{"description":"Exclude datapoints created before this date (YYYYMMDD)","in":"query","name":"createdAfter","required":false,"type":"string"},{"description":"Exclude datapoints created after this date (YYYYMMDD)","in":"query","name":"createdBefore","required":false,"type":"string"}],"produces":["application/json","text/json"],"responses":{"200":{"description":"","schema":{"$ref":"#/definitions/Api.Core.Responses.EntitiesResponse[Api.Core.Responses.EntityUri[System.Int64]]"}},"401":{"description":"Unauthorized"},"404":{"description":"Not found"},"500":{"description":"Internal Server Error"}},"summary":"List of all the datapoints associated to the user filtered by this tag","tags":["Tags"]}},"/tags/{tagId}/datapoints/count":{"get":{"consumes":[],"deprecated":false,"parameters":[{"description":"Id of the tag.","format":"int64","in":"path","name":"tagId","required":true,"type":"integer"},{"description":"Type of the datapoint (\"tp\"/\"tl\")","enum":["tp","tl"],"in":"query","name":"type","required":false,"type":"string"},{"description":"Status of the datapoint","enum":["deleted","active","paused","spam"],"in":"query","name":"status","required":false,"type":"string"},{"description":"Filter fields by this pattern","in":"query","name":"textSearch","required":false,"type":"string"},{"description":"Exclude datapoints created before this date (YYYYMMDD)","in":"query","name":"createdAfter","required":false,"type":"string"},{"description":"Exclude datapoints created after this date (YYYYMMDD)","in":"query","name":"createdBefore","required":false,"type":"string"}],"produces":["application/json","text/json","application/xml","text/xml"],"responses":{"200":{"description":"","schema":{"$ref":"#/definitions/Api.Core.Responses.CountResponce"}},"401":{"description":"Unauthorized"},"404":{"description":"Not found"},"500":{"description":"Internal Server Error"}},"summary":"Count the datapoints associated to the user filtered by this tag","tags":["Tags"]}},"/tags/{tagId}/datapoints/patch":{"put":{"consumes":["application/json","text/json","application/xml","text/xml","application/x-www-form-urlencoded"],"deprecated":false,"parameters":[{"description":"Id of the tag","format":"int64","in":"path","name":"tagId","required":true,"type":"integer"},{"description":"The body patch","in":"body","name":"data","required":true,"schema":{"$ref":"#/definitions/Api.Core.Requests.PatchBody"}}],"produces":["application/json","text/json","application/xml","text/xml"],"responses":{"200":{"description":"","schema":{"$ref":"#/definitions/Api.Core.Responses.EntityUri[System.Int64]"}},"401":{"description":"Unauthorized"},"404":{"description":"Not found"},"500":{"description":"Internal Server Error"}},"summary":"Associate/Deassociate a tag with a datapoint","tags":["Tags"]}},"/tags/{tagId}/groups":{"delete":{"consumes":[],"deprecated":false,"parameters":[{"description":"Id of the tag","format":"int64","in":"path","name":"tagId","required":true,"type":"integer"}],"produces":["application/json","text/json","application/xml","text/xml"],"responses":{"200":{"description":"","schema":{"$ref":"#/definitions/Api.Core.Responses.EntityUri[System.Int64]"}},"401":{"description":"Unauthorized"},"500":{"description":"Internal Server Error"}},"summary":"Delete the association of this tag with all groups","tags":["Tags"]},"get":{"consumes":[],"deprecated":false,"parameters":[{"description":"Id of the tag.","format":"int64","in":"path","name":"tagId","required":true,"type":"integer"},{"default":0,"description":"Where to start when retrieving elements. Default is 0 if not specified.","format":"int32","in":"query","minLength":0,"name":"offset","required":false,"type":"integer"},{"default":20,"description":"Maximum elements to retrieve. Default to 20 if not specified.","format":"int32","in":"query","maxLength":0,"minLength":0,"name":"limit","required":false,"type":"integer"},{"description":"Status of the datapoint","enum":["deleted","active"],"in":"query","name":"status","required":false,"type":"string"},{"description":"Filter fields by this pattern","in":"query","name":"textSearch","required":false,"type":"string"},{"description":"Exclude groups created before this date (YYYYMMDD)","in":"query","name":"createdAfter","required":false,"type":"string"},{"description":"Exclude groups created after this date (YYYYMMDD)","in":"query","name":"createdBefore","required":false,"type":"string"}],"produces":["application/json","text/json"],"responses":{"200":{"description":"","schema":{"$ref":"#/definitions/Api.Core.Responses.EntitiesResponse[Api.Core.Responses.EntityUri[System.Int64]]"}},"401":{"description":"Unauthorized"},"404":{"description":"Not found"},"500":{"description":"Internal Server Error"}},"summary":"List of all the groups associated to the user filtered by this tag.","tags":["Tags"]}},"/tags/{tagId}/groups/count":{"get":{"consumes":[],"deprecated":false,"parameters":[{"description":"Id of the tag.","format":"int64","in":"path","name":"tagId","required":true,"type":"integer"},{"description":"Status of the datapoint","enum":["deleted","active"],"in":"query","name":"status","required":false,"type":"string"},{"description":"Filter fields by this pattern","in":"query","name":"textSearch","required":false,"type":"string"},{"description":"Exclude groups created before this date (YYYYMMDD)","in":"query","name":"createdAfter","required":false,"type":"string"},{"description":"Exclude groups created after this date (YYYYMMDD)","in":"query","name":"createdBefore","required":false,"type":"string"}],"produces":["application/json","text/json","application/xml","text/xml"],"responses":{"200":{"description":"","schema":{"$ref":"#/definitions/Api.Core.Responses.CountResponce"}},"401":{"description":"Unauthorized"},"404":{"description":"Not found"},"500":{"description":"Internal Server Error"}},"summary":"Count the groups associated to the user filtered by this tag","tags":["Tags"]}},"/tags/{tagId}/groups/patch":{"put":{"consumes":["application/json","text/json","application/xml","text/xml","application/x-www-form-urlencoded"],"deprecated":false,"parameters":[{"description":"Id of the tag","format":"int64","in":"path","name":"tagId","required":true,"type":"integer"},{"description":"The body patch","in":"body","name":"data","required":true,"schema":{"$ref":"#/definitions/Api.Core.Requests.PatchBody"}}],"produces":["application/json","text/json","application/xml","text/xml"],"responses":{"200":{"description":"","schema":{"$ref":"#/definitions/Api.Core.Responses.EntityUri[System.Int64]"}},"401":{"description":"Unauthorized"},"404":{"description":"Not found"},"500":{"description":"Internal Server Error"}},"summary":"Associate/Deassociate a tag with a group","tags":["Tags"]}},"/tags/{tagId}/name":{"put":{"consumes":["application/json","text/json","application/xml","text/xml","application/x-www-form-urlencoded"],"deprecated":false,"parameters":[{"description":"Id of the tag","format":"int64","in":"path","name":"tagId","required":true,"type":"integer"},{"description":"The body patch","in":"body","name":"data","required":true,"schema":{"$ref":"#/definitions/Api.Core.Requests.GenericTextPatch"}}],"produces":["application/json","text/json","application/xml","text/xml"],"responses":{"200":{"description":"","schema":{"$ref":"#/definitions/Api.Core.Responses.EntityUri[System.Int64]"}},"401":{"description":"Unauthorized"},"500":{"description":"Internal Server Error"}},"summary":"Fast patch a tag name","tags":["Tags"]}}},"definitions":{"Api.Core.Dto.Accounting.ConversionOptions":{"properties":{"hideComCost":{"type":"boolean"},"hideCost":{"type":"boolean"},"hideCount":{"type":"boolean"},"hideParams":{"type":"boolean"},"hideValue":{"type":"boolean"},"percentCommission":{"format":"int32","type":"integer"},"percentValue":{"format":"int32","type":"integer"}},"type":"object"},"Api.Core.Dto.Accounting.DomainWhitelistEntry":{"properties":{"id":{"type":"string"},"name":{"type":"string"}},"type":"object"},"Api.Core.Dto.Accounting.ExtendedGrants":{"properties":{"allowAllGrants":{"type":"boolean"},"allowGroupCreation":{"type":"boolean"}},"type":"object"},"Api.Core.Dto.Accounting.Guest":{"properties":{"apiKey":{"type":"string"},"conversionOptions":{"$ref":"#/definitions/Api.Core.Dto.Accounting.ConversionOptions"},"creationDate":{"description":" (A date in \"YmdHis\" format)","example":"20120203120530","type":"string"},"currentGrant":{"$ref":"#/definitions/Api.Core.Dto.Grants.Grant"},"dateFormat":{"type":"string"},"decimalSeparator":{"type":"string"},"email":{"type":"string"},"extendedGrants":{"$ref":"#/definitions/Api.Core.Dto.Accounting.ExtendedGrants"},"groupGrants":{"format":"int64","type":"integer"},"hitOptions":{"$ref":"#/definitions/Api.Core.Dto.Accounting.HitOptions"},"id":{"format":"int64","type":"integer"},"key":{"type":"string"},"language":{"type":"string"},"loginCount":{"format":"int32","type":"integer"},"name":{"type":"string"},"notes":{"type":"string"},"numberGroupSeparator":{"type":"string"},"password":{"type":"string"},"timeFormat":{"enum":["AmPm","H24"],"type":"string"},"timeZone":{"format":"int32","type":"integer"},"timeframeMinDate":{"description":" (A date in \"YmdHis\" format)","example":"20120203120530","type":"string"},"timezonename":{"type":"string"},"tlGrants":{"format":"int64","type":"integer"},"tpGrants":{"format":"int64","type":"integer"},"userName":{"type":"string"}},"type":"object"},"Api.Core.Dto.Accounting.HitOptions":{"properties":{"hideReferrer":{"type":"boolean"}},"type":"object"},"Api.Core.Dto.Accounting.IpBlacklistEntry":{"properties":{"id":{"type":"string"},"ip":{"type":"string"}},"type":"object"},"Api.Core.Dto.Accounting.Plan":{"properties":{"allowedPersonalDomains":{"format":"int32","type":"integer"},"allowedPersonalUrls":{"format":"int32","type":"integer"},"billingPeriodEnd":{"description":" (A date in \"YmdHis\" format)","example":"20120203120530","type":"string"},"billingPeriodStart":{"description":" (A date in \"YmdHis\" format)","example":"20120203120530","type":"string"},"bonusMonthlyEvents":{"format":"int64","type":"integer"},"maximumDatapoints":{"format":"int64","type":"integer"},"maximumGuests":{"format":"int64","type":"integer"},"monthlyEvents":{"format":"int64","type":"integer"},"name":{"type":"string"},"price":{"format":"double","type":"number"},"profileId":{"format":"int64","type":"integer"},"recurring":{"type":"boolean"},"recurringPeriod":{"format":"int32","type":"integer"},"usedDatapoints":{"format":"int64","type":"integer"},"usedMonthlyEvents":{"format":"int64","type":"integer"}},"type":"object"},"Api.Core.Dto.Accounting.User":{"properties":{"boGoVal":{"type":"string"},"bonusClicks":{"format":"int64","type":"integer"},"companyName":{"type":"string"},"companyRole":{"type":"string"},"email":{"type":"string"},"firstName":{"type":"string"},"lastName":{"type":"string"},"phone":{"type":"string"},"redirectOnly":{"type":"boolean"},"registrationDate":{"description":" (A date in \"YmdHis\" format)","example":"20120203120530","type":"string"},"timeframeMinDate":{"description":" (A date in \"YmdHis\" format)","example":"20120203120530","type":"string"},"timezone":{"format":"int32","type":"integer"},"timezonename":{"type":"string"}},"type":"object"},"Api.Core.Dto.Aggregated.AggregatedResult":{"properties":{"activityDay":{"description":" (A date in \"YmdHis\" format)","example":"20120203120530","type":"string"},"commissionsCost":{"format":"double","type":"number"},"conversionsCost":{"format":"double","type":"number"},"conversionsValue":{"format":"double","type":"number"},"convertedClicks":{"format":"int64","type":"integer"},"entityData":{"$ref":"#/definitions/System.Object"},"entityId":{"type":"string"},"fromDay":{"description":" (A date in \"YmdHis\" format)","example":"20120203120530","type":"string"},"hourlyBreakDown":{"additionalProperties":{"$ref":"#/definitions/Api.Core.Dto.Aggregated.AggregatedResult"},"type":"object"},"lastHitDate":{"description":" (A date in \"YmdHis\" format)","example":"20120203120530","type":"string"},"spiderHitsCount":{"format":"int64","type":"integer"},"toDay":{"description":" (A date in \"YmdHis\" format)","example":"20120203120530","type":"string"},"totalClicks":{"format":"int64","type":"integer"},"totalViews":{"format":"int64","type":"integer"},"uniqueClicks":{"format":"int64","type":"integer"},"uniqueConversions":{"format":"int64","type":"integer"},"uniqueViews":{"format":"int64","type":"integer"}},"type":"object"},"Api.Core.Dto.Aggregated.AggregatedSummaryResult":{"properties":{"count":{"format":"int64","type":"integer"},"limit":{"format":"int32","type":"integer"},"offset":{"format":"int64","type":"integer"},"result":{"items":{"$ref":"#/definitions/Api.Core.Dto.Aggregated.AggregatedResult"},"type":"array"}},"type":"object"},"Api.Core.Dto.ClickStream.Hit":{"properties":{"accessTime":{"description":" (A date in \"YmdHis\" format)","example":"20120203120530","type":"string"},"browser":{"$ref":"#/definitions/Api.Core.Dto.ClickStream.HitBrowserInfo"},"clientLanguage":{"type":"string"},"conversion1":{"$ref":"#/definitions/Api.Core.Dto.ClickStream.HitConversionInfo"},"conversion2":{"$ref":"#/definitions/Api.Core.Dto.ClickStream.HitConversionInfo"},"conversion3":{"$ref":"#/definitions/Api.Core.Dto.ClickStream.HitConversionInfo"},"conversion4":{"$ref":"#/definitions/Api.Core.Dto.ClickStream.HitConversionInfo"},"conversion5":{"$ref":"#/definitions/Api.Core.Dto.ClickStream.HitConversionInfo"},"conversions":{"items":{"$ref":"#/definitions/Api.Core.Dto.ClickStream.HitConversionInfo"},"type":"array"},"entity":{"$ref":"#/definitions/Api.Core.Dto.ClickStream.HitDatapointInfo"},"ip":{"type":"string"},"isProxy":{"type":"string"},"isSpider":{"type":"string"},"isUnique":{"type":"string"},"location":{"$ref":"#/definitions/Api.Core.Dto.ClickStream.HitLocationInfo"},"org":{"type":"string"},"os":{"$ref":"#/definitions/Api.Core.Dto.ClickStream.HitOsInfo"},"queryParams":{"type":"string"},"realDestinationUrl":{"type":"string"},"referer":{"type":"string"},"source":{"$ref":"#/definitions/Api.Core.Dto.ClickStream.HitSource"},"type":{"type":"string"}},"type":"object"},"Api.Core.Dto.ClickStream.HitBrowserInfo":{"properties":{"browserType":{"type":"string"},"familyId":{"format":"int64","type":"integer"},"familyName":{"type":"string"},"id":{"format":"int64","type":"integer"},"name":{"type":"string"}},"type":"object"},"Api.Core.Dto.ClickStream.HitConversionInfo":{"properties":{"accessTime":{"description":" (A date in \"YmdHis\" format)","example":"20120203120530","type":"string"},"comcost":{"format":"double","type":"number"},"cost":{"format":"double","type":"number"},"date":{"description":" (A date in \"YmdHis\" format)","example":"20120203120530","type":"string"},"deleted":{"type":"boolean"},"id":{"format":"int64","type":"integer"},"name":{"type":"string"},"parameter":{"type":"string"},"value":{"format":"double","type":"number"}},"type":"object"},"Api.Core.Dto.ClickStream.HitDatapointInfo":{"properties":{"creationDate":{"description":" (A date in \"YmdHis\" format)","example":"20120203120530","type":"string"},"datapointFavourite":{"type":"boolean"},"datapointId":{"format":"int64","type":"integer"},"datapointName":{"type":"string"},"datapointTitle":{"type":"string"},"datapointType":{"type":"string"},"destinationUrl":{"type":"string"},"groupId":{"format":"int64","type":"integer"},"groupName":{"type":"string"},"isABTest":{"type":"boolean"},"isPrivateShared":{"type":"boolean"},"isPublic":{"type":"boolean"},"notes":{"type":"string"},"status":{"enum":["Active","Paused","Abuse","Deleted"],"type":"string"},"tags":{"items":{"$ref":"#/definitions/Api.Core.Dto.Tags.Tag"},"type":"array"},"trackingCode":{"type":"string"}},"type":"object"},"Api.Core.Dto.ClickStream.HitListPage":{"properties":{"hits":{"items":{"$ref":"#/definitions/Api.Core.Dto.ClickStream.Hit"},"type":"array"},"lastKey":{"type":"string"}},"type":"object"},"Api.Core.Dto.ClickStream.HitLocationInfo":{"properties":{"areacode":{"type":"string"},"city":{"type":"string"},"country":{"type":"string"},"latitude":{"format":"double","type":"number"},"longitude":{"format":"double","type":"number"},"metrocode":{"type":"string"},"organization":{"type":"string"},"postalcode":{"type":"string"},"region":{"type":"string"},"regionName":{"type":"string"}},"type":"object"},"Api.Core.Dto.ClickStream.HitOsInfo":{"properties":{"familyId":{"format":"int64","type":"integer"},"familyName":{"type":"string"},"id":{"format":"int64","type":"integer"},"name":{"type":"string"}},"type":"object"},"Api.Core.Dto.ClickStream.HitSource":{"properties":{"id":{"format":"int64","type":"integer"},"name":{"type":"string"},"param":{"type":"string"}},"type":"object"},"Api.Core.Dto.Conversions.Conversion":{"properties":{"code":{"type":"string"},"creationDate":{"description":" (A date in \"YmdHis\" format)","example":"20120203120530","type":"string"},"deleted":{"type":"boolean"},"description":{"type":"string"},"id":{"format":"int64","type":"integer"},"name":{"type":"string"},"protocol":{"enum":["Http","Https"],"type":"string"},"value":{"format":"double","type":"number"}},"type":"object"},"Api.Core.Dto.Datapoints.BrowserBaseDestinationItem":{"properties":{"emailDestinationUrl":{"type":"string"},"mobileDestinationUrl":{"type":"string"},"spidersDestinationUrl":{"type":"string"}},"type":"object"},"Api.Core.Dto.Datapoints.Datapoint":{"properties":{"creationDate":{"description":" (A date in \"YmdHis\" format)","example":"20120203120530","type":"string"},"encodeIp":{"type":"boolean"},"fifthConversionId":{"format":"int64","type":"integer"},"fifthConversionName":{"type":"string"},"firstConversionId":{"format":"int64","type":"integer"},"firstConversionName":{"type":"string"},"fourthConversionId":{"format":"int64","type":"integer"},"fourthConversionName":{"type":"string"},"groupId":{"format":"int64","type":"integer"},"groupName":{"type":"string"},"id":{"format":"int64","type":"integer"},"isPublic":{"type":"boolean"},"isSecured":{"type":"boolean"},"lightTracking":{"type":"boolean"},"name":{"type":"string"},"notes":{"type":"string"},"preferred":{"type":"boolean"},"redirectOnly":{"type":"boolean"},"secondConversionId":{"format":"int64","type":"integer"},"secondConversionName":{"type":"string"},"status":{"enum":["Active","Paused","Abuse","Deleted"],"type":"string"},"tags":{"items":{"$ref":"#/definitions/Api.Core.Dto.Tags.Tag"},"type":"array"},"thirdConversionId":{"format":"int64","type":"integer"},"thirdConversionName":{"type":"string"},"title":{"type":"string"},"trackingCode":{"type":"string"},"type":{"enum":["TrackingLink","TrackingPixel"],"type":"string"},"typeTL":{"$ref":"#/definitions/Api.Core.Dto.Datapoints.TrackingLinkSpecifics"},"typeTP":{"$ref":"#/definitions/Api.Core.Dto.Datapoints.TrackingPixelSpecifics"},"writePermited":{"type":"boolean"}},"type":"object"},"Api.Core.Dto.Datapoints.DatapointRetargetingInfo":{"properties":{"id":{"format":"int64","type":"integer"},"name":{"type":"string"}},"type":"object"},"Api.Core.Dto.Datapoints.MultipleDestinationItem":{"properties":{"url":{"type":"string"}},"type":"object"},"Api.Core.Dto.Datapoints.TrackingLinkSpecifics":{"properties":{"appendQuery":{"type":"boolean"},"browserDestinationItem":{"$ref":"#/definitions/Api.Core.Dto.Datapoints.BrowserBaseDestinationItem"},"destinationMode":{"enum":["Simple","RandomDestination","DestinationByLanguage","SpilloverDestination","DynamicUrl","BrowserDestination","DestinationByNation","UniqueDestination","SequentialDestination","WeightedDestination"],"type":"string"},"domainId":{"format":"int32","type":"integer"},"encodeUrl":{"type":"boolean"},"expirationClicks":{"format":"int64","type":"integer"},"expirationDate":{"description":" (A date in \"YmdHis\" format)","example":"20120203120530","type":"string"},"firstUrl":{"type":"string"},"goDomainId":{"format":"int32","type":"integer"},"hideUrl":{"type":"boolean"},"hideUrlTitle":{"type":"string"},"isABTest":{"type":"boolean"},"password":{"type":"string"},"pauseAfterClicksExpiration":{"type":"boolean"},"pauseAfterDateExpiration":{"type":"boolean"},"randomDestinationItems":{"items":{"$ref":"#/definitions/Api.Core.Dto.Datapoints.MultipleDestinationItem"},"type":"array"},"redirectType":{"enum":["PermanentRedirect","TemporaryRedirect"],"type":"string"},"referrerClean":{"enum":["None","Clean","Myself"],"type":"string"},"scripts":{"items":{"$ref":"#/definitions/Api.Core.Dto.Datapoints.DatapointRetargetingInfo"},"type":"array"},"sequentialDestinationItems":{"items":{"$ref":"#/definitions/Api.Core.Dto.Datapoints.MultipleDestinationItem"},"type":"array"},"spilloverDestinationItems":{"items":{"$ref":"#/definitions/Api.Core.Dto.Datapoints.MultipleDestinationItem"},"type":"array"},"uniqueDestinationItem":{"$ref":"#/definitions/Api.Core.Dto.Datapoints.UniqueDestinationItem"},"url":{"type":"string"},"urlAfterClicksExpiration":{"type":"string"},"urlAfterDateExpiration":{"type":"string"},"urlsByLanguage":{"items":{"$ref":"#/definitions/Api.Core.Dto.Datapoints.UrlByLanguageItem"},"type":"array"},"urlsByNation":{"items":{"$ref":"#/definitions/Api.Core.Dto.Datapoints.UrlByNationItem"},"type":"array"},"weightedDestinationItems":{"items":{"$ref":"#/definitions/Api.Core.Dto.Datapoints.WeightedDestinationItem"},"type":"array"}},"type":"object"},"Api.Core.Dto.Datapoints.TrackingPixelSpecifics":{"properties":{"parameterNote":{"type":"string"}},"type":"object"},"Api.Core.Dto.Datapoints.UniqueDestinationItem":{"properties":{"firstDestinationUrl":{"type":"string"}},"type":"object"},"Api.Core.Dto.Datapoints.UrlByLanguageItem":{"properties":{"languageCode":{"type":"string"},"url":{"type":"string"}},"type":"object"},"Api.Core.Dto.Datapoints.UrlByNationItem":{"properties":{"nation":{"type":"string"},"url":{"type":"string"}},"type":"object"},"Api.Core.Dto.Datapoints.WeightedDestinationItem":{"properties":{"url":{"type":"string"},"weight":{"format":"int32","type":"integer"}},"type":"object"},"Api.Core.Dto.Domains.Domain":{"properties":{"custom404":{"type":"string"},"customHomepage":{"type":"string"},"id":{"format":"int64","type":"integer"},"name":{"type":"string"},"type":{"enum":["System","Go","Dedicated","Personal"],"type":"string"}},"type":"object"},"Api.Core.Dto.EntityUriLong":{"properties":{"id":{"format":"int64","type":"integer"},"uri":{"type":"string"}},"type":"object"},"Api.Core.Dto.Grants.Grant":{"properties":{"DatapointType":{"type":"string"},"Entity":{"$ref":"#/definitions/Api.Core.Responses.EntityUri[System.Int64]"},"EntityName":{"type":"string"},"EntityType":{"type":"string"},"Type":{"type":"string"}},"type":"object"},"Api.Core.Dto.Groups.Group":{"properties":{"creationDate":{"description":" (A date in \"YmdHis\" format)","example":"20120203120530","type":"string"},"deleted":{"type":"boolean"},"id":{"format":"int64","type":"integer"},"isPublic":{"type":"boolean"},"name":{"type":"string"},"notes":{"type":"string"},"preferred":{"type":"boolean"},"redirectOnly":{"type":"boolean"},"tags":{"items":{"$ref":"#/definitions/Api.Core.Dto.Tags.Tag"},"type":"array"},"writePermited":{"type":"boolean"}},"type":"object"},"Api.Core.Dto.Retargeting.RetargetingScript":{"properties":{"id":{"format":"int64","type":"integer"},"name":{"type":"string"},"script":{"type":"string"}},"type":"object"},"Api.Core.Dto.Tags.Tag":{"properties":{"datapoints":{"items":{"format":"int64","type":"integer"},"type":"array"},"groups":{"items":{"format":"int64","type":"integer"},"type":"array"},"id":{"format":"int64","type":"integer"},"name":{"type":"string"}},"type":"object"},"Api.Core.Dto.Tops.Top":{"properties":{"createdAt":{"description":" (A date in \"YmdHis\" format)","example":"20120203120530","type":"string"},"data":{"items":{"$ref":"#/definitions/Api.Core.Dto.Tops.TopItem"},"type":"array"},"key":{"type":"string"}},"type":"object"},"Api.Core.Dto.Tops.TopItem":{"properties":{"entityData":{"$ref":"#/definitions/System.Object"},"id":{"type":"string"},"lastHitDate":{"description":" (A date in \"YmdHis\" format)","example":"20120203120530","type":"string"},"spiderClicks":{"format":"int64","type":"integer"},"spiderHits":{"format":"int64","type":"integer"},"spiderViews":{"format":"int64","type":"integer"},"totalClicks":{"format":"int64","type":"integer"},"totalCommissionsCost":{"format":"double","type":"number"},"totalConversions":{"format":"int64","type":"integer"},"totalConversionsCost":{"format":"double","type":"number"},"totalConversionsValue":{"format":"double","type":"number"},"totalHits":{"format":"int64","type":"integer"},"totalViews":{"format":"int64","type":"integer"},"uniqueClicks":{"format":"int64","type":"integer"},"uniqueHits":{"format":"int64","type":"integer"},"uniqueViews":{"format":"int64","type":"integer"}},"type":"object"},"Api.Core.Requests.ConversionPatchBody":{"properties":{"Action":{"type":"string"},"Id":{"format":"int64","type":"integer"},"ReplaceId":{"format":"int64","type":"integer"}},"type":"object"},"Api.Core.Requests.DatapointsBatch":{"properties":{"List":{"items":{"$ref":"#/definitions/Api.Core.Dto.Datapoints.Datapoint"},"type":"array"}},"type":"object"},"Api.Core.Requests.DeleteBatch":{"properties":{"Entities":{"items":{"$ref":"#/definitions/Api.Core.Dto.EntityUriLong"},"type":"array"}},"type":"object"},"Api.Core.Requests.GenericTextPatch":{"properties":{"Text":{"type":"string"}},"type":"object"},"Api.Core.Requests.PatchBody":{"properties":{"Action":{"type":"string"},"Id":{"format":"int64","type":"integer"}},"type":"object"},"Api.Core.Requests.PatchBodyBatch":{"properties":{"PatchRequests":{"items":{"$ref":"#/definitions/Api.Core.Requests.PatchBody"},"type":"array"}},"type":"object"},"Api.Core.Requests.PermissionPatchRequest":{"properties":{"Action":{"type":"string"},"Id":{"format":"int64","type":"integer"},"Verb":{"type":"string"}},"type":"object"},"Api.Core.Responses.CountResponce":{"properties":{"count":{"format":"int64","type":"integer"}},"type":"object"},"Api.Core.Responses.EntitiesResponse[Api.Core.Dto.Accounting.DomainWhitelistEntry]":{"properties":{"entities":{"items":{"$ref":"#/definitions/Api.Core.Dto.Accounting.DomainWhitelistEntry"},"type":"array"}},"type":"object"},"Api.Core.Responses.EntitiesResponse[Api.Core.Dto.Accounting.IpBlacklistEntry]":{"properties":{"entities":{"items":{"$ref":"#/definitions/Api.Core.Dto.Accounting.IpBlacklistEntry"},"type":"array"}},"type":"object"},"Api.Core.Responses.EntitiesResponse[Api.Core.Dto.Aggregated.AggregatedResult]":{"properties":{"entities":{"items":{"$ref":"#/definitions/Api.Core.Dto.Aggregated.AggregatedResult"},"type":"array"}},"type":"object"},"Api.Core.Responses.EntitiesResponse[Api.Core.Dto.ClickStream.Hit]":{"properties":{"entities":{"items":{"$ref":"#/definitions/Api.Core.Dto.ClickStream.Hit"},"type":"array"}},"type":"object"},"Api.Core.Responses.EntitiesResponse[Api.Core.Dto.Grants.Grant]":{"properties":{"entities":{"items":{"$ref":"#/definitions/Api.Core.Dto.Grants.Grant"},"type":"array"}},"type":"object"},"Api.Core.Responses.EntitiesResponse[Api.Core.Responses.EntityUri[System.Int64]]":{"properties":{"entities":{"items":{"$ref":"#/definitions/Api.Core.Responses.EntityUri[System.Int64]"},"type":"array"}},"type":"object"},"Api.Core.Responses.EntityUri[System.Int64]":{"properties":{"id":{"format":"int64","type":"integer"},"uri":{"type":"string"}},"type":"object"},"Api.Core.Responses.ModifyBatchItemResponce[Api.Core.Dto.Datapoints.Datapoint,System.Int64]":{"properties":{"entityData":{"$ref":"#/definitions/Api.Core.Dto.Datapoints.Datapoint"},"errors":{"items":{"$ref":"#/definitions/ClickMeter.Infrastructure.Validation.ValidationFailure"},"type":"array"},"result":{"$ref":"#/definitions/Api.Core.Responses.EntityUri[System.Int64]"},"status":{"type":"string"}},"type":"object"},"ClickMeter.Infrastructure.Validation.ValidationFailure":{"properties":{"code":{"$ref":"#/definitions/System.Object"},"errorMessage":{"type":"string"},"errorValue":{"$ref":"#/definitions/System.Object"},"property":{"type":"string"}},"type":"object"},"System.Object":{"properties":{},"type":"object"}}} golang-github-go-openapi-spec-0.15.0/fixtures/expansion/clickmeter.yaml000066400000000000000000005257321332117131300262040ustar00rootroot00000000000000swagger: '2.0' schemes: - http - https host: 'apiv2.clickmeter.com:80' info: contact: email: api@clickmeter.com name: Api Support url: 'http://www.clickmeter.com/api' description: Api dashboard for ClickMeter API title: ClickMeter version: v2 x-logo: url: 'https://s3.amazonaws.com/clickmeter.com/Web/static/cmlogo.svg' x-origin: format: swagger url: 'http://api.v2.clickmeter.com.s3.amazonaws.com/docs/api-docs-v2.json' version: '2.0' x-providerName: clickmeter.com securityDefinitions: api_key: description: API Key Authentication in: header name: X-Clickmeter-AuthKey type: apiKey security: - api_key: [] paths: /account: get: consumes: [] deprecated: false produces: - application/json - text/json - application/xml - text/xml responses: '200': description: '' schema: $ref: '#/definitions/Api.Core.Dto.Accounting.User' '401': description: Unauthorized '500': description: Internal Server Error summary: Retrieve current account data tags: - Account post: consumes: - application/json - text/json - application/xml - text/xml - application/x-www-form-urlencoded deprecated: false parameters: - in: body name: value required: true schema: $ref: '#/definitions/Api.Core.Dto.Accounting.User' produces: - application/json - text/json - application/xml - text/xml responses: '200': description: '' schema: $ref: '#/definitions/Api.Core.Dto.Accounting.User' '401': description: Unauthorized '500': description: Internal Server Error summary: Update current account data tags: - Account /account/domainwhitelist: get: consumes: [] deprecated: false parameters: - description: Offset where to start from format: int32 in: query minLength: 0 name: offset required: false type: integer - description: Limit results to this number format: int32 in: query maxLength: 0 minLength: 0 name: limit required: false type: integer produces: - application/json - text/json responses: '200': description: '' schema: $ref: '#/definitions/Api.Core.Responses.EntitiesResponse[Api.Core.Dto.Accounting.DomainWhitelistEntry]' '401': description: Unauthorized '500': description: Internal Server Error summary: Retrieve list of a domains allowed to redirect in DDU mode tags: - Account post: consumes: - application/json - text/json - application/xml - text/xml - application/x-www-form-urlencoded deprecated: false parameters: - description: The entry to add in: body name: value required: true schema: $ref: '#/definitions/Api.Core.Dto.Accounting.DomainWhitelistEntry' produces: - application/json - text/json - application/xml - text/xml responses: '200': description: '' schema: $ref: '#/definitions/Api.Core.Dto.Accounting.DomainWhitelistEntry' '401': description: Unauthorized '500': description: Internal Server Error summary: Create an domain entry tags: - Account '/account/domainwhitelist/{whitelistId}': delete: consumes: [] deprecated: false parameters: - description: The id of the domain to delete in: path name: whitelistId required: true type: string produces: - application/json - text/json - application/xml - text/xml responses: '200': description: '' schema: $ref: '#/definitions/Api.Core.Dto.Accounting.DomainWhitelistEntry' '401': description: Unauthorized '500': description: Internal Server Error summary: Delete an domain entry tags: - Account /account/guests: get: consumes: [] deprecated: false parameters: - description: Offset where to start from format: int32 in: query minLength: 0 name: offset required: false type: integer - description: Limit results to this number format: int32 in: query maxLength: 0 minLength: 0 name: limit required: false type: integer - description: Field to sort by in: query name: sortBy required: false type: string - description: 'Direction of sort "asc" or "desc"' enum: - asc - desc in: query name: sortDirection required: false type: string - description: Filter fields by this pattern in: query name: textSearch required: false type: string produces: - application/json - text/json responses: '200': description: '' schema: $ref: '#/definitions/Api.Core.Responses.EntitiesResponse[Api.Core.Responses.EntityUri[System.Int64]]' '401': description: Unauthorized '500': description: Internal Server Error summary: Retrieve list of a guest tags: - Account post: consumes: - application/json - text/json - application/xml - text/xml - application/x-www-form-urlencoded deprecated: false parameters: - description: Guest object to create in: body name: value required: true schema: $ref: '#/definitions/Api.Core.Dto.Accounting.Guest' produces: - application/json - text/json - application/xml - text/xml responses: '200': description: '' schema: $ref: '#/definitions/Api.Core.Dto.Accounting.Guest' '401': description: Unauthorized '500': description: Internal Server Error summary: Create a guest tags: - Account /account/guests/count: get: consumes: [] deprecated: false parameters: - description: Filter fields by this pattern in: query name: textSearch required: false type: string produces: - application/json - text/json - application/xml - text/xml responses: '200': description: '' schema: $ref: '#/definitions/Api.Core.Responses.CountResponce' '401': description: Unauthorized '500': description: Internal Server Error summary: Retrieve count of guests tags: - Account '/account/guests/{guestId}': delete: consumes: [] deprecated: false parameters: - description: Id of the guest format: int64 in: path name: guestId required: true type: integer produces: - application/json - text/json - application/xml - text/xml responses: '200': description: '' schema: $ref: '#/definitions/Api.Core.Responses.EntityUri[System.Int64]' '401': description: Unauthorized '500': description: Internal Server Error summary: Delete a guest tags: - Account get: consumes: [] deprecated: false parameters: - description: Id of the guest format: int64 in: path name: guestId required: true type: integer produces: - application/json - text/json - application/xml - text/xml responses: '200': description: '' schema: $ref: '#/definitions/Api.Core.Dto.Accounting.Guest' '401': description: Unauthorized '500': description: Internal Server Error summary: Retrieve a guest tags: - Account post: consumes: - application/json - text/json - application/xml - text/xml - application/x-www-form-urlencoded deprecated: false parameters: - description: Id of the guest format: int64 in: path name: guestId required: true type: integer - description: Guest object with field updated in: body name: value required: true schema: $ref: '#/definitions/Api.Core.Dto.Accounting.Guest' produces: - application/json - text/json - application/xml - text/xml responses: '200': description: '' schema: $ref: '#/definitions/Api.Core.Dto.Accounting.Guest' '401': description: Unauthorized '500': description: Internal Server Error summary: Update a guest tags: - Account '/account/guests/{guestId}/permissions': get: consumes: [] deprecated: false parameters: - description: Id of the guest format: int64 in: path name: guestId required: true type: integer - description: 'Can be "datapoint" or "group"' enum: - datapoint - group in: query name: entityType required: false type: string - description: Offset where to start from format: int32 in: query minLength: 0 name: offset required: false type: integer - description: Limit results to this number format: int32 in: query maxLength: 0 minLength: 0 name: limit required: false type: integer - description: 'Can be "w" or "r"' enum: - r - w in: query name: type required: false type: string - description: Optional id of the datapoint/group entity to filter by format: int64 in: query name: entityId required: false type: integer produces: - application/json - text/json responses: '200': description: '' schema: $ref: '#/definitions/Api.Core.Responses.EntitiesResponse[Api.Core.Dto.Grants.Grant]' '401': description: Unauthorized '500': description: Internal Server Error summary: Retrieve permissions for a guest tags: - Account '/account/guests/{guestId}/permissions/count': get: consumes: [] deprecated: false parameters: - description: Id of the guest format: int64 in: path name: guestId required: true type: integer - description: 'Can be "datapoint" or "group"' enum: - datapoint - group in: query name: entityType required: false type: string - description: 'Can be "w" or "r"' enum: - r - w in: query name: type required: false type: string - description: Optional id of the datapoint/group entity to filter by format: int64 in: query name: entityId required: false type: integer produces: - application/json - text/json - application/xml - text/xml responses: '200': description: '' schema: $ref: '#/definitions/Api.Core.Responses.CountResponce' '401': description: Unauthorized '500': description: Internal Server Error summary: Retrieve count of the permissions for a guest tags: - Account '/account/guests/{guestId}/{type}/permissions/patch': post: consumes: - application/json - text/json - application/xml - text/xml - application/x-www-form-urlencoded deprecated: false parameters: - description: Id of the guest format: int64 in: path name: guestId required: true type: integer - description: 'Can be "datapoint" or "group"' enum: - datapoint - group in: path name: type required: true type: string - description: The patch permission request in: body name: body required: true schema: $ref: '#/definitions/Api.Core.Requests.PermissionPatchRequest' produces: - application/json - text/json - application/xml - text/xml responses: '200': description: '' schema: $ref: '#/definitions/Api.Core.Responses.EntityUri[System.Int64]' '401': description: Unauthorized '500': description: Internal Server Error summary: Change the permission on a shared object tags: - Account put: consumes: - application/json - text/json - application/xml - text/xml - application/x-www-form-urlencoded deprecated: false parameters: - description: Id of the guest format: int64 in: path name: guestId required: true type: integer - description: 'Can be "datapoint" or "group"' enum: - datapoint - group in: path name: type required: true type: string - description: The patch permission request in: body name: body required: true schema: $ref: '#/definitions/Api.Core.Requests.PermissionPatchRequest' produces: - application/json - text/json - application/xml - text/xml responses: '200': description: '' schema: $ref: '#/definitions/Api.Core.Responses.EntityUri[System.Int64]' '401': description: Unauthorized '500': description: Internal Server Error summary: Change the permission on a shared object tags: - Account /account/ipblacklist: get: consumes: [] deprecated: false parameters: - description: Offset where to start from format: int32 in: query minLength: 0 name: offset required: false type: integer - description: Limit results to this number format: int32 in: query maxLength: 0 minLength: 0 name: limit required: false type: integer produces: - application/json - text/json responses: '200': description: '' schema: $ref: '#/definitions/Api.Core.Responses.EntitiesResponse[Api.Core.Dto.Accounting.IpBlacklistEntry]' '401': description: Unauthorized '500': description: Internal Server Error summary: Retrieve list of a ip to exclude from event tracking tags: - Account post: consumes: - application/json - text/json - application/xml - text/xml - application/x-www-form-urlencoded deprecated: false parameters: - description: The entry to add in: body name: value required: true schema: $ref: '#/definitions/Api.Core.Dto.Accounting.IpBlacklistEntry' produces: - application/json - text/json - application/xml - text/xml responses: '200': description: '' schema: $ref: '#/definitions/Api.Core.Dto.Accounting.IpBlacklistEntry' '401': description: Unauthorized '500': description: Internal Server Error summary: Create an ip blacklist entry tags: - Account '/account/ipblacklist/{blacklistId}': delete: consumes: [] deprecated: false parameters: - description: The id of the ip to delete in: path name: blacklistId required: true type: string produces: - application/json - text/json - application/xml - text/xml responses: '200': description: '' schema: $ref: '#/definitions/Api.Core.Dto.Accounting.IpBlacklistEntry' '401': description: Unauthorized '500': description: Internal Server Error summary: Delete an ip blacklist entry tags: - Account /account/plan: get: consumes: [] deprecated: false produces: - application/json - text/json - application/xml - text/xml responses: '200': description: '' schema: $ref: '#/definitions/Api.Core.Dto.Accounting.Plan' '401': description: Unauthorized '500': description: Internal Server Error summary: Retrieve current account plan tags: - Account /aggregated: get: consumes: [] deprecated: false parameters: - description: Timeframe of the request. See list at $timeframeList enum: - today - yesterday - last7 - last30 - lastmonth - currentmonth - previousmonth - last90 - last120 - last180 - last12months - lastyear - currentyear - beginning - custom in: query name: timeFrame required: true type: string - description: 'If using a "custom" timeFrame you can specify the starting day (YYYYMMDD)' in: query name: fromDay required: false type: string - description: 'If using a "custom" timeFrame you can specify the ending day (YYYYMMDD)' in: query name: toDay required: false type: string - description: 'If using "yesterday" or "today" timeframe you can ask for the hourly detail' in: query name: hourly required: false type: boolean - description: '' in: query name: onlyFavorites required: false type: string produces: - application/json - text/json responses: '200': description: '' schema: $ref: '#/definitions/Api.Core.Dto.Aggregated.AggregatedResult' '401': description: Unauthorized '500': description: Internal Server Error summary: Retrieve statistics about this customer for a timeframe tags: - Aggregated /aggregated/list: get: consumes: [] deprecated: false parameters: - description: Timeframe of the request. See list at $timeframeList enum: - today - yesterday - last7 - last30 - lastmonth - currentmonth - previousmonth - last90 - last120 - last180 - last12months - lastyear - currentyear - beginning - custom in: query name: timeFrame required: true type: string - description: 'If using a "custom" timeFrame you can specify the starting day (YYYYMMDD)' in: query name: fromDay required: false type: string - description: 'If using a "custom" timeFrame you can specify the ending day (YYYYMMDD)' in: query name: toDay required: false type: string - description: 'The temporal entity you want to group by ("week"/"month"). If unspecified is "day".' enum: - week - month in: query name: groupBy required: false type: string produces: - application/json - text/json responses: '200': description: '' schema: $ref: '#/definitions/Api.Core.Responses.EntitiesResponse[Api.Core.Dto.Aggregated.AggregatedResult]' '401': description: Unauthorized '500': description: Internal Server Error summary: Retrieve statistics about this customer for a timeframe grouped by some temporal entity (day/week/month) tags: - Aggregated /aggregated/summary/conversions: get: consumes: [] deprecated: false parameters: - description: Timeframe of the request. See list at $timeframeList enum: - today - yesterday - last7 - last30 - lastmonth - currentmonth - previousmonth - last90 - last120 - last180 - last12months - lastyear - currentyear - beginning - custom in: query name: timeFrame required: true type: string - description: 'If using a "custom" timeFrame you can specify the starting day (YYYYMMDD)' in: query name: fromDay required: false type: string - description: 'If using a "custom" timeFrame you can specify the ending day (YYYYMMDD)' in: query name: toDay required: false type: string - description: 'Status of conversion ("deleted"/"active")' enum: - deleted - active in: query name: status required: false type: string - description: Field to sort by in: query name: sortBy required: false type: string - description: 'Direction of sort "asc" or "desc"' enum: - asc - desc in: query name: sortDirection required: false type: string - description: Offset where to start from format: int32 in: query minLength: 0 name: offset required: false type: integer - description: Limit results to this number format: int32 in: query maxLength: 0 minLength: 0 name: limit required: false type: integer - description: Filter fields by this pattern in: query name: textSearch required: false type: string produces: - application/json - text/json responses: '200': description: '' schema: $ref: '#/definitions/Api.Core.Dto.Aggregated.AggregatedSummaryResult' '401': description: Unauthorized '500': description: Internal Server Error summary: Retrieve statistics about a subset of conversions for a timeframe with conversions data tags: - Aggregated /aggregated/summary/datapoints: get: consumes: [] deprecated: false parameters: - description: Timeframe of the request. See list at $timeframeList enum: - today - yesterday - last7 - last30 - lastmonth - currentmonth - previousmonth - last90 - last120 - last180 - last12months - lastyear - currentyear - beginning - custom in: query name: timeFrame required: true type: string - description: 'Type of datapoint ("tl"/"tp")' enum: - tp - tl in: query name: type required: true type: string - description: 'If using a "custom" timeFrame you can specify the starting day (YYYYMMDD)' in: query name: fromDay required: false type: string - description: 'If using a "custom" timeFrame you can specify the ending day (YYYYMMDD)' in: query name: toDay required: false type: string - description: 'Status of datapoint ("deleted"/"active"/"paused"/"spam")' enum: - deleted - active - paused - spam in: query name: status required: false type: string - description: A comma separated list of tags you want to filter with. in: query name: tag required: false type: string - description: Is the datapoint marked as favourite in: query name: favourite required: false type: boolean - description: Field to sort by in: query name: sortBy required: false type: string - description: 'Direction of sort "asc" or "desc"' enum: - asc - desc in: query name: sortDirection required: false type: string - description: Offset where to start from format: int32 in: query minLength: 0 name: offset required: false type: integer - description: Limit results to this number format: int32 in: query maxLength: 0 minLength: 0 name: limit required: false type: integer - description: Filter by this group id format: int64 in: query name: groupId required: false type: integer - description: Filter fields by this pattern in: query name: textSearch required: false type: string produces: - application/json - text/json responses: '200': description: '' schema: $ref: '#/definitions/Api.Core.Dto.Aggregated.AggregatedSummaryResult' '401': description: Unauthorized '500': description: Internal Server Error summary: Retrieve statistics about a subset of datapoints for a timeframe with datapoints data tags: - Aggregated /aggregated/summary/groups: get: consumes: [] deprecated: false parameters: - description: Timeframe of the request. See list at $timeframeList enum: - today - yesterday - last7 - last30 - lastmonth - currentmonth - previousmonth - last90 - last120 - last180 - last12months - lastyear - currentyear - beginning - custom in: query name: timeFrame required: true type: string - description: 'If using a "custom" timeFrame you can specify the starting day (YYYYMMDD)' in: query name: fromDay required: false type: string - description: 'If using a "custom" timeFrame you can specify the ending day (YYYYMMDD)' in: query name: toDay required: false type: string - description: 'Status of group ("deleted"/"active")' enum: - deleted - active in: query name: status required: false type: string - description: A comma separated list of tags you want to filter with. in: query name: tag required: false type: string - description: Is the group marked as favourite in: query name: favourite required: false type: boolean - description: Field to sort by in: query name: sortBy required: false type: string - description: 'Direction of sort "asc" or "desc"' enum: - asc - desc in: query name: sortDirection required: false type: string - description: Offset where to start from format: int32 in: query minLength: 0 name: offset required: false type: integer - description: Limit results to this number format: int32 in: query maxLength: 0 minLength: 0 name: limit required: false type: integer - description: Filter fields by this pattern in: query name: textSearch required: false type: string produces: - application/json - text/json responses: '200': description: '' schema: $ref: '#/definitions/Api.Core.Dto.Aggregated.AggregatedSummaryResult' '401': description: Unauthorized '500': description: Internal Server Error summary: Retrieve statistics about a subset of groups for a timeframe with groups data tags: - Aggregated /clickstream: get: consumes: [] deprecated: false parameters: - description: 'Filter by this group id (mutually exclusive with "datapoint" and "conversion")' format: int64 in: query name: group required: false type: integer - description: 'Filter by this datapoint id (mutually exclusive with "group" and "conversion")' format: int64 in: query name: datapoint required: false type: integer - description: 'Filter by this conversion id (mutually exclusive with "datapoint" and "group")' format: int64 in: query name: conversion required: false type: integer - default: 50 description: Limit results to this number format: int32 in: query name: pageSize required: false type: integer - description: 'Filter event type ("spiders"/"uniques"/"nonuniques"/"conversions")' enum: - '' - spiders - uniques - nonuniques - conversions in: query name: filter required: false type: string produces: - application/json - text/json responses: '200': description: '' schema: $ref: '#/definitions/Api.Core.Responses.EntitiesResponse[Api.Core.Dto.ClickStream.Hit]' '401': description: Unauthorized '500': description: Internal Server Error summary: Retrieve the latest list of events of this account. Limited to last 100. tags: - ClickStream /conversions: get: consumes: [] deprecated: false parameters: - description: Offset where to start from format: int32 in: query minLength: 0 name: offset required: false type: integer - description: Limit results to this number format: int32 in: query maxLength: 0 minLength: 0 name: limit required: false type: integer - description: 'Status of conversion ("deleted"/"active")' enum: - deleted - active in: query name: status required: false type: string - description: Filter fields by this pattern in: query name: textSearch required: false type: string - description: Exclude conversions created before this date (YYYYMMDD) in: query name: createdAfter required: false type: string - description: Exclude conversions created after this date (YYYYMMDD) in: query name: createdBefore required: false type: string produces: - application/json - text/json responses: '200': description: '' schema: $ref: '#/definitions/Api.Core.Responses.EntitiesResponse[Api.Core.Responses.EntityUri[System.Int64]]' '401': description: Unauthorized '500': description: Internal Server Error summary: Retrieve a list of conversions tags: - Conversions post: consumes: - application/json - text/json - application/xml - text/xml - application/x-www-form-urlencoded deprecated: false parameters: - description: The body of the conversion in: body name: value required: true schema: $ref: '#/definitions/Api.Core.Dto.Conversions.Conversion' produces: - application/json - text/json - application/xml - text/xml responses: '200': description: '' schema: $ref: '#/definitions/Api.Core.Responses.EntityUri[System.Int64]' '401': description: Unauthorized '404': description: Not found '500': description: Internal Server Error summary: Create a conversion tags: - Conversions /conversions/aggregated/list: get: consumes: [] deprecated: false parameters: - description: Timeframe of the request. See list at $timeframeList enum: - today - yesterday - last7 - last30 - lastmonth - currentmonth - previousmonth - last90 - last120 - last180 - last12months - lastyear - currentyear - beginning - custom in: query name: timeFrame required: true type: string - description: 'If using a "custom" timeFrame you can specify the starting day (YYYYMMDD)' in: query name: fromDay required: false type: string - description: 'If using a "custom" timeFrame you can specify the ending day (YYYYMMDD)' in: query name: toDay required: false type: string - description: 'Status of conversion ("deleted"/"active")' enum: - deleted - active in: query name: status required: false type: string - description: 'The temporal entity you want to group by ("week"/"month"). If unspecified is "day".' enum: - week - month in: query name: groupBy required: false type: string produces: - application/json - text/json responses: '200': description: '' schema: $ref: '#/definitions/Api.Core.Responses.EntitiesResponse[Api.Core.Dto.Aggregated.AggregatedResult]' '401': description: Unauthorized '500': description: Internal Server Error summary: Retrieve statistics about this customer for a timeframe related to a subset of conversions grouped by some temporal entity (day/week/month) tags: - Conversions /conversions/count: get: consumes: [] deprecated: false parameters: - description: 'Status of conversion ("deleted"/"active")' enum: - deleted - active in: query name: status required: false type: string - description: Filter fields by this pattern in: query name: textSearch required: false type: string - description: Exclude conversions created before this date (YYYYMMDD) in: query name: createdAfter required: false type: string - description: Exclude conversions created after this date (YYYYMMDD) in: query name: createdBefore required: false type: string produces: - application/json - text/json - application/xml - text/xml responses: '200': description: '' schema: $ref: '#/definitions/Api.Core.Responses.CountResponce' '401': description: Unauthorized '500': description: Internal Server Error summary: Retrieve a count of conversions tags: - Conversions '/conversions/{conversionId}': delete: consumes: [] deprecated: false parameters: - description: Id of the conversion format: int64 in: path name: conversionId required: true type: integer produces: - application/json - text/json - application/xml - text/xml responses: '200': description: '' schema: $ref: '#/definitions/Api.Core.Responses.EntityUri[System.Int64]' '401': description: Unauthorized '404': description: Not found '500': description: Internal Server Error summary: Delete conversion specified by id tags: - Conversions get: consumes: [] deprecated: false parameters: - description: Id of the conversion format: int64 in: path name: conversionId required: true type: integer produces: - application/json - text/json - application/xml - text/xml responses: '200': description: '' schema: $ref: '#/definitions/Api.Core.Dto.Conversions.Conversion' '401': description: Unauthorized '404': description: Not found '500': description: Internal Server Error summary: Retrieve conversion specified by id tags: - Conversions post: consumes: - application/json - text/json - application/xml - text/xml - application/x-www-form-urlencoded deprecated: false parameters: - description: Id of the conversion format: int64 in: path name: conversionId required: true type: integer - description: Updated body of the conversion in: body name: value required: true schema: $ref: '#/definitions/Api.Core.Dto.Conversions.Conversion' produces: - application/json - text/json - application/xml - text/xml responses: '200': description: '' schema: $ref: '#/definitions/Api.Core.Responses.EntityUri[System.Int64]' '401': description: Unauthorized '404': description: Not found '500': description: Internal Server Error summary: Update conversion specified by id tags: - Conversions '/conversions/{conversionId}/aggregated': get: consumes: [] deprecated: false parameters: - description: Id of the conversion format: int64 in: path name: conversionId required: true type: integer - description: Timeframe of the request. See list at $timeframeList enum: - today - yesterday - last7 - last30 - lastmonth - currentmonth - previousmonth - last90 - last120 - last180 - last12months - lastyear - currentyear - beginning - custom in: query name: timeFrame required: true type: string - description: 'If using a "custom" timeFrame you can specify the starting day (YYYYMMDD)' in: query name: fromDay required: false type: string - description: 'If using a "custom" timeFrame you can specify the ending day (YYYYMMDD)' in: query name: toDay required: false type: string - description: Filter by this tag name in: query name: tag required: false type: string - description: Is the datapoint marked as favourite in: query name: favourite required: false type: boolean - description: 'If using "yesterday" or "today" timeframe you can ask for the hourly detail' in: query name: hourly required: false type: boolean produces: - application/json - text/json responses: '200': description: '' schema: $ref: '#/definitions/Api.Core.Dto.Aggregated.AggregatedResult' '401': description: Unauthorized '500': description: Internal Server Error summary: Retrieve statistics about this conversion for a timeframe tags: - Conversions '/conversions/{conversionId}/aggregated/list': get: consumes: [] deprecated: false parameters: - description: Id of the conversion format: int64 in: path name: conversionId required: true type: integer - description: Timeframe of the request. See list at $timeframeList enum: - today - yesterday - last7 - last30 - lastmonth - currentmonth - previousmonth - last90 - last120 - last180 - last12months - lastyear - currentyear - beginning - custom in: query name: timeFrame required: true type: string - description: 'If using a "custom" timeFrame you can specify the starting day (YYYYMMDD)' in: query name: fromDay required: false type: string - description: 'If using a "custom" timeFrame you can specify the ending day (YYYYMMDD)' in: query name: toDay required: false type: string - description: 'The temporal entity you want to group by ("week"/"month"). If unspecified is "day".' enum: - week - month in: query name: groupBy required: false type: string produces: - application/json - text/json responses: '200': description: '' schema: $ref: '#/definitions/Api.Core.Responses.EntitiesResponse[Api.Core.Dto.Aggregated.AggregatedResult]' '401': description: Unauthorized '500': description: Internal Server Error summary: Retrieve statistics about this conversion for a timeframe grouped by some temporal entity (day/week/month) tags: - Conversions '/conversions/{conversionId}/datapoints': get: consumes: [] deprecated: false parameters: - description: Id of the conversion format: int64 in: path name: conversionId required: true type: integer - description: Offset where to start from format: int32 in: query minLength: 0 name: offset required: false type: integer - description: Limit results to this number format: int32 in: query maxLength: 0 minLength: 0 name: limit required: false type: integer - description: 'Type of datapoint ("tl"/"tp")' enum: - tp - tl in: query name: type required: false type: string - description: 'Status of datapoint ("deleted"/"active"/"paused"/"spam")' enum: - deleted - active - paused - spam in: query name: status required: false type: string - description: Filter by this tag name in: query name: tags required: false type: string - description: Filter fields by this pattern in: query name: textSearch required: false type: string - description: Exclude datapoints created before this date (YYYYMMDD) in: query name: createdAfter required: false type: string - description: Exclude datapoints created after this date (YYYYMMDD) in: query name: createdBefore required: false type: string produces: - application/json - text/json responses: '200': description: '' schema: $ref: '#/definitions/Api.Core.Responses.EntitiesResponse[Api.Core.Responses.EntityUri[System.Int64]]' '401': description: Unauthorized '500': description: Internal Server Error summary: Retrieve a list of datapoints connected to this conversion tags: - Conversions '/conversions/{conversionId}/datapoints/batch/patch': put: consumes: - application/json - text/json - application/x-www-form-urlencoded deprecated: false parameters: - description: Id of the conversion format: int64 in: path name: conversionId required: true type: integer - description: Patch requests in: body name: data required: true schema: $ref: '#/definitions/Api.Core.Requests.PatchBodyBatch' produces: - application/json - text/json - application/xml - text/xml responses: '200': description: '' schema: $ref: '#/definitions/Api.Core.Responses.EntityUri[System.Int64]' '401': description: Unauthorized '404': description: Not found '500': description: Internal Server Error summary: Modify the association between a conversion and multiple datapoints tags: - Conversions '/conversions/{conversionId}/datapoints/count': get: consumes: [] deprecated: false parameters: - description: Id of the conversion format: int64 in: path name: conversionId required: true type: integer - description: 'Type of datapoint ("tl"/"tp")' in: query name: type required: false type: string - description: 'Status of datapoint ("deleted"/"active"/"paused"/"spam")' in: query name: status required: false type: string - description: Filter by this tag name in: query name: tags required: false type: string - description: Filter fields by this pattern in: query name: textSearch required: false type: string - description: Exclude datapoints created before this date (YYYYMMDD) in: query name: createdAfter required: false type: string - description: Exclude datapoints created after this date (YYYYMMDD) in: query name: createdBefore required: false type: string produces: - application/json - text/json - application/xml - text/xml responses: '200': description: '' schema: $ref: '#/definitions/Api.Core.Responses.CountResponce' '401': description: Unauthorized '500': description: Internal Server Error summary: Retrieve a count of datapoints connected to this conversion tags: - Conversions '/conversions/{conversionId}/datapoints/patch': put: consumes: - application/json - text/json - application/xml - text/xml - application/x-www-form-urlencoded deprecated: false parameters: - description: Id of the conversion format: int64 in: path name: conversionId required: true type: integer - description: Patch request in: body name: data required: true schema: $ref: '#/definitions/Api.Core.Requests.ConversionPatchBody' produces: - application/json - text/json - application/xml - text/xml responses: '200': description: '' schema: $ref: '#/definitions/Api.Core.Responses.EntityUri[System.Int64]' '401': description: Unauthorized '404': description: Not found '500': description: Internal Server Error summary: Modify the association between a conversion and a datapoint tags: - Conversions '/conversions/{conversionId}/hits': get: consumes: [] deprecated: false parameters: - description: Id of the conversion format: int64 in: path name: conversionId required: true type: integer - description: Timeframe of the request. See list at $timeframeList enum: - yesterday - last7 - last30 - lastmonth - currentmonth - previousmonth - last90 - last120 - last180 - custom in: query name: timeframe required: true type: string - description: Limit results to this number format: int32 in: query maxLength: 0 minLength: 0 name: limit required: false type: integer - description: "Offset where to start from (it's the lastKey field in the response object)" in: query name: offset required: false type: string - description: 'If using a "custom" timeFrame you can specify the starting day (YYYYMMDD)' in: query name: fromDay required: false type: string - description: 'If using a "custom" timeFrame you can specify the ending day (YYYYMMDD)' in: query name: toDay required: false type: string - description: 'Filter event type ("spiders"/"uniques"/"nonuniques"/"conversions")' enum: - spiders - uniques - nonuniques - conversions in: query name: filter required: false type: string produces: - application/json - text/json responses: '200': description: '' schema: $ref: '#/definitions/Api.Core.Dto.ClickStream.HitListPage' '401': description: Unauthorized '500': description: Internal Server Error summary: Retrieve the list of events related to this conversion. tags: - Conversions '/conversions/{conversionId}/notes': put: consumes: - application/json - text/json - application/xml - text/xml - application/x-www-form-urlencoded deprecated: false parameters: - description: Id of the conversion format: int64 in: path name: conversionId required: true type: integer - description: Patch requests in: body name: note required: true schema: $ref: '#/definitions/Api.Core.Requests.GenericTextPatch' produces: - application/json - text/json - application/xml - text/xml responses: '200': description: '' schema: $ref: '#/definitions/Api.Core.Responses.EntityUri[System.Int64]' '401': description: Unauthorized '403': description: Forbidden '404': description: Not found '500': description: Internal Server Error summary: 'Fast patch the "notes" field of a conversion' tags: - Conversions '/conversions/{conversionId}/reports': get: consumes: [] deprecated: false parameters: - description: Id of the conversion format: int64 in: path name: conversionId required: true type: integer - description: Type of the report. enum: - datapoints - groups - browsers - browsersfamilies - platforms - cities - countries - keywords - referrers - convparameters - destinations - languages - params in: query name: type required: true type: string - description: Timeframe of the request. See list at $timeframeList enum: - yesterday - last7 - last30 - lastmonth - currentmonth - previousmonth - last90 - last120 - last180 - beginning - custom in: query name: timeframe required: true type: string - description: Type of the event you want to filter this report with. By default no filter is applied. enum: - clicks - views in: query name: hittype required: false type: string - description: 'If using a "custom" timeFrame you can specify the starting day (YYYYMMDD)' in: query name: fromDay required: false type: string - description: 'If using a "custom" timeFrame you can specify the ending day (YYYYMMDD)' in: query name: toDay required: false type: string produces: - application/json - text/json responses: '200': description: '' schema: $ref: '#/definitions/Api.Core.Dto.Tops.Top' '401': description: Forbidden '404': description: Not found '500': description: Internal Server Error summary: Retrieve a top report connected to this conversion tags: - Conversions /datapoints: get: consumes: [] deprecated: false parameters: - default: 0 description: Where to start when retrieving elements. Default is 0 if not specified. format: int32 in: query minLength: 0 name: offset required: false type: integer - default: 20 description: Maximum elements to retrieve. Default to 20 if not specified. format: int32 in: query maxLength: 0 minLength: 0 name: limit required: false type: integer - description: 'Type of the datapoint ("tp"/"tl")' enum: - tp - tl in: query name: type required: false type: string - description: Status of the datapoint enum: - deleted - active - paused - spam in: query name: status required: false type: string - description: A comma separated list of tags you want to filter with. in: query name: tags required: false type: string - description: Filter fields by this pattern in: query name: textSearch required: false type: string - description: Filter fields by favourite status in: query name: onlyFavorites required: false type: boolean - description: Field to sort by in: query name: sortBy required: false type: string - description: 'Direction of sort "asc" or "desc"' enum: - asc - desc in: query name: sortDirection required: false type: string - description: Exclude datapoints created before this date (YYYYMMDD) in: query name: createdAfter required: false type: string - description: Exclude datapoints created after this date (YYYYMMDD) in: query name: createdBefore required: false type: string produces: - application/json - text/json responses: '200': description: '' schema: $ref: '#/definitions/Api.Core.Responses.EntitiesResponse[Api.Core.Responses.EntityUri[System.Int64]]' '401': description: Unauthorized '404': description: Not found '500': description: Internal Server Error summary: List of all the datapoints associated to the user tags: - DataPoints post: consumes: - application/json - text/json - application/x-www-form-urlencoded deprecated: false parameters: - description: The body of the datapoint in: body name: value required: true schema: $ref: '#/definitions/Api.Core.Dto.Datapoints.Datapoint' produces: - application/json - text/json - application/xml - text/xml responses: '200': description: '' schema: $ref: '#/definitions/Api.Core.Responses.EntityUri[System.Int64]' '401': description: Unauthorized '404': description: Not found '500': description: Internal Server Error summary: Create a datapoint tags: - DataPoints /datapoints/aggregated: get: consumes: [] deprecated: false parameters: - description: Timeframe of the request. See list at $timeframeList enum: - today - yesterday - last7 - last30 - lastmonth - currentmonth - previousmonth - last90 - last120 - last180 - last12months - lastyear - currentyear - beginning - custom in: query name: timeFrame required: true type: string - description: 'Type of datapoint ("tl"/"tp")' enum: - tp - tl in: query name: type required: false type: string - description: 'If using a "custom" timeFrame you can specify the starting day (YYYYMMDD)' in: query name: fromDay required: false type: string - description: 'If using a "custom" timeFrame you can specify the ending day (YYYYMMDD)' in: query name: toDay required: false type: string - description: 'If using "yesterday" or "today" timeframe you can ask for the hourly detail' in: query name: hourly required: false type: boolean - description: 'Status of datapoint ("deleted"/"active"/"paused"/"spam")' enum: - deleted - active - paused - spam in: query name: status required: false type: string - description: A comma separated list of tags you want to filter with. in: query name: tag required: false type: string - description: Is the datapoint is marked as favourite in: query name: favourite required: false type: boolean produces: - application/json - text/json responses: '200': description: '' schema: $ref: '#/definitions/Api.Core.Dto.Aggregated.AggregatedResult' '401': description: Unauthorized '500': description: Internal Server Error summary: Retrieve statistics about this customer for a timeframe by groups tags: - DataPoints /datapoints/aggregated/list: get: consumes: [] deprecated: false parameters: - description: 'Type of datapoint ("tl"/"tp")' enum: - tp - tl in: query name: type required: true type: string - description: Timeframe of the request. See list at $timeframeList enum: - today - yesterday - last7 - last30 - lastmonth - currentmonth - previousmonth - last90 - last120 - last180 - last12months - lastyear - currentyear - beginning - custom in: query name: timeFrame required: true type: string - description: 'If using a "custom" timeFrame you can specify the starting day (YYYYMMDD)' in: query name: fromDay required: false type: string - description: 'If using a "custom" timeFrame you can specify the ending day (YYYYMMDD)' in: query name: toDay required: false type: string - description: 'Status of datapoint ("deleted"/"active"/"paused"/"spam")' enum: - deleted - active - paused - spam in: query name: status required: false type: string - description: A comma separated list of tags you want to filter with. in: query name: tag required: false type: string - description: Is the datapoint is marked as favourite in: query name: favourite required: false type: boolean - description: 'The temporal entity you want to group by ("week"/"month"). If unspecified is "day".' enum: - week - month in: query name: groupBy required: false type: string produces: - application/json - text/json responses: '200': description: '' schema: $ref: '#/definitions/Api.Core.Responses.EntitiesResponse[Api.Core.Dto.Aggregated.AggregatedResult]' '401': description: Unauthorized '500': description: Internal Server Error summary: Retrieve statistics about all datapoints of this customer for a timeframe grouped by some temporal entity (day/week/month) tags: - DataPoints /datapoints/batch: delete: consumes: - application/json - text/json - application/x-www-form-urlencoded deprecated: false parameters: - description: A json containing the datapoints to delete. in: body name: batch required: true schema: $ref: '#/definitions/Api.Core.Requests.DeleteBatch' produces: - application/json - text/json responses: '200': description: '' schema: $ref: '#/definitions/Api.Core.Responses.ModifyBatchItemResponce[Api.Core.Dto.Datapoints.Datapoint,System.Int64]' '401': description: Unauthorized '404': description: Not found '500': description: Internal Server Error summary: Delete multiple datapoints tags: - DataPoints post: consumes: - application/json - text/json - application/x-www-form-urlencoded deprecated: false parameters: - description: A json containing the datapoints to update. in: body name: batch required: true schema: $ref: '#/definitions/Api.Core.Requests.DatapointsBatch' produces: - application/json - text/json responses: '200': description: '' schema: $ref: '#/definitions/Api.Core.Responses.ModifyBatchItemResponce[Api.Core.Dto.Datapoints.Datapoint,System.Int64]' '401': description: Unauthorized '404': description: Not found '500': description: Internal Server Error summary: Update multiple datapoints tags: - DataPoints put: consumes: - application/json - text/json - application/x-www-form-urlencoded deprecated: false parameters: - description: A json containing the datapoints to create. in: body name: batch required: true schema: $ref: '#/definitions/Api.Core.Requests.DatapointsBatch' produces: - application/json - text/json responses: '200': description: '' schema: $ref: '#/definitions/Api.Core.Responses.ModifyBatchItemResponce[Api.Core.Dto.Datapoints.Datapoint,System.Int64]' '401': description: Unauthorized '404': description: Not found '500': description: Internal Server Error summary: Create multiple datapoints tags: - DataPoints /datapoints/count: get: consumes: [] deprecated: false parameters: - description: 'Type of the datapoint ("tp"/"tl")' enum: - tp - tl in: query name: type required: false type: string - description: Status of the datapoint enum: - deleted - active - paused - spam in: query name: status required: false type: string - description: A comma separated list of tags you want to filter with. in: query name: tags required: false type: string - description: Filter fields by this pattern in: query name: textSearch required: false type: string - description: Filter fields by favourite status in: query name: onlyFavorites required: false type: boolean - description: Exclude datapoints created before this date (YYYYMMDD) in: query name: createdAfter required: false type: string - description: Exclude datapoints created after this date (YYYYMMDD) in: query name: createdBefore required: false type: string produces: - application/json - text/json - application/xml - text/xml responses: '200': description: '' schema: $ref: '#/definitions/Api.Core.Responses.CountResponce' '401': description: Unauthorized '404': description: Not found '500': description: Internal Server Error summary: Count the datapoints associated to the user tags: - DataPoints '/datapoints/{id}': delete: consumes: [] deprecated: false parameters: - description: The id of the datapoint format: int64 in: path name: id required: true type: integer produces: - application/json - text/json - application/xml - text/xml responses: '200': description: '' schema: $ref: '#/definitions/Api.Core.Responses.EntityUri[System.Int64]' '401': description: Unauthorized '404': description: Not found '500': description: Internal Server Error summary: Delete a datapoint tags: - DataPoints get: consumes: [] deprecated: false parameters: - description: The id of the datapoint format: int64 in: path name: id required: true type: integer produces: - application/json - text/json responses: '200': description: '' schema: $ref: '#/definitions/Api.Core.Dto.Datapoints.Datapoint' '401': description: Unauthorized '404': description: Not found '500': description: Internal Server Error summary: Get a datapoint tags: - DataPoints post: consumes: - application/json - text/json - application/x-www-form-urlencoded deprecated: false parameters: - description: The id of the datapoint format: int64 in: path name: id required: true type: integer - description: The body of the datapoint in: body name: value required: true schema: $ref: '#/definitions/Api.Core.Dto.Datapoints.Datapoint' produces: - application/json - text/json - application/xml - text/xml responses: '200': description: '' schema: $ref: '#/definitions/Api.Core.Responses.EntityUri[System.Int64]' '401': description: Unauthorized '404': description: Not found '500': description: Internal Server Error summary: Update a datapoint tags: - DataPoints '/datapoints/{id}/aggregated': get: consumes: [] deprecated: false parameters: - description: Id of the datapoint format: int64 in: path name: id required: true type: integer - description: Timeframe of the request. See list at $timeframeList enum: - today - yesterday - last7 - last30 - lastmonth - currentmonth - previousmonth - last90 - last120 - last180 - last12months - lastyear - currentyear - beginning - custom in: query name: timeFrame required: true type: string - description: 'If using a "custom" timeFrame you can specify the starting day (YYYYMMDD)' in: query name: fromDay required: false type: string - description: 'If using a "custom" timeFrame you can specify the ending day (YYYYMMDD)' in: query name: toDay required: false type: string - description: 'If using "yesterday" or "today" timeframe you can ask for the hourly detail' in: query name: hourly required: false type: boolean produces: - application/json - text/json responses: '200': description: '' schema: $ref: '#/definitions/Api.Core.Dto.Aggregated.AggregatedResult' '401': description: Unauthorized '500': description: Internal Server Error summary: Retrieve statistics about this datapoint for a timeframe tags: - DataPoints '/datapoints/{id}/aggregated/list': get: consumes: [] deprecated: false parameters: - description: Id of the datapoint format: int64 in: path name: id required: true type: integer - description: Timeframe of the request. See list at $timeframeList enum: - today - yesterday - last7 - last30 - lastmonth - currentmonth - previousmonth - last90 - last120 - last180 - last12months - lastyear - currentyear - beginning - custom in: query name: timeFrame required: true type: string - description: 'If using a "custom" timeFrame you can specify the starting day (YYYYMMDD)' in: query name: fromDay required: false type: string - description: 'If using a "custom" timeFrame you can specify the ending day (YYYYMMDD)' in: query name: toDay required: false type: string - description: 'The temporal entity you want to group by ("week"/"month"). If unspecified is "day".' enum: - week - month in: query name: groupBy required: false type: string produces: - application/json - text/json responses: '200': description: '' schema: $ref: '#/definitions/Api.Core.Responses.EntitiesResponse[Api.Core.Dto.Aggregated.AggregatedResult]' '401': description: Unauthorized '500': description: Internal Server Error summary: Retrieve statistics about this datapoint for a timeframe grouped by some temporal entity (day/week/month) tags: - DataPoints '/datapoints/{id}/favourite': put: consumes: [] deprecated: false parameters: - description: Id of the datapoint format: int64 in: path name: id required: true type: integer produces: - application/json - text/json - application/xml - text/xml responses: '200': description: '' schema: $ref: '#/definitions/Api.Core.Responses.EntityUri[System.Int64]' '401': description: Unauthorized '403': description: Forbidden '404': description: Not found '500': description: Internal Server Error summary: 'Fast switch the "favourite" field of a datapoint' tags: - DataPoints '/datapoints/{id}/hits': get: consumes: [] deprecated: false parameters: - description: Id of the datapoint format: int64 in: path name: id required: true type: integer - description: Timeframe of the request. See list at $timeframeList enum: - yesterday - last7 - last30 - lastmonth - currentmonth - previousmonth - last90 - last120 - last180 - custom in: query name: timeframe required: true type: string - description: Limit results to this number format: int32 in: query maxLength: 0 minLength: 0 name: limit required: false type: integer - description: "Offset where to start from (it's the lastKey field in the response object)" in: query name: offset required: false type: string - description: 'If using a "custom" timeFrame you can specify the starting day (YYYYMMDD)' in: query name: fromDay required: false type: string - description: 'If using a "custom" timeFrame you can specify the ending day (YYYYMMDD)' in: query name: toDay required: false type: string - description: 'Filter event type ("spiders"/"uniques"/"nonuniques"/"conversions")' enum: - spiders - uniques - nonuniques - conversions in: query name: filter required: false type: string produces: - application/json - text/json responses: '200': description: '' schema: $ref: '#/definitions/Api.Core.Dto.ClickStream.HitListPage' '401': description: Unauthorized '500': description: Internal Server Error summary: Retrieve the list of events related to this datapoint. tags: - DataPoints '/datapoints/{id}/notes': put: consumes: - application/json - text/json - application/xml - text/xml - application/x-www-form-urlencoded deprecated: false parameters: - description: Id of the datapoint format: int64 in: path name: id required: true type: integer - description: Patch requests in: body name: note required: true schema: $ref: '#/definitions/Api.Core.Requests.GenericTextPatch' produces: - application/json - text/json - application/xml - text/xml responses: '200': description: '' schema: $ref: '#/definitions/Api.Core.Responses.EntityUri[System.Int64]' '401': description: Unauthorized '403': description: Forbidden '404': description: Not found '500': description: Internal Server Error summary: 'Fast patch the "notes" field of a datapoint' tags: - DataPoints '/datapoints/{id}/reports': get: consumes: [] deprecated: false parameters: - description: Id of the datapoint format: int64 in: path name: id required: true type: integer - description: Type of the report. enum: - browsers - browsersfamilies - platforms - cities - countries - isps - ips - oss - ossfamilies - keywords - referrers - destinations - languages - params in: query name: type required: true type: string - description: Timeframe of the request. See list at $timeframeList enum: - yesterday - last7 - last30 - lastmonth - currentmonth - previousmonth - last90 - last120 - last180 - beginning - custom in: query name: timeframe required: true type: string - description: 'If using a "custom" timeFrame you can specify the starting day (YYYYMMDD)' in: query name: fromDay required: false type: string - description: 'If using a "custom" timeFrame you can specify the ending day (YYYYMMDD)' in: query name: toDay required: false type: string produces: - application/json - text/json responses: '200': description: '' schema: $ref: '#/definitions/Api.Core.Dto.Tops.Top' '401': description: Forbidden '404': description: Not found '500': description: Internal Server Error summary: Retrieve a top report connected to this datapoint tags: - DataPoints /domains: get: consumes: [] deprecated: false parameters: - description: Offset where to start from format: int32 in: query minLength: 0 name: offset required: false type: integer - description: Limit results to this number format: int32 in: query maxLength: 0 minLength: 0 name: limit required: false type: integer - default: system description: 'Type of domain ("system"/"go"/"personal"/"dedicated"). If not specified default is "system"' enum: - system - go - personal - dedicated in: query name: type required: false type: string - description: Filter domains with this anmen in: query name: name required: false type: string produces: - application/json - text/json responses: '200': description: '' schema: $ref: '#/definitions/Api.Core.Responses.EntitiesResponse[Api.Core.Responses.EntityUri[System.Int64]]' '401': description: Unauthorized '500': description: Internal Server Error summary: Retrieve a list of domains tags: - Domains post: consumes: - application/json - text/json - application/xml - text/xml - application/x-www-form-urlencoded deprecated: false parameters: - description: The domain to create in: body name: value required: true schema: $ref: '#/definitions/Api.Core.Dto.Domains.Domain' produces: - application/json - text/json - application/xml - text/xml responses: '200': description: '' schema: $ref: '#/definitions/Api.Core.Responses.EntityUri[System.Int64]' '401': description: Unauthorized '500': description: Internal Server Error summary: Create a domain tags: - Domains /domains/count: get: consumes: [] deprecated: false parameters: - default: system description: 'Type of domain ("system"/"go"/"personal"/"dedicated"). If not specified default is "system"' enum: - system - go - personal - dedicated in: query name: type required: false type: string - description: Filter domains with this anmen in: query name: name required: false type: string produces: - application/json - text/json - application/xml - text/xml responses: '200': description: '' schema: $ref: '#/definitions/Api.Core.Responses.CountResponce' '401': description: Unauthorized '500': description: Internal Server Error summary: Retrieve count of domains tags: - Domains '/domains/{id}': delete: consumes: [] deprecated: false parameters: - description: Id of domain format: int64 in: path name: id required: true type: integer produces: - application/json - text/json - application/xml - text/xml responses: '200': description: '' schema: $ref: '#/definitions/Api.Core.Responses.EntityUri[System.Int64]' '401': description: Unauthorized '500': description: Internal Server Error summary: Delete a domain tags: - Domains get: consumes: [] deprecated: false parameters: - description: Id of domain format: int64 in: path name: id required: true type: integer produces: - application/json - text/json - application/xml - text/xml responses: '200': description: '' schema: $ref: '#/definitions/Api.Core.Dto.Domains.Domain' '401': description: Unauthorized '500': description: Internal Server Error summary: Get a domain tags: - Domains post: consumes: - application/json - text/json - application/xml - text/xml - application/x-www-form-urlencoded deprecated: false parameters: - description: Id of domain format: int64 in: path name: id required: true type: integer - description: The domain to update in: body name: value required: true schema: $ref: '#/definitions/Api.Core.Dto.Domains.Domain' produces: - application/json - text/json - application/xml - text/xml responses: '200': description: '' schema: $ref: '#/definitions/Api.Core.Responses.EntityUri[System.Int64]' '401': description: Unauthorized '500': description: Internal Server Error summary: Update a domain tags: - Domains /groups: get: consumes: [] deprecated: false parameters: - default: 0 description: Where to start when retrieving elements. Default is 0 if not specified. format: int32 in: query minLength: 0 name: offset required: false type: integer - default: 20 description: Maximum elements to retrieve. Default to 20 if not specified. format: int32 in: query maxLength: 0 minLength: 0 name: limit required: false type: integer - description: Status of the group enum: - deleted - active in: query name: status required: false type: string - description: A comma separated list of tags you want to filter with. in: query name: tags required: false type: string - description: Filter fields by this pattern in: query name: textSearch required: false type: string - description: Exclude groups created before this date (YYYYMMDD) in: query name: createdAfter required: false type: string - description: Exclude groups created after this date (YYYYMMDD) in: query name: createdBefore required: false type: string - description: Write permission in: query name: write required: false type: boolean produces: - application/json - text/json responses: '200': description: '' schema: $ref: '#/definitions/Api.Core.Responses.EntitiesResponse[Api.Core.Responses.EntityUri[System.Int64]]' '401': description: Unauthorized '404': description: Not found '500': description: Internal Server Error summary: List of all the groups associated to the user. tags: - Groups post: consumes: - application/json - text/json - application/x-www-form-urlencoded deprecated: false parameters: - description: The body of the group in: body name: value required: true schema: $ref: '#/definitions/Api.Core.Dto.Groups.Group' produces: - application/json - text/json - application/xml - text/xml responses: '200': description: '' schema: $ref: '#/definitions/Api.Core.Responses.EntityUri[System.Int64]' '401': description: Unauthorized '404': description: Not found '500': description: Internal Server Error summary: Create a group tags: - Groups /groups/aggregated: get: consumes: [] deprecated: false parameters: - description: Timeframe of the request. See list at $timeframeList enum: - today - yesterday - last7 - last30 - lastmonth - currentmonth - previousmonth - last90 - last120 - last180 - last12months - lastyear - currentyear - beginning - custom in: query name: timeFrame required: true type: string - description: 'If using a "custom" timeFrame you can specify the starting day (YYYYMMDD)' in: query name: fromDay required: false type: string - description: 'If using a "custom" timeFrame you can specify the ending day (YYYYMMDD)' in: query name: toDay required: false type: string - description: 'If using "yesterday" or "today" timeframe you can ask for the hourly detail' in: query name: hourly required: false type: boolean - description: 'Status of group ("deleted"/"active")' enum: - deleted - active in: query name: status required: false type: string - description: A comma separated list of tags you want to filter with. in: query name: tag required: false type: string - description: Is the group is marked as favourite in: query name: favourite required: false type: boolean produces: - application/json - text/json responses: '200': description: '' schema: $ref: '#/definitions/Api.Core.Dto.Aggregated.AggregatedResult' '401': description: Unauthorized '500': description: Internal Server Error summary: Retrieve statistics about this customer for a timeframe by groups tags: - Groups /groups/aggregated/list: get: consumes: [] deprecated: false parameters: - description: Timeframe of the request. See list at $timeframeList enum: - today - yesterday - last7 - last30 - lastmonth - currentmonth - previousmonth - last90 - last120 - last180 - last12months - lastyear - currentyear - beginning - custom in: query name: timeFrame required: true type: string - description: 'If using a "custom" timeFrame you can specify the starting day (YYYYMMDD)' in: query name: fromDay required: false type: string - description: 'If using a "custom" timeFrame you can specify the ending day (YYYYMMDD)' in: query name: toDay required: false type: string - description: 'Status of group ("deleted"/"active")' in: query name: status required: false type: string - description: A comma separated list of tags you want to filter with. in: query name: tag required: false type: string - description: Is the group is marked as favourite in: query name: favourite required: false type: boolean - description: 'The temporal entity you want to group by ("week"/"month"). If unspecified is "day".' enum: - deleted - active in: query name: groupBy required: false type: string produces: - application/json - text/json responses: '200': description: '' schema: $ref: '#/definitions/Api.Core.Responses.EntitiesResponse[Api.Core.Dto.Aggregated.AggregatedResult]' '401': description: Unauthorized '500': description: Internal Server Error summary: Retrieve statistics about all groups of this customer for a timeframe grouped by some temporal entity (day/week/month) tags: - Groups /groups/count: get: consumes: [] deprecated: false parameters: - description: Status of the datapoint enum: - deleted - active in: query name: status required: false type: string - description: A comma separated list of tags you want to filter with. in: query name: tags required: false type: string - description: Filter fields by this pattern in: query name: textSearch required: false type: string - description: Exclude groups created before this date (YYYYMMDD) in: query name: createdAfter required: false type: string - description: Exclude groups created after this date (YYYYMMDD) in: query name: createdBefore required: false type: string - description: Write permission in: query name: write required: false type: boolean produces: - application/json - text/json - application/xml - text/xml responses: '200': description: '' schema: $ref: '#/definitions/Api.Core.Responses.CountResponce' '401': description: Unauthorized '404': description: Not found '500': description: Internal Server Error summary: Count the groups associated to the user. tags: - Groups '/groups/{id}': delete: consumes: [] deprecated: false parameters: - description: Id of the group format: int64 in: path name: id required: true type: integer produces: - application/json - text/json - application/xml - text/xml responses: '200': description: '' schema: $ref: '#/definitions/Api.Core.Responses.EntityUri[System.Int64]' '401': description: Unauthorized '404': description: Not found '500': description: Internal Server Error summary: Delete group specified by id tags: - Groups get: consumes: [] deprecated: false parameters: - description: The id of the group format: int64 in: path name: id required: true type: integer produces: - application/json - text/json responses: '200': description: '' schema: $ref: '#/definitions/Api.Core.Dto.Groups.Group' '401': description: Unauthorized '404': description: Not found '500': description: Internal Server Error summary: Get a group tags: - Groups post: consumes: - application/json - text/json - application/x-www-form-urlencoded deprecated: false parameters: - description: The id of the group format: int64 in: path name: id required: true type: integer - description: The body of the group in: body name: value required: true schema: $ref: '#/definitions/Api.Core.Dto.Groups.Group' produces: - application/json - text/json - application/xml - text/xml responses: '200': description: '' schema: $ref: '#/definitions/Api.Core.Responses.EntityUri[System.Int64]' '401': description: Unauthorized '404': description: Not found '500': description: Internal Server Error summary: Update a group tags: - Groups '/groups/{id}/aggregated': get: consumes: [] deprecated: false parameters: - description: Id of the group format: int64 in: path name: id required: true type: integer - description: Timeframe of the request. See list at $timeframeList enum: - today - yesterday - last7 - last30 - lastmonth - currentmonth - previousmonth - last90 - last120 - last180 - last12months - lastyear - currentyear - beginning - custom in: query name: timeFrame required: true type: string - description: 'If using a "custom" timeFrame you can specify the starting day (YYYYMMDD)' in: query name: fromDay required: false type: string - description: 'If using a "custom" timeFrame you can specify the ending day (YYYYMMDD)' in: query name: toDay required: false type: string - description: 'If using "yesterday" or "today" timeframe you can ask for the hourly detail' in: query name: hourly required: false type: boolean produces: - application/json - text/json responses: '200': description: '' schema: $ref: '#/definitions/Api.Core.Dto.Aggregated.AggregatedResult' '401': description: Unauthorized '500': description: Internal Server Error summary: Retrieve statistics about this group for a timeframe tags: - Groups '/groups/{id}/aggregated/list': get: consumes: [] deprecated: false parameters: - description: Id of the group format: int64 in: path name: id required: true type: integer - description: Timeframe of the request. See list at $timeframeList enum: - today - yesterday - last7 - last30 - lastmonth - currentmonth - previousmonth - last90 - last120 - last180 - last12months - lastyear - currentyear - beginning - custom in: query name: timeFrame required: true type: string - description: 'If using a "custom" timeFrame you can specify the starting day (YYYYMMDD)' in: query name: fromDay required: false type: string - description: 'If using a "custom" timeFrame you can specify the ending day (YYYYMMDD)' in: query name: toDay required: false type: string - description: 'The temporal entity you want to group by ("week"/"month"). If unspecified is "day".' enum: - week - month in: query name: groupBy required: false type: string produces: - application/json - text/json responses: '200': description: '' schema: $ref: '#/definitions/Api.Core.Responses.EntitiesResponse[Api.Core.Dto.Aggregated.AggregatedResult]' '401': description: Unauthorized '500': description: Internal Server Error summary: Retrieve statistics about this group for a timeframe grouped by some temporal entity (day/week/month) tags: - Groups '/groups/{id}/aggregated/summary': get: consumes: [] deprecated: false parameters: - description: Filter by this group id format: int64 in: path name: id required: true type: integer - description: Timeframe of the request. See list at $timeframeList enum: - today - yesterday - last7 - last30 - lastmonth - currentmonth - previousmonth - last90 - last120 - last180 - last12months - lastyear - currentyear - beginning - custom in: query name: timeFrame required: true type: string - description: 'Type of datapoint ("tl"/"tp")' enum: - tp - tl in: query name: type required: false type: string - description: 'If using a "custom" timeFrame you can specify the starting day (YYYYMMDD)' in: query name: fromDay required: false type: string - description: 'If using a "custom" timeFrame you can specify the ending day (YYYYMMDD)' in: query name: toDay required: false type: string - description: 'Status of datapoint ("deleted"/"active"/"paused"/"spam")' enum: - deleted - active in: query name: status required: false type: string - description: A comma separated list of tags you want to filter with. in: query name: tag required: false type: string - description: Is the datapoint marked as favourite in: query name: favourite required: false type: boolean - description: Field to sort by in: query name: sortBy required: false type: string - description: 'Direction of sort "asc" or "desc"' enum: - asc - desc in: query name: sortDirection required: false type: string - default: 0 description: Offset where to start from format: int32 in: query minLength: 0 name: offset required: false type: integer - default: 20 description: Limit results to this number format: int32 in: query maxLength: 0 minLength: 0 name: limit required: false type: integer - description: Filter fields by this pattern in: query name: textSearch required: false type: string produces: - application/json - text/json responses: '200': description: '' schema: $ref: '#/definitions/Api.Core.Dto.Aggregated.AggregatedSummaryResult' '401': description: Unauthorized '500': description: Internal Server Error summary: Retrieve statistics about a subset of datapoints for a timeframe with datapoints data tags: - Groups '/groups/{id}/datapoints': get: consumes: [] deprecated: false parameters: - description: Id of the group format: int64 in: path name: id required: true type: integer - default: 0 description: Where to start when retrieving elements. Default is 0 if not specified. format: int32 in: query minLength: 0 name: offset required: false type: integer - default: 20 description: Maximum elements to retrieve. Default to 20 if not specified. format: int32 in: query maxLength: 0 minLength: 0 name: limit required: false type: integer - description: 'Type of the datapoint ("tp"/"tl")' enum: - tp - tl in: query name: type required: false type: string - description: Status of the datapoint enum: - deleted - active - paused - spam in: query name: status required: false type: string - description: A comma separated list of tags you want to filter with. in: query name: tags required: false type: string - description: Filter fields by this pattern in: query name: textSearch required: false type: string - description: Filter fields by favourite status in: query name: onlyFavorites required: false type: boolean - description: Field to sort by in: query name: sortBy required: false type: string - description: 'Direction of sort "asc" or "desc"' enum: - asc - desc in: query name: sortDirection required: false type: string - description: Exclude datapoints created before this date (YYYYMMDD) in: query name: createdAfter required: false type: string - description: Exclude datapoints created after this date (YYYYMMDD) in: query name: createdBefore required: false type: string produces: - application/json - text/json responses: '200': description: '' schema: $ref: '#/definitions/Api.Core.Responses.EntitiesResponse[Api.Core.Responses.EntityUri[System.Int64]]' '401': description: Unauthorized '404': description: Not found '500': description: Internal Server Error summary: List of all the datapoints associated to the user in this group. tags: - Groups post: consumes: - application/json - text/json - application/x-www-form-urlencoded deprecated: false parameters: - description: The id of the group format: int64 in: path name: id required: true type: integer - description: The body of the datapoint in: body name: value required: true schema: $ref: '#/definitions/Api.Core.Dto.Datapoints.Datapoint' produces: - application/json - text/json - application/xml - text/xml responses: '200': description: '' schema: $ref: '#/definitions/Api.Core.Responses.EntityUri[System.Int64]' '401': description: Unauthorized '404': description: Not found '500': description: Internal Server Error summary: Create a datapoint in this group tags: - Groups '/groups/{id}/datapoints/count': get: consumes: [] deprecated: false parameters: - description: Id of the group format: int64 in: path name: id required: true type: integer - description: 'Type of the datapoint ("tp"/"tl")' enum: - tp - tl in: query name: type required: false type: string - description: Status of the datapoint enum: - deleted - active - paused - spam in: query name: status required: false type: string - description: A comma separated list of tags you want to filter with. in: query name: tags required: false type: string - description: Filter fields by this pattern in: query name: textSearch required: false type: string - description: Filter fields by favourite status in: query name: onlyFavorites required: false type: boolean - description: Exclude datapoints created before this date (YYYYMMDD) in: query name: createdAfter required: false type: string - description: Exclude datapoints created after this date (YYYYMMDD) in: query name: createdBefore required: false type: string produces: - application/json - text/json - application/xml - text/xml responses: '200': description: '' schema: $ref: '#/definitions/Api.Core.Responses.CountResponce' '401': description: Unauthorized '404': description: Not found '500': description: Internal Server Error summary: Count the datapoints associated to the user in this group. tags: - Groups '/groups/{id}/favourite': put: consumes: [] deprecated: false parameters: - description: Id of the group format: int64 in: path name: id required: true type: integer produces: - application/json - text/json - application/xml - text/xml responses: '200': description: '' schema: $ref: '#/definitions/Api.Core.Responses.EntityUri[System.Int64]' '401': description: Unauthorized '403': description: Forbidden '404': description: Not found '500': description: Internal Server Error summary: 'Fast switch the "favourite" field of a group' tags: - Groups '/groups/{id}/hits': get: consumes: [] deprecated: false parameters: - description: Id of the group format: int64 in: path name: id required: true type: integer - description: Timeframe of the request. See list at $timeframeList enum: - yesterday - last7 - last30 - lastmonth - currentmonth - previousmonth - last90 - last120 - last180 - custom in: query name: timeframe required: true type: string - description: Limit results to this number format: int32 in: query maxLength: 0 minLength: 0 name: limit required: false type: integer - description: "Offset where to start from (it's the lastKey field in the response object)" in: query name: offset required: false type: string - description: 'If using a "custom" timeFrame you can specify the starting day (YYYYMMDD)' in: query name: fromDay required: false type: string - description: 'If using a "custom" timeFrame you can specify the ending day (YYYYMMDD)' in: query name: toDay required: false type: string - description: 'Filter event type ("spiders"/"uniques"/"nonuniques"/"conversions")' enum: - spiders - uniques - nonuniques - conversions in: query name: filter required: false type: string produces: - application/json - text/json responses: '200': description: '' schema: $ref: '#/definitions/Api.Core.Dto.ClickStream.HitListPage' '401': description: Unauthorized '500': description: Internal Server Error summary: Retrieve the list of events related to this group. tags: - Groups '/groups/{id}/notes': put: consumes: - application/json - text/json - application/xml - text/xml - application/x-www-form-urlencoded deprecated: false parameters: - description: Id of the group format: int64 in: path name: id required: true type: integer - description: Patch requests in: body name: note required: true schema: $ref: '#/definitions/Api.Core.Requests.GenericTextPatch' produces: - application/json - text/json - application/xml - text/xml responses: '200': description: '' schema: $ref: '#/definitions/Api.Core.Responses.EntityUri[System.Int64]' '401': description: Unauthorized '403': description: Forbidden '404': description: Not found '500': description: Internal Server Error summary: 'Fast patch the "notes" field of a group' tags: - Groups '/groups/{id}/reports': get: consumes: [] deprecated: false parameters: - description: Id of the group format: int64 in: path name: id required: true type: integer - description: Type of the report. enum: - browsers - browsersfamilies - platforms - cities - countries - isps - ips - oss - ossfamilies - keywords - referrers - destinations - languages - params in: query name: type required: true type: string - description: Timeframe of the request. See list at $timeframeList enum: - yesterday - last7 - last30 - lastmonth - currentmonth - previousmonth - last90 - last120 - last180 - beginning - custom in: query name: timeframe required: true type: string - description: Type of the event you want to filter this report with. By default no filter is applied. enum: - clicks - views in: query name: hittype required: false type: string - description: 'If using a "custom" timeFrame you can specify the starting day (YYYYMMDD)' in: query name: fromDay required: false type: string - description: 'If using a "custom" timeFrame you can specify the ending day (YYYYMMDD)' in: query name: toDay required: false type: string produces: - application/json - text/json responses: '200': description: '' schema: $ref: '#/definitions/Api.Core.Dto.Tops.Top' '401': description: Forbidden '404': description: Not found '500': description: Internal Server Error summary: Retrieve a top report connected to this group tags: - Groups /hits: get: consumes: [] deprecated: false parameters: - description: Timeframe of the request. See list at $timeframeList enum: - yesterday - last7 - last30 - lastmonth - currentmonth - previousmonth - last90 - last120 - last180 - custom in: query name: timeframe required: true type: string - description: Limit results to this number format: int32 in: query name: limit required: false type: integer - description: "Offset where to start from (it's the lastKey field in the response object)" in: query name: offset required: false type: string - description: 'If using a "custom" timeFrame you can specify the starting day (YYYYMMDD)' in: query name: fromDay required: false type: string - description: 'If using a "custom" timeFrame you can specify the ending day (YYYYMMDD)' in: query name: toDay required: false type: string - description: 'Filter event type ("spiders"/"uniques"/"nonuniques"/"conversions")' enum: - spiders - uniques - nonuniques - conversions in: query name: filter required: false type: string produces: - application/json - text/json responses: '200': description: '' schema: $ref: '#/definitions/Api.Core.Dto.ClickStream.HitListPage' '401': description: Unauthorized '500': description: Internal Server Error summary: Retrieve the list of events related to this account. tags: - Hits /me: get: consumes: [] deprecated: false produces: - application/json - text/json - application/xml - text/xml responses: '200': description: '' schema: $ref: '#/definitions/Api.Core.Dto.Accounting.User' '401': description: Unauthorized '500': description: Internal Server Error summary: Retrieve current account data tags: - Me /me/plan: get: consumes: [] deprecated: false produces: - application/json - text/json - application/xml - text/xml responses: '200': description: '' schema: $ref: '#/definitions/Api.Core.Dto.Accounting.Plan' '401': description: Unauthorized '500': description: Internal Server Error summary: Retrieve current account plan tags: - Me /reports: get: consumes: [] deprecated: false parameters: - description: Type of the report. enum: - browsers - browsersfamilies - platforms - cities - countries - isps - ips - oss - ossfamilies - keywords - referrers - destinations - languages - params in: query name: type required: true type: string - description: Timeframe of the request. See list at $timeframeList enum: - yesterday - last7 - last30 - lastmonth - currentmonth - previousmonth - last90 - last120 - last180 - beginning - custom in: query name: timeframe required: true type: string - description: Type of the event you want to filter this report with. By default no filter is applied. in: query name: hittype required: false type: string - description: 'Filter by this group id (mutually exclusive with "datapoint" and "conversion")' format: int64 in: query name: group required: false type: integer - description: 'Filter by this datapoint id (mutually exclusive with "group" and "conversion")' format: int64 in: query name: datapoint required: false type: integer - description: 'Filter by this conversion id (mutually exclusive with "datapoint" and "group")' format: int64 in: query name: conversion required: false type: integer - description: 'If using a "custom" timeFrame you can specify the starting day (YYYYMMDD)' in: query name: fromDay required: false type: string - description: 'If using a "custom" timeFrame you can specify the ending day (YYYYMMDD)' in: query name: toDay required: false type: string produces: - application/json - text/json responses: '200': description: '' schema: $ref: '#/definitions/Api.Core.Dto.Tops.Top' '401': description: Forbidden '404': description: Not found '500': description: Internal Server Error summary: Retrieve a top report tags: - Reports /retargeting: get: consumes: [] deprecated: false parameters: - default: 0 description: Where to start when retrieving elements. Default is 0 if not specified. format: int32 in: query minLength: 0 name: offset required: false type: integer - default: 20 description: Maximum elements to retrieve. Default to 20 if not specified. format: int32 in: query maxLength: 0 minLength: 0 name: limit required: false type: integer produces: - application/json - text/json responses: '200': description: '' schema: $ref: '#/definitions/Api.Core.Responses.EntitiesResponse[Api.Core.Responses.EntityUri[System.Int64]]' '401': description: Unauthorized '404': description: Not found '500': description: Internal Server Error summary: List of all the retargeting scripts associated to the user tags: - Retargeting post: consumes: - application/json - text/json - application/xml - text/xml - application/x-www-form-urlencoded deprecated: false parameters: - description: The body of the retargeting script in: body name: value required: true schema: $ref: '#/definitions/Api.Core.Dto.Retargeting.RetargetingScript' produces: - application/json - text/json - application/xml - text/xml responses: '200': description: '' schema: $ref: '#/definitions/Api.Core.Responses.EntityUri[System.Int64]' '401': description: Unauthorized '404': description: Not found '500': description: Internal Server Error summary: Creates a retargeting script tags: - Retargeting /retargeting/count: get: consumes: [] deprecated: false produces: - application/json - text/json - application/xml - text/xml responses: '200': description: '' schema: $ref: '#/definitions/Api.Core.Responses.CountResponce' '401': description: Unauthorized '500': description: Internal Server Error summary: Retrieve count of retargeting scripts tags: - Retargeting '/retargeting/{id}': delete: consumes: [] deprecated: false parameters: - description: The id of the retargeting script format: int64 in: path name: id required: true type: integer produces: - application/json - text/json - application/xml - text/xml responses: '200': description: '' schema: $ref: '#/definitions/Api.Core.Responses.EntityUri[System.Int64]' '401': description: Unauthorized '404': description: Not found '500': description: Internal Server Error summary: Deletes a retargeting script (and remove associations) tags: - Retargeting get: consumes: [] deprecated: false parameters: - description: The id of the retargeting script format: int64 in: path name: id required: true type: integer produces: - application/json - text/json - application/xml - text/xml responses: '200': description: '' schema: $ref: '#/definitions/Api.Core.Dto.Retargeting.RetargetingScript' '401': description: Unauthorized '404': description: Not found '500': description: Internal Server Error summary: Get a retargeting script object tags: - Retargeting post: consumes: - application/json - text/json - application/xml - text/xml - application/x-www-form-urlencoded deprecated: false parameters: - description: The id of the retargeting script format: int64 in: path name: id required: true type: integer - description: The body of the retargeting script in: body name: value required: true schema: $ref: '#/definitions/Api.Core.Dto.Retargeting.RetargetingScript' produces: - application/json - text/json - application/xml - text/xml responses: '200': description: '' schema: $ref: '#/definitions/Api.Core.Responses.EntityUri[System.Int64]' '401': description: Unauthorized '404': description: Not found '500': description: Internal Server Error summary: Updates a retargeting script tags: - Retargeting '/retargeting/{id}/datapoints': get: consumes: [] deprecated: false parameters: - description: Id of the retargeting script format: int64 in: path name: id required: true type: integer - default: 0 description: Where to start when retrieving elements. Default is 0 if not specified. format: int32 in: query minLength: 0 name: offset required: false type: integer - default: 20 description: Maximum elements to retrieve. Default to 20 if not specified. format: int32 in: query maxLength: 0 minLength: 0 name: limit required: false type: integer - description: Status of the datapoint enum: - deleted - active - paused - spam in: query name: status required: false type: string - description: A comma separated list of tags you want to filter with. in: query name: tags required: false type: string - description: Filter fields by this pattern in: query name: textSearch required: false type: string - description: Filter fields by favourite status in: query name: onlyFavorites required: false type: boolean - description: Field to sort by in: query name: sortBy required: false type: string - description: 'Direction of sort "asc" or "desc"' enum: - asc - desc in: query name: sortDirection required: false type: string - description: Exclude datapoints created before this date (YYYYMMDD) in: query name: createdAfter required: false type: string - description: Exclude datapoints created after this date (YYYYMMDD) in: query name: createdBefore required: false type: string produces: - application/json - text/json responses: '200': description: '' schema: $ref: '#/definitions/Api.Core.Responses.EntitiesResponse[Api.Core.Responses.EntityUri[System.Int64]]' '401': description: Unauthorized '404': description: Not found '500': description: Internal Server Error summary: List of all the datapoints associated to the retargeting script. tags: - Retargeting '/retargeting/{id}/datapoints/count': get: consumes: [] deprecated: false parameters: - description: Id of the group format: int64 in: path name: id required: true type: integer - description: Status of the datapoint enum: - deleted - active - paused - spam in: query name: status required: false type: string - description: A comma separated list of tags you want to filter with. in: query name: tags required: false type: string - description: Filter fields by this pattern in: query name: textSearch required: false type: string - description: Filter fields by favourite status in: query name: onlyFavorites required: false type: boolean - description: Exclude datapoints created before this date (YYYYMMDD) in: query name: createdAfter required: false type: string - description: Exclude datapoints created after this date (YYYYMMDD) in: query name: createdBefore required: false type: string produces: - application/json - text/json - application/xml - text/xml responses: '200': description: '' schema: $ref: '#/definitions/Api.Core.Responses.CountResponce' '401': description: Unauthorized '404': description: Not found '500': description: Internal Server Error summary: Count the datapoints associated to the retargeting script. tags: - Retargeting /tags: get: consumes: [] deprecated: false parameters: - default: 0 description: Where to start when retrieving elements. Default is 0 if not specified. format: int32 in: query minLength: 0 name: offset required: false type: integer - default: 20 description: Maximum elements to retrieve. Default to 20 if not specified. format: int32 in: query maxLength: 0 minLength: 0 name: limit required: false type: integer - description: Name of the tag in: query name: name required: false type: string - description: Comma separated list of datapoints id to filter by in: query name: datapoints required: false type: string - description: Comma separated list of groups id to filter by in: query name: groups required: false type: string - description: Type of entity related to the tag enum: - tp - tl - dp - gr in: query name: type required: false type: string produces: - application/json - text/json responses: '200': description: '' schema: $ref: '#/definitions/Api.Core.Responses.EntitiesResponse[Api.Core.Responses.EntityUri[System.Int64]]' '401': description: Unauthorized '404': description: Not found '500': description: Internal Server Error summary: List of all the groups associated to the user filtered by this tag. tags: - Tags post: consumes: - application/json - text/json - application/x-www-form-urlencoded deprecated: false parameters: - description: The body of the tag in: body name: value required: true schema: $ref: '#/definitions/Api.Core.Dto.Tags.Tag' produces: - application/json - text/json - application/xml - text/xml responses: '200': description: '' schema: $ref: '#/definitions/Api.Core.Responses.EntityUri[System.Int64]' '401': description: Unauthorized '404': description: Not found '500': description: Internal Server Error summary: Create a tag tags: - Tags /tags/count: get: consumes: [] deprecated: false parameters: - description: Name of the tag in: query name: name required: false type: string - description: Comma separated list of datapoints id to filter by in: query name: datapoints required: false type: string - description: Comma separated list of groups id to filter by in: query name: groups required: false type: string - description: Type of entity related to the tag enum: - tp - tl - dp - gr in: query name: type required: false type: string produces: - application/json - text/json responses: '200': description: '' schema: $ref: '#/definitions/System.Object' '401': description: Unauthorized '404': description: Not found '500': description: Internal Server Error summary: List of all the groups associated to the user filtered by this tag. tags: - Tags '/tags/{tagId}': delete: consumes: [] deprecated: false parameters: - description: Id of the tag format: int64 in: path name: tagId required: true type: integer produces: - application/json - text/json responses: '200': description: '' schema: $ref: '#/definitions/System.Object' '401': description: Unauthorized '500': description: Internal Server Error summary: Delete a tag tags: - Tags get: consumes: [] deprecated: false parameters: - description: Id of the tag format: int64 in: path name: tagId required: true type: integer produces: - application/json - text/json responses: '200': description: '' schema: $ref: '#/definitions/Api.Core.Dto.Tags.Tag' '401': description: Unauthorized '500': description: Internal Server Error summary: Retrieve a tag tags: - Tags '/tags/{tagId}/datapoints': delete: consumes: [] deprecated: false parameters: - description: Id of the tag format: int64 in: path name: tagId required: true type: integer produces: - application/json - text/json - application/xml - text/xml responses: '200': description: '' schema: $ref: '#/definitions/Api.Core.Responses.EntityUri[System.Int64]' '401': description: Unauthorized '500': description: Internal Server Error summary: Delete the association of this tag with all datapoints tags: - Tags get: consumes: [] deprecated: false parameters: - description: Id of the tag. format: int64 in: path name: tagId required: true type: integer - default: 0 description: Where to start when retrieving elements. Default is 0 if not specified. format: int32 in: query minLength: 0 name: offset required: false type: integer - default: 20 description: Maximum elements to retrieve. Default to 20 if not specified. format: int32 in: query maxLength: 0 minLength: 0 name: limit required: false type: integer - description: 'Type of the datapoint ("tp"/"tl")' enum: - tp - tl in: query name: type required: false type: string - description: Status of the datapoint enum: - deleted - active - paused - spam in: query name: status required: false type: string - description: Filter fields by this pattern in: query name: textSearch required: false type: string - description: Exclude datapoints created before this date (YYYYMMDD) in: query name: createdAfter required: false type: string - description: Exclude datapoints created after this date (YYYYMMDD) in: query name: createdBefore required: false type: string produces: - application/json - text/json responses: '200': description: '' schema: $ref: '#/definitions/Api.Core.Responses.EntitiesResponse[Api.Core.Responses.EntityUri[System.Int64]]' '401': description: Unauthorized '404': description: Not found '500': description: Internal Server Error summary: List of all the datapoints associated to the user filtered by this tag tags: - Tags '/tags/{tagId}/datapoints/count': get: consumes: [] deprecated: false parameters: - description: Id of the tag. format: int64 in: path name: tagId required: true type: integer - description: 'Type of the datapoint ("tp"/"tl")' enum: - tp - tl in: query name: type required: false type: string - description: Status of the datapoint enum: - deleted - active - paused - spam in: query name: status required: false type: string - description: Filter fields by this pattern in: query name: textSearch required: false type: string - description: Exclude datapoints created before this date (YYYYMMDD) in: query name: createdAfter required: false type: string - description: Exclude datapoints created after this date (YYYYMMDD) in: query name: createdBefore required: false type: string produces: - application/json - text/json - application/xml - text/xml responses: '200': description: '' schema: $ref: '#/definitions/Api.Core.Responses.CountResponce' '401': description: Unauthorized '404': description: Not found '500': description: Internal Server Error summary: Count the datapoints associated to the user filtered by this tag tags: - Tags '/tags/{tagId}/datapoints/patch': put: consumes: - application/json - text/json - application/xml - text/xml - application/x-www-form-urlencoded deprecated: false parameters: - description: Id of the tag format: int64 in: path name: tagId required: true type: integer - description: The body patch in: body name: data required: true schema: $ref: '#/definitions/Api.Core.Requests.PatchBody' produces: - application/json - text/json - application/xml - text/xml responses: '200': description: '' schema: $ref: '#/definitions/Api.Core.Responses.EntityUri[System.Int64]' '401': description: Unauthorized '404': description: Not found '500': description: Internal Server Error summary: Associate/Deassociate a tag with a datapoint tags: - Tags '/tags/{tagId}/groups': delete: consumes: [] deprecated: false parameters: - description: Id of the tag format: int64 in: path name: tagId required: true type: integer produces: - application/json - text/json - application/xml - text/xml responses: '200': description: '' schema: $ref: '#/definitions/Api.Core.Responses.EntityUri[System.Int64]' '401': description: Unauthorized '500': description: Internal Server Error summary: Delete the association of this tag with all groups tags: - Tags get: consumes: [] deprecated: false parameters: - description: Id of the tag. format: int64 in: path name: tagId required: true type: integer - default: 0 description: Where to start when retrieving elements. Default is 0 if not specified. format: int32 in: query minLength: 0 name: offset required: false type: integer - default: 20 description: Maximum elements to retrieve. Default to 20 if not specified. format: int32 in: query maxLength: 0 minLength: 0 name: limit required: false type: integer - description: Status of the datapoint enum: - deleted - active in: query name: status required: false type: string - description: Filter fields by this pattern in: query name: textSearch required: false type: string - description: Exclude groups created before this date (YYYYMMDD) in: query name: createdAfter required: false type: string - description: Exclude groups created after this date (YYYYMMDD) in: query name: createdBefore required: false type: string produces: - application/json - text/json responses: '200': description: '' schema: $ref: '#/definitions/Api.Core.Responses.EntitiesResponse[Api.Core.Responses.EntityUri[System.Int64]]' '401': description: Unauthorized '404': description: Not found '500': description: Internal Server Error summary: List of all the groups associated to the user filtered by this tag. tags: - Tags '/tags/{tagId}/groups/count': get: consumes: [] deprecated: false parameters: - description: Id of the tag. format: int64 in: path name: tagId required: true type: integer - description: Status of the datapoint enum: - deleted - active in: query name: status required: false type: string - description: Filter fields by this pattern in: query name: textSearch required: false type: string - description: Exclude groups created before this date (YYYYMMDD) in: query name: createdAfter required: false type: string - description: Exclude groups created after this date (YYYYMMDD) in: query name: createdBefore required: false type: string produces: - application/json - text/json - application/xml - text/xml responses: '200': description: '' schema: $ref: '#/definitions/Api.Core.Responses.CountResponce' '401': description: Unauthorized '404': description: Not found '500': description: Internal Server Error summary: Count the groups associated to the user filtered by this tag tags: - Tags '/tags/{tagId}/groups/patch': put: consumes: - application/json - text/json - application/xml - text/xml - application/x-www-form-urlencoded deprecated: false parameters: - description: Id of the tag format: int64 in: path name: tagId required: true type: integer - description: The body patch in: body name: data required: true schema: $ref: '#/definitions/Api.Core.Requests.PatchBody' produces: - application/json - text/json - application/xml - text/xml responses: '200': description: '' schema: $ref: '#/definitions/Api.Core.Responses.EntityUri[System.Int64]' '401': description: Unauthorized '404': description: Not found '500': description: Internal Server Error summary: Associate/Deassociate a tag with a group tags: - Tags '/tags/{tagId}/name': put: consumes: - application/json - text/json - application/xml - text/xml - application/x-www-form-urlencoded deprecated: false parameters: - description: Id of the tag format: int64 in: path name: tagId required: true type: integer - description: The body patch in: body name: data required: true schema: $ref: '#/definitions/Api.Core.Requests.GenericTextPatch' produces: - application/json - text/json - application/xml - text/xml responses: '200': description: '' schema: $ref: '#/definitions/Api.Core.Responses.EntityUri[System.Int64]' '401': description: Unauthorized '500': description: Internal Server Error summary: Fast patch a tag name tags: - Tags definitions: Api.Core.Dto.Accounting.ConversionOptions: properties: hideComCost: type: boolean hideCost: type: boolean hideCount: type: boolean hideParams: type: boolean hideValue: type: boolean percentCommission: format: int32 type: integer percentValue: format: int32 type: integer type: object Api.Core.Dto.Accounting.DomainWhitelistEntry: properties: id: type: string name: type: string type: object Api.Core.Dto.Accounting.ExtendedGrants: properties: allowAllGrants: type: boolean allowGroupCreation: type: boolean type: object Api.Core.Dto.Accounting.Guest: properties: apiKey: type: string conversionOptions: $ref: '#/definitions/Api.Core.Dto.Accounting.ConversionOptions' creationDate: description: ' (A date in "YmdHis" format)' example: '20120203120530' type: string currentGrant: $ref: '#/definitions/Api.Core.Dto.Grants.Grant' dateFormat: type: string decimalSeparator: type: string email: type: string extendedGrants: $ref: '#/definitions/Api.Core.Dto.Accounting.ExtendedGrants' groupGrants: format: int64 type: integer hitOptions: $ref: '#/definitions/Api.Core.Dto.Accounting.HitOptions' id: format: int64 type: integer key: type: string language: type: string loginCount: format: int32 type: integer name: type: string notes: type: string numberGroupSeparator: type: string password: type: string timeFormat: enum: - AmPm - H24 type: string timeZone: format: int32 type: integer timeframeMinDate: description: ' (A date in "YmdHis" format)' example: '20120203120530' type: string timezonename: type: string tlGrants: format: int64 type: integer tpGrants: format: int64 type: integer userName: type: string type: object Api.Core.Dto.Accounting.HitOptions: properties: hideReferrer: type: boolean type: object Api.Core.Dto.Accounting.IpBlacklistEntry: properties: id: type: string ip: type: string type: object Api.Core.Dto.Accounting.Plan: properties: allowedPersonalDomains: format: int32 type: integer allowedPersonalUrls: format: int32 type: integer billingPeriodEnd: description: ' (A date in "YmdHis" format)' example: '20120203120530' type: string billingPeriodStart: description: ' (A date in "YmdHis" format)' example: '20120203120530' type: string bonusMonthlyEvents: format: int64 type: integer maximumDatapoints: format: int64 type: integer maximumGuests: format: int64 type: integer monthlyEvents: format: int64 type: integer name: type: string price: format: double type: number profileId: format: int64 type: integer recurring: type: boolean recurringPeriod: format: int32 type: integer usedDatapoints: format: int64 type: integer usedMonthlyEvents: format: int64 type: integer type: object Api.Core.Dto.Accounting.User: properties: boGoVal: type: string bonusClicks: format: int64 type: integer companyName: type: string companyRole: type: string email: type: string firstName: type: string lastName: type: string phone: type: string redirectOnly: type: boolean registrationDate: description: ' (A date in "YmdHis" format)' example: '20120203120530' type: string timeframeMinDate: description: ' (A date in "YmdHis" format)' example: '20120203120530' type: string timezone: format: int32 type: integer timezonename: type: string type: object Api.Core.Dto.Aggregated.AggregatedResult: properties: activityDay: description: ' (A date in "YmdHis" format)' example: '20120203120530' type: string commissionsCost: format: double type: number conversionsCost: format: double type: number conversionsValue: format: double type: number convertedClicks: format: int64 type: integer entityData: $ref: '#/definitions/System.Object' entityId: type: string fromDay: description: ' (A date in "YmdHis" format)' example: '20120203120530' type: string hourlyBreakDown: additionalProperties: $ref: '#/definitions/Api.Core.Dto.Aggregated.AggregatedResult' type: object lastHitDate: description: ' (A date in "YmdHis" format)' example: '20120203120530' type: string spiderHitsCount: format: int64 type: integer toDay: description: ' (A date in "YmdHis" format)' example: '20120203120530' type: string totalClicks: format: int64 type: integer totalViews: format: int64 type: integer uniqueClicks: format: int64 type: integer uniqueConversions: format: int64 type: integer uniqueViews: format: int64 type: integer type: object Api.Core.Dto.Aggregated.AggregatedSummaryResult: properties: count: format: int64 type: integer limit: format: int32 type: integer offset: format: int64 type: integer result: items: $ref: '#/definitions/Api.Core.Dto.Aggregated.AggregatedResult' type: array type: object Api.Core.Dto.ClickStream.Hit: properties: accessTime: description: ' (A date in "YmdHis" format)' example: '20120203120530' type: string browser: $ref: '#/definitions/Api.Core.Dto.ClickStream.HitBrowserInfo' clientLanguage: type: string conversion1: $ref: '#/definitions/Api.Core.Dto.ClickStream.HitConversionInfo' conversion2: $ref: '#/definitions/Api.Core.Dto.ClickStream.HitConversionInfo' conversion3: $ref: '#/definitions/Api.Core.Dto.ClickStream.HitConversionInfo' conversion4: $ref: '#/definitions/Api.Core.Dto.ClickStream.HitConversionInfo' conversion5: $ref: '#/definitions/Api.Core.Dto.ClickStream.HitConversionInfo' conversions: items: $ref: '#/definitions/Api.Core.Dto.ClickStream.HitConversionInfo' type: array entity: $ref: '#/definitions/Api.Core.Dto.ClickStream.HitDatapointInfo' ip: type: string isProxy: type: string isSpider: type: string isUnique: type: string location: $ref: '#/definitions/Api.Core.Dto.ClickStream.HitLocationInfo' org: type: string os: $ref: '#/definitions/Api.Core.Dto.ClickStream.HitOsInfo' queryParams: type: string realDestinationUrl: type: string referer: type: string source: $ref: '#/definitions/Api.Core.Dto.ClickStream.HitSource' type: type: string type: object Api.Core.Dto.ClickStream.HitBrowserInfo: properties: browserType: type: string familyId: format: int64 type: integer familyName: type: string id: format: int64 type: integer name: type: string type: object Api.Core.Dto.ClickStream.HitConversionInfo: properties: accessTime: description: ' (A date in "YmdHis" format)' example: '20120203120530' type: string comcost: format: double type: number cost: format: double type: number date: description: ' (A date in "YmdHis" format)' example: '20120203120530' type: string deleted: type: boolean id: format: int64 type: integer name: type: string parameter: type: string value: format: double type: number type: object Api.Core.Dto.ClickStream.HitDatapointInfo: properties: creationDate: description: ' (A date in "YmdHis" format)' example: '20120203120530' type: string datapointFavourite: type: boolean datapointId: format: int64 type: integer datapointName: type: string datapointTitle: type: string datapointType: type: string destinationUrl: type: string groupId: format: int64 type: integer groupName: type: string isABTest: type: boolean isPrivateShared: type: boolean isPublic: type: boolean notes: type: string status: enum: - Active - Paused - Abuse - Deleted type: string tags: items: $ref: '#/definitions/Api.Core.Dto.Tags.Tag' type: array trackingCode: type: string type: object Api.Core.Dto.ClickStream.HitListPage: properties: hits: items: $ref: '#/definitions/Api.Core.Dto.ClickStream.Hit' type: array lastKey: type: string type: object Api.Core.Dto.ClickStream.HitLocationInfo: properties: areacode: type: string city: type: string country: type: string latitude: format: double type: number longitude: format: double type: number metrocode: type: string organization: type: string postalcode: type: string region: type: string regionName: type: string type: object Api.Core.Dto.ClickStream.HitOsInfo: properties: familyId: format: int64 type: integer familyName: type: string id: format: int64 type: integer name: type: string type: object Api.Core.Dto.ClickStream.HitSource: properties: id: format: int64 type: integer name: type: string param: type: string type: object Api.Core.Dto.Conversions.Conversion: properties: code: type: string creationDate: description: ' (A date in "YmdHis" format)' example: '20120203120530' type: string deleted: type: boolean description: type: string id: format: int64 type: integer name: type: string protocol: enum: - Http - Https type: string value: format: double type: number type: object Api.Core.Dto.Datapoints.BrowserBaseDestinationItem: properties: emailDestinationUrl: type: string mobileDestinationUrl: type: string spidersDestinationUrl: type: string type: object Api.Core.Dto.Datapoints.Datapoint: properties: creationDate: description: ' (A date in "YmdHis" format)' example: '20120203120530' type: string encodeIp: type: boolean fifthConversionId: format: int64 type: integer fifthConversionName: type: string firstConversionId: format: int64 type: integer firstConversionName: type: string fourthConversionId: format: int64 type: integer fourthConversionName: type: string groupId: format: int64 type: integer groupName: type: string id: format: int64 type: integer isPublic: type: boolean isSecured: type: boolean lightTracking: type: boolean name: type: string notes: type: string preferred: type: boolean redirectOnly: type: boolean secondConversionId: format: int64 type: integer secondConversionName: type: string status: enum: - Active - Paused - Abuse - Deleted type: string tags: items: $ref: '#/definitions/Api.Core.Dto.Tags.Tag' type: array thirdConversionId: format: int64 type: integer thirdConversionName: type: string title: type: string trackingCode: type: string type: enum: - TrackingLink - TrackingPixel type: string typeTL: $ref: '#/definitions/Api.Core.Dto.Datapoints.TrackingLinkSpecifics' typeTP: $ref: '#/definitions/Api.Core.Dto.Datapoints.TrackingPixelSpecifics' writePermited: type: boolean type: object Api.Core.Dto.Datapoints.DatapointRetargetingInfo: properties: id: format: int64 type: integer name: type: string type: object Api.Core.Dto.Datapoints.MultipleDestinationItem: properties: url: type: string type: object Api.Core.Dto.Datapoints.TrackingLinkSpecifics: properties: appendQuery: type: boolean browserDestinationItem: $ref: '#/definitions/Api.Core.Dto.Datapoints.BrowserBaseDestinationItem' destinationMode: enum: - Simple - RandomDestination - DestinationByLanguage - SpilloverDestination - DynamicUrl - BrowserDestination - DestinationByNation - UniqueDestination - SequentialDestination - WeightedDestination type: string domainId: format: int32 type: integer encodeUrl: type: boolean expirationClicks: format: int64 type: integer expirationDate: description: ' (A date in "YmdHis" format)' example: '20120203120530' type: string firstUrl: type: string goDomainId: format: int32 type: integer hideUrl: type: boolean hideUrlTitle: type: string isABTest: type: boolean password: type: string pauseAfterClicksExpiration: type: boolean pauseAfterDateExpiration: type: boolean randomDestinationItems: items: $ref: '#/definitions/Api.Core.Dto.Datapoints.MultipleDestinationItem' type: array redirectType: enum: - PermanentRedirect - TemporaryRedirect type: string referrerClean: enum: - None - Clean - Myself type: string scripts: items: $ref: '#/definitions/Api.Core.Dto.Datapoints.DatapointRetargetingInfo' type: array sequentialDestinationItems: items: $ref: '#/definitions/Api.Core.Dto.Datapoints.MultipleDestinationItem' type: array spilloverDestinationItems: items: $ref: '#/definitions/Api.Core.Dto.Datapoints.MultipleDestinationItem' type: array uniqueDestinationItem: $ref: '#/definitions/Api.Core.Dto.Datapoints.UniqueDestinationItem' url: type: string urlAfterClicksExpiration: type: string urlAfterDateExpiration: type: string urlsByLanguage: items: $ref: '#/definitions/Api.Core.Dto.Datapoints.UrlByLanguageItem' type: array urlsByNation: items: $ref: '#/definitions/Api.Core.Dto.Datapoints.UrlByNationItem' type: array weightedDestinationItems: items: $ref: '#/definitions/Api.Core.Dto.Datapoints.WeightedDestinationItem' type: array type: object Api.Core.Dto.Datapoints.TrackingPixelSpecifics: properties: parameterNote: type: string type: object Api.Core.Dto.Datapoints.UniqueDestinationItem: properties: firstDestinationUrl: type: string type: object Api.Core.Dto.Datapoints.UrlByLanguageItem: properties: languageCode: type: string url: type: string type: object Api.Core.Dto.Datapoints.UrlByNationItem: properties: nation: type: string url: type: string type: object Api.Core.Dto.Datapoints.WeightedDestinationItem: properties: url: type: string weight: format: int32 type: integer type: object Api.Core.Dto.Domains.Domain: properties: custom404: type: string customHomepage: type: string id: format: int64 type: integer name: type: string type: enum: - System - Go - Dedicated - Personal type: string type: object Api.Core.Dto.EntityUriLong: properties: id: format: int64 type: integer uri: type: string type: object Api.Core.Dto.Grants.Grant: properties: DatapointType: type: string Entity: $ref: '#/definitions/Api.Core.Responses.EntityUri[System.Int64]' EntityName: type: string EntityType: type: string Type: type: string type: object Api.Core.Dto.Groups.Group: properties: creationDate: description: ' (A date in "YmdHis" format)' example: '20120203120530' type: string deleted: type: boolean id: format: int64 type: integer isPublic: type: boolean name: type: string notes: type: string preferred: type: boolean redirectOnly: type: boolean tags: items: $ref: '#/definitions/Api.Core.Dto.Tags.Tag' type: array writePermited: type: boolean type: object Api.Core.Dto.Retargeting.RetargetingScript: properties: id: format: int64 type: integer name: type: string script: type: string type: object Api.Core.Dto.Tags.Tag: properties: datapoints: items: format: int64 type: integer type: array groups: items: format: int64 type: integer type: array id: format: int64 type: integer name: type: string type: object Api.Core.Dto.Tops.Top: properties: createdAt: description: ' (A date in "YmdHis" format)' example: '20120203120530' type: string data: items: $ref: '#/definitions/Api.Core.Dto.Tops.TopItem' type: array key: type: string type: object Api.Core.Dto.Tops.TopItem: properties: entityData: $ref: '#/definitions/System.Object' id: type: string lastHitDate: description: ' (A date in "YmdHis" format)' example: '20120203120530' type: string spiderClicks: format: int64 type: integer spiderHits: format: int64 type: integer spiderViews: format: int64 type: integer totalClicks: format: int64 type: integer totalCommissionsCost: format: double type: number totalConversions: format: int64 type: integer totalConversionsCost: format: double type: number totalConversionsValue: format: double type: number totalHits: format: int64 type: integer totalViews: format: int64 type: integer uniqueClicks: format: int64 type: integer uniqueHits: format: int64 type: integer uniqueViews: format: int64 type: integer type: object Api.Core.Requests.ConversionPatchBody: properties: Action: type: string Id: format: int64 type: integer ReplaceId: format: int64 type: integer type: object Api.Core.Requests.DatapointsBatch: properties: List: items: $ref: '#/definitions/Api.Core.Dto.Datapoints.Datapoint' type: array type: object Api.Core.Requests.DeleteBatch: properties: Entities: items: $ref: '#/definitions/Api.Core.Dto.EntityUriLong' type: array type: object Api.Core.Requests.GenericTextPatch: properties: Text: type: string type: object Api.Core.Requests.PatchBody: properties: Action: type: string Id: format: int64 type: integer type: object Api.Core.Requests.PatchBodyBatch: properties: PatchRequests: items: $ref: '#/definitions/Api.Core.Requests.PatchBody' type: array type: object Api.Core.Requests.PermissionPatchRequest: properties: Action: type: string Id: format: int64 type: integer Verb: type: string type: object Api.Core.Responses.CountResponce: properties: count: format: int64 type: integer type: object 'Api.Core.Responses.EntitiesResponse[Api.Core.Dto.Accounting.DomainWhitelistEntry]': properties: entities: items: $ref: '#/definitions/Api.Core.Dto.Accounting.DomainWhitelistEntry' type: array type: object 'Api.Core.Responses.EntitiesResponse[Api.Core.Dto.Accounting.IpBlacklistEntry]': properties: entities: items: $ref: '#/definitions/Api.Core.Dto.Accounting.IpBlacklistEntry' type: array type: object 'Api.Core.Responses.EntitiesResponse[Api.Core.Dto.Aggregated.AggregatedResult]': properties: entities: items: $ref: '#/definitions/Api.Core.Dto.Aggregated.AggregatedResult' type: array type: object 'Api.Core.Responses.EntitiesResponse[Api.Core.Dto.ClickStream.Hit]': properties: entities: items: $ref: '#/definitions/Api.Core.Dto.ClickStream.Hit' type: array type: object 'Api.Core.Responses.EntitiesResponse[Api.Core.Dto.Grants.Grant]': properties: entities: items: $ref: '#/definitions/Api.Core.Dto.Grants.Grant' type: array type: object 'Api.Core.Responses.EntitiesResponse[Api.Core.Responses.EntityUri[System.Int64]]': properties: entities: items: $ref: '#/definitions/Api.Core.Responses.EntityUri[System.Int64]' type: array type: object 'Api.Core.Responses.EntityUri[System.Int64]': properties: id: format: int64 type: integer uri: type: string type: object 'Api.Core.Responses.ModifyBatchItemResponce[Api.Core.Dto.Datapoints.Datapoint,System.Int64]': properties: entityData: $ref: '#/definitions/Api.Core.Dto.Datapoints.Datapoint' errors: items: $ref: '#/definitions/ClickMeter.Infrastructure.Validation.ValidationFailure' type: array result: $ref: '#/definitions/Api.Core.Responses.EntityUri[System.Int64]' status: type: string type: object ClickMeter.Infrastructure.Validation.ValidationFailure: properties: code: $ref: '#/definitions/System.Object' errorMessage: type: string errorValue: $ref: '#/definitions/System.Object' property: type: string type: object System.Object: properties: {} type: object golang-github-go-openapi-spec-0.15.0/fixtures/expansion/invalid-refs.json000066400000000000000000000032351332117131300264410ustar00rootroot00000000000000{ "swagger": "2.0", "info": { "version": "1.0.0", "title": "Swagger Petstore", "contact": { "name": "wordnik api team", "url": "http://developer.wordnik.com" }, "license": { "name": "Creative Commons 4.0 International", "url": "http://creativecommons.org/licenses/by/4.0/" } }, "host": "petstore.swagger.wordnik.com", "basePath": "/api", "schemes": [ "http" ], "paths": { "/pets": { "get": { "tags": [ "Pet Operations" ], "summary": "finds pets in the system", "responses": { "200": { "description": "pet response", "schema": { "type": "array", "items": { "$ref": "NotCorrectRef" } }, "headers": { "x-expires": { "type": "string" } } }, "default": { "description": "unexpected error", "schema": { "$ref": "NotCorrectRef" } } } } } }, "definitions": { "Pet": { "required": [ "id", "name" ], "properties": { "id": { "type": "integer", "format": "int64" }, "name": { "type": "string" }, "tag": { "type": "string" } } }, "Error": { "required": [ "code", "message" ], "properties": { "code": { "type": "integer", "format": "int32" }, "message": { "type": "string" } } } } } golang-github-go-openapi-spec-0.15.0/fixtures/expansion/missingItemRef.json000066400000000000000000000011161332117131300267770ustar00rootroot00000000000000{ "swagger": "2.0", "info": { "version": "2.1.0", "title": "Missing Item API" }, "host": "item.com", "basePath": "/missing/ref", "schemes": [ "http" ], "paths": { "/employees": { "get": { "operationId": "LIST-Employees", "summary": "List Employee Types", "responses": { "200": { "description": "", "schema": { "type": "array", "items": { "$ref": "#/definitions/employees-output" } } } } } } } }golang-github-go-openapi-spec-0.15.0/fixtures/expansion/missingRef.json000066400000000000000000000072641332117131300261720ustar00rootroot00000000000000{ "input": { "swagger": "2.0", "info": { "version": "1.0", "title": "Continue On Error" }, "paths": { "/todos": { "get": { "responses": { "200": { "description": "List Todos", "schema": { "type": "array", "items": { "$ref": "#/definitions/todo-full" } } }, "404": { "$ref": "#/responses/404" } } } } }, "definitions": { "todo-partial": { "type": "object", "properties": { "name": { "type": "string" }, "completed": { "type": "boolean" } } }, "todo-full": { "allOf": [ { "$ref": "#/definitions/todo-partial" }, { "type": "object", "properties": { "id": { "type": "integer" }, "completed_at": { "type": "string" }, "created_at": { "type": "string" }, "updated_at": { "type": "string" } } } ] } } }, "expected": { "swagger": "2.0", "info": { "title": "Continue On Error", "version": "1.0" }, "paths": { "/todos": { "get": { "responses": { "200": { "description": "List Todos", "schema": { "type": "array", "items": { "allOf": [ { "type": "object", "properties": { "completed": { "type": "boolean" }, "name": { "type": "string" } } }, { "type": "object", "properties": { "completed_at": { "type": "string" }, "created_at": { "type": "string" }, "id": { "type": "integer" }, "updated_at": { "type": "string" } } } ] } } }, "404": {} } } } }, "definitions": { "todo-full": { "allOf": [ { "type": "object", "properties": { "completed": { "type": "boolean" }, "name": { "type": "string" } } }, { "type": "object", "properties": { "completed_at": { "type": "string" }, "created_at": { "type": "string" }, "id": { "type": "integer" }, "updated_at": { "type": "string" } } } ] }, "todo-partial": { "type": "object", "properties": { "completed": { "type": "boolean" }, "name": { "type": "string" } } } } } } golang-github-go-openapi-spec-0.15.0/fixtures/expansion/overflow.json000066400000000000000000000065641332117131300257310ustar00rootroot00000000000000{ "swagger": "2.0", "info": { "title": "Swagger Sample", "description": "Sample API Playground.", "version": "1.0.0" }, "basePath": "/v1", "schemes": [ "http" ], "consumes": [ "application/vdn.sample.v1+json" ], "produces": [ "application/vdn.sample.v1+json" ], "paths": { "/books": { "get": { "summary": "List all books", "operationId": "listBooks", "tags": [ "books" ], "responses": { "200": { "headers": { "Link": { "type": "string" } }, "description": "An array of books", "schema": { "type": "array", "items": { "$ref": "#/definitions/Book" } } }, "default": { "description": "generic error response", "schema": { "$ref": "#/definitions/Error" } } } } } }, "definitions": { "Store": { "type": "object", "properties": { "title": { "type": "string", "example": "Book Shop" }, "categories": { "type": "array", "items": { "$ref": "#/definitions/Category" } } } }, "Category": { "type": "object", "properties": { "title": { "type": "string", "example": "Drama" }, "books": { "type": "array", "items": { "$ref": "#/definitions/Book" } } } }, "Book": { "type": "object", "required": [ "title", "summary" ], "properties": { "title": { "type": "string", "example": "Winnie the Pooh" }, "summary": { "type": "string", "example": "Famous children's book" }, "related_books": { "type": "array", "items": { "$ref": "#/definitions/Book" } } } }, "Error": { "type": "object", "readOnly": true, "properties": { "code": { "type": "integer", "format": "int64", "example": 400 }, "message": { "type": "string", "example": "Unexpected error" } }, "required": [ "message" ] } } } golang-github-go-openapi-spec-0.15.0/fixtures/expansion/params.json000066400000000000000000000006071332117131300253410ustar00rootroot00000000000000{ "parameters": { "id": { "type": "integer", "format": "int64", "in": "path", "required": true }, "tag": { "type": "string", "in": "query", "required": false }, "query": { "$ref": "#/parameters/tag" } }, "paths": { "/cars/{id}": { "parameters": [ { "$ref": "#/parameters/id"} ] } } }golang-github-go-openapi-spec-0.15.0/fixtures/expansion/schemas1.json000066400000000000000000000042771332117131300255710ustar00rootroot00000000000000{ "definitions": { "car": { "type": "object", "properties": { "id": { "type": "integer", "format": "int64" }, "make": { "type": "string" }, "brand": { "$ref": "#/definitions/brand" } } }, "tag": { "type": "object", "properties": { "id": { "type": "integer", "format": "int64" }, "value": { "type": "string" } } }, "brand": { "type": "object", "properties": { "id": { "type": "integer", "format": "int64" }, "name": { "type": "string" } } }, "truck": { "$ref": "#/definitions/car" }, "batch": { "items": { "$ref": "#/definitions/brand" } }, "batch2": { "items": [ { "$ref": "#/definitions/brand" }, { "$ref": "#/definitions/tag" } ] }, "allofBoth": { "allOf": [ { "$ref": "#/definitions/brand" }, { "$ref": "#/definitions/tag" } ] }, "anyofBoth": { "anyOf": [ { "$ref": "#/definitions/brand" }, { "$ref": "#/definitions/tag" } ] }, "oneofBoth": { "oneOf": [ { "$ref": "#/definitions/brand" }, { "$ref": "#/definitions/tag" } ] }, "notSomething": { "not": { "$ref": "#/definitions/tag" } }, "withAdditional": { "additionalProperties": { "$ref": "#/definitions/tag" } }, "withPattern": { "patternProperties": { "^x-ab": { "$ref": "#/definitions/tag" } } }, "withAdditionalItems": { "additionalItems": { "$ref": "#/definitions/tag" } }, "deps": { "dependencies": { "something": { "$ref": "#/definitions/tag" } } }, "defined": { "definitions": { "something": { "$ref": "#/definitions/tag" } } } } }golang-github-go-openapi-spec-0.15.0/fixtures/expansion/schemas2.json000066400000000000000000000053731332117131300255700ustar00rootroot00000000000000{ "definitions": { "car": { "type": "object", "properties": { "id": { "type": "integer", "format": "int64" }, "make": { "type": "string" }, "brand": { "items": { "$ref": "#/definitions/brand" } } } }, "tag": { "type": "object", "properties": { "id": { "type": "integer", "format": "int64" }, "value": { "type": "string" } } }, "brand": { "type": "object", "properties": { "id": { "type": "integer", "format": "int64" }, "name": { "type": "string" } } }, "truck": { "items": { "$ref": "#/definitions/car" } }, "batch": { "items": { "items": { "$ref": "#/definitions/brand" } } }, "batch2": { "items": [ { "items": { "$ref": "#/definitions/brand" } }, { "items": { "$ref": "#/definitions/tag" } } ] }, "allofBoth": { "allOf": [ { "items": { "$ref": "#/definitions/brand" } }, { "items": { "$ref": "#/definitions/tag" } } ] }, "anyofBoth": { "anyOf": [ { "items": { "$ref": "#/definitions/brand" } }, { "items": { "$ref": "#/definitions/tag" } } ] }, "oneofBoth": { "oneOf": [ { "items": { "$ref": "#/definitions/brand" } }, { "items": { "$ref": "#/definitions/tag" } } ] }, "notSomething": { "not": { "items": { "$ref": "#/definitions/tag" } } }, "withAdditional": { "additionalProperties": { "items": { "$ref": "#/definitions/tag" } } }, "withPattern": { "patternProperties": { "^x-ab": { "items": { "$ref": "#/definitions/tag" } } } }, "withAdditionalItems": { "additionalItems": { "items": { "$ref": "#/definitions/tag" } } }, "deps": { "dependencies": { "something": { "items": { "$ref": "#/definitions/tag" } } } }, "defined": { "definitions": { "something": { "items": { "$ref": "#/definitions/tag" } } } } } } golang-github-go-openapi-spec-0.15.0/fixtures/local_expansion/000077500000000000000000000000001332117131300243325ustar00rootroot00000000000000golang-github-go-openapi-spec-0.15.0/fixtures/local_expansion/item.json000066400000000000000000000004041332117131300261610ustar00rootroot00000000000000{ "properties": { "id": { "format": "int64", "readOnly": true, "type": "integer" }, "title": { "maxLength": 80, "minLength": 2, "type": "string" } }, "required": [ "title" ], "type": "object" } golang-github-go-openapi-spec-0.15.0/fixtures/local_expansion/item2.yaml000066400000000000000000000002501332117131300262330ustar00rootroot00000000000000type: object required: - title properties: id: type: integer format: uint64 readOnly: true title: type: string minLength: 2 maxLength: 80 golang-github-go-openapi-spec-0.15.0/fixtures/local_expansion/spec.json000066400000000000000000000013511332117131300261570ustar00rootroot00000000000000{ "basePath": "/v1", "consumes": [ "application/json" ], "host": "item.api.local", "info": { "description": "Item API", "title": "Item API", "version": "1.0.0" }, "paths": { "/item": { "get": { "operationId": "GetItem", "responses": { "200": { "description": "item detail response", "schema": { "$ref": "item.json" } } } } } }, "produces": [ "application/json" ], "schemes": [ "http" ], "security": [ { "key": [] } ], "securityDefinitions": { "key": { "in": "header", "name": "x-item-token", "type": "apiKey" } }, "swagger": "2.0" } golang-github-go-openapi-spec-0.15.0/fixtures/local_expansion/spec2.yaml000066400000000000000000000007441332117131300262370ustar00rootroot00000000000000--- swagger: "2.0" info: title: Item API description: Item API version: "1.0.0" host: item.api.local basePath: /v1 securityDefinitions: key: type: apiKey name: x-item-token in: header security: - key: [] consumes: - application/json produces: - application/json schemes: - http paths: /item: get: operationId: GetItem responses: 200: description: item detail response schema: "$ref": "item2.yaml" golang-github-go-openapi-spec-0.15.0/fixtures/more_circulars/000077500000000000000000000000001332117131300241655ustar00rootroot00000000000000golang-github-go-openapi-spec-0.15.0/fixtures/more_circulars/bitbucket.json000066400000000000000000007422251332117131300270500ustar00rootroot00000000000000{ "info": { "termsOfService": "https://www.atlassian.com/end-user-agreement", "version": "2.0", "contact": { "url": "https://bitbucket.org/support", "name": "Bitbucket Support", "email": "support@bitbucket.org" }, "description": "Code against the Bitbucket API to automate simple tasks, embed Bitbucket data into your own site, build mobile or desktop apps, or even add custom UI add-ons into Bitbucket itself using the Connect framework.", "title": "Bitbucket API" }, "paths": { "/repositories/{username}/{repo_slug}/refs/branches/{name}": { "parameters": [ { "required": true, "type": "string", "name": "username", "in": "path" }, { "required": true, "type": "string", "name": "repo_slug", "in": "path" }, { "required": true, "type": "string", "name": "name", "in": "path" } ], "get": { "security": [ { "oauth2": [ "repository" ] }, { "basic": [] }, { "api_key": [] } ], "description": "", "responses": { "default": { "description": "Unexpected error.", "schema": { "$ref": "#/definitions/error" } } }, "parameters": [], "tags": [ "refs" ] } }, "/teams/{username}/following": { "parameters": [ { "required": true, "type": "string", "name": "username", "in": "path" } ], "get": { "security": [ { "oauth2": [ "account" ] }, { "basic": [] }, { "api_key": [] } ], "description": "Returns the list of accounts this team is following.", "responses": { "200": { "description": "A paginated list of user objects.", "schema": { "$ref": "#/definitions/paginated_users" } }, "404": { "description": "If no team exists for the specified name, or if the specified account is a personal account, not a team account.", "schema": { "$ref": "#/definitions/error" } } }, "parameters": [ { "required": true, "type": "string", "description": "The team's username", "name": "username", "in": "path" } ], "tags": [ "teams" ] } }, "/repositories/{username}/{repo_slug}/commit/{sha}/comments/{comment_id}": { "parameters": [ { "required": true, "type": "string", "name": "username", "in": "path" }, { "required": true, "type": "string", "name": "repo_slug", "in": "path" }, { "required": true, "type": "string", "name": "sha", "in": "path" }, { "required": true, "type": "string", "name": "comment_id", "in": "path" } ], "get": { "security": [ { "oauth2": [ "repository" ] }, { "basic": [] }, { "api_key": [] } ], "description": "Returns the specified commit comment.", "responses": { "default": { "description": "Unexpected error.", "schema": { "$ref": "#/definitions/error" } } }, "parameters": [], "tags": [ "commits" ] } }, "/repositories/{username}/{repo_slug}/hooks": { "post": { "security": [ { "oauth2": [ "webhook" ] }, { "basic": [] }, { "api_key": [] } ], "description": "Creates a new webhook on the specified repository.", "responses": { "201": { "description": "If the webhook was registered successfully.", "schema": { "$ref": "#/definitions/webhook_subscription" } }, "403": { "description": "If the authenticated user does not have permission to install webhooks on the specified repository.", "schema": { "$ref": "#/definitions/error" } }, "404": { "description": "If the repository does not exist.", "schema": { "$ref": "#/definitions/error" } } }, "parameters": [], "tags": [ "webhooks" ] }, "parameters": [ { "required": true, "type": "string", "name": "username", "in": "path" }, { "required": true, "type": "string", "name": "repo_slug", "in": "path" } ], "get": { "security": [ { "oauth2": [ "webhook" ] }, { "basic": [] }, { "api_key": [] } ], "description": "Returns a paginated list of webhooks installed on this repository.", "responses": { "200": { "description": "The paginated list of installed webhooks.", "schema": { "$ref": "#/definitions/paginated_webhook_subscriptions" } }, "403": { "description": "If the authenticated user does not have permission to access the webhooks.", "schema": { "$ref": "#/definitions/error" } }, "404": { "description": "If the repository does not exist.", "schema": { "$ref": "#/definitions/error" } } }, "parameters": [], "tags": [ "webhooks" ] } }, "/repositories/{username}/{repo_slug}/issues/{issue_id}/attachments/{path}": { "delete": { "security": [ { "oauth2": [ "issue:write" ] }, { "basic": [] }, { "api_key": [] } ], "description": "Deletes an attachment.", "responses": { "401": { "description": "If the issue tracker is private and the request was not authenticated." }, "404": { "description": "If the specified repository, issue, or attachment does not exist, or if the repository doesn't have the issue tracker enabled.", "schema": { "$ref": "#/definitions/error" } }, "204": { "description": "Indicates that the deletion was successful" } }, "parameters": [], "tags": [ "issue_tracker" ] }, "parameters": [ { "required": true, "type": "string", "name": "username", "in": "path" }, { "required": true, "type": "string", "name": "repo_slug", "in": "path" }, { "required": true, "type": "string", "name": "issue_id", "in": "path" }, { "required": true, "type": "string", "name": "path", "in": "path" } ], "get": { "security": [ { "oauth2": [ "issue" ] }, { "basic": [] }, { "api_key": [] } ], "description": "Returns the contents of the specified file attachment.\n\nNote that this endpoint does not return a JSON response, but instead\nreturns a redirect pointing to the actual file that in turn will return\nthe raw contents.\n\nThe redirect URL contains a one-time token that has a limited lifetime.\nAs a result, the link should not be persisted, stored, or shared.", "responses": { "401": { "description": "If the issue tracker is private and the request was not authenticated." }, "404": { "description": "If the specified repository or issue does not exist, or if the repository doesn't have the issue tracker enabled.", "schema": { "$ref": "#/definitions/error" } }, "302": { "headers": { "Location": { "type": "string" } }, "description": "A redirect to the file's contents" } }, "parameters": [], "tags": [ "issue_tracker" ] } }, "/repositories/{username}/{repo_slug}/versions/{version_id}": { "parameters": [ { "required": true, "type": "string", "name": "username", "in": "path" }, { "required": true, "type": "string", "name": "repo_slug", "in": "path" }, { "required": true, "type": "string", "name": "version_id", "in": "path" } ], "get": { "security": [ { "oauth2": [ "issue" ] }, { "basic": [] }, { "api_key": [] } ], "description": "Returns the specified issue tracker version object.", "responses": { "200": { "description": "The specified version object.", "schema": { "$ref": "#/definitions/version" } }, "404": { "description": "If the specified repository or version does not exist, or if the repository doesn't have the issue tracker enabled.", "schema": { "$ref": "#/definitions/error" } } }, "parameters": [ { "required": true, "type": "integer", "description": "The version's id", "name": "version_id", "in": "path" } ], "tags": [ "issue_tracker" ] } }, "/repositories/{username}/{repo_slug}/issues/{issue_id}/vote": { "put": { "security": [ { "oauth2": [ "issue", "account:write" ] }, { "basic": [] }, { "api_key": [] } ], "description": "Vote for this issue.\n\nTo cast your vote, do an empty PUT. The 204 status code indicates that\nthe operation was successful.", "responses": { "401": { "description": "When the request wasn't authenticated.", "schema": { "$ref": "#/definitions/error" } }, "404": { "description": "When the issue does not exist, the repo does not exist, or when the repos does not have an issue tracker.", "schema": { "$ref": "#/definitions/error" } }, "204": { "description": "Indicating the authenticated user has cast their vote successfully.", "schema": { "$ref": "#/definitions/error" } } }, "parameters": [ { "required": true, "type": "integer", "description": "The issue's id", "name": "issue_id", "in": "path" } ], "tags": [ "issue_tracker" ] }, "delete": { "security": [ { "oauth2": [ "issue:write", "account:write" ] }, { "basic": [] }, { "api_key": [] } ], "description": "Retract your vote.", "responses": { "default": { "description": "Unexpected error.", "schema": { "$ref": "#/definitions/error" } } }, "parameters": [ { "required": true, "type": "integer", "description": "The issue's id", "name": "issue_id", "in": "path" } ], "tags": [ "issue_tracker" ] }, "parameters": [ { "required": true, "type": "string", "name": "username", "in": "path" }, { "required": true, "type": "string", "name": "repo_slug", "in": "path" }, { "required": true, "type": "string", "name": "issue_id", "in": "path" } ], "get": { "security": [ { "oauth2": [ "issue", "account" ] }, { "basic": [] }, { "api_key": [] } ], "description": "Check whether the authenticated user has voted for this issue.\nA 204 status code indicates that the user has voted, while a 404\nimplies they haven't.", "responses": { "401": { "description": "When the request wasn't authenticated.", "schema": { "$ref": "#/definitions/error" } }, "404": { "description": "If the authenticated user has not voted for this issue, or when the repo does not exist, or does not have an issue tracker.", "schema": { "$ref": "#/definitions/error" } }, "204": { "description": "If the authenticated user has not voted for this issue.", "schema": { "$ref": "#/definitions/error" } } }, "parameters": [ { "required": true, "type": "integer", "description": "The issue's id", "name": "issue_id", "in": "path" } ], "tags": [ "issue_tracker" ] } }, "/repositories/{username}/{repo_slug}/milestones": { "parameters": [ { "required": true, "type": "string", "name": "username", "in": "path" }, { "required": true, "type": "string", "name": "repo_slug", "in": "path" } ], "get": { "security": [ { "oauth2": [ "issue" ] }, { "basic": [] }, { "api_key": [] } ], "description": "Returns the milestones that have been defined in the issue tracker.\n\nThis resource is only available on repositories that have the issue\ntracker enabled.", "responses": { "200": { "description": "The milestones that have been defined in the issue tracker.", "schema": { "$ref": "#/definitions/paginated_milestones" } }, "404": { "description": "If the specified repository does not exist, or if the repository doesn't have the issue tracker enabled.", "schema": { "$ref": "#/definitions/error" } } }, "parameters": [], "tags": [ "issue_tracker" ] } }, "/repositories/{username}/{repo_slug}/components": { "parameters": [ { "required": true, "type": "string", "name": "username", "in": "path" }, { "required": true, "type": "string", "name": "repo_slug", "in": "path" } ], "get": { "security": [ { "oauth2": [ "issue" ] }, { "basic": [] }, { "api_key": [] } ], "description": "Returns the components that have been defined in the issue tracker.\n\nThis resource is only available on repositories that have the issue\ntracker enabled.", "responses": { "200": { "description": "The components that have been defined in the issue tracker.", "schema": { "$ref": "#/definitions/paginated_components" } }, "404": { "description": "If the specified repository does not exist, or if the repository doesn't have the issue tracker enabled.", "schema": { "$ref": "#/definitions/error" } } }, "parameters": [], "tags": [ "issue_tracker" ] } }, "/account/{username}/addons/{encoded_context_id}/refresh": { "put": { "security": [ { "oauth2": [ "account:write" ] }, { "basic": [] }, { "api_key": [] } ], "description": "", "responses": { "default": { "description": "Unexpected error.", "schema": { "$ref": "#/definitions/error" } } }, "parameters": [], "tags": [ "addon" ] }, "parameters": [ { "required": true, "type": "string", "name": "username", "in": "path" }, { "required": true, "type": "string", "name": "encoded_context_id", "in": "path" } ] }, "/addon/linkers/{linker_key}/values": { "put": { "security": [ { "oauth2": [] }, { "basic": [] }, { "api_key": [] } ], "description": "", "responses": { "default": { "description": "Unexpected error.", "schema": { "$ref": "#/definitions/error" } } }, "parameters": [], "tags": [ "addon" ] }, "post": { "security": [ { "oauth2": [] }, { "basic": [] }, { "api_key": [] } ], "description": "", "responses": { "default": { "description": "Unexpected error.", "schema": { "$ref": "#/definitions/error" } } }, "parameters": [], "tags": [ "addon" ] }, "delete": { "security": [ { "oauth2": [] }, { "basic": [] }, { "api_key": [] } ], "description": "", "responses": { "default": { "description": "Unexpected error.", "schema": { "$ref": "#/definitions/error" } } }, "parameters": [], "tags": [ "addon" ] }, "parameters": [ { "required": true, "type": "string", "name": "linker_key", "in": "path" } ], "get": { "security": [ { "oauth2": [] }, { "basic": [] }, { "api_key": [] } ], "description": "", "responses": { "default": { "description": "Unexpected error.", "schema": { "$ref": "#/definitions/error" } } }, "parameters": [], "tags": [ "addon" ] } }, "/repositories/{username}/{repo_slug}/refs/branches": { "parameters": [ { "required": true, "type": "string", "name": "username", "in": "path" }, { "required": true, "type": "string", "name": "repo_slug", "in": "path" } ], "get": { "security": [ { "oauth2": [ "repository" ] }, { "basic": [] }, { "api_key": [] } ], "description": "", "responses": { "default": { "description": "Unexpected error.", "schema": { "$ref": "#/definitions/error" } } }, "parameters": [], "tags": [ "refs" ] } }, "/hook_events/{subject_type}": { "parameters": [ { "required": true, "type": "string", "name": "subject_type", "in": "path" } ], "get": { "security": [ { "oauth2": [] }, { "basic": [] }, { "api_key": [] } ], "description": "Returns a paginated list of all valid webhook events for the\nspecified entity.\n\nThis is public data that does not require any scopes or authentication.", "responses": { "200": { "description": "A paginated list of webhook types available to subscribe on.", "schema": { "$ref": "#/definitions/paginated_hook_events" } }, "404": { "description": "If an invalid `{subject_type}` value was specified.", "schema": { "$ref": "#/definitions/error" } } }, "parameters": [ { "enum": [ "user", "repository", "team" ], "name": "subject_type", "required": true, "in": "path", "type": "string", "description": "A resource or subject type." } ], "tags": [ "webhooks" ] } }, "/users/{username}/followers": { "parameters": [ { "required": true, "type": "string", "name": "username", "in": "path" } ], "get": { "security": [ { "oauth2": [] }, { "basic": [] }, { "api_key": [] } ], "description": "Returns the list of accounts that are following this team.", "responses": { "200": { "description": "A paginated list of user objects.", "schema": { "$ref": "#/definitions/paginated_users" } }, "404": { "description": "If no account exists for the specified name, or if the specified account is a team account, not a personal account.", "schema": { "$ref": "#/definitions/error" } } }, "parameters": [ { "required": true, "type": "string", "description": "The account's username", "name": "username", "in": "path" } ], "tags": [ "users" ] } }, "/repositories/{username}/{repo_slug}/default-reviewers": { "parameters": [ { "required": true, "type": "string", "name": "username", "in": "path" }, { "required": true, "type": "string", "name": "repo_slug", "in": "path" } ], "get": { "security": [ { "oauth2": [ "repository:admin" ] }, { "basic": [] }, { "api_key": [] } ], "description": "Returns the repository's default reviewers.\n\nThese are the users that are automatically added as reviewers on every\nnew pull request that is created.", "responses": { "200": { "description": "The paginated list of default reviewers" } }, "parameters": [], "tags": [ "pullrequests" ] } }, "/repositories/{username}/{repo_slug}/downloads/{filename}": { "delete": { "security": [ { "oauth2": [ "repository:write" ] }, { "basic": [] }, { "api_key": [] } ], "description": "Deletes the specified download artifact from the repository.", "responses": { "default": { "description": "Unexpected error.", "schema": { "$ref": "#/definitions/error" } } }, "parameters": [], "tags": [ "downloads" ] }, "parameters": [ { "required": true, "type": "string", "name": "username", "in": "path" }, { "required": true, "type": "string", "name": "repo_slug", "in": "path" }, { "required": true, "type": "string", "name": "filename", "in": "path" } ], "get": { "security": [ { "oauth2": [ "repository" ] }, { "basic": [] }, { "api_key": [] } ], "description": "Return a redirect to the contents of a download artifact.\n\nThis endpoint returns the actual file contents and not the artifact's\nmetadata.\n\n $ curl -s -L https://api.bitbucket.org/2.0/repositories/evzijst/git-tests/downloads/hello.txt\n Hello World", "responses": { "default": { "description": "Unexpected error.", "schema": { "$ref": "#/definitions/error" } } }, "parameters": [], "tags": [ "downloads" ] } }, "/repositories/{username}/{repo_slug}/commit/{node}/statuses/build/{key}": { "put": { "security": [ { "oauth2": [ "repository" ] }, { "basic": [] }, { "api_key": [] } ], "description": "", "responses": { "default": { "description": "Unexpected error.", "schema": { "$ref": "#/definitions/error" } } }, "parameters": [], "tags": [] }, "parameters": [ { "required": true, "type": "string", "name": "username", "in": "path" }, { "required": true, "type": "string", "name": "repo_slug", "in": "path" }, { "required": true, "type": "string", "name": "node", "in": "path" }, { "required": true, "type": "string", "name": "key", "in": "path" } ], "get": { "security": [ { "oauth2": [ "repository" ] }, { "basic": [] }, { "api_key": [] } ], "description": "", "responses": { "default": { "description": "Unexpected error.", "schema": { "$ref": "#/definitions/error" } } }, "parameters": [], "tags": [] } }, "/repositories/{username}/{repo_slug}/watchers": { "parameters": [ { "required": true, "type": "string", "name": "username", "in": "path" }, { "required": true, "type": "string", "name": "repo_slug", "in": "path" } ], "get": { "security": [ { "oauth2": [ "repository" ] }, { "basic": [] }, { "api_key": [] } ], "description": "Returns a paginated list of all the watchers on the specified\nrepository.", "responses": { "default": { "description": "Unexpected error.", "schema": { "$ref": "#/definitions/error" } } }, "parameters": [], "tags": [ "repositories" ] } }, "/snippets/{username}/{encoded_id}/commits": { "parameters": [ { "required": true, "type": "string", "name": "username", "in": "path" }, { "required": true, "type": "string", "name": "encoded_id", "in": "path" } ], "get": { "security": [ { "oauth2": [ "snippet" ] }, { "basic": [] }, { "api_key": [] } ], "description": "Returns the changes (commits) made on this snippet.", "responses": { "200": { "description": "The paginated list of snippet commits.", "schema": { "$ref": "#/definitions/paginated_snippet_commit" } }, "403": { "description": "If the authenticated user does not have access to the snippet.", "schema": { "$ref": "#/definitions/error" } }, "404": { "description": "If the snippet does not exist.", "schema": { "$ref": "#/definitions/error" } } }, "parameters": [], "tags": [ "snippets" ] } }, "/users/{username}/repositories": { "parameters": [ { "required": true, "type": "string", "name": "username", "in": "path" } ], "get": { "security": [ { "oauth2": [ "repository" ] }, { "basic": [] }, { "api_key": [] } ], "description": "All repositories owned by a user/team. This includes private\nrepositories, but filtered down to the ones that the calling user has\naccess to.", "responses": { "default": { "description": "Unexpected error.", "schema": { "$ref": "#/definitions/error" } } }, "parameters": [], "tags": [ "users", "teams" ] } }, "/repositories/{username}/{repo_slug}/pullrequests/activity": { "parameters": [ { "required": true, "type": "string", "name": "username", "in": "path" }, { "required": true, "type": "string", "name": "repo_slug", "in": "path" } ], "get": { "security": [ { "oauth2": [ "pullrequest" ] }, { "basic": [] }, { "api_key": [] } ], "description": "Returns the pull request's activity log. This includes comments that\nwere made by the reviewers, updates and approvals.", "responses": { "default": { "description": "Unexpected error.", "schema": { "$ref": "#/definitions/error" } } }, "parameters": [], "tags": [ "pullrequests" ] } }, "/snippets/{username}/{encoded_id}/comments/{comment_id}": { "put": { "security": [ { "oauth2": [ "snippet" ] }, { "basic": [] }, { "api_key": [] } ], "description": "Updates a comment.\n\nComments can only be updated by their author.", "responses": { "200": { "description": "The updated comment object." }, "403": { "description": "If the authenticated user does not have access to the snippet.", "schema": { "$ref": "#/definitions/error" } }, "404": { "description": "If the comment or snippet does not exist.", "schema": { "$ref": "#/definitions/error" } } }, "parameters": [], "tags": [ "snippets" ] }, "delete": { "security": [ { "oauth2": [ "snippet" ] }, { "basic": [] }, { "api_key": [] } ], "description": "Deletes a snippet comment.\n\nComments can only be removed by their author.", "responses": { "204": { "description": "Indicates the comment was deleted successfully." }, "403": { "description": "If the authenticated user is not the author of the comment.", "schema": { "$ref": "#/definitions/error" } }, "404": { "description": "If the comment or the snippet does not exist.", "schema": { "$ref": "#/definitions/error" } } }, "parameters": [], "tags": [ "snippets" ] }, "parameters": [ { "required": true, "type": "string", "name": "username", "in": "path" }, { "required": true, "type": "string", "name": "encoded_id", "in": "path" }, { "required": true, "type": "string", "name": "comment_id", "in": "path" } ], "get": { "security": [ { "oauth2": [ "snippet" ] }, { "basic": [] }, { "api_key": [] } ], "description": "Returns the specific snippet comment.", "responses": { "200": { "description": "The specified comment.", "schema": { "$ref": "#/definitions/snippet_comment" } }, "403": { "description": "If the authenticated user does not have access to the snippet.", "schema": { "$ref": "#/definitions/error" } }, "404": { "description": "If the comment or snippet does not exist.", "schema": { "$ref": "#/definitions/error" } } }, "parameters": [], "tags": [ "snippets" ] } }, "/repositories/{username}/{repo_slug}/diff/{spec}": { "parameters": [ { "required": true, "type": "string", "name": "username", "in": "path" }, { "required": true, "type": "string", "name": "repo_slug", "in": "path" }, { "required": true, "type": "string", "name": "spec", "in": "path" } ], "get": { "security": [ { "oauth2": [ "repository" ] }, { "basic": [] }, { "api_key": [] } ], "description": "", "responses": { "default": { "description": "Unexpected error.", "schema": { "$ref": "#/definitions/error" } } }, "parameters": [], "tags": [ "commits" ] } }, "/repositories/{username}/{repo_slug}/branch-restrictions": { "post": { "security": [ { "oauth2": [ "repository:admin" ] }, { "basic": [] }, { "api_key": [] } ], "description": "", "responses": { "default": { "description": "Unexpected error.", "schema": { "$ref": "#/definitions/error" } } }, "parameters": [], "tags": [ "branch_restrictions" ] }, "parameters": [ { "required": true, "type": "string", "name": "username", "in": "path" }, { "required": true, "type": "string", "name": "repo_slug", "in": "path" } ], "get": { "security": [ { "oauth2": [ "repository:admin" ] }, { "basic": [] }, { "api_key": [] } ], "description": "", "responses": { "default": { "description": "Unexpected error.", "schema": { "$ref": "#/definitions/error" } } }, "parameters": [], "tags": [ "branch_restrictions" ] } }, "/repositories/{username}/{repo_slug}/issues/{issue_id}/comments/{comment_id}": { "parameters": [ { "required": true, "type": "string", "name": "username", "in": "path" }, { "required": true, "type": "string", "name": "repo_slug", "in": "path" }, { "required": true, "type": "string", "name": "issue_id", "in": "path" }, { "required": true, "type": "string", "name": "comment_id", "in": "path" } ], "get": { "security": [ { "oauth2": [ "issue" ] }, { "basic": [] }, { "api_key": [] } ], "description": "Returns the specified issue comment object.", "responses": { "default": { "description": "Unexpected error.", "schema": { "$ref": "#/definitions/error" } } }, "parameters": [], "tags": [ "issue_tracker" ] } }, "/repositories/{username}/{repo_slug}/hooks/{uid}": { "put": { "security": [ { "oauth2": [ "webhook" ] }, { "basic": [] }, { "api_key": [] } ], "description": "Updates the specified webhook subscription.\n\nThe following properties can be mutated:\n\n* `description`\n* `url`\n* `active`\n* `events`", "responses": { "200": { "description": "The webhook subscription object.", "schema": { "$ref": "#/definitions/webhook_subscription" } }, "403": { "description": "If the authenticated user does not have permission to update the webhook.", "schema": { "$ref": "#/definitions/error" } }, "404": { "description": "If the webhook or repository does not exist.", "schema": { "$ref": "#/definitions/error" } } }, "parameters": [ { "required": true, "type": "string", "description": "The installed webhook's id", "name": "uid", "in": "path" } ], "tags": [ "webhooks" ] }, "delete": { "security": [ { "oauth2": [ "webhook" ] }, { "basic": [] }, { "api_key": [] } ], "description": "Deletes the specified webhook subscription.", "responses": { "204": { "description": "When the webhook was deleted successfully", "schema": { "$ref": "#/definitions/webhook_subscription" } }, "403": { "description": "If the authenticated user does not have permission to delete the webhook.", "schema": { "$ref": "#/definitions/error" } }, "404": { "description": "If the webhook or repository does not exist.", "schema": { "$ref": "#/definitions/error" } } }, "parameters": [ { "required": true, "type": "string", "description": "The installed webhook's id", "name": "uid", "in": "path" } ], "tags": [ "webhooks" ] }, "parameters": [ { "required": true, "type": "string", "name": "username", "in": "path" }, { "required": true, "type": "string", "name": "repo_slug", "in": "path" }, { "required": true, "type": "string", "name": "uid", "in": "path" } ], "get": { "security": [ { "oauth2": [ "webhook" ] }, { "basic": [] }, { "api_key": [] } ], "description": "Returns the webhook installed on the specified repository.", "responses": { "200": { "description": "The webhook subscription object.", "schema": { "$ref": "#/definitions/webhook_subscription" } }, "404": { "description": "If the webhook or repository does not exist.", "schema": { "$ref": "#/definitions/error" } } }, "parameters": [ { "required": true, "type": "string", "description": "The installed webhook's id.", "name": "uid", "in": "path" } ], "tags": [ "webhooks" ] } }, "/users/{username}": { "parameters": [ { "required": true, "type": "string", "name": "username", "in": "path" } ], "get": { "security": [ { "oauth2": [] }, { "basic": [] }, { "api_key": [] } ], "description": "Gets the public information associated with a user account.\n\nIf the user's profile is private, `location`, `website` and\n`created_on` elements are omitted.", "responses": { "200": { "description": "The user object", "schema": { "$ref": "#/definitions/team" } }, "404": { "description": "If no user exists for the specified name or UUID, or if the specified account is a team account, not a personal account.", "schema": { "$ref": "#/definitions/error" } } }, "parameters": [ { "required": true, "type": "string", "description": "The account's username or UUID.", "name": "username", "in": "path" } ], "tags": [ "users" ] } }, "/snippets/{username}/{encoded_id}": { "put": { "responses": { "200": { "description": "The updated snippet object.", "schema": { "$ref": "#/definitions/snippet" } }, "401": { "description": "If the snippet is private and the request was not authenticated.", "schema": { "$ref": "#/definitions/error" } }, "403": { "description": "If authenticated user does not have permission to update the private snippet.", "schema": { "$ref": "#/definitions/error" } }, "404": { "description": "If the snippet does not exist.", "schema": { "$ref": "#/definitions/error" } } }, "parameters": [ { "required": true, "type": "string", "description": "The snippet's id.", "name": "encoded_id", "in": "path" } ], "tags": [ "snippets" ], "produces": [ "application/json", "multipart/related", "multipart/form-data" ], "security": [ { "oauth2": [ "snippet:write" ] }, { "basic": [] }, { "api_key": [] } ], "consumes": [ "application/json", "multipart/related", "multipart/form-data" ], "description": "Used to update a snippet. Use this to add and delete files and to\nchange a snippet's title.\n\nTo update a snippet, one can either PUT a full snapshot, or only the\nparts that need to be changed.\n\nThe contract for PUT on this API is that properties missing from the\nrequest remain untouched so that snippets can be efficiently\nmanipulated with differential payloads.\n\nTo delete a property (e.g. the title, or a file), include its name in\nthe request, but omit its value (use `null`).\n\nAs in Git, explicit renaming of files is not supported. Instead, to\nrename a file, delete it and add it again under another name. This can\nbe done atomically in a single request. Rename detection is left to\nthe SCM.\n\nPUT supports three different content types for both request and\nresponse bodies:\n\n* `application/json`\n* `multipart/related`\n* `multipart/form-data`\n\nThe content type used for the request body can be different than that\nused for the response. Content types are specified using standard HTTP\nheaders.\n\nUse the `Content-Type` and `Accept` headers to select the desired\nrequest and response format.\n\n\napplication/json\n----------------\n\nAs with creation and retrieval, the content type determines what\nproperties can be manipulated. `application/json` does not support\nfile contents and is therefore limited to a snippet's meta data.\n\nTo update the title, without changing any of its files:\n\n $ curl -X POST -H \"Content-Type: application/json\" https://api.bitbucket.org/2.0/snippets/evzijst/kypj -d '{\"title\": \"Updated title\"}'\n\n\nTo delete the title:\n\n $ curl -X POST -H \"Content-Type: application/json\" https://api.bitbucket.org/2.0/snippets/evzijst/kypj -d '{\"title\": null}'\n\nNot all parts of a snippet can be manipulated. The owner and creator\nfor instance are immutable.\n\n\nmultipart/related\n-----------------\n\n`multipart/related` can be used to manipulate all of a snippet's\nproperties. The body is identical to a POST. properties omitted from\nthe request are left unchanged. Since the `start` part contains JSON,\nthe mechanism for manipulating the snippet's meta data is identical\nto `application/json` requests.\n\nTo update one of a snippet's file contents, while also changing its\ntitle:\n\n PUT /2.0/snippets/evzijst/kypj HTTP/1.1\n Content-Length: 288\n Content-Type: multipart/related; start=\"snippet\"; boundary=\"===============1438169132528273974==\"\n MIME-Version: 1.0\n\n --===============1438169132528273974==\n Content-Type: application/json; charset=\"utf-8\"\n MIME-Version: 1.0\n Content-ID: snippet\n\n {\n \"title\": \"My updated snippet\",\n \"files\": {\n \"foo.txt\": {}\n }\n }\n\n --===============1438169132528273974==\n Content-Type: text/plain; charset=\"us-ascii\"\n MIME-Version: 1.0\n Content-Transfer-Encoding: 7bit\n Content-ID: \"foo.txt\"\n Content-Disposition: attachment; filename=\"foo.txt\"\n\n Updated file contents.\n\n --===============1438169132528273974==--\n\nHere only the parts that are changed are included in the body. The\nother files remain untouched.\n\nNote the use of the `files` list in the JSON part. This list contains\nthe files that are being manipulated. This list should have\ncorresponding multiparts in the request that contain the new contents\nof these files.\n\nIf a filename in the `files` list does not have a corresponding part,\nit will be deleted from the snippet, as shown below:\n\n PUT /2.0/snippets/evzijst/kypj HTTP/1.1\n Content-Length: 188\n Content-Type: multipart/related; start=\"snippet\"; boundary=\"===============1438169132528273974==\"\n MIME-Version: 1.0\n\n --===============1438169132528273974==\n Content-Type: application/json; charset=\"utf-8\"\n MIME-Version: 1.0\n Content-ID: snippet\n\n {\n \"files\": {\n \"image.png\": {}\n }\n }\n\n --===============1438169132528273974==--\n\nTo simulate a rename, delete a file and add the same file under\nanother name:\n\n PUT /2.0/snippets/evzijst/kypj HTTP/1.1\n Content-Length: 212\n Content-Type: multipart/related; start=\"snippet\"; boundary=\"===============1438169132528273974==\"\n MIME-Version: 1.0\n\n --===============1438169132528273974==\n Content-Type: application/json; charset=\"utf-8\"\n MIME-Version: 1.0\n Content-ID: snippet\n\n {\n \"files\": {\n \"foo.txt\": {},\n \"bar.txt\": {}\n }\n }\n\n --===============1438169132528273974==\n Content-Type: text/plain; charset=\"us-ascii\"\n MIME-Version: 1.0\n Content-Transfer-Encoding: 7bit\n Content-ID: \"bar.txt\"\n Content-Disposition: attachment; filename=\"bar.txt\"\n\n foo\n\n --===============1438169132528273974==--\n\n\nmultipart/form-data\n-----------------\n\nAgain, one can also use `multipart/form-data` to manipulate file\ncontents and meta data atomically.\n\n $ curl -X PUT http://localhost:12345/2.0/snippets/evzijst/kypj -F title=\"My updated snippet\" -F file=@foo.txt\n\n PUT /2.0/snippets/evzijst/kypj HTTP/1.1\n Content-Length: 351\n Content-Type: multipart/form-data; boundary=----------------------------63a4b224c59f\n\n ------------------------------63a4b224c59f\n Content-Disposition: form-data; name=\"file\"; filename=\"foo.txt\"\n Content-Type: text/plain\n\n foo\n\n ------------------------------63a4b224c59f\n Content-Disposition: form-data; name=\"title\"\n\n My updated snippet\n ------------------------------63a4b224c59f\n\nTo delete a file, omit its contents while including its name in the\n`files` field:\n\n $ curl -X PUT https://api.bitbucket.org/2.0/snippets/evzijst/kypj -F files=image.png\n\n PUT /2.0/snippets/evzijst/kypj HTTP/1.1\n Content-Length: 149\n Content-Type: multipart/form-data; boundary=----------------------------ef8871065a86\n\n ------------------------------ef8871065a86\n Content-Disposition: form-data; name=\"files\"\n\n image.png\n ------------------------------ef8871065a86--\n\nThe explicit use of the `files` element in `multipart/related` and\n`multipart/form-data` is only required when deleting files.\nThe default mode of operation is for file parts to be processed,\nregardless of whether or not they are listed in `files`, as a\nconvenience to the client." }, "delete": { "security": [ { "oauth2": [ "snippet:write" ] }, { "basic": [] }, { "api_key": [] } ], "description": "Deletes a snippet and returns an empty response.", "responses": { "401": { "description": "If the snippet is private and the request was not authenticated.", "schema": { "$ref": "#/definitions/error" } }, "403": { "description": "If authenticated user does not have permission to delete the private snippet.", "schema": { "$ref": "#/definitions/error" } }, "404": { "description": "If the snippet does not exist.", "schema": { "$ref": "#/definitions/error" } }, "204": { "description": "If the snippet was deleted successfully." } }, "parameters": [ { "required": true, "type": "string", "description": "The snippet's id.", "name": "encoded_id", "in": "path" } ], "tags": [ "snippets" ] }, "parameters": [ { "required": true, "type": "string", "name": "username", "in": "path" }, { "required": true, "type": "string", "name": "encoded_id", "in": "path" } ], "get": { "responses": { "200": { "description": "The snippet object.", "schema": { "$ref": "#/definitions/snippet" } }, "401": { "description": "If the snippet is private and the request was not authenticated.", "schema": { "$ref": "#/definitions/error" } }, "403": { "description": "If authenticated user does not have access to the private snippet.", "schema": { "$ref": "#/definitions/error" } }, "404": { "description": "If the snippet does not exist.", "schema": { "$ref": "#/definitions/error" } } }, "parameters": [ { "required": true, "type": "string", "description": "The snippet's id.", "name": "encoded_id", "in": "path" } ], "produces": [ "application/json", "multipart/related", "multipart/form-data" ], "tags": [ "snippets" ], "security": [ { "oauth2": [ "snippet" ] }, { "basic": [] }, { "api_key": [] } ], "description": "Retrieves a single snippet.\n\nSnippets support multiple content types:\n\n* application/json\n* multipart/related\n* multipart/form-data\n\n\napplication/json\n----------------\n\nThe default content type of the response is `application/json`.\nSince JSON is always `utf-8`, it cannot reliably contain file contents\nfor files that are not text. Therefore, JSON snippet documents only\ncontain the filename and links to the file contents.\n\nThis means that in order to retrieve all parts of a snippet, N+1\nrequests need to be made (where N is the number of files in the\nsnippet).\n\n\nmultipart/related\n-----------------\n\nTo retrieve an entire snippet in a single response, use the\n`Accept: multipart/related` HTTP request header.\n\n $ curl -H \"Accept: multipart/related\" https://api.bitbucket.org/2.0/snippets/evzijst/1\n\nResponse:\n\n HTTP/1.1 200 OK\n Content-Length: 2214\n Content-Type: multipart/related; start=\"snippet\"; boundary=\"===============1438169132528273974==\"\n MIME-Version: 1.0\n\n --===============1438169132528273974==\n Content-Type: application/json; charset=\"utf-8\"\n MIME-Version: 1.0\n Content-ID: snippet\n\n {\n \"links\": {\n \"self\": {\n \"href\": \"https://api.bitbucket.org/2.0/snippets/evzijst/kypj\"\n },\n \"html\": {\n \"href\": \"https://bitbucket.org/snippets/evzijst/kypj\"\n },\n \"comments\": {\n \"href\": \"https://api.bitbucket.org/2.0/snippets/evzijst/kypj/comments\"\n },\n \"watchers\": {\n \"href\": \"https://api.bitbucket.org/2.0/snippets/evzijst/kypj/watchers\"\n },\n \"commits\": {\n \"href\": \"https://api.bitbucket.org/2.0/snippets/evzijst/kypj/commits\"\n }\n },\n \"id\": kypj,\n \"title\": \"My snippet\",\n \"created_on\": \"2014-12-29T22:22:04.790331+00:00\",\n \"updated_on\": \"2014-12-29T22:22:04.790331+00:00\",\n \"is_private\": false,\n \"files\": {\n \"foo.txt\": {\n \"links\": {\n \"self\": {\n \"href\": \"https://api.bitbucket.org/2.0/snippets/evzijst/kypj/files/367ab19/foo.txt\"\n },\n \"html\": {\n \"href\": \"https://bitbucket.org/snippets/evzijst/kypj#foo.txt\"\n }\n }\n },\n \"image.png\": {\n \"links\": {\n \"self\": {\n \"href\": \"https://api.bitbucket.org/2.0/snippets/evzijst/kypj/files/367ab19/image.png\"\n },\n \"html\": {\n \"href\": \"https://bitbucket.org/snippets/evzijst/kypj#image.png\"\n }\n }\n }\n ],\n \"owner\": {\n \"username\": \"evzijst\",\n \"display_name\": \"Erik van Zijst\",\n \"uuid\": \"{d301aafa-d676-4ee0-88be-962be7417567}\",\n \"links\": {\n \"self\": {\n \"href\": \"https://api.bitbucket.org/2.0/users/evzijst\"\n },\n \"html\": {\n \"href\": \"https://bitbucket.org/evzijst\"\n },\n \"avatar\": {\n \"href\": \"https://bitbucket-staging-assetroot.s3.amazonaws.com/c/photos/2013/Jul/31/erik-avatar-725122544-0_avatar.png\"\n }\n }\n },\n \"creator\": {\n \"username\": \"evzijst\",\n \"display_name\": \"Erik van Zijst\",\n \"uuid\": \"{d301aafa-d676-4ee0-88be-962be7417567}\",\n \"links\": {\n \"self\": {\n \"href\": \"https://api.bitbucket.org/2.0/users/evzijst\"\n },\n \"html\": {\n \"href\": \"https://bitbucket.org/evzijst\"\n },\n \"avatar\": {\n \"href\": \"https://bitbucket-staging-assetroot.s3.amazonaws.com/c/photos/2013/Jul/31/erik-avatar-725122544-0_avatar.png\"\n }\n }\n }\n }\n\n --===============1438169132528273974==\n Content-Type: text/plain; charset=\"us-ascii\"\n MIME-Version: 1.0\n Content-Transfer-Encoding: 7bit\n Content-ID: \"foo.txt\"\n Content-Disposition: attachment; filename=\"foo.txt\"\n\n foo\n\n --===============1438169132528273974==\n Content-Type: image/png\n MIME-Version: 1.0\n Content-Transfer-Encoding: base64\n Content-ID: \"image.png\"\n Content-Disposition: attachment; filename=\"image.png\"\n\n iVBORw0KGgoAAAANSUhEUgAAABQAAAAoCAYAAAD+MdrbAAABD0lEQVR4Ae3VMUoDQRTG8ccUaW2m\n TKONFxArJYJamCvkCnZTaa+VnQdJSBFl2SMsLFrEWNjZBZs0JgiL/+KrhhVmJRbCLPx4O+/DT2TB\n cbblJxf+UWFVVRNsEGAtgvJxnLm2H+A5RQ93uIl+3632PZyl/skjfOn9Gvdwmlcw5aPUwimG+NT5\n EnNN036IaZePUuIcK533NVfal7/5yjWeot2z9ta1cAczHEf7I+3J0ws9Cgx0fsOFpmlfwKcWPuBQ\n 73Oc4FHzBaZ8llq4q1mr5B2mOUCt815qYR8eB1hG2VJ7j35q4RofaH7IG+Xrf/PfJhfmwtfFYoIN\n AqxFUD6OMxcvkO+UfKfkOyXfKdsv/AYCHMLVkHAFWgAAAABJRU5ErkJggg==\n --===============1438169132528273974==--\n\nmultipart/form-data\n-------------------\n\nAs with creating new snippets, `multipart/form-data` can be used as an\nalternative to `multipart/related`. However, the inherently flat\nstructure of form-data means that only basic, root-level properties\ncan be returned, while nested elements like `links` are omitted:\n\n $ curl -H \"Accept: multipart/form-data\" https://api.bitbucket.org/2.0/snippets/evzijst/kypj\n\nResponse:\n\n HTTP/1.1 200 OK\n Content-Length: 951\n Content-Type: multipart/form-data; boundary=----------------------------63a4b224c59f\n\n ------------------------------63a4b224c59f\n Content-Disposition: form-data; name=\"title\"\n Content-Type: text/plain; charset=\"utf-8\"\n\n My snippet\n ------------------------------63a4b224c59f--\n Content-Disposition: attachment; name=\"file\"; filename=\"foo.txt\"\n Content-Type: text/plain\n\n foo\n\n ------------------------------63a4b224c59f\n Content-Disposition: attachment; name=\"file\"; filename=\"image.png\"\n Content-Transfer-Encoding: base64\n Content-Type: application/octet-stream\n\n iVBORw0KGgoAAAANSUhEUgAAABQAAAAoCAYAAAD+MdrbAAABD0lEQVR4Ae3VMUoDQRTG8ccUaW2m\n TKONFxArJYJamCvkCnZTaa+VnQdJSBFl2SMsLFrEWNjZBZs0JgiL/+KrhhVmJRbCLPx4O+/DT2TB\n cbblJxf+UWFVVRNsEGAtgvJxnLm2H+A5RQ93uIl+3632PZyl/skjfOn9Gvdwmlcw5aPUwimG+NT5\n EnNN036IaZePUuIcK533NVfal7/5yjWeot2z9ta1cAczHEf7I+3J0ws9Cgx0fsOFpmlfwKcWPuBQ\n 73Oc4FHzBaZ8llq4q1mr5B2mOUCt815qYR8eB1hG2VJ7j35q4RofaH7IG+Xrf/PfJhfmwtfFYoIN\n AqxFUD6OMxcvkO+UfKfkOyXfKdsv/AYCHMLVkHAFWgAAAABJRU5ErkJggg==\n ------------------------------5957323a6b76--" } }, "/addon/linkers": { "parameters": [], "get": { "security": [ { "oauth2": [] }, { "basic": [] }, { "api_key": [] } ], "description": "", "responses": { "default": { "description": "Unexpected error.", "schema": { "$ref": "#/definitions/error" } } }, "parameters": [], "tags": [ "addon" ] } }, "/repositories/{username}/{repo_slug}/pullrequests/{pull_request_id}/comments/{comment_id}": { "parameters": [ { "required": true, "type": "string", "name": "username", "in": "path" }, { "required": true, "type": "string", "name": "repo_slug", "in": "path" }, { "required": true, "type": "string", "name": "pull_request_id", "in": "path" }, { "required": true, "type": "string", "name": "comment_id", "in": "path" } ], "get": { "security": [ { "oauth2": [ "pullrequest" ] }, { "basic": [] }, { "api_key": [] } ], "description": "Returns a specific pull request comment.", "responses": { "default": { "description": "Unexpected error.", "schema": { "$ref": "#/definitions/error" } } }, "parameters": [], "tags": [ "pullrequests" ] } }, "/repositories/{username}/{repo_slug}/components/{component_id}": { "parameters": [ { "required": true, "type": "string", "name": "username", "in": "path" }, { "required": true, "type": "string", "name": "repo_slug", "in": "path" }, { "required": true, "type": "string", "name": "component_id", "in": "path" } ], "get": { "security": [ { "oauth2": [ "issue" ] }, { "basic": [] }, { "api_key": [] } ], "description": "Returns the specified issue tracker component object.", "responses": { "200": { "description": "The specified component object.", "schema": { "$ref": "#/definitions/component" } }, "404": { "description": "If the specified repository or component does not exist, or if the repository doesn't have the issue tracker enabled.", "schema": { "$ref": "#/definitions/error" } } }, "parameters": [ { "required": true, "type": "integer", "description": "The component's id", "name": "component_id", "in": "path" } ], "tags": [ "issue_tracker" ] } }, "/addon": { "put": { "security": [ { "oauth2": [] }, { "basic": [] }, { "api_key": [] } ], "description": "", "responses": { "default": { "description": "Unexpected error.", "schema": { "$ref": "#/definitions/error" } } }, "parameters": [], "tags": [ "addon" ] }, "parameters": [], "delete": { "security": [ { "oauth2": [] }, { "basic": [] }, { "api_key": [] } ], "description": "", "responses": { "default": { "description": "Unexpected error.", "schema": { "$ref": "#/definitions/error" } } }, "parameters": [], "tags": [ "addon" ] } }, "/users/{username}/following": { "parameters": [ { "required": true, "type": "string", "name": "username", "in": "path" } ], "get": { "security": [ { "oauth2": [ "account" ] }, { "basic": [] }, { "api_key": [] } ], "description": "Returns the list of accounts this user is following.", "responses": { "200": { "description": "A paginated list of user objects.", "schema": { "$ref": "#/definitions/paginated_users" } }, "404": { "description": "If no user exists for the specified name, or if the specified account is a team account, not a personal account.", "schema": { "$ref": "#/definitions/error" } } }, "parameters": [ { "required": true, "type": "string", "description": "The user's username", "name": "username", "in": "path" } ], "tags": [ "users" ] } }, "/repositories/{username}/{repo_slug}/issues/{issue_id}": { "delete": { "security": [ { "oauth2": [ "issue:write" ] }, { "basic": [] }, { "api_key": [] } ], "description": "Deletes the specified issue. This requires write access to the\nrepository.", "responses": { "200": { "description": "The issue object.", "schema": { "$ref": "#/definitions/issue" } }, "403": { "description": "When the authenticated user lacks isn't authorized to delete the issue tracker.", "schema": { "$ref": "#/definitions/error" } }, "404": { "description": "If the specified repository or issue does not exist, or if the repository doesn't have the issue tracker enabled.", "schema": { "$ref": "#/definitions/error" } } }, "parameters": [], "tags": [ "issue_tracker" ] }, "parameters": [ { "required": true, "type": "string", "name": "username", "in": "path" }, { "required": true, "type": "string", "name": "repo_slug", "in": "path" }, { "required": true, "type": "string", "name": "issue_id", "in": "path" } ], "get": { "security": [ { "oauth2": [ "issue" ] }, { "basic": [] }, { "api_key": [] } ], "description": "Returns the specified issue.", "responses": { "200": { "description": "The issue object.", "schema": { "$ref": "#/definitions/issue" } }, "403": { "description": "When the authenticated user lacks isn't authorized to access the issue tracker.", "schema": { "$ref": "#/definitions/error" } }, "404": { "description": "If the specified repository or issue does not exist, or if the repository doesn't have the issue tracker enabled.", "schema": { "$ref": "#/definitions/error" } } }, "parameters": [], "tags": [ "issue_tracker" ] } }, "/teams/{username}/repositories": { "parameters": [ { "required": true, "type": "string", "name": "username", "in": "path" } ], "get": { "security": [ { "oauth2": [ "repository" ] }, { "basic": [] }, { "api_key": [] } ], "description": "All repositories owned by a user/team. This includes private\nrepositories, but filtered down to the ones that the calling user has\naccess to.", "responses": { "default": { "description": "Unexpected error.", "schema": { "$ref": "#/definitions/error" } } }, "parameters": [], "tags": [ "users", "teams" ] } }, "/repositories/{username}/{repo_slug}/downloads": { "post": { "security": [ { "oauth2": [ "repository:write" ] }, { "basic": [] }, { "api_key": [] } ], "description": "Upload new download artifacts.\n\nTo upload files, perform a `multipart/form-data` POST containing one\nor more `files` fields:\n\n $ echo Hello World > hello.txt\n $ curl -s -u evzijst -X POST https://api.bitbucket.org/2.0/repositories/evzijst/git-tests/downloads -F files=@hello.txt\n\nWhen a file is uploaded with the same name as an existing artifact,\nthen the existing file will be replaced.", "responses": { "default": { "description": "Unexpected error.", "schema": { "$ref": "#/definitions/error" } } }, "parameters": [], "tags": [ "downloads" ] }, "parameters": [ { "required": true, "type": "string", "name": "username", "in": "path" }, { "required": true, "type": "string", "name": "repo_slug", "in": "path" } ], "get": { "security": [ { "oauth2": [ "repository" ] }, { "basic": [] }, { "api_key": [] } ], "description": "Returns a list of download links associated with the repository.", "responses": { "default": { "description": "Unexpected error.", "schema": { "$ref": "#/definitions/error" } } }, "parameters": [], "tags": [ "downloads" ] } }, "/repositories/{username}/{repo_slug}/refs": { "parameters": [ { "required": true, "type": "string", "name": "username", "in": "path" }, { "required": true, "type": "string", "name": "repo_slug", "in": "path" } ], "get": { "security": [ { "oauth2": [ "repository" ] }, { "basic": [] }, { "api_key": [] } ], "description": "", "responses": { "default": { "description": "Unexpected error.", "schema": { "$ref": "#/definitions/error" } } }, "parameters": [], "tags": [ "refs" ] } }, "/hook_events": { "parameters": [], "get": { "security": [ { "oauth2": [] }, { "basic": [] }, { "api_key": [] } ], "description": "Returns the webhook resource or subject types on which webhooks can\nbe registered.\n\nEach resource/subject type contains an `event` link that returns the\npaginated list of specific events each individual subject type can\nemit.\n\nThis endpoint is publicly accessible and does not require\nauthentication or scopes.", "responses": { "200": { "description": "A mapping of resource/subject types pointing to their individual event types.", "schema": { "$ref": "#/definitions/subject_types" } } }, "parameters": [], "tags": [ "webhooks" ] } }, "/teams/{username}": { "parameters": [ { "required": true, "type": "string", "name": "username", "in": "path" } ], "get": { "security": [ { "oauth2": [] }, { "basic": [] }, { "api_key": [] } ], "description": "Gets the public information associated with a team.\n\nIf the team's profile is private, `location`, `website` and\n`created_on` elements are omitted.", "responses": { "200": { "description": "The team object", "schema": { "$ref": "#/definitions/team" } }, "404": { "description": "If no team exists for the specified name or UUID, or if the specified account is a personal account, not a team account.", "schema": { "$ref": "#/definitions/error" } } }, "parameters": [ { "required": true, "type": "string", "description": "The team's username or UUID.", "name": "username", "in": "path" } ], "tags": [ "teams" ] } }, "/user/emails/{email}": { "parameters": [ { "required": true, "type": "string", "name": "email", "in": "path" } ], "get": { "security": [ { "oauth2": [ "email" ] }, { "basic": [] }, { "api_key": [] } ], "description": "Returns details about a specific one of the authenticated user's\nemail addresses.\n\nDetails describe whether the address has been confirmed by the user and\nwhether it is the user's primary address or not.", "responses": { "default": { "description": "Unexpected error.", "schema": { "$ref": "#/definitions/error" } } }, "parameters": [], "tags": [ "users" ] } }, "/repositories/{username}/{repo_slug}/pullrequests/{pull_request_id}/approve": { "post": { "security": [ { "oauth2": [ "pullrequest:write" ] }, { "basic": [] }, { "api_key": [] } ], "description": "Approve the specified pull request as the authenticated user.", "responses": { "default": { "description": "Unexpected error.", "schema": { "$ref": "#/definitions/error" } } }, "parameters": [], "tags": [ "pullrequests" ] }, "parameters": [ { "required": true, "type": "string", "name": "username", "in": "path" }, { "required": true, "type": "string", "name": "repo_slug", "in": "path" }, { "required": true, "type": "string", "name": "pull_request_id", "in": "path" } ], "delete": { "security": [ { "oauth2": [ "pullrequest:write" ] }, { "basic": [] }, { "api_key": [] } ], "description": "Redact the authenticated user's approval of the specified pull\nrequest.", "responses": { "default": { "description": "Unexpected error.", "schema": { "$ref": "#/definitions/error" } } }, "parameters": [], "tags": [ "pullrequests" ] } }, "/repositories/{username}/{repo_slug}/patch/{spec}": { "parameters": [ { "required": true, "type": "string", "name": "username", "in": "path" }, { "required": true, "type": "string", "name": "repo_slug", "in": "path" }, { "required": true, "type": "string", "name": "spec", "in": "path" } ], "get": { "security": [ { "oauth2": [ "repository" ] }, { "basic": [] }, { "api_key": [] } ], "description": "", "responses": { "default": { "description": "Unexpected error.", "schema": { "$ref": "#/definitions/error" } } }, "parameters": [], "tags": [ "commits" ] } }, "/snippets/{username}/{encoded_id}/{node_id}/diff": { "parameters": [ { "required": true, "type": "string", "name": "username", "in": "path" }, { "required": true, "type": "string", "name": "encoded_id", "in": "path" }, { "required": true, "type": "string", "name": "node_id", "in": "path" } ], "get": { "security": [ { "oauth2": [ "snippet" ] }, { "basic": [] }, { "api_key": [] } ], "description": "Returns the diff of the specified commit against its first parent.\n\nNote that this resource is different in functionality from the `patch`\nresource.\n\nThe differences between a diff and a patch are:\n\n* patches have a commit header with the username, message, etc\n* diffs support the optional `path=foo/bar.py` query param to filter the\n diff to just that one file diff (not supported for patches)\n* for a merge, the diff will show the diff between the merge commit and\n its first parent (identical to how PRs work), while patch returns a\n response containing separate patches for each commit on the second\n parent's ancestry, up to the oldest common ancestor (identical to\n its reachability).\n\nNote that the character encoding of the contents of the diff is\nunspecified as Git and Mercurial do not track this, making it hard for\nBitbucket to reliably determine this.", "responses": { "200": { "description": "The raw diff contents." }, "403": { "description": "If the authenticated user does not have access to the snippet.", "schema": { "$ref": "#/definitions/error" } }, "404": { "description": "If the snippet does not exist.", "schema": { "$ref": "#/definitions/error" } } }, "parameters": [ { "type": "string", "description": "When used, only one the diff of the specified file will be returned.", "name": "path", "in": "query" }, { "required": true, "type": "string", "description": "The snippet id.", "name": "encoded_id", "in": "path" } ], "tags": [ "snippets" ] } }, "/repositories/{username}/{repo_slug}/forks": { "parameters": [ { "required": true, "type": "string", "name": "username", "in": "path" }, { "required": true, "type": "string", "name": "repo_slug", "in": "path" } ], "get": { "security": [ { "oauth2": [ "repository" ] }, { "basic": [] }, { "api_key": [] } ], "description": "Returns a paginated list of all the forks of the specified\nrepository.", "responses": { "200": { "description": "All forks.", "schema": { "$ref": "#/definitions/paginated_repositories" } } }, "parameters": [], "tags": [ "repositories" ] } }, "/repositories/{username}/{repo_slug}/issues": { "post": { "security": [ { "oauth2": [ "issue:write" ] }, { "basic": [] }, { "api_key": [] } ], "description": "Creates a new issue.\n\nThis call requires authentication. Private repositories or private\nissue trackers require the caller to authenticate with an account that\nhas appropriate authorisation.\n\nThe authenticated user is used for the issue's `reporter` field.", "responses": { "201": { "headers": { "Location": { "type": "string", "description": "The (absolute) URL of the newly created issue." } }, "description": "The newly created issue.", "schema": { "$ref": "#/definitions/issue" } }, "403": { "description": "When the authenticated user lacks the privilege to create issues in the issue tracker.", "schema": { "$ref": "#/definitions/error" } }, "404": { "description": "If the specified repository or version does not exist, or if the repository doesn't have the issue tracker enabled.", "schema": { "$ref": "#/definitions/error" } }, "401": { "description": "When the request wasn't authenticated.", "schema": { "$ref": "#/definitions/error" } } }, "parameters": [ { "schema": { "$ref": "#/definitions/issue" }, "required": true, "description": "The new issue. Note that the only required element is `title`. All other elements can be omitted from the body.", "name": "_body", "in": "body" } ], "tags": [ "issue_tracker" ] }, "parameters": [ { "required": true, "type": "string", "name": "username", "in": "path" }, { "required": true, "type": "string", "name": "repo_slug", "in": "path" } ], "get": { "security": [ { "oauth2": [ "issue" ] }, { "basic": [] }, { "api_key": [] } ], "description": "Returns the issues in the issue tracker.", "responses": { "200": { "description": "A paginated list of the issues matching any filter criteria that were provided.", "schema": { "$ref": "#/definitions/paginated_issues" } }, "404": { "description": "If the specified repository or version does not exist, or if the repository doesn't have the issue tracker enabled.", "schema": { "$ref": "#/definitions/error" } } }, "parameters": [], "tags": [ "issue_tracker" ] } }, "/repositories/{username}/{repo_slug}/issues/{issue_id}/attachments": { "post": { "security": [ { "oauth2": [ "issue:write" ] }, { "basic": [] }, { "api_key": [] } ], "description": "Upload new issue attachments.\n\nTo upload files, perform a `multipart/form-data` POST containing one\nor more file fields.\n\nWhen a file is uploaded with the same name as an existing attachment,\nthen the existing file will be replaced.", "responses": { "400": { "description": "If no files were uploaded, or if the wrong `Content-Type` was used." }, "201": { "headers": { "Location": { "type": "string", "description": "The URL to the issue's collection of attachments." } }, "description": "An empty response document." }, "404": { "description": "If the specified repository or issue does not exist, or if the repository doesn't have the issue tracker enabled.", "schema": { "$ref": "#/definitions/error" } }, "401": { "description": "If the issue tracker is private and the request was not authenticated." } }, "parameters": [ { "required": true, "type": "integer", "description": "The issue's id", "name": "issue_id", "in": "path" } ], "tags": [ "issue_tracker" ] }, "parameters": [ { "required": true, "type": "string", "name": "username", "in": "path" }, { "required": true, "type": "string", "name": "repo_slug", "in": "path" }, { "required": true, "type": "string", "name": "issue_id", "in": "path" } ], "get": { "security": [ { "oauth2": [ "issue" ] }, { "basic": [] }, { "api_key": [] } ], "description": "Returns all attachments for this issue.\n\nThis returns the files' meta data. This does not return the files'\nactual contents.\n\nThe files are always ordered by their upload date.", "responses": { "200": { "description": "A paginated list of all attachments for this issue.", "schema": { "$ref": "#/definitions/paginated_issue_attachments" } }, "401": { "description": "If the issue tracker is private and the request was not authenticated." }, "404": { "description": "If the specified repository or version does not exist, or if the repository doesn't have the issue tracker enabled.", "schema": { "$ref": "#/definitions/error" } } }, "parameters": [ { "required": true, "type": "integer", "description": "The issue's id", "name": "issue_id", "in": "path" } ], "tags": [ "issue_tracker" ] } }, "/repositories/{username}/{repo_slug}/versions": { "parameters": [ { "required": true, "type": "string", "name": "username", "in": "path" }, { "required": true, "type": "string", "name": "repo_slug", "in": "path" } ], "get": { "security": [ { "oauth2": [ "issue" ] }, { "basic": [] }, { "api_key": [] } ], "description": "Returns the versions that have been defined in the issue tracker.\n\nThis resource is only available on repositories that have the issue\ntracker enabled.", "responses": { "200": { "description": "The versions that have been defined in the issue tracker.", "schema": { "$ref": "#/definitions/paginated_versions" } }, "404": { "description": "If the specified repository does not exist, or if the repository doesn't have the issue tracker enabled.", "schema": { "$ref": "#/definitions/error" } } }, "parameters": [], "tags": [ "issue_tracker" ] } }, "/repositories/{username}/{repo_slug}/refs/tags/{name}": { "parameters": [ { "required": true, "type": "string", "name": "username", "in": "path" }, { "required": true, "type": "string", "name": "repo_slug", "in": "path" }, { "required": true, "type": "string", "name": "name", "in": "path" } ], "get": { "security": [ { "oauth2": [ "repository" ] }, { "basic": [] }, { "api_key": [] } ], "description": "", "responses": { "default": { "description": "Unexpected error.", "schema": { "$ref": "#/definitions/error" } } }, "parameters": [], "tags": [ "refs" ] } }, "/snippets/{username}/{encoded_id}/watch": { "put": { "security": [ { "oauth2": [ "snippet:write" ] }, { "basic": [] }, { "api_key": [] } ], "description": "Used to start watching a specific snippet. Returns 204 (No Content).", "responses": { "401": { "description": "If the request was not authenticated.", "schema": { "$ref": "#/definitions/error" } }, "404": { "description": "If the snippet does not exist.", "schema": { "$ref": "#/definitions/error" } }, "204": { "description": "Indicates the authenticated user is now watching the snippet.", "schema": { "$ref": "#/definitions/paginated_users" } } }, "parameters": [ { "required": true, "type": "string", "description": "The snippet id.", "name": "encoded_id", "in": "path" } ], "tags": [ "snippets" ] }, "delete": { "security": [ { "oauth2": [ "snippet:write" ] }, { "basic": [] }, { "api_key": [] } ], "description": "Used to stop watching a specific snippet. Returns 204 (No Content)\nto indicate success.", "responses": { "401": { "description": "If the request was not authenticated.", "schema": { "$ref": "#/definitions/error" } }, "404": { "description": "If the snippet does not exist.", "schema": { "$ref": "#/definitions/error" } }, "204": { "description": "Indicates the user stopped watching the snippet successfully.", "schema": { "$ref": "#/definitions/paginated_users" } } }, "parameters": [ { "required": true, "type": "string", "description": "The snippet id.", "name": "encoded_id", "in": "path" } ], "tags": [ "snippets" ] }, "parameters": [ { "required": true, "type": "string", "name": "username", "in": "path" }, { "required": true, "type": "string", "name": "encoded_id", "in": "path" } ], "get": { "security": [ { "oauth2": [ "snippet" ] }, { "basic": [] }, { "api_key": [] } ], "description": "Used to check if the current user is watching a specific snippet.\n\nReturns 204 (No Content) if the user is watching the snippet and 404 if\nnot.\n\nHitting this endpoint anonymously always returns a 404.", "responses": { "204": { "description": "If the authenticated user is watching the snippet.", "schema": { "$ref": "#/definitions/paginated_users" } }, "404": { "description": "If the snippet does not exist, or if the authenticated user is not watching the snippet.", "schema": { "$ref": "#/definitions/error" } } }, "parameters": [ { "required": true, "type": "string", "description": "The snippet id.", "name": "encoded_id", "in": "path" } ], "tags": [ "snippets" ] } }, "/repositories/{username}/{repo_slug}/pullrequests/{pull_request_id}/diff": { "parameters": [ { "required": true, "type": "string", "name": "username", "in": "path" }, { "required": true, "type": "string", "name": "repo_slug", "in": "path" }, { "required": true, "type": "string", "name": "pull_request_id", "in": "path" } ], "get": { "security": [ { "oauth2": [ "pullrequest" ] }, { "basic": [] }, { "api_key": [] } ], "description": "", "responses": { "default": { "description": "Unexpected error.", "schema": { "$ref": "#/definitions/error" } } }, "parameters": [], "tags": [ "pullrequests" ] } }, "/snippets": { "post": { "security": [ { "oauth2": [ "snippet:write" ] }, { "basic": [] }, { "api_key": [] } ], "description": "Creates a new snippet under the authenticated user's account.\n\nSnippets can contain multiple files. Both text and binary files are\nsupported.\n\nThe simplest way to create a new snippet from a local file:\n\n $ curl -u username:password -X POST https://api.bitbucket.org/2.0/snippets -F file=@image.png\n\nCreating snippets through curl has a few limitations and so let's look\nat a more complicated scenario.\n\nSnippets are created with a multipart POST. Both `multipart/form-data`\nand `multipart/related` are supported. Both allow the creation of\nsnippets with both meta data (title, etc), as well as multiple text\nand binary files.\n\nThe main difference is that `multipart/related` can use rich encoding\nfor the meta data (currently JSON).\n\n\nmultipart/related (RFC-2387)\n----------------------------\n\nThis is the most advanced and efficient way to create a paste.\n\n POST /2.0/snippets/evzijst HTTP/1.1\n Content-Length: 1188\n Content-Type: multipart/related; start=\"snippet\"; boundary=\"===============1438169132528273974==\"\n MIME-Version: 1.0\n\n --===============1438169132528273974==\n Content-Type: application/json; charset=\"utf-8\"\n MIME-Version: 1.0\n Content-ID: snippet\n\n {\n \"title\": \"My snippet\",\n \"is_private\": true,\n \"scm\": \"hg\",\n \"files\": {\n \"foo.txt\": {},\n \"image.png\": {}\n }\n }\n\n --===============1438169132528273974==\n Content-Type: text/plain; charset=\"us-ascii\"\n MIME-Version: 1.0\n Content-Transfer-Encoding: 7bit\n Content-ID: \"foo.txt\"\n Content-Disposition: attachment; filename=\"foo.txt\"\n\n foo\n\n --===============1438169132528273974==\n Content-Type: image/png\n MIME-Version: 1.0\n Content-Transfer-Encoding: base64\n Content-ID: \"image.png\"\n Content-Disposition: attachment; filename=\"image.png\"\n\n iVBORw0KGgoAAAANSUhEUgAAABQAAAAoCAYAAAD+MdrbAAABD0lEQVR4Ae3VMUoDQRTG8ccUaW2m\n TKONFxArJYJamCvkCnZTaa+VnQdJSBFl2SMsLFrEWNjZBZs0JgiL/+KrhhVmJRbCLPx4O+/DT2TB\n cbblJxf+UWFVVRNsEGAtgvJxnLm2H+A5RQ93uIl+3632PZyl/skjfOn9Gvdwmlcw5aPUwimG+NT5\n EnNN036IaZePUuIcK533NVfal7/5yjWeot2z9ta1cAczHEf7I+3J0ws9Cgx0fsOFpmlfwKcWPuBQ\n 73Oc4FHzBaZ8llq4q1mr5B2mOUCt815qYR8eB1hG2VJ7j35q4RofaH7IG+Xrf/PfJhfmwtfFYoIN\n AqxFUD6OMxcvkO+UfKfkOyXfKdsv/AYCHMLVkHAFWgAAAABJRU5ErkJggg==\n --===============1438169132528273974==--\n\nThe request contains multiple parts and is structured as follows.\n\nThe first part is the JSON document that describes the snippet's\nproperties or meta data. It either has to be the first part, or the\nrequest's `Content-Type` header must contain the `start` parameter to\npoint to it.\n\nThe remaining parts are the files of which there can be zero or more.\nEach file part should contain the `Content-ID` MIME header through\nwhich the JSON meta data's `files` element addresses it. The value\nshould be the name of the file.\n\n`Content-Disposition` is an optional MIME header. The header's\noptional `filename` parameter can be used to specify the file name\nthat Bitbucket should use when writing the file to disk. When present,\n`filename` takes precedence over the value of `Content-ID`.\n\nWhen the JSON body omits the `files` element, the remaining parts are\nnot ignored. Instead, each file is added to the new snippet as if its\nname was explicitly linked (the use of the `files` elements is\nmandatory for some operations like deleting or renaming files).\n\n\nmultipart/form-data\n-------------------\n\nThe use of JSON for the snippet's meta data is optional. Meta data can\nalso be supplied as regular form fields in a more conventional\n`multipart/form-data` request:\n\n $ curl -X POST -u credentials https://api.bitbucket.org/2.0/snippets -F title=\"My snippet\" -F file=@foo.txt -F file=@image.png\n\n POST /2.0/snippets HTTP/1.1\n Content-Length: 951\n Content-Type: multipart/form-data; boundary=----------------------------63a4b224c59f\n\n ------------------------------63a4b224c59f\n Content-Disposition: form-data; name=\"file\"; filename=\"foo.txt\"\n Content-Type: text/plain\n\n foo\n\n ------------------------------63a4b224c59f\n Content-Disposition: form-data; name=\"file\"; filename=\"image.png\"\n Content-Type: application/octet-stream\n\n ?PNG\n\n IHDR?1??I.....\n ------------------------------63a4b224c59f\n Content-Disposition: form-data; name=\"title\"\n\n My snippet\n ------------------------------63a4b224c59f--\n\nHere the meta data properties are included as flat, top-level form\nfields. The file attachments use the `file` field name. To attach\nmultiple files, simply repeat the field.\n\nThe advantage of `multipart/form-data` over `multipart/related` is\nthat it can be easier to build clients.\n\nEssentially all properties are optional, `title` and `files` included.\n\n\nSharing and Visibility\n----------------------\n\nSnippets can be either public (visible to anyone on Bitbucket, as well\nas anonymous users), or private (visible only to the owner, creator\nand members of the team in case the snippet is owned by a team). This\nis controlled through the snippet's `is_private` element:\n\n* **is_private=false** -- everyone, including anonymous users can view\n the snippet\n* **is_private=true** -- only the owner and team members (for team\n snippets) can view it\n\nTo create the snippet under a team account, just append the team name\nto the URL (see `/2.0/snippets/{username}`).", "responses": { "201": { "headers": { "Location": { "type": "string", "description": "The URL of the newly created snippet." } }, "description": "The newly created snippet object.", "schema": { "$ref": "#/definitions/snippet" } }, "401": { "description": "If the request was not authenticated", "schema": { "$ref": "#/definitions/error" } } }, "parameters": [ { "schema": { "$ref": "#/definitions/snippet" }, "required": true, "description": "The new snippet object.", "name": "_body", "in": "body" } ], "tags": [ "snippets" ] }, "parameters": [], "get": { "security": [ { "oauth2": [ "snippet" ] }, { "basic": [] }, { "api_key": [] } ], "description": "Returns all snippets. Like pull requests, repositories and teams, the\nfull set of snippets is defined by what the current user has access to.\n\nThis includes all snippets owned by the current user, but also all snippets\nowned by any of the teams the user is a member of, or snippets by other\nusers that the current user is either watching or has collaborated on (for\ninstance by commenting on it).\n\nTo limit the set of returned snippets, apply the\n`?role=[owner|contributor|member]` query parameter where the roles are\ndefined as follows:\n\n* `owner`: all snippets owned by the current user\n* `contributor`: all snippets owned by, or watched by the current user\n* `member`: owned by the user, their teams, or watched by the current user\n\nWhen no role is specified, all public snippets are returned, as well as all\nprivately owned snippets watched or commented on.\n\nThe returned response is a normal paginated JSON list. This endpoint\nonly supports `application/json` responses and no\n`multipart/form-data` or `multipart/related`. As a result, it is not\npossible to include the file contents.", "responses": { "200": { "description": "A paginated list of snippets.", "schema": { "$ref": "#/definitions/paginated_snippets" } }, "404": { "description": "If the snippet does not exist.", "schema": { "$ref": "#/definitions/error" } } }, "parameters": [ { "enum": [ "owner", "contributor", "member" ], "name": "role", "required": false, "in": "query", "type": "string", "description": "Filter down the result based on the authenticated user's role (`owner`, `contributor`, or `member`)." } ], "tags": [ "snippets" ] } }, "/repositories/{username}/{repo_slug}/pullrequests/{pull_request_id}": { "put": { "security": [ { "oauth2": [ "pullrequest:write" ] }, { "basic": [] }, { "api_key": [] } ], "description": "Mutates the specified pull request.\n\nThis can be used to change the pull request's branches or description.\n\nOnly open pull requests can be mutated.", "responses": { "default": { "description": "Unexpected error.", "schema": { "$ref": "#/definitions/error" } } }, "parameters": [], "tags": [ "pullrequests" ] }, "parameters": [ { "required": true, "type": "string", "name": "username", "in": "path" }, { "required": true, "type": "string", "name": "repo_slug", "in": "path" }, { "required": true, "type": "string", "name": "pull_request_id", "in": "path" } ], "get": { "security": [ { "oauth2": [ "pullrequest" ] }, { "basic": [] }, { "api_key": [] } ], "description": "Returns the specified pull request.", "responses": { "200": { "description": "The pull request object", "schema": { "$ref": "#/definitions/pullrequest" } } }, "parameters": [], "tags": [ "pullrequests" ] } }, "/repositories/{username}/{repo_slug}/pullrequests/{pull_request_id}/comments": { "parameters": [ { "required": true, "type": "string", "name": "username", "in": "path" }, { "required": true, "type": "string", "name": "repo_slug", "in": "path" }, { "required": true, "type": "string", "name": "pull_request_id", "in": "path" } ], "get": { "security": [ { "oauth2": [ "pullrequest" ] }, { "basic": [] }, { "api_key": [] } ], "description": "Returns all the pull request's comments.\n\nThis includes both global, inline comments and replies.", "responses": { "default": { "description": "Unexpected error.", "schema": { "$ref": "#/definitions/error" } } }, "parameters": [], "tags": [ "pullrequests" ] } }, "/account/{username}/addons/{encoded_context_id}": { "put": { "security": [ { "oauth2": [ "account:write" ] }, { "basic": [] }, { "api_key": [] } ], "description": "", "responses": { "default": { "description": "Unexpected error.", "schema": { "$ref": "#/definitions/error" } } }, "parameters": [], "tags": [ "addon" ] }, "delete": { "security": [ { "oauth2": [ "account:write" ] }, { "basic": [] }, { "api_key": [] } ], "description": "", "responses": { "default": { "description": "Unexpected error.", "schema": { "$ref": "#/definitions/error" } } }, "parameters": [], "tags": [ "addon" ] }, "parameters": [ { "required": true, "type": "string", "name": "username", "in": "path" }, { "required": true, "type": "string", "name": "encoded_context_id", "in": "path" } ], "get": { "security": [ { "oauth2": [ "account:write" ] }, { "basic": [] }, { "api_key": [] } ], "description": "", "responses": { "default": { "description": "Unexpected error.", "schema": { "$ref": "#/definitions/error" } } }, "parameters": [], "tags": [ "addon" ] } }, "/repositories/{username}/{repo_slug}/pullrequests/{pull_request_id}/decline": { "post": { "security": [ { "oauth2": [ "pullrequest:write" ] }, { "basic": [] }, { "api_key": [] } ], "description": "", "responses": { "default": { "description": "Unexpected error.", "schema": { "$ref": "#/definitions/error" } } }, "parameters": [], "tags": [ "pullrequests" ] }, "parameters": [ { "required": true, "type": "string", "name": "username", "in": "path" }, { "required": true, "type": "string", "name": "repo_slug", "in": "path" }, { "required": true, "type": "string", "name": "pull_request_id", "in": "path" } ] }, "/user/emails": { "parameters": [], "get": { "security": [ { "oauth2": [ "email" ] }, { "basic": [] }, { "api_key": [] } ], "description": "Returns all the authenticated user's email addresses. Both\nconfirmed and unconfirmed.", "responses": { "default": { "description": "Unexpected error.", "schema": { "$ref": "#/definitions/error" } } }, "parameters": [], "tags": [ "users" ] } }, "/repositories/{username}/{repo_slug}/pullrequests": { "post": { "security": [ { "oauth2": [ "pullrequest:write" ] }, { "basic": [] }, { "api_key": [] } ], "description": "Creates a new pull request.", "responses": { "201": { "headers": { "Location": { "type": "string", "description": "The URL of new newly created pull request." } }, "description": "The newly created pull request.", "schema": { "$ref": "#/definitions/pullrequest" } } }, "parameters": [ { "schema": { "$ref": "#/definitions/pullrequest" }, "required": false, "description": "The new pull request.\n\nThe request URL you POST to becomes the destination repository URL. For this reason, you must specify an explicit source repository in the request object if you want to pull from a different repository (fork).\n\nSince not all elements are required or even mutable, you only need to include the elements you want to initialize, such as the source branch and the title.", "name": "_body", "in": "body" } ], "tags": [ "pullrequests" ] }, "parameters": [ { "required": true, "type": "string", "name": "username", "in": "path" }, { "required": true, "type": "string", "name": "repo_slug", "in": "path" } ], "get": { "security": [ { "oauth2": [ "pullrequest" ] }, { "basic": [] }, { "api_key": [] } ], "description": "Returns all pull requests on the specified repository.\n\nBy default only open pull requests are returned. This can be controlled\nusing the `state` query parameter. To retrieve pull requests that are\nin one of multiple states, repeat the `state` parameter for each\nindividual state.", "responses": { "default": { "description": "Unexpected error.", "schema": { "$ref": "#/definitions/error" } } }, "parameters": [ { "enum": [ "MERGED", "SUPERSEDED", "OPEN", "DECLINED" ], "type": "string", "description": "Only return pull requests that in this state. This parameter can be repeated.", "name": "state", "in": "query" } ], "tags": [ "pullrequests" ] } }, "/repositories/{username}/{repo_slug}/commits": { "post": { "security": [ { "oauth2": [ "repository" ] }, { "basic": [] }, { "api_key": [] } ], "description": "Identical to `GET /repositories/{username}/{repo_slug}/commits`,\nexcept that POST allows clients to place the include and exclude\nparameters in the request body to avoid URL length issues.\n\n**Note that this resource does NOT support new commit creation.**", "responses": { "default": { "description": "Unexpected error.", "schema": { "$ref": "#/definitions/error" } } }, "parameters": [], "tags": [ "commits" ] }, "parameters": [ { "required": true, "type": "string", "name": "username", "in": "path" }, { "required": true, "type": "string", "name": "repo_slug", "in": "path" } ], "get": { "security": [ { "oauth2": [ "repository" ] }, { "basic": [] }, { "api_key": [] } ], "description": "These are the repository's commits. They are paginated and returned\nin reverse chronological order, similar to the output of `git log` and\n`hg log`. Like these tools, the DAG can be filtered.\n\n## GET /repositories/{username}/{repo_slug}/commits/\n\nReturns all commits in the repo in topological order (newest commit\nfirst). All branches and tags are included (similar to\n`git log --all` and `hg log`).\n\n## GET /repositories/{username}/{repo_slug}/commits/master\n\nReturns all commits on rev `master` (similar to `git log master`,\n`hg log master`).\n\n## GET /repositories/{username}/{repo_slug}/commits/dev?exclude=master\n\nReturns all commits on ref `dev`, except those that are reachable on\n`master` (similar to `git log dev ^master`).\n\n## GET /repositories/{username}/{repo_slug}/commits/?exclude=master\n\nReturns all commits in the repo that are not on master\n(similar to `git log --all ^master`).\n\n## GET /repositories/{username}/{repo_slug}/commits/?include=foo&include=bar&exclude=fu&exclude=fubar\n\nReturns all commits that are on refs `foo` or `bar`, but not on `fu` or\n`fubar` (similar to `git log foo bar ^fu ^fubar`).\n\nBecause the response could include a very large number of commits, it\nis paginated. Follow the 'next' link in the response to navigate to the\nnext page of commits. As with other paginated resources, do not\nconstruct your own links.\n\nWhen the include and exclude parameters are more than ca fit in a\nquery string, clients can use a `x-www-form-urlencoded` POST instead.", "responses": { "default": { "description": "Unexpected error.", "schema": { "$ref": "#/definitions/error" } } }, "parameters": [], "tags": [ "commits" ] } }, "/repositories/{username}/{repo_slug}/commit/{sha}/comments": { "parameters": [ { "required": true, "type": "string", "name": "username", "in": "path" }, { "required": true, "type": "string", "name": "repo_slug", "in": "path" }, { "required": true, "type": "string", "name": "sha", "in": "path" } ], "get": { "security": [ { "oauth2": [ "repository" ] }, { "basic": [] }, { "api_key": [] } ], "description": "Returns the commit's comments.\n\nThis includes both global and inline comments.", "responses": { "default": { "description": "Unexpected error.", "schema": { "$ref": "#/definitions/error" } } }, "parameters": [], "tags": [ "commits" ] } }, "/repositories/{username}/{repo_slug}/commit/{revision}": { "parameters": [ { "required": true, "type": "string", "name": "username", "in": "path" }, { "required": true, "type": "string", "name": "repo_slug", "in": "path" }, { "required": true, "type": "string", "name": "revision", "in": "path" } ], "get": { "security": [ { "oauth2": [ "repository" ] }, { "basic": [] }, { "api_key": [] } ], "description": "Returns the specified commit.", "responses": { "200": { "description": "The commit object", "schema": { "$ref": "#/definitions/commit" } }, "404": { "description": "If the specified commit or repository does not exist.", "schema": { "$ref": "#/definitions/error" } } }, "parameters": [ { "required": true, "type": "string", "description": "The commit's SHA1.", "name": "revision", "in": "path" } ], "tags": [ "commits" ] } }, "/snippets/{username}": { "post": { "security": [ { "oauth2": [ "snippet:write" ] }, { "basic": [] }, { "api_key": [] } ], "description": "Identical to `/snippets`, except that the new snippet will be\ncreated under the account specified in the path parameter `{username}`.", "responses": { "201": { "headers": { "Location": { "type": "string", "description": "The URL of the newly created snippet." } }, "description": "The newly created snippet object.", "schema": { "$ref": "#/definitions/snippet" } }, "403": { "description": "If the authenticated user does not have permission to create snippets under the specified account.", "schema": { "$ref": "#/definitions/error" } }, "401": { "description": "If the request was not authenticated", "schema": { "$ref": "#/definitions/error" } } }, "parameters": [ { "schema": { "$ref": "#/definitions/snippet" }, "required": true, "description": "The new snippet object.", "name": "_body", "in": "body" } ], "tags": [ "snippets" ] }, "parameters": [ { "required": true, "type": "string", "name": "username", "in": "path" } ], "get": { "security": [ { "oauth2": [ "snippet" ] }, { "basic": [] }, { "api_key": [] } ], "description": "Identical to `/snippets`, except that the result is further filtered\nby the snippet owner and only those that are owned by `{username}` are\nreturned.", "responses": { "200": { "description": "A paginated list of snippets.", "schema": { "$ref": "#/definitions/paginated_snippets" } }, "404": { "description": "If the user does not exist.", "schema": { "$ref": "#/definitions/error" } } }, "parameters": [ { "enum": [ "owner", "contributor", "member" ], "name": "role", "required": false, "in": "query", "type": "string", "description": "Filter down the result based on the authenticated user's role (`owner`, `contributor`, or `member`)." }, { "required": true, "type": "string", "description": "Limits the result to snippets owned by this user.", "name": "username", "in": "path" } ], "tags": [ "snippets" ] } }, "/repositories/{username}/{repo_slug}/issues/{issue_id}/watch": { "put": { "security": [ { "oauth2": [ "issue", "account:write" ] }, { "basic": [] }, { "api_key": [] } ], "description": "Start watching this issue.\n\nTo start watching this issue, do an empty PUT. The 204 status code\nindicates that the operation was successful.", "responses": { "401": { "description": "When the request wasn't authenticated.", "schema": { "$ref": "#/definitions/error" } }, "404": { "description": "If the authenticated user is not watching this issue, or when the repo does not exist, or does not have an issue tracker.", "schema": { "$ref": "#/definitions/error" } }, "204": { "description": "Indicates that the authenticated user successfully started watching this issue.", "schema": { "$ref": "#/definitions/error" } } }, "parameters": [ { "required": true, "type": "integer", "description": "The issue's id", "name": "issue_id", "in": "path" } ], "tags": [ "issue_tracker" ] }, "delete": { "security": [ { "oauth2": [ "issue:write", "account:write" ] }, { "basic": [] }, { "api_key": [] } ], "description": "Stop watching this issue.", "responses": { "401": { "description": "When the request wasn't authenticated.", "schema": { "$ref": "#/definitions/error" } }, "404": { "description": "If the issue or the repo does not exist, or the repository does not have an issue tracker.", "schema": { "$ref": "#/definitions/error" } }, "204": { "description": "Indicates that the authenticated user successfully stopped watching this issue.", "schema": { "$ref": "#/definitions/error" } } }, "parameters": [ { "required": true, "type": "integer", "description": "The issue's id", "name": "issue_id", "in": "path" } ], "tags": [ "issue_tracker" ] }, "parameters": [ { "required": true, "type": "string", "name": "username", "in": "path" }, { "required": true, "type": "string", "name": "repo_slug", "in": "path" }, { "required": true, "type": "string", "name": "issue_id", "in": "path" } ], "get": { "security": [ { "oauth2": [ "issue", "account" ] }, { "basic": [] }, { "api_key": [] } ], "description": "Indicated whether or not the authenticated user is watching this\nissue.", "responses": { "401": { "description": "When the request wasn't authenticated.", "schema": { "$ref": "#/definitions/error" } }, "404": { "description": "If the authenticated user is not watching this issue, or when the repo does not exist, or does not have an issue tracker.", "schema": { "$ref": "#/definitions/error" } }, "204": { "description": "If the authenticated user is watching this issue.", "schema": { "$ref": "#/definitions/error" } } }, "parameters": [ { "required": true, "type": "integer", "description": "The issue's id", "name": "issue_id", "in": "path" } ], "tags": [ "issue_tracker" ] } }, "/repositories/{username}/{repo_slug}/milestones/{milestone_id}": { "parameters": [ { "required": true, "type": "string", "name": "username", "in": "path" }, { "required": true, "type": "string", "name": "repo_slug", "in": "path" }, { "required": true, "type": "string", "name": "milestone_id", "in": "path" } ], "get": { "security": [ { "oauth2": [ "issue" ] }, { "basic": [] }, { "api_key": [] } ], "description": "Returns the specified issue tracker milestone object.", "responses": { "200": { "description": "The specified milestone object.", "schema": { "$ref": "#/definitions/milestone" } }, "404": { "description": "If the specified repository or milestone does not exist, or if the repository doesn't have the issue tracker enabled.", "schema": { "$ref": "#/definitions/error" } } }, "parameters": [ { "required": true, "type": "integer", "description": "The milestone's id", "name": "milestone_id", "in": "path" } ], "tags": [ "issue_tracker" ] } }, "/teams": { "parameters": [], "get": { "security": [ { "oauth2": [ "team" ] }, { "basic": [] }, { "api_key": [] } ], "description": "Returns all the teams that the authenticated user is associated\nwith.", "responses": { "200": { "description": "A paginated list of teams.", "schema": { "$ref": "#/definitions/paginated_teams" } }, "401": { "description": "When the request wasn't authenticated.", "schema": { "$ref": "#/definitions/error" } } }, "parameters": [ { "enum": [ "admin", "contributor", "member" ], "name": "role", "required": false, "in": "query", "type": "string", "description": "\nFilters the teams based on the authenticated user's role on each team.\n\n* **member**: returns a list of all the teams which the caller is a member of\n at least one team group or repository owned by the team\n* **contributor**: returns a list of teams which the caller has write access\n to at least one repository owned by the team\n* **admin**: returns a list teams which the caller has team administrator access\n" } ], "tags": [ "teams" ] } }, "/user": { "parameters": [], "get": { "security": [ { "oauth2": [ "account" ] }, { "basic": [] }, { "api_key": [] } ], "description": "Returns the currently logged in user.", "responses": { "200": { "description": "The current user.", "schema": { "$ref": "#/definitions/user" } }, "401": { "description": "When the request wasn't authenticated.", "schema": { "$ref": "#/definitions/error" } } }, "parameters": [], "tags": [ "users" ] } }, "/repositories/{username}/{repo_slug}/commits/{revision}": { "post": { "security": [ { "oauth2": [ "repository" ] }, { "basic": [] }, { "api_key": [] } ], "description": "Identical to `GET /repositories/{username}/{repo_slug}/commits`,\nexcept that POST allows clients to place the include and exclude\nparameters in the request body to avoid URL length issues.\n\n**Note that this resource does NOT support new commit creation.**", "responses": { "default": { "description": "Unexpected error.", "schema": { "$ref": "#/definitions/error" } } }, "parameters": [], "tags": [ "commits" ] }, "parameters": [ { "required": true, "type": "string", "name": "username", "in": "path" }, { "required": true, "type": "string", "name": "repo_slug", "in": "path" }, { "required": true, "type": "string", "name": "revision", "in": "path" } ], "get": { "security": [ { "oauth2": [ "repository" ] }, { "basic": [] }, { "api_key": [] } ], "description": "These are the repository's commits. They are paginated and returned\nin reverse chronological order, similar to the output of `git log` and\n`hg log`. Like these tools, the DAG can be filtered.\n\n## GET /repositories/{username}/{repo_slug}/commits/\n\nReturns all commits in the repo in topological order (newest commit\nfirst). All branches and tags are included (similar to\n`git log --all` and `hg log`).\n\n## GET /repositories/{username}/{repo_slug}/commits/master\n\nReturns all commits on rev `master` (similar to `git log master`,\n`hg log master`).\n\n## GET /repositories/{username}/{repo_slug}/commits/dev?exclude=master\n\nReturns all commits on ref `dev`, except those that are reachable on\n`master` (similar to `git log dev ^master`).\n\n## GET /repositories/{username}/{repo_slug}/commits/?exclude=master\n\nReturns all commits in the repo that are not on master\n(similar to `git log --all ^master`).\n\n## GET /repositories/{username}/{repo_slug}/commits/?include=foo&include=bar&exclude=fu&exclude=fubar\n\nReturns all commits that are on refs `foo` or `bar`, but not on `fu` or\n`fubar` (similar to `git log foo bar ^fu ^fubar`).\n\nBecause the response could include a very large number of commits, it\nis paginated. Follow the 'next' link in the response to navigate to the\nnext page of commits. As with other paginated resources, do not\nconstruct your own links.\n\nWhen the include and exclude parameters are more than ca fit in a\nquery string, clients can use a `x-www-form-urlencoded` POST instead.", "responses": { "default": { "description": "Unexpected error.", "schema": { "$ref": "#/definitions/error" } } }, "parameters": [], "tags": [ "commits" ] } }, "/snippets/{username}/{encoded_id}/comments": { "post": { "security": [ { "oauth2": [ "snippet" ] }, { "basic": [] }, { "api_key": [] } ], "description": "Creates a new comment.\n\nThe only required field in the body is `content.raw`.\n\nTo create a threaded reply to an existing comment, include `parent.id`.", "responses": { "201": { "headers": { "Location": { "type": "string", "description": "The URL of the new comment" } }, "description": "The newly created comment.", "schema": { "$ref": "#/definitions/snippet" } }, "403": { "description": "If the authenticated user does not have access to the snippet.", "schema": { "$ref": "#/definitions/error" } }, "404": { "description": "If the snippet does not exist.", "schema": { "$ref": "#/definitions/error" } } }, "parameters": [ { "schema": { "$ref": "#/definitions/snippet" }, "required": true, "description": "The contents of the new comment.", "name": "_body", "in": "body" } ], "tags": [ "snippets" ] }, "parameters": [ { "required": true, "type": "string", "name": "username", "in": "path" }, { "required": true, "type": "string", "name": "encoded_id", "in": "path" } ], "get": { "security": [ { "oauth2": [ "snippet" ] }, { "basic": [] }, { "api_key": [] } ], "description": "Used to retrieve a paginated list of all comments for a specific\nsnippet.\n\nThis resource works identical to commit and pull request comments.", "responses": { "200": { "description": "A paginated list of snippet comments, ordered by creation date.", "schema": { "$ref": "#/definitions/paginated_snippet_comments" } }, "403": { "description": "If the authenticated user does not have access to the snippet.", "schema": { "$ref": "#/definitions/error" } }, "404": { "description": "If the snippet does not exist.", "schema": { "$ref": "#/definitions/error" } } }, "parameters": [], "tags": [ "snippets" ] } }, "/repositories/{username}/{repo_slug}/pullrequests/{pull_request_id}/activity": { "parameters": [ { "required": true, "type": "string", "name": "username", "in": "path" }, { "required": true, "type": "string", "name": "repo_slug", "in": "path" }, { "required": true, "type": "string", "name": "pull_request_id", "in": "path" } ], "get": { "security": [ { "oauth2": [ "pullrequest" ] }, { "basic": [] }, { "api_key": [] } ], "description": "Returns the pull request's activity log. This includes comments that\nwere made by the reviewers, updates and approvals.", "responses": { "default": { "description": "Unexpected error.", "schema": { "$ref": "#/definitions/error" } } }, "parameters": [], "tags": [ "pullrequests" ] } }, "/repositories/{username}": { "parameters": [ { "required": true, "type": "string", "name": "username", "in": "path" } ], "get": { "security": [ { "oauth2": [ "repository" ] }, { "basic": [] }, { "api_key": [] } ], "description": "Returns all repositories owned by the specified account.\n\nThe result can be narrowed down based on the authenticated user's role.\n\nE.g. with `?role=contributor`, only those repositories that the\nauthenticated user has write access to are returned (this includes any\nrepo the user is an admin on, as that implies write access).", "responses": { "200": { "description": "The repositories owned by the specified account.", "schema": { "$ref": "#/definitions/paginated_repositories" } }, "404": { "description": "If the specified account does not exist.", "schema": { "$ref": "#/definitions/error" } } }, "parameters": [ { "enum": [ "admin", "contributor", "member", "owner" ], "name": "role", "required": false, "in": "query", "type": "string", "description": "\nFilters the result based on the authenticated user's role on each repository.\n\n* **member**: returns repositories to which the user has explicit read access\n* **contributor**: returns repositories to which the user has explicit write access\n* **admin**: returns repositories to which the user has explicit administrator access\n* **owner**: returns all repositories owned by the current user\n" } ], "tags": [ "repositories" ] } }, "/repositories/{username}/{repo_slug}/pullrequests/{pull_request_id}/merge": { "post": { "security": [ { "oauth2": [ "pullrequest:write" ] }, { "basic": [] }, { "api_key": [] } ], "description": "", "responses": { "default": { "description": "Unexpected error.", "schema": { "$ref": "#/definitions/error" } } }, "parameters": [], "tags": [ "pullrequests" ] }, "parameters": [ { "required": true, "type": "string", "name": "username", "in": "path" }, { "required": true, "type": "string", "name": "repo_slug", "in": "path" }, { "required": true, "type": "string", "name": "pull_request_id", "in": "path" } ] }, "/snippets/{username}/{encoded_id}/commits/": { "parameters": [ { "required": true, "type": "string", "name": "username", "in": "path" }, { "required": true, "type": "string", "name": "encoded_id", "in": "path" } ], "get": { "security": [ { "oauth2": [ "snippet" ] }, { "basic": [] }, { "api_key": [] } ], "description": "", "responses": { "200": { "description": "The specified snippet commit.", "schema": { "$ref": "#/definitions/snippet_commit" } }, "403": { "description": "If the authenticated user does not have access to the snippet.", "schema": { "$ref": "#/definitions/error" } }, "404": { "description": "If the commit or the snippet does not exist.", "schema": { "$ref": "#/definitions/error" } } }, "parameters": [], "tags": [ "snippets" ] } }, "/snippets/{username}/{encoded_id}/{node_id}/patch": { "parameters": [ { "required": true, "type": "string", "name": "username", "in": "path" }, { "required": true, "type": "string", "name": "encoded_id", "in": "path" }, { "required": true, "type": "string", "name": "node_id", "in": "path" } ], "get": { "security": [ { "oauth2": [ "snippet" ] }, { "basic": [] }, { "api_key": [] } ], "description": "Returns the patch of the specified commit against its first\nparent.\n\nNote that this resource is different in functionality from the `diff`\nresource.\n\nThe differences between a diff and a patch are:\n\n* patches have a commit header with the username, message, etc\n* diffs support the optional `path=foo/bar.py` query param to filter the\n diff to just that one file diff (not supported for patches)\n* for a merge, the diff will show the diff between the merge commit and\n its first parent (identical to how PRs work), while patch returns a\n response containing separate patches for each commit on the second\n parent's ancestry, up to the oldest common ancestor (identical to\n its reachability).\n\nNote that the character encoding of the contents of the patch is\nunspecified as Git and Mercurial do not track this, making it hard for\nBitbucket to reliably determine this.", "responses": { "200": { "description": "The raw patch contents." }, "403": { "description": "If the authenticated user does not have access to the snippet.", "schema": { "$ref": "#/definitions/error" } }, "404": { "description": "If the snippet does not exist.", "schema": { "$ref": "#/definitions/error" } } }, "parameters": [ { "required": true, "type": "string", "description": "The snippet id.", "name": "encoded_id", "in": "path" } ], "tags": [ "snippets" ] } }, "/teams/{username}/followers": { "parameters": [ { "required": true, "type": "string", "name": "username", "in": "path" } ], "get": { "security": [ { "oauth2": [] }, { "basic": [] }, { "api_key": [] } ], "description": "Returns the list of accounts that are following this team.", "responses": { "200": { "description": "A paginated list of user objects.", "schema": { "$ref": "#/definitions/paginated_users" } }, "404": { "description": "If no team exists for the specified name, or if the specified account is a personal account, not a team account.", "schema": { "$ref": "#/definitions/error" } } }, "parameters": [ { "required": true, "type": "string", "description": "The team's username", "name": "username", "in": "path" } ], "tags": [ "teams" ] } }, "/snippets/{username}/{encoded_id}/{node_id}/files/{path}": { "parameters": [ { "required": true, "type": "string", "name": "username", "in": "path" }, { "required": true, "type": "string", "name": "encoded_id", "in": "path" }, { "required": true, "type": "string", "name": "node_id", "in": "path" }, { "required": true, "type": "string", "name": "path", "in": "path" } ], "get": { "security": [ { "oauth2": [ "snippet" ] }, { "basic": [] }, { "api_key": [] } ], "description": "Retrieves the raw contents of a specific file in the snippet. The\n`Content-Disposition` header will be \"attachment\" to avoid issues with\nmalevolent executable files.\n\nThe file's mime type is derived from its filename and returned in the\n`Content-Type` header.\n\nNote that for text files, no character encoding is included as part of\nthe content type.", "responses": { "200": { "headers": { "Content-Type": { "type": "string", "description": "The mime type as derived from the filename" }, "Content-Disposition": { "type": "string", "description": "attachment" } }, "description": "Returns the contents of the specified file." }, "403": { "description": "If the authenticated user does not have access to the snippet.", "schema": { "$ref": "#/definitions/error" } }, "404": { "description": "If the file or snippet does not exist.", "schema": { "$ref": "#/definitions/error" } } }, "parameters": [], "tags": [ "snippets" ] } }, "/addon/linkers/{linker_key}": { "parameters": [ { "required": true, "type": "string", "name": "linker_key", "in": "path" } ], "get": { "security": [ { "oauth2": [] }, { "basic": [] }, { "api_key": [] } ], "description": "", "responses": { "default": { "description": "Unexpected error.", "schema": { "$ref": "#/definitions/error" } } }, "parameters": [], "tags": [ "addon" ] } }, "/repositories/{username}/{repo_slug}/refs/tags": { "parameters": [ { "required": true, "type": "string", "name": "username", "in": "path" }, { "required": true, "type": "string", "name": "repo_slug", "in": "path" } ], "get": { "security": [ { "oauth2": [ "repository" ] }, { "basic": [] }, { "api_key": [] } ], "description": "", "responses": { "default": { "description": "Unexpected error.", "schema": { "$ref": "#/definitions/error" } } }, "parameters": [], "tags": [ "refs" ] } }, "/repositories/{username}/{repo_slug}/commit/{node}/approve": { "post": { "security": [ { "oauth2": [ "repository:write" ] }, { "basic": [] }, { "api_key": [] } ], "description": "Approve the specified commit as the authenticated user.\n\nThis operation is only available to users that have explicit access to\nthe repository. In contrast, just the fact that a repository is\npublicly accessible to users does not give them the ability to approve\ncommits.", "responses": { "200": { "description": "The `participant` object recording that the authenticated user approved the commit.", "schema": { "$ref": "#/definitions/participant" } }, "404": { "description": "If the specified commit, or the repository does not exist.", "schema": { "$ref": "#/definitions/error" } } }, "parameters": [ { "required": true, "type": "string", "description": "The commit's SHA1.", "name": "node", "in": "path" } ], "tags": [ "commits" ] }, "parameters": [ { "required": true, "type": "string", "name": "username", "in": "path" }, { "required": true, "type": "string", "name": "repo_slug", "in": "path" }, { "required": true, "type": "string", "name": "node", "in": "path" } ], "delete": { "security": [ { "oauth2": [ "repository:write" ] }, { "basic": [] }, { "api_key": [] } ], "description": "Redact the authenticated user's approval of the specified commit.\n\nThis operation is only available to users that have explicit access to\nthe repository. In contrast, just the fact that a repository is\npublicly accessible to users does not give them the ability to approve\ncommits.", "responses": { "204": { "description": "An empty response indicating the authenticated user's approval has been withdrawn." }, "404": { "description": "If the specified commit, or the repository does not exist.", "schema": { "$ref": "#/definitions/error" } } }, "parameters": [ { "required": true, "type": "string", "description": "The commit's SHA1.", "name": "node", "in": "path" } ], "tags": [ "commits" ] } }, "/account/{username}/addons": { "post": { "security": [ { "oauth2": [ "account:write" ] }, { "basic": [] }, { "api_key": [] } ], "description": "", "responses": { "default": { "description": "Unexpected error.", "schema": { "$ref": "#/definitions/error" } } }, "parameters": [], "tags": [ "addon" ] }, "parameters": [ { "required": true, "type": "string", "name": "username", "in": "path" } ], "get": { "security": [ { "oauth2": [ "account:write" ] }, { "basic": [] }, { "api_key": [] } ], "description": "", "responses": { "default": { "description": "Unexpected error.", "schema": { "$ref": "#/definitions/error" } } }, "parameters": [], "tags": [ "addon" ] } }, "/repositories/{username}/{repo_slug}/pullrequests/{pull_request_id}/commits": { "parameters": [ { "required": true, "type": "string", "name": "username", "in": "path" }, { "required": true, "type": "string", "name": "repo_slug", "in": "path" }, { "required": true, "type": "string", "name": "pull_request_id", "in": "path" } ], "get": { "security": [ { "oauth2": [ "pullrequest" ] }, { "basic": [] }, { "api_key": [] } ], "description": "Returns the pull request's commits.\n\nThese are the commits that are being merged into the destination\nbranch when the pull requests gets accepted.", "responses": { "default": { "description": "Unexpected error.", "schema": { "$ref": "#/definitions/error" } } }, "parameters": [], "tags": [ "pullrequests" ] } }, "/snippets/{username}/{encoded_id}/watchers": { "parameters": [ { "required": true, "type": "string", "name": "username", "in": "path" }, { "required": true, "type": "string", "name": "encoded_id", "in": "path" } ], "get": { "responses": { "200": { "description": "The paginated list of users watching this snippet", "schema": { "$ref": "#/definitions/paginated_users" } }, "404": { "description": "If the snippet does not exist.", "schema": { "$ref": "#/definitions/error" } } }, "parameters": [ { "required": true, "type": "string", "description": "The snippet id.", "name": "encoded_id", "in": "path" } ], "tags": [ "snippets" ], "deprecated": true, "security": [ { "oauth2": [ "snippet" ] }, { "basic": [] }, { "api_key": [] } ], "description": "Returns a paginated list of all users watching a specific snippet." } }, "/repositories/{username}/{repo_slug}/branch-restrictions/{id}": { "put": { "security": [ { "oauth2": [ "repository:admin" ] }, { "basic": [] }, { "api_key": [] } ], "description": "", "responses": { "default": { "description": "Unexpected error.", "schema": { "$ref": "#/definitions/error" } } }, "parameters": [], "tags": [ "branch_restrictions" ] }, "delete": { "security": [ { "oauth2": [ "repository:admin" ] }, { "basic": [] }, { "api_key": [] } ], "description": "", "responses": { "default": { "description": "Unexpected error.", "schema": { "$ref": "#/definitions/error" } } }, "parameters": [], "tags": [ "branch_restrictions" ] }, "parameters": [ { "required": true, "type": "string", "name": "username", "in": "path" }, { "required": true, "type": "string", "name": "repo_slug", "in": "path" }, { "required": true, "type": "string", "name": "id", "in": "path" } ], "get": { "security": [ { "oauth2": [ "repository:admin" ] }, { "basic": [] }, { "api_key": [] } ], "description": "", "responses": { "default": { "description": "Unexpected error.", "schema": { "$ref": "#/definitions/error" } } }, "parameters": [], "tags": [ "branch_restrictions" ] } }, "/repositories/{username}/{repo_slug}/commit/{node}/statuses/build": { "post": { "security": [ { "oauth2": [ "repository" ] }, { "basic": [] }, { "api_key": [] } ], "description": "", "responses": { "default": { "description": "Unexpected error.", "schema": { "$ref": "#/definitions/error" } } }, "parameters": [], "tags": [] }, "parameters": [ { "required": true, "type": "string", "name": "username", "in": "path" }, { "required": true, "type": "string", "name": "repo_slug", "in": "path" }, { "required": true, "type": "string", "name": "node", "in": "path" } ] }, "/repositories/{username}/{repo_slug}": { "post": { "security": [ { "oauth2": [ "repository:admin" ] }, { "basic": [] }, { "api_key": [] } ], "description": "Creates a new repository.", "responses": { "200": { "description": "The newly created repository.", "schema": { "$ref": "#/definitions/repository" } }, "401": { "description": "If the request was not authenticated.", "schema": { "$ref": "#/definitions/error" } }, "400": { "description": "If the input document was invalid, or if the caller lacks the privilege to create repositories under the targeted account.", "schema": { "$ref": "#/definitions/error" } } }, "parameters": [ { "schema": { "$ref": "#/definitions/repository" }, "required": false, "description": "The repository that is to be created. Note that most object elements are optional. Elements \"owner\" and \"full_name\" are ignored as the URL implies them.", "name": "_body", "in": "body" } ], "tags": [ "repositories" ] }, "delete": { "security": [ { "oauth2": [ "repository:admin" ] }, { "basic": [] }, { "api_key": [] } ], "description": "Deletes the repository. This is an irreversible operation.\n\nThis does not affect its forks.", "responses": { "204": { "description": "Indicates successful deletion." }, "403": { "description": "If the caller either does not have admin access to the repository, or the repository is set to read-only.", "schema": { "$ref": "#/definitions/error" } }, "404": { "description": "If the repository does not exist.", "schema": { "$ref": "#/definitions/error" } } }, "parameters": [], "tags": [ "repositories" ] }, "parameters": [ { "required": true, "type": "string", "name": "username", "in": "path" }, { "required": true, "type": "string", "name": "repo_slug", "in": "path" } ], "get": { "security": [ { "oauth2": [ "repository" ] }, { "basic": [] }, { "api_key": [] } ], "description": "Returns the object describing this repository.", "responses": { "200": { "description": "The repository object.", "schema": { "$ref": "#/definitions/repository" } }, "403": { "description": "If the repository is private and the authenticated user does not have access to it.", "schema": { "$ref": "#/definitions/error" } }, "404": { "description": "If no repository exists at this location.", "schema": { "$ref": "#/definitions/error" } } }, "parameters": [], "tags": [ "repositories" ] } }, "/repositories/{username}/{repo_slug}/default-reviewers/{target_username}": { "put": { "security": [ { "oauth2": [ "repository:admin" ] }, { "basic": [] }, { "api_key": [] } ], "description": "Adds the specified user to the repository's list of default\nreviewers.\n\nThis method is idempotent. Adding a user a second time has no effect.", "responses": { "default": { "description": "Unexpected error.", "schema": { "$ref": "#/definitions/error" } } }, "parameters": [], "tags": [ "pullrequests" ] }, "delete": { "security": [ { "oauth2": [ "repository:admin" ] }, { "basic": [] }, { "api_key": [] } ], "description": "Removes a default reviewer from the repository.", "responses": { "default": { "description": "Unexpected error.", "schema": { "$ref": "#/definitions/error" } } }, "parameters": [], "tags": [ "pullrequests" ] }, "parameters": [ { "required": true, "type": "string", "name": "username", "in": "path" }, { "required": true, "type": "string", "name": "repo_slug", "in": "path" }, { "required": true, "type": "string", "name": "target_username", "in": "path" } ], "get": { "security": [ { "oauth2": [ "repository:admin" ] }, { "basic": [] }, { "api_key": [] } ], "description": "Returns the specified reviewer.\n\nThis can be used to test whether a user is among the repository's\ndefault reviewers list. A 404 indicates that that specified user is not\na default reviewer.", "responses": { "default": { "description": "Unexpected error.", "schema": { "$ref": "#/definitions/error" } } }, "parameters": [], "tags": [ "pullrequests" ] } }, "/repositories/{username}/{repo_slug}/issues/{issue_id}/comments": { "parameters": [ { "required": true, "type": "string", "name": "username", "in": "path" }, { "required": true, "type": "string", "name": "repo_slug", "in": "path" }, { "required": true, "type": "string", "name": "issue_id", "in": "path" } ], "get": { "security": [ { "oauth2": [ "issue" ] }, { "basic": [] }, { "api_key": [] } ], "description": "Returns all comments that were made on the specified issue.", "responses": { "default": { "description": "Unexpected error.", "schema": { "$ref": "#/definitions/error" } } }, "parameters": [], "tags": [ "issue_tracker" ] } }, "/snippets/{username}/{encoded_id}/{node_id}": { "put": { "responses": { "200": { "description": "The updated snippet object.", "schema": { "$ref": "#/definitions/snippet" } }, "401": { "description": "If the snippet is private and the request was not authenticated.", "schema": { "$ref": "#/definitions/error" } }, "403": { "description": "If authenticated user does not have permission to update the private snippet.", "schema": { "$ref": "#/definitions/error" } }, "404": { "description": "If the snippet or the revision does not exist.", "schema": { "$ref": "#/definitions/error" } }, "405": { "description": "If `{node_id}` is not the latest revision.", "schema": { "$ref": "#/definitions/error" } } }, "parameters": [ { "required": true, "type": "string", "description": "The snippet's id.", "name": "encoded_id", "in": "path" }, { "required": true, "type": "string", "description": "A commit revision (SHA1).", "name": "node_id", "in": "path" } ], "tags": [ "snippets" ], "produces": [ "application/json", "multipart/related", "multipart/form-data" ], "security": [ { "oauth2": [ "snippet:write" ] }, { "basic": [] }, { "api_key": [] } ], "consumes": [ "application/json", "multipart/related", "multipart/form-data" ], "description": "Identical to `UPDATE /snippets/encoded_id`, except that this endpoint\ntakes an explicit commit revision. Only the snippet's \"HEAD\"/\"tip\"\n(most recent) version can be updated and requests on all other,\nolder revisions fail by returning a 405 status.\n\nUsage of this endpoint over the unrestricted `/snippets/encoded_id`\ncould be desired if the caller wants to be sure no concurrent\nmodifications have taken place between the moment of the UPDATE\nrequest and the original GET.\n\nThis can be considered a so-called \"Compare And Swap\", or CAS\noperation.\n\nOther than that, the two endpoints are identical in behavior." }, "delete": { "security": [ { "oauth2": [ "snippet:write" ] }, { "basic": [] }, { "api_key": [] } ], "description": "Deletes the snippet.\n\nNote that this only works for versioned URLs that point to the latest\ncommit of the snippet. Pointing to an older commit results in a 405\nstatus code.\n\nTo delete a snippet, regardless of whether or not concurrent changes\nare being made to it, use `DELETE /snippets/{encoded_id}` instead.", "responses": { "401": { "description": "If the snippet is private and the request was not authenticated.", "schema": { "$ref": "#/definitions/error" } }, "403": { "description": "If authenticated user does not have permission to delete the private snippet.", "schema": { "$ref": "#/definitions/error" } }, "404": { "description": "If the snippet does not exist.", "schema": { "$ref": "#/definitions/error" } }, "204": { "description": "If the snippet was deleted successfully." }, "405": { "description": "If `{node_id}` is not the latest revision.", "schema": { "$ref": "#/definitions/error" } } }, "parameters": [ { "required": true, "type": "string", "description": "The snippet's id.", "name": "encoded_id", "in": "path" } ], "tags": [ "snippets" ] }, "parameters": [ { "required": true, "type": "string", "name": "username", "in": "path" }, { "required": true, "type": "string", "name": "encoded_id", "in": "path" }, { "required": true, "type": "string", "name": "node_id", "in": "path" } ], "get": { "responses": { "200": { "description": "The snippet object.", "schema": { "$ref": "#/definitions/snippet" } }, "401": { "description": "If the snippet is private and the request was not authenticated.", "schema": { "$ref": "#/definitions/error" } }, "403": { "description": "If authenticated user does not have access to the private snippet.", "schema": { "$ref": "#/definitions/error" } }, "404": { "description": "If the snippet, or the revision does not exist.", "schema": { "$ref": "#/definitions/error" } } }, "parameters": [ { "required": true, "type": "string", "description": "The snippet's id.", "name": "encoded_id", "in": "path" }, { "required": true, "type": "string", "description": "A commit revision (SHA1).", "name": "node_id", "in": "path" } ], "produces": [ "application/json", "multipart/related", "multipart/form-data" ], "tags": [ "snippets" ], "security": [ { "oauth2": [ "snippet" ] }, { "basic": [] }, { "api_key": [] } ], "description": "Identical to `GET /snippets/encoded_id`, except that this endpoint\ncan be used to retrieve the contents of the snippet as it was at an\nolder revision, while `/snippets/encoded_id` always returns the\nsnippet's current revision.\n\nNote that only the snippet's file contents are versioned, not its\nmeta data properties like the title.\n\nOther than that, the two endpoints are identical in behavior." } }, "/repositories/{username}/{repo_slug}/pullrequests/{pull_request_id}/patch": { "parameters": [ { "required": true, "type": "string", "name": "username", "in": "path" }, { "required": true, "type": "string", "name": "repo_slug", "in": "path" }, { "required": true, "type": "string", "name": "pull_request_id", "in": "path" } ], "get": { "security": [ { "oauth2": [ "pullrequest" ] }, { "basic": [] }, { "api_key": [] } ], "description": "", "responses": { "default": { "description": "Unexpected error.", "schema": { "$ref": "#/definitions/error" } } }, "parameters": [], "tags": [ "pullrequests" ] } }, "/addon/linkers/{linker_key}/values/": { "delete": { "security": [ { "oauth2": [] }, { "basic": [] }, { "api_key": [] } ], "description": "", "responses": { "default": { "description": "Unexpected error.", "schema": { "$ref": "#/definitions/error" } } }, "parameters": [], "tags": [ "addon" ] }, "parameters": [ { "required": true, "type": "string", "name": "linker_key", "in": "path" } ], "get": { "security": [ { "oauth2": [] }, { "basic": [] }, { "api_key": [] } ], "description": "", "responses": { "default": { "description": "Unexpected error.", "schema": { "$ref": "#/definitions/error" } } }, "parameters": [], "tags": [ "addon" ] } }, "/repositories": { "parameters": [], "get": { "security": [ { "oauth2": [ "repository" ] }, { "basic": [] }, { "api_key": [] } ], "description": "Returns all public repositories.", "responses": { "200": { "description": "All public repositories.", "schema": { "$ref": "#/definitions/paginated_repositories" } } }, "parameters": [], "tags": [ "repositories" ] } }, "/teams/{username}/members": { "parameters": [ { "required": true, "type": "string", "name": "username", "in": "path" } ], "get": { "security": [ { "oauth2": [ "account" ] }, { "basic": [] }, { "api_key": [] } ], "description": "All members of a team.\n\nReturns all members of the specified team. Any member of any of the\nteam's groups is considered a member of the team. This includes users\nin groups that may not actually have access to any of the team's\nrepositories.\n\nNote that members using the \"private profile\" feature are not included.", "responses": { "200": { "description": "All members", "schema": { "$ref": "#/definitions/user" } }, "404": { "description": "When the team does not exist, or multiple teams with the same name exist that differ only in casing and the URL did not match the exact casing of a particular one.", "schema": { "$ref": "#/definitions/error" } } }, "parameters": [], "tags": [ "teams" ] } } }, "schemes": [ "https" ], "tags": [ { "name": "users", "description": "" }, { "name": "teams", "description": "" }, { "name": "repositories", "description": "" }, { "name": "refs", "description": "" }, { "name": "commits", "description": "" }, { "name": "pullrequests", "description": "" }, { "name": "issue_tracker", "description": "The issues resource provides functionality for getting information on\nissues in an issue tracker, creating new issues, updating them and deleting\nthem.\n\nYou can access public issues without authentication, but you can't gain access\nto private repositories' issues. By authenticating, you will get the ability\nto create issues, as well as access to updating data or deleting issues you\nhave access to." }, { "name": "wiki", "description": "" }, { "name": "downloads", "description": "" }, { "name": "snippets", "description": "" }, { "name": "webhooks", "description": "Webhooks provide a way to configure Bitbucket Cloud to make requests to\nyour server (or another external service) whenever certain events occur in\nBitbucket Cloud.\n\nA webhook consists of:\n\n* A subject -- The resource that generates the events. Currently, this resource\n is the repository, user account, or team where you create the webhook.\n* One or more event -- The default event is a repository push, but you can\n select multiple events that can trigger the webhook.\n* A URL -- The endpoint where you want Bitbucket to send the event payloads\n when a matching event happens.\n\nThere are two parts to getting a webhook to work: creating the webhook and\ntriggering the webhook. After you create a webhook for an event, every time\nthat event occurs, Bitbucket sends a payload request that describes the event\nto the specified URL. Thus, you can think of webhooks as a kind of\nnotification system.\n\nUse webhooks to integrate applications with Bitbucket Cloud. The following\nuse cases provides examples of when you would want to use webhooks:\n\n* Every time a user pushes commits in a repository, you may want to notify\n your CI server to start a build.\n* Every time a user pushes commits or creates a pull request, you may want to\n display a notification in your application.\n" } ], "basePath": "/2.0", "produces": [ "application/json" ], "securityDefinitions": { "oauth2": { "scopes": { "wiki": "Read and write to your repositories' wikis", "snippet": "Read your snippets", "account": "Read your account information", "repository:admin": "Administer your repositories", "repository": "Read your repositories", "snippet:write": "Read and write to your snippets", "issue:write": "Read and write to your repositories' issues", "pullrequest": "Read your repositories and their pull requests", "webhook": "Read and write to your repositories' webhooks", "pullrequest:write": "Read and write to your repositories and their pull requests", "project": "Read your team's projects", "project:write": "Read and write to your team's projects and move repositories between them", "team": "Read your team membership information", "repository:write": "Read and write to your repositories", "team:write": "Read and write to your team membership information", "account:write": "Read and write to your account information", "issue": "Read your repositories' issues", "email": "Read your account's primary email address" }, "tokenUrl": "http://dev.bitbucket.org:8000/site/oauth2/access_token", "description": "OAuth 2 as per [RFC-6749](https://tools.ietf.org/html/rfc6749).", "flow": "accessCode", "type": "oauth2", "authorizationUrl": "http://dev.bitbucket.org:8000/site/oauth2/authorize" }, "api_key": { "in": "header", "type": "apiKey", "description": "API Keys can be used as Basic HTTP Authentication credentials and provide a substitute for the account's actual username and password. API Keys are only available to team accounts and there is only 1 key per account. API Keys do not support scopes and have therefore access to all contents of the account.", "name": "Authorization" }, "basic": { "type": "basic", "description": "Basic HTTP Authentication as per [RFC-2617](https://tools.ietf.org/html/rfc2617) (Digest not supported). Note that Basic Auth with username and password as credentials is only available on accounts that have 2-factor-auth / 2-step-verification disabled. If you use 2fa, you should authenticate using OAuth2 instead." } }, "x-revision": "dev-1452122794", "host": "api.dev.bitbucket.org:8000", "definitions": { "paginated_repositories": { "allOf": [ { "$ref": "#/definitions/page" }, { "additionalProperties": true, "type": "object", "description": "A paginated list of repositories.", "properties": { "values": { "minItems": 0, "items": { "$ref": "#/definitions/repository" }, "uniqueItems": true, "type": "array" } } } ] }, "subject_types": { "additionalProperties": false, "type": "object", "description": "The mapping of resource/subject types pointing to their individual event types.", "properties": { "user": { "additionalProperties": false, "type": "object", "properties": { "events": { "additionalProperties": false, "type": "object", "properties": { "href": { "type": "string", "format": "uri" } } } } }, "repository": { "additionalProperties": false, "type": "object", "properties": { "events": { "additionalProperties": false, "type": "object", "properties": { "href": { "type": "string", "format": "uri" } } } } }, "team": { "additionalProperties": false, "type": "object", "properties": { "events": { "additionalProperties": false, "type": "object", "properties": { "href": { "type": "string", "format": "uri" } } } } } } }, "paginated_hook_events": { "allOf": [ { "$ref": "#/definitions/object" }, { "additionalProperties": true, "type": "object", "description": "A paginated list of webhook types available to subscribe on.", "properties": { "next": { "type": "string", "description": "Link to the next page if it exists. The last page of a collection does not have this value. Use this link to navigate the result set and refrain from constructing your own URLs.", "format": "uri" }, "values": { "minItems": 0, "items": { "$ref": "#/definitions/hook_event" }, "uniqueItems": true, "type": "array" }, "pagelen": { "minimum": 1, "type": "integer", "description": "Current number of objects on the existing page. The default value is 10 with 100 being the maximum allowed value. Individual APIs may enforce different values." }, "size": { "minimum": 0, "type": "integer", "description": "Total number of objects in the response. This is an optional element that is not provided in all responses, as it can be expensive to compute." }, "page": { "minimum": 1, "type": "integer", "description": "Page number of the current results. This is an optional element that is not provided in all responses." }, "previous": { "type": "string", "description": "Link to previous page if it exists. A collections first page does not have this value. This is an optional element that is not provided in all responses. Some result sets strictly support forward navigation and never provide previous links. Clients must anticipate that backwards navigation is not always available. Use this link to navigate the result set and refrain from constructing your own URLs.", "format": "uri" } } } ] }, "base_commit": { "allOf": [ { "$ref": "#/definitions/object" }, { "additionalProperties": true, "type": "object", "description": "The common base type for both repository and snippet commits.", "properties": { "date": { "type": "string", "format": "date-time" }, "parents": { "minItems": 0, "items": { "$ref": "#/definitions/base_commit" }, "type": "array" }, "message": { "type": "string" }, "hash": { "pattern": "[0-9a-f]{7,}?", "type": "string" }, "author": { "$ref": "#/definitions/account" } } } ] }, "error": { "additionalProperties": false, "type": "object", "properties": { "error": { "additionalProperties": false, "required": [ "message" ], "type": "object", "properties": { "message": { "type": "string" }, "detail": { "type": "string" } } } } }, "participant": { "allOf": [ { "$ref": "#/definitions/object" }, { "additionalProperties": true, "type": "object", "description": "Object describing a user's role on resources like commits or pull requests.", "properties": { "role": { "enum": [ "PARTICIPANT", "REVIEWER" ], "type": "string" }, "user": { "$ref": "#/definitions/user" }, "approved": { "type": "boolean" } } } ] }, "paginated_versions": { "allOf": [ { "$ref": "#/definitions/object" }, { "additionalProperties": true, "type": "object", "description": "A paginated list of issue tracker versions.", "properties": { "next": { "type": "string", "description": "Link to the next page if it exists. The last page of a collection does not have this value. Use this link to navigate the result set and refrain from constructing your own URLs.", "format": "uri" }, "values": { "minItems": 0, "items": { "$ref": "#/definitions/version" }, "uniqueItems": true, "type": "array" }, "pagelen": { "minimum": 1, "type": "integer", "description": "Current number of objects on the existing page. The default value is 10 with 100 being the maximum allowed value. Individual APIs may enforce different values." }, "size": { "minimum": 0, "type": "integer", "description": "Total number of objects in the response. This is an optional element that is not provided in all responses, as it can be expensive to compute." }, "page": { "minimum": 1, "type": "integer", "description": "Page number of the current results. This is an optional element that is not provided in all responses." }, "previous": { "type": "string", "description": "Link to previous page if it exists. A collections first page does not have this value. This is an optional element that is not provided in all responses. Some result sets strictly support forward navigation and never provide previous links. Clients must anticipate that backwards navigation is not always available. Use this link to navigate the result set and refrain from constructing your own URLs.", "format": "uri" } } } ] }, "paginated_users": { "allOf": [ { "$ref": "#/definitions/object" }, { "additionalProperties": true, "type": "object", "description": "A paginated list of users.", "properties": { "next": { "type": "string", "description": "Link to the next page if it exists. The last page of a collection does not have this value. Use this link to navigate the result set and refrain from constructing your own URLs.", "format": "uri" }, "values": { "minItems": 0, "items": { "$ref": "#/definitions/user" }, "uniqueItems": true, "type": "array" }, "pagelen": { "minimum": 1, "type": "integer", "description": "Current number of objects on the existing page. The default value is 10 with 100 being the maximum allowed value. Individual APIs may enforce different values." }, "size": { "minimum": 0, "type": "integer", "description": "Total number of objects in the response. This is an optional element that is not provided in all responses, as it can be expensive to compute." }, "page": { "minimum": 1, "type": "integer", "description": "Page number of the current results. This is an optional element that is not provided in all responses." }, "previous": { "type": "string", "description": "Link to previous page if it exists. A collections first page does not have this value. This is an optional element that is not provided in all responses. Some result sets strictly support forward navigation and never provide previous links. Clients must anticipate that backwards navigation is not always available. Use this link to navigate the result set and refrain from constructing your own URLs.", "format": "uri" } } } ] }, "snippet": { "allOf": [ { "$ref": "#/definitions/object" }, { "additionalProperties": true, "type": "object", "description": "A snippet object.", "properties": { "scm": { "enum": [ "hg", "git" ], "type": "string", "description": "The DVCS used to store the snippet." }, "title": { "type": "string" }, "creator": { "$ref": "#/definitions/account" }, "created_on": { "type": "string", "format": "date-time" }, "owner": { "$ref": "#/definitions/account" }, "updated_on": { "type": "string", "format": "date-time" }, "id": { "minimum": 0, "type": "integer" }, "is_private": { "type": "boolean" } } } ] }, "hook_event": { "additionalProperties": false, "type": "object", "description": "An event, associated with a resource or subject type.", "properties": { "category": { "type": "string", "description": "The category this event belongs to." }, "event": { "enum": [ "pullrequest:updated", "repo:commit_status_created", "repo:fork", "issue:comment_created", "pullrequest:rejected", "pullrequest:fulfilled", "pullrequest:comment_created", "pullrequest:comment_deleted", "issue:created", "repo:commit_comment_created", "pullrequest:approved", "repo:commit_status_updated", "pullrequest:comment_updated", "issue:updated", "pullrequest:unapproved", "pullrequest:created", "repo:push" ], "type": "string", "description": "The event identifier." }, "description": { "type": "string", "description": "More detailed description of the webhook event type." }, "label": { "type": "string", "description": "Summary of the webhook event type." } } }, "version": { "allOf": [ { "$ref": "#/definitions/object" }, { "additionalProperties": true, "type": "object", "description": "A version as defined in a repository's issue tracker.", "properties": { "name": { "type": "string" }, "links": { "additionalProperties": false, "type": "object", "properties": { "self": { "additionalProperties": false, "type": "object", "properties": { "href": { "type": "string", "format": "uri" } } } } }, "id": { "type": "integer" } } } ] }, "issue": { "allOf": [ { "$ref": "#/definitions/object" }, { "additionalProperties": true, "type": "object", "description": "An issue.", "properties": { "content": { "additionalProperties": false, "type": "object", "properties": { "raw": { "type": "string", "description": "The text as it was typed by a user." }, "markup": { "enum": [ "markdown", "creole" ], "type": "string", "description": "The type of markup language the content is to be interpreted in." }, "html": { "type": "string", "description": "The user's markup rendered as HTML." } } }, "kind": { "enum": [ "bug", "enhancement", "proposal", "task" ], "type": "string" }, "repository": { "$ref": "#/definitions/repository" }, "links": { "additionalProperties": false, "type": "object", "properties": { "attachments": { "additionalProperties": false, "type": "object", "properties": { "href": { "type": "string", "format": "uri" } } }, "self": { "additionalProperties": false, "type": "object", "properties": { "href": { "type": "string", "format": "uri" } } }, "watch": { "additionalProperties": false, "type": "object", "properties": { "href": { "type": "string", "format": "uri" } } }, "comments": { "additionalProperties": false, "type": "object", "properties": { "href": { "type": "string", "format": "uri" } } }, "html": { "additionalProperties": false, "type": "object", "properties": { "href": { "type": "string", "format": "uri" } } }, "vote": { "additionalProperties": false, "type": "object", "properties": { "href": { "type": "string", "format": "uri" } } } } }, "title": { "type": "string" }, "reporter": { "$ref": "#/definitions/user" }, "component": { "$ref": "#/definitions/component" }, "votes": { "type": "integer" }, "priority": { "enum": [ "trivial", "minor", "major", "critical", "blocker" ], "type": "string" }, "assignee": { "$ref": "#/definitions/user" }, "state": { "enum": [ "new", "open", "resolved", "on hold", "invalid", "duplicate", "wontfix", "closed" ], "type": "string" }, "version": { "$ref": "#/definitions/version" }, "edited_on": { "type": "string", "format": "date-time" }, "created_on": { "type": "string", "format": "date-time" }, "milestone": { "$ref": "#/definitions/milestone" }, "updated_on": { "type": "string", "format": "date-time" }, "id": { "type": "integer" } } } ] }, "webhook_subscription": { "allOf": [ { "$ref": "#/definitions/object" }, { "additionalProperties": true, "type": "object", "description": "A Webhook subscription.", "properties": { "subject_type": { "enum": [ "user", "repository", "team" ], "type": "string", "description": "The type of entity, which is `repository` in the case of webhook subscriptions on repositories." }, "uuid": { "type": "string", "description": "The webhook's id" }, "url": { "type": "string", "description": "The URL events get delivered to.", "format": "uri" }, "created_at": { "type": "string", "format": "date-time" }, "description": { "type": "string", "description": "A user-defined description of the webhook." }, "active": { "type": "boolean" }, "events": { "minItems": 1, "items": { "enum": [ "pullrequest:updated", "repo:commit_status_created", "repo:fork", "issue:comment_created", "pullrequest:rejected", "pullrequest:fulfilled", "pullrequest:comment_created", "pullrequest:comment_deleted", "issue:created", "repo:commit_comment_created", "pullrequest:approved", "repo:commit_status_updated", "pullrequest:comment_updated", "issue:updated", "pullrequest:unapproved", "pullrequest:created", "repo:push" ], "type": "string" }, "uniqueItems": true, "description": "The events this webhook is subscribed to.", "type": "array" }, "subject": { "$ref": "#/definitions/object" } } } ] }, "repository": { "allOf": [ { "$ref": "#/definitions/object" }, { "additionalProperties": true, "type": "object", "description": "A Bitbucket repository.", "properties": { "scm": { "enum": [ "hg", "git" ], "type": "string" }, "has_wiki": { "type": "boolean" }, "uuid": { "type": "string", "description": "The repository's immutable id. This can be used as a substitute for the slug segment in URLs. Doing this guarantees your URLs will survive renaming of the repository by its owner, or even transfer of the repository to a different user." }, "links": { "additionalProperties": false, "type": "object", "properties": { "watchers": { "additionalProperties": false, "type": "object", "properties": { "href": { "type": "string", "format": "uri" } } }, "commits": { "additionalProperties": false, "type": "object", "properties": { "href": { "type": "string", "format": "uri" } } }, "downloads": { "additionalProperties": false, "type": "object", "properties": { "href": { "type": "string", "format": "uri" } } }, "self": { "additionalProperties": false, "type": "object", "properties": { "href": { "type": "string", "format": "uri" } } }, "html": { "additionalProperties": false, "type": "object", "properties": { "href": { "type": "string", "format": "uri" } } }, "avatar": { "additionalProperties": false, "type": "object", "properties": { "href": { "type": "string", "format": "uri" } } }, "hooks": { "additionalProperties": false, "type": "object", "properties": { "href": { "type": "string", "format": "uri" } } }, "forks": { "additionalProperties": false, "type": "object", "properties": { "href": { "type": "string", "format": "uri" } } }, "clone": { "additionalProperties": false, "type": "object", "properties": { "href": { "type": "string", "format": "uri" } } }, "pullrequests": { "additionalProperties": false, "type": "object", "properties": { "href": { "type": "string", "format": "uri" } } } } }, "fork_policy": { "enum": [ "allow_forks", "no_public_forks", "no_forks" ], "type": "string", "description": "\nControls the rules for forking this repository.\n\n* **allow_forks**: unrestricted forking\n* **no_public_forks**: restrict forking to private forks (forks cannot\n be made public later)\n* **no_forks**: deny all forking\n" }, "description": { "type": "string" }, "language": { "type": "string" }, "created_on": { "type": "string", "format": "date-time" }, "parent": { "$ref": "#/definitions/repository" }, "full_name": { "type": "string", "description": "The concatenation of the repository owner's username and the slugified name, e.g. \"evzijst/interruptingcow\". This is the same string used in Bitbucket URLs." }, "has_issues": { "type": "boolean" }, "owner": { "$ref": "#/definitions/account" }, "updated_on": { "type": "string", "format": "date-time" }, "size": { "type": "integer" }, "is_private": { "type": "boolean" }, "name": { "type": "string" } } } ] }, "snippet_commit": { "allOf": [ { "$ref": "#/definitions/base_commit" }, { "additionalProperties": true, "type": "object", "description": "", "properties": { "snippet": { "$ref": "#/definitions/snippet" }, "links": { "additionalProperties": false, "type": "object", "properties": { "diff": { "additionalProperties": false, "type": "object", "properties": { "href": { "type": "string", "format": "uri" } } }, "self": { "additionalProperties": false, "type": "object", "properties": { "href": { "type": "string", "format": "uri" } } }, "html": { "additionalProperties": false, "type": "object", "properties": { "href": { "type": "string", "format": "uri" } } } } } } } ] }, "object": { "description": "Base type for most resource objects. It defines the common `type` element that identifies an object's type. It also identifies the element as Swagger's `discriminator`.", "required": [ "type" ], "additionalProperties": true, "discriminator": "type", "type": "object", "properties": { "type": { "type": "string" } } }, "component": { "allOf": [ { "$ref": "#/definitions/object" }, { "additionalProperties": true, "type": "object", "description": "A component as defined in a repository's issue tracker.", "properties": { "name": { "type": "string" }, "links": { "additionalProperties": false, "type": "object", "properties": { "self": { "additionalProperties": false, "type": "object", "properties": { "href": { "type": "string", "format": "uri" } } } } }, "id": { "type": "integer" } } } ] }, "paginated_issues": { "allOf": [ { "$ref": "#/definitions/page" }, { "additionalProperties": true, "type": "object", "description": "A paginated list of issues.", "properties": { "values": { "minItems": 0, "items": { "$ref": "#/definitions/issue" }, "uniqueItems": true, "type": "array" } } } ] }, "user": { "allOf": [ { "$ref": "#/definitions/account" }, { "additionalProperties": true, "type": "object", "description": "A user object.", "properties": {} } ] }, "milestone": { "allOf": [ { "$ref": "#/definitions/object" }, { "additionalProperties": true, "type": "object", "description": "A milestone as defined in a repository's issue tracker.", "properties": { "name": { "type": "string" }, "links": { "additionalProperties": false, "type": "object", "properties": { "self": { "additionalProperties": false, "type": "object", "properties": { "href": { "type": "string", "format": "uri" } } } } }, "id": { "type": "integer" } } } ] }, "paginated_issue_attachments": { "allOf": [ { "$ref": "#/definitions/page" }, { "additionalProperties": true, "type": "object", "description": "A paginated list of issue attachments.", "properties": { "values": { "minItems": 0, "items": { "$ref": "#/definitions/issue_attachment" }, "type": "array" } } } ] }, "paginated_webhook_subscriptions": { "allOf": [ { "$ref": "#/definitions/object" }, { "additionalProperties": true, "type": "object", "description": "A paginated list of webhook subscriptions", "properties": { "next": { "type": "string", "description": "Link to the next page if it exists. The last page of a collection does not have this value. Use this link to navigate the result set and refrain from constructing your own URLs.", "format": "uri" }, "values": { "minItems": 0, "items": { "$ref": "#/definitions/webhook_subscription" }, "uniqueItems": true, "type": "array" }, "pagelen": { "minimum": 1, "type": "integer", "description": "Current number of objects on the existing page. The default value is 10 with 100 being the maximum allowed value. Individual APIs may enforce different values." }, "size": { "minimum": 0, "type": "integer", "description": "Total number of objects in the response. This is an optional element that is not provided in all responses, as it can be expensive to compute." }, "page": { "minimum": 1, "type": "integer", "description": "Page number of the current results. This is an optional element that is not provided in all responses." }, "previous": { "type": "string", "description": "Link to previous page if it exists. A collections first page does not have this value. This is an optional element that is not provided in all responses. Some result sets strictly support forward navigation and never provide previous links. Clients must anticipate that backwards navigation is not always available. Use this link to navigate the result set and refrain from constructing your own URLs.", "format": "uri" } } } ] }, "snippet_comment": { "allOf": [ { "$ref": "#/definitions/object" }, { "additionalProperties": true, "type": "object", "description": "A comment on a snippet.", "properties": { "snippet": { "$ref": "#/definitions/snippet" }, "links": { "additionalProperties": false, "type": "object", "properties": { "self": { "additionalProperties": false, "type": "object", "properties": { "href": { "type": "string", "format": "uri" } } }, "html": { "additionalProperties": false, "type": "object", "properties": { "href": { "type": "string", "format": "uri" } } } } } } } ] }, "paginated_milestones": { "allOf": [ { "$ref": "#/definitions/object" }, { "additionalProperties": true, "type": "object", "description": "A paginated list of issue tracker milestones.", "properties": { "next": { "type": "string", "description": "Link to the next page if it exists. The last page of a collection does not have this value. Use this link to navigate the result set and refrain from constructing your own URLs.", "format": "uri" }, "values": { "minItems": 0, "items": { "$ref": "#/definitions/milestone" }, "uniqueItems": true, "type": "array" }, "pagelen": { "minimum": 1, "type": "integer", "description": "Current number of objects on the existing page. The default value is 10 with 100 being the maximum allowed value. Individual APIs may enforce different values." }, "size": { "minimum": 0, "type": "integer", "description": "Total number of objects in the response. This is an optional element that is not provided in all responses, as it can be expensive to compute." }, "page": { "minimum": 1, "type": "integer", "description": "Page number of the current results. This is an optional element that is not provided in all responses." }, "previous": { "type": "string", "description": "Link to previous page if it exists. A collections first page does not have this value. This is an optional element that is not provided in all responses. Some result sets strictly support forward navigation and never provide previous links. Clients must anticipate that backwards navigation is not always available. Use this link to navigate the result set and refrain from constructing your own URLs.", "format": "uri" } } } ] }, "paginated_components": { "allOf": [ { "$ref": "#/definitions/object" }, { "additionalProperties": true, "type": "object", "description": "A paginated list of issue tracker components.", "properties": { "next": { "type": "string", "description": "Link to the next page if it exists. The last page of a collection does not have this value. Use this link to navigate the result set and refrain from constructing your own URLs.", "format": "uri" }, "values": { "minItems": 0, "items": { "$ref": "#/definitions/component" }, "uniqueItems": true, "type": "array" }, "pagelen": { "minimum": 1, "type": "integer", "description": "Current number of objects on the existing page. The default value is 10 with 100 being the maximum allowed value. Individual APIs may enforce different values." }, "size": { "minimum": 0, "type": "integer", "description": "Total number of objects in the response. This is an optional element that is not provided in all responses, as it can be expensive to compute." }, "page": { "minimum": 1, "type": "integer", "description": "Page number of the current results. This is an optional element that is not provided in all responses." }, "previous": { "type": "string", "description": "Link to previous page if it exists. A collections first page does not have this value. This is an optional element that is not provided in all responses. Some result sets strictly support forward navigation and never provide previous links. Clients must anticipate that backwards navigation is not always available. Use this link to navigate the result set and refrain from constructing your own URLs.", "format": "uri" } } } ] }, "account": { "allOf": [ { "$ref": "#/definitions/object" }, { "additionalProperties": true, "type": "object", "description": "An account object.", "properties": { "username": { "pattern": "^[a-zA-Z0-9_\\-]+$", "type": "string" }, "website": { "type": "string" }, "display_name": { "type": "string" }, "uuid": { "type": "string" }, "links": { "additionalProperties": false, "type": "object", "properties": { "self": { "additionalProperties": false, "type": "object", "properties": { "href": { "type": "string", "format": "uri" } } }, "repositories": { "additionalProperties": false, "type": "object", "properties": { "href": { "type": "string", "format": "uri" } } }, "html": { "additionalProperties": false, "type": "object", "properties": { "href": { "type": "string", "format": "uri" } } }, "followers": { "additionalProperties": false, "type": "object", "properties": { "href": { "type": "string", "format": "uri" } } }, "avatar": { "additionalProperties": false, "type": "object", "properties": { "href": { "type": "string", "format": "uri" } } }, "following": { "additionalProperties": false, "type": "object", "properties": { "href": { "type": "string", "format": "uri" } } } } }, "created_on": { "type": "string", "format": "date-time" } } } ] }, "issue_attachment": { "allOf": [ { "$ref": "#/definitions/object" }, { "additionalProperties": true, "type": "object", "description": "An issue file attachment's meta data. Note this does not contain the file's actual contents.", "properties": { "name": { "type": "string" }, "links": { "additionalProperties": false, "type": "object", "properties": { "self": { "additionalProperties": false, "type": "object", "properties": { "href": { "type": "string", "format": "uri" } } } } } } } ] }, "paginated_snippet_commit": { "allOf": [ { "$ref": "#/definitions/page" }, { "additionalProperties": true, "type": "object", "description": "A paginated list of snippet commits.", "properties": { "values": { "minItems": 0, "items": { "$ref": "#/definitions/snippet_commit" }, "type": "array" } } } ] }, "pullrequest": { "allOf": [ { "$ref": "#/definitions/object" }, { "additionalProperties": true, "type": "object", "description": "A pull request object.", "properties": { "state": { "enum": [ "MERGED", "SUPERSEDED", "OPEN", "DECLINED" ], "type": "string" }, "author": { "$ref": "#/definitions/account" }, "id": { "type": "integer" }, "links": { "additionalProperties": false, "type": "object", "properties": { "decline": { "additionalProperties": false, "type": "object", "properties": { "href": { "type": "string", "format": "uri" } } }, "commits": { "additionalProperties": false, "type": "object", "properties": { "href": { "type": "string", "format": "uri" } } }, "self": { "additionalProperties": false, "type": "object", "properties": { "href": { "type": "string", "format": "uri" } } }, "comments": { "additionalProperties": false, "type": "object", "properties": { "href": { "type": "string", "format": "uri" } } }, "merge": { "additionalProperties": false, "type": "object", "properties": { "href": { "type": "string", "format": "uri" } } }, "html": { "additionalProperties": false, "type": "object", "properties": { "href": { "type": "string", "format": "uri" } } }, "activity": { "additionalProperties": false, "type": "object", "properties": { "href": { "type": "string", "format": "uri" } } }, "diff": { "additionalProperties": false, "type": "object", "properties": { "href": { "type": "string", "format": "uri" } } }, "approve": { "additionalProperties": false, "type": "object", "properties": { "href": { "type": "string", "format": "uri" } } } } }, "title": { "type": "string" } } } ] }, "paginated_teams": { "allOf": [ { "$ref": "#/definitions/object" }, { "additionalProperties": true, "type": "object", "description": "A paginated list of teams.", "properties": { "next": { "type": "string", "description": "Link to the next page if it exists. The last page of a collection does not have this value. Use this link to navigate the result set and refrain from constructing your own URLs.", "format": "uri" }, "values": { "minItems": 0, "items": { "$ref": "#/definitions/team" }, "uniqueItems": true, "type": "array" }, "pagelen": { "minimum": 1, "type": "integer", "description": "Current number of objects on the existing page. The default value is 10 with 100 being the maximum allowed value. Individual APIs may enforce different values." }, "size": { "minimum": 0, "type": "integer", "description": "Total number of objects in the response. This is an optional element that is not provided in all responses, as it can be expensive to compute." }, "page": { "minimum": 1, "type": "integer", "description": "Page number of the current results. This is an optional element that is not provided in all responses." }, "previous": { "type": "string", "description": "Link to previous page if it exists. A collections first page does not have this value. This is an optional element that is not provided in all responses. Some result sets strictly support forward navigation and never provide previous links. Clients must anticipate that backwards navigation is not always available. Use this link to navigate the result set and refrain from constructing your own URLs.", "format": "uri" } } } ] }, "paginated_snippet_comments": { "allOf": [ { "$ref": "#/definitions/page" }, { "additionalProperties": true, "type": "object", "description": "A paginated list of snippet comments.", "properties": { "values": { "minItems": 0, "items": { "$ref": "#/definitions/snippet_comment" }, "uniqueItems": true, "type": "array" } } } ] }, "team": { "allOf": [ { "$ref": "#/definitions/account" }, { "additionalProperties": true, "type": "object", "description": "A team object.", "properties": {} } ] }, "commit": { "allOf": [ { "$ref": "#/definitions/base_commit" }, { "additionalProperties": true, "type": "object", "description": "A repository commit object.", "properties": { "participants": { "minItems": 0, "items": { "$ref": "#/definitions/participant" }, "type": "array" }, "repository": { "$ref": "#/definitions/repository" }, "links": { "additionalProperties": false, "type": "object", "properties": { "self": { "additionalProperties": false, "type": "object", "properties": { "href": { "type": "string", "format": "uri" } } }, "comments": { "additionalProperties": false, "type": "object", "properties": { "href": { "type": "string", "format": "uri" } } }, "patch": { "additionalProperties": false, "type": "object", "properties": { "href": { "type": "string", "format": "uri" } } }, "html": { "additionalProperties": false, "type": "object", "properties": { "href": { "type": "string", "format": "uri" } } }, "diff": { "additionalProperties": false, "type": "object", "properties": { "href": { "type": "string", "format": "uri" } } }, "approve": { "additionalProperties": false, "type": "object", "properties": { "href": { "type": "string", "format": "uri" } } } } } } } ] }, "paginated_snippets": { "allOf": [ { "$ref": "#/definitions/object" }, { "additionalProperties": true, "type": "object", "description": "A paginated list of snippets.", "properties": { "next": { "type": "string", "description": "Link to the next page if it exists. The last page of a collection does not have this value. Use this link to navigate the result set and refrain from constructing your own URLs.", "format": "uri" }, "values": { "minItems": 0, "items": { "$ref": "#/definitions/snippet" }, "uniqueItems": true, "type": "array" }, "pagelen": { "minimum": 1, "type": "integer", "description": "Current number of objects on the existing page. The default value is 10 with 100 being the maximum allowed value. Individual APIs may enforce different values." }, "size": { "minimum": 0, "type": "integer", "description": "Total number of objects in the response. This is an optional element that is not provided in all responses, as it can be expensive to compute." }, "page": { "minimum": 1, "type": "integer", "description": "Page number of the current results. This is an optional element that is not provided in all responses." }, "previous": { "type": "string", "description": "Link to previous page if it exists. A collections first page does not have this value. This is an optional element that is not provided in all responses. Some result sets strictly support forward navigation and never provide previous links. Clients must anticipate that backwards navigation is not always available. Use this link to navigate the result set and refrain from constructing your own URLs.", "format": "uri" } } } ] }, "page": { "allOf": [ { "$ref": "#/definitions/object" }, { "additionalProperties": true, "type": "object", "description": "Base type for most resource objects. It defines the common `type` element that identifies an object's type. It also identifies the element as Swagger's `discriminator`.", "properties": { "previous": { "type": "string", "description": "Link to previous page if it exists. A collections first page does not have this value. This is an optional element that is not provided in all responses. Some result sets strictly support forward navigation and never provide previous links. Clients must anticipate that backwards navigation is not always available. Use this link to navigate the result set and refrain from constructing your own URLs.", "format": "uri" }, "pagelen": { "minimum": 1, "type": "integer", "description": "Current number of objects on the existing page. The default value is 10 with 100 being the maximum allowed value. Individual APIs may enforce different values." }, "next": { "type": "string", "description": "Link to the next page if it exists. The last page of a collection does not have this value. Use this link to navigate the result set and refrain from constructing your own URLs.", "format": "uri" }, "page": { "minimum": 1, "type": "integer", "description": "Page number of the current results. This is an optional element that is not provided in all responses." }, "size": { "minimum": 0, "type": "integer", "description": "Total number of objects in the response. This is an optional element that is not provided in all responses, as it can be expensive to compute." } } } ] } }, "swagger": "2.0", "consumes": [ "application/json" ] } golang-github-go-openapi-spec-0.15.0/fixtures/more_circulars/item.json000066400000000000000000000005631332117131300260220ustar00rootroot00000000000000{ "item": { "type": "object", "required": [ "title" ], "properties": { "id": { "type": "integer", "format": "uint64", "readOnly": true }, "title": { "type": "string", "minLength": 2, "maxLength": 80 }, "subitem": { "$ref": "item.json#/item" } } } } golang-github-go-openapi-spec-0.15.0/fixtures/more_circulars/item2.json000066400000000000000000000005521332117131300261020ustar00rootroot00000000000000{ "item": { "type": "object", "required": [ "title" ], "properties": { "id": { "type": "integer", "format": "uint64", "readOnly": true }, "title": { "type": "string", "minLength": 2, "maxLength": 80 }, "subitem": { "$ref": "#/item" } } } } golang-github-go-openapi-spec-0.15.0/fixtures/more_circulars/item4.json000066400000000000000000000005641332117131300261070ustar00rootroot00000000000000{ "item": { "type": "object", "required": [ "title" ], "properties": { "id": { "type": "integer", "format": "uint64", "readOnly": true }, "title": { "type": "string", "minLength": 2, "maxLength": 80 }, "subitem": { "$ref": "item4.json#/item" } } } } golang-github-go-openapi-spec-0.15.0/fixtures/more_circulars/spec.json000066400000000000000000000017151332117131300260160ustar00rootroot00000000000000{ "swagger": "2.0", "info": { "title": "Item API", "description": "Item API", "version": "1.0.0" }, "host": "item.api.local", "basePath": "/v1", "securityDefinitions": { "key": { "type": "apiKey", "name": "x-item-token", "in": "header" } }, "security": [ { "key": [] } ], "consumes": [ "application/json" ], "produces": [ "application/json" ], "schemes": [ "http" ], "responses": { "itemResponse": { "description": "Item", "schema": { "$ref": "item.json#/item" } } }, "paths": { "/item": { "get": { "operationId": "GetItem", "responses": { "200": { "description": "item detail response", "schema": { "$ref": "item.json#/item" } }, "default": { "$ref": "#/responses/itemResponse" } } } } } } golang-github-go-openapi-spec-0.15.0/fixtures/more_circulars/spec2.json000066400000000000000000000017171332117131300261020ustar00rootroot00000000000000{ "swagger": "2.0", "info": { "title": "Item API", "description": "Item API", "version": "1.0.0" }, "host": "item.api.local", "basePath": "/v1", "securityDefinitions": { "key": { "type": "apiKey", "name": "x-item-token", "in": "header" } }, "security": [ { "key": [] } ], "consumes": [ "application/json" ], "produces": [ "application/json" ], "schemes": [ "http" ], "responses": { "itemResponse": { "description": "Item", "schema": { "$ref": "item2.json#/item" } } }, "paths": { "/item": { "get": { "operationId": "GetItem", "responses": { "200": { "description": "item detail response", "schema": { "$ref": "item2.json#/item" } }, "default": { "$ref": "#/responses/itemResponse" } } } } } } golang-github-go-openapi-spec-0.15.0/fixtures/more_circulars/spec3.json000066400000000000000000000015041332117131300260750ustar00rootroot00000000000000{ "swagger": "2.0", "info": { "title": "Item API", "description": "Item API", "version": "1.0.0" }, "host": "item.api.local", "basePath": "/v1", "securityDefinitions": { "key": { "type": "apiKey", "name": "x-item-token", "in": "header" } }, "security": [ { "key": [] } ], "consumes": [ "application/json" ], "produces": [ "application/json" ], "schemes": [ "http" ], "paths": { "/item": { "get": { "operationId": "GetItem", "responses": { "200": { "description": "item detail response", "schema": { "$ref": "#/definitions/myItems" } } } } } }, "definitions": { "myItems": { "$ref": "item.json#/item" } } } golang-github-go-openapi-spec-0.15.0/fixtures/more_circulars/spec4.json000066400000000000000000000017541332117131300261050ustar00rootroot00000000000000{ "swagger": "2.0", "info": { "title": "Item API", "description": "Item API", "version": "1.0.0" }, "host": "item.api.local", "basePath": "/v1", "securityDefinitions": { "key": { "type": "apiKey", "name": "x-item-token", "in": "header" } }, "security": [ { "key": [] } ], "consumes": [ "application/json" ], "produces": [ "application/json" ], "schemes": [ "http" ], "parameters": { "itemParameter": { "description": "Item", "schema": { "$ref": "item4.json#/item" } } }, "paths": { "/item": { "get": { "operationId": "GetItem", "parameters": [ { "$ref": "#/parameters/itemParameter" } ], "responses": { "200": { "description": "item detail response", "schema": { "$ref": "item4.json#/item" } } } } } } } golang-github-go-openapi-spec-0.15.0/fixtures/remote/000077500000000000000000000000001332117131300224475ustar00rootroot00000000000000golang-github-go-openapi-spec-0.15.0/fixtures/remote/all-the-things.json000066400000000000000000000131731332117131300261670ustar00rootroot00000000000000{ "swagger": "2.0", "info": { "version": "1.0.0", "title": "Swagger Petstore", "description": "A sample API that uses a petstore as an example to demonstrate features in the swagger-2.0 specification", "termsOfService": "http://helloreverb.com/terms/", "contact": { "name": "Wordnik API Team" }, "license": { "name": "MIT" } }, "host": "petstore.swagger.wordnik.com", "basePath": "/api", "schemes": ["http"], "consumes": ["application/json"], "produces": ["application/json"], "parameters": { "idParam": { "name": "id", "in": "path", "description": "ID of pet to fetch", "required": true, "type": "integer", "format": "int64" }, "tag": { "type": "string", "in": "query", "required": false }, "query": { "$ref": "#/parameters/tag" } }, "responses": { "petResponse": { "description": "pet response", "schema": { "$ref": "pet/pet.json#/definitions/pet" } }, "stringResponse": { "descripion": "string response", "schema": { "type": "string" } }, "anotherPet": { "$ref": "pet/pet.json#/responses/anotherPet" }, "circularA": { "$ref": "pet/pet.json#/responses/circularB" } }, "paths": { "/": { "get": { "operationId": "indexStuff", "responses": { "default": { "$ref": "#/responses/stringResponse" }, "200": { "$ref": "#/responses/anotherPet" } } } }, "/pets": { "get": { "description": "Returns all pets from the system that the user has access to", "operationId": "findPets", "produces": [ "application/json", "application/xml", "text/xml", "text/html" ], "parameters": [ { "name": "tags", "in": "query", "description": "tags to filter by", "required": false, "type": "array", "items": { "type": "string" }, "collectionFormat": "csv" }, { "name": "limit", "in": "query", "description": "maximum number of results to return", "required": false, "type": "integer", "format": "int32" } ], "responses": { "200": { "description": "pet response", "schema": { "type": "array", "items": { "$ref": "pet/pet.json#/definitions/pet" } } }, "default": { "description": "unexpected error", "schema": { "$ref": "#/definitions/errorModel" } } } }, "post": { "description": "Creates a new pet in the store. Duplicates are allowed", "operationId": "addPet", "produces": ["application/json"], "parameters": [ { "name": "pet", "in": "body", "description": "Pet to add to the store", "required": true, "schema": { "$ref": "#/definitions/petInput" } } ], "responses": { "200": { "$ref": "#/responses/petResponse" }, "default": { "description": "unexpected error", "schema": { "$ref": "#/definitions/errorModel" } } } } }, "/pets/{id}": { "get": { "description": "Returns a user based on a single ID, if the user does not have access to the pet", "operationId": "findPetById", "produces": [ "application/json", "application/xml", "text/xml", "text/html" ], "parameters": [ { "$ref": "#/parameters/idParam" } ], "responses": { "200": { "$ref": "#/responses/petResponse" }, "default": { "description": "unexpected error", "schema": { "$ref": "#/definitions/errorModel" } } } }, "delete": { "description": "deletes a single pet based on the ID supplied", "operationId": "deletePet", "parameters": [ { "$ref": "#/parameters/idParam" } ], "responses": { "204": { "description": "pet deleted" }, "default": { "description": "unexpected error", "schema": { "$ref": "#/definitions/errorModel" } } } } } }, "definitions": { "pet": { "required": ["id", "name"], "properties": { "id": { "type": "integer", "format": "int64" }, "name": { "type": "string" }, "tag": { "type": "string" } } }, "petInput": { "allOf": [ { "$ref": "pet/pet.json#/definitions/pet" }, { "required": ["name"], "properties": { "id": { "type": "integer", "format": "int64" } } } ] }, "errorModel": { "required": ["code", "message"], "properties": { "code": { "type": "integer", "format": "int32" }, "message": { "type": "string" } } } } } golang-github-go-openapi-spec-0.15.0/fixtures/remote/pet/000077500000000000000000000000001332117131300232375ustar00rootroot00000000000000golang-github-go-openapi-spec-0.15.0/fixtures/remote/pet/pet.json000066400000000000000000000014261332117131300247250ustar00rootroot00000000000000{ "responses": { "petResponse": { "description": "pet response", "schema": { "$ref": "#/definitions/pet" } }, "stringResponse": { "descripion": "string response", "schema": { "type": "string" } }, "circularB": { "$ref": "#/responses/circularC" }, "circularC": { "$ref": "../all-the-things.json#/responses/circularA" }, "anotherPet": { "$ref": "#/responses/petResponse" } }, "definitions": { "pet": { "required": ["id", "name"], "properties": { "id": { "type": "integer", "format": "int64" }, "name": { "type": "string" }, "tag": { "type": "string" } } } } } golang-github-go-openapi-spec-0.15.0/fixtures/specs/000077500000000000000000000000001332117131300222715ustar00rootroot00000000000000golang-github-go-openapi-spec-0.15.0/fixtures/specs/deeper/000077500000000000000000000000001332117131300235355ustar00rootroot00000000000000golang-github-go-openapi-spec-0.15.0/fixtures/specs/deeper/arrayProp.json000066400000000000000000000000731332117131300264070ustar00rootroot00000000000000{ "type":"array", "items": { "type": "string" } }golang-github-go-openapi-spec-0.15.0/fixtures/specs/deeper/stringProp.json000066400000000000000000000000261332117131300265750ustar00rootroot00000000000000{ "type": "string" }golang-github-go-openapi-spec-0.15.0/fixtures/specs/refed.json000066400000000000000000000117451332117131300242610ustar00rootroot00000000000000{ "swagger": "2.0", "info": { "version": "1.0.0", "title": "Swagger Petstore", "description": "A sample API that uses a petstore as an example to demonstrate features in the swagger-2.0 specification", "termsOfService": "http://helloreverb.com/terms/", "contact": { "name": "Wordnik API Team" }, "license": { "name": "MIT" } }, "host": "petstore.swagger.wordnik.com", "basePath": "/api", "schemes": [ "http" ], "consumes": [ "application/json" ], "produces": [ "application/json" ], "parameters": { "idParam": { "name": "id", "in": "path", "description": "ID of pet to fetch", "required": true, "type": "integer", "format": "int64" } }, "responses": { "petResponse": { "description": "pet response", "schema": { "$ref": "#/definitions/pet" } } }, "paths": { "/pets": { "get": { "description": "Returns all pets from the system that the user has access to", "operationId": "findPets", "produces": [ "application/json", "application/xml", "text/xml", "text/html" ], "parameters": [ { "name": "tags", "in": "query", "description": "tags to filter by", "required": false, "type": "array", "items": { "type": "string" }, "collectionFormat": "csv" }, { "name": "limit", "in": "query", "description": "maximum number of results to return", "required": false, "type": "integer", "format": "int32" } ], "responses": { "200": { "description": "pet response", "schema": { "type": "array", "items": { "$ref": "#/definitions/pet" } } }, "default": { "description": "unexpected error", "schema": { "$ref": "#/definitions/errorModel" } } } }, "post": { "description": "Creates a new pet in the store. Duplicates are allowed", "operationId": "addPet", "produces": [ "application/json" ], "parameters": [ { "name": "pet", "in": "body", "description": "Pet to add to the store", "required": true, "schema": { "$ref": "#/definitions/petInput" } } ], "responses": { "200": { "$ref": "#/responses/petResponse" }, "default": { "description": "unexpected error", "schema": { "$ref": "#/definitions/errorModel" } } } } }, "/pets/{id}": { "get": { "description": "Returns a user based on a single ID, if the user does not have access to the pet", "operationId": "findPetById", "produces": [ "application/json", "application/xml", "text/xml", "text/html" ], "parameters": [ { "$ref": "#/parameters/idParam" } ], "responses": { "200": { "$ref": "#/responses/petResponse" }, "default": { "description": "unexpected error", "schema": { "$ref": "#/definitions/errorModel" } } } }, "delete": { "description": "deletes a single pet based on the ID supplied", "operationId": "deletePet", "parameters": [ { "$ref": "#/parameters/idParam" } ], "responses": { "204": { "description": "pet deleted" }, "default": { "description": "unexpected error", "schema": { "$ref": "#/definitions/errorModel" } } } } } }, "definitions": { "pet": { "required": [ "id", "name" ], "properties": { "id": { "type": "integer", "format": "int64" }, "name": { "type": "string" }, "tag": { "type": "string" } } }, "petInput": { "allOf": [ { "$ref": "pet" }, { "required": [ "name" ], "properties": { "id": { "type": "integer", "format": "int64" } } } ] }, "errorModel": { "required": [ "code", "message" ], "properties": { "code": { "type": "integer", "format": "int32" }, "message": { "type": "string" } } } } }golang-github-go-openapi-spec-0.15.0/fixtures/specs/resolution.json000066400000000000000000000003111332117131300253620ustar00rootroot00000000000000{ "id": "http://localhost:1234", "items": { "id": "deeper/", "items": { "$ref": "stringProp.json" } }, "definitions": { "bool": { "$ref": "boolProp.json" } } }golang-github-go-openapi-spec-0.15.0/fixtures/specs/resolution2.json000066400000000000000000000002051332117131300254460ustar00rootroot00000000000000{ "id": "http://localhost:1234", "items": { "id": "deeper/", "items": { "$ref": "arrayProp.json#/items" } } }golang-github-go-openapi-spec-0.15.0/fixtures/specs/todos.common.json000066400000000000000000000045471332117131300256150ustar00rootroot00000000000000{ "swagger": "2.0", "info": { "version": "1.0", "title": "To-do Demo", "description": "### Notes:\n\nThis OAS2 (Swagger 2) specification defines common models and responses, that other specifications may reference.\n\nFor example, check out the user poperty in the main.oas2 todo-partial model - it references the user model in this specification!\n\nLikewise, the main.oas2 operations reference the shared error responses in this common specification.", "contact": { "name": "Stoplight", "url": "https://stoplight.io" }, "license": { "name": "MIT" } }, "host": "example.com", "securityDefinitions": {}, "paths": {}, "responses": { "401": { "description": "", "schema": { "$ref": "#/definitions/error-response" }, "examples": { "application/json": { "status": "401", "error": "Not Authorized" } } }, "403": { "description": "", "schema": { "$ref": "#/definitions/error-response" }, "examples": { "application/json": { "status": "403", "error": "Forbbiden" } } }, "404": { "description": "", "schema": { "$ref": "#/definitions/error-response" }, "examples": { "application/json": { "status": "404", "error": "Not Found" } } }, "500": { "description": "", "schema": { "$ref": "#/definitions/error-response" }, "examples": { "application/json": { "status": "500", "error": "Server Error" } } } }, "definitions": { "user": { "title": "User", "type": "object", "properties": { "name": { "type": "string", "description": "The user's full name." }, "age": { "type": "number", "minimum": 0, "maximum": 150 }, "error": { "$ref": "#/definitions/error-response" } }, "required": ["name", "age"] }, "error-response": { "type": "object", "title": "Error Response", "properties": { "status": { "type": "string" }, "error": { "type": "string" } }, "required": ["status", "error"] } } } golang-github-go-openapi-spec-0.15.0/fixtures/specs/todos.json000066400000000000000000000215551332117131300243240ustar00rootroot00000000000000{ "swagger": "2.0", "info": { "version": "1.0", "title": "To-do Demo", "description": "This OAS2 (Swagger 2) file represents a real API that lives at http://todos.stoplight.io.\n\nFor authentication information, click the apikey security scheme in the editor sidebar.", "contact": { "name": "Stoplight", "url": "https://stoplight.io" }, "license": { "name": "MIT" } }, "host": "todos.stoplight.io", "schemes": ["http"], "consumes": ["application/json"], "produces": ["application/json"], "securityDefinitions": { "Basic": { "type": "basic" }, "API Key": { "type": "apiKey", "name": "apikey", "in": "query" } }, "paths": { "/todos/{todoId}": { "parameters": [{ "name": "todoId", "in": "path", "required": true, "type": "string" }], "get": { "operationId": "GET_todo", "summary": "Get Todo", "tags": ["Todos"], "responses": { "200": { "description": "", "schema": { "$ref": "#/definitions/todo-full" }, "examples": { "application/json": { "id": 1, "name": "get food", "completed": false, "completed_at": "1955-04-23T13:22:52.685Z", "created_at": "1994-11-05T03:26:51.471Z", "updated_at": "1989-07-29T11:30:06.701Z" }, "/todos/foobar": "{\n\t\"foo\": \"bar\"\n}\n", "/todos/chores": { "id": 9000, "name": "Do Chores", "completed": false, "created_at": "2014-08-28T14:14:28.494Z", "updated_at": "2014-08-28T14:14:28.494Z" }, "new": { "name": "esse qui proident labore", "completed": null, "id": 920778, "completed_at": "2014-01-07T07:49:55.123Z", "created_at": "1948-04-21T12:04:21.282Z", "updated_at": "1951-12-19T11:10:34.039Z", "user": { "name": "irure deserunt fugiat", "age": 121.45395681110494 }, "float": -47990796.228164576 } } }, "404": { "$ref": "./todos.common.json#/responses/404" }, "500": { "$ref": "./todos.common.json#/responses/500" } }, "parameters": [{ "in": "query", "name": "", "type": "string" }] }, "put": { "operationId": "PUT_todos", "summary": "Update Todo", "tags": ["Todos"], "parameters": [{ "name": "body", "in": "body", "schema": { "$ref": "#/definitions/todo-partial", "example": { "name": "my todo's new name", "completed": false } } }], "responses": { "200": { "description": "", "schema": { "$ref": "#/definitions/todo-full" }, "examples": { "application/json": { "id": 9000, "name": "It's Over 9000!!!", "completed": true, "completed_at": null, "created_at": "2014-08-28T14:14:28.494Z", "updated_at": "2015-08-28T14:14:28.494Z" } } }, "401": { "$ref": "./todos.common.json#/responses/401" }, "404": { "$ref": "./todos.common.json#/responses/404" }, "500": { "$ref": "./todos.common.json#/responses/500" } }, "security": [{ "Basic": [] }, { "API Key": [] } ] }, "delete": { "operationId": "DELETE_todo", "summary": "Delete Todo", "tags": ["Todos"], "responses": { "204": { "description": "" }, "401": { "$ref": "./todos.common.json#/responses/401" }, "404": { "$ref": "./todos.common.json#/responses/404" }, "500": { "$ref": "./todos.common.json#/responses/500" } }, "security": [{ "Basic": [] }, { "API Key": [] } ] } }, "/todos": { "post": { "operationId": "POST_todos", "summary": "Create Todo", "tags": ["Todos"], "parameters": [{ "name": "body", "in": "body", "schema": { "$ref": "#/definitions/todo-partial", "example": { "name": "my todo's name", "completed": false } } }], "responses": { "201": { "description": "", "schema": { "$ref": "#/definitions/todo-full" }, "examples": { "application/json": { "id": 9000, "name": "It's Over 9000!!!", "completed": null, "completed_at": null, "created_at": "2014-08-28T14:14:28.494Z", "updated_at": "2014-08-28T14:14:28.494Z" }, "/todos/chores": { "id": 9000, "name": "Do Chores", "completed": false, "created_at": "2014-08-28T14:14:28.494Z", "updated_at": "2014-08-28T14:14:28.494Z" } } }, "401": { "$ref": "./todos.common.json#/responses/401" }, "500": { "$ref": "./todos.common.json#/responses/500" } }, "security": [{ "API Key": [] }, { "Basic": [] } ], "description": "This creates a Todo object.\n\nTesting `inline code`." }, "get": { "operationId": "GET_todos", "summary": "List Todos", "tags": ["Todos"], "parameters": [{ "$ref": "#/parameters/limit" }, { "$ref": "#/parameters/skip" } ], "responses": { "200": { "description": "", "schema": { "type": "array", "items": { "$ref": "#/definitions/todo-full" } }, "examples": { "application/json": [{ "id": 1, "name": "design the thingz", "completed": true }, { "id": 2, "name": "mock the thingz", "completed": true }, { "id": 3, "name": "code the thingz", "completed": false } ], "empty": [] }, "headers": { "foo": { "type": "string", "default": "bar" } } }, "500": { "$ref": "./todos.common.json#/responses/500" } }, "description": "​" } } }, "parameters": { "limit": { "name": "limit", "in": "query", "description": "This is how it works.", "required": false, "type": "integer", "maximum": 100 }, "skip": { "name": "skip", "in": "query", "required": false, "type": "string" } }, "definitions": { "todo-partial": { "title": "Todo Partial", "type": "object", "properties": { "name": { "type": "string" }, "completed": { "type": ["boolean", "null"] } }, "required": ["name", "completed"] }, "todo-full": { "title": "Todo Full", "allOf": [{ "$ref": "#/definitions/todo-partial" }, { "type": "object", "properties": { "id": { "type": "integer", "minimum": 0, "maximum": 1000000 }, "completed_at": { "type": ["string", "null"], "format": "date-time" }, "created_at": { "type": "string", "format": "date-time" }, "updated_at": { "type": "string", "format": "date-time" }, "user": { "$ref": "./todos.common.json#/definitions/user" } }, "required": ["id", "user"] } ] } }, "tags": [{ "name": "Todos" }] } golang-github-go-openapi-spec-0.15.0/header.go000066400000000000000000000113301332117131300210600ustar00rootroot00000000000000// Copyright 2015 go-swagger maintainers // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. // You may obtain a copy of the License at // // http://www.apache.org/licenses/LICENSE-2.0 // // Unless required by applicable law or agreed to in writing, software // distributed under the License is distributed on an "AS IS" BASIS, // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. // See the License for the specific language governing permissions and // limitations under the License. package spec import ( "encoding/json" "strings" "github.com/go-openapi/jsonpointer" "github.com/go-openapi/swag" ) // HeaderProps describes a response header type HeaderProps struct { Description string `json:"description,omitempty"` } // Header describes a header for a response of the API // // For more information: http://goo.gl/8us55a#headerObject type Header struct { CommonValidations SimpleSchema VendorExtensible HeaderProps } // ResponseHeader creates a new header instance for use in a response func ResponseHeader() *Header { return new(Header) } // WithDescription sets the description on this response, allows for chaining func (h *Header) WithDescription(description string) *Header { h.Description = description return h } // Typed a fluent builder method for the type of parameter func (h *Header) Typed(tpe, format string) *Header { h.Type = tpe h.Format = format return h } // CollectionOf a fluent builder method for an array item func (h *Header) CollectionOf(items *Items, format string) *Header { h.Type = "array" h.Items = items h.CollectionFormat = format return h } // WithDefault sets the default value on this item func (h *Header) WithDefault(defaultValue interface{}) *Header { h.Default = defaultValue return h } // WithMaxLength sets a max length value func (h *Header) WithMaxLength(max int64) *Header { h.MaxLength = &max return h } // WithMinLength sets a min length value func (h *Header) WithMinLength(min int64) *Header { h.MinLength = &min return h } // WithPattern sets a pattern value func (h *Header) WithPattern(pattern string) *Header { h.Pattern = pattern return h } // WithMultipleOf sets a multiple of value func (h *Header) WithMultipleOf(number float64) *Header { h.MultipleOf = &number return h } // WithMaximum sets a maximum number value func (h *Header) WithMaximum(max float64, exclusive bool) *Header { h.Maximum = &max h.ExclusiveMaximum = exclusive return h } // WithMinimum sets a minimum number value func (h *Header) WithMinimum(min float64, exclusive bool) *Header { h.Minimum = &min h.ExclusiveMinimum = exclusive return h } // WithEnum sets a the enum values (replace) func (h *Header) WithEnum(values ...interface{}) *Header { h.Enum = append([]interface{}{}, values...) return h } // WithMaxItems sets the max items func (h *Header) WithMaxItems(size int64) *Header { h.MaxItems = &size return h } // WithMinItems sets the min items func (h *Header) WithMinItems(size int64) *Header { h.MinItems = &size return h } // UniqueValues dictates that this array can only have unique items func (h *Header) UniqueValues() *Header { h.UniqueItems = true return h } // AllowDuplicates this array can have duplicates func (h *Header) AllowDuplicates() *Header { h.UniqueItems = false return h } // MarshalJSON marshal this to JSON func (h Header) MarshalJSON() ([]byte, error) { b1, err := json.Marshal(h.CommonValidations) if err != nil { return nil, err } b2, err := json.Marshal(h.SimpleSchema) if err != nil { return nil, err } b3, err := json.Marshal(h.HeaderProps) if err != nil { return nil, err } return swag.ConcatJSON(b1, b2, b3), nil } // UnmarshalJSON unmarshals this header from JSON func (h *Header) UnmarshalJSON(data []byte) error { if err := json.Unmarshal(data, &h.CommonValidations); err != nil { return err } if err := json.Unmarshal(data, &h.SimpleSchema); err != nil { return err } if err := json.Unmarshal(data, &h.VendorExtensible); err != nil { return err } return json.Unmarshal(data, &h.HeaderProps) } // JSONLookup look up a value by the json property name func (h Header) JSONLookup(token string) (interface{}, error) { if ex, ok := h.Extensions[token]; ok { return &ex, nil } r, _, err := jsonpointer.GetForToken(h.CommonValidations, token) if err != nil && !strings.HasPrefix(err.Error(), "object has no field") { return nil, err } if r != nil { return r, nil } r, _, err = jsonpointer.GetForToken(h.SimpleSchema, token) if err != nil && !strings.HasPrefix(err.Error(), "object has no field") { return nil, err } if r != nil { return r, nil } r, _, err = jsonpointer.GetForToken(h.HeaderProps, token) return r, err } golang-github-go-openapi-spec-0.15.0/header_test.go000066400000000000000000000061121332117131300221210ustar00rootroot00000000000000// Copyright 2015 go-swagger maintainers // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. // You may obtain a copy of the License at // // http://www.apache.org/licenses/LICENSE-2.0 // // Unless required by applicable law or agreed to in writing, software // distributed under the License is distributed on an "AS IS" BASIS, // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. // See the License for the specific language governing permissions and // limitations under the License. package spec import ( "encoding/json" "testing" "github.com/stretchr/testify/assert" ) func float64Ptr(f float64) *float64 { return &f } func int64Ptr(f int64) *int64 { return &f } var header = Header{ VendorExtensible: VendorExtensible{Extensions: map[string]interface{}{ "x-framework": "swagger-go", }}, HeaderProps: HeaderProps{Description: "the description of this header"}, SimpleSchema: SimpleSchema{ Items: &Items{ Refable: Refable{Ref: MustCreateRef("Cat")}, }, Type: "string", Format: "date", Default: "8", }, CommonValidations: CommonValidations{ Maximum: float64Ptr(100), ExclusiveMaximum: true, ExclusiveMinimum: true, Minimum: float64Ptr(5), MaxLength: int64Ptr(100), MinLength: int64Ptr(5), Pattern: "\\w{1,5}\\w+", MaxItems: int64Ptr(100), MinItems: int64Ptr(5), UniqueItems: true, MultipleOf: float64Ptr(5), Enum: []interface{}{"hello", "world"}, }, } var headerJSON = `{ "items": { "$ref": "Cat" }, "x-framework": "swagger-go", "description": "the description of this header", "maximum": 100, "minimum": 5, "exclusiveMaximum": true, "exclusiveMinimum": true, "maxLength": 100, "minLength": 5, "pattern": "\\w{1,5}\\w+", "maxItems": 100, "minItems": 5, "uniqueItems": true, "multipleOf": 5, "enum": ["hello", "world"], "type": "string", "format": "date", "default": "8" }` func TestIntegrationHeader(t *testing.T) { var actual Header if assert.NoError(t, json.Unmarshal([]byte(headerJSON), &actual)) { assert.EqualValues(t, actual, header) } assertParsesJSON(t, headerJSON, header) } func TestJSONLookupHeader(t *testing.T) { var def string res, err := header.JSONLookup("default") if !assert.NoError(t, err) || !assert.NotNil(t, res) || !assert.IsType(t, def, res) { t.FailNow() return } def = res.(string) assert.Equal(t, "8", def) var x *interface{} res, err = header.JSONLookup("x-framework") if !assert.NoError(t, err) || !assert.NotNil(t, res) || !assert.IsType(t, x, res) { t.FailNow() return } x = res.(*interface{}) assert.EqualValues(t, "swagger-go", *x) res, err = header.JSONLookup("unknown") if !assert.Error(t, err) || !assert.Nil(t, res) { t.FailNow() return } var max *float64 res, err = header.JSONLookup("maximum") if !assert.NoError(t, err) || !assert.NotNil(t, res) || !assert.IsType(t, max, res) { t.FailNow() return } max = res.(*float64) assert.Equal(t, float64(100), *max) } golang-github-go-openapi-spec-0.15.0/info.go000066400000000000000000000104631332117131300205710ustar00rootroot00000000000000// Copyright 2015 go-swagger maintainers // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. // You may obtain a copy of the License at // // http://www.apache.org/licenses/LICENSE-2.0 // // Unless required by applicable law or agreed to in writing, software // distributed under the License is distributed on an "AS IS" BASIS, // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. // See the License for the specific language governing permissions and // limitations under the License. package spec import ( "encoding/json" "strings" "github.com/go-openapi/jsonpointer" "github.com/go-openapi/swag" ) // Extensions vendor specific extensions type Extensions map[string]interface{} // Add adds a value to these extensions func (e Extensions) Add(key string, value interface{}) { realKey := strings.ToLower(key) e[realKey] = value } // GetString gets a string value from the extensions func (e Extensions) GetString(key string) (string, bool) { if v, ok := e[strings.ToLower(key)]; ok { str, ok := v.(string) return str, ok } return "", false } // GetBool gets a string value from the extensions func (e Extensions) GetBool(key string) (bool, bool) { if v, ok := e[strings.ToLower(key)]; ok { str, ok := v.(bool) return str, ok } return false, false } // GetStringSlice gets a string value from the extensions func (e Extensions) GetStringSlice(key string) ([]string, bool) { if v, ok := e[strings.ToLower(key)]; ok { arr, isSlice := v.([]interface{}) if !isSlice { return nil, false } var strs []string for _, iface := range arr { str, isString := iface.(string) if !isString { return nil, false } strs = append(strs, str) } return strs, ok } return nil, false } // VendorExtensible composition block. type VendorExtensible struct { Extensions Extensions } // AddExtension adds an extension to this extensible object func (v *VendorExtensible) AddExtension(key string, value interface{}) { if value == nil { return } if v.Extensions == nil { v.Extensions = make(map[string]interface{}) } v.Extensions.Add(key, value) } // MarshalJSON marshals the extensions to json func (v VendorExtensible) MarshalJSON() ([]byte, error) { toser := make(map[string]interface{}) for k, v := range v.Extensions { lk := strings.ToLower(k) if strings.HasPrefix(lk, "x-") { toser[k] = v } } return json.Marshal(toser) } // UnmarshalJSON for this extensible object func (v *VendorExtensible) UnmarshalJSON(data []byte) error { var d map[string]interface{} if err := json.Unmarshal(data, &d); err != nil { return err } for k, vv := range d { lk := strings.ToLower(k) if strings.HasPrefix(lk, "x-") { if v.Extensions == nil { v.Extensions = map[string]interface{}{} } v.Extensions[k] = vv } } return nil } // InfoProps the properties for an info definition type InfoProps struct { Description string `json:"description,omitempty"` Title string `json:"title,omitempty"` TermsOfService string `json:"termsOfService,omitempty"` Contact *ContactInfo `json:"contact,omitempty"` License *License `json:"license,omitempty"` Version string `json:"version,omitempty"` } // Info object provides metadata about the API. // The metadata can be used by the clients if needed, and can be presented in the Swagger-UI for convenience. // // For more information: http://goo.gl/8us55a#infoObject type Info struct { VendorExtensible InfoProps } // JSONLookup look up a value by the json property name func (i Info) JSONLookup(token string) (interface{}, error) { if ex, ok := i.Extensions[token]; ok { return &ex, nil } r, _, err := jsonpointer.GetForToken(i.InfoProps, token) return r, err } // MarshalJSON marshal this to JSON func (i Info) MarshalJSON() ([]byte, error) { b1, err := json.Marshal(i.InfoProps) if err != nil { return nil, err } b2, err := json.Marshal(i.VendorExtensible) if err != nil { return nil, err } return swag.ConcatJSON(b1, b2), nil } // UnmarshalJSON marshal this from JSON func (i *Info) UnmarshalJSON(data []byte) error { if err := json.Unmarshal(data, &i.InfoProps); err != nil { return err } if err := json.Unmarshal(data, &i.VendorExtensible); err != nil { return err } return nil } golang-github-go-openapi-spec-0.15.0/info_test.go000066400000000000000000000041531332117131300216270ustar00rootroot00000000000000// Copyright 2015 go-swagger maintainers // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. // You may obtain a copy of the License at // // http://www.apache.org/licenses/LICENSE-2.0 // // Unless required by applicable law or agreed to in writing, software // distributed under the License is distributed on an "AS IS" BASIS, // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. // See the License for the specific language governing permissions and // limitations under the License. package spec import ( "encoding/json" "testing" "github.com/stretchr/testify/assert" ) var infoJSON = `{ "description": "A sample API that uses a petstore as an example to demonstrate features in the swagger-2.0 specification", "title": "Swagger Sample API", "termsOfService": "http://helloreverb.com/terms/", "contact": { "name": "wordnik api team", "url": "http://developer.wordnik.com" }, "license": { "name": "Creative Commons 4.0 International", "url": "http://creativecommons.org/licenses/by/4.0/" }, "version": "1.0.9-abcd", "x-framework": "go-swagger" }` var info = Info{ InfoProps: InfoProps{ Version: "1.0.9-abcd", Title: "Swagger Sample API", Description: "A sample API that uses a petstore as an example to demonstrate features in the swagger-2.0 specification", TermsOfService: "http://helloreverb.com/terms/", Contact: &ContactInfo{Name: "wordnik api team", URL: "http://developer.wordnik.com"}, License: &License{Name: "Creative Commons 4.0 International", URL: "http://creativecommons.org/licenses/by/4.0/"}, }, VendorExtensible: VendorExtensible{map[string]interface{}{"x-framework": "go-swagger"}}, } func TestIntegrationInfo_Serialize(t *testing.T) { b, err := json.MarshalIndent(info, "", "\t") if assert.NoError(t, err) { assert.Equal(t, infoJSON, string(b)) } } func TestIntegrationInfo_Deserialize(t *testing.T) { actual := Info{} err := json.Unmarshal([]byte(infoJSON), &actual) if assert.NoError(t, err) { assert.EqualValues(t, info, actual) } } golang-github-go-openapi-spec-0.15.0/items.go000066400000000000000000000142571332117131300207640ustar00rootroot00000000000000// Copyright 2015 go-swagger maintainers // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. // You may obtain a copy of the License at // // http://www.apache.org/licenses/LICENSE-2.0 // // Unless required by applicable law or agreed to in writing, software // distributed under the License is distributed on an "AS IS" BASIS, // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. // See the License for the specific language governing permissions and // limitations under the License. package spec import ( "encoding/json" "strings" "github.com/go-openapi/jsonpointer" "github.com/go-openapi/swag" ) // SimpleSchema describe swagger simple schemas for parameters and headers type SimpleSchema struct { Type string `json:"type,omitempty"` Format string `json:"format,omitempty"` Items *Items `json:"items,omitempty"` CollectionFormat string `json:"collectionFormat,omitempty"` Default interface{} `json:"default,omitempty"` Example interface{} `json:"example,omitempty"` } // TypeName return the type (or format) of a simple schema func (s *SimpleSchema) TypeName() string { if s.Format != "" { return s.Format } return s.Type } // ItemsTypeName yields the type of items in a simple schema array func (s *SimpleSchema) ItemsTypeName() string { if s.Items == nil { return "" } return s.Items.TypeName() } // CommonValidations describe common JSON-schema validations type CommonValidations struct { Maximum *float64 `json:"maximum,omitempty"` ExclusiveMaximum bool `json:"exclusiveMaximum,omitempty"` Minimum *float64 `json:"minimum,omitempty"` ExclusiveMinimum bool `json:"exclusiveMinimum,omitempty"` MaxLength *int64 `json:"maxLength,omitempty"` MinLength *int64 `json:"minLength,omitempty"` Pattern string `json:"pattern,omitempty"` MaxItems *int64 `json:"maxItems,omitempty"` MinItems *int64 `json:"minItems,omitempty"` UniqueItems bool `json:"uniqueItems,omitempty"` MultipleOf *float64 `json:"multipleOf,omitempty"` Enum []interface{} `json:"enum,omitempty"` } // Items a limited subset of JSON-Schema's items object. // It is used by parameter definitions that are not located in "body". // // For more information: http://goo.gl/8us55a#items-object type Items struct { Refable CommonValidations SimpleSchema VendorExtensible } // NewItems creates a new instance of items func NewItems() *Items { return &Items{} } // Typed a fluent builder method for the type of item func (i *Items) Typed(tpe, format string) *Items { i.Type = tpe i.Format = format return i } // CollectionOf a fluent builder method for an array item func (i *Items) CollectionOf(items *Items, format string) *Items { i.Type = "array" i.Items = items i.CollectionFormat = format return i } // WithDefault sets the default value on this item func (i *Items) WithDefault(defaultValue interface{}) *Items { i.Default = defaultValue return i } // WithMaxLength sets a max length value func (i *Items) WithMaxLength(max int64) *Items { i.MaxLength = &max return i } // WithMinLength sets a min length value func (i *Items) WithMinLength(min int64) *Items { i.MinLength = &min return i } // WithPattern sets a pattern value func (i *Items) WithPattern(pattern string) *Items { i.Pattern = pattern return i } // WithMultipleOf sets a multiple of value func (i *Items) WithMultipleOf(number float64) *Items { i.MultipleOf = &number return i } // WithMaximum sets a maximum number value func (i *Items) WithMaximum(max float64, exclusive bool) *Items { i.Maximum = &max i.ExclusiveMaximum = exclusive return i } // WithMinimum sets a minimum number value func (i *Items) WithMinimum(min float64, exclusive bool) *Items { i.Minimum = &min i.ExclusiveMinimum = exclusive return i } // WithEnum sets a the enum values (replace) func (i *Items) WithEnum(values ...interface{}) *Items { i.Enum = append([]interface{}{}, values...) return i } // WithMaxItems sets the max items func (i *Items) WithMaxItems(size int64) *Items { i.MaxItems = &size return i } // WithMinItems sets the min items func (i *Items) WithMinItems(size int64) *Items { i.MinItems = &size return i } // UniqueValues dictates that this array can only have unique items func (i *Items) UniqueValues() *Items { i.UniqueItems = true return i } // AllowDuplicates this array can have duplicates func (i *Items) AllowDuplicates() *Items { i.UniqueItems = false return i } // UnmarshalJSON hydrates this items instance with the data from JSON func (i *Items) UnmarshalJSON(data []byte) error { var validations CommonValidations if err := json.Unmarshal(data, &validations); err != nil { return err } var ref Refable if err := json.Unmarshal(data, &ref); err != nil { return err } var simpleSchema SimpleSchema if err := json.Unmarshal(data, &simpleSchema); err != nil { return err } var vendorExtensible VendorExtensible if err := json.Unmarshal(data, &vendorExtensible); err != nil { return err } i.Refable = ref i.CommonValidations = validations i.SimpleSchema = simpleSchema i.VendorExtensible = vendorExtensible return nil } // MarshalJSON converts this items object to JSON func (i Items) MarshalJSON() ([]byte, error) { b1, err := json.Marshal(i.CommonValidations) if err != nil { return nil, err } b2, err := json.Marshal(i.SimpleSchema) if err != nil { return nil, err } b3, err := json.Marshal(i.Refable) if err != nil { return nil, err } b4, err := json.Marshal(i.VendorExtensible) if err != nil { return nil, err } return swag.ConcatJSON(b4, b3, b1, b2), nil } // JSONLookup look up a value by the json property name func (i Items) JSONLookup(token string) (interface{}, error) { if token == "$ref" { return &i.Ref, nil } r, _, err := jsonpointer.GetForToken(i.CommonValidations, token) if err != nil && !strings.HasPrefix(err.Error(), "object has no field") { return nil, err } if r != nil { return r, nil } r, _, err = jsonpointer.GetForToken(i.SimpleSchema, token) return r, err } golang-github-go-openapi-spec-0.15.0/items_test.go000066400000000000000000000064351332117131300220220ustar00rootroot00000000000000// Copyright 2015 go-swagger maintainers // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. // You may obtain a copy of the License at // // http://www.apache.org/licenses/LICENSE-2.0 // // Unless required by applicable law or agreed to in writing, software // distributed under the License is distributed on an "AS IS" BASIS, // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. // See the License for the specific language governing permissions and // limitations under the License. package spec import ( "encoding/json" "testing" "github.com/stretchr/testify/assert" ) var items = Items{ Refable: Refable{Ref: MustCreateRef("Dog")}, CommonValidations: CommonValidations{ Maximum: float64Ptr(100), ExclusiveMaximum: true, ExclusiveMinimum: true, Minimum: float64Ptr(5), MaxLength: int64Ptr(100), MinLength: int64Ptr(5), Pattern: "\\w{1,5}\\w+", MaxItems: int64Ptr(100), MinItems: int64Ptr(5), UniqueItems: true, MultipleOf: float64Ptr(5), Enum: []interface{}{"hello", "world"}, }, SimpleSchema: SimpleSchema{ Type: "string", Format: "date", Items: &Items{ Refable: Refable{Ref: MustCreateRef("Cat")}, }, CollectionFormat: "csv", Default: "8", }, } var itemsJSON = `{ "items": { "$ref": "Cat" }, "$ref": "Dog", "maximum": 100, "minimum": 5, "exclusiveMaximum": true, "exclusiveMinimum": true, "maxLength": 100, "minLength": 5, "pattern": "\\w{1,5}\\w+", "maxItems": 100, "minItems": 5, "uniqueItems": true, "multipleOf": 5, "enum": ["hello", "world"], "type": "string", "format": "date", "collectionFormat": "csv", "default": "8" }` func TestIntegrationItems(t *testing.T) { var actual Items if assert.NoError(t, json.Unmarshal([]byte(itemsJSON), &actual)) { assert.EqualValues(t, actual, items) } assertParsesJSON(t, itemsJSON, items) } func TestTypeNameItems(t *testing.T) { var nilItems Items assert.Equal(t, "", nilItems.TypeName()) assert.Equal(t, "date", items.TypeName()) assert.Equal(t, "", items.ItemsTypeName()) nested := Items{ SimpleSchema: SimpleSchema{ Type: "array", Items: &Items{ SimpleSchema: SimpleSchema{ Type: "integer", Format: "int32", }, }, CollectionFormat: "csv", }, } assert.Equal(t, "array", nested.TypeName()) assert.Equal(t, "int32", nested.ItemsTypeName()) } func TestJSONLookupItems(t *testing.T) { res, err := items.JSONLookup("$ref") if !assert.NoError(t, err) { t.FailNow() return } if assert.IsType(t, &Ref{}, res) { ref := res.(*Ref) assert.EqualValues(t, MustCreateRef("Dog"), *ref) } var max *float64 res, err = items.JSONLookup("maximum") if !assert.NoError(t, err) || !assert.NotNil(t, res) || !assert.IsType(t, max, res) { t.FailNow() return } max = res.(*float64) assert.Equal(t, float64(100), *max) var f string res, err = items.JSONLookup("collectionFormat") if !assert.NoError(t, err) || !assert.NotNil(t, res) || !assert.IsType(t, f, res) { t.FailNow() return } f = res.(string) assert.Equal(t, "csv", f) res, err = items.JSONLookup("unknown") if !assert.Error(t, err) || !assert.Nil(t, res) { t.FailNow() return } } golang-github-go-openapi-spec-0.15.0/license.go000066400000000000000000000014611332117131300212560ustar00rootroot00000000000000// Copyright 2015 go-swagger maintainers // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. // You may obtain a copy of the License at // // http://www.apache.org/licenses/LICENSE-2.0 // // Unless required by applicable law or agreed to in writing, software // distributed under the License is distributed on an "AS IS" BASIS, // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. // See the License for the specific language governing permissions and // limitations under the License. package spec // License information for the exposed API. // // For more information: http://goo.gl/8us55a#licenseObject type License struct { Name string `json:"name,omitempty"` URL string `json:"url,omitempty"` } golang-github-go-openapi-spec-0.15.0/license_test.go000066400000000000000000000017641332117131300223230ustar00rootroot00000000000000// Copyright 2015 go-swagger maintainers // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. // You may obtain a copy of the License at // // http://www.apache.org/licenses/LICENSE-2.0 // // Unless required by applicable law or agreed to in writing, software // distributed under the License is distributed on an "AS IS" BASIS, // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. // See the License for the specific language governing permissions and // limitations under the License. package spec import "testing" func TestIntegrationLicense(t *testing.T) { license := License{"the name", "the url"} const licenseJSON = `{"name":"the name","url":"the url"}` const licenseYAML = "name: the name\nurl: the url\n" assertSerializeJSON(t, license, licenseJSON) assertSerializeYAML(t, license, licenseYAML) assertParsesJSON(t, licenseJSON, license) assertParsesYAML(t, licenseYAML, license) } golang-github-go-openapi-spec-0.15.0/operation.go000066400000000000000000000172261332117131300216420ustar00rootroot00000000000000// Copyright 2015 go-swagger maintainers // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. // You may obtain a copy of the License at // // http://www.apache.org/licenses/LICENSE-2.0 // // Unless required by applicable law or agreed to in writing, software // distributed under the License is distributed on an "AS IS" BASIS, // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. // See the License for the specific language governing permissions and // limitations under the License. package spec import ( "encoding/json" "github.com/go-openapi/jsonpointer" "github.com/go-openapi/swag" ) // OperationProps describes an operation type OperationProps struct { Description string `json:"description,omitempty"` Consumes []string `json:"consumes,omitempty"` Produces []string `json:"produces,omitempty"` Schemes []string `json:"schemes,omitempty"` // the scheme, when present must be from [http, https, ws, wss] Tags []string `json:"tags,omitempty"` Summary string `json:"summary,omitempty"` ExternalDocs *ExternalDocumentation `json:"externalDocs,omitempty"` ID string `json:"operationId,omitempty"` Deprecated bool `json:"deprecated,omitempty"` Security []map[string][]string `json:"security,omitempty"` //Special case, see MarshalJSON function Parameters []Parameter `json:"parameters,omitempty"` Responses *Responses `json:"responses,omitempty"` } // MarshalJSON takes care of serializing operation properties to JSON // // We use a custom marhaller here to handle a special cases related to // the Security field. We need to preserve zero length slice // while omitting the field when the value is nil/unset. func (op OperationProps) MarshalJSON() ([]byte, error) { type Alias OperationProps if op.Security == nil { return json.Marshal(&struct { Security []map[string][]string `json:"security,omitempty"` *Alias }{ Security: op.Security, Alias: (*Alias)(&op), }) } return json.Marshal(&struct { Security []map[string][]string `json:"security"` *Alias }{ Security: op.Security, Alias: (*Alias)(&op), }) } // Operation describes a single API operation on a path. // // For more information: http://goo.gl/8us55a#operationObject type Operation struct { VendorExtensible OperationProps } // SuccessResponse gets a success response model func (o *Operation) SuccessResponse() (*Response, int, bool) { if o.Responses == nil { return nil, 0, false } for k, v := range o.Responses.StatusCodeResponses { if k/100 == 2 { return &v, k, true } } return o.Responses.Default, 0, false } // JSONLookup look up a value by the json property name func (o Operation) JSONLookup(token string) (interface{}, error) { if ex, ok := o.Extensions[token]; ok { return &ex, nil } r, _, err := jsonpointer.GetForToken(o.OperationProps, token) return r, err } // UnmarshalJSON hydrates this items instance with the data from JSON func (o *Operation) UnmarshalJSON(data []byte) error { if err := json.Unmarshal(data, &o.OperationProps); err != nil { return err } if err := json.Unmarshal(data, &o.VendorExtensible); err != nil { return err } return nil } // MarshalJSON converts this items object to JSON func (o Operation) MarshalJSON() ([]byte, error) { b1, err := json.Marshal(o.OperationProps) if err != nil { return nil, err } b2, err := json.Marshal(o.VendorExtensible) if err != nil { return nil, err } concated := swag.ConcatJSON(b1, b2) return concated, nil } // NewOperation creates a new operation instance. // It expects an ID as parameter but not passing an ID is also valid. func NewOperation(id string) *Operation { op := new(Operation) op.ID = id return op } // WithID sets the ID property on this operation, allows for chaining. func (o *Operation) WithID(id string) *Operation { o.ID = id return o } // WithDescription sets the description on this operation, allows for chaining func (o *Operation) WithDescription(description string) *Operation { o.Description = description return o } // WithSummary sets the summary on this operation, allows for chaining func (o *Operation) WithSummary(summary string) *Operation { o.Summary = summary return o } // WithExternalDocs sets/removes the external docs for/from this operation. // When you pass empty strings as params the external documents will be removed. // When you pass non-empty string as one value then those values will be used on the external docs object. // So when you pass a non-empty description, you should also pass the url and vice versa. func (o *Operation) WithExternalDocs(description, url string) *Operation { if description == "" && url == "" { o.ExternalDocs = nil return o } if o.ExternalDocs == nil { o.ExternalDocs = &ExternalDocumentation{} } o.ExternalDocs.Description = description o.ExternalDocs.URL = url return o } // Deprecate marks the operation as deprecated func (o *Operation) Deprecate() *Operation { o.Deprecated = true return o } // Undeprecate marks the operation as not deprected func (o *Operation) Undeprecate() *Operation { o.Deprecated = false return o } // WithConsumes adds media types for incoming body values func (o *Operation) WithConsumes(mediaTypes ...string) *Operation { o.Consumes = append(o.Consumes, mediaTypes...) return o } // WithProduces adds media types for outgoing body values func (o *Operation) WithProduces(mediaTypes ...string) *Operation { o.Produces = append(o.Produces, mediaTypes...) return o } // WithTags adds tags for this operation func (o *Operation) WithTags(tags ...string) *Operation { o.Tags = append(o.Tags, tags...) return o } // AddParam adds a parameter to this operation, when a parameter for that location // and with that name already exists it will be replaced func (o *Operation) AddParam(param *Parameter) *Operation { if param == nil { return o } for i, p := range o.Parameters { if p.Name == param.Name && p.In == param.In { params := append(o.Parameters[:i], *param) params = append(params, o.Parameters[i+1:]...) o.Parameters = params return o } } o.Parameters = append(o.Parameters, *param) return o } // RemoveParam removes a parameter from the operation func (o *Operation) RemoveParam(name, in string) *Operation { for i, p := range o.Parameters { if p.Name == name && p.In == name { o.Parameters = append(o.Parameters[:i], o.Parameters[i+1:]...) return o } } return o } // SecuredWith adds a security scope to this operation. func (o *Operation) SecuredWith(name string, scopes ...string) *Operation { o.Security = append(o.Security, map[string][]string{name: scopes}) return o } // WithDefaultResponse adds a default response to the operation. // Passing a nil value will remove the response func (o *Operation) WithDefaultResponse(response *Response) *Operation { return o.RespondsWith(0, response) } // RespondsWith adds a status code response to the operation. // When the code is 0 the value of the response will be used as default response value. // When the value of the response is nil it will be removed from the operation func (o *Operation) RespondsWith(code int, response *Response) *Operation { if o.Responses == nil { o.Responses = new(Responses) } if code == 0 { o.Responses.Default = response return o } if response == nil { delete(o.Responses.StatusCodeResponses, code) return o } if o.Responses.StatusCodeResponses == nil { o.Responses.StatusCodeResponses = make(map[int]Response) } o.Responses.StatusCodeResponses[code] = *response return o } golang-github-go-openapi-spec-0.15.0/operation_test.go000066400000000000000000000056701332117131300227010ustar00rootroot00000000000000// Copyright 2015 go-swagger maintainers // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. // You may obtain a copy of the License at // // http://www.apache.org/licenses/LICENSE-2.0 // // Unless required by applicable law or agreed to in writing, software // distributed under the License is distributed on an "AS IS" BASIS, // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. // See the License for the specific language governing permissions and // limitations under the License. package spec import ( "encoding/json" "testing" "github.com/stretchr/testify/assert" ) var operation = Operation{ VendorExtensible: VendorExtensible{ Extensions: map[string]interface{}{ "x-framework": "go-swagger", }, }, OperationProps: OperationProps{ Description: "operation description", Consumes: []string{"application/json", "application/x-yaml"}, Produces: []string{"application/json", "application/x-yaml"}, Schemes: []string{"http", "https"}, Tags: []string{"dogs"}, Summary: "the summary of the operation", ID: "sendCat", Deprecated: true, Security: []map[string][]string{ { "apiKey": {}, }, }, Parameters: []Parameter{ {Refable: Refable{Ref: MustCreateRef("Cat")}}, }, Responses: &Responses{ ResponsesProps: ResponsesProps{ Default: &Response{ ResponseProps: ResponseProps{ Description: "void response", }, }, }, }, }, } var operationJSON = `{ "description": "operation description", "x-framework": "go-swagger", "consumes": [ "application/json", "application/x-yaml" ], "produces": [ "application/json", "application/x-yaml" ], "schemes": ["http", "https"], "tags": ["dogs"], "summary": "the summary of the operation", "operationId": "sendCat", "deprecated": true, "security": [ { "apiKey": [] } ], "parameters": [{"$ref":"Cat"}], "responses": { "default": { "description": "void response" } } }` func TestIntegrationOperation(t *testing.T) { var actual Operation if assert.NoError(t, json.Unmarshal([]byte(operationJSON), &actual)) { assert.EqualValues(t, actual, operation) } assertParsesJSON(t, operationJSON, operation) } func TestSecurityProperty(t *testing.T) { //Ensure we omit security key when unset securityNotSet := OperationProps{} jsonResult, err := json.Marshal(securityNotSet) if assert.NoError(t, err) { assert.NotContains(t, string(jsonResult), "security", "security key should be omitted when unset") } //Ensure we preseve the security key when it contains an empty (zero length) slice securityContainsEmptyArray := OperationProps{ Security: []map[string][]string{}, } jsonResult, err = json.Marshal(securityContainsEmptyArray) if assert.NoError(t, err) { var props OperationProps if assert.NoError(t, json.Unmarshal(jsonResult, &props)) { assert.Equal(t, securityContainsEmptyArray, props) } } } golang-github-go-openapi-spec-0.15.0/parameter.go000066400000000000000000000241201332117131300216110ustar00rootroot00000000000000// Copyright 2015 go-swagger maintainers // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. // You may obtain a copy of the License at // // http://www.apache.org/licenses/LICENSE-2.0 // // Unless required by applicable law or agreed to in writing, software // distributed under the License is distributed on an "AS IS" BASIS, // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. // See the License for the specific language governing permissions and // limitations under the License. package spec import ( "encoding/json" "strings" "github.com/go-openapi/jsonpointer" "github.com/go-openapi/swag" ) // QueryParam creates a query parameter func QueryParam(name string) *Parameter { return &Parameter{ParamProps: ParamProps{Name: name, In: "query"}} } // HeaderParam creates a header parameter, this is always required by default func HeaderParam(name string) *Parameter { return &Parameter{ParamProps: ParamProps{Name: name, In: "header", Required: true}} } // PathParam creates a path parameter, this is always required func PathParam(name string) *Parameter { return &Parameter{ParamProps: ParamProps{Name: name, In: "path", Required: true}} } // BodyParam creates a body parameter func BodyParam(name string, schema *Schema) *Parameter { return &Parameter{ParamProps: ParamProps{Name: name, In: "body", Schema: schema}, SimpleSchema: SimpleSchema{Type: "object"}} } // FormDataParam creates a body parameter func FormDataParam(name string) *Parameter { return &Parameter{ParamProps: ParamProps{Name: name, In: "formData"}} } // FileParam creates a body parameter func FileParam(name string) *Parameter { return &Parameter{ParamProps: ParamProps{Name: name, In: "formData"}, SimpleSchema: SimpleSchema{Type: "file"}} } // SimpleArrayParam creates a param for a simple array (string, int, date etc) func SimpleArrayParam(name, tpe, fmt string) *Parameter { return &Parameter{ParamProps: ParamProps{Name: name}, SimpleSchema: SimpleSchema{Type: "array", CollectionFormat: "csv", Items: &Items{SimpleSchema: SimpleSchema{Type: "string", Format: fmt}}}} } // ParamRef creates a parameter that's a json reference func ParamRef(uri string) *Parameter { p := new(Parameter) p.Ref = MustCreateRef(uri) return p } // ParamProps describes the specific attributes of an operation parameter type ParamProps struct { Description string `json:"description,omitempty"` Name string `json:"name,omitempty"` In string `json:"in,omitempty"` Required bool `json:"required,omitempty"` Schema *Schema `json:"schema,omitempty"` // when in == "body" AllowEmptyValue bool `json:"allowEmptyValue,omitempty"` // when in == "query" || "formData" } // Parameter a unique parameter is defined by a combination of a [name](#parameterName) and [location](#parameterIn). // // There are five possible parameter types. // * Path - Used together with [Path Templating](#pathTemplating), where the parameter value is actually part of the operation's URL. This does not include the host or base path of the API. For example, in `/items/{itemId}`, the path parameter is `itemId`. // * Query - Parameters that are appended to the URL. For example, in `/items?id=###`, the query parameter is `id`. // * Header - Custom headers that are expected as part of the request. // * Body - The payload that's appended to the HTTP request. Since there can only be one payload, there can only be *one* body parameter. The name of the body parameter has no effect on the parameter itself and is used for documentation purposes only. Since Form parameters are also in the payload, body and form parameters cannot exist together for the same operation. // * Form - Used to describe the payload of an HTTP request when either `application/x-www-form-urlencoded` or `multipart/form-data` are used as the content type of the request (in Swagger's definition, the [`consumes`](#operationConsumes) property of an operation). This is the only parameter type that can be used to send files, thus supporting the `file` type. Since form parameters are sent in the payload, they cannot be declared together with a body parameter for the same operation. Form parameters have a different format based on the content-type used (for further details, consult http://www.w3.org/TR/html401/interact/forms.html#h-17.13.4): // * `application/x-www-form-urlencoded` - Similar to the format of Query parameters but as a payload. For example, `foo=1&bar=swagger` - both `foo` and `bar` are form parameters. This is normally used for simple parameters that are being transferred. // * `multipart/form-data` - each parameter takes a section in the payload with an internal header. For example, for the header `Content-Disposition: form-data; name="submit-name"` the name of the parameter is `submit-name`. This type of form parameters is more commonly used for file transfers. // // For more information: http://goo.gl/8us55a#parameterObject type Parameter struct { Refable CommonValidations SimpleSchema VendorExtensible ParamProps } // JSONLookup look up a value by the json property name func (p Parameter) JSONLookup(token string) (interface{}, error) { if ex, ok := p.Extensions[token]; ok { return &ex, nil } if token == "$ref" { return &p.Ref, nil } r, _, err := jsonpointer.GetForToken(p.CommonValidations, token) if err != nil && !strings.HasPrefix(err.Error(), "object has no field") { return nil, err } if r != nil { return r, nil } r, _, err = jsonpointer.GetForToken(p.SimpleSchema, token) if err != nil && !strings.HasPrefix(err.Error(), "object has no field") { return nil, err } if r != nil { return r, nil } r, _, err = jsonpointer.GetForToken(p.ParamProps, token) return r, err } // WithDescription a fluent builder method for the description of the parameter func (p *Parameter) WithDescription(description string) *Parameter { p.Description = description return p } // Named a fluent builder method to override the name of the parameter func (p *Parameter) Named(name string) *Parameter { p.Name = name return p } // WithLocation a fluent builder method to override the location of the parameter func (p *Parameter) WithLocation(in string) *Parameter { p.In = in return p } // Typed a fluent builder method for the type of the parameter value func (p *Parameter) Typed(tpe, format string) *Parameter { p.Type = tpe p.Format = format return p } // CollectionOf a fluent builder method for an array parameter func (p *Parameter) CollectionOf(items *Items, format string) *Parameter { p.Type = "array" p.Items = items p.CollectionFormat = format return p } // WithDefault sets the default value on this parameter func (p *Parameter) WithDefault(defaultValue interface{}) *Parameter { p.AsOptional() // with default implies optional p.Default = defaultValue return p } // AllowsEmptyValues flags this parameter as being ok with empty values func (p *Parameter) AllowsEmptyValues() *Parameter { p.AllowEmptyValue = true return p } // NoEmptyValues flags this parameter as not liking empty values func (p *Parameter) NoEmptyValues() *Parameter { p.AllowEmptyValue = false return p } // AsOptional flags this parameter as optional func (p *Parameter) AsOptional() *Parameter { p.Required = false return p } // AsRequired flags this parameter as required func (p *Parameter) AsRequired() *Parameter { if p.Default != nil { // with a default required makes no sense return p } p.Required = true return p } // WithMaxLength sets a max length value func (p *Parameter) WithMaxLength(max int64) *Parameter { p.MaxLength = &max return p } // WithMinLength sets a min length value func (p *Parameter) WithMinLength(min int64) *Parameter { p.MinLength = &min return p } // WithPattern sets a pattern value func (p *Parameter) WithPattern(pattern string) *Parameter { p.Pattern = pattern return p } // WithMultipleOf sets a multiple of value func (p *Parameter) WithMultipleOf(number float64) *Parameter { p.MultipleOf = &number return p } // WithMaximum sets a maximum number value func (p *Parameter) WithMaximum(max float64, exclusive bool) *Parameter { p.Maximum = &max p.ExclusiveMaximum = exclusive return p } // WithMinimum sets a minimum number value func (p *Parameter) WithMinimum(min float64, exclusive bool) *Parameter { p.Minimum = &min p.ExclusiveMinimum = exclusive return p } // WithEnum sets a the enum values (replace) func (p *Parameter) WithEnum(values ...interface{}) *Parameter { p.Enum = append([]interface{}{}, values...) return p } // WithMaxItems sets the max items func (p *Parameter) WithMaxItems(size int64) *Parameter { p.MaxItems = &size return p } // WithMinItems sets the min items func (p *Parameter) WithMinItems(size int64) *Parameter { p.MinItems = &size return p } // UniqueValues dictates that this array can only have unique items func (p *Parameter) UniqueValues() *Parameter { p.UniqueItems = true return p } // AllowDuplicates this array can have duplicates func (p *Parameter) AllowDuplicates() *Parameter { p.UniqueItems = false return p } // UnmarshalJSON hydrates this items instance with the data from JSON func (p *Parameter) UnmarshalJSON(data []byte) error { if err := json.Unmarshal(data, &p.CommonValidations); err != nil { return err } if err := json.Unmarshal(data, &p.Refable); err != nil { return err } if err := json.Unmarshal(data, &p.SimpleSchema); err != nil { return err } if err := json.Unmarshal(data, &p.VendorExtensible); err != nil { return err } if err := json.Unmarshal(data, &p.ParamProps); err != nil { return err } return nil } // MarshalJSON converts this items object to JSON func (p Parameter) MarshalJSON() ([]byte, error) { b1, err := json.Marshal(p.CommonValidations) if err != nil { return nil, err } b2, err := json.Marshal(p.SimpleSchema) if err != nil { return nil, err } b3, err := json.Marshal(p.Refable) if err != nil { return nil, err } b4, err := json.Marshal(p.VendorExtensible) if err != nil { return nil, err } b5, err := json.Marshal(p.ParamProps) if err != nil { return nil, err } return swag.ConcatJSON(b3, b1, b2, b4, b5), nil } golang-github-go-openapi-spec-0.15.0/parameters_test.go000066400000000000000000000106271332117131300230420ustar00rootroot00000000000000// Copyright 2015 go-swagger maintainers // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. // You may obtain a copy of the License at // // http://www.apache.org/licenses/LICENSE-2.0 // // Unless required by applicable law or agreed to in writing, software // distributed under the License is distributed on an "AS IS" BASIS, // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. // See the License for the specific language governing permissions and // limitations under the License. package spec import ( "encoding/json" "testing" "github.com/stretchr/testify/assert" ) var parameter = Parameter{ VendorExtensible: VendorExtensible{Extensions: map[string]interface{}{ "x-framework": "swagger-go", }}, Refable: Refable{Ref: MustCreateRef("Dog")}, CommonValidations: CommonValidations{ Maximum: float64Ptr(100), ExclusiveMaximum: true, ExclusiveMinimum: true, Minimum: float64Ptr(5), MaxLength: int64Ptr(100), MinLength: int64Ptr(5), Pattern: "\\w{1,5}\\w+", MaxItems: int64Ptr(100), MinItems: int64Ptr(5), UniqueItems: true, MultipleOf: float64Ptr(5), Enum: []interface{}{"hello", "world"}, }, SimpleSchema: SimpleSchema{ Type: "string", Format: "date", CollectionFormat: "csv", Items: &Items{ Refable: Refable{Ref: MustCreateRef("Cat")}, }, Default: "8", }, ParamProps: ParamProps{ Name: "param-name", In: "header", Required: true, Schema: &Schema{SchemaProps: SchemaProps{Type: []string{"string"}}}, Description: "the description of this parameter", }, } var parameterJSON = `{ "items": { "$ref": "Cat" }, "x-framework": "swagger-go", "$ref": "Dog", "description": "the description of this parameter", "maximum": 100, "minimum": 5, "exclusiveMaximum": true, "exclusiveMinimum": true, "maxLength": 100, "minLength": 5, "pattern": "\\w{1,5}\\w+", "maxItems": 100, "minItems": 5, "uniqueItems": true, "multipleOf": 5, "enum": ["hello", "world"], "type": "string", "format": "date", "name": "param-name", "in": "header", "required": true, "schema": { "type": "string" }, "collectionFormat": "csv", "default": "8" }` func TestIntegrationParameter(t *testing.T) { var actual Parameter if assert.NoError(t, json.Unmarshal([]byte(parameterJSON), &actual)) { assert.EqualValues(t, actual, parameter) } assertParsesJSON(t, parameterJSON, parameter) } func TestParameterSerialization(t *testing.T) { items := &Items{ SimpleSchema: SimpleSchema{Type: "string"}, } intItems := &Items{ SimpleSchema: SimpleSchema{Type: "int", Format: "int32"}, } assertSerializeJSON(t, QueryParam("").Typed("string", ""), `{"type":"string","in":"query"}`) assertSerializeJSON(t, QueryParam("").CollectionOf(items, "multi"), `{"type":"array","items":{"type":"string"},"collectionFormat":"multi","in":"query"}`) assertSerializeJSON(t, PathParam("").Typed("string", ""), `{"type":"string","in":"path","required":true}`) assertSerializeJSON(t, PathParam("").CollectionOf(items, "multi"), `{"type":"array","items":{"type":"string"},"collectionFormat":"multi","in":"path","required":true}`) assertSerializeJSON(t, PathParam("").CollectionOf(intItems, "multi"), `{"type":"array","items":{"type":"int","format":"int32"},"collectionFormat":"multi","in":"path","required":true}`) assertSerializeJSON(t, HeaderParam("").Typed("string", ""), `{"type":"string","in":"header","required":true}`) assertSerializeJSON(t, HeaderParam("").CollectionOf(items, "multi"), `{"type":"array","items":{"type":"string"},"collectionFormat":"multi","in":"header","required":true}`) schema := &Schema{SchemaProps: SchemaProps{ Properties: map[string]Schema{ "name": {SchemaProps: SchemaProps{ Type: []string{"string"}, }}, }, }} refSchema := &Schema{ SchemaProps: SchemaProps{Ref: MustCreateRef("Cat")}, } assertSerializeJSON(t, BodyParam("", schema), `{"type":"object","in":"body","schema":{"properties":{"name":{"type":"string"}}}}`) assertSerializeJSON(t, BodyParam("", refSchema), `{"type":"object","in":"body","schema":{"$ref":"Cat"}}`) // array body param assertSerializeJSON(t, BodyParam("", ArrayProperty(RefProperty("Cat"))), `{"type":"object","in":"body","schema":{"type":"array","items":{"$ref":"Cat"}}}`) } golang-github-go-openapi-spec-0.15.0/path_item.go000066400000000000000000000052161332117131300216100ustar00rootroot00000000000000// Copyright 2015 go-swagger maintainers // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. // You may obtain a copy of the License at // // http://www.apache.org/licenses/LICENSE-2.0 // // Unless required by applicable law or agreed to in writing, software // distributed under the License is distributed on an "AS IS" BASIS, // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. // See the License for the specific language governing permissions and // limitations under the License. package spec import ( "encoding/json" "github.com/go-openapi/jsonpointer" "github.com/go-openapi/swag" ) // PathItemProps the path item specific properties type PathItemProps struct { Get *Operation `json:"get,omitempty"` Put *Operation `json:"put,omitempty"` Post *Operation `json:"post,omitempty"` Delete *Operation `json:"delete,omitempty"` Options *Operation `json:"options,omitempty"` Head *Operation `json:"head,omitempty"` Patch *Operation `json:"patch,omitempty"` Parameters []Parameter `json:"parameters,omitempty"` } // PathItem describes the operations available on a single path. // A Path Item may be empty, due to [ACL constraints](http://goo.gl/8us55a#securityFiltering). // The path itself is still exposed to the documentation viewer but they will // not know which operations and parameters are available. // // For more information: http://goo.gl/8us55a#pathItemObject type PathItem struct { Refable VendorExtensible PathItemProps } // JSONLookup look up a value by the json property name func (p PathItem) JSONLookup(token string) (interface{}, error) { if ex, ok := p.Extensions[token]; ok { return &ex, nil } if token == "$ref" { return &p.Ref, nil } r, _, err := jsonpointer.GetForToken(p.PathItemProps, token) return r, err } // UnmarshalJSON hydrates this items instance with the data from JSON func (p *PathItem) UnmarshalJSON(data []byte) error { if err := json.Unmarshal(data, &p.Refable); err != nil { return err } if err := json.Unmarshal(data, &p.VendorExtensible); err != nil { return err } if err := json.Unmarshal(data, &p.PathItemProps); err != nil { return err } return nil } // MarshalJSON converts this items object to JSON func (p PathItem) MarshalJSON() ([]byte, error) { b3, err := json.Marshal(p.Refable) if err != nil { return nil, err } b4, err := json.Marshal(p.VendorExtensible) if err != nil { return nil, err } b5, err := json.Marshal(p.PathItemProps) if err != nil { return nil, err } concated := swag.ConcatJSON(b3, b4, b5) return concated, nil } golang-github-go-openapi-spec-0.15.0/path_item_test.go000066400000000000000000000046541332117131300226540ustar00rootroot00000000000000// Copyright 2015 go-swagger maintainers // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. // You may obtain a copy of the License at // // http://www.apache.org/licenses/LICENSE-2.0 // // Unless required by applicable law or agreed to in writing, software // distributed under the License is distributed on an "AS IS" BASIS, // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. // See the License for the specific language governing permissions and // limitations under the License. package spec import ( "encoding/json" "testing" "github.com/stretchr/testify/assert" ) var pathItem = PathItem{ Refable: Refable{Ref: MustCreateRef("Dog")}, VendorExtensible: VendorExtensible{ Extensions: map[string]interface{}{ "x-framework": "go-swagger", }, }, PathItemProps: PathItemProps{ Get: &Operation{ OperationProps: OperationProps{Description: "get operation description"}, }, Put: &Operation{ OperationProps: OperationProps{Description: "put operation description"}, }, Post: &Operation{ OperationProps: OperationProps{Description: "post operation description"}, }, Delete: &Operation{ OperationProps: OperationProps{Description: "delete operation description"}, }, Options: &Operation{ OperationProps: OperationProps{Description: "options operation description"}, }, Head: &Operation{ OperationProps: OperationProps{Description: "head operation description"}, }, Patch: &Operation{ OperationProps: OperationProps{Description: "patch operation description"}, }, Parameters: []Parameter{ { ParamProps: ParamProps{In: "path"}, }, }, }, } var pathItemJSON = `{ "$ref": "Dog", "x-framework": "go-swagger", "get": { "description": "get operation description" }, "put": { "description": "put operation description" }, "post": { "description": "post operation description" }, "delete": { "description": "delete operation description" }, "options": { "description": "options operation description" }, "head": { "description": "head operation description" }, "patch": { "description": "patch operation description" }, "parameters": [{"in":"path"}] }` func TestIntegrationPathItem(t *testing.T) { var actual PathItem if assert.NoError(t, json.Unmarshal([]byte(pathItemJSON), &actual)) { assert.EqualValues(t, actual, pathItem) } assertParsesJSON(t, pathItemJSON, pathItem) } golang-github-go-openapi-spec-0.15.0/paths.go000066400000000000000000000051111332117131300207470ustar00rootroot00000000000000// Copyright 2015 go-swagger maintainers // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. // You may obtain a copy of the License at // // http://www.apache.org/licenses/LICENSE-2.0 // // Unless required by applicable law or agreed to in writing, software // distributed under the License is distributed on an "AS IS" BASIS, // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. // See the License for the specific language governing permissions and // limitations under the License. package spec import ( "encoding/json" "fmt" "strings" "github.com/go-openapi/swag" ) // Paths holds the relative paths to the individual endpoints. // The path is appended to the [`basePath`](http://goo.gl/8us55a#swaggerBasePath) in order // to construct the full URL. // The Paths may be empty, due to [ACL constraints](http://goo.gl/8us55a#securityFiltering). // // For more information: http://goo.gl/8us55a#pathsObject type Paths struct { VendorExtensible Paths map[string]PathItem `json:"-"` // custom serializer to flatten this, each entry must start with "/" } // JSONLookup look up a value by the json property name func (p Paths) JSONLookup(token string) (interface{}, error) { if pi, ok := p.Paths[token]; ok { return &pi, nil } if ex, ok := p.Extensions[token]; ok { return &ex, nil } return nil, fmt.Errorf("object has no field %q", token) } // UnmarshalJSON hydrates this items instance with the data from JSON func (p *Paths) UnmarshalJSON(data []byte) error { var res map[string]json.RawMessage if err := json.Unmarshal(data, &res); err != nil { return err } for k, v := range res { if strings.HasPrefix(strings.ToLower(k), "x-") { if p.Extensions == nil { p.Extensions = make(map[string]interface{}) } var d interface{} if err := json.Unmarshal(v, &d); err != nil { return err } p.Extensions[k] = d } if strings.HasPrefix(k, "/") { if p.Paths == nil { p.Paths = make(map[string]PathItem) } var pi PathItem if err := json.Unmarshal(v, &pi); err != nil { return err } p.Paths[k] = pi } } return nil } // MarshalJSON converts this items object to JSON func (p Paths) MarshalJSON() ([]byte, error) { b1, err := json.Marshal(p.VendorExtensible) if err != nil { return nil, err } pths := make(map[string]PathItem) for k, v := range p.Paths { if strings.HasPrefix(k, "/") { pths[k] = v } } b2, err := json.Marshal(pths) if err != nil { return nil, err } concated := swag.ConcatJSON(b1, b2) return concated, nil } golang-github-go-openapi-spec-0.15.0/paths_test.go000066400000000000000000000022511332117131300220100ustar00rootroot00000000000000// Copyright 2015 go-swagger maintainers // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. // You may obtain a copy of the License at // // http://www.apache.org/licenses/LICENSE-2.0 // // Unless required by applicable law or agreed to in writing, software // distributed under the License is distributed on an "AS IS" BASIS, // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. // See the License for the specific language governing permissions and // limitations under the License. package spec import ( "encoding/json" "testing" "github.com/stretchr/testify/assert" ) var paths = Paths{ VendorExtensible: VendorExtensible{Extensions: map[string]interface{}{"x-framework": "go-swagger"}}, Paths: map[string]PathItem{ "/": { Refable: Refable{Ref: MustCreateRef("cats")}, }, }, } var pathsJSON = `{"x-framework":"go-swagger","/":{"$ref":"cats"}}` func TestIntegrationPaths(t *testing.T) { var actual Paths if assert.NoError(t, json.Unmarshal([]byte(pathsJSON), &actual)) { assert.EqualValues(t, actual, paths) } assertParsesJSON(t, pathsJSON, paths) } golang-github-go-openapi-spec-0.15.0/properties_test.go000066400000000000000000000040671332117131300230740ustar00rootroot00000000000000// Copyright 2015 go-swagger maintainers // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. // You may obtain a copy of the License at // // http://www.apache.org/licenses/LICENSE-2.0 // // Unless required by applicable law or agreed to in writing, software // distributed under the License is distributed on an "AS IS" BASIS, // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. // See the License for the specific language governing permissions and // limitations under the License. package spec import ( "testing" ) func TestPropertySerialization(t *testing.T) { strProp := StringProperty() strProp.Enum = append(strProp.Enum, "a", "b") prop := &Schema{SchemaProps: SchemaProps{ Items: &SchemaOrArray{Schemas: []Schema{ {SchemaProps: SchemaProps{Type: []string{"string"}}}, {SchemaProps: SchemaProps{Type: []string{"string"}}}, }}, }} var propSerData = []struct { Schema *Schema JSON string }{ {BooleanProperty(), `{"type":"boolean"}`}, {DateProperty(), `{"type":"string","format":"date"}`}, {DateTimeProperty(), `{"type":"string","format":"date-time"}`}, {Float64Property(), `{"type":"number","format":"double"}`}, {Float32Property(), `{"type":"number","format":"float"}`}, {Int32Property(), `{"type":"integer","format":"int32"}`}, {Int64Property(), `{"type":"integer","format":"int64"}`}, {MapProperty(StringProperty()), `{"type":"object","additionalProperties":{"type":"string"}}`}, {MapProperty(Int32Property()), `{"type":"object","additionalProperties":{"type":"integer","format":"int32"}}`}, {RefProperty("Dog"), `{"$ref":"Dog"}`}, {StringProperty(), `{"type":"string"}`}, {strProp, `{"type":"string","enum":["a","b"]}`}, {ArrayProperty(StringProperty()), `{"type":"array","items":{"type":"string"}}`}, {prop, `{"items":[{"type":"string"},{"type":"string"}]}`}, } for _, v := range propSerData { t.Log("roundtripping for", v.JSON) assertSerializeJSON(t, v.Schema, v.JSON) assertParsesJSON(t, v.JSON, v.Schema) } } golang-github-go-openapi-spec-0.15.0/ref.go000066400000000000000000000072061332117131300204130ustar00rootroot00000000000000// Copyright 2015 go-swagger maintainers // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. // You may obtain a copy of the License at // // http://www.apache.org/licenses/LICENSE-2.0 // // Unless required by applicable law or agreed to in writing, software // distributed under the License is distributed on an "AS IS" BASIS, // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. // See the License for the specific language governing permissions and // limitations under the License. package spec import ( "encoding/json" "net/http" "os" "path/filepath" "github.com/go-openapi/jsonreference" ) // Refable is a struct for things that accept a $ref property type Refable struct { Ref Ref } // MarshalJSON marshals the ref to json func (r Refable) MarshalJSON() ([]byte, error) { return r.Ref.MarshalJSON() } // UnmarshalJSON unmarshalss the ref from json func (r *Refable) UnmarshalJSON(d []byte) error { return json.Unmarshal(d, &r.Ref) } // Ref represents a json reference that is potentially resolved type Ref struct { jsonreference.Ref } // RemoteURI gets the remote uri part of the ref func (r *Ref) RemoteURI() string { if r.String() == "" { return r.String() } u := *r.GetURL() u.Fragment = "" return u.String() } // IsValidURI returns true when the url the ref points to can be found func (r *Ref) IsValidURI(basepaths ...string) bool { if r.String() == "" { return true } v := r.RemoteURI() if v == "" { return true } if r.HasFullURL { rr, err := http.Get(v) if err != nil { return false } return rr.StatusCode/100 == 2 } if !(r.HasFileScheme || r.HasFullFilePath || r.HasURLPathOnly) { return false } // check for local file pth := v if r.HasURLPathOnly { base := "." if len(basepaths) > 0 { base = filepath.Dir(filepath.Join(basepaths...)) } p, e := filepath.Abs(filepath.ToSlash(filepath.Join(base, pth))) if e != nil { return false } pth = p } fi, err := os.Stat(filepath.ToSlash(pth)) if err != nil { return false } return !fi.IsDir() } // Inherits creates a new reference from a parent and a child // If the child cannot inherit from the parent, an error is returned func (r *Ref) Inherits(child Ref) (*Ref, error) { ref, err := r.Ref.Inherits(child.Ref) if err != nil { return nil, err } return &Ref{Ref: *ref}, nil } // NewRef creates a new instance of a ref object // returns an error when the reference uri is an invalid uri func NewRef(refURI string) (Ref, error) { ref, err := jsonreference.New(refURI) if err != nil { return Ref{}, err } return Ref{Ref: ref}, nil } // MustCreateRef creates a ref object but panics when refURI is invalid. // Use the NewRef method for a version that returns an error. func MustCreateRef(refURI string) Ref { return Ref{Ref: jsonreference.MustCreateRef(refURI)} } // MarshalJSON marshals this ref into a JSON object func (r Ref) MarshalJSON() ([]byte, error) { str := r.String() if str == "" { if r.IsRoot() { return []byte(`{"$ref":""}`), nil } return []byte("{}"), nil } v := map[string]interface{}{"$ref": str} return json.Marshal(v) } // UnmarshalJSON unmarshals this ref from a JSON object func (r *Ref) UnmarshalJSON(d []byte) error { var v map[string]interface{} if err := json.Unmarshal(d, &v); err != nil { return err } return r.fromMap(v) } func (r *Ref) fromMap(v map[string]interface{}) error { if v == nil { return nil } if vv, ok := v["$ref"]; ok { if str, ok := vv.(string); ok { ref, err := jsonreference.New(str) if err != nil { return err } *r = Ref{Ref: ref} } } return nil } golang-github-go-openapi-spec-0.15.0/response.go000066400000000000000000000071051332117131300214730ustar00rootroot00000000000000// Copyright 2015 go-swagger maintainers // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. // You may obtain a copy of the License at // // http://www.apache.org/licenses/LICENSE-2.0 // // Unless required by applicable law or agreed to in writing, software // distributed under the License is distributed on an "AS IS" BASIS, // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. // See the License for the specific language governing permissions and // limitations under the License. package spec import ( "encoding/json" "github.com/go-openapi/jsonpointer" "github.com/go-openapi/swag" ) // ResponseProps properties specific to a response type ResponseProps struct { Description string `json:"description,omitempty"` Schema *Schema `json:"schema,omitempty"` Headers map[string]Header `json:"headers,omitempty"` Examples map[string]interface{} `json:"examples,omitempty"` } // Response describes a single response from an API Operation. // // For more information: http://goo.gl/8us55a#responseObject type Response struct { Refable ResponseProps VendorExtensible } // JSONLookup look up a value by the json property name func (r Response) JSONLookup(token string) (interface{}, error) { if ex, ok := r.Extensions[token]; ok { return &ex, nil } if token == "$ref" { return &r.Ref, nil } ptr, _, err := jsonpointer.GetForToken(r.ResponseProps, token) return ptr, err } // UnmarshalJSON hydrates this items instance with the data from JSON func (r *Response) UnmarshalJSON(data []byte) error { if err := json.Unmarshal(data, &r.ResponseProps); err != nil { return err } if err := json.Unmarshal(data, &r.Refable); err != nil { return err } if err := json.Unmarshal(data, &r.VendorExtensible); err != nil { return err } return nil } // MarshalJSON converts this items object to JSON func (r Response) MarshalJSON() ([]byte, error) { b1, err := json.Marshal(r.ResponseProps) if err != nil { return nil, err } b2, err := json.Marshal(r.Refable) if err != nil { return nil, err } b3, err := json.Marshal(r.VendorExtensible) if err != nil { return nil, err } return swag.ConcatJSON(b1, b2, b3), nil } // NewResponse creates a new response instance func NewResponse() *Response { return new(Response) } // ResponseRef creates a response as a json reference func ResponseRef(url string) *Response { resp := NewResponse() resp.Ref = MustCreateRef(url) return resp } // WithDescription sets the description on this response, allows for chaining func (r *Response) WithDescription(description string) *Response { r.Description = description return r } // WithSchema sets the schema on this response, allows for chaining. // Passing a nil argument removes the schema from this response func (r *Response) WithSchema(schema *Schema) *Response { r.Schema = schema return r } // AddHeader adds a header to this response func (r *Response) AddHeader(name string, header *Header) *Response { if header == nil { return r.RemoveHeader(name) } if r.Headers == nil { r.Headers = make(map[string]Header) } r.Headers[name] = *header return r } // RemoveHeader removes a header from this response func (r *Response) RemoveHeader(name string) *Response { delete(r.Headers, name) return r } // AddExample adds an example to this response func (r *Response) AddExample(mediaType string, example interface{}) *Response { if r.Examples == nil { r.Examples = make(map[string]interface{}) } r.Examples[mediaType] = example return r } golang-github-go-openapi-spec-0.15.0/response_test.go000066400000000000000000000043031332117131300225270ustar00rootroot00000000000000// Copyright 2017 go-swagger maintainers // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. // You may obtain a copy of the License at // // http://www.apache.org/licenses/LICENSE-2.0 // // Unless required by applicable law or agreed to in writing, software // distributed under the License is distributed on an "AS IS" BASIS, // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. // See the License for the specific language governing permissions and // limitations under the License. package spec import ( "encoding/json" "testing" "github.com/stretchr/testify/assert" ) var response = Response{ Refable: Refable{Ref: MustCreateRef("Dog")}, VendorExtensible: VendorExtensible{ Extensions: map[string]interface{}{ "x-go-name": "PutDogExists", }, }, ResponseProps: ResponseProps{ Description: "Dog exists", Schema: &Schema{SchemaProps: SchemaProps{Type: []string{"string"}}}, }, } var responseJSON = `{ "$ref": "Dog", "x-go-name": "PutDogExists", "description": "Dog exists", "schema": { "type": "string" } }` func TestIntegrationResponse(t *testing.T) { var actual Response if assert.NoError(t, json.Unmarshal([]byte(responseJSON), &actual)) { assert.EqualValues(t, actual, response) } assertParsesJSON(t, responseJSON, response) } func TestJSONLookupResponse(t *testing.T) { res, err := response.JSONLookup("$ref") if !assert.NoError(t, err) { t.FailNow() return } if assert.IsType(t, &Ref{}, res) { ref := res.(*Ref) assert.EqualValues(t, MustCreateRef("Dog"), *ref) } var def string res, err = response.JSONLookup("description") if !assert.NoError(t, err) || !assert.NotNil(t, res) || !assert.IsType(t, def, res) { t.FailNow() return } def = res.(string) assert.Equal(t, "Dog exists", def) var x *interface{} res, err = response.JSONLookup("x-go-name") if !assert.NoError(t, err) || !assert.NotNil(t, res) || !assert.IsType(t, x, res) { t.FailNow() return } x = res.(*interface{}) assert.EqualValues(t, "PutDogExists", *x) res, err = response.JSONLookup("unknown") if !assert.Error(t, err) || !assert.Nil(t, res) { t.FailNow() return } } golang-github-go-openapi-spec-0.15.0/responses.go000066400000000000000000000071721332117131300216620ustar00rootroot00000000000000// Copyright 2015 go-swagger maintainers // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. // You may obtain a copy of the License at // // http://www.apache.org/licenses/LICENSE-2.0 // // Unless required by applicable law or agreed to in writing, software // distributed under the License is distributed on an "AS IS" BASIS, // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. // See the License for the specific language governing permissions and // limitations under the License. package spec import ( "encoding/json" "fmt" "reflect" "strconv" "github.com/go-openapi/swag" ) // Responses is a container for the expected responses of an operation. // The container maps a HTTP response code to the expected response. // It is not expected from the documentation to necessarily cover all possible HTTP response codes, // since they may not be known in advance. However, it is expected from the documentation to cover // a successful operation response and any known errors. // // The `default` can be used a default response object for all HTTP codes that are not covered // individually by the specification. // // The `Responses Object` MUST contain at least one response code, and it SHOULD be the response // for a successful operation call. // // For more information: http://goo.gl/8us55a#responsesObject type Responses struct { VendorExtensible ResponsesProps } // JSONLookup implements an interface to customize json pointer lookup func (r Responses) JSONLookup(token string) (interface{}, error) { if token == "default" { return r.Default, nil } if ex, ok := r.Extensions[token]; ok { return &ex, nil } if i, err := strconv.Atoi(token); err == nil { if scr, ok := r.StatusCodeResponses[i]; ok { return scr, nil } } return nil, fmt.Errorf("object has no field %q", token) } // UnmarshalJSON hydrates this items instance with the data from JSON func (r *Responses) UnmarshalJSON(data []byte) error { if err := json.Unmarshal(data, &r.ResponsesProps); err != nil { return err } if err := json.Unmarshal(data, &r.VendorExtensible); err != nil { return err } if reflect.DeepEqual(ResponsesProps{}, r.ResponsesProps) { r.ResponsesProps = ResponsesProps{} } return nil } // MarshalJSON converts this items object to JSON func (r Responses) MarshalJSON() ([]byte, error) { b1, err := json.Marshal(r.ResponsesProps) if err != nil { return nil, err } b2, err := json.Marshal(r.VendorExtensible) if err != nil { return nil, err } concated := swag.ConcatJSON(b1, b2) return concated, nil } // ResponsesProps describes all responses for an operation. // It tells what is the default response and maps all responses with a // HTTP status code. type ResponsesProps struct { Default *Response StatusCodeResponses map[int]Response } // MarshalJSON marshals responses as JSON func (r ResponsesProps) MarshalJSON() ([]byte, error) { toser := map[string]Response{} if r.Default != nil { toser["default"] = *r.Default } for k, v := range r.StatusCodeResponses { toser[strconv.Itoa(k)] = v } return json.Marshal(toser) } // UnmarshalJSON unmarshals responses from JSON func (r *ResponsesProps) UnmarshalJSON(data []byte) error { var res map[string]Response if err := json.Unmarshal(data, &res); err != nil { return nil } if v, ok := res["default"]; ok { r.Default = &v delete(res, "default") } for k, v := range res { if nk, err := strconv.Atoi(k); err == nil { if r.StatusCodeResponses == nil { r.StatusCodeResponses = map[int]Response{} } r.StatusCodeResponses[nk] = v } } return nil } golang-github-go-openapi-spec-0.15.0/schema.go000066400000000000000000000432341332117131300211000ustar00rootroot00000000000000// Copyright 2015 go-swagger maintainers // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. // You may obtain a copy of the License at // // http://www.apache.org/licenses/LICENSE-2.0 // // Unless required by applicable law or agreed to in writing, software // distributed under the License is distributed on an "AS IS" BASIS, // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. // See the License for the specific language governing permissions and // limitations under the License. package spec import ( "encoding/json" "fmt" "net/url" "strings" "github.com/go-openapi/jsonpointer" "github.com/go-openapi/swag" ) // BooleanProperty creates a boolean property func BooleanProperty() *Schema { return &Schema{SchemaProps: SchemaProps{Type: []string{"boolean"}}} } // BoolProperty creates a boolean property func BoolProperty() *Schema { return BooleanProperty() } // StringProperty creates a string property func StringProperty() *Schema { return &Schema{SchemaProps: SchemaProps{Type: []string{"string"}}} } // CharProperty creates a string property func CharProperty() *Schema { return &Schema{SchemaProps: SchemaProps{Type: []string{"string"}}} } // Float64Property creates a float64/double property func Float64Property() *Schema { return &Schema{SchemaProps: SchemaProps{Type: []string{"number"}, Format: "double"}} } // Float32Property creates a float32/float property func Float32Property() *Schema { return &Schema{SchemaProps: SchemaProps{Type: []string{"number"}, Format: "float"}} } // Int8Property creates an int8 property func Int8Property() *Schema { return &Schema{SchemaProps: SchemaProps{Type: []string{"integer"}, Format: "int8"}} } // Int16Property creates an int16 property func Int16Property() *Schema { return &Schema{SchemaProps: SchemaProps{Type: []string{"integer"}, Format: "int16"}} } // Int32Property creates an int32 property func Int32Property() *Schema { return &Schema{SchemaProps: SchemaProps{Type: []string{"integer"}, Format: "int32"}} } // Int64Property creates an int64 property func Int64Property() *Schema { return &Schema{SchemaProps: SchemaProps{Type: []string{"integer"}, Format: "int64"}} } // StrFmtProperty creates a property for the named string format func StrFmtProperty(format string) *Schema { return &Schema{SchemaProps: SchemaProps{Type: []string{"string"}, Format: format}} } // DateProperty creates a date property func DateProperty() *Schema { return &Schema{SchemaProps: SchemaProps{Type: []string{"string"}, Format: "date"}} } // DateTimeProperty creates a date time property func DateTimeProperty() *Schema { return &Schema{SchemaProps: SchemaProps{Type: []string{"string"}, Format: "date-time"}} } // MapProperty creates a map property func MapProperty(property *Schema) *Schema { return &Schema{SchemaProps: SchemaProps{Type: []string{"object"}, AdditionalProperties: &SchemaOrBool{Allows: true, Schema: property}}} } // RefProperty creates a ref property func RefProperty(name string) *Schema { return &Schema{SchemaProps: SchemaProps{Ref: MustCreateRef(name)}} } // RefSchema creates a ref property func RefSchema(name string) *Schema { return &Schema{SchemaProps: SchemaProps{Ref: MustCreateRef(name)}} } // ArrayProperty creates an array property func ArrayProperty(items *Schema) *Schema { if items == nil { return &Schema{SchemaProps: SchemaProps{Type: []string{"array"}}} } return &Schema{SchemaProps: SchemaProps{Items: &SchemaOrArray{Schema: items}, Type: []string{"array"}}} } // ComposedSchema creates a schema with allOf func ComposedSchema(schemas ...Schema) *Schema { s := new(Schema) s.AllOf = schemas return s } // SchemaURL represents a schema url type SchemaURL string // MarshalJSON marshal this to JSON func (r SchemaURL) MarshalJSON() ([]byte, error) { if r == "" { return []byte("{}"), nil } v := map[string]interface{}{"$schema": string(r)} return json.Marshal(v) } // UnmarshalJSON unmarshal this from JSON func (r *SchemaURL) UnmarshalJSON(data []byte) error { var v map[string]interface{} if err := json.Unmarshal(data, &v); err != nil { return err } return r.fromMap(v) } func (r *SchemaURL) fromMap(v map[string]interface{}) error { if v == nil { return nil } if vv, ok := v["$schema"]; ok { if str, ok := vv.(string); ok { u, err := url.Parse(str) if err != nil { return err } *r = SchemaURL(u.String()) } } return nil } // type ExtraSchemaProps map[string]interface{} // // JSONSchema represents a structure that is a json schema draft 04 // type JSONSchema struct { // SchemaProps // ExtraSchemaProps // } // // MarshalJSON marshal this to JSON // func (s JSONSchema) MarshalJSON() ([]byte, error) { // b1, err := json.Marshal(s.SchemaProps) // if err != nil { // return nil, err // } // b2, err := s.Ref.MarshalJSON() // if err != nil { // return nil, err // } // b3, err := s.Schema.MarshalJSON() // if err != nil { // return nil, err // } // b4, err := json.Marshal(s.ExtraSchemaProps) // if err != nil { // return nil, err // } // return swag.ConcatJSON(b1, b2, b3, b4), nil // } // // UnmarshalJSON marshal this from JSON // func (s *JSONSchema) UnmarshalJSON(data []byte) error { // var sch JSONSchema // if err := json.Unmarshal(data, &sch.SchemaProps); err != nil { // return err // } // if err := json.Unmarshal(data, &sch.Ref); err != nil { // return err // } // if err := json.Unmarshal(data, &sch.Schema); err != nil { // return err // } // if err := json.Unmarshal(data, &sch.ExtraSchemaProps); err != nil { // return err // } // *s = sch // return nil // } // SchemaProps describes a JSON schema (draft 4) type SchemaProps struct { ID string `json:"id,omitempty"` Ref Ref `json:"-"` Schema SchemaURL `json:"-"` Description string `json:"description,omitempty"` Type StringOrArray `json:"type,omitempty"` Format string `json:"format,omitempty"` Title string `json:"title,omitempty"` Default interface{} `json:"default,omitempty"` Maximum *float64 `json:"maximum,omitempty"` ExclusiveMaximum bool `json:"exclusiveMaximum,omitempty"` Minimum *float64 `json:"minimum,omitempty"` ExclusiveMinimum bool `json:"exclusiveMinimum,omitempty"` MaxLength *int64 `json:"maxLength,omitempty"` MinLength *int64 `json:"minLength,omitempty"` Pattern string `json:"pattern,omitempty"` MaxItems *int64 `json:"maxItems,omitempty"` MinItems *int64 `json:"minItems,omitempty"` UniqueItems bool `json:"uniqueItems,omitempty"` MultipleOf *float64 `json:"multipleOf,omitempty"` Enum []interface{} `json:"enum,omitempty"` MaxProperties *int64 `json:"maxProperties,omitempty"` MinProperties *int64 `json:"minProperties,omitempty"` Required []string `json:"required,omitempty"` Items *SchemaOrArray `json:"items,omitempty"` AllOf []Schema `json:"allOf,omitempty"` OneOf []Schema `json:"oneOf,omitempty"` AnyOf []Schema `json:"anyOf,omitempty"` Not *Schema `json:"not,omitempty"` Properties map[string]Schema `json:"properties,omitempty"` AdditionalProperties *SchemaOrBool `json:"additionalProperties,omitempty"` PatternProperties map[string]Schema `json:"patternProperties,omitempty"` Dependencies Dependencies `json:"dependencies,omitempty"` AdditionalItems *SchemaOrBool `json:"additionalItems,omitempty"` Definitions Definitions `json:"definitions,omitempty"` } // SwaggerSchemaProps are additional properties supported by swagger schemas, but not JSON-schema (draft 4) type SwaggerSchemaProps struct { Discriminator string `json:"discriminator,omitempty"` ReadOnly bool `json:"readOnly,omitempty"` XML *XMLObject `json:"xml,omitempty"` ExternalDocs *ExternalDocumentation `json:"externalDocs,omitempty"` Example interface{} `json:"example,omitempty"` } // Schema the schema object allows the definition of input and output data types. // These types can be objects, but also primitives and arrays. // This object is based on the [JSON Schema Specification Draft 4](http://json-schema.org/) // and uses a predefined subset of it. // On top of this subset, there are extensions provided by this specification to allow for more complete documentation. // // For more information: http://goo.gl/8us55a#schemaObject type Schema struct { VendorExtensible SchemaProps SwaggerSchemaProps ExtraProps map[string]interface{} `json:"-"` } // JSONLookup implements an interface to customize json pointer lookup func (s Schema) JSONLookup(token string) (interface{}, error) { if ex, ok := s.Extensions[token]; ok { return &ex, nil } if ex, ok := s.ExtraProps[token]; ok { return &ex, nil } r, _, err := jsonpointer.GetForToken(s.SchemaProps, token) if r != nil || (err != nil && !strings.HasPrefix(err.Error(), "object has no field")) { return r, err } r, _, err = jsonpointer.GetForToken(s.SwaggerSchemaProps, token) return r, err } // WithID sets the id for this schema, allows for chaining func (s *Schema) WithID(id string) *Schema { s.ID = id return s } // WithTitle sets the title for this schema, allows for chaining func (s *Schema) WithTitle(title string) *Schema { s.Title = title return s } // WithDescription sets the description for this schema, allows for chaining func (s *Schema) WithDescription(description string) *Schema { s.Description = description return s } // WithProperties sets the properties for this schema func (s *Schema) WithProperties(schemas map[string]Schema) *Schema { s.Properties = schemas return s } // SetProperty sets a property on this schema func (s *Schema) SetProperty(name string, schema Schema) *Schema { if s.Properties == nil { s.Properties = make(map[string]Schema) } s.Properties[name] = schema return s } // WithAllOf sets the all of property func (s *Schema) WithAllOf(schemas ...Schema) *Schema { s.AllOf = schemas return s } // WithMaxProperties sets the max number of properties an object can have func (s *Schema) WithMaxProperties(max int64) *Schema { s.MaxProperties = &max return s } // WithMinProperties sets the min number of properties an object must have func (s *Schema) WithMinProperties(min int64) *Schema { s.MinProperties = &min return s } // Typed sets the type of this schema for a single value item func (s *Schema) Typed(tpe, format string) *Schema { s.Type = []string{tpe} s.Format = format return s } // AddType adds a type with potential format to the types for this schema func (s *Schema) AddType(tpe, format string) *Schema { s.Type = append(s.Type, tpe) if format != "" { s.Format = format } return s } // CollectionOf a fluent builder method for an array parameter func (s *Schema) CollectionOf(items Schema) *Schema { s.Type = []string{"array"} s.Items = &SchemaOrArray{Schema: &items} return s } // WithDefault sets the default value on this parameter func (s *Schema) WithDefault(defaultValue interface{}) *Schema { s.Default = defaultValue return s } // WithRequired flags this parameter as required func (s *Schema) WithRequired(items ...string) *Schema { s.Required = items return s } // AddRequired adds field names to the required properties array func (s *Schema) AddRequired(items ...string) *Schema { s.Required = append(s.Required, items...) return s } // WithMaxLength sets a max length value func (s *Schema) WithMaxLength(max int64) *Schema { s.MaxLength = &max return s } // WithMinLength sets a min length value func (s *Schema) WithMinLength(min int64) *Schema { s.MinLength = &min return s } // WithPattern sets a pattern value func (s *Schema) WithPattern(pattern string) *Schema { s.Pattern = pattern return s } // WithMultipleOf sets a multiple of value func (s *Schema) WithMultipleOf(number float64) *Schema { s.MultipleOf = &number return s } // WithMaximum sets a maximum number value func (s *Schema) WithMaximum(max float64, exclusive bool) *Schema { s.Maximum = &max s.ExclusiveMaximum = exclusive return s } // WithMinimum sets a minimum number value func (s *Schema) WithMinimum(min float64, exclusive bool) *Schema { s.Minimum = &min s.ExclusiveMinimum = exclusive return s } // WithEnum sets a the enum values (replace) func (s *Schema) WithEnum(values ...interface{}) *Schema { s.Enum = append([]interface{}{}, values...) return s } // WithMaxItems sets the max items func (s *Schema) WithMaxItems(size int64) *Schema { s.MaxItems = &size return s } // WithMinItems sets the min items func (s *Schema) WithMinItems(size int64) *Schema { s.MinItems = &size return s } // UniqueValues dictates that this array can only have unique items func (s *Schema) UniqueValues() *Schema { s.UniqueItems = true return s } // AllowDuplicates this array can have duplicates func (s *Schema) AllowDuplicates() *Schema { s.UniqueItems = false return s } // AddToAllOf adds a schema to the allOf property func (s *Schema) AddToAllOf(schemas ...Schema) *Schema { s.AllOf = append(s.AllOf, schemas...) return s } // WithDiscriminator sets the name of the discriminator field func (s *Schema) WithDiscriminator(discriminator string) *Schema { s.Discriminator = discriminator return s } // AsReadOnly flags this schema as readonly func (s *Schema) AsReadOnly() *Schema { s.ReadOnly = true return s } // AsWritable flags this schema as writeable (not read-only) func (s *Schema) AsWritable() *Schema { s.ReadOnly = false return s } // WithExample sets the example for this schema func (s *Schema) WithExample(example interface{}) *Schema { s.Example = example return s } // WithExternalDocs sets/removes the external docs for/from this schema. // When you pass empty strings as params the external documents will be removed. // When you pass non-empty string as one value then those values will be used on the external docs object. // So when you pass a non-empty description, you should also pass the url and vice versa. func (s *Schema) WithExternalDocs(description, url string) *Schema { if description == "" && url == "" { s.ExternalDocs = nil return s } if s.ExternalDocs == nil { s.ExternalDocs = &ExternalDocumentation{} } s.ExternalDocs.Description = description s.ExternalDocs.URL = url return s } // WithXMLName sets the xml name for the object func (s *Schema) WithXMLName(name string) *Schema { if s.XML == nil { s.XML = new(XMLObject) } s.XML.Name = name return s } // WithXMLNamespace sets the xml namespace for the object func (s *Schema) WithXMLNamespace(namespace string) *Schema { if s.XML == nil { s.XML = new(XMLObject) } s.XML.Namespace = namespace return s } // WithXMLPrefix sets the xml prefix for the object func (s *Schema) WithXMLPrefix(prefix string) *Schema { if s.XML == nil { s.XML = new(XMLObject) } s.XML.Prefix = prefix return s } // AsXMLAttribute flags this object as xml attribute func (s *Schema) AsXMLAttribute() *Schema { if s.XML == nil { s.XML = new(XMLObject) } s.XML.Attribute = true return s } // AsXMLElement flags this object as an xml node func (s *Schema) AsXMLElement() *Schema { if s.XML == nil { s.XML = new(XMLObject) } s.XML.Attribute = false return s } // AsWrappedXML flags this object as wrapped, this is mostly useful for array types func (s *Schema) AsWrappedXML() *Schema { if s.XML == nil { s.XML = new(XMLObject) } s.XML.Wrapped = true return s } // AsUnwrappedXML flags this object as an xml node func (s *Schema) AsUnwrappedXML() *Schema { if s.XML == nil { s.XML = new(XMLObject) } s.XML.Wrapped = false return s } // MarshalJSON marshal this to JSON func (s Schema) MarshalJSON() ([]byte, error) { b1, err := json.Marshal(s.SchemaProps) if err != nil { return nil, fmt.Errorf("schema props %v", err) } b2, err := json.Marshal(s.VendorExtensible) if err != nil { return nil, fmt.Errorf("vendor props %v", err) } b3, err := s.Ref.MarshalJSON() if err != nil { return nil, fmt.Errorf("ref prop %v", err) } b4, err := s.Schema.MarshalJSON() if err != nil { return nil, fmt.Errorf("schema prop %v", err) } b5, err := json.Marshal(s.SwaggerSchemaProps) if err != nil { return nil, fmt.Errorf("common validations %v", err) } var b6 []byte if s.ExtraProps != nil { jj, err := json.Marshal(s.ExtraProps) if err != nil { return nil, fmt.Errorf("extra props %v", err) } b6 = jj } return swag.ConcatJSON(b1, b2, b3, b4, b5, b6), nil } // UnmarshalJSON marshal this from JSON func (s *Schema) UnmarshalJSON(data []byte) error { props := struct { SchemaProps SwaggerSchemaProps }{} if err := json.Unmarshal(data, &props); err != nil { return err } sch := Schema{ SchemaProps: props.SchemaProps, SwaggerSchemaProps: props.SwaggerSchemaProps, } var d map[string]interface{} if err := json.Unmarshal(data, &d); err != nil { return err } _ = sch.Ref.fromMap(d) _ = sch.Schema.fromMap(d) delete(d, "$ref") delete(d, "$schema") for _, pn := range swag.DefaultJSONNameProvider.GetJSONNames(s) { delete(d, pn) } for k, vv := range d { lk := strings.ToLower(k) if strings.HasPrefix(lk, "x-") { if sch.Extensions == nil { sch.Extensions = map[string]interface{}{} } sch.Extensions[k] = vv continue } if sch.ExtraProps == nil { sch.ExtraProps = map[string]interface{}{} } sch.ExtraProps[k] = vv } *s = sch return nil } golang-github-go-openapi-spec-0.15.0/schema_test.go000066400000000000000000000143731332117131300221410ustar00rootroot00000000000000// Copyright 2015 go-swagger maintainers // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. // You may obtain a copy of the License at // // http://www.apache.org/licenses/LICENSE-2.0 // // Unless required by applicable law or agreed to in writing, software // distributed under the License is distributed on an "AS IS" BASIS, // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. // See the License for the specific language governing permissions and // limitations under the License. package spec import ( "encoding/json" "testing" "github.com/stretchr/testify/assert" ) var schema = Schema{ VendorExtensible: VendorExtensible{Extensions: map[string]interface{}{"x-framework": "go-swagger"}}, SchemaProps: SchemaProps{ Ref: MustCreateRef("Cat"), Type: []string{"string"}, Format: "date", Description: "the description of this schema", Title: "the title", Default: "blah", Maximum: float64Ptr(100), ExclusiveMaximum: true, ExclusiveMinimum: true, Minimum: float64Ptr(5), MaxLength: int64Ptr(100), MinLength: int64Ptr(5), Pattern: "\\w{1,5}\\w+", MaxItems: int64Ptr(100), MinItems: int64Ptr(5), UniqueItems: true, MultipleOf: float64Ptr(5), Enum: []interface{}{"hello", "world"}, MaxProperties: int64Ptr(5), MinProperties: int64Ptr(1), Required: []string{"id", "name"}, Items: &SchemaOrArray{Schema: &Schema{SchemaProps: SchemaProps{Type: []string{"string"}}}}, AllOf: []Schema{{SchemaProps: SchemaProps{Type: []string{"string"}}}}, Properties: map[string]Schema{ "id": {SchemaProps: SchemaProps{Type: []string{"integer"}, Format: "int64"}}, "name": {SchemaProps: SchemaProps{Type: []string{"string"}}}, }, AdditionalProperties: &SchemaOrBool{Allows: true, Schema: &Schema{SchemaProps: SchemaProps{ Type: []string{"integer"}, Format: "int32", }}}, }, SwaggerSchemaProps: SwaggerSchemaProps{ Discriminator: "not this", ReadOnly: true, XML: &XMLObject{"sch", "io", "sw", true, true}, ExternalDocs: &ExternalDocumentation{ Description: "the documentation etc", URL: "http://readthedocs.org/swagger", }, Example: []interface{}{ map[string]interface{}{ "id": 1, "name": "a book", }, map[string]interface{}{ "id": 2, "name": "the thing", }, }, }, } var schemaJSON = `{ "x-framework": "go-swagger", "$ref": "Cat", "description": "the description of this schema", "maximum": 100, "minimum": 5, "exclusiveMaximum": true, "exclusiveMinimum": true, "maxLength": 100, "minLength": 5, "pattern": "\\w{1,5}\\w+", "maxItems": 100, "minItems": 5, "uniqueItems": true, "multipleOf": 5, "enum": ["hello", "world"], "type": "string", "format": "date", "title": "the title", "default": "blah", "maxProperties": 5, "minProperties": 1, "required": ["id", "name"], "items": { "type": "string" }, "allOf": [ { "type": "string" } ], "properties": { "id": { "type": "integer", "format": "int64" }, "name": { "type": "string" } }, "discriminator": "not this", "readOnly": true, "xml": { "name": "sch", "namespace": "io", "prefix": "sw", "wrapped": true, "attribute": true }, "externalDocs": { "description": "the documentation etc", "url": "http://readthedocs.org/swagger" }, "example": [ { "id": 1, "name": "a book" }, { "id": 2, "name": "the thing" } ], "additionalProperties": { "type": "integer", "format": "int32" } } ` func TestSchema(t *testing.T) { expected := map[string]interface{}{} json.Unmarshal([]byte(schemaJSON), &expected) b, err := json.Marshal(schema) if assert.NoError(t, err) { var actual map[string]interface{} json.Unmarshal(b, &actual) assert.Equal(t, expected, actual) } actual2 := Schema{} if assert.NoError(t, json.Unmarshal([]byte(schemaJSON), &actual2)) { assert.Equal(t, schema.Ref, actual2.Ref) assert.Equal(t, schema.Description, actual2.Description) assert.Equal(t, schema.Maximum, actual2.Maximum) assert.Equal(t, schema.Minimum, actual2.Minimum) assert.Equal(t, schema.ExclusiveMinimum, actual2.ExclusiveMinimum) assert.Equal(t, schema.ExclusiveMaximum, actual2.ExclusiveMaximum) assert.Equal(t, schema.MaxLength, actual2.MaxLength) assert.Equal(t, schema.MinLength, actual2.MinLength) assert.Equal(t, schema.Pattern, actual2.Pattern) assert.Equal(t, schema.MaxItems, actual2.MaxItems) assert.Equal(t, schema.MinItems, actual2.MinItems) assert.True(t, actual2.UniqueItems) assert.Equal(t, schema.MultipleOf, actual2.MultipleOf) assert.Equal(t, schema.Enum, actual2.Enum) assert.Equal(t, schema.Type, actual2.Type) assert.Equal(t, schema.Format, actual2.Format) assert.Equal(t, schema.Title, actual2.Title) assert.Equal(t, schema.MaxProperties, actual2.MaxProperties) assert.Equal(t, schema.MinProperties, actual2.MinProperties) assert.Equal(t, schema.Required, actual2.Required) assert.Equal(t, schema.Items, actual2.Items) assert.Equal(t, schema.AllOf, actual2.AllOf) assert.Equal(t, schema.Properties, actual2.Properties) assert.Equal(t, schema.Discriminator, actual2.Discriminator) assert.Equal(t, schema.ReadOnly, actual2.ReadOnly) assert.Equal(t, schema.XML, actual2.XML) assert.Equal(t, schema.ExternalDocs, actual2.ExternalDocs) assert.Equal(t, schema.AdditionalProperties, actual2.AdditionalProperties) assert.Equal(t, schema.Extensions, actual2.Extensions) examples := actual2.Example.([]interface{}) expEx := schema.Example.([]interface{}) ex1 := examples[0].(map[string]interface{}) ex2 := examples[1].(map[string]interface{}) exp1 := expEx[0].(map[string]interface{}) exp2 := expEx[1].(map[string]interface{}) assert.EqualValues(t, exp1["id"], ex1["id"]) assert.Equal(t, exp1["name"], ex1["name"]) assert.EqualValues(t, exp2["id"], ex2["id"]) assert.Equal(t, exp2["name"], ex2["name"]) } } func BenchmarkSchemaUnmarshal(b *testing.B) { for i := 0; i < b.N; i++ { sch := &Schema{} sch.UnmarshalJSON([]byte(schemaJSON)) } } golang-github-go-openapi-spec-0.15.0/schemas/000077500000000000000000000000001332117131300207265ustar00rootroot00000000000000golang-github-go-openapi-spec-0.15.0/schemas/jsonschema-draft-04.json000066400000000000000000000104051332117131300252720ustar00rootroot00000000000000{ "id": "http://json-schema.org/draft-04/schema#", "$schema": "http://json-schema.org/draft-04/schema#", "description": "Core schema meta-schema", "definitions": { "schemaArray": { "type": "array", "minItems": 1, "items": { "$ref": "#" } }, "positiveInteger": { "type": "integer", "minimum": 0 }, "positiveIntegerDefault0": { "allOf": [ { "$ref": "#/definitions/positiveInteger" }, { "default": 0 } ] }, "simpleTypes": { "enum": [ "array", "boolean", "integer", "null", "number", "object", "string" ] }, "stringArray": { "type": "array", "items": { "type": "string" }, "minItems": 1, "uniqueItems": true } }, "type": "object", "properties": { "id": { "type": "string" }, "$schema": { "type": "string" }, "title": { "type": "string" }, "description": { "type": "string" }, "default": {}, "multipleOf": { "type": "number", "minimum": 0, "exclusiveMinimum": true }, "maximum": { "type": "number" }, "exclusiveMaximum": { "type": "boolean", "default": false }, "minimum": { "type": "number" }, "exclusiveMinimum": { "type": "boolean", "default": false }, "maxLength": { "$ref": "#/definitions/positiveInteger" }, "minLength": { "$ref": "#/definitions/positiveIntegerDefault0" }, "pattern": { "type": "string", "format": "regex" }, "additionalItems": { "anyOf": [ { "type": "boolean" }, { "$ref": "#" } ], "default": {} }, "items": { "anyOf": [ { "$ref": "#" }, { "$ref": "#/definitions/schemaArray" } ], "default": {} }, "maxItems": { "$ref": "#/definitions/positiveInteger" }, "minItems": { "$ref": "#/definitions/positiveIntegerDefault0" }, "uniqueItems": { "type": "boolean", "default": false }, "maxProperties": { "$ref": "#/definitions/positiveInteger" }, "minProperties": { "$ref": "#/definitions/positiveIntegerDefault0" }, "required": { "$ref": "#/definitions/stringArray" }, "additionalProperties": { "anyOf": [ { "type": "boolean" }, { "$ref": "#" } ], "default": {} }, "definitions": { "type": "object", "additionalProperties": { "$ref": "#" }, "default": {} }, "properties": { "type": "object", "additionalProperties": { "$ref": "#" }, "default": {} }, "patternProperties": { "type": "object", "additionalProperties": { "$ref": "#" }, "default": {} }, "dependencies": { "type": "object", "additionalProperties": { "anyOf": [ { "$ref": "#" }, { "$ref": "#/definitions/stringArray" } ] } }, "enum": { "type": "array", "minItems": 1, "uniqueItems": true }, "type": { "anyOf": [ { "$ref": "#/definitions/simpleTypes" }, { "type": "array", "items": { "$ref": "#/definitions/simpleTypes" }, "minItems": 1, "uniqueItems": true } ] }, "format": { "type": "string" }, "allOf": { "$ref": "#/definitions/schemaArray" }, "anyOf": { "$ref": "#/definitions/schemaArray" }, "oneOf": { "$ref": "#/definitions/schemaArray" }, "not": { "$ref": "#" } }, "dependencies": { "exclusiveMaximum": [ "maximum" ], "exclusiveMinimum": [ "minimum" ] }, "default": {} } golang-github-go-openapi-spec-0.15.0/schemas/v2/000077500000000000000000000000001332117131300212555ustar00rootroot00000000000000golang-github-go-openapi-spec-0.15.0/schemas/v2/README.md000066400000000000000000000002651332117131300225370ustar00rootroot00000000000000# Swagger 2.0 specification schema This folder contains the Swagger 2.0 specification schema files maintained here: https://github.com/reverb/swagger-spec/blob/master/schemas/v2.0golang-github-go-openapi-spec-0.15.0/schemas/v2/schema.json000066400000000000000000001164711332117131300234220ustar00rootroot00000000000000{ "title": "A JSON Schema for Swagger 2.0 API.", "id": "http://swagger.io/v2/schema.json#", "$schema": "http://json-schema.org/draft-04/schema#", "type": "object", "required": [ "swagger", "info", "paths" ], "additionalProperties": false, "patternProperties": { "^x-": { "$ref": "#/definitions/vendorExtension" } }, "properties": { "swagger": { "type": "string", "enum": [ "2.0" ], "description": "The Swagger version of this document." }, "info": { "$ref": "#/definitions/info" }, "host": { "type": "string", "pattern": "^[^{}/ :\\\\]+(?::\\d+)?$", "description": "The host (name or ip) of the API. Example: 'swagger.io'" }, "basePath": { "type": "string", "pattern": "^/", "description": "The base path to the API. Example: '/api'." }, "schemes": { "$ref": "#/definitions/schemesList" }, "consumes": { "description": "A list of MIME types accepted by the API.", "allOf": [ { "$ref": "#/definitions/mediaTypeList" } ] }, "produces": { "description": "A list of MIME types the API can produce.", "allOf": [ { "$ref": "#/definitions/mediaTypeList" } ] }, "paths": { "$ref": "#/definitions/paths" }, "definitions": { "$ref": "#/definitions/definitions" }, "parameters": { "$ref": "#/definitions/parameterDefinitions" }, "responses": { "$ref": "#/definitions/responseDefinitions" }, "security": { "$ref": "#/definitions/security" }, "securityDefinitions": { "$ref": "#/definitions/securityDefinitions" }, "tags": { "type": "array", "items": { "$ref": "#/definitions/tag" }, "uniqueItems": true }, "externalDocs": { "$ref": "#/definitions/externalDocs" } }, "definitions": { "info": { "type": "object", "description": "General information about the API.", "required": [ "version", "title" ], "additionalProperties": false, "patternProperties": { "^x-": { "$ref": "#/definitions/vendorExtension" } }, "properties": { "title": { "type": "string", "description": "A unique and precise title of the API." }, "version": { "type": "string", "description": "A semantic version number of the API." }, "description": { "type": "string", "description": "A longer description of the API. Should be different from the title. GitHub Flavored Markdown is allowed." }, "termsOfService": { "type": "string", "description": "The terms of service for the API." }, "contact": { "$ref": "#/definitions/contact" }, "license": { "$ref": "#/definitions/license" } } }, "contact": { "type": "object", "description": "Contact information for the owners of the API.", "additionalProperties": false, "properties": { "name": { "type": "string", "description": "The identifying name of the contact person/organization." }, "url": { "type": "string", "description": "The URL pointing to the contact information.", "format": "uri" }, "email": { "type": "string", "description": "The email address of the contact person/organization.", "format": "email" } }, "patternProperties": { "^x-": { "$ref": "#/definitions/vendorExtension" } } }, "license": { "type": "object", "required": [ "name" ], "additionalProperties": false, "properties": { "name": { "type": "string", "description": "The name of the license type. It's encouraged to use an OSI compatible license." }, "url": { "type": "string", "description": "The URL pointing to the license.", "format": "uri" } }, "patternProperties": { "^x-": { "$ref": "#/definitions/vendorExtension" } } }, "paths": { "type": "object", "description": "Relative paths to the individual endpoints. They must be relative to the 'basePath'.", "patternProperties": { "^x-": { "$ref": "#/definitions/vendorExtension" }, "^/": { "$ref": "#/definitions/pathItem" } }, "additionalProperties": false }, "definitions": { "type": "object", "additionalProperties": { "$ref": "#/definitions/schema" }, "description": "One or more JSON objects describing the schemas being consumed and produced by the API." }, "parameterDefinitions": { "type": "object", "additionalProperties": { "$ref": "#/definitions/parameter" }, "description": "One or more JSON representations for parameters" }, "responseDefinitions": { "type": "object", "additionalProperties": { "$ref": "#/definitions/response" }, "description": "One or more JSON representations for parameters" }, "externalDocs": { "type": "object", "additionalProperties": false, "description": "information about external documentation", "required": [ "url" ], "properties": { "description": { "type": "string" }, "url": { "type": "string", "format": "uri" } }, "patternProperties": { "^x-": { "$ref": "#/definitions/vendorExtension" } } }, "examples": { "type": "object", "additionalProperties": true }, "mimeType": { "type": "string", "description": "The MIME type of the HTTP message." }, "operation": { "type": "object", "required": [ "responses" ], "additionalProperties": false, "patternProperties": { "^x-": { "$ref": "#/definitions/vendorExtension" } }, "properties": { "tags": { "type": "array", "items": { "type": "string" }, "uniqueItems": true }, "summary": { "type": "string", "description": "A brief summary of the operation." }, "description": { "type": "string", "description": "A longer description of the operation, GitHub Flavored Markdown is allowed." }, "externalDocs": { "$ref": "#/definitions/externalDocs" }, "operationId": { "type": "string", "description": "A unique identifier of the operation." }, "produces": { "description": "A list of MIME types the API can produce.", "allOf": [ { "$ref": "#/definitions/mediaTypeList" } ] }, "consumes": { "description": "A list of MIME types the API can consume.", "allOf": [ { "$ref": "#/definitions/mediaTypeList" } ] }, "parameters": { "$ref": "#/definitions/parametersList" }, "responses": { "$ref": "#/definitions/responses" }, "schemes": { "$ref": "#/definitions/schemesList" }, "deprecated": { "type": "boolean", "default": false }, "security": { "$ref": "#/definitions/security" } } }, "pathItem": { "type": "object", "additionalProperties": false, "patternProperties": { "^x-": { "$ref": "#/definitions/vendorExtension" } }, "properties": { "$ref": { "type": "string" }, "get": { "$ref": "#/definitions/operation" }, "put": { "$ref": "#/definitions/operation" }, "post": { "$ref": "#/definitions/operation" }, "delete": { "$ref": "#/definitions/operation" }, "options": { "$ref": "#/definitions/operation" }, "head": { "$ref": "#/definitions/operation" }, "patch": { "$ref": "#/definitions/operation" }, "parameters": { "$ref": "#/definitions/parametersList" } } }, "responses": { "type": "object", "description": "Response objects names can either be any valid HTTP status code or 'default'.", "minProperties": 1, "additionalProperties": false, "patternProperties": { "^([0-9]{3})$|^(default)$": { "$ref": "#/definitions/responseValue" }, "^x-": { "$ref": "#/definitions/vendorExtension" } }, "not": { "type": "object", "additionalProperties": false, "patternProperties": { "^x-": { "$ref": "#/definitions/vendorExtension" } } } }, "responseValue": { "oneOf": [ { "$ref": "#/definitions/response" }, { "$ref": "#/definitions/jsonReference" } ] }, "response": { "type": "object", "required": [ "description" ], "properties": { "description": { "type": "string" }, "schema": { "oneOf": [ { "$ref": "#/definitions/schema" }, { "$ref": "#/definitions/fileSchema" } ] }, "headers": { "$ref": "#/definitions/headers" }, "examples": { "$ref": "#/definitions/examples" } }, "additionalProperties": false, "patternProperties": { "^x-": { "$ref": "#/definitions/vendorExtension" } } }, "headers": { "type": "object", "additionalProperties": { "$ref": "#/definitions/header" } }, "header": { "type": "object", "additionalProperties": false, "required": [ "type" ], "properties": { "type": { "type": "string", "enum": [ "string", "number", "integer", "boolean", "array" ] }, "format": { "type": "string" }, "items": { "$ref": "#/definitions/primitivesItems" }, "collectionFormat": { "$ref": "#/definitions/collectionFormat" }, "default": { "$ref": "#/definitions/default" }, "maximum": { "$ref": "#/definitions/maximum" }, "exclusiveMaximum": { "$ref": "#/definitions/exclusiveMaximum" }, "minimum": { "$ref": "#/definitions/minimum" }, "exclusiveMinimum": { "$ref": "#/definitions/exclusiveMinimum" }, "maxLength": { "$ref": "#/definitions/maxLength" }, "minLength": { "$ref": "#/definitions/minLength" }, "pattern": { "$ref": "#/definitions/pattern" }, "maxItems": { "$ref": "#/definitions/maxItems" }, "minItems": { "$ref": "#/definitions/minItems" }, "uniqueItems": { "$ref": "#/definitions/uniqueItems" }, "enum": { "$ref": "#/definitions/enum" }, "multipleOf": { "$ref": "#/definitions/multipleOf" }, "description": { "type": "string" } }, "patternProperties": { "^x-": { "$ref": "#/definitions/vendorExtension" } } }, "vendorExtension": { "description": "Any property starting with x- is valid.", "additionalProperties": true, "additionalItems": true }, "bodyParameter": { "type": "object", "required": [ "name", "in", "schema" ], "patternProperties": { "^x-": { "$ref": "#/definitions/vendorExtension" } }, "properties": { "description": { "type": "string", "description": "A brief description of the parameter. This could contain examples of use. GitHub Flavored Markdown is allowed." }, "name": { "type": "string", "description": "The name of the parameter." }, "in": { "type": "string", "description": "Determines the location of the parameter.", "enum": [ "body" ] }, "required": { "type": "boolean", "description": "Determines whether or not this parameter is required or optional.", "default": false }, "schema": { "$ref": "#/definitions/schema" } }, "additionalProperties": false }, "headerParameterSubSchema": { "additionalProperties": false, "patternProperties": { "^x-": { "$ref": "#/definitions/vendorExtension" } }, "properties": { "required": { "type": "boolean", "description": "Determines whether or not this parameter is required or optional.", "default": false }, "in": { "type": "string", "description": "Determines the location of the parameter.", "enum": [ "header" ] }, "description": { "type": "string", "description": "A brief description of the parameter. This could contain examples of use. GitHub Flavored Markdown is allowed." }, "name": { "type": "string", "description": "The name of the parameter." }, "type": { "type": "string", "enum": [ "string", "number", "boolean", "integer", "array" ] }, "format": { "type": "string" }, "items": { "$ref": "#/definitions/primitivesItems" }, "collectionFormat": { "$ref": "#/definitions/collectionFormat" }, "default": { "$ref": "#/definitions/default" }, "maximum": { "$ref": "#/definitions/maximum" }, "exclusiveMaximum": { "$ref": "#/definitions/exclusiveMaximum" }, "minimum": { "$ref": "#/definitions/minimum" }, "exclusiveMinimum": { "$ref": "#/definitions/exclusiveMinimum" }, "maxLength": { "$ref": "#/definitions/maxLength" }, "minLength": { "$ref": "#/definitions/minLength" }, "pattern": { "$ref": "#/definitions/pattern" }, "maxItems": { "$ref": "#/definitions/maxItems" }, "minItems": { "$ref": "#/definitions/minItems" }, "uniqueItems": { "$ref": "#/definitions/uniqueItems" }, "enum": { "$ref": "#/definitions/enum" }, "multipleOf": { "$ref": "#/definitions/multipleOf" } } }, "queryParameterSubSchema": { "additionalProperties": false, "patternProperties": { "^x-": { "$ref": "#/definitions/vendorExtension" } }, "properties": { "required": { "type": "boolean", "description": "Determines whether or not this parameter is required or optional.", "default": false }, "in": { "type": "string", "description": "Determines the location of the parameter.", "enum": [ "query" ] }, "description": { "type": "string", "description": "A brief description of the parameter. This could contain examples of use. GitHub Flavored Markdown is allowed." }, "name": { "type": "string", "description": "The name of the parameter." }, "allowEmptyValue": { "type": "boolean", "default": false, "description": "allows sending a parameter by name only or with an empty value." }, "type": { "type": "string", "enum": [ "string", "number", "boolean", "integer", "array" ] }, "format": { "type": "string" }, "items": { "$ref": "#/definitions/primitivesItems" }, "collectionFormat": { "$ref": "#/definitions/collectionFormatWithMulti" }, "default": { "$ref": "#/definitions/default" }, "maximum": { "$ref": "#/definitions/maximum" }, "exclusiveMaximum": { "$ref": "#/definitions/exclusiveMaximum" }, "minimum": { "$ref": "#/definitions/minimum" }, "exclusiveMinimum": { "$ref": "#/definitions/exclusiveMinimum" }, "maxLength": { "$ref": "#/definitions/maxLength" }, "minLength": { "$ref": "#/definitions/minLength" }, "pattern": { "$ref": "#/definitions/pattern" }, "maxItems": { "$ref": "#/definitions/maxItems" }, "minItems": { "$ref": "#/definitions/minItems" }, "uniqueItems": { "$ref": "#/definitions/uniqueItems" }, "enum": { "$ref": "#/definitions/enum" }, "multipleOf": { "$ref": "#/definitions/multipleOf" } } }, "formDataParameterSubSchema": { "additionalProperties": false, "patternProperties": { "^x-": { "$ref": "#/definitions/vendorExtension" } }, "properties": { "required": { "type": "boolean", "description": "Determines whether or not this parameter is required or optional.", "default": false }, "in": { "type": "string", "description": "Determines the location of the parameter.", "enum": [ "formData" ] }, "description": { "type": "string", "description": "A brief description of the parameter. This could contain examples of use. GitHub Flavored Markdown is allowed." }, "name": { "type": "string", "description": "The name of the parameter." }, "allowEmptyValue": { "type": "boolean", "default": false, "description": "allows sending a parameter by name only or with an empty value." }, "type": { "type": "string", "enum": [ "string", "number", "boolean", "integer", "array", "file" ] }, "format": { "type": "string" }, "items": { "$ref": "#/definitions/primitivesItems" }, "collectionFormat": { "$ref": "#/definitions/collectionFormatWithMulti" }, "default": { "$ref": "#/definitions/default" }, "maximum": { "$ref": "#/definitions/maximum" }, "exclusiveMaximum": { "$ref": "#/definitions/exclusiveMaximum" }, "minimum": { "$ref": "#/definitions/minimum" }, "exclusiveMinimum": { "$ref": "#/definitions/exclusiveMinimum" }, "maxLength": { "$ref": "#/definitions/maxLength" }, "minLength": { "$ref": "#/definitions/minLength" }, "pattern": { "$ref": "#/definitions/pattern" }, "maxItems": { "$ref": "#/definitions/maxItems" }, "minItems": { "$ref": "#/definitions/minItems" }, "uniqueItems": { "$ref": "#/definitions/uniqueItems" }, "enum": { "$ref": "#/definitions/enum" }, "multipleOf": { "$ref": "#/definitions/multipleOf" } } }, "pathParameterSubSchema": { "additionalProperties": false, "patternProperties": { "^x-": { "$ref": "#/definitions/vendorExtension" } }, "required": [ "required" ], "properties": { "required": { "type": "boolean", "enum": [ true ], "description": "Determines whether or not this parameter is required or optional." }, "in": { "type": "string", "description": "Determines the location of the parameter.", "enum": [ "path" ] }, "description": { "type": "string", "description": "A brief description of the parameter. This could contain examples of use. GitHub Flavored Markdown is allowed." }, "name": { "type": "string", "description": "The name of the parameter." }, "type": { "type": "string", "enum": [ "string", "number", "boolean", "integer", "array" ] }, "format": { "type": "string" }, "items": { "$ref": "#/definitions/primitivesItems" }, "collectionFormat": { "$ref": "#/definitions/collectionFormat" }, "default": { "$ref": "#/definitions/default" }, "maximum": { "$ref": "#/definitions/maximum" }, "exclusiveMaximum": { "$ref": "#/definitions/exclusiveMaximum" }, "minimum": { "$ref": "#/definitions/minimum" }, "exclusiveMinimum": { "$ref": "#/definitions/exclusiveMinimum" }, "maxLength": { "$ref": "#/definitions/maxLength" }, "minLength": { "$ref": "#/definitions/minLength" }, "pattern": { "$ref": "#/definitions/pattern" }, "maxItems": { "$ref": "#/definitions/maxItems" }, "minItems": { "$ref": "#/definitions/minItems" }, "uniqueItems": { "$ref": "#/definitions/uniqueItems" }, "enum": { "$ref": "#/definitions/enum" }, "multipleOf": { "$ref": "#/definitions/multipleOf" } } }, "nonBodyParameter": { "type": "object", "required": [ "name", "in", "type" ], "oneOf": [ { "$ref": "#/definitions/headerParameterSubSchema" }, { "$ref": "#/definitions/formDataParameterSubSchema" }, { "$ref": "#/definitions/queryParameterSubSchema" }, { "$ref": "#/definitions/pathParameterSubSchema" } ] }, "parameter": { "oneOf": [ { "$ref": "#/definitions/bodyParameter" }, { "$ref": "#/definitions/nonBodyParameter" } ] }, "schema": { "type": "object", "description": "A deterministic version of a JSON Schema object.", "patternProperties": { "^x-": { "$ref": "#/definitions/vendorExtension" } }, "properties": { "$ref": { "type": "string" }, "format": { "type": "string" }, "title": { "$ref": "http://json-schema.org/draft-04/schema#/properties/title" }, "description": { "$ref": "http://json-schema.org/draft-04/schema#/properties/description" }, "default": { "$ref": "http://json-schema.org/draft-04/schema#/properties/default" }, "multipleOf": { "$ref": "http://json-schema.org/draft-04/schema#/properties/multipleOf" }, "maximum": { "$ref": "http://json-schema.org/draft-04/schema#/properties/maximum" }, "exclusiveMaximum": { "$ref": "http://json-schema.org/draft-04/schema#/properties/exclusiveMaximum" }, "minimum": { "$ref": "http://json-schema.org/draft-04/schema#/properties/minimum" }, "exclusiveMinimum": { "$ref": "http://json-schema.org/draft-04/schema#/properties/exclusiveMinimum" }, "maxLength": { "$ref": "http://json-schema.org/draft-04/schema#/definitions/positiveInteger" }, "minLength": { "$ref": "http://json-schema.org/draft-04/schema#/definitions/positiveIntegerDefault0" }, "pattern": { "$ref": "http://json-schema.org/draft-04/schema#/properties/pattern" }, "maxItems": { "$ref": "http://json-schema.org/draft-04/schema#/definitions/positiveInteger" }, "minItems": { "$ref": "http://json-schema.org/draft-04/schema#/definitions/positiveIntegerDefault0" }, "uniqueItems": { "$ref": "http://json-schema.org/draft-04/schema#/properties/uniqueItems" }, "maxProperties": { "$ref": "http://json-schema.org/draft-04/schema#/definitions/positiveInteger" }, "minProperties": { "$ref": "http://json-schema.org/draft-04/schema#/definitions/positiveIntegerDefault0" }, "required": { "$ref": "http://json-schema.org/draft-04/schema#/definitions/stringArray" }, "enum": { "$ref": "http://json-schema.org/draft-04/schema#/properties/enum" }, "additionalProperties": { "anyOf": [ { "$ref": "#/definitions/schema" }, { "type": "boolean" } ], "default": {} }, "type": { "$ref": "http://json-schema.org/draft-04/schema#/properties/type" }, "items": { "anyOf": [ { "$ref": "#/definitions/schema" }, { "type": "array", "minItems": 1, "items": { "$ref": "#/definitions/schema" } } ], "default": {} }, "allOf": { "type": "array", "minItems": 1, "items": { "$ref": "#/definitions/schema" } }, "properties": { "type": "object", "additionalProperties": { "$ref": "#/definitions/schema" }, "default": {} }, "discriminator": { "type": "string" }, "readOnly": { "type": "boolean", "default": false }, "xml": { "$ref": "#/definitions/xml" }, "externalDocs": { "$ref": "#/definitions/externalDocs" }, "example": {} }, "additionalProperties": false }, "fileSchema": { "type": "object", "description": "A deterministic version of a JSON Schema object.", "patternProperties": { "^x-": { "$ref": "#/definitions/vendorExtension" } }, "required": [ "type" ], "properties": { "format": { "type": "string" }, "title": { "$ref": "http://json-schema.org/draft-04/schema#/properties/title" }, "description": { "$ref": "http://json-schema.org/draft-04/schema#/properties/description" }, "default": { "$ref": "http://json-schema.org/draft-04/schema#/properties/default" }, "required": { "$ref": "http://json-schema.org/draft-04/schema#/definitions/stringArray" }, "type": { "type": "string", "enum": [ "file" ] }, "readOnly": { "type": "boolean", "default": false }, "externalDocs": { "$ref": "#/definitions/externalDocs" }, "example": {} }, "additionalProperties": false }, "primitivesItems": { "type": "object", "additionalProperties": false, "properties": { "type": { "type": "string", "enum": [ "string", "number", "integer", "boolean", "array" ] }, "format": { "type": "string" }, "items": { "$ref": "#/definitions/primitivesItems" }, "collectionFormat": { "$ref": "#/definitions/collectionFormat" }, "default": { "$ref": "#/definitions/default" }, "maximum": { "$ref": "#/definitions/maximum" }, "exclusiveMaximum": { "$ref": "#/definitions/exclusiveMaximum" }, "minimum": { "$ref": "#/definitions/minimum" }, "exclusiveMinimum": { "$ref": "#/definitions/exclusiveMinimum" }, "maxLength": { "$ref": "#/definitions/maxLength" }, "minLength": { "$ref": "#/definitions/minLength" }, "pattern": { "$ref": "#/definitions/pattern" }, "maxItems": { "$ref": "#/definitions/maxItems" }, "minItems": { "$ref": "#/definitions/minItems" }, "uniqueItems": { "$ref": "#/definitions/uniqueItems" }, "enum": { "$ref": "#/definitions/enum" }, "multipleOf": { "$ref": "#/definitions/multipleOf" } }, "patternProperties": { "^x-": { "$ref": "#/definitions/vendorExtension" } } }, "security": { "type": "array", "items": { "$ref": "#/definitions/securityRequirement" }, "uniqueItems": true }, "securityRequirement": { "type": "object", "additionalProperties": { "type": "array", "items": { "type": "string" }, "uniqueItems": true } }, "xml": { "type": "object", "additionalProperties": false, "properties": { "name": { "type": "string" }, "namespace": { "type": "string" }, "prefix": { "type": "string" }, "attribute": { "type": "boolean", "default": false }, "wrapped": { "type": "boolean", "default": false } }, "patternProperties": { "^x-": { "$ref": "#/definitions/vendorExtension" } } }, "tag": { "type": "object", "additionalProperties": false, "required": [ "name" ], "properties": { "name": { "type": "string" }, "description": { "type": "string" }, "externalDocs": { "$ref": "#/definitions/externalDocs" } }, "patternProperties": { "^x-": { "$ref": "#/definitions/vendorExtension" } } }, "securityDefinitions": { "type": "object", "additionalProperties": { "oneOf": [ { "$ref": "#/definitions/basicAuthenticationSecurity" }, { "$ref": "#/definitions/apiKeySecurity" }, { "$ref": "#/definitions/oauth2ImplicitSecurity" }, { "$ref": "#/definitions/oauth2PasswordSecurity" }, { "$ref": "#/definitions/oauth2ApplicationSecurity" }, { "$ref": "#/definitions/oauth2AccessCodeSecurity" } ] } }, "basicAuthenticationSecurity": { "type": "object", "additionalProperties": false, "required": [ "type" ], "properties": { "type": { "type": "string", "enum": [ "basic" ] }, "description": { "type": "string" } }, "patternProperties": { "^x-": { "$ref": "#/definitions/vendorExtension" } } }, "apiKeySecurity": { "type": "object", "additionalProperties": false, "required": [ "type", "name", "in" ], "properties": { "type": { "type": "string", "enum": [ "apiKey" ] }, "name": { "type": "string" }, "in": { "type": "string", "enum": [ "header", "query" ] }, "description": { "type": "string" } }, "patternProperties": { "^x-": { "$ref": "#/definitions/vendorExtension" } } }, "oauth2ImplicitSecurity": { "type": "object", "additionalProperties": false, "required": [ "type", "flow", "authorizationUrl" ], "properties": { "type": { "type": "string", "enum": [ "oauth2" ] }, "flow": { "type": "string", "enum": [ "implicit" ] }, "scopes": { "$ref": "#/definitions/oauth2Scopes" }, "authorizationUrl": { "type": "string", "format": "uri" }, "description": { "type": "string" } }, "patternProperties": { "^x-": { "$ref": "#/definitions/vendorExtension" } } }, "oauth2PasswordSecurity": { "type": "object", "additionalProperties": false, "required": [ "type", "flow", "tokenUrl" ], "properties": { "type": { "type": "string", "enum": [ "oauth2" ] }, "flow": { "type": "string", "enum": [ "password" ] }, "scopes": { "$ref": "#/definitions/oauth2Scopes" }, "tokenUrl": { "type": "string", "format": "uri" }, "description": { "type": "string" } }, "patternProperties": { "^x-": { "$ref": "#/definitions/vendorExtension" } } }, "oauth2ApplicationSecurity": { "type": "object", "additionalProperties": false, "required": [ "type", "flow", "tokenUrl" ], "properties": { "type": { "type": "string", "enum": [ "oauth2" ] }, "flow": { "type": "string", "enum": [ "application" ] }, "scopes": { "$ref": "#/definitions/oauth2Scopes" }, "tokenUrl": { "type": "string", "format": "uri" }, "description": { "type": "string" } }, "patternProperties": { "^x-": { "$ref": "#/definitions/vendorExtension" } } }, "oauth2AccessCodeSecurity": { "type": "object", "additionalProperties": false, "required": [ "type", "flow", "authorizationUrl", "tokenUrl" ], "properties": { "type": { "type": "string", "enum": [ "oauth2" ] }, "flow": { "type": "string", "enum": [ "accessCode" ] }, "scopes": { "$ref": "#/definitions/oauth2Scopes" }, "authorizationUrl": { "type": "string", "format": "uri" }, "tokenUrl": { "type": "string", "format": "uri" }, "description": { "type": "string" } }, "patternProperties": { "^x-": { "$ref": "#/definitions/vendorExtension" } } }, "oauth2Scopes": { "type": "object", "additionalProperties": { "type": "string" } }, "mediaTypeList": { "type": "array", "items": { "$ref": "#/definitions/mimeType" }, "uniqueItems": true }, "parametersList": { "type": "array", "description": "The parameters needed to send a valid API call.", "additionalItems": false, "items": { "oneOf": [ { "$ref": "#/definitions/parameter" }, { "$ref": "#/definitions/jsonReference" } ] }, "uniqueItems": true }, "schemesList": { "type": "array", "description": "The transfer protocol of the API.", "items": { "type": "string", "enum": [ "http", "https", "ws", "wss" ] }, "uniqueItems": true }, "collectionFormat": { "type": "string", "enum": [ "csv", "ssv", "tsv", "pipes" ], "default": "csv" }, "collectionFormatWithMulti": { "type": "string", "enum": [ "csv", "ssv", "tsv", "pipes", "multi" ], "default": "csv" }, "title": { "$ref": "http://json-schema.org/draft-04/schema#/properties/title" }, "description": { "$ref": "http://json-schema.org/draft-04/schema#/properties/description" }, "default": { "$ref": "http://json-schema.org/draft-04/schema#/properties/default" }, "multipleOf": { "$ref": "http://json-schema.org/draft-04/schema#/properties/multipleOf" }, "maximum": { "$ref": "http://json-schema.org/draft-04/schema#/properties/maximum" }, "exclusiveMaximum": { "$ref": "http://json-schema.org/draft-04/schema#/properties/exclusiveMaximum" }, "minimum": { "$ref": "http://json-schema.org/draft-04/schema#/properties/minimum" }, "exclusiveMinimum": { "$ref": "http://json-schema.org/draft-04/schema#/properties/exclusiveMinimum" }, "maxLength": { "$ref": "http://json-schema.org/draft-04/schema#/definitions/positiveInteger" }, "minLength": { "$ref": "http://json-schema.org/draft-04/schema#/definitions/positiveIntegerDefault0" }, "pattern": { "$ref": "http://json-schema.org/draft-04/schema#/properties/pattern" }, "maxItems": { "$ref": "http://json-schema.org/draft-04/schema#/definitions/positiveInteger" }, "minItems": { "$ref": "http://json-schema.org/draft-04/schema#/definitions/positiveIntegerDefault0" }, "uniqueItems": { "$ref": "http://json-schema.org/draft-04/schema#/properties/uniqueItems" }, "enum": { "$ref": "http://json-schema.org/draft-04/schema#/properties/enum" }, "jsonReference": { "type": "object", "required": [ "$ref" ], "additionalProperties": false, "properties": { "$ref": { "type": "string" } } } } } golang-github-go-openapi-spec-0.15.0/security_scheme.go000066400000000000000000000111721332117131300230270ustar00rootroot00000000000000// Copyright 2015 go-swagger maintainers // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. // You may obtain a copy of the License at // // http://www.apache.org/licenses/LICENSE-2.0 // // Unless required by applicable law or agreed to in writing, software // distributed under the License is distributed on an "AS IS" BASIS, // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. // See the License for the specific language governing permissions and // limitations under the License. package spec import ( "encoding/json" "github.com/go-openapi/jsonpointer" "github.com/go-openapi/swag" ) const ( basic = "basic" apiKey = "apiKey" oauth2 = "oauth2" implicit = "implicit" password = "password" application = "application" accessCode = "accessCode" ) // BasicAuth creates a basic auth security scheme func BasicAuth() *SecurityScheme { return &SecurityScheme{SecuritySchemeProps: SecuritySchemeProps{Type: basic}} } // APIKeyAuth creates an api key auth security scheme func APIKeyAuth(fieldName, valueSource string) *SecurityScheme { return &SecurityScheme{SecuritySchemeProps: SecuritySchemeProps{Type: apiKey, Name: fieldName, In: valueSource}} } // OAuth2Implicit creates an implicit flow oauth2 security scheme func OAuth2Implicit(authorizationURL string) *SecurityScheme { return &SecurityScheme{SecuritySchemeProps: SecuritySchemeProps{ Type: oauth2, Flow: implicit, AuthorizationURL: authorizationURL, }} } // OAuth2Password creates a password flow oauth2 security scheme func OAuth2Password(tokenURL string) *SecurityScheme { return &SecurityScheme{SecuritySchemeProps: SecuritySchemeProps{ Type: oauth2, Flow: password, TokenURL: tokenURL, }} } // OAuth2Application creates an application flow oauth2 security scheme func OAuth2Application(tokenURL string) *SecurityScheme { return &SecurityScheme{SecuritySchemeProps: SecuritySchemeProps{ Type: oauth2, Flow: application, TokenURL: tokenURL, }} } // OAuth2AccessToken creates an access token flow oauth2 security scheme func OAuth2AccessToken(authorizationURL, tokenURL string) *SecurityScheme { return &SecurityScheme{SecuritySchemeProps: SecuritySchemeProps{ Type: oauth2, Flow: accessCode, AuthorizationURL: authorizationURL, TokenURL: tokenURL, }} } // SecuritySchemeProps describes a swagger security scheme in the securityDefinitions section type SecuritySchemeProps struct { Description string `json:"description,omitempty"` Type string `json:"type"` Name string `json:"name,omitempty"` // api key In string `json:"in,omitempty"` // api key Flow string `json:"flow,omitempty"` // oauth2 AuthorizationURL string `json:"authorizationUrl,omitempty"` // oauth2 TokenURL string `json:"tokenUrl,omitempty"` // oauth2 Scopes map[string]string `json:"scopes,omitempty"` // oauth2 } // AddScope adds a scope to this security scheme func (s *SecuritySchemeProps) AddScope(scope, description string) { if s.Scopes == nil { s.Scopes = make(map[string]string) } s.Scopes[scope] = description } // SecurityScheme allows the definition of a security scheme that can be used by the operations. // Supported schemes are basic authentication, an API key (either as a header or as a query parameter) // and OAuth2's common flows (implicit, password, application and access code). // // For more information: http://goo.gl/8us55a#securitySchemeObject type SecurityScheme struct { VendorExtensible SecuritySchemeProps } // JSONLookup implements an interface to customize json pointer lookup func (s SecurityScheme) JSONLookup(token string) (interface{}, error) { if ex, ok := s.Extensions[token]; ok { return &ex, nil } r, _, err := jsonpointer.GetForToken(s.SecuritySchemeProps, token) return r, err } // MarshalJSON marshal this to JSON func (s SecurityScheme) MarshalJSON() ([]byte, error) { b1, err := json.Marshal(s.SecuritySchemeProps) if err != nil { return nil, err } b2, err := json.Marshal(s.VendorExtensible) if err != nil { return nil, err } return swag.ConcatJSON(b1, b2), nil } // UnmarshalJSON marshal this from JSON func (s *SecurityScheme) UnmarshalJSON(data []byte) error { if err := json.Unmarshal(data, &s.SecuritySchemeProps); err != nil { return err } if err := json.Unmarshal(data, &s.VendorExtensible); err != nil { return err } return nil } golang-github-go-openapi-spec-0.15.0/spec.go000066400000000000000000000045201332117131300205650ustar00rootroot00000000000000// Copyright 2015 go-swagger maintainers // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. // You may obtain a copy of the License at // // http://www.apache.org/licenses/LICENSE-2.0 // // Unless required by applicable law or agreed to in writing, software // distributed under the License is distributed on an "AS IS" BASIS, // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. // See the License for the specific language governing permissions and // limitations under the License. package spec import "encoding/json" //go:generate curl -L --progress -o ./schemas/v2/schema.json http://swagger.io/v2/schema.json //go:generate curl -L --progress -o ./schemas/jsonschema-draft-04.json http://json-schema.org/draft-04/schema //go:generate go-bindata -pkg=spec -prefix=./schemas -ignore=.*\.md ./schemas/... //go:generate perl -pi -e s,Json,JSON,g bindata.go const ( // SwaggerSchemaURL the url for the swagger 2.0 schema to validate specs SwaggerSchemaURL = "http://swagger.io/v2/schema.json#" // JSONSchemaURL the url for the json schema schema JSONSchemaURL = "http://json-schema.org/draft-04/schema#" ) var ( jsonSchema *Schema swaggerSchema *Schema ) func init() { jsonSchema = MustLoadJSONSchemaDraft04() swaggerSchema = MustLoadSwagger20Schema() } // MustLoadJSONSchemaDraft04 panics when Swagger20Schema returns an error func MustLoadJSONSchemaDraft04() *Schema { d, e := JSONSchemaDraft04() if e != nil { panic(e) } return d } // JSONSchemaDraft04 loads the json schema document for json shema draft04 func JSONSchemaDraft04() (*Schema, error) { b, err := Asset("jsonschema-draft-04.json") if err != nil { return nil, err } schema := new(Schema) if err := json.Unmarshal(b, schema); err != nil { return nil, err } return schema, nil } // MustLoadSwagger20Schema panics when Swagger20Schema returns an error func MustLoadSwagger20Schema() *Schema { d, e := Swagger20Schema() if e != nil { panic(e) } return d } // Swagger20Schema loads the swagger 2.0 schema from the embedded assets func Swagger20Schema() (*Schema, error) { b, err := Asset("v2/schema.json") if err != nil { return nil, err } schema := new(Schema) if err := json.Unmarshal(b, schema); err != nil { return nil, err } return schema, nil } golang-github-go-openapi-spec-0.15.0/spec_test.go000066400000000000000000000133351332117131300216300ustar00rootroot00000000000000// Copyright 2015 go-swagger maintainers // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. // You may obtain a copy of the License at // // http://www.apache.org/licenses/LICENSE-2.0 // // Unless required by applicable law or agreed to in writing, software // distributed under the License is distributed on an "AS IS" BASIS, // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. // See the License for the specific language governing permissions and // limitations under the License. package spec_test import ( "encoding/json" "path/filepath" "regexp" "strings" "testing" "github.com/go-openapi/spec" "github.com/go-openapi/swag" "github.com/stretchr/testify/assert" ) // mimics what the go-openapi/load does var yamlLoader = swag.YAMLDoc func loadOrFail(t *testing.T, path string) *spec.Swagger { raw, erl := yamlLoader(path) if erl != nil { t.Logf("can't load fixture %s: %v", path, erl) t.FailNow() return nil } swspec := new(spec.Swagger) if err := json.Unmarshal(raw, swspec); err != nil { t.FailNow() return nil } return swspec } // Test unitary fixture for dev and bug fixing func Test_Issue1429(t *testing.T) { prevPathLoader := spec.PathLoader defer func() { spec.PathLoader = prevPathLoader }() spec.PathLoader = yamlLoader path := filepath.Join("fixtures", "bugs", "1429", "swagger.yaml") // load and full expand sp := loadOrFail(t, path) err := spec.ExpandSpec(sp, &spec.ExpandOptions{RelativeBase: path, SkipSchemas: false}) if !assert.NoError(t, err) { t.FailNow() return } //bbb, _ := json.MarshalIndent(sp, "", " ") //t.Log(string(bbb)) // assert well expanded if !assert.Truef(t, (sp.Paths != nil && sp.Paths.Paths != nil), "expected paths to be available in fixture") { t.FailNow() return } for _, pi := range sp.Paths.Paths { for _, param := range pi.Get.Parameters { if assert.NotNilf(t, param.Schema, "expected param schema not to be nil") { // all param fixtures are body param with schema // all $ref expanded assert.Equal(t, "", param.Schema.Ref.String()) } } for code, response := range pi.Get.Responses.StatusCodeResponses { // all response fixtures are with StatusCodeResponses, but 200 if code == 200 { assert.Nilf(t, response.Schema, "expected response schema to be nil") continue } if assert.NotNilf(t, response.Schema, "expected response schema not to be nil") { assert.Equal(t, "", response.Schema.Ref.String()) } } } for _, def := range sp.Definitions { assert.Equal(t, "", def.Ref.String()) } // reload and SkipSchemas: true sp = loadOrFail(t, path) err = spec.ExpandSpec(sp, &spec.ExpandOptions{RelativeBase: path, SkipSchemas: true}) if !assert.NoError(t, err) { t.FailNow() return } // assert well resolved if !assert.Truef(t, (sp.Paths != nil && sp.Paths.Paths != nil), "expected paths to be available in fixture") { t.FailNow() return } for _, pi := range sp.Paths.Paths { for _, param := range pi.Get.Parameters { if assert.NotNilf(t, param.Schema, "expected param schema not to be nil") { // all param fixtures are body param with schema if param.Name == "plainRequest" { // this one is expanded assert.Equal(t, "", param.Schema.Ref.String()) continue } if param.Name == "nestedBody" { // this one is local assert.True(t, strings.HasPrefix(param.Schema.Ref.String(), "#/definitions/")) continue } if param.Name == "remoteRequest" { assert.Contains(t, param.Schema.Ref.String(), "remote/remote.yaml#/") continue } assert.Contains(t, param.Schema.Ref.String(), "responses.yaml#/") } } for code, response := range pi.Get.Responses.StatusCodeResponses { // all response fixtures are with StatusCodeResponses, but 200 if code == 200 { assert.Nilf(t, response.Schema, "expected response schema to be nil") continue } if code == 204 { assert.Contains(t, response.Schema.Ref.String(), "remote/remote.yaml#/") continue } if code == 404 { assert.Equal(t, "", response.Schema.Ref.String()) continue } assert.Containsf(t, response.Schema.Ref.String(), "responses.yaml#/", "expected remote ref at resp. %d", code) } } for _, def := range sp.Definitions { assert.Contains(t, def.Ref.String(), "responses.yaml#/") } } func Test_MoreLocalExpansion(t *testing.T) { prevPathLoader := spec.PathLoader defer func() { spec.PathLoader = prevPathLoader }() spec.PathLoader = yamlLoader path := filepath.Join("fixtures", "local_expansion", "spec2.yaml") // load and full expand sp := loadOrFail(t, path) err := spec.ExpandSpec(sp, &spec.ExpandOptions{RelativeBase: path, SkipSchemas: false}) if !assert.NoError(t, err) { t.FailNow() return } // asserts all $ref expanded jazon, _ := json.MarshalIndent(sp, "", " ") assert.NotContains(t, jazon, `"$ref"`) //t.Log(string(jazon)) } func Test_Issue69(t *testing.T) { // this checks expansion for the dapperbox spec (circular ref issues) path := filepath.Join("fixtures", "bugs", "69", "dapperbox.json") // expand with relative path // load and expand sp := loadOrFail(t, path) err := spec.ExpandSpec(sp, &spec.ExpandOptions{RelativeBase: path, SkipSchemas: false}) if !assert.NoError(t, err) { t.FailNow() return } // asserts all $ref expanded jazon, _ := json.MarshalIndent(sp, "", " ") // assert all $ref maches "$ref": "#/definitions/something" rex := regexp.MustCompile(`"\$ref":\s*"(.+)"`) m := rex.FindAllStringSubmatch(string(jazon), -1) if assert.NotNil(t, m) { for _, matched := range m { subMatch := matched[1] assert.True(t, strings.HasPrefix(subMatch, "#/definitions/"), "expected $ref to be inlined, got: %s", matched[0]) } } } golang-github-go-openapi-spec-0.15.0/structs_test.go000066400000000000000000000074131332117131300224050ustar00rootroot00000000000000// Copyright 2015 go-swagger maintainers // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. // You may obtain a copy of the License at // // http://www.apache.org/licenses/LICENSE-2.0 // // Unless required by applicable law or agreed to in writing, software // distributed under the License is distributed on an "AS IS" BASIS, // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. // See the License for the specific language governing permissions and // limitations under the License. package spec import ( "encoding/json" "reflect" "testing" "github.com/stretchr/testify/assert" "gopkg.in/yaml.v2" ) func assertSerializeJSON(t testing.TB, actual interface{}, expected string) bool { ser, err := json.Marshal(actual) if err != nil { return assert.Fail(t, "unable to marshal to json (%s): %#v", err, actual) } return assert.Equal(t, string(ser), expected) } func assertParsesJSON(t testing.TB, actual string, expected interface{}) bool { tpe := reflect.TypeOf(expected) var pointed bool if tpe.Kind() == reflect.Ptr { tpe = tpe.Elem() pointed = true } parsed := reflect.New(tpe) err := json.Unmarshal([]byte(actual), parsed.Interface()) if err != nil { return assert.Fail(t, "unable to unmarshal from json (%s): %s", err, actual) } act := parsed.Interface() if !pointed { act = reflect.Indirect(parsed).Interface() } return assert.Equal(t, act, expected) } func assertSerializeYAML(t testing.TB, actual interface{}, expected string) bool { ser, err := yaml.Marshal(actual) if err != nil { return assert.Fail(t, "unable to marshal to yaml (%s): %#v", err, actual) } return assert.Equal(t, string(ser), expected) } func assertParsesYAML(t testing.TB, actual string, expected interface{}) bool { tpe := reflect.TypeOf(expected) var pointed bool if tpe.Kind() == reflect.Ptr { tpe = tpe.Elem() pointed = true } parsed := reflect.New(tpe) err := yaml.Unmarshal([]byte(actual), parsed.Interface()) if err != nil { return assert.Fail(t, "unable to unmarshal from yaml (%s): %s", err, actual) } act := parsed.Interface() if !pointed { act = reflect.Indirect(parsed).Interface() } return assert.EqualValues(t, act, expected) } func TestSerialization_SerializeJSON(t *testing.T) { assertSerializeJSON(t, []string{"hello"}, "[\"hello\"]") assertSerializeJSON(t, []string{"hello", "world", "and", "stuff"}, "[\"hello\",\"world\",\"and\",\"stuff\"]") assertSerializeJSON(t, StringOrArray(nil), "null") assertSerializeJSON(t, SchemaOrArray{ Schemas: []Schema{ {SchemaProps: SchemaProps{Type: []string{"string"}}}}, }, "[{\"type\":\"string\"}]") assertSerializeJSON(t, SchemaOrArray{ Schemas: []Schema{ {SchemaProps: SchemaProps{Type: []string{"string"}}}, {SchemaProps: SchemaProps{Type: []string{"string"}}}, }}, "[{\"type\":\"string\"},{\"type\":\"string\"}]") assertSerializeJSON(t, SchemaOrArray{}, "null") } func TestSerialization_DeserializeJSON(t *testing.T) { // String assertParsesJSON(t, "\"hello\"", StringOrArray([]string{"hello"})) assertParsesJSON(t, "[\"hello\",\"world\",\"and\",\"stuff\"]", StringOrArray([]string{"hello", "world", "and", "stuff"})) assertParsesJSON(t, "[\"hello\",\"world\",null,\"stuff\"]", StringOrArray([]string{"hello", "world", "", "stuff"})) assertParsesJSON(t, "null", StringOrArray(nil)) // Schema assertParsesJSON(t, "{\"type\":\"string\"}", SchemaOrArray{Schema: &Schema{ SchemaProps: SchemaProps{Type: []string{"string"}}}, }) assertParsesJSON(t, "[{\"type\":\"string\"},{\"type\":\"string\"}]", &SchemaOrArray{ Schemas: []Schema{ {SchemaProps: SchemaProps{Type: []string{"string"}}}, {SchemaProps: SchemaProps{Type: []string{"string"}}}, }, }) assertParsesJSON(t, "null", SchemaOrArray{}) } golang-github-go-openapi-spec-0.15.0/swagger.go000066400000000000000000000220751332117131300212770ustar00rootroot00000000000000// Copyright 2015 go-swagger maintainers // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. // You may obtain a copy of the License at // // http://www.apache.org/licenses/LICENSE-2.0 // // Unless required by applicable law or agreed to in writing, software // distributed under the License is distributed on an "AS IS" BASIS, // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. // See the License for the specific language governing permissions and // limitations under the License. package spec import ( "encoding/json" "fmt" "strconv" "github.com/go-openapi/jsonpointer" "github.com/go-openapi/swag" ) // Swagger this is the root document object for the API specification. // It combines what previously was the Resource Listing and API Declaration (version 1.2 and earlier) together into one document. // // For more information: http://goo.gl/8us55a#swagger-object- type Swagger struct { VendorExtensible SwaggerProps } // JSONLookup look up a value by the json property name func (s Swagger) JSONLookup(token string) (interface{}, error) { if ex, ok := s.Extensions[token]; ok { return &ex, nil } r, _, err := jsonpointer.GetForToken(s.SwaggerProps, token) return r, err } // MarshalJSON marshals this swagger structure to json func (s Swagger) MarshalJSON() ([]byte, error) { b1, err := json.Marshal(s.SwaggerProps) if err != nil { return nil, err } b2, err := json.Marshal(s.VendorExtensible) if err != nil { return nil, err } return swag.ConcatJSON(b1, b2), nil } // UnmarshalJSON unmarshals a swagger spec from json func (s *Swagger) UnmarshalJSON(data []byte) error { var sw Swagger if err := json.Unmarshal(data, &sw.SwaggerProps); err != nil { return err } if err := json.Unmarshal(data, &sw.VendorExtensible); err != nil { return err } *s = sw return nil } // SwaggerProps captures the top-level properties of an Api specification type SwaggerProps struct { ID string `json:"id,omitempty"` Consumes []string `json:"consumes,omitempty"` Produces []string `json:"produces,omitempty"` Schemes []string `json:"schemes,omitempty"` // the scheme, when present must be from [http, https, ws, wss] Swagger string `json:"swagger,omitempty"` Info *Info `json:"info,omitempty"` Host string `json:"host,omitempty"` BasePath string `json:"basePath,omitempty"` // must start with a leading "/" Paths *Paths `json:"paths"` // required Definitions Definitions `json:"definitions,omitempty"` Parameters map[string]Parameter `json:"parameters,omitempty"` Responses map[string]Response `json:"responses,omitempty"` SecurityDefinitions SecurityDefinitions `json:"securityDefinitions,omitempty"` Security []map[string][]string `json:"security,omitempty"` Tags []Tag `json:"tags,omitempty"` ExternalDocs *ExternalDocumentation `json:"externalDocs,omitempty"` } // Dependencies represent a dependencies property type Dependencies map[string]SchemaOrStringArray // SchemaOrBool represents a schema or boolean value, is biased towards true for the boolean property type SchemaOrBool struct { Allows bool Schema *Schema } // JSONLookup implements an interface to customize json pointer lookup func (s SchemaOrBool) JSONLookup(token string) (interface{}, error) { if token == "allows" { return s.Allows, nil } r, _, err := jsonpointer.GetForToken(s.Schema, token) return r, err } var jsTrue = []byte("true") var jsFalse = []byte("false") // MarshalJSON convert this object to JSON func (s SchemaOrBool) MarshalJSON() ([]byte, error) { if s.Schema != nil { return json.Marshal(s.Schema) } if s.Schema == nil && !s.Allows { return jsFalse, nil } return jsTrue, nil } // UnmarshalJSON converts this bool or schema object from a JSON structure func (s *SchemaOrBool) UnmarshalJSON(data []byte) error { var nw SchemaOrBool if len(data) >= 4 { if data[0] == '{' { var sch Schema if err := json.Unmarshal(data, &sch); err != nil { return err } nw.Schema = &sch } nw.Allows = !(data[0] == 'f' && data[1] == 'a' && data[2] == 'l' && data[3] == 's' && data[4] == 'e') } *s = nw return nil } // SchemaOrStringArray represents a schema or a string array type SchemaOrStringArray struct { Schema *Schema Property []string } // JSONLookup implements an interface to customize json pointer lookup func (s SchemaOrStringArray) JSONLookup(token string) (interface{}, error) { r, _, err := jsonpointer.GetForToken(s.Schema, token) return r, err } // MarshalJSON converts this schema object or array into JSON structure func (s SchemaOrStringArray) MarshalJSON() ([]byte, error) { if len(s.Property) > 0 { return json.Marshal(s.Property) } if s.Schema != nil { return json.Marshal(s.Schema) } return []byte("null"), nil } // UnmarshalJSON converts this schema object or array from a JSON structure func (s *SchemaOrStringArray) UnmarshalJSON(data []byte) error { var first byte if len(data) > 1 { first = data[0] } var nw SchemaOrStringArray if first == '{' { var sch Schema if err := json.Unmarshal(data, &sch); err != nil { return err } nw.Schema = &sch } if first == '[' { if err := json.Unmarshal(data, &nw.Property); err != nil { return err } } *s = nw return nil } // Definitions contains the models explicitly defined in this spec // An object to hold data types that can be consumed and produced by operations. // These data types can be primitives, arrays or models. // // For more information: http://goo.gl/8us55a#definitionsObject type Definitions map[string]Schema // SecurityDefinitions a declaration of the security schemes available to be used in the specification. // This does not enforce the security schemes on the operations and only serves to provide // the relevant details for each scheme. // // For more information: http://goo.gl/8us55a#securityDefinitionsObject type SecurityDefinitions map[string]*SecurityScheme // StringOrArray represents a value that can either be a string // or an array of strings. Mainly here for serialization purposes type StringOrArray []string // Contains returns true when the value is contained in the slice func (s StringOrArray) Contains(value string) bool { for _, str := range s { if str == value { return true } } return false } // JSONLookup implements an interface to customize json pointer lookup func (s SchemaOrArray) JSONLookup(token string) (interface{}, error) { if _, err := strconv.Atoi(token); err == nil { r, _, err := jsonpointer.GetForToken(s.Schemas, token) return r, err } r, _, err := jsonpointer.GetForToken(s.Schema, token) return r, err } // UnmarshalJSON unmarshals this string or array object from a JSON array or JSON string func (s *StringOrArray) UnmarshalJSON(data []byte) error { var first byte if len(data) > 1 { first = data[0] } if first == '[' { var parsed []string if err := json.Unmarshal(data, &parsed); err != nil { return err } *s = StringOrArray(parsed) return nil } var single interface{} if err := json.Unmarshal(data, &single); err != nil { return err } if single == nil { return nil } switch single.(type) { case string: *s = StringOrArray([]string{single.(string)}) return nil default: return fmt.Errorf("only string or array is allowed, not %T", single) } } // MarshalJSON converts this string or array to a JSON array or JSON string func (s StringOrArray) MarshalJSON() ([]byte, error) { if len(s) == 1 { return json.Marshal([]string(s)[0]) } return json.Marshal([]string(s)) } // SchemaOrArray represents a value that can either be a Schema // or an array of Schema. Mainly here for serialization purposes type SchemaOrArray struct { Schema *Schema Schemas []Schema } // Len returns the number of schemas in this property func (s SchemaOrArray) Len() int { if s.Schema != nil { return 1 } return len(s.Schemas) } // ContainsType returns true when one of the schemas is of the specified type func (s *SchemaOrArray) ContainsType(name string) bool { if s.Schema != nil { return s.Schema.Type != nil && s.Schema.Type.Contains(name) } return false } // MarshalJSON converts this schema object or array into JSON structure func (s SchemaOrArray) MarshalJSON() ([]byte, error) { if len(s.Schemas) > 0 { return json.Marshal(s.Schemas) } return json.Marshal(s.Schema) } // UnmarshalJSON converts this schema object or array from a JSON structure func (s *SchemaOrArray) UnmarshalJSON(data []byte) error { var nw SchemaOrArray var first byte if len(data) > 1 { first = data[0] } if first == '{' { var sch Schema if err := json.Unmarshal(data, &sch); err != nil { return err } nw.Schema = &sch } if first == '[' { if err := json.Unmarshal(data, &nw.Schemas); err != nil { return err } } *s = nw return nil } // vim:set ft=go noet sts=2 sw=2 ts=2: golang-github-go-openapi-spec-0.15.0/swagger_test.go000066400000000000000000000256211332117131300223360ustar00rootroot00000000000000// Copyright 2015 go-swagger maintainers // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. // You may obtain a copy of the License at // // http://www.apache.org/licenses/LICENSE-2.0 // // Unless required by applicable law or agreed to in writing, software // distributed under the License is distributed on an "AS IS" BASIS, // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. // See the License for the specific language governing permissions and // limitations under the License. package spec import ( "encoding/json" "testing" "github.com/stretchr/testify/require" "github.com/stretchr/testify/assert" ) var spec = Swagger{ SwaggerProps: SwaggerProps{ ID: "http://localhost:3849/api-docs", Swagger: "2.0", Consumes: []string{"application/json", "application/x-yaml"}, Produces: []string{"application/json"}, Schemes: []string{"http", "https"}, Info: &info, Host: "some.api.out.there", BasePath: "/", Paths: &paths, Definitions: map[string]Schema{"Category": {SchemaProps: SchemaProps{Type: []string{"string"}}}}, Parameters: map[string]Parameter{ "categoryParam": {ParamProps: ParamProps{Name: "category", In: "query"}, SimpleSchema: SimpleSchema{Type: "string"}}, }, Responses: map[string]Response{ "EmptyAnswer": { ResponseProps: ResponseProps{ Description: "no data to return for this operation", }, }, }, SecurityDefinitions: map[string]*SecurityScheme{ "internalApiKey": APIKeyAuth("api_key", "header"), }, Security: []map[string][]string{ {"internalApiKey": {}}, }, Tags: []Tag{NewTag("pets", "", nil)}, ExternalDocs: &ExternalDocumentation{"the name", "the url"}, }, VendorExtensible: VendorExtensible{map[string]interface{}{ "x-some-extension": "vendor", "x-schemes": []interface{}{"unix", "amqp"}, }}, } var specJSON = `{ "id": "http://localhost:3849/api-docs", "consumes": ["application/json", "application/x-yaml"], "produces": ["application/json"], "schemes": ["http", "https"], "swagger": "2.0", "info": { "contact": { "name": "wordnik api team", "url": "http://developer.wordnik.com" }, "description": "A sample API that uses a petstore as an example to demonstrate features in the swagger-2.0 specification", "license": { "name": "Creative Commons 4.0 International", "url": "http://creativecommons.org/licenses/by/4.0/" }, "termsOfService": "http://helloreverb.com/terms/", "title": "Swagger Sample API", "version": "1.0.9-abcd", "x-framework": "go-swagger" }, "host": "some.api.out.there", "basePath": "/", "paths": {"x-framework":"go-swagger","/":{"$ref":"cats"}}, "definitions": { "Category": { "type": "string"} }, "parameters": { "categoryParam": { "name": "category", "in": "query", "type": "string" } }, "responses": { "EmptyAnswer": { "description": "no data to return for this operation" } }, "securityDefinitions": { "internalApiKey": { "type": "apiKey", "in": "header", "name": "api_key" } }, "security": [{"internalApiKey":[]}], "tags": [{"name":"pets"}], "externalDocs": {"description":"the name","url":"the url"}, "x-some-extension": "vendor", "x-schemes": ["unix","amqp"] }` // // func verifySpecSerialize(specJSON []byte, spec Swagger) { // expected := map[string]interface{}{} // json.Unmarshal(specJSON, &expected) // b, err := json.MarshalIndent(spec, "", " ") // So(err, ShouldBeNil) // var actual map[string]interface{} // err = json.Unmarshal(b, &actual) // So(err, ShouldBeNil) // compareSpecMaps(actual, expected) // } /* // assertEquivalent is currently unused func assertEquivalent(t testing.TB, actual, expected interface{}) bool { if actual == nil || expected == nil || reflect.DeepEqual(actual, expected) { return true } actualType := reflect.TypeOf(actual) expectedType := reflect.TypeOf(expected) if reflect.TypeOf(actual).ConvertibleTo(expectedType) { expectedValue := reflect.ValueOf(expected) if swag.IsZero(expectedValue) && swag.IsZero(reflect.ValueOf(actual)) { return true } // Attempt comparison after type conversion if reflect.DeepEqual(actual, expectedValue.Convert(actualType).Interface()) { return true } } // Last ditch effort if fmt.Sprintf("%#v", expected) == fmt.Sprintf("%#v", actual) { return true } errFmt := "Expected: '%T(%#v)'\nActual: '%T(%#v)'\n(Should be equivalent)!" return assert.Fail(t, errFmt, expected, expected, actual, actual) } // ShouldBeEquivalentTo is currently unused func ShouldBeEquivalentTo(actual interface{}, expecteds ...interface{}) string { expected := expecteds[0] if actual == nil || expected == nil { return "" } if reflect.DeepEqual(expected, actual) { return "" } actualType := reflect.TypeOf(actual) expectedType := reflect.TypeOf(expected) if reflect.TypeOf(actual).ConvertibleTo(expectedType) { expectedValue := reflect.ValueOf(expected) if swag.IsZero(expectedValue) && swag.IsZero(reflect.ValueOf(actual)) { return "" } // Attempt comparison after type conversion if reflect.DeepEqual(actual, expectedValue.Convert(actualType).Interface()) { return "" } } // Last ditch effort if fmt.Sprintf("%#v", expected) == fmt.Sprintf("%#v", actual) { return "" } errFmt := "Expected: '%T(%#v)'\nActual: '%T(%#v)'\n(Should be equivalent)!" return fmt.Sprintf(errFmt, expected, expected, actual, actual) } // assertSpecMaps is currently unused func assertSpecMaps(t testing.TB, actual, expected map[string]interface{}) bool { res := true if id, ok := expected["id"]; ok { res = assert.Equal(t, id, actual["id"]) } res = res && assert.Equal(t, expected["consumes"], actual["consumes"]) res = res && assert.Equal(t, expected["produces"], actual["produces"]) res = res && assert.Equal(t, expected["schemes"], actual["schemes"]) res = res && assert.Equal(t, expected["swagger"], actual["swagger"]) res = res && assert.Equal(t, expected["info"], actual["info"]) res = res && assert.Equal(t, expected["host"], actual["host"]) res = res && assert.Equal(t, expected["basePath"], actual["basePath"]) res = res && assert.Equal(t, expected["paths"], actual["paths"]) res = res && assert.Equal(t, expected["definitions"], actual["definitions"]) res = res && assert.Equal(t, expected["responses"], actual["responses"]) res = res && assert.Equal(t, expected["securityDefinitions"], actual["securityDefinitions"]) res = res && assert.Equal(t, expected["tags"], actual["tags"]) res = res && assert.Equal(t, expected["externalDocs"], actual["externalDocs"]) res = res && assert.Equal(t, expected["x-some-extension"], actual["x-some-extension"]) res = res && assert.Equal(t, expected["x-schemes"], actual["x-schemes"]) return res } */ func assertSpecs(t testing.TB, actual, expected Swagger) bool { expected.Swagger = "2.0" return assert.Equal(t, actual, expected) } /* // assertSpecJSON is currently unused func assertSpecJSON(t testing.TB, specJSON []byte) bool { var expected map[string]interface{} if !assert.NoError(t, json.Unmarshal(specJSON, &expected)) { return false } obj := Swagger{} if !assert.NoError(t, json.Unmarshal(specJSON, &obj)) { return false } cb, err := json.MarshalIndent(obj, "", " ") if assert.NoError(t, err) { return false } var actual map[string]interface{} if !assert.NoError(t, json.Unmarshal(cb, &actual)) { return false } return assertSpecMaps(t, actual, expected) } */ func TestSwaggerSpec_Serialize(t *testing.T) { expected := make(map[string]interface{}) json.Unmarshal([]byte(specJSON), &expected) b, err := json.MarshalIndent(spec, "", " ") if assert.NoError(t, err) { var actual map[string]interface{} err := json.Unmarshal(b, &actual) if assert.NoError(t, err) { assert.EqualValues(t, actual, expected) } } } func TestSwaggerSpec_Deserialize(t *testing.T) { var actual Swagger err := json.Unmarshal([]byte(specJSON), &actual) if assert.NoError(t, err) { assert.EqualValues(t, actual, spec) } } func TestVendorExtensionStringSlice(t *testing.T) { var actual Swagger err := json.Unmarshal([]byte(specJSON), &actual) if assert.NoError(t, err) { schemes, ok := actual.Extensions.GetStringSlice("x-schemes") if assert.True(t, ok) { assert.EqualValues(t, []string{"unix", "amqp"}, schemes) } notSlice, ok := actual.Extensions.GetStringSlice("x-some-extension") assert.Nil(t, notSlice) assert.False(t, ok) actual.AddExtension("x-another-ext", 100) notString, ok := actual.Extensions.GetStringSlice("x-another-ext") assert.Nil(t, notString) assert.False(t, ok) actual.AddExtension("x-another-slice-ext", []interface{}{100, 100}) notStringSlice, ok := actual.Extensions.GetStringSlice("x-another-slice-ext") assert.Nil(t, notStringSlice) assert.False(t, ok) _, ok = actual.Extensions.GetStringSlice("x-notfound-ext") assert.False(t, ok) } } func TestOptionalSwaggerProps_Serialize(t *testing.T) { minimalJSONSpec := []byte(`{ "swagger": "2.0", "info": { "version": "0.0.0", "title": "Simple API" }, "paths": { "/": { "get": { "responses": { "200": { "description": "OK" } } } } } }`) var minimalSpec Swagger err := json.Unmarshal(minimalJSONSpec, &minimalSpec) if assert.NoError(t, err) { bytes, err := json.Marshal(&minimalSpec) if assert.NoError(t, err) { var ms map[string]interface{} if err := json.Unmarshal(bytes, &ms); assert.NoError(t, err) { assert.NotContains(t, ms, "consumes") assert.NotContains(t, ms, "produces") assert.NotContains(t, ms, "schemes") assert.NotContains(t, ms, "host") assert.NotContains(t, ms, "basePath") assert.NotContains(t, ms, "definitions") assert.NotContains(t, ms, "parameters") assert.NotContains(t, ms, "responses") assert.NotContains(t, ms, "securityDefinitions") assert.NotContains(t, ms, "security") assert.NotContains(t, ms, "tags") assert.NotContains(t, ms, "externalDocs") } } } } func TestSecurityRequirements(t *testing.T) { minimalJSONSpec := []byte(`{ "swagger": "2.0", "info": { "version": "0.0.0", "title": "Simple API" }, "securityDefinitions": { "basic": { "type": "basic" }, "apiKey": { "type": "apiKey", "in": "header", "name": "X-API-KEY" }, "queryKey": { "type": "apiKey", "in": "query", "name": "api_key" } }, "paths": { "/": { "get": { "security": [ { "apiKey": [], "basic": [] }, {}, { "queryKey": [], "basic": [] } ], "responses": { "200": { "description": "OK" } } } } } }`) var minimalSpec Swagger err := json.Unmarshal(minimalJSONSpec, &minimalSpec) if assert.NoError(t, err) { sec := minimalSpec.Paths.Paths["/"].Get.Security require.Len(t, sec, 3) assert.Contains(t, sec[0], "basic") assert.Contains(t, sec[0], "apiKey") assert.NotNil(t, sec[1]) assert.Empty(t, sec[1]) assert.Contains(t, sec[2], "queryKey") } } golang-github-go-openapi-spec-0.15.0/tag.go000066400000000000000000000043151332117131300204100ustar00rootroot00000000000000// Copyright 2015 go-swagger maintainers // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. // You may obtain a copy of the License at // // http://www.apache.org/licenses/LICENSE-2.0 // // Unless required by applicable law or agreed to in writing, software // distributed under the License is distributed on an "AS IS" BASIS, // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. // See the License for the specific language governing permissions and // limitations under the License. package spec import ( "encoding/json" "github.com/go-openapi/jsonpointer" "github.com/go-openapi/swag" ) // TagProps describe a tag entry in the top level tags section of a swagger spec type TagProps struct { Description string `json:"description,omitempty"` Name string `json:"name,omitempty"` ExternalDocs *ExternalDocumentation `json:"externalDocs,omitempty"` } // NewTag creates a new tag func NewTag(name, description string, externalDocs *ExternalDocumentation) Tag { return Tag{TagProps: TagProps{description, name, externalDocs}} } // Tag allows adding meta data to a single tag that is used by the [Operation Object](http://goo.gl/8us55a#operationObject). // It is not mandatory to have a Tag Object per tag used there. // // For more information: http://goo.gl/8us55a#tagObject type Tag struct { VendorExtensible TagProps } // JSONLookup implements an interface to customize json pointer lookup func (t Tag) JSONLookup(token string) (interface{}, error) { if ex, ok := t.Extensions[token]; ok { return &ex, nil } r, _, err := jsonpointer.GetForToken(t.TagProps, token) return r, err } // MarshalJSON marshal this to JSON func (t Tag) MarshalJSON() ([]byte, error) { b1, err := json.Marshal(t.TagProps) if err != nil { return nil, err } b2, err := json.Marshal(t.VendorExtensible) if err != nil { return nil, err } return swag.ConcatJSON(b1, b2), nil } // UnmarshalJSON marshal this from JSON func (t *Tag) UnmarshalJSON(data []byte) error { if err := json.Unmarshal(data, &t.TagProps); err != nil { return err } return json.Unmarshal(data, &t.VendorExtensible) } golang-github-go-openapi-spec-0.15.0/xml_object.go000066400000000000000000000036661332117131300217730ustar00rootroot00000000000000// Copyright 2015 go-swagger maintainers // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. // You may obtain a copy of the License at // // http://www.apache.org/licenses/LICENSE-2.0 // // Unless required by applicable law or agreed to in writing, software // distributed under the License is distributed on an "AS IS" BASIS, // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. // See the License for the specific language governing permissions and // limitations under the License. package spec // XMLObject a metadata object that allows for more fine-tuned XML model definitions. // // For more information: http://goo.gl/8us55a#xmlObject type XMLObject struct { Name string `json:"name,omitempty"` Namespace string `json:"namespace,omitempty"` Prefix string `json:"prefix,omitempty"` Attribute bool `json:"attribute,omitempty"` Wrapped bool `json:"wrapped,omitempty"` } // WithName sets the xml name for the object func (x *XMLObject) WithName(name string) *XMLObject { x.Name = name return x } // WithNamespace sets the xml namespace for the object func (x *XMLObject) WithNamespace(namespace string) *XMLObject { x.Namespace = namespace return x } // WithPrefix sets the xml prefix for the object func (x *XMLObject) WithPrefix(prefix string) *XMLObject { x.Prefix = prefix return x } // AsAttribute flags this object as xml attribute func (x *XMLObject) AsAttribute() *XMLObject { x.Attribute = true return x } // AsElement flags this object as an xml node func (x *XMLObject) AsElement() *XMLObject { x.Attribute = false return x } // AsWrapped flags this object as wrapped, this is mostly useful for array types func (x *XMLObject) AsWrapped() *XMLObject { x.Wrapped = true return x } // AsUnwrapped flags this object as an xml node func (x *XMLObject) AsUnwrapped() *XMLObject { x.Wrapped = false return x } golang-github-go-openapi-spec-0.15.0/xml_object_test.go000066400000000000000000000035731332117131300230270ustar00rootroot00000000000000// Copyright 2015 go-swagger maintainers // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. // You may obtain a copy of the License at // // http://www.apache.org/licenses/LICENSE-2.0 // // Unless required by applicable law or agreed to in writing, software // distributed under the License is distributed on an "AS IS" BASIS, // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. // See the License for the specific language governing permissions and // limitations under the License. package spec import ( "encoding/json" "testing" "github.com/stretchr/testify/assert" ) func TestXmlObject_Serialize(t *testing.T) { obj1 := XMLObject{} actual, err := json.Marshal(obj1) if assert.NoError(t, err) { assert.Equal(t, "{}", string(actual)) } obj2 := XMLObject{ Name: "the name", Namespace: "the namespace", Prefix: "the prefix", Attribute: true, Wrapped: true, } actual, err = json.Marshal(obj2) if assert.NoError(t, err) { var ad map[string]interface{} if assert.NoError(t, json.Unmarshal(actual, &ad)) { assert.Equal(t, obj2.Name, ad["name"]) assert.Equal(t, obj2.Namespace, ad["namespace"]) assert.Equal(t, obj2.Prefix, ad["prefix"]) assert.True(t, ad["attribute"].(bool)) assert.True(t, ad["wrapped"].(bool)) } } } func TestXmlObject_Deserialize(t *testing.T) { expected := XMLObject{} actual := XMLObject{} if assert.NoError(t, json.Unmarshal([]byte("{}"), &actual)) { assert.Equal(t, expected, actual) } completed := `{"name":"the name","namespace":"the namespace","prefix":"the prefix","attribute":true,"wrapped":true}` expected = XMLObject{"the name", "the namespace", "the prefix", true, true} actual = XMLObject{} if assert.NoError(t, json.Unmarshal([]byte(completed), &actual)) { assert.Equal(t, expected, actual) } }