Pawsitively Purrfect GraphQL API Reference

Welcome to Pawsitively Purrfect..!

Contact

API Support

masudjuly02@gmail.com

API Endpoints
# Development:
http://pawsitively.purrfect:62783/graphql
# Production:
http://pawsitively.purrfect:62783/graphql

Queries

findPets

Description

Find pets accross platform based on search criteria

Response

Returns [Pet]

Arguments
Name Description
breed - String
gender - Gender
shelterID - ID
adoptionStatus - AdoptionStatus
name - String
type - PetType

Example

Query
query FindPets(
  $breed: String,
  $gender: Gender,
  $shelterID: ID,
  $adoptionStatus: AdoptionStatus,
  $name: String,
  $type: PetType
) {
  findPets(
    breed: $breed,
    gender: $gender,
    shelterID: $shelterID,
    adoptionStatus: $adoptionStatus,
    name: $name,
    type: $type
  ) {
    adoptionStatus
    breed
    currentOwnerID
    gender
    id
    name
    photo
    shelterID
    type
  }
}
Variables
{
  "breed": "xyz789",
  "gender": "Male",
  "shelterID": "4",
  "adoptionStatus": "Available",
  "name": "abc123",
  "type": "Cat"
}
Response
{
  "data": {
    "findPets": [
      {
        "adoptionStatus": "Available",
        "breed": "xyz789",
        "currentOwnerID": 4,
        "gender": "Male",
        "id": 4,
        "name": "abc123",
        "photo": "xyz789",
        "shelterID": 4,
        "type": "Cat"
      }
    ]
  }
}

listPets

Description

List all pets owned by logged-in user

Response

Returns [Pet]

Example

Query
query ListPets {
  listPets {
    adoptionStatus
    breed
    currentOwnerID
    gender
    id
    name
    photo
    shelterID
    type
  }
}
Response
{
  "data": {
    "listPets": [
      {
        "adoptionStatus": "Available",
        "breed": "xyz789",
        "currentOwnerID": "4",
        "gender": "Male",
        "id": 4,
        "name": "abc123",
        "photo": "xyz789",
        "shelterID": 4,
        "type": "Cat"
      }
    ]
  }
}

listShelterPets

Description

List pets by shelter

Response

Returns [Pet]

Arguments
Name Description
shelterID - ID!
adoptionStatus - AdoptionStatus

Example

Query
query ListShelterPets(
  $shelterID: ID!,
  $adoptionStatus: AdoptionStatus
) {
  listShelterPets(
    shelterID: $shelterID,
    adoptionStatus: $adoptionStatus
  ) {
    adoptionStatus
    breed
    currentOwnerID
    gender
    id
    name
    photo
    shelterID
    type
  }
}
Variables
{
  "shelterID": "4",
  "adoptionStatus": "Available"
}
Response
{
  "data": {
    "listShelterPets": [
      {
        "adoptionStatus": "Available",
        "breed": "xyz789",
        "currentOwnerID": "4",
        "gender": "Male",
        "id": "4",
        "name": "xyz789",
        "photo": "xyz789",
        "shelterID": "4",
        "type": "Cat"
      }
    ]
  }
}

listShelters

Description

List shelters by filter

Response

Returns [Shelter]

Arguments
Name Description
description - String
website - String
location - String
ownerID - ID
name - String

Example

Query
query ListShelters(
  $description: String,
  $website: String,
  $location: String,
  $ownerID: ID,
  $name: String
) {
  listShelters(
    description: $description,
    website: $website,
    location: $location,
    ownerID: $ownerID,
    name: $name
  ) {
    contactInformation
    description
    id
    location
    logo
    name
    numberOfPets
    ownerID
    website
  }
}
Variables
{
  "description": "abc123",
  "website": "xyz789",
  "location": "xyz789",
  "ownerID": 4,
  "name": "abc123"
}
Response
{
  "data": {
    "listShelters": [
      {
        "contactInformation": "xyz789",
        "description": "abc123",
        "id": "4",
        "location": "xyz789",
        "logo": "abc123",
        "name": "xyz789",
        "numberOfPets": 123,
        "ownerID": "4",
        "website": "xyz789"
      }
    ]
  }
}

pet

Description

Get a pet by ID.

Response

Returns a Pet

Arguments
Name Description
id - ID!

Example

