Service Dog Standards Help

Sign Up Flow. Step 4 for trainer

1. Get info for sub step "Personal Info"

Endpoint: GET /api/v1/sign_up/basic_info

Request Headers:

Authorization: Bearer your_generated_token X-API-Key: your_api_key Content-Type: application/json

Request Body (JSON):

{}

Expected Response:

{ "success": true, "message": "Data retrieved successfully", "data": { "previous_step": "terms", "current_step": "personal_info", "next_step": "training_style_facility_info", "order": 1, "total": 4, "step_data": { "title": "Let’s get started with your basic info", "registration_step": "personal_info", "intro": "Welcome! We’re glad you’re here to help service dog handlers. To begin, just tell us a bit about yourself.", "fields": [ { "label": "First name", "name": "first_name", "type": "text", "required": true, "value": "" }, { "label": "Middle name", "name": "middle_name", "type": "text", "required": false, "value": "" }, { "label": "Last name", "name": "last_name", "type": "text", "required": true, "value": "" }, { "label": "Phone Number", "name": "primary_phone", "type": "text", "required": true, "value": "" } ] } } }

2. Send info for update user info for buttons continue on each sub step

Endpoint: PUT /api/v1/sign_up/update_user_info

Request Headers:

Authorization: Bearer your_generated_token X-API-Key: your_api_key Content-Type: application/json

Request Body (JSON) for step "personal_info":

