├── .editorconfig ├── .github ├── ISSUE_TEMPLATE │ ├── bug_report.md │ ├── custom.md │ └── feature_request.md ├── pull_request_template.md └── workflows │ ├── linter.yml │ └── portman.yml ├── .spectral.yml ├── .vscode └── settings.json ├── CODE_OF_CONDUCT.md ├── CONTRIBUTING.md ├── PostmanCollections ├── VTEX - Ad Network API.json ├── VTEX - Antifraud Provider API.json ├── VTEX - Audience API.json ├── VTEX - Buyer Organizations.json ├── VTEX - CMS API.json ├── VTEX - Catalog API Seller Portal.json ├── VTEX - Catalog API.json ├── VTEX - Checkout API.json ├── VTEX - Checkout Configuration API.json ├── VTEX - Customer Credit API.json ├── VTEX - Data Subject Rights.json ├── VTEX - GiftCard Hub API.json ├── VTEX - Giftcard API.json ├── VTEX - Giftcard Provider Protocol.json ├── VTEX - Headless CMS API.json ├── VTEX - Intelligent Search API.json ├── VTEX - Intelligent Search Events API - Headless.json ├── VTEX - Legacy CMS Portal API.json ├── VTEX - License Manager API.json ├── VTEX - Logistics API.json ├── VTEX - Marketplace APIs - Sent Offers.json ├── VTEX - Marketplace APIs - Suggestions.json ├── VTEX - Marketplace APIs.json ├── VTEX - Marketplace Protocol - External Marketplace Mapper.json ├── VTEX - Marketplace Protocol - External Marketplace Orders.json ├── VTEX - Marketplace Protocol - External Seller Fulfillment.json ├── VTEX - Marketplace Protocol - External Seller Marketplace.json ├── VTEX - Master Data API - v2.json ├── VTEX - MasterData API - v10.2.json ├── VTEX - Message Center API.json ├── VTEX - Operational Capacity API.json ├── VTEX - Orders API (PII version).json ├── VTEX - Orders API PII version.json ├── VTEX - Orders API.json ├── VTEX - Payment Provider Protocol.json ├── VTEX - Payments Gateway API.json ├── VTEX - Pick and Pack API.json ├── VTEX - Pick and Pack Changes API.json ├── VTEX - Pick and Pack Last Mile Protocol API.json ├── VTEX - Pick and Pack Order Changes API.json ├── VTEX - Pick and Pack Protocol API.json ├── VTEX - Policies System API.json ├── VTEX - Pricing API.json ├── VTEX - Pricing Hub.json ├── VTEX - Profile System.json ├── VTEX - Promotions & Taxes API - v2.json ├── VTEX - Promotions & Taxes API.json ├── VTEX - Recurrence (v1 - deprecated).json ├── VTEX - Reviews and Ratings API.json ├── VTEX - SKU Bindings API.json ├── VTEX - SSL Certificates API.json ├── VTEX - Search API.json ├── VTEX - Session Manager API.json ├── VTEX - Subscriptions API (v2).json ├── VTEX - Subscriptions API (v3).json ├── VTEX - Subscriptions API v3.json ├── VTEX - Template openAPI.json ├── VTEX - Tracking.json ├── VTEX - User Data Rights API.json ├── VTEX - User Rights Data API.json ├── VTEX - VTEX Do API.json ├── VTEX - VTEX ID API.json ├── VTEX - VTEX Shipping Network API.json └── VTEX_TEMPLATE.json ├── README.md ├── VTEX - Antifraud Provider API.json ├── VTEX - Audience API.json ├── VTEX - Buyer Organizations.json ├── VTEX - Catalog API Seller Portal.json ├── VTEX - Catalog API.json ├── VTEX - Checkout API.json ├── VTEX - Customer Credit API.json ├── VTEX - Data Subject Rights.json ├── VTEX - Delivery Promise Notification API.json ├── VTEX - GiftCard Hub API.json ├── VTEX - Giftcard API.json ├── VTEX - Giftcard Provider Protocol.json ├── VTEX - Headless CMS API.json ├── VTEX - Intelligent Search API.json ├── VTEX - Intelligent Search Events API - Headless.json ├── VTEX - Legacy CMS Portal API.json ├── VTEX - License Manager API.json ├── VTEX - Logistics API.json ├── VTEX - Marketplace APIs - Sent Offers.json ├── VTEX - Marketplace APIs - Suggestions.json ├── VTEX - Marketplace APIs.json ├── VTEX - Marketplace Protocol - External Marketplace Mapper.json ├── VTEX - Marketplace Protocol - External Marketplace Orders.json ├── VTEX - Marketplace Protocol - External Seller Fulfillment.json ├── VTEX - Marketplace Protocol - External Seller Marketplace.json ├── VTEX - Master Data API - v2.json ├── VTEX - MasterData API - v10.2.json ├── VTEX - Message Center API.json ├── VTEX - Operational Capacity API.json ├── VTEX - Orders API PII version.json ├── VTEX - Orders API.json ├── VTEX - Payment Provider Protocol.json ├── VTEX - Payments Gateway API.json ├── VTEX - Pick and Pack API.json ├── VTEX - Pick and Pack Last Mile Protocol API.json ├── VTEX - Pick and Pack Order Changes API.json ├── VTEX - Policies System API.json ├── VTEX - Pricing API.json ├── VTEX - Pricing Hub.json ├── VTEX - Profile System.json ├── VTEX - Promotions & Taxes API - v2.json ├── VTEX - Promotions & Taxes API.json ├── VTEX - Reviews and Ratings API.json ├── VTEX - SKU Bindings API.json ├── VTEX - SSL Certificates API.json ├── VTEX - Search API.json ├── VTEX - Session Manager API.json ├── VTEX - Subscriptions API v3.json ├── VTEX - Tracking.json ├── VTEX - VTEX Do API.json ├── VTEX - VTEX ID API.json ├── VTEX - VTEX Shipping Network API.json ├── docs └── centralized-api-slug-mapping.md ├── functions └── definedNotExample.js └── templates ├── Template - API Reference Overview.md └── VTEX - Template openAPI.jsonc /.editorconfig: -------------------------------------------------------------------------------- 1 | root = true 2 | 3 | [*] 4 | indent_style = space 5 | indent_size = 4 6 | charset = utf-8 7 | trim_trailing_whitespace = false 8 | insert_final_newline = false -------------------------------------------------------------------------------- /.github/ISSUE_TEMPLATE/bug_report.md: -------------------------------------------------------------------------------- 1 | --- 2 | name: Bug report 3 | about: 'Thanks for reporting a bug. In case this report is not related to the OpenAPI 4 | schemas, we recommend posting it on the VTEX community: https://community.vtex.com/' 5 | title: '' 6 | labels: '' 7 | assignees: '' 8 | 9 | --- 10 | 11 | **Describe the bug** 12 | A clear and concise description of what the bug is. 13 | 14 | **Expected behavior** 15 | A clear and concise description of what you expected to happen. 16 | 17 | **Screenshots** 18 | If applicable, add screenshots to help explain your problem. 19 | -------------------------------------------------------------------------------- /.github/ISSUE_TEMPLATE/custom.md: -------------------------------------------------------------------------------- 1 | --- 2 | name: Custom issue template 3 | about: 'Thanks for your contribution! Before contributing, please check if this issue 4 | is directly related to the OpenAPI 3.0 schemas in this repository. In case this 5 | issue concerns questions or bug reports about VTEX APIs or even VTEX, we recommend 6 | posting it on the VTEX community: https://community.vtex.com/' 7 | title: '' 8 | labels: '' 9 | assignees: '' 10 | 11 | --- 12 | 13 | 14 | -------------------------------------------------------------------------------- /.github/ISSUE_TEMPLATE/feature_request.md: -------------------------------------------------------------------------------- 1 | --- 2 | name: Feature request 3 | about: 'Thanks for contributing. In case this request is not related to the OpenAPI 4 | schemas, we recommend posting it on the VTEX community: https://community.vtex.com/' 5 | title: '' 6 | labels: '' 7 | assignees: '' 8 | 9 | --- 10 | 11 | **Describe the solution you'd like** 12 | A clear and concise description of what you want to happen. 13 | -------------------------------------------------------------------------------- /.github/pull_request_template.md: -------------------------------------------------------------------------------- 1 | #### Types of changes 2 | - [ ] New content (endpoints, descriptions or fields from scratch) 3 | - [ ] Improvement (make an endpoint's title or description even better) 4 | - [ ] Spelling and grammar accuracy (self-explanatory) 5 | 6 | ### Changelog 7 | Do not forget to update your changes to our Developer Portal's changelog. Did you create a release note? 8 | - [ ] Yes, I already created a release note about this change. 9 | - [ ] No, but I am going to. 10 | -------------------------------------------------------------------------------- /.github/workflows/linter.yml: -------------------------------------------------------------------------------- 1 | name: Run Spectral on Pull Requests 2 | 3 | 4 | on: pull_request 5 | 6 | 7 | jobs: 8 | build: 9 | name: Run Spectral 10 | runs-on: ubuntu-latest 11 | steps: 12 | # Check out the repository 13 | - uses: actions/checkout@v4 14 | with: 15 | fetch-depth: 0 16 | 17 | # Add comment to PR 18 | - name: Comment a pull_request 19 | uses: mshick/add-pr-comment@v2 20 | with: 21 | message: "Thanks for your contribution. The .json file will be checked now with Spectral." 22 | repo-token: ${{ secrets.GITHUB_TOKEN }} 23 | 24 | # Get the name of changed files 25 | - name: Get changed files 26 | id: changed-files 27 | uses: tj-actions/changed-files@41960309398d165631f08c5df47a11147e14712b # v39.1.2 28 | with: 29 | files: | 30 | *.json 31 | 32 | # Print the names of changed files 33 | - name: Print changed files 34 | run: | 35 | echo "Changed files: ${{ steps.changed-files.outputs.modified_files }}" 36 | 37 | # Run Spectral on changed files 38 | - uses: stoplightio/spectral-action@v0.8.10 39 | with: 40 | file_glob: ${{ steps.changed-files.outputs.modified_files }} -------------------------------------------------------------------------------- /.github/workflows/portman.yml: -------------------------------------------------------------------------------- 1 | name: Convert to Postman 2 | 3 | on: 4 | pull_request: 5 | branches: 6 | - master 7 | 8 | jobs: 9 | convert-to-postman: 10 | runs-on: ubuntu-latest 11 | 12 | steps: 13 | - name: Checkout repository 14 | uses: actions/checkout@v2 15 | 16 | - name: Set up Node.js 17 | uses: actions/setup-node@v2 18 | with: 19 | node-version: 18 20 | 21 | - name: Get changed files 22 | id: get-changed-files 23 | uses: tj-actions/changed-files@54479c37f5eb47a43e595c6b71e1df2c112ce7f1 # v36 24 | with: 25 | separator: ',' 26 | files: | 27 | **.json 28 | 29 | - name: Process changed JSON files 30 | run: | 31 | FILES="${{ steps.get-changed-files.outputs.all_changed_files }}" 32 | 33 | IFS="," 34 | for file in $FILES; do 35 | echo "Processing $file" 36 | npx @apideck/portman -l "$file" -o "./PostmanCollections/$file" 37 | done 38 | 39 | - name: Configure Git 40 | if: ${{ steps.get-changed-files.outputs.any_changed == 'true' }} 41 | run: | 42 | git config --local user.email "${{ github.event.pull_request.user.email }}" 43 | git config --local user.name "${{ github.event.pull_request.user.login }}" 44 | 45 | - name: Commit changes 46 | if: ${{ steps.get-changed-files.outputs.any_changed == 'true' }} 47 | run: | 48 | git add PostmanCollections/* 49 | git commit -m "Update generated files by portman" 50 | git pull --rebase origin "${{ github.head_ref }}" 51 | 52 | - name: Push changes 53 | if: ${{ steps.get-changed-files.outputs.any_changed == 'true' }} 54 | uses: ad-m/github-push-action@v0.6.0 55 | with: 56 | branch: ${{ github.head_ref }} 57 | github_token: ${{ secrets.GITHUB_TOKEN }} -------------------------------------------------------------------------------- /.spectral.yml: -------------------------------------------------------------------------------- 1 | extends: ["spectral:oas"] 2 | 3 | functions: 4 | - definedNotExample 5 | rules: 6 | path-params: off 7 | operation-operationId: off 8 | oas3-examples-value-or-externalValue: off 9 | oas3-unused-component: off 10 | info-contact: off 11 | write-email-not-e-mail: 12 | description: Should use email instead of e-mail in descriptions 13 | severity: error 14 | given: "$..*[?(@property === 'description')]" 15 | then: 16 | function: pattern 17 | functionOptions: 18 | notMatch: "\\be-mail\\b" 19 | 20 | must-include-operation-summary: 21 | description: Operation summary should be included 22 | severity: error 23 | given: "$.paths.*[?( @property === 'get' || @property === 'put' || @property === 'post' || @property === 'delete' || @property === 'options' || @property === 'head' || @property === 'patch' || @property === 'trace' )]" 24 | then: 25 | - field: "summary" 26 | function: defined 27 | 28 | must-include-response-examples: 29 | description: At least one example should be included for each API response 30 | severity: error 31 | given: "$.paths..responses.*.content.*" 32 | then: 33 | - field: "example" 34 | function: defined 35 | 36 | must-include-response-schemas: 37 | description: Each API response must contain a schema 38 | severity: error 39 | given: "$.paths..responses.*.content.*" 40 | then: 41 | - field: "schema" 42 | function: defined 43 | 44 | no-empty-titles: 45 | description: There can be no empty titles in schemas. Removing this title field from the property will solve this issue. If this title is inside an example, please fill it with a valid value. 46 | severity: error 47 | given: "$..[?(@ && @.title=='')]~" 48 | then: 49 | function: pattern 50 | functionOptions: 51 | match: "example" 52 | 53 | summaries-should-be-in-sentence-case: 54 | description: All endpoint summaries should use sentence case (capitalize only the first letter) and never contain periods (`.`). Exceptions include product names and some specific terms (e.g., SKU, ID). 55 | severity: warn 56 | given: "$.paths.*.*[?( @property === 'summary')]" 57 | then: 58 | function: pattern 59 | functionOptions: 60 | match: "^[A-Z](?:[a-z0-9 ]*(?:VTEX|TEX|DO|ID|EAN|JSON|)|(|OAuth|Customer Credit|CMS|appKey|appToken|-|,|API|DKIM|SKU|SLA|Change order|'))*[a-z0-9 ]*$" 61 | 62 | no-empty-descriptions: 63 | description: No empty descriptions allowed. Make sure that this description is a valid string that does not start with a line break (\n or \r). If this description is inside an example, please fill it with a valid value. 64 | severity: error 65 | given: "$..*[?(@property === 'description')]" 66 | then: 67 | function: pattern 68 | functionOptions: 69 | match: "^(?!\\s*$).+" 70 | 71 | parameters-description: 72 | description: Each parameter must contain a description. 73 | severity: error 74 | given: "$.paths.*.*.parameters[*]" 75 | then: 76 | field: "description" 77 | function: defined 78 | 79 | properties-description: 80 | description: Each request or response body property must contain a description. 81 | severity: error 82 | given: "$..*[?(@ && @property != 'schema' && (@.type=='object' || @.type=='array' || @.type=='integer' || @.type=='boolean' || @.type=='string' || @.type=='number'))]" 83 | then: 84 | field: "description" 85 | function: definedNotExample 86 | 87 | array-items: 88 | description: Each array field must contain an "items" property. 89 | severity: error 90 | given: "$..[?(@ && @.type == 'array')]" 91 | then: 92 | field: "items" 93 | function: defined 94 | 95 | request-body-items-type: 96 | description: Each request body array "items" property must contain a type. 97 | severity: warn 98 | given: "$.paths.*.*.requestBody.content.*.schema..items" 99 | then: 100 | field: "type" 101 | function: defined 102 | 103 | response-body-items-type: 104 | description: Each array "items property" in the response body schema must contain a type. 105 | severity: warn 106 | given: "$.paths.*.*.responses.*.content.*.schema..items" 107 | then: 108 | field: "type" 109 | function: defined 110 | 111 | request-body-properties-example: 112 | description: Each request body property should have an example. In case the schema is also used as a response and there is already an example elsewhere, feel free to ignore this alert. If you have chosen to include a complete example of the schema to better represent arrays, feel free to ignore this alert. 113 | severity: warn 114 | given: "$..requestBody..*[?(@ && (@.type=='string' || @.type=='integer' || @.type=='boolean'))]" 115 | then: 116 | field: "example" 117 | function: defined 118 | 119 | response-body-objects-arrays-example: 120 | description: Response body fields should not contain the "example" field. The response example corresponds to the whole schema. 121 | severity: warn 122 | given: "$..responses..*[?(@ && (@.type=='object' || @.type=='array' || @.type=='integer' || @.type=='boolean' || @.type=='string'))]" 123 | then: 124 | field: "example" 125 | function: undefined 126 | 127 | endpoint-permissions: 128 | description: Endpoint descriptions must include a "Permissions" section, with information about License Manager resources and roles. 129 | severity: warn 130 | given: "$.paths.*.*.description" 131 | then: 132 | function: pattern 133 | functionOptions: 134 | match: "## Permissions" 135 | 136 | must-end-descriptions-with-period: 137 | description: All field descriptions must end with a period (`.`) or with an unordered list, even if its items don't end in periods. 138 | severity: error 139 | given: "$..properties.*[?(@property === 'description')]" 140 | then: 141 | function: pattern 142 | functionOptions: 143 | match: ".*(?:\\.$|\\n- |\\r- )" 144 | -------------------------------------------------------------------------------- /.vscode/settings.json: -------------------------------------------------------------------------------- 1 | { 2 | "cSpell.words": [ 3 | "andar", 4 | "Minicart", 5 | "Vtex" 6 | ] 7 | } -------------------------------------------------------------------------------- /CODE_OF_CONDUCT.md: -------------------------------------------------------------------------------- 1 | # Contributor Covenant Code of Conduct 2 | 3 | ## Our Pledge 4 | 5 | We as members, contributors, and leaders pledge to make participation in our 6 | community a harassment-free experience for everyone, regardless of age, body 7 | size, visible or invisible disability, ethnicity, sex characteristics, gender 8 | identity and expression, level of experience, education, socio-economic status, 9 | nationality, personal appearance, race, religion, or sexual identity 10 | and orientation. 11 | 12 | We pledge to act and interact in ways that contribute to an open, welcoming, 13 | diverse, inclusive, and healthy community. 14 | 15 | ## Our Standards 16 | 17 | Examples of behavior that contributes to a positive environment for our 18 | community include: 19 | 20 | * Demonstrating empathy and kindness toward other people 21 | * Being respectful of differing opinions, viewpoints, and experiences 22 | * Giving and gracefully accepting constructive feedback 23 | * Accepting responsibility and apologizing to those affected by our mistakes, 24 | and learning from the experience 25 | * Focusing on what is best not just for us as individuals, but for the 26 | overall community 27 | 28 | Examples of unacceptable behavior include: 29 | 30 | * The use of sexualized language or imagery, and sexual attention or 31 | advances of any kind 32 | * Trolling, insulting or derogatory comments, and personal or political attacks 33 | * Public or private harassment 34 | * Publishing others' private information, such as a physical or email 35 | address, without their explicit permission 36 | * Other conduct which could reasonably be considered inappropriate in a 37 | professional setting 38 | 39 | ## Enforcement Responsibilities 40 | 41 | Community leaders are responsible for clarifying and enforcing our standards of 42 | acceptable behavior and will take appropriate and fair corrective action in 43 | response to any behavior that they deem inappropriate, threatening, offensive, 44 | or harmful. 45 | 46 | Community leaders have the right and responsibility to remove, edit, or reject 47 | comments, commits, code, wiki edits, issues, and other contributions that are 48 | not aligned to this Code of Conduct, and will communicate reasons for moderation 49 | decisions when appropriate. 50 | 51 | ## Scope 52 | 53 | This Code of Conduct applies within all community spaces, and also applies when 54 | an individual is officially representing the community in public spaces. 55 | Examples of representing our community include using an official e-mail address, 56 | posting via an official social media account, or acting as an appointed 57 | representative at an online or offline event. 58 | 59 | ## Enforcement 60 | 61 | Instances of abusive, harassing, or otherwise unacceptable behavior may be 62 | reported to the community leaders responsible for enforcement at 63 | education@vtex.com.br. 64 | All complaints will be reviewed and investigated promptly and fairly. 65 | 66 | All community leaders are obligated to respect the privacy and security of the 67 | reporter of any incident. 68 | 69 | 70 | ## Attribution 71 | 72 | This Code of Conduct is adapted from the [Contributor Covenant][homepage], 73 | version 2.0, available at 74 | https://www.contributor-covenant.org/version/2/0/code_of_conduct.html. 75 | 76 | Community Impact Guidelines were inspired by [Mozilla's code of conduct 77 | enforcement ladder](https://github.com/mozilla/diversity). 78 | 79 | [homepage]: https://www.contributor-covenant.org 80 | 81 | For answers to common questions about this code of conduct, see the FAQ at 82 | https://www.contributor-covenant.org/faq. Translations are available at 83 | https://www.contributor-covenant.org/translations. 84 | -------------------------------------------------------------------------------- /CONTRIBUTING.md: -------------------------------------------------------------------------------- 1 | # Contributing Guide 2 | Thanks for your interest in contributing to [VTEX API Documentation](https://github.com/vtex/openapi-schemas#readme)! Here are a few general guidelines on contributing and reporting bugs to VTEX that we ask you to first look at. 3 | 4 | ## Contributing 5 | We encourage everyone to participate in the building of our documentation. We usually focus our PRs on the following topics: 6 | 7 | - New content (endpoints, descriptions or fields from scratch) 8 | - Improvement (make an endpoint's title or description even better) 9 | - Spelling and grammar accuracy (self-explanatory) 10 | 11 | >ℹ️ You should create semantic commits and one PR for each API file to facilitate the technical writer's review. 12 | 13 | ### Style Guidelines 14 | In order to generate VTEX's public API docs we use the [OpenAPI v3](https://www.openapis.org/) format and have created a [OpenAPI Template](https://github.com/vtex/openapi-schemas/blob/master/templates/VTEX%20-%20TEMPLATE.json) that contains all fields that we consider required for our API documentation. Please check the template before contributing. 15 | 16 | ### Review 17 | You must add the [@technical-writers](https://github.com/orgs/vtex-apps/teams/technical-writers/members) as your contribution's reviewers. By adding the team, we will indicate the right person to review your PR. 18 | 19 | ## Code of Conduct 20 | Please follow our [Code of Conduct](CODE_OF_CONDUCT.md). Contributions outside the code will be denied. 21 | -------------------------------------------------------------------------------- /PostmanCollections/VTEX - CMS API.json: -------------------------------------------------------------------------------- 1 | { 2 | "_": { 3 | "postman_id": "ef32aafa-b2ca-461e-a4bb-27619aaad425" 4 | }, 5 | "item": [ 6 | { 7 | "id": "e622d0f2-9a05-49dd-acbc-55a04ecef2bd", 8 | "name": "Change URI Schema", 9 | "description": { 10 | "content": "Changes CMS URI", 11 | "type": "text/plain" 12 | }, 13 | "item": [ 14 | { 15 | "id": "8e921ad6-5752-4a28-9745-e9829a4baa57", 16 | "name": "Update all account's websites internet communication protocol", 17 | "request": { 18 | "name": "Update all account's websites internet communication protocol", 19 | "description": { 20 | "content": "Updates all account's websites protocols to `HTTP` or `HTTPS`.", 21 | "type": "text/plain" 22 | }, 23 | "url": { 24 | "path": [ 25 | "api", 26 | "catalog_system", 27 | "pvt", 28 | "virtualfolder", 29 | "changeurischema", 30 | ":protocol" 31 | ], 32 | "host": [ 33 | "{{baseUrl}}" 34 | ], 35 | "query": [], 36 | "variable": [ 37 | { 38 | "disabled": false, 39 | "description": { 40 | "content": "(Required) Internet communication protocol, it can be `HTTP` or `HTTPS`.", 41 | "type": "text/plain" 42 | }, 43 | "type": "any", 44 | "value": "https", 45 | "key": "protocol" 46 | }, 47 | { 48 | "description": { 49 | "content": "Name of the VTEX account. Used as part of the URL.", 50 | "type": "text/plain" 51 | }, 52 | "type": "any", 53 | "value": "{{accountName}}", 54 | "key": "accountName" 55 | }, 56 | { 57 | "description": { 58 | "content": "Environment to use. Used as part of the URL.", 59 | "type": "text/plain" 60 | }, 61 | "type": "any", 62 | "value": "{{environment}}", 63 | "key": "environment" 64 | } 65 | ] 66 | }, 67 | "header": [ 68 | { 69 | "key": "Accept", 70 | "value": "application/json" 71 | } 72 | ], 73 | "method": "PUT" 74 | }, 75 | "response": [ 76 | { 77 | "_": { 78 | "postman_previewlanguage": "json" 79 | }, 80 | "id": "031efd8f-aee1-457f-8359-98126e661dbf", 81 | "name": "OK", 82 | "originalRequest": { 83 | "url": { 84 | "path": [ 85 | "api", 86 | "catalog_system", 87 | "pvt", 88 | "virtualfolder", 89 | "changeurischema", 90 | ":protocol" 91 | ], 92 | "host": [ 93 | "{{baseUrl}}" 94 | ], 95 | "query": [], 96 | "variable": [ 97 | { 98 | "disabled": false, 99 | "description": { 100 | "content": "(Required) Internet communication protocol, it can be `HTTP` or `HTTPS`.", 101 | "type": "text/plain" 102 | }, 103 | "type": "any", 104 | "value": "https", 105 | "key": "protocol" 106 | }, 107 | { 108 | "description": { 109 | "content": "Name of the VTEX account. Used as part of the URL.", 110 | "type": "text/plain" 111 | }, 112 | "type": "any", 113 | "value": "{{accountName}}", 114 | "key": "accountName" 115 | }, 116 | { 117 | "description": { 118 | "content": "Environment to use. Used as part of the URL.", 119 | "type": "text/plain" 120 | }, 121 | "type": "any", 122 | "value": "{{environment}}", 123 | "key": "environment" 124 | } 125 | ] 126 | }, 127 | "header": [ 128 | { 129 | "description": { 130 | "content": "Added as a part of security scheme: apikey", 131 | "type": "text/plain" 132 | }, 133 | "key": "X-VTEX-API-AppKey", 134 | "value": "" 135 | }, 136 | { 137 | "disabled": false, 138 | "description": { 139 | "content": "(Required) Describes the type of the content being sent.", 140 | "type": "text/plain" 141 | }, 142 | "key": "Content-Type", 143 | "value": "application/json" 144 | }, 145 | { 146 | "disabled": false, 147 | "description": { 148 | "content": "(Required) HTTP Client Negotiation _Accept_ Header. Indicates the types of responses the client can understand.", 149 | "type": "text/plain" 150 | }, 151 | "key": "Accept", 152 | "value": "application/json" 153 | }, 154 | { 155 | "key": "Accept", 156 | "value": "application/json" 157 | } 158 | ], 159 | "method": "PUT", 160 | "body": {} 161 | }, 162 | "status": "OK", 163 | "code": 200, 164 | "header": [ 165 | { 166 | "key": "Content-Type", 167 | "value": "application/json" 168 | } 169 | ], 170 | "body": "\"OK\"", 171 | "cookie": [] 172 | } 173 | ], 174 | "event": [ 175 | { 176 | "listen": "test", 177 | "script": { 178 | "id": "a49db8d5-6550-4b1b-ac03-0c6c613d08e0", 179 | "type": "text/javascript", 180 | "exec": [ 181 | "// Validate status 2xx \npm.test(\"[PUT]::/api/catalog_system/pvt/virtualfolder/changeurischema/:protocol - Status code is 2xx\", function () {\n pm.response.to.be.success;\n});\n", 182 | "// Validate if response header has matching content-type\npm.test(\"[PUT]::/api/catalog_system/pvt/virtualfolder/changeurischema/:protocol - Content-Type is application/json\", function () {\n pm.expect(pm.response.headers.get(\"Content-Type\")).to.include(\"application/json\");\n});\n", 183 | "// Validate if response has JSON Body \npm.test(\"[PUT]::/api/catalog_system/pvt/virtualfolder/changeurischema/:protocol - Response has JSON Body\", function () {\n pm.response.to.have.jsonBody();\n});\n", 184 | "// Response Validation\nconst schema = {\"title\":\"Request Status\",\"description\":\"Message indicating that the request was successful.\",\"type\":\"string\",\"example\":\"OK\"}\n\n// Validate if response matches JSON schema \npm.test(\"[PUT]::/api/catalog_system/pvt/virtualfolder/changeurischema/:protocol - Schema is valid\", function() {\n pm.response.to.have.jsonSchema(schema,{unknownFormats: [\"int32\", \"int64\", \"float\", \"double\"]});\n});\n" 185 | ] 186 | } 187 | } 188 | ], 189 | "protocolProfileBehavior": { 190 | "disableBodyPruning": true 191 | } 192 | }, 193 | { 194 | "id": "59b1ff3e-8770-4b7d-a1de-6c3b41e18f3e", 195 | "name": "Update specific website comunication protocol", 196 | "request": { 197 | "name": "Update specific website comunication protocol", 198 | "description": { 199 | "content": "Updates a specific website protocol to `HTTP` or `HTTPS`", 200 | "type": "text/plain" 201 | }, 202 | "url": { 203 | "path": [ 204 | "api", 205 | "catalog_system", 206 | "pvt", 207 | "virtualfolder", 208 | "site", 209 | ":websiteId", 210 | "changeurischema", 211 | ":protocol" 212 | ], 213 | "host": [ 214 | "{{baseUrl}}" 215 | ], 216 | "query": [], 217 | "variable": [ 218 | { 219 | "disabled": false, 220 | "description": { 221 | "content": "(Required) Specific website ID.", 222 | "type": "text/plain" 223 | }, 224 | "type": "any", 225 | "value": "292c47c7-0b81-48f9-a5a0-dcf240100884", 226 | "key": "websiteId" 227 | }, 228 | { 229 | "disabled": false, 230 | "description": { 231 | "content": "(Required) Internet communication protocol, it can be `HTTP` or `HTTPS`.", 232 | "type": "text/plain" 233 | }, 234 | "type": "any", 235 | "value": "https", 236 | "key": "protocol" 237 | }, 238 | { 239 | "description": { 240 | "content": "Name of the VTEX account. Used as part of the URL.", 241 | "type": "text/plain" 242 | }, 243 | "type": "any", 244 | "value": "{{accountName}}", 245 | "key": "accountName" 246 | }, 247 | { 248 | "description": { 249 | "content": "Environment to use. Used as part of the URL.", 250 | "type": "text/plain" 251 | }, 252 | "type": "any", 253 | "value": "{{environment}}", 254 | "key": "environment" 255 | } 256 | ] 257 | }, 258 | "header": [ 259 | { 260 | "key": "Accept", 261 | "value": "application/json" 262 | } 263 | ], 264 | "method": "PUT" 265 | }, 266 | "response": [ 267 | { 268 | "_": { 269 | "postman_previewlanguage": "json" 270 | }, 271 | "id": "136d521a-b54f-48cb-9f79-6f0069e0f862", 272 | "name": "OK", 273 | "originalRequest": { 274 | "url": { 275 | "path": [ 276 | "api", 277 | "catalog_system", 278 | "pvt", 279 | "virtualfolder", 280 | "site", 281 | ":websiteId", 282 | "changeurischema", 283 | ":protocol" 284 | ], 285 | "host": [ 286 | "{{baseUrl}}" 287 | ], 288 | "query": [], 289 | "variable": [ 290 | { 291 | "disabled": false, 292 | "description": { 293 | "content": "(Required) Specific website ID.", 294 | "type": "text/plain" 295 | }, 296 | "type": "any", 297 | "value": "292c47c7-0b81-48f9-a5a0-dcf240100884", 298 | "key": "websiteId" 299 | }, 300 | { 301 | "disabled": false, 302 | "description": { 303 | "content": "(Required) Internet communication protocol, it can be `HTTP` or `HTTPS`.", 304 | "type": "text/plain" 305 | }, 306 | "type": "any", 307 | "value": "https", 308 | "key": "protocol" 309 | }, 310 | { 311 | "description": { 312 | "content": "Name of the VTEX account. Used as part of the URL.", 313 | "type": "text/plain" 314 | }, 315 | "type": "any", 316 | "value": "{{accountName}}", 317 | "key": "accountName" 318 | }, 319 | { 320 | "description": { 321 | "content": "Environment to use. Used as part of the URL.", 322 | "type": "text/plain" 323 | }, 324 | "type": "any", 325 | "value": "{{environment}}", 326 | "key": "environment" 327 | } 328 | ] 329 | }, 330 | "header": [ 331 | { 332 | "description": { 333 | "content": "Added as a part of security scheme: apikey", 334 | "type": "text/plain" 335 | }, 336 | "key": "X-VTEX-API-AppKey", 337 | "value": "" 338 | }, 339 | { 340 | "disabled": false, 341 | "description": { 342 | "content": "(Required) Describes the type of the content being sent.", 343 | "type": "text/plain" 344 | }, 345 | "key": "Content-Type", 346 | "value": "application/json" 347 | }, 348 | { 349 | "disabled": false, 350 | "description": { 351 | "content": "(Required) HTTP Client Negotiation _Accept_ Header. Indicates the types of responses the client can understand.", 352 | "type": "text/plain" 353 | }, 354 | "key": "Accept", 355 | "value": "application/json" 356 | }, 357 | { 358 | "key": "Accept", 359 | "value": "application/json" 360 | } 361 | ], 362 | "method": "PUT", 363 | "body": {} 364 | }, 365 | "status": "OK", 366 | "code": 200, 367 | "header": [ 368 | { 369 | "key": "Content-Type", 370 | "value": "application/json" 371 | } 372 | ], 373 | "body": "\"OK\"", 374 | "cookie": [] 375 | } 376 | ], 377 | "event": [ 378 | { 379 | "listen": "test", 380 | "script": { 381 | "id": "59de356a-bae3-4498-a40b-249e77359a64", 382 | "type": "text/javascript", 383 | "exec": [ 384 | "// Validate status 2xx \npm.test(\"[PUT]::/api/catalog_system/pvt/virtualfolder/site/:websiteId/changeurischema/:protocol - Status code is 2xx\", function () {\n pm.response.to.be.success;\n});\n", 385 | "// Validate if response header has matching content-type\npm.test(\"[PUT]::/api/catalog_system/pvt/virtualfolder/site/:websiteId/changeurischema/:protocol - Content-Type is application/json\", function () {\n pm.expect(pm.response.headers.get(\"Content-Type\")).to.include(\"application/json\");\n});\n", 386 | "// Validate if response has JSON Body \npm.test(\"[PUT]::/api/catalog_system/pvt/virtualfolder/site/:websiteId/changeurischema/:protocol - Response has JSON Body\", function () {\n pm.response.to.have.jsonBody();\n});\n", 387 | "// Response Validation\nconst schema = {\"title\":\"Request Status\",\"description\":\"Message indicating that the request was successful.\",\"type\":\"string\",\"example\":\"OK\"}\n\n// Validate if response matches JSON schema \npm.test(\"[PUT]::/api/catalog_system/pvt/virtualfolder/site/:websiteId/changeurischema/:protocol - Schema is valid\", function() {\n pm.response.to.have.jsonSchema(schema,{unknownFormats: [\"int32\", \"int64\", \"float\", \"double\"]});\n});\n" 388 | ] 389 | } 390 | } 391 | ], 392 | "protocolProfileBehavior": { 393 | "disableBodyPruning": true 394 | } 395 | } 396 | ], 397 | "event": [] 398 | } 399 | ], 400 | "auth": { 401 | "type": "apikey", 402 | "apikey": [ 403 | { 404 | "type": "any", 405 | "value": "X-VTEX-API-AppKey", 406 | "key": "key" 407 | }, 408 | { 409 | "type": "any", 410 | "value": "{{apiKey}}", 411 | "key": "value" 412 | }, 413 | { 414 | "type": "any", 415 | "value": "header", 416 | "key": "in" 417 | } 418 | ] 419 | }, 420 | "event": [], 421 | "variable": [ 422 | { 423 | "description": { 424 | "content": "Name of the VTEX account. Used as part of the URL.", 425 | "type": "text/plain" 426 | }, 427 | "type": "any", 428 | "value": "{accountName}", 429 | "key": "accountName" 430 | }, 431 | { 432 | "description": { 433 | "content": "Environment to use. Used as part of the URL.", 434 | "type": "text/plain" 435 | }, 436 | "type": "any", 437 | "value": "{environment}", 438 | "key": "environment" 439 | }, 440 | { 441 | "type": "string", 442 | "value": "https://{{accountName}}.{{environment}}.com.br", 443 | "key": "baseUrl" 444 | } 445 | ], 446 | "info": { 447 | "_postman_id": "ef32aafa-b2ca-461e-a4bb-27619aaad425", 448 | "name": "CMS API", 449 | "schema": "https://schema.getpostman.com/json/collection/v2.1.0/collection.json", 450 | "description": { 451 | "content": "", 452 | "type": "text/plain" 453 | } 454 | } 455 | } -------------------------------------------------------------------------------- /PostmanCollections/VTEX - Data Subject Rights.json: -------------------------------------------------------------------------------- 1 | { 2 | "_": { 3 | "postman_id": "e6c7cc60-d8d1-4275-a3fe-2c16a846df53" 4 | }, 5 | "item": [ 6 | { 7 | "id": "a3b3247f-c417-4694-bfe3-fca1ab931fe1", 8 | "name": "Data Subject Rights", 9 | "description": { 10 | "content": "", 11 | "type": "text/plain" 12 | }, 13 | "item": [ 14 | { 15 | "id": "d701cb38-3e2a-436b-9778-ea61fbad91c8", 16 | "name": "Erase customer data", 17 | "request": { 18 | "name": "Erase customer data", 19 | "description": { 20 | "content": "Deletes a given customer's data collected in your store by Checkout, Orders, VTEX ID and Profile System.\r\n\r\n> Only orders with `invoiced` or `canceled` status are erased in this request.\r\n\r\n>❗ This API is currently in closed alpha testing stage, which means that only specific customers can access it now. Do not share this documentation with people outside of your company. If you do not have access yet, please refer to the [Erasing customer data](https://help.vtex.com/en/tutorial/erasing-customer-data--1R9Fn7A06Ifj4R9YD4JTKU) guide instead.\r\n\r\n>⚠️ This endpoint is only compatible with stores using the PII data architecture from [Data Protection Plus](https://developers.vtex.com/docs/guides/data-protection-plus), which is in closed beta phase, only available in select regions.\r\n>\r\n> This feature is part of [VTEX Shield](https://help.vtex.com/en/tutorial/vtex-shield--2CVk6H9eY2CBtHjtDI7BFh). If you are already a VTEX customer and want to adopt VTEX Shield for your business, please contact [Commercial Support](https://help.vtex.com/en/tracks/support-at-vtex--4AXsGdGHqExp9ZkiNq9eMy/3KQWGgkPOwbFTPfBxL7YwZ). Additional fees may apply. If you are not yet a customer but are interested in this solution, please complete our [contact form](https://vtex.com/us-en/contact/).", 21 | "type": "text/plain" 22 | }, 23 | "url": { 24 | "path": [ 25 | "api", 26 | "user-rights", 27 | "createAndProcessDeleteUserData" 28 | ], 29 | "host": [ 30 | "{{baseUrl}}" 31 | ], 32 | "query": [ 33 | { 34 | "disabled": true, 35 | "description": { 36 | "content": "Name of your VTEX account.", 37 | "type": "text/plain" 38 | }, 39 | "key": "an", 40 | "value": "mystore" 41 | } 42 | ], 43 | "variable": [] 44 | }, 45 | "header": [ 46 | { 47 | "disabled": false, 48 | "description": { 49 | "content": "(Required) Type of the content being sent.", 50 | "type": "text/plain" 51 | }, 52 | "key": "Content-Type", 53 | "value": "application/json" 54 | }, 55 | { 56 | "disabled": false, 57 | "description": { 58 | "content": "(Required) HTTP Client Negotiation _Accept_ Header. Indicates the types of responses the client can understand.", 59 | "type": "text/plain" 60 | }, 61 | "key": "Accept", 62 | "value": "application/json" 63 | } 64 | ], 65 | "method": "POST", 66 | "body": { 67 | "mode": "raw", 68 | "raw": "{\n \"email\": \"john@mail.com\"\n}", 69 | "options": { 70 | "raw": { 71 | "language": "json" 72 | } 73 | } 74 | } 75 | }, 76 | "response": [ 77 | { 78 | "_": { 79 | "postman_previewlanguage": "json" 80 | }, 81 | "id": "09aa4add-09e3-4ead-8b04-a8e272b05795", 82 | "name": "OK", 83 | "originalRequest": { 84 | "url": { 85 | "path": [ 86 | "api", 87 | "user-rights", 88 | "createAndProcessDeleteUserData" 89 | ], 90 | "host": [ 91 | "{{baseUrl}}" 92 | ], 93 | "query": [ 94 | { 95 | "key": "an", 96 | "value": "mystore" 97 | } 98 | ], 99 | "variable": [] 100 | }, 101 | "header": [ 102 | { 103 | "description": { 104 | "content": "Added as a part of security scheme: apikey", 105 | "type": "text/plain" 106 | }, 107 | "key": "X-VTEX-API-AppKey", 108 | "value": "" 109 | }, 110 | { 111 | "disabled": false, 112 | "description": { 113 | "content": "(Required) Type of the content being sent.", 114 | "type": "text/plain" 115 | }, 116 | "key": "Content-Type", 117 | "value": "application/json" 118 | }, 119 | { 120 | "disabled": false, 121 | "description": { 122 | "content": "(Required) HTTP Client Negotiation _Accept_ Header. Indicates the types of responses the client can understand.", 123 | "type": "text/plain" 124 | }, 125 | "key": "Accept", 126 | "value": "application/json" 127 | }, 128 | { 129 | "key": "Accept", 130 | "value": "application/json" 131 | } 132 | ], 133 | "method": "POST", 134 | "body": { 135 | "mode": "raw", 136 | "raw": "{\n \"email\": \"john@mail.com\"\n}", 137 | "options": { 138 | "raw": { 139 | "language": "json" 140 | } 141 | } 142 | } 143 | }, 144 | "status": "OK", 145 | "code": 200, 146 | "header": [ 147 | { 148 | "key": "Content-Type", 149 | "value": "application/json" 150 | } 151 | ], 152 | "body": "{\n \"uuid\": \"3e2f53dc-b099-4dc8-9727-581b2a97f39c\",\n \"requestType\": \"Removal\",\n \"email\": \"pedido2@vtexchallenge.com\",\n \"status\": \"Completed\",\n \"dataResponse\": \"{\\r\\n \\\"VTEX Checkout\\\": [],\\r\\n \\\"orders\\\": {\\r\\n \\\"dataStatus\\\": {\\r\\n \\\"status\\\": \\\"anonymized\\\",\\r\\n \\\"reason\\\": \\\"Sensitive information was anonymized rather than deleted to preserve the store metrics.\\\",\\r\\n \\\"evidence\\\": \\\"Anonymized [0] orders\\\",\\r\\n \\\"dryRun\\\": true\\r\\n },\\r\\n \\\"orders\\\": []\\r\\n },\\r\\n \\\"Profile System PII API\\\": {},\\r\\n \\\"VTEX ID\\\": {\\r\\n \\\"type\\\": \\\"https://tools.ietf.org/html/rfc7231#section-6.5.4\\\",\\r\\n \\\"title\\\": \\\"Not Found\\\",\\r\\n \\\"status\\\": 404,\\r\\n \\\"traceId\\\": \\\"00-65d5abf9263b07eb185beee49e2075dc-b67b373e2e93dcf8-00\\\"\\r\\n }\\r\\n}\",\n \"requestTime\": \"2023-09-05T17:19:33.1969022-03:00\",\n \"applications\": [\n {\n \"application\": \"chk\",\n \"status\": \"Deleted\",\n \"errorDetail\": \"\",\n \"updateAt\": \"2023-09-05T20:20:23\"\n },\n {\n \"application\": \"orders\",\n \"status\": \"Deleted\",\n \"errorDetail\": \"\",\n \"updateAt\": \"2023-09-05T20:20:25\"\n },\n {\n \"application\": \"profileSystemV2\",\n \"status\": \"Deleted\",\n \"errorDetail\": \"\",\n \"updateAt\": \"2023-09-05T20:20:26\"\n },\n {\n \"application\": \"vid\",\n \"status\": \"Deleted\",\n \"errorDetail\": \"\",\n \"updateAt\": \"2023-09-05T20:20:29\"\n }\n ]\n}", 153 | "cookie": [] 154 | } 155 | ], 156 | "event": [ 157 | { 158 | "listen": "test", 159 | "script": { 160 | "id": "13f40c1f-b5fe-4f63-81e0-1d00f7d07000", 161 | "type": "text/javascript", 162 | "exec": [ 163 | "// Validate status 2xx \npm.test(\"[POST]::/api/user-rights/createAndProcessDeleteUserData - Status code is 2xx\", function () {\n pm.response.to.be.success;\n});\n", 164 | "// Validate if response header has matching content-type\npm.test(\"[POST]::/api/user-rights/createAndProcessDeleteUserData - Content-Type is application/json\", function () {\n pm.expect(pm.response.headers.get(\"Content-Type\")).to.include(\"application/json\");\n});\n", 165 | "// Validate if response has JSON Body \npm.test(\"[POST]::/api/user-rights/createAndProcessDeleteUserData - Response has JSON Body\", function () {\n pm.response.to.have.jsonBody();\n});\n", 166 | "// Response Validation\nconst schema = {\"type\":\"object\",\"properties\":{\"uuid\":{\"type\":\"string\",\"description\":\"User data rights request unique identifier in [UUID](https://www.uuidtools.com/what-is-uuid) format.\"},\"requestType\":{\"type\":\"string\",\"description\":\"Type of user data rights request.\"},\"email\":{\"type\":\"string\",\"description\":\"Client email.\"},\"status\":{\"type\":\"string\",\"description\":\"Status of the user data rights request.\"},\"dataResponse\":{\"type\":\"string\",\"description\":\"Escaped JSON containing information about the status of data deletion on each VTEX system that stores client data.\"},\"requestTime\":{\"type\":\"string\",\"description\":\"Date of the user data rights request in [ISO 8601](https://www.iso.org/iso-8601-date-and-time-format.html)format.\"},\"applications\":{\"type\":\"array\",\"description\":\"Array containing an object for each VTEX application that stores client data.\",\"items\":{\"type\":\"object\",\"description\":\"Object containing information about user data status in each VTEX application that stores client data.\",\"properties\":{\"application\":{\"type\":\"string\",\"description\":\"Abbreviated name of the application, which can be `chk` (Checkout), `orders` (Order Management System), `profileSystemV2` (PII Profile System) or `vid` (VTEX ID).\"},\"status\":{\"type\":\"string\",\"description\":\"Status of client data in the given application. The possible values are:\\n\\r- `Completed` - Processing completed successfully.\\n\\r- `Error` - An unexpected error occurred during the process. You must make a new request.\\n\\r- `PendingCheck` - Pending validation. Unable to perform validation on one or more services.\\n\\r- `Blocked` - Pending validation. One or more services are unable to fulfill the deletion request. You need to wait and make a new request in the future.\\n\\r- `PendingDeletion` - It was not possible to delete data in one or more services. You must make a new request.\"},\"errorDetail\":{\"type\":\"string\",\"description\":\"In case of error, this field contains an explanatory error message. Otherwise, this field is an empty string.\"},\"updateAt\":{\"type\":\"string\",\"description\":\"Date of the latest update in client data in the given application, in UTC format.\"}}}}}}\n\n// Validate if response matches JSON schema \npm.test(\"[POST]::/api/user-rights/createAndProcessDeleteUserData - Schema is valid\", function() {\n pm.response.to.have.jsonSchema(schema,{unknownFormats: [\"int32\", \"int64\", \"float\", \"double\"]});\n});\n" 167 | ] 168 | } 169 | } 170 | ], 171 | "protocolProfileBehavior": { 172 | "disableBodyPruning": true 173 | } 174 | } 175 | ], 176 | "event": [] 177 | } 178 | ], 179 | "auth": { 180 | "type": "apikey", 181 | "apikey": [ 182 | { 183 | "type": "any", 184 | "value": "X-VTEX-API-AppKey", 185 | "key": "key" 186 | }, 187 | { 188 | "type": "any", 189 | "value": "{{apiKey}}", 190 | "key": "value" 191 | }, 192 | { 193 | "type": "any", 194 | "value": "header", 195 | "key": "in" 196 | } 197 | ] 198 | }, 199 | "event": [], 200 | "variable": [ 201 | { 202 | "type": "string", 203 | "value": "http://api.vtex.com", 204 | "key": "baseUrl" 205 | } 206 | ], 207 | "info": { 208 | "_postman_id": "e6c7cc60-d8d1-4275-a3fe-2c16a846df53", 209 | "name": "Data Subject Rights API - PII data architecture", 210 | "schema": "https://schema.getpostman.com/json/collection/v2.1.0/collection.json", 211 | "description": { 212 | "content": ">❗ This API is currently in closed alpha testing stage, which means that only specific customers can access it now. Do not share this documentation with people outside of your company. If you do not have access yet, please refer to the [Erasing customer data](https://help.vtex.com/en/tutorial/erasing-customer-data--1R9Fn7A06Ifj4R9YD4JTKU) guide instead.\r\n\r\n>⚠️ The **Data Subject Rights API - PII data architecture** is only compatible with stores using the PII data architecture from [Data Protection Plus](https://developers.vtex.com/docs/guides/data-protection-plus), which is in closed beta phase, only available in select regions.\r\n>\r\n> This feature is part of [VTEX Shield](https://help.vtex.com/en/tutorial/vtex-shield--2CVk6H9eY2CBtHjtDI7BFh). If you are already a VTEX customer and want to adopt VTEX Shield for your business, please contact [Commercial Support](https://help.vtex.com/en/tracks/support-at-vtex--4AXsGdGHqExp9ZkiNq9eMy/3KQWGgkPOwbFTPfBxL7YwZ). Additional fees may apply. If you are not yet a customer but are interested in this solution, please complete our [contact form](https://vtex.com/us-en/contact/).\r\n\r\nAccording to data protection policies, such as [GDPR and LGPD](https://vtex.com/us-en/privacy-and-agreements/vtex-commitment/), companies using customer personal data are required to delete collected information upon the customer's request.\r\n\r\nData Subject Rights API allows stores using the [PII data architecture](https://developers.vtex.com/docs/guides/pii-data-architecture-specifications) from [Data Protection Plus](https://developers.vtex.com/docs/guides/data-protection-plus) to erase user data collected by Checkout, Orders, VTEX ID and Profile System, without depending on the VTEX Support flow described in the [Erasing customer data](https://help.vtex.com/en/tutorial/erasing-customer-data--1R9Fn7A06Ifj4R9YD4JTKU) guide.\r\n\r\n## Index\r\n\r\n- `POST` [Erase customer data](https://developers.vtex.com/docs/api-reference/user-data-rights-api#post-/api/user-rights/createAndProcessDeleteUserData)", 213 | "type": "text/plain" 214 | } 215 | } 216 | } -------------------------------------------------------------------------------- /PostmanCollections/VTEX - Intelligent Search Events API - Headless.json: -------------------------------------------------------------------------------- 1 | { 2 | "_": { 3 | "postman_id": "98c860ee-2779-4a3f-95c1-5bbaff19c696" 4 | }, 5 | "item": [ 6 | { 7 | "id": "e4f0e417-2665-403f-9695-110d8126032c", 8 | "name": "Events", 9 | "description": { 10 | "content": "", 11 | "type": "text/plain" 12 | }, 13 | "item": [ 14 | { 15 | "id": "02fc4f7e-98aa-4b97-aceb-3e0becad8a96", 16 | "name": "Save events", 17 | "request": { 18 | "name": "Save events", 19 | "description": { 20 | "content": "Creates search events to integrate with VTEX Intelligent Search using a headless implementation. \r\n\r\nRead [VTEX Intelligent Search Events API - Headless - Overview](https://developers.vtex.com/docs/api-reference/intelligent-search-events-api-headless) for more information on event types and user identification.\r\n\r\n>⚠️ **This API applies only to Headless scenarios**. It doesn't apply to stores using VTEX's storefront solution, natively integrated with Intelligent Search\r\n\r\n## Permissions\r\n\r\nThis endpoint does not require [authentication](https://developers.vtex.com/docs/guides/authentication) or [permissions](https://help.vtex.com/en/tutorial/license-manager-resources--3q6ztrC8YynQf6rdc6euk3).", 21 | "type": "text/plain" 22 | }, 23 | "url": { 24 | "path": [ 25 | "event" 26 | ], 27 | "host": [ 28 | "{{baseUrl}}" 29 | ], 30 | "query": [], 31 | "variable": [ 32 | { 33 | "disabled": false, 34 | "description": { 35 | "content": "(Required) Name of the VTEX account. Used as part of the URL.", 36 | "type": "text/plain" 37 | }, 38 | "type": "any", 39 | "value": "apiexamples", 40 | "key": "accountName" 41 | } 42 | ] 43 | }, 44 | "header": [ 45 | { 46 | "key": "Content-Type", 47 | "value": "application/json" 48 | } 49 | ], 50 | "method": "POST", 51 | "body": { 52 | "mode": "raw", 53 | "raw": "{\n \"session\": \"df66a4d239864d2e8497c89aea14a3ad\",\n \"anonymous\": \"eed429ecf04a4a23ae7f4429033b48cd\",\n \"url\": \"https://example.com/search/?query=zapatilha\",\n \"agent\": \"Mozilla/5.0 (Macintosh; Intel Mac OS X 10.15; rv:83.0) Gecko/20100101 Firefox/83.0\",\n \"type\": \"search.query\",\n \"text\": \"zapatilha\",\n \"misspelled\": true,\n \"match\": 392,\n \"operator\": \"and\"\n}", 54 | "options": { 55 | "raw": { 56 | "headerFamily": "json", 57 | "language": "json" 58 | } 59 | } 60 | } 61 | }, 62 | "response": [ 63 | { 64 | "_": { 65 | "postman_previewlanguage": "text" 66 | }, 67 | "id": "b7657979-ba01-4e44-8ee6-4d813a1f642c", 68 | "name": "No content", 69 | "originalRequest": { 70 | "url": { 71 | "path": [ 72 | "event" 73 | ], 74 | "host": [ 75 | "{{baseUrl}}" 76 | ], 77 | "query": [], 78 | "variable": [] 79 | }, 80 | "header": [ 81 | { 82 | "key": "Content-Type", 83 | "value": "application/json" 84 | } 85 | ], 86 | "method": "POST", 87 | "body": { 88 | "mode": "raw", 89 | "raw": "{\n \"session\": \"df66a4d239864d2e8497c89aea14a3ad\",\n \"anonymous\": \"eed429ecf04a4a23ae7f4429033b48cd\",\n \"url\": \"https://example.com/search/?query=zapatilha\",\n \"agent\": \"Mozilla/5.0 (Macintosh; Intel Mac OS X 10.15; rv:83.0) Gecko/20100101 Firefox/83.0\",\n \"type\": \"search.query\",\n \"text\": \"zapatilha\",\n \"misspelled\": true,\n \"match\": 392,\n \"operator\": \"and\"\n}", 90 | "options": { 91 | "raw": { 92 | "headerFamily": "json", 93 | "language": "json" 94 | } 95 | } 96 | } 97 | }, 98 | "status": "No Content", 99 | "code": 204, 100 | "header": [], 101 | "cookie": [] 102 | } 103 | ], 104 | "event": [ 105 | { 106 | "listen": "test", 107 | "script": { 108 | "id": "67cbcde2-6263-4d3d-a991-15472a689805", 109 | "type": "text/javascript", 110 | "exec": [ 111 | "// Validate status 2xx \npm.test(\"[POST]::/event - Status code is 2xx\", function () {\n pm.response.to.be.success;\n});\n", 112 | "// Validate if response has empty Body \npm.test(\"[POST]::/event - Response has empty Body\", function () {\n pm.response.to.not.be.withBody;\n});\n" 113 | ] 114 | } 115 | } 116 | ], 117 | "protocolProfileBehavior": { 118 | "disableBodyPruning": true 119 | } 120 | } 121 | ], 122 | "event": [] 123 | } 124 | ], 125 | "event": [], 126 | "variable": [ 127 | { 128 | "type": "any", 129 | "value": "apiexamples", 130 | "key": "accountName" 131 | }, 132 | { 133 | "type": "any", 134 | "value": "https://sp.vtex.com/event-api/v1/{{accountName}}", 135 | "key": "baseUrl" 136 | } 137 | ], 138 | "info": { 139 | "_postman_id": "98c860ee-2779-4a3f-95c1-5bbaff19c696", 140 | "name": "VTEX Intelligent Search Events API - Headless", 141 | "schema": "https://schema.getpostman.com/json/collection/v2.1.0/collection.json", 142 | "description": { 143 | "content": "Intelligent Search Events API is responsible for collecting the search events to improve your search results, such as page interactions and conversion, in a headless implementation. Some of the features improved by this collection are the possibility to sort the products by clicks or record the top search in the autocomplete.\r\n\r\n>⚠️ **This API applies only to Headless scenarios**. It doesn't apply to stores using Store Framework, since they are already integrated with all Intelligent Search features.\r\n\r\n## Building the request body\r\n\r\nIn the following sections, we explain the required structure for the request body for saving events. Check the `POST` [Save events](https://developers.vtex.com/docs/api-reference/intelligent-search-events-api-headless#post-/event) endpoint reference for more detailed field descriptions and examples.\r\n\r\nFull request example (Session Ping):\r\n\r\n```json\r\ncurl --request post \\\r\n\t--url https://sp.vtex.com/event-api/v1/{accountName}/event \\\r\n\t--header 'Content-Type: application/json' \\\r\n\t--data '{\"session\":\"df66a4d239864d2e8497c89aea14a3ad\",\"anonymous\":\"eed429ecf04a4a23ae7f4429033b48cd\",\"url\":\"https://example.com/search/?query=zapatilha\",\"agent\":\"Mozilla/5.0 (Macintosh; Intel Mac OS X 10.15; rv:83.0) Gecko/20100101 Firefox/83.0\",\"type\":\"search.query\",\"text\":\"zapatilha\",\"misspelled\":true,\"match\":392,\"operator\":\"and\"}'\r\n```\r\n\r\n### User identification\r\n\r\nTo identify the user, there are two required identifiers: `session` and `anonymous`. We recommend using a [Universally Unique Identifier (UUID) v4](https://developer.mozilla.org/en-US/docs/Web/API/Crypto/randomUUID) without dashes.\r\n\r\nSample JavaScript code to generate a random UUID without dashes:\r\n\r\n```js\r\nwindow.crypto.randomUUID().replaceAll('-', '')\r\n```\r\n\r\n>⚠️ The `session` and `anonymous` identifiers need to be sent in every request.\r\n\r\n\r\n### Event type\r\n\r\nTo identify the events that occur in our search, the `type` field is required in the request. The most common event types are the following:\r\n\r\n| Event type | Value | Description |\r\n| - | - | - |\r\n| Session Ping | `session.ping` | Sends an ACK to the API to renew the session server-side. It should be sent every 1 minute. |\r\n| Page Confirmation |`page.confirmation` | Sends a confirmation informing the products that were bought. |\r\n| Search Click | `search.click` | Sends an event every time a shopper clicks on a product from a search page. |\r\n| Search Query | `search.query` | Sends a query event every time the shopper makes a full-text search. |\r\n\r\n### Optional fields\r\n\r\nInformation to identify where the context of that request came from: `agent` and `URL`. Read the API reference for more information on each field.\r\n\r\n### Request body examples per event type\r\n\r\nThe body is built by combining the user information, the event type, and add the optional fields. Below there is an example for each type of event.\r\n\r\n#### Session Ping\r\n\r\n\r\n```json\r\n{\r\n\t\"session\":\"df66a4d239864d2e8497c89aea14a3ad\",\r\n\t\"anonymous\":\"eed429ecf04a4a23ae7f4429033b48cd\",\r\n\t\"url\":\"https://example.com/search/?query=zapatilha\",\r\n\t\"agent\":\"Mozilla/5.0 (Macintosh; Intel Mac OS X 10.15; rv:83.0) Gecko/20100101 Firefox/83.0\",\r\n\t\"type\":\"session.ping\"\r\n}\r\n```\r\n\r\n#### Page Confirmation\r\n\r\n```json\r\n{\r\n \"session\":\"df66a4d239864d2e8497c89aea14a3ad\",\r\n \"anonymous\":\"eed429ecf04a4a23ae7f4429033b48cd\",\r\n \"products\": [\r\n {\r\n \"productId\": \"ABC123\",\r\n \"price\": 9.99,\r\n \"quantity\": 3\r\n },\r\n {\r\n \"productId\": \"XYZ789\",\r\n \"price\": 5.99,\r\n \"quantity\": 2\r\n }\r\n ],\r\n \"order\": \"123ABC\",\r\n \"type\": \"page.confirmation\"\r\n}\r\n```\r\n\r\n#### Search Click\r\n\r\n```json\r\n{\r\n\t\"type\": \"search.click\",\r\n\t\"productId\": \"12345\",\r\n\t\"position\": 1,\r\n\t\"url\": \"https://example.com/s?q=pneu&sort=score_desc&page=0\",\r\n\t\"text\": \"pneu\",\r\n\t\"agent\": \"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/114.0.0.0 Safari/537.36\",\r\n\t\"anonymous\": \"1ce47e50-3f10-4556-95d3-57d4881c03a4\",\r\n\t\"session\": \"51a53ce3-096d-4740-a6d0-3cf86085ba13\"\r\n}\r\n```\r\n\r\n#### Search Query\r\n\r\n```json\r\n{\r\n\t\"session\":\"df66a4d239864d2e8497c89aea14a3ad\",\r\n\t\"anonymous\":\"eed429ecf04a4a23ae7f4429033b48cd\",\r\n\t\"url\":\"https://example.com/search/?query=zapatilha\",\r\n\t\"agent\":\"Mozilla/5.0 (Macintosh; Intel Mac OS X 10.15; rv:83.0) Gecko/20100101 Firefox/83.0\",\r\n\t\"type\":\"search.query\",\r\n\t\"text\":\"zapatilha\",\r\n\t\"misspelled\":true,\r\n\t\"match\":392,\r\n\t\"operator\":\"and\"\r\n}\r\n```\r\n\r\n### Finding search query information\r\n\r\nSearch query information is possible to find in the Intelligent Search GraphQL response. To retrieve the information above, add operator, fuzzy, and correction attributes in the GraphQL query. Example:\r\n\r\n```graphql\r\nquery {\r\n productSearch(fullText: \"id:43534\") {\r\n products {\r\n productId\r\n productName\r\n ...\r\n }\r\n operator\r\n fuzzy\r\n correction{ \r\n misspelled\r\n }\r\n }\r\n}\r\n```", 144 | "type": "text/plain" 145 | } 146 | } 147 | } -------------------------------------------------------------------------------- /PostmanCollections/VTEX - Message Center API.json: -------------------------------------------------------------------------------- 1 | { 2 | "_": { 3 | "postman_id": "fce4104c-7e9a-4fd8-8d45-41a15f772c9e" 4 | }, 5 | "item": [ 6 | { 7 | "id": "4124a4e7-abdb-4118-9abb-0ff257d30fd9", 8 | "name": "DKIM configuration", 9 | "description": { 10 | "content": "", 11 | "type": "text/plain" 12 | }, 13 | "item": [ 14 | { 15 | "id": "a6e7600f-7e3c-42df-8d92-36039ab42278", 16 | "name": "Generate DKIM keys", 17 | "request": { 18 | "name": "Generate DKIM keys", 19 | "description": { 20 | "content": "Create [DKIM keys](https://developers.vtex.com/docs/guides/setting-up-dkim-for-transactional-emails) for a sender that was [setup](https://help.vtex.com/en/tracks/transactional-emails--6IkJwttMw5T84mlY9RifRP/42LVaxtFb2VHX9xTZU58qC) in VTEX mail servers. \r\n\r\n## Permissions\r\n\r\nAny user or [application key](https://developers.vtex.com/docs/guides/api-authentication-using-application-keys) must have at least one of the appropriate [License Manager resources](https://help.vtex.com/en/tutorial/license-manager-resources--3q6ztrC8YynQf6rdc6euk3) to be able to successfully run this request. Otherwise they will receive a status code `403` error. These are the applicable resources for this endpoint:\r\n\r\n| **Product** | **Category** | **Resource** |\r\n| --------------- | ----------------- | ----------------- |\r\n| Message Center | Providers | **Add or edit provider** |\r\n\r\nThere are no applicable [predefined roles](https://help.vtex.com/en/tutorial/predefined-roles--jGDurZKJHvHJS13LnO7Dy) for this resource list. You must [create a custom role](https://help.vtex.com/en/tutorial/roles--7HKK5Uau2H6wxE1rH5oRbc#creating-a-role) and add at least one of the resources above in order to use this endpoint. To learn more about machine authentication at VTEX, see [Authentication overview](https://developers.vtex.com/docs/guides/authentication).\r\n\r\n>❗ To prevent integrations from having excessive permissions, consider the [best practices for managing app keys](https://help.vtex.com/en/tutorial/best-practices-application-keys--7b6nD1VMHa49aI5brlOvJm) when assigning License Manager roles to integrations.", 21 | "type": "text/plain" 22 | }, 23 | "url": { 24 | "path": [ 25 | "api", 26 | "mail-service", 27 | "pvt", 28 | "providers", 29 | ":EmailProvider", 30 | "dkim" 31 | ], 32 | "host": [ 33 | "{{baseUrl}}" 34 | ], 35 | "query": [], 36 | "variable": [ 37 | { 38 | "disabled": false, 39 | "description": { 40 | "content": "(Required) Email address for the sender that was setup in VTEX mail servers.", 41 | "type": "text/plain" 42 | }, 43 | "type": "any", 44 | "value": "help@valdie.co", 45 | "key": "EmailProvider" 46 | }, 47 | { 48 | "description": { 49 | "content": "Name of the VTEX account. Used as part of the URL.", 50 | "type": "text/plain" 51 | }, 52 | "type": "any", 53 | "value": "{{accountName}}", 54 | "key": "accountName" 55 | }, 56 | { 57 | "description": { 58 | "content": "Environment to use. Used as part of the URL. (This can only be one of vtexcommercestable)", 59 | "type": "text/plain" 60 | }, 61 | "type": "any", 62 | "value": "{{environment}}", 63 | "key": "environment" 64 | } 65 | ] 66 | }, 67 | "header": [ 68 | { 69 | "key": "Accept", 70 | "value": "application/json" 71 | } 72 | ], 73 | "method": "POST" 74 | }, 75 | "response": [ 76 | { 77 | "_": { 78 | "postman_previewlanguage": "json" 79 | }, 80 | "id": "622f78c7-9bc6-4843-afd3-e17f04d23335", 81 | "name": "OK", 82 | "originalRequest": { 83 | "url": { 84 | "path": [ 85 | "api", 86 | "mail-service", 87 | "pvt", 88 | "providers", 89 | ":EmailProvider", 90 | "dkim" 91 | ], 92 | "host": [ 93 | "{{baseUrl}}" 94 | ], 95 | "query": [], 96 | "variable": [ 97 | { 98 | "disabled": false, 99 | "description": { 100 | "content": "(Required) Email address for the sender that was setup in VTEX mail servers.", 101 | "type": "text/plain" 102 | }, 103 | "type": "any", 104 | "value": "help@valdie.co", 105 | "key": "EmailProvider" 106 | }, 107 | { 108 | "description": { 109 | "content": "Name of the VTEX account. Used as part of the URL.", 110 | "type": "text/plain" 111 | }, 112 | "type": "any", 113 | "value": "{{accountName}}", 114 | "key": "accountName" 115 | }, 116 | { 117 | "description": { 118 | "content": "Environment to use. Used as part of the URL. (This can only be one of vtexcommercestable)", 119 | "type": "text/plain" 120 | }, 121 | "type": "any", 122 | "value": "{{environment}}", 123 | "key": "environment" 124 | } 125 | ] 126 | }, 127 | "header": [ 128 | { 129 | "description": { 130 | "content": "Added as a part of security scheme: apikey", 131 | "type": "text/plain" 132 | }, 133 | "key": "X-VTEX-API-AppKey", 134 | "value": "" 135 | }, 136 | { 137 | "key": "Accept", 138 | "value": "application/json" 139 | } 140 | ], 141 | "method": "POST", 142 | "body": {} 143 | }, 144 | "status": "OK", 145 | "code": 200, 146 | "header": [ 147 | { 148 | "key": "Content-Type", 149 | "value": "application/json" 150 | } 151 | ], 152 | "body": "{\n \"status\": \"emailNotFound\",\n \"dkimKeys\": null\n}", 153 | "cookie": [] 154 | }, 155 | { 156 | "_": { 157 | "postman_previewlanguage": "json" 158 | }, 159 | "id": "67fddad3-5afd-4877-a30e-1b541d4eef6a", 160 | "name": "Unauthorized", 161 | "originalRequest": { 162 | "url": { 163 | "path": [ 164 | "api", 165 | "mail-service", 166 | "pvt", 167 | "providers", 168 | ":EmailProvider", 169 | "dkim" 170 | ], 171 | "host": [ 172 | "{{baseUrl}}" 173 | ], 174 | "query": [], 175 | "variable": [ 176 | { 177 | "disabled": false, 178 | "description": { 179 | "content": "(Required) Email address for the sender that was setup in VTEX mail servers.", 180 | "type": "text/plain" 181 | }, 182 | "type": "any", 183 | "value": "help@valdie.co", 184 | "key": "EmailProvider" 185 | }, 186 | { 187 | "description": { 188 | "content": "Name of the VTEX account. Used as part of the URL.", 189 | "type": "text/plain" 190 | }, 191 | "type": "any", 192 | "value": "{{accountName}}", 193 | "key": "accountName" 194 | }, 195 | { 196 | "description": { 197 | "content": "Environment to use. Used as part of the URL. (This can only be one of vtexcommercestable)", 198 | "type": "text/plain" 199 | }, 200 | "type": "any", 201 | "value": "{{environment}}", 202 | "key": "environment" 203 | } 204 | ] 205 | }, 206 | "header": [ 207 | { 208 | "description": { 209 | "content": "Added as a part of security scheme: apikey", 210 | "type": "text/plain" 211 | }, 212 | "key": "X-VTEX-API-AppKey", 213 | "value": "" 214 | }, 215 | { 216 | "key": "Accept", 217 | "value": "application/json" 218 | } 219 | ], 220 | "method": "POST", 221 | "body": {} 222 | }, 223 | "status": "Unauthorized", 224 | "code": 401, 225 | "header": [ 226 | { 227 | "key": "Content-Type", 228 | "value": "application/json" 229 | } 230 | ], 231 | "body": "{\n \"type\": \"https://tools.ietf.org/html/rfc7235#section-3.1\",\n \"title\": \"Unauthorized\",\n \"status\": 401,\n \"traceId\": \"00-f8949e0e2a80ff4481b4375908349701-a6a7ecf8b50a2043-00\"\n}", 232 | "cookie": [] 233 | } 234 | ], 235 | "event": [ 236 | { 237 | "listen": "test", 238 | "script": { 239 | "id": "e68dc44c-cf9b-4249-bd21-059ec0dd47d3", 240 | "type": "text/javascript", 241 | "exec": [ 242 | "// Validate status 2xx \npm.test(\"[POST]::/api/mail-service/pvt/providers/:EmailProvider/dkim - Status code is 2xx\", function () {\n pm.response.to.be.success;\n});\n", 243 | "// Validate if response header has matching content-type\npm.test(\"[POST]::/api/mail-service/pvt/providers/:EmailProvider/dkim - Content-Type is application/json\", function () {\n pm.expect(pm.response.headers.get(\"Content-Type\")).to.include(\"application/json\");\n});\n", 244 | "// Validate if response has JSON Body \npm.test(\"[POST]::/api/mail-service/pvt/providers/:EmailProvider/dkim - Response has JSON Body\", function () {\n pm.response.to.have.jsonBody();\n});\n", 245 | "// Response Validation\nconst schema = {\"type\":\"object\",\"additionalProperties\":true,\"properties\":{\"status\":{\"type\":\"string\",\"description\":\"DKIM key generating status, which can be one of the following values: \\r\\n\\r\\n- Status `emailNotFound` \\r\\n\\r\\n- `emailNotVerified` \\r\\n\\r\\n- `created`\",\"enum\":[\"emailNotFound\",\"emailNotVerified\",\"created\"]},\"dkimKeys\":{\"type\":[\"array\",\"null\"],\"description\":\"List of DKIM keys.\",\"items\":{\"type\":\"string\",\"description\":\"DKIM keys.\"},\"additionalProperties\":true}}}\n\n// Validate if response matches JSON schema \npm.test(\"[POST]::/api/mail-service/pvt/providers/:EmailProvider/dkim - Schema is valid\", function() {\n pm.response.to.have.jsonSchema(schema,{unknownFormats: [\"int32\", \"int64\", \"float\", \"double\"]});\n});\n" 246 | ] 247 | } 248 | } 249 | ], 250 | "protocolProfileBehavior": { 251 | "disableBodyPruning": true 252 | } 253 | } 254 | ], 255 | "event": [] 256 | } 257 | ], 258 | "auth": { 259 | "type": "apikey", 260 | "apikey": [ 261 | { 262 | "type": "any", 263 | "value": "X-VTEX-API-AppKey", 264 | "key": "key" 265 | }, 266 | { 267 | "type": "any", 268 | "value": "{{apiKey}}", 269 | "key": "value" 270 | }, 271 | { 272 | "type": "any", 273 | "value": "header", 274 | "key": "in" 275 | } 276 | ] 277 | }, 278 | "event": [], 279 | "variable": [ 280 | { 281 | "description": { 282 | "content": "Name of the VTEX account. Used as part of the URL.", 283 | "type": "text/plain" 284 | }, 285 | "type": "any", 286 | "value": "apiexamples", 287 | "key": "accountName" 288 | }, 289 | { 290 | "description": { 291 | "content": "Environment to use. Used as part of the URL. (This can only be one of vtexcommercestable)", 292 | "type": "text/plain" 293 | }, 294 | "type": "any", 295 | "value": "vtexcommercestable", 296 | "key": "environment" 297 | }, 298 | { 299 | "type": "string", 300 | "value": "https://{{accountName}}.{{environment}}.com.br", 301 | "key": "baseUrl" 302 | } 303 | ], 304 | "info": { 305 | "_postman_id": "fce4104c-7e9a-4fd8-8d45-41a15f772c9e", 306 | "name": "Message Center API", 307 | "version": { 308 | "raw": "1.0.0", 309 | "major": 1, 310 | "minor": 0, 311 | "patch": 0, 312 | "prerelease": [], 313 | "build": [], 314 | "string": "1.0.0" 315 | }, 316 | "schema": "https://schema.getpostman.com/json/collection/v2.1.0/collection.json", 317 | "description": { 318 | "content": "**Message Center** corresponds to [order transactional email templates](https://help.vtex.com/en/tutorial/order-transactional-email-templates--3g2S2kqBOoSGcCaqMYK2my). The store can configure templates to automatically send emails to customers and notify them about their order events, such as payment confirmation and shipping.\r\n\r\n## Message Center API Index \r\n\r\n### DKIM configuration\r\n\r\n- `POST` [Generate DKIM keys](https://developers.vtex.com/docs/api-reference/message-center-api#post-/api/mail-service/pvt/providers/-EmailProvider-/dkim)", 319 | "type": "text/plain" 320 | } 321 | } 322 | } -------------------------------------------------------------------------------- /PostmanCollections/VTEX - Template openAPI.json: -------------------------------------------------------------------------------- 1 | { 2 | "_": { 3 | "postman_id": "3472ab78-c3ab-4b7a-b811-3e0be6477db6" 4 | }, 5 | "item": [ 6 | { 7 | "id": "c0dd16e0-4768-475b-9e9b-7ff905340ad6", 8 | "name": "undefined", 9 | "description": { 10 | "content": "", 11 | "type": "text/plain" 12 | }, 13 | "item": [], 14 | "event": [] 15 | } 16 | ], 17 | "auth": { 18 | "type": "apikey", 19 | "apikey": [ 20 | { 21 | "type": "any", 22 | "value": "X-VTEX-API-AppKey", 23 | "key": "key" 24 | }, 25 | { 26 | "type": "any", 27 | "value": "{{apiKey}}", 28 | "key": "value" 29 | }, 30 | { 31 | "type": "any", 32 | "value": "header", 33 | "key": "in" 34 | } 35 | ] 36 | }, 37 | "event": [], 38 | "variable": [ 39 | { 40 | "description": { 41 | "content": "Your VTEX account name.", 42 | "type": "text/plain" 43 | }, 44 | "type": "any", 45 | "value": "apiexamples", 46 | "key": "accountName" 47 | }, 48 | { 49 | "description": { 50 | "content": "Description of environment used in API.", 51 | "type": "text/plain" 52 | }, 53 | "type": "any", 54 | "value": "vtexcommercestable", 55 | "key": "environment" 56 | }, 57 | { 58 | "type": "string", 59 | "value": "https://{{accountName}}.{{environment}}.com.br", 60 | "key": "baseUrl" 61 | } 62 | ], 63 | "info": { 64 | "_postman_id": "3472ab78-c3ab-4b7a-b811-3e0be6477db6", 65 | "name": "{api-title}", 66 | "schema": "https://schema.getpostman.com/json/collection/v2.1.0/collection.json", 67 | "description": { 68 | "content": "{api-description}", 69 | "type": "text/plain" 70 | } 71 | } 72 | } -------------------------------------------------------------------------------- /PostmanCollections/VTEX - User Data Rights API.json: -------------------------------------------------------------------------------- 1 | { 2 | "_": { 3 | "postman_id": "8e76893f-1a6e-418d-92e2-3112360e4e98" 4 | }, 5 | "item": [ 6 | { 7 | "id": "a9c16560-fdb8-4728-8cc8-c44ec951e43e", 8 | "name": "Data Subject Rights", 9 | "description": { 10 | "content": "", 11 | "type": "text/plain" 12 | }, 13 | "item": [ 14 | { 15 | "id": "e042b93c-360c-452b-86b3-a3a30d0cc821", 16 | "name": "Erase customer data", 17 | "request": { 18 | "name": "Erase customer data", 19 | "description": { 20 | "content": "Deletes a given customer's data collected in your store by Checkout, Orders, VTEX ID and Profile System.\r\n\r\n>⚠️ This API is currently in closed alpha testing stage, which means that only specific customers can access it now. Do not share this documentation with people outside of your company. If you do not have access yet, please refer to the [Erasing customer data](https://help.vtex.com/en/tutorial/erasing-customer-data--1R9Fn7A06Ifj4R9YD4JTKU) guide instead.\r\n\r\n>⚠️ Only orders with `invoiced` or `canceled` status are erased in this request.", 21 | "type": "text/plain" 22 | }, 23 | "url": { 24 | "path": [ 25 | "api", 26 | "user-rights", 27 | "createAndProcessDeleteUserData" 28 | ], 29 | "host": [ 30 | "{{baseUrl}}" 31 | ], 32 | "query": [ 33 | { 34 | "disabled": false, 35 | "description": { 36 | "content": "Name of your VTEX account.", 37 | "type": "text/plain" 38 | }, 39 | "key": "an", 40 | "value": "mystore" 41 | } 42 | ], 43 | "variable": [] 44 | }, 45 | "header": [ 46 | { 47 | "key": "Content-Type", 48 | "value": "application/json" 49 | }, 50 | { 51 | "key": "Accept", 52 | "value": "application/json" 53 | } 54 | ], 55 | "method": "POST", 56 | "body": { 57 | "mode": "raw", 58 | "raw": "{\n \"email\": \"john@mail.com\"\n}", 59 | "options": { 60 | "raw": { 61 | "language": "json" 62 | } 63 | } 64 | } 65 | }, 66 | "response": [ 67 | { 68 | "_": { 69 | "postman_previewlanguage": "json" 70 | }, 71 | "id": "878aadbb-8b2b-42a7-8ac0-7930892ee113", 72 | "name": "OK", 73 | "originalRequest": { 74 | "url": { 75 | "path": [ 76 | "api", 77 | "user-rights", 78 | "createAndProcessDeleteUserData" 79 | ], 80 | "host": [ 81 | "{{baseUrl}}" 82 | ], 83 | "query": [ 84 | { 85 | "key": "an", 86 | "value": "mystore" 87 | } 88 | ], 89 | "variable": [] 90 | }, 91 | "header": [ 92 | { 93 | "description": { 94 | "content": "Added as a part of security scheme: apikey", 95 | "type": "text/plain" 96 | }, 97 | "key": "X-VTEX-API-AppKey", 98 | "value": "" 99 | }, 100 | { 101 | "disabled": false, 102 | "description": { 103 | "content": "(Required) Type of the content being sent.", 104 | "type": "text/plain" 105 | }, 106 | "key": "Content-Type", 107 | "value": "application/json" 108 | }, 109 | { 110 | "disabled": false, 111 | "description": { 112 | "content": "(Required) HTTP Client Negotiation _Accept_ Header. Indicates the types of responses the client can understand.", 113 | "type": "text/plain" 114 | }, 115 | "key": "Accept", 116 | "value": "application/json" 117 | }, 118 | { 119 | "key": "Accept", 120 | "value": "application/json" 121 | } 122 | ], 123 | "method": "POST", 124 | "body": { 125 | "mode": "raw", 126 | "raw": "{\n \"email\": \"john@mail.com\"\n}", 127 | "options": { 128 | "raw": { 129 | "language": "json" 130 | } 131 | } 132 | } 133 | }, 134 | "status": "OK", 135 | "code": 200, 136 | "header": [ 137 | { 138 | "key": "Content-Type", 139 | "value": "application/json" 140 | } 141 | ], 142 | "body": "{\n \"uuid\": \"3e2f53dc-b099-4dc8-9727-581b2a97f39c\",\n \"requestType\": \"Removal\",\n \"email\": \"pedido2@vtexchallenge.com\",\n \"status\": \"Completed\",\n \"dataResponse\": \"{\\r\\n \\\"VTEX Checkout\\\": [],\\r\\n \\\"orders\\\": {\\r\\n \\\"dataStatus\\\": {\\r\\n \\\"status\\\": \\\"anonymized\\\",\\r\\n \\\"reason\\\": \\\"Sensitive information was anonymized rather than deleted to preserve the store metrics.\\\",\\r\\n \\\"evidence\\\": \\\"Anonymized [0] orders\\\",\\r\\n \\\"dryRun\\\": true\\r\\n },\\r\\n \\\"orders\\\": []\\r\\n },\\r\\n \\\"Profile System PII API\\\": {},\\r\\n \\\"VTEX ID\\\": {\\r\\n \\\"type\\\": \\\"https://tools.ietf.org/html/rfc7231#section-6.5.4\\\",\\r\\n \\\"title\\\": \\\"Not Found\\\",\\r\\n \\\"status\\\": 404,\\r\\n \\\"traceId\\\": \\\"00-65d5abf9263b07eb185beee49e2075dc-b67b373e2e93dcf8-00\\\"\\r\\n }\\r\\n}\",\n \"requestTime\": \"2023-09-05T17:19:33.1969022-03:00\",\n \"applications\": [\n {\n \"application\": \"chk\",\n \"status\": \"Deleted\",\n \"errorDetail\": \"\",\n \"updateAt\": \"2023-09-05T20:20:23\"\n },\n {\n \"application\": \"orders\",\n \"status\": \"Deleted\",\n \"errorDetail\": \"\",\n \"updateAt\": \"2023-09-05T20:20:25\"\n },\n {\n \"application\": \"profileSystemV2\",\n \"status\": \"Deleted\",\n \"errorDetail\": \"\",\n \"updateAt\": \"2023-09-05T20:20:26\"\n },\n {\n \"application\": \"vid\",\n \"status\": \"Deleted\",\n \"errorDetail\": \"\",\n \"updateAt\": \"2023-09-05T20:20:29\"\n }\n ]\n}", 143 | "cookie": [] 144 | } 145 | ], 146 | "event": [ 147 | { 148 | "listen": "test", 149 | "script": { 150 | "id": "1bb0dba5-f2b2-4333-999f-fcc9c1e186c2", 151 | "type": "text/javascript", 152 | "exec": [ 153 | "// Validate status 2xx \npm.test(\"[POST]::/api/user-rights/createAndProcessDeleteUserData - Status code is 2xx\", function () {\n pm.response.to.be.success;\n});\n", 154 | "// Validate if response header has matching content-type\npm.test(\"[POST]::/api/user-rights/createAndProcessDeleteUserData - Content-Type is application/json\", function () {\n pm.expect(pm.response.headers.get(\"Content-Type\")).to.include(\"application/json\");\n});\n", 155 | "// Validate if response has JSON Body \npm.test(\"[POST]::/api/user-rights/createAndProcessDeleteUserData - Response has JSON Body\", function () {\n pm.response.to.have.jsonBody();\n});\n", 156 | "// Response Validation\nconst schema = {\"type\":\"object\",\"properties\":{\"uuid\":{\"type\":\"string\",\"description\":\"User data rights request unique identifier in [UUID](https://www.uuidtools.com/what-is-uuid) format.\"},\"requestType\":{\"type\":\"string\",\"description\":\"Type of user data rights request.\"},\"email\":{\"type\":\"string\",\"description\":\"Client email.\"},\"status\":{\"type\":\"string\",\"description\":\"Status of the user data rights request.\"},\"dataResponse\":{\"type\":\"string\",\"description\":\"Escaped JSON containing information about the status of data deletion on each VTEX system that stores client data.\"},\"requestTime\":{\"type\":\"string\",\"description\":\"Date of the user data rights request in [ISO 8601](https://www.iso.org/iso-8601-date-and-time-format.html)format.\"},\"applications\":{\"type\":\"array\",\"description\":\"Array containing an object for each VTEX application that stores client data.\",\"items\":{\"type\":\"object\",\"description\":\"Object containing information about user data status in each VTEX application that stores client data.\",\"properties\":{\"application\":{\"type\":\"string\",\"description\":\"Abbreviated name of the application, which can be `chk` (Checkout), `orders` (Order Management System), `profileSystemV2` (PII Profile System) or `vid` (VTEX ID).\"},\"status\":{\"type\":\"string\",\"description\":\"Status of client data in the given application. The possible values are:\\n\\r- `Completed` - Processing completed successfully.\\n\\r- `Error` - An unexpected error occurred during the process. You must make a new request.\\n\\r- `PendingCheck` - Pending validation. Unable to perform validation on one or more services.\\n\\r- `Blocked` - Pending validation. One or more services are unable to fulfill the deletion request. You need to wait and make a new request in the future.\\n\\r- `PendingDeletion` - It was not possible to delete data in one or more services. You must make a new request.\"},\"errorDetail\":{\"type\":\"string\",\"description\":\"In case of error, this field contains an explanatory error message. Otherwise, this field is an empty string.\"},\"updateAt\":{\"type\":\"string\",\"description\":\"Date of the latest update in client data in the given application, in UTC format.\"}}}}}}\n\n// Validate if response matches JSON schema \npm.test(\"[POST]::/api/user-rights/createAndProcessDeleteUserData - Schema is valid\", function() {\n pm.response.to.have.jsonSchema(schema,{unknownFormats: [\"int32\", \"int64\", \"float\", \"double\"]});\n});\n" 157 | ] 158 | } 159 | } 160 | ], 161 | "protocolProfileBehavior": { 162 | "disableBodyPruning": true 163 | } 164 | } 165 | ], 166 | "event": [] 167 | } 168 | ], 169 | "auth": { 170 | "type": "apikey", 171 | "apikey": [ 172 | { 173 | "type": "any", 174 | "value": "X-VTEX-API-AppKey", 175 | "key": "key" 176 | }, 177 | { 178 | "type": "any", 179 | "value": "{{apiKey}}", 180 | "key": "value" 181 | }, 182 | { 183 | "type": "any", 184 | "value": "header", 185 | "key": "in" 186 | } 187 | ] 188 | }, 189 | "event": [], 190 | "variable": [ 191 | { 192 | "type": "string", 193 | "value": "http://api.vtex.com", 194 | "key": "baseUrl" 195 | } 196 | ], 197 | "info": { 198 | "_postman_id": "8e76893f-1a6e-418d-92e2-3112360e4e98", 199 | "name": "Data Subject Rights API", 200 | "schema": "https://schema.getpostman.com/json/collection/v2.1.0/collection.json", 201 | "description": { 202 | "content": "According to data protection policies, such as [GDPR and LGPD](https://vtex.com/us-en/privacy-and-agreements/vtex-commitment/), companies using customer personal data are required to delete collected information upon the customer's request. Data Subject Rights API allows stores using the [PII data architecture](https://developers.vtex.com/docs/guides/pii-data-architecture) to erase user data collected by Checkout, Orders, VTEX ID and Profile System, without depending on the VTEX Support flow described in the [Erasing customer data](https://help.vtex.com/en/tutorial/erasing-customer-data--1R9Fn7A06Ifj4R9YD4JTKU) guide.\r\n\r\n>⚠️ This API is currently in closed alpha testing stage, which means that only specific customers can access it now. Do not share this documentation with people outside of your company. If you do not have access yet, please refer to the [Erasing customer data](https://help.vtex.com/en/tutorial/erasing-customer-data--1R9Fn7A06Ifj4R9YD4JTKU) guide instead.\r\n\r\n## Index\r\n\r\n- `POST` [Delete user data](https://developers.vtex.com/docs/api-reference/user-data-rights-api#post-/api/user-rights/createAndProcessDeleteUserData)", 203 | "type": "text/plain" 204 | } 205 | } 206 | } -------------------------------------------------------------------------------- /PostmanCollections/VTEX - User Rights Data API.json: -------------------------------------------------------------------------------- 1 | { 2 | "_": { 3 | "postman_id": "0871b1d8-8aef-4438-b4f6-457934b8d0f1" 4 | }, 5 | "item": [ 6 | { 7 | "id": "4269bcbc-28ef-4901-bb8d-2b1feae979c5", 8 | "name": "User Data Rights", 9 | "description": { 10 | "content": "", 11 | "type": "text/plain" 12 | }, 13 | "item": [ 14 | { 15 | "id": "3fcaf56d-1114-4db4-92b9-ce2ddfd699de", 16 | "name": "Delete user data", 17 | "request": { 18 | "name": "Delete user data", 19 | "description": { 20 | "content": "Erases a given user's data collected from your store's customers by Checkout, Orders, VTEX ID and Profile System.\r\n\r\n>⚠️ This API is currently in closed alpha testing stage, which means that only specific customers can access it now. Do not share this documentation with people outside of your company. If you do not have access yet, please refer to the [Erasing customer data](https://help.vtex.com/en/tutorial/erasing-customer-data--1R9Fn7A06Ifj4R9YD4JTKU) guide instead.", 21 | "type": "text/plain" 22 | }, 23 | "url": { 24 | "path": [ 25 | "api", 26 | "user-rights", 27 | "createAndProcessDeleteUserData" 28 | ], 29 | "host": [ 30 | "{{baseUrl}}" 31 | ], 32 | "query": [ 33 | { 34 | "disabled": false, 35 | "description": { 36 | "content": "Name of your VTEX account.", 37 | "type": "text/plain" 38 | }, 39 | "key": "an", 40 | "value": "mystore" 41 | } 42 | ], 43 | "variable": [] 44 | }, 45 | "header": [ 46 | { 47 | "key": "Content-Type", 48 | "value": "application/json" 49 | }, 50 | { 51 | "key": "Accept", 52 | "value": "application/json" 53 | } 54 | ], 55 | "method": "POST", 56 | "body": { 57 | "mode": "raw", 58 | "raw": "{\n \"email\": \"john@mail.com\"\n}", 59 | "options": { 60 | "raw": { 61 | "language": "json" 62 | } 63 | } 64 | } 65 | }, 66 | "response": [ 67 | { 68 | "_": { 69 | "postman_previewlanguage": "json" 70 | }, 71 | "id": "6572d932-7560-4dd4-9ac4-f0e6722288a3", 72 | "name": "OK", 73 | "originalRequest": { 74 | "url": { 75 | "path": [ 76 | "api", 77 | "user-rights", 78 | "createAndProcessDeleteUserData" 79 | ], 80 | "host": [ 81 | "{{baseUrl}}" 82 | ], 83 | "query": [ 84 | { 85 | "key": "an", 86 | "value": "mystore" 87 | } 88 | ], 89 | "variable": [] 90 | }, 91 | "header": [ 92 | { 93 | "description": { 94 | "content": "Added as a part of security scheme: apikey", 95 | "type": "text/plain" 96 | }, 97 | "key": "X-VTEX-API-AppKey", 98 | "value": "" 99 | }, 100 | { 101 | "disabled": false, 102 | "description": { 103 | "content": "(Required) Type of the content being sent.", 104 | "type": "text/plain" 105 | }, 106 | "key": "Content-Type", 107 | "value": "application/json" 108 | }, 109 | { 110 | "disabled": false, 111 | "description": { 112 | "content": "(Required) HTTP Client Negotiation _Accept_ Header. Indicates the types of responses the client can understand.", 113 | "type": "text/plain" 114 | }, 115 | "key": "Accept", 116 | "value": "application/json" 117 | }, 118 | { 119 | "key": "Accept", 120 | "value": "application/json" 121 | } 122 | ], 123 | "method": "POST", 124 | "body": { 125 | "mode": "raw", 126 | "raw": "{\n \"email\": \"john@mail.com\"\n}", 127 | "options": { 128 | "raw": { 129 | "language": "json" 130 | } 131 | } 132 | } 133 | }, 134 | "status": "OK", 135 | "code": 200, 136 | "header": [ 137 | { 138 | "key": "Content-Type", 139 | "value": "application/json" 140 | } 141 | ], 142 | "body": "{\n \"uuid\": \"3e2f53dc-b099-4dc8-9727-581b2a97f39c\",\n \"requestType\": \"Removal\",\n \"email\": \"pedido2@vtexchallenge.com\",\n \"status\": \"Completed\",\n \"dataResponse\": \"{\\r\\n \\\"VTEX Checkout\\\": [],\\r\\n \\\"orders\\\": {\\r\\n \\\"dataStatus\\\": {\\r\\n \\\"status\\\": \\\"anonymized\\\",\\r\\n \\\"reason\\\": \\\"Sensitive information was anonymized rather than deleted to preserve the store metrics.\\\",\\r\\n \\\"evidence\\\": \\\"Anonymized [0] orders\\\",\\r\\n \\\"dryRun\\\": true\\r\\n },\\r\\n \\\"orders\\\": []\\r\\n },\\r\\n \\\"Profile System PII API\\\": {},\\r\\n \\\"VTEX ID\\\": {\\r\\n \\\"type\\\": \\\"https://tools.ietf.org/html/rfc7231#section-6.5.4\\\",\\r\\n \\\"title\\\": \\\"Not Found\\\",\\r\\n \\\"status\\\": 404,\\r\\n \\\"traceId\\\": \\\"00-65d5abf9263b07eb185beee49e2075dc-b67b373e2e93dcf8-00\\\"\\r\\n }\\r\\n}\",\n \"requestTime\": \"2023-09-05T17:19:33.1969022-03:00\",\n \"applications\": [\n {\n \"application\": \"chk\",\n \"status\": \"Deleted\",\n \"errorDetail\": \"\",\n \"updateAt\": \"2023-09-05T20:20:23\"\n },\n {\n \"application\": \"orders\",\n \"status\": \"Deleted\",\n \"errorDetail\": \"\",\n \"updateAt\": \"2023-09-05T20:20:25\"\n },\n {\n \"application\": \"profileSystemV2\",\n \"status\": \"Deleted\",\n \"errorDetail\": \"\",\n \"updateAt\": \"2023-09-05T20:20:26\"\n },\n {\n \"application\": \"vid\",\n \"status\": \"Deleted\",\n \"errorDetail\": \"\",\n \"updateAt\": \"2023-09-05T20:20:29\"\n }\n ]\n}", 143 | "cookie": [] 144 | } 145 | ], 146 | "event": [ 147 | { 148 | "listen": "test", 149 | "script": { 150 | "id": "e929cf16-c46f-4793-8fb0-09482d6cbbec", 151 | "type": "text/javascript", 152 | "exec": [ 153 | "// Validate status 2xx \npm.test(\"[POST]::/api/user-rights/createAndProcessDeleteUserData - Status code is 2xx\", function () {\n pm.response.to.be.success;\n});\n", 154 | "// Validate if response header has matching content-type\npm.test(\"[POST]::/api/user-rights/createAndProcessDeleteUserData - Content-Type is application/json\", function () {\n pm.expect(pm.response.headers.get(\"Content-Type\")).to.include(\"application/json\");\n});\n", 155 | "// Validate if response has JSON Body \npm.test(\"[POST]::/api/user-rights/createAndProcessDeleteUserData - Response has JSON Body\", function () {\n pm.response.to.have.jsonBody();\n});\n", 156 | "// Response Validation\nconst schema = {\"type\":\"object\",\"properties\":{\"uuid\":{\"type\":\"string\",\"description\":\"User data rights request unique identifier in [UUID](https://www.uuidtools.com/what-is-uuid) format.\"},\"requestType\":{\"type\":\"string\",\"description\":\"Type of user data rights request.\"},\"email\":{\"type\":\"string\",\"description\":\"User email.\"},\"status\":{\"type\":\"string\",\"description\":\"Status of the user data rights request.\"},\"dataResponse\":{\"type\":\"string\",\"description\":\"Escaped JSON containing information about the status of data deletion on each VTEX system that stores user data.\"},\"requestTime\":{\"type\":\"string\",\"description\":\"Date of the user data rights request in [ISO 8601](https://www.iso.org/iso-8601-date-and-time-format.html)format.\"},\"applications\":{\"type\":\"array\",\"description\":\"Array containing an object for each VTEX application that stores user data.\",\"items\":{\"type\":\"object\",\"description\":\"Object containing information about user data status in each VTEX application that stores user data.\",\"properties\":{\"application\":{\"type\":\"string\",\"description\":\"Abbreviated name of the application, which can be `chk` (Checkout), `orders` (Order Management System), `profileSystemV2` (PII Profile System) or `vid` (VTEX ID).\"},\"status\":{\"type\":\"string\",\"description\":\"Status of user data in the given application.\"},\"errorDetail\":{\"type\":\"string\",\"description\":\"In case of error, this field contains an explanatory error message. Otherwise, this field is an empty string.\"},\"updateAt\":{\"type\":\"string\",\"description\":\"Date of the latest update in user data in the given application, in UTC format.\"}}}}}}\n\n// Validate if response matches JSON schema \npm.test(\"[POST]::/api/user-rights/createAndProcessDeleteUserData - Schema is valid\", function() {\n pm.response.to.have.jsonSchema(schema,{unknownFormats: [\"int32\", \"int64\", \"float\", \"double\"]});\n});\n" 157 | ] 158 | } 159 | } 160 | ], 161 | "protocolProfileBehavior": { 162 | "disableBodyPruning": true 163 | } 164 | } 165 | ], 166 | "event": [] 167 | } 168 | ], 169 | "auth": { 170 | "type": "apikey", 171 | "apikey": [ 172 | { 173 | "type": "any", 174 | "value": "X-VTEX-API-AppKey", 175 | "key": "key" 176 | }, 177 | { 178 | "type": "any", 179 | "value": "{{apiKey}}", 180 | "key": "value" 181 | }, 182 | { 183 | "type": "any", 184 | "value": "header", 185 | "key": "in" 186 | } 187 | ] 188 | }, 189 | "event": [], 190 | "variable": [ 191 | { 192 | "type": "string", 193 | "value": "http://api.vtexinternal.com", 194 | "key": "baseUrl" 195 | } 196 | ], 197 | "info": { 198 | "_postman_id": "0871b1d8-8aef-4438-b4f6-457934b8d0f1", 199 | "name": "User Data Rights API", 200 | "schema": "https://schema.getpostman.com/json/collection/v2.1.0/collection.json", 201 | "description": { 202 | "content": "According to data protection policies, such as [GDPR and LGPD](https://vtex.com/us-en/privacy-and-agreements/vtex-commitment/), companies using customer personal data are required to delete collected information upon the customer's request. User Data Rights API allows merchants to erase user data collected from your store's customers by Checkout, Orders, VTEX ID and Profile System, without depending on the VTEX Support flow described in the [Erasing customer data](https://help.vtex.com/en/tutorial/erasing-customer-data--1R9Fn7A06Ifj4R9YD4JTKU) guide.\r\n\r\n>⚠️ This API is currently in closed alpha testing stage, which means that only specific customers can access it now. Do not share this documentation with people outside of your company. If you do not have access yet, please refer to the [Erasing customer data](https://help.vtex.com/en/tutorial/erasing-customer-data--1R9Fn7A06Ifj4R9YD4JTKU) guide instead.\r\n\r\n## Index\r\n\r\n- `POST` [Delete user data](https://developers.vtex.com/docs/api-reference/user-data-rights-api#post-/api/user-rights/createAndProcessDeleteUserData)", 203 | "type": "text/plain" 204 | } 205 | } 206 | } -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # openapi-schemas 2 | 3 | This documentation comprises VTEX's public APIs as OpenAPI 3.0 JSON schemas. Files are automatically synced with VTEX's Developer Portal [API Reference page](https://developers.vtex.com/docs/api-reference) and can be imported to Postman following [these instructions](https://learning.postman.com/docs/postman/collections/working-with-openAPI/). 4 | 5 | ## Table of Contents 6 | 7 | - [Contributing with the documentation](#contributing-with-the-documentation) 8 | - [Code of Conduct](#code-of-conduct) 9 | - [API Slug Mapping](#api-slug-mapping) 10 | - [VTEX APIs](#vtex-apis) 11 | - [Requisites](#requisites) 12 | - [Servers](#servers) 13 | - [Authentication](#authentication) 14 | - [Security schemes](#security-schemes) 15 | - [Security requirement](#security-requirement) 16 | - [Adding a new file](#adding-a-new-file) 17 | - [GitHub Actions](#github-actions) 18 | - [Spectral Linter](#spectral-linter) 19 | - [Postman Collection Converter](#postman-collection-converter) 20 | 21 | ## Contributing with the documentation 22 | 23 | Please check our [Contributing Guide](CONTRIBUTING.md) for more information about how to contribute with this repository. 24 | 25 | ## Code of Conduct 26 | 27 | Please read our [Code of Conduct](CODE_OF_CONDUCT.md) before contributing. 28 | 29 | ## API Slug Mapping 30 | 31 | The OpenAPI schema files in this repository follow a naming convention that integrates with the Developer Portal's centralized API slug mapping system. This ensures consistent URLs and naming across documentation. 32 | 33 | Read the [Centralized API Slug Mapping](docs/centralized-api-slug-mapping.md) documentation to learn how API names are mapped to URL slugs and how to follow the naming conventions when adding new API schemas. 34 | 35 | ## VTEX APIs 36 | 37 | - Antifraud Provider API ![Swagger Validator](https://img.shields.io/swagger/valid/3.0?specUrl=https://raw.githubusercontent.com/vtex/openapi-schemas/master/VTEX%2520-%2520Antifraud%2520Provider%2520API.json&label=OpenAPI) 38 | - Catalog API Seller Portal ![Swagger Validator](https://img.shields.io/swagger/valid/3.0?specUrl=https%3A%2F%2Fraw.githubusercontent.com%2Fvtex%2Fopenapi-schemas%2Fmaster%2FVTEX%2520-%2520Catalog%2520API%2520Seller%2520Portal.json&label=OpenAPI) 39 | - Catalog API ![Swagger Validator](https://img.shields.io/swagger/valid/3.0?specUrl=https%3A%2F%2Fraw.githubusercontent.com%2Fvtex%2Fopenapi-schemas%2Fmaster%2FVTEX%2520-%2520Catalog%2520API.json&label=OpenAPI) 40 | - Checkout API ![Swagger Validator](https://img.shields.io/swagger/valid/3.0?specUrl=https%3A%2F%2Fraw.githubusercontent.com%2Fvtex%2Fopenapi-schemas%2Fmaster%2FVTEX%2520-%2520Checkout%2520API.json&label=OpenAPI) 41 | - Customer Credit API ![Swagger Validator](https://img.shields.io/swagger/valid/3.0?specUrl=https%3A%2F%2Fraw.githubusercontent.com%2Fvtex%2Fopenapi-schemas%2Fmaster%2FVTEX%2520-%2520Customer%2520Credit%2520API.json&label=OpenAPI) 42 | - Data Subject Rights API ![Swagger Validator](https://img.shields.io/swagger/valid/3.0?label=OpenAPI&specUrl=https%3A%2F%2Fraw.githubusercontent.com%2Fvtex%2Fopenapi-schemas%2Fmaster%2FVTEX%2520-%2520Data%2520Subject%2520Rights.json) 43 | - GiftCard Hub API ![Swagger Validator](https://img.shields.io/swagger/valid/3.0?specUrl=https%3A%2F%2Fraw.githubusercontent.com%2Fvtex%2Fopenapi-schemas%2Fmaster%2FVTEX%2520-%2520GiftCard%2520Hub%2520API.json&label=OpenAPI) 44 | - GiftCard API ![Swagger Validator](https://img.shields.io/swagger/valid/3.0?specUrl=https%3A%2F%2Fraw.githubusercontent.com%2Fvtex%2Fopenapi-schemas%2Fmaster%2FVTEX%2520-%2520Giftcard%2520API.json&label=OpenAPI) 45 | - GiftCard Provider Protocol ![Swagger Validator](https://img.shields.io/swagger/valid/3.0?specUrl=https%3A%2F%2Fraw.githubusercontent.com%2Fvtex%2Fopenapi-schemas%2Fmaster%2FVTEX%2520-%2520Giftcard%2520Provider%2520Protocol.json&label=OpenAPI) 46 | - Headless CMS API ![Swagger Validator](https://img.shields.io/swagger/valid/3.0?specUrl=https%3A%2F%2Fraw.githubusercontent.com%2Fvtex%2Fopenapi-schemas%2Fmaster%2FVTEX%2520-%2520Headless%2520CMS%2520API.json&label=OpenAPI) 47 | - Intelligent Search API ![Swagger Validator](https://img.shields.io/swagger/valid/3.0?specUrl=https%3A%2F%2Fraw.githubusercontent.com%2Fvtex%2Fopenapi-schemas%2Fmaster%2FVTEX%2520-%2520Intelligent%2520Search%2520API.json) 48 | - Intelligent Search Events API - Headless ![Swagger Validator](https://img.shields.io/swagger/valid/3.0?specUrl=https%3A%2F%2Fraw.githubusercontent.com%2Fvtex%2Fopenapi-schemas%2Fmaster%2FVTEX%2520-%2520Intelligent%2520Search%2520Events%2520API%2520-%2520Headless.json) 49 | - Legacy CMS Portal API ![Swagger Validator](https://img.shields.io/swagger/valid/3.0?specUrl=https%3A%2F%2Fraw.githubusercontent.com%2Fvtex%2Fopenapi-schemas%2Fmaster%2FVTEX%2520-%2520Legacy%2520CMS%2520Portal%2520API.json) 50 | - License Manager API ![Swagger Validator](https://img.shields.io/swagger/valid/3.0?specUrl=https%3A%2F%2Fraw.githubusercontent.com%2Fvtex%2Fopenapi-schemas%2Fmaster%2FVTEX%2520-%2520License%2520Manager%2520API.json&label=OpenAPI) 51 | - Logistics API ![Swagger Validator](https://img.shields.io/swagger/valid/3.0?specUrl=https%3A%2F%2Fraw.githubusercontent.com%2Fvtex%2Fopenapi-schemas%2Fmaster%2FVTEX%2520-%2520Logistics%2520API.json&label=OpenAPI) 52 | - Marketplace APIs - Sent Offers ![Swagger Validator](https://img.shields.io/swagger/valid/3.0?specUrl=https%3A%2F%2Fraw.githubusercontent.com%2Fvtex%2Fopenapi-schemas%2Fmaster%2FVTEX%2520-%2520Marketplace%2520APIs%2520-%2520Sent%2520Offers.json&label=OpenAPI) 53 | - Marketplace APIs - Suggestions ![Swagger Validator](https://img.shields.io/swagger/valid/3.0?specUrl=https%3A%2F%2Fraw.githubusercontent.com%2Fvtex%2Fopenapi-schemas%2Fmaster%2FVTEX%2520-%2520Marketplace%2520APIs%2520-%2520Suggestions.json&label=OpenAPI) 54 | - Marketplace Protocol - External Marketplace Mapper ![Swagger Validator](https://img.shields.io/swagger/valid/3.0?specUrl=https%3A%2F%2Fraw.githubusercontent.com%2Fvtex%2Fopenapi-schemas%2Fmaster%2FVTEX%2520-%2520Marketplace%2520Protocol%2520-%2520External%2520Marketplace%2520Mapper.json&label=OpenAPI) 55 | - Marketplace Protocol - External Marketplace Orders ![Swagger Validator](https://img.shields.io/swagger/valid/3.0?specUrl=https%3A%2F%2Fraw.githubusercontent.com%2Fvtex%2Fopenapi-schemas%2Fmaster%2FVTEX%2520-%2520Marketplace%2520Protocol%2520-%2520External%2520Marketplace%2520Orders.json&label=OpenAPI) 56 | - Marketplace Protocol - External Seller Fulfillment ![Swagger Validator](https://img.shields.io/swagger/valid/3.0?specUrl=https%3A%2F%2Fraw.githubusercontent.com%2Fvtex%2Fopenapi-schemas%2Fmaster%2FVTEX%2520-%2520Marketplace%2520Protocol%2520-%2520External%2520Seller%2520Fulfillment.json&label=OpenAPI) 57 | - Marketplace Protocol - External Seller Marketplace ![Swagger Validator](https://img.shields.io/swagger/valid/3.0?specUrl=https%3A%2F%2Fraw.githubusercontent.com%2Fvtex%2Fopenapi-schemas%2Fmaster%2FVTEX%2520-%2520Marketplace%2520Protocol%2520-%2520External%2520Seller%2520Marketplace.json&label=OpenAPI) 58 | - Master Data API - v1 ![Swagger Validator](https://img.shields.io/swagger/valid/3.0?specUrl=https%3A%2F%2Fraw.githubusercontent.com%2Fvtex%2Fopenapi-schemas%2Fmaster%2FVTEX%2520-%2520MasterData%2520API%2520-%2520v10.2.json&label=OpenAPI) 59 | - Master Data API - v2 ![Swagger Validator](https://img.shields.io/swagger/valid/3.0?specUrl=https%3A%2F%2Fraw.githubusercontent.com%2Fvtex%2Fopenapi-schemas%2Fmaster%2FVTEX%2520-%2520Master%2520Data%2520API%2520-%2520v2.json&label=OpenAPI) 60 | - Message Center API ![Swagger Validator](https://img.shields.io/swagger/valid/3.0?specUrl=https%3A%2F%2Fraw.githubusercontent.com%2Fvtex%2Fopenapi-schemas%2Fmaster%2FVTEX%2520-%2520Message%2520Center%2520API.json&label=OpenAPI) 61 | - Orders API ![Swagger Validator](https://img.shields.io/swagger/valid/3.0?specUrl=https%3A%2F%2Fraw.githubusercontent.com%2Fvtex%2Fopenapi-schemas%2Fmaster%2FVTEX%2520-%2520Orders%2520API.json&label=OpenAPI) 62 | - Orders API - PII data architecture ![Swagger Validator](https://img.shields.io/swagger/valid/3.0?specUrl=https%3A%2F%2Fraw.githubusercontent.com%2Fvtex%2Fopenapi-schemas%2Frefs%2Fheads%2Fmaster%2FVTEX%2520-%2520Orders%2520API%2520PII%2520version.json) 63 | - Payment Provider Protocol ![Swagger Validator](https://img.shields.io/swagger/valid/3.0?label=OpenAPI&specUrl=https%3A%2F%2Fraw.githubusercontent.com%2Fvtex%2Fopenapi-schemas%2Fmaster%2FVTEX%2520-%2520Payment%2520Provider%2520Protocol.json) 64 | - Payments Gateway API ![Swagger Validator](https://img.shields.io/swagger/valid/3.0?label=OpenAPI&specUrl=https%3A%2F%2Fraw.githubusercontent.com%2Fvtex%2Fopenapi-schemas%2Fmaster%2FVTEX%2520-%2520Payments%2520Gateway%2520API.json) 65 | - Policies System API ![Swagger Validator](https://img.shields.io/swagger/valid/3.0?label=OpenAPI&specUrl=https%3A%2F%2Fraw.githubusercontent.com%2Fvtex%2Fopenapi-schemas%2Fmaster%2FVTEX%2520-%2520Policies%2520System%2520API.json) 66 | - Pricing API ![Swagger Validator](https://img.shields.io/swagger/valid/3.0?label=OpenAPI&specUrl=https%3A%2F%2Fraw.githubusercontent.com%2Fvtex%2Fopenapi-schemas%2Fmaster%2FVTEX%2520-%2520Pricing%2520API.json) 67 | - Pricing Hub ![Swagger Validator](https://img.shields.io/swagger/valid/3.0?label=OpenAPI&specUrl=https%3A%2F%2Fraw.githubusercontent.com%2Fvtex%2Fopenapi-schemas%2Fmaster%2FVTEX%2520-%2520Pricing%2520Hub.json) 68 | - Profile System API ![Swagger Validator](https://img.shields.io/swagger/valid/3.0?label=OpenAPI&specUrl=https%3A%2F%2Fraw.githubusercontent.com%2Fvtex%2Fopenapi-schemas%2Fmaster%2FVTEX%2520-%2520Profile%2520System.json) 69 | - Promotions & Taxes API - v2 ![Swagger Validator](https://img.shields.io/swagger/valid/3.0?label=OpenAPI&specUrl=https%3A%2F%2Fraw.githubusercontent.com%2Fvtex%2Fopenapi-schemas%2Fmaster%2FVTEX%2520-%2520Promotions%2520%2526%2520Taxes%2520API%2520-%2520v2.json) 70 | - Promotions & Taxes API ![Swagger Validator](https://img.shields.io/swagger/valid/3.0?label=OpenAPI&specUrl=https://raw.githubusercontent.com/vtex/openapi-schemas/master/VTEX%2520-%2520Promotions%2520%26%2520Taxes%2520API.json) 71 | - Reviews and Ratings API ![Swagger Validator](https://img.shields.io/swagger/valid/3.0?label=OpenAPI&specUrl=https%3A%2F%2Fraw.githubusercontent.com%2Fvtex%2Fopenapi-schemas%2Fmaster%2FVTEX%2520-%2520Reviews%2520and%2520Ratings%2520API.json) 72 | - SKU Bindings API ![Swagger Validator](https://img.shields.io/swagger/valid/3.0?label=OpenAPI&specUrl=https%3A%2F%2Fraw.githubusercontent.com%2Fvtex%2Fopenapi-schemas%2Fmaster%2FVTEX%2520-%2520SKU%2520Bindings%2520API.json) 73 | - Search API ![Swagger Validator](https://img.shields.io/swagger/valid/3.0?label=OpenAPI&specUrl=https%3A%2F%2Fraw.githubusercontent.com%2Fvtex%2Fopenapi-schemas%2Fmaster%2FVTEX%2520-%2520Search%2520API.json) 74 | - Session Manager API ![Swagger Validator](https://img.shields.io/swagger/valid/3.0?label=OpenAPI&specUrl=https%3A%2F%2Fraw.githubusercontent.com%2Fvtex%2Fopenapi-schemas%2Fmaster%2FVTEX%2520-%2520Session%2520Manager%2520API.json) 75 | - Subscriptions API (v3) ![Swagger Validator](https://img.shields.io/swagger/valid/3.0?specUrl=https%3A%2F%2Fraw.githubusercontent.com%2Fvtex%2Fopenapi-schemas%2Frefs%2Fheads%2Fmaster%2FVTEX%2520-%2520Subscriptions%2520API%2520v3.json) 76 | - VTEX Tracking API ![Swagger Validator](https://img.shields.io/swagger/valid/3.0?label=OpenAPI&specUrl=https%3A%2F%2Fraw.githubusercontent.com%2Fvtex%2Fopenapi-schemas%2Fmaster%2FVTEX%2520-%2520Tracking.json) 77 | - VTEX DO API ![Swagger Validator](https://img.shields.io/swagger/valid/3.0?label=OpenAPI&specUrl=https%3A%2F%2Fraw.githubusercontent.com%2Fvtex%2Fopenapi-schemas%2Fmaster%2FVTEX%2520-%2520VTEX%2520Do%2520API.json) 78 | - VTEX ID API ![Swagger Validator](https://img.shields.io/swagger/valid/3.0?label=OpenAPI&specUrl=https%3A%2F%2Fraw.githubusercontent.com%2Fvtex%2Fopenapi-schemas%2Fmaster%2FVTEX%2520-%2520VTEX%2520ID%2520API.json) 79 | - VTEX Shipping Network API ![Swagger Validator](https://img.shields.io/swagger/valid/3.0?label=OpenAPI&specUrl=https%3A%2F%2Fraw.githubusercontent.com%2Fvtex%2Fopenapi-schemas%2Fmaster%2FVTEX%2520-%2520VTEX%2520Shipping%2520Network%2520API.json) 80 | 81 | ## Requisites 82 | 83 | Before contributing to this repository, read the following requisites. 84 | 85 | - The files should follow the JSON [OpenAPI 3.0 Specification](https://github.com/OAI/OpenAPI-Specification/blob/master/versions/3.0.0.md). 86 | - Check our internal [OpenAPI Specification guidelines](https://www.notion.so/vtexhandbook/OpenAPI-Specification-guidelines-e3a681454798496292d6648e184a156e#344d2fc637c146ffa2ed61a119aa39ee) to make sure you meet the required file structure. 87 | - Schema files should have a self-explanatory name that specifies the described API. 88 | - Check [`templates/VTEX - Template openAPI.jsonc`](https://github.com/vtex/openapi-schemas/blob/master/templates/VTEX%20-%20Template%20openAPI.jsonc) to see an example of an API schema file. It shows how to represent endpoints and parameters and includes VTEX's default [`servers`](#servers) and [authorization](#authorization) information. 89 | 90 | ### Servers 91 | 92 | OpenAPI describes the full endpoint for accessing the API as `{server URL}` + `{endpoint path}` + `{path parameters}`. 93 | 94 | Example: an endpoint with `/api/getResults` as the path, `https://example.com` as the URL in the `server` object and no parameters will send requests to the `https://example.com/api/getResults` URL. 95 | 96 | Example - `servers` object: 97 | 98 | ```json 99 | "servers": [ 100 | { 101 | "url": "https://{accountName}.{environment}.com.br", 102 | "description": "VTEX server URL.", 103 | "variables": { 104 | "accountName": { 105 | "description": "Name of the VTEX account. Used as part of the URL.", 106 | "default": "apiexamples" 107 | }, 108 | "environment": { 109 | "description": "Environment to use. Used as part of the URL.", 110 | "enum": [ 111 | "vtexcommercestable" 112 | ], 113 | "default": "vtexcommercestable" 114 | } 115 | } 116 | } 117 | ], 118 | ``` 119 | 120 | The `servers` key contains an array of objects. 121 | 122 | ### Authentication 123 | 124 | #### Security schemes 125 | 126 | Security schemes describe autentication types that are available in the API. You can check the all the available options in the [Security Scheme Specification](http://spec.openapis.org/oas/v3.0.0#security-scheme-object). 127 | 128 | They should be added inside the `components` object. 129 | 130 | The security schemes we use are: 131 | 132 | ```json 133 | "securitySchemes": { 134 | "appKey": { 135 | "type": "apiKey", 136 | "in": "header", 137 | "name": "X-VTEX-API-AppKey", 138 | "description": "Unique identifier of the [application key](https://developers.vtex.com/docs/guides/api-authentication-using-application-keys)." 139 | }, 140 | "appToken": { 141 | "type": "apiKey", 142 | "in": "header", 143 | "name": "X-VTEX-API-AppToken", 144 | "description": "Secret token of the [application key](https://developers.vtex.com/docs/guides/api-authentication-using-application-keys)." 145 | }, 146 | "VtexIdclientAutCookie": { 147 | "type": "apiKey", 148 | "in": "header", 149 | "name": "VtexIdclientAutCookie", 150 | "description": "[User token](https://developers.vtex.com/docs/guides/api-authentication-using-user-tokens), valid for 24 hours." 151 | } 152 | } 153 | ``` 154 | 155 | #### Security requirement 156 | 157 | If defined inside the Open API schema, the `security` object will define the required security schemes for all endpoints. This specifies that requests should have the `X-VTEX-API-AppKey` and `X-VTEX-API-AppToken` pair or `VtexIdClientAutCookie` as part of the request header. 158 | 159 | If defined inside an endpoint object, the `security` object will define the security scheme for that specific endpoint. 160 | 161 | The `security` object we use at VTEX is: 162 | 163 | ```json 164 | "security": [ 165 | { 166 | "appKey": [], 167 | "appToken": [] 168 | }, 169 | { 170 | "VtexIdclientAutCookie": [] 171 | } 172 | ] 173 | ``` 174 | 175 | ### Adding a new file 176 | 177 | After creating a file for a new API reference in this repository, read [this step-by-step](https://github.com/vtexdocs/dev-portal-content#how-to-publish-a-new-api-reference-and-add-it-to-navigation) to publish it on our Developer Portal. 178 | 179 | ## GitHub Actions 180 | 181 | This repository uses GitHub Actions for automated workflows that help maintain code quality and generate necessary artifacts. Below are the details of each action: 182 | 183 | ### Spectral Linter 184 | 185 | **Source File:** `.github/workflows/linter.yml` 186 | 187 | **Summary:** This action runs Spectral to lint OpenAPI specification files when pull requests are created or updated. It helps maintain consistency and quality in API specifications. 188 | 189 | **Trigger Conditions:** 190 | - On pull request creation or update 191 | 192 | **Dependencies:** 193 | - `actions/checkout@v4`: Checks out the repository code 194 | - `mshick/add-pr-comment@v2`: Adds automated comments to pull requests 195 | - `stoplightio/spectral-action@v0.8.10`: Runs the Spectral linter on OpenAPI files 196 | 197 | ### Postman Collection Converter 198 | 199 | **Source File:** `.github/workflows/portman.yml` 200 | 201 | **Summary:** This action automatically converts OpenAPI specifications to Postman Collections when changes are made to JSON files in pull requests targeting the master branch. 202 | 203 | **Trigger Conditions:** 204 | - On pull request to master branch 205 | 206 | **Dependencies:** 207 | - `actions/checkout@v2`: Checks out the repository code 208 | - `actions/setup-node@v2`: Sets up Node.js environment 209 | - `@apideck/portman`: NPM package for converting OpenAPI specs to Postman collections 210 | - `ad-m/github-push-action@v0.6.0`: Pushes generated files back to the repository 211 | -------------------------------------------------------------------------------- /VTEX - Audience API.json: -------------------------------------------------------------------------------- 1 | { 2 | "openapi": "3.0.0", 3 | "info": { 4 | "version": "1.0.0", 5 | "title": "Audience API", 6 | "description": "API for managing audiences and mapping [price tables](https:\/\/help.vtex.com\/en\/tutorial\/setting-up-price-tables-for-specific-users--5S9oDOMHNmY4K0kAewAiWY) to these audiences for contextual seller pricing.\r\n\r\n## Index\r\n\r\n### Audience Manager\r\n- `POST` [Fetch audience](https:\/\/developers.vtex.com\/docs\/api-reference\/audience-api\/#post-\/api\/audience-manager\/pvt\/audience)\r\n\r\n### Price Table Mapper\r\n- `GET` [Get price table mapping](https:\/\/developers.vtex.com\/docs\/api-reference\/audience-api\/#get-\/api\/price-table-mapper\/pvt\/mapping\/-audienceId-)\r\n- `PUT` [Set price table mapping](https:\/\/developers.vtex.com\/docs\/api-reference\/audience-api\/#put-\/api\/price-table-mapper\/pvt\/mapping\/-audienceId-)\r\n- `DELETE`[Delete price table mapping](https:\/\/developers.vtex.com\/docs\/api-reference\/audience-api\/#delete-\/api\/price-table-mapper\/pvt\/mapping\/-audienceId-)\r\n\r\n\r\n## Common parameters in the documentation\r\n\r\n| Parameter name | Description |\r\n| - | - |\r\n| `{{accountName}}`| Name of the VTEX account. Used as part of the URL. |\r\n| `{{environment}}`| Name of the VTEX account. Used as part of the URL. |\r\n| `{{X-VTEX-API-AppKey}}` | Unique identifier of the [application key](https:\/\/developers.vtex.com\/docs\/guides\/api-authentication-using-application-keys). |\r\n| `{{X-VTEX-API-AppToken}}` | Secret token of the [application key](https:\/\/developers.vtex.com\/docs\/guides\/api-authentication-using-application-keys). |" 7 | }, 8 | "servers": [ 9 | { 10 | "url": "https://{accountName}.{environment}.com.br", 11 | "description": "VTEX server URL.", 12 | "variables": { 13 | "accountName": { 14 | "description": "Name of the VTEX account. Used as part of the URL", 15 | "default": "apiexamples" 16 | }, 17 | "environment": { 18 | "description": "Environment to use. Used as part of the URL.", 19 | "enum": [ 20 | "vtexcommercestable" 21 | ], 22 | "default": "vtexcommercestable" 23 | } 24 | } 25 | } 26 | ], 27 | "paths": { 28 | "/api/audience-manager/pvt/audience": { 29 | "post": { 30 | "tags": [ 31 | "Audience Manager" 32 | ], 33 | "summary": "Fetch audience", 34 | "description": "Fetch the audience ID based on the provided shopper email.\r\n\r\n## Permissions\r\n\r\nThis endpoint does not require [permissions](https:\/\/help.vtex.com\/en\/tutorial\/license-manager-resources--3q6ztrC8YynQf6rdc6euk3).", 35 | "parameters": [ 36 | { 37 | "$ref": "#/components/parameters/Content-Type" 38 | }, 39 | { 40 | "$ref": "#/components/parameters/Accept" 41 | }, 42 | { 43 | "$ref": "#/components/parameters/an" 44 | } 45 | ], 46 | "requestBody": { 47 | "content": { 48 | "application/json": { 49 | "schema": { 50 | "type": "object", 51 | "description": "Object containing information about the shopper's email.", 52 | "required": [ 53 | "email" 54 | ], 55 | "properties": { 56 | "email": { 57 | "type": "string", 58 | "description": "Shopper's email.", 59 | "example": "shopper-email@email.com" 60 | } 61 | } 62 | } 63 | } 64 | } 65 | }, 66 | "responses": { 67 | "200": { 68 | "description": "OK", 69 | "content": { 70 | "application/json": { 71 | "schema": { 72 | "type": "array", 73 | "description": "Array of price table IDs.", 74 | "items": { 75 | "type": "string", 76 | "description": "Audience ID." 77 | } 78 | }, 79 | "example": [ 80 | "f8cb4d62-b43a-599c-89cc-027fadaa4b18" 81 | ] 82 | } 83 | } 84 | }, 85 | "400": { 86 | "description": "Bad Request", 87 | "content": { 88 | "application/json": { 89 | "schema": { 90 | "type": "object", 91 | "description": "Object containing the error message. This error occurs when the request body is empty, there are missing properties, or if the account is not identified from the context or query parameters.", 92 | "properties": { 93 | "error": { 94 | "type": "string", 95 | "description": "Error message." 96 | } 97 | } 98 | }, 99 | "example": { 100 | "error": "Invalid input or account not detected." 101 | } 102 | } 103 | } 104 | } 105 | } 106 | } 107 | }, 108 | "/api/price-table-mapper/pvt/mapping/{audienceId}": { 109 | "get": { 110 | "tags": [ 111 | "Price Table Mapper" 112 | ], 113 | "summary": "Get price table mapping", 114 | "description": "Fetches the price table mapping for a specific audience.\r\n\r\n## Permissions\r\n\r\nThis endpoint does not require [permissions](https:\/\/help.vtex.com\/en\/tutorial\/license-manager-resources--3q6ztrC8YynQf6rdc6euk3).", 115 | "parameters": [ 116 | { 117 | "$ref": "#/components/parameters/Content-Type" 118 | }, 119 | { 120 | "$ref": "#/components/parameters/Accept" 121 | }, 122 | { 123 | "$ref": "#/components/parameters/AudienceId" 124 | } 125 | ], 126 | "responses": { 127 | "200": { 128 | "description": "OK", 129 | "content": { 130 | "application/json": { 131 | "schema": { 132 | "type": "array", 133 | "description": "Array of price table IDs.", 134 | "items": { 135 | "type": "string", 136 | "description": "Price table ID." 137 | } 138 | }, 139 | "example": [ 140 | "priceTable01" 141 | ] 142 | } 143 | } 144 | }, 145 | "404": { 146 | "description": "Not Found", 147 | "content": { 148 | "application/json": { 149 | "schema": { 150 | "$ref": "#/components/schemas/responseError" 151 | }, 152 | "example": { 153 | "error": "Mapping not found for the provided audienceId." 154 | } 155 | } 156 | } 157 | } 158 | } 159 | }, 160 | "put": { 161 | "tags": [ 162 | "Price Table Mapper" 163 | ], 164 | "summary": "Set price table mapping", 165 | "description": "Sets one or more price table mappings for the specified audience. Each price table ID in the array defines a distinct price table that applies to the audience.\r\n\r\n## Permissions\r\n\r\nThis endpoint does not require [permissions](https:\/\/help.vtex.com\/en\/tutorial\/license-manager-resources--3q6ztrC8YynQf6rdc6euk3).", 166 | "parameters": [ 167 | { 168 | "$ref": "#/components/parameters/Content-Type" 169 | }, 170 | { 171 | "$ref": "#/components/parameters/Accept" 172 | }, 173 | { 174 | "$ref": "#/components/parameters/AudienceId" 175 | } 176 | ], 177 | "requestBody": { 178 | "content": { 179 | "application/json": { 180 | "schema": { 181 | "type": "array", 182 | "description": "Array of price table Ids.", 183 | "items": { 184 | "type": "string", 185 | "description": "Price table ID.", 186 | "example": "myPriceTable" 187 | } 188 | } 189 | } 190 | } 191 | }, 192 | "responses": { 193 | "204": { 194 | "description": "No Content" 195 | }, 196 | "400": { 197 | "description": "Bad Request", 198 | "content": { 199 | "application/json": { 200 | "schema": { 201 | "type": "object", 202 | "description": "Object containing the error message. This error occurs when the request body is empty or if the account cannot be retrieved from the request context.", 203 | "properties": { 204 | "error": { 205 | "type": "string", 206 | "description": "Error message." 207 | } 208 | } 209 | }, 210 | "example": { 211 | "error": "Invalid input or account not detected." 212 | } 213 | } 214 | } 215 | } 216 | } 217 | }, 218 | "delete": { 219 | "tags": [ 220 | "Price Table Mapper" 221 | ], 222 | "summary": "Delete price table mapping", 223 | "description": "Removes the price table mapping for the provided audience.\r\n\r\n## Permissions\r\n\r\nThis endpoint does not require [permissions](https:\/\/help.vtex.com\/en\/tutorial\/license-manager-resources--3q6ztrC8YynQf6rdc6euk3).", 224 | "parameters": [ 225 | { 226 | "$ref": "#/components/parameters/Content-Type" 227 | }, 228 | { 229 | "$ref": "#/components/parameters/Accept" 230 | }, 231 | { 232 | "$ref": "#/components/parameters/AudienceId" 233 | } 234 | ], 235 | "responses": { 236 | "204": { 237 | "description": "No Content" 238 | }, 239 | "400": { 240 | "description": "Bad Request", 241 | "content": { 242 | "application/json": { 243 | "schema": { 244 | "type": "object", 245 | "description": "Object containing the error message. This error occurs when the `audienceId` is not valid.", 246 | "properties": { 247 | "error": { 248 | "type": "string", 249 | "description": "Error message." 250 | } 251 | } 252 | }, 253 | "example": { 254 | "error": "Invalid audienceId." 255 | } 256 | } 257 | } 258 | } 259 | } 260 | } 261 | } 262 | }, 263 | "security": [ 264 | { 265 | "appKey": [], 266 | "appToken": [] 267 | }, 268 | { 269 | "VtexIdclientAutCookie": [] 270 | } 271 | ], 272 | "components": { 273 | "securitySchemes": { 274 | "appKey": { 275 | "type": "apiKey", 276 | "in": "header", 277 | "name": "X-VTEX-API-AppKey", 278 | "description": "Unique identifier of the [application key](https://developers.vtex.com/docs/guides/api-authentication-using-application-keys)." 279 | }, 280 | "appToken": { 281 | "type": "apiKey", 282 | "in": "header", 283 | "name": "X-VTEX-API-AppToken", 284 | "description": "Secret token of the [application key](https://developers.vtex.com/docs/guides/api-authentication-using-application-keys)." 285 | }, 286 | "VtexIdclientAutCookie": { 287 | "type": "apiKey", 288 | "in": "header", 289 | "name": "VtexIdclientAutCookie", 290 | "description": "[User token](https://developers.vtex.com/docs/guides/api-authentication-using-user-tokens), valid for 24 hours." 291 | } 292 | }, 293 | "parameters": { 294 | "Content-Type": { 295 | "name": "Content-Type", 296 | "in": "header", 297 | "description": "Type of the content being sent.", 298 | "required": true, 299 | "style": "simple", 300 | "schema": { 301 | "type": "string", 302 | "example": "application/json" 303 | } 304 | }, 305 | "an": { 306 | "name": "an", 307 | "in": "query", 308 | "description": "Name of your VTEX account.", 309 | "required": false, 310 | "style": "form", 311 | "schema": { 312 | "type": "string", 313 | "example": "exampleAccount" 314 | } 315 | }, 316 | "Accept": { 317 | "name": "Accept", 318 | "in": "header", 319 | "description": "HTTP Client Negotiation _Accept_ Header. Indicates the types of responses the client can understand.", 320 | "required": true, 321 | "style": "simple", 322 | "schema": { 323 | "type": "string", 324 | "example": "application/json" 325 | } 326 | }, 327 | "AudienceId": { 328 | "name": "audienceId", 329 | "in": "path", 330 | "description": "ID that represents an audience.", 331 | "required": true, 332 | "schema": { 333 | "type": "string", 334 | "example": "f8cb4d62-b43a-599c-89cc-027fadaa4b18" 335 | } 336 | } 337 | }, 338 | "schemas": { 339 | "responseError": { 340 | "type": "object", 341 | "description": "Object containing the error message.", 342 | "properties": { 343 | "error": { 344 | "type": "string", 345 | "description": "Error message." 346 | } 347 | } 348 | } 349 | } 350 | }, 351 | "tags": [ 352 | { 353 | "name": "Audience Manager" 354 | }, 355 | { 356 | "name": "Price Table Mapper" 357 | } 358 | ] 359 | } 360 | -------------------------------------------------------------------------------- /VTEX - Data Subject Rights.json: -------------------------------------------------------------------------------- 1 | { 2 | "openapi": "3.0.0", 3 | "info": { 4 | "title": "Data Subject Rights API - PII data architecture", 5 | "description": ">❗ This API is currently in closed alpha testing stage, which means that only specific customers can access it now. Do not share this documentation with people outside of your company. If you do not have access yet, please refer to the [Erasing customer data](https://help.vtex.com/en/tutorial/erasing-customer-data--1R9Fn7A06Ifj4R9YD4JTKU) guide instead.\r\n\r\n>⚠️ The **Data Subject Rights API - PII data architecture** is only compatible with stores using the PII data architecture from [Data Protection Plus](https://developers.vtex.com/docs/guides/data-protection-plus), which is in closed beta phase, only available in select regions.\r\n>\r\n> This feature is part of [VTEX Shield](https://help.vtex.com/en/tutorial/vtex-shield--2CVk6H9eY2CBtHjtDI7BFh). If you are already a VTEX customer and want to adopt VTEX Shield for your business, please contact [Commercial Support](https://help.vtex.com/en/tracks/support-at-vtex--4AXsGdGHqExp9ZkiNq9eMy/3KQWGgkPOwbFTPfBxL7YwZ). Additional fees may apply. If you are not yet a customer but are interested in this solution, please complete our [contact form](https://vtex.com/us-en/contact/).\r\n\r\nAccording to data protection policies, such as [GDPR and LGPD](https://vtex.com/us-en/privacy-and-agreements/vtex-commitment/), companies using customer personal data are required to delete collected information upon the customer's request.\r\n\r\nData Subject Rights API allows stores using the [PII data architecture](https://developers.vtex.com/docs/guides/pii-data-architecture-specifications) from [Data Protection Plus](https://developers.vtex.com/docs/guides/data-protection-plus) to erase user data collected by Checkout, Orders, VTEX ID and Profile System, without depending on the VTEX Support flow described in the [Erasing customer data](https://help.vtex.com/en/tutorial/erasing-customer-data--1R9Fn7A06Ifj4R9YD4JTKU) guide.\r\n\r\n## Index\r\n\r\n- `POST` [Erase customer data](https://developers.vtex.com/docs/api-reference/user-data-rights-api#post-/api/user-rights/createAndProcessDeleteUserData)", 6 | "version": "1.0" 7 | }, 8 | "servers": [ 9 | { 10 | "url": "http://api.vtex.com", 11 | "description": "VTEX server URL." 12 | } 13 | ], 14 | "paths": { 15 | "/api/user-rights/createAndProcessDeleteUserData": { 16 | "post": { 17 | "tags": [ 18 | "Data Subject Rights" 19 | ], 20 | "summary": "Erase customer data", 21 | "description": "Deletes a given customer's data collected in your store by Checkout, Orders, VTEX ID and Profile System.\r\n\r\n> Only orders with `invoiced` or `canceled` status are erased in this request.\r\n\r\n>❗ This API is currently in closed alpha testing stage, which means that only specific customers can access it now. Do not share this documentation with people outside of your company. If you do not have access yet, please refer to the [Erasing customer data](https://help.vtex.com/en/tutorial/erasing-customer-data--1R9Fn7A06Ifj4R9YD4JTKU) guide instead.\r\n\r\n>⚠️ This endpoint is only compatible with stores using the PII data architecture from [Data Protection Plus](https://developers.vtex.com/docs/guides/data-protection-plus), which is in closed beta phase, only available in select regions.\r\n>\r\n> This feature is part of [VTEX Shield](https://help.vtex.com/en/tutorial/vtex-shield--2CVk6H9eY2CBtHjtDI7BFh). If you are already a VTEX customer and want to adopt VTEX Shield for your business, please contact [Commercial Support](https://help.vtex.com/en/tracks/support-at-vtex--4AXsGdGHqExp9ZkiNq9eMy/3KQWGgkPOwbFTPfBxL7YwZ). Additional fees may apply. If you are not yet a customer but are interested in this solution, please complete our [contact form](https://vtex.com/us-en/contact/).\r\n\r\n## Permissions\r\n\r\nAny user or [application key](https://developers.vtex.com/docs/guides/api-authentication-using-application-keys) must have at least one of the appropriate [License Manager resources](https://help.vtex.com/en/tutorial/license-manager-resources--3q6ztrC8YynQf6rdc6euk3) to be able to successfully run this request. Otherwise they will receive a status code `403` error. These are the applicable resources for this endpoint:\r\n\r\n| **Product** | **Category** | **Resource** |\r\n| --------------- | ----------------- | ----------------- |\r\n| User Rights | user-rights-request | **Write user rights requests** |\r\n\r\nThere are no applicable [predefined roles](https://help.vtex.com/en/tutorial/predefined-roles--jGDurZKJHvHJS13LnO7Dy) for this resource list. You must [create a custom role](https://help.vtex.com/en/tutorial/roles--7HKK5Uau2H6wxE1rH5oRbc#creating-a-role) and add at least one of the resources above in order to use this endpoint. To learn more about machine authentication at VTEX, see [Authentication overview](https://developers.vtex.com/docs/guides/authentication).\r\n\r\n>\u2757 To prevent integrations from having excessive permissions, consider the [best practices for managing app keys](https://help.vtex.com/en/tutorial/best-practices-application-keys--7b6nD1VMHa49aI5brlOvJm) when assigning License Manager roles to integrations.", 22 | "parameters": [ 23 | { 24 | "$ref": "#/components/parameters/Content-Type" 25 | }, 26 | { 27 | "$ref": "#/components/parameters/Accept" 28 | }, 29 | { 30 | "$ref": "#/components/parameters/an" 31 | } 32 | ], 33 | "requestBody": { 34 | "content": { 35 | "application/json": { 36 | "schema": { 37 | "type": "object", 38 | "properties": { 39 | "email": { 40 | "type": "string", 41 | "description": "Email of the client whose data will be deleted.", 42 | "example": "john@mail.com" 43 | } 44 | } 45 | } 46 | } 47 | } 48 | }, 49 | "responses": { 50 | "200": { 51 | "description": "OK", 52 | "content": { 53 | "application/json": { 54 | "schema": { 55 | "type": "object", 56 | "properties": { 57 | "uuid": { 58 | "type": "string", 59 | "description": "User data rights request unique identifier in [UUID](https://www.uuidtools.com/what-is-uuid) format." 60 | }, 61 | "requestType": { 62 | "type": "string", 63 | "description": "Type of user data rights request." 64 | }, 65 | "email": { 66 | "type": "string", 67 | "description": "Client email." 68 | }, 69 | "status": { 70 | "type": "string", 71 | "description": "Status of the user data rights request." 72 | }, 73 | "dataResponse": { 74 | "type": "string", 75 | "description": "Escaped JSON containing information about the status of data deletion on each VTEX system that stores client data." 76 | }, 77 | "requestTime": { 78 | "type": "string", 79 | "description": "Date of the user data rights request in [ISO 8601](https://www.iso.org/iso-8601-date-and-time-format.html)format." 80 | }, 81 | "applications": { 82 | "type": "array", 83 | "description": "Array containing an object for each VTEX application that stores client data.", 84 | "items": { 85 | "type": "object", 86 | "description": "Object containing information about user data status in each VTEX application that stores client data.", 87 | "properties": { 88 | "application": { 89 | "type": "string", 90 | "description": "Abbreviated name of the application, which can be `chk` (Checkout), `orders` (Order Management System), `profileSystemV2` (PII Profile System) or `vid` (VTEX ID)." 91 | }, 92 | "status": { 93 | "type": "string", 94 | "description": "Status of client data in the given application. The possible values are:\n\r- `Completed` - Processing completed successfully.\n\r- `Error` - An unexpected error occurred during the process. You must make a new request.\n\r- `PendingCheck` - Pending validation. Unable to perform validation on one or more services.\n\r- `Blocked` - Pending validation. One or more services are unable to fulfill the deletion request. You need to wait and make a new request in the future.\n\r- `PendingDeletion` - It was not possible to delete data in one or more services. You must make a new request." 95 | }, 96 | "errorDetail": { 97 | "type": "string", 98 | "description": "In case of error, this field contains an explanatory error message. Otherwise, this field is an empty string." 99 | }, 100 | "updateAt": { 101 | "type": "string", 102 | "description": "Date of the latest update in client data in the given application, in UTC format." 103 | } 104 | } 105 | } 106 | } 107 | } 108 | }, 109 | "example": { 110 | "uuid": "3e2f53dc-b099-4dc8-9727-581b2a97f39c", 111 | "requestType": "Removal", 112 | "email": "pedido2@vtexchallenge.com", 113 | "status": "Completed", 114 | "dataResponse": "{\r\n \"VTEX Checkout\": [],\r\n \"orders\": {\r\n \"dataStatus\": {\r\n \"status\": \"anonymized\",\r\n \"reason\": \"Sensitive information was anonymized rather than deleted to preserve the store metrics.\",\r\n \"evidence\": \"Anonymized [0] orders\",\r\n \"dryRun\": true\r\n },\r\n \"orders\": []\r\n },\r\n \"Profile System PII API\": {},\r\n \"VTEX ID\": {\r\n \"type\": \"https://tools.ietf.org/html/rfc7231#section-6.5.4\",\r\n \"title\": \"Not Found\",\r\n \"status\": 404,\r\n \"traceId\": \"00-65d5abf9263b07eb185beee49e2075dc-b67b373e2e93dcf8-00\"\r\n }\r\n}", 115 | "requestTime": "2023-09-05T17:19:33.1969022-03:00", 116 | "applications": [ 117 | { 118 | "application": "chk", 119 | "status": "Deleted", 120 | "errorDetail": "", 121 | "updateAt": "2023-09-05T20:20:23" 122 | }, 123 | { 124 | "application": "orders", 125 | "status": "Deleted", 126 | "errorDetail": "", 127 | "updateAt": "2023-09-05T20:20:25" 128 | }, 129 | { 130 | "application": "profileSystemV2", 131 | "status": "Deleted", 132 | "errorDetail": "", 133 | "updateAt": "2023-09-05T20:20:26" 134 | }, 135 | { 136 | "application": "vid", 137 | "status": "Deleted", 138 | "errorDetail": "", 139 | "updateAt": "2023-09-05T20:20:29" 140 | } 141 | ] 142 | } 143 | 144 | } 145 | } 146 | } 147 | } 148 | } 149 | } 150 | }, 151 | "components": { 152 | "parameters": { 153 | "Content-Type": { 154 | "name": "Content-Type", 155 | "in": "header", 156 | "description": "Type of the content being sent.", 157 | "required": true, 158 | "style": "simple", 159 | "schema": { 160 | "type": "string", 161 | "example": "application/json" 162 | } 163 | }, 164 | "Accept": { 165 | "name": "Accept", 166 | "in": "header", 167 | "description": "HTTP Client Negotiation _Accept_ Header. Indicates the types of responses the client can understand.", 168 | "required": true, 169 | "style": "simple", 170 | "schema": { 171 | "type": "string", 172 | "example": "application/json" 173 | } 174 | }, 175 | "an": { 176 | "name": "an", 177 | "in": "query", 178 | "description": "Name of your VTEX account.", 179 | "required": false, 180 | "style": "form", 181 | "schema": { 182 | "type": "string", 183 | "example": "mystore" 184 | } 185 | } 186 | }, 187 | "securitySchemes": { 188 | "appKey": { 189 | "type": "apiKey", 190 | "in": "header", 191 | "name": "X-VTEX-API-AppKey", 192 | "description": "Unique identifier of the [application key](https://developers.vtex.com/docs/guides/api-authentication-using-application-keys)." 193 | }, 194 | "appToken": { 195 | "type": "apiKey", 196 | "in": "header", 197 | "name": "X-VTEX-API-AppToken", 198 | "description": "Secret token of the [application key](https://developers.vtex.com/docs/guides/api-authentication-using-application-keys)." 199 | }, 200 | "VtexIdclientAutCookie": { 201 | "type": "apiKey", 202 | "in": "header", 203 | "name": "VtexIdclientAutCookie", 204 | "description": "[User token](https://developers.vtex.com/docs/guides/api-authentication-using-user-tokens), valid for 24 hours." 205 | } 206 | } 207 | }, 208 | "tags": [ 209 | { 210 | "name": "Data Subject Rights" 211 | } 212 | ], 213 | "security": [ 214 | { 215 | "appKey": [], 216 | "appToken": [] 217 | }, 218 | { 219 | "VtexIdclientAutCookie": [] 220 | } 221 | ] 222 | } 223 | -------------------------------------------------------------------------------- /VTEX - Delivery Promise Notification API.json: -------------------------------------------------------------------------------- 1 | { 2 | "openapi": "3.0.0", 3 | "info": { 4 | "title": "Delivery Promise Notificaton API", 5 | "version": "1.0.0", 6 | "description": "[Delivery Promise (Beta)](https://help.vtex.com/en/tutorial/delivery-promise-beta--p9EJH9GgxL0JceA6dBswd) is VTEX's new solution that allows customers to view only the products they can buy in their shopping experience, considering both the product availability in the seller inventory and valid shipping methods for their delivery address. The Delivery Promise Notificaton API notifies the VTEX store of the seller's product availability and delivery promises.\r\n\r\n>ℹ️ This feature is in beta, which means that we are working to improve it. If you have any questions, please contact our [Support Center](https://support.vtex.com/hc/en-us/requests).\r\n\r\n### Delivery Promise\r\n\r\n- `PUT` [Update product availability](https://developers.vtex.com/docs/api-reference/delivery-promise-notification-api#put-/delivery-promises/external-sellers/-sellerId-/products)" 7 | }, 8 | "servers": [ 9 | { 10 | "url": "https://{accountName}.{environment}.com.br/api", 11 | "description": "VTEX server URL.", 12 | "variables": { 13 | "accountName": { 14 | "description": "Name of the VTEX account. Used as part of the URL.", 15 | "default": "apiexamples" 16 | }, 17 | "environment": { 18 | "description": "Environment to use. Used as part of the URL.", 19 | "enum": ["vtexcommercestable"], 20 | "default": "vtexcommercestable" 21 | } 22 | } 23 | } 24 | ], 25 | "paths": { 26 | "/delivery-promises/external-sellers/{sellerId}/products": { 27 | "put": { 28 | "summary": "Update external product availability", 29 | "description": "Notifies VTEX of changes in product availability and delivery promises.\r\n\r\n## Permissions\r\n\r\nAny user or [application key](https://developers.vtex.com/docs/guides/api-authentication-using-application-keys) must have at least one of the appropriate [License Manager resources](https://help.vtex.com/en/tutorial/license-manager-resources--3q6ztrC8YynQf6rdc6euk3) to be able to successfully run this request. Otherwise they will receive a status code `403` error. These are the applicable resources for this endpoint:\r\n\r\n| **Product** | **Category** | **Resource** |\r\n| --------------- | ----------------- | ----------------- |\r\n| Delivery Promises | ProductAvailability | **Notify Product Availability Change** |\r\n\r\nThere are no applicable [predefined roles](https://help.vtex.com/en/tutorial/predefined-roles--jGDurZKJHvHJS13LnO7Dy) for this resource list. You must [create a custom role](https://help.vtex.com/en/tutorial/roles--7HKK5Uau2H6wxE1rH5oRbc#creating-a-role) and add at least one of the resources above in order to use this endpoint. To learn more about machine authentication at VTEX, see [Authentication overview](https://developers.vtex.com/docs/guides/authentication).\r\n\r\n>\u2757 To prevent integrations from having excessive permissions, consider the [best practices for managing app keys](https://help.vtex.com/en/tutorial/best-practices-application-keys--7b6nD1VMHa49aI5brlOvJm) when assigning License Manager roles to integrations.", 30 | "tags": ["Delivery Promise"], 31 | "parameters": [ 32 | { 33 | "name": "sellerId", 34 | "in": "path", 35 | "required": true, 36 | "schema": { 37 | "type": "string" 38 | }, 39 | "description": "The seller’s ID registered in the marketplace." 40 | }, 41 | { 42 | "name": "an", 43 | "in": "query", 44 | "required": true, 45 | "schema": { 46 | "type": "string" 47 | }, 48 | "description": "The account name receiving the notification." 49 | }, 50 | { 51 | "$ref": "#/components/parameters/Content-Type" 52 | }, 53 | { 54 | "$ref": "#/components/parameters/Accept" 55 | } 56 | ], 57 | "requestBody": { 58 | "required": true, 59 | "content": { 60 | "application/json": { 61 | "schema": { 62 | "type": "object", 63 | "required": [ 64 | "itemId", 65 | "availability", 66 | "promises" 67 | ], 68 | "properties": { 69 | "itemId": { 70 | "type": "string", 71 | "description": "Unique identifier of the binding of the seller with the SKU." 72 | }, 73 | "productId": { 74 | "type": "string", 75 | "description": "The product unique identifier." 76 | }, 77 | "availability": { 78 | "type": "integer", 79 | "description": "Total available items." 80 | }, 81 | "promises": { 82 | "type": "array", 83 | "description": "List of delivery promises.", 84 | "items": { 85 | "type": "object", 86 | "description": "Delivery promise details.", 87 | "required": [ 88 | "availability", 89 | "deliveryChannel" 90 | ], 91 | "properties": { 92 | "availability": { 93 | "type": "integer", 94 | "description": "Available items for this delivery promise." 95 | }, 96 | "deliveryChannel": { 97 | "type": "string", 98 | "enum": [ 99 | "delivery", 100 | "pickup-in-point" 101 | ], 102 | "description": "Delivery channel type." 103 | }, 104 | "deliveryZoneIds": { 105 | "type": "array", 106 | "items": { 107 | "type": "string", 108 | "description": "Delivery zone unique identifier." 109 | }, 110 | "description": "List of delivery zones where the item is available." 111 | }, 112 | "deliveryInfo": { 113 | "type": "object", 114 | "description": "Delivery method details.", 115 | "properties": { 116 | "id": { 117 | "type": "string", 118 | "description": "Unique identifier of the delivery method." 119 | }, 120 | "name": { 121 | "type": "string", 122 | "description": "Display name of the delivery method." 123 | }, 124 | "deliveryTime": { 125 | "type": "string", 126 | "description": "Estimated delivery time in `dd.hh:mm:ss` format. For example, `2.02:00:00` represents an estimated delivery time of two days and two hours." 127 | } 128 | } 129 | } 130 | } 131 | } 132 | } 133 | } 134 | }, 135 | "example": { 136 | "itemId": "B", 137 | "productId": "XPTO", 138 | "availability": 7, 139 | "promises": [ 140 | { 141 | "availability": 5, 142 | "deliveryChannel": "delivery", 143 | "deliveryZoneIds": ["rio-de-janeiro"], 144 | "deliveryInfo": { 145 | "id": "Prime5Days", 146 | "name": "Same Week", 147 | "deliveryTime": "5.00:00:00" 148 | } 149 | }, 150 | { 151 | "availability": 3, 152 | "deliveryChannel": "pickup-in-point", 153 | "deliveryZoneIds": ["rio-de-janeiro"], 154 | "deliveryInfo": { 155 | "id": "Prime2Day", 156 | "name": "Same Day", 157 | "deliveryTime": "1.00:00:00" 158 | } 159 | } 160 | ] 161 | } 162 | } 163 | } 164 | }, 165 | "responses": { 166 | "202": { 167 | "description": "Accept", 168 | "content": { 169 | "application/json": { 170 | "schema": { 171 | "description": "Empty schema." 172 | } 173 | } 174 | } 175 | }, 176 | "400": { 177 | "description": "Bad request", 178 | "content": { 179 | "application/json": { 180 | "schema": { 181 | "type": "object", 182 | "properties": { 183 | "error": { 184 | "type": "string", 185 | "description": "Error message. Invalid JSON or non-registered items." 186 | } 187 | } 188 | }, 189 | "example": { 190 | "error": "Invalid JSON or non-registered items." 191 | } 192 | } 193 | } 194 | }, 195 | "401": { 196 | "description": "Unauthorized", 197 | "content": { 198 | "application/json": { 199 | "schema": { 200 | "type": "object", 201 | "properties": { 202 | "error": { 203 | "type": "string", 204 | "description": "Error message. Invalid API key or token." 205 | } 206 | } 207 | }, 208 | "example": { 209 | "error": "Invalid API key or token." 210 | } 211 | } 212 | } 213 | }, 214 | "403": { 215 | "description": "Forbidden", 216 | "content": { 217 | "application/json": { 218 | "schema": { 219 | "type": "object", 220 | "properties": { 221 | "error": { 222 | "type": "string", 223 | "description": "Error message. Inadequate permissions." 224 | } 225 | } 226 | }, 227 | "example": { 228 | "error": "Inadequate permissions." 229 | } 230 | } 231 | } 232 | }, 233 | "429": { 234 | "description": "Too many requests", 235 | "content": { 236 | "application/json": { 237 | "schema": { 238 | "type": "object", 239 | "properties": { 240 | "error": { 241 | "type": "string", 242 | "description": "Error message. Request limit exceeded." 243 | } 244 | } 245 | }, 246 | "example": { 247 | "error": "Request limit exceeded." 248 | } 249 | } 250 | } 251 | }, 252 | "500": { 253 | "description": "Internal server error", 254 | "content": { 255 | "application/json": { 256 | "schema": { 257 | "type": "object", 258 | "properties": { 259 | "error": { 260 | "type": "string", 261 | "description": "Error message. Unexpected application failure." 262 | } 263 | } 264 | }, 265 | "example": { 266 | "error": "Unexpected application failure." 267 | } 268 | } 269 | } 270 | } 271 | }, 272 | "security": [ 273 | { 274 | "appKey": [], 275 | "appToken": [] 276 | } 277 | ] 278 | } 279 | } 280 | }, 281 | "components": { 282 | "securitySchemes": { 283 | "appKey": { 284 | "type": "apiKey", 285 | "in": "header", 286 | "name": "X-VTEX-API-AppKey", 287 | "description": "Unique identifier of the [application key](https://developers.vtex.com/docs/guides/api-authentication-using-application-keys)." 288 | }, 289 | "appToken": { 290 | "type": "apiKey", 291 | "in": "header", 292 | "name": "X-VTEX-API-AppToken", 293 | "description": "Secret token of the [application key](https://developers.vtex.com/docs/guides/api-authentication-using-application-keys)." 294 | }, 295 | "VtexIdclientAutCookie": { 296 | "type": "apiKey", 297 | "in": "header", 298 | "name": "VtexIdclientAutCookie", 299 | "description": "[User token](https://developers.vtex.com/docs/guides/api-authentication-using-user-tokens), valid for 24 hours." 300 | } 301 | }, 302 | "parameters": { 303 | "Content-Type": { 304 | "name": "Content-Type", 305 | "in": "header", 306 | "description": "Type of the content being sent.", 307 | "required": true, 308 | "style": "simple", 309 | "schema": { 310 | "type": "string", 311 | "default": "application/json" 312 | } 313 | }, 314 | "Accept": { 315 | "name": "Accept", 316 | "in": "header", 317 | "description": "HTTP Client Negotiation _Accept_ Header. Indicates the types of responses the client can understand.", 318 | "required": true, 319 | "style": "simple", 320 | "schema": { 321 | "type": "string", 322 | "default": "application/json" 323 | } 324 | } 325 | } 326 | }, 327 | "tags": [ 328 | { 329 | "name": "Delivery Promise", 330 | "description": "Operations related to the delivery promise." 331 | } 332 | ] 333 | } 334 | -------------------------------------------------------------------------------- /VTEX - Legacy CMS Portal API.json: -------------------------------------------------------------------------------- 1 | { 2 | "openapi": "3.0.0", 3 | "info": { 4 | "title": "Legacy CMS Portal API", 5 | "description": "[CMS (Content Management System)](https://help.vtex.com/en/tracks/cms--2YcpgIljVaLVQYMzxQbc3z/1oN446gRGcR2s70RvBCAmj) is a feature dedicated to manage content in a constant and practical manner. With the Legacy CMS Portal API, you will be able to update your website internet communication protocol.\r\n\r\n## Index \r\n\r\n ### Change URI Schema\r\n\r\n- `PUT` [Update all account's websites internet communication protocol](https://developers.vtex.com/docs/api-reference/legacy-cms-portal-api#put-/api/catalog_system/pvt/virtualfolder/changeurischema/-protocol-)\r\n- `PUT` [Update specific website comunication protocol](https://developers.vtex.com/docs/api-reference/legacy-cms-portal-api#put-/api/catalog_system/pvt/virtualfolder/site/-websiteId-/changeurischema/-protocol-)\n\n**Server**\n- `https://{accountName}.vtexcommercestable.com.br/`\r\n\r\n### Common parameters\r\n\r\n| **Parameter name** | **Description** | **Type** |\r\n| --------------- | ----------------- | ----------------- |\r\n| {{accountName}} | Name of the VTEX account. Used as part of the URL. | Server variable. |\r\n| {{protocol}} | Internet communication protocol, it can be `HTTP` or `HTTPS`. | Path variable. |\r\n\r\n ", 6 | "contact": {}, 7 | "version": "1.0" 8 | }, 9 | "servers": [ 10 | { 11 | "url": "https://{accountName}.vtexcommercestable.com.br", 12 | "description": "VTEX server URL.", 13 | "variables": { 14 | "accountName": { 15 | "description": "Name of the VTEX account. Used as part of the URL.", 16 | "default": "apiexamples" 17 | }, 18 | "environment": { 19 | "description": "Environment to use. Used as part of the URL.", 20 | "enum": [ 21 | "vtexcommercestable" 22 | ], 23 | "default": "vtexcommercestable" 24 | } 25 | } 26 | } 27 | ], 28 | "components": { 29 | "securitySchemes": { 30 | "appKey": { 31 | "type": "apiKey", 32 | "in": "header", 33 | "name": "X-VTEX-API-AppKey", 34 | "description": "Unique identifier of the [application key](https://developers.vtex.com/docs/guides/api-authentication-using-application-keys)." 35 | }, 36 | "appToken": { 37 | "type": "apiKey", 38 | "in": "header", 39 | "name": "X-VTEX-API-AppToken", 40 | "description": "Secret token of the [application key](https://developers.vtex.com/docs/guides/api-authentication-using-application-keys)." 41 | }, 42 | "VtexIdclientAutCookie": { 43 | "type": "apiKey", 44 | "in": "header", 45 | "name": "VtexIdclientAutCookie", 46 | "description": "[User token](https://developers.vtex.com/docs/guides/api-authentication-using-user-tokens), valid for 24 hours." 47 | } 48 | }, 49 | "parameters": { 50 | "Content-Type": { 51 | "name": "Content-Type", 52 | "in": "header", 53 | "description": "Type of the content being sent.", 54 | "required": true, 55 | "style": "simple", 56 | "schema": { 57 | "type": "string", 58 | "example": "application/json" 59 | } 60 | }, 61 | "Accept": { 62 | "name": "Accept", 63 | "in": "header", 64 | "description": "HTTP Client Negotiation _Accept_ Header. Indicates the types of responses the client can understand.", 65 | "required": true, 66 | "style": "simple", 67 | "schema": { 68 | "type": "string", 69 | "example": "application/json" 70 | } 71 | } 72 | } 73 | }, 74 | "paths": { 75 | "/api/catalog_system/pvt/virtualfolder/changeurischema/{protocol}": { 76 | "put": { 77 | "tags": [ 78 | "Change URI Schema" 79 | ], 80 | "summary": "Update all account's websites internet communication protocol", 81 | "description": "Updates all account's website protocols to `HTTP` or `HTTPS`.\r\n\r\n## Permissions\r\n\r\nAny user or [application key](https:\/\/developers.vtex.com\/docs\/guides\/authentication-overview#application-keys) must have the appropriate [License Manager resource](https:\/\/help.vtex.com\/en\/tutorial\/license-manager-resources--3q6ztrC8YynQf6rdc6euk3) to be able to successfully run this request. Otherwise, they will receive a status code `403` error. This is the applicable resource for this endpoint:\r\n\r\n| **Product** | **Category** | **Resource** |\r\n| --------------- | ----------------- | ----------------- |\r\n| Catalog | Configuration | **CMS Management** |\r\n\r\nThere are no applicable [predefined roles](https:\/\/help.vtex.com\/en\/tutorial\/predefined-roles--jGDurZKJHvHJS13LnO7Dy) for this resource list. You must [create a custom role](https:\/\/help.vtex.com\/en\/tutorial\/roles--7HKK5Uau2H6wxE1rH5oRbc#creating-a-role) and add the resources above to use this endpoint.\r\n\r\nTo learn more about machine authentication at VTEX, see [Authentication overview](https:\/\/developers.vtex.com\/docs\/guides\/authentication-overview#machine-authentication).\r\n\r\n>\u2757 To prevent integrations from having excessive permissions, consider the [best practices for managing app keys](https:\/\/help.vtex.com\/en\/tutorial\/best-practices-application-keys--7b6nD1VMHa49aI5brlOvJm) when assigning License Manager roles to integrations.", 82 | "operationId": "Changeentireaccount(allwebsites)", 83 | "parameters": [ 84 | { 85 | "name": "protocol", 86 | "in": "path", 87 | "description": "Internet communication protocol, it can be `HTTP` or `HTTPS`.", 88 | "required": true, 89 | "style": "simple", 90 | "schema": { 91 | "type": "string", 92 | "example": "https" 93 | } 94 | }, 95 | { 96 | "$ref": "#/components/parameters/Content-Type" 97 | }, 98 | { 99 | "$ref": "#/components/parameters/Accept" 100 | } 101 | ], 102 | "responses": { 103 | "200": { 104 | "description": "OK", 105 | "content": { 106 | "application/json": { 107 | "schema": { 108 | "title": "Request Status", 109 | "description": "Message indicating that the request was successful.", 110 | "type": "string" 111 | }, 112 | "example": "OK" 113 | } 114 | } 115 | } 116 | }, 117 | "deprecated": false 118 | } 119 | }, 120 | "/api/catalog_system/pvt/virtualfolder/site/{websiteId}/changeurischema/{protocol}": { 121 | "put": { 122 | "tags": [ 123 | "Change URI Schema" 124 | ], 125 | "summary": "Update specific website comunication protocol", 126 | "description": "Updates a specific website protocol to `HTTP` or `HTTPS`.\r\n\r\n## Permissions\r\n\r\nAny user or [application key](https:\/\/developers.vtex.com\/docs\/guides\/authentication-overview#application-keys) must have the appropriate [License Manager resource](https:\/\/help.vtex.com\/en\/tutorial\/license-manager-resources--3q6ztrC8YynQf6rdc6euk3) to be able to successfully run this request. Otherwise, they will receive a status code `403` error. This is the applicable resource for this endpoint:\r\n\r\n| **Product** | **Category** | **Resource** |\r\n| --------------- | ----------------- | ----------------- |\r\n| Catalog | Configuration | **CMS Management** |\r\n\r\nThere are no applicable [predefined roles](https:\/\/help.vtex.com\/en\/tutorial\/predefined-roles--jGDurZKJHvHJS13LnO7Dy) for this resource list. You must [create a custom role](https:\/\/help.vtex.com\/en\/tutorial\/roles--7HKK5Uau2H6wxE1rH5oRbc#creating-a-role) and add the resources above to use this endpoint.\r\n\r\nTo learn more about machine authentication at VTEX, see [Authentication overview](https:\/\/developers.vtex.com\/docs\/guides\/authentication-overview#machine-authentication).\r\n\r\n>\u2757 To prevent integrations from having excessive permissions, consider the [best practices for managing app keys](https:\/\/help.vtex.com\/en\/tutorial\/best-practices-application-keys--7b6nD1VMHa49aI5brlOvJm) when assigning License Manager roles to integrations.", 127 | "operationId": "Changespecificwebsite", 128 | "parameters": [ 129 | { 130 | "name": "websiteId", 131 | "in": "path", 132 | "description": "Specific website ID.", 133 | "required": true, 134 | "style": "simple", 135 | "schema": { 136 | "type": "string", 137 | "example": "292c47c7-0b81-48f9-a5a0-dcf240100884" 138 | } 139 | }, 140 | { 141 | "name": "protocol", 142 | "in": "path", 143 | "description": "Internet communication protocol, it can be `HTTP` or `HTTPS`.", 144 | "required": true, 145 | "style": "simple", 146 | "schema": { 147 | "type": "string", 148 | "example": "https" 149 | } 150 | }, 151 | { 152 | "$ref": "#/components/parameters/Content-Type" 153 | }, 154 | { 155 | "$ref": "#/components/parameters/Accept" 156 | } 157 | ], 158 | "responses": { 159 | "200": { 160 | "description": "OK", 161 | "content": { 162 | "application/json": { 163 | "schema": { 164 | "title": "Request Status", 165 | "description": "Message indicating that the request was successful.", 166 | "type": "string" 167 | }, 168 | "example": "OK" 169 | } 170 | } 171 | } 172 | }, 173 | "deprecated": false 174 | } 175 | } 176 | }, 177 | "tags": [ 178 | { 179 | "name": "Change URI Schema", 180 | "description": "Changes CMS URI" 181 | } 182 | ], 183 | "security": [ 184 | { 185 | "appKey": [], 186 | "appToken": [] 187 | } 188 | ] 189 | } -------------------------------------------------------------------------------- /VTEX - Message Center API.json: -------------------------------------------------------------------------------- 1 | { 2 | "openapi": "3.0.0", 3 | "info": { 4 | "version": "1.0.0", 5 | "title": "Message Center API", 6 | "description": "Message Center corresponds to [order transactional email templates](https://help.vtex.com/en/tutorial/order-transactional-email-templates--3g2S2kqBOoSGcCaqMYK2my). The store can configure templates to automatically send emails to customers and notify them about their order events, such as payment confirmation and shipping.\r\n\r\n## Message Center API Index \r\n\r\n### DKIM configuration\r\n\r\n- `POST` [Generate DKIM keys](https://developers.vtex.com/docs/api-reference/message-center-api#post-/api/mail-service/pvt/providers/-EmailProvider-/dkim)", 7 | "license": { 8 | "name": "MIT" 9 | } 10 | }, 11 | "servers": [ 12 | { 13 | "url": "https://{accountName}.{environment}.com.br", 14 | "description": "VTEX server URL.", 15 | "variables": { 16 | "accountName": { 17 | "description": "Name of the VTEX account. Used as part of the URL.", 18 | "default": "apiexamples" 19 | }, 20 | "environment": { 21 | "description": "Environment to use. Used as part of the URL.", 22 | "enum": [ 23 | "vtexcommercestable" 24 | ], 25 | "default": "vtexcommercestable" 26 | } 27 | } 28 | } 29 | ], 30 | "paths": { 31 | "/api/mail-service/pvt/providers/{EmailProvider}/dkim": { 32 | "post": { 33 | "summary": "Generate DKIM keys", 34 | "description": "Create [DKIM keys](https://developers.vtex.com/docs/guides/setting-up-dkim-for-transactional-emails) for a sender that was [set up](https://help.vtex.com/en/tracks/transactional-emails--6IkJwttMw5T84mlY9RifRP/42LVaxtFb2VHX9xTZU58qC) in VTEX mail servers. \r\n\r\n## Permissions\r\n\r\nAny user or [application key](https://developers.vtex.com/docs/guides/api-authentication-using-application-keys) must have at least one of the appropriate [License Manager resources](https://help.vtex.com/en/tutorial/license-manager-resources--3q6ztrC8YynQf6rdc6euk3) to be able to successfully run this request. Otherwise they will receive a status code `403` error. These are the applicable resources for this endpoint:\r\n\r\n| **Product** | **Category** | **Resource** |\r\n| --------------- | ----------------- | ----------------- |\r\n| Message Center | Providers | **Add or edit provider** |\r\n\r\nThere are no applicable [predefined roles](https://help.vtex.com/en/tutorial/predefined-roles--jGDurZKJHvHJS13LnO7Dy) for this resource list. You must [create a custom role](https://help.vtex.com/en/tutorial/roles--7HKK5Uau2H6wxE1rH5oRbc#creating-a-role) and add at least one of the resources above in order to use this endpoint. To learn more about machine authentication at VTEX, see [Authentication overview](https://developers.vtex.com/docs/guides/authentication).\r\n\r\n>❗ To prevent integrations from having excessive permissions, consider the [best practices for managing app keys](https://help.vtex.com/en/tutorial/best-practices-application-keys--7b6nD1VMHa49aI5brlOvJm) when assigning License Manager roles to integrations.", 35 | "operationId": "createDKIM", 36 | "tags": [ 37 | "DKIM configuration" 38 | ], 39 | "parameters": [ 40 | { 41 | "name": "EmailProvider", 42 | "in": "path", 43 | "required": true, 44 | "description": "Email address for the sender that was set up in VTEX mail servers.", 45 | "schema": { 46 | "type": "string", 47 | "example": "help@valdiestore.co" 48 | } 49 | } 50 | ], 51 | "responses": { 52 | "200": { 53 | "description": "OK", 54 | "content": { 55 | "application/json": { 56 | "schema": { 57 | "type": "object", 58 | "description": "DKIM key creation response body object.", 59 | "properties": { 60 | "status": { 61 | "type": "string", 62 | "description": "DKIM key generating status in string format. For the response `emailNotFound` and `emailNotVerified`, the sender email should be [set up or revised](https://developers.vtex.com/docs/guides/setting-up-dkim-for-transactional-emails).", 63 | "enum": [ 64 | "emailNotFound", 65 | "emailNotVerified", 66 | "created" 67 | ] 68 | }, 69 | "dkimKeys": { 70 | "type": "array", 71 | "description": "This field returns DKIM keys when they were successfully created, and `null` when they were not.", 72 | "items": { 73 | "type": "string", 74 | "description": "DKIM key values." 75 | }, 76 | "nullable": true 77 | } 78 | } 79 | }, 80 | "examples": { 81 | "emailNotFound": { 82 | "summary": "emailNotFound", 83 | "value": { 84 | "status": "emailNotFound", 85 | "dkimKeys": null 86 | } 87 | }, 88 | "emailNotVerified": { 89 | "summary": "emailNotVerified", 90 | "value": { 91 | "status": "emailNotVerified", 92 | "dkimKeys": null 93 | } 94 | }, 95 | "created": { 96 | "summary": "created", 97 | "value": { 98 | "status": "created", 99 | "dkimKeys": [ 100 | "'n3zbltwizctxpgcmqrars4bmfdd3zlyo._domainkey.valdie.co','CNAME','n3zbltwizctxpgcmqrars4bmfdd3zlyo.dkim.amazonses.com'", 101 | "'sq4iae4be52fhqq3wm44btttvndeecfv._domainkey.valdie.co','CNAME','sq4iae4be52fhqq3wm44btttvndeecfv.dkim.amazonses.com'", 102 | "'n4z6g2g7yfy4pnhjklfesxrrkt4o2ha4._domainkey.valdie.co','CNAME','n4z6g2g7yfy4pnhjklfesxrrkt4o2ha4.dkim.amazonses.com'" 103 | ] 104 | } 105 | } 106 | } 107 | } 108 | } 109 | }, 110 | "401": { 111 | "description": "Unauthorized", 112 | "content": { 113 | "application/json": { 114 | "schema": { 115 | "type": "object", 116 | "properties": { 117 | "type": { 118 | "type": "string", 119 | "description": "URL with information about the error code status type of the request." 120 | }, 121 | "title": { 122 | "type": "string", 123 | "description": "Error status code title." 124 | }, 125 | "status": { 126 | "type": "integer", 127 | "description": "Error status code number." 128 | }, 129 | "traceId": { 130 | "type": "string", 131 | "description": "Trace ID value. For example, a store [creates a pattern](https://developers.vtex.com/docs/guides/setting-up-dkim-for-transactional-emails) like `^00-[0-9a-f]{32}-[0-9a-f]{16}-00$` and generates a `traceId` like `00-f8949e0e2a80ff4481b4375908349701-a6a7ecf8b50a2043-00`." 132 | } 133 | } 134 | }, 135 | "example": { 136 | "type": "https://tools.ietf.org/html/rfc7235#section-3.1", 137 | "title": "Unauthorized", 138 | "status": 401, 139 | "traceId": "00-f8949e0e2a80ff4481b4375908349701-a6a7ecf8b50a2043-00" 140 | } 141 | } 142 | } 143 | } 144 | } 145 | } 146 | } 147 | }, 148 | "security": [ 149 | { 150 | "appKey": [], 151 | "appToken": [] 152 | }, 153 | { 154 | "VtexIdclientAutCookie": [] 155 | } 156 | ], 157 | "components": { 158 | "securitySchemes": { 159 | "appKey": { 160 | "type": "apiKey", 161 | "in": "header", 162 | "name": "X-VTEX-API-AppKey", 163 | "description": "Unique identifier of the [application key](https://developers.vtex.com/docs/guides/api-authentication-using-application-keys)." 164 | }, 165 | "appToken": { 166 | "type": "apiKey", 167 | "in": "header", 168 | "name": "X-VTEX-API-AppToken", 169 | "description": "Secret token of the [application key](https://developers.vtex.com/docs/guides/api-authentication-using-application-keys)." 170 | }, 171 | "VtexIdclientAutCookie": { 172 | "type": "apiKey", 173 | "in": "header", 174 | "name": "VtexIdclientAutCookie", 175 | "description": "[User token](https://developers.vtex.com/docs/guides/api-authentication-using-user-tokens), valid for 24 hours." 176 | } 177 | } 178 | }, 179 | "tags": [ 180 | { 181 | "name": "DKIM configuration" 182 | } 183 | ] 184 | } 185 | -------------------------------------------------------------------------------- /docs/centralized-api-slug-mapping.md: -------------------------------------------------------------------------------- 1 | # Centralized API Slug Mapping 2 | 3 | This document explains the centralized API slug mapping system in the VTEX Developer Portal and how it relates to the OpenAPI schemas in this repository. 4 | 5 | ## Overview 6 | 7 | The Developer Portal uses a centralized mapping system to consistently map API display names to URL slugs across the platform. This ensures that API references are consistently linked and referenced throughout the documentation. 8 | 9 | The centralized mapping is defined in the `api-slug-mapping.ts` file in the Developer Portal codebase, which serves as the single source of truth for API name-to-slug mappings. 10 | 11 | ## How the Mapping Works 12 | 13 | The mapping system uses a TypeScript Map to associate the human-readable API display names with URL-friendly slugs. For example: 14 | 15 | ```typescript 16 | // Example from api-slug-mapping.ts 17 | export const fileSlugMap = new Map([ 18 | ["Antifraud Provider", "antifraud-provider-api"], 19 | ["Catalog API", "catalog-api"], 20 | ["Checkout API", "checkout-api"], 21 | // ... other mappings 22 | ]); 23 | ``` 24 | 25 | ## Relationship with OpenAPI Schemas 26 | 27 | The OpenAPI schemas in this repository follow a naming convention that typically includes the API display name: 28 | 29 | - OpenAPI schema files are named: `VTEX - {API Display Name}.json` 30 | - The corresponding URL slug in the Developer Portal is: `{api-slug}` 31 | 32 | For example: 33 | - OpenAPI schema file: `VTEX - Catalog API.json` 34 | - Developer Portal URL: `https://developers.vtex.com/docs/api-reference/catalog-api` 35 | 36 | ## Benefits of Centralized Mapping 37 | 38 | 1. **Consistency**: Ensures that API references maintain consistent URLs and naming throughout the documentation. 39 | 2. **Maintainability**: Single point of update when API names change or new APIs are added. 40 | 3. **Type Safety**: Using TypeScript provides type checking for API name references. 41 | 4. **Integration**: Facilitates integration between content repositories, API schemas, and the Developer Portal. 42 | 43 | ## Adding New APIs 44 | 45 | When adding a new API schema to this repository: 46 | 47 | 1. Name your OpenAPI file following the pattern: `VTEX - {API Display Name}.json` 48 | 2. Ensure the API display name and corresponding slug are added to the `api-slug-mapping.ts` file in the Developer Portal repository. 49 | 3. Use the same API display name in the `title` field of your OpenAPI schema. 50 | 51 | ## Related Documentation 52 | 53 | - [Developer Portal Repository](https://github.com/vtex/devportal) 54 | - [Developer Portal Content Repository](https://github.com/vtex/dev-portal-content) 55 | - [OpenAPI Schemas Repository](https://github.com/vtex/openapi-schemas) 56 | - [Centralized API Slug Mapping Guide](https://github.com/vtex/dev-portal-content/docs/guides/Using-this-API-Reference/centralized-api-slug-mapping.md) -------------------------------------------------------------------------------- /functions/definedNotExample.js: -------------------------------------------------------------------------------- 1 | // Custom spectral linting function which throws exception only if target is undefined AND is not within an example (any level) 2 | // Learn more about custom spectral functions: 3 | // https://docs.stoplight.io/docs/spectral/a781e290eb9f9-custom-functions 4 | 5 | export default function definedNotExample (input, options, context) { 6 | if (!context.path.includes('example') && input == undefined) { 7 | return [{message: 'error'}] 8 | } 9 | } -------------------------------------------------------------------------------- /templates/Template - API Reference Overview.md: -------------------------------------------------------------------------------- 1 | # Template - API Reference Overview 2 | 3 | Follow this template to write a markdown overview description of each API reference, which will be rendered in `https://developers.vtex.com/docs/api-reference/{api-slug}`, as in [this example](https://developers.vtex.com/docs/api-reference/promotions-and-taxes-api). 4 | 5 | >⚠️ Remember to escape your markdown, and include it in the `description` field of your openapi JSON file. Example: 6 | >```json 7 | >"openapi": "3.0.0", 8 | > "info": { 9 | > "title": "Antifraud Provider", 10 | > "description": "{{Add your description here}}", 11 | > "contact": {}, 12 | > "version": "1.0" 13 | > } 14 | >``` 15 | 16 | Describe your API in a brief paragraph. You may include: 17 | 18 | - What players interact with the API (sellers, marketplaces, merchants in general, integrators, connectors, etc). 19 | - What actions it accomplishes. 20 | - Link to API Guides and Help Center documentation going over this product. 21 | 22 | If there is a getting started guide, add the following callout, replacing {productName} with the name of the product or feature the API refers to. 23 | 24 | >ℹ️ Start here: check the new `{productName}` getting started guide. We created this guide to improve the onboarding experience for developers at VTEX. It assembles all documentation on our Developer Portal about `{productName}` and is organized by focusing on the developer's journey. 25 | 26 | ## Endpoint requirements 27 | You can point out any sensitive information like throttling, user permissions, etc. This can be added as a callout, instead of a heading, depending on the amount of information. 28 | 29 | ## Index 30 | 31 | Fill in the headings below with the categories appointed by the `tags` field in the API Reference. 32 | 33 | >ℹ Tip: you can use the [API Reference Index Generator](https://developers.vtex.com/editor/api-index) tool to create this markdown code automatically based on an object from [Developer Portal's navigation.json file](https://github.com/vtexdocs/devportal/blob/main/public/navigation.json). 34 | 35 | ### API reference Tag 1 36 | 37 | - [Endpoint 1](link): description 38 | - [Endpoint 2](link): description 39 | - [Endpoint 3](link): description 40 | 41 | 42 | ### API reference Tag n 43 | 44 | - [Endpoint 1](link): description 45 | - [Endpoint 2](link): description 46 | - [Endpoint 3](link): description 47 | 48 | ## Common parameters 49 | 50 | You can add a table like the example below, going over frequently used parameters in the API Reference. 51 | 52 | | Parameter name | Description | Type | 53 | | - | - | - | 54 | | `{{accountName}}` | Name of the VTEX account. Used as part of the URL. | Server variable. | 55 | | `{{environment}` | Environment to use. Used as part of the URL. The default value is `vtexcommercestable`. | Server variable. | 56 | | `X-VTEX-API-AppKey` | Unique identifier of the [application key](https://developers.vtex.com/docs/guides/api-authentication-using-application-keys). | Authentication header. Must be used together with `X-VTEX-API-AppToken`. Not necessary when using `VtexIdclientAutCookie`. | 57 | | `X-VTEX-API-AppToken` | Secret token of the [application key](https://developers.vtex.com/docs/guides/api-authentication-using-application-keys). | Authentication header. Must be used together with `X-VTEX-API-AppKey`. Not necessary when using `VtexIdclientAutCookie`. | 58 | | `VtexIdclientAutCookie` | [User token](https://developers.vtex.com/docs/guides/api-authentication-using-user-tokens), valid for 24 hours. | Authentication header. Not necessary when using `X-VTEX-API-AppKey` and `X-VTEX-API-AppToken`. | 59 | -------------------------------------------------------------------------------- /templates/VTEX - Template openAPI.jsonc: -------------------------------------------------------------------------------- 1 | // This is a template file, set as .jsonc only to be able to hold comments. All openapi files tech writers create or edit must be .json and cannot contain comments. 2 | { 3 | "openapi": "3.0.0", 4 | "info": { 5 | "version": "{version-number}", 6 | "title": "{api-title}", 7 | "description": "{api-description}" 8 | }, 9 | "servers": [ 10 | { 11 | "url": "https://{accountName}.{environment}.com.br", 12 | "description": "VTEX server URL.", 13 | "variables": { 14 | "accountName": { 15 | "description": "Name of the VTEX account. Used as part of the URL", 16 | "default": "apiexamples" 17 | }, 18 | "environment": { 19 | "description": "Environment to use. Used as part of the URL.", 20 | "enum": [ 21 | "vtexcommercestable" 22 | ], 23 | "default": "vtexcommercestable" 24 | } 25 | } 26 | } 27 | ], 28 | "paths": { 29 | "/{path}": { 30 | "{method}": { 31 | "tags": [ 32 | "{applicable-tags}" 33 | ], 34 | "summary": "{method-summary}", 35 | "operationId": "{operation-id}", // Legacy field. Maintain this field if it already exists in an API. Do not include it if documenting new endpoints. 36 | "description": "{method-description}", 37 | "parameters": [ 38 | { 39 | "$ref": "#/components/parameters/Content-Type" 40 | }, 41 | { 42 | "$ref": "#/components/parameters/Accept" 43 | } 44 | ], 45 | "requestBody": { // Do not include "requestBody" for GET requests. 46 | "content": { 47 | "application/json": { 48 | "schema": { 49 | "type": "object", 50 | "required": [ 51 | "{field1}", 52 | "{field2-array-example}", 53 | "{field3-object-example}" 54 | ], 55 | "properties": { 56 | "{field1}": { 57 | "type": "{field1-type}", 58 | "description": "{field1-description}.", 59 | "example": "{field1-value-example}" 60 | }, 61 | "{field2-array-example}": { 62 | "type": "array", 63 | "description": "{field2-description}.", 64 | "items": { 65 | "type": "object", 66 | "description": "{items-description}", 67 | "required": [ 68 | "{field2.[].1}", 69 | "{field2.[].2}", 70 | "{field2.[].3}" 71 | ], 72 | "properties": { 73 | "{field2.[].1}": { 74 | "type": "string", 75 | "description": "{field2.[].1-description}.", 76 | "example": "{field2.[].1-example}" 77 | }, 78 | "{field2.[].2}": { 79 | "type": "boolean", 80 | "description": "{field2.[].2-description}.", 81 | "example": "{field2.[].2-example}" 82 | }, 83 | "{field2.[].3}": { 84 | "type": "integer", 85 | "description": "{field2.[].3-description}.", 86 | "example": "{field2.[].3-example}" 87 | } 88 | } 89 | } 90 | }, 91 | "{field3-object-example}": { 92 | "type": "object", 93 | "description": "{field3-description}.", 94 | "required": [ 95 | "{field3.1}", 96 | "{field3.2}", 97 | "{field3.3}" 98 | ], 99 | "properties": { 100 | "{field3.1}": { 101 | "type": "string", 102 | "description": "{field3.1-description}.", 103 | "example": "{field3.1-example}" 104 | }, 105 | "{field3.2}": { 106 | "type": "integer", 107 | "description": "{field3[].2-description}.", 108 | "example": "{field3.2-example}", 109 | "deprecated": true // Optional field. Use "deprecated" in case it is true, meaning it has no effect. 110 | }, 111 | "{field.3}": { 112 | "type": "boolean", 113 | "description": "{field3.3-description}.", 114 | "example": "{field3.3-example}" 115 | } 116 | } 117 | } 118 | } 119 | } 120 | } 121 | } 122 | }, 123 | "responses": { 124 | "{status}": { 125 | "description": "{status-code-name}", 126 | "content": { 127 | "application/json": { 128 | "schema": { 129 | "type": "object", 130 | "properties": { 131 | "{response-field1}": { 132 | "type": "{response-field1-type}", 133 | "description": "{response-field1-description}.", 134 | "nullable": true // Optional field. Use "nullable" in case it is true, meaning "null" is a possible value. 135 | }, 136 | "{response-field2}": { 137 | "type": "{response-field2-type}", 138 | "description": "{response-field2-description}." 139 | }, 140 | "{response-field3}": { 141 | "type": "{response-field3-type}", 142 | "description": "{response-field3-description}." 143 | } 144 | } 145 | }, 146 | "example": { 147 | "{response-field1}": "{response-field1-value}", 148 | "{response-field2}": "{response-field2-value}", 149 | "{response-field3}": "{response-field3-value}" 150 | } 151 | } 152 | } 153 | } 154 | } 155 | } 156 | } 157 | }, 158 | "security": [ 159 | { 160 | "appKey": [], 161 | "appToken": [] 162 | }, 163 | { 164 | "VtexIdclientAutCookie": [] 165 | } 166 | ], 167 | "components": { 168 | "securitySchemes": { 169 | "appKey": { 170 | "type": "apiKey", 171 | "in": "header", 172 | "name": "X-VTEX-API-AppKey", 173 | "description": "Unique identifier of the [application key](https://developers.vtex.com/docs/guides/api-authentication-using-application-keys)." 174 | }, 175 | "appToken": { 176 | "type": "apiKey", 177 | "in": "header", 178 | "name": "X-VTEX-API-AppToken", 179 | "description": "Secret token of the [application key](https://developers.vtex.com/docs/guides/api-authentication-using-application-keys)." 180 | }, 181 | "VtexIdclientAutCookie": { 182 | "type": "apiKey", 183 | "in": "header", 184 | "name": "VtexIdclientAutCookie", 185 | "description": "[User token](https://developers.vtex.com/docs/guides/api-authentication-using-user-tokens), valid for 24 hours." 186 | } 187 | }, 188 | "parameters": { 189 | "Content-Type": { 190 | "name": "Content-Type", 191 | "in": "header", 192 | "description": "Type of the content being sent.", 193 | "required": true, 194 | "style": "simple", 195 | "schema": { 196 | "type": "string", 197 | "example": "application/json" 198 | } 199 | }, 200 | "Accept": { 201 | "name": "Accept", 202 | "in": "header", 203 | "description": "HTTP Client Negotiation _Accept_ Header. Indicates the types of responses the client can understand.", 204 | "required": true, 205 | "style": "simple", 206 | "schema": { 207 | "type": "string", 208 | "example": "application/json" 209 | } 210 | }, 211 | "{query-parameter}": { 212 | "name": "{query-parameter}", 213 | "in": "query", 214 | "description": "{query-parameter-description}", 215 | "required": false, 216 | "style": "form", 217 | "schema": { 218 | "type": "string", 219 | "example": "{query-parameter-example}" 220 | } 221 | } 222 | } 223 | }, 224 | "tags": [ 225 | { 226 | "name": "{category1_name}" 227 | }, 228 | { 229 | "name": "{category2_name}" 230 | } 231 | ] 232 | } 233 | --------------------------------------------------------------------------------