Skip to main content

Addresses

Manages customer shipping/billing addresses with full CRUD operations.

HTTP Request

Retrieve Addresses:

GET/api/shop/customers/me/addresses

Create Address:

POST/api/shop/customers/me/addresses

Update Address:

PATCH/api/shop/customers/me/addresses/:id

Delete Address:

DELETE/api/shop/customers/me/addresses/:id

Authorization

Authorization

  • Required: Yes
  • Permission: Authenticated Customer
  • Authentication: Token-based (`Authorization: Token <your_api_key>`)

Query Parameters (GET only)

ParameterTypeDefaultDescription
limitintegerNumber of results to return per page
offsetintegerNumber of results to skip
searchstringSearch in `first_name`, `last_name`, `postal_code`, `address`
orderingstringField to order results by (`id`, `country`, `state`, `city`, `created_at`, `updated_at`, `default`)
country_instringFilter by multiple country IDs (comma-separated)
state_instringFilter by multiple state IDs (comma-separated)
city_instringFilter by multiple city IDs (comma-separated)
country_idintegerFilter by specific country ID
state_idintegerFilter by specific state ID
city_idintegerFilter by specific city ID
has_national_codebooleanFilter addresses with/without national code
id_minintegerMinimum ID filter
id_maxintegerMaximum ID filter
created_datestringFilter by creation date
updated_datestringFilter by last updated date
created_fromstringFilter by creation date range start
created_tostringFilter by creation date range end
updated_fromstringFilter by last updated date range start
updated_tostringFilter by last updated date range end

Request Body (POST only)

FieldTypeRequiredDescription
defaultBooleanNoSet as default address
countryIntegerYesCountry ID
stateIntegerYesState ID
cityIntegerYesCity ID
addressStringYesDetailed address
postal_codeStringYesPostal/ZIP code
first_nameStringYesRecipient's first name
last_nameStringYesRecipient's last name
national_codeStringNoNational identification code
mobile_numberStringYesRecipient's mobile number

Path Parameters (PATCH, DELETE only)

ParameterTypeRequiredDescription
idIntegerYesUnique ID of the address

Request Body (PATCH only)

FieldTypeRequiredDescription
defaultBooleanNoSet as default address
countryIntegerNoCountry ID
stateIntegerNoState ID
cityIntegerNoCity ID
addressStringNoDetailed address
postal_codeStringNoPostal/ZIP code
first_nameStringNoRecipient's first name
last_nameStringNoRecipient's last name
national_codeStringNoNational identification code
mobile_numberStringNoRecipient's mobile number

Example Requests

1import requests
2
3# List customer addresses
4response = requests.get('http://www.example.com/api/shop/customers/me/addresses', 
5  params={
6      'ordering': '-created_at',
7      'limit': 20,
8      'search': 'john'
9  },
10  headers={'Authorization': 'Token <your_api_key>'}
11)
12print(response.json())
13
14# Create new address
15response = requests.post('http://www.example.com/api/shop/customers/me/addresses', 
16  json={
17      'default': True,
18      'country': 1,
19      'state': 5,
20      'city': 15,
21      'address': '123 Main Street, Apt 4B',
22      'postal_code': '12345',
23      'first_name': 'John',
24      'last_name': 'Doe',
25      'mobile_number': '+1234567890'
26  },
27  headers={'Authorization': 'Token <your_api_key>'}
28)
29print(response.json())
30
31import requests
32
33# Get specific address
34response = requests.get('http://www.example.com/api/shop/customers/me/addresses/123', 
35  headers={'Authorization': 'Token <your_api_key>'}
36)
37print(response.json())
38
39# Update address
40response = requests.patch('http://www.example.com/api/shop/customers/me/addresses/123', 
41  json={
42      'default': True,
43      'postal_code': '54321'
44  },
45  headers={'Authorization': 'Token <your_api_key>'}
46)
47print(response.json())
48
49# Delete address
50response = requests.delete('http://www.example.com/api/shop/customers/me/addresses/123', 
51  headers={'Authorization': 'Token <your_api_key>'}
52)
53print(response.status_code)  # Should be 204

Status Codes

CodeDescription
200Address retrieved/updated successfully
204Address deleted successfully
400Bad request — validation errors
401Unauthorized — authentication required
404Address not found
500Internal server error

Response Fields

FieldTypeDescription
idIntegerUnique ID of the address
defaultBooleanWhether this is the default address
country_dataObjectCountry details (read-only)
state_dataObjectState details (read-only)
city_dataObjectCity details (read-only)
addressStringDetailed address
postal_codeStringPostal/ZIP code
first_nameStringRecipients first name
last_nameStringRecipients last name
national_codeStringNational identification code
mobile_numberStringRecipients mobile number
textStringAdditional notes
created_atString (ISO 8601)Timestamp when address was created
updated_atString (ISO 8601)Timestamp when address was last updated

Country/State Data Structure:

FieldTypeDescription
idIntegerUnique ID
nameStringName of the country/state
codeStringCode (e.g., ISO code for country)

City Data Structure:

FieldTypeDescription
idIntegerUnique ID
nameStringName of the city

Notes

    • Geographic Validation: State must belong to the specified country, and city must belong to the specified state
    • Access Control: Customers can only access their own addresses
    • Default Address: Only one address can be set as default per customer