@lap v0.3
# Machine-readable API spec. Each @endpoint block is one API call.
@api spec
@base https://api.ote-godaddy.com
@auth ApiKey secret in body
@endpoints 6
@toc shoppers(6)

@endpoint POST /v1/shoppers/subaccount
@desc Create a Subaccount owned by the authenticated Reseller
@required {subaccount: any # The subaccount to create}
@returns(200) Request was successful
@errors {400: Request was malformed, 401: Authentication info not sent or invalid, 403: Authenticated user is not allowed access, 422: `subaccount` does not fulfill the schema, 429: Too many requests received within interval, 500: Internal server error}

@endpoint GET /v1/shoppers/{shopperId}
@desc Get details for the specified Shopper
@required {shopperId: any # Shopper whose details are to be retrieved}
@optional {includes: any # Additional properties to be included in the response shopper object}
@returns(200) Request was successful
@errors {400: Request was malformed, 401: Authentication info not sent or invalid, 403: Authenticated user is not allowed access, 404: Resource not found, 429: Too many requests received within interval, 500: Internal server error}

@endpoint POST /v1/shoppers/{shopperId}
@desc Update details for the specified Shopper
@required {shopperId: any # The ID of the Shopper to update, shopper: any # The Shopper details to update}
@returns(200) Request was successful
@errors {400: Request was malformed, 401: Authentication info not sent or invalid, 403: Authenticated user is not allowed access, 404: Resource not found, 422: `Shopper` does not fulfill the schema, 429: Too many requests received within interval, 500: Internal server error}

@endpoint DELETE /v1/shoppers/{shopperId}
@desc Request the deletion of a shopper profile
@required {shopperId: any # The ID of the shopper to delete. Must agree with the shopper id on the token or header, if present. *Note*: **shopperId** is **not the same** as **customerId**.  **shopperId** is a number of max length 10 digits (*ex:* 1234567890) whereas **customerId** is a UUIDv4 (*ex:* 295e3bc3-b3b9-4d95-aae5-ede41a994d13), auditClientIp: any # The client IP of the user who originated the request leading to this call.}
@returns(204) Request was successful
@errors {400: Request was malformed, 401: Authentication info not sent or invalid, 403: Authenticated user is not allowed access, 404: Resource not found, 409: Active and locked shoppers cannot be deleted, 422: Shopper ID is not supplied or invalid, 429: Too many requests received within interval, 500: Internal server error}

@endpoint GET /v1/shoppers/{shopperId}/status
@desc Get details for the specified Shopper
@required {shopperId: any # The ID of the shopper to retrieve. Must agree with the shopper id on the token or header, if present, auditClientIp: any # The client IP of the user who originated the request leading to this call.}
@returns(200) Request was successful
@errors {400: Request was malformed, 401: Authentication info not sent or invalid, 403: Authenticated user is not allowed access, 404: Resource not found, 422: Shopper ID is not supplied or invalid, 429: Too many requests received within interval, 500: Internal server error}

@endpoint PUT /v1/shoppers/{shopperId}/factors/password
@desc Set subaccount's password
@required {shopperId: any # Shopper whose password will be set, secret: any # The value to set the subaccount's password to}
@returns(200) Request was successful
@errors {400: Request was not successful, 401: Authentication info not sent or invalid, 500: Internal server error}

@end
