{"files":{"SKILL.md":"---\nname: docker-hub-api\ndescription: \"Docker HUB API skill. Use when working with Docker HUB for users, auth, access-tokens. Covers 54 endpoints.\"\nversion: 1.0.0\ngenerator: lapsh\n---\n\n# Docker HUB API\nAPI version: 2-beta\n\n## Auth\nBearer bearer | Bearer bearer\n\n## Base URL\nhttps://hub.docker.com\n\n## Setup\n1. Set Authorization header with Bearer token\n2. GET /v2/access-tokens -- list personal access tokens\n3. POST /v2/users/login -- create first login\n\n## Endpoints\n54 endpoints across 9 groups. See references/api-spec.lap for full details.\n\n### Users\n| Method | Path | Description |\n|--------|------|-------------|\n| POST | /v2/users/login | Create an authentication token |\n| POST | /v2/users/2fa-login | Second factor authentication |\n\n### Auth\n| Method | Path | Description |\n|--------|------|-------------|\n| POST | /v2/auth/token | Create access token |\n\n### Access-tokens\n| Method | Path | Description |\n|--------|------|-------------|\n| POST | /v2/access-tokens | Create personal access token |\n| GET | /v2/access-tokens | List personal access tokens |\n| PATCH | /v2/access-tokens/{uuid} | Update personal access token |\n| GET | /v2/access-tokens/{uuid} | Get personal access token |\n| DELETE | /v2/access-tokens/{uuid} | Delete personal access token |\n\n### Auditlogs\n| Method | Path | Description |\n|--------|------|-------------|\n| GET | /v2/auditlogs/{account}/actions | List audit log actions |\n| GET | /v2/auditlogs/{account} | List audit log events |\n\n### Orgs\n| Method | Path | Description |\n|--------|------|-------------|\n| GET | /v2/orgs/{name}/settings | Get organization settings |\n| PUT | /v2/orgs/{name}/settings | Update organization settings |\n| POST | /v2/orgs/{name}/access-tokens | Create access token |\n| GET | /v2/orgs/{name}/access-tokens | List access tokens |\n| GET | /v2/orgs/{org_name}/access-tokens/{access_token_id} | Get access token |\n| PATCH | /v2/orgs/{org_name}/access-tokens/{access_token_id} | Update access token |\n| DELETE | /v2/orgs/{org_name}/access-tokens/{access_token_id} | Delete access token |\n| GET | /v2/orgs/{org_name}/members | List org members |\n| GET | /v2/orgs/{org_name}/members/export | Export org members CSV |\n| PUT | /v2/orgs/{org_name}/members/{username} | Update org member (role) |\n| DELETE | /v2/orgs/{org_name}/members/{username} | Remove member from org |\n| GET | /v2/orgs/{org_name}/invites | List org invites |\n| GET | /v2/orgs/{org_name}/groups | Get groups of an organization |\n| POST | /v2/orgs/{org_name}/groups | Create a new group |\n| GET | /v2/orgs/{org_name}/groups/{group_name} | Get a group of an organization |\n| PUT | /v2/orgs/{org_name}/groups/{group_name} | Update the details for an organization group |\n| PATCH | /v2/orgs/{org_name}/groups/{group_name} | Update some details for an organization group |\n| DELETE | /v2/orgs/{org_name}/groups/{group_name} | Delete an organization group |\n| GET | /v2/orgs/{org_name}/groups/{group_name}/members | List members of a group |\n| POST | /v2/orgs/{org_name}/groups/{group_name}/members | Add a member to a group |\n| DELETE | /v2/orgs/{org_name}/groups/{group_name}/members/{username} | Remove a user from a group |\n\n### Namespaces\n| Method | Path | Description |\n|--------|------|-------------|\n| GET | /v2/namespaces/{namespace}/repositories/{repository}/tags | List repository tags |\n| HEAD | /v2/namespaces/{namespace}/repositories/{repository}/tags | Check repository tags |\n| GET | /v2/namespaces/{namespace}/repositories/{repository}/tags/{tag} | Read repository tag |\n| HEAD | /v2/namespaces/{namespace}/repositories/{repository}/tags/{tag} | Check repository tag |\n| PATCH | /v2/namespaces/{namespace}/repositories/{repository}/immutabletags | Update repository immutable tags |\n| POST | /v2/namespaces/{namespace}/repositories/{repository}/immutabletags/verify | Verify repository immutable tags |\n| GET | /v2/namespaces/{namespace}/repositories | List repositories in a namespace |\n| POST | /v2/namespaces/{namespace}/repositories | Create a new repository |\n| GET | /v2/namespaces/{namespace}/repositories/{repository} | Get repository in a namespace |\n| HEAD | /v2/namespaces/{namespace}/repositories/{repository} | Check repository in a namespace |\n\n### Repositories\n| Method | Path | Description |\n|--------|------|-------------|\n| POST | /v2/repositories/{namespace}/{repository}/groups | Assign a group (Team) to a repository for access |\n\n### Invites\n| Method | Path | Description |\n|--------|------|-------------|\n| DELETE | /v2/invites/{id} | Cancel an invite |\n| PATCH | /v2/invites/{id}/resend | Resend an invite |\n| POST | /v2/invites/bulk | Bulk create invites |\n\n### Scim\n| Method | Path | Description |\n|--------|------|-------------|\n| GET | /v2/scim/2.0/ServiceProviderConfig | Get service provider config |\n| GET | /v2/scim/2.0/ResourceTypes | List resource types |\n| GET | /v2/scim/2.0/ResourceTypes/{name} | Get a resource type |\n| GET | /v2/scim/2.0/Schemas | List schemas |\n| GET | /v2/scim/2.0/Schemas/{id} | Get a schema |\n| GET | /v2/scim/2.0/Users | List users |\n| POST | /v2/scim/2.0/Users | Create user |\n| GET | /v2/scim/2.0/Users/{id} | Get a user |\n| PUT | /v2/scim/2.0/Users/{id} | Update a user |\n\n## Common Questions\nMatch user requests to endpoints in references/api-spec.lap. Key patterns:\n- \"Create a login?\" -> POST /v2/users/login\n- \"Create a 2fa-login?\" -> POST /v2/users/2fa-login\n- \"Create a token?\" -> POST /v2/auth/token\n- \"Create a access-token?\" -> POST /v2/access-tokens\n- \"List all access-tokens?\" -> GET /v2/access-tokens\n- \"Partially update a access-token?\" -> PATCH /v2/access-tokens/{uuid}\n- \"Get access-token details?\" -> GET /v2/access-tokens/{uuid}\n- \"Delete a access-token?\" -> DELETE /v2/access-tokens/{uuid}\n- \"List all actions?\" -> GET /v2/auditlogs/{account}/actions\n- \"Get auditlog details?\" -> GET /v2/auditlogs/{account}\n- \"List all settings?\" -> GET /v2/orgs/{name}/settings\n- \"List all tags?\" -> GET /v2/namespaces/{namespace}/repositories/{repository}/tags\n- \"Get tag details?\" -> GET /v2/namespaces/{namespace}/repositories/{repository}/tags/{tag}\n- \"Create a verify?\" -> POST /v2/namespaces/{namespace}/repositories/{repository}/immutabletags/verify\n- \"Create a group?\" -> POST /v2/repositories/{namespace}/{repository}/groups\n- \"List all repositories?\" -> GET /v2/namespaces/{namespace}/repositories\n- \"Create a repository?\" -> POST /v2/namespaces/{namespace}/repositories\n- \"Get repository details?\" -> GET /v2/namespaces/{namespace}/repositories/{repository}\n- \"List all members?\" -> GET /v2/orgs/{org_name}/members\n- \"List all export?\" -> GET /v2/orgs/{org_name}/members/export\n- \"Update a member?\" -> PUT /v2/orgs/{org_name}/members/{username}\n- \"Delete a member?\" -> DELETE /v2/orgs/{org_name}/members/{username}\n- \"List all invites?\" -> GET /v2/orgs/{org_name}/invites\n- \"Search groups?\" -> GET /v2/orgs/{org_name}/groups\n- \"Get group details?\" -> GET /v2/orgs/{org_name}/groups/{group_name}\n- \"Update a group?\" -> PUT /v2/orgs/{org_name}/groups/{group_name}\n- \"Partially update a group?\" -> PATCH /v2/orgs/{org_name}/groups/{group_name}\n- \"Delete a group?\" -> DELETE /v2/orgs/{org_name}/groups/{group_name}\n- \"Search members?\" -> GET /v2/orgs/{org_name}/groups/{group_name}/members\n- \"Create a member?\" -> POST /v2/orgs/{org_name}/groups/{group_name}/members\n- \"Delete a invite?\" -> DELETE /v2/invites/{id}\n- \"Create a bulk?\" -> POST /v2/invites/bulk\n- \"List all ServiceProviderConfig?\" -> GET /v2/scim/2.0/ServiceProviderConfig\n- \"List all ResourceTypes?\" -> GET /v2/scim/2.0/ResourceTypes\n- \"Get ResourceType details?\" -> GET /v2/scim/2.0/ResourceTypes/{name}\n- \"List all Schemas?\" -> GET /v2/scim/2.0/Schemas\n- \"Get Schema details?\" -> GET /v2/scim/2.0/Schemas/{id}\n- \"List all Users?\" -> GET /v2/scim/2.0/Users\n- \"Create a User?\" -> POST /v2/scim/2.0/Users\n- \"Get User details?\" -> GET /v2/scim/2.0/Users/{id}\n- \"Update a User?\" -> PUT /v2/scim/2.0/Users/{id}\n- \"How to authenticate?\" -> See Auth section above\n\n## Response Tips\n- Check response schemas in references/api-spec.lap for field details\n- Paginated endpoints accept limit/offset or cursor parameters\n- Create/update endpoints return the modified resource on success\n- Error responses include status codes and descriptions in the spec\n\n## References\n- Full spec: See references/api-spec.lap for complete endpoint details, parameter tables, and response schemas\n\n> Generated from the official API spec by [LAP](https://lap.sh)\n","references/api-spec.lap":"@lap v0.3\n# Machine-readable API spec. Each @endpoint block is one API call.\n@api Docker HUB API\n@base https://hub.docker.com\n@version 2-beta\n@auth Bearer bearer | Bearer bearer\n@endpoints 54\n@hint download_for_search\n@toc users(2), auth(1), access-tokens(5), auditlogs(2), orgs(21), namespaces(10), repositories(1), invites(3), scim(9)\n\n@group users\n@endpoint POST /v2/users/login\n@desc Create an authentication token\n@required {username: str # The username of the Docker Hub account to authenticate with., password: str # The password or personal access token (PAT) of the Docker Hub account to authenticate with.}\n@returns(200) {token: str} # Authentication successful\n@errors {401: Authentication failed or second factor required}\n\n@endpoint POST /v2/users/2fa-login\n@desc Second factor authentication\n@required {login_2fa_token: str # The intermediate 2FA token returned from `/v2/users/login` API., code: str # The Time-based One-Time Password of the Docker Hub account to authenticate with.}\n@returns(200) {token: str} # Authentication successful\n@errors {401: Authentication failed}\n\n@endgroup\n\n@group auth\n@endpoint POST /v2/auth/token\n@desc Create access token\n@required {identifier: str # The identifier of the account to create an access token for. If using a password or personal access token, this must be a username. If using an organization access token, this must be an organization name., secret: str # The secret of the account to create an access token for. This can be a password, personal access token, or organization access token.}\n@returns(200) {access_token: str} # Token created\n@errors {401: Unauthorized}\n\n@endgroup\n\n@group access-tokens\n@endpoint POST /v2/access-tokens\n@desc Create personal access token\n@required {token_label: str # Friendly name for you to identify the token., scopes: [str] # Valid scopes: \"repo:admin\", \"repo:write\", \"repo:read\", \"repo:public_read\"}\n@optional {expires_at: str(date-time) # Optional expiration date for the token. If omitted, the token will remain valid indefinitely.}\n@returns(201) {uuid: str, client_id: str, creator_ip: str, creator_ua: str, created_at: str, last_used: str?, generated_by: str, is_active: bool, token: str, token_label: str, scopes: [str], expires_at: str(date-time)} # Created\n@errors {400: Bad Request, 401: Unauthorized}\n\n@endpoint GET /v2/access-tokens\n@desc List personal access tokens\n@optional {page: num=1, page_size: num=10}\n@returns(200) {count: num, next: str, previous: str, active_count: num, results: [any]} # OK\n@errors {400: Bad Request, 401: Unauthorized}\n\n@endpoint PATCH /v2/access-tokens/{uuid}\n@desc Update personal access token\n@optional {token_label: str, is_active: bool}\n@returns(200) {uuid: str, client_id: str, creator_ip: str, creator_ua: str, created_at: str, last_used: str?, generated_by: str, is_active: bool, token: str, token_label: str, scopes: [str], expires_at: str(date-time)} # OK\n@errors {400: Bad Request, 401: Unauthorized}\n\n@endpoint GET /v2/access-tokens/{uuid}\n@desc Get personal access token\n@returns(200) OK\n@errors {401: Unauthorized, 404: Not Found}\n\n@endpoint DELETE /v2/access-tokens/{uuid}\n@desc Delete personal access token\n@returns(204) A successful response.\n@errors {401: Unauthorized, 404: Not Found}\n\n@endgroup\n\n@group auditlogs\n@endpoint GET /v2/auditlogs/{account}/actions\n@desc List audit log actions\n@required {account: str # Namespace to query audit log actions for.}\n@returns(200) {actions: map} # A successful response.\n@errors {429, 500}\n\n@endpoint GET /v2/auditlogs/{account}\n@desc List audit log events\n@required {account: str # Namespace to query audit logs for.}\n@optional {action: str # action name one of [\"repo.tag.push\", ...]. Optional parameter to filter specific audit log actions., name: str # name. Optional parameter to filter audit log events to a specific name. For repository events, this is the name of the repository. For organization events, this is the name of the organization. For team member events, this is the username of the team member., actor: str # actor name. Optional parameter to filter audit log events to the specific user who triggered the event., from: str(date-time) # Start of the time window you wish to query audit events for., to: str(date-time) # End of the time window you wish to query audit events for., page: int(int32)=1 # page - specify page number. Page number to get., page_size: int(int32)=25 # page_size - specify page size. Number of events to return per page.}\n@returns(200) {logs: [map]} # A successful response.\n@errors {429, 500}\n\n@endgroup\n\n@group orgs\n@endpoint GET /v2/orgs/{name}/settings\n@desc Get organization settings\n@returns(200) {restricted_images: map{enabled: bool, allow_official_images: bool, allow_verified_publishers: bool}} # OK\n@errors {401: Unauthorized, 403: Forbidden, 404: Not Found}\n\n@endpoint PUT /v2/orgs/{name}/settings\n@desc Update organization settings\n@required {restricted_images: any}\n@returns(200) {restricted_images: map{enabled: bool, allow_official_images: bool, allow_verified_publishers: bool}} # OK\n@errors {401: Unauthorized, 403: Forbidden, 404: Not Found}\n\n@endpoint POST /v2/orgs/{name}/access-tokens\n@desc Create access token\n@optional {label: str # Label for the access token, description: str # Description of the access token, resources: [map{type: str, path: str, scopes: [str]}] # Resources this token has access to, expires_at: str(date-time) # Expiration date for the token}\n@returns(201) Created\n@errors {400: Bad Request, 401: Unauthorized, 403: Forbidden, 404: Not Found}\n\n@endpoint GET /v2/orgs/{name}/access-tokens\n@desc List access tokens\n@optional {page: num=1, page_size: num=10}\n@returns(200) {total: num, next: str, previous: str, results: [map]} # OK\n@errors {401: Unauthorized, 403: Forbidden, 404: Not Found}\n\n@endpoint GET /v2/orgs/{org_name}/access-tokens/{access_token_id}\n@desc Get access token\n@returns(200) OK\n@errors {401: Unauthorized, 403: Forbidden, 404: Not Found}\n\n@endpoint PATCH /v2/orgs/{org_name}/access-tokens/{access_token_id}\n@desc Update access token\n@optional {label: str # Label for the access token, description: str # Description of the access token, resources: [map{type: str, path: str, scopes: [str]}] # Resources this token has access to, is_active: bool # Whether the token is active}\n@returns(200) OK\n@errors {401: Unauthorized, 403: Forbidden, 404: Not Found}\n\n@endpoint DELETE /v2/orgs/{org_name}/access-tokens/{access_token_id}\n@desc Delete access token\n@returns(204) Access token deleted successfully\n@errors {401: Unauthorized, 403: Forbidden, 404: Not Found}\n\n@endgroup\n\n@group namespaces\n@endpoint GET /v2/namespaces/{namespace}/repositories/{repository}/tags\n@desc List repository tags\n@optional {page: int # Page number to get. Defaults to 1., page_size: int # Number of items to get per page. Defaults to 10. Max of 100.}\n@returns(200) list repository tags\n@errors {403: Forbidden, 404: Not Found}\n\n@endpoint HEAD /v2/namespaces/{namespace}/repositories/{repository}/tags\n@desc Check repository tags\n@returns(200) Repository contains tags\n@errors {403: Forbidden, 404: Not Found}\n\n@endpoint GET /v2/namespaces/{namespace}/repositories/{repository}/tags/{tag}\n@desc Read repository tag\n@returns(200) {id: int, images: map{architecture: str, features: str, variant: str, digest: str?, layers: [map], os: str, os_features: str, os_version: str, size: int, status: str, last_pulled: str?, last_pushed: str?}, creator: int, last_updated: str?, last_updater: int, last_updater_username: str, name: str, repository: int, full_size: int, v2: str, status: str, tag_last_pulled: str?, tag_last_pushed: str?} # repository tag\n@errors {403: Forbidden, 404: Not Found}\n\n@endpoint HEAD /v2/namespaces/{namespace}/repositories/{repository}/tags/{tag}\n@desc Check repository tag\n@returns(200) Repository tag exists\n@errors {403: Forbidden, 404: Not Found}\n\n@endpoint PATCH /v2/namespaces/{namespace}/repositories/{repository}/immutabletags\n@desc Update repository immutable tags\n@required {immutable_tags: bool # Whether immutable tags are enabled, immutable_tags_rules: [str] # List of immutable tag rules}\n@returns(200) {user: str, name: str, namespace: str, repository_type: str?, status: int, status_description: str, description: str, is_private: bool, is_automated: bool, star_count: int(int64), pull_count: int(int64), last_updated: str(date-time), last_modified: str(date-time)?, date_registered: str(date-time), collaborator_count: int(int64), affiliation: str?, hub_user: str?, has_starred: bool, full_description: str?, permissions: map{read: bool, write: bool, admin: bool}, media_types: [str], content_types: [str], categories: [map], immutable_tags_settings: map{enabled: bool, rules: [str]}, storage_size: int(int64)?, source: str?}\n@errors {400: Bad Request, 401: Unauthorized, 403: Forbidden, 404: Not Found}\n\n@endpoint POST /v2/namespaces/{namespace}/repositories/{repository}/immutabletags/verify\n@desc Verify repository immutable tags\n@required {regex: str # Immutable tags rule regex pattern. Must match format: [a-z0-9]+((\\\\.|_|__|-+)[a-z0-9]+)*(\\\\/[a-z0-9]+((\\\\.|_|__|-+)[a-z0-9]+)*)*}\n@returns(200) {tags: [str]}\n@errors {400: Bad Request, 401: Unauthorized, 403: Forbidden, 404: Not Found}\n\n@endgroup\n\n@group repositories\n@endpoint POST /v2/repositories/{namespace}/{repository}/groups\n@desc Assign a group (Team) to a repository for access\n@required {group_id: int(int64) # The ID of the organization group to grant access to, permission: str(read/write/admin) # The permission level to grant to the group: - read: Can view and pull from the repository - write: Can view, pull, and push to the repository - admin: Can view, pull, push, and manage repository settings}\n@returns(200) {group_name: str, permission: str, group_id: int(int64)} # Repository group permission created successfully\n@errors {400: Bad Request - Invalid request parameters, 401: Unauthorized, 403: Forbidden, 404: Not Found}\n@example_request {\"group_id\":12345,\"permission\":\"write\"}\n\n@endgroup\n\n@group namespaces\n@endpoint GET /v2/namespaces/{namespace}/repositories\n@desc List repositories in a namespace\n@optional {page: int=1 # Page number to get. Defaults to 1., page_size: int=10 # Number of repositories to get per page. Defaults to 10. Max of 100., name: str # Filter repositories by name (partial match)., ordering: str(name/-name/last_updated/-last_updated/pull_count/-pull_count) # Order repositories by the specified field. Prefix with '-' for descending order. Available options: - `name` / `-name`: Repository name (ascending/descending) - `last_updated` / `-last_updated`: Last update time (ascending/descending) - `pull_count` / `-pull_count`: Number of pulls (ascending/descending)}\n@returns(200) List of repositories\n@errors {400: Bad Request - Invalid request parameters, 401: Unauthorized, 403: Forbidden, 404: Page not found - occurs when requesting a page number `>1` that exceeds the available results}\n\n@endpoint POST /v2/namespaces/{namespace}/repositories\n@desc Create a new repository\n@required {name: str # The name of the repository. Must be 2-255 characters long and may only include  alphanumeric characters, periods (.), underscores (_), or hyphens (-).  Letters must be lowercase., namespace: str # The namespace where the repository will be created}\n@optional {description: str # Short description of the repository, full_description: str # Detailed description of the repository, registry: str # The registry where the repository will be hosted, is_private: bool=false # Whether the repository should be private}\n@returns(201) {user: str, name: str, namespace: str, repository_type: str?, status: int, status_description: str, description: str, is_private: bool, is_automated: bool, star_count: int(int64), pull_count: int(int64), last_updated: str(date-time), last_modified: str(date-time)?, date_registered: str(date-time), collaborator_count: int(int64), affiliation: str?, hub_user: str?, has_starred: bool, full_description: str?, permissions: map{read: bool, write: bool, admin: bool}, media_types: [str], content_types: [str], categories: [map], immutable_tags_settings: map{enabled: bool, rules: [str]}, storage_size: int(int64)?, source: str?} # Repository created successfully\n@errors {400: Bad Request, 401: Unauthorized, 403: Forbidden, 404: Not Found, 500: Internal}\n@example_request {\"name\":\"my-app\",\"namespace\":\"myorganization\",\"description\":\"A sample application repository\",\"full_description\":\"This is a comprehensive description of my application repository that contains additional details about the project.\",\"registry\":\"docker.io\",\"is_private\":false}\n\n@endpoint GET /v2/namespaces/{namespace}/repositories/{repository}\n@desc Get repository in a namespace\n@returns(200) {user: str, name: str, namespace: str, repository_type: str?, status: int, status_description: str, description: str, is_private: bool, is_automated: bool, star_count: int(int64), pull_count: int(int64), last_updated: str(date-time), last_modified: str(date-time)?, date_registered: str(date-time), collaborator_count: int(int64), affiliation: str?, hub_user: str?, has_starred: bool, full_description: str?, permissions: map{read: bool, write: bool, admin: bool}, media_types: [str], content_types: [str], categories: [map], immutable_tags_settings: map{enabled: bool, rules: [str]}, storage_size: int(int64)?, source: str?}\n@errors {401: Unauthorized, 403: Forbidden, 404: Not Found, 500: Internal}\n\n@endpoint HEAD /v2/namespaces/{namespace}/repositories/{repository}\n@desc Check repository in a namespace\n@returns(200) {user: str, name: str, namespace: str, repository_type: str?, status: int, status_description: str, description: str, is_private: bool, is_automated: bool, star_count: int(int64), pull_count: int(int64), last_updated: str(date-time), last_modified: str(date-time)?, date_registered: str(date-time), collaborator_count: int(int64), affiliation: str?, hub_user: str?, has_starred: bool, full_description: str?, permissions: map{read: bool, write: bool, admin: bool}, media_types: [str], content_types: [str], categories: [map], immutable_tags_settings: map{enabled: bool, rules: [str]}, storage_size: int(int64)?, source: str?}\n@errors {401: Unauthorized, 403: Forbidden, 404: Not Found, 500: Internal}\n\n@endgroup\n\n@group orgs\n@endpoint GET /v2/orgs/{org_name}/members\n@desc List org members\n@returns(200) List of members\n@errors {400: Bad Request, 401: Unauthorized, 403: Forbidden, 404: Not Found}\n\n@endpoint GET /v2/orgs/{org_name}/members/export\n@desc Export org members CSV\n@returns(200) Exported members\n@errors {400: Bad Request, 401: Unauthorized, 403: Forbidden, 404: Not Found}\n\n@endpoint PUT /v2/orgs/{org_name}/members/{username}\n@desc Update org member (role)\n@required {role: str(owner/editor/member) # Role of the member}\n@returns(200) {email: str, role: str, groups: [str], is_guest: bool, primary_email: str, last_logged_in_at: str(date-time), last_seen_at: str(date-time), last_desktop_version: str} # Member role updated\n@errors {400: Bad Request, 401: Unauthorized, 403: Forbidden, 404: Not Found}\n\n@endpoint DELETE /v2/orgs/{org_name}/members/{username}\n@desc Remove member from org\n@returns(204) Member removed successfully\n@errors {400: Bad Request, 401: Unauthorized, 403: Forbidden, 404: Not Found}\n\n@endpoint GET /v2/orgs/{org_name}/invites\n@desc List org invites\n@returns(200) {data: [map]}\n@errors {401: Unauthorized, 403: Forbidden, 404: Not Found}\n\n@endpoint GET /v2/orgs/{org_name}/groups\n@desc Get groups of an organization\n@optional {page: int # Page number (starts on 1)., page_size: int # Number of items (rows) per page., username: str # Get groups for the specified username in the organization., search: str # Get groups for the specified group in the organization.}\n@returns(200) {count: num, next: str, previous: str, results: [map]}\n@errors {401: Unauthorized, 403: Forbidden, 404: Not Found}\n\n@endpoint POST /v2/orgs/{org_name}/groups\n@desc Create a new group\n@required {name: str}\n@optional {description: str}\n@returns(201) {id: num, uuid: str, name: str, description: str, member_count: num} # Group created successfully\n@errors {400: Bad Request, 401: Unauthorized, 403: Forbidden}\n\n@endpoint GET /v2/orgs/{org_name}/groups/{group_name}\n@desc Get a group of an organization\n@returns(200) {id: num, uuid: str, name: str, description: str, member_count: num}\n@errors {401: Unauthorized, 403: Forbidden, 404: Not Found}\n\n@endpoint PUT /v2/orgs/{org_name}/groups/{group_name}\n@desc Update the details for an organization group\n@required {name: str}\n@optional {description: str}\n@returns(200) {id: num, uuid: str, name: str, description: str, member_count: num}\n@errors {401: Unauthorized, 403: Forbidden, 404: Not Found}\n\n@endpoint PATCH /v2/orgs/{org_name}/groups/{group_name}\n@desc Update some details for an organization group\n@optional {name: str, description: str}\n@returns(200) {id: num, uuid: str, name: str, description: str, member_count: num}\n@errors {401: Unauthorized, 403: Forbidden, 404: Not Found}\n\n@endpoint DELETE /v2/orgs/{org_name}/groups/{group_name}\n@desc Delete an organization group\n@returns(204) Group deleted successfully\n@errors {401: Unauthorized, 403: Forbidden, 404: Not Found}\n\n@endpoint GET /v2/orgs/{org_name}/groups/{group_name}/members\n@desc List members of a group\n@required {org_name: str # Name of the organization (namespace)., group_name: str # Name of the group (team) in the organization.}\n@optional {page: int # Page number (starts on 1)., page_size: int # Number of items (rows) per page., search: str # Search members by username, full_name or email.}\n@returns(200) {count: num, next: str, previous: str, results: [map]}\n@errors {401: Unauthorized, 403: Forbidden, 404: Not Found}\n\n@endpoint POST /v2/orgs/{org_name}/groups/{group_name}/members\n@desc Add a member to a group\n@required {org_name: str # Name of the organization (namespace)., group_name: str # Name of the group (team) in the organization., member: str}\n@returns(200) OK\n@errors {401: Unauthorized, 403: Forbidden, 404: Not Found, 500: Internal}\n\n@endpoint DELETE /v2/orgs/{org_name}/groups/{group_name}/members/{username}\n@desc Remove a user from a group\n@returns(204) User removed successfully\n@errors {401: Unauthorized, 403: Forbidden, 404: Not Found}\n\n@endgroup\n\n@group invites\n@endpoint DELETE /v2/invites/{id}\n@desc Cancel an invite\n@returns(204)\n@errors {401: Unauthorized, 403: Forbidden, 404: Not Found}\n\n@endpoint PATCH /v2/invites/{id}/resend\n@desc Resend an invite\n@returns(204)\n@errors {401: Unauthorized, 403: Forbidden, 404: Not Found}\n\n@endpoint POST /v2/invites/bulk\n@desc Bulk create invites\n@required {org: str # organization name, invitees: [str] # list of invitees emails or Docker Ids}\n@optional {team: str # team name, role: str # role for invitees, dry_run: bool # Optional, run through validation but don't actually change data.}\n@returns(202) {invitees: map{invitees: [map]}} # Accepted\n@errors {400: Bad Request, 409: Conflict}\n\n@endgroup\n\n@group scim\n@endpoint GET /v2/scim/2.0/ServiceProviderConfig\n@desc Get service provider config\n@returns(200)\n@errors {401: Unauthorized, 500: Internal Error}\n\n@endpoint GET /v2/scim/2.0/ResourceTypes\n@desc List resource types\n@returns(200)\n@errors {401: Unauthorized, 500: Internal Error}\n\n@endpoint GET /v2/scim/2.0/ResourceTypes/{name}\n@desc Get a resource type\n@required {name: str}\n@returns(200)\n@errors {401: Unauthorized, 404: Not Found, 500: Internal Error}\n\n@endpoint GET /v2/scim/2.0/Schemas\n@desc List schemas\n@returns(200)\n@errors {401: Unauthorized, 500: Internal Error}\n\n@endpoint GET /v2/scim/2.0/Schemas/{id}\n@desc Get a schema\n@required {id: str}\n@returns(200)\n@errors {401: Unauthorized, 404: Not Found, 500: Internal Error}\n\n@endpoint GET /v2/scim/2.0/Users\n@desc List users\n@optional {startIndex: int, count: int, filter: str, attributes: str # Comma delimited list of attributes to limit to in the response., sortOrder: str(ascending/descending), sortBy: str # User attribute to sort by.}\n@returns(200)\n@errors {400: Bad Request, 401: Unauthorized, 403: Forbidden, 404: Not Found, 500: Internal Error}\n\n@endpoint POST /v2/scim/2.0/Users\n@desc Create user\n@returns(201)\n@errors {400: Bad Request, 401: Unauthorized, 403: Forbidden, 404: Not Found, 409: Conflict, 500: Internal Error}\n\n@endpoint GET /v2/scim/2.0/Users/{id}\n@desc Get a user\n@returns(200)\n@errors {400: Bad Request, 401: Unauthorized, 403: Forbidden, 404: Not Found, 500: Internal Error}\n\n@endpoint PUT /v2/scim/2.0/Users/{id}\n@desc Update a user\n@returns(200)\n@errors {400: Bad Request, 401: Unauthorized, 403: Forbidden, 404: Not Found, 409: Conflict, 500: Internal Error}\n\n@endgroup\n\n@end\n"}}