Query
query Pet($id: ID!) {
  pet(id: $id) {
    adoptionStatus
    breed
    currentOwnerID
    gender
    id
    name
    photo
    shelterID
    type
  }
}
Variables
{"id": "4"}
Response
{
  "data": {
    "pet": {
      "adoptionStatus": "Available",
      "breed": "xyz789",
      "currentOwnerID": "4",
      "gender": "Male",
      "id": 4,
      "name": "abc123",
      "photo": "abc123",
      "shelterID": "4",
      "type": "Cat"
    }
  }
}

profile

Description

Get logged-in user profile

Response

Returns a User

Example

Query
query Profile {
  profile {
    avatar
    bio
    email
    firstName
    id
    isActive
    isAdmin
    lastName
    location
    username
  }
}
Response
{
  "data": {
    "profile": {
      "avatar": "abc123",
      "bio": "xyz789",
      "email": "abc123",
      "firstName": "xyz789",
      "id": "4",
      "isActive": false,
      "isAdmin": false,
      "lastName": "xyz789",
      "location": "xyz789",
      "username": "abc123"
    }
  }
}

shelter

Description

Get a shelter by ID.

Response

Returns a Shelter

Arguments
Name Description
id - ID!

Example

Query
query Shelter($id: ID!) {
  shelter(id: $id) {
    contactInformation
    description
    id
    location
    logo
    name
    numberOfPets
    ownerID
    website
  }
}
Variables
{"id": 4}
Response
{
  "data": {
    "shelter": {
      "contactInformation": "abc123",
      "description": "xyz789",
      "id": "4",
      "location": "xyz789",
      "logo": "xyz789",
      "name": "abc123",
      "numberOfPets": 987,
      "ownerID": 4,
      "website": "abc123"
    }
  }
}

user

Description

Get a user by ID.

Response

Returns a User

Arguments
Name Description
id - ID
name - String

Example

Query
query User(
  $id: ID,
  $name: String
) {
  user(
    id: $id,
    name: $name
  ) {
    avatar
    bio
    email
    firstName
    id
    isActive
    isAdmin
    lastName
    location
    username
  }
}
Variables
{
  "id": "4",
  "name": "xyz789"
}
Response
{
  "data": {
    "user": {
      "avatar": "abc123",
      "bio": "xyz789",
      "email": "abc123",
      "firstName": "abc123",
      "id": "4",
      "isActive": false,
      "isAdmin": false,
      "lastName": "xyz789",
      "location": "abc123",
      "username": "xyz789"
    }
  }
}

Mutations

addPet

Description

Add new pet to a shelter

Response

Returns a Pet

Arguments
Name Description
gender - Gender
shelterID - ID!
name - String!
type - PetType!
breed - String

Example

Query
mutation AddPet(
  $gender: Gender,
  $shelterID: ID!,
  $name: String!,
  $type: PetType!,
  $breed: String
) {
  addPet(
    gender: $gender,
    shelterID: $shelterID,
    name: $name,
    type: $type,
    breed: $breed
  ) {
    adoptionStatus
    breed
    currentOwnerID
    gender
    id
    name
    photo
    shelterID
    type
  }
}
Variables
{
  "gender": "Male",
  "shelterID": "4",
  "name": "xyz789",
  "type": "Cat",
  "breed": "abc123"
}
Response
{
  "data": {
    "addPet": {
      "adoptionStatus": "Available",
      "breed": "xyz789",
      "currentOwnerID": "4",
      "gender": "Male",
      "id": "4",
      "name": "abc123",
      "photo": "abc123",
      "shelterID": 4,
      "type": "Cat"
    }
  }
}

addShelter

Description

Add new shelter to the system

Response

Returns a Shelter

Arguments
Name Description
contactInformation - String
name - String!
description - String
website - String
location - String

Example

Query
mutation AddShelter(
  $contactInformation: String,
  $name: String!,
  $description: String,
  $website: String,
  $location: String
) {
  addShelter(
    contactInformation: $contactInformation,
    name: $name,
    description: $description,
    website: $website,
    location: $location
  ) {
    contactInformation
    description
    id
    location
    logo
    name
    numberOfPets
    ownerID
    website
  }
}
Variables
{
  "contactInformation": "abc123",
  "name": "xyz789",
  "description": "xyz789",
  "website": "xyz789",
  "location": "abc123"
}
Response
{
  "data": {
    "addShelter": {
      "contactInformation": "xyz789",
      "description": "xyz789",
      "id": "4",
      "location": "abc123",
      "logo": "xyz789",
      "name": "abc123",
      "numberOfPets": 987,
      "ownerID": "4",
      "website": "abc123"
    }
  }
}

