{"files":{"SKILL.md":"---\nname: profile-system-pii-data-architecture\ndescription: \"Profile System - PII data architecture API skill. Use when working with Profile System - PII data architecture for api. Covers 31 endpoints.\"\nversion: 1.0.0\ngenerator: lapsh\n---\n\n# Profile System - PII data architecture\nAPI version: 1.0\n\n## Auth\nApiKey X-VTEX-API-AppKey in header | ApiKey X-VTEX-API-AppToken in header | ApiKey VtexIdclientAutCookie in header\n\n## Base URL\nhttps://apiexamples.vtexcommercestable.com.br\n\n## Setup\n1. Set your API key in the appropriate header\n2. GET /api/storage/profile-system/prospects -- verify access\n3. POST /api/storage/profile-system/profiles -- create first profiles\n\n## Endpoints\n\n31 endpoints across 1 groups. See references/api-spec.lap for full details.\n\n### api\n| Method | Path | Description |\n|--------|------|-------------|\n| POST | /api/storage/profile-system/profiles | Create client profile |\n| GET | /api/storage/profile-system/profiles/{profileId} | Get profile |\n| PATCH | /api/storage/profile-system/profiles/{profileId} | Update client profile |\n| DELETE | /api/storage/profile-system/profiles/{profileId} | Delete client profile |\n| GET | /api/storage/profile-system/profiles/{profileId}/unmask | Get unmasked profile |\n| GET | /api/storage/profile-system/profiles/{profileId}/versions/{profileVersionId} | Get profile by version |\n| GET | /api/storage/profile-system/profiles/{profileId}/versions/{profileVersionId}/unmask | Get unmasked profile by version |\n| POST | /api/storage/profile-system/profiles/{profileId}/addresses | Create client address |\n| GET | /api/storage/profile-system/profiles/{profileId}/addresses | Get client addresses |\n| GET | /api/storage/profile-system/profiles/{profileId}/addresses/unmask | Get unmasked client addresses |\n| GET | /api/storage/profile-system/profiles/{profileId}/addresses/{addressId} | Get address |\n| PATCH | /api/storage/profile-system/profiles/{profileId}/addresses/{addressId} | Update client address |\n| DELETE | /api/storage/profile-system/profiles/{profileId}/addresses/{addressId} | Delete address |\n| GET | /api/storage/profile-system/profiles/{profileId}/addresses/{addressId}/unmask | Get unmasked address |\n| GET | /api/storage/profile-system/profiles/{profileId}/addresses/{addressId}/versions/{addressVersionId} | Get address by version |\n| GET | /api/storage/profile-system/profiles/{profileId}/addresses/{addressId}/versions/{addressVersionId}/unmask | Get unmasked address by version |\n| POST | /api/storage/profile-system/prospects | Create prospect |\n| GET | /api/storage/profile-system/prospects | Get prospects |\n| GET | /api/storage/profile-system/prospects/unmask | Get unmasked prospects |\n| GET | /api/storage/profile-system/prospects/{prospectId} | Get prospect |\n| PATCH | /api/storage/profile-system/prospects/{prospectId} | Update prospect |\n| DELETE | /api/storage/profile-system/prospects/{prospectId} | Delete prospect |\n| GET | /api/storage/profile-system/prospects/{prospectId}/unmask | Get unmasked prospect |\n| POST | /api/storage/profile-system/profiles/{profileId}/purchase-info | Create purchase information |\n| GET | /api/storage/profile-system/profiles/{profileId}/purchase-info | Get purchase information |\n| PATCH | /api/storage/profile-system/profiles/{profileId}/purchase-info | Update purchase information |\n| DELETE | /api/storage/profile-system/profiles/{profileId}/purchase-info | Delete purchase information |\n| GET | /api/storage/profile-system/profiles/{profileId}/purchase-info/unmask | Get unmasked purchase information |\n| GET | /api/storage/profile-system/schemas/profileSystem | Get full schema |\n| PUT | /api/storage/profile-system/schemas/profileSystem/custom | Create or delete custom fields |\n| GET | /api/storage/profile-system/schemas/profileSystem/custom | Get custom fields |\n\n## Common Questions\n\nMatch user requests to endpoints in references/api-spec.lap. Key patterns:\n- \"Create a profile?\" -> POST /api/storage/profile-system/profiles\n- \"Get profile details?\" -> GET /api/storage/profile-system/profiles/{profileId}\n- \"Partially update a profile?\" -> PATCH /api/storage/profile-system/profiles/{profileId}\n- \"Delete a profile?\" -> DELETE /api/storage/profile-system/profiles/{profileId}\n- \"List all unmask?\" -> GET /api/storage/profile-system/profiles/{profileId}/unmask\n- \"Get version details?\" -> GET /api/storage/profile-system/profiles/{profileId}/versions/{profileVersionId}\n- \"List all unmask?\" -> GET /api/storage/profile-system/profiles/{profileId}/versions/{profileVersionId}/unmask\n- \"Create a address?\" -> POST /api/storage/profile-system/profiles/{profileId}/addresses\n- \"List all addresses?\" -> GET /api/storage/profile-system/profiles/{profileId}/addresses\n- \"List all unmask?\" -> GET /api/storage/profile-system/profiles/{profileId}/addresses/unmask\n- \"Get address details?\" -> GET /api/storage/profile-system/profiles/{profileId}/addresses/{addressId}\n- \"Partially update a address?\" -> PATCH /api/storage/profile-system/profiles/{profileId}/addresses/{addressId}\n- \"Delete a address?\" -> DELETE /api/storage/profile-system/profiles/{profileId}/addresses/{addressId}\n- \"List all unmask?\" -> GET /api/storage/profile-system/profiles/{profileId}/addresses/{addressId}/unmask\n- \"Get version details?\" -> GET /api/storage/profile-system/profiles/{profileId}/addresses/{addressId}/versions/{addressVersionId}\n- \"List all unmask?\" -> GET /api/storage/profile-system/profiles/{profileId}/addresses/{addressId}/versions/{addressVersionId}/unmask\n- \"Create a prospect?\" -> POST /api/storage/profile-system/prospects\n- \"List all prospects?\" -> GET /api/storage/profile-system/prospects\n- \"List all unmask?\" -> GET /api/storage/profile-system/prospects/unmask\n- \"Get prospect details?\" -> GET /api/storage/profile-system/prospects/{prospectId}\n- \"Partially update a prospect?\" -> PATCH /api/storage/profile-system/prospects/{prospectId}\n- \"Delete a prospect?\" -> DELETE /api/storage/profile-system/prospects/{prospectId}\n- \"List all unmask?\" -> GET /api/storage/profile-system/prospects/{prospectId}/unmask\n- \"Create a purchase-info?\" -> POST /api/storage/profile-system/profiles/{profileId}/purchase-info\n- \"List all purchase-info?\" -> GET /api/storage/profile-system/profiles/{profileId}/purchase-info\n- \"List all unmask?\" -> GET /api/storage/profile-system/profiles/{profileId}/purchase-info/unmask\n- \"List all profileSystem?\" -> GET /api/storage/profile-system/schemas/profileSystem\n- \"List all custom?\" -> GET /api/storage/profile-system/schemas/profileSystem/custom\n- \"How to authenticate?\" -> See Auth section\n\n## Response Tips\n- Check response schemas in references/api-spec.lap for field details\n- Create/update endpoints typically return the created/updated object\n\n## CLI\n\n```bash\n# Update this spec to the latest version\nnpx @lap-platform/lapsh get profile-system-pii-data-architecture -o references/api-spec.lap\n\n# Search for related APIs\nnpx @lap-platform/lapsh search profile-system-pii-data-architecture\n```\n\n## References\n- Full spec: See references/api-spec.lap for complete endpoint details, parameter tables, and response schemas\n\n> Generated from the official API spec by [LAP](https://lap.sh)\n","references/api-spec.lap":"@lap v0.3\n# Machine-readable API spec. Each @endpoint block is one API call.\n@api Profile System - PII data architecture\n@base https://apiexamples.vtexcommercestable.com.br\n@version 1.0\n@auth ApiKey X-VTEX-API-AppKey in header | ApiKey X-VTEX-API-AppToken in header | ApiKey VtexIdclientAutCookie in header\n@common_fields {Content-Type: str # Type of the content being sent., Accept: str # HTTP Client Negotiation _Accept_ Header. Indicates the types of responses the client can understand.}\n@endpoints 31\n@hint download_for_search\n@toc api(31)\n\n@endpoint POST /api/storage/profile-system/profiles\n@desc Create client profile\n@required {firstName: str # Client's first name., lastName: str # Client's last name., email: str # Client's email address., document: str # Client's document., documentType: str # Type of document informed in `document`.}\n@optional {ttl: int # This parameter sets the the Time To Live (TTL), in days, of the specific document being created or updated with this request. After this period of time from the moment of the request, the document is deleted. By sending this parameter you override the TTL set for the schema. \r \r> Currently, the available default document schemas have no TTL. This means that documents are stored indefinitely, unless a TTL is sent when creating or updating., birthDate: str # Client's birth date in ISO 8601 format., {customField}: str # Name of custom field defined in [Create or delete custom fields](https://developers.vtex.com/docs/api-reference/profile-system#put-/api/storage/profile-system/schemas/profileSystem/custom). Can be of any type: string, number, boolean, array or object.}\n@returns(201) {id: str, meta: map{version: str, author: str, creationDate: str, lastUpdate: str}, document: map{firstName: str, lastName: str, email: str, birthDate: str, document: str, documentType: str, {customField}: str}} # Created\n\n@endpoint GET /api/storage/profile-system/profiles/{profileId}\n@desc Get profile\n@required {profileId: str # There are two value options for this field:   1. ID of the client's profile, as in the `id` field returned by the [Create profile](https://developers.vtex.com/docs/api-reference/profile-system#post-/api/storage/profile-system/profiles) endpoint. \r 2. The value of an alternative key (`email` or `document`). When using this option, the `alternativeKey` query parameter is required, to inform which key is being used.}\n@optional {alternativeKey: str(email/document) # When using an alternative key as `profileId` value, fill this parameter with the key you wish to use as `profileId`. There are two possible values: `email` and `document`.}\n@returns(200) OK\n\n@endpoint PATCH /api/storage/profile-system/profiles/{profileId}\n@desc Update client profile\n@required {profileId: str # There are two value options for this field:   1. ID of the client's profile, as in the `id` field returned by the [Create profile](https://developers.vtex.com/docs/api-reference/profile-system#post-/api/storage/profile-system/profiles) endpoint. \r 2. The value of an alternative key (`email` or `document`). When using this option, the `alternativeKey` query parameter is required, to inform which key is being used., firstName: str # Client's first name., lastName: str # Client's last name., email: str # Client's email address., document: str # Client's document., documentType: str # Type of document informed in `document`.}\n@optional {alternativeKey: str(email/document) # When using an alternative key as `profileId` value, fill this parameter with the key you wish to use as `profileId`. There are two possible values: `email` and `document`., ttl: int # This parameter sets the the Time To Live (TTL), in days, of the specific document being created or updated with this request. After this period of time from the moment of the request, the document is deleted. By sending this parameter you override the TTL set for the schema. \r \r> Currently, the available default document schemas have no TTL. This means that documents are stored indefinitely, unless a TTL is sent when creating or updating., birthDate: str # Client's birth date in ISO 8601 format., {customField}: str # Name of custom field defined in [Create or delete custom fields](https://developers.vtex.com/docs/api-reference/profile-system#put-/api/storage/profile-system/schemas/profileSystem/custom). Can be of any type: string, number, boolean, array or object.}\n@returns(200) {id: str, document: map{firstName: str, lastName: str, email: str, birthDate: str, document: str, documentType: str, {customField}: str}, meta: map{version: str, author: str, creationDate: str, lastUpdate: str}} # OK\n\n@endpoint DELETE /api/storage/profile-system/profiles/{profileId}\n@desc Delete client profile\n@required {profileId: str # There are two value options for this field:   1. ID of the client's profile, as in the `id` field returned by the [Create profile](https://developers.vtex.com/docs/api-reference/profile-system#post-/api/storage/profile-system/profiles) endpoint. \r 2. The value of an alternative key (`email` or `document`). When using this option, the `alternativeKey` query parameter is required, to inform which key is being used.}\n@returns(204) No content\n\n@endpoint GET /api/storage/profile-system/profiles/{profileId}/unmask\n@desc Get unmasked profile\n@required {profileId: str # There are two value options for this field:   1. ID of the client's profile, as in the `id` field returned by the [Create profile](https://developers.vtex.com/docs/api-reference/profile-system#post-/api/storage/profile-system/profiles) endpoint. \r 2. The value of an alternative key (`email` or `document`). When using this option, the `alternativeKey` query parameter is required, to inform which key is being used., reason: str # Reason for requesting unmasked data.}\n@optional {alternativeKey: str(email/document) # When using an alternative key as `profileId` value, fill this parameter with the key you wish to use as `profileId`. There are two possible values: `email` and `document`.}\n@returns(200) OK\n\n@endpoint GET /api/storage/profile-system/profiles/{profileId}/versions/{profileVersionId}\n@desc Get profile by version\n@required {profileId: str # There are two value options for this field:   1. ID of the client's profile, as in the `id` field returned by the [Create profile](https://developers.vtex.com/docs/api-reference/profile-system#post-/api/storage/profile-system/profiles) endpoint. \r 2. The value of an alternative key (`email` or `document`). When using this option, the `alternativeKey` query parameter is required, to inform which key is being used., profileVersionId: str # ID of the version of the client's profile as returned by endpoints that create or update profile information in the `version` field.}\n@returns(200) OK\n\n@endpoint GET /api/storage/profile-system/profiles/{profileId}/versions/{profileVersionId}/unmask\n@desc Get unmasked profile by version\n@required {profileId: str # There are two value options for this field:   1. ID of the client's profile, as in the `id` field returned by the [Create profile](https://developers.vtex.com/docs/api-reference/profile-system#post-/api/storage/profile-system/profiles) endpoint. \r 2. The value of an alternative key (`email` or `document`). When using this option, the `alternativeKey` query parameter is required, to inform which key is being used., profileVersionId: str # ID of the version of the client's profile as returned by endpoints that create or update profile information in the `version` field., reason: str # Reason for requesting unmasked data.}\n@returns(200) OK\n\n@endpoint POST /api/storage/profile-system/profiles/{profileId}/addresses\n@desc Create client address\n@required {profileId: str # There are two value options for this field:   1. ID of the client's profile, as in the `id` field returned by the [Create profile](https://developers.vtex.com/docs/api-reference/profile-system#post-/api/storage/profile-system/profiles) endpoint. \r 2. The value of an alternative key (`email` or `document`). When using this option, the `alternativeKey` query parameter is required, to inform which key is being used., postalCode: str # Address postal code., countryName: str # Name of the address country., administrativeAreaLevel1: str # Name of administrative area, such as the state or province., locality: str # Name of address locality, such as the city., localityAreaLevel1: str # Name of the address locality area, such as the neighborhood or district., route: str # Address route or street name., streetNumber: str # Address street number.}\n@optional {alternativeKey: str(email/document) # When using an alternative key as `profileId` value, fill this parameter with the key you wish to use as `profileId`. There are two possible values: `email` and `document`., countryCode: str # Two letter country code., contactId: str # Contact unique identifier.}\n@returns(201) {id: str, document: map{postalCode: str, countryName: str, countryCode: str, administrativeAreaLevel1: str, locality: str, localityAreaLevel1: str, route: str, streetNumber: str, profileId: str, contactId: str}, meta: map{version: str, author: str, creationDate: str, lastUpdateDate: str}} # Created\n\n@endpoint GET /api/storage/profile-system/profiles/{profileId}/addresses\n@desc Get client addresses\n@required {profileId: str # There are two value options for this field:   1. ID of the client's profile, as in the `id` field returned by the [Create profile](https://developers.vtex.com/docs/api-reference/profile-system#post-/api/storage/profile-system/profiles) endpoint. \r 2. The value of an alternative key (`email` or `document`). When using this option, the `alternativeKey` query parameter is required, to inform which key is being used.}\n@optional {alternativeKey: str(email/document) # When using an alternative key as `profileId` value, fill this parameter with the key you wish to use as `profileId`. There are two possible values: `email` and `document`.}\n@returns(200) OK\n\n@endpoint GET /api/storage/profile-system/profiles/{profileId}/addresses/unmask\n@desc Get unmasked client addresses\n@required {profileId: str # There are two value options for this field:   1. ID of the client's profile, as in the `id` field returned by the [Create profile](https://developers.vtex.com/docs/api-reference/profile-system#post-/api/storage/profile-system/profiles) endpoint. \r 2. The value of an alternative key (`email` or `document`). When using this option, the `alternativeKey` query parameter is required, to inform which key is being used.}\n@optional {alternativeKey: str(email/document) # When using an alternative key as `profileId` value, fill this parameter with the key you wish to use as `profileId`. There are two possible values: `email` and `document`.}\n@returns(200) OK\n\n@endpoint GET /api/storage/profile-system/profiles/{profileId}/addresses/{addressId}\n@desc Get address\n@required {profileId: str # There are two value options for this field:   1. ID of the client's profile, as in the `id` field returned by the [Create profile](https://developers.vtex.com/docs/api-reference/profile-system#post-/api/storage/profile-system/profiles) endpoint. \r 2. The value of an alternative key (`email` or `document`). When using this option, the `alternativeKey` query parameter is required, to inform which key is being used., addressId: str # ID of a client's specific address as returned in the [Create client address](https://developers.vtex.com/docs/api-reference/profile-system#post-/api/storage/profile-system/profiles/-profileId-/addresses) endpoint's response, in the `id` field.}\n@optional {alternativeKey: str(email/document) # When using an alternative key as `profileId` value, fill this parameter with the key you wish to use as `profileId`. There are two possible values: `email` and `document`.}\n@returns(200) {id: str, document: map{postalCode: str, countryName: str, countryCode: str, administrativeAreaLevel1: str, locality: str, localityAreaLevel1: str, route: str, streetNumber: str, profileId: str, contactId: str}, meta: map{version: str, author: str, creationDate: str, lastUpdateDate: str}} # OK\n\n@endpoint PATCH /api/storage/profile-system/profiles/{profileId}/addresses/{addressId}\n@desc Update client address\n@required {profileId: str # There are two value options for this field:   1. ID of the client's profile, as in the `id` field returned by the [Create profile](https://developers.vtex.com/docs/api-reference/profile-system#post-/api/storage/profile-system/profiles) endpoint. \r 2. The value of an alternative key (`email` or `document`). When using this option, the `alternativeKey` query parameter is required, to inform which key is being used., addressId: str # ID of a client's specific address as returned in the [Create client address](https://developers.vtex.com/docs/api-reference/profile-system#post-/api/storage/profile-system/profiles/-profileId-/addresses) endpoint's response, in the `id` field., postalCode: str # Address postal code., countryName: str # Name of the address country., administrativeAreaLevel1: str # Name of administrative area, such as the state or province., locality: str # Name of address locality, such as the city., localityAreaLevel1: str # Name of the address locality area, such as the neighborhood or district., route: str # Address route or street name., streetNumber: str # Address street number.}\n@optional {alternativeKey: str(email/document) # When using an alternative key as `profileId` value, fill this parameter with the key you wish to use as `profileId`. There are two possible values: `email` and `document`., countryCode: str # Two letter country code., contactId: str # Contact unique identifier.}\n@returns(200) {id: str, document: map{postalCode: str, countryName: str, countryCode: str, administrativeAreaLevel1: str, locality: str, localityAreaLevel1: str, route: str, streetNumber: str, profileId: str, contactId: str}, meta: map{version: str, author: str, creationDate: str, lastUpdateDate: str}} # OK\n\n@endpoint DELETE /api/storage/profile-system/profiles/{profileId}/addresses/{addressId}\n@desc Delete address\n@required {profileId: str # There are two value options for this field:   1. ID of the client's profile, as in the `id` field returned by the [Create profile](https://developers.vtex.com/docs/api-reference/profile-system#post-/api/storage/profile-system/profiles) endpoint. \r 2. The value of an alternative key (`email` or `document`). When using this option, the `alternativeKey` query parameter is required, to inform which key is being used., addressId: str # ID of a client's specific address as returned in the [Create client address](https://developers.vtex.com/docs/api-reference/profile-system#post-/api/storage/profile-system/profiles/-profileId-/addresses) endpoint's response, in the `id` field.}\n@optional {alternativeKey: str(email/document) # When using an alternative key as `profileId` value, fill this parameter with the key you wish to use as `profileId`. There are two possible values: `email` and `document`.}\n@returns(204) No content\n\n@endpoint GET /api/storage/profile-system/profiles/{profileId}/addresses/{addressId}/unmask\n@desc Get unmasked address\n@required {profileId: str # There are two value options for this field:   1. ID of the client's profile, as in the `id` field returned by the [Create profile](https://developers.vtex.com/docs/api-reference/profile-system#post-/api/storage/profile-system/profiles) endpoint. \r 2. The value of an alternative key (`email` or `document`). When using this option, the `alternativeKey` query parameter is required, to inform which key is being used., addressId: str # ID of a client's specific address as returned in the [Create client address](https://developers.vtex.com/docs/api-reference/profile-system#post-/api/storage/profile-system/profiles/-profileId-/addresses) endpoint's response, in the `id` field., reason: str # Reason for requesting unmasked data.}\n@optional {alternativeKey: str(email/document) # When using an alternative key as `profileId` value, fill this parameter with the key you wish to use as `profileId`. There are two possible values: `email` and `document`.}\n@returns(200) {id: str, document: map{postalCode: str, countryName: str, countryCode: str, administrativeAreaLevel1: str, locality: str, localityAreaLevel1: str, route: str, streetNumber: str, profileId: str, contactId: str}, meta: map{version: str, author: str, creationDate: str, lastUpdateDate: str}} # OK\n\n@endpoint GET /api/storage/profile-system/profiles/{profileId}/addresses/{addressId}/versions/{addressVersionId}\n@desc Get address by version\n@required {profileId: str # There are two value options for this field:   1. ID of the client's profile, as in the `id` field returned by the [Create profile](https://developers.vtex.com/docs/api-reference/profile-system#post-/api/storage/profile-system/profiles) endpoint. \r 2. The value of an alternative key (`email` or `document`). When using this option, the `alternativeKey` query parameter is required, to inform which key is being used., addressId: str # ID of a client's specific address as returned in the [Create client address](https://developers.vtex.com/docs/api-reference/profile-system#post-/api/storage/profile-system/profiles/-profileId-/addresses) endpoint's response, in the `id` field., addressVersionId: str # ID of the version of a given client's address as returned by endpoints that create or update address information in the `version` field., reason: str # Reason for requesting unmasked data.}\n@optional {alternativeKey: str(email/document) # When using an alternative key as `profileId` value, fill this parameter with the key you wish to use as `profileId`. There are two possible values: `email` and `document`.}\n@returns(200) {id: str, document: map{postalCode: str, countryName: str, countryCode: str, administrativeAreaLevel1: str, locality: str, localityAreaLevel1: str, route: str, streetNumber: str, profileId: str, contactId: str}, meta: map{version: str, author: str, creationDate: str, lastUpdateDate: str}} # OK\n\n@endpoint GET /api/storage/profile-system/profiles/{profileId}/addresses/{addressId}/versions/{addressVersionId}/unmask\n@desc Get unmasked address by version\n@required {profileId: str # There are two value options for this field:   1. ID of the client's profile, as in the `id` field returned by the [Create profile](https://developers.vtex.com/docs/api-reference/profile-system#post-/api/storage/profile-system/profiles) endpoint. \r 2. The value of an alternative key (`email` or `document`). When using this option, the `alternativeKey` query parameter is required, to inform which key is being used., addressId: str # ID of a client's specific address as returned in the [Create client address](https://developers.vtex.com/docs/api-reference/profile-system#post-/api/storage/profile-system/profiles/-profileId-/addresses) endpoint's response, in the `id` field., addressVersionId: str # ID of the version of a given client's address as returned by endpoints that create or update address information in the `version` field., reason: str # Reason for requesting unmasked data.}\n@optional {alternativeKey: str(email/document) # When using an alternative key as `profileId` value, fill this parameter with the key you wish to use as `profileId`. There are two possible values: `email` and `document`.}\n@returns(200) {id: str, document: map{postalCode: str, countryName: str, countryCode: str, administrativeAreaLevel1: str, locality: str, localityAreaLevel1: str, route: str, streetNumber: str, profileId: str, contactId: str}, meta: map{version: str, author: str, creationDate: str, lastUpdateDate: str}} # OK\n\n@endpoint POST /api/storage/profile-system/prospects\n@desc Create prospect\n@optional {availableAddresses: [map{disposable: bool, userId: str, addressName: str, addressType: str, postalCode: str, city: str, country: str, street: str, number: str, complement: str, geoCoordinate: [str]}] # Available addresses., paymentData: map{availableAccounts: [map], availableTokens: [str], transactions: [map], giftCards: [str], giftCardMessages: [str], numberOfPaymentErrors: num, numberOfDeniedTransactions: num, lastDeniedTransaction: str} # Payment data., contacts: [map{contactId: str, email: str, firstName: str, lastName: str, phone: str, document: str}] # List of contacts., invoiceSubject: map{invoiceSubjectId: str, email: str, firstName: str, lastName: str, phone: str} # Information about the invoice subject., email: str # Prospect's email address., firstName: str # Prospect's first name., lastName: str # Prospect's last name., document: str # Prospect's document., cellPhone: str # Prospect's cellphone number., isPJ: bool # Defines if a prospect is corporate (`true`) or not (`false`)., customerCode: str # Prospect's customer code.}\n@returns(201) {id: str, document: map{availableAddresses: [map], paymentData: map{availableAccounts: [map], availableTokens: [str], transactions: [map]?, giftCards: [str], giftCardMessages: [str], numberOfPaymentErrors: num, numberOfDeniedTransactions: num, lastDeniedTransaction: str?}, contacts: [map], invoiceSubject: map{invoiceSubjectId: str, email: str, firstName: str, lastName: str, phone: str}, email: str, firstName: str, lastName: str, document: str, cellPhone: str, isPJ: bool, customerCode: str}, meta: map{version: str, author: str, creationDate: str, lastUpdateDate: str, expirationDate: str?}} # Created\n\n@endpoint GET /api/storage/profile-system/prospects\n@desc Get prospects\n@returns(200) OK\n\n@endpoint GET /api/storage/profile-system/prospects/unmask\n@desc Get unmasked prospects\n@returns(200) OK\n\n@endpoint GET /api/storage/profile-system/prospects/{prospectId}\n@desc Get prospect\n@required {prospectId: str # ID of the prospect as returned by the [Create prospect](https://developers.vtex.com/docs/api-reference/profile-system#post-/api/storage/profile-system/prospects) endpoint's response, in the `id` field.}\n@returns(200) {id: str, document: map{availableAddresses: [map], paymentData: map{availableAccounts: [map], availableTokens: [str], transactions: [map]?, giftCards: [str], giftCardMessages: [str], numberOfPaymentErrors: num, numberOfDeniedTransactions: num, lastDeniedTransaction: str?}, contacts: [map], invoiceSubject: map{invoiceSubjectId: str, email: str, firstName: str, lastName: str, phone: str}, email: str, firstName: str, lastName: str, document: str, cellPhone: str, isPJ: bool, customerCode: str}, meta: map{version: str, author: str, creationDate: str, lastUpdateDate: str, expirationDate: str?}} # OK\n\n@endpoint PATCH /api/storage/profile-system/prospects/{prospectId}\n@desc Update prospect\n@required {prospectId: str # ID of the prospect as returned by the [Create prospect](https://developers.vtex.com/docs/api-reference/profile-system#post-/api/storage/profile-system/prospects) endpoint's response, in the `id` field.}\n@optional {availableAddresses: [map{disposable: bool, userId: str, addressName: str, addressType: str, postalCode: str, city: str, country: str, street: str, number: str, complement: str, geoCoordinate: [str]}] # Available addresses., paymentData: map{availableAccounts: [map], availableTokens: [str], transactions: [map], giftCards: [str], giftCardMessages: [str], numberOfPaymentErrors: num, numberOfDeniedTransactions: num, lastDeniedTransaction: str} # Payment data., contacts: [map{contactId: str, email: str, firstName: str, lastName: str, phone: str, document: str}] # List of contacts., invoiceSubject: map{invoiceSubjectId: str, email: str, firstName: str, lastName: str, phone: str} # Information about the invoice subject., email: str # Prospect's email address., firstName: str # Prospect's first name., lastName: str # Prospect's last name., document: str # Prospect's document., cellPhone: str # Prospect's cellphone number., isPJ: bool # Defines if a prospect is corporate (`true`) or not (`false`)., customerCode: str # Prospect's customer code.}\n@returns(200) {id: str, document: map{availableAddresses: [map], paymentData: map{availableAccounts: [map], availableTokens: [str], transactions: [map]?, giftCards: [str], giftCardMessages: [str], numberOfPaymentErrors: num, numberOfDeniedTransactions: num, lastDeniedTransaction: str?}, contacts: [map], invoiceSubject: map{invoiceSubjectId: str, email: str, firstName: str, lastName: str, phone: str}, email: str, firstName: str, lastName: str, document: str, cellPhone: str, isPJ: bool, customerCode: str}, meta: map{version: str, author: str, creationDate: str, lastUpdateDate: str, expirationDate: str?}} # OK\n\n@endpoint DELETE /api/storage/profile-system/prospects/{prospectId}\n@desc Delete prospect\n@required {prospectId: str # ID of the prospect as returned by the [Create prospect](https://developers.vtex.com/docs/api-reference/profile-system#post-/api/storage/profile-system/prospects) endpoint's response, in the `id` field.}\n@returns(204) No content\n\n@endpoint GET /api/storage/profile-system/prospects/{prospectId}/unmask\n@desc Get unmasked prospect\n@required {prospectId: str # ID of the prospect as returned by the [Create prospect](https://developers.vtex.com/docs/api-reference/profile-system#post-/api/storage/profile-system/prospects) endpoint's response, in the `id` field., reason: str # Reason for requesting unmasked data.}\n@returns(200) {id: str, document: map{availableAddresses: [map], paymentData: map{availableAccounts: [map], availableTokens: [str], transactions: [map]?, giftCards: [str], giftCardMessages: [str], numberOfPaymentErrors: num, numberOfDeniedTransactions: num, lastDeniedTransaction: str?}, contacts: [map], invoiceSubject: map{invoiceSubjectId: str, email: str, firstName: str, lastName: str, phone: str}, email: str, firstName: str, lastName: str, document: str, cellPhone: str, isPJ: bool, customerCode: str}, meta: map{version: str, author: str, creationDate: str, lastUpdateDate: str, expirationDate: str?}} # OK\n\n@endpoint POST /api/storage/profile-system/profiles/{profileId}/purchase-info\n@desc Create purchase information\n@required {profileId: str # There are two value options for this field:   1. ID of the client's profile, as in the `id` field returned by the [Create profile](https://developers.vtex.com/docs/api-reference/profile-system#post-/api/storage/profile-system/profiles) endpoint. \r 2. The value of an alternative key (`email` or `document`). When using this option, the `alternativeKey` query parameter is required, to inform which key is being used.}\n@optional {alternativeKey: str(email/document) # When using an alternative key as `profileId` value, fill this parameter with the key you wish to use as `profileId`. There are two possible values: `email` and `document`., paymentData: map{availableAccounts: [map], availableTokens: [str], transactions: [map], giftCards: [str], giftCardMessages: [str], numberOfPaymentErrors: num, numberOfDeniedTransactions: num, lastDeniedTransaction: str} # Payment data., clientPreferences: map{} # Client preferences., isToSavePersonalData: bool # Defines if personal data will be saved (`true`) or not (`false`)., lastUserPurchases: [map{creationDate: str, orderId: str, orderGroup: str, value: num}] # Array with latest purchases from the client., lastPurchasesAddressId: str # Unique identifier of the client address.}\n@returns(200) {id: str, document: map{paymentData: map{availableAccounts: [map], availableTokens: [str], transactions: [map]?, giftCards: [str], giftCardMessages: [str], numberOfPaymentErrors: num, numberOfDeniedTransactions: num, lastDeniedTransaction: str?}, clientPreferences: map, isToSavePersonalData: bool, lastUserPurchases: [map], lastPurchasesAddressId: str}, meta: map{version: str, author: str, creationDate: str, lastUpdateDate: str, expirationDate: str?}} # OK\n@example_request {\"paymentData\":{\"availableAccounts\":[{\"accountId\":\"D09F5E3F01054C959CFC4CB357961ADE\",\"paymentSystem\":\"2\",\"paymentSystemName\":\"Visa\",\"cardNumber\":\"************1111\",\"bin\":\"44443334\",\"availableAddresses\":[\"db267dcc53c14fb2b9a985532dd287bc\"],\"expirationDate\":\"01/2032\",\"isExpired\":false,\"accountStatus\":null}],\"availableTokens\":[],\"transactions\":null,\"giftCards\":[],\"giftCardMessages\":[],\"numberOfPaymentErrors\":0,\"numberOfDeniedTransactions\":0,\"lastDeniedTransaction\":null},\"clientPreferences\":{\"userId\":\"d9b946b8-9524-4b2d-96ec-b35d0625c0a7\",\"localeDefault\":\"pt-BR\",\"isNewsletterOptIn\":true},\"isToSavePersonalData\":true,\"lastUserPurchases\":[{\"creationDate\":\"2023-10-23T19:22:12.8989883Z\",\"orderId\":\"1370990595750-01\",\"orderGroup\":\"1370990595750\",\"value\":3498}],\"lastPurchasesAddressId\":\"db267dcc53c14fb2b9a985532dd287bc\"}\n\n@endpoint GET /api/storage/profile-system/profiles/{profileId}/purchase-info\n@desc Get purchase information\n@required {profileId: str # There are two value options for this field:   1. ID of the client's profile, as in the `id` field returned by the [Create profile](https://developers.vtex.com/docs/api-reference/profile-system#post-/api/storage/profile-system/profiles) endpoint. \r 2. The value of an alternative key (`email` or `document`). When using this option, the `alternativeKey` query parameter is required, to inform which key is being used.}\n@optional {alternativeKey: str(email/document) # When using an alternative key as `profileId` value, fill this parameter with the key you wish to use as `profileId`. There are two possible values: `email` and `document`.}\n@returns(200) OK\n\n@endpoint PATCH /api/storage/profile-system/profiles/{profileId}/purchase-info\n@desc Update purchase information\n@required {profileId: str # There are two value options for this field:   1. ID of the client's profile, as in the `id` field returned by the [Create profile](https://developers.vtex.com/docs/api-reference/profile-system#post-/api/storage/profile-system/profiles) endpoint. \r 2. The value of an alternative key (`email` or `document`). When using this option, the `alternativeKey` query parameter is required, to inform which key is being used.}\n@optional {alternativeKey: str(email/document) # When using an alternative key as `profileId` value, fill this parameter with the key you wish to use as `profileId`. There are two possible values: `email` and `document`., paymentData: map{availableAccounts: [map], availableTokens: [str], transactions: [map], giftCards: [str], giftCardMessages: [str], numberOfPaymentErrors: num, numberOfDeniedTransactions: num, lastDeniedTransaction: str} # Payment data., clientPreferences: map{} # Client preferences., isToSavePersonalData: bool # Defines if personal data will be saved (`true`) or not (`false`)., lastUserPurchases: [map{creationDate: str, orderId: str, orderGroup: str, value: num}] # Array with latest purchases from the client., lastPurchasesAddressId: str # Unique identifier of the client address.}\n@returns(200) {id: str, document: map{paymentData: map{availableAccounts: [map], availableTokens: [str], transactions: [map]?, giftCards: [str], giftCardMessages: [str], numberOfPaymentErrors: num, numberOfDeniedTransactions: num, lastDeniedTransaction: str?}, clientPreferences: map, isToSavePersonalData: bool, lastUserPurchases: [map], lastPurchasesAddressId: str}, meta: map{version: str, author: str, creationDate: str, lastUpdateDate: str, expirationDate: str?}} # OK\n@example_request {\"paymentData\":{\"availableAccounts\":[{\"accountId\":\"D09F5E3F01054C959CFC4CB357961ADE\",\"paymentSystem\":\"2\",\"paymentSystemName\":\"Visa\",\"cardNumber\":\"************1111\",\"bin\":\"44443334\",\"availableAddresses\":[\"db267dcc53c14fb2b9a985532dd287bc\"],\"expirationDate\":\"01/2032\",\"isExpired\":false,\"accountStatus\":null}],\"availableTokens\":[],\"transactions\":null,\"giftCards\":[],\"giftCardMessages\":[],\"numberOfPaymentErrors\":0,\"numberOfDeniedTransactions\":0,\"lastDeniedTransaction\":null},\"clientPreferences\":{\"userId\":\"d9b946b8-9524-4b2d-96ec-b35d0625c0a7\",\"localeDefault\":\"pt-BR\",\"isNewsletterOptIn\":true},\"isToSavePersonalData\":true,\"lastUserPurchases\":[{\"creationDate\":\"2023-10-23T19:22:12.8989883Z\",\"orderId\":\"1370990595750-01\",\"orderGroup\":\"1370990595750\",\"value\":3498}],\"lastPurchasesAddressId\":\"db267dcc53c14fb2b9a985532dd287bc\"}\n\n@endpoint DELETE /api/storage/profile-system/profiles/{profileId}/purchase-info\n@desc Delete purchase information\n@required {profileId: str # There are two value options for this field:   1. ID of the client's profile, as in the `id` field returned by the [Create profile](https://developers.vtex.com/docs/api-reference/profile-system#post-/api/storage/profile-system/profiles) endpoint. \r 2. The value of an alternative key (`email` or `document`). When using this option, the `alternativeKey` query parameter is required, to inform which key is being used.}\n@optional {alternativeKey: str(email/document) # When using an alternative key as `profileId` value, fill this parameter with the key you wish to use as `profileId`. There are two possible values: `email` and `document`.}\n@returns(204) No content\n\n@endpoint GET /api/storage/profile-system/profiles/{profileId}/purchase-info/unmask\n@desc Get unmasked purchase information\n@required {profileId: str # There are two value options for this field:   1. ID of the client's profile, as in the `id` field returned by the [Create profile](https://developers.vtex.com/docs/api-reference/profile-system#post-/api/storage/profile-system/profiles) endpoint. \r 2. The value of an alternative key (`email` or `document`). When using this option, the `alternativeKey` query parameter is required, to inform which key is being used., reason: str # Reason for requesting unmasked data.}\n@returns(200) OK\n\n@endpoint GET /api/storage/profile-system/schemas/profileSystem\n@desc Get full schema\n@returns(200) {title: str, type: str, description: str, required: [str], properties: map{additionalProperties: map{type: str, sensitive: bool, pii: bool, items: map{type: str}}}, documentTTL: int, version: int, v-indexed: [str], v-unique: [str]} # OK\n\n@endpoint PUT /api/storage/profile-system/schemas/profileSystem/custom\n@desc Create or delete custom fields\n@returns(201) Created\n@example_request {\"customField1\":{\"type\":[\"string\",\"null\"],\"sensitive\":true,\"pii\":true},\"customField2\":{\"type\":[\"string\",\"null\"],\"sensitive\":false,\"pii\":false}}\n\n@endpoint GET /api/storage/profile-system/schemas/profileSystem/custom\n@desc Get custom fields\n@returns(200) {title: str, type: str, description: str, required: [str], properties: map{additionalProperties: map{type: str, sensitive: bool, pii: bool, items: map{type: str}}}, documentTTL: int, version: int, v-indexed: [str], v-unique: [str]} # OK\n\n@end\n"}}