{"files":{"SKILL.md":"---\nname: license-manager-api\ndescription: \"License Manager API skill. Use when working with License Manager for api. Covers 13 endpoints.\"\nversion: 1.0.0\ngenerator: lapsh\n---\n\n# License Manager API\nAPI version: 1.0\n\n## Auth\nApiKey X-VTEX-API-AppKey in header | ApiKey X-VTEX-API-AppToken in header | ApiKey VtexIdclientAutCookie in header\n\n## Base URL\nhttps://apiexamples.vtexcommercestable.com.br\n\n## Setup\n1. Set your API key in the appropriate header\n2. GET /api/license-manager/site/pvt/logins/list/paged -- verify access\n3. POST /api/license-manager/users -- create first users\n\n## Endpoints\n\n13 endpoints across 1 groups. See references/api-spec.lap for full details.\n\n### api\n| Method | Path | Description |\n|--------|------|-------------|\n| GET | /api/license-manager/users/{userId} | Get admin user information by user ID |\n| DELETE | /api/license-manager/users/{userId} | Delete admin user |\n| POST | /api/license-manager/users | Create admin user |\n| GET | /api/license-manager/site/pvt/logins/list/paged | Get list of admin users |\n| PUT | /api/license-manager/users/{userId}/roles | Add roles to admin user or API Key |\n| GET | /api/license-manager/users/{userId}/roles | Get roles by admin user ID or API Key |\n| DELETE | /api/license-manager/users/{userId}/roles/{roleId} | Remove role from admin user or API Key |\n| GET | /api/license-manager/site/pvt/roles/list/paged | Get list of roles |\n| POST | /api/vlm/appkeys | Create new API Key |\n| GET | /api/vlm/appkeys | Get API keys from account |\n| PUT | /api/vlm/appkeys/{id} | Update API Key |\n| GET | /api/vlm/account/stores | Get stores |\n| GET | /api/vlm/account | Get information about account |\n\n## Common Questions\n\nMatch user requests to endpoints in references/api-spec.lap. Key patterns:\n- \"Get user details?\" -> GET /api/license-manager/users/{userId}\n- \"Delete a user?\" -> DELETE /api/license-manager/users/{userId}\n- \"Create a user?\" -> POST /api/license-manager/users\n- \"List all paged?\" -> GET /api/license-manager/site/pvt/logins/list/paged\n- \"List all roles?\" -> GET /api/license-manager/users/{userId}/roles\n- \"Delete a role?\" -> DELETE /api/license-manager/users/{userId}/roles/{roleId}\n- \"List all paged?\" -> GET /api/license-manager/site/pvt/roles/list/paged\n- \"Create a appkey?\" -> POST /api/vlm/appkeys\n- \"List all appkeys?\" -> GET /api/vlm/appkeys\n- \"Update a appkey?\" -> PUT /api/vlm/appkeys/{id}\n- \"List all stores?\" -> GET /api/vlm/account/stores\n- \"List all account?\" -> GET /api/vlm/account\n- \"How to authenticate?\" -> See Auth section\n\n## Response Tips\n- Check response schemas in references/api-spec.lap for field details\n- Create/update endpoints typically return the created/updated object\n\n## CLI\n\n```bash\n# Update this spec to the latest version\nnpx @lap-platform/lapsh get license-manager-api -o references/api-spec.lap\n\n# Search for related APIs\nnpx @lap-platform/lapsh search license-manager-api\n```\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 License Manager API\n@base https://apiexamples.vtexcommercestable.com.br\n@version 1.0\n@auth ApiKey X-VTEX-API-AppKey in header | ApiKey X-VTEX-API-AppToken in header | ApiKey VtexIdclientAutCookie in header\n@endpoints 13\n@toc api(13)\n\n@endpoint GET /api/license-manager/users/{userId}\n@desc Get admin user information by user ID\n@required {Content-Type: str=application/json # Type of the content being sent., Accept: str=application/json # HTTP Client Negotiation _Accept_ Header. Indicates the types of responses the client can understand., userId: str # ID from queried user.}\n@returns(200) {id: str, name: str, email: str} # Success\n@errors {400: Bad Request, 405: Method Not Allowed - A null `userId` sends the request to a path that is not allowed.}\n\n@endpoint DELETE /api/license-manager/users/{userId}\n@desc Delete admin user\n@required {Content-Type: str=application/json # Type of the content being sent., Accept: str=application/json # HTTP Client Negotiation _Accept_ Header. Indicates the types of responses the client can understand., userId: str # ID from queried user.}\n@returns(200) OK\n@errors {400: Bad Request}\n\n@endpoint POST /api/license-manager/users\n@desc Create admin user\n@required {email: str # Email of the user.}\n@optional {name: str # Name of the user.}\n@returns(200) {id: str, email: str, name: str} # Success\n@errors {400: Bad Request}\n@example_request {\"name\":\"Jane\",\"email\":\"jane@mail.com\"}\n\n@endpoint GET /api/license-manager/site/pvt/logins/list/paged\n@desc Get list of admin users\n@required {Content-Type: str=application/json # Type of the content being sent., Accept: str=application/json # HTTP Client Negotiation _Accept_ Header. Indicates the types of responses the client can understand.}\n@optional {numItems: int # Number of items in the returned page., pageNumber: int # Which page from the whole list will be returned., sort: str # Chooses the field that the list will be sorted by., sortType: str # Defines the sorting order. `ASC` is used for ascendant order. `DSC` is used for descendant order.}\n@returns(200) {items: [map], paging: map{page: int, perPage: int, total: int, pages: int}} # Success\n\n@endpoint PUT /api/license-manager/users/{userId}/roles\n@desc Add roles to admin user or API Key\n@required {userId: str # ID of the user.}\n@returns(204) Success - A no-content response, but the roles were added successfully.\n@errors {400: Bad Request - A userId or role list with invalid format. The message on the body of the response will contain further information., 500: Unexpected error - One possible reason is that the userId is not present on the database.}\n@example_request [9000,9111,9333,9444]\n\n@endpoint GET /api/license-manager/users/{userId}/roles\n@desc Get roles by admin user ID or API Key\n@required {Content-Type: str=application/json # Type of the content being sent., Accept: str=application/json # HTTP Client Negotiation _Accept_ Header. Indicates the types of responses the client can understand., userId: str # ID of the user.}\n@returns(200) Success\n\n@endpoint DELETE /api/license-manager/users/{userId}/roles/{roleId}\n@desc Remove role from admin user or API Key\n@required {Content-Type: str=application/json # Type of the content being sent., Accept: str=application/json # HTTP Client Negotiation _Accept_ Header. Indicates the types of responses the client can understand., userId: str # ID of the user., roleId: str # ID of the role which will be removed from the user.}\n@returns(204) Success - A no-content response, but the role deletion was performed successfully.\n@errors {400: Bad Request - A userId or role list with invalid format. The message on the body of the response will contain further information., 405: Method Not Allowed}\n\n@endpoint GET /api/license-manager/site/pvt/roles/list/paged\n@desc Get list of roles\n@required {Content-Type: str=application/json # Type of the content being sent., Accept: str=application/json # HTTP Client Negotiation _Accept_ Header. Indicates the types of responses the client can understand.}\n@optional {numItems: int # Number of items in the returned page., pageNumber: int # Which page from the whole list will be returned., sort: str # Chooses the field that the list will be sorted by., sortType: str # Defines the sorting order. `ASC` is used for ascendant order. `DSC` is used for descendant order.}\n@returns(200) {items: [map], paging: map{page: int, perPage: int, total: int, pages: int}} # Success\n\n@endpoint POST /api/vlm/appkeys\n@desc Create new API Key\n@required {label: str # Label of the API key.}\n@returns(200) {id: str, appKey: str, appToken: str?, label: str, createdIn: str(date-time), isActive: bool} # Success\n@example_request {\"label\":\"my new API Key\"}\n\n@endpoint GET /api/vlm/appkeys\n@desc Get API keys from account\n@required {Content-Type: str=application/json # Type of the content being sent.}\n@returns(200) Success\n\n@endpoint PUT /api/vlm/appkeys/{id}\n@desc Update API Key\n@required {id: str # ID from the API Key which will be updated, isActive: bool # Defines if the API key is active (`true`) or not (`false`).}\n@returns(200) Success\n@errors {400: Bad Request}\n@example_request {\"isActive\":false}\n\n@endpoint GET /api/vlm/account/stores\n@desc Get stores\n@returns(200) Success\n\n@endpoint GET /api/vlm/account\n@desc Get information about account\n@returns(200) {isActive: bool, id: str, name: str, accountName: str, lv: str?, isOperating: bool, defaultUrl: str?, district: str?, country: str?, complement: str?, companyName: str, cnpj: str?, haveParentAccount: bool, parentAccountId: str?, parentAccountName: str?, city: str?, address: str?, logo: str?, hasLogo: bool, number: str?, postalCode: str?, state: str?, telephone: str, tradingName: str, licenses: [map], sponsor: map{name: str, email: str, phone: str}, contact: map{name: str, email: str, phone: str}, operationDate: str(date-time)?, inactivationDate: str(date-time)?, creationDate: str(date-time), hosts: [str], sites: [map], appKey: map{token: str?, name: str?}, appKeys: [map]} # Success\n\n@end\n"}}