adoptPet

Description

Adopt pet from a shelter

Response

Returns a Pet

Arguments
Name Description
petID - ID

Example

Query
mutation AdoptPet($petID: ID) {
  adoptPet(petID: $petID) {
    adoptionStatus
    breed
    currentOwnerID
    gender
    id
    name
    photo
    shelterID
    type
  }
}
Variables
{"petID": 4}
Response
{
  "data": {
    "adoptPet": {
      "adoptionStatus": "Available",
      "breed": "xyz789",
      "currentOwnerID": 4,
      "gender": "Male",
      "id": 4,
      "name": "abc123",
      "photo": "xyz789",
      "shelterID": "4",
      "type": "Cat"
    }
  }
}

deleteShelter

Description

Delete a shelter

Response

Returns a Boolean

Arguments
Name Description
id - ID!

Example

Query
mutation DeleteShelter($id: ID!) {
  deleteShelter(id: $id)
}
Variables
{"id": 4}
Response
{"data": {"deleteShelter": false}}

login

Description

Login user to the system

Response

Returns a User

Arguments
Name Description
password - String!
username - String!

Example

Query
mutation Login(
  $password: String!,
  $username: String!
) {
  login(
    password: $password,
    username: $username
  ) {
    avatar
    bio
    email
    firstName
    id
    isActive
    isAdmin
    lastName
    location
    username
  }
}
Variables
{
  "password": "xyz789",
  "username": "abc123"
}
Response
{
  "data": {
    "login": {
      "avatar": "abc123",
      "bio": "abc123",
      "email": "xyz789",
      "firstName": "abc123",
      "id": 4,
      "isActive": false,
      "isAdmin": true,
      "lastName": "abc123",
      "location": "abc123",
      "username": "abc123"
    }
  }
}

register

Description

Register a new user to the system

Response

Returns a User

Arguments
Name Description
username - String!
email - String!
password - String!

Example

Query
mutation Register(
  $username: String!,
  $email: String!,
  $password: String!
) {
  register(
    username: $username,
    email: $email,
    password: $password
  ) {
    avatar
    bio
    email
    firstName
    id
    isActive
    isAdmin
    lastName
    location
    username
  }
}
Variables
{
  "username": "xyz789",
  "email": "xyz789",
  "password": "xyz789"
}
Response
{
  "data": {
    "register": {
      "avatar": "abc123",
      "bio": "abc123",
      "email": "xyz789",
      "firstName": "abc123",
      "id": "4",
      "isActive": false,
      "isAdmin": true,
      "lastName": "xyz789",
      "location": "abc123",
      "username": "xyz789"
    }
  }
}

updatePet

Description

Update pet information

Response

Returns a Pet

Arguments
Name Description
name - String!
type - PetType!
breed - String
gender - Gender
id - ID!

Example

Query
mutation UpdatePet(
  $name: String!,
  $type: PetType!,
  $breed: String,
  $gender: Gender,
  $id: ID!
) {
  updatePet(
    name: $name,
    type: $type,
    breed: $breed,
    gender: $gender,
    id: $id
  ) {
    adoptionStatus
    breed
    currentOwnerID
    gender
    id
    name
    photo
    shelterID
    type
  }
}
Variables
{
  "name": "xyz789",
  "type": "Cat",
  "breed": "xyz789",
  "gender": "Male",
  "id": 4
}
Response
{
  "data": {
    "updatePet": {
      "adoptionStatus": "Available",
      "breed": "xyz789",
      "currentOwnerID": 4,
      "gender": "Male",
      "id": 4,
      "name": "xyz789",
      "photo": "abc123",
      "shelterID": "4",
      "type": "Cat"
    }
  }
}

updateProfile

Description

Update user profile

Response

Returns a User

Arguments
Name Description
email - String!
firstName - String
lastName - String
bio - String
location - String
avatar - String
id - ID!
username - String!

Example

