| .. | |
| .. | |
| .. 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. | |
| .. | |
| .. _to-api-v3-users: | |
| ********* | |
| ``users`` | |
| ********* | |
| ``GET`` | |
| ======= | |
| Retrieves all requested users. | |
| :Auth. Required: Yes | |
| :Roles Required: None\ [1]_ | |
| :Response Type: Array | |
| Request Structure | |
| ----------------- | |
| .. table:: Request Query Parameters | |
| +-----------+----------+------------------------------------------------------------------------------------------+ | |
| | Name | Required | Description | | |
| +===========+==========+==========================================================================================+ | |
| | id | no | Return only the user identified by this integral, unique identifier | | |
| +-----------+----------+------------------------------------------------------------------------------------------+ | |
| | tenant | no | Return only users belonging to the :term:`Tenant` identified by tenant name | | |
| +-----------+----------+------------------------------------------------------------------------------------------+ | |
| | role | no | Return only users belonging to the :term:`Role` identified by role name | | |
| +-----------+----------+------------------------------------------------------------------------------------------+ | |
| | username | no | Return only the user with this username | | |
| +-----------+----------+------------------------------------------------------------------------------------------+ | |
| | orderby | no | Choose the ordering of the results - must be the name of one of the fields of the | | |
| | | | objects in the ``response`` array | | |
| +-----------+----------+------------------------------------------------------------------------------------------+ | |
| | sortOrder | no | Changes the order of sorting. Either ascending (default or "asc") or descending ("desc") | | |
| +-----------+----------+------------------------------------------------------------------------------------------+ | |
| | limit | no | Choose the maximum number of results to return | | |
| +-----------+----------+------------------------------------------------------------------------------------------+ | |
| | offset | no | The number of results to skip before beginning to return results. Must use in | | |
| | | | conjunction with limit | | |
| +-----------+----------+------------------------------------------------------------------------------------------+ | |
| | page | no | Return the n\ :sup:`th` page of results, where "n" is the value of this parameter, pages | | |
| | | | are ``limit`` long and the first page is 1. If ``offset`` was defined, this query | | |
| | | | parameter has no effect. ``limit`` must be defined to make use of ``page``. | | |
| +-----------+----------+------------------------------------------------------------------------------------------+ | |
| .. code-block:: http | |
| :caption: Request Example | |
| GET /api/3.0/users?username=admin HTTP/1.1 | |
| Host: trafficops.infra.ciab.test | |
| User-Agent: curl/7.47.0 | |
| Accept: */* | |
| Cookie: mojolicious=... | |
| Response Structure | |
| ------------------ | |
| :addressLine1: The user's address - including street name and number | |
| :addressLine2: An additional address field for e.g. apartment number | |
| :city: The name of the city wherein the user resides | |
| :company: The name of the company for which the user works | |
| :country: The name of the country wherein the user resides | |
| :email: The user's email address | |
| :fullName: The user's full name, e.g. "John Quincy Adams" | |
| :gid: A deprecated field only kept for legacy compatibility reasons that used to contain the UNIX group ID of the user - now it is always ``null`` | |
| :id: An integral, unique identifier for this user | |
| :lastUpdated: The date and time at which the user was last modified, in :ref:`non-rfc-datetime` | |
| :newUser: A meta field with no apparent purpose that is usually ``null`` unless explicitly set during creation or modification of a user via some API endpoint | |
| :phoneNumber: The user's phone number | |
| :postalCode: The postal code of the area in which the user resides | |
| :publicSshKey: The user's public key used for the SSH protocol | |
| :registrationSent: If the user was created using the :ref:`to-api-v3-users-register` endpoint, this will be the date and time at which the registration email was sent - otherwise it will be ``null`` | |
| :role: The integral, unique identifier of the highest-privilege role assigned to this user | |
| :rolename: The name of the highest-privilege role assigned to this user | |
| :stateOrProvince: The name of the state or province where this user resides | |
| :tenant: The name of the tenant to which this user belongs | |
| :tenantId: The integral, unique identifier of the tenant to which this user belongs | |
| :uid: A deprecated field only kept for legacy compatibility reasons that used to contain the UNIX user ID of the user - now it is always ``null`` | |
| :username: The user's username | |
| .. code-block:: http | |
| :caption: Response Example | |
| HTTP/1.1 200 OK | |
| Access-Control-Allow-Credentials: true | |
| Access-Control-Allow-Headers: Origin, X-Requested-With, Content-Type, Accept, Set-Cookie, Cookie | |
| Access-Control-Allow-Methods: POST,GET,OPTIONS,PUT,DELETE | |
| Access-Control-Allow-Origin: * | |
| Content-Type: application/json | |
| Set-Cookie: mojolicious=...; Path=/; Expires=Mon, 18 Nov 2019 17:40:54 GMT; Max-Age=3600; HttpOnly | |
| Whole-Content-Sha512: YBJLN8NbOxOvECe1RGtcwCzIPDhyhLpW56nTJHQM5WI2WUDe2mAKREpaEE72nzrfBliq1GABwJlsxq2OdhcFkw== | |
| X-Server-Name: traffic_ops_golang/ | |
| Date: Thu, 13 Dec 2018 01:03:53 GMT | |
| Content-Length: 391 | |
| { "response": [ | |
| { | |
| "username": "admin", | |
| "registrationSent": null, | |
| "addressLine1": null, | |
| "addressLine2": null, | |
| "city": null, | |
| "company": null, | |
| "country": null, | |
| "email": null, | |
| "fullName": null, | |
| "gid": null, | |
| "id": 2, | |
| "newUser": false, | |
| "phoneNumber": null, | |
| "postalCode": null, | |
| "publicSshKey": null, | |
| "role": 1, | |
| "rolename": "admin", | |
| "stateOrProvince": null, | |
| "tenant": "root", | |
| "tenantId": 1, | |
| "uid": null, | |
| "lastUpdated": "2018-12-12 16:26:32+00" | |
| } | |
| ]} | |
| .. [1] While no roles are required, this endpoint does respect tenancy. A user will only be able to see, create, delete or modify other users belonging to the same tenant, or its descendants. | |
| ``POST`` | |
| ======== | |
| Creates a new user. | |
| :Auth. Required: Yes | |
| :Roles Required: "admin" or "operations"\ [1]_ | |
| :Response Type: Object | |
| Request Structure | |
| ----------------- | |
| :addressLine1: An optional field which should contain the user's address - including street name and number | |
| :addressLine2: An optional field which should contain an additional address field for e.g. apartment number | |
| :city: An optional field which should contain the name of the city wherein the user resides | |
| :company: An optional field which should contain the name of the company for which the user works | |
| :confirmLocalPasswd: The 'confirm' field in a new user's password specification - must match ``localPasswd`` | |
| :country: An optional field which should contain the name of the country wherein the user resides | |
| :email: The user's email address The given email is validated (circuitously) by `GitHub user asaskevich's regular expression <https://github.com/asaskevich/govalidator/blob/9a090521c4893a35ca9a228628abf8ba93f63108/patterns.go#L7>`_ . Note that it can't actually distinguish a valid, deliverable, email address but merely ensure the email is in a commonly-found format. | |
| :fullName: The user's full name, e.g. "John Quincy Adams" | |
| :localPasswd: The user's password | |
| :newUser: An optional meta field with no apparent purpose - don't use this | |
| :phoneNumber: An optional field which should contain the user's phone number | |
| :postalCode: An optional field which should contain the user's postal code | |
| :publicSshKey: An optional field which should contain the user's public encryption key used for the SSH protocol | |
| :role: The number that corresponds to the highest permission role which will be permitted to the user | |
| :stateOrProvince: An optional field which should contain the name of the state or province in which the user resides | |
| :tenantId: The integral, unique identifier of the tenant to which the new user shall belong | |
| .. note:: This field is optional if and only if tenancy is not enabled in Traffic Control | |
| :username: The new user's username | |
| .. code-block:: http | |
| :caption: Request Example | |
| POST /api/3.0/users HTTP/1.1 | |
| Host: trafficops.infra.ciab.test | |
| User-Agent: curl/7.47.0 | |
| Accept: */* | |
| Cookie: mojolicious=... | |
| Content-Length: 304 | |
| Content-Type: application/json | |
| { | |
| "username": "mike", | |
| "addressLine1": "22 Mike Wazowski You've Got Your Life Back Lane", | |
| "city": "Monstropolis", | |
| "compary": "Monsters Inc.", | |
| "email": "mwazowski@minc.biz", | |
| "fullName": "Mike Wazowski", | |
| "localPasswd": "BFFsully", | |
| "confirmLocalPasswd": "BFFsully", | |
| "newUser": true, | |
| "role": 1, | |
| "tenantId": 1 | |
| } | |
| Response Structure | |
| ------------------ | |
| :addressLine1: The user's address - including street name and number | |
| :addressLine2: An additional address field for e.g. apartment number | |
| :city: The name of the city wherein the user resides | |
| :company: The name of the company for which the user works | |
| :country: The name of the country wherein the user resides | |
| :email: The user's email address | |
| :fullName: The user's full name, e.g. "John Quincy Adams" | |
| :gid: A deprecated field only kept for legacy compatibility reasons that used to contain the UNIX group ID of the user - now it is always ``null`` | |
| :id: An integral, unique identifier for this user | |
| :lastUpdated: The date and time at which the user was last modified, in :ref:`non-rfc-datetime` | |
| :newUser: A meta field with no apparent purpose that is usually ``null`` unless explicitly set during creation or modification of a user via some API endpoint | |
| :phoneNumber: The user's phone number | |
| :postalCode: The postal code of the area in which the user resides | |
| :publicSshKey: The user's public key used for the SSH protocol | |
| :registrationSent: If the user was created using the :ref:`to-api-v3-users-register` endpoint, this will be the date and time at which the registration email was sent - otherwise it will be ``null`` | |
| :role: The integral, unique identifier of the highest-privilege role assigned to this user | |
| :rolename: The name of the highest-privilege role assigned to this user | |
| :stateOrProvince: The name of the state or province where this user resides | |
| :tenant: The name of the tenant to which this user belongs | |
| :tenantId: The integral, unique identifier of the tenant to which this user belongs | |
| :uid: A deprecated field only kept for legacy compatibility reasons that used to contain the UNIX user ID of the user - now it is always ``null`` | |
| :username: The user's username | |
| .. code-block:: http | |
| :caption: Response Example | |
| HTTP/1.1 200 OK | |
| Access-Control-Allow-Credentials: true | |
| Access-Control-Allow-Headers: Origin, X-Requested-With, Content-Type, Accept | |
| Access-Control-Allow-Methods: POST,GET,OPTIONS,PUT,DELETE | |
| Access-Control-Allow-Origin: * | |
| Cache-Control: no-cache, no-store, max-age=0, must-revalidate | |
| Content-Type: application/json | |
| Date: Thu, 13 Dec 2018 02:28:27 GMT | |
| X-Server-Name: traffic_ops_golang/ | |
| Set-Cookie: mojolicious=...; Path=/; Expires=Mon, 18 Nov 2019 17:40:54 GMT; Max-Age=3600; HttpOnly | |
| Vary: Accept-Encoding | |
| Whole-Content-Sha512: vDqbaMvgeeoIds1czqvIWlyDG8WLnCCJdF14Ub05nsE+oJOakkyeZ8odf4d0Zjtqpk01hoVo14H2tjuWPdqwgw== | |
| Content-Length: 520 | |
| { "alerts": [ | |
| { | |
| "level": "success", | |
| "text": "User creation was successful." | |
| } | |
| ], | |
| "response": { | |
| "registrationSent": null, | |
| "email": "mwazowski@minc.biz", | |
| "tenantId": 1, | |
| "city": "Monstropolis", | |
| "tenant": "root", | |
| "id": 8, | |
| "company": null, | |
| "rolename": "admin", | |
| "phoneNumber": null, | |
| "country": null, | |
| "fullName": "Mike Wazowski", | |
| "publicSshKey": null, | |
| "uid": null, | |
| "stateOrProvince": null, | |
| "lastUpdated": null, | |
| "username": "mike", | |
| "newUser": false, | |
| "addressLine2": null, | |
| "role": 1, | |
| "addressLine1": "22 Mike Wazowski You've Got Your Life Back Lane", | |
| "postalCode": null, | |
| "gid": null | |
| }} |