API · Organization

Organization API

Manage organization settings, team members, invitations, and shipping addresses.

Organization

GET Get organization

/api/v1/organization/{uid}/

Returns organization details. The organization UID is available from the user profile response.

Organization fields

FieldTypeDescription
uidstringOrganization identifier
display_namestringDisplay name (writable)
slugstringURL slug (writable)
logostring | nullLogo URL
createdstringISO 8601 creation date
ownerobjectOwner user summary
member_countintegerTotal team members
primary_addressobject | nullPrimary shipping address

PATCH Update organization

/api/v1/organization/{uid}/

Update display_name, slug, or logo. Requires owner or admin role.

Request
curl https://app.instica.com/api/v1/organization/org_xyz/ \
  -H "Authorization: Bearer YOUR_TOKEN"
Response — 200 OK
{
  "uid": "org_xyz",
  "display_name": "Jane's Records",
  "slug": "janes-records",
  "logo": "https://cdn.instica.com/orgs/org_xyz/logo.png",
  "created": "2024-01-15T10:30:00Z",
  "owner": {
    "uid": "usr_abc123",
    "username": "vinyl_dealer",
    "first_name": "Jane",
    "last_name": "Smith"
  },
  "member_count": 3,
  "primary_address": {
    "uid": "addr_001",
    "full_name": "Jane Smith",
    "line1": "123 Main St",
    "city": "Portland",
    "state": "OR",
    "postal_code": "97201",
    "country": "US"
  }
}
Update organization
curl -X PATCH \
  https://app.instica.com/api/v1/organization/org_xyz/ \
  -H "Authorization: Bearer YOUR_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "display_name": "Jane's Vinyl Shop"
  }'

Team management

GET List team members

/api/v1/organization/{uid}/team/

Returns all members of the organization with their roles.

Member fields

FieldTypeDescription
uidstringMembership identifier
userobjectUser summary (uid, username, email, first_name, last_name)
rolestringowner, admin, or member
joinedstringISO 8601 join date
is_activebooleanWhether the member is active

PATCH Update member role

/api/v1/organization/{uid}/team/{member_uid}/

Update a member's role. Requires owner or admin permissions.

DELETE Remove member

/api/v1/organization/{uid}/team/{member_uid}/

Remove a member from the organization. Cannot remove the owner.

Response — 200 OK
[
  {
    "uid": "mem_001",
    "user": {
      "uid": "usr_abc123",
      "username": "vinyl_dealer",
      "email": "dealer@example.com",
      "first_name": "Jane",
      "last_name": "Smith"
    },
    "role": "owner",
    "joined": "2024-01-15T10:30:00Z",
    "is_active": true
  },
  {
    "uid": "mem_002",
    "user": {
      "uid": "usr_def456",
      "username": "helper",
      "email": "helper@example.com",
      "first_name": "Bob",
      "last_name": "Jones"
    },
    "role": "member",
    "joined": "2024-06-01T14:00:00Z",
    "is_active": true
  }
]
Update role
curl -X PATCH \
  https://app.instica.com/api/v1/organization/org_xyz/team/mem_002/ \
  -H "Authorization: Bearer YOUR_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{ "role": "admin" }'

Invitations

EndpointMethodDescription
/api/v1/organization/{uid}/invite/POSTSend an invitation
/api/v1/organization/{uid}/invitations/GETList pending invitations
/api/v1/organization/{uid}/invitations/{invite_uid}/DELETERevoke an invitation

Invite request body

FieldTypeRequiredDescription
emailstringYesEmail to invite
rolestringNoRole to assign — defaults to member

Invitation fields

FieldTypeDescription
uidstringInvitation identifier
emailstringInvited email address
rolestringAssigned role
statusstringpending, accepted, expired
createdstringISO 8601 created date
expiresstringISO 8601 expiry date
Send invitation
curl -X POST \
  https://app.instica.com/api/v1/organization/org_xyz/invite/ \
  -H "Authorization: Bearer YOUR_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "email": "newmember@example.com",
    "role": "admin"
  }'
Response — 201 Created
{
  "uid": "inv_789",
  "email": "newmember@example.com",
  "role": "admin",
  "status": "pending",
  "created": "2025-01-20T12:00:00Z",
  "expires": "2025-02-20T12:00:00Z"
}

Addresses

Manage organization shipping addresses. Addresses are used as return addresses for marketplace listings and shipping labels.

EndpointMethodDescription
/api/v1/organization/{uid}/addresses/GETList addresses
/api/v1/organization/{uid}/addresses/POSTCreate address
/api/v1/organization/{uid}/addresses/{addr_uid}/PATCHUpdate address
/api/v1/organization/{uid}/addresses/{addr_uid}/DELETEDelete address
/api/v1/organization/{uid}/addresses/{addr_uid}/set-primary/POSTSet as primary address

Address fields

FieldTypeDescription
uidstringAddress identifier
full_namestringRecipient name
companystringCompany or business name
line1stringStreet address line 1
line2stringApartment, suite, etc.
citystringCity
statestringState or province
postal_codestringZIP or postal code
countrystringISO 3166-1 alpha-2 code
phonestringContact phone number
is_primarybooleanWhether this is the primary address
is_validatedbooleanWhether address has been validated
Create address
curl -X POST \
  https://app.instica.com/api/v1/organization/org_xyz/addresses/ \
  -H "Authorization: Bearer YOUR_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "full_name": "Jane Smith",
    "line1": "123 Main St",
    "city": "Portland",
    "state": "OR",
    "postal_code": "97201",
    "country": "US",
    "phone": "+15551234567"
  }'
Response — 201 Created
{
  "uid": "addr_002",
  "full_name": "Jane Smith",
  "company": "",
  "line1": "123 Main St",
  "line2": "",
  "city": "Portland",
  "state": "OR",
  "postal_code": "97201",
  "country": "US",
  "phone": "+15551234567",
  "is_primary": false,
  "is_validated": false
}
Set primary
curl -X POST \
  https://app.instica.com/api/v1/organization/org_xyz/addresses/addr_002/set-primary/ \
  -H "Authorization: Bearer YOUR_TOKEN"

# Response: 200 OK