Query
mutation UpdateProfile(
  $email: String!,
  $firstName: String,
  $lastName: String,
  $bio: String,
  $location: String,
  $avatar: String,
  $id: ID!,
  $username: String!
) {
  updateProfile(
    email: $email,
    firstName: $firstName,
    lastName: $lastName,
    bio: $bio,
    location: $location,
    avatar: $avatar,
    id: $id,
    username: $username
  ) {
    avatar
    bio
    email
    firstName
    id
    isActive
    isAdmin
    lastName
    location
    username
  }
}
Variables
{
  "email": "xyz789",
  "firstName": "xyz789",
  "lastName": "xyz789",
  "bio": "abc123",
  "location": "abc123",
  "avatar": "abc123",
  "id": "4",
  "username": "xyz789"
}
Response
{
  "data": {
    "updateProfile": {
      "avatar": "xyz789",
      "bio": "xyz789",
      "email": "abc123",
      "firstName": "abc123",
      "id": 4,
      "isActive": true,
      "isAdmin": false,
      "lastName": "xyz789",
      "location": "xyz789",
      "username": "abc123"
    }
  }
}

updateShelter

Description

Update shelter information

Response

Returns a Shelter

Arguments
Name Description
location - String
contactInformation - String
id - ID!
name - String!
description - String
website - String

Example

Query
mutation UpdateShelter(
  $location: String,
  $contactInformation: String,
  $id: ID!,
  $name: String!,
  $description: String,
  $website: String
) {
  updateShelter(
    location: $location,
    contactInformation: $contactInformation,
    id: $id,
    name: $name,
    description: $description,
    website: $website
  ) {
    contactInformation
    description
    id
    location
    logo
    name
    numberOfPets
    ownerID
    website
  }
}
Variables
{
  "location": "abc123",
  "contactInformation": "abc123",
  "id": 4,
  "name": "abc123",
  "description": "xyz789",
  "website": "abc123"
}
Response
{
  "data": {
    "updateShelter": {
      "contactInformation": "xyz789",
      "description": "abc123",
      "id": "4",
      "location": "abc123",
      "logo": "xyz789",
      "name": "xyz789",
      "numberOfPets": 123,
      "ownerID": 4,
      "website": "abc123"
    }
  }
}

Types

AdoptionStatus

Values
Enum Value Description

Available

Adopted

Example
"Available"

Boolean

Description

The Boolean scalar type represents true or false.

Example
true

Gender

Values
Enum Value Description

Male

Female

Example
"Male"

ID

Description

The ID scalar type represents a unique identifier, often used to refetch an object or as key for a cache. The ID type appears in a JSON response as a String; however, it is not intended to be human-readable. When expected as an input type, any string (such as "4") or integer (such as 4) input value will be accepted as an ID.

Example
"4"

Int

Description

The Int scalar type represents non-fractional signed whole numeric values. Int can represent values between -(2^31) and 2^31 - 1.

Example
123

Pet

Fields
Field Name Description
adoptionStatus - AdoptionStatus
breed - String
currentOwnerID - ID
gender - Gender
id - ID
name - String
photo - String
shelterID - ID
type - PetType
Example
{
  "adoptionStatus": "Available",
  "breed": "abc123",
  "currentOwnerID": 4,
  "gender": "Male",
  "id": "4",
  "name": "abc123",
  "photo": "xyz789",
  "shelterID": 4,
  "type": "Cat"
}

PetType

Values
Enum Value Description

Cat

Dog

Example
"Cat"

Shelter

Fields
Field Name Description
contactInformation - String
description - String
id - ID
location - String
logo - String
name - String
numberOfPets - Int
ownerID - ID
website - String
Example
{
  "contactInformation": "abc123",
  "description": "abc123",
  "id": "4",
  "location": "abc123",
  "logo": "abc123",
  "name": "xyz789",
  "numberOfPets": 987,
  "ownerID": 4,
  "website": "abc123"
}

String

Description

The String scalar type represents textual data, represented as UTF-8 character sequences. The String type is most often used by GraphQL to represent free-form human-readable text.

Example
"xyz789"

User

Fields
Field Name Description
avatar - String
bio - String
email - String
firstName - String
id - ID
isActive - Boolean
isAdmin - Boolean
lastName - String
location - String
username - String
Example
{
  "avatar": "xyz789",
  "bio": "abc123",
  "email": "abc123",
  "firstName": "abc123",
  "id": "4",
  "isActive": true,
  "isAdmin": true,
  "lastName": "abc123",
  "location": "abc123",
  "username": "xyz789"
}