{ "registration_step": "personal_info", //required field type string "first_name": "Test",//required field "middle_name": "New",//optional "last_name": "Trainer",//required field "primary_phone": "0731234567"//required field }

Expected Response for step "personal_info":

{ "success": true, "message": "User info updated successfully.", "data": { "user": { "id": 182, "full_name": "Test New Trainer", "phone": "073-123-4567", "email": "[email protected]", "account_type": "trainer", "registration_step": "training_style_facility_info", "registration_status": { "registrationFinished": false, "profileFieldsFilled": false, "animalAdded": false, "emergencyContactAdded": false, "profileCompletionPercentage": 0, "overallCompletionPercentage": 0, "sdsAgreementValid": false, "sdsExpirationDate": null }, "registration_completed": false, "previous_step": "personal_info", "next_step": "trainer_directory_settings", "profile_photo_url": null }, "next_step": "training_style_facility_info" } }

Request Body (JSON) for step "training_style_facility_info":

{ "registration_step": "training_style_facility_info",//required field type string "training_styles": ["training_facility", "travel_to_clients", "transport_dogs", "other"],//optional field type array "new_training_styles": ["Trening style 1", "Training style 2"],//optional (required if training_styles has "other") field type array of strings "facility_address_line_1": "Address 1",//optional (required if training_styles has "training_facility" or "transport_dogs" or both) field type string "facility_address_line_2": "Address 2",//optional (can be filled if training_styles has "training_facility" or "transport_dogs" or both) field type string "facility_city": "Test city",//optional (required if training_styles has "training_facility" or "transport_dogs" or both) field type string "facility_region": "Test region",//optional (required if training_styles has "training_facility" or "transport_dogs" or both) field type string "facility_zip_code": "12345",//optional (required if training_styles has "training_facility" or "transport_dogs" or both) field type string "facility_country": "test country"//optional (required if training_styles has "training_facility" or "transport_dogs" or both) field type string }

Expected Response for step "personal_info":

{ "success": true, "message": "User info updated successfully.", "data": { "user": { "id": 182, "full_name": "Test New Trainer", "phone": "073-123-4567", "email": "[email protected]", "account_type": "trainer", "registration_step": "trainer_directory_settings", "registration_status": { "registrationFinished": false, "profileFieldsFilled": false, "animalAdded": false, "emergencyContactAdded": false, "profileCompletionPercentage": 33, "overallCompletionPercentage": 17, "sdsAgreementValid": false, "sdsExpirationDate": null }, "registration_completed": false, "previous_step": "training_style_facility_info", "next_step": "agreements_step", "profile_photo_url": null }, "next_step": "trainer_directory_settings" } }

Request Body (JSON) for step "trainer_directory_settings":

{ "registration_step": "trainer_directory_settings",//required field type string "appear_in_directory": true, //required field type boolean "zip_code": "37821", //optional (required if appear_in_directory is true) field type string "distance_option": "up_to_50_miles", //optional (required if appear_in_directory is true) field type string "certifications": ["cpdt", "iacp", "other"], //optional field type array of strings "new_certifications": ["Certificate 1", "Certificate 2"],//optional (required if certifications has "other") field type array of strings "languages": ["english", "spanish"] //optional field type array of strings }

Expected Response for step "trainer_directory_settings":

{ "success": true, "message": "User info updated successfully.", "data": { "user": { "id": 182, "full_name": "Test New Trainer", "phone": "073-123-4567", "email": "[email protected]", "account_type": "trainer", "registration_step": "agreements_step", "registration_status": { "registrationFinished": false, "profileFieldsFilled": false, "animalAdded": false, "emergencyContactAdded": false, "profileCompletionPercentage": 33, "overallCompletionPercentage": 17, "sdsAgreementValid": false, "sdsExpirationDate": null }, "registration_completed": false, "previous_step": "trainer_directory_settings", "next_step": "registration_complete", "profile_photo_url": null }, "next_step": "agreements_step" } }

Request Body (JSON) for step "agreements_step":

{ "registration_step": "agreements_step"//required field type string }

Expected Response for step "agreements_step":

{ "success": true, "message": "User info updated successfully.", "data": { "user": { "id": 182, "full_name": "Test New Trainer", "phone": "073-123-4567", "email": "[email protected]", "account_type": "trainer", "registration_step": "registration_complete", "registration_status": { "registrationFinished": false, "profileFieldsFilled": false, "animalAdded": false, "emergencyContactAdded": false, "profileCompletionPercentage": 33, "overallCompletionPercentage": 17, "sdsAgreementValid": false, "sdsExpirationDate": null }, "registration_completed": false, "previous_step": "agreements_step", "next_step": null, "profile_photo_url": null }, "next_step": "registration_complete" } }

3. Get info for "training style facility info" sub step

Endpoint: GET /api/v1/sign_up/training_style_facility_info

Request Headers:

Authorization: Bearer your_generated_token X-API-Key: your_api_key Content-Type: application/json

Request Body (JSON):

{}

Expected Response:

{ "success": true, "message": "Data retrieved successfully", "data": { "previous_step": "personal_info", "current_step": "training_style_facility_info", "next_step": "trainer_directory_settings", "order": 2, "total": 4, "step_data": { "title": "How do you work with service dogs?", "registration_step": "training_style_facility_info", "intro": "Everyone has their own way of helping. Please tell us what fits you best.", "fields": [ { "label": "How do you work with service dogs?", "name": "training_styles", "type": "checkbox_group", "options": { "training_facility": "I have a training facility where clients bring their dogs", "travel_to_clients": "I travel to clients to train dogs on-site", "transport_dogs": "I transport dogs, train them at my facility, then return them", "other": "Other" }, "required": true, "value": "" }, { "label": "Please describe (you can add multiple)", "name": "new_training_styles", "type": "text_array", "placeholder": "Enter your own training style", "required": false, "required_if": { "training_styles": [ "other" ] }, "visible_if": { "training_styles": [ "other" ] } }, { "type": "section", "label": "Facility Information", "visible_if": { "training_styles": [ "training_facility", "transport_dogs" ] }, "fields": [ { "label": "Facility Address Line 1", "name": "facility_address_line_1", "type": "text", "required": false, "required_if": { "training_styles": [ "training_facility", "transport_dogs" ] }, "value": "" }, { "label": "Facility Address Line 2", "name": "facility_address_line_2", "type": "text", "required": false, "value": "" }, { "label": "City", "name": "facility_city", "type": "text", "required": false, "required_if": { "training_styles": [ "training_facility", "transport_dogs" ] }, "value": "" }, { "label": "State/Province/Region", "name": "facility_region", "type": "text", "required": false, "required_if": { "training_styles": [ "training_facility", "transport_dogs" ] }, "value": "" }, { "label": "ZIP / Postal Code", "name": "facility_zip_code", "type": "text", "required": false, "required_if": { "training_styles": [ "training_facility", "transport_dogs" ] }, "value": "" }, { "label": "Country", "name": "facility_country", "type": "text", "required": false, "required_if": { "training_styles": [ "training_facility", "transport_dogs" ] }, "value": "" } ] } ] } } }

4. Get info for "trainer_directory_settings" sub step

Endpoint: GET /api/v1/sign_up/trainer_directory_settings

Request Headers:

Authorization: Bearer your_generated_token X-API-Key: your_api_key Content-Type: application/json

Request Body (JSON):

{}

Expected Response:

{ "success": true, "message": "Data retrieved successfully", "data": { "previous_step": "training_style_facility_info", "current_step": "trainer_directory_settings", "next_step": "agreements_step", "order": 3, "total": 4, "step_data": { "title": "Help clients find you!", "registration_step": "trainer_directory_settings", "intro": "If you want to be listed in our trainer search, we’ll need a few more details.", "fields": [ { "label": "Would you like to appear in our directory?", "name": "appear_in_directory", "type": "checkbox", "required": false, "value": "" }, { "label": "ZIP / Postal Code", "name": "zip_code", "type": "text", "required": false, "required_if": { "appear_in_directory": true }, "visible_if": { "appear_in_directory": true }, "value": "" }, { "label": "Distance Willing to Travel", "name": "distance_option", "type": "select", "options": { "up_to_5_miles": "Up to 5 miles / 8 km", "up_to_10_miles": "Up to 10 miles / 16 km", "up_to_25_miles": "Up to 25 miles / 40 km", "up_to_50_miles": "Up to 50 miles / 80 km", "up_to_100_miles": "Up to 100 miles / 160 km", "up_to_3_states": "Up to 3 states radius (~200 miles / 320 km)", "anywhere_us": "Anywhere in the United States", "international": "International" }, "required": false, "required_if": { "appear_in_directory": true }, "visible_if": { "appear_in_directory": true }, "value": "" }, { "label": "Certifications (select all that apply)", "name": "certifications", "type": "checkbox_group", "options": { "cpdt": "Certified Professional Dog Trainer (CPDT)", "iacp": "International Association of Canine Professionals (IACP)", "adi": "Assistance Dogs International (ADI)", "iaadp": "International Association of Assistance Dog Partners (IAADP)", "other": "Other" }, "required": false, "value": "" }, { "label": "Other certifications", "name": "new_certifications", "type": "text_array", "placeholder": "Enter certification name", "required": false, "required_if": { "certifications": [ "other" ] }, "visible_if": { "certifications": [ "other" ] } }, { "label": "Languages spoken (select all that apply)", "name": "languages", "type": "multiple_select", "options": { "english": "English", "spanish": "Spanish", "french": "French", "mandarin": "Mandarin", "arabic": "Arabic", "asl": "ASL (American Sign Language)" }, "required": false, "value": "" } ] } } }

5. Get info for Agreements sub step

Endpoint: GET /api/v1/sign_up/agreements_step

Request Headers:

Authorization: Bearer your_generated_token X-API-Key: your_api_key Content-Type: application/json

Request Body (JSON):

{}

Expected Response:

{ "success": true, "message": "Data retrieved successfully", "data": { "previous_step": "trainer_directory_settings", "current_step": "agreements_step", "next_step": "registration_complete", "order": 4, "total": 4, "step_data": { "title": "Trainer Agreement", "registration_step": "agreements_step", "sub_steps": [ { "introduction": "At the heart of every service dog team is a foundation of trust, safety, and rigorous training.", "sub_title": "Article 1/4", "content": "<p>At the heart of every service dog team is a foundation of <strong>trust, safety, and rigorous training</strong>.</p><p>As a Service Dog Standards Trainer, your work shapes not only the behavior of dogs — but the <strong>daily lives of the people who rely on them.</strong></p>", "next": "Service Dog Standards Trainer Agreement" }, { "introduction": "As a Service Dog Standards Trainer, I agree to uphold the following principles in my work with service dog ", "sub_title": "Article 2/4", "content": "<p>As a Service Dog Standards Trainer, I agree to uphold the following principles in my work with service dog handlers and their dogs:</p><p><strong>1. I will prioritize the well-being of my clients.</strong><br>I will do no harm. I will always consider the physical and emotional safety of both the human and canine participants in any training I provide. My methods will be humane, ethical, and grounded in best practices.</p><p><strong>2. I will empower handlers through clear and effective training.</strong><br>I will provide comprehensive instruction and guidance to help clients become capable and confident service dog handlers, always fostering a positive, respectful bond between dog and human.</p><p><strong>3. I will uphold high ethical standards in my practice.</strong><br>I will conduct myself with honesty, professionalism, and integrity in all interactions, both with clients and within the broader service dog community.</p><p><strong>4. I will protect client confidentiality.</strong><br>I understand that disability and medical information is personal and private. I will never share or disclose client details without clear, informed consent.</p><p><strong>5. I will be transparent and fair in my business practices.</strong><br>I will communicate openly and respectfully with clients. I will clearly disclose policies, pricing, expectations, and limitations of my services.</p><p><strong>6. I will follow all applicable laws and Service Dog Standards guidelines.</strong><br>I agree to stay informed of legal requirements related to service dog training, disability rights, and animal welfare. I will ensure that my practices are fully compliant.</p><p><strong>7. I accept full responsibility for my professional conduct.</strong><br>I will represent myself, my services, and my credentials honestly. I take ownership of my actions and the impact they may have.</p><p><strong>8. I will continue learning and contributing to the service dog community.</strong><br>I am committed to ongoing professional development, keeping up with emerging research, refining my skills, and supporting others in the field.</p><p><strong>Thanks for being one of the people who makes life better for someone with a service dog.</strong></p>", "next": "You're Helping Ensure Safety, Independence, and Public Confidence" }, { "introduction": null, "sub_title": "Article 3/4", "content": "<p>Service dogs are more than companions. They are <strong>medical aids, mobility partners, and lifelines</strong> for disabled individuals navigating a world not always built for them.</p><p>Your support helps make sure that:</p><ul><li><strong>The handler stays independent</strong><br> by giving them the confidence to experience freedom and independence in daily life.</li><li><strong>Everyone stays safe and supported</strong><br> through thoughtful, respectful interactions.</li><li><strong>The public understands and respects service dogs</strong><br> so teams can work without judgment or interference.</li></ul>", "next": "Service Dog Standards Is a Global Initiative" }, { "introduction": null, "sub_title": "Article 4/4", "content": "<p>Our guidelines are used by trainers, handlers, caregivers, and advocates around the world.</p><p>We don&rsquo;t provide training directly; <strong>we set the training and behavior standards</strong> that <strong>promote</strong> <strong>safe, ethical, and responsible</strong> service dog partnership and training.</p><p>These shared expectations help ensure:</p><ul><li><strong>Consistency</strong></li><li><strong>Safety</strong></li><li><strong>Dignity</strong> for every team&mdash;no matter where they are.</li></ul><p>By being a part of <strong>Service Dog Standards</strong>, you&#39;re showing that <strong>you care about doing things the right way</strong>&mdash;for the <strong>handler, the dog, and the community.</strong></p><p><strong>Together, we can make a kinder, better-educated, and more accessible world for everyone.</strong></p>", "next": null } ] } } }

6. Get info about user registration status

Endpoint: GET /api/v1/sign_up/register_info

Request Headers:

Authorization: Bearer your_generated_token X-API-Key: your_api_key Content-Type: application/json

Request Body (JSON):

{}

Expected Response:

{ "success": true, "message": "Data retrieved successfully", "data": { "user_type": "trainer", "previous_step": "trainer_directory_settings", "current_step": "agreements_step", "next_step": "registration_complete" } }

7. Get info for registration_complete step

Endpoint: GET /api/v1/sign_up/registration_complete

Request Headers:

Authorization: Bearer your_generated_token X-API-Key: your_api_key Content-Type: application/json

Request Body (JSON):

{}

Expected Response:

{ "success": true, "message": "Data retrieved successfully", "data": { "current_step": "registration_complete", "step_data": { "user": { "id": 182, "full_name": "Test New Trainer", "phone": "073-123-4567", "email": "[email protected]", "account_type": "trainer", "registration_step": "registration_finished", "registration_status": { "registrationFinished": true, "profileFieldsFilled": false, "animalAdded": false, "emergencyContactAdded": false, "profileCompletionPercentage": 33, "overallCompletionPercentage": 17, "sdsAgreementValid": true, "sdsExpirationDate": "2028-10-20" }, "registration_completed": true, "profile_photo_url": null } } } }
20 